Subject: Prop Program (was: Prop for Midget mustang)
From: Rotary Engine
Date: 7/25/2005, 6:16 PM
To: AA-me


Vance,

        Would you mind sharing this propeller modeling program, or is it
something proprietary?

Bill Dube'


Vance is at OSH Bill. He and I will be back next week.
Do you do BASIC ?

Paul Lamar

        Visual, Turbo, Rocky Mountain, HP, Quick, HT, Timex-Sinclair....

        I do just about every computer language (to varying degrees of
competence.)

Bill Dube'

OK here is some of Vances earlier work he kindly uploaded.

Paul Lamar


-- 
The Rotary Engine NewsLetter.  Powered by Linux.
ACRE NL web site. http://www.rotaryeng.net
Copyright 1998-2005 All world wide rights reserved.


 CLS
 ' PRPLRITF PROPELLOR PROGRAM FOR ITERATION TO PREDICT ENGINE POWER RQD
 ' NO ENGINE POWER CURVES USED JUST REQD POWER PRINTED OUT
 ' UPDATED FOR ALTITUDE INPUT
 ' PROGRAM FOR STATIC AND MOVING THRUST
    
 DIM BladeAng(10), BladeWidth(10)
 DIM ANG(30), CL(30), CD(30)
 DIM PlaneSpeed(20), RPM(20)
 DIM HPD(80):             ' USED IN POWER SUBROUTINES
    
     ' FIXED DATA
     PI = 3.1417
     G = 32.18
     ' ------------------ INPUT DATA -----------------------
     'INPUT "Input a name for this prop case (less than 8 char.)", CASE$
     'CASE$ = LTRIM$(CASE$)
     'CASE$ = MID$(CASE$, 1, 8)
     'filename$ = CASE$ + ".DAT"
     filename$ = "vance.dat"   'test
GotGoodFileNam:
     OPEN filename$ FOR OUTPUT AS #1

AIRDSL = 2.37689E-03

'INPUT "INPUT DESIRED ALTITUDE IN FEET ";
ALTF = 0

AIRDEN = 2.37689E-03 * ((1 - 6.8753E-06 * ALTF) ^ 4.2651)

'INPUT "INPUT CONDITIONS PROP DIA, PITCH (INCHES) ",
'edit
DIA = 72
PITCH = 70

'INPUT "INPUT BLADE WIDTH AT .9, .7, .5, .3 RADIUS ";
'edit
BladeWidth(9) = 4
BladeWidth(7) = 4
BladeWidth(5) = 4
BladeWidth(3) = 4
    
'INPUT "INPUT BLADE ANGLE AT .9, .7, .5, .3 RAD.  OR ZEROS FOR TRUE HELICAL  PITCH ";
'edit
BladeAng(9) = 0
BladeAng(7) = 0
BladeAng(5) = 0
BladeAng(3) = 0

'INPUT "Input # of desired plane speeds (1 if all you want is cruise) "; NSPD
    
'     FOR NS = 1 TO NSPD
'     INPUT "INPUT PLANE SPEED MPH "; PlaneSpeed(NS)
'     INPUT "INPUT STARTING PROP RPM "; RPM(NS)
'     NEXT NS
NS = 1
NSPD = 1       'test
PlaneSpeed(NS) = 200    'test
RPM(NS) = 2000  'test

'     INPUT "INPUT FUSELAGE CROSS SECT AREA SQFT, DRAG COEFF (.2 AVG) ";
'edit
AFUS = 16
CDFUS = .2
    
'     INPUT "INPUT 1 FOR SHORT PRINTOUT 2 FOR LONG ";
'edit
PCODE = 2
   
