From a7425273a0f8652177fd5fed6142e859dc517b03 Mon Sep 17 00:00:00 2001 From: Andrew Heather <a.heather@opencfd.co.uk> Date: Wed, 13 Jun 2018 12:45:40 +0100 Subject: [PATCH] INT: refactored wave model code --- src/waveModels/Make/files | 2 + .../irregularWaveModel/irregularWaveModel.C | 3 +- .../irregularWaveModel/irregularWaveModel.H | 5 +- .../base/regularWaveModel/regularWaveModel.C | 26 +- .../base/regularWaveModel/regularWaveModel.H | 16 +- .../solitaryWaveModel/solitaryWaveModel.C | 14 +- .../solitaryWaveModel/solitaryWaveModel.H | 6 + .../waveGenerationModel/waveGenerationModel.C | 43 ++-- .../waveGenerationModel/waveGenerationModel.H | 10 +- .../irregularMultiDirectionalWaveModel.C} | 225 ++++++++---------- .../irregularMultiDirectionalWaveModel.H} | 50 ++-- 11 files changed, 197 insertions(+), 203 deletions(-) rename src/waveModels/waveGenerationModels/derived/{irregularWavesMultiDirec/irregularWavesMultiDirecWaveModel.C => irregularMultiDirectional/irregularMultiDirectionalWaveModel.C} (51%) rename src/waveModels/waveGenerationModels/derived/{irregularWavesMultiDirec/irregularWavesMultiDirecWaveModel.H => irregularMultiDirectional/irregularMultiDirectionalWaveModel.H} (77%) diff --git a/src/waveModels/Make/files b/src/waveModels/Make/files index d50a062cf39..76946b3c77a 100644 --- a/src/waveModels/Make/files +++ b/src/waveModels/Make/files @@ -2,6 +2,7 @@ waveModel/waveModel.C waveModel/waveModelNew.C waveGenerationModels/base/waveGenerationModel/waveGenerationModel.C +waveGenerationModels/base/irregularWaveModel/irregularWaveModel.C waveGenerationModels/base/regularWaveModel/regularWaveModel.C waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.C waveGenerationModels/derived/Boussinesq/BoussinesqWaveModel.C @@ -12,6 +13,7 @@ waveGenerationModels/derived/streamFunction/streamFunctionWaveModel.C waveGenerationModels/derived/StokesII/StokesIIWaveModel.C waveGenerationModels/derived/StokesI/StokesIWaveModel.C waveGenerationModels/derived/StokesV/StokesVWaveModel.C +waveGenerationModels/derived/irregularMultiDirectional/irregularMultiDirectionalWaveModel.C waveAbsorptionModels/base/waveAbsorptionModel/waveAbsorptionModel.C diff --git a/src/waveModels/waveGenerationModels/base/irregularWaveModel/irregularWaveModel.C b/src/waveModels/waveGenerationModels/base/irregularWaveModel/irregularWaveModel.C index a1b3d503f8f..46e1ef2ed78 100644 --- a/src/waveModels/waveGenerationModels/base/irregularWaveModel/irregularWaveModel.C +++ b/src/waveModels/waveGenerationModels/base/irregularWaveModel/irregularWaveModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd. \\/ M anipulation | Copyright (C) 2015 IH-Cantabria ------------------------------------------------------------------------------- License @@ -49,6 +49,7 @@ Foam::scalar Foam::waveModels::irregularWaveModel::timeCoeff return max(0, min(t/rampTime_, 1)); } + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::waveModels::irregularWaveModel::irregularWaveModel diff --git a/src/waveModels/waveGenerationModels/base/irregularWaveModel/irregularWaveModel.H b/src/waveModels/waveGenerationModels/base/irregularWaveModel/irregularWaveModel.H index 02a816405a7..8b01b7e6512 100644 --- a/src/waveModels/waveGenerationModels/base/irregularWaveModel/irregularWaveModel.H +++ b/src/waveModels/waveGenerationModels/base/irregularWaveModel/irregularWaveModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd. \\/ M anipulation | Copyright (C) 2015 IH-Cantabria ------------------------------------------------------------------------------- License @@ -41,7 +41,7 @@ namespace waveModels { /*---------------------------------------------------------------------------*\ - Class irregularWaveModel Declaration + Class irregularWaveModel Declaration \*---------------------------------------------------------------------------*/ class irregularWaveModel @@ -69,6 +69,7 @@ protected: //- Return the time scaling coefficient virtual scalar timeCoeff(const scalar t) const; + public: //- Runtime type information diff --git a/src/waveModels/waveGenerationModels/base/regularWaveModel/regularWaveModel.C b/src/waveModels/waveGenerationModels/base/regularWaveModel/regularWaveModel.C index 030c590d2a5..5939b41d292 100644 --- a/src/waveModels/waveGenerationModels/base/regularWaveModel/regularWaveModel.C +++ b/src/waveModels/waveGenerationModels/base/regularWaveModel/regularWaveModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd. \\/ M anipulation | Copyright (C) 2015 IH-Cantabria ------------------------------------------------------------------------------- License @@ -41,15 +41,6 @@ namespace waveModels // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // -Foam::scalar Foam::waveModels::regularWaveModel::timeCoeff -( - const scalar t -) const -{ - return max(0, min(t/rampTime_, 1)); -} - - Foam::word Foam::waveModels::regularWaveModel::waveType() const { scalar waveK = 2.0*mathematical::pi/waveLength_; @@ -78,8 +69,9 @@ Foam::waveModels::regularWaveModel::regularWaveModel const bool readFields ) : - waveGenerationModel(dict, mesh, patch, false), - rampTime_(VSMALL), + irregularWaveModel(dict, mesh, patch, false), + waveHeight_(0), + waveAngle_(0), wavePeriod_(0), waveLength_(0), wavePhase_(1.5*mathematical::pi) @@ -104,9 +96,10 @@ bool Foam::waveModels::regularWaveModel::readDict const dictionary& overrideDict ) { - if (waveGenerationModel::readDict(overrideDict)) + if (irregularWaveModel::readDict(overrideDict)) { - lookup("rampTime") >> rampTime_; + waveHeight_ = readWaveHeight(); + waveAngle_ = readWaveAngle(); lookup("wavePeriod") >> wavePeriod_; if (wavePeriod_ < 0) @@ -130,9 +123,10 @@ bool Foam::waveModels::regularWaveModel::readDict void Foam::waveModels::regularWaveModel::info(Ostream& os) const { - waveGenerationModel::info(os); + irregularWaveModel::info(os); - os << " Ramp time : " << rampTime_ << nl + os << " Wave height : " << waveHeight_ << nl + << " Wave angle : " << 180/mathematical::pi*waveAngle_ << nl << " Wave period : " << wavePeriod_ << nl << " Wave length : " << waveLength_ << nl << " Wave phase : " << wavePhase_ << nl; diff --git a/src/waveModels/waveGenerationModels/base/regularWaveModel/regularWaveModel.H b/src/waveModels/waveGenerationModels/base/regularWaveModel/regularWaveModel.H index 6202635497e..f7ded4fa879 100644 --- a/src/waveModels/waveGenerationModels/base/regularWaveModel/regularWaveModel.H +++ b/src/waveModels/waveGenerationModels/base/regularWaveModel/regularWaveModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2016-2018 OpenCFD Ltd. \\/ M anipulation | Copyright (C) 2015 IH-Cantabria ------------------------------------------------------------------------------- License @@ -31,7 +31,7 @@ Description #ifndef waveModels_reguarWaveModel_H #define waveModels_reguarWaveModel_H -#include "waveGenerationModel.H" +#include "irregularWaveModel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -46,7 +46,7 @@ namespace waveModels class regularWaveModel : - public waveGenerationModel + public irregularWaveModel { // Private Member Functions @@ -61,8 +61,11 @@ protected: // Protected data - //- Ramp time - scalar rampTime_; + //- Wave height / [m] + scalar waveHeight_; + + //- Wave angle / [rad] (read in degrees) + scalar waveAngle_; //- Wave period scalar wavePeriod_; @@ -76,9 +79,6 @@ protected: // Protected Member Functions - //- Return the time scaling coefficient - virtual scalar timeCoeff(const scalar t) const; - //- Return word description of wave type virtual word waveType() const; diff --git a/src/waveModels/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.C b/src/waveModels/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.C index d8d6ab34582..09a95d7505c 100644 --- a/src/waveModels/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.C +++ b/src/waveModels/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.C @@ -27,6 +27,11 @@ License #include "polyPatch.H" #include "SubField.H" +#include "mathematicalConstants.H" + +using namespace Foam::constant; + + // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam @@ -61,6 +66,8 @@ Foam::waveModels::solitaryWaveModel::solitaryWaveModel ) : waveGenerationModel(dict, mesh, patch, false), + waveHeight_(0), + waveAngle_(0), x_ ( patch.faceCentres().component(0)*cos(waveAngle_) @@ -90,6 +97,9 @@ bool Foam::waveModels::solitaryWaveModel::readDict { if (waveGenerationModel::readDict(overrideDict)) { + waveHeight_ = readWaveHeight(); + waveAngle_ = readWaveAngle(); + return true; } @@ -101,7 +111,9 @@ void Foam::waveModels::solitaryWaveModel::info(Ostream& os) const { waveGenerationModel::info(os); - os << " x0: " << x0_ << nl; + os << " Wave height : " << waveHeight_ << nl + << " Wave angle : " << 180/mathematical::pi*waveAngle_ << nl + << " x0: " << x0_ << nl; } diff --git a/src/waveModels/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.H b/src/waveModels/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.H index e0724d34137..e5aea9c1873 100644 --- a/src/waveModels/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.H +++ b/src/waveModels/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.H @@ -53,6 +53,12 @@ protected: // Protected data + //- Wave height / [m] + scalar waveHeight_; + + //- Wave angle / [rad] (read in degrees) + scalar waveAngle_; + //- const scalarField& x_; diff --git a/src/waveModels/waveGenerationModels/base/waveGenerationModel/waveGenerationModel.C b/src/waveModels/waveGenerationModels/base/waveGenerationModel/waveGenerationModel.C index 5e52d9de932..f0c8dd8567d 100644 --- a/src/waveModels/waveGenerationModels/base/waveGenerationModel/waveGenerationModel.C +++ b/src/waveModels/waveGenerationModels/base/waveGenerationModel/waveGenerationModel.C @@ -39,6 +39,30 @@ namespace waveModels } +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +Foam::scalar Foam::waveModels::waveGenerationModel::readWaveHeight() const +{ + scalar h(readScalar(lookup("waveHeight"))); + if (h < 0) + { + FatalIOErrorInFunction(*this) + << "Wave height must be greater than zero. Supplied" + << " value waveHeight = " << h + << exit(FatalIOError); + } + + return h; +} + + +Foam::scalar Foam::waveModels::waveGenerationModel::readWaveAngle() const +{ + scalar angle(readScalar(lookup("waveAngle"))); + return angle* mathematical::pi/180; +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::waveModels::waveGenerationModel::waveGenerationModel @@ -49,9 +73,7 @@ Foam::waveModels::waveGenerationModel::waveGenerationModel const bool readFields ) : - waveModel(dict, mesh, patch, false), - waveHeight_(0), - waveAngle_(0) + waveModel(dict, mesh, patch, false) { if (readFields) { @@ -77,18 +99,6 @@ bool Foam::waveModels::waveGenerationModel::readDict { lookup("activeAbsorption") >> activeAbsorption_; - lookup("waveHeight") >> waveHeight_; - if (waveHeight_ < 0) - { - FatalIOErrorInFunction(*this) - << "Wave height must be greater than zero. Supplied" - << " value waveHeight = " << waveHeight_ - << exit(FatalIOError); - } - - lookup("waveAngle") >> waveAngle_; - waveAngle_ *= mathematical::pi/180; - return true; } @@ -99,9 +109,6 @@ bool Foam::waveModels::waveGenerationModel::readDict void Foam::waveModels::waveGenerationModel::info(Ostream& os) const { waveModel::info(os); - - os << " Wave height : " << waveHeight_ << nl - << " Wave angle : " << 180/mathematical::pi*waveAngle_ << nl; } diff --git a/src/waveModels/waveGenerationModels/base/waveGenerationModel/waveGenerationModel.H b/src/waveModels/waveGenerationModels/base/waveGenerationModel/waveGenerationModel.H index aee9213ed69..644f506a037 100644 --- a/src/waveModels/waveGenerationModels/base/waveGenerationModel/waveGenerationModel.H +++ b/src/waveModels/waveGenerationModels/base/waveGenerationModel/waveGenerationModel.H @@ -50,13 +50,13 @@ class waveGenerationModel { protected: - // Protected data + // Protected Member Functions - //- Wave height / [m] - scalar waveHeight_; + //- Helper function to read the wave height from the coeff dictionary + scalar readWaveHeight() const; - //- Wave angle / [rad] (read in degrees) - scalar waveAngle_; + //- Helper function to read the wave angle from the coeff dictionary + scalar readWaveAngle() const; public: diff --git a/src/waveModels/waveGenerationModels/derived/irregularWavesMultiDirec/irregularWavesMultiDirecWaveModel.C b/src/waveModels/waveGenerationModels/derived/irregularMultiDirectional/irregularMultiDirectionalWaveModel.C similarity index 51% rename from src/waveModels/waveGenerationModels/derived/irregularWavesMultiDirec/irregularWavesMultiDirecWaveModel.C rename to src/waveModels/waveGenerationModels/derived/irregularMultiDirectional/irregularMultiDirectionalWaveModel.C index eabf76acb68..f212ac42e37 100644 --- a/src/waveModels/waveGenerationModels/derived/irregularWavesMultiDirec/irregularWavesMultiDirecWaveModel.C +++ b/src/waveModels/waveGenerationModels/derived/irregularMultiDirectional/irregularMultiDirectionalWaveModel.C @@ -23,7 +23,7 @@ License \*---------------------------------------------------------------------------*/ -#include "irregularWavesMultiDirecWaveModel.H" +#include "irregularMultiDirectionalWaveModel.H" #include "mathematicalConstants.H" #include "addToRunTimeSelectionTable.H" @@ -35,11 +35,11 @@ namespace Foam { namespace waveModels { - defineTypeNameAndDebug(irregularWavesMultiDirec, 0); + defineTypeNameAndDebug(irregularMultiDirectional, 0); addToRunTimeSelectionTable ( waveModel, - irregularWavesMultiDirec, + irregularMultiDirectional, patch ); } @@ -48,8 +48,7 @@ namespace waveModels // * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // -// First order wave height -Foam::scalar Foam::waveModels::irregularWavesMultiDirec::eta +Foam::scalar Foam::waveModels::irregularMultiDirectional::eta ( const scalar H, const scalar Kx, @@ -68,8 +67,7 @@ Foam::scalar Foam::waveModels::irregularWavesMultiDirec::eta // * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * // -//Calculate waveLength -Foam::scalar Foam::waveModels::irregularWavesMultiDirec::waveLength +Foam::scalar Foam::waveModels::irregularMultiDirectional::waveLength ( const scalar h, const scalar T @@ -78,7 +76,7 @@ Foam::scalar Foam::waveModels::irregularWavesMultiDirec::waveLength scalar L0 = mag(g_)*T*T/(2.0*mathematical::pi); scalar L = L0; - for (int iii=1; iii<=100; iii++) + for (label i=1; i<=100; ++i) { L = L0*tanh(2.0*mathematical::pi*h/L); } @@ -87,7 +85,7 @@ Foam::scalar Foam::waveModels::irregularWavesMultiDirec::waveLength } -Foam::vector Foam::waveModels::irregularWavesMultiDirec::U +Foam::vector Foam::waveModels::irregularMultiDirectional::Uf ( const scalar h, const scalar x, @@ -100,98 +98,80 @@ Foam::vector Foam::waveModels::irregularWavesMultiDirec::U scalar v = 0.0; scalar w = 0.0; - scalar phaseTot = 0.0; - scalar waveKs_ = 0.0; - scalar waveOmegas_ = 0.0; - - int ii; - int jj; - scalar COLUMNAS = 0; - scalar FILAS = irregWaveHeights_.size(); - - for (ii=0; ii<FILAS; ++ii) - { - COLUMNAS= irregWaveHeights_[ii].size(); - - for (jj=0; jj<COLUMNAS; ++jj) - { - waveKs_ = mathematical::twoPi/irregWaveLengths_[ii][jj]; - waveOmegas_ = mathematical::twoPi/irregWavePeriods_[ii][jj]; - - phaseTot = waveKs_*x*cos(irregWaveDirs_[ii][jj]) + waveKs_*y*sin(irregWaveDirs_[ii][jj]) - waveOmegas_*t + irregWavePhases_[ii][jj]; - - const vector Uf = uMultiDirec - ( - irregWaveHeights_[ii][jj], - waveOmegas_, - phaseTot, - waveKs_, - z, - h, - irregWaveDirs_[ii][jj] - ); - u = u + Uf[0]; - v = v + Uf[1]; - w = w + Uf[2]; - } + forAll(irregWaveHeights_, ii) + { + forAll(irregWaveHeights_[ii], jj) + { + scalar waveKs = mathematical::twoPi/irregWaveLengths_[ii][jj]; + scalar waveOmegas = mathematical::twoPi/irregWavePeriods_[ii][jj]; + + scalar phaseTot = + waveKs*x*cos(irregWaveDirs_[ii][jj]) + + waveKs*y*sin(irregWaveDirs_[ii][jj]) + - waveOmegas*t + + irregWavePhases_[ii][jj]; + + const vector Uf = uMultiDirec + ( + irregWaveHeights_[ii][jj], + waveOmegas, + phaseTot, + waveKs, + z, + h, + irregWaveDirs_[ii][jj] + ); + + u += Uf[0]; + v += Uf[1]; + w += Uf[2]; + } } return vector(u, v, w); } -void Foam::waveModels::irregularWavesMultiDirec::setLevel +void Foam::waveModels::irregularMultiDirectional::setLevel ( const scalar t, const scalar tCoeff, scalarField& level ) const { - scalar eta = 0.0; - - scalar COLUMNAS = 0; - scalar FILAS = 0; - - scalar waveKs_ = 0.0; - scalar waveOmegas_ = 0.0; - - int ii; - int jj; - forAll(level, paddlei) { - eta = 0.0; - FILAS= irregWaveHeights_.size(); + scalar eta = 0; - for (ii=0; ii<FILAS; ++ii) - { - COLUMNAS= irregWaveHeights_[ii].size(); - - for (jj=0; jj<COLUMNAS; ++jj) - { - waveKs_ = mathematical::twoPi/irregWaveLengths_[ii][jj]; - waveOmegas_ = mathematical::twoPi/irregWavePeriods_[ii][jj]; + forAll(irregWaveHeights_, ii) + { + forAll(irregWaveHeights_[ii], jj) + { + scalar waveKs = mathematical::twoPi/irregWaveLengths_[ii][jj]; + scalar waveOmegas = + mathematical::twoPi/irregWavePeriods_[ii][jj]; eta += this->eta - ( + ( irregWaveHeights_[ii][jj], - waveKs_*cos(irregWaveDirs_[ii][jj]), - xPaddle_[paddlei], - waveKs_*sin(irregWaveDirs_[ii][jj]), - yPaddle_[paddlei], - waveOmegas_, + waveKs*cos(irregWaveDirs_[ii][jj]), + xPaddle_[paddlei], + waveKs*sin(irregWaveDirs_[ii][jj]), + yPaddle_[paddlei], + waveOmegas, t, irregWavePhases_[ii][jj] - ); - } - } + ); + } + } - level[paddlei] = waterDepthRef_ + tCoeff*eta; + level[paddlei] = waterDepthRef_ + tCoeff*eta; } } -Foam::vector Foam::waveModels::irregularWavesMultiDirec::uMultiDirec + +Foam::vector Foam::waveModels::irregularMultiDirectional::uMultiDirec ( const scalar irregH, const scalar irregWaveOmega, @@ -202,31 +182,23 @@ Foam::vector Foam::waveModels::irregularWavesMultiDirec::uMultiDirec const scalar irregDir ) const { + const scalar ksh = irregWaveKs*hh; + const scalar ksz = irregWaveKs*zz; scalar u = - irregH*0.5*irregWaveOmega* - cos(pha)* - (cosh(irregWaveKs*zz)/ - sinh(irregWaveKs*hh))* - cos(irregDir); - - scalar v = - irregH*0.5*irregWaveOmega* - cos(pha)* - (cosh(irregWaveKs*zz)/ - sinh(irregWaveKs*hh))* - sin(irregDir); + irregH*0.5*irregWaveOmega*cos(pha)*(cosh(ksz)/sinh(ksh))*cos(irregDir); + + scalar v = + irregH*0.5*irregWaveOmega*cos(pha)*(cosh(ksz)/sinh(ksh))*sin(irregDir); scalar w = - irregH*0.5*irregWaveOmega* - sin(pha)* - (sinh(irregWaveKs*zz)/ - sinh(irregWaveKs*hh)); + irregH*0.5*irregWaveOmega*sin(pha)*(sinh(ksz)/sinh(ksh)); return vector(u, v, w); } -void Foam::waveModels::irregularWavesMultiDirec::setVelocity + +void Foam::waveModels::irregularMultiDirectional::setVelocity ( const scalar t, const scalar tCoeff, @@ -247,8 +219,8 @@ void Foam::waveModels::irregularWavesMultiDirec::setVelocity { const label paddlei = faceToPaddle_[facei]; - const vector Uf = U - ( + const vector Uf = this->Uf + ( waterDepthRef_, xPaddle_[paddlei], yPaddle_[paddlei], @@ -257,15 +229,14 @@ void Foam::waveModels::irregularWavesMultiDirec::setVelocity ); U_[facei] = fraction*Uf*tCoeff; - } } - } + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::waveModels::irregularWavesMultiDirec::irregularWavesMultiDirec +Foam::waveModels::irregularMultiDirectional::irregularMultiDirectional ( const dictionary& dict, const fvMesh& mesh, @@ -284,56 +255,54 @@ Foam::waveModels::irregularWavesMultiDirec::irregularWavesMultiDirec // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -Foam::waveModels::irregularWavesMultiDirec::~irregularWavesMultiDirec() +Foam::waveModels::irregularMultiDirectional::~irregularMultiDirectional() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -bool Foam::waveModels::irregularWavesMultiDirec::readDict(const dictionary& overrideDict) +bool Foam::waveModels::irregularMultiDirectional::readDict +( + const dictionary& overrideDict +) { - int ii; - int jj; - if (irregularWaveModel::readDict(overrideDict)) { + lookup("wavePeriods") >> irregWavePeriods_; + lookup("waveHeights") >> irregWaveHeights_; + lookup("wavePhases") >> irregWavePhases_; + lookup("waveDirs") >> irregWaveDirs_; - lookup("irregWavePeriods") >> irregWavePeriods_; - lookup("irregWaveHeights") >> irregWaveHeights_; - lookup("irregWavePhases") >> irregWavePhases_; - lookup("irregWaveDirs") >> irregWaveDirs_; + irregWaveLengths_ = irregWaveHeights_; - irregWaveLengths_ = irregWaveHeights_; - scalar COLUMNAS = 0; - scalar FILAS = irregWaveHeights_.size(); - - for (ii=0; ii<FILAS; ++ii) - { - COLUMNAS= irregWaveHeights_[ii].size(); - - for (jj=0; jj<COLUMNAS; ++jj) - { - irregWaveLengths_[ii][jj] = waveLength (waterDepthRef_, irregWavePeriods_[ii][jj]); - irregWaveDirs_[ii][jj] = irregWaveDirs_[ii][jj] * (mathematical::pi/180); - } - } + forAll(irregWaveHeights_, ii) + { + forAll(irregWaveHeights_[ii], jj) + { + irregWaveLengths_[ii][jj] = + waveLength(waterDepthRef_, irregWavePeriods_[ii][jj]); + irregWaveDirs_[ii][jj] = + irregWaveDirs_[ii][jj]*mathematical::pi/180; + } + } return true; - } return false; } -void Foam::waveModels::irregularWavesMultiDirec::info(Ostream& os) const + +void Foam::waveModels::irregularMultiDirectional::info(Ostream& os) const { irregularWaveModel::info(os); - os << " WavePeriods (s) coefficients : " << irregWavePeriods_ << nl - << " WaveHeights (m) coefficients : " << irregWaveHeights_ << nl - << " WavePhases (rad) coefficients : " << irregWavePhases_ << nl - << " WaveLengths (m) coefficients : " << irregWaveLengths_ << nl - << " WaveDirections (rad) coefficients : " << irregWaveDirs_ << nl; + os << " Wave periods : " << irregWavePeriods_.size() << nl + << " Wave heights : " << irregWaveHeights_.size() << nl + << " Wave phases : " << irregWavePhases_.size() << nl + << " Wave lengths : " << irregWaveLengths_.size() << nl + << " Wave directions : " << irregWaveDirs_.size() << nl; } + // ************************************************************************* // diff --git a/src/waveModels/waveGenerationModels/derived/irregularWavesMultiDirec/irregularWavesMultiDirecWaveModel.H b/src/waveModels/waveGenerationModels/derived/irregularMultiDirectional/irregularMultiDirectionalWaveModel.H similarity index 77% rename from src/waveModels/waveGenerationModels/derived/irregularWavesMultiDirec/irregularWavesMultiDirecWaveModel.H rename to src/waveModels/waveGenerationModels/derived/irregularMultiDirectional/irregularMultiDirectionalWaveModel.H index eaf10678ce4..31c4dfc6feb 100644 --- a/src/waveModels/waveGenerationModels/derived/irregularWavesMultiDirec/irregularWavesMultiDirecWaveModel.H +++ b/src/waveModels/waveGenerationModels/derived/irregularMultiDirectional/irregularMultiDirectionalWaveModel.H @@ -22,15 +22,15 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::waveModels::irregularWavesMultiDirec + Foam::waveModels::irregularMultiDirectional Description Multi-directional irregular wave model \*---------------------------------------------------------------------------*/ -#ifndef waveModels_irregularWavesMultiDirec_H -#define waveModels_irregularWavesMultiDirec_H +#ifndef waveModels_irregularMultiDirectional_H +#define waveModels_irregularMultiDirectional_H #include "irregularWaveModel.H" @@ -42,10 +42,10 @@ namespace waveModels { /*---------------------------------------------------------------------------*\ - Class irregularWavesMultiDirec Declaration + Class irregularMultiDirectional Declaration \*---------------------------------------------------------------------------*/ -class irregularWavesMultiDirec +class irregularMultiDirectional : public irregularWaveModel { @@ -53,20 +53,21 @@ private: // Proteced Data - //- Wave periods for irregularWavesMultiDirec case (seconds) - List< List<scalar> > irregWavePeriods_; + //- Wave periods for irregularMultiDirectional case [seconds] + List<List<scalar>> irregWavePeriods_; - //- Wave heights for irregularWavesMultiDirec case (meters) - List< List<scalar> > irregWaveHeights_; + //- Wave heights for irregularMultiDirectional case [metres] + List<List<scalar>> irregWaveHeights_; - //- Wave lengths for irregularWavesMultiDirec case (meters) - List< List<scalar> > irregWaveLengths_; + //- Wave lengths for irregularMultiDirectional case [metres] + List<List<scalar>> irregWaveLengths_; - //- Wave phases for irregularWavesMultiDirec case (radians) - List< List<scalar> > irregWavePhases_; + //- Wave phases for irregularMultiDirectional case [radians] + List<List<scalar>> irregWavePhases_; - //- Direction of propagation for irregularWavesMultiDirec case (degrees, from X axis) - List< List<scalar> > irregWaveDirs_; + //- Direction of propagation for irregularMultiDirectional case + //- [degrees] from X axis + List<List<scalar>> irregWaveDirs_; // Private Member Functions @@ -91,13 +92,13 @@ protected: //- Return the wavelength virtual scalar waveLength - ( - const scalar h, - const scalar T - ) const; + ( + const scalar h, + const scalar T + ) const; //- Wave velocity - virtual vector U + virtual vector Uf ( const scalar d, const scalar x, @@ -115,7 +116,7 @@ protected: const scalar irregWaveKs, const scalar z, const scalar h, - const scalar irregDir + const scalar irregDir ) const; //- Set the water level @@ -134,13 +135,14 @@ protected: const scalarField& level ); + public: //- Runtime type information - TypeName("irregularWavesMultiDirectional"); + TypeName("irregularMultiDirectional"); //- Constructor - irregularWavesMultiDirec + irregularMultiDirectional ( const dictionary& dict, const fvMesh& mesh, @@ -149,7 +151,7 @@ public: ); //- Destructor - virtual ~irregularWavesMultiDirec(); + virtual ~irregularMultiDirectional(); // Public Member Functions -- GitLab