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