reactingTwoPhaseEulerFoam: Significantly improved handling of the particle pressure

In order to improve stability and robustness of fluidised bed cases the
semi-implicit treatment of the particle pressure (pPrime) is now applied within
the time-step sub-cycling along with the phase differential flux update.  This
allows the simulations to be performed reliably at a significantly increased
maximum Courant number (up to 5 for some cases) without introducing
chequerboarding patterns in regions of low particle phase fraction which
occurred with the previous algorithm.

The fluidisedBed tutorial has been updated to be more representative of real
bubbling bed cases and to demonstrate the new pPrime functionality.

Developed in collaboration with Timo Niemi, VTT.
This commit is contained in:
Henry Weller
2019-11-11 14:41:35 +00:00
parent 93047de818
commit da429d77f5
10 changed files with 155 additions and 118 deletions

View File

@ -35,7 +35,10 @@ boundaryField
walls
{
type zeroGradient;
type JohnsonJacksonParticleTheta;
restitutionCoefficient 0.8;
specularityCoefficient 0.01;
value uniform 1e-4;
}
frontAndBackPlanes

View File

@ -22,17 +22,17 @@ boundaryField
{
inlet
{
type interstitialInletVelocity;
inletVelocity uniform (0 0.25 0);
alpha alpha.air;
value $internalField;
type interstitialInletVelocity;
inletVelocity uniform (0 0.25 0);
alpha alpha.air;
value $internalField;
}
outlet
{
type pressureInletOutletVelocity;
phi phi.air;
value $internalField;
type pressureInletOutletVelocity;
phi phi.air;
value $internalField;
}
walls
@ -42,7 +42,7 @@ boundaryField
frontAndBackPlanes
{
type empty;
type empty;
}
}

View File

@ -22,25 +22,26 @@ boundaryField
{
inlet
{
type fixedValue;
value uniform (0 0 0);
type fixedValue;
value uniform (0 0 0);
}
outlet
{
type fixedValue;
value uniform (0 0 0);
type fixedValue;
value uniform (0 0 0);
}
walls
{
type fixedValue;
value uniform (0 0 0);
type JohnsonJacksonParticleSlip;
specularityCoefficient 0.01;
value uniform (0 0 0);
}
frontAndBackPlanes
{
type empty;
type empty;
}
}

View File

@ -6,6 +6,8 @@ cd ${0%/*} || exit 1 # Run from this directory
runApplication blockMesh
runApplication setFields
runApplication $(getApplication)
runApplication decomposePar
runParallel $(getApplication)
runApplication reconstructPar
#------------------------------------------------------------------------------

View File

@ -36,16 +36,16 @@ RAS
viscosityModel Gidaspow;
conductivityModel Gidaspow;
granularPressureModel Lun;
frictionalStressModel JohnsonJackson;
frictionalStressModel JohnsonJacksonSchaeffer;
radialModel SinclairJackson;
JohnsonJacksonCoeffs
JohnsonJacksonSchaefferCoeffs
{
Fr 0.05;
eta 2;
p 5;
phi 28.5;
alphaDeltaMin 0.05;
alphaDeltaMin 0.01;
}
}

View File

@ -25,15 +25,15 @@ stopAt endTime;
endTime 2;
deltaT 0.0002;
deltaT 2e-4;
writeControl runTime;
writeControl adjustableRunTime;
writeInterval 0.01;
purgeWrite 0;
writeFormat ascii;
writeFormat binary;
writePrecision 6;
@ -45,11 +45,11 @@ timePrecision 6;
runTimeModifiable on;
adjustTimeStep no;
adjustTimeStep yes;
maxCo 0.9;
maxCo 2;
maxDeltaT 1e-05;
maxDeltaT 0.01;
functions
{

View File

@ -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
{
version 2.0;
format ascii;
class dictionary;
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 4;
/*
Main methods are:
1) Geometric: "simple"; "hierarchical", with ordered sorting, e.g. xyz, yxz
2) Scotch: "scotch", when running in serial; "ptscotch", running in parallel
*/
method hierarchical;
simpleCoeffs
{
n (1 4 1); // total must match numberOfSubdomains
delta 0.001;
}
hierarchicalCoeffs
{
n (1 4 1); // total must match numberOfSubdomains
delta 0.001;
order xyz;
}
// ************************************************************************* //

View File

@ -20,11 +20,14 @@ solvers
"alpha.*"
{
nAlphaCorr 1;
nAlphaSubCycles 2;
nAlphaSubCycles 3;
implicitPhasePressure yes;
solver smoothSolver;
smoother symGaussSeidel;
extremaCoeff 1;
solver PBiCGStab;
preconditioner DIC;
tolerance 1e-9;
relTol 0;
minIter 1;
@ -60,12 +63,13 @@ solvers
tolerance 1e-6;
relTol 0;
minIter 1;
maxIter 10;
}
"Theta.*"
{
solver smoothSolver;
smoother symGaussSeidel;
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-6;
relTol 0;
minIter 1;
@ -73,8 +77,8 @@ solvers
"(k|epsilon).*"
{
solver smoothSolver;
smoother symGaussSeidel;
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-5;
relTol 0;
minIter 1;
@ -84,9 +88,9 @@ solvers
PIMPLE
{
nOuterCorrectors 3;
nCorrectors 1;
nCorrectors 2;
nNonOrthogonalCorrectors 0;
faceMomentum yes;
faceMomentum no;
}
relaxationFactors