Marine systems simulation
Loading...
Searching...
No Matches
RingStructureGravityHydro.h
1#pragma once
2
7#include <RingStructure.h>
8#include <CollisionManager.h>
9#include <cmath>
10
11#include <EnvironmentProvider.h>
12#include "Contact/ShipContact.h"
13
14namespace CoRiBoDynamics { class CoRiBoNet; }
15#include "Net_unsupported/CoriboNet.h"
16
18public:
19 RingStructureGravityHydro(CoRiBoDynamics::ConstraintSolver* solver, ISimObjectCreator* creator, RingStructure::RingSpec spec, double unit_weight, std::string name);
20
21 void setEnvironment(environment::EnvironmentProvider *e);
22 virtual void ComputeConstraints(const double T, const double * const X);
23
24 CollisionCheckInterface::GeometryVector CheckForContact(CoRiBoDynamics::CollisionManager::ExternalObject& object);
25
26 double Diameter() { return m_spec.RingDiameter; }
27 double TubeDiameter() { return m_spec.TubeDiameter; }
28 int ringElementIndex( double angle );
29 double ringElementOffset(double angle);
30 Eigen::Vector3d relativePosition(double angle);
31
32
33
34#ifdef FH_VISUALIZATION
35 virtual void RenderInit(Ogre::Root* const ogreRoot);
36 //virtual void RenderUpdate(const double T, const double* const X);
37#endif
38
39 void SetCoRiBoNet(CoRiBoDynamics::CoRiBoNet* net) { m_net = net; }
40 //virtual const CoRiBoDynamics::Vector& GetNetForces(double T, const double* X) = 0;
41
42protected:
44 virtual void Init(CoRiBoDynamics::ConstraintSolver* solver, ISimObjectCreator* creator, RingStructure::RingSpec spec, double unit_weight, std::string name);
45
47
48 environment::EnvironmentProvider *m_environment;
49 double m_elemMass;
50 double m_elemArea;
52 double m_elemRadius;
53 double m_elemVolume;
54 double m_Cd_n;
55 double m_Cd_t;
56
60 Eigen::Vector3d m_Ca;
61 Eigen::Vector3d m_Cb;
62};
63
64
66{
67public:
68 FloatingCollar(CoRiBoDynamics::ConstraintSolver* solver, ISimObjectCreator* creator, double beta, std::string name);
69 //const CoRiBoDynamics::Vector& GetNetForces(double T, const double* X);
70};
71
73{
74public:
75 BottomRing(CoRiBoDynamics::ConstraintSolver* solver, ISimObjectCreator* creator, double beta, std::string name);
76 //const CoRiBoDynamics::Vector& GetNetForces(double T, const double* X);
77};
Definition RingStructureGravityHydro.h:73
Definition CoriboNet.h:21
Definition CollisionManager.h:135
Definition ConstraintSolver.h:31
Definition RingStructure.h:8
Definition ShipContact.h:7
Definition RingStructureGravityHydro.h:66
Definition RingStructureGravityHydro.h:17
virtual void ComputeConstraints(const double T, const double *const X)
Eigen::Vector3d m_Ca
Definition RingStructureGravityHydro.h:60
double m_elemProjArea
Surface area of element;.
Definition RingStructureGravityHydro.h:51
Definition CollisionManager.h:6
double RingDiameter
Damping frequency coefficient; [s^-1].
Definition RingStructure.h:14
double TubeDiameter
Total diameter of the ring [m].
Definition RingStructure.h:15