FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
marenv::seafloor::FlatSeafloor Class Reference

#include <FlatSeafloor.h>

+ Inheritance diagram for marenv::seafloor::FlatSeafloor:
+ Collaboration diagram for marenv::seafloor::FlatSeafloor:

Public Member Functions

 FlatSeafloor ()=default
 Constructor.
 
 ~FlatSeafloor () override=default
 Destructor.
 
marenv::Status GetDepth (const double pos[2], double &depthOut) override
 
marenv::Status ComputeSurfaceUnitNormal (const double pos[2], double unitNormalOut[3]) override
 
marenv::Status GetSeabedSigma (const double pos[3], double &sigmaOut) override
 
marenv::Status GetSeabedTau (const double pos[3], double &tauOut) override
 
marenv::Status GetSeabedRho (const double pos[3], double &rhoOut) override
 
marenv::Status ComputeRayIntersection (const double origin[3], const double direction[3], double &distanceOut, double maxSearchDistance=100, double startSearchDistance=-1, double stepSize=1.0, double convergenceTolerance=0.01) override
 
- Public Member Functions inherited from marenv::seafloor::BathymetryField
virtual ~BathymetryField ()=default
 Virtual destructor.
 

Additional Inherited Members

- Protected Member Functions inherited from marenv::seafloor::BathymetryField
 BathymetryField ()=default
 Constructor is empty.
 
- Static Protected Member Functions inherited from marenv::seafloor::BathymetryField
static bool IsValidRay (const double origin[3], double directionNorm, double maxSearchDistance)
 True for an origin with finite coordinates, and a direction norm and a maximum search distance that ComputeRayIntersection accepts: positive and finite.
 
static double ValidTolerance (double convergenceTolerance)
 The convergence tolerance ComputeRayIntersection uses: convergenceTolerance, raised to 1e-12 if smaller or NaN.
 

Detailed Description

A flat seabed at 200 m depth.

Represents a simple featureless ocean floor.

Member Function Documentation

◆ ComputeRayIntersection()

marenv::Status marenv::seafloor::FlatSeafloor::ComputeRayIntersection ( const double  origin[3],
const double  direction[3],
double &  distanceOut,
double  maxSearchDistance = 100,
double  startSearchDistance = -1,
double  stepSize = 1.0,
double  convergenceTolerance = 0.01 
)
overridevirtual

Returns the distance along the unit ray to the 200 m plane, exactly: no march, so startSearchDistance and stepSize are not used.

The contract is that of BathymetryField::ComputeRayIntersection: an origin less than convergenceTolerance above the plane, or below it, is a hit at distance 0 (owner ruling R133); a ray that is horizontal, points away from the plane or meets it beyond maxSearchDistance returns marenv::Status::NOT_APPLICABLE_NOT_SET with distance -1 (owner ruling R134, MENV-0063); a zero or non-finite direction, a non-finite origin, or a maxSearchDistance that is not positive and finite, returns marenv::Status::ERROR_NOT_SET with distance -1. For a direction whose computed norm is exactly 1 the hit is (200 - z) / u_z as before MENV-0063, to the bit.

Reimplemented from marenv::seafloor::BathymetryField.

◆ ComputeSurfaceUnitNormal()

marenv::Status marenv::seafloor::FlatSeafloor::ComputeSurfaceUnitNormal ( const double  pos[2],
double  unitNormalOut[3] 
)
overridevirtual

Returns the unit normal vector of the seafloor at a specific position.

Parameters
[in]posPosition (x,y) for which the unit normal surface vector is desired.
[out]unitNormalOutThe unit normal surface vector at pos.
Returns
marenv::Status::OK on success. See marenv::Status for other values.flag

Implements marenv::seafloor::BathymetryField.

◆ GetDepth()

marenv::Status marenv::seafloor::FlatSeafloor::GetDepth ( const double  pos[2],
double &  depthOut 
)
overridevirtual

Returns the seafloor depth at a specific position.

Parameters
[in]posPosition (x,y) for which depth is desired.
[out]depthOutDepth at pos.
Returns
marenv::Status::OK on success. See marenv::Status for other values.flag

Implements marenv::seafloor::BathymetryField.

◆ GetSeabedRho()

marenv::Status marenv::seafloor::FlatSeafloor::GetSeabedRho ( const double  pos[3],
double &  rhoOut 
)
overridevirtual

Returns seabed density (ρ) in kg/m³.

Parameters
[in]posThe position in question.
[out]rhoOutDensity in the specified position.
Returns
marenv::Status::OK on success. See marenv::Status for other values.flag

Implements marenv::seafloor::BathymetryField.

◆ GetSeabedSigma()

marenv::Status marenv::seafloor::FlatSeafloor::GetSeabedSigma ( const double  pos[3],
double &  sigmaOut 
)
overridevirtual

Returns seabed σ in Pascals (Pa).

Parameters
[in]posThe position in question.
[out]sigmaOutSigma in the specified position.
Returns
marenv::Status::OK on success. See marenv::Status for other values.flag

Implements marenv::seafloor::BathymetryField.

◆ GetSeabedTau()

marenv::Status marenv::seafloor::FlatSeafloor::GetSeabedTau ( const double  pos[3],
double &  tauOut 
)
overridevirtual

Returns seabed shear stress τ.

Parameters
[in]posThe position in question.
[out]tauOutShear stress in the specified position.
Returns
marenv::Status::OK on success. See marenv::Status for other values.flag

Implements marenv::seafloor::BathymetryField.


The documentation for this class was generated from the following file: