+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+bool FGFCS::InitModel(void)
+{
+ unsigned int i;
+
+ if (!FGModel::InitModel()) return false;
+
+ for (i=0; i<ThrottlePos.size(); i++) ThrottlePos[i] = 0.0;
+ for (i=0; i<MixturePos.size(); i++) MixturePos[i] = 0.0;
+ for (i=0; i<ThrottleCmd.size(); i++) ThrottleCmd[i] = 0.0;
+ for (i=0; i<MixtureCmd.size(); i++) MixtureCmd[i] = 0.0;
+ for (i=0; i<PropAdvance.size(); i++) PropAdvance[i] = 0.0;
+ for (i=0; i<PropFeather.size(); i++) PropFeather[i] = 0.0;
+
+ DaCmd = DeCmd = DrCmd = DsCmd = DfCmd = DsbCmd = DspCmd = 0;
+ PTrimCmd = YTrimCmd = RTrimCmd = 0.0;
+ TailhookPos = WingFoldPos = 0.0;
+
+ for (i=0;i<NForms;i++) {
+ DePos[i] = DaLPos[i] = DaRPos[i] = DrPos[i] = 0.0;
+ DfPos[i] = DsbPos[i] = DspPos[i] = 0.0;
+ }
+
+ for (unsigned int i=0; i<Systems.size(); i++) {
+ if (Systems[i]->GetType() == "LAG" ||
+ Systems[i]->GetType() == "LEAD_LAG" ||
+ Systems[i]->GetType() == "WASHOUT" ||
+ Systems[i]->GetType() == "SECOND_ORDER_FILTER" ||
+ Systems[i]->GetType() == "INTEGRATOR")
+ {
+ ((FGFilter*)Systems[i])->ResetPastStates();
+ } else if (Systems[i]->GetType() == "PID" ) {
+ ((FGPID*)Systems[i])->ResetPastStates();
+ }
+ }
+
+ for (unsigned int i=0; i<FCSComponents.size(); i++) {
+ if (FCSComponents[i]->GetType() == "LAG" ||
+ FCSComponents[i]->GetType() == "LEAD_LAG" ||
+ FCSComponents[i]->GetType() == "WASHOUT" ||
+ FCSComponents[i]->GetType() == "SECOND_ORDER_FILTER" ||
+ FCSComponents[i]->GetType() == "INTEGRATOR")
+ {
+ ((FGFilter*)FCSComponents[i])->ResetPastStates();
+ } else if (FCSComponents[i]->GetType() == "PID" ) {
+ ((FGPID*)FCSComponents[i])->ResetPastStates();
+ }
+ }
+
+ for (unsigned int i=0; i<APComponents.size(); i++) {
+ if (APComponents[i]->GetType() == "LAG" ||
+ APComponents[i]->GetType() == "LEAD_LAG" ||
+ APComponents[i]->GetType() == "WASHOUT" ||
+ APComponents[i]->GetType() == "SECOND_ORDER_FILTER" ||
+ APComponents[i]->GetType() == "INTEGRATOR")
+ {
+ ((FGFilter*)APComponents[i])->ResetPastStates();
+ } else if (APComponents[i]->GetType() == "PID" ) {
+ ((FGPID*)APComponents[i])->ResetPastStates();
+ }
+ }
+
+ return true;
+}
+