From 0999cd0efea8811f6d98c631f5ff3a53f6efb2d9 Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Wed, 11 May 2022 15:30:11 +0100 Subject: [PATCH] multiphaseEulerFoam: Added pipeBend tutorial This tutorial simulates solid particle coalescence and breakage through a 90 degree pipe bend. Patch contributed by Kasper Gram Bilde and Institute of Fluid Dynamics, Helmholtz-Zentrum Dresden - Rossendorf (HZDR) --- .../RAS/pipeBend/0/T.particles | 39 ++++ .../RAS/pipeBend/0/T.water | 39 ++++ .../RAS/pipeBend/0/U.particles | 39 ++++ .../RAS/pipeBend/0/U.water | 39 ++++ .../RAS/pipeBend/0/alpha.particles | 39 ++++ .../RAS/pipeBend/0/alpha.water | 39 ++++ .../RAS/pipeBend/0/alphat.particles | 41 ++++ .../RAS/pipeBend/0/alphat.water | 42 ++++ .../RAS/pipeBend/0/epsilon.water | 42 ++++ .../RAS/pipeBend/0/f.particles | 39 ++++ .../RAS/pipeBend/0/k.water | 42 ++++ .../RAS/pipeBend/0/nut.particles | 41 ++++ .../RAS/pipeBend/0/nut.water | 41 ++++ .../multiphaseEulerFoam/RAS/pipeBend/0/p | 41 ++++ .../multiphaseEulerFoam/RAS/pipeBend/0/p_rgh | 42 ++++ .../multiphaseEulerFoam/RAS/pipeBend/Allclean | 9 + .../multiphaseEulerFoam/RAS/pipeBend/Allrun | 28 +++ .../RAS/pipeBend/constant/g | 20 ++ .../pipeBend/constant/geometry/torus.obj.gz | Bin 0 -> 70528 bytes .../constant/momentumTransport.particles | 35 ++++ .../pipeBend/constant/momentumTransport.water | 27 +++ .../RAS/pipeBend/constant/phaseProperties | 179 +++++++++++++++++ .../constant/physicalProperties.particles | 50 +++++ .../constant/physicalProperties.water | 50 +++++ .../RAS/pipeBend/system/blockMeshDict | 183 ++++++++++++++++++ .../RAS/pipeBend/system/controlDict | 102 ++++++++++ .../RAS/pipeBend/system/decomposeParDict | 20 ++ .../RAS/pipeBend/system/fvSchemes | 69 +++++++ .../RAS/pipeBend/system/fvSolution | 94 +++++++++ .../RAS/pipeBend/system/topoSetDict | 77 ++++++++ .../RAS/pipeBend/validation/createGraphs | 46 +++++ 31 files changed, 1594 insertions(+) create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/T.particles create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/T.water create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/U.particles create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/U.water create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alpha.particles create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alpha.water create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alphat.particles create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alphat.water create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/epsilon.water create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/f.particles create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/k.water create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/nut.particles create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/nut.water create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/p create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/p_rgh create mode 100755 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/Allclean create mode 100755 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/Allrun create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/g create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/geometry/torus.obj.gz create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/momentumTransport.particles create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/momentumTransport.water create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/phaseProperties create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/physicalProperties.particles create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/physicalProperties.water create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/blockMeshDict create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/controlDict create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/decomposeParDict create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/fvSchemes create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/fvSolution create mode 100644 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/topoSetDict create mode 100755 tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/validation/createGraphs diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/T.particles b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/T.particles new file mode 100644 index 0000000000..176c935ea3 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/T.particles @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object T.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/T.water b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/T.water new file mode 100644 index 0000000000..590a6db11a --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/T.water @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object T.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/U.particles b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/U.particles new file mode 100644 index 0000000000..687791c6d3 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/U.particles @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volVectorField; + object U.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value uniform (0 0.5 0); + } + + outlet + { + type zeroGradient; + } + + walls + { + type slip; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/U.water b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/U.water new file mode 100644 index 0000000000..943e1b0e00 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/U.water @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volVectorField; + object U.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value uniform (0 0.5 0); + } + + outlet + { + type zeroGradient; + } + + walls + { + type noSlip; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alpha.particles b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alpha.particles new file mode 100644 index 0000000000..3c10bf6596 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alpha.particles @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object alpha.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1e-3; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alpha.water b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alpha.water new file mode 100644 index 0000000000..97a5dd10fd --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alpha.water @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object alpha.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.999; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alphat.particles b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alphat.particles new file mode 100644 index 0000000000..ecd9da761b --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alphat.particles @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object alphat.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type calculated; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alphat.water b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alphat.water new file mode 100644 index 0000000000..be44a2337f --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/alphat.water @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object alphat.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type compressible::alphatWallFunction; + Prt 0.85; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/epsilon.water b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/epsilon.water new file mode 100644 index 0000000000..4a92ef6c54 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/epsilon.water @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object epsilon.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 0.00136; + +boundaryField +{ + inlet + { + type turbulentMixingLengthDissipationRateInlet; + mixingLength 0.02; + k k.water; + value $internalField; + } + + outlet + { + type zeroGradient; + } + + walls + { + type epsilonWallFunction; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/f.particles b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/f.particles new file mode 100644 index 0000000000..29059305b7 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/f.particles @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object f.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1.0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/k.water b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/k.water new file mode 100644 index 0000000000..4a82a9d217 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/k.water @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object k.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0.00081; + +boundaryField +{ + inlet + { + type turbulentIntensityKineticEnergyInlet; + U U.water; + intensity 0.05; + value $internalField; + } + + outlet + { + type zeroGradient; + } + + walls + { + type kqRWallFunction; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/nut.particles b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/nut.particles new file mode 100644 index 0000000000..ddd5c915e8 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/nut.particles @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object nut.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type calculated; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/nut.water b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/nut.water new file mode 100644 index 0000000000..ba5b510e6f --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/nut.water @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object nut.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type nutkWallFunction; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/p b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/p new file mode 100644 index 0000000000..9591791c5e --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/p @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type calculated; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/p_rgh b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/p_rgh new file mode 100644 index 0000000000..e9e4de91e8 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/0/p_rgh @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + + outlet + { + type prghPressure; + p $internalField; + value $internalField; + } + + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/Allclean b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/Allclean new file mode 100755 index 0000000000..e27f3b8dfc --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/Allclean @@ -0,0 +1,9 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source clean functions +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +cleanCase && rm -f *.eps + +#------------------------------------------------------------------------------ diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/Allrun b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/Allrun new file mode 100755 index 0000000000..79e4e3efa6 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/Allrun @@ -0,0 +1,28 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +# Mesh +runApplication blockMesh +runApplication topoSet + +# Run +runApplication decomposePar +runParallel $(getApplication) +runApplication reconstructPar -latestTime + +# Post-process +runApplication postProcess -func " + graphLayerAverage + ( + funcName=graphCrossSection, + patches=(inlet), + axis=distance, + d.particles + ) + " -latestTime +cd validation && ./createGraphs + +#------------------------------------------------------------------------------ diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/g b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/g new file mode 100644 index 0000000000..d33c71a018 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/g @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class uniformDimensionedVectorField; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 0 -9.81); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/geometry/torus.obj.gz b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/geometry/torus.obj.gz new file mode 100644 index 0000000000000000000000000000000000000000..8e177e72cb23d85ddc7ef1362faff129f0915a20 GIT binary patch literal 70528 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 MjK-XDDLvhP0sHE-UH||9 literal 0 HcmV?d00001 diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/momentumTransport.particles b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/momentumTransport.particles new file mode 100644 index 0000000000..93f019571f --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/momentumTransport.particles @@ -0,0 +1,35 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object momentumTransport.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + model phasePressure; + + turbulence on; + printCoeffs on; + + phasePressureCoeffs + { + preAlphaExp 500; + expMax 1000; + alphaMax 0.62; + g0 1000; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/momentumTransport.water b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/momentumTransport.water new file mode 100644 index 0000000000..3e47a597b6 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/momentumTransport.water @@ -0,0 +1,27 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object momentumTransport.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + model RNGkEpsilon; + + turbulence on; + printCoeffs on; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/phaseProperties b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/phaseProperties new file mode 100644 index 0000000000..0e6742fe91 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/phaseProperties @@ -0,0 +1,179 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type populationBalanceMultiphaseSystem; + +phases (particles water); + +populationBalances (agglomerates); + +particles +{ + type pureIsothermalPhaseModel; + + diameterModel velocityGroup; + + velocityGroupCoeffs + { + populationBalance agglomerates; + + shapeModel spherical; + + sizeGroups + ( + f1 {dSph 1e-6; value 0;} + f2 {dSph 1.21e-6; value 0.000;} + f3 {dSph 1.463e-6; value 0.0001;} + f4 {dSph 1.77e-6; value 0.0002;} + f5 {dSph 2.142e-6; value 0.0004;} + f6 {dSph 2.591e-6; value 0.0008;} + f7 {dSph 3.134e-6; value 0.0015;} + f8 {dSph 3.792e-6; value 0.0025;} + f9 {dSph 4.587e-6; value 0.004;} + f10 {dSph 5.549e-6; value 0.0062;} + f11 {dSph 6.71e-6; value 0.0093;} + f12 {dSph 8.12e-6; value 0.0137;} + f13 {dSph 9.82e-6; value 0.0198;} + f14 {dSph 11.88e-6; value 0.0279;} + f15 {dSph 14.38e-6; value 0.0383;} + f16 {dSph 17.39e-6; value 0.0512;} + f17 {dSph 21.04e-6; value 0.0663;} + f18 {dSph 25.45e-6; value 0.0829;} + f19 {dSph 30.79e-6; value 0.0991;} + f20 {dSph 37.24e-6; value 0.1121;} + f21 {dSph 45.06e-6; value 0.1183;} + f22 {dSph 54.51e-6; value 0.1141;} + f23 {dSph 65.94e-6; value 0.0977;} + f24 {dSph 79.77e-6; value 0.0712;} + f25 {dSph 96.49e-6; value 0.0412;} + f26 {dSph 116.7e-6; value 0.0170;} + f27 {dSph 141.2e-6; value 0.004;} + f28 {dSph 170.8e-6; value 0.0002;} + f29 {dSph 206.7e-6; value 0;} + f30 {dSph 250e-6; value 0;} + ); + } + + residualAlpha 1e-8; +} + +water +{ + type pureIsothermalPhaseModel; + + diameterModel none; + + residualAlpha 1e-8; +} + +populationBalanceCoeffs +{ + agglomerates + { + continuousPhase water; + + coalescenceModels + ( + AdachiStuartFokkink{} + ); + + binaryBreakupModels + (); + + breakupModels + ( + Kusters + { + daughterSizeDistributionModel Laakkonen; + C4 2; + B 50e-7; + dP 250e-9; + Df 2.4; + } + ); + + driftModels + (); + + nucleationModels + (); + } +} + +blending +{ + default + { + type continuous; + phase water; + } +} + +surfaceTension +{} + +aspectRatio +{} + +interfaceCompression +{} + +drag +{ + particles_dispersedIn_water + { + type WenYu; + residualRe 1e-3; + } +} + +virtualMass +{ + particles_dispersedIn_water + { + type constantCoefficient; + Cvm 0.5; + } +} + +heatTransfer +{} + +phaseTransfer +{} + +lift +{ + particles_dispersedIn_water + { + type SaffmanMei; + residualRe 1e-6; + } +} + +wallLubrication +{} + +turbulentDispersion +{ + particles_dispersedIn_water + { + type Burns; + residualRe 1e-3; + sigma 1; + } +} + +// ************************************************************************* // \ No newline at end of file diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/physicalProperties.particles b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/physicalProperties.particles new file mode 100644 index 0000000000..1edfb45c23 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/physicalProperties.particles @@ -0,0 +1,50 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object physicalProperties.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState rhoConst; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + molWeight 14; + } + equationOfState + { + rho 1400; + } + thermodynamics + { + Cp 1000; + Hf 0; + } + transport + { + mu 0; + Pr 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/physicalProperties.water b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/physicalProperties.water new file mode 100644 index 0000000000..b8b0b648b2 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/constant/physicalProperties.water @@ -0,0 +1,50 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object physicalProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState rhoConst; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + molWeight 18; + } + equationOfState + { + rho 997; + }; + thermodynamics + { + Cp 4181; + Hf 0; + } + transport + { + mu 8.9e-4; + Pr 6.127; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/blockMeshDict b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/blockMeshDict new file mode 100644 index 0000000000..2d36367fd3 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/blockMeshDict @@ -0,0 +1,183 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1e-3; + +geometry +{ + torus + { + type triSurfaceMesh; + file "torus.obj"; + } +} + +vertices +( + (-9.9 0 9.9) + (-14.14 0 14.14) + (14.14 0 14.14) + (9.9 0 9.9) + (9.9 0 -9.9) + (14.14 0 -14.14) + (-14.14 0 -14.14) + (-9.9 0 -9.9) + (-9.9 400 9.9) + (-14.14 400 14.14) + (14.14 400 14.14) + (9.9 400 9.9) + (9.9 400 -9.9) + (14.14 400 -14.14) + (-14.14 400 -14.14) + (-9.9 400 -9.9) + (-9.9 450.1 60) + (-14.14 445.86 60) + (14.14 445.86 60) + (9.9 450.1 60) + (9.9 469.9 60) + (14.14 474.14 60) + (-14.14 474.14 60) + (-9.9 469.9 60) + (-9.9 450.1 460) + (-14.14 445.86 460) + (14.14 445.86 460) + (9.9 450.1 460) + (9.9 469.9 460) + (14.14 474.14 460) + (-14.14 474.14 460) + (-9.9 469.9 460) +); + +blocks +( + hex (0 1 2 3 8 9 10 11) (8 12 100) simpleGrading (0.35 1 1) + hex (3 2 5 4 11 10 13 12) (8 12 100) simpleGrading (0.35 1 1) + hex (4 5 6 7 12 13 14 15) (8 12 100) simpleGrading (0.35 1 1) + hex (7 6 1 0 15 14 9 8) (8 12 100) simpleGrading (0.35 1 1) + hex (0 3 4 7 8 11 12 15) (12 12 100) simpleGrading (1 1 1) + hex (8 9 10 11 16 17 18 19) (8 12 23) simpleGrading (0.35 1 1) + hex (11 10 13 12 19 18 21 20) (8 12 23) simpleGrading (0.35 1 1) + hex (12 13 14 15 20 21 22 23) (8 12 23) simpleGrading (0.35 1 1) + hex (15 14 9 8 23 22 17 16) (8 12 23) simpleGrading (0.35 1 1) + hex (8 11 12 15 16 19 20 23) (12 12 23) simpleGrading (1 1 1) + hex (16 17 18 19 24 25 26 27) (8 12 100) simpleGrading (0.35 1 1) + hex (19 18 21 20 27 26 29 28) (8 12 100) simpleGrading (0.35 1 1) + hex (20 21 22 23 28 29 30 31) (8 12 100) simpleGrading (0.35 1 1) + hex (23 22 17 16 31 30 25 24) (8 12 100) simpleGrading (0.35 1 1) + hex (16 19 20 23 24 27 28 31) (12 12 100) simpleGrading (1 1 1) +); + +edges +( + arc 1 2 (0 0 20) + arc 2 5 (20 0 0) + arc 5 6 (0 0 -20) + arc 6 1 (-20 0 0) + arc 0 3 (0 0 11.23) + arc 3 4 (11.23 0 0) + arc 4 7 (0 0 -11.23) + arc 7 0 (-11.23 0 0) + arc 9 10 (0 400 20) + arc 10 13 (20 400 0) + arc 13 14 (0 400 -20) + arc 14 9 (-20 400 0) + arc 8 11 (0 400 11.23) + arc 11 12 (11.23 400 0) + arc 12 15 (0 400 -11.23) + arc 15 8 (-11.23 400 0) + arc 17 18 (0 440 60) + arc 18 21 (20 460 60) + arc 21 22 (0 480 60) + arc 22 17 (-20 460 60) + arc 16 19 (0 448.77 60) + arc 19 20 (11.23 460 60) + arc 20 23 (0 471.23 60) + arc 23 16 (-11.23 460 60) + arc 25 26 (0 440 460) + arc 26 29 (20 460 460) + arc 29 30 (0 480 460) + arc 30 25 (-20 460 460) + arc 24 27 (0 448.77 460) + arc 27 28 (11.23 460 460) + arc 28 31 (0 471.23 460) + arc 31 24 (-11.23 460 460) + arc 9 17 (-14.14 432.428 27.572) + arc 10 18 (14.14 432.428 27.572) + arc 13 21 (14.14 452.425 7.572) + arc 14 22 (-14.14 452.425 7.572) + arc 8 16 (-9.9 435.426 24.574) + arc 11 19 (9.9 435.426 24.574) + arc 12 20 (9.9 449.427 10.573) + arc 15 23 (-9.9 449.427 10.573) +); + +faces +( + project (9 10 18 17) torus + project (10 13 21 18) torus + project (13 14 22 21) torus + project (14 9 17 22) torus +); + +boundary +( + inlet + { + type pacth; + faces + ( + (0 1 2 3) + (3 2 5 4) + (4 5 6 7) + (7 6 1 0) + (0 3 4 7) + ); + } + outlet + { + type patch; + faces + ( + (24 25 26 27) + (27 26 29 28) + (28 29 30 31) + (31 30 25 24) + (24 27 28 31) + ); + } + walls + { + type wall; + faces + ( + (1 9 10 2) + (2 10 13 5) + (5 13 14 6) + (6 14 9 1) + (9 17 18 10) + (10 18 21 13) + (13 21 22 14) + (14 22 17 9) + (17 25 26 18) + (18 26 29 21) + (21 29 30 22) + (22 30 25 17) + ); + } +); + +mergePatchPairs +(); diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/controlDict b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/controlDict new file mode 100644 index 0000000000..76efd24b93 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/controlDict @@ -0,0 +1,102 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application multiphaseEulerFoam; + +startFrom latestTime; + +startTime 0; + +stopAt endTime; + +endTime 2; + +deltaT 0.003; + +writeControl adjustableRunTime; + +writeInterval 0.1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep yes; + +maxCo 1; + +maxDeltaT 1; + +functions +{ + #includeFunc writeObjects(d.particles) + + #includeFunc sizeDistribution + ( + populationBalance=agglomerates, + regionType=cellZone, + name=afterBend_1d, + functionType=volumeDensity, + coordinateType=diameter, + normalise=yes, + funcName=probabilityDensity.afterBend_1d + ) + + #includeFunc sizeDistribution + ( + populationBalance=agglomerates, + regionType=cellZone, + name=afterBend_5d, + functionType=volumeDensity, + coordinateType=diameter, + normalise=yes, + funcName=probabilityDensity.afterBend_5d + ) + + #includeFunc sizeDistribution + ( + populationBalance=agglomerates, + regionType=cellZone, + name=afterBend_9d, + functionType=volumeDensity, + coordinateType=diameter, + normalise=yes, + funcName=probabilityDensity.afterBend_9d + ) + + #includeFunc sizeDistribution + ( + populationBalance=agglomerates, + regionType=cellZone, + name=beforeBend_1d, + functionType=volumeDensity, + coordinateType=diameter, + normalise=yes, + funcName=probabilityDensity.beforeBend_1d + ) +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/decomposeParDict b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/decomposeParDict new file mode 100644 index 0000000000..61e78aad50 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/decomposeParDict @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 6; + +method scotch; + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/fvSchemes b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/fvSchemes new file mode 100644 index 0000000000..8a120a2841 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/fvSchemes @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + "div\(phi,alpha.*\)" Gauss vanLeer; + "div\(phir,alpha.*\)" Gauss vanLeer; + + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + + "div\(alphaPhi.*,f.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; + + "div\(alphaRhoPhi.*,(h|e|k|epsilon).*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1; + + div(alphaRhoPhi.water,(p|thermo:rho.water)) Gauss limitedLinear 1; + + div((((alpha.water*thermo:rho.water)*nuEff.water)*dev2(T(grad(U.water))))) Gauss linear; + + div((((thermo:rho.particles*nut.particles)*dev2(T(grad(U.particles))))+(((thermo:rho.particles*lambda.particles)*div(phi.particles))*I))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + +wallDist +{ + method meshWave; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/fvSolution b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/fvSolution new file mode 100644 index 0000000000..5763c40861 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/fvSolution @@ -0,0 +1,94 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "alpha.*" + { + nAlphaCorr 1; + nAlphaSubCycles 3; + implicitPhasePressure yes; + solver PBiCGStab; + preconditioner DIC; + tolerance 1e-9; + relTol 0; + minIter 1; + } + + p_rgh + { + solver GAMG; + smoother DIC; + tolerance 1e-8; + relTol 0.01; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "(h|e).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-6; + relTol 0; + minIter 1; + maxIter 10; + } + + "(k|epsilon).*" + { + solver PBiCGStab; + preconditioner DILU; + tolerance 1e-5; + relTol 0; + minIter 1; + } + + "f.*" + { + solver PBiCGStab; + preconditioner DILU; + tolerance 1e-6; + relTol 0; + } + + agglomerates + { + nCorr 1; + tolerance 1e-4; + scale true; + solveOnFinalIterOnly true; + sourceUpdateInterval 1; + } +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 2; + nNonOrthogonalCorrectors 0; + alphaSpreadMin 5e-4; + alphaSpreadMax 0.9995; +} + +relaxationFactors +{} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/topoSetDict b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/topoSetDict new file mode 100644 index 0000000000..86a2ddebb5 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/system/topoSetDict @@ -0,0 +1,77 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + format ascii; + class dictionary; + object topoSetDict; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +actions +( + { + name beforeBend_1d; + type cellSet; + action new; + source boxToCell; + box (-0.03 0.35 -0.03) (0.03 0.37 0.03); + } + { + name afterBend_1d; + type cellSet; + action new; + source boxToCell; + box (-0.03 0.43 0.09) (0.03 0.48 0.11); + } + { + name afterBend_5d; + type cellSet; + action new; + source boxToCell; + box (-0.03 0.43 0.25) (0.03 0.48 0.27); + } + { + name afterBend_9d; + type cellSet; + action new; + source boxToCell; + box (-0.03 0.43 0.41) (0.03 0.48 0.43); + } + { + name beforeBend_1d; + type cellZoneSet; + action new; + source setToCellZone; + set beforeBend_1d; + } + { + name afterBend_1d; + type cellZoneSet; + action new; + source setToCellZone; + set afterBend_1d; + } + { + name afterBend_5d; + type cellZoneSet; + action new; + source setToCellZone; + set afterBend_5d; + } + { + name afterBend_9d; + type cellZoneSet; + action new; + source setToCellZone; + set afterBend_9d; + } +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/validation/createGraphs b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/validation/createGraphs new file mode 100755 index 0000000000..87f35b9ac2 --- /dev/null +++ b/tutorials/multiphase/multiphaseEulerFoam/RAS/pipeBend/validation/createGraphs @@ -0,0 +1,46 @@ +#!/bin/sh + +if ! which gnuplot > /dev/null 2>&1 +then + echo 'gnuplot not found - skipping graph creation' >&2 + exit 1 +fi + +time=$(foamListTimes -case .. -latestTime) +beforeBend=../postProcessing/probabilityDensity.beforeBend_1d/$time/probabilityDensity.beforeBend_1d.xy +afterBend1D=../postProcessing/probabilityDensity.afterBend_1d/$time/probabilityDensity.afterBend_1d.xy +afterBend3D=../postProcessing/probabilityDensity.afterBend_3d/$time/probabilityDensity.afterBend_3d.xy +afterBend5D=../postProcessing/probabilityDensity.afterBend_5d/$time/probabilityDensity.afterBend_5d.xy +afterBend7D=../postProcessing/probabilityDensity.afterBend_7d/$time/probabilityDensity.afterBend_7d.xy +afterBend9D=../postProcessing/probabilityDensity.afterBend_9d/$time/probabilityDensity.afterBend_9d.xy +layerAverage=../postProcessing/graphCrossSection/$time/layerAverage.xy + +gnuplot<