CLS

     ' --------------------- HARD COPY OF INPUT DATA -------
     IF PCODE < .9 THEN GOTO DataForAirFoil:               '3200
    
     PRINT #1, "PROGRAM PRPLRITF - FOR THRUST AND POWER AT DESIGNATED SPEEDS AND RPM"
     PRINT #1,
     PRINT #1, DATE$, TIME$
     PRINT #1,
     PRINT #1, "         CASE ="; CASE$
     PRINT #1, "     ALTITUDE ="; ALTF
     PRINT #1, " FT - DENSITY ="; AIRDEN
     PRINT #1, "     PROP DIA ="; DIA
     PRINT #1, "    IN  PITCH ="; PITCH; "  IN  "
     PRINT #1, "          RPM ="; RPM
     PRINT #1, "FUSELAGE AREA ="; AFUS
     PRINT #1, "   DRAG COEFF ="; CDFUS
     PRINT #1, "BLADE WIDTH @ .9R ="; BladeWidth(9); "  .7R ="; BladeWidth(7); "  .5R ="; BladeWidth(5);
     PRINT #1, "  .3R ="; BladeWidth(3)
     PRINT #1,
     PRINT #1,

DataForAirFoil:       ' 3200 REM --- DATA FOR AIR FOIL ---
     ' CLARK Y WITH 6 ASPECT RATIO
     ' ANGLE ATTACK, LIFT COEFF, DRAG COEFF
     DATA -35,-1.25,.4
     DATA -30,-1.55,.3
     DATA -25,-1.4,.15
     DATA -20,-1.12, .1
     DATA -15, -.74, .04
     DATA -10, -.38, .02
     DATA -5, 0, .01
     DATA 0, .38, .02
     DATA 5, .74, .04
     DATA 10, 1.12, .1
     DATA 15, 1.4, .15
     DATA 20, 1.55, .3
     DATA 25, 1.25, .4
     DATA 30, 1.0, .6
     DATA 35, .8, .8
     DATA 40, .6, 1
     DATA 45, .55, 1.2
     DATA 50, .5, 1.5
     DATA 55, .45, 1.7
     DATA 60, .4, 2
     ' LOAD AIRFOIL DATA
     FOR N = 1 TO 20
     READ ANG(N), CL(N), CD(N)
     NEXT N
     '************* SPEED LOOP ***********************
     FOR NS = 1 TO NSPD
     PVEL = PlaneSpeed(NS)
     PLANEV = PVEL * 88 / 60
     IF PCODE = 1 THEN PRINT #1, "  MPH__RPM__THR__THR__BHP__DELTA__EFF__JET__SYS__NET(-FUS DRG)___ANG__ ATT"
     IF PCODE = 1 THEN PRINT #1, "            LBS__HP___REQ_V(FPS)_PRP__EFF__EFF___THR__THRHP__@.9R__.7R__.3R"
     IF PCODE = 1 THEN PRINT #1,
     '***********************************************************
     DELRPM = 100
     RPM = RPM(NS) - DELRPM
     FOR NR = 1 TO 14
     RPM = RPM + DELRPM
    
     '******************* RPM LOOP **************************
     ' ZERO OUT VALUES FOR LOOP
     HPTOT = 0
     THRTOT = 0
     JETTOT = 0
    
     ' COMPUTATIONS
     ' LOOP FOR RADIUS POINTS
     IF PCODE < 2 THEN GOTO PcodeLessThan2       ' 4150
     PRINT #1, " | RADIUS | "; "WIDTH | "; "ANGLE | "; "HP ZONE | "; "LIFT THRST | ";
     PRINT #1, "AOA | "; "PITCH | VEL |"
     PRINT #1,

PcodeLessThan2:                '  4150 REM
     RADT = 0
     DELVT = 0
     '************************************************************
     FOR RAD = .3 TO .9 STEP .2
     LRAD = INT(.1 + (RAD * 10))
     RZMIN = RAD - .1
     RZMAX = RAD + .1
     WIDZON = BladeWidth(LRAD)
     PLVEL = RPM * DIA * RAD * PI / (12 * 60):        ' PITCH LINE VEL - FPS
     BLANGT = PITCH / (RAD * DIA * PI)
     BLANG = BladeAng(LRAD) * PI / 180:               ' BLADE ANGLE IN RADIANS FROM INPUT LINE
     IF BladeAng(LRAD) < 1 THEN BLANG = ATN(BLANGT):  ' BLADE ANGLE IF INPUT ZEROS
     BLANGD = BLANG * 180 / PI:                        ' BLADE ANGLE IN DEGREES
     DISCAR = (((RZMAX * DIA) ^ 2) - ((RZMIN * DIA) ^ 2)) * .7854 / 144
     BLDAR = DIA * (RZMAX - RZMIN) * WIDZON / 144
    
     ' AREAS IN SQUARE FEET -BLADE AREA FOR TWO BLADES
     TOUT = 0
     '
     INVFAC = 1!
     ' INVFAC IS THE FACTOR FOR INLET VEL RELATIVE TO MOM VEL
     '
     ' ---------LOOP FOR DELTA V ----------------------
     FOR DELV = 10 TO 190 STEP 10

