diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files index 14ed51d6ba..3cf1a5d3cf 100644 --- a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files +++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/Make/files @@ -15,6 +15,7 @@ dragModels/Tenneti/Tenneti.C dragModels/TomiyamaKataokaZunSakaguchi/TomiyamaKataokaZunSakaguchi.C dragModels/WenYu/WenYu.C dragModels/IshiiZuber/IshiiZuber.C +dragModels/AttouFerschneider/AttouFerschneider.C swarmCorrections/swarmCorrection/swarmCorrection.C swarmCorrections/swarmCorrection/newSwarmCorrection.C diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.C new file mode 100644 index 0000000000..bef8afa3ba --- /dev/null +++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.C @@ -0,0 +1,179 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2018 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "AttouFerschneider.H" +#include "phasePair.H" +#include "phaseSystem.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(AttouFerschneider, 0); + addToRunTimeSelectionTable(dragModel, AttouFerschneider, dictionary); +} +} + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +Foam::tmp +Foam::dragModels::AttouFerschneider::KGasLiquid +( + const phaseModel& gas, + const phaseModel& liquid +) const +{ + const phaseModel& solid = gas.fluid().phases()[solidName_]; + + const volScalarField oneMinusGas(max(1 - gas, liquid.residualAlpha())); + const volScalarField cbrtR(solid/oneMinusGas); + const volScalarField magURel(mag(gas.U() - liquid.U())); + + return + E2_*gas.mu()*sqr(oneMinusGas/solid.d())*sqr(cbrtR) + /max(gas, gas.residualAlpha()) + + E2_*gas.rho()*magURel*(1 - gas)/solid.d()*cbrtR; +} + + +Foam::tmp +Foam::dragModels::AttouFerschneider::KGasSolid +( + const phaseModel& gas, + const phaseModel& solid +) const +{ + const volScalarField oneMinusGas(max(1 - gas, solid.residualAlpha())); + const volScalarField cbrtR(solid/oneMinusGas); + + return + E1_*gas.mu()*sqr(oneMinusGas/solid.d())*sqr(cbrtR) + /max(gas, gas.residualAlpha()) + + E2_*gas.rho()*mag(gas.U())*(1 - gas)/solid.d()*cbrtR; +} + + +Foam::tmp +Foam::dragModels::AttouFerschneider::KLiquidSolid +( + const phaseModel& liquid, + const phaseModel& solid +) const +{ + const phaseModel& gas = liquid.fluid().phases()[gasName_]; + + return + E1_*liquid.mu()*sqr(max(solid, solid.residualAlpha())/solid.d()) + /max(liquid, liquid.residualAlpha()) + + E2_*liquid.rho()*mag(gas.U())*solid/solid.d(); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::AttouFerschneider::AttouFerschneider +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject), + gasName_(dict.lookup("gas")), + liquidName_(dict.lookup("liquid")), + solidName_(dict.lookup("solid")), + E1_("E1", dimless, dict), + E2_("E1", dimless, dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::AttouFerschneider::~AttouFerschneider() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp +Foam::dragModels::AttouFerschneider::CdRe() const +{ + FatalErrorInFunction + << "Not implemented." + << "Drag coefficient is not defined for the AttouFerschneider model." + << exit(FatalError); + + return tmp(nullptr); +} + + +Foam::tmp +Foam::dragModels::AttouFerschneider::K() const +{ + switch (Pair::compare(pair_, phasePairKey(gasName_, liquidName_))) + { + case 1: + return KGasLiquid(pair_.phase1(), pair_.phase2()); + case -1: + return KGasLiquid(pair_.phase2(), pair_.phase1()); + } + + switch (Pair::compare(pair_, phasePairKey(gasName_, solidName_))) + { + case 1: + return KGasSolid(pair_.phase1(), pair_.phase2()); + case -1: + return KGasSolid(pair_.phase2(), pair_.phase1()); + } + + switch (Pair::compare(pair_, phasePairKey(liquidName_, solidName_))) + { + case 1: + return KLiquidSolid(pair_.phase1(), pair_.phase2()); + case -1: + return KLiquidSolid(pair_.phase2(), pair_.phase1()); + } + + FatalErrorInFunction + << "The pair does not contain two of out of the gas, liquid and solid " + << "phase models." + << exit(FatalError); + + return tmp(nullptr); +} + + +Foam::tmp +Foam::dragModels::AttouFerschneider::Kf() const +{ + return fvc::interpolate(K()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.H b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.H new file mode 100644 index 0000000000..453321f035 --- /dev/null +++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialModels/dragModels/AttouFerschneider/AttouFerschneider.H @@ -0,0 +1,155 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2018 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +Class + Foam::dragModels::AttouFerschneider + +Description + Attou and Ferschneider's Drag model for film flow through packed beds. The + implementation follows the desciption of Gunjal and Ranade, who, in the + reference below, formulate the model in more convenient terms. + + Reference: + \verbatim + "Modeling of laboratory and commercial scale hydro-processing reactors + using CFD" + Gunjal, P.R., Ranade, V.V., + Chemical Engineering Science + Volume 62, Issues 18-20, September-October 2007, pp. 5512 - 5526 + \endverbatim + +SourceFiles + AttouFerschneider.C + +\*---------------------------------------------------------------------------*/ + +#ifndef AttouFerschneider_H +#define AttouFerschneider_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; +class phaseModel; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class AttouFerschneider Declaration +\*---------------------------------------------------------------------------*/ + +class AttouFerschneider +: + public dragModel +{ + // Private data + + //- Name of the gaseous phase + const word gasName_; + + //- Name of the liquidphase + const word liquidName_; + + //- Name of the solid phase + const word solidName_; + + //- Ergun constant 1 + const dimensionedScalar E1_; + + //- Ergun constant 2 + const dimensionedScalar E2_; + + + // Private member functions + + //- Return the momentum transfer coefficient between gas and liquid + virtual tmp KGasLiquid + ( + const phaseModel& gas, + const phaseModel& liquid + ) const; + + //- Return the momentum transfer coefficient between gas and solid + virtual tmp KGasSolid + ( + const phaseModel& gas, + const phaseModel& solid + ) const; + + //- Return the momentum transfer coefficient between liquid and solid + virtual tmp KLiquidSolid + ( + const phaseModel& liquid, + const phaseModel& solid + ) const; + + +public: + + //- Runtime type information + TypeName("AttouFerschneider"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + AttouFerschneider + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~AttouFerschneider(); + + + // Member Functions + + //- Drag coefficient + virtual tmp CdRe() const; + + //- The drag coefficient used in the momentum equation + virtual tmp K() const; + + //- The drag coefficient used in the face-momentum equations + virtual tmp Kf() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.air new file mode 100644 index 0000000000..77f13e270e --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.air @@ -0,0 +1,29 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + "(bottom|top|walls)" + { + type zeroGradient; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.solid b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.solid new file mode 100644 index 0000000000..ad72183d7d --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.solid @@ -0,0 +1,29 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + "(bottom|top|walls)" + { + type zeroGradient; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.water new file mode 100644 index 0000000000..86e7f20818 --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/T.water @@ -0,0 +1,29 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object T.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + "(bottom|top|walls)" + { + type zeroGradient; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.air new file mode 100644 index 0000000000..7e419e9413 --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.air @@ -0,0 +1,29 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + object U.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + "(bottom|top|walls)" + { + type noSlip; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.water new file mode 100644 index 0000000000..2bf5abf150 --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/U.water @@ -0,0 +1,29 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volVectorField; + object U.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + "(bottom|top|walls)" + { + type noSlip; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.air.orig b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.air.orig new file mode 100644 index 0000000000..8e9abf899b --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.air.orig @@ -0,0 +1,29 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.5; + +boundaryField +{ + "(bottom|top|walls)" + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.solid.orig b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.solid.orig new file mode 100644 index 0000000000..83652cfb3d --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.solid.orig @@ -0,0 +1,29 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object alpha.solid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.5; + +boundaryField +{ + "(bottom|top|walls)" + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.water.orig b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.water.orig new file mode 100644 index 0000000000..ea380a7cfe --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/alpha.water.orig @@ -0,0 +1,29 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object alpha.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + "(bottom|top|walls)" + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p new file mode 100644 index 0000000000..14df0bd61d --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p @@ -0,0 +1,30 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 1e5; + +boundaryField +{ + "(bottom|top|walls)" + { + type calculated; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p_rgh b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p_rgh new file mode 100644 index 0000000000..182d4ef480 --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/0/p_rgh @@ -0,0 +1,30 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 1e5; + +boundaryField +{ + "(bottom|top|walls)" + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/Allrun b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/Allrun new file mode 100755 index 0000000000..ed61ac5435 --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/Allrun @@ -0,0 +1,11 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +runApplication blockMesh +runApplication setFields +runApplication $(getApplication) + +#------------------------------------------------------------------------------ diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/g b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/g new file mode 100644 index 0000000000..0cc222ca34 --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/g @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + location "constant"; + object g; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -2 0 0 0 0]; +value (0 -9.81 0); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/phaseProperties b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/phaseProperties new file mode 100644 index 0000000000..a34d27b991 --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/phaseProperties @@ -0,0 +1,193 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +type heatAndMomentumTransferMultiphaseSystem; + +phases (air water solid); + +air +{ + type pureIsothermalPhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + + residualAlpha 1e-6; +} + +water +{ + type pureIsothermalPhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-6; +} + +solid +{ + type pureStationaryIsothermalPhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-3; + } + + residualAlpha 1e-6; +} + +blending +{ + default + { + type none; + continuousPhase none; + } +} + +surfaceTension +( + (air and water) + { + type constant; + sigma 0.07; + } + + (air and solid) + { + type constant; + sigma 0; + } + + (solid and water) + { + type constant; + sigma 0; + } +); + +aspectRatio +( + (air in water) + { + type constant; + E0 1.0; + } + + (water in air) + { + type constant; + E0 1.0; + } + + (air in solid) + { + type constant; + E0 1.0; + } + + (solid in air) + { + type constant; + E0 1.0; + } + + (water in solid) + { + type constant; + E0 1.0; + } + + (solid in water) + { + type constant; + E0 1.0; + } +); + +drag +( + (air and water) + { + type AttouFerschneider; + gas air; + liquid water; + solid solid; + E1 280; + E2 4.8; + swarmCorrection + { + type none; + } + } + + (air and solid) + { + type AttouFerschneider; + gas air; + liquid water; + solid solid; + E1 280; + E2 4.8; + swarmCorrection + { + type none; + } + } + + (water and solid) + { + type AttouFerschneider; + gas air; + liquid water; + solid solid; + E1 280; + E2 4.8; + swarmCorrection + { + type none; + } + } +); + +virtualMass +(); + +heatTransfer +(); + +lift +(); + +wallLubrication +(); + +turbulentDispersion +(); + +interfaceCompression +(); + +pMin 10000; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.air new file mode 100644 index 0000000000..eb9bb8ab73 --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.air @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.solid b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.solid new file mode 100644 index 0000000000..19a2516e6b --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.solid @@ -0,0 +1,52 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.solid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState rhoConst; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + molWeight 100; + } + equationOfState + { + rho 2500; + } + thermodynamics + { + Cp 6000; + Hf 0; + } + transport + { + mu 0; + Pr 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.water new file mode 100644 index 0000000000..31d8cf0589 --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/thermophysicalProperties.water @@ -0,0 +1,53 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + molWeight 18; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Cp 4195; + Hf 0; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/turbulenceProperties.air b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/turbulenceProperties.air new file mode 100644 index 0000000000..1296429b72 --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/turbulenceProperties.air @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/turbulenceProperties.water b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/turbulenceProperties.water new file mode 100644 index 0000000000..7f0d75a82f --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/constant/turbulenceProperties.water @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/blockMeshDict b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/blockMeshDict new file mode 100644 index 0000000000..b3ecd3c924 --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/blockMeshDict @@ -0,0 +1,61 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + (0 0 0) + (0.15 0 0) + (0.15 1 0) + (0 1 0) + (0 0 0.1) + (0.15 0 0.1) + (0.15 1 0.1) + (0 1 0.1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + patch top + ( + (3 7 6 2) + ) + patch bottom + ( + (1 5 4 0) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/controlDict b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/controlDict new file mode 100644 index 0000000000..bfe74d9a29 --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/controlDict @@ -0,0 +1,54 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingMultiphaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 0.5; + +writeControl runTime; + +writeInterval 1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep no; + +maxCo 0.5; + +maxDeltaT 1; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/fvSchemes b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/fvSchemes new file mode 100644 index 0000000000..3356dda13b --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/fvSchemes @@ -0,0 +1,61 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + "div\(phi,alpha.*\)" Gauss vanLeer; + "div\(phir,alpha.*,alpha.*\)" Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; + + "div\(\(\(\(alpha.*\*thermo:rho.*\)*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/fvSolution b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/fvSolution new file mode 100644 index 0000000000..bed262448b --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/fvSolution @@ -0,0 +1,78 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "alpha.*" + { + nAlphaCorr 1; + nAlphaSubCycles 2; + } + + p_rgh + { + solver GAMG; + smoother DIC; + tolerance 1e-8; + relTol 0; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } + + "e.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-8; + relTol 0; + minIter 1; + } +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; + pRefCell 0; + pRefValue 1e5; + partialElimination true; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/setFieldsDict b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/setFieldsDict new file mode 100644 index 0000000000..72c3cb866a --- /dev/null +++ b/tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/trickleBed/system/setFieldsDict @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +defaultFieldValues +( + volScalarFieldValue alpha.air 0.5 + volScalarFieldValue alpha.water 0.0 + volScalarFieldValue alpha.solid 0.5 +); + +regions +( + boxToCell + { + box (0 0.5001 -0.1) (0.15 1.0 0.1); + fieldValues + ( + volScalarFieldValue alpha.air 0.4 + volScalarFieldValue alpha.water 0.1 + volScalarFieldValue alpha.solid 0.5 + ); + } +); + + +// ************************************************************************* //