Go to the documentation of this file.
45 irregularMultiDirectional,
54 Foam::scalar Foam::waveModels::irregularMultiDirectional::eta
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] =
295 irregularWaveModel::info(os);
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;
addToRunTimeSelectionTable(decompositionMethod, kahipDecomp, dictionary)
const vector L(dict.get< vector >("L"))
dimensionedScalar cosh(const dimensionedScalar &ds)
Different types of constants.
dimensionedScalar sin(const dimensionedScalar &ds)
volScalarField H(IOobject("H", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), mesh, dimensionedScalar(dimLength, Zero))
autoPtr< surfaceVectorField > Uf
virtual void setLevel(const scalar t, const scalar tCoeff, scalarField &level) const
Set the water level.
Unit conversion functions.
virtual scalar waveLength(const scalar h, const scalar T) const
Return the wavelength.
InfoProxy< IOobject > info() const
Return info proxy.
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
volScalarField & h
Planck constant.
#define forAll(list, i)
Loop across all elements in list.
virtual void setVelocity(const scalar t, const scalar tCoeff, const scalarField &level)
Calculate the wave model velocity.
dimensionedScalar tanh(const dimensionedScalar &ds)
A patch is a list of labels that address the faces in the global face list.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
constexpr scalar twoPi(2 *M_PI)
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Macros for easy insertion into run-time selection tables.
Mesh data needed to do the Finite Volume discretisation.
Vector< scalar > vector
A scalar version of the templated Vector.
constexpr scalar degToRad(const scalar deg) noexcept
Conversion from degrees to radians.
virtual vector Uf(const scalar d, const scalar x, const scalar y, const scalar t, const scalar z) const
Wave velocity.
void readFields(const typename GeoFieldType::Mesh &mesh, const IOobjectList &objects, const wordHashSet &selectedFields, LIFOStack< regIOobject * > &storedObjects)
Read the selected GeometricFields of the templated type.
virtual bool readDict(const dictionary &overrideDict)
Read from dictionary.
constexpr scalar pi(M_PI)
const std::string patch
OpenFOAM patch number as a std::string.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
irregularMultiDirectional(const dictionary &dict, const fvMesh &mesh, const polyPatch &patch, const bool readFields=true)
Constructor.
defineTypeNameAndDebug(combustionModel, 0)
dimensionedScalar cos(const dimensionedScalar &ds)
dimensionedScalar sinh(const dimensionedScalar &ds)