LoopForDeltaV:                           ' 4360
     AIRVEL = PLANEV + (INVFAC * DELV)
     AIRANG = ATN(AIRVEL / PLVEL)
     ANGAT = BLANG - AIRANG
     ANGATD = ANGAT * 180 / PI
     NAFD = INT((ANGATD / 5) + 8)
     AIRWF = AIRVEL * AIRDEN * DISCAR
     MOMF = AIRWF * DELV
     DELCL = CL(NAFD + 1) - CL(NAFD)
     DELANG = ANGATD - ANG(NAFD)
     CLZON = CL(NAFD) + (DELANG * DELCL / 5)
     LFTVEL = PLVEL / COS(AIRANG)
     LFTQ = AIRDEN * .5 * (LFTVEL ^ 2)
     LIFT = CLZON * LFTQ * BLDAR
     DELCD = CD(NAFD + 1) - CD(NAFD)
     CDZON = CD(NAFD) + (DELANG * DELCD / 5)
     DRAG = CDZON * LFTQ * BLDAR
     LIFTHR = LIFT * COS(AIRANG) - DRAG * SIN(AIRANG)
     TORDRG = DRAG * COS(AIRANG) + LIFT * SIN(AIRANG)
     HPZON = TORDRG * PLVEL / 550
     DVHEAD = (DELV ^ 2) / (2 * G)
     ' JET HP
     EXVEL = PLANEV + DELV
     JETHP = LIFTHR * EXVEL / 550
     IF MOMF > LIFTHR THEN DELV = DELV - 1: TOUT = 1: GOTO LoopForDeltaV: '4360
     IF TOUT > 0 THEN GOTO ExitDeltaVLoop   ' 4670
     NEXT DELV
     ' ---------------- END OF DELT V LOOP ---------------
     ' OUT OF LOOP

ExitDeltaVLoop:                    ' 4670 ' OUT OF LOOP
     IF RAD = .9 THEN AAT9 = ANGATD
     IF RAD = .7 THEN AAT7 = ANGATD
     IF RAD = .5 THEN AAT5 = ANGATD
     PRINT #1, USING "######.##"; RAD; WIDZON; BLANGD; HPZON; LIFTHR;
     PRINT #1, USING "######.##"; ANGATD; PLVEL; DELV
     IF PCODE < 1.5 THEN GOTO PcodeLessThan1.5:            '4740
     PRINT #1, USING "######.##"; RAD; WIDZON; BLANGD; HPZON; LIFTHR;
     PRINT #1, USING "######.##"; ANGATD; PLVEL
     PRINT #1,
