3#ifndef C_FLOATING_COLLAR_H
4#define C_FLOATING_COLLAR_H
6#include <CEnvironment.h>
7#include "sfh/constants.h"
18#include <environment/DeepSeaGravityWaves.h>
152 virtual void FinalSetup(
const double T,
const double*
const X, ISimObjectCreator*
const pCreator);
166 void OdeFcn(
const double T ,
const double*
const X,
double*
const XDot,
const bool IsMajorTimeStep);
169#ifdef FH_VISUALIZATION
178 void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
188 void RenderUpdate(
const double T,
const double*
const X);
200 const virtual double*
NetConnectPos (
const double T,
const double*
const X,
int iNetConnect);
211 const virtual double*
NetConnectVel (
const double T,
const double*
const X,
int iNetConnect);
222 const virtual double*
BRConnectPos (
const double T,
const double*
const X,
int iBRConn);
233 const virtual double*
BRConnectVel (
const double T,
const double*
const X,
int iBRConn);
244 const virtual double*
FastConnectPos (
const double T,
const double*
const X,
int iFastConn);
255 const virtual double*
FastConnectVel (
const double T,
const double*
const X,
int iFastConn);
266 const virtual double*
SkirtConnectPos (
const double T,
const double*
const X,
int iSkirtConn);
277 const virtual double*
SkirtConnectVel (
const double T,
const double*
const X,
int iSkirtConn);
288 const virtual double*
AddConnectPos (
const double T,
const double*
const X,
int iAddConn);
299 const virtual double*
AddConnectVel (
const double T,
const double*
const X,
int iAddConn);
302 const virtual double*
getVelLocalAHRS(
const double T,
const double*
const X,
int iPos);
391 const virtual double*
SurfElev (
const double T,
const double*
const X);
401 const virtual double*
PartVel (
const double T,
const double*
const X);
421 const virtual double*
RingElev (
const double T,
const double*
const X);
431 const virtual double*
SigmarrFcn (
const double T,
const double*
const X);
441 const virtual double*
RelDispZ (
const double T,
const double*
const X);
451 const virtual double*
WaveInfo (
const double T,
const double*
const X);
510 void BRConnectModalForces (
const double T,
const double*
const X,
int nMode);
511 void FastConnectModalForces (
const double T,
const double*
const X,
int nMode);
512 void SkirtConnectModalForces(
const double T,
const double*
const X,
int nMode);
513 void AddConnectModalForces (
const double T,
const double*
const X,
int nMode);
514 void TensionForcesPiecewiseConstant(
const double T,
const double*
const X);
515 void CosineSineFcn(
int m,
int n,
double beta0,
double beta1,
int segments,
double* fcnValue);
517 void SectionPositions(
const double*
const X);
519 double ModalBouyancyForce(
int iMode);
521 double m_surfElevCenter;
540 double*** m_TCosCosInt;
541 double*** m_TSinSinInt;
542 double*** m_TCosSinInt;
543 double*** m_TSinCosInt;
544 typedef Eigen::Matrix<double, 2, 2> mat2;
545 typedef Eigen::Matrix<double, 2, 1> cvec2;
570 double m_ContactBeta;
644 double EXP_OMG_T_33_COS;
664 double m_NetForcesOn;
665 double m_NetForcesStart;
669 double m_CurrSurfVel[3];
672 double SectionPos(
const double*
const X,
const double beta,
const int iDOF,
const double offset);
673 void BesselFunc(
double k,
double R,
int n,
int i,
int N);
677 double TrapezeInt(
double* fx,
double* x,
const int nElem,
const int loop,
const double xLoop);
678 void FloaterSectPos(
const double*
const X,
double beta,
double radOffset,
double* pos);
685 std::complex<double>
CnFunc(
int modenumber,
double wavenumber);
691#ifdef FH_VISUALIZATION
692 Ogre::SceneNode* m_RenderNode;
693 Ogre::SceneNode** m_ManualObjectNodes;
Definition: CEnvironment.h:10
Definition: CFloatingCollar.h:134
double kRadSpring
Initial position of floater in (x,y,eta6). x-ccord., y-coord. and rotaion (yaw) angle.
Definition: CFloatingCollar.h:609
int m_nPortsAHRS
RACE.
Definition: CFloatingCollar.h:550
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:493
double m_BRConnectModalForce[5]
Modal force from net connections.
Definition: CFloatingCollar.h:504
double PosRadSpring[4]
Coupling between horizontal and vertical displacement in terms of taking horizontal rigid body motion...
Definition: CFloatingCollar.h:612
double m_Im_z
2nd area moment of the floater section for bending around the z-axis
Definition: CFloatingCollar.h:592
double m_a22_lim
2D modal added mass for the floater in heave (z-direction)
Definition: CFloatingCollar.h:625
double m_totalFastForce[3]
Total force (x,y,z) subjected on floater from the net.
Definition: CFloatingCollar.h:490
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:639
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:529
int m_NumConPoint
Contact.
Definition: CFloatingCollar.h:564
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:646
double * m_NetConnectVel
Position (x,y,z) of net connections to floater.
Definition: CFloatingCollar.h:480
double m_CD
Current velocity (absolute value)
Definition: CFloatingCollar.h:600
ISignalPort ** m_SkirtConnectExtForce
Signal port. Force on floater from anchor lines.
Definition: CFloatingCollar.h:500
int m_nBRConnect
number of net connections
Definition: CFloatingCollar.h:652
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:527
ISignalPort ** m_BRConnectExtForce
Signal port. Force from net connections on floater.
Definition: CFloatingCollar.h:498
double m_E
Floater radius. From center of coordinate system to center between the two pipes.
Definition: CFloatingCollar.h:589
double m_EIr
Factor for strength of parallel axis theorem (2nd area moment/bending stiffness). Valid values range ...
Definition: CFloatingCollar.h:638
double m_Ux
Number of modes in the modal analysis.
Definition: CFloatingCollar.h:596
double m_Ir
Modulus of elasticity of floater material.
Definition: CFloatingCollar.h:590
double m_b66_visc
Linearized viscous damping (Morison drag) in heave.
Definition: CFloatingCollar.h:621
double m_posRingCent[3]
Current velocity in center of ring.
Definition: CFloatingCollar.h:670
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:568
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:482
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:532
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:495
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:656
double m_totalBRForce[3]
Total force (x,y,z) subjected on floater from fastening (bridle) connections.
Definition: CFloatingCollar.h:491
double m_initPos[3]
Sea water density.
Definition: CFloatingCollar.h:606
double m_DampFact
Pipe wall thickness.
Definition: CFloatingCollar.h:594
double * m_NetConnectPos
Water particle etc acceleration in (x,y,z)=(0,0,0)
Definition: CFloatingCollar.h:479
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:657
double * m_b22
Displacement at attachment point for radial springs.
Definition: CFloatingCollar.h:616
int m_nSkirtConnect
Number of anchoring connections on the floater.
Definition: CFloatingCollar.h:654
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:466
double m_totalSkirtForce[3]
Total force (x,y,z) subjected on floater from bottom ring connections.
Definition: CFloatingCollar.h:492
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:506
ISignalPort ** m_AddConnectExtForce
Signal port. Force on floater from permanent skirt.
Definition: CFloatingCollar.h:501
double m_R
2D water plane area [m]
Definition: CFloatingCollar.h:588
double * m_b22_visc
Structural damping in sway.
Definition: CFloatingCollar.h:617
double * m_SkirtConnectVel
Position (x,y,z) of permanent skirt connections to floater.
Definition: CFloatingCollar.h:486
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:483
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:614
bool m_nLinOn_b22
Boolean. True means viscous damping is activated.
Definition: CFloatingCollar.h:630
double m_U
Current direction in global coordinates.
Definition: CFloatingCollar.h:599
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:471
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:472
double * m_SkirtConnectPos
Velocity (Ux,Uy,Uz) of floater section where anchor lines are connected.
Definition: CFloatingCollar.h:485
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:659
int nWaveFreq
Time dependency of excitation forces for horizontal deformation for mode sin(n*beta)....
Definition: CFloatingCollar.h:648
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:655
double ModalSpringForce
Position of radial springs.
Definition: CFloatingCollar.h:613
double m_ContactModalForce[5]
Contact forces.
Definition: CFloatingCollar.h:573
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:663
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:553
int m_numElements
The index of the velocity state in the state array.
Definition: CFloatingCollar.h:467
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:597
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:595
double * m_AddConnectVel
Position (x,y,z) of additional connections to floater.
Definition: CFloatingCollar.h:488
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:487
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:605
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:566
double WaveCouplingOn
Radial spring on or off. 1=on, 0=off.
Definition: CFloatingCollar.h:611
double m_relDispZBeta
Relative vertical displacement between floater section center and surface at position beta.
Definition: CFloatingCollar.h:533
double m_a22_Inf
2D added mass for the floater in surge (x-direction)
Definition: CFloatingCollar.h:626
vector< double > m_omg
Pointer to DeepSeaGravityWaves -> CEnvironment.
Definition: CFloatingCollar.h:470
double m_Iz
2nd area moment of the floater section for bending around the horizontal r-axis
Definition: CFloatingCollar.h:591
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:554
double * m_Kn
Stiffness, hydrostatic and structural.
Definition: CFloatingCollar.h:623
double m_p
2D (mass per meter) of the floater
Definition: CFloatingCollar.h:583
double m_NetConnectModalForce[5]
Signal port. Force on floater from additional connectors.
Definition: CFloatingCollar.h:503
bool m_nLinOn_b33
Boolean. True means non-linear damping is activated.
Definition: CFloatingCollar.h:631
double m_g
Modal water current force in x-direction.
Definition: CFloatingCollar.h:603
double m_tWall
Moment of inertia around the z-axis.
Definition: CFloatingCollar.h:593
double * m_FastConnectVel
Position (x,y,z) of anchor lines connections to floater.
Definition: CFloatingCollar.h:484
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:524
double m_ringElev
Elevation of ring in center (beta = pi/2). Used to validate m_surfElevCenter.
Definition: CFloatingCollar.h:526
double m_Udir
Current velocity in y-direction.
Definition: CFloatingCollar.h:598
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:602
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:629
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:684
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:537
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:645
vector< double > m_waveNumber
Wave phase angle vector.
Definition: CFloatingCollar.h:474
double m_nPipes
Radial offsett of net position. 0 equals center of inner pipe. Positive inwards.
Definition: CFloatingCollar.h:585
double m_CDt
Drag coefficient pipe.
Definition: CFloatingCollar.h:601
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:505
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:522
double m_bw
Floater pipe radius.
Definition: CFloatingCollar.h:587
double ** m_b33
Structural stiffness in sway.
Definition: CFloatingCollar.h:619
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:582
double * m_FastConnectBeta
Position of bottom ring connections. Array containing angles in local coordinate system.
Definition: CFloatingCollar.h:658
double * m_b33_visc
Damping in heave (structural)
Definition: CFloatingCollar.h:620
double m_dNetPos
Half distance between center of the pipes.
Definition: CFloatingCollar.h:584
double m_floaterCenterPos[3]
Position at which relative motion is evaluated.
Definition: CFloatingCollar.h:535
ISignalPort ** m_NetConnectExtForce
Rigid body motion modal forces in x-direction. Bridle, Net, Bottom ring, Skirt.
Definition: CFloatingCollar.h:497
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:477
double m_partVel[3]
Surface elevation in x=y=0. For verification purposes.
Definition: CFloatingCollar.h:523
double m_ContactForce[6]
Position at contact.
Definition: CFloatingCollar.h:572
double RadSpringOn
Radial spring stiffness. Dummy point load to simulate mooring lines.
Definition: CFloatingCollar.h:610
double * m_AddConnectBeta
Position of skirt connections. Array containing angles in local coordinate system.
Definition: CFloatingCollar.h:660
double m_AddConnectModalForce[5]
Modal force from permanent skirt.
Definition: CFloatingCollar.h:507
vector< double > m_phaseAngle
Wave direction vector.
Definition: CFloatingCollar.h:473
double m_Axy
Bending stiffness of floater section for bending around the z-axis.
Definition: CFloatingCollar.h:641
double * m_velLocalAHRS
Position of observation ports in local coordinates (beta) (For comparison with AHRS data)
Definition: CFloatingCollar.h:552
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:634
double m_Iz_parAxFact
Value set to 1 or 0. 1 Imply that non-linear damping is activated.
Definition: CFloatingCollar.h:636
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:642
double m_viscAmp_b33
Viscous damping multiplying/amplifying factor.
Definition: CFloatingCollar.h:633
double m_b33_nLinOn
Value set to 1 or 0. 1 Imply that non-linear damping is activated.
Definition: CFloatingCollar.h:635
double m_viscAmp_b22
Boolean. True means non-linear damping is activated.
Definition: CFloatingCollar.h:632
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:481
CEnvironment * m_Environment
Number of elements in visualization.
Definition: CFloatingCollar.h:469
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:571
double EXP_OMG_T_22_SIN
Time dependency of excitation forces for horizontal deformation for mode cos(n*beta)....
Definition: CFloatingCollar.h:647
double * m_c22
Linearized viscous damping (Morison drag) in sway.
Definition: CFloatingCollar.h:618
int m_nFastConnect
Number of bottom ring connections.
Definition: CFloatingCollar.h:653
ISignalPort ** m_FastConnectExtForce
Signal port. Force from bottom ring connections.
Definition: CFloatingCollar.h:499
double * m_c33
Viscous damping for yaw motin (rotation around z-axis)
Definition: CFloatingCollar.h:622
double m_mModal
Position of additional connections. Array containing angles in local coordinate system.
Definition: CFloatingCollar.h:662
double * m_posGlobalAHRS
Array with velocity in global coordinate system (x,y,z) (For comparison with AHRS data)
Definition: CFloatingCollar.h:555
bool m_viscOn_b22
2D added mass for the floater in surge (x-direction)
Definition: CFloatingCollar.h:628
double m_c
Equals 1 for one-pipe floater. Equals 2 for two-pipe floater. Default value 2.
Definition: CFloatingCollar.h:586
double m_a22_Unity
2D added mass for the floater in surge (x-direction)
Definition: CFloatingCollar.h:627
double m_sigmarrBeta
Bending stress around the local y-axis (r-axis) at a specified position.
Definition: CFloatingCollar.h:530
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:489
Class modelling a Net cage.
Definition: CBottomRing.h:35