48 std::string m_name, m_unit;
50 Component(
const std::string & name,
const std::string & unit) :
51 m_stateSpace(), m_fdm(), m_name(name), m_unit(unit) {};
53 virtual double get()
const = 0;
54 virtual void set(
double val) = 0;
55 virtual double getDeriv()
const
58 std::vector<double> x0 = m_stateSpace->x.get();
62 m_fdm->
Setdt(1./120.);
66 m_stateSpace->x.set(x0);
70 log << std::scientific
75 <<
"\tdf/dt: " << (f1-f0)/m_fdm->
GetDeltaT()
76 << std::fixed <<
"\n";
78 double deriv = (f1-f0)/m_fdm->
GetDeltaT();
86 m_stateSpace = stateSpace;
92 const std::string & getName()
const
96 const std::string & getUnit()
const
107 m_stateSpace(stateSpace), m_fdm(fdm), m_components() {}
110 m_stateSpace = componentVector.m_stateSpace;
111 m_fdm = componentVector.m_fdm;
112 m_components = componentVector.m_components;
116 m_stateSpace(componentVector.m_stateSpace),
117 m_fdm(componentVector.m_fdm),
118 m_components(componentVector.m_components)
123 comp->setStateSpace(m_stateSpace);
125 m_components.push_back(comp);
127 size_t getSize()
const
129 return m_components.size();
133 return m_components[i];
137 return m_components[i];
139 double get(
int i)
const
141 return m_components[i]->get();
143 void set(
int i,
double val)
145 m_components[i]->set(val);
150 return m_components[i]->get();
152 std::vector<double> get()
const
154 std::vector<double> val;
155 for (
unsigned int i=0;i<getSize();i++) val.push_back(m_components[i]->get());
158 void get(
double * array)
const
160 for (
unsigned int i=0;i<getSize();i++) array[i] = m_components[i]->get();
162 double getDeriv(
int i)
164 return m_components[i]->getDeriv();
166 std::vector<double> getDeriv()
const
168 std::vector<double> val;
169 for (
unsigned int i=0;i<getSize();i++) val.push_back(m_components[i]->getDeriv());
172 void getDeriv(
double * array)
const
174 for (
unsigned int i=0;i<getSize();i++) array[i] = m_components[i]->getDeriv();
176 void set(std::vector<double> vals)
178 for (
unsigned int i=0;i<getSize();i++) m_components[i]->set(vals[i]);
181 void set(
double * array)
183 for (
unsigned int i=0;i<getSize();i++) m_components[i]->set(array[i]);
186 std::string getName(
int i)
const
188 return m_components[i]->getName();
190 std::vector<std::string> getName()
const
192 std::vector<std::string> name;
193 for (
unsigned int i=0;i<getSize();i++) name.push_back(m_components[i]->getName());
196 std::string getUnit(
int i)
const
198 return m_components[i]->getUnit();
200 std::vector<std::string> getUnit()
const
202 std::vector<std::string> unit;
203 for (
unsigned int i=0;i<getSize();i++) unit.push_back(m_components[i]->getUnit());
207 m_components.clear();
212 std::vector<Component *> m_components;
281 void linearize(std::vector<double> x0, std::vector<double> u0, std::vector<double> y0,
308 return m_fdm->GetAuxiliary()->GetVt();
312 m_fdm->GetIC()->SetVtrueFpsIC(val);
314 double getDeriv()
const
317 return (m_fdm->GetPropagate()->GetUVW(1)*m_fdm->GetAccelerations()->GetUVWdot(1) +
318 m_fdm->GetPropagate()->GetUVW(2)*m_fdm->GetAccelerations()->GetUVWdot(2) +
319 m_fdm->GetPropagate()->GetUVW(3)*m_fdm->GetAccelerations()->GetUVWdot(3))/
320 m_fdm->GetAuxiliary()->GetVt();
387 return m_fdm->GetAuxiliary()->Getalpha();
391 double beta = m_fdm->GetIC()->GetBetaDegIC();
392 double psi = m_fdm->GetIC()->GetPsiRadIC();
393 double theta = m_fdm->GetIC()->GetThetaRadIC();
394 m_fdm->GetIC()->SetAlphaRadIC(val);
395 m_fdm->GetIC()->SetBetaRadIC(beta);
396 m_fdm->GetIC()->SetPsiRadIC(psi);
397 m_fdm->GetIC()->SetThetaRadIC(theta);
399 double getDeriv()
const
401 return m_fdm->GetAuxiliary()->Getadot();
466 return m_fdm->GetAuxiliary()->Getbeta();
470 double psi = m_fdm->GetIC()->GetPsiRadIC();
471 m_fdm->GetIC()->SetBetaRadIC(val);
472 m_fdm->GetIC()->SetPsiRadIC(psi);
474 double getDeriv()
const
476 return m_fdm->GetAuxiliary()->Getbdot();
905 return atan2(m_fdm->GetPropagate()->GetVel(2),m_fdm->GetPropagate()->GetVel(1));
910 m_fdm->GetIC()->SetVNorthFpsIC(m_fdm->GetAuxiliary()->GetVground()*cos(val));
911 m_fdm->GetIC()->SetVEastFpsIC(m_fdm->GetAuxiliary()->GetVground()*sin(val));
913 double getDeriv()
const
915 double Vn = m_fdm->GetPropagate()->GetVel(1);
916 double Vndot = (m_fdm->GetPropagate()->GetTb2l()*m_fdm->GetAccelerations()->GetUVWdot())(1);
917 double Ve = m_fdm->GetPropagate()->GetVel(2);
918 double Vedot = (m_fdm->GetPropagate()->GetTb2l()*m_fdm->GetAccelerations()->GetUVWdot())(2);