55 void FinalSetup(
const double T,
const double *
const X, ISimObjectCreator*
const creator);
56 void InitialConditionSetup(
const double T,
const double*
const currentIC,
double*
const updatedIC, ISimObjectCreator*
const creator);
57 void GetCurrent(
const double T,
const double*
const X,
const double position[3],
double* currentVelocity);
58 void OdeFcn(
const double T,
const double*
const X,
double*
const XDot,
const bool bIsMajorTimeStep);
60 void PreOdeFcn(
const double T,
const double *
const X, IStateUpdater* updater);
62#ifdef FH_VISUALIZATION
63 void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
64 void RenderUpdate(
const double T,
const double*
const X);
68 const double * PlanarCurrent(
const double T,
const double *
const X,
int layer);
71 ICommonComputation* m_SetOutputPortValues;
72 double m_Pp, m_Pd, m_Pi, m_IntegralSaturation, m_DerivativeTInv;
73 int m_CurrentIndex, m_IntegralIndex, m_DerivativeIndex, m_layers;
75 std::unique_ptr<double[]> m_PlanarCurrents;
76 environment::EnvironmentProvider *Environment;
77 std::shared_ptr<VirtualCurrentFieldInDir> m_CurrentField = std::make_shared<VirtualCurrentFieldInDir>();
79 std::vector<int> m_CurrentIndices, m_IntegralIndices, m_DerivativeIndices;
80 std::unique_ptr<double[]> m_Depths;
82 double m_MaximumCurrent;
83 std::unique_ptr<double[]> m_Directions;
85 double m_MaximumCurrentRel;
87 double m_MinimumCurrentTot;
90 std::unique_ptr<double[]> m_AdaMaxRatio;
91 std::unique_ptr<double[]> m_AdaErr;
92 std::unique_ptr<double[]> m_AdaErrTol;
95 std::unique_ptr< ISignalPort*[] > m_Input_e;
96 std::unique_ptr< ISignalPort*[] > m_Input_d;
97 std::unique_ptr< ISignalPort*[] > m_Input_v;
98 std::unique_ptr< ISignalPort*[] > m_Input_vt;
100#ifdef FH_VISUALIZATION
101 Ogre::SceneNode* m_RenderNode;