IBAMR  IBAMR version 0.19.
Public Member Functions | Public Attributes | Protected Attributes | Private Member Functions | Private Attributes | List of all members
IBAMR::IrregularWaveGenerator Class Reference

Class for generating Irregular waves.

#include <ibamr/IrregularWaveGenerator.h>

Inheritance diagram for IBAMR::IrregularWaveGenerator:
Inheritance graph
[legend]

Public Member Functions

 IrregularWaveGenerator (const std::string &object_name, SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > input_db)
 
double getSurfaceElevation (double x, double time) const override
 
double getVelocity (double x, double z_plus_d, double time, int comp_idx) const override
 
void printWaveData (std::ofstream &ostream) const
 
double getWaterDepth () const
 
double getWaveAngularFrequency () const
 
double getWaveNumber () const
 
double getWaveAmplitude () const
 
double getGravity () const
 

Public Attributes

WaveGenerationData d_wave_gen_data
 

Protected Attributes

std::string d_object_name
 
double d_depth
 Wave parameters. More...
 
double d_gravity
 
bool d_deep_water_limit = false
 

Private Member Functions

void getFromInput (SAMRAI::tbox::Pointer< SAMRAI::tbox::Database > db)
 

Private Attributes

int d_num_waves = 50
 
double d_Hs = std::numeric_limits<double>::quiet_NaN()
 
double d_Ts = std::numeric_limits<double>::quiet_NaN()
 
double d_omega_begin = std::numeric_limits<double>::quiet_NaN()
 
double d_omega_end = std::numeric_limits<double>::quiet_NaN()
 
std::string d_wave_spectrum
 
std::vector< doubled_omega
 
std::vector< doubled_wave_number
 
std::vector< doubled_amplitude
 
std::vector< doubled_phase
 

Constructor & Destructor Documentation

◆ IrregularWaveGenerator()

IBAMR::IrregularWaveGenerator::IrregularWaveGenerator ( const std::string &  object_name,
SAMRAI::tbox::Pointer< SAMRAI::tbox::Database input_db 
)

Member Function Documentation

◆ getSurfaceElevation()

double IBAMR::IrregularWaveGenerator::getSurfaceElevation ( double  x,
double  time 
) const
overridevirtual

Get surface elevation at a specified horizontal position and time.

Implements IBAMR::StokesWaveGeneratorStrategy.

◆ getVelocity()

double IBAMR::IrregularWaveGenerator::getVelocity ( double  x,
double  z_plus_d,
double  time,
int  comp_idx 
) const
overridevirtual

Get velocity component at a specified position and time.

Implements IBAMR::StokesWaveGeneratorStrategy.

◆ printWaveData()

void IBAMR::IrregularWaveGenerator::printWaveData ( std::ofstream &  ostream) const

Print the wave data.

◆ getFromInput()

void IBAMR::IrregularWaveGenerator::getFromInput ( SAMRAI::tbox::Pointer< SAMRAI::tbox::Database db)
private

Get wave parameters from input db.

◆ getWaterDepth()

double IBAMR::StokesWaveGeneratorStrategy::getWaterDepth ( ) const
inherited

◆ getWaveAngularFrequency()

double IBAMR::StokesWaveGeneratorStrategy::getWaveAngularFrequency ( ) const
inherited

◆ getWaveNumber()

double IBAMR::StokesWaveGeneratorStrategy::getWaveNumber ( ) const
inherited

◆ getWaveAmplitude()

double IBAMR::StokesWaveGeneratorStrategy::getWaveAmplitude ( ) const
inherited

◆ getGravity()

double IBAMR::StokesWaveGeneratorStrategy::getGravity ( ) const
inherited

Member Data Documentation

◆ d_num_waves

int IBAMR::IrregularWaveGenerator::d_num_waves = 50
private

Number of component waves with random phases to be generated (default = 50).

◆ d_Hs

double IBAMR::IrregularWaveGenerator::d_Hs = std::numeric_limits<double>::quiet_NaN()
private

Significant wave height [length].

◆ d_Ts

double IBAMR::IrregularWaveGenerator::d_Ts = std::numeric_limits<double>::quiet_NaN()
private

Significant wave period [time].

◆ d_omega_begin

double IBAMR::IrregularWaveGenerator::d_omega_begin = std::numeric_limits<double>::quiet_NaN()
private

Lowest angular frequency in the spectrum [rad/time].

◆ d_omega_end

double IBAMR::IrregularWaveGenerator::d_omega_end = std::numeric_limits<double>::quiet_NaN()
private

Highest angular frequency in the spectrum [rad/time].

◆ d_wave_spectrum

std::string IBAMR::IrregularWaveGenerator::d_wave_spectrum
private

JONSWAP/Bretschneider wave spectrum.

◆ d_omega

std::vector<double> IBAMR::IrregularWaveGenerator::d_omega
private

Angular frequencies of component waves [rad/time].

◆ d_wave_number

std::vector<double> IBAMR::IrregularWaveGenerator::d_wave_number
private

Wave number of component waves [2 \( \pi \)/length].

◆ d_amplitude

std::vector<double> IBAMR::IrregularWaveGenerator::d_amplitude
private

Amplitude of component waves [length].

◆ d_phase

std::vector<double> IBAMR::IrregularWaveGenerator::d_phase
private

Phase (random) of component waves [rad].

◆ d_wave_gen_data

WaveGenerationData IBAMR::StokesWaveGeneratorStrategy::d_wave_gen_data
inherited

◆ d_object_name

std::string IBAMR::StokesWaveGeneratorStrategy::d_object_name
protectedinherited

Book-keeping.

◆ d_depth

double IBAMR::StokesWaveGeneratorStrategy::d_depth
protectedinherited
Parameters
d_wave_number: Wave number of dominant wave component [$2\pi/m$]
d_amplitude: Amplitude of the dominant wave component [m]
d_depth: Depth of water, from sea bed to still water level [m]
d_gravity: Acceleration due to gravity [$m/s^2$]
d_omega: Angular frequency [$2 \pi/s$] (optional)

\NOTE The class calculates a more accurate value of omega from the expansion coefficients and the provided value in not used.

◆ d_gravity

double IBAMR::StokesWaveGeneratorStrategy::d_gravity
protectedinherited

◆ d_deep_water_limit

bool IBAMR::StokesWaveGeneratorStrategy::d_deep_water_limit = false
protectedinherited

If we are calculating in deep water limit.


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