4#include <marenv/wave/LinearWaveTheory.h>
5#include <marenv/wave/WaveEnergySpectrum.h>
116 double& surface_elevation,
117 double surface_unit_normal[3],
118 double particle_velocity[3],
119 double particle_acceleration[3],
120 double& pressure)
override;
Definition GerstnerWaves.h:20
void ThrowIfWavesAreTooSteep()
Throws an exception if the waves are too steep.
Status ComputeParticleAcceleration(double time, const double pos[3], double accOut[3]) override
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
Status ComputeSurfaceUnitNormal(double time, const double pos[2], double unitNormalOut[3]) override
WaterLocation
Where an Eulerian position lies relative to the water.
Definition GerstnerWaves.h:144
@ InWater
Below the surface; the Lagrangian point is found.
@ NotConverged
A Lagrange solver did not converge within its iteration limit.
@ InAir
Above the surface: there is no motion and no pressure, and no Lagrangian point.
Status ComputeParticleVelocity(double time, const double pos[3], double velOut[3]) override
Status ComputeTotalPressure(double time, const double pos[3], double &pressureOut) override
double TotalPressureAtLagrange(const double lagrangePos[3]) const
GerstnerWaves(WaveEnergySpectrum::SpectrumParameters spectrumParameters, int numWaves, uint32_t randomSeed)
Status ComputeParticleAccelerationAtLagrange(double time, const double lagrangePos[3], double accOut[3])
Status ComputeDynamicPressure(double time, const double pos[3], double &pressureOut) override
bool FindLagrangePoint3D(double time, const double eulerPosIn[3], double *lagrangePosOut)
Status ComputeDynamicPressureAtLagrange(double time, const double lagrangePos[3], double &pressureOut)
Status ComputeParticleVelocityAtLagrange(double time, const double lagrangePos[3], double velOut[3])
Status ComputeSurfaceElevation(double time, const double pos[2], double &elevationOut) override
Status ComputeTotalPressureWithElevation(double eulerZ, double elevation, double &pressureOut)
WaterLocation LocateInWater(double time, const double pos[3], double surfaceLagrangePos[2], double lagrangePos[3])
Status ComputeSurfaceElevationAtLagrange(double time, const double lagrangePos[2], double &elevationOut)
bool FindLagrangePoint2D(double time, const double eulerPosIn[2], double *lagrangePosOut)
GerstnerWaves(std::shared_ptr< WaveComponents > waveComponents)
Status ComputeSurfaceUnitNormalAtLagrange(double time, const double lagrangePos[2], double unitNormalOut[3])
~GerstnerWaves() override=default
Default destructor.
Definition LinearWaveTheory.h:45
Status
Definition marenv.h:44
The parameters defining a certain wave field.
Definition WaveEnergySpectrum.h:43