Jump to content
Sign in to follow this  
hyperion

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 this post


Link to post
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 this post


Link to post
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 this post


Link to post
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 Big%20Grin.gif Maybe even have one in your drawer?Gunter

Share this post


Link to post
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 this post


Link to post
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 this post


Link to post
Share on other sites

Hello Tom, hello Gunter,sorry for my late reply but I was very busy the last days. Thank you for your comments, notes and interest. As I short mentioned in my first post I work on a method to calculate the cylinder head temperature for air cooled engines. This method requires to know ihp but before I go in further details I will again come back to my question how FS calculates ihp.In the meanwhile I had a mail exchange with Hervé Sors who developed the AFSD tool. I asked him how AFSD calculates ihp. The anwser was quit simple. AFSD reads table 509 (friction torque vs rpm) and calculates from this friction power, thusihp = bhp (calculated by FS) + friction power from table 509I thougt the other way round, that FS calculates first ihp from values found in the *.cfg file and in flight values and then subtract friction power to get bhp. This procedure seemed more logical to me. I looked inside the code from flightgear which uses JSBSim as engine. Flightgear calculates first ISFC (indicated specific fuel consumption) and from this ihp and at last bhp.As the gauge I develop is written in xml I have no chance to read table 509. Therefore I must find a method to calculate ihp myselfs.Now an answer to Gunter's post about the Realair SF-260. What you calculated is the so called brake thermal efficiency and indeed 30% is a good value. According to (Heywood, Internal combustion engine fundamentals) the power generated by the fuel isP_fuel = FFR x Q_hvFFR = fuel flow rateQ_hv = lower heating value of the fuelAnd further isP_fuel = Pi + P_heat = Pb + Ptf + P_heat withPtf = Pfp + Pf_othersPi = indicated powerPb = brake powerPtf = total friction powerPfp = piston friction powerPf_other = other friction power, e.g. bearings, valve driveP_heat = power loss through exhaust gases, cylinder wall heat transfer, oil, unburned fuel etc.An other picture which I have from a book (D. R. Pye, The internal combustion engine, Vol. II, The aero engine, 1934) gives the following power balance sheet for an aircraft of those days:Fuel = 100%- 70% heat losses = 20% cylinder wall + 50% exhaust gases= Indicated power = 30%- 5% mechnical losses = 3% pistion friction + 2% auxiliaries and other friction= Brake power = 25%- 6% Propulsion losses (Airscrew) = 3% induced (slip stream) + 3% profile (air friction)= Thrust power = 19%- 0 to 12% power to raise weight + 7 to 19% loss in aeroplane resistanceBut now to my gauge project. When I had the idea I have been wondering if not NACA has done some investigations on the subject of air cooled engine cooling. Most of these old reports are public available from the nasa reports serverhttp://ntrs.nasa.gov/search.jsp?Ne=2&N=17 or http://naca.central.cranfield.ac.uk/I found a lot of reports about cooling and in particular NACA TN 612 which describes a method to calculate the average cht of an air cooled engine. A lot of these reports I found investigate also the influence of the engine cowling and cowl flaps or cooling slot on the engine cooling. The so called NACA cowling was one of the results from those invesitgations. Nearly all later radial engine cowlings are a form of NACA cowling.A very important parameter for the cooling of an air coolded engine is the cooling air pressure drop across the cylinders. The higher these pressure drop the better the cooling. To increase the pressure drop accross the cylinders so called baffle plates were installed between the cylinders. These baffle plates forced the cooling airstream to flow only through the cooling fins and because of this the air speed up between the fins and therefore the heat transfer was drastically increased.Now the method from the NACA TN 612 needs ihp or charge air flow and cooling air pressure drop. My first problem was how to get cooling air pressure drop. Ather scanning and reading a lot of NACA studies I found a report called NACA TN 680 from which I derived a method to calculate the cooling air pressure drop. The other Problem is that either charge air flow or indicated horse power is needed. For the moment I help me with a workaroud and calculate ihp from bhp with a simple relationihp = 1.16 x bhpI developed two gauges in xml, which was very hard, because these were my first gauges an they have a lot of math (3 dimensional functions) in it. One gauge calculates the cooling air pressure drop and one gauge, which is engine specific, calculates cht. The engine specific gauge is for a Pratt & Whitney Wasp Jr. R--985. I have in the meanwhile data for other engines as well and the gauge can easily be adapted. Up to now I have working samples which needs some optimization and a documentation. I developed it under FSX but I think it can very easy be adapted to FS9 maybe without changes. I had no time until now to check it.The Problem with my method is that the cooling pressure drop gauge must be adapted to the aircraft. There are 4 factors which needs adjustment. For this I have an excel calculation sheet in mind but until now not yet imlemented.In the attachement you find the structograms from the gauges so you can have a view on their structure. Because I have not much spare time at the moment I think I need at least 6 weeks to make it ready for the public.The attached files are SE_capd_Eng1_v102 (calculates cooling air pressure drop) and SE_PW_R-985_cht_Eng1 (calculates cht for an R-985 Engine).On the other side when I see Tom's method I doubt that my method is really handy.Erich

Share this post


Link to post
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 this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Tom Allensworth,
    Founder of AVSIM Online


  • 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!

    Click here for more information and to see all donations year to date.
×
×
  • Create New...