diff --git a/applications/solvers/cfdemSolverRhoPimpleChem/EEqn.H b/applications/solvers/cfdemSolverRhoPimpleChem/EEqn.H index 9a5f10b8..efcf6fa1 100644 --- a/applications/solvers/cfdemSolverRhoPimpleChem/EEqn.H +++ b/applications/solvers/cfdemSolverRhoPimpleChem/EEqn.H @@ -8,9 +8,11 @@ particleCloud.energyCoefficients(QCoeff); Cpv = he.name() == "e" ? thermo.Cv() : thermo.Cp(); -// correct source for the thermodynamic reference temperature -// dimensionedScalar Tref("Tref", dimTemperature, T[0]-he[0]/(Cpv[0]+SMALL)); -// Qsource += QCoeff*Tref; +// For implict T terms in the energy/enthalpy transport equation, use +// (he_n+1 - he_n) / (T_n+1 - T_n) = Cpv to eliminate T_n+1 with he_n+1. +// This formula is valid for ideal gases with e=e(T) and h=h(T). For +// incompressible fluids, e=e(T) holds, too, but enthalpy would need correction +// terms accounting for pressure variations. fvScalarMatrix EEqn ( @@ -26,13 +28,13 @@ fvScalarMatrix EEqn ) : -dpdt ) - // net heat transfer from particles to fluid - Qsource + - QCoeff*T - fvm::Sp(QCoeff/Cpv, he) - // thermal conduction of the fluid with effective conductivity + + QCoeff/Cpv*he + - fvc::laplacian(voidfraction*thCond,T) - fvm::laplacian(voidfraction*thCond/Cpv,he) - // + particle-fluid energy transfer due to work - // + fluid energy dissipation due to shearing + + fvc::laplacian(voidfraction*thCond/Cpv,he) == // + combustion->Sh() fvOptions(rho, he) diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/Allrun.sh b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/Allrun.sh new file mode 100755 index 00000000..a6dd87c7 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/Allrun.sh @@ -0,0 +1,31 @@ +#!/bin/bash +#------------------------------------------------------------------------------ +# allrun script for bubbling fluidized bed test case +# run bubblingFluidizedBed +# Daniel Queteschiner - October 2021 +#------------------------------------------------------------------------------ + +#- define variables +casePath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")" + +#- include functions +source $CFDEM_PROJECT_DIR/etc/functions.sh + +# check if mesh was built +if [ -f "$casePath/CFD/constant/polyMesh/points" ]; then + echo "mesh was built before - using old mesh" +else + echo "mesh needs to be built" + cd $casePath/CFD + blockMesh +fi + +if [ -f "$casePath/DEM/post/restart/liggghts.restart" ]; then + echo "LIGGGHTS init was run before - using existing restart file" +else + #- run serial DEM + $casePath/DEMrun.sh +fi + +#- run parallel CFD-DEM +bash $casePath/parCFDDEMrun.sh diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/Ksl b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/Ksl new file mode 100644 index 00000000..1ad28db4 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/Ksl @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object Ksl; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -3 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wall + { + type zeroGradient; + } + + inlet + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/U b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/U new file mode 100644 index 00000000..9fe31502 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/U @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + wall + { + type slip; + } + + inlet + { + type uniformFixedValue; + uniformValue table + ( + (0.000 (0 0 0.0066)) + (0.100 (0 0 0.6600)) // 2x minimum fluidization velocity + ); + } + + outlet + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/Us b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/Us new file mode 100644 index 00000000..6ea9a0c0 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/Us @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object Us; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + wall + { + type zeroGradient; + } + + inlet + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/p b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/p new file mode 100644 index 00000000..9a861acf --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/p @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wall + { + type zeroGradient; + } + + inlet + { + type zeroGradient; + } + + outlet + { + type fixedValue; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/rho b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/rho new file mode 100644 index 00000000..1164ee98 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/rho @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object rho; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -3 0 0 0 0 0]; + +internalField uniform 1.13; + +boundaryField +{ + wall + { + type zeroGradient; + } + + inlet + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/voidfraction b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/voidfraction new file mode 100644 index 00000000..2b26e7df --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/0/voidfraction @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object voidfraction; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + wall + { + type zeroGradient; + } + + inlet + { + type fixedValue; + value uniform 1; + } + + outlet + { + type fixedValue; + value uniform 1; + } +} + +// ************************************************************************* // diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/constant/couplingProperties b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/constant/couplingProperties new file mode 100644 index 00000000..72038e1e --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/constant/couplingProperties @@ -0,0 +1,110 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object couplingProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// sub-models & settings + +syncMode false; + +modelType "A"; + +couplingInterval 100; + +voidFractionModel divided; + +locateModel engine; + +meshMotionModel noMeshMotion; + +regionModel allRegion; + +IOModel off; + +probeModel off; + +dataExchangeModel twoWayMPI; + +averagingModel dense; + +clockModel off; + +smoothingModel off; + +forceModels +( + BeetstraDrag + gradPForce + viscForce +); + +momCoupleModels +( + implicitCouple +); + +turbulenceModelType "turbulenceProperties"; + + +// sub-model properties + +implicitCoupleProps +{ + velFieldName "U"; + granVelFieldName "Us"; + voidfractionFieldName "voidfraction"; +} + + +gradPForceProps +{ + pFieldName "p"; + voidfractionFieldName "voidfraction"; + velocityFieldName "U"; + interpolation true; +} + +viscForceProps +{ + velocityFieldName "U"; + interpolation true; +} + +BeetstraDragProps +{ + velFieldName "U"; + granVelFieldName "Us"; + rhoParticle 1000.; + voidfractionFieldName "voidfraction"; + interpolation true; +} + +engineProps +{ + treeSearch true; +} + +dividedProps +{ + alphaMin 0.01; + scaleUpVol 1.0; +} + +twoWayMPIProps +{ + liggghtsPath "../DEM/in.liggghts_run"; +} + +// ************************************************************************* // diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/constant/g b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/constant/g new file mode 100644 index 00000000..e518a680 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ 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/cfdemSolverPiso/bubblingFluidizedBed/CFD/constant/liggghtsCommands b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/constant/liggghtsCommands new file mode 100644 index 00000000..ad428137 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/constant/liggghtsCommands @@ -0,0 +1,31 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object liggghtsCommands; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +liggghtsCommandModels +( + runLiggghts + writeLiggghts +); + +writeLiggghtsProps +{ + writeLast off; + writeName "post/restart/liggghts.restartCFDEM"; + overwrite on; +} + +// ************************************************************************* // diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/constant/transportProperties b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/constant/transportProperties new file mode 100644 index 00000000..8dbbeef3 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/constant/transportProperties @@ -0,0 +1,23 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +transportModel Newtonian; + +nu [0 2 -1 0 0 0 0] 14.88e-6; + + +// ************************************************************************* // diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/constant/turbulenceProperties b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/constant/turbulenceProperties new file mode 100644 index 00000000..0bbe2983 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/constant/turbulenceProperties @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/system/blockMeshDict b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/system/blockMeshDict new file mode 100644 index 00000000..0abe4794 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/system/blockMeshDict @@ -0,0 +1,70 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + ( 0.0432 0.0000 -0.0048 ) + ( 0.0000 0.0000 -0.0048 ) + ( 0.0000 0.0100 -0.0048 ) + ( 0.0432 0.0100 -0.0048 ) + + ( 0.0432 0.0000 0.1200 ) + ( 0.0000 0.0000 0.1200 ) + ( 0.0000 0.0100 0.1200 ) + ( 0.0432 0.0100 0.1200 ) +); + +blocks +( + hex (1 0 3 2 5 4 7 6) (12 1 26) simpleGrading (1 1 1) +); + +boundary +( + inlet + { + type patch; + faces + ( + (0 1 2 3) + ); + } + + outlet + { + type patch; + faces + ( + (4 7 6 5) + ); + } + + wall + { + type wall; + faces + ( + (1 0 4 5) + (0 3 7 4) + (3 2 6 7) + (2 1 5 6) + ); + } +); + +// ************************************************************************* // diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/system/controlDict b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/system/controlDict new file mode 100644 index 00000000..194b180b --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/system/controlDict @@ -0,0 +1,85 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application cfdemSolverPiso; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 2.1; + +deltaT 0.00025; + +writeControl adjustableRunTime; + +writeInterval 0.003; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable true; + +adjustTimeStep no; + +maxCo 0.8; + + +functions +{ + probes + { + type probes; + functionObjectLibs ("libsampling.so"); + name probes; + probeLocations + ( + (0.0018 0.005 0.022) + (0.0054 0.005 0.022) + (0.0090 0.005 0.022) + (0.0126 0.005 0.022) + (0.0162 0.005 0.022) + (0.0198 0.005 0.022) + (0.0234 0.005 0.022) + (0.0270 0.005 0.022) + (0.0306 0.005 0.022) + (0.0342 0.005 0.022) + (0.0378 0.005 0.022) + (0.0414 0.005 0.022) + ); + + // fields to be probed + fields (voidfraction); + + // write at same frequency as fields + writeControl timeStep; + writeInterval 12; + } + +} +// ************************************************************************* // diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/system/decomposeParDict b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/system/decomposeParDict new file mode 100644 index 00000000..16a95ac8 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/system/decomposeParDict @@ -0,0 +1,28 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 4; + +method simple; + +simpleCoeffs +{ + n (2 1 2); + delta 0.001; +} + +// ************************************************************************* // diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/system/fvSchemes b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/system/fvSchemes new file mode 100644 index 00000000..03fb28d2 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/system/fvSchemes @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default Gauss linear; + div(phi,U) Gauss limitedLinearV 1; + div(phi,k) Gauss limitedLinear 1; + div(phi,epsilon) Gauss limitedLinear 1; + div(phi,R) Gauss limitedLinear 1; + div(phi,nuTilda) Gauss limitedLinear 1; +} + +laplacianSchemes +{ + default Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p ; +} + + +// ************************************************************************* // diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/system/fvSolution b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/system/fvSolution new file mode 100644 index 00000000..d9570188 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/CFD/system/fvSolution @@ -0,0 +1,61 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: 6 + \\/ M anipulation | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + p + { + solver PCG; + preconditioner DIC; + tolerance 1e-06; + relTol 0.1; + } + + pFinal + { + $p; + tolerance 1e-06; + relTol 0; + } + + "(U|k|epsilon|R|nuTilda)" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-05; + relTol 0; + } + + "(voidfraction|Us|Ksl|dSmoothing|UsNext|voidfractionNext)" + { + solver PCG; + preconditioner DIC; + tolerance 1e-05; + relTol 0; + } +} + +PISO +{ + nCorrectors 4; + nNonOrthogonalCorrectors 1; + pRefCell 0; + pRefValue 0; +} + + +// ************************************************************************* // diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/DEM/in.liggghts_init b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/DEM/in.liggghts_init new file mode 100644 index 00000000..7048ad8c --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/DEM/in.liggghts_init @@ -0,0 +1,105 @@ +################################################################################ +# brief: Bubbling fluidized bed - creating particle bed # +# # +# Bubbling in a fluidized bed of Geldart D particles (d=1.2mm, rho=1000kg/m3) # +# Cf. Case B by Khawaja, H.A., J. Comput. Multiph. Flows 7(4), 227-240 (2015) # +# # +# authors: Daniel Queteschiner # +# date: Oct 2021 # +# copyright: 2021- JKU Linz # +################################################################################ + +echo both + +# define the attributes associated with the particles, +# 'granular' (or 'sphere') style uses diameter, mass and angular velocity +atom_style granular + +# use an array to map particle IDs to local storage index, +atom_modify map array + +# set simulation domain to be fixed in x y z +boundary f f f + +# save communication by turning off Newton's 3rd law for pairwise interaction, +# note: this setting only influences communication between procs, Newton's +# 3rd law is still used for contact force calculations +newton off + +# use a single value for ghost particle cutoff distance and +# enable velocity to be communicated with ghost particles +communicate single vel yes + +# set unit system to SI +units si + +# define the region used as simulation domain (min/max X, min/max Y, min/max Z) +region domain block 0.0 0.0432 0.0 0.01 0.0 0.1248 units box + +# create the simulation domain and 2 material types (with friction/frictionless) +create_box 2 domain + +# specify the skin distance for neighbor list generation +neighbor 0.0003 bin +neigh_modify delay 0 + + +# define the material properties required for granular pair styles +# type 1 = particles / walls with friction +# type 2 = frictionless walls +fix m1 all property/global youngsModulus peratomtype 1.2e8 1.2e8 +fix m2 all property/global poissonsRatio peratomtype 0.3 0.3 +fix m3 all property/global coefficientRestitution peratomtypepair 2 0.986 0.986 0.986 0.986 +fix m4 all property/global coefficientFriction peratomtypepair 2 0.1 0.0 0.0 0.0 + +# specify contact model to use +pair_style gran model hertz tangential history +pair_coeff * * + +# set the time step +timestep 0.0000025 + +# apply gravity +fix gravity all gravity 9.81 vector 0.0 0.0 -1.0 + +# define walls +fix xwall1 all wall/gran model hertz tangential history primitive type 1 xplane 0.0000 +fix xwall2 all wall/gran model hertz tangential history primitive type 1 xplane 0.0432 +fix ywall1 all wall/gran model hertz tangential history primitive type 2 yplane 0.0000 +fix ywall2 all wall/gran model hertz tangential history primitive type 2 yplane 0.0100 +fix zwall1 all wall/gran model hertz tangential history primitive type 1 zplane 0.0000 + +# particle distributions and insertion +fix pts1 all particletemplate/sphere 367127 atom_type 1 density constant 1000 radius constant 0.0006 +fix pdd1 all particledistribution/discrete 681573 1 pts1 1.0 + +fix ins all insert/pack seed 4763687 distributiontemplate pdd1 vel constant 0.0 0.0 -0.15 & + insert_every once overlapcheck yes all_in yes particles_in_region 9240 region domain + +# use constant NVE integration to update position, velocity and angular velocity +fix integr all nve/sphere + +# output settings, include kinetic energy +thermo_style custom step atoms ke + +# set frequency of output +thermo 1000 + +# ignore particles leaving the simulation domain, +# do not normalize thermodynamic output values by the number of atoms +thermo_modify lost ignore norm no +compute_modify thermo_temp dynamic yes + +# insert the first particles so that dump is not empty +run 1 + +# output particle properties +dump dmp all custom/vtk 5000 post/liggghts_init_*.vtk id type x y z vx vy vz & + fx fy fz omegax omegay omegaz radius + +# run up to 160000 time steps (0.4s) +run 160000 upto + +# write the restart file +write_restart post/restart/liggghts.restart + diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/DEM/in.liggghts_run b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/DEM/in.liggghts_run new file mode 100644 index 00000000..c357e398 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/DEM/in.liggghts_run @@ -0,0 +1,95 @@ +################################################################################ +# brief: Bubbling fluidized bed - particles driven by air flow # +# # +# Bubbling in a fluidized bed of Geldart D particles (d=1.2mm, rho=1000kg/m3) # +# Cf. Case B by Khawaja, H.A., J. Comput. Multiph. Flows 7(4), 227-240 (2015) # +# # +# authors: Daniel Queteschiner # +# date: Oct 2021 # +# copyright: 2021- JKU Linz # +################################################################################ + +log ../DEM/log.liggghts +thermo_log ../DEM/post/thermo.txt + +# define the attributes associated with the particles, +# 'granular' (or 'sphere') style uses diameter, mass and angular velocity +atom_style granular + +# use an array to map particle IDs to local storage index, +atom_modify map array + +# set simulation domain to be fixed in x y z +boundary f f f + +# save communication by turning off Newton's 3rd law for pairwise interaction, +# note: this setting only influences communication between procs, Newton's +# 3rd law is still used for contact force calculations +newton off + +# use a single value for ghost particle cutoff distance and +# enable velocity to be communicated with ghost particles +communicate single vel yes + +# set unit system to SI +units si + +# specify domain decomposition for parallel execution +processors 2 1 2 + +# read the restart file +read_restart ../DEM/post/restart/liggghts.restart + +# specify the skin distance for neighbor list generation +neighbor 0.0003 bin +neigh_modify delay 0 + +# define the material properties required for granular pair styles +# type 1 = particles / walls with friction +# type 2 = frictionless walls +fix m1 all property/global youngsModulus peratomtype 1.2e8 1.2e8 +fix m2 all property/global poissonsRatio peratomtype 0.3 0.3 +fix m3 all property/global coefficientRestitution peratomtypepair 2 0.986 0.986 0.986 0.986 +fix m4 all property/global coefficientFriction peratomtypepair 2 0.1 0.0 0.0 0.0 + +# specify contact model to use +pair_style gran model hertz tangential history +pair_coeff * * + +# set the time step +timestep 0.0000025 + +# apply gravity +fix gravity all gravity 9.81 vector 0.0 0.0 -1.0 + +# define walls +fix xwall1 all wall/gran model hertz tangential history primitive type 1 xplane 0.0000 +fix xwall2 all wall/gran model hertz tangential history primitive type 1 xplane 0.0432 +fix ywall1 all wall/gran model hertz tangential history primitive type 2 yplane 0.0000 +fix ywall2 all wall/gran model hertz tangential history primitive type 2 yplane 0.0100 +fix zwall1 all wall/gran model hertz tangential history primitive type 1 zplane 0.0000 + +# set up coupling to CFD simulation +fix cfd all couple/cfd couple_every 100 mpi +fix cfd2 all couple/cfd/force/implicit + +# use constant NVE integration to update position, velocity and angular velocity +fix integr all nve/sphere + +# output settings, include kinetic energy +thermo_style custom step atoms ke + +# set frequency of output +thermo 1000 + +# ignore particles leaving the simulation domain, +# do not normalize thermodynamic output values by the number of atoms +thermo_modify lost ignore norm no +compute_modify thermo_temp dynamic yes + +# output particle properties (same frequency as CFD output) +dump dmp all custom/vtk 1200 ../DEM/post/liggghts_run_*.vtk id type x y z vx vy vz & + fx fy fz omegax omegay omegaz radius + +# run 1 time step to initialize all DEM systems +run 1 diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/DEM/post/restart/.gitignore b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/DEM/post/restart/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/DEMrun.sh b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/DEMrun.sh new file mode 100755 index 00000000..0462bec5 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/DEMrun.sh @@ -0,0 +1,26 @@ +#!/bin/bash +#------------------------------------------------------------------------------ +# DEMrun script for bubbling fluidized bed test case +# init bubblingFluidizedBed +# Daniel Queteschiner - October 2021 +#------------------------------------------------------------------------------ + +#- source CFDEM env vars +. ~/.bashrc + +#- include functions +source $CFDEM_PROJECT_DIR/etc/functions.sh + +#------------------------------------------------------------------------------ +#- define variables +casePath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")" +logpath="$casePath" +headerText="run_liggghts_init_DEM" +logfileName="log_$headerText" +solverName="in.liggghts_init" +debugMode="off" +#------------------------------------------------------------------------------ + +#- call function to run DEM case +DEMrun $logpath $logfileName $casePath $headerText $solverName $debugMode + diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/README.md b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/README.md new file mode 100644 index 00000000..5cc965b4 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/README.md @@ -0,0 +1,25 @@ +## Bubbling fluidized bed test case + +based on +* Khawaja, H.A., J. Comput. Multiph. Flows 7(4), 227-240 (2015) +* Khawaja, H.A. and Moatamedi, M., Multiphysics Modelling of Fluid-Particulate Systems, 51-74 (2020) + +#### Case B + +parameter | value +----------|------ +box width | 0.0432 m +box height | 0.1248 m +box thickness | 0.01 m +number of fluid cells | 12 x 26 x 1 +number of particles | 9240 +fluid density | 1.13 kg/m3 +DEM time step size | 2.5e-6 s +particle diameter | 1.2 mm +particle density | 1000 kg/m3 +Youngs modulus | 1.2e8 Pa +Poisson ratio | 0.3 +coeff. of restitution | 0.986 +coeff. of friction | 0.1 +unfluidized bed height | 0.03 m +bed expansion observed in experiment | 0.05 m diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/parCFDDEMrun.sh b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/parCFDDEMrun.sh new file mode 100755 index 00000000..06342944 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/parCFDDEMrun.sh @@ -0,0 +1,44 @@ +#!/bin/bash +#------------------------------------------------------------------------------ +# parCFDDEMrun script for bubbling fluidized bed test case +# run bubblingFluidizedBed CFD-DEM +# Daniel Queteschiner - October 2021 +#------------------------------------------------------------------------------ + +#- source CFDEM env vars +. ~/.bashrc + +#- include functions +source $CFDEM_PROJECT_DIR/etc/functions.sh + +#------------------------------------------------------------------------------ +#- define variables +casePath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")" +logpath=$casePath +headerText="run_parallel_cfdemSolverPiso_bubblingFluidizedBed_CFDDEM" +logfileName="log_$headerText" +solverName="cfdemSolverPiso" +nrProcs="4" +machineFileName="none" # yourMachinefileName | none +debugMode="off" # on | off| strict +runCleanUp="false" +#------------------------------------------------------------------------------ + +#- call function to run a parallel CFD-DEM case +parCFDDEMrun $logpath $logfileName $casePath $headerText $solverName $nrProcs $machineFileName $debugMode + +if [ $runCleanUp == "true" ] + then + #- clean up case + echo "deleting data at: $casePath :\n" + source $WM_PROJECT_DIR/bin/tools/CleanFunctions + cd $casePath/CFD + cleanCase + rm $casePath/DEM/post/*.* + touch $casePath/DEM/post/.gitignore + rm $casePath/DEM/post/restart/*.* + touch $casePath/DEM/post/restart/.gitignore +fi + +echo "done" + diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/postrun.sh b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/postrun.sh new file mode 100755 index 00000000..2a474cc3 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/postrun.sh @@ -0,0 +1,2 @@ +#!/bin/bash +# nothing to see here \ No newline at end of file diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/prerun.sh b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/prerun.sh new file mode 100755 index 00000000..7b370ae7 --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/prerun.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +#- define variables +casePath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")" + +# check if mesh was built +if [ -f "$casePath/CFD/constant/polyMesh/boundary" ]; then + echo "mesh was built before - using old mesh" +else + echo "mesh needs to be built" + cd $casePath/CFD + blockMesh +fi \ No newline at end of file diff --git a/tutorials/cfdemSolverPiso/bubblingFluidizedBed/run.config b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/run.config new file mode 100644 index 00000000..032fedbb --- /dev/null +++ b/tutorials/cfdemSolverPiso/bubblingFluidizedBed/run.config @@ -0,0 +1,19 @@ +{ + "type" : "CFDEMcoupling", + "runs" : [ + { + "name" : "liggghts-init", + "input_script" : "DEM/in.liggghts_init", + "type" : "liggghts/serial" + }, + { + "name" : "cfdemrun", + "depends_on" : "liggghts-init", + "solver" : "cfdemSolverPiso", + "type" : "CFDEMcoupling/mpi", + "nprocs" : 4, + "pre_scripts" : ["prerun.sh"], + "post_scripts" : ["postrun.sh"] + } + ] +}