PcodeLessThan1.5:                  '4740
     HPTOT = HPTOT + HPZON
     THRTOT = THRTOT + LIFTHR
     JETTOT = JETTOT + JETHP
    
     ' DEVICE FOR WEIGHTED AVERAGE OF DELTA V
     DELVT = DELVT + RAD * DELV
     RADT = RADT + RAD
     NEXT RAD
     ' ************ CORRECTION FOR ADDED FUSELAGE DRAG *************
     DELVA = DELVT / RADT
     EXVELA = PLANEV + DELVA
     FUSQ = AIRDEN * .5 * (PLANEV ^ 2)
     FUSQP = AIRDEN * .5 * (EXVELA ^ 2):  ' FUSELAGE Q IN PROPWASH
     FUSDRG = FUSQ * AFUS * CDFUS
     FUSDRGP = FUSQP * AFUS * CDFUS:       ' FUSELAGE DRAG IN PROPWASH
     DELDRG = FUSDRGP - FUSDRG
     PRINT #1, "               FUS DRAG = ";
     PRINT #1, USING "####"; FUSDRG
     PRINT #1, "       DRAG IN PROPWASH = ";
     PRINT #1, USING "####"; FUSDRGP
    
     ' -------- SUMMATIONS ---------------------------
     THRHP = THRTOT * PLANEV / 550
     THRNET = THRTOT - DELDRG
     EFF = THRHP / HPTOT
     JEFF = JETTOT / HPTOT
     TVEL = (((PLVEL / .9) ^ 2) + (AIRVEL ^ 2)) ^ .5
     NTHRHP = THRNET * PLANEV / 550:                ' NET THUST HP
    
     SEFF = NTHRHP / HPTOT:             ' SYSTEM PROPULSIVE EFF WITH ADDED FUS DRAG
    
     PRINT #1, "              PLANE VEL = "; PVEL
     PRINT #1, "                    RPM = "; RPM
     PRINT #1, "                  PITCH = "; PITCH
     PRINT #1, "           TOTAL THRUST = ";
     PRINT #1, USING "###.#"; THRTOT
     PRINT #1, "               TOTAL HP = ";
     PRINT #1, USING "###.#"; HPTOT
     PRINT #1, "              THRUST HP = ";
     PRINT #1, USING "###.#"; THRHP
     PRINT #1, "    FUSELAGE ADDED DRAG = ";
     PRINT #1, USING "###.#"; DELDRG
    
     PRINT #1, " THRUST MINUS THIS LOSS = ";
     PRINT #1, USING "####"; THRNET;
     PRINT #1, " LBS"
    
     IF PCODE = 1 THEN PRINT #1, USING "#####"; PVEL; RPM;
     IF PCODE = 1 THEN PRINT #1, USING "#####"; THRTOT; THRHP; HPTOT; DELVT;
     IF PCODE = 1 THEN PRINT #1, USING "##.###"; EFF; JEFF; SEFF;
     IF PCODE = 1 THEN PRINT #1, USING "######"; THRNET; NTHRHP;
     IF PCODE = 1 THEN PRINT #1, USING "####.#"; AAT9; AAT7; AAT5
     IF PCODE < 1.5 THEN GOTO PcodeLessThan1.5A               '5170
     PRINT #1,
     PRINT #1, "            PLANE SPEED = "; PVEL; "MPH"
     PRINT #1, "                    RPM = "; RPM
     PRINT #1, "    PITCH AT THIS POINT = "; PITCH; " INCHES"
     PRINT #1, "APPROX AIR VEL OVER TIP = ";
     PRINT #1, USING "####"; TVEL;
     PRINT #1, " FT/SEC"
     PRINT #1, "           TOTAL THRUST = ";
     PRINT #1, USING "###.#"; THRTOT
     PRINT #1, "    HORSEPOWER REQUIRED = ";
     PRINT #1, USING "###.#"; HPTOT
     PRINT #1, "              THRUST HP = ";
     PRINT #1, USING "###.#"; THRHP
     PRINT #1, "          PROPELLOR EFF = ";
     PRINT #1, USING "##.##"; EFF
     PRINT #1, "    FUSELAGE ADDED DRAG = ";
     PRINT #1, USING "###.#"; DELDRG
     PRINT #1, " THRUST MINUS THIS LOSS = ";
     PRINT #1, USING "###.#"; THRNET;
     PRINT #1, " LBS"
     PRINT #1, "         JET HORSEPOWER = ";
     PRINT #1, USING "###.#"; JETTOT
     PRINT #1, "             JET HP EFF = ";
     PRINT #1, USING "##.##"; JEFF
     PRINT #1, "PROPULSIVE SYSTEM EFF (WITH FUS. DRG) = ";
     PRINT #1, USING "##.##"; SEFF
     PRINT #1,
     PRINT #1,

PcodeLessThan1.5A:                '5170 REM
     ' NEW RPM VALUE
     NEXT NR
     IF PCODE > .1 THEN PRINT #1,
     NEXT NS:                     ' NEXT PLANE SPEED
     IF PCODE > .1 THEN PRINT #1,
    
     CLOSE
     SHELL "MORE < " + filename$
     SYSTEM
     END