#### Archived

This topic is now archived and is closed to further replies.

# How calculates FS indicated horsepower?

## Recommended Posts

Hello,I am new to xml gauge design and develop currently a gauge in which I need the indicated horse power to calculate the cylinder head temperature of air cooled engines. In the SDK I found only a sim variable which gives brake horse power. I tried to calculate ihp with equations from an engineering book about internal combustion engines. These equations are simplified descriptions of the real engine behaviour or otto cycle. Some values in these equations depend themselves on air fuel mixture conditions which cannot be calculated easy.Until now I had no success with my calculations. All my figures I calculated are way off from the values I observed in flight tests with the AFSD tool. Please, can anyone in this forum point me in the right direction or can tell me how flight simulator calculates ihp? Thank you in advance.Kind regardsErich

##### Share on other sites

If you need to know the fuel/air ratio then there is a variable for that as well.

##### Share on other sites

Interesting project, Erich :( I had put some thought into such a model as well in the past, but put on slow burner, as there are just too many variables.How far off are your calculations of IHP off from BHP indicated by the aircraft model?I believe many/most FS aircraft models get engine fuel efficiency (part of energy content in the fuel converted into mechanical energy) about right.Actually, that's a direct consequence of whether the fuel flow and engine BHP are set in the aircraft model to be similar to the RW aircraft operating parameters.Example Realair SF-260 off my head, as very crude back-of-the-envelope calculation: Rated power: 260 HP (=190 kW)Fuel flow full throttle with the SF-260 is about 20 gal/hr from memory.Energy content Avgas about 45 MJ/kg (=110 MJ/gal)Total power of fuel burned: 2200 MJ/hr = 610 kW = 830 HP-> Engine efficiency: 260 BHP/830 HP = 30%Fuel efficiency in the range of a few 10 percent seem to be normal for piston engines.http://www.epi-eng.c..._efficiency.htmSome very rough considerations here, don't nail me on the exact 30% value. This is just to demonstrate that a properly modeled aircraft should have BHP about right.Also, what this does show is nothing more than that the aircraft model of the SF-260 is well modeled, which is not surprising as it's definitely one of the better modeled planes out there.Gunter

##### Share on other sites

Not sure this will help, but it is interesting. :)PLANK Formula to calculate BMEP or HPBHP = Brake HorsepowerP = BMEP (Brake Mean Effective Pressure, psi)L = Length of stroke (in)A = Area of cylinder (sq. in)N= Number of power strokes per minute (RPM / 2 on typical 4 stroke engines)K = Number of cylindersFormula:BHP = PLANK / 396,000Since L x A x K = the displacement of the engine:Multiply by 2 to convert from RPM / 2 to RPM, so 396,000 becomes 792,000Substitute these into the formula:BHP = BMEP x Displ. x RPM / 792,000For the R2800 radial engine displacement = 2804 cu in so the formula becomes:BHP = BMEP x 2804 x RPM / 792,000Dividing by 2804 over 2804 (= 1) then it becomes:BHP = BMEP x RPM / 283So for an example, on a wet takeoff BMEP = 243 and RPM = 2800 soBHP = 243 x 2800 / 283 = 2404 HPHope this helps,

##### Share on other sites

Hello Tom,interesting indeed. And nice mnemonic.Flying the Connie a year or so ago I was baffled by BMEP and didn't quite know what to do with it except keep it at a certain value.Makes much more sense now. Thanks.Nice of you to drop in. Do you have more advice regarding how to model CHT more accurately than what FS is providing? I'm sure you've tried to develop a more accurate CHT model than what FS provides over at Calclassics Maybe even have one in your drawer?Gunter

##### Share on other sites

Hi,You're welcome. :)Yes, I have my own CHT formula, but I find I have to tweak it for each engine type. The FS CHT is mostly based on RPM (they apparently used oil temp calculations). My CHT is based on fuel flow (proportional to engine HP output), outside temperature, and cowl flap position (modified by airspeed).R-2800:

