208 using Dof = std::array<double, 3>;
210 LocalWaveVessel(std::string simObjectName, ISimObjectCreator* creator);
212 void FinalSetup(
double T,
const double* X, ISimObjectCreator* creator)
override;
214 void OdeFcn(
double T,
const double* X,
double* XDot)
const override;
216 bool HasJacobians()
const override {
return true; }
217 void OdeJacobian(
double T,
const double* X,
double* J,
int nStates)
override;
218 int GetJacobianSparsity(
int nStates,
int* rowPtr,
int* colIdx)
override {
return -1; }
220#ifdef FH_VISUALIZATION
222 void RenderInit(Ogre::Root* ogreRoot, ISimObjectCreator* creator)
override;
223 void RenderUpdate(
double T,
const double* X)
override;
229 const double* MotionPort(
double T,
const double* X);
230 const double* MotionRatePort(
double T,
const double* X);
231 const double* ExcitationPort(
double T,
const double* X);
232 const double* PositionPort(
double T,
const double* X);
233 const double* RotationPort(
double T,
const double* X);
243 void BuildFootprint(
double length,
double breadth,
double lcf,
int sampleLevel);
244 double RotationalStiffness(ISimObjectCreator* creator,
const std::string& gmName,
const std::string& periodName,
245 double mass,
double inertia)
const;
248 Dof Accelerations(
const double* motion,
const double* rate,
const double* load)
const;
250 ISignalPort* m_inPosition =
nullptr;
251 ISignalPort* m_inRotation =
nullptr;
252 environment::EnvironmentProvider* m_environment =
nullptr;
254 int m_indexMotion = 0;
256 int m_indexExcitation = 0;
259 double m_waterplaneArea = 0.0;
260 double m_filterTime = 0.0;
261 double m_rollQuadraticDamping = 0.0;
270 std::vector<SamplePoint> m_samples;
271 double m_sampleWeight = 0.0;
273 std::array<double, 3> m_positionOut {};
274 std::array<double, 3> m_rotationOut {};
276 double m_length = 0.0;
277 double m_breadth = 0.0;
279 double m_draught = 0.0;
281#ifdef FH_VISUALIZATION
282 Ogre::SceneNode* m_renderNode =
nullptr;
std::array< double, 3 > Dof
Generalized loads or coordinates, ordered heave, roll, pitch.
Definition LocalWaveVessel.h:208
Dof RawWaveLoads(double T, const double *X) const
Unfiltered wave loads (Fz, Mphi, Mtheta) at time T for the position and heading inputs.