+ switch(idx) {
+ case ePropagate:
+ Propagate->in.vPQRidot = Accelerations->GetPQRidot();
+ Propagate->in.vQtrndot = Accelerations->GetQuaterniondot();
+ Propagate->in.vUVWidot = Accelerations->GetUVWidot();
+ Propagate->in.DeltaT = dT;
+ break;
+ case eInput:
+ break;
+ case eInertial:
+ Inertial->in.Radius = Propagate->GetRadius();
+ Inertial->in.Latitude = Propagate->GetLatitude();
+ break;
+ case eAtmosphere:
+ Atmosphere->in.altitudeASL = Propagate->GetAltitudeASL();
+ break;
+ case eWinds:
+ Winds->in.AltitudeASL = Propagate->GetAltitudeASL();
+ Winds->in.DistanceAGL = Propagate->GetDistanceAGL();
+ Winds->in.Tl2b = Propagate->GetTl2b();
+ Winds->in.Tw2b = Auxiliary->GetTw2b();
+ Winds->in.V = Auxiliary->GetVt();
+ Winds->in.totalDeltaT = dT * Winds->GetRate();
+ break;
+ case eAuxiliary:
+ Auxiliary->in.Pressure = Atmosphere->GetPressure();
+ Auxiliary->in.Density = Atmosphere->GetDensity();
+ Auxiliary->in.DensitySL = Atmosphere->GetDensitySL();
+ Auxiliary->in.PressureSL = Atmosphere->GetPressureSL();
+ Auxiliary->in.Temperature = Atmosphere->GetTemperature();
+ Auxiliary->in.SoundSpeed = Atmosphere->GetSoundSpeed();
+ Auxiliary->in.KinematicViscosity = Atmosphere->GetKinematicViscosity();
+ Auxiliary->in.DistanceAGL = Propagate->GetDistanceAGL();
+ Auxiliary->in.Mass = MassBalance->GetMass();
+ Auxiliary->in.Tl2b = Propagate->GetTl2b();
+ Auxiliary->in.Tb2l = Propagate->GetTb2l();
+ Auxiliary->in.vPQR = Propagate->GetPQR();
+ Auxiliary->in.vPQRdot = Accelerations->GetPQRdot();
+ Auxiliary->in.vUVW = Propagate->GetUVW();
+ Auxiliary->in.vUVWdot = Accelerations->GetUVWdot();
+ Auxiliary->in.vVel = Propagate->GetVel();
+ Auxiliary->in.vBodyAccel = Accelerations->GetBodyAccel();
+ Auxiliary->in.ToEyePt = MassBalance->StructuralToBody(Aircraft->GetXYZep());
+ Auxiliary->in.VRPBody = MassBalance->StructuralToBody(Aircraft->GetXYZvrp());
+ Auxiliary->in.RPBody = MassBalance->StructuralToBody(Aircraft->GetXYZrp());
+ Auxiliary->in.vFw = Aerodynamics->GetvFw();
+ Auxiliary->in.vLocation = Propagate->GetLocation();
+ Auxiliary->in.CosTht = Propagate->GetCosEuler(eTht);
+ Auxiliary->in.SinTht = Propagate->GetSinEuler(eTht);
+ Auxiliary->in.CosPhi = Propagate->GetCosEuler(ePhi);
+ Auxiliary->in.SinPhi = Propagate->GetSinEuler(ePhi);
+ Auxiliary->in.Psi = Propagate->GetEuler(ePsi);
+ Auxiliary->in.TotalWindNED = Winds->GetTotalWindNED();
+ Auxiliary->in.TurbPQR = Winds->GetTurbPQR();
+ Auxiliary->in.WindPsi = Winds->GetWindPsi();
+ Auxiliary->in.Vwind = Winds->GetTotalWindNED().Magnitude();
+ break;
+ case eSystems:
+ // Dynamic inputs come into the components that FCS manages through properties
+ break;
+ case ePropulsion:
+ Propulsion->in.SLPressure = Atmosphere->GetPressureSL();
+ Propulsion->in.Pressure = Atmosphere->GetPressure();
+ Propulsion->in.PressureRatio = Atmosphere->GetPressureRatio();
+ Propulsion->in.Temperature = Atmosphere->GetTemperature();
+ Propulsion->in.DensityRatio = Atmosphere->GetDensityRatio();
+ Propulsion->in.Density = Atmosphere->GetDensity();
+ Propulsion->in.Soundspeed = Atmosphere->GetSoundSpeed();
+ Propulsion->in.TotalPressure = Auxiliary->GetTotalPressure();
+ Propulsion->in.TotalTempearture = Auxiliary->GetTotalTemperature();
+ Propulsion->in.Vc = Auxiliary->GetVcalibratedKTS();
+ Propulsion->in.Vt = Auxiliary->GetVt();
+ Propulsion->in.qbar = Auxiliary->Getqbar();
+ Propulsion->in.TAT_c = Auxiliary->GetTAT_C();
+ Propulsion->in.AeroUVW = Auxiliary->GetAeroUVW();
+ Propulsion->in.AeroPQR = Auxiliary->GetAeroPQR();
+ Propulsion->in.alpha = Auxiliary->Getalpha();
+ Propulsion->in.beta = Auxiliary->Getbeta();
+ Propulsion->in.TotalDeltaT = dT * Propulsion->GetRate();
+ Propulsion->in.ThrottlePos = FCS->GetThrottlePos();
+ Propulsion->in.MixturePos = FCS->GetMixturePos();
+ Propulsion->in.ThrottleCmd = FCS->GetThrottleCmd();
+ Propulsion->in.MixtureCmd = FCS->GetMixtureCmd();
+ Propulsion->in.PropAdvance = FCS->GetPropAdvance();
+ Propulsion->in.PropFeather = FCS->GetPropFeather();
+ Propulsion->in.H_agl = Propagate->GetDistanceAGL();
+ Propulsion->in.PQR = Propagate->GetPQR();
+
+ break;
+ case eAerodynamics:
+ Aerodynamics->in.Alpha = Auxiliary->Getalpha();
+ Aerodynamics->in.Beta = Auxiliary->Getbeta();
+ Aerodynamics->in.Qbar = Auxiliary->Getqbar();
+ Aerodynamics->in.Vt = Auxiliary->GetVt();
+ Aerodynamics->in.Tb2w = Auxiliary->GetTb2w();
+ Aerodynamics->in.Tw2b = Auxiliary->GetTw2b();
+ Aerodynamics->in.RPBody = MassBalance->StructuralToBody(Aircraft->GetXYZrp());
+ break;
+ case eGroundReactions:
+ // There are no external inputs to this model.
+ GroundReactions->in.Vground = Auxiliary->GetVground();
+ GroundReactions->in.VcalibratedKts = Auxiliary->GetVcalibratedKTS();
+ GroundReactions->in.Temperature = Atmosphere->GetTemperature();
+ GroundReactions->in.TakeoffThrottle = (FCS->GetThrottlePos().size() > 0) ? (FCS->GetThrottlePos(0) > 0.90) : false;
+ GroundReactions->in.SteerPosDeg = FCS->GetSteerPosDeg();
+ GroundReactions->in.BrakePos = FCS->GetBrakePos();
+ GroundReactions->in.FCSGearPos = FCS->GetGearPos();
+ GroundReactions->in.EmptyWeight = MassBalance->GetEmptyWeight();
+ GroundReactions->in.Tb2l = Propagate->GetTb2l();
+ GroundReactions->in.Tec2l = Propagate->GetTec2l();
+ GroundReactions->in.Tec2b = Propagate->GetTec2b();
+ GroundReactions->in.PQR = Propagate->GetPQR();
+ GroundReactions->in.UVW = Propagate->GetUVW();
+ GroundReactions->in.DistanceAGL = Propagate->GetDistanceAGL();
+ GroundReactions->in.DistanceASL = Propagate->GetAltitudeASL();
+ GroundReactions->in.TotalDeltaT = dT * GroundReactions->GetRate();
+ GroundReactions->in.WOW = GroundReactions->GetWOW();
+ GroundReactions->in.Location = Propagate->GetLocation();
+ GroundReactions->in.vXYZcg = MassBalance->GetXYZcg();
+ break;
+ case eExternalReactions:
+ // There are no external inputs to this model.
+ break;
+ case eBuoyantForces:
+ BuoyantForces->in.Density = Atmosphere->GetDensity();
+ BuoyantForces->in.Pressure = Atmosphere->GetPressure();
+ BuoyantForces->in.Temperature = Atmosphere->GetTemperature();
+ BuoyantForces->in.gravity = Inertial->gravity();
+ break;
+ case eMassBalance:
+ MassBalance->in.GasInertia = BuoyantForces->GetGasMassInertia();
+ MassBalance->in.GasMass = BuoyantForces->GetGasMass();
+ MassBalance->in.GasMoment = BuoyantForces->GetGasMassMoment();
+ MassBalance->in.TanksWeight = Propulsion->GetTanksWeight();
+ MassBalance->in.TanksMoment = Propulsion->GetTanksMoment();
+ MassBalance->in.TankInertia = Propulsion->CalculateTankInertias();
+ break;
+ case eAircraft:
+ Aircraft->in.AeroForce = Aerodynamics->GetForces();
+ Aircraft->in.PropForce = Propulsion->GetForces();
+ Aircraft->in.GroundForce = GroundReactions->GetForces();
+ Aircraft->in.ExternalForce = ExternalReactions->GetForces();
+ Aircraft->in.BuoyantForce = BuoyantForces->GetForces();
+ Aircraft->in.AeroMoment = Aerodynamics->GetMoments();
+ Aircraft->in.PropMoment = Propulsion->GetMoments();
+ Aircraft->in.GroundMoment = GroundReactions->GetMoments();
+ Aircraft->in.ExternalMoment = ExternalReactions->GetMoments();
+ Aircraft->in.BuoyantMoment = BuoyantForces->GetMoments();
+ break;
+ case eAccelerations:
+ Accelerations->in.J = MassBalance->GetJ();
+ Accelerations->in.Jinv = MassBalance->GetJinv();
+ Accelerations->in.Ti2b = Propagate->GetTi2b();
+ Accelerations->in.Tb2i = Propagate->GetTb2i();
+ Accelerations->in.Tec2b = Propagate->GetTec2b();
+ Accelerations->in.Tec2i = Propagate->GetTec2i();
+ Accelerations->in.qAttitudeECI = Propagate->GetQuaternionECI();
+ Accelerations->in.Moment = Aircraft->GetMoments();
+ Accelerations->in.GroundMoment = GroundReactions->GetMoments();
+ Accelerations->in.Force = Aircraft->GetForces();
+ Accelerations->in.GroundForce = GroundReactions->GetForces();
+ Accelerations->in.GAccel = Inertial->GetGAccel(Propagate->GetRadius());
+ Accelerations->in.J2Grav = Inertial->GetGravityJ2(Propagate->GetLocation());
+ Accelerations->in.vPQRi = Propagate->GetPQRi();
+ Accelerations->in.vPQR = Propagate->GetPQR();
+ Accelerations->in.vUVW = Propagate->GetUVW();
+ Accelerations->in.vInertialPosition = Propagate->GetInertialPosition();
+ Accelerations->in.DeltaT = dT;
+ Accelerations->in.Mass = MassBalance->GetMass();
+ Accelerations->in.MultipliersList = GroundReactions->GetMultipliersList();
+ Accelerations->in.TerrainVelocity = Propagate->GetTerrainVelocity();
+ Accelerations->in.TerrainAngularVel = Propagate->GetTerrainAngularVelocity();
+ break;
+ default:
+ break;
+ }
+}