From 0f230ba35b973419788bbe5154bf79457fd8dedd Mon Sep 17 00:00:00 2001 From: Gabriel Barajas <gabriel.barajas@unican.es> Date: Fri, 2 Jun 2017 09:47:31 +0100 Subject: [PATCH] ENH: Added new Grimshaw and McCowan wave models - initial commit for integration --- src/waveModels/Make/files | 2 + .../derived/Grimshaw/GrimshawWaveModel.C | 282 ++++++++++++ .../derived/Grimshaw/GrimshawWaveModel.H | 154 +++++++ .../derived/McCowan/McCowanWaveModel.C | 408 ++++++++++++++++++ .../derived/McCowan/McCowanWaveModel.H | 170 ++++++++ .../waveExampleSolitaryGrimshaw/0.orig/U | 53 +++ .../0.orig/alpha.water | 52 +++ .../waveExampleSolitaryGrimshaw/0.orig/p_rgh | 60 +++ .../waveExampleSolitaryGrimshaw/Allclean | 10 + .../waveExampleSolitaryGrimshaw/Allrun | 15 + .../waveExampleSolitaryGrimshaw/constant/g | 22 + .../constant/transportProperties | 37 ++ .../constant/turbulenceProperties | 20 + .../constant/waveProperties | 43 ++ .../system/blockMeshDict | 89 ++++ .../system/controlDict | 143 ++++++ .../system/decomposeParDict | 29 ++ .../system/fvSchemes | 54 +++ .../system/fvSolution | 78 ++++ .../system/setFieldsDict | 37 ++ .../waveExampleSolitaryMcCowan/0.orig/U | 53 +++ .../0.orig/alpha.water | 52 +++ .../waveExampleSolitaryMcCowan/0.orig/p_rgh | 60 +++ .../waveExampleSolitaryMcCowan/Allclean | 10 + .../laminar/waveExampleSolitaryMcCowan/Allrun | 15 + .../waveExampleSolitaryMcCowan/constant/g | 22 + .../constant/transportProperties | 37 ++ .../constant/turbulenceProperties | 20 + .../constant/waveProperties | 43 ++ .../system/blockMeshDict | 89 ++++ .../system/controlDict | 143 ++++++ .../system/decomposeParDict | 29 ++ .../system/fvSchemes | 54 +++ .../system/fvSolution | 78 ++++ .../system/setFieldsDict | 37 ++ 35 files changed, 2500 insertions(+) create mode 100644 src/waveModels/waveGenerationModels/derived/Grimshaw/GrimshawWaveModel.C create mode 100644 src/waveModels/waveGenerationModels/derived/Grimshaw/GrimshawWaveModel.H create mode 100644 src/waveModels/waveGenerationModels/derived/McCowan/McCowanWaveModel.C create mode 100644 src/waveModels/waveGenerationModels/derived/McCowan/McCowanWaveModel.H create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/0.orig/U create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/0.orig/alpha.water create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/0.orig/p_rgh create mode 100755 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/Allclean create mode 100755 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/Allrun create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/g create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/transportProperties create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/turbulenceProperties create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/waveProperties create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/blockMeshDict create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/controlDict create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/decomposeParDict create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/fvSchemes create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/fvSolution create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/setFieldsDict create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/0.orig/U create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/0.orig/alpha.water create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/0.orig/p_rgh create mode 100755 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/Allclean create mode 100755 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/Allrun create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/g create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/transportProperties create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/turbulenceProperties create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/waveProperties create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/blockMeshDict create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/controlDict create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/decomposeParDict create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/fvSchemes create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/fvSolution create mode 100644 tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/setFieldsDict diff --git a/src/waveModels/Make/files b/src/waveModels/Make/files index 67333fa8212..44b6ad45c1a 100644 --- a/src/waveModels/Make/files +++ b/src/waveModels/Make/files @@ -6,6 +6,8 @@ waveGenerationModels/base/regularWaveModel/regularWaveModel.C waveGenerationModels/base/solitaryWaveModel/solitaryWaveModel.C waveGenerationModels/derived/Boussinesq/BoussinesqWaveModel.C waveGenerationModels/derived/cnoidal/cnoidalWaveModel.C +waveGenerationModels/derived/Grimshaw/GrimshawWaveModel.C +waveGenerationModels/derived/McCowan/McCowanWaveModel.C waveGenerationModels/derived/StokesII/StokesIIWaveModel.C waveGenerationModels/derived/StokesI/StokesIWaveModel.C waveGenerationModels/derived/StokesV/StokesVWaveModel.C diff --git a/src/waveModels/waveGenerationModels/derived/Grimshaw/GrimshawWaveModel.C b/src/waveModels/waveGenerationModels/derived/Grimshaw/GrimshawWaveModel.C new file mode 100644 index 00000000000..caaf612c16a --- /dev/null +++ b/src/waveModels/waveGenerationModels/derived/Grimshaw/GrimshawWaveModel.C @@ -0,0 +1,282 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2015 IH-Cantabria +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "GrimshawWaveModel.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace waveModels +{ + defineTypeNameAndDebug(Grimshaw, 0); + addToRunTimeSelectionTable + ( + waveModel, + Grimshaw, + patch + ); +} +} + + +// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // + +Foam::scalar Foam::waveModels::Grimshaw::alfa +( + const scalar H, + const scalar h +) const +{ + scalar eps = H/h; + scalar alfa = sqrt(0.75*eps)*(1.0 - (5.0/8.0)*eps + (71.0/128.0)*eps*eps); + + return alfa; +} + +//- Wave height +Foam::scalar Foam::waveModels::Grimshaw::eta +( + const scalar H, + const scalar h, + const scalar x, + const scalar y, + const scalar theta, + const scalar t, + const scalar X0 +) const +{ + scalar eps = H/h; + scalar C = sqrt(mag(g_)*h)*sqrt(1.0+eps-(1.0/20.0)*eps*eps-(3.0/70.0)*eps*eps*eps); + + scalar ts = 3.5*h/sqrt(H/h); + scalar xa = -C*t + ts - X0 + x*cos(theta) + y*sin(theta); + + scalar alfa = this->alfa(H, h); + + scalar s = (1.0)/(cosh(alfa*(xa/h))); + scalar q = tanh(alfa*(xa/h)); + + return h*(eps*s*s - 0.75*eps*eps*s*s*q*q + eps*eps*eps*((5.0/8.0)*s*s*q*q - (101.0/80.0)*s*s*s*s*q*q)); +} + +//- Wave velocity +Foam::vector Foam::waveModels::Grimshaw::U +( + const scalar H, + const scalar h, + const scalar x, + const scalar y, + const scalar theta, + const scalar t, + const scalar X0, + const scalar z +) const +{ + scalar eps = H/h; + scalar C = sqrt(mag(g_)*h)*sqrt(1.0+eps-(1.0/20.0)*eps*eps-(3.0/70.0)*eps*eps*eps); + scalar ts = 3.5*h/sqrt(H/h); + scalar xa = -C*t + ts - X0 + x*cos(theta) + y*sin(theta); + scalar alfa = this->alfa(H, h); + + scalar s = (1.0)/(cosh(alfa*(xa/h))); + + scalar outa = eps*s*s - eps*eps*(-(1.0/4.0)*s*s + s*s*s*s + ((z/h)*(z/h))*((3.0/2.0)*s*s - (9.0/4.0)*s*s*s*s)); + scalar outb = (19.0/40.0)*s*s + (1.0/5.0)*s*s*s*s - (6.0/5.0)*s*s*s*s*s*s; + scalar outc = ((z/h)*(z/h)) * ( -(3.0/2.0)*s*s - (15.0/4.0)*s*s*s*s + (15.0/2.0)*s*s*s*s*s*s); + scalar outd = ((z/h)*(z/h)*(z/h)*(z/h)) * ((-3.0/8.0)*s*s + (45.0/16.0)*s*s*s*s - (45.0/16.0)*s*s*s*s*s*s); + + scalar u = sqrt(mag(g_)*h)*(outa - eps*eps*eps*(outb+outc+outd)); + + outa = eps*s*s - eps*eps*((3.0/8.0)*s*s + 2.0*s*s*s*s + ((z/h)*(z/h))*(0.5*s*s - (3.0/2.0)*s*s*s*s)); + outb = (49.0/640.0)*s*s - (17.0/20.0)*s*s*s*s - (18.0/5.0)*s*s*s*s*s*s; + outc = ((z/h)*(z/h)) * ((-13.0/16.0)*s*s -(25.0/16.0)*s*s*s*s + (15.0/2.0)*s*s*s*s*s*s); + outd = ((z/h)*(z/h)*(z/h)*(z/h)) * ((-3.0/40.0)*s*s -(9.0/8.0)*s*s*s*s - (27.0/16.0)*s*s*s*s*s*s); + + scalar w = sqrt(mag(g_)*h)*(outa - eps*eps*eps*(outb+outc+outd)); + + scalar v = u*sin(waveAngle_); + u *= cos(waveAngle_); + + return vector(u, v, w); +} + +void Foam::waveModels::Grimshaw::setLevel +( + const scalar t, + const scalar tCoeff, + scalarField& level +) const +{ + forAll(level, paddlei) + { + const scalar eta = + this->eta + ( + waveHeight_, + waterDepthRef_, + xPaddle_[paddlei], + yPaddle_[paddlei], + waveAngle_, + t, + x0_ + ); + + level[paddlei] = waterDepthRef_ + tCoeff*eta; + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::waveModels::Grimshaw::Grimshaw +( + const dictionary& dict, + const fvMesh& mesh, + const polyPatch& patch, + const bool readFields +) +: + solitaryWaveModel(dict, mesh, patch, false) +{ + if (readFields) + { + read(dict); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::waveModels::Grimshaw::~Grimshaw() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +bool Foam::waveModels::Grimshaw::read(const dictionary& overrideDict) +{ + if (solitaryWaveModel::read(overrideDict)) + { + return true; + } + + return false; +} + +void Foam::waveModels::Grimshaw::setVelocity +( + const scalar t, + const scalar tCoeff, + const scalarField& level, + const scalar tg +) +{ + forAll(U_, facei) + { + // Fraction of geometry represented by paddle - to be set + scalar fraction = 1; + + // Height - to be set + scalar z = 0; + + setPaddlePropeties(level, facei, fraction, z); + + if (fraction > 0) + { + + if ( (tg<0) || (t >= tg) ) + { + const label paddlei = faceToPaddle_[facei]; + + const vector Uf = U + ( + waveHeight_, + waterDepthRef_, + xPaddle_[paddlei], + yPaddle_[paddlei], + waveAngle_, + t, + x0_, + z + ); + + U_[facei] = fraction*Uf*tCoeff + fraction*UCurrent_; + + } + else if ( tg>=t ) + { + U_[facei] = fraction*UCurrent_; + } + } + } +} + +void Foam::waveModels::Grimshaw::setVelocityAbsorption +( + const scalarField& calculatedLevel, + const scalarField& activeLevel +) +{ + + forAll(U_, facei) + { + const label paddlei = faceToPaddle_[facei]; + + scalar activeLevelMBL=activeLevel[paddlei]; + + scalar zMin = zMin_[facei]; + +//------ not needed anymore in new release + if (fabs(zMinGb_)>1.0e-3) + { + zMin = zMin - zMinGb_; + } +//------ + + if (zMin < activeLevelMBL) + + { + scalar UCorr = + (calculatedLevel[paddlei] - activeLevel[paddlei]) + *sqrt(mag(g_)/activeLevel[paddlei]); + + U_[facei].x() += UCorr; + } + else + { + U_[facei].x() = 0; + } + } +} + +void Foam::waveModels::Grimshaw::info(Ostream& os) const +{ + solitaryWaveModel::info(os); +} + + +// ************************************************************************* // diff --git a/src/waveModels/waveGenerationModels/derived/Grimshaw/GrimshawWaveModel.H b/src/waveModels/waveGenerationModels/derived/Grimshaw/GrimshawWaveModel.H new file mode 100644 index 00000000000..cca90683d09 --- /dev/null +++ b/src/waveModels/waveGenerationModels/derived/Grimshaw/GrimshawWaveModel.H @@ -0,0 +1,154 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2015 IH-Cantabria +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::waveModels::Grimshaw + +Description + Grimshaw wave model + +\*---------------------------------------------------------------------------*/ + +#ifndef waveModels_Grimshaw_H +#define waveModels_Grimshaw_H + +#include "solitaryWaveModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace waveModels +{ + +/*---------------------------------------------------------------------------*\ + Class Grimshaw Declaration +\*---------------------------------------------------------------------------*/ + +class Grimshaw +: + public solitaryWaveModel +{ +protected: + + // Protected Member Functions + + //- Wave height + virtual scalar eta + ( + const scalar H, + const scalar h, + const scalar x, + const scalar y, + const scalar theta, + const scalar t, + const scalar X0 + ) const; + + //- + virtual scalar alfa + ( + const scalar H, + const scalar h + ) const; + + //- Wave velocity + virtual vector U + ( + const scalar H, + const scalar h, + const scalar x, + const scalar y, + const scalar theta, + const scalar t, + const scalar X0, + const scalar z + ) const; + + //- Set the water level + virtual void setLevel + ( + const scalar t, + const scalar tCoeff, + scalarField& level + ) const; + + //- Calculate the wave model velocity + virtual void setVelocity + ( + const scalar t, + const scalar tCoeff, + const scalarField& level, + const scalar tg + ); + + // Add current absorption to velocity + virtual void setCurrent + ( + const scalarField& levelMBO + ); + + //- Calculate the wave model velocity absorption + virtual void setVelocityAbsorption + ( + const scalarField& calculatedLevel, + const scalarField& activeLevel + ); + +public: + + //- Runtime type information + TypeName("Grimshaw"); + + //- Constructor + Grimshaw + ( + const dictionary& dict, + const fvMesh& mesh, + const polyPatch& patch, + const bool readFields = true + ); + + //- Destructor + virtual ~Grimshaw(); + + + // Public Member Functions + + //- Read from dictionary + virtual bool read(const dictionary& overrideDict); + + //- Info + virtual void info(Ostream& os) const; +}; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace waveModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/waveModels/waveGenerationModels/derived/McCowan/McCowanWaveModel.C b/src/waveModels/waveGenerationModels/derived/McCowan/McCowanWaveModel.C new file mode 100644 index 00000000000..b818d11e44b --- /dev/null +++ b/src/waveModels/waveGenerationModels/derived/McCowan/McCowanWaveModel.C @@ -0,0 +1,408 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2015 IH-Cantabria +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "McCowanWaveModel.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace waveModels +{ + defineTypeNameAndDebug(McCowan, 0); + addToRunTimeSelectionTable + ( + waveModel, + McCowan, + patch + ); +} +} + + +// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // + +Foam::scalar Foam::waveModels::McCowan::eta +( + const scalar H, + const scalar h, + const scalar x, + const scalar y, + const scalar theta, + const scalar t, + const scalar X0 +) const +{ + vector vec = this->mn(H,h); + scalar mm = vec[0]; + scalar nn = vec[1]; + + scalar C = sqrt(((mag(g_)*h)/mm)*tan(mm)); + scalar ts = 3.5*h/sqrt(H/h); + scalar Xa = -C*t + ts - X0 + x*cos(theta) + y*sin(theta); + + scalar xin = 0.5*H; + scalar etas = newtonRapsonF2(xin,H,h,Xa,mm,nn); + return etas; +} + +Foam::vector Foam::waveModels::McCowan::mn +( + const scalar H, + const scalar h +) const +{ + //m + scalar xin = 1.0; + scalar m = newtonRapsonF1(xin,H,h); + + //n + scalar c1=sin(m+(1.0+((2.0*H)/(3.0*h)))); + scalar n = (2.0/3.0)*pow(c1,2); + + scalar aux=n; + + return vector(m, n, aux); +} + +Foam::scalar Foam::waveModels::McCowan::newtonRapsonF1 +( + const scalar x0, + const scalar H, + const scalar h +) const +{ + scalar N=10000; + scalar eps=1.e-5; + scalar maxval = 10000.0; + + scalar xn=0; + scalar x=0; + scalar c1=0; + scalar c2=0; + scalar c3=0; + scalar fx=0; + scalar fprime=0; + scalar fxn=0; + scalar fxx=0; + + //define value for divergence + scalar xx=x0; + while (N>0) + { + //f + c1=sin(xx+(1.0+((2.0*H)/(3.0*h)))); + fx = (2.0/3.0)*pow(c1,2) - (xx*H)/(h*tan(0.5*xx*(1.0+(H/h)))); + + //fprime + c2=1/tan(0.5*xx*(h/H + 1.0)); + c3=1/sin(0.5*xx*(H/h + 1.0)); + fprime=(4.0/3.0)*sin((2.0*H)/(3.0*h) + xx + 1.0)*cos((2.0*H)/(3.0*h) + xx + 1.0)-(h*c2)/H - (0.5*h*xx*(H/h + 1.0)*pow(c3,2))/h; + xn = xx-fx/fprime; + + c1=sin(xn+(1.0+((2.0*H)/(3.0*h)))); + fxn = (2.0/3.0)*pow(c1,2) - (xn*H)/(h*tan(0.5*xn*(1.0+(H/h)))); + if (fabs(fxn)<eps) + { + x=xn; + return x; + } + + c1=sin(xx+(1.0+((2.0*H)/(3.0*h)))); + fxx = (2.0/3.0)*pow(c1,2) - (xx*H)/(h*tan(0.5*xx*(1.0+(H/h)))); + if (fabs(fxx)>maxval) + { + FatalIOErrorInFunction(*this) + << "fxx > maxval !!!" + << exit(FatalIOError); + } + + N = N - 1; + xx = xn; + } + + return x; +} + +Foam::scalar Foam::waveModels::McCowan::newtonRapsonF2 +( + const scalar x0, + const scalar H, + const scalar h, + const scalar xa, + const scalar m, + const scalar n +) const +{ + scalar N=10000; + scalar eps=1.e-5; + scalar maxval = 10000.0; + + scalar xn=0; + scalar x=0; + scalar c2=0; + scalar c3=0; + scalar fx=0; + scalar fprime=0; + scalar fxn=0; + scalar fxx=0; + + //define value for divergence + scalar xx=x0; + while (N>0) + { + //f + fx = xx-(h*(n/m)*((sin(m*(1.0+(xx/h))))/(cos(m*(1.0+(xx/h)))+cosh(m*(xa/h))))); + + //fprime + c2=sin((m*(h + x))/h); + c3=cosh((xa*m)/h) + cos((m*(h + x))/h); + fprime = 1 - (n*cos((m*(h + x))/h))/(cosh((xa*m)/h) + cos((m*(h + x))/h)) - (n*pow(c2,2))/(pow(c3,2)); + + xn = xx-fx/fprime; + + fxn = xn-(h*(n/m)*((sin(m*(1.0+(xn/h))))/(cos(m*(1.0+(xn/h)))+cosh(m*(xa/h))))); + if (fabs(fxn)<eps) + { + x=xn; + return x; + } + + fxx = xx-(h*(n/m)*((sin(m*(1.0+(xx/h))))/(cos(m*(1.0+(xx/h)))+cosh(m*(xa/h))))); + if (fabs(fxx)>maxval) + { + FatalIOErrorInFunction(*this) + << "fxx > maxval !!!" + << exit(FatalIOError); + } + + N = N - 1; + xx = xn; + } + + return x; +} + +Foam::vector Foam::waveModels::McCowan::U +( + const scalar H, + const scalar h, + const scalar x, + const scalar y, + const scalar theta, + const scalar t, + const scalar X0, + const scalar z +) const +{ + vector vec = this->mn(H,h); + scalar mm = vec[0]; + scalar nn = vec[1]; + + scalar C = sqrt(((mag(g_)*h)/mm)*tan(mm)); + scalar ts = 3.5*h/sqrt(H/h); + scalar Xa = -C*t + ts - X0 + x*cos(theta) + y*sin(theta); + + scalar outa = C*nn*(1.0+cos(mm*(z/h))*cosh(mm*(Xa/h))); + scalar outb = (cos(mm*(z/h))+cosh(mm*(Xa/h))) * (cos(mm*(z/h))+cosh(mm*(Xa/h))); + + scalar u = outa/outb; + + outa = C*nn*(sin(mm*(z/h))*sinh(mm*(Xa/h))); + outb = (cos(mm*(z/h))+cosh(mm*(Xa/h))) * (cos(mm*(z/h))+cosh(mm*(Xa/h))); + + scalar w = outa/outb; + + scalar v = u*sin(waveAngle_); + u *= cos(waveAngle_); + + return vector(u, v, w); +} + + +void Foam::waveModels::McCowan::setLevel +( + const scalar t, + const scalar tCoeff, + scalarField& level +) const +{ + forAll(level, paddlei) + { + const scalar eta = + this->eta + ( + waveHeight_, + waterDepthRef_, + xPaddle_[paddlei], + yPaddle_[paddlei], + waveAngle_, + t, + x0_ + ); + + level[paddlei] = waterDepthRef_ + tCoeff*eta; + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::waveModels::McCowan::McCowan +( + const dictionary& dict, + const fvMesh& mesh, + const polyPatch& patch, + const bool readFields +) +: + solitaryWaveModel(dict, mesh, patch, false) +{ + if (readFields) + { + read(dict); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::waveModels::McCowan::~McCowan() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +bool Foam::waveModels::McCowan::read(const dictionary& overrideDict) +{ + if (solitaryWaveModel::read(overrideDict)) + { + return true; + } + + return false; +} + +void Foam::waveModels::McCowan::setVelocity +( + const scalar t, + const scalar tCoeff, + const scalarField& level, + const scalar tg +) +{ + forAll(U_, facei) + { + // Fraction of geometry represented by paddle - to be set + scalar fraction = 1; + + // Height - to be set + scalar z = 0; + + setPaddlePropeties(level, facei, fraction, z); + + if (fraction > 0) + { + + if ( (tg<0) || (t >= tg) ) + { + const label paddlei = faceToPaddle_[facei]; + + const vector Uf = U + ( + waveHeight_, + waterDepthRef_, + xPaddle_[paddlei], + yPaddle_[paddlei], + waveAngle_, + t, + x0_, + z + ); + + U_[facei] = fraction*Uf*tCoeff + fraction*UCurrent_; + + } + else if ( tg>=t ) + { + U_[facei] = fraction*UCurrent_; + } + } + } +} + +void Foam::waveModels::McCowan::setVelocityAbsorption +( + const scalarField& calculatedLevel, + const scalarField& activeLevel +) +{ + + forAll(U_, facei) + { + const label paddlei = faceToPaddle_[facei]; + + scalar activeLevelMBL=activeLevel[paddlei]; + + scalar zMin = zMin_[facei]; + +//------ not needed anymore in new release + if (fabs(zMinGb_)>1.0e-3) + { + zMin = zMin - zMinGb_; + } +//------ + + if (zMin < activeLevelMBL) + { + scalar UCorr = + (calculatedLevel[paddlei] - activeLevel[paddlei]) + *sqrt(mag(g_)/activeLevel[paddlei]); + + U_[facei].x() += UCorr; + } + else + { + U_[facei].x() = 0; + } + } +} + +void Foam::waveModels::McCowan::setCurrent +( + const scalarField& levelMBO +) +{ + //No needed for generation +} + +void Foam::waveModels::McCowan::info(Ostream& os) const +{ + solitaryWaveModel::info(os); +} + + +// ************************************************************************* // diff --git a/src/waveModels/waveGenerationModels/derived/McCowan/McCowanWaveModel.H b/src/waveModels/waveGenerationModels/derived/McCowan/McCowanWaveModel.H new file mode 100644 index 00000000000..880684b0438 --- /dev/null +++ b/src/waveModels/waveGenerationModels/derived/McCowan/McCowanWaveModel.H @@ -0,0 +1,170 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2016 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2015 IH-Cantabria +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::waveModels::McCowan + +Description + McCowan wave model + +\*---------------------------------------------------------------------------*/ + +#ifndef waveModels_McCowan_H +#define waveModels_McCowan_H + +#include "solitaryWaveModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace waveModels +{ + +/*---------------------------------------------------------------------------*\ + Class McCowan Declaration +\*---------------------------------------------------------------------------*/ + +class McCowan +: + public solitaryWaveModel +{ +protected: + + // Protected Member Functions + + //- Wave height + virtual scalar eta + ( + const scalar H, + const scalar h, + const scalar x, + const scalar y, + const scalar theta, + const scalar t, + const scalar X0 + ) const; + + virtual vector mn + ( + const scalar H, + const scalar h + ) const; + + virtual scalar newtonRapsonF1 + ( + const scalar x0, + const scalar H, + const scalar h + ) const; + + virtual scalar newtonRapsonF2 + ( + const scalar x0, + const scalar H, + const scalar h, + const scalar xa, + const scalar m, + const scalar n + ) const; + + //- Wave velocity + virtual vector U + ( + const scalar H, + const scalar h, + const scalar x, + const scalar y, + const scalar theta, + const scalar t, + const scalar X0, + const scalar z + ) const; + + //- Set the water level + virtual void setLevel + ( + const scalar t, + const scalar tCoeff, + scalarField& level + ) const; + + //- Calculate the wave model velocity + virtual void setVelocity + ( + const scalar t, + const scalar tCoeff, + const scalarField& level, + const scalar tg + ); + + // Add current absorption to velocity + virtual void setCurrent + ( + const scalarField& levelMBO + ); + + //- Calculate the wave model velocity absorption + virtual void setVelocityAbsorption + ( + const scalarField& calculatedLevel, + const scalarField& activeLevel + ); + +public: + + //- Runtime type information + TypeName("McCowan"); + + //- Constructor + McCowan + ( + const dictionary& dict, + const fvMesh& mesh, + const polyPatch& patch, + const bool readFields = true + ); + + //- Destructor + virtual ~McCowan(); + + + // Public Member Functions + + //- Read from dictionary + virtual bool read(const dictionary& overrideDict); + + //- Info + virtual void info(Ostream& os) const; +}; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace waveModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/0.orig/U b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/0.orig/U new file mode 100644 index 00000000000..e0c42a3ef50 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/0.orig/U @@ -0,0 +1,53 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.7.x | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + left + { + type waveVelocity; + value uniform (0 0 0); + } + + right + { + type waveVelocity; + value uniform (0 0 0); + } + + sides + { + type slip; + } + + ground + { + type noSlip; + } + + top + { + type pressureInletOutletVelocity; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/0.orig/alpha.water b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/0.orig/alpha.water new file mode 100644 index 00000000000..3562fc0b2f8 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/0.orig/alpha.water @@ -0,0 +1,52 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.5-dev | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object alpha.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + left + { + type waveAlpha; + value uniform 0; + } + + right + { + type zeroGradient; + } + + ground + { + type zeroGradient; + } + + sides + { + type zeroGradient; + } + + top + { + type inletOutlet; + inletValue uniform 0; + value uniform 0; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/0.orig/p_rgh b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/0.orig/p_rgh new file mode 100644 index 00000000000..a19dce973ee --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/0.orig/p_rgh @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.5-dev | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + left + { + type fixedFluxPressure; + value uniform 0; + } + + right + { + type fixedFluxPressure; + value uniform 0; + } + + ground + { + type fixedFluxPressure; + value uniform 0; + } + + sides + { + type slip; + } + + top + { + type totalPressure; + U U; + phi rhoPhi; + rho rho; + psi none; + gamma 1; + p0 uniform 0; + value uniform 0; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/Allclean b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/Allclean new file mode 100755 index 00000000000..705f91474c4 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/Allclean @@ -0,0 +1,10 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +rm -rf 0 + +cleanCase + diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/Allrun b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/Allrun new file mode 100755 index 00000000000..9f0c668029a --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/Allrun @@ -0,0 +1,15 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +restore0Dir + +runApplication blockMesh + +runApplication decomposePar + +runParallel setFields + +runParallel $(getApplication) diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/g b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/g new file mode 100644 index 00000000000..317bdd50def --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value ( 0 0 -9.81 ); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/transportProperties b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/transportProperties new file mode 100644 index 00000000000..3633e43efb9 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/transportProperties @@ -0,0 +1,37 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.3 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +phases (water air); + +water +{ + transportModel Newtonian; + nu [0 2 -1 0 0 0 0] 1e-06; + rho [1 -3 0 0 0 0 0] 1000; +} + +air +{ + transportModel Newtonian; + nu [0 2 -1 0 0 0 0] 1.48e-05; + rho [1 -3 0 0 0 0 0] 1; +} + +sigma [1 0 -2 0 0 0 0] 0.07; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/turbulenceProperties b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/turbulenceProperties new file mode 100644 index 00000000000..22f11ecab7a --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/turbulenceProperties @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/waveProperties b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/waveProperties new file mode 100644 index 00000000000..7247a17696e --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/constant/waveProperties @@ -0,0 +1,43 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: http://www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object wavesProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +left +{ + alpha alpha.water; + + waveModel Grimshaw; + + nPaddle 1; + + waveHeight 0.05; + + waveAngle 0.0; + + activeAbsorption no; +} + +right +{ + alpha alpha.water; + + waveModel shallowWaterAbsorption; + + nPaddle 1; +} + +// ************************************************************************* // + diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/blockMeshDict b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/blockMeshDict new file mode 100644 index 00000000000..f7d292e0231 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/blockMeshDict @@ -0,0 +1,89 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + ( 0.0 0.0 0.0) + ( 7.0 0.0 0.0) + ( 7.0 0.55 0.0) + ( 0.0 0.55 0.0) + ( 0.0 0.0 0.5) + ( 7.0 0.0 0.5) + ( 7.0 0.55 0.5) + ( 0.0 0.55 0.5) + +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (350 28 42) simpleGrading (1 1 1) +); +edges +( +); + +boundary +( + left + { + type patch; + faces + ( + (0 4 7 3) + ); + } + right + { + type patch; + faces + ( + (1 5 6 2) + ); + } + ground + { + type wall; + faces + ( + (0 1 2 3) + ); + } + top + { + type patch; + faces + ( + (4 5 6 7) + ); + } + sides + { + type patch; + faces + ( + (0 1 5 4) + (3 2 6 7) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/controlDict b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/controlDict new file mode 100644 index 00000000000..5e5bd614380 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/controlDict @@ -0,0 +1,143 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application interFoam; + +startFrom latestTime; + +startTime 0; + +stopAt endTime; + +endTime 7.0; + +deltaT 0.1; + +writeControl adjustableRunTime; + +writeInterval 0.1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep on; + +maxCo 0.4; +maxAlphaCo 0.4; + +maxDeltaT 0.01; + +functions +{ + //Sensores VOF + line + { + type sets; + functionObjectLibs ("libsampling.so"); + enabled true; + outputControl writeTime; + outputInterval 1; + + interpolationScheme cellPoint; + setFormat raw; + sets + ( + s1 + { + + type uniform; + axis distance; + start ( 0.865 0.275 0.0 ); + end ( 0.865 0.275 0.5 ); + nPoints 101; + } + s2 + { + + type uniform; + axis distance; + start ( 1.065 0.275 0.0 ); + end ( 1.065 0.275 0.5 ); + nPoints 101; + } + s3 + { + + type uniform; + axis distance; + start ( 4.1 0.275 0.0 ); + end ( 4.1 0.275 0.5 ); + nPoints 101; + } + s4 + { + + type uniform; + axis distance; + start ( 4.645 0.275 0.0 ); + end ( 4.645 0.275 0.5 ); + nPoints 101; + } + s5 + { + + type uniform; + axis distance; + start ( 5.2 0.275 0.0 ); + end ( 5.2 0.275 0.5 ); + nPoints 101; + } + s6 + { + + type uniform; + axis distance; + start ( 5.85 0.275 0.0 ); + end ( 5.85 0.275 0.5 ); + nPoints 101; + } + s7 + { + + type uniform; + axis distance; + start ( 6.15 0.275 0.0 ); + end ( 6.15 0.275 0.5 ); + nPoints 101; + } + ); + fixedLocations false; + fields + ( + alpha.water + ); + } + +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/decomposeParDict b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/decomposeParDict new file mode 100644 index 00000000000..a4e660116ce --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/decomposeParDict @@ -0,0 +1,29 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object decomposeParDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 2; + +method hierarchical; + +hierarchicalCoeffs +{ + n (2 1 1); + delta 0.001; + order xyz; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/fvSchemes b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/fvSchemes new file mode 100644 index 00000000000..eeff89271fb --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/fvSchemes @@ -0,0 +1,54 @@ + +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + div(rhoPhi,U) Gauss linearUpwind grad(U); + div(phi,alpha) Gauss vanLeer; + div(phirb,alpha) Gauss linear; + div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear orthogonal; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default orthogonal; +} + + +// ************************************************************************* // + diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/fvSolution new file mode 100644 index 00000000000..859308b6fab --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/fvSolution @@ -0,0 +1,78 @@ + +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "alpha.water.*" + { + nAlphaCorr 1; + nAlphaSubCycles 3; + cAlpha 1; + } + + pcorr + { + solver PCG; + preconditioner DIC; + tolerance 1e-6; + relTol 0; + } + + p_rgh + { + solver PCG; + preconditioner DIC; + tolerance 1e-6; + relTol 0.1; + } + + p_rghFinal + { + solver GAMG; + smoother DIC; + tolerance 1e-7; + relTol 0; + } + + U + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-6; + relTol 0.1; + } + + UFinal + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-6; + relTol 0; + } +} + +PIMPLE +{ + momentumPredictor no; + nCorrectors 2; + nNonOrthogonalCorrectors 0; +} + + +// ************************************************************************* // + diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/setFieldsDict b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/setFieldsDict new file mode 100644 index 00000000000..5873ea0e3d1 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/setFieldsDict @@ -0,0 +1,37 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.water 0 + volVectorFieldValue U (0 0 0) +); + +regions +( + boxToCell + { + box (-10 -10 -10) (100 100 0.15); + fieldValues + ( + volScalarFieldValue alpha.water 1 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/0.orig/U b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/0.orig/U new file mode 100644 index 00000000000..e0c42a3ef50 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/0.orig/U @@ -0,0 +1,53 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.7.x | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + left + { + type waveVelocity; + value uniform (0 0 0); + } + + right + { + type waveVelocity; + value uniform (0 0 0); + } + + sides + { + type slip; + } + + ground + { + type noSlip; + } + + top + { + type pressureInletOutletVelocity; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/0.orig/alpha.water b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/0.orig/alpha.water new file mode 100644 index 00000000000..3562fc0b2f8 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/0.orig/alpha.water @@ -0,0 +1,52 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.5-dev | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object alpha.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + left + { + type waveAlpha; + value uniform 0; + } + + right + { + type zeroGradient; + } + + ground + { + type zeroGradient; + } + + sides + { + type zeroGradient; + } + + top + { + type inletOutlet; + inletValue uniform 0; + value uniform 0; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/0.orig/p_rgh b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/0.orig/p_rgh new file mode 100644 index 00000000000..a19dce973ee --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/0.orig/p_rgh @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.5-dev | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + left + { + type fixedFluxPressure; + value uniform 0; + } + + right + { + type fixedFluxPressure; + value uniform 0; + } + + ground + { + type fixedFluxPressure; + value uniform 0; + } + + sides + { + type slip; + } + + top + { + type totalPressure; + U U; + phi rhoPhi; + rho rho; + psi none; + gamma 1; + p0 uniform 0; + value uniform 0; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/Allclean b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/Allclean new file mode 100755 index 00000000000..705f91474c4 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/Allclean @@ -0,0 +1,10 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +rm -rf 0 + +cleanCase + diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/Allrun b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/Allrun new file mode 100755 index 00000000000..9f0c668029a --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/Allrun @@ -0,0 +1,15 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +restore0Dir + +runApplication blockMesh + +runApplication decomposePar + +runParallel setFields + +runParallel $(getApplication) diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/g b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/g new file mode 100644 index 00000000000..317bdd50def --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value ( 0 0 -9.81 ); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/transportProperties b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/transportProperties new file mode 100644 index 00000000000..3633e43efb9 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/transportProperties @@ -0,0 +1,37 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.3 | +| \\ / A nd | Web: http://www.openfoam.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +phases (water air); + +water +{ + transportModel Newtonian; + nu [0 2 -1 0 0 0 0] 1e-06; + rho [1 -3 0 0 0 0 0] 1000; +} + +air +{ + transportModel Newtonian; + nu [0 2 -1 0 0 0 0] 1.48e-05; + rho [1 -3 0 0 0 0 0] 1; +} + +sigma [1 0 -2 0 0 0 0] 0.07; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/turbulenceProperties b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/turbulenceProperties new file mode 100644 index 00000000000..22f11ecab7a --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/turbulenceProperties @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.6 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/waveProperties b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/waveProperties new file mode 100644 index 00000000000..3ec89ee67e8 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/constant/waveProperties @@ -0,0 +1,43 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: http://www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object wavesProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +left +{ + alpha alpha.water; + + waveModel McCowan; + + nPaddle 1; + + waveHeight 0.05; + + waveAngle 0.0; + + activeAbsorption yes; +} + +right +{ + alpha alpha.water; + + waveModel shallowWaterAbsorption; + + nPaddle 1; +} + +// ************************************************************************* // + diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/blockMeshDict b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/blockMeshDict new file mode 100644 index 00000000000..f7d292e0231 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/blockMeshDict @@ -0,0 +1,89 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + ( 0.0 0.0 0.0) + ( 7.0 0.0 0.0) + ( 7.0 0.55 0.0) + ( 0.0 0.55 0.0) + ( 0.0 0.0 0.5) + ( 7.0 0.0 0.5) + ( 7.0 0.55 0.5) + ( 0.0 0.55 0.5) + +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (350 28 42) simpleGrading (1 1 1) +); +edges +( +); + +boundary +( + left + { + type patch; + faces + ( + (0 4 7 3) + ); + } + right + { + type patch; + faces + ( + (1 5 6 2) + ); + } + ground + { + type wall; + faces + ( + (0 1 2 3) + ); + } + top + { + type patch; + faces + ( + (4 5 6 7) + ); + } + sides + { + type patch; + faces + ( + (0 1 5 4) + (3 2 6 7) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/controlDict b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/controlDict new file mode 100644 index 00000000000..5e5bd614380 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/controlDict @@ -0,0 +1,143 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application interFoam; + +startFrom latestTime; + +startTime 0; + +stopAt endTime; + +endTime 7.0; + +deltaT 0.1; + +writeControl adjustableRunTime; + +writeInterval 0.1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep on; + +maxCo 0.4; +maxAlphaCo 0.4; + +maxDeltaT 0.01; + +functions +{ + //Sensores VOF + line + { + type sets; + functionObjectLibs ("libsampling.so"); + enabled true; + outputControl writeTime; + outputInterval 1; + + interpolationScheme cellPoint; + setFormat raw; + sets + ( + s1 + { + + type uniform; + axis distance; + start ( 0.865 0.275 0.0 ); + end ( 0.865 0.275 0.5 ); + nPoints 101; + } + s2 + { + + type uniform; + axis distance; + start ( 1.065 0.275 0.0 ); + end ( 1.065 0.275 0.5 ); + nPoints 101; + } + s3 + { + + type uniform; + axis distance; + start ( 4.1 0.275 0.0 ); + end ( 4.1 0.275 0.5 ); + nPoints 101; + } + s4 + { + + type uniform; + axis distance; + start ( 4.645 0.275 0.0 ); + end ( 4.645 0.275 0.5 ); + nPoints 101; + } + s5 + { + + type uniform; + axis distance; + start ( 5.2 0.275 0.0 ); + end ( 5.2 0.275 0.5 ); + nPoints 101; + } + s6 + { + + type uniform; + axis distance; + start ( 5.85 0.275 0.0 ); + end ( 5.85 0.275 0.5 ); + nPoints 101; + } + s7 + { + + type uniform; + axis distance; + start ( 6.15 0.275 0.0 ); + end ( 6.15 0.275 0.5 ); + nPoints 101; + } + ); + fixedLocations false; + fields + ( + alpha.water + ); + } + +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/decomposeParDict b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/decomposeParDict new file mode 100644 index 00000000000..a4e660116ce --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/decomposeParDict @@ -0,0 +1,29 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object decomposeParDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 2; + +method hierarchical; + +hierarchicalCoeffs +{ + n (2 1 1); + delta 0.001; + order xyz; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/fvSchemes b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/fvSchemes new file mode 100644 index 00000000000..eeff89271fb --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/fvSchemes @@ -0,0 +1,54 @@ + +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + div(rhoPhi,U) Gauss linearUpwind grad(U); + div(phi,alpha) Gauss vanLeer; + div(phirb,alpha) Gauss linear; + div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear orthogonal; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default orthogonal; +} + + +// ************************************************************************* // + diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/fvSolution new file mode 100644 index 00000000000..859308b6fab --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/fvSolution @@ -0,0 +1,78 @@ + +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: plus | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "alpha.water.*" + { + nAlphaCorr 1; + nAlphaSubCycles 3; + cAlpha 1; + } + + pcorr + { + solver PCG; + preconditioner DIC; + tolerance 1e-6; + relTol 0; + } + + p_rgh + { + solver PCG; + preconditioner DIC; + tolerance 1e-6; + relTol 0.1; + } + + p_rghFinal + { + solver GAMG; + smoother DIC; + tolerance 1e-7; + relTol 0; + } + + U + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-6; + relTol 0.1; + } + + UFinal + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-6; + relTol 0; + } +} + +PIMPLE +{ + momentumPredictor no; + nCorrectors 2; + nNonOrthogonalCorrectors 0; +} + + +// ************************************************************************* // + diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/setFieldsDict b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/setFieldsDict new file mode 100644 index 00000000000..5873ea0e3d1 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/setFieldsDict @@ -0,0 +1,37 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.1.0 | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.water 0 + volVectorFieldValue U (0 0 0) +); + +regions +( + boxToCell + { + box (-10 -10 -10) (100 100 0.15); + fieldValues + ( + volScalarFieldValue alpha.water 1 + ); + } +); + + +// ************************************************************************* // -- GitLab