X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FJSBSim%2Finitialization%2FFGInitialCondition.cpp;h=de904e0e133a6797acbe9b77553d00705c1588e8;hb=4aff7b279db80407d82d0a5556738cf111501457;hp=2fbbae224e2477c3fce2a7eb324e2f25190be0ca;hpb=1e71177e7c1e9622d2346f168c9fdd479ad1a7cf;p=flightgear.git diff --git a/src/FDM/JSBSim/initialization/FGInitialCondition.cpp b/src/FDM/JSBSim/initialization/FGInitialCondition.cpp index 2fbbae224..de904e0e1 100644 --- a/src/FDM/JSBSim/initialization/FGInitialCondition.cpp +++ b/src/FDM/JSBSim/initialization/FGInitialCondition.cpp @@ -66,10 +66,12 @@ FGInitialCondition::FGInitialCondition(FGFDMExec *FDMExec) : fdmex(FDMExec) InitializeIC(); if(FDMExec != NULL ) { - fdmex->GetPropagate()->Seth(altitude); + fdmex->GetPropagate()->SetAltitudeASL(altitudeASL); fdmex->GetAtmosphere()->Run(); PropertyManager=fdmex->GetPropertyManager(); + Constructing = true; bind(); + Constructing = false; } else { cout << "FGInitialCondition: This class requires a pointer to a valid FGFDMExec object" << endl; } @@ -118,7 +120,7 @@ void FGInitialCondition::ResetIC(double u0, double v0, double w0, FGColumnVector3 _vUVW_BODY(u,v,w); FGColumnVector3 _vUVW_NED = _Tb2l * _vUVW_BODY; FGColumnVector3 _vWIND_NED(wnorth,weast,wdown); - FGColumnVector3 _vUVWAero = _Tl2b * ( _vUVW_NED + _vWIND_NED ); +// FGColumnVector3 _vUVWAero = _Tl2b * ( _vUVW_NED + _vWIND_NED ); uw=_vWIND_NED(1); vw=_vWIND_NED(2); ww=_vWIND_NED(3); @@ -132,7 +134,7 @@ void FGInitialCondition::InitializeIC(void) mach=0; alpha=beta=gamma=0; theta=phi=psi=0; - altitude=hdot=0; + altitudeASL=hdot=0; latitude=longitude=0; u=v=w=0; p=q=r=0; @@ -144,7 +146,7 @@ void FGInitialCondition::InitializeIC(void) lastSpeedSet=setvt; lastWindSet=setwned; radius_to_vehicle = sea_level_radius = fdmex->GetInertial()->GetRefRadius(); - terrain_altitude = 0; + terrain_elevation = 0; targetNlfIC = 1.0; @@ -156,6 +158,8 @@ void FGInitialCondition::InitializeIC(void) void FGInitialCondition::WriteStateFile(int num) { + if (Constructing) return; + string filename = fdmex->GetFullAircraftPath(); if (filename.empty()) @@ -177,7 +181,7 @@ void FGInitialCondition::WriteStateFile(int num) outfile << " " << Propagate->GetEuler(ePsi) << " " << endl; outfile << " " << Propagate->GetLongitudeDeg() << " " << endl; outfile << " " << Propagate->GetLatitudeDeg() << " " << endl; - outfile << " " << Propagate->Geth() << " " << endl; + outfile << " " << Propagate->GetAltitudeASL() << " " << endl; outfile << "" << endl; outfile.close(); } else { @@ -534,9 +538,10 @@ void FGInitialCondition::calcWindUVW(void) { //****************************************************************************** -void FGInitialCondition::SetAltitudeFtIC(double tt) { - altitude=tt; - fdmex->GetPropagate()->Seth(altitude); +void FGInitialCondition::SetAltitudeASLFtIC(double tt) +{ + altitudeASL=tt; + fdmex->GetPropagate()->SetAltitudeASL(altitudeASL); fdmex->GetAtmosphere()->Run(); //lets try to make sure the user gets what they intended @@ -563,25 +568,29 @@ void FGInitialCondition::SetAltitudeFtIC(double tt) { //****************************************************************************** -void FGInitialCondition::SetAltitudeAGLFtIC(double tt) { - SetAltitudeFtIC(terrain_altitude + tt); +void FGInitialCondition::SetAltitudeAGLFtIC(double tt) +{ + SetAltitudeASLFtIC(terrain_elevation + tt); } //****************************************************************************** -void FGInitialCondition::SetSeaLevelRadiusFtIC(double tt) { +void FGInitialCondition::SetSeaLevelRadiusFtIC(double tt) +{ sea_level_radius = tt; } //****************************************************************************** -void FGInitialCondition::SetTerrainAltitudeFtIC(double tt) { - terrain_altitude=tt; +void FGInitialCondition::SetTerrainElevationFtIC(double tt) +{ + terrain_elevation=tt; } //****************************************************************************** -void FGInitialCondition::calcUVWfromNED(void) { +void FGInitialCondition::calcUVWfromNED(void) +{ u=vnorth*ctheta*cpsi + veast*ctheta*spsi - vdown*stheta; @@ -854,8 +863,10 @@ bool FGInitialCondition::Load(string rstfile, bool useStoredPath) SetLatitudeDegIC(document->FindElementValueAsNumberConvertTo("latitude", "DEG")); if (document->FindElement("longitude")) SetLongitudeDegIC(document->FindElementValueAsNumberConvertTo("longitude", "DEG")); - if (document->FindElement("altitude")) - SetAltitudeFtIC(document->FindElementValueAsNumberConvertTo("altitude", "FT")); + if (document->FindElement("elevation")) + SetTerrainElevationFtIC(document->FindElementValueAsNumberConvertTo("elevation", "FT")); + if (document->FindElement("altitude")) // This is feet above ground level + SetAltitudeAGLFtIC(document->FindElementValueAsNumberConvertTo("altitude", "FT")); if (document->FindElement("ubody")) SetUBodyFpsIC(document->FindElementValueAsNumberConvertTo("ubody", "FT/SEC")); if (document->FindElement("vbody")) @@ -975,8 +986,8 @@ void FGInitialCondition::bind(void){ &FGInitialCondition::SetLongitudeDegIC, true); PropertyManager->Tie("ic/h-sl-ft", this, - &FGInitialCondition::GetAltitudeFtIC, - &FGInitialCondition::SetAltitudeFtIC, + &FGInitialCondition::GetAltitudeASLFtIC, + &FGInitialCondition::SetAltitudeASLFtIC, true); PropertyManager->Tie("ic/h-agl-ft", this, &FGInitialCondition::GetAltitudeAGLFtIC, @@ -986,9 +997,9 @@ void FGInitialCondition::bind(void){ &FGInitialCondition::GetSeaLevelRadiusFtIC, &FGInitialCondition::SetSeaLevelRadiusFtIC, true); - PropertyManager->Tie("ic/terrain-altitude-ft", this, - &FGInitialCondition::GetTerrainAltitudeFtIC, - &FGInitialCondition::SetTerrainAltitudeFtIC, + PropertyManager->Tie("ic/terrain-elevation-ft", this, + &FGInitialCondition::GetTerrainElevationFtIC, + &FGInitialCondition::SetTerrainElevationFtIC, true); PropertyManager->Tie("ic/vg-fps", this, &FGInitialCondition::GetVgroundFpsIC,