`   <Element> <!-- Calculate CHT:  130 + FF * K + OAT * K - (Cowl flap position * K - Airspeed / K ) -->      <Select>           <Value> <!-- Then decrease CHT fast if engine running, slow if not.  Increase CHT fast. -->(A:General Eng1 Combustion, bool) if{ 130 (A:Eng fuel flow PPH:1, pounds per hour) 0.175 * + (A:Ambient Temperature,Celsius) + (A:Recip eng cowl flap position:1, percent) 3 * (A:Airspeed indicated, knots) 1 + 100 / * 60 min -  } els{ (A:Ambient Temperature,Celsius) } (>L:CHT_1_input,number)(L:CHT_1_input,number) (L:CHT_1,number) < (A:General Eng1 Combustion, bool) && if{ (L:CHT_1,number) (L:CHT_1,number) (L:CHT_1_input,number) - 0.00025 * (E:Simulation Rate, enum) * - (>L:CHT_1,number) }(L:CHT_1_input,number) (L:CHT_1,number) < (A:General Eng1 Combustion, bool) ! && if{ (L:CHT_1,number) (L:CHT_1,number) (L:CHT_1_input,number) - 0.000025 * (E:Simulation Rate, enum) * - (>L:CHT_1,number) }(L:CHT_1_input,number) (L:CHT_1,number) > if{ (L:CHT_1,number) (L:CHT_1_input,number) (L:CHT_1,number) - 0.00025 * (E:Simulation Rate, enum) * + (>L:CHT_1,number) }(A:General Eng2 Combustion, bool) if{ 130 (A:Eng fuel flow PPH:2, pounds per hour) 0.175 * + (A:Ambient Temperature,Celsius) + (A:Recip eng cowl flap position:2, percent) 3 * (A:Airspeed indicated, knots) 1 + 100 / * 60 min - } els{ (A:Ambient Temperature,Celsius) } (>L:CHT_2_input,number)(L:CHT_2_input,number) (L:CHT_2,number) < (A:General Eng2 Combustion, bool) && if{ (L:CHT_2,number) (L:CHT_2,number) (L:CHT_2_input,number) - 0.00025 * (E:Simulation Rate, enum) * - (>L:CHT_2,number) }(L:CHT_2_input,number) (L:CHT_2,number) < (A:General Eng2 Combustion, bool) ! && if{ (L:CHT_2,number) (L:CHT_2,number) (L:CHT_2_input,number) - 0.000025 * (E:Simulation Rate, enum) * - (>L:CHT_2,number) }(L:CHT_2_input,number) (L:CHT_2,number) > if{ (L:CHT_2,number) (L:CHT_2_input,number) (L:CHT_2,number) - 0.0002 * (E:Simulation Rate, enum) * + (>L:CHT_2,number) }(L:CHT_Start,bool) 0 == (L:CHT_1,number) 1 > && if{ (L:CHT_Start,bool) ! (>L:CHT_Start,bool) (L:CHT_1_input,number) (>L:CHT_1,number) (L:CHT_2_input,number) (>L:CHT_2,number) (L:CHT_1,number) 200 > if{ 200 (>L:CHT_1,number) } (L:CHT_2,number) 200 > if{ 200 (>L:CHT_2,number) } }</Value>       </Select>   </Element>`

R-3350:

