diff --git a/src/waveModels/Make/files b/src/waveModels/Make/files index 44b6ad45c1..d50a062cf3 100644 --- a/src/waveModels/Make/files +++ b/src/waveModels/Make/files @@ -8,6 +8,7 @@ waveGenerationModels/derived/Boussinesq/BoussinesqWaveModel.C waveGenerationModels/derived/cnoidal/cnoidalWaveModel.C waveGenerationModels/derived/Grimshaw/GrimshawWaveModel.C waveGenerationModels/derived/McCowan/McCowanWaveModel.C +waveGenerationModels/derived/streamFunction/streamFunctionWaveModel.C waveGenerationModels/derived/StokesII/StokesIIWaveModel.C waveGenerationModels/derived/StokesI/StokesIWaveModel.C waveGenerationModels/derived/StokesV/StokesVWaveModel.C diff --git a/src/waveModels/waveGenerationModels/derived/streamFunction/streamFunctionWaveModel.C b/src/waveModels/waveGenerationModels/derived/streamFunction/streamFunctionWaveModel.C new file mode 100644 index 0000000000..30a2e037ec --- /dev/null +++ b/src/waveModels/waveGenerationModels/derived/streamFunction/streamFunctionWaveModel.C @@ -0,0 +1,253 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2016-2017 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 . + +\*---------------------------------------------------------------------------*/ + +#include "streamFunctionWaveModel.H" +#include "mathematicalConstants.H" +#include "addToRunTimeSelectionTable.H" + +using namespace Foam::constant; + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace waveModels +{ + defineTypeNameAndDebug(streamFunction, 0); + addToRunTimeSelectionTable + ( + waveModel, + streamFunction, + patch + ); +} +} + + +// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // + +Foam::scalar Foam::waveModels::streamFunction::eta +( + const scalar h, + const scalar kx, + const scalar ky, + const scalar T, + const scalar x, + const scalar y, + const scalar omega, + const scalar t, + const scalar phase +) const +{ + + const scalar k = sqrt(kx*kx + ky*ky); + scalar strfnAux = 0.0; + forAll(Ejs_, iterSF) + { + strfnAux += Ejs_[iterSF]*cos((iterSF + 1) + *(kx*x + ky*y - omega*t + phase)); + } + + return (1/k)*strfnAux; +} + +Foam::vector Foam::waveModels::streamFunction::Uf +( + const scalar h, + const scalar kx, + const scalar ky, + const scalar T, + const scalar x, + const scalar y, + const scalar omega, + const scalar t, + const scalar phase, + const scalar z +) const +{ + const scalar k = sqrt(kx*kx + ky*ky); + const scalar phaseTot = kx*x + ky*y - omega*t + phase; + + scalar u = 0.0; + scalar w = 0.0; + + forAll(Bjs_, iterSF2) + { + u += (iterSF2 + 1)*Bjs_[iterSF2] *cosh((iterSF2 + 1)*k*z) + /cosh((iterSF2 + 1)*k*h)*cos((iterSF2 + 1)*phaseTot); + + w += (iterSF2 + 1)*Bjs_[iterSF2]*sinh((iterSF2 + 1)*k*z) + /cosh((iterSF2 + 1)*k*h)*sin((iterSF2 + 1)*phaseTot); + } + + u = waveLengthSF_/T - uMean_ + sqrt(mag(g_)/k)*u; + w = sqrt(mag(g_)/k)*w; + + scalar v = u*sin(waveAngle_); + u *= cos(waveAngle_); + + return vector(u, v, w); +} + + +// * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * // + +void Foam::waveModels::streamFunction::setLevel +( + const scalar t, + const scalar tCoeff, + scalarField& level +) const +{ + const scalar waveOmega = mathematical::twoPi/wavePeriod_; + const scalar waveK = mathematical::twoPi/waveLengthSF_; + const scalar waveKx = waveK*cos(waveAngle_); + const scalar waveKy = waveK*sin(waveAngle_); + + forAll(level, paddlei) + { + const scalar eta = + this->eta + ( + waterDepthRef_, + waveKx, + waveKy, + wavePeriod_, + xPaddle_[paddlei], + yPaddle_[paddlei], + waveOmega, + t, + wavePhase_ + ); + + level[paddlei] = waterDepthRef_ + tCoeff*eta; + } +} + + +void Foam::waveModels::streamFunction::setVelocity +( + const scalar t, + const scalar tCoeff, + const scalarField& level +) +{ + const scalar waveOmega = mathematical::twoPi/wavePeriod_; + const scalar waveK = mathematical::twoPi/waveLengthSF_; + const scalar waveKx = waveK*cos(waveAngle_); + const scalar waveKy = waveK*sin(waveAngle_); + + 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) + { + const label paddlei = faceToPaddle_[facei]; + + const vector Uf = this->Uf + ( + waterDepthRef_, + waveKx, + waveKy, + wavePeriod_, + xPaddle_[paddlei], + yPaddle_[paddlei], + waveOmega, + t, + wavePhase_, + z + ); + + U_[facei] = fraction*Uf*tCoeff; + } + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::waveModels::streamFunction::streamFunction +( + const dictionary& dict, + const fvMesh& mesh, + const polyPatch& patch, + const bool readFields +) +: + regularWaveModel(dict, mesh, patch, false), + uMean_(0), + waveLengthSF_(0), + Bjs_( List (1, -1.0) ), + Ejs_( List (1, -1.0) ) +{ + if (readFields) + { + readDict(dict); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::waveModels::streamFunction::~streamFunction() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +bool Foam::waveModels::streamFunction::readDict(const dictionary& overrideDict) +{ + if (regularWaveModel::readDict(overrideDict)) + { + lookup("uMean") >> uMean_; + lookup("waveLengthSF") >> waveLengthSF_; + lookup("Bjs") >> Bjs_; + lookup("Ejs") >> Ejs_; + + return true; + } + + return false; +} + + +void Foam::waveModels::streamFunction::info(Ostream& os) const +{ + regularWaveModel::info(os); + + os << " uMean : " << uMean_ << nl + << " wave Length streamFunction : " << waveLengthSF_ << nl + << " Bj coefficients : " << Bjs_ << nl + << " Ej coefficients : " << Ejs_ << nl; +} + + diff --git a/src/waveModels/waveGenerationModels/derived/streamFunction/streamFunctionWaveModel.H b/src/waveModels/waveGenerationModels/derived/streamFunction/streamFunctionWaveModel.H new file mode 100644 index 0000000000..4728c9c1e1 --- /dev/null +++ b/src/waveModels/waveGenerationModels/derived/streamFunction/streamFunctionWaveModel.H @@ -0,0 +1,162 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2016-2017 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 . + +Class + Foam::waveModels::streamFunction + +Description + streamFunction wave model + +\*---------------------------------------------------------------------------*/ + +#ifndef waveModels_streamFunction_H +#define waveModels_streamFunction_H + +#include "regularWaveModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace waveModels +{ + +/*---------------------------------------------------------------------------*\ + Class streamFunction Declaration +\*---------------------------------------------------------------------------*/ + +class streamFunction +: + public regularWaveModel +{ +private: + + + + // Private Member Functions + + //- Wave height + virtual scalar eta + ( + const scalar h, + const scalar kx, + const scalar ky, + const scalar T, + const scalar x, + const scalar y, + const scalar omega, + const scalar t, + const scalar phase + ) const; + + //- Wave velocity + virtual vector Uf + ( + const scalar d, + const scalar kx, + const scalar ky, + const scalar T, + const scalar x, + const scalar y, + const scalar omega, + const scalar t, + const scalar phase, + const scalar z + ) const; + + +protected: + + // Protected data + + //- Mean fluid speed in frame of reference (stream function) + scalar uMean_; + + //-Stream waveLength + scalar waveLengthSF_; + + //- Stream Function Bj coefficients + scalarList Bjs_; + + //- Stream Function Ej coefficients + scalarList Ejs_; + + + // Protected Member Functions + + + //- 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 + ); + + +public: + + //- Runtime type information + TypeName("streamFunction"); + + //- Constructor + streamFunction + ( + const dictionary& dict, + const fvMesh& mesh, + const polyPatch& patch, + const bool readFields = true + ); + + //- Destructor + virtual ~streamFunction(); + + + // Public Member Functions + + //- Read from dictionary + virtual bool readDict(const dictionary& overrideDict); + + //- Info + virtual void info(Ostream& os) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace waveModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/0.orig/U b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/0.orig/U new file mode 100644 index 0000000000..95453554e5 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/0.orig/U @@ -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 volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type waveVelocity; + value uniform (0 0 0); + } + + outlet + { + type waveVelocity; + value uniform (0 0 0); + } + + sides + { + type empty; + } + + ground + { + type fixedValue; + value uniform (0 0 0); + } + + top + { + type pressureInletOutletVelocity; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/0.orig/alpha.water b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/0.orig/alpha.water new file mode 100644 index 0000000000..aca611d915 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/0.orig/alpha.water @@ -0,0 +1,52 @@ +/*--------------------------------*- 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 volScalarField; + object alpha.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type waveAlpha; + value uniform 0; + } + + outlet + { + type zeroGradient; + } + + ground + { + type zeroGradient; + } + + sides + { + type empty; + } + + top + { + type inletOutlet; + inletValue uniform 0; + value uniform 0; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/0.orig/p_rgh b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/0.orig/p_rgh new file mode 100644 index 0000000000..f43a02558a --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/0.orig/p_rgh @@ -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 volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value uniform 0; + } + + outlet + { + type fixedFluxPressure; + value uniform 0; + } + + ground + { + type fixedFluxPressure; + value uniform 0; + } + + sides + { + type empty; + } + + top + { + type totalPressure; + p0 uniform 0; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/Allclean b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/Allclean new file mode 100755 index 0000000000..705f91474c --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/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/waveExampleStreamFunction/Allrun b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/Allrun new file mode 100755 index 0000000000..9f0c668029 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/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/waveExampleStreamFunction/constant/g b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/constant/g new file mode 100644 index 0000000000..3ec2141e5c --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- 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 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/waveExampleStreamFunction/constant/transportProperties b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/constant/transportProperties new file mode 100644 index 0000000000..43a98e9c59 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/constant/transportProperties @@ -0,0 +1,37 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / 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 "constant"; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +phases (water air); + +water +{ + transportModel Newtonian; + nu 1e-06; + rho 1000; +} + +air +{ + transportModel Newtonian; + nu 1.48e-05; + rho 1; +} + +sigma 0.07; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/constant/turbulenceProperties b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/constant/turbulenceProperties new file mode 100644 index 0000000000..115a9830c1 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/constant/turbulenceProperties @@ -0,0 +1,20 @@ +/*--------------------------------*- 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 "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/constant/waveProperties b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/constant/waveProperties new file mode 100644 index 0000000000..762db81aa5 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/constant/waveProperties @@ -0,0 +1,84 @@ +/*---------------------------------------------------------------------------*\ +| ========= | | +| \\ / 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 "constant"; + object wavesProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +inlet +{ + alpha alpha.water; + + waveModel streamFunction; + + nPaddle 1; + + waveHeight 0.1517; + + waveAngle 0.0; + + rampTime 6.034; + + activeAbsorption yes; + + wavePeriod 3.017; + + uMean 2.0825; + + waveLengthSF 6.2832; + + Bjs + 10 + ( + 8.6669014e-002 + 2.4849799e-002 + 7.7446850e-003 + 2.3355420e-003 + 6.4497731e-004 + 1.5205114e-004 + 2.5433769e-005 + -2.2045436e-007 + -2.8711504e-006 + -1.2287334e-006 + ); + + Ejs + 10 + ( + 5.6009609e-002 + 3.1638171e-002 + 1.5375952e-002 + 7.1743178e-003 + 3.3737077e-003 + 1.6324880e-003 + 8.2331980e-004 + 4.4403497e-004 + 2.7580059e-004 + 2.2810557e-004 + ); + +} + +outlet +{ + alpha alpha.water; + + waveModel shallowWaterAbsorption; + + nPaddle 1; +} + + +// ************************************************************************* // + + diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/system/blockMeshDict b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/system/blockMeshDict new file mode 100644 index 0000000000..cf37101f40 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/system/blockMeshDict @@ -0,0 +1,91 @@ +/*--------------------------------*- 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; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + ( 0.0 0.0 0.0) + ( 40.0 0.0 0.0) + ( 40.0 0.01 0.0) + ( 0.0 0.01 0.0) + ( 0.0 0.0 0.8) + ( 40.0 0.0 0.8) + ( 40.0 0.01 0.8) + ( 0.0 0.01 0.8) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (2000 1 80) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + inlet + { + type patch; + faces + ( + (0 4 7 3) + ); + } + outlet + { + 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 empty; + faces + ( + (0 1 5 4) + (3 2 6 7) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // + + diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/system/controlDict b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/system/controlDict new file mode 100644 index 0000000000..5539a0a0b2 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/system/controlDict @@ -0,0 +1,162 @@ +/*--------------------------------*- 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 controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application interFoam; + +startFrom latestTime; + +startTime 0; + +stopAt endTime; + +endTime 30.0; + +deltaT 0.01; + +writeControl adjustableRunTime; + +writeInterval 0.033; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep yes; + +maxCo 0.65; +maxAlphaCo 0.65; + +maxDeltaT 0.05; + + +functions +{ + line + { + type sets; + libs ("libsampling.so"); + enabled true; + writeControl writeTime; + writeInterval 1; + + interpolationScheme cellPoint; + setFormat raw; + sets + ( + line1 + { + type uniform; + axis distance; + start ( 1.0 0.005 0.0 ); + end ( 1.0 0.005 1.0 ); + nPoints 1001; + } + line2 + { + type uniform; + axis distance; + start ( 2.0 0.005 0.0 ); + end ( 2.0 0.005 1.0 ); + nPoints 1001; + } + line3 + { + type uniform; + axis distance; + start ( 3.0 0.005 0.0 ); + end ( 3.0 0.005 1.0 ); + nPoints 1001; + } + line4 + { + type uniform; + axis distance; + start ( 5.0 0.005 0.0 ); + end ( 5.0 0.005 1.0 ); + nPoints 1001; + } + line5 + { + type uniform; + axis distance; + start ( 7.5 0.005 0.0 ); + end ( 7.5 0.005 1.0 ); + nPoints 1001; + } + + line6 + { + type uniform; + axis distance; + start ( 10.0 0.005 0.0 ); + end ( 10.0 0.005 1.0 ); + nPoints 1001; + } + line7 + { + type uniform; + axis distance; + start ( 12.0 0.005 0.0 ); + end ( 12.0 0.005 1.0 ); + nPoints 1001; + } + line8 + { + type uniform; + axis distance; + start ( 15.0 0.005 0.0 ); + end ( 15.0 0.005 1.0 ); + nPoints 1001; + } + line9 + { + type uniform; + axis distance; + start ( 20.0 0.005 0.0 ); + end ( 20.0 0.005 1.0 ); + nPoints 1001; + } + line10 + { + type uniform; + axis distance; + start ( 28.0 0.005 0.0 ); + end ( 28.0 0.005 1.0 ); + nPoints 1001; + } + ); + + fixedLocations false; + fields + ( + U alpha.water + ); + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/system/decomposeParDict b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/system/decomposeParDict new file mode 100644 index 0000000000..301d97027b --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/system/decomposeParDict @@ -0,0 +1,29 @@ +/*--------------------------------*- 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; + object decomposeParDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 2; + +method hierarchical; + +hierarchicalCoeffs +{ + n (2 1 1); + delta 0.001; + order xyz; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/system/fvSchemes b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/system/fvSchemes new file mode 100644 index 0000000000..eeff89271f --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/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/waveExampleStreamFunction/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/system/fvSolution new file mode 100644 index 0000000000..dee334f852 --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/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/waveExampleStreamFunction/system/setFieldsDict b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/system/setFieldsDict new file mode 100644 index 0000000000..b51d428a4d --- /dev/null +++ b/tutorials/multiphase/interFoam/laminar/waveExampleStreamFunction/system/setFieldsDict @@ -0,0 +1,36 @@ +/*--------------------------------*- 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 setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.water 0 +); + +regions +( + boxToCell + { + box (0 0 0) (40.0 1.0 0.4046); + fieldValues + ( + volScalarFieldValue alpha.water 1 + ); + } +); + + +// ************************************************************************* //