66 scalar phaseTot = Kx*
x + Ky*
y - omega*t +
phase;
67 return H*0.5*
cos(phaseTot);
82 for (label i=1; i<=100; ++i)
104 forAll(irregWaveHeights_, ii)
106 forAll(irregWaveHeights_[ii], jj)
112 waveKs*
x*
cos(irregWaveDirs_[ii][jj])
113 + waveKs*
y*
sin(irregWaveDirs_[ii][jj])
115 + irregWavePhases_[ii][jj];
119 irregWaveHeights_[ii][jj],
125 irregWaveDirs_[ii][jj]
149 forAll(irregWaveHeights_, ii)
151 forAll(irregWaveHeights_[ii], jj)
160 irregWaveHeights_[ii][jj],
161 waveKs*
cos(irregWaveDirs_[ii][jj]),
163 waveKs*
sin(irregWaveDirs_[ii][jj]),
167 irregWavePhases_[ii][jj]
172 level[paddlei] = waterDepthRef_ + tCoeff*eta;
180 const scalar irregWaveOmega,
182 const scalar irregWaveKs,
185 const scalar irregDir
188 const scalar ksh = irregWaveKs*hh;
189 const scalar ksz = irregWaveKs*zz;
192 irregH*0.5*irregWaveOmega*
cos(pha)*(
cosh(ksz)/
sinh(ksh))*
cos(irregDir);
195 irregH*0.5*irregWaveOmega*
cos(pha)*(
cosh(ksz)/
sinh(ksh))*
sin(irregDir);
198 irregH*0.5*irregWaveOmega*
sin(pha)*(
sinh(ksz)/
sinh(ksh));
219 setPaddlePropeties(level, facei, fraction, z);
223 const label paddlei = faceToPaddle_[facei];
234 U_[facei] = fraction*
Uf*tCoeff;
266 if (irregularWaveModel::readDict(overrideDict))
268 readEntry(
"wavePeriods", irregWavePeriods_);
269 readEntry(
"waveHeights", irregWaveHeights_);
270 readEntry(
"wavePhases", irregWavePhases_);
271 readEntry(
"waveDirs", irregWaveDirs_);
273 irregWaveLengths_ = irregWaveHeights_;
275 forAll(irregWaveHeights_, ii)
277 forAll(irregWaveHeights_[ii], jj)
279 irregWaveLengths_[ii][jj] =
280 waveLength(waterDepthRef_, irregWavePeriods_[ii][jj]);
281 irregWaveDirs_[ii][jj] =
297 os <<
" Wave periods : " << irregWavePeriods_.size() <<
nl
298 <<
" Wave heights : " << irregWaveHeights_.size() <<
nl
299 <<
" Wave phases : " << irregWavePhases_.size() <<
nl
300 <<
" Wave lengths : " << irregWaveLengths_.size() <<
nl
301 <<
" Wave directions : " << irregWaveDirs_.size() <<
nl;
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
InfoProxy< ensightCells > info() const
Return info proxy.
Mesh data needed to do the Finite Volume discretisation.
Single incompressible phase derived from the phase-fraction. Used as part of the multiPhaseMixture fo...
A patch is a list of labels that address the faces in the global face list.
Base class for waveModels.
Multi-directional irregular wave model.
virtual void setVelocity(const scalar t, const scalar tCoeff, const scalarField &level)
Calculate the wave model velocity.
virtual vector uMultiDirec(const scalar irregH, const scalar irregWaveOmega, const scalar phaseTot, const scalar irregWaveKs, const scalar z, const scalar h, const scalar irregDir) const
virtual void setLevel(const scalar t, const scalar tCoeff, scalarField &level) const
Set the water level.
virtual scalar waveLength(const scalar h, const scalar T) const
Return the wavelength.
virtual bool readDict(const dictionary &overrideDict)
Read from dictionary.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
volScalarField H(IOobject("H", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), mesh, dimensionedScalar(dimLength, Zero))
autoPtr< surfaceVectorField > Uf
OBJstream os(runTime.globalPath()/outputName)
constexpr scalar pi(M_PI)
constexpr scalar twoPi(2 *M_PI)
Different types of constants.
dimensionedScalar cosh(const dimensionedScalar &ds)
dimensionedScalar sin(const dimensionedScalar &ds)
dimensionedScalar tanh(const dimensionedScalar &ds)
dimensionedScalar sinh(const dimensionedScalar &ds)
void readFields(const typename GeoFieldType::Mesh &mesh, const IOobjectList &objects, const wordHashSet &selectedFields, LIFOStack< regIOobject * > &storedObjects)
Read the selected GeometricFields of the templated type.
constexpr scalar degToRad() noexcept
Multiplication factor for degrees to radians conversion.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
dimensionedScalar cos(const dimensionedScalar &ds)
constexpr char nl
The newline '\n' character (0x0a)
#define forAll(list, i)
Loop across all elements in list.
Unit conversion functions.
const vector L(dict.get< vector >("L"))