X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FJSBSim%2Fmodels%2FFGMassBalance.cpp;h=fd067ab5160817aca07f4662c372c379fc78fd38;hb=4a817a63079733469d76905902509a40af019535;hp=24727547c322775d0e2b469e2d0cec7f51ae6761;hpb=10366f4f1b91bfb037060a3f02d5c4056edac6c5;p=flightgear.git diff --git a/src/FDM/JSBSim/models/FGMassBalance.cpp b/src/FDM/JSBSim/models/FGMassBalance.cpp index 24727547c..fd067ab51 100644 --- a/src/FDM/JSBSim/models/FGMassBalance.cpp +++ b/src/FDM/JSBSim/models/FGMassBalance.cpp @@ -51,7 +51,7 @@ using namespace std; namespace JSBSim { -static const char *IdSrc = "$Id: FGMassBalance.cpp,v 1.31 2010/02/19 00:30:00 jberndt Exp $"; +static const char *IdSrc = "$Id: FGMassBalance.cpp,v 1.34 2010/11/18 12:38:06 jberndt Exp $"; static const char *IdHdr = ID_MASSBALANCE; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -151,12 +151,12 @@ bool FGMassBalance::Load(Element* el) if (FDMExec->GetChildFDM(fdm)->mated) ChildFDMWeight += FDMExec->GetChildFDM(fdm)->exec->GetMassBalance()->GetWeight(); } - Weight = EmptyWeight + Propulsion->GetTanksWeight() + GetTotalPointMassWeight() - + BuoyantForces->GetGasMass()*slugtolb + ChildFDMWeight; + Weight = EmptyWeight + FDMExec->GetPropulsion()->GetTanksWeight() + GetTotalPointMassWeight() + + FDMExec->GetBuoyantForces()->GetGasMass()*slugtolb + ChildFDMWeight; Mass = lbtoslug*Weight; - FGModel::PostLoad(el); + PostLoad(el, PropertyManager); Debug(2); return true; @@ -179,16 +179,16 @@ bool FGMassBalance::Run(void) if (FDMExec->GetChildFDM(fdm)->mated) ChildFDMWeight += FDMExec->GetChildFDM(fdm)->exec->GetMassBalance()->GetWeight(); } - Weight = EmptyWeight + Propulsion->GetTanksWeight() + GetTotalPointMassWeight() - + BuoyantForces->GetGasMass()*slugtolb + ChildFDMWeight; + Weight = EmptyWeight + FDMExec->GetPropulsion()->GetTanksWeight() + GetTotalPointMassWeight() + + FDMExec->GetBuoyantForces()->GetGasMass()*slugtolb + ChildFDMWeight; Mass = lbtoslug*Weight; // Calculate new CG - vXYZcg = (Propulsion->GetTanksMoment() + EmptyWeight*vbaseXYZcg + vXYZcg = (FDMExec->GetPropulsion()->GetTanksMoment() + EmptyWeight*vbaseXYZcg + GetPointMassMoment() - + BuoyantForces->GetGasMassMoment()) / Weight; + + FDMExec->GetBuoyantForces()->GetGasMassMoment()) / Weight; // Track frame-by-frame delta CG, and move the EOM-tracked location // by this amount. @@ -196,7 +196,7 @@ bool FGMassBalance::Run(void) vDeltaXYZcg = vXYZcg - vLastXYZcg; vDeltaXYZcgBody = StructuralToBody(vLastXYZcg) - StructuralToBody(vXYZcg); vLastXYZcg = vXYZcg; - Propagate->NudgeBodyLocation(vDeltaXYZcgBody); + FDMExec->GetPropagate()->NudgeBodyLocation(vDeltaXYZcgBody); // Calculate new total moments of inertia @@ -206,8 +206,8 @@ bool FGMassBalance::Run(void) mJ += GetPointmassInertia( lbtoslug * EmptyWeight, vbaseXYZcg ); // Then add the contributions from the additional pointmasses. mJ += CalculatePMInertias(); - mJ += Propulsion->CalculateTankInertias(); - mJ += BuoyantForces->GetGasMassInertia(); + mJ += FDMExec->GetPropulsion()->CalculateTankInertias(); + mJ += FDMExec->GetBuoyantForces()->GetGasMassInertia(); Ixx = mJ(1,1); Iyy = mJ(2,2); @@ -280,6 +280,10 @@ void FGMassBalance::AddPointMass(Element* el) pm->SetPointMassShapeType(PointMass::esSphere); pm->SetRadius(radius); pm->CalculateShapeInertia(); + } else if (shape == "ball") { + pm->SetPointMassShapeType(PointMass::esBall); + pm->SetRadius(radius); + pm->CalculateShapeInertia(); } else { } } @@ -428,8 +432,8 @@ void FGMassBalance::GetMassPropertiesReport(void) const << setw(12) << pm->GetPointMassMoI(3,3) << endl; } - for (unsigned int i=0;iGetNumTanks() ;i++) { - FGTank* tank = Propulsion->GetTank(i); + for (unsigned int i=0;iGetPropulsion()->GetNumTanks() ;i++) { + FGTank* tank = FDMExec->GetPropulsion()->GetTank(i); string tankname=""; if (tank->GetType() == FGTank::ttFUEL && tank->GetGrainType() != FGTank::gtUNKNOWN) { tankname = "Solid Fuel";