4#include <marenv/marenv.h>
12# define RESTRICT __restrict
14# define RESTRICT __restrict__
136 double surface_unit_normal[3],
double particle_velocity[3],
137 double particle_acceleration[3],
double& pressure) = 0;
The interface for an representing waves.
Definition WaveField.h:35
virtual marenv::Status ComputeParticleAcceleration(double time, const double pos[3], double accOut[3])=0
virtual void BlendInPlace(WaveComponentData &other, double alpha)=0
virtual marenv::Status ComputeTotalPressure(double time, const double pos[3], double &pressureOut)=0
virtual marenv::Status ComputeSurfaceUnitNormal(double time, const double pos[2], double unitNormalOut[3])=0
virtual marenv::Status ComputeSurfaceElevation(double time, const double pos[2], double &elevationOut)=0
virtual ~WaveField()=default
Virtual destructor.
virtual std::string SpectrumName() const =0
virtual marenv::wave::WaveComponentData GetWaveComponentsCopy() const =0
virtual marenv::wave::WaveComponentData GetWaveComponentsCopy(double time, size_t maxComponents=0) const
WaveField()=default
Constructor.
virtual std::string WaveTheoryName() const =0
virtual marenv::Status ComputeDynamicPressure(double time, const double pos[3], double &pressureOut)=0
virtual marenv::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)=0
virtual InsecureDatapointers GetWaveComponents() const =0
virtual marenv::Status ComputeParticleVelocity(double time, const double pos[3], double velOut[3])=0
Status
Definition marenv.h:40
Policy mixin: this type is neither copyable nor movable.
Definition marenv.h:84
Details of a wave component.
Definition WaveField.h:23
std::vector< double > zetaA
Spectral amplitude.
Definition WaveField.h:24
std::vector< double > epsilon
Random phase angle.
Definition WaveField.h:25
std::vector< double > waveNumber
Wave number.
Definition WaveField.h:27
std::vector< double > theta
Wave propagation direction.
Definition WaveField.h:28
std::vector< double > omega
Wave frequency.
Definition WaveField.h:26
Pointers to wave component details.
Definition WaveField.h:40
int numWaves
The number of wave components.
Definition WaveField.h:49
const double *RESTRICT epsilon
Pointer to random phase angle array.
Definition WaveField.h:42
const double *RESTRICT omega
Pointer to wave frequency array.
Definition WaveField.h:43
const double *RESTRICT theta
Pointer to wave propagation direction array.
Definition WaveField.h:45
const double *RESTRICT sinTheta
Pointer to array of precalculated sin(theta).
Definition WaveField.h:47
const double *RESTRICT cosTheta
Pointer to array of precalculated cos(theta).
Definition WaveField.h:46
const double *RESTRICT waveNumber
Pointer to wave number array.
Definition WaveField.h:44
const double *RESTRICT zetaA
Pointer to spectral amplitude array.
Definition WaveField.h:41
const double *RESTRICT remainingAccumulatedAmplitude
Each element is the sum of the amplitudes of the remaining wave components.
Definition WaveField.h:48