Piston Engine: target specific RPM and HP? (engines.cfg)

I want to configure a piston engine that provides maximum 77 HP at 2500 RPM. I do not have information on displacement, compression ratio etc …

I am playing with modifying engines.cfg.

I tried googling around, and found some formulas for RPM and HP, but playing with the engine parameters displacement, compression ratio and cylinders I am struggling to do this. I can get the RPM or the HP, but not both.

Maybe through trial and error I can get there, but I feel I’m missing some fundamental that would allow me to calculate the values I need?

I got to 77 HP, but with 4086 RPM. Using 4 cylinders, displacement 21.5 and compression ratio of 5.0.

Note, for me these parameters can be anything, even unrealistic values. But if I can go about this with reasonable realistic values, even better of course.

Note: if this is a weird question, it’s because I’m not very knowledgeable about engines.

use a constant speed prop to lock the rpm to 2500

well 77hp is less than half of the 180 hp engine of the 172.
go with less than half of the displacement there.

the engine will probably stall at idle, reduce the friction to prevent that.

i tried realistic numbers on the Austro engines, but ended up getting more than 2x the power.
you are gonna have to use scalars to bring it down

Thanks! The fundamental I was missing was the relation between the prop and the engine RPM. I assumed the engine ran at a certain RPM no matter what, but I understand now that is not the case.

With that information, I probably will be able to do what I want by adjusting the propeller.

That explains a lot!

size your propeller correctly and the angle will set itself. use that angle as a reference and increase the pitch until you get good static and moving rpm

I ended up configuring the desired properties of the engine using the engine properties and the gear ratio on the propeller. I think it roughly resembles what I wanted now.

How does the gear ratio work? I’m trying to increase engine power but without pushing the engine too hard?

[VERSION]
major = 1
minor = 0

[GENERALENGINEDATA]
engine_type = 0 ; 0=Piston, 1=Jet, 2=None, 3=Helo-Turbine, 4=Rocket, 5=Turboprop
fuel_flow_scalar = 1 ; Fuel flow scalar
min_throttle_limit = 0 ; Minimum percent throttle. Generally negative for turbine reverser
master_ignition_switch = 0
starter_type = 0 ; 0=Electric, 1=Manual, 2=Bleed Air
max_contrail_temperature = -1
Engine.0 = -5.3, 0, 3.2
ThrustAnglesPitchHeading.0 = 0, 0

