FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
ZeroDynamics.h
1#ifndef ZERO_DYNAMICS_H
2#define ZERO_DYNAMICS_H
3
4#include <fhsim/simobject/KalmanObject.h>
5#include <fhsim/simobject/SimObject.h>
6#include <string>
7
8#include "sfh/constants.h"
9#include "sfh/math.h"
10#include "sfh/text.h"
11#include "sfh/util.h"
12
13#include <Eigen/Dense>
14
15#include <memory>
16
70class ZeroDynamics : public SimObject, public KalmanObject
71{
72 public:
73 ZeroDynamics(const std::string& simObjectName, ISimObjectCreator* const creator);
74
75 // SimObject functions
76 void OdeFcn(const double T, const double* const X, double* const XDot) const;
77 void InitialConditionSetup(const double T, const double* const currentIC, double* const updatedIC, ISimObjectCreator* const creator);
78
79
80 // KalmanObject functions
81 estimator::Matrix GetInitialEstimationErrorCovariance();
82 estimator::Matrix GetProcessNoiseCovariance();
83 estimator::Matrix GetMeasurementNoiseCovariance() { return estimator::Matrix(); }
84 estimator::Vector ExpectedMeasurementOutput(const double T, const double* const X) { return estimator::Vector(); }
85 estimator::Vector ActualMeasurementOutput(const double T, const double* const X) { return estimator::Vector(); }
86 unsigned int GetNumMeasurements() { return 0; }
87
88 protected:
89 void SetOutputPortValues(const double T, const double* const X) const;
90 const double* Output(const double T, const double* const X);
91
92 ICommonComputation* m_SetOutputPortValues;
93 int m_StateIndex, m_NoStates;
94 std::unique_ptr<double[]> m_State;
95 std::unique_ptr<double[]> m_P0, m_Q;
96};
97
98#endif
Definition ZeroDynamics.h:71