From 36f00b1c126f3f88f874bfc502bbd3fa0f442cae Mon Sep 17 00:00:00 2001 From: david <david> Date: Tue, 25 Dec 2001 00:02:25 +0000 Subject: [PATCH] Updated to latest JSBSim, including preliminary support for windmilling propellers. --- src/FDM/JSBSim/FGPropeller.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/FDM/JSBSim/FGPropeller.cpp b/src/FDM/JSBSim/FGPropeller.cpp index 5804117fc..bd0567c0a 100644 --- a/src/FDM/JSBSim/FGPropeller.cpp +++ b/src/FDM/JSBSim/FGPropeller.cpp @@ -154,9 +154,18 @@ double FGPropeller::Calculate(double PowerAvailable) } Thrust = C_Thrust*RPS*RPS*Diameter*Diameter*Diameter*Diameter*rho; - vFn(1) = Thrust; omega = RPS*2.0*M_PI; + // Check for windmilling. + double radius = Diameter * 0.375; // 75% of radius + double windmill_cutoff = tan(Pitch * 1.745329E-2) * omega * radius; + if (Vel > windmill_cutoff) { + cout << "Windmilling: " << Vel << " > " << windmill_cutoff << endl; + Thrust = -Thrust; + } + + vFn(1) = Thrust; + // The Ixx value and rotation speed given below are for rotation about the // natural axis of the engine. The transform takes place in the base class // FGForce::GetBodyForces() function. @@ -187,6 +196,7 @@ double FGPropeller::GetPowerRequired(void) double rho = fdmex->GetAtmosphere()->GetDensity(); if (MaxPitch == MinPitch) { // Fixed pitch prop + Pitch = MinPitch; cPReq = cPower->GetValue(J); } else { // Variable pitch prop double advance = fdmex->GetFCS()->GetPropAdvance(ThrusterNumber);