[PISTON_ENGINE]
power_scalar = 1 ; Piston power scalar
cylinder_displacement = 20.6 ; Cubic inches per cylinder
compression_ratio = 11 ; Compression ratio
number_of_cylinders = 4 ; Number of cylinders
max_rated_rpm = 5800 ; Max rated RPM
max_rated_hp = 150 ; Max rated HP
min_cruise_rpm = 0
max_cruise_rpm = 5500
max_indicated_rpm = 7000
fuel_metering_type = 0 ; 0=Fuel Injected, 1=Gravity Carburetor, 2=Aerobatic Carburetor
cooling_type = 1 ; 0=Cooling type Air, 1=Cooling type Liquid
normalized_starter_torque = 0.3 ; Starter torque factor
starter_time = 1.5 ; Time the Starter stays active when pressed
turbocharged = 0 ; Is it turbocharged? 0=FALSE, 1=TRUE
max_design_mp = 38 ; Max design manifold pressure, (inHg)
min_design_mp = 1 ; Min design manifold pressure, (inHg)
critical_altitude = 10000 ; Altitude to which the turbocharger will provide max design manifold pressure (feet)
emergency_boost_type = 0 ; 0=None, 1=Water Injection, 2=Methanol/Water injection, 3=War Emergency Power
emergency_boost_mp_offset = 0 ; Additional manifold pressure supplied by emergency boost
emergency_boost_gain_offset = 0 ; Multiplier on manifold pressure due to emergency boost
fuel_air_auto_mixture = 1 ; Automixture available? 0=FALSE, 1=TRUE
auto_ignition = 0 ; Auto-Ignition available? 0=FALSE, 1=TRUE
max_rpm_mechanical_efficiency_scalar = 1 ; Scalar on maximum RPM mechanical efficiency
idle_rpm_mechanical_efficiency_scalar = 1
max_rpm_friction_scalar = 0.24 ; Scalar on maximum RPM friction
idle_rpm_friction_scalar = 0.24 ; Scalar on idle RPM friction
BestPowerSpecificFuelConsumption = 0.30 ; SFC at Best Power mixture ratio
egt_tuning_constant = 1
egt_peak_temperature = 2100 ; typical peak EGT: 1200 degF + 460
egt_tc = 0.05
cht_tuning_constant = 1
cht_cooling_constant = 0.65
cht_heating_constant = 960 ; max temp degrees Rankine
cht_tc = 0.015
oil_press_tuning_constant = 1
oil_press_max = 12500 ; max oil pressure (psf)
oil_press_tc = 0.8
oil_temp_tuning_constant = 1
oil_temp_cooling_constant = 0.21
oil_temp_heating_constant = 620 ; max oil temperature degrees Rankine
oil_temp_tc = 0.03
radiator_temp_tuning_constant = 1
radiator_temp_cooling_constant = 0.015
radiator_temp_max = 670 ; max radiator temperature degrees Rankine
radiator_temp_tc = 0.02
fuel_press_tuning_constant = 1
fuel_press_max = 2376 ; max fuel pressure (psf)
fuel_press_tc = 2
number_of_magnetos = 2
two_stroke_cycle = 0
supercharged = 1
supercharger_boost_low_end=1.0
supercharger_boost_high_end=2.6
supercharger_power_cost=0.1
radiator_cooling_constant = 0.015
radiator_heating_constant = 670
radiator_tc = 0.02
radiator_tuning_constant = 1
magneto_order_left_right_both = 0
engine_mechanical_efficiency_table = 0:0.5, 1000:0.6, 5000:0.7, 5100:0.7, 5500:0.7, 6000:0.5
engine_friction_table = -600:-65, 600:65, 1000:17, 6000:17
manifold_efficiency_table = 0:0.25, 1:0.97
rpm_to_oil_pressure_table = 0:0, 0.1:0.2, 0.3:0.7, 0.519:0.9, 0.74:1
rpm_to_fuel_pressure_table = 0:0, 1000:0.3, 2800:1, 4000:1
oil_temp_factor_from_rpm = 0:0.5, 500:0.8, 2000:1.0
diesel = 0 ; Is it diesel engine?
induction_air_temp_tc = 0.7 ; Induction Air Temp time constant
carb_heat_delta_temp = 55 ; Delta of temperature when the Carburator Heater is activated (In Rankine)
single_magneto_efficiency = 0.97 ; Efficiency ratio of the engine if it is designed for 2 magnetos but only 1 is currently active.
oil_temp_to_oil_pressure_table = 0:0, 500:-1, 700:-600 ; Pressure differential (in psf) of the oil depending on its temperature (in K).
shaft_torque_tc = 2 ; Gives the speed at which the shaft torque reaches its target value.
recip_stop_arc_degrees = 90 ; Gives the amplitude of the motion made by a reciprocating engine while it is having a spring compression behaviour after it stops producing work.
recip_stop_arc_restitution = 0.8 ; Gives the amount of torque in % restituted when reaching its max arc by a reciprocating engine while it is having a spring compression behaviour after it stops producing work.
recip_stop_arc_max_pct_rpm = 0.04 ; Gives the % max rpm at which a reciprocating engine that stopped producing work will start having a spring compression behaviour.
recip_stop_arc_friction_factor = 2 ; Factor on how much friction affects the reciprocating engine while having a spring compression behaviour.
egt_factor_from_pct_power = 0:0.5, 0.5:0.894, 0.64:0.956, 0.75:0.98, 1:1 ; Gives the EGT temperature factor (to egt_peak_temperature) from the pct of power (HP/maxHP)
egt_delta_from_mixture_ratio = 0.043:-100, 0.05:-89.7, 0.067:-50, 0.07:0, 0.075:-4.9, 0.083:-80, 0.108:-120.5 ; Gives the EGT temperature delta (to current egt value after factor is applied) from the mixture ratio

