From 21b3f88a72bbfca106e7de7886e25d410bc1217b Mon Sep 17 00:00:00 2001 From: Andrew Heather Date: Fri, 25 Nov 2016 10:49:53 +0000 Subject: [PATCH] ENH: waveModels - refactored time scaling coefficient --- .../waveAbsorptionModel/waveAbsorptionModel.C | 12 ++++++++++++ .../waveAbsorptionModel/waveAbsorptionModel.H | 9 ++++++++- .../base/regularWaveModel/regularWaveModel.C | 15 ++++++++++++++- .../base/regularWaveModel/regularWaveModel.H | 8 +++++++- .../base/solitaryWaveModel/solitaryWaveModel.C | 14 ++++++++++++++ .../base/solitaryWaveModel/solitaryWaveModel.H | 6 ++++++ .../waveGenerationModel/waveGenerationModel.C | 4 +--- .../OpenCFD/code/waveModel/waveModel/waveModel.C | 3 +-- .../OpenCFD/code/waveModel/waveModel/waveModel.H | 6 +++--- 9 files changed, 66 insertions(+), 11 deletions(-) diff --git a/integration/OpenCFD/code/waveModel/waveAbsorptionModels/base/waveAbsorptionModel/waveAbsorptionModel.C b/integration/OpenCFD/code/waveModel/waveAbsorptionModels/base/waveAbsorptionModel/waveAbsorptionModel.C index b0b21c1d2f..a0f47ef919 100644 --- a/integration/OpenCFD/code/waveModel/waveAbsorptionModels/base/waveAbsorptionModel/waveAbsorptionModel.C +++ b/integration/OpenCFD/code/waveModel/waveAbsorptionModels/base/waveAbsorptionModel/waveAbsorptionModel.C @@ -36,6 +36,18 @@ namespace waveModels } +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +Foam::scalar Foam::waveModels::waveAbsorptionModel::timeCoeff +( + const scalar t +) const +{ + // No time ramping applied applied for absorption + return 1; +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::waveModels::waveAbsorptionModel::waveAbsorptionModel diff --git a/integration/OpenCFD/code/waveModel/waveAbsorptionModels/base/waveAbsorptionModel/waveAbsorptionModel.H b/integration/OpenCFD/code/waveModel/waveAbsorptionModels/base/waveAbsorptionModel/waveAbsorptionModel.H index 9e66d9e87f..0201aaaab7 100644 --- a/integration/OpenCFD/code/waveModel/waveAbsorptionModels/base/waveAbsorptionModel/waveAbsorptionModel.H +++ b/integration/OpenCFD/code/waveModel/waveAbsorptionModels/base/waveAbsorptionModel/waveAbsorptionModel.H @@ -41,13 +41,20 @@ namespace waveModels { /*---------------------------------------------------------------------------*\ - Class waveAbsorptionModel Declaration + Class waveAbsorptionModel Declaration \*---------------------------------------------------------------------------*/ class waveAbsorptionModel : public waveModel { +protected: + + // Protected Member Functions + + //- Return the time scaling coefficient + virtual scalar timeCoeff(const scalar t) const; + public: diff --git a/integration/OpenCFD/code/waveModel/waveGenerationModels/base/regularWaveModel/regularWaveModel.C b/integration/OpenCFD/code/waveModel/waveGenerationModels/base/regularWaveModel/regularWaveModel.C index 44e87c3dc5..efaa83b552 100644 --- a/integration/OpenCFD/code/waveModel/waveGenerationModels/base/regularWaveModel/regularWaveModel.C +++ b/integration/OpenCFD/code/waveModel/waveGenerationModels/base/regularWaveModel/regularWaveModel.C @@ -41,6 +41,15 @@ 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_; @@ -70,6 +79,7 @@ Foam::waveModels::regularWaveModel::regularWaveModel ) : waveGenerationModel(dict, mesh, patch, false), + rampTime_(VSMALL), wavePeriod_(0), waveLength_(0), wavePhase_(1.5*mathematical::pi) @@ -93,6 +103,8 @@ bool Foam::waveModels::regularWaveModel::read(const dictionary& overrideDict) { if (waveGenerationModel::read(overrideDict)) { + lookup("rampTime") >> rampTime_; + lookup("wavePeriod") >> wavePeriod_; if (wavePeriod_ < 0) { @@ -117,7 +129,8 @@ void Foam::waveModels::regularWaveModel::info(Ostream& os) const { waveGenerationModel::info(os); - os << " Wave period : " << wavePeriod_ << nl + os << " Ramp time : " << rampTime_ << nl + << " Wave period : " << wavePeriod_ << nl << " Wave length : " << waveLength_ << nl << " Wave phase : " << wavePhase_ << nl; } diff --git a/integration/OpenCFD/code/waveModel/waveGenerationModels/base/regularWaveModel/regularWaveModel.H b/integration/OpenCFD/code/waveModel/waveGenerationModels/base/regularWaveModel/regularWaveModel.H index 3eed94b0c6..13b6bfda73 100644 --- a/integration/OpenCFD/code/waveModel/waveGenerationModels/base/regularWaveModel/regularWaveModel.H +++ b/integration/OpenCFD/code/waveModel/waveGenerationModels/base/regularWaveModel/regularWaveModel.H @@ -61,6 +61,9 @@ protected: // Protected data + //- Ramp time + scalar rampTime_; + //- Wave period scalar wavePeriod_; @@ -73,8 +76,11 @@ protected: // Protected Member Functions + //- Return the time scaling coefficient + virtual scalar timeCoeff(const scalar t) const; + //- Return word description of wave type - word waveType() const; + virtual word waveType() const; public: diff --git a/integration/OpenCFD/code/waveModel/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.C b/integration/OpenCFD/code/waveModel/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.C index 5c0f1e3e96..332d7e0304 100644 --- a/integration/OpenCFD/code/waveModel/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.C +++ b/integration/OpenCFD/code/waveModel/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.C @@ -27,6 +27,8 @@ License #include "polyPatch.H" #include "SubField.H" +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + namespace Foam { namespace waveModels @@ -36,6 +38,18 @@ namespace waveModels } +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +Foam::scalar Foam::waveModels::solitaryWaveModel::timeCoeff +( + const scalar t +) const +{ + // Ramping not applicable to solitary waves + return 1; +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::waveModels::solitaryWaveModel::solitaryWaveModel diff --git a/integration/OpenCFD/code/waveModel/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.H b/integration/OpenCFD/code/waveModel/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.H index e880e2fc33..f01dff404c 100644 --- a/integration/OpenCFD/code/waveModel/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.H +++ b/integration/OpenCFD/code/waveModel/waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.H @@ -59,6 +59,12 @@ protected: const scalar x0_; + // Protected Member Functions + + //- Return the time scaling coefficient + virtual scalar timeCoeff(const scalar t) const; + + public: //- Runtime type information diff --git a/integration/OpenCFD/code/waveModel/waveGenerationModels/base/waveGenerationModel/waveGenerationModel.C b/integration/OpenCFD/code/waveModel/waveGenerationModels/base/waveGenerationModel/waveGenerationModel.C index 3dba0c3b4c..44cf01006b 100644 --- a/integration/OpenCFD/code/waveModel/waveGenerationModels/base/waveGenerationModel/waveGenerationModel.C +++ b/integration/OpenCFD/code/waveModel/waveGenerationModels/base/waveGenerationModel/waveGenerationModel.C @@ -72,7 +72,6 @@ bool Foam::waveModels::waveGenerationModel::read(const dictionary& overrideDict) { if (waveModel::read(overrideDict)) { - lookup("rampTime") >> rampTime_; lookup("activeAbsorption") >> activeAbsorption_; lookup("waveHeight") >> waveHeight_; @@ -98,8 +97,7 @@ void Foam::waveModels::waveGenerationModel::info(Ostream& os) const { waveModel::info(os); - os << " Ramp time : " << rampTime_ << nl - << " Wave height : " << waveHeight_ << nl + os << " Wave height : " << waveHeight_ << nl << " Wave angle : " << 180/mathematical::pi*waveAngle_ << nl; } diff --git a/integration/OpenCFD/code/waveModel/waveModel/waveModel.C b/integration/OpenCFD/code/waveModel/waveModel/waveModel.C index 2ad9700931..3fee2d90a6 100644 --- a/integration/OpenCFD/code/waveModel/waveModel/waveModel.C +++ b/integration/OpenCFD/code/waveModel/waveModel/waveModel.C @@ -269,7 +269,6 @@ Foam::waveModel::waveModel zMax_(), waterDepthRef_(0), initialDepth_(0), - rampTime_(VSMALL), currTimeIndex_(-1), activeAbsorption_(false), U_(patch.size(), vector::zero), @@ -350,7 +349,7 @@ void Foam::waveModel::correct(const scalar t) << patch_.name() << endl; // Time ramp weight - const scalar tCoeff = max(0, min(t/rampTime_, 1)); + const scalar tCoeff = timeCoeff(t); // Reset the velocity and phase fraction fields U_ = vector::zero; diff --git a/integration/OpenCFD/code/waveModel/waveModel/waveModel.H b/integration/OpenCFD/code/waveModel/waveModel/waveModel.H index a7330ce703..399cf40676 100644 --- a/integration/OpenCFD/code/waveModel/waveModel/waveModel.H +++ b/integration/OpenCFD/code/waveModel/waveModel/waveModel.H @@ -111,9 +111,6 @@ protected: //- Initial depth / [m] scalar initialDepth_; - //- Ramp time - scalar rampTime_; - //- Time index used for updating label currTimeIndex_; @@ -138,6 +135,9 @@ protected: //- Water level virtual tmp waterLevel() const; + //- Return the time scaling coefficient + virtual scalar timeCoeff(const scalar t) const = 0; + //- Set the water level virtual void setLevel (