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
7#include "sfh/constants.h"
8#include "sfh/math.h"
9#include "sfh/text.h"
10#include "sfh/util.h"
11
12#include <Eigen/Dense>
13
14#include <memory>
15
69class ZeroDynamics : public SimObject, public KalmanObject
70{
71 public:
72 ZeroDynamics(const std::string& simObjectName, ISimObjectCreator* const creator);
73
74 // SimObject functions
75 void OdeFcn(const double T, const double* const X, double* const XDot) const;
76 void InitialConditionSetup(const double T, const double* const currentIC, double* const updatedIC, ISimObjectCreator* const creator);
77
78
79 // KalmanObject functions
80 estimator::Matrix GetInitialEstimationErrorCovariance();
81 estimator::Matrix GetProcessNoiseCovariance();
82 estimator::Matrix GetMeasurementNoiseCovariance() { return estimator::Matrix(); }
83 estimator::Vector ExpectedMeasurementOutput(const double T, const double* const X) { return estimator::Vector(); }
84 estimator::Vector ActualMeasurementOutput(const double T, const double* const X) { return estimator::Vector(); }
85 unsigned int GetNumMeasurements() { return 0; }
86
87 protected:
88 void SetOutputPortValues(const double T, const double* const X) const;
89 const double* Output(const double T, const double* const X);
90
91 ICommonComputation* m_SetOutputPortValues;
92 int m_StateIndex, m_NoStates;
93 std::unique_ptr<double[]> m_State;
94 std::unique_ptr<double[]> m_P0, m_Q;
95};
96
97#endif
Definition ZeroDynamics.h:70