|
Marine systems simulation
|
#include <GerstnerWaves.h>
Inheritance diagram for marenv::wave::GerstnerWaves:
Collaboration diagram for marenv::wave::GerstnerWaves:Public Member Functions | |
| GerstnerWaves (std::shared_ptr< WaveComponents > waveComponents) | |
| GerstnerWaves (WaveEnergySpectrum::SpectrumParameters spectrumParameters, int numWaves, uint32_t randomSeed) | |
| ~GerstnerWaves () override=default | |
| Default destructor. | |
| Status | ComputeSurfaceElevation (double time, const double pos[2], double &elevationOut) override |
| Status | ComputeSurfaceElevationAtLagrange (double time, const double lagrangePos[2], double &elevationOut) |
| Status | ComputeSurfaceUnitNormal (double time, const double pos[2], double unitNormalOut[3]) override |
| Status | ComputeSurfaceUnitNormalAtLagrange (double time, const double lagrangePos[2], double unitNormalOut[3]) |
| Status | ComputeParticleVelocity (double time, const double pos[3], double velOut[3]) override |
| Status | ComputeParticleVelocityAtLagrange (double time, const double lagrangePos[3], double velOut[3]) |
| Status | ComputeParticleAcceleration (double time, const double pos[3], double accOut[3]) override |
| Status | ComputeParticleAccelerationAtLagrange (double time, const double lagrangePos[3], double accOut[3]) |
| Status | ComputeDynamicPressure (double time, const double pos[3], double &pressureOut) override |
| Status | ComputeDynamicPressureAtLagrange (double time, const double lagrangePos[3], double &pressureOut) |
| Status | ComputeTotalPressure (double time, const double pos[3], double &pressureOut) override |
| Status | ComputeTotalPressureWithElevation (double eulerZ, double elevation, double &pressureOut) |
| Status | ComputePointQuery (double time, const double pos[3], double &surface_elevation, double surface_unit_normal[3], double particle_velocity[3], double particle_acceleration[3], double &pressure) override |
Public Member Functions inherited from marenv::wave::LinearWaveTheory | |
| LinearWaveTheory (std::shared_ptr< WaveComponents > waveComponents, std::string waveTheoryName) | |
| WaveField::InsecureDatapointers | GetWaveComponents () const override |
| std::string | SpectrumName () const override |
| std::string | WaveTheoryName () const override |
| WaveComponentData | GetWaveComponentsCopy () const override |
| void | BlendInPlace (WaveComponentData &other, double alpha) override |
Public Member Functions inherited from marenv::wave::WaveField | |
| virtual | ~WaveField ()=default |
| Virtual destructor. | |
| virtual marenv::wave::WaveComponentData | GetWaveComponentsCopy (double time, size_t maxComponents=0) const |
Protected Member Functions | |
| void | FindLagrangePoint3D (double time, const double eulerPosIn[3], double *lagrangePosOut) |
| void | FindLagrangePoint2D (double time, const double eulerPosIn[2], double *lagrangePosOut) |
| void | ThrowIfWavesAreTooSteep () |
| Throws an exception if the waves are too steep. | |
Protected Member Functions inherited from marenv::wave::LinearWaveTheory | |
| std::shared_ptr< WaveSnapshot > | LoadSnapshot () const |
| void | StoreSnapshot (std::shared_ptr< WaveSnapshot > snap) |
Protected Member Functions inherited from marenv::wave::WaveField | |
| WaveField ()=default | |
| Constructor. | |
Additional Inherited Members | |
Protected Attributes inherited from marenv::wave::LinearWaveTheory | |
| std::string | m_spectrumName |
| The name of the wave spectrum. | |
| std::string | m_waveTheoryName |
| The name of the wave theory. | |
Calculates physical properties in a sea state from a set of Gerstner theory gravity waves.
This theory requires iteration when calculating properties based on Eulerian positions, and is, therefore, computational demanding.
|
explicit |
Constructor of Gerstner waves from wave component specifications.
| [in] | waveComponents | Wave components specifications. |
| marenv::wave::GerstnerWaves::GerstnerWaves | ( | WaveEnergySpectrum::SpectrumParameters | spectrumParameters, |
| int | numWaves, | ||
| uint32_t | randomSeed | ||
| ) |
Constructor of Gerstner waves from wave spectrum specification.
| [in] | spectrumParameters | Wave spectrum specifications. |
| [in] | numWaves | Number of waves to construct from the spectrum. |
| [in] | randomSeed | The random seed to use. |
|
overridevirtual |
Returns the dynamic pressure at a specific position.
| [in] | time | Current simulation time. |
| [in] | pos | Position (x,y,z) for which the pressure is desired. |
| [out] | pressureOut | The pressure at pos. |
Implements marenv::wave::WaveField.
| Status marenv::wave::GerstnerWaves::ComputeDynamicPressureAtLagrange | ( | double | time, |
| const double | lagrangePos[3], | ||
| double & | pressureOut | ||
| ) |
Computes dynamic pressure at a Lagrangian position.
| [in] | time | Time in seconds. |
| [in] | lagrangePos | Lagrangian position [m]. |
| [out] | pressureOut | Computed dynamic pressure [Pa]. |
|
overridevirtual |
Returns the particle acceleration at a specific position.
| [in] | time | Current simulation time. |
| [in] | pos | Position (x,y,z) for which the particle acceleration is desired. |
| [out] | accOut | The particle acceleration at pos. |
Includes effects of both current and waves.
Implements marenv::wave::WaveField.
| Status marenv::wave::GerstnerWaves::ComputeParticleAccelerationAtLagrange | ( | double | time, |
| const double | lagrangePos[3], | ||
| double | accOut[3] | ||
| ) |
Computes particle acceleration at a Lagrangian position.
| [in] | time | Time in seconds. |
| [in] | lagrangePos | Lagrangian position [m]. |
| [out] | accOut | Computed particle acceleration [m/s^2]. |
|
overridevirtual |
Returns the particle velocity at a specific position.
| [in] | time | Current simulation time. |
| [in] | pos | Position (x,y,z) for which the particle velocity is desired. |
| [out] | velOut | The particle velocity at pos. |
Includes effects of both current and waves.
Implements marenv::wave::WaveField.
| Status marenv::wave::GerstnerWaves::ComputeParticleVelocityAtLagrange | ( | double | time, |
| const double | lagrangePos[3], | ||
| double | velOut[3] | ||
| ) |
Computes particle velocity at a Lagrangian position.
| [in] | time | Time in seconds. |
| [in] | lagrangePos | Lagrangian position [m]. |
| [out] | velOut | Computed particle velocity [m/s]. |
|
overridevirtual |
Calculates multiple properties of the environment in one call.
| [in] | time | Simulation time. |
| [in] | pos | Position. |
| [out] | surface_elevation | The surface elevation above this point. |
| [out] | surface_unit_normal | The surface unit normal above this point. |
| [out] | particle_velocity | The particle velocity in this point. |
| [out] | particle_acceleration | The particle acceleration in this point. |
| [out] | pressure | The pressure. The pressure in this point. |
Implements marenv::wave::WaveField.
|
overridevirtual |
Returns the surface elevation at a specific position.
| [in] | time | Current simulation time. |
| [in] | pos | Position (x,y) for which surface elevation is desired. |
| [out] | elevationOut | Surface elevation at pos. |
Implements marenv::wave::WaveField.
| Status marenv::wave::GerstnerWaves::ComputeSurfaceElevationAtLagrange | ( | double | time, |
| const double | lagrangePos[2], | ||
| double & | elevationOut | ||
| ) |
Computes surface elevation at a Lagrangian position.
| [in] | time | Time in seconds. |
| [in] | lagrangePos | Lagrangian position [m]. |
| [out] | elevationOut | Computed surface elevation [m]. |
|
overridevirtual |
Returns the unit normal vector of the surface at a specific position.
| [in] | time | Current simulation time. |
| [in] | pos | Position (x,y) for which the unit normal surface vector is desired. |
| [out] | unitNormalOut | The unit normal surface vector at pos. |
Implements marenv::wave::WaveField.
| Status marenv::wave::GerstnerWaves::ComputeSurfaceUnitNormalAtLagrange | ( | double | time, |
| const double | lagrangePos[2], | ||
| double | unitNormalOut[3] | ||
| ) |
Computes surface unit normal at a Lagrangian position.
| [in] | time | Time in seconds. |
| [in] | lagrangePos | Lagrangian position [m]. |
| [out] | unitNormalOut | Computed surface unit normal vector. |
|
overridevirtual |
Returns the total pressure at a specific position.
| [in] | time | Current simulation time. |
| [in] | pos | Position (x,y,z) for which the pressure is desired. |
| [out] | pressureOut | The pressure at pos. |
Implements marenv::wave::WaveField.
| Status marenv::wave::GerstnerWaves::ComputeTotalPressureWithElevation | ( | double | eulerZ, |
| double | elevation, | ||
| double & | pressureOut | ||
| ) |
Computes total pressure including elevation effects.
| [in] | eulerZ | Eulerian vertical coordinate [m]. |
| [in] | elevation | Surface elevation [m]. |
| [out] | pressureOut | Computed total pressure [Pa]. |
|
protected |
Finds the horizontal position in Lagrangian space from one in Eulerian space using iterations.
| [in] | time | Time in seconds. |
| [in] | eulerPosIn | Horizontal position in Eulerian space [m]. |
| [out] | lagrangePosOut | Horizontal position in Lagrangian space [m]. |
|
protected |
Finds the 3D Lagrangian point corresponding to a given Eulerian point.
| [in] | time | Time in seconds. |
| [in] | eulerPosIn | Eulerian position [m]. |
| [out] | lagrangePosOut | Corresponding Lagrangian position [m]. |