Marine systems simulation
Loading...
Searching...
No Matches
CollarChain.h
1#pragma once
2#include <Eigen/Eigen>
3
4#include "SupergridCable.h"
5#include "LineStructureGravityHydro.h"
6
7
8
9
11public:
12 CollarChain(CoRiBoDynamics::ConstraintSolver* solver, ISimObjectCreator* creator, double beta, string name);
13
14 void setEnvironment(environment::EnvironmentProvider*e) { env_wrapper = EnvironmentWrapper(e); }
15
16 virtual void ComputeConstraints(const double T, const double * const X);
17
18protected:
19 static int GetElementNum(ISimObjectCreator* creator);
20
22 {
23 public:
24 EnvironmentWrapper(environment::EnvironmentProvider* environment) { m_environment = environment; }
25
26 Eigen::Vector3d Current(double T, const double* X, const double* Position) {
27 Eigen::Vector3d C;
28 m_environment->GetCurrentVelocity(T, Position, C.data());
29 return C; }
30 double OceanSurfaceElevation(double T, const double* X, const double* Position) {
31 double elev;
32 m_environment->GetSurfaceElevation(T, Position, elev);
33 return elev;
34 }
35
36 void CurrentQuery(double T, const double* X, const Eigen::Vector3d& Position, Eigen::Vector3d& current, double& surface_elevation, double& density) {
38 m_environment->PointEnvironmentQuery(T, Position.data(), result);
39 current = Eigen::Vector3d(result.current_velocity);
40 surface_elevation = result.surface_elevation;
41 density = result.density;
42 }
43
44 double SeaDepth(const double* Position) {
45 double ret;
46 m_environment->GetSeaDepth(Position, ret);
47 return ret;
48 }
49
50 private:
51 environment::EnvironmentProvider* m_environment;
52 };
53 EnvironmentWrapper env_wrapper;
54};
Definition ConstraintSolver.h:31
Definition SupergridLineStructure.h:15
Definition CollarChain.h:22
Definition CollarChain.h:10
virtual void ComputeConstraints(const double T, const double *const X)
Struct for containing the data for a environment query.
Definition Environment.h:25
double current_velocity[3]
Ocean current velocity.
Definition Environment.h:30
double density
Definition Environment.h:32
double surface_elevation
Surface elevation.
Definition Environment.h:26