jsbsim
jsbsim copied to clipboard
Preposterous Windmilling Behavior
^ IDG A32X
Hi guys -- even at a high speed, this makes no sense. At low speeds too, the windmilling is too high. This can be see here:
^ IDG MD-11
I will get the values of what it should be about windmilling at. N2 seems plausible, but N1 is just nonsensical. Any thoughts?
Kind Regards, Josh
This may be unrelated but as I mentioned in the issue #178
N1
andN2
are hard coded to be respectively equal toqbar/10
andqbar/15
when the engine is off. The mass airflow would more relevant than the dynamic pressure for that matter.
During windmilling it can be assumed that the airflow is proportional to the ram airflow which is proportional to in.Density
(air density) times the aircraft velocity forward velocity in.aeroUVW(eU)
. The file src/models/propulsion/FGTurbine.cpp
could be modified as shown below:
@@ -190,8 +190,9 @@ double FGTurbine::Off(void)
FuelFlow_pph = Seek(&FuelFlow_pph, 0, 1000.0, 10000.0);
// some engines have inlets that close when they are off. So, if a flag is true disable windmilling
if (disableWindmill == false) {
- N1 = Seek(&N1, in.qbar/10.0, N1/2.0, N1/N1_spindown);
- N2 = Seek(&N2, in.qbar/15.0, N2/2.0, N2/N2_spindown);
+ double AirFlow = in.Density * in.AeroUVW(eU);
+ N1 = Seek(&N1, AirFlow/10.0, N1/2.0, N1/N1_spindown);
+ N2 = Seek(&N2, AirFlow/15.0, N2/2.0, N2/N2_spindown);
} else {
N1 = Seek(&N1, 0, N1/2.0, N1/N1_spindown);
N2 = Seek(&N2, 0, N2/2.0, N2/N2_spindown);
and the constants 10.0
and 15.0
might need to be updated to reach the expected rotation speeds N1
and N2
.
If you can compile FlightGear could you please check the above and let me know if that fixes the problem ?
Dear Bertrand, thank you for your response. I do not personally have time for compiling, but I know someone who may be able to test this for me, I will get back to you. Thanks
Kind Regards, Josh
Didn't I add a flag to disable windmilling?
@legoboyvdlp My understanding is that we no longer discuss about how to disable windmilling (as in #178) but rather how to set it up correctly.
Ah, I see, thanks. Ok, sure - I can do that.
Bertrand, It looks like they are now 0.319 and 0.125 - which isn't quite right. I also believe the N1 factor should be changed from 10 to 20, so that the N1 behaves more properly.
We will test these factors with the qbar code and see if the ratios seem better.
Kind Regards, Josh
It looks like they are now 0.319 and 0.125 - which isn't quite right.
I guess you are talking about N1 and N2 ? What are the values you are expecting ? Where are they coming from ?
I also believe the N1 factor should be changed from 10 to 20, so that the N1 behaves more properly.
As I mentioned above, the coefficients by which the mass air flow is divided likely need some adjustments.
We will test these factors with the qbar code and see if the ratios seem better.
The dynamic pressure (aka qbar
) is irrelevant for windmilling. The engine behavior is driven by the air flow as I said earlier: qbar
is increasing as the square of the velocity while the air flow is increasing linearly with the velocity. If you continue to use the dynamic pressure, N1
and N2
will increase too much at higher velocities.
Hi Bertrand, N2 and N1 respectively, according to lego - to me that is odd numbers - without changing the factor, it is strange that they have reversed behavior. I do wonder if it was actually N1 and N2 - I will ask for another test.
Yes, the reason I would test that on qbar is so that I can see the ratio between N1 and N2 to check the coefficient - since it seems after your changes the numbers are very very low and it is not easy to check.
Kind Regards, Josh
the reason I would test that on qbar is so that I can see the ratio between N1 and N2 to check the coefficient
Since the value N1 is equal to x/10
and N2 is equal to x/15
then whatever is x
the ratio between N2 and N1 will always be 1.5 whether x=qbar
or x=AirFlow
. If you find otherwise then there is most likely an error in the code you are testing.
it seems after your changes the numbers are very very low and it is not easy to check.
As I already mentioned, the constants 10 and 15 probably need to be tweaked. If you find the value N1 and N2 to be too low then you need to replace the constants 10.0 and 15.0 by smaller values.
double AirFlow = in.Density * in.AeroUVW(eU);
N1 = Seek(&N1, AirFlow/10.0, N1/2.0, N1/N1_spindown);y
N2 = Seek(&N2, AirFlow/15.0, N2/2.0, N2/N2_spindown);
Also I would like to mention that the windmilling engine in FGTurbine
does not produce drag (or negative thrust) which is much more unrealistic than the fact that the values of N1 and N2 are erroneous.
I see what you mean, sorry - I had a stupid moment there - of course the coefficient will change with a new value being used not qbar. So I'll get back to you on the numbers.
Kind Regards, Josh
@Octal450
So I'll get back to you on the numbers.
Any progress on this topic ?
Apologies, I've been particular busy with my life especially my health. I'll try to get it as soon as possible for you
Kind Regards, Josh
Apologies, I've been particular busy with my life especially my health. I'll try to get it as soon as possible for you
Oh ! Sorry, my apologies. There is no rush answering this topic.
No worries! I am glad you did as I had forgotten in the time. I've written it in my to-do.
Kind Regards, Josh
Apologies for further delays - my health is recovered and I am now back at FG so I'll definitely get this soon. Josh
By the way, I don't know if this is related, but...
If I throw the model up in the air or disable seized
property in flight, engine will not windmill unless it has either had starter=1
or been running.
@Octal450, speaking of windmilling in issue #494. Is there any progress on this issue ?
Hi, Sorry for slowly. With my health everything been all over the place.
I need to do more research first before I can make a recommendation. I got some conflicting info but didn't have time to check further.
Thanks for your patience. Josh
Here is a potentially useful paper (I haven't paid the $25 to download it) - Modelling and Analysis of Turbofan Engines Under Windmilling Conditions
I'm not suggesting that we implement a full high-fidelity windmilling model, but rather that we should be able to find some first or 2nd order approximation from the paper that we can use to generate at least semi-realistic N1/N2 values.
Or if we could get hold of the DFDR data from the B767 Gimli Glider or A330 Azores Glider we could take a look at their N1/N2 windmilling values as they both glided down from cruising altitude.
While looking into something else I came across this table.
Now if you look at the qbar values in the table and the fact that under windmilling conditions N1 = qbar/10
currently in JSBSim means the figures seen in your original image of the IDG MD11 makes rough sense, but it doesn't make any sense for the IDG A32X image showing N1 = 158% given the 420KIAS at 7000ft.
@Octal450 @bcoconni I've recreated the table above and added in a column to show the ram airflow as suggested by @bcoconni.
double AirFlow = in.Density * in.AeroUVW(eU);
And then shown what the current JSBSim will output for N1 based on qbar\10
and what N1 would look like if we used the ram airflow instead. For the ram airflow case I've gone with a 10x factor.
Now if we could get some real-world windmilling data we could compare and see which one, qbar versus ram airflow would be a better match for the real-world.
Thanks @seanmcleod. Unsurprisingly, the values are much lower using the intake airflow than qbar
.
I'd suggest comparing the N1 values with the pilot manual and more specifically to the restart/relight flight envelope. As a rule of thumb, N1 should be below the idle regime in the restart envelope and closer to (or above ?) the idle regime in the relight envelope. See the image below showing a typical restart envelope for a civil turbofan (from Gas Turbine Performance - 2nd edition, P.P. Walsh & P. Fletcher)
So looking at the left edge of the windmill regime, i.e. line passing through points (M0.3, 0m), (M0.4, 4000m), (M0.5, 8000m).
Now I thought it might turn out the line represented a linear mapping from airflow to some minimum N1 % for engine start, e.g. 20%. But it doesn't. Maybe it's a naïve assumption that the line represents a constant N1 % though?
It does end up pretty much as being fairly close to linear to qbar
though.
@bcoconni I see chapter 10 in Gas Turbine Performance - 2nd edition, P.P. Walsh & P. Fletcher, is all about windmilling. In particular information on the drag produced when windmilling, which as you mentioned is currently missing in JSBSim and also rotational speeds.
Just taken a quick initial glance at the chapter so far. In terms of rotational speeds for turbofans.
So we should be able to get at least representative figures. There are references to:
The levels are indicative only, being dependent on engine design
Yes that looks pretty good @seanmcleod , sadly I still haven't received any info about the actual numbers...perhaps such data is not available to the pilots.
Kind Regards, Josh
I've written some code to compare the N1 speeds based on using our current qbar/10
approach to a model based on the chart (10.8) from Gas Turbine Performance - 2nd edition, P.P. Walsh & P. Fletcher and to a version using the ram airflow.
See the following Jupyter notebook for the code - https://github.com/seanmcleod/JSBSimTesting/blob/main/Turbofan%20Windmilling.ipynb
Here are the results.
Let me know if you spot any errors with the code that produced them.
I'm no expert in that language, but the result from your "model" looks quite nice.
Kind Regards, Josh
@bcoconni please take a look at the notebook above when you get a chance.
@seanmcleod looks good to me.
I guess the reason why the curves do not match is that the engine components downstream of the inlet have an influence on the air mass flow and that we cannot simply assume that the air velocity at the inlet equals the aircraft velocity.