`  <Element> <!-- Calculate CHT:  150 + FF * K + OAT * K - (Cowl flap position * K - Airspeed / K ) -->      <Select>           <Value> <!-- Then decrease CHT fast if engine running, slow if not.  Increase CHT fast. -->(A:General Eng1 Combustion, bool) if{ 150 (A:Eng fuel flow PPH:1, pounds per hour) 0.14 * + (A:Ambient Temperature,Celsius) + (A:Recip eng cowl flap position:1, percent) 3 * (A:Airspeed indicated, knots) 1 + 100 / * 60 min - } els{ (A:Ambient Temperature,Celsius) } (>L:CHT_1_input,number)(L:CHT_1_input,number) (L:CHT_1,number) < (A:General Eng1 Combustion, bool) && if{ (L:CHT_1,number) (L:CHT_1,number) (L:CHT_1_input,number) - 0.0002 * (E:Simulation Rate, enum) * - (>L:CHT_1,number) }(L:CHT_1_input,number) (L:CHT_1,number) < (A:General Eng1 Combustion, bool) ! && if{ (L:CHT_1,number) (L:CHT_1,number) (L:CHT_1_input,number) - 0.00002 * (E:Simulation Rate, enum) * - (>L:CHT_1,number) }(L:CHT_1_input,number) (L:CHT_1,number) > if{ (L:CHT_1,number) (L:CHT_1_input,number) (L:CHT_1,number) - 0.0002 * (E:Simulation Rate, enum) * + (>L:CHT_1,number) }(A:General Eng2 Combustion, bool) if{ 150 (A:Eng fuel flow PPH:2, pounds per hour) 0.14 * + (A:Ambient Temperature,Celsius) + (A:Recip eng cowl flap position:2, percent) 3 * (A:Airspeed indicated, knots) 1 + 100 / * 60 min - } els{ (A:Ambient Temperature,Celsius) } (>L:CHT_2_input,number)(L:CHT_2_input,number) (L:CHT_2,number) < (A:General Eng2 Combustion, bool) && if{ (L:CHT_2,number) (L:CHT_2,number) (L:CHT_2_input,number) - 0.0002 * (E:Simulation Rate, enum) * - (>L:CHT_2,number) }(L:CHT_2_input,number) (L:CHT_2,number) < (A:General Eng2 Combustion, bool) ! && if{ (L:CHT_2,number) (L:CHT_2,number) (L:CHT_2_input,number) - 0.00002 * (E:Simulation Rate, enum) * - (>L:CHT_2,number) }(L:CHT_2_input,number) (L:CHT_2,number) > if{ (L:CHT_2,number) (L:CHT_2_input,number) (L:CHT_2,number) - 0.0002 * (E:Simulation Rate, enum) * + (>L:CHT_2,number) }(L:CHT_Start,bool) 0 == (L:CHT_1,number) 1 > && if{ (L:CHT_Start,bool) ! (>L:CHT_Start,bool) (L:CHT_1_input,number) (>L:CHT_1,number) (L:CHT_2_input,number) (>L:CHT_2,number) (L:CHT_1,number) 200 > if{ 200 (>L:CHT_1,number) } (L:CHT_2,number) 200 > if{ 200 (>L:CHT_2,number) } }</Value>       </Select>   </Element>`

These are for engines 1 and 2 - engines 3 and 4 are the same. The first lines set the "desired CHT" value. The next lines slow the transition from the "current" CHT to the "desired CHT" value. The last sections are to set the CHT to 200 deg. when the plane is loaded, to prevent trouble in the damage module with low CHT values. Probably not needed otherwise.The various K values are my "tweaking" numbers. Note that these tweaking numbers are modified only after adjusting the basic CHT values in the AIR file (section 541). For the R-2800 and R-3350 the scale is 1, cooling factor 0.46, temp limit 1046, and rate of change 0.01.Hope this helps,

##### Share on other sites

Thanks for sharing!Such a pragmatic model is probably the best way to implement CHT into a plane. Thanks.Gunter

##### Share on other sites

Woah, Erich, you're way ahead of me there ! :( Be sure I'll have a close look at your model and naca reports to learn.Only thing I can say is keep us updated about your progress, and looking forward to the release!

##### Share on other sites

• Tom Allensworth,
Founder of AVSIM Online

• ### Hot Spots

• Flight Simulation's Premier Resource!

AVSIM is a free service to the flight simulation community. AVSIM is staffed completely by volunteers and all funds donated to AVSIM go directly back to supporting the community. Your donation here helps to pay our bandwidth costs, emergency funding, and other general costs that crop up from time to time. Thank you for your support!