X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FJSBSim%2Fmodels%2FFGGroundReactions.cpp;h=b334851ced2b52416f26a78529ee891d5de3b4ce;hb=024ef128e3395e8c0e32b360abe19b4d345e4f80;hp=c8afc723b711578848d01d2dd4b6cad3f31977d9;hpb=b61f8fba3353b8b77dd1866e230922ccb78daf71;p=flightgear.git diff --git a/src/FDM/JSBSim/models/FGGroundReactions.cpp b/src/FDM/JSBSim/models/FGGroundReactions.cpp index c8afc723b..b334851ce 100644 --- a/src/FDM/JSBSim/models/FGGroundReactions.cpp +++ b/src/FDM/JSBSim/models/FGGroundReactions.cpp @@ -39,21 +39,20 @@ INCLUDES #include #include "FGGroundReactions.h" -#include "FGFCS.h" +#include "FGLGear.h" #include "input_output/FGPropertyManager.h" using namespace std; namespace JSBSim { -static const char *IdSrc = "$Id$"; +static const char *IdSrc = "$Id: FGGroundReactions.cpp,v 1.39 2012/04/01 17:05:51 bcoconni Exp $"; static const char *IdHdr = ID_GROUNDREACTIONS; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS IMPLEMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ - FGGroundReactions::FGGroundReactions(FGFDMExec* fgex) : FGModel(fgex) { Name = "FGGroundReactions"; @@ -77,23 +76,23 @@ FGGroundReactions::~FGGroundReactions(void) bool FGGroundReactions::InitModel(void) { - if (!FGModel::InitModel()) return false; - return true; } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -bool FGGroundReactions::Run(void) +bool FGGroundReactions::Run(bool Holding) { - if (FGModel::Run()) return true; - if (FDMExec->Holding()) return false; + if (FGModel::Run(Holding)) return true; + if (Holding) return false; RunPreFunctions(); vForces.InitMatrix(); vMoments.InitMatrix(); + multipliers.clear(); + // Sum forces and moments for all gear, here. // Some optimizations may be made here - or rather in the gear code itself. // The gear ::Run() method is called several times - once for each gear. @@ -111,7 +110,7 @@ bool FGGroundReactions::Run(void) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -bool FGGroundReactions::GetWOW(void) +bool FGGroundReactions::GetWOW(void) const { bool result = false; for (unsigned int i=0; iGetNumElements("contact"); + lGear.resize(numContacts); Element* contact_element = el->FindElement("contact"); - while (contact_element) { - lGear.push_back(new FGLGear(contact_element, FDMExec, num++)); - FCS->AddGear(); // make the FCS aware of the landing gear + for (unsigned int idx=0; idxFindNextElement("contact"); } - + FGModel::Load(el); // Perform base class Load for (unsigned int i=0; ibind(); - FGModel::PostLoad(el); + PostLoad(el, PropertyManager); return true; } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -string FGGroundReactions::GetGroundReactionStrings(string delimeter) +string FGGroundReactions::GetGroundReactionStrings(string delimeter) const { std::ostringstream buf; @@ -184,7 +184,7 @@ string FGGroundReactions::GetGroundReactionStrings(string delimeter) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -string FGGroundReactions::GetGroundReactionValues(string delimeter) +string FGGroundReactions::GetGroundReactionValues(string delimeter) const { std::ostringstream buf; @@ -223,12 +223,7 @@ void FGGroundReactions::bind(void) { typedef double (FGGroundReactions::*PMF)(int) const; PropertyManager->Tie("gear/num-units", this, &FGGroundReactions::GetNumGearUnits); - PropertyManager->Tie("moments/l-gear-lbsft", this, eL, (PMF)&FGGroundReactions::GetMoments); - PropertyManager->Tie("moments/m-gear-lbsft", this, eM, (PMF)&FGGroundReactions::GetMoments); - PropertyManager->Tie("moments/n-gear-lbsft", this, eN, (PMF)&FGGroundReactions::GetMoments); - PropertyManager->Tie("forces/fbx-gear-lbs", this, eX, (PMF)&FGGroundReactions::GetForces); - PropertyManager->Tie("forces/fby-gear-lbs", this, eY, (PMF)&FGGroundReactions::GetForces); - PropertyManager->Tie("forces/fbz-gear-lbs", this, eZ, (PMF)&FGGroundReactions::GetForces); + PropertyManager->Tie("gear/wow", this, &FGGroundReactions::GetWOW); } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%