solvers::multiphaseEuler: New solver module for Euler-Euler multiphase simulations

executed with foamRun for single region simulations of foamMultiRun for
multi-region simulations.  Replaces multiphaseEulerFoam and all the
corresponding tutorials have been updated and moved to
tutorials/modules/multiphaseEuler.

Class
    Foam::solvers::multiphaseEuler

Description
    Solver module for a system of any number of compressible fluid phases with a
    common pressure, but otherwise separate properties. The type of phase model
    is run time selectable and can optionally represent multiple species and
    in-phase reactions. The phase system is also run time selectable and can
    optionally represent different types of momentum, heat and mass transfer.

    Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and
    pseudo-transient and steady simulations.

    Optional fvModels and fvConstraints are provided to enhance the simulation
    in many ways including adding various sources, Lagrangian
    particles, surface film etc. and constraining or limiting the solution.

SourceFiles
    multiphaseEuler.C

See also
    Foam::solvers::compressibleVoF
    Foam::solvers::fluidSolver
    Foam::solvers::incompressibleFluid
This commit is contained in:
Henry Weller
2022-11-03 14:49:56 +00:00
parent 879f852b80
commit cec0359871
1621 changed files with 127852 additions and 0 deletions

View File

@ -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
();

View File

@ -0,0 +1,104 @@
/*--------------------------------*- 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 foamRun;
solver multiphaseEuler;
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 populationBalanceSizeDistribution
(
populationBalance=agglomerates,
regionType=cellZone,
name=afterBend_1d,
functionType=volumeDensity,
coordinateType=diameter,
normalise=yes,
funcName=probabilityDensity.afterBend_1d
)
#includeFunc populationBalanceSizeDistribution
(
populationBalance=agglomerates,
regionType=cellZone,
name=afterBend_5d,
functionType=volumeDensity,
coordinateType=diameter,
normalise=yes,
funcName=probabilityDensity.afterBend_5d
)
#includeFunc populationBalanceSizeDistribution
(
populationBalance=agglomerates,
regionType=cellZone,
name=afterBend_9d,
functionType=volumeDensity,
coordinateType=diameter,
normalise=yes,
funcName=probabilityDensity.afterBend_9d
)
#includeFunc populationBalanceSizeDistribution
(
populationBalance=agglomerates,
regionType=cellZone,
name=beforeBend_1d,
functionType=volumeDensity,
coordinateType=diameter,
normalise=yes,
funcName=probabilityDensity.beforeBend_1d
)
}
// ************************************************************************* //

View File

@ -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;
// ************************************************************************* //

View File

@ -0,0 +1,70 @@
/*--------------------------------*- 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|rho.water)) Gauss limitedLinear 1;
div((((alpha.water*rho.water)*nuEff.water)*dev2(T(grad(U.water))))) Gauss linear;
div((((rho.particles*nut.particles)*dev2(T(grad(U.particles))))+(((rho.particles*lambda.particles)*div(phi.particles))*I))) Gauss linear;
}
laplacianSchemes
{
default Gauss linear uncorrected;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default uncorrected;
}
wallDist
{
method meshWave;
}
// ************************************************************************* //

View File

@ -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
{}
// ************************************************************************* //

View File

@ -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;
}
);
// ************************************************************************* //