Marine systems simulation
Loading...
Searching...
No Matches
Environment.h
1#pragma once
3
4#include <marenv/marenv.h>
5
6namespace marenv
7{
20{
21public:
23
24 struct alignas(128) EnvironmentQuery
25 {
26 double surface_elevation = 0.0;
27 double surface_unit_normal[3] = {0.0, 0.0, -1.0};
28 double particle_velocity[3] = {0.0, 0.0, 0.0};
29 double particle_acceleration[3] = {0.0, 0.0, 0.0};
30 double current_velocity[3] = {0.0, 0.0, 0.0};
31 double pressure = 0.0;
32 double density = 1025.0;
34
35 void SetZero() noexcept { *this = EnvironmentQuery {}; }
36 };
38
39 virtual ~Environment() = 0;
40
49 virtual Status GetSubmergence(double time, const double pos[3], double& submergence) = 0;
58 virtual Status GetSurfaceElevation(double time, const double pos[2], double& elevationOut) = 0;
67 virtual Status GetSurfaceUnitNormal(double time, const double pos[2], double unitNormalOut[3]) = 0;
78 virtual Status GetParticleVelocity(double time, const double pos[3], double velOut[3]) = 0;
89 virtual Status GetParticleAcceleration(double time, const double pos[3], double accOut[3]) = 0;
98 virtual Status GetDynamicPressure(double time, const double pos[3], double& pressureOut) = 0;
109 virtual Status GetTotalPressure(double time, const double pos[3], double& pressureOut) = 0;
117 virtual Status GetSeaDepth(const double pos[2], double& depthOut) = 0;
130 virtual Status ComputeRayIntersection(const double origin[3], const double direction[3], double& distanceOut, double maxSearchDistance = 100, double startSearchDistance = -1.0, double stepSize = 1.0, double convergenceTolerance = 0.01) = 0;
141 virtual Status GetCurrentVelocity(double time, const double pos[3], double velOut[3]) = 0;
150 virtual Status GetDensity(double time, const double pos[3], double& density) = 0;
159 virtual Status PointEnvironmentQuery(double time, const double pos[3], EnvironmentQuery& queryResult) = 0;
160
161protected:
163
164 Environment() = default;
165};
166} // namespace marenv
Definition Environment.h:20
virtual Status GetSurfaceElevation(double time, const double pos[2], double &elevationOut)=0
virtual Status GetSeaDepth(const double pos[2], double &depthOut)=0
virtual Status GetDynamicPressure(double time, const double pos[3], double &pressureOut)=0
virtual Status ComputeRayIntersection(const double origin[3], const double direction[3], double &distanceOut, double maxSearchDistance=100, double startSearchDistance=-1.0, double stepSize=1.0, double convergenceTolerance=0.01)=0
virtual Status GetSubmergence(double time, const double pos[3], double &submergence)=0
virtual Status GetSurfaceUnitNormal(double time, const double pos[2], double unitNormalOut[3])=0
virtual Status GetParticleVelocity(double time, const double pos[3], double velOut[3])=0
virtual Status GetDensity(double time, const double pos[3], double &density)=0
Environment()=default
The constructor is protected.
virtual Status GetCurrentVelocity(double time, const double pos[3], double velOut[3])=0
virtual Status GetParticleAcceleration(double time, const double pos[3], double accOut[3])=0
virtual Status GetTotalPressure(double time, const double pos[3], double &pressureOut)=0
virtual ~Environment()=0
Virtual destructor.
virtual Status PointEnvironmentQuery(double time, const double pos[3], EnvironmentQuery &queryResult)=0
Status
Definition marenv.h:40
The marenv root namespace.
Definition CumulativeDistribution.h:8
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 particle_acceleration[3]
Particle acceleration.
Definition Environment.h:29
void SetZero() noexcept
Sets all fields to default values.
Definition Environment.h:35
double surface_unit_normal[3]
Surface unit normal.
Definition Environment.h:27
double particle_velocity[3]
Particle velocity.
Definition Environment.h:28
double density
Definition Environment.h:32
double pressure
Pressure.
Definition Environment.h:31
double surface_elevation
Surface elevation.
Definition Environment.h:26
Policy mixin: this type is neither copyable nor movable.
Definition marenv.h:84