[PROPELLER]
thrust_scalar = 2 ; Propeller thrust scalar
propeller_type = 1 ; 0=Constant Speed, 1=Fixed Pitch
propeller_diameter = 6 ; Propeller Diameter, (feet)
propeller_blades = 3 ; Number of propeller blades
propeller_moi = 0.5 ; Propeller moment of inertia
use_propeller_rpm = 0;
beta_max = 43 ; Maximum blade pitch angle for constant speed prop, (degrees)
beta_min = 15 ; Minimum blade pitch angle for constant speed prop, (degrees)
min_gov_rpm = 1100 ; Miminum governed RPM
prop_tc = 0.01 ; Prop time-constant
gear_reduction_ratio = 2.43 ; Propeller gear reduction ratio
fixed_pitch_beta = 20 ; Fixed pitch angle of fixed pitch prop, (degrees)
low_speed_theory_limit = 0 ; Speed at which low speed theory becomes blended in (feet/second)
prop_sync_available = 0 ; Prop synchronization available? 0=FALSE, 1=TRUE
prop_deice_available = 0 ; Prop de-icing available? 0=FALSE, 1=TRUE
prop_feathering_available = 0 ; Prop feathering available? 0=FALSE, 1=TRUE
prop_auto_feathering_available = 0 ; Prop auto-feathering available? 0=FALSE, 1=TRUE
min_rpm_for_feather = 0 ; Minimum RPM for prop feathering
beta_feather = 0 ; Feathering pitch angle (degrees)
power_absorbed_cf = 0 ; Coefficient of friction for power absorbed by propeller
defeathering_accumulators_available = 0 ; Defeathering accumulators available? 0=FALSE, 1=TRUE
prop_reverse_available = 0 ; Prop reverse available? 0=FALSE, 1=TRUE
minimum_on_ground_beta = 0 ; Miminum pitch angle on ground, (degrees)
minimum_reverse_beta = 0 ; Minimum pitch angle in reverse, (degrees)
prop_reverse_max_vel = 2 ; Max uvel when reversing
prop_governor_p = 0 ; Propeller governor controller P
prop_governor_i = 0 ; Propeller governor controller I
prop_governor_d = 0 ; Propeller governor controller D
prop_governor_iboundary = 0 ; Propeller governor controller I Boundary
prop_governor_dboundary = 0 ; Propeller governor controller D Boundary
prop_efficiency_table = 0.000000:0.000000:0.200000:0.400000:0.600000:0.800000:1.000000:1.200000:1.400000:1.600000:1.800000:2.000000:2.200000,15.000000:0.150000:0.400000:0.710000:0.860000:0.720000:0.500000:0.340000:0.230000:0.150000:0.110000:0.080000:0.060000,20.000000:0.100000:0.300000:0.620000:0.790000:0.860000:0.800000:0.550000:0.420000:0.300000:0.190000:0.120000:0.090000,25.000000:0.080000:0.230000:0.490000:0.720000:0.820000:0.870000:0.820000:0.600000:0.410000:0.280000:0.180000:0.130000,30.000000:0.070000:0.180000:0.330000:0.500000:0.720000:0.820000:0.870000:0.850000:0.560000:0.420000:0.260000:0.190000,35.000000:0.060000:0.160000:0.260000:0.400000:0.550000:0.720000:0.820000:0.860000:0.870000:0.700000:0.400000:0.300000,40.000000:0.050000:0.120000:0.230000:0.330000:0.450000:0.570000:0.700000:0.810000:0.860000:0.870000:0.850000:0.500000
prop_power_cf = 0.000000:0.000000:0.200000:0.400000:0.600000:0.800000:1.000000:1.200000:1.400000:1.600000:1.800000:2.000000:2.200000:2.400000,15.000000:0.048000:0.043000:0.038000:0.028000:0.009000:-0.057000:-0.188000:-0.338000:-0.522000:-0.705000:-0.915000:-1.092000:-1.220000,20.000000:0.072000:0.065000:0.059000:0.050000:0.037000:0.010000:-0.074000:-0.188000:-0.338000:-0.525000:-0.726000:-0.942000:-1.120000,25.000000:0.098000:0.094000:0.088000:0.080000:0.070000:0.050000:0.020000:-0.040000:-0.134000:-0.272000:-0.468000:-0.717000:-0.933000,30.000000:0.138000:0.132000:0.128000:0.120000:0.110000:0.099000:0.078000:0.040000:-0.017000:-0.110000:-0.248000:-0.468000:-0.741000,35.000000:0.206000:0.198000:0.188000:0.178000:0.163000:0.150000:0.130000:0.105000:0.070000:0.023000:-0.074000:-0.254000:-0.510000,40.000000:0.250000:0.242000:0.233000:0.223000:0.214000:0.204000:0.190000:0.175000:0.150000:0.118000:0.072000:0.019000:-0.059000

The gear ratio will decrease the prop RPM. Its the gearing between the engine and prop.

If you want to increase power then increase the mechanical efficiency.

1 Like

Sorry to hijack the thread; can anyone give a brief explanation of how these work? Trying to finetune my prop governor and engine behaviour.

To the OP - best practice is to of course get real data. Failing that get data from a similar engine, you should be able to find something. If you can get an idea of max HP and RPM limits, it shouldn’t be too difficult to reverse engineer and approximate the rest of the data. You can then finetune with scalars once you have a decent balance.

Thanks, eventually I found an engine similar in performance. The problem is I was playing around trying to make the piston engine behave like the electric engine Pipistrel E-811. I managed to get it in kind of a similar performance range now, except for idle rpm (which should be 0!)