3#ifndef C_FLOATING_COLLAR_H
4#define C_FLOATING_COLLAR_H
6#include "sfh/constants.h"
17#include <EnvironmentProvider.h>
151 virtual void FinalSetup(
const double T,
const double*
const X, ISimObjectCreator*
const pCreator);
165 void OdeFcn(
const double T ,
const double*
const X,
double*
const XDot,
const bool IsMajorTimeStep);
168#ifdef FH_VISUALIZATION
177 void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
187 void RenderUpdate(
const double T,
const double*
const X);
199 const virtual double*
NetConnectPos (
const double T,
const double*
const X,
int iNetConnect);
210 const virtual double*
NetConnectVel (
const double T,
const double*
const X,
int iNetConnect);
221 const virtual double*
BRConnectPos (
const double T,
const double*
const X,
int iBRConn);
232 const virtual double*
BRConnectVel (
const double T,
const double*
const X,
int iBRConn);
243 const virtual double*
FastConnectPos (
const double T,
const double*
const X,
int iFastConn);
254 const virtual double*
FastConnectVel (
const double T,
const double*
const X,
int iFastConn);
265 const virtual double*
SkirtConnectPos (
const double T,
const double*
const X,
int iSkirtConn);
276 const virtual double*
SkirtConnectVel (
const double T,
const double*
const X,
int iSkirtConn);
287 const virtual double*
AddConnectPos (
const double T,
const double*
const X,
int iAddConn);
298 const virtual double*
AddConnectVel (
const double T,
const double*
const X,
int iAddConn);
301 const virtual double*
getVelLocalAHRS(
const double T,
const double*
const X,
int iPos);
390 const virtual double*
SurfElev (
const double T,
const double*
const X);
400 const virtual double*
PartVel (
const double T,
const double*
const X);
420 const virtual double*
RingElev (
const double T,
const double*
const X);
430 const virtual double*
SigmarrFcn (
const double T,
const double*
const X);
440 const virtual double*
RelDispZ (
const double T,
const double*
const X);
450 const virtual double*
WaveInfo (
const double T,
const double*
const X);
509 void BRConnectModalForces (
const double T,
const double*
const X,
int nMode);
510 void FastConnectModalForces (
const double T,
const double*
const X,
int nMode);
511 void SkirtConnectModalForces(
const double T,
const double*
const X,
int nMode);
512 void AddConnectModalForces (
const double T,
const double*
const X,
int nMode);
513 void TensionForcesPiecewiseConstant(
const double T,
const double*
const X);
514 void CosineSineFcn(
int m,
int n,
double beta0,
double beta1,
int segments,
double* fcnValue);
516 void SectionPositions(
const double*
const X);
518 double ModalBouyancyForce(
int iMode);
520 double m_surfElevCenter;
539 double*** m_TCosCosInt;
540 double*** m_TSinSinInt;
541 double*** m_TCosSinInt;
542 double*** m_TSinCosInt;
543 typedef Eigen::Matrix<double, 2, 2> mat2;
544 typedef Eigen::Matrix<double, 2, 1> cvec2;
569 double m_ContactBeta;
643 double EXP_OMG_T_33_COS;
663 double m_NetForcesOn;
664 double m_NetForcesStart;
668 double m_CurrSurfVel[3];
671 double SectionPos(
const double*
const X,
const double beta,
const int iDOF,
const double offset);
672 void BesselFunc(
double k,
double R,
int n,
int i,
int N);
676 double TrapezeInt(
double* fx,
double* x,
const int nElem,
const int loop,
const double xLoop);
677 void FloaterSectPos(
const double*
const X,
double beta,
double radOffset,
double* pos);
684 std::complex<double>
CnFunc(
int modenumber,
double wavenumber);
690#ifdef FH_VISUALIZATION
691 Ogre::SceneNode* m_RenderNode;
692 Ogre::SceneNode** m_ManualObjectNodes;
Definition CFloatingCollar.h:133
double kRadSpring
Initial position of floater in (x,y,eta6). x-ccord., y-coord. and rotaion (yaw) angle.
Definition CFloatingCollar.h:608
int m_nPortsAHRS
RACE.
Definition CFloatingCollar.h:549
double RadialVelocity(const double *const X, double beta)
Calculates radial displacement (positive inwards/toward center of floater).
double m_totalAddForce[3]
Total force (x,y,z) subjected in floater from permanent skirt.
Definition CFloatingCollar.h:492
double m_BRConnectModalForce[5]
Modal force from net connections.
Definition CFloatingCollar.h:503
double PosRadSpring[4]
Coupling between horizontal and vertical displacement in terms of taking horizontal rigid body motion...
Definition CFloatingCollar.h:611
double m_Im_z
2nd area moment of the floater section for bending around the z-axis
Definition CFloatingCollar.h:591
double m_a22_lim
2D modal added mass for the floater in heave (z-direction)
Definition CFloatingCollar.h:624
double m_totalFastForce[3]
Total force (x,y,z) subjected on floater from the net.
Definition CFloatingCollar.h:489
virtual const double * SkirtConnectPos(const double T, const double *const X, int iSkirtConn)
Output port. Returns position of indexed skirt connection point.
double m_EIz
Bending stiffness of floater section for bending around the horizontal r-axis.
Definition CFloatingCollar.h:638
virtual const double * BRConnectVel(const double T, const double *const X, int iBRConn)
Output port. Returns velocity of indexed bottom ring connection point.
double m_sigmarr
Position at which elevation/vertical displacement of floater is calculaleted.
Definition CFloatingCollar.h:528
int m_NumConPoint
Contact.
Definition CFloatingCollar.h:563
double EXP_OMG_T_22_COS
Time dependency of excitation forces in heave for mode sin(n*beta). Proportinal to sin(Omg*T).
Definition CFloatingCollar.h:645
double * m_NetConnectVel
Position (x,y,z) of net connections to floater.
Definition CFloatingCollar.h:479
double m_CD
Current velocity (absolute value)
Definition CFloatingCollar.h:599
ISignalPort ** m_SkirtConnectExtForce
Signal port. Force on floater from anchor lines.
Definition CFloatingCollar.h:499
int m_nBRConnect
number of net connections
Definition CFloatingCollar.h:651
double TrapezeInt(double *fx, double *x, const int nElem, const int loop, const double xLoop)
2D added mass of the floater section in surge. Independent of mode shape. Strip theory applied.
double m_ringElevBeta
Ring elevation/vertical displacement at chosen position beta.
Definition CFloatingCollar.h:526
ISignalPort ** m_BRConnectExtForce
Signal port. Force from net connections on floater.
Definition CFloatingCollar.h:497
double m_E
Floater radius. From center of coordinate system to center between the two pipes.
Definition CFloatingCollar.h:588
double m_EIr
Factor for strength of parallel axis theorem (2nd area moment/bending stiffness). Valid values range ...
Definition CFloatingCollar.h:637
double m_Ux
Number of modes in the modal analysis.
Definition CFloatingCollar.h:595
double m_Ir
Modulus of elasticity of floater material.
Definition CFloatingCollar.h:589
double m_b66_visc
Linearized viscous damping (Morison drag) in heave.
Definition CFloatingCollar.h:620
double m_posRingCent[3]
Current velocity in center of ring.
Definition CFloatingCollar.h:669
double StruveFunc(int n, double z)
Return floater velocity (Ux,Uy,Uz) at position beta.
double m_UpdateDT
External object involved in contact.
Definition CFloatingCollar.h:567
virtual const double * OutContactForce(const double T, const double *const X)
Output contact position.
double * m_BRConnectVel
Position (x,y,z) of bottom ring cables connected to floater.
Definition CFloatingCollar.h:481
virtual const double * SigmarrFcn(const double T, const double *const X)
Output port. Returns bending stress around the local y-axis at position given by the parameter Bendin...
void NetConnectModalForces(const double T, const double *const X, int nMode)
Modal force from additional connections.
virtual const double * NetConnectVel(const double T, const double *const X, int iNetConnect)
Output port. Returns velocity of indexed net connection point.
double m_relDispZ
Position at which bending stress is calculated.
Definition CFloatingCollar.h:531
virtual const double * AddConnectPos(const double T, const double *const X, int iAddConn)
Output port. Returns position of indexed additional connection point.
double m_RBMxModalForces[4]
Total force (x,y,z) subjected in floater from additional connectors.
Definition CFloatingCollar.h:494
virtual const double * FastConnectPos(const double T, const double *const X, int iFastConn)
Output port. Returns position of indexed bridle connection point.
double * m_netConnectBeta
Number of additional connectors/fastening points on floating collar.
Definition CFloatingCollar.h:655
double m_totalBRForce[3]
Total force (x,y,z) subjected on floater from fastening (bridle) connections.
Definition CFloatingCollar.h:490
double m_initPos[3]
Sea water density.
Definition CFloatingCollar.h:605
double m_DampFact
Pipe wall thickness.
Definition CFloatingCollar.h:593
double * m_NetConnectPos
Water particle etc acceleration in (x,y,z)=(0,0,0)
Definition CFloatingCollar.h:478
double KnFunc2(int modenumber)
The Struve function H_n(z)
double * m_BRConnectBeta
Position of net connections. Array containing angles in local coordinate system.
Definition CFloatingCollar.h:656
double * m_b22
Displacement at attachment point for radial springs.
Definition CFloatingCollar.h:615
int m_nSkirtConnect
Number of anchoring connections on the floater.
Definition CFloatingCollar.h:653
virtual const double * getVelLocalAHRS(const double T, const double *const X, int iPos)
Output ports. For project: RACE - Anleggsintegritet.
int m_VelocityIndex
The index of the position state in the state array.
Definition CFloatingCollar.h:465
double m_totalSkirtForce[3]
Total force (x,y,z) subjected on floater from bottom ring connections.
Definition CFloatingCollar.h:491
virtual const double * FastConnectVel(const double T, const double *const X, int iFastConn)
Output port. Returns velocity of indexed bridle connection point.
double m_SkirtConnectModalForce[5]
Modal force from anchor-lines.
Definition CFloatingCollar.h:505
ISignalPort ** m_AddConnectExtForce
Signal port. Force on floater from permanent skirt.
Definition CFloatingCollar.h:500
double m_R
2D water plane area [m]
Definition CFloatingCollar.h:587
double * m_b22_visc
Structural damping in sway.
Definition CFloatingCollar.h:616
double * m_SkirtConnectVel
Position (x,y,z) of permanent skirt connections to floater.
Definition CFloatingCollar.h:485
void FloaterSectVel(const double *const X, double beta, double *vel)
Return floater position (x,y,z) at position beta.
double * m_FastConnectPos
Velocity (Ux,Uy,Uz) of floater section where bottom ring cables/chains/ropes are connected.
Definition CFloatingCollar.h:482
void AddMass33Fcn(double p, double c, double R, double Kn, int n)
Integral value needed for calculation of each modal added mass.
virtual const double * getVelGlobalAHRS(const double T, const double *const X, int iPos)
Position of point on floater related to floater origin in floater local coordinate system (beta,...
double DeltaL_RadSpring[4]
Modal spring force.
Definition CFloatingCollar.h:613
bool m_nLinOn_b22
Boolean. True means viscous damping is activated.
Definition CFloatingCollar.h:629
double m_U
Current direction in global coordinates.
Definition CFloatingCollar.h:598
CFloatingCollar(const string &simObjectName, ISimObjectCreator *const creator)
Reads parameters, registers states, input/output ports and shared resources.
void OdeFcn(const double T, const double *const X, double *const XDot, const bool IsMajorTimeStep)
Computes object derivatives as a function of time, states and input ports.
vector< double > m_zeta
Wave frequency vector.
Definition CFloatingCollar.h:470
virtual const double * SkirtConnectVel(const double T, const double *const X, int iSkirtConn)
Output port. Returns velocity of indexed skirt connection point.
vector< double > m_waveDir
Wave amplitude vector.
Definition CFloatingCollar.h:471
double * m_SkirtConnectPos
Velocity (Ux,Uy,Uz) of floater section where anchor lines are connected.
Definition CFloatingCollar.h:484
virtual const double * SkirtConnectTotalForce(const double T, const double *const X)
Output port. Returns total force transferred to collar from skirt connection points.
double * m_SkirtConnectBeta
Position of anchoring connections. Array containing angles in local coordinate system....
Definition CFloatingCollar.h:658
int nWaveFreq
Time dependency of excitation forces for horizontal deformation for mode sin(n*beta)....
Definition CFloatingCollar.h:647
virtual const double * getPosGlobalAHRS(const double T, const double *const X, int iPos)
Velocity of point on floater in global coordinate system (x,y,z) given by index iPos.
virtual const double * WaveInfo(const double T, const double *const X)
Output port. Returns dynamic pressure at the x,y,z origin (0,0,0)
int m_nAddConnect
Number of skirt (permanent) connections.
Definition CFloatingCollar.h:654
double ModalSpringForce
Position of radial springs.
Definition CFloatingCollar.h:612
double m_ContactModalForce[5]
Contact forces.
Definition CFloatingCollar.h:572
double SectionPos(const double *const X, const double beta, const int iDOF, const double offset)
Center position of ring (only x-pos; y and z equals zero)
void KnFunc(int n, int N)
Value of Bessel functions of the first kind dependent on floater raduis, motion mode and wave number.
virtual const double * NetConnectPos(const double T, const double *const X, int iNetConnect)
Output port. Returns position of indexed net connection point.
double ** m_sectPos
2D modal floater ring mass.
Definition CFloatingCollar.h:662
void AddMass22Fcn(double p, double c)
2D modal added mass of the floater section in heave. Dependent on motion mode number and geometry.
double * m_posLocalOriginAHRS
Array with velocity in local coordinate system (beta*R,v,z) (For comparison with AHRS data)
Definition CFloatingCollar.h:552
int m_numElements
The index of the velocity state in the state array.
Definition CFloatingCollar.h:466
virtual const double * SurfElev(const double T, const double *const X)
Output port. Returns surface elevation at position specified by input parameter.
double m_Uy
Current velocity in x-direction.
Definition CFloatingCollar.h:596
virtual const double * BRConnectPos(const double T, const double *const X, int iBRConn)
Output port. Returns position of indexed bottom ring connection point.
int m_NModes
Damping. Level of critical damping for each mode.
Definition CFloatingCollar.h:594
double * m_AddConnectVel
Position (x,y,z) of additional connections to floater.
Definition CFloatingCollar.h:487
virtual const double * BRConnectTotalForce(const double T, const double *const X)
Output port. Returns total force transferred to collar from bottom ring connection points.
double * m_AddConnectPos
Velocity (Ux,Uy,Uz) of floater section where skirt are connected.
Definition CFloatingCollar.h:486
virtual const double * OutContactPosition(const double T, const double *const X)
Calculate modal forces from contact.
double m_RhoWater
Acceleration of gravity.
Definition CFloatingCollar.h:604
virtual const double * FloaterCenterPos(const double T, const double *const X)
Output port. Returns the centre position of the floating collar See PortDefs.h.
Contact::ContactObject m_Vessel
Number of discretized points for contact detection.
Definition CFloatingCollar.h:565
double WaveCouplingOn
Radial spring on or off. 1=on, 0=off.
Definition CFloatingCollar.h:610
double m_relDispZBeta
Relative vertical displacement between floater section center and surface at position beta.
Definition CFloatingCollar.h:532
double m_a22_Inf
2D added mass for the floater in surge (x-direction)
Definition CFloatingCollar.h:625
vector< double > m_omg
Pointer to environment::EnvironmentProvider.
Definition CFloatingCollar.h:469
double m_Iz
2nd area moment of the floater section for bending around the horizontal r-axis
Definition CFloatingCollar.h:590
void FloaterSectPos(const double *const X, double beta, double radOffset, double *pos)
Trapeze integration method.
virtual const double * FastConnectTotalForce(const double T, const double *const X)
Output port. Returns total force transferred to collar from bridle connection points.
double * m_velGlobalAHRS
Array with position in local coordinate system (beta*R,v,z) (For comparison with AHRS data)
Definition CFloatingCollar.h:553
double * m_Kn
Stiffness, hydrostatic and structural.
Definition CFloatingCollar.h:622
double m_p
2D (mass per meter) of the floater
Definition CFloatingCollar.h:582
double m_NetConnectModalForce[5]
Signal port. Force on floater from additional connectors.
Definition CFloatingCollar.h:502
bool m_nLinOn_b33
Boolean. True means non-linear damping is activated.
Definition CFloatingCollar.h:630
double m_g
Modal water current force in x-direction.
Definition CFloatingCollar.h:602
double m_tWall
Moment of inertia around the z-axis.
Definition CFloatingCollar.h:592
double * m_FastConnectVel
Position (x,y,z) of anchor lines connections to floater.
Definition CFloatingCollar.h:483
void CalContactModalForce(const double T, const double *const X, int nMode)
Calculate contact forces.
double m_ringElevCenter
Particle velocity in x=y=0 for verification purposes.
Definition CFloatingCollar.h:523
environment::EnvironmentProvider * m_Environment
Number of elements in visualization.
Definition CFloatingCollar.h:468
double m_ringElev
Elevation of ring in center (beta = pi/2). Used to validate m_surfElevCenter.
Definition CFloatingCollar.h:525
double m_Udir
Current velocity in y-direction.
Definition CFloatingCollar.h:597
virtual const double * NetConnectTotalForce(const double T, const double *const X)
Position of point on floater in global coordinate system (x,y,z) given by index iPos.
double m_F_Ux
Tangential drag coefficient pipe.
Definition CFloatingCollar.h:601
void CalContactForce(const double T, const double *const X)
Modal forces from contact.
virtual const double * RingElevCenter(const double T, const double *const X)
Output port. Returns floating collar elevation at the angular position pi/2.
bool m_viscOn_b33
Boolean. True means viscous damping is activated.
Definition CFloatingCollar.h:628
virtual const double * AddConnectTotalForce(const double T, const double *const X)
Output port. Returns total force transferred to collar from additional connection points.
double * m_a33f
Sum of infinite series.
Definition CFloatingCollar.h:683
double RadialPositionOrigin(const double *const X, double beta)
Array with position in global coordinate system (x,y,z) (For comparison with AHRS data)
int m_nT
Center position of floater.
Definition CFloatingCollar.h:536
double EXP_OMG_T_33_SIN
Time dependency of excitation forces in heave for mode cos(n*beta). Proportinal to sin(Omg*T).
Definition CFloatingCollar.h:644
vector< double > m_waveNumber
Wave phase angle vector.
Definition CFloatingCollar.h:473
double m_nPipes
Radial offsett of net position. 0 equals center of inner pipe. Positive inwards.
Definition CFloatingCollar.h:584
double m_CDt
Drag coefficient pipe.
Definition CFloatingCollar.h:600
virtual const double * RingElev(const double T, const double *const X)
Output port. Returns floating collar elevation at the angular position given by the parameter RingEle...
double m_FastConnectModalForce[5]
Modal force from bottom ring.
Definition CFloatingCollar.h:504
virtual const double * AddConnectVel(const double T, const double *const X, int iAddConn)
Output port. Returns velocity of indexed additional connection point.
double m_surfElev
Wave elevation in dynamic center of the floater.
Definition CFloatingCollar.h:521
double m_bw
Floater pipe radius.
Definition CFloatingCollar.h:586
double ** m_b33
Structural stiffness in sway.
Definition CFloatingCollar.h:618
virtual const double * PartVel(const double T, const double *const X)
Output port. Returns particle velocity at the x,y origin (0,0)
double m_mass2D
Contact.
Definition CFloatingCollar.h:581
double * m_FastConnectBeta
Position of bottom ring connections. Array containing angles in local coordinate system.
Definition CFloatingCollar.h:657
double * m_b33_visc
Damping in heave (structural)
Definition CFloatingCollar.h:619
double m_dNetPos
Half distance between center of the pipes.
Definition CFloatingCollar.h:583
double m_floaterCenterPos[3]
Position at which relative motion is evaluated.
Definition CFloatingCollar.h:534
ISignalPort ** m_NetConnectExtForce
Rigid body motion modal forces in x-direction. Bridle, Net, Bottom ring, Skirt.
Definition CFloatingCollar.h:496
virtual const double * RelDispZ(const double T, const double *const X)
Output port. Returns relative vertical displacement between floating collar and surface at position g...
double m_waveInfo[3]
Vector containing wave numbers of all wave components.
Definition CFloatingCollar.h:476
double m_partVel[3]
Surface elevation in x=y=0. For verification purposes.
Definition CFloatingCollar.h:522
double m_ContactForce[6]
Position at contact.
Definition CFloatingCollar.h:571
double RadSpringOn
Radial spring stiffness. Dummy point load to simulate mooring lines.
Definition CFloatingCollar.h:609
double * m_AddConnectBeta
Position of skirt connections. Array containing angles in local coordinate system.
Definition CFloatingCollar.h:659
double m_AddConnectModalForce[5]
Modal force from permanent skirt.
Definition CFloatingCollar.h:506
vector< double > m_phaseAngle
Wave direction vector.
Definition CFloatingCollar.h:472
double m_Axy
Bending stiffness of floater section for bending around the z-axis.
Definition CFloatingCollar.h:640
double * m_velLocalAHRS
Position of observation ports in local coordinates (beta) (For comparison with AHRS data)
Definition CFloatingCollar.h:551
void RadiationForcesHeave(int modenumber, double wavenumber, int waveindex)
Integral function needed for calculation of hydrodyn. radiation forces.
double m_b22_nLinOn
Viscous damping multiplying/amplifying factor.
Definition CFloatingCollar.h:633
double m_Iz_parAxFact
Value set to 1 or 0. 1 Imply that non-linear damping is activated.
Definition CFloatingCollar.h:635
virtual const double * RBMxModalForcesFcn(const double T, const double *const X)
Output port. Returns total force for rigid body motion in x direction.
double m_ForceFactor
Area of submerged pipe (section) per meter.
Definition CFloatingCollar.h:641
double m_viscAmp_b33
Viscous damping multiplying/amplifying factor.
Definition CFloatingCollar.h:632
double m_b33_nLinOn
Value set to 1 or 0. 1 Imply that non-linear damping is activated.
Definition CFloatingCollar.h:634
double m_viscAmp_b22
Boolean. True means non-linear damping is activated.
Definition CFloatingCollar.h:631
std::complex< double > CnFunc(int modenumber, double wavenumber)
Frequency dependent radiation coefficients in heave.
double * m_BRConnectPos
Velocity (u,v,w) of net connections between floater and net.
Definition CFloatingCollar.h:480
virtual const double * getPosLocalOriginAHRS(const double T, const double *const X, int iPos)
Velocity of point on floater in floater local coordinate system (beta,v,z) given by index iPos.
double m_ContactPos[3]
Position at contact (angle)
Definition CFloatingCollar.h:570
double EXP_OMG_T_22_SIN
Time dependency of excitation forces for horizontal deformation for mode cos(n*beta)....
Definition CFloatingCollar.h:646
double * m_c22
Linearized viscous damping (Morison drag) in sway.
Definition CFloatingCollar.h:617
int m_nFastConnect
Number of bottom ring connections.
Definition CFloatingCollar.h:652
ISignalPort ** m_FastConnectExtForce
Signal port. Force from bottom ring connections.
Definition CFloatingCollar.h:498
double * m_c33
Viscous damping for yaw motin (rotation around z-axis)
Definition CFloatingCollar.h:621
double m_mModal
Position of additional connections. Array containing angles in local coordinate system.
Definition CFloatingCollar.h:661
double * m_posGlobalAHRS
Array with velocity in global coordinate system (x,y,z) (For comparison with AHRS data)
Definition CFloatingCollar.h:554
bool m_viscOn_b22
2D added mass for the floater in surge (x-direction)
Definition CFloatingCollar.h:627
double m_c
Equals 1 for one-pipe floater. Equals 2 for two-pipe floater. Default value 2.
Definition CFloatingCollar.h:585
double m_a22_Unity
2D added mass for the floater in surge (x-direction)
Definition CFloatingCollar.h:626
double m_sigmarrBeta
Bending stress around the local y-axis (r-axis) at a specified position.
Definition CFloatingCollar.h:529
virtual const double * SurfElevCenter(const double T, const double *const X)
Output port. Returns surface elevation at the dynamic collar centre position.
double m_totalNetForce[3]
Velocity (Ux,Uy,Uz) of floater section where additional connectors are connected.
Definition CFloatingCollar.h:488
Class modelling a Net cage.
Definition CBottomRing.h:35