diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwclean b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwclean new file mode 100755 index 0000000000000000000000000000000000000000..ac1a48d1a8e04429798b107d93682def88ecfc3a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwclean @@ -0,0 +1,11 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory +set -x + +wclean libso phaseSystems +wclean libso interfacialModels +wclean libso interfacialCompositionModels +wclean libso phaseCompressibleTurbulenceModels +wclean + +# ----------------------------------------------------------------- end-of-file diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwmake b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwmake new file mode 100755 index 0000000000000000000000000000000000000000..2566b5a1eb0c768e79d638cde3c1f3b22529fc72 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Allwmake @@ -0,0 +1,13 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory +set -x + +wmakeLnInclude interfacialModels +wmakeLnInclude interfacialCompositionModels +wmake libso phaseSystems +wmake libso interfacialModels +wmake libso interfacialCompositionModels +wmake libso phaseCompressibleTurbulenceModels +wmake + +# ----------------------------------------------------------------- end-of-file diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNo.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNo.H new file mode 100644 index 0000000000000000000000000000000000000000..b8a238ec9da37ac84ef067d05c81d12078f41159 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNo.H @@ -0,0 +1,51 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Global + CourantNo + +Description + Calculates and outputs the mean and maximum Courant Numbers. + +\*---------------------------------------------------------------------------*/ + +scalar CoNum = 0.0; +scalar meanCoNum = 0.0; + +if (mesh.nInternalFaces()) +{ + scalarField sumPhi + ( + fvc::surfaceSum(mag(phi))().internalField() + ); + + CoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue(); + + meanCoNum = + 0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue(); +} + +Info<< "Courant Number mean: " << meanCoNum + << " max: " << CoNum << endl; + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNos.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNos.H new file mode 100644 index 0000000000000000000000000000000000000000..248f4c0602f62d6d273b62df33c41b322e90889d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/CourantNos.H @@ -0,0 +1,12 @@ + #include "CourantNo.H" + +{ + scalar UrCoNum = 0.5*gMax + ( + fvc::surfaceSum(mag(phi1 - phi2))().internalField()/mesh.V().field() + )*runTime.deltaTValue(); + + Info<< "Max Ur Courant Number = " << UrCoNum << endl; + + CoNum = max(CoNum, UrCoNum); +} diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H new file mode 100644 index 0000000000000000000000000000000000000000..f8c6edce9d4617b5b816c21cdda6fbac1c58886b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H @@ -0,0 +1,47 @@ +{ + autoPtr<phaseSystem::heatTransferTable> + heatTransferPtr(fluid.heatTransfer()); + + phaseSystem::heatTransferTable& + heatTransfer = heatTransferPtr(); + + { + tmp<fvScalarMatrix> he1Eqn(phase1.heEqn()); + + if (he1Eqn.valid()) + { + he1Eqn = + ( + he1Eqn + == + *heatTransfer[phase1.name()] + + fvOptions(alpha1, rho1, phase1.thermo().he()) + ); + + he1Eqn->relax(); + fvOptions.constrain(he1Eqn()); + he1Eqn->solve(); + } + } + + { + tmp<fvScalarMatrix> he2Eqn(phase2.heEqn()); + + if (he2Eqn.valid()) + { + he2Eqn = + ( + he2Eqn + == + *heatTransfer[phase2.name()] + + fvOptions(alpha2, rho2, phase2.thermo().he()) + ); + + he2Eqn->relax(); + fvOptions.constrain(he2Eqn()); + he2Eqn->solve(); + } + } +} + +fluid.correctThermo(); diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..66b068b0c38ac36f70dabbc46575d18e5ae59fe8 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/files @@ -0,0 +1,3 @@ +reactingTwoPhaseEulerFoam.C + +EXE = $(FOAM_APPBIN)/reactingTwoPhaseEulerFoam diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/options b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..f1f3b8dc8e38fafd84d8f3241372780f644ec8ff --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/Make/options @@ -0,0 +1,24 @@ +EXE_INC = \ + -IphaseSystems/lnInclude \ + -IinterfacialModels/lnInclude \ + -IinterfacialCompositionModels/lnInclude \ + -IphaseCompressibleTurbulenceModels/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fvOptions/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude + +EXE_LIBS = \ + -lreactingTwoPhaseSystem \ + -lreactingEulerianInterfacialModels \ + -lreactingEulerianInterfacialCompositionModels \ + -lphaseReactingTurbulenceModels \ + -lfiniteVolume \ + -lfvOptions \ + -lmeshTools \ + -lsampling diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/YEqns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/YEqns.H new file mode 100644 index 0000000000000000000000000000000000000000..176f491f372912615197bb9f1d23b6581598ac93 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/YEqns.H @@ -0,0 +1,50 @@ +{ + autoPtr<phaseSystem::massTransferTable> + massTransferPtr(fluid.massTransfer()); + + phaseSystem::massTransferTable& + massTransfer(massTransferPtr()); + + PtrList<volScalarField>& Y1 = phase1.Y(); + PtrList<volScalarField>& Y2 = phase2.Y(); + + forAll(Y1, i) + { + tmp<fvScalarMatrix> Y1iEqn(phase1.YiEqn(Y1[i])); + + if (Y1iEqn.valid()) + { + Y1iEqn = + ( + Y1iEqn + == + *massTransfer[Y1[i].name()] + + fvOptions(alpha1, rho1, Y1[i]) + ); + + Y1iEqn->relax(); + Y1iEqn->solve(mesh.solver("Yi")); + } + } + + forAll(Y2, i) + { + tmp<fvScalarMatrix> Y2iEqn(phase2.YiEqn(Y2[i])); + + if (Y2iEqn.valid()) + { + Y2iEqn = + ( + Y2iEqn + == + *massTransfer[Y2[i].name()] + + fvOptions(alpha2, rho2, Y2[i]) + ); + + Y2iEqn->relax(); + Y2iEqn->solve(mesh.solver("Yi")); + } + } + + fluid.massTransfer(); // updates interfacial mass flow rates +} diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/correctContErrs.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/correctContErrs.H new file mode 100644 index 0000000000000000000000000000000000000000..6aeb5d024bfcfc48f5747caa6a7703012a14bba1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/correctContErrs.H @@ -0,0 +1,7 @@ +phase1.continuityError() = + fvc::ddt(alpha1, rho1) + fvc::div(alphaRhoPhi1) + - (fvOptions(alpha1, rho1)&rho1); + +phase2.continuityError() = + fvc::ddt(alpha2, rho2) + fvc::div(alphaRhoPhi2) + - (fvOptions(alpha2, rho2)&rho2); diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createFields.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createFields.H new file mode 100644 index 0000000000000000000000000000000000000000..41eb6e0e746630f887b3405a05d500f1f04de1a7 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createFields.H @@ -0,0 +1,73 @@ + #include "readGravitationalAcceleration.H" + #include "readhRef.H" + + Info<< "Creating phaseSystem\n" << endl; + + autoPtr<twoPhaseSystem> fluidPtr + ( + twoPhaseSystem::New(mesh) + ); + twoPhaseSystem& fluid = fluidPtr(); + + phaseModel& phase1 = fluid.phase1(); + phaseModel& phase2 = fluid.phase2(); + + volScalarField& alpha1 = phase1; + volScalarField& alpha2 = phase2; + + volVectorField& U1 = phase1.U(); + surfaceScalarField& phi1 = phase1.phi(); + surfaceScalarField& alphaPhi1 = phase1.alphaPhi(); + surfaceScalarField& alphaRhoPhi1 = phase1.alphaRhoPhi(); + + volVectorField& U2 = phase2.U(); + surfaceScalarField& phi2 = phase2.phi(); + surfaceScalarField& alphaPhi2 = phase2.alphaPhi(); + surfaceScalarField& alphaRhoPhi2 = phase2.alphaRhoPhi(); + + surfaceScalarField& phi = fluid.phi(); + + dimensionedScalar pMin + ( + "pMin", + dimPressure, + fluid.lookup("pMin") + ); + + #include "gh.H" + + rhoThermo& thermo1 = phase1.thermo(); + rhoThermo& thermo2 = phase2.thermo(); + + volScalarField& p = thermo1.p(); + + volScalarField& rho1 = thermo1.rho(); + const volScalarField& psi1 = thermo1.psi(); + + volScalarField& rho2 = thermo2.rho(); + const volScalarField& psi2 = thermo2.psi(); + + Info<< "Reading field p_rgh\n" << endl; + volScalarField p_rgh + ( + IOobject + ( + "p_rgh", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh + ); + + label pRefCell = 0; + scalar pRefValue = 0.0; + setRefCell + ( + p, + p_rgh, + pimple.dict(), + pRefCell, + pRefValue + ); diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createMRF.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createMRF.H new file mode 100644 index 0000000000000000000000000000000000000000..16c7667be5e0cdebbe9cb373f567f1ce877960e7 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/createMRF.H @@ -0,0 +1,3 @@ + IOMRFZoneList MRF(mesh); + MRF.correctBoundaryVelocity(U1); + MRF.correctBoundaryVelocity(U2); diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/generatePairsAndSubModels b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/generatePairsAndSubModels new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..41ac32274eef6e3df8f52d65d48aa0962949ca21 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/files @@ -0,0 +1,20 @@ +massTransferModels/massTransferModel/massTransferModel.C +massTransferModels/massTransferModel/newMassTransferModel.C +massTransferModels/Frossling/Frossling.C +massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C + +surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C +surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C +surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C + +interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C +interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C +interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C + +saturationPressureModels/saturationPressureModel/saturationPressureModel.C +saturationPressureModels/saturationPressureModel/newSaturationPressureModel.C +saturationPressureModels/Antoine/Antoine.C +saturationPressureModels/AntoineExtended/AntoineExtended.C +saturationPressureModels/ArdenBuck/ArdenBuck.C + +LIB = $(FOAM_LIBBIN)/libreactingEulerianInterfacialCompositionModels diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/options b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..088d504706bbd4e2989e16e4bc6982ca225edffc --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/Make/options @@ -0,0 +1,27 @@ +EXE_INC = \ + -I../phaseSystems/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/thermophysicalFunctions/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/radiationModels/lnInclude \ + -I$(LIB_SRC)/transportModels/incompressible/lnInclude \ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude + +LIB_LIBS = \ + -lreactingTwoPhaseSystem \ + -lfluidThermophysicalModels \ + -lreactionThermophysicalModels \ + -lspecie diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.C new file mode 100644 index 0000000000000000000000000000000000000000..06754e2f86b3629c82694654c0cc88d2b4b5ca86 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.C @@ -0,0 +1,144 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Henry.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>::Henry +( + const dictionary& dict, + const phasePair& pair +) +: + InterfaceCompositionModel<Thermo, OtherThermo>(dict, pair), + k_(dict.lookup("k")), + YSolvent_ + ( + IOobject + ( + IOobject::groupName("YSolvent", pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh() + ), + pair.phase1().mesh(), + dimensionedScalar("one", dimless, 1) + ) +{ + if (k_.size() != this->speciesNames_.size()) + { + FatalErrorIn + ( + "template<class Thermo, class OtherThermo> " + "Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>:: " + "Henry " + "( " + "const dictionary& dict, " + "const phasePair& pair " + ")" + ) << "Differing number of species and solubilities" + << exit(FatalError); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>::~Henry() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +void Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>::update +( + const volScalarField& Tf +) +{ + YSolvent_ = scalar(1); + + forAllConstIter(hashedWordList, this->speciesNames_, iter) + { + YSolvent_ -= Yf(*iter, Tf); + } +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>::Yf +( + const word& speciesName, + const volScalarField& Tf +) const +{ + if (this->speciesNames_.contains(speciesName)) + { + const label index = this->speciesNames_[speciesName]; + + return + k_[index] + *this->otherThermo_.composition().Y(speciesName) + *this->otherThermo_.rhoThermo::rho() + /this->thermo_.rhoThermo::rho(); + } + else + { + return + YSolvent_ + *this->thermo_.composition().Y(speciesName); + } +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::Henry<Thermo, OtherThermo>::YfPrime +( + const word& speciesName, + const volScalarField& Tf +) const +{ + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + IOobject::groupName("YfPrime", this->pair_.name()), + this->pair_.phase1().mesh().time().timeName(), + this->pair_.phase1().mesh() + ), + this->pair_.phase1().mesh(), + dimensionedScalar("zero", dimless/dimTemperature, 0) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.H new file mode 100644 index 0000000000000000000000000000000000000000..8d9c6a73faf00a407a3eea5bf23131a9cc8e9cd8 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Henry/Henry.H @@ -0,0 +1,129 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::Henry + +Description + Henry's law for gas solubiliy in liquid. The concentration of the dissolved + species in the liquid is proportional to its partial pressure in the gas. + The dimensionless constant of proportionality between concentrations on + each side of the interface is \f$k\f$, and is given for each species. + Mixing in the gas is assumed to be ideal. + +SourceFiles + Henry.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Henry_H +#define Henry_H + +#include "InterfaceCompositionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace interfaceCompositionModels +{ + +/*---------------------------------------------------------------------------*\ + Class Henry Declaration +\*---------------------------------------------------------------------------*/ + +template<class Thermo, class OtherThermo> +class Henry +: + public InterfaceCompositionModel<Thermo, OtherThermo> +{ +private: + + // Private data + + //- Solubility coefficients + const scalarList k_; + + //- The remaining solvent species fraction + volScalarField YSolvent_; + + +public: + + //- Runtime type information + TypeName("Henry"); + + // Constructors + + //- Construct from components + Henry + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Henry(); + + + // Member Functions + + //- Update the composition + virtual void update(const volScalarField& Tf); + + //- The interface species fraction + virtual tmp<volScalarField> Yf + ( + const word& speciesName, + const volScalarField& Tf + ) const; + + //- The interface species fraction derivative w.r.t. temperature + virtual tmp<volScalarField> YfPrime + ( + const word& speciesName, + const volScalarField& Tf + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace interfaceCompositionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "Henry.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.C new file mode 100644 index 0000000000000000000000000000000000000000..1bfcd4de0c0aa2b63e3b332724ec56ee929966e1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.C @@ -0,0 +1,248 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "InterfaceCompositionModel.H" +#include "phaseModel.H" +#include "phasePair.H" +#include "pureMixture.H" +#include "multiComponentMixture.H" +#include "rhoThermo.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +template<class ThermoType> +const typename Foam::multiComponentMixture<ThermoType>::thermoType& +Foam::InterfaceCompositionModel<Thermo, OtherThermo>::getLocalThermo +( + const word& speciesName, + const multiComponentMixture<ThermoType>& globalThermo +) const +{ + return + globalThermo.getLocalThermo + ( + globalThermo.species() + [ + speciesName + ] + ); +} + + +template<class Thermo, class OtherThermo> +template<class ThermoType> +const typename Foam::pureMixture<ThermoType>::thermoType& +Foam::InterfaceCompositionModel<Thermo, OtherThermo>::getLocalThermo +( + const word& speciesName, + const pureMixture<ThermoType>& globalThermo +) const +{ + return globalThermo.cellMixture(0); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::InterfaceCompositionModel<Thermo, OtherThermo>::InterfaceCompositionModel +( + const dictionary& dict, + const phasePair& pair +) +: + interfaceCompositionModel(dict, pair), + thermo_ + ( + pair.phase1().mesh().lookupObject<Thermo> + ( + IOobject::groupName(basicThermo::dictName, pair.phase1().name()) + ) + ), + otherThermo_ + ( + pair.phase2().mesh().lookupObject<OtherThermo> + ( + IOobject::groupName(basicThermo::dictName, pair.phase2().name()) + ) + ), + Le_("Le", dimless, dict.lookup("Le")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::InterfaceCompositionModel<Thermo, OtherThermo>:: +~InterfaceCompositionModel() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::InterfaceCompositionModel<Thermo, OtherThermo>::dY +( + const word& speciesName, + const volScalarField& Tf +) const +{ + return + Yf(speciesName, Tf) + - thermo_.composition().Y() + [ + thermo_.composition().species()[speciesName] + ]; +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::InterfaceCompositionModel<Thermo, OtherThermo>::D +( + const word& speciesName +) const +{ + const typename Thermo::thermoType& localThermo = + getLocalThermo + ( + speciesName, + thermo_ + ); + + const volScalarField& p(thermo_.p()); + + const volScalarField& T(thermo_.T()); + + tmp<volScalarField> tmpD + ( + new volScalarField + ( + IOobject + ( + IOobject::groupName("D", pair_.name()), + p.time().timeName(), + p.mesh() + ), + p.mesh(), + dimensionedScalar("zero", dimArea/dimTime, 0) + ) + ); + + volScalarField& D(tmpD()); + + forAll(p, cellI) + { + D[cellI] = + localThermo.alphah(p[cellI], T[cellI]) + /localThermo.rho(p[cellI], T[cellI]); + } + + D /= Le_; + + return tmpD; +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::InterfaceCompositionModel<Thermo, OtherThermo>::L +( + const word& speciesName, + const volScalarField& Tf +) const +{ + const typename Thermo::thermoType& localThermo = + getLocalThermo + ( + speciesName, + thermo_ + ); + const typename OtherThermo::thermoType& otherLocalThermo = + getLocalThermo + ( + speciesName, + otherThermo_ + ); + + const volScalarField& p(thermo_.p()); + const volScalarField& otherP(otherThermo_.p()); + + tmp<volScalarField> tmpL + ( + new volScalarField + ( + IOobject + ( + IOobject::groupName("L", pair_.name()), + p.time().timeName(), + p.mesh() + ), + p.mesh(), + dimensionedScalar("zero", dimEnergy/dimMass, 0) + ) + ); + + volScalarField& L(tmpL()); + + forAll(p, cellI) + { + L[cellI] = + localThermo.Ha(p[cellI], Tf[cellI]) + - otherLocalThermo.Ha(otherP[cellI], Tf[cellI]); + } + + return tmpL; +} + + +template<class Thermo, class OtherThermo> +void Foam::InterfaceCompositionModel<Thermo, OtherThermo>::addMDotL +( + const volScalarField& K, + const volScalarField& Tf, + volScalarField& mDotL, + volScalarField& mDotLPrime +) const +{ + forAllConstIter(hashedWordList, this->speciesNames_, iter) + { + volScalarField rhoKDL + ( + thermo_.rhoThermo::rho() + *K + *D(*iter) + *L(*iter, Tf) + ); + + mDotL += rhoKDL*dY(*iter, Tf); + mDotLPrime += rhoKDL*YfPrime(*iter, Tf); + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.H new file mode 100644 index 0000000000000000000000000000000000000000..4c2c4ad3de92c1cc5b0b7c1ea5a017825c0f974f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModel.H @@ -0,0 +1,216 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::InterfaceCompositionModel + +Description + Base class for interface composition models, templated on the two + thermodynamic models either side of the interface. + +SourceFiles + InterfaceCompositionModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef InterfaceCompositionModel_H +#define InterfaceCompositionModel_H + +#include "interfaceCompositionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phaseModel; +class phasePair; +template <class ThermoType> class pureMixture; +template <class ThermoType> class multiComponentMixture; + +/*---------------------------------------------------------------------------*\ + Class InterfaceCompositionModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class Thermo, class OtherThermo> +class InterfaceCompositionModel +: + public interfaceCompositionModel +{ +protected: + + // Private data + + //- Thermo + const Thermo& thermo_; + + //- Other Thermo + const OtherThermo& otherThermo_; + + //- Lewis number + const dimensionedScalar Le_; + + + // Private member functions + + //- Get a reference to the local thermo for a pure mixture + template<class ThermoType> + const typename pureMixture<ThermoType>::thermoType& + getLocalThermo + ( + const word& speciesName, + const pureMixture<ThermoType>& globalThermo + ) const; + + //- Get a reference to the local thermo for a multi component mixture + template<class ThermoType> + const typename multiComponentMixture<ThermoType>::thermoType& + getLocalThermo + ( + const word& speciesName, + const multiComponentMixture<ThermoType>& globalThermo + ) const; + + +public: + + // Constructors + + //- Construct from components + InterfaceCompositionModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + ~InterfaceCompositionModel(); + + + // Member Functions + + //- Mass fraction difference between the interface and the field + virtual tmp<volScalarField> dY + ( + const word& speciesName, + const volScalarField& Tf + ) const; + + //- Mass diffusivity + virtual tmp<volScalarField> D + ( + const word& speciesName + ) const; + + //- Latent heat + virtual tmp<volScalarField> L + ( + const word& speciesName, + const volScalarField& Tf + ) const; + + //- Add latent heat flow rate to total + virtual void addMDotL + ( + const volScalarField& K, + const volScalarField& Tf, + volScalarField& mDotL, + volScalarField& mDotLPrime + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// Instantiation for multi-component-multi-component pairs +#define makeInterfaceCompositionType(Type, Thermo, Comp, Mix, Phys, OtherThermo, OtherComp, OtherMix, OtherPhys)\ + \ + typedef Thermo<Comp, SpecieMixture<Mix<Phys> > > \ + Type##Thermo##Comp##Mix##Phys; \ + \ + typedef OtherThermo<OtherComp, OtherMix<OtherPhys> > \ + Type##Other##OtherThermo##OtherComp##OtherMix##OtherPhys; \ + \ + addInterfaceCompositionToRunTimeSelectionTable \ + ( \ + Type, \ + Type##Thermo##Comp##Mix##Phys, \ + Type##Other##OtherThermo##OtherComp##OtherMix##OtherPhys \ + ) + +// Instantiation for multi-component-single-component pairs +#define makeSpecieInterfaceCompositionType(Type, Thermo, Comp, Mix, Phys, OtherThermo, OtherComp, OtherMix, OtherPhys)\ + \ + typedef Thermo<Comp, SpecieMixture<Mix<Phys> > > \ + Type##Thermo##Comp##Mix##Phys; \ + \ + typedef OtherThermo<OtherComp, SpecieMixture<OtherMix<OtherPhys> > > \ + Type##Other##OtherThermo##OtherComp##OtherMix##OtherPhys; \ + \ + addInterfaceCompositionToRunTimeSelectionTable \ + ( \ + Type, \ + Type##Thermo##Comp##Mix##Phys, \ + Type##Other##OtherThermo##OtherComp##OtherMix##OtherPhys \ + ) + +// Addition to the run-time selection table +#define addInterfaceCompositionToRunTimeSelectionTable(Type, Thermo, OtherThermo)\ + \ + typedef Type<Thermo, OtherThermo> \ + Type##Thermo##OtherThermo; \ + \ + defineTemplateTypeNameAndDebugWithName \ + ( \ + Type##Thermo##OtherThermo, \ + ( \ + word(Type##Thermo##OtherThermo::typeName_()) + "<" \ + + word(Thermo::typeName) + "," \ + + word(OtherThermo::typeName) + ">" \ + ).c_str(), \ + 0 \ + ); \ + \ + addToRunTimeSelectionTable \ + ( \ + interfaceCompositionModel, \ + Type##Thermo##OtherThermo, \ + dictionary \ + ) + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "InterfaceCompositionModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C new file mode 100644 index 0000000000000000000000000000000000000000..c413e0c524a2b7bd8361e89371905c0d5ee3e47f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C @@ -0,0 +1,155 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "interfaceCompositionModel.H" +#include "InterfaceCompositionModel.H" +#include "Henry.H" +#include "NonRandomTwoLiquid.H" +#include "Raoult.H" +#include "Saturated.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "makeReactionThermo.H" + +#include "thermoPhysicsTypes.H" + +#include "rhoConst.H" +#include "perfectFluid.H" + +#include "pureMixture.H" +#include "multiComponentMixture.H" +#include "reactingMixture.H" +#include "SpecieMixture.H" + +#include "rhoThermo.H" +#include "rhoReactionThermo.H" +#include "heRhoThermo.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + typedef + constTransport + < + species::thermo + < + hConstThermo + < + perfectFluid<specie> + >, + sensibleInternalEnergy + > + > constFluidEThermoPhysics; +}; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + // multi-component liquid + makeReactionThermo + ( + rhoThermo, + rhoReactionThermo, + heRhoThermo, + multiComponentMixture, + constTransport, + sensibleInternalEnergy, + hConstThermo, + perfectFluid, + specie + ); +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + using namespace interfaceCompositionModels; + + // multi-component gas in the presence of a pure liquid + makeInterfaceCompositionType + ( + Saturated, + heRhoThermo, + rhoReactionThermo, + multiComponentMixture, + gasEThermoPhysics, + heRhoThermo, + rhoThermo, + pureMixture, + constFluidEThermoPhysics + ); + + // reacting gas in the presence of a pure liquid + makeInterfaceCompositionType + ( + Saturated, + heRhoThermo, + rhoReactionThermo, + reactingMixture, + gasEThermoPhysics, + heRhoThermo, + rhoThermo, + pureMixture, + constFluidEThermoPhysics + ); + + // multi-component gas in the presence of a multi-component liquid + makeSpecieInterfaceCompositionType + ( + Saturated, + heRhoThermo, + rhoReactionThermo, + multiComponentMixture, + constGasEThermoPhysics, + heRhoThermo, + rhoReactionThermo, + multiComponentMixture, + constFluidEThermoPhysics + ); + + // multi-component liquid in the presence of a multi-component gas + makeSpecieInterfaceCompositionType + ( + Henry, + heRhoThermo, + rhoReactionThermo, + multiComponentMixture, + constFluidEThermoPhysics, + heRhoThermo, + rhoReactionThermo, + multiComponentMixture, + constGasEThermoPhysics + ); +} + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.C new file mode 100644 index 0000000000000000000000000000000000000000..99783706f31665b3e1023ee6049bd686c122e3c9 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.C @@ -0,0 +1,274 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "NonRandomTwoLiquid.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::NonRandomTwoLiquid<Thermo, OtherThermo>:: +NonRandomTwoLiquid +( + const dictionary& dict, + const phasePair& pair +) +: + InterfaceCompositionModel<Thermo, OtherThermo>(dict, pair), + gamma1_ + ( + IOobject + ( + IOobject::groupName("gamma1", pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh() + ), + pair.phase1().mesh(), + dimensionedScalar("one", dimless, 1) + ), + gamma2_ + ( + IOobject + ( + IOobject::groupName("gamma2", pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh() + ), + pair.phase1().mesh(), + dimensionedScalar("one", dimless, 1) + ), + beta12_("", dimless/dimTemperature, 0), + beta21_("", dimless/dimTemperature, 0) +{ + if (this->speciesNames_.size() != 2) + { + FatalErrorIn + ( + "template<class Thermo, class OtherThermo>" + "Foam::interfaceCompositionModels::" + "NonRandomTwoLiquid<Thermo, OtherThermo>::" + "NonRandomTwoLiquid" + "( " + "const dictionary& dict, " + "const phasePair& pair " + ")" + ) << "NonRandomTwoLiquid model is suitable for two species only." + << exit(FatalError); + } + + species1Name_ = this->speciesNames_[0]; + species2Name_ = this->speciesNames_[1]; + + species1Index_ = this->thermo_.composition().species()[species1Name_]; + species2Index_ = this->thermo_.composition().species()[species2Name_]; + + alpha12_ = dimensionedScalar + ( + "alpha12", + dimless, + dict.subDict(species1Name_).lookup("alpha") + ); + alpha21_ = dimensionedScalar + ( + "alpha21", + dimless, + dict.subDict(species2Name_).lookup("alpha") + ); + + beta12_ = dimensionedScalar + ( + "beta12", + dimless/dimTemperature, + dict.subDict(species1Name_).lookup("beta") + ); + beta21_ = dimensionedScalar + ( + "beta21", + dimless/dimTemperature, + dict.subDict(species2Name_).lookup("beta") + ); + + saturationPressureModel12_.reset + ( + saturationPressureModel::New + ( + dict.subDict(species1Name_).subDict("interaction") + ).ptr() + ); + saturationPressureModel21_.reset + ( + saturationPressureModel::New + ( + dict.subDict(species2Name_).subDict("interaction") + ).ptr() + ); + + speciesModel1_.reset + ( + interfaceCompositionModel::New + ( + dict.subDict(species1Name_), + pair + ).ptr() + ); + + speciesModel2_.reset + ( + interfaceCompositionModel::New + ( + dict.subDict(species2Name_), + pair + ).ptr() + ); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::NonRandomTwoLiquid<Thermo, OtherThermo>:: +~NonRandomTwoLiquid() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +void +Foam::interfaceCompositionModels::NonRandomTwoLiquid<Thermo, OtherThermo>:: +update +( + const volScalarField& Tf +) +{ + volScalarField W(this->thermo_.composition().W()); + + volScalarField X1 + ( + this->thermo_.composition().Y(species1Index_) + *W + /this->thermo_.composition().W(species1Index_) + ); + + volScalarField X2 + ( + this->thermo_.composition().Y(species2Index_) + *W + /this->thermo_.composition().W(species2Index_) + ); + + volScalarField alpha12(alpha12_ + Tf*beta12_); + volScalarField alpha21(alpha21_ + Tf*beta21_); + + volScalarField tau12(saturationPressureModel12_->lnPSat(Tf)); + volScalarField tau21(saturationPressureModel21_->lnPSat(Tf)); + + volScalarField G12(exp(- alpha12*tau12)); + volScalarField G21(exp(- alpha21*tau21)); + + gamma1_ = + exp + ( + sqr(X2) + *( + tau21*sqr(G21)/max(sqr(X1 + X2*G21), SMALL) + + tau12*G12/max(sqr(X2 + X1*G12), SMALL) + ) + ); + gamma2_ = + exp + ( + sqr(X1) + *( + tau12*sqr(G12)/max(sqr(X2 + X1*G12), SMALL) + + tau21*G21/max(sqr(X1 + X2*G21), SMALL) + ) + ); +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::NonRandomTwoLiquid<Thermo, OtherThermo>::Yf +( + const word& speciesName, + const volScalarField& Tf +) const +{ + if (speciesName == species1Name_) + { + return + this->otherThermo_.composition().Y(speciesName) + *speciesModel1_->Yf(speciesName, Tf) + *gamma1_; + } + else if(speciesName == species2Name_) + { + return + this->otherThermo_.composition().Y(speciesName) + *speciesModel2_->Yf(speciesName, Tf) + *gamma2_; + } + else + { + return + this->thermo_.composition().Y(speciesName) + *(scalar(1) - Yf(species1Name_, Tf) - Yf(species2Name_, Tf)); + } +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::NonRandomTwoLiquid<Thermo, OtherThermo>:: +YfPrime +( + const word& speciesName, + const volScalarField& Tf +) const +{ + if (speciesName == species1Name_) + { + return + this->otherThermo_.composition().Y(speciesName) + *speciesModel1_->YfPrime(speciesName, Tf) + *gamma1_; + } + else if(speciesName == species2Name_) + { + return + this->otherThermo_.composition().Y(speciesName) + *speciesModel2_->YfPrime(speciesName, Tf) + *gamma2_; + } + else + { + return + - this->thermo_.composition().Y(speciesName) + *(YfPrime(species1Name_, Tf) + YfPrime(species2Name_, Tf)); + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.H new file mode 100644 index 0000000000000000000000000000000000000000..d35829c77d15bbb39e184fb7b4d8a422fafd820f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/NonRandomTwoLiquid/NonRandomTwoLiquid.H @@ -0,0 +1,167 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::NonRandomTwoLiquid + +Description + Non ideal law for the mixing of two species. A separate composition model + is given for each species. The composition of a species is equal to the + value given by the model, scaled by the species fraction in the bulk of the + other phase, and multiplied by the activity coefficient for that species. + The gas behaviour is assumed ideal; i.e. the fugacity coefficient is taken + as equal to 1. + +SourceFiles + NonRandomTwoLiquid.C + +\*---------------------------------------------------------------------------*/ + +#ifndef NonRandomTwoLiquid_H +#define NonRandomTwoLiquid_H + +#include "InterfaceCompositionModel.H" +#include "saturationPressureModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace interfaceCompositionModels +{ + +/*---------------------------------------------------------------------------*\ + Class NonRandomTwoLiquid Declaration +\*---------------------------------------------------------------------------*/ + +template<class Thermo, class OtherThermo> +class NonRandomTwoLiquid +: + public InterfaceCompositionModel<Thermo, OtherThermo> +{ +private: + + // Private data + + //- Activity coefficient for species 1 + volScalarField gamma1_; + + //- Activity coefficient for species 2 + volScalarField gamma2_; + + //- Name of species 1 + word species1Name_; + + //- Name of species 2 + word species2Name_; + + //- Indiex of species 1 within this thermo + label species1Index_; + + //- Indiex of species 2 within this thermo + label species2Index_; + + //- Non-randomness constant parameter for species 1 + dimensionedScalar alpha12_; + + //- Non-randomness constant parameter for species 2 + dimensionedScalar alpha21_; + + //- Non-randomness linear paramater for species 1 + dimensionedScalar beta12_; + + //- Non-randomness linear paramater for species 2 + dimensionedScalar beta21_; + + //- Interaction parameter model for species 1 + autoPtr<saturationPressureModel> saturationPressureModel12_; + + //- Interaction parameter model for species 2 + autoPtr<saturationPressureModel> saturationPressureModel21_; + + //- Composition model for species 1 + autoPtr<interfaceCompositionModel> speciesModel1_; + + //- Composition model for species 2 + autoPtr<interfaceCompositionModel> speciesModel2_; + + +public: + + //- Runtime type information + TypeName("NonRandomTwoLiquid"); + + // Constructors + + //- Construct from components + NonRandomTwoLiquid + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~NonRandomTwoLiquid(); + + + // Member Functions + + //- Update the composition + virtual void update(const volScalarField& Tf); + + //- The interface species fraction + virtual tmp<volScalarField> Yf + ( + const word& speciesName, + const volScalarField& Tf + ) const; + + //- The interface species fraction derivative w.r.t. temperature + virtual tmp<volScalarField> YfPrime + ( + const word& speciesName, + const volScalarField& Tf + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace interfaceCompositionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "NonRandomTwoLiquid.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.C new file mode 100644 index 0000000000000000000000000000000000000000..e8f16ee9aefc9b3d52ef1ded167dd6a54cf15442 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.C @@ -0,0 +1,162 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Raoult.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::Raoult<Thermo, OtherThermo>::Raoult +( + const dictionary& dict, + const phasePair& pair +) +: + InterfaceCompositionModel<Thermo, OtherThermo>(dict, pair), + YNonVapour_ + ( + IOobject + ( + IOobject::groupName("YNonVapour", pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh() + ), + pair.phase1().mesh(), + dimensionedScalar("one", dimless, 1) + ), + YNonVapourPrime_ + ( + IOobject + ( + IOobject::groupName("YNonVapourPrime", pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh() + ), + pair.phase1().mesh(), + dimensionedScalar("zero", dimless/dimTemperature, 0) + ) +{ + forAllConstIter(hashedWordList, this->speciesNames_, iter) + { + speciesModels_.insert + ( + *iter, + autoPtr<interfaceCompositionModel> + ( + interfaceCompositionModel::New + ( + dict.subDict(*iter), + pair + ) + ) + ); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::Raoult<Thermo, OtherThermo>::~Raoult() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +void Foam::interfaceCompositionModels::Raoult<Thermo, OtherThermo>::update +( + const volScalarField& Tf +) +{ + YNonVapour_ = scalar(1); + + forAllIter + ( + HashTable<autoPtr<interfaceCompositionModel> >, + speciesModels_, + iter + ) + { + iter()->update(Tf); + + YNonVapour_ -= + this->otherThermo_.composition().Y(iter.key()) + *iter()->Yf(iter.key(), Tf); + + YNonVapourPrime_ -= + this->otherThermo_.composition().Y(iter.key()) + *iter()->YfPrime(iter.key(), Tf); + } +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::Raoult<Thermo, OtherThermo>::Yf +( + const word& speciesName, + const volScalarField& Tf +) const +{ + if (this->speciesNames_.contains(speciesName)) + { + return + this->otherThermo_.composition().Y(speciesName) + *speciesModels_[speciesName]->Yf(speciesName, Tf); + } + else + { + return + this->thermo_.composition().Y(speciesName) + *YNonVapour_; + } +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::Raoult<Thermo, OtherThermo>::YfPrime +( + const word& speciesName, + const volScalarField& Tf +) const +{ + if (this->speciesNames_.contains(speciesName)) + { + return + this->otherThermo_.composition().Y(speciesName) + *speciesModels_[speciesName]->YfPrime(speciesName, Tf); + } + else + { + return + this->otherThermo_.composition().Y(speciesName) + *YNonVapourPrime_; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.H new file mode 100644 index 0000000000000000000000000000000000000000..103c8d048c3860f4440f2d2d87aef527e245fa9d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Raoult/Raoult.H @@ -0,0 +1,130 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::Raoult + +Description + Raoult's law of ideal mixing. A separate composition model is given for + each species. The composition of a species is equal to the value given by + the model scaled by the species fraction in the bulk of the other phase. + +SourceFiles + Raoult.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Raoult_H +#define Raoult_H + +#include "InterfaceCompositionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace interfaceCompositionModels +{ + +/*---------------------------------------------------------------------------*\ + Class Raoult Declaration +\*---------------------------------------------------------------------------*/ + +template<class Thermo, class OtherThermo> +class Raoult +: + public InterfaceCompositionModel<Thermo, OtherThermo> +{ +private: + + // Private data + + //- Non-vapour species fraction + volScalarField YNonVapour_; + + //- Non-vapour species fraction derivative w.r.t. temperature + volScalarField YNonVapourPrime_; + + //- Species' individual composition models + HashTable<autoPtr<interfaceCompositionModel> > speciesModels_; + + +public: + + //- Runtime type information + TypeName("Raoult"); + + // Constructors + + //- Construct from components + Raoult + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Raoult(); + + + // Member Functions + + //- Update the composition + virtual void update(const volScalarField& Tf); + + //- The interface species fraction + virtual tmp<volScalarField> Yf + ( + const word& speciesName, + const volScalarField& Tf + ) const; + + //- The interface species fraction derivative w.r.t. temperature + virtual tmp<volScalarField> YfPrime + ( + const word& speciesName, + const volScalarField& Tf + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace interfaceCompositionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "Raoult.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C new file mode 100644 index 0000000000000000000000000000000000000000..f0f1b5d622d246edac8cf41be498553bbf6964fe --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.C @@ -0,0 +1,156 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Saturated.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>:: +wRatioByP() const +{ + return + this->thermo_.composition().W(saturatedIndex_) + /this->thermo_.composition().W() + /this->thermo_.p(); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::Saturated +( + const dictionary& dict, + const phasePair& pair +) +: + InterfaceCompositionModel<Thermo, OtherThermo>(dict, pair), + saturatedName_(this->speciesNames_[0]), + saturatedIndex_ + ( + this->thermo_.composition().species()[saturatedName_] + ), + saturationPressureModel_ + ( + saturationPressureModel::New + ( + dict.subDict("saturationPressure") + ) + ) +{ + if (this->speciesNames_.size() != 1) + { + FatalErrorIn + ( + "template<class Thermo, class OtherThermo>" + "Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::" + "Saturated" + "( " + "const dictionary& dict, " + "const phasePair& pair " + ")" + ) << "Saturated model is suitable for one species only." + << exit(FatalError); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::~Saturated() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class Thermo, class OtherThermo> +void +Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::update +( + const volScalarField& Tf +) +{ + // do nothing +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::Yf +( + const word& speciesName, + const volScalarField& Tf +) const +{ + if (saturatedName_ == speciesName) + { + return wRatioByP()*saturationPressureModel_->pSat(Tf); + } + else + { + const label speciesIndex + ( + this->thermo_.composition().species()[speciesName] + ); + + return + this->thermo_.Y()[speciesIndex] + *(scalar(1) - wRatioByP()*saturationPressureModel_->pSat(Tf)) + /max(scalar(1) - this->thermo_.Y()[saturatedIndex_], SMALL); + } +} + + +template<class Thermo, class OtherThermo> +Foam::tmp<Foam::volScalarField> +Foam::interfaceCompositionModels::Saturated<Thermo, OtherThermo>::YfPrime +( + const word& speciesName, + const volScalarField& Tf +) const +{ + if (saturatedName_ == speciesName) + { + return wRatioByP()*saturationPressureModel_->pSatPrime(Tf); + } + else + { + const label speciesIndex + ( + this->thermo_.composition().species()[speciesName] + ); + + return + - this->thermo_.Y()[speciesIndex] + *wRatioByP()*saturationPressureModel_->pSatPrime(Tf) + /max(scalar(1) - this->thermo_.Y()[saturatedIndex_], SMALL); + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.H new file mode 100644 index 0000000000000000000000000000000000000000..3ffdda86c2b8ec3ca705cdeab30332b27398fb4c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/Saturated/Saturated.H @@ -0,0 +1,137 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::Saturated + +Description + Model which uses a saturation pressure model for a single species to + calculate the interface composition. + +SourceFiles + Saturated.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Saturated_H +#define Saturated_H + +#include "InterfaceCompositionModel.H" +#include "saturationPressureModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace interfaceCompositionModels +{ + +/*---------------------------------------------------------------------------*\ + Class Saturated Declaration +\*---------------------------------------------------------------------------*/ + +template<class Thermo, class OtherThermo> +class Saturated +: + public InterfaceCompositionModel<Thermo, OtherThermo> +{ +protected: + + // Private data + + //- Saturated species name + word saturatedName_; + + //- Saturated species index + label saturatedIndex_; + + //- Saturation pressure model + autoPtr<saturationPressureModel> saturationPressureModel_; + + + // Private Member Functions + + //- Constant of propotionality between partial pressure and mass + // fraction + tmp<volScalarField> wRatioByP() const; + + +public: + + //- Runtime type information + TypeName("Saturated"); + + // Constructors + + //- Construct from components + Saturated + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Saturated(); + + + // Member Functions + + //- Update the composition + virtual void update(const volScalarField& Tf); + + //- The interface species fraction + virtual tmp<volScalarField> Yf + ( + const word& speciesName, + const volScalarField& Tf + ) const; + + //- The interface species fraction derivative w.r.t. temperature + virtual tmp<volScalarField> YfPrime + ( + const word& speciesName, + const volScalarField& Tf + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace interfaceCompositionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "Saturated.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C new file mode 100644 index 0000000000000000000000000000000000000000..383171ab5e276a031b6d58d6ad207ee246892ac1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.C @@ -0,0 +1,80 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "interfaceCompositionModel.H" +#include "phaseModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(interfaceCompositionModel, 0); + defineRunTimeSelectionTable(interfaceCompositionModel, dictionary); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::interfaceCompositionModel::interfaceCompositionModel +( + const dictionary& dict, + const phasePair& pair +) +: + pair_(pair), + speciesNames_(dict.lookup("species")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::interfaceCompositionModel::~interfaceCompositionModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +const Foam::hashedWordList& Foam::interfaceCompositionModel::species() const +{ + return speciesNames_; +} + + +bool Foam::interfaceCompositionModel::transports +( + word& speciesName +) const +{ + if (this->speciesNames_.contains(speciesName)) + { + return true; + } + + return false; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.H new file mode 100644 index 0000000000000000000000000000000000000000..bfbdee52b69f1c2389850fa574867334218b4d22 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/interfaceCompositionModel.H @@ -0,0 +1,182 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::interfaceCompositionModel + +Description + Generic base class for interface composition models. These models describe + the composition in phase 1 of the supplied pair at the interface with phase + 2. + +SourceFiles + interfaceCompositionModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef interfaceCompositionModel_H +#define interfaceCompositionModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "hashedWordList.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phaseModel; +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class interfaceCompositionModel Declaration +\*---------------------------------------------------------------------------*/ + +class interfaceCompositionModel +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + //- Names of the transferring species + const hashedWordList speciesNames_; + + +public: + + //- Runtime type information + TypeName("interfaceCompositionModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + interfaceCompositionModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + + // Constructors + + //- Construct from a dictionary and a phase pair + interfaceCompositionModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~interfaceCompositionModel(); + + + // Selectors + + static autoPtr<interfaceCompositionModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Update the composition + virtual void update(const volScalarField& Tf) = 0; + + //- Return the transferring species names + const hashedWordList& species() const; + + //- Returns whether the species is transported by the model and + // provides the name of the diffused species + bool transports + ( + word& speciesName + ) const; + + //- Interface mass fraction + virtual tmp<volScalarField> Yf + ( + const word& speciesName, + const volScalarField& Tf + ) const = 0; + + //- The interface mass fraction derivative w.r.t. temperature + virtual tmp<volScalarField> YfPrime + ( + const word& speciesName, + const volScalarField& Tf + ) const = 0; + + //- Mass fraction difference between the interface and the field + virtual tmp<volScalarField> dY + ( + const word& speciesName, + const volScalarField& Tf + ) const = 0; + + //- Mass diffusivity + virtual tmp<volScalarField> D + ( + const word& speciesName + ) const = 0; + + //- Latent heat + virtual tmp<volScalarField> L + ( + const word& speciesName, + const volScalarField& Tf + ) const = 0; + + //- Add latent heat flow rate to total + virtual void addMDotL + ( + const volScalarField& K, + const volScalarField& Tf, + volScalarField& mDotL, + volScalarField& mDotLPrime + ) const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C new file mode 100644 index 0000000000000000000000000000000000000000..8b04d8f5f1efe9658c6e45ac361e22cc163bd1fe --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/interfaceCompositionModels/interfaceCompositionModel/newInterfaceCompositionModel.C @@ -0,0 +1,69 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "interfaceCompositionModel.H" +#include "phasePair.H" +#include "rhoThermo.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::interfaceCompositionModel> +Foam::interfaceCompositionModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word interfaceCompositionModelType + ( + word(dict.lookup("type")) + + "<" + + pair.phase1().thermo().type() + + "," + + pair.phase2().thermo().type() + + ">" + ); + + Info<< "Selecting interfaceCompositionModel for " + << pair << ": " << interfaceCompositionModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(interfaceCompositionModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("interfaceCompositionModel::New") + << "Unknown interfaceCompositionModelType type " + << interfaceCompositionModelType << endl << endl + << "Valid interfaceCompositionModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.C new file mode 100644 index 0000000000000000000000000000000000000000..6398caa0e3d59689fe2b1b2e8b845368d038ff33 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.C @@ -0,0 +1,72 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Frossling.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace massTransferModels +{ + defineTypeNameAndDebug(Frossling, 0); + addToRunTimeSelectionTable(massTransferModel, Frossling, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::massTransferModels::Frossling::Frossling +( + const dictionary& dict, + const phasePair& pair +) +: + massTransferModel(dict, pair), + Le_("Le", dimless, dict.lookup("Le")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::massTransferModels::Frossling::~Frossling() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::massTransferModels::Frossling::K() const +{ + volScalarField Sh(scalar(2) + 0.552*sqrt(pair_.Re())*cbrt(Le_*pair_.Pr())); + + return 6.0*pair_.dispersed()*Sh/sqr(pair_.dispersed().d()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.H new file mode 100644 index 0000000000000000000000000000000000000000..d5190a67653ab9bdb7d4ba67d2664bf09e569065 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/Frossling/Frossling.H @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::massTransferModels::Frossling + +Description + Frossling correlation for turbulent mass transfer from the surface of a + sphere to the surrounding fluid. + +SourceFiles + Frossling.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Frossling_H +#define Frossling_H + +#include "massTransferModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace massTransferModels +{ + +/*---------------------------------------------------------------------------*\ + Class Frossling Declaration +\*---------------------------------------------------------------------------*/ + +class Frossling +: + public massTransferModel +{ +private: + + // Private data + + //- Lewis number + const dimensionedScalar Le_; + + +public: + + //- Runtime type information + TypeName("Frossling"); + + + // Constructors + + //- Construct from components + Frossling + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Frossling(); + + + // Member Functions + + //- The implicit mass transfer coefficient + virtual tmp<volScalarField> K() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace massTransferModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C new file mode 100644 index 0000000000000000000000000000000000000000..da38c966c96ac8ada98402520f16adfb5ce24304 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.C @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "massTransferModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(massTransferModel, 0); + defineRunTimeSelectionTable(massTransferModel, dictionary); +} + +const Foam::dimensionSet Foam::massTransferModel::dimK(0, -2, 0, 0, 0); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::massTransferModel::massTransferModel +( + const dictionary& dict, + const phasePair& pair +) +: + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::massTransferModel::~massTransferModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.H new file mode 100644 index 0000000000000000000000000000000000000000..53d12a549325f7b6d7c9585c0aa0d1e56ce395ca --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/massTransferModel.H @@ -0,0 +1,128 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::massTransferModel + +Description + +SourceFiles + massTransferModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef massTransferModel_H +#define massTransferModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class massTransferModel Declaration +\*---------------------------------------------------------------------------*/ + +class massTransferModel +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("massTransferModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + massTransferModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + + // Static data members + + //- Coefficient dimensions + static const dimensionSet dimK; + + + // Constructors + + //- Construct from a dictionary and a phase pair + massTransferModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~massTransferModel(); + + + // Selectors + + static autoPtr<massTransferModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- The implicit mass transfer coefficient + // Note: this has had the species mass diffusivity factored out + virtual tmp<volScalarField> K() const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/newMassTransferModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/newMassTransferModel.C new file mode 100644 index 0000000000000000000000000000000000000000..d8ee288ef08404687906ee0b5502509c5f6eb48e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/massTransferModel/newMassTransferModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "massTransferModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::massTransferModel> Foam::massTransferModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word massTransferModelType(dict.lookup("type")); + + Info<< "Selecting massTransferModel for " + << pair << ": " << massTransferModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(massTransferModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("massTransferModel::New") + << "Unknown massTransferModelType type " + << massTransferModelType << endl << endl + << "Valid massTransferModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C new file mode 100644 index 0000000000000000000000000000000000000000..e9ba5ccb2d04cc788cfeec624d5232654f1a89eb --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.C @@ -0,0 +1,75 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "sphericalMassTransfer.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace massTransferModels +{ + defineTypeNameAndDebug(sphericalMassTransfer, 0); + addToRunTimeSelectionTable + ( + massTransferModel, + sphericalMassTransfer, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::massTransferModels::sphericalMassTransfer::sphericalMassTransfer +( + const dictionary& dict, + const phasePair& pair +) +: + massTransferModel(dict, pair), + Le_("Le", dimless, dict.lookup("Le")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::massTransferModels::sphericalMassTransfer::~sphericalMassTransfer() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::massTransferModels::sphericalMassTransfer::K() const +{ + return 60.0*pair_.dispersed()/sqr(pair_.dispersed().d()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.H new file mode 100644 index 0000000000000000000000000000000000000000..f688b3cf14e1d410643252b6cad13d5789cbda76 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/massTransferModels/sphericalMassTransfer/sphericalMassTransfer.H @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::massTransferModels::sphericalMassTransfer + +Description + Model which applies an analytical solution for mass transfer from the + surface of a sphere to the fluid within the sphere. + +SourceFiles + sphericalMassTransfer.C + +\*---------------------------------------------------------------------------*/ + +#ifndef sphericalMassTransfer_H +#define sphericalMassTransfer_H + +#include "massTransferModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace massTransferModels +{ + +/*---------------------------------------------------------------------------*\ + Class sphericalMassTransfer Declaration +\*---------------------------------------------------------------------------*/ + +class sphericalMassTransfer +: + public massTransferModel +{ +private: + + // Private data + + //- Lewis number + const dimensionedScalar Le_; + + +public: + + //- Runtime type information + TypeName("spherical"); + + + // Constructors + + //- Construct from components + sphericalMassTransfer + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~sphericalMassTransfer(); + + + // Member Functions + + //- The implicit mass transfer coefficient + virtual tmp<volScalarField> K() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace massTransferModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.C new file mode 100644 index 0000000000000000000000000000000000000000..f77216b79af3555aa6106ac765c1e0fd5fca35d0 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.C @@ -0,0 +1,92 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Antoine.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace saturationPressureModels +{ + defineTypeNameAndDebug(Antoine, 0); + addToRunTimeSelectionTable(saturationPressureModel, Antoine, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::saturationPressureModels::Antoine::Antoine(const dictionary& dict) +: + saturationPressureModel(), + A_("A", dimless, dict.lookup("A")), + B_("B", dimTemperature, dict.lookup("B")), + C_("C", dimTemperature, dict.lookup("C")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::saturationPressureModels::Antoine::~Antoine() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::Antoine::pSat +( + const volScalarField& T +) const +{ + return + dimensionedScalar("one", dimPressure, 1) + *exp(A_ + B_/(C_ + T)); +} + + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::Antoine::pSatPrime +( + const volScalarField& T +) const +{ + return - pSat(T)*B_/sqr(C_ + T); +} + + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::Antoine::lnPSat +( + const volScalarField& T +) const +{ + return A_ + B_/(C_ + T); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.H new file mode 100644 index 0000000000000000000000000000000000000000..4c48c36d837e0bfebff2dc9c1e5e71d1470979fa --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/Antoine/Antoine.H @@ -0,0 +1,113 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::saturationPressureModels::Antoine + +Description + Antoine equation for the vapour pressure. + + \f[ + \log p = A + \frac{B}{C + T} + \f] + + Coefficients \f$A\f$, \f$B\f$ and \f$C\f$ are to be supplied and should be + suitable for natural logarithms and temperatures in Kelvin. + +SourceFiles + Antoine.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Antoine_H +#define Antoine_H + +#include "saturationPressureModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace saturationPressureModels +{ + +/*---------------------------------------------------------------------------*\ + Class Antoine Declaration +\*---------------------------------------------------------------------------*/ + +class Antoine +: + public saturationPressureModel +{ +protected: + + // Private data + + //- Constant A + dimensionedScalar A_; + + //- Constant B + dimensionedScalar B_; + + //- Constant C + dimensionedScalar C_; + + +public: + + //- Runtime type information + TypeName("Antoine"); + + // Constructors + + //- Construct from a dictionary + Antoine(const dictionary& dict); + + + //- Destructor + virtual ~Antoine(); + + + // Member Functions + + //- Saturation pressure + virtual tmp<volScalarField> pSat(const volScalarField& T) const; + + //- Saturation pressure derivetive w.r.t. temperature + virtual tmp<volScalarField> pSatPrime(const volScalarField& T) const; + + //- Natural log of the saturation pressure + virtual tmp<volScalarField> lnPSat(const volScalarField& T) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace saturationPressureModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.C new file mode 100644 index 0000000000000000000000000000000000000000..ea6065140bc5812b6a53ce988b6e9294faf287e1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.C @@ -0,0 +1,105 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "AntoineExtended.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace saturationPressureModels +{ + defineTypeNameAndDebug(AntoineExtended, 0); + addToRunTimeSelectionTable + ( + saturationPressureModel, + AntoineExtended, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::saturationPressureModels::AntoineExtended::AntoineExtended +( + const dictionary& dict +) +: + Antoine(dict), + D_("D", dimless, dict.lookup("D")), + F_("F", dimless, dict.lookup("F")), + E_("E", dimless/pow(dimTemperature, F_), dict.lookup("E")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::saturationPressureModels::AntoineExtended::~AntoineExtended() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::AntoineExtended::pSat +( + const volScalarField& T +) const +{ + return + dimensionedScalar("one", dimPressure/pow(dimTemperature, D_), 1) + *exp(A_ + B_/(C_ + T) + E_*pow(T, F_)) + *pow(T, D_); +} + + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::AntoineExtended::pSatPrime +( + const volScalarField& T +) const +{ + return pSat(T)*((D_ + E_*F_*pow(T, F_))/T - B_/sqr(C_ + T)); +} + + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::AntoineExtended::lnPSat +( + const volScalarField& T +) const +{ + return + A_ + + B_/(C_ + T) + + D_*log(T*dimensionedScalar("one", dimless/dimTemperature, 1)) + + E_*pow(T, F_); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.H new file mode 100644 index 0000000000000000000000000000000000000000..8221c4c85645f9fd4bc532b99457c75085689e02 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/AntoineExtended/AntoineExtended.H @@ -0,0 +1,115 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::saturationPressureModels::AntoineExtended + +Description + Extended Antoine equation for the vapour pressure. + + \f[ + \log (p) = A + \frac{B}{C + T} + D \log (T) + E T^F + \f] + + Coefficients \f$A\f$, \f$B\f$, \f$C\f$, \f$D\f$, \f$E\f$ and \f$F\f$ are + to be supplied and should be suitable for natural logarithms and + temperatures in Kelvin. + +SourceFiles + AntoineExtended.C + +\*---------------------------------------------------------------------------*/ + +#ifndef AntoineExtended_H +#define AntoineExtended_H + +#include "Antoine.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace saturationPressureModels +{ + +/*---------------------------------------------------------------------------*\ + Class AntoineExtended Declaration +\*---------------------------------------------------------------------------*/ + +class AntoineExtended +: + public Antoine +{ +private: + + // Private data + + //- Constant D + dimensionedScalar D_; + + //- Constant F + dimensionedScalar F_; + + //- Constant E + // (after F so F's dimensions can be used in the construction) + dimensionedScalar E_; + + +public: + + //- Runtime type information + TypeName("AntoineExtended"); + + // Constructors + + //- Construct from a dictionary + AntoineExtended(const dictionary& dict); + + + //- Destructor + virtual ~AntoineExtended(); + + + // Member Functions + + //- Saturation pressure + virtual tmp<volScalarField> pSat(const volScalarField& T) const; + + //- Saturation pressure derivetive w.r.t. temperature + virtual tmp<volScalarField> pSatPrime(const volScalarField& T) const; + + //- Natural log of the saturation pressure + virtual tmp<volScalarField> lnPSat(const volScalarField& T) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace saturationPressureModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.C new file mode 100644 index 0000000000000000000000000000000000000000..6b54b6a9b30962a9dc16af8d18e4d00f3ca48b82 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.C @@ -0,0 +1,112 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "ArdenBuck.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace saturationPressureModels +{ + defineTypeNameAndDebug(ArdenBuck, 0); + addToRunTimeSelectionTable(saturationPressureModel, ArdenBuck, dictionary); +} +} + +static const Foam::dimensionedScalar zeroC("", Foam::dimTemperature, 273.15); +static const Foam::dimensionedScalar A("", Foam::dimPressure, 611.21); +static const Foam::dimensionedScalar B("", Foam::dimless, 18.678); +static const Foam::dimensionedScalar C("", Foam::dimTemperature, 234.5); +static const Foam::dimensionedScalar D("", Foam::dimTemperature, 257.14); + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::ArdenBuck::xByTC +( + const volScalarField& TC +) const +{ + return (B - TC/C)/(D + TC); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::saturationPressureModels::ArdenBuck::ArdenBuck(const dictionary& dict) +: + saturationPressureModel() +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::saturationPressureModels::ArdenBuck::~ArdenBuck() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::ArdenBuck::pSat +( + const volScalarField& T +) const +{ + volScalarField TC(T - zeroC); + + return A*exp(TC*xByTC(TC)); +} + + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::ArdenBuck::pSatPrime +( + const volScalarField& T +) const +{ + volScalarField TC(T - zeroC); + + volScalarField x(xByTC(TC)); + + return A*exp(TC*x)*(D*x - TC/C)/(D + TC); +} + + +Foam::tmp<Foam::volScalarField> +Foam::saturationPressureModels::ArdenBuck::lnPSat +( + const volScalarField& T +) const +{ + volScalarField TC(T - zeroC); + + return log(A.value()) + TC*xByTC(TC); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.H new file mode 100644 index 0000000000000000000000000000000000000000..c0bb59d721aeb531116ba4b63bfc84153011dd1a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/ArdenBuck/ArdenBuck.H @@ -0,0 +1,100 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::saturationPressureModels::ArdenBuck + +Description + ArdenBuck equation for the vapour pressure of steam. + +SourceFiles + ArdenBuck.C + +\*---------------------------------------------------------------------------*/ + +#ifndef ArdenBuck_H +#define ArdenBuck_H + +#include "saturationPressureModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace saturationPressureModels +{ + +/*---------------------------------------------------------------------------*\ + Class ArdenBuck Declaration +\*---------------------------------------------------------------------------*/ + +class ArdenBuck +: + public saturationPressureModel +{ +private: + + // Private Member Functions + + //- Exponent divided by the temperature + tmp<volScalarField> xByTC(const volScalarField& TC) const; + + +public: + + //- Runtime type information + TypeName("ArdenBuck"); + + // Constructors + + //- Construct from a dictionary + ArdenBuck(const dictionary& dict); + + + //- Destructor + virtual ~ArdenBuck(); + + + // Member Functions + + //- Saturation pressure + virtual tmp<volScalarField> pSat(const volScalarField& T) const; + + //- Saturation pressure derivetive w.r.t. temperature + virtual tmp<volScalarField> pSatPrime(const volScalarField& T) const; + + //- Natural log of the saturation pressure + virtual tmp<volScalarField> lnPSat(const volScalarField& T) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace saturationPressureModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/newSaturationPressureModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/newSaturationPressureModel.C new file mode 100644 index 0000000000000000000000000000000000000000..713d0a6d8a1e2e5790c7dc11ae71b9ad5ae366bc --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/newSaturationPressureModel.C @@ -0,0 +1,57 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "saturationPressureModel.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::saturationPressureModel> Foam::saturationPressureModel::New +( + const dictionary& dict +) +{ + word saturationPressureModelType(dict.lookup("type")); + + Info<< "Selecting saturationPressureModel: " + << saturationPressureModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(saturationPressureModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("saturationPressureModel::New") + << "Unknown saturationPressureModelType type " + << saturationPressureModelType << endl << endl + << "Valid saturationPressureModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.C new file mode 100644 index 0000000000000000000000000000000000000000..08cf3239560af7a8e84f0b5010544753deba2bd3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.C @@ -0,0 +1,49 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "saturationPressureModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(saturationPressureModel, 0); + defineRunTimeSelectionTable(saturationPressureModel, dictionary); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::saturationPressureModel::saturationPressureModel() +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::saturationPressureModel::~saturationPressureModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.H new file mode 100644 index 0000000000000000000000000000000000000000..2b7d4cccc1725cc3a9dcdad7bfa09e8db98e1524 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/saturationPressureModels/saturationPressureModel/saturationPressureModel.H @@ -0,0 +1,127 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::saturationPressureModel + +Description + +SourceFiles + saturationPressureModel.C + newSaturationPressureModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef saturationPressureModel_H +#define saturationPressureModel_H + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class saturationPressureModel Declaration +\*---------------------------------------------------------------------------*/ + +class saturationPressureModel +{ + // Private Member Functions + + //- Disallow default bitwise copy construct + saturationPressureModel(const saturationPressureModel&); + + //- Disallow default bitwise assignment + void operator=(const saturationPressureModel&); + + +public: + + //- Runtime type information + TypeName("saturationPressureModel"); + + + //- Declare runtime construction + declareRunTimeSelectionTable + ( + autoPtr, + saturationPressureModel, + dictionary, + ( + const dictionary& dict + ), + (dict) + ); + + + // Constructors + + //- Construct null + saturationPressureModel(); + + + // Selectors + + //- Select null constructed + static autoPtr<saturationPressureModel> New(const dictionary& dict); + + + //- Destructor + virtual ~saturationPressureModel(); + + + // Member Functions + + //- Saturation pressure + virtual tmp<volScalarField> pSat + ( + const volScalarField& T + ) const = 0; + + //- Saturation pressure derivetive w.r.t. temperature + virtual tmp<volScalarField> pSatPrime + ( + const volScalarField& T + ) const = 0; + + //- Natural log of the saturation pressure + virtual tmp<volScalarField> lnPSat + ( + const volScalarField& T + ) const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C new file mode 100644 index 0000000000000000000000000000000000000000..99044f4cef5cf3450086c1c38f69ceabd9c4a055 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.C @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "constantSurfaceTensionCoefficient.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace surfaceTensionModels +{ + defineTypeNameAndDebug(constantSurfaceTensionCoefficient, 0); + addToRunTimeSelectionTable + ( + surfaceTensionModel, + constantSurfaceTensionCoefficient, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::surfaceTensionModels::constantSurfaceTensionCoefficient:: +constantSurfaceTensionCoefficient +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + surfaceTensionModel(dict, pair, registerObject), + sigma_("sigma", dimSigma, dict.lookup("sigma")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::surfaceTensionModels::constantSurfaceTensionCoefficient:: +~constantSurfaceTensionCoefficient() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::surfaceTensionModels::constantSurfaceTensionCoefficient::sigma() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "sigma", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + sigma_ + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H new file mode 100644 index 0000000000000000000000000000000000000000..636dc572932795d2e618db7d30d6e1dda3bb1540 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/constantSurfaceTensionCoefficient/constantSurfaceTensionCoefficient.H @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::constantSurfaceTensionCoefficient + +Description + Constant value surface tension model. + +SourceFiles + constantSurfaceTensionCoefficient.C + +\*---------------------------------------------------------------------------*/ + +#ifndef constantSurfaceTensionCoefficient_H +#define constantSurfaceTensionCoefficient_H + +#include "surfaceTensionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace surfaceTensionModels +{ + +/*---------------------------------------------------------------------------*\ + Class constantSurfaceTensionCoefficient Declaration +\*---------------------------------------------------------------------------*/ + +class constantSurfaceTensionCoefficient +: + public surfaceTensionModel +{ + // Private data + + //- Constant surface tension value + const dimensionedScalar sigma_; + + +public: + + //- Runtime type information + TypeName("constant"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + constantSurfaceTensionCoefficient + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~constantSurfaceTensionCoefficient(); + + + // Member Functions + + //- Aspect ratio + virtual tmp<volScalarField> sigma() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceTensionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C new file mode 100644 index 0000000000000000000000000000000000000000..0b01665863925b3e0f538c50460cdfabf8ed2a54 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/newSurfaceTensionModel.C @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "surfaceTensionModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::surfaceTensionModel > +Foam::surfaceTensionModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word surfaceTensionModelType(dict.lookup("type")); + + Info<< "Selecting surfaceTensionModel for " + << pair << ": " << surfaceTensionModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(surfaceTensionModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("surfaceTensionModel::New") + << "Unknown surfaceTensionModelType type " + << surfaceTensionModelType << endl << endl + << "Valid surfaceTensionModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair, true); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C new file mode 100644 index 0000000000000000000000000000000000000000..8d7a487495a787ef32fa17cadc5da186fa5b3793 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.C @@ -0,0 +1,79 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "surfaceTensionModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(surfaceTensionModel, 0); + defineRunTimeSelectionTable(surfaceTensionModel, dictionary); +} + +const Foam::dimensionSet Foam::surfaceTensionModel::dimSigma(1, 0, -2, 0, 0); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::surfaceTensionModel::surfaceTensionModel +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + regIOobject + ( + IOobject + ( + IOobject::groupName(typeName, pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + registerObject + ) + ), + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::surfaceTensionModel::~surfaceTensionModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +bool Foam::surfaceTensionModel::writeData(Ostream& os) const +{ + return os.good(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H new file mode 100644 index 0000000000000000000000000000000000000000..8fb8877d5ca45b7fbedf97a443ca0e8d3947d040 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialCompositionModels/surfaceTensionModels/surfaceTensionModel/surfaceTensionModel.H @@ -0,0 +1,134 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::surfaceTensionModel + +Description + +SourceFiles + surfaceTensionModel.C + newAspectRatioModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef surfaceTensionModel_H +#define surfaceTensionModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class surfaceTensionModel Declaration +\*---------------------------------------------------------------------------*/ + +class surfaceTensionModel +: + public regIOobject +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("surfaceTensionModel"); + + + // Declare runtime construction + declareRunTimeSelectionTable + ( + autoPtr, + surfaceTensionModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ), + (dict, pair, registerObject) + ); + + + // Static data members + + //- Coefficient dimensions + static const dimensionSet dimSigma; + + + // Constructors + + //- Construct from a dictionary and a phase pair + surfaceTensionModel + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~surfaceTensionModel(); + + + // Selectors + + static autoPtr<surfaceTensionModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Aspect ratio + virtual tmp<volScalarField> sigma() const = 0; + + //- Dummy write for regIOobject + bool writeData(Ostream& os) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..9a526d3625edad0cc6936dfef85c4ad7f0e854f5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/files @@ -0,0 +1,64 @@ +dragModels/dragModel/dragModel.C +dragModels/dragModel/newDragModel.C +dragModels/segregated/segregated.C +dragModels/Ergun/Ergun.C +dragModels/Gibilaro/Gibilaro.C +dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C +dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C +dragModels/Lain/Lain.C +dragModels/SchillerNaumann/SchillerNaumann.C +dragModels/SyamlalOBrien/SyamlalOBrien.C +dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C +dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C +dragModels/WenYu/WenYu.C +dragModels/IshiiZuber/IshiiZuber.C + +swarmCorrections/swarmCorrection/swarmCorrection.C +swarmCorrections/swarmCorrection/newSwarmCorrection.C +swarmCorrections/noSwarm/noSwarm.C +swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C + +liftModels/liftModel/liftModel.C +liftModels/liftModel/newLiftModel.C +liftModels/noLift/noLift.C +liftModels/constantLiftCoefficient/constantLiftCoefficient.C +liftModels/Moraga/Moraga.C +liftModels/LegendreMagnaudet/LegendreMagnaudet.C +liftModels/TomiyamaLift/TomiyamaLift.C + +heatTransferModels/heatTransferModel/heatTransferModel.C +heatTransferModels/heatTransferModel/newHeatTransferModel.C +heatTransferModels/RanzMarshall/RanzMarshall.C +heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C + +virtualMassModels/virtualMassModel/virtualMassModel.C +virtualMassModels/virtualMassModel/newVirtualMassModel.C +virtualMassModels/noVirtualMass/noVirtualMass.C +virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C +virtualMassModels/Lamb/Lamb.C + +wallLubricationModels/wallLubricationModel/wallLubricationModel.C +wallLubricationModels/wallLubricationModel/newWallLubricationModel.C +wallLubricationModels/noWallLubrication/noWallLubrication.C +wallLubricationModels/Antal/Antal.C +wallLubricationModels/Frank/Frank.C +wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C + +turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C +turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C +turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C +turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C +turbulentDispersionModels/Burns/Burns.C +turbulentDispersionModels/Gosman/Gosman.C +turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C + +aspectRatioModels/aspectRatioModel/aspectRatioModel.C +aspectRatioModels/aspectRatioModel/newAspectRatioModel.C +aspectRatioModels/constantAspectRatio/constantAspectRatio.C +aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C +aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C +aspectRatioModels/Wellek/Wellek.C + +wallDependentModel/wallDependentModel.C + +LIB = $(FOAM_LIBBIN)/libreactingEulerianInterfacialModels diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/options b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..ba5bb85f9930a4c9504525e4941d938b31d701c7 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/Make/options @@ -0,0 +1,16 @@ +EXE_INC = \ + -I../phaseSystems/lnInclude \ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/transportModels/incompressible/transportModel \ + -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude + +LIB_LIBS = \ + -lreactingTwoPhaseSystem \ + -lcompressibleTransportModels \ + -lfluidThermophysicalModels \ + -lspecie diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C new file mode 100644 index 0000000000000000000000000000000000000000..f390ed9015173140eec1ecceddd619e099612797 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C @@ -0,0 +1,81 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "TomiyamaAspectRatio.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + defineTypeNameAndDebug(TomiyamaAspectRatio, 0); + addToRunTimeSelectionTable + ( + aspectRatioModel, + TomiyamaAspectRatio, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::TomiyamaAspectRatio::TomiyamaAspectRatio +( + const dictionary& dict, + const phasePair& pair +) +: + VakhrushevEfremov(dict, pair), + wallDependentModel(pair.phase1().mesh()) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::TomiyamaAspectRatio::~TomiyamaAspectRatio() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::aspectRatioModels::TomiyamaAspectRatio::E() const +{ + return + VakhrushevEfremov::E() + *max + ( + scalar(1) - 0.35*yWall()/pair_.dispersed().d(), + scalar(0.65) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H new file mode 100644 index 0000000000000000000000000000000000000000..7adf90e552f5fb8dd23496cc0cdb672c33b7c0e1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::aspectRatioModels::TomiyamaAspectRatio + +Description + Aspect ratio model of Tomiyama. + + Reference: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M., + PhD Thesis, April 2013 + \endverbatim + +SourceFiles + TomiyamaAspectRatio.C + +\*---------------------------------------------------------------------------*/ + +#ifndef TomiyamaAspectRatio_H +#define TomiyamaAspectRatio_H + +#include "VakhrushevEfremov.H" +#include "wallDependentModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + +/*---------------------------------------------------------------------------*\ + Class TomiyamaAspectRatio Declaration +\*---------------------------------------------------------------------------*/ + +class TomiyamaAspectRatio +: + public VakhrushevEfremov, + public wallDependentModel +{ +public: + + //- Runtime type information + TypeName("Tomiyama"); + + + // Constructors + + //- Construct from a dictionary and an ordered phase pair + TomiyamaAspectRatio + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~TomiyamaAspectRatio(); + + + // Member Functions + + //- Aspect ratio + virtual tmp<volScalarField> E() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace aspectRatioModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C new file mode 100644 index 0000000000000000000000000000000000000000..270419c5b42faa4866894cfb7d7ddd687498645e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.C @@ -0,0 +1,80 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "VakhrushevEfremov.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + defineTypeNameAndDebug(VakhrushevEfremov, 0); + addToRunTimeSelectionTable + ( + aspectRatioModel, + VakhrushevEfremov, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::VakhrushevEfremov::VakhrushevEfremov +( + const dictionary& dict, + const phasePair& pair +) +: + aspectRatioModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::VakhrushevEfremov::~VakhrushevEfremov() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::aspectRatioModels::VakhrushevEfremov::E() const +{ + volScalarField Ta(pair_.Ta()); + + return + neg(Ta - scalar(1))*scalar(1) + + pos(Ta - scalar(1))*neg(Ta - scalar(39.8)) + *pow3(0.81 + 0.206*tanh(1.6 - 2*log10(max(Ta, scalar(1))))) + + pos(Ta - scalar(39.8))*0.24; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.H new file mode 100644 index 0000000000000000000000000000000000000000..e0e1215c614e715f96f4303c35ba650866d60111 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/VakhrushevEfremov/VakhrushevEfremov.H @@ -0,0 +1,100 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::VakhrushevEfremov + +Description + Aspect ratio model of Vakhrushev and Efremov. + + Reference: + \verbatim + "Interpolation formula for computing the velocities of single gas + bubbles in liquids" + Vakhrushev, I.A. and Efremov, G.I., + Chemistry and Technology of Fuels and Oils + Volume 6, Issue 5, May 1970, pp. 376-379, + \endverbatim + +SourceFiles + VakhrushevEfremov.C + +\*---------------------------------------------------------------------------*/ + +#ifndef VakhrushevEfremov_H +#define VakhrushevEfremov_H + +#include "aspectRatioModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + +/*---------------------------------------------------------------------------*\ + Class VakhrushevEfremov Declaration +\*---------------------------------------------------------------------------*/ + +class VakhrushevEfremov +: + public aspectRatioModel +{ +public: + + //- Runtime type information + TypeName("VakhrushevEfremov"); + + + // Constructors + + //- Construct from a dictionary and an ordered phase pair + VakhrushevEfremov + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~VakhrushevEfremov(); + + + // Member Functions + + //- Aspect ratio + virtual tmp<volScalarField> E() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace aspectRatioModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.C new file mode 100644 index 0000000000000000000000000000000000000000..1bc610ae9c42f3ba10666fe6cd735b8e3cc66982 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.C @@ -0,0 +1,74 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Wellek.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + defineTypeNameAndDebug(Wellek, 0); + addToRunTimeSelectionTable + ( + aspectRatioModel, + Wellek, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::Wellek::Wellek +( + const dictionary& dict, + const phasePair& pair +) +: + aspectRatioModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::Wellek::~Wellek() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::aspectRatioModels::Wellek::E() const +{ + return scalar(1)/(scalar(1) + 0.163*pow(pair_.Eo(), 0.757)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.H new file mode 100644 index 0000000000000000000000000000000000000000..9ab8f0ddc6b3b02b771f3072ba77e0267ee3d395 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/Wellek/Wellek.H @@ -0,0 +1,106 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::aspectRatioModels::Wellek + +Description + Aspect ratio model of Wellek et al. + + References: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M., + PhD Thesis, April 2013 + \endverbatim + + \verbatim + "Shape of liquid drops moving in liquid media" + Wellek, R.M., Agrawal, A.K., Skelland, A.H.P., + International Journal of Multiphase Flow + Volume 12, Issue 5, September 1966, pp. 854-862 + \endverbatim + +SourceFiles + Wellek.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Wellek_H +#define Wellek_H + +#include "aspectRatioModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + +/*---------------------------------------------------------------------------*\ + Class Wellek Declaration +\*---------------------------------------------------------------------------*/ + +class Wellek +: + public aspectRatioModel +{ +public: + + //- Runtime type information + TypeName("Wellek"); + + + // Constructors + + //- Construct from a dictionary and an ordered phase pair + Wellek + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Wellek(); + + + // Member Functions + + //- Aspect ratio + virtual tmp<volScalarField> E() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace aspectRatioModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.C new file mode 100644 index 0000000000000000000000000000000000000000..956159fccef7480e37b5af1007c4b9ef9146851a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.C @@ -0,0 +1,56 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "aspectRatioModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(aspectRatioModel, 0); + defineRunTimeSelectionTable(aspectRatioModel, dictionary); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::aspectRatioModel::aspectRatioModel +( + const dictionary& dict, + const phasePair& pair +) +: + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::aspectRatioModel::~aspectRatioModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.H new file mode 100644 index 0000000000000000000000000000000000000000..04732aa81b9fa613f199159225b769053dec016f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/aspectRatioModel.H @@ -0,0 +1,121 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::aspectRatioModel + +Description + +SourceFiles + aspectRatioModel.C + newAspectRatioModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef aspectRatioModel_H +#define aspectRatioModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class aspectRatioModel Declaration +\*---------------------------------------------------------------------------*/ + +class aspectRatioModel +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("aspectRatioModel"); + + + // Declare runtime construction + declareRunTimeSelectionTable + ( + autoPtr, + aspectRatioModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + + // Constructors + + //- Construct from a dictionary and an ordered phase pair + aspectRatioModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~aspectRatioModel(); + + + // Selectors + + static autoPtr<aspectRatioModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Aspect ratio + virtual tmp<volScalarField> E() const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/newAspectRatioModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/newAspectRatioModel.C new file mode 100644 index 0000000000000000000000000000000000000000..ff4cb63441f5d297c29ad8f8922dfcf44361b445 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/aspectRatioModel/newAspectRatioModel.C @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "aspectRatioModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::aspectRatioModel> +Foam::aspectRatioModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word aspectRatioModelType(dict.lookup("type")); + + Info<< "Selecting aspectRatioModel for " + << pair << ": " << aspectRatioModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(aspectRatioModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("aspectRatioModel::New") + << "Unknown aspectRatioModelType type " + << aspectRatioModelType << endl << endl + << "Valid aspectRatioModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.C new file mode 100644 index 0000000000000000000000000000000000000000..e89646382230569dff8369374ed78b2ac02b4542 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.C @@ -0,0 +1,91 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "constantAspectRatio.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + defineTypeNameAndDebug(constantAspectRatio, 0); + addToRunTimeSelectionTable + ( + aspectRatioModel, + constantAspectRatio, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::constantAspectRatio::constantAspectRatio +( + const dictionary& dict, + const phasePair& pair +) +: + aspectRatioModel(dict, pair), + E0_("E0", dimless, dict.lookup("E0")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::aspectRatioModels::constantAspectRatio::~constantAspectRatio() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::aspectRatioModels::constantAspectRatio::E() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return + tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "zero", + mesh.time().timeName(), + mesh + ), + mesh, + E0_ + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H new file mode 100644 index 0000000000000000000000000000000000000000..4ca36a0a965e7cf25f9f44061693ed982ee0fc79 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/aspectRatioModels/constantAspectRatio/constantAspectRatio.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::constantAspectRatio + +Description + Constant value aspect ratio model. + +SourceFiles + constantAspectRatio.C + +\*---------------------------------------------------------------------------*/ + +#ifndef constantAspectRatio_H +#define constantAspectRatio_H + +#include "aspectRatioModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace aspectRatioModels +{ + +/*---------------------------------------------------------------------------*\ + Class constantAspectRatio Declaration +\*---------------------------------------------------------------------------*/ + +class constantAspectRatio +: + public aspectRatioModel +{ + // Private data + + //- Constant aspect ratio value + const dimensionedScalar E0_; + + +public: + + //- Runtime type information + TypeName("constant"); + + + // Constructors + + //- Construct from a dictionary and an ordered phase pair + constantAspectRatio + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~constantAspectRatio(); + + + // Member Functions + + //- Aspect ratio + virtual tmp<volScalarField> E() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace aspectRatioModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.C new file mode 100644 index 0000000000000000000000000000000000000000..2bc5d377de989db355cb865ab3ee430762419818 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.C @@ -0,0 +1,80 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Ergun.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(Ergun, 0); + addToRunTimeSelectionTable(dragModel, Ergun, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::Ergun::Ergun +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::Ergun::~Ergun() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModels::Ergun::CdRe() const +{ + return + (4/3) + *( + 150 + *max + ( + scalar(1) - pair_.continuous(), + pair_.continuous().residualAlpha() + )/max(pair_.continuous(), pair_.continuous().residualAlpha()) + + 1.75 + *pair_.Re() + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.H new file mode 100644 index 0000000000000000000000000000000000000000..63e77c2f2a1763145bfdaa387eb72348c3e4ca0c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Ergun/Ergun.H @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::Ergun + +Description + H, Enwald, E. Peirano, A-E Almstedt + 'Eulerian Two-Phase Flow Theory Applied to Fluidization' + Int. J. Multiphase Flow, Vol. 22, Suppl, pp. 21-66 (1996) + Eq. 104, p. 42 + +SourceFiles + Ergun.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Ergun_H +#define Ergun_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class Ergun Declaration +\*---------------------------------------------------------------------------*/ + +class Ergun +: + public dragModel +{ +public: + + //- Runtime type information + TypeName("Ergun"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + Ergun + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~Ergun(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.C new file mode 100644 index 0000000000000000000000000000000000000000..ca378985ea568e1cf05c9c5b39d701e2ae52a2c5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.C @@ -0,0 +1,78 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Gibilaro.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(Gibilaro, 0); + addToRunTimeSelectionTable(dragModel, Gibilaro, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::Gibilaro::Gibilaro +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::Gibilaro::~Gibilaro() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModels::Gibilaro::CdRe() const +{ + volScalarField alpha2 + ( + max(scalar(1) - pair_.dispersed(), pair_.continuous().residualAlpha()) + ); + + return + (4/3) + *(17.3/alpha2 + 0.336*pair_.Re()) + *max(pair_.continuous(), pair_.continuous().residualAlpha()) + *pow(alpha2, -2.8); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.H new file mode 100644 index 0000000000000000000000000000000000000000..f1a976e61d9a43157aaf16eed758ff4647f08dc5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Gibilaro/Gibilaro.H @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::Gibilaro + +Description + H, Enwald, E. Peirano, A-E Almstedt + 'Eulerian Two-Phase Flow Theory Applied to Fluidization' + Int. J. Multiphase Flow, Vol. 22, Suppl, pp. 21-66 (1996) + Eq. 106, p. 43 + +SourceFiles + Gibilaro.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Gibilaro_H +#define Gibilaro_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class Gibilaro Declaration +\*---------------------------------------------------------------------------*/ + +class Gibilaro +: + public dragModel +{ +public: + + //- Runtime type information + TypeName("Gibilaro"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + Gibilaro + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~Gibilaro(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C new file mode 100644 index 0000000000000000000000000000000000000000..7649f217c8781b2fbd07a9364fe31efd21e06c6b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.C @@ -0,0 +1,92 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "GidaspowErgunWenYu.H" +#include "phasePair.H" +#include "Ergun.H" +#include "WenYu.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(GidaspowErgunWenYu, 0); + addToRunTimeSelectionTable(dragModel, GidaspowErgunWenYu, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::GidaspowErgunWenYu::GidaspowErgunWenYu +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject), + Ergun_ + ( + new Ergun + ( + dict, + pair, + false + ) + ), + WenYu_ + ( + new WenYu + ( + dict, + pair, + false + ) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::GidaspowErgunWenYu::~GidaspowErgunWenYu() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::dragModels::GidaspowErgunWenYu::CdRe() const +{ + return + pos(pair_.continuous() - 0.8)*WenYu_->CdRe() + + neg(pair_.continuous() - 0.8)*Ergun_->CdRe(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.H new file mode 100644 index 0000000000000000000000000000000000000000..4f6f9c45581334a4ff47fc4ea9a8f0abf79c5e28 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowErgunWenYu/GidaspowErgunWenYu.H @@ -0,0 +1,114 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::GidaspowErgunWenYu + +Description + Gidaspow, Ergun, Wen and Yu drag model + + Reference: + \verbatim + "Multiphase flow and fluidization", + Gidaspow, D., + Academic Press, New York, 1994. + \endverbatim + +SourceFiles + GidaspowErgunWenYu.C + +\*---------------------------------------------------------------------------*/ + +#ifndef GidaspowErgunWenYu_H +#define GidaspowErgunWenYu_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +class Ergun; +class WenYu; + +/*---------------------------------------------------------------------------*\ + Class GidaspowErgunWenYu Declaration +\*---------------------------------------------------------------------------*/ + +class GidaspowErgunWenYu +: + public dragModel +{ + // Private data + + //- Ergun drag model + autoPtr<Ergun> Ergun_; + + //- Wen Yu drag model + autoPtr<WenYu> WenYu_; + + +public: + + //- Runtime type information + TypeName("GidaspowErgunWenYu"); + + + // Constructors + + //- Construct from a dictionary and an ordered phase pair + GidaspowErgunWenYu + ( + const dictionary& interfaceDict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~GidaspowErgunWenYu(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C new file mode 100644 index 0000000000000000000000000000000000000000..c637c3bb354a4e23afb748b835caf36a13b0858d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.C @@ -0,0 +1,87 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "GidaspowSchillerNaumann.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(GidaspowSchillerNaumann, 0); + addToRunTimeSelectionTable(dragModel, GidaspowSchillerNaumann, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::GidaspowSchillerNaumann::GidaspowSchillerNaumann +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject), + residualRe_("residualRe", dimless, dict.lookup("residualRe")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::GidaspowSchillerNaumann::~GidaspowSchillerNaumann() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::dragModels::GidaspowSchillerNaumann::CdRe() const +{ + volScalarField alpha2 + ( + max(scalar(1) - pair_.dispersed(), pair_.continuous().residualAlpha()) + ); + + volScalarField Re(alpha2*pair_.Re()); + + volScalarField CdsRe + ( + neg(Re - 1000)*24.0*(1.0 + 0.15*pow(Re, 0.687))/alpha2 + + pos(Re - 1000)*0.44*max(Re, residualRe_) + ); + + return + CdsRe + *pow(alpha2, -2.65) + *max(pair_.continuous(), pair_.continuous().residualAlpha()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.H new file mode 100644 index 0000000000000000000000000000000000000000..c25f910c1b4797d62879c538d522cf57421bcdbe --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/GidaspowSchillerNaumann/GidaspowSchillerNaumann.H @@ -0,0 +1,115 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::GidaspowSchillerNaumann + +Description + Gidaspow, Schiller and Naumann drag model + + References: + \verbatim + "Eulerian Two-Phase Flow Theory Applied to Fluidization" + Enwald, H., Peirano, E., Almstedt, A-E., + Int. J. Multiphase Flow, Vol. 22, Suppl, 1996, pp. 21-66 + Eq. 86-87, p. 40 + + This is identical to the Wen and Yu, Rowe model Table 3.6 p.56 in + "Derivation, Implementation and Validation of Computer Simulation Models + for Gas-Solid Fluidized Beds", + Berend van Wachem + Ph.D. thesis. + \endverbatim + +SourceFiles + GidaspowSchillerNaumann.C + +\*---------------------------------------------------------------------------*/ + +#ifndef GidaspowSchillerNaumann_H +#define GidaspowSchillerNaumann_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class GidaspowSchillerNaumann Declaration +\*---------------------------------------------------------------------------*/ + +class GidaspowSchillerNaumann +: + public dragModel +{ + // Private data + + //- Residual Reynolds Number + const dimensionedScalar residualRe_; + + +public: + + //- Runtime type information + TypeName("GidaspowSchillerNaumann"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + GidaspowSchillerNaumann + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~GidaspowSchillerNaumann(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.C new file mode 100644 index 0000000000000000000000000000000000000000..8f6b115bbc6ae6f3dca210821615cc0bae62ee88 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.C @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "IshiiZuber.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(IshiiZuber, 0); + addToRunTimeSelectionTable(dragModel, IshiiZuber, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::IshiiZuber::IshiiZuber +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::IshiiZuber::~IshiiZuber() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::dragModels::IshiiZuber::CdRe() const +{ + volScalarField Re(pair_.Re()); + volScalarField Eo(pair_.Eo()); + + volScalarField mud(pair_.dispersed().mu()); + volScalarField muc(pair_.continuous().mu()); + + volScalarField muStar((mud + 0.4*muc)/(mud + muc)); + + volScalarField muMix + ( + muc + *pow(max(1 - pair_.dispersed(), scalar(1e-3)), -2.5*muStar) + ); + + volScalarField ReM(Re*muc/muMix); + volScalarField CdRe + ( + pos(1000 - ReM)*24.0*(scalar(1) + 0.15*pow(ReM, 0.687)) + + neg(1000 - ReM)*0.44*ReM + ); + + volScalarField F((muc/muMix)*sqrt(1 - pair_.dispersed())); + F.max(1e-3); + + volScalarField Ealpha((1 + 17.67*pow(F, 0.8571428))/(18.67*F)); + + volScalarField CdReEllipse(Ealpha*0.6666*sqrt(Eo)*Re); + + return + pos(CdReEllipse - CdRe) + *min(CdReEllipse, Re*sqr(1 - pair_.dispersed())*2.66667) + + neg(CdReEllipse - CdRe)*CdRe; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.H new file mode 100644 index 0000000000000000000000000000000000000000..0212b08f0539bac51d8cebd21057b01082140649 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/IshiiZuber/IshiiZuber.H @@ -0,0 +1,105 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::IshiiZuber + +Description + Ishii and Zuber (1979) drag model for dense dispersed bubbly flows. + + Reference: + \verbatim + "Drag Coefficient and relative velocity in bubbly, droplet and + particulate flows", + Ishii, M., Zuber, N., + AIChE Journal 5, Vol. 25, 1979, pp. 843-855. + \endverbatim + +SourceFiles + IshiiZuber.C + +\*---------------------------------------------------------------------------*/ + +#ifndef IshiiZuber_H +#define IshiiZuber_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class IshiiZuber Declaration +\*---------------------------------------------------------------------------*/ + +class IshiiZuber +: + public dragModel +{ + +public: + + //- Runtime type information + TypeName("IshiiZuber"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + IshiiZuber + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~IshiiZuber(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.C new file mode 100644 index 0000000000000000000000000000000000000000..2093120190a8e95f7af1adcf0e6c44287811dfb5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.C @@ -0,0 +1,75 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Lain.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(Lain, 0); + addToRunTimeSelectionTable(dragModel, Lain, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::Lain::Lain +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::Lain::~Lain() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModels::Lain::CdRe() const +{ + volScalarField Re(pair_.Re()); + + return + neg(Re - 1.5)*16.0 + + pos(Re - 1.5)*neg(Re - 80.0)*14.9*pow(Re, 0.22) + + pos(Re - 80.0)*neg(Re - 1500.0)*48*(1.0 - 2.21/sqrt(max(Re, SMALL))) + + pos(Re - 1500.0)*2.61*Re; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.H new file mode 100644 index 0000000000000000000000000000000000000000..95c4c49cc8a1f6065731ddb4d2c3ab727d55c9bd --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/Lain/Lain.H @@ -0,0 +1,111 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::Lain + +Description + Drag model of Lain et al. + + References: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M., + PhD Thesis, April 2013 + \endverbatim + + \verbatim + "Modelling hydrodynamics and turbulence in a bubble column using the + Euler-Lagrange procedure" + Lain, S., Brodera, D., Sommerfelda, M., Goza, M.F., + International Journal of Multiphase Flow + Volume 28, Issue 8, August 2002, pp. 1381-1407 + \endverbatim + +SourceFiles + Lain.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Lain_H +#define Lain_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class Lain Declaration +\*---------------------------------------------------------------------------*/ + +class Lain +: + public dragModel +{ +public: + + //- Runtime type information + TypeName("Lain"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + Lain + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~Lain(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.C new file mode 100644 index 0000000000000000000000000000000000000000..ee1471ac55e795c2464575865d4364e98a893d89 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.C @@ -0,0 +1,74 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "SchillerNaumann.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(SchillerNaumann, 0); + addToRunTimeSelectionTable(dragModel, SchillerNaumann, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::SchillerNaumann::SchillerNaumann +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject), + residualRe_("residualRe", dimless, dict.lookup("residualRe")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::SchillerNaumann::~SchillerNaumann() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModels::SchillerNaumann::CdRe() const +{ + volScalarField Re(pair_.Re()); + + return + neg(Re - 1000)*24.0*(1.0 + 0.15*pow(Re, 0.687)) + + pos(Re - 1000)*0.44*max(Re, residualRe_); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.H new file mode 100644 index 0000000000000000000000000000000000000000..e74cd28d110f52b48e55e6b75a506ff6d2472ddf --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SchillerNaumann/SchillerNaumann.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::SchillerNaumann + +Description + Schiller and Naumann drag model for dispersed bubbly flows. + +SourceFiles + SchillerNaumann.C + +\*---------------------------------------------------------------------------*/ + +#ifndef SchillerNaumann_H +#define SchillerNaumann_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class SchillerNaumann Declaration +\*---------------------------------------------------------------------------*/ + +class SchillerNaumann +: + public dragModel +{ + // Private data + + //- Residual Reynolds Number + const dimensionedScalar residualRe_; + + +public: + + //- Runtime type information + TypeName("SchillerNaumann"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + SchillerNaumann + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~SchillerNaumann(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.C new file mode 100644 index 0000000000000000000000000000000000000000..b722736b60117ffefaaeb4d8dc444f93d146386b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.C @@ -0,0 +1,93 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "SyamlalOBrien.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(SyamlalOBrien, 0); + addToRunTimeSelectionTable(dragModel, SyamlalOBrien, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::SyamlalOBrien::SyamlalOBrien +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::SyamlalOBrien::~SyamlalOBrien() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModels::SyamlalOBrien::CdRe() const +{ + volScalarField alpha2 + ( + max(scalar(1) - pair_.dispersed(), pair_.continuous().residualAlpha()) + ); + + volScalarField A(pow(alpha2, 4.14)); + volScalarField B + ( + neg(alpha2 - 0.85)*(0.8*pow(alpha2, 1.28)) + + pos(alpha2 - 0.85)*(pow(alpha2, 2.65)) + ); + volScalarField Re(pair_.Re()); + volScalarField Vr + ( + 0.5 + *( + A - 0.06*Re + sqrt(sqr(0.06*Re) + 0.12*Re*(2.0*B - A) + sqr(A)) + ) + ); + volScalarField CdsRe(sqr(0.63*sqrt(Re) + 4.8*sqrt(Vr))); + + return + CdsRe + *max(pair_.continuous(), pair_.continuous().residualAlpha()) + /sqr(Vr); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.H new file mode 100644 index 0000000000000000000000000000000000000000..ac7811837834d7036808dbc382e33e14017e9b28 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/SyamlalOBrien/SyamlalOBrien.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::SyamlalOBrien + +Description + Syamlal, M., Rogers, W. and O'Brien, T. J. (1993) MFIX documentation, + Theory Guide. Technical Note DOE/METC-94/1004. Morgantown, West Virginia, + USA. + +SourceFiles + SyamlalOBrien.C + +\*---------------------------------------------------------------------------*/ + +#ifndef SyamlalOBrien_H +#define SyamlalOBrien_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class SyamlalOBrien Declaration +\*---------------------------------------------------------------------------*/ + +class SyamlalOBrien +: + public dragModel +{ +public: + + //- Runtime type information + TypeName("SyamlalOBrien"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + SyamlalOBrien + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~SyamlalOBrien(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C new file mode 100644 index 0000000000000000000000000000000000000000..343cd9a897f440609f26ded7dfd665882456c213 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C @@ -0,0 +1,89 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "TomiyamaAnalytic.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(TomiyamaAnalytic, 0); + addToRunTimeSelectionTable(dragModel, TomiyamaAnalytic, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::TomiyamaAnalytic::TomiyamaAnalytic +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject), + residualRe_("residualRe", dimless, dict.lookup("residualRe")), + residualEo_("residualEo", dimless, dict.lookup("residualEo")), + residualE_("residualE", dimless, dict.lookup("residualE")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::TomiyamaAnalytic::~TomiyamaAnalytic() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::dragModels::TomiyamaAnalytic::CdRe() const +{ + volScalarField Eo(max(pair_.Eo(), residualEo_)); + volScalarField E(max(pair_.E(), residualE_)); + + volScalarField OmEsq(max(scalar(1) - sqr(E), sqr(residualE_))); + volScalarField rtOmEsq(sqrt(OmEsq)); + + volScalarField F(max(asin(rtOmEsq) - E*rtOmEsq, residualE_)/OmEsq); + + return + (8.0/3.0) + *Eo + /( + Eo*pow(E, 2.0/3.0)/OmEsq + + 16*pow(E, 4.0/3.0) + ) + /sqr(F) + *max(pair_.Re(), residualRe_); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.H new file mode 100644 index 0000000000000000000000000000000000000000..2babedd2168ef5b2a455f2869fd92ffe73c5a0f5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.H @@ -0,0 +1,116 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::TomiyamaAnalytic + +Description + Analytical drag model of Tomiyama et al. + + Reference: + \verbatim + "Drag Coefficients of Bubbles. 1st Report. Drag Coefficients of a + Single Bubble in a Stagnant Liquid." + Tomiyama, A., Kataoka, I., and Sakaguchi, T., + Nippon Kikai Gakkai Ronbunshu + Volume 61, Issue 587, 1995, pp. 2357-2364 + \endverbatim + +SourceFiles + TomiyamaAnalytic.C + +\*---------------------------------------------------------------------------*/ + +#ifndef TomiyamaAnalytic_H +#define TomiyamaAnalytic_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class TomiyamaAnalytic Declaration +\*---------------------------------------------------------------------------*/ + +class TomiyamaAnalytic +: + public dragModel +{ + // Private data + + //- Residual Reynolds Number + const dimensionedScalar residualRe_; + + //- Residual Eotvos number + const dimensionedScalar residualEo_; + + //- Residual aspect ratio + const dimensionedScalar residualE_; + + +public: + + //- Runtime type information + TypeName("TomiyamaAnalytic"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + TomiyamaAnalytic + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~TomiyamaAnalytic(); + + + // Member Functions + + // Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C new file mode 100644 index 0000000000000000000000000000000000000000..af34864f0c22e6b799973fcd3b7179c66a3b1c7c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.C @@ -0,0 +1,85 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "TomiyamaCorrelated.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(TomiyamaCorrelated, 0); + addToRunTimeSelectionTable(dragModel, TomiyamaCorrelated, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::TomiyamaCorrelated::TomiyamaCorrelated +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject), + A_("A", dimless, dict.lookup("A")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::TomiyamaCorrelated::~TomiyamaCorrelated() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::dragModels::TomiyamaCorrelated::CdRe() const +{ + volScalarField Re(pair_.Re()); + volScalarField Eo(pair_.Eo()); + + return + max + ( + A_ + *min + ( + (1 + 0.15*pow(Re, 0.687)), + scalar(3) + ), + 8*Eo*Re/(3*Eo + 12) + ); + +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.H new file mode 100644 index 0000000000000000000000000000000000000000..80ffe0646ad6e46202d971ee20f0906518114cc4 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaCorrelated/TomiyamaCorrelated.H @@ -0,0 +1,110 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::TomiyamaCorrelated + +Description + Correlation of Tomiyama et al. + + Reference: + \verbatim + "Terminal velocity of single bubbles in surface tension force dominant + regime" + Tomiyama, T., Celata, G.P., Hosokawa, S., Yoshida, S., + International Journal of Multiphase Flow + Volume 28, Issue 9, September 2002, pp. 1497-1519 + \endverbatim + +SourceFiles + TomiyamaCorrelated.C + +\*---------------------------------------------------------------------------*/ + +#ifndef TomiyamaCorrelated_H +#define TomiyamaCorrelated_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class TomiyamaCorrelated Declaration +\*---------------------------------------------------------------------------*/ + +class TomiyamaCorrelated +: + public dragModel +{ + // Private data + + //- Coefficient + const dimensionedScalar A_; + + +public: + + //- Runtime type information + TypeName("TomiyamaCorrelated"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + TomiyamaCorrelated + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~TomiyamaCorrelated(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.C new file mode 100644 index 0000000000000000000000000000000000000000..bf1e1da4a770fb2cb9278fc790d06c29573f94fe --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.C @@ -0,0 +1,85 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "WenYu.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(WenYu, 0); + addToRunTimeSelectionTable(dragModel, WenYu, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::WenYu::WenYu +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject), + residualRe_("residualRe", dimless, dict.lookup("residualRe")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::WenYu::~WenYu() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModels::WenYu::CdRe() const +{ + volScalarField alpha2 + ( + max(scalar(1) - pair_.dispersed(), pair_.continuous().residualAlpha()) + ); + + volScalarField Re(pair_.Re()); + volScalarField CdsRe + ( + neg(Re - 1000)*24.0*(1.0 + 0.15*pow(Re, 0.687)) + + pos(Re - 1000)*0.44*max(Re, residualRe_) + ); + + return + CdsRe + *pow(alpha2, -2.65) + *max(pair_.continuous(), pair_.continuous().residualAlpha()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.H new file mode 100644 index 0000000000000000000000000000000000000000..4787bfec18e21c74408168a4e236e22bb3709dc3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/WenYu/WenYu.H @@ -0,0 +1,109 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::WenYu + +Description + Wen and Yu drag model + + Reference: + \verbatim + "Eulerian Two-Phase Flow Theory Applied to Fluidization" + Enwald, H., Peirano, E., Almstedt, A-E., + Int. J. Multiphase Flow, Vol. 22, Suppl, 1996, pp. 21-66 + Eq. 86-87, p. 40 + \endverbatim + +SourceFiles + WenYu.C + +\*---------------------------------------------------------------------------*/ + +#ifndef WenYu_H +#define WenYu_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class WenYu Declaration +\*---------------------------------------------------------------------------*/ + +class WenYu +: + public dragModel +{ + // Private data + + //- Residual Reynolds Number + const dimensionedScalar residualRe_; + + +public: + + //- Runtime type information + TypeName("WenYu"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + WenYu + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~WenYu(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C new file mode 100644 index 0000000000000000000000000000000000000000..29a7bdf884128e1fe978e8cfabfb5a930e6900f5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.C @@ -0,0 +1,140 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "dragModel.H" +#include "phasePair.H" +#include "swarmCorrection.H" +#include "surfaceInterpolate.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(dragModel, 0); + defineRunTimeSelectionTable(dragModel, dictionary); +} + +const Foam::dimensionSet Foam::dragModel::dimK(1, -3, -1, 0, 0); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModel::dragModel +( + const phasePair& pair, + const bool registerObject +) +: + regIOobject + ( + IOobject + ( + IOobject::groupName(typeName, pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + registerObject + ) + ), + pair_(pair) +{} + + +Foam::dragModel::dragModel +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + regIOobject + ( + IOobject + ( + IOobject::groupName(typeName, pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + registerObject + ) + ), + pair_(pair), + swarmCorrection_ + ( + swarmCorrection::New + ( + dict.subDict("swarmCorrection"), + pair + ) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModel::~dragModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModel::Ki() const +{ + return + 0.75 + *CdRe() + *swarmCorrection_->Cs() + *pair_.continuous().rho() + *pair_.continuous().nu() + /sqr(pair_.dispersed().d()); +} + + +Foam::tmp<Foam::volScalarField> Foam::dragModel::K() const +{ + return max(pair_.dispersed(), pair_.dispersed().residualAlpha())*Ki(); +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::dragModel::Kf() const +{ + return + max + ( + fvc::interpolate(pair_.dispersed()), + pair_.dispersed().residualAlpha() + )*fvc::interpolate(Ki()); +} + + +bool Foam::dragModel::writeData(Ostream& os) const +{ + return os.good(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.H new file mode 100644 index 0000000000000000000000000000000000000000..733393cca51e9a46d26b4072b7de39b6a582b2c2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/dragModel.H @@ -0,0 +1,162 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::dragModel + +Description + +SourceFiles + dragModel.C + newDragModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef dragModel_H +#define dragModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; +class swarmCorrection; + +/*---------------------------------------------------------------------------*\ + Class dragModel Declaration +\*---------------------------------------------------------------------------*/ + +class dragModel +: + public regIOobject +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + //- Swarm correction + autoPtr<swarmCorrection> swarmCorrection_; + + +public: + + //- Runtime type information + TypeName("dragModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + dragModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ), + (dict, pair, registerObject) + ); + + + // Static data members + + //- Coefficient dimensions + static const dimensionSet dimK; + + + // Constructors + + // Construct without residual constants + dragModel + ( + const phasePair& pair, + const bool registerObject + ); + + // Construct with residual constants + dragModel + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~dragModel(); + + + // Selectors + + static autoPtr<dragModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const = 0; + + //- Return the phase-intensive drag coefficient Ki + // used in the momentum equations + // ddt(alpha1*rho1*U1) + ... = ... alphad*K*(U1-U2) + // ddt(alpha2*rho2*U2) + ... = ... alphad*K*(U2-U1) + virtual tmp<volScalarField> Ki() const; + + //- Return the drag coefficient K + // used in the momentum equations + // ddt(alpha1*rho1*U1) + ... = ... K*(U1-U2) + // ddt(alpha2*rho2*U2) + ... = ... K*(U2-U1) + virtual tmp<volScalarField> K() const; + + //- Return the drag coefficient Kf + // used in the face-momentum equations + virtual tmp<surfaceScalarField> Kf() const; + + //- Dummy write for regIOobject + bool writeData(Ostream& os) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C new file mode 100644 index 0000000000000000000000000000000000000000..041468a15b3989bf5984cc72ba4f37bc42e13520 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "dragModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::dragModel> Foam::dragModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word dragModelType(dict.lookup("type")); + + Info<< "Selecting dragModel for " + << pair << ": " << dragModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(dragModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("dragModel::New") + << "Unknown dragModelType type " + << dragModelType << endl << endl + << "Valid dragModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair, true); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C new file mode 100644 index 0000000000000000000000000000000000000000..b50a711c77fd349f4459a357d842e91d319c4df5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.C @@ -0,0 +1,157 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "segregated.H" +#include "phasePair.H" +#include "fvcGrad.H" +#include "surfaceInterpolate.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace dragModels +{ + defineTypeNameAndDebug(segregated, 0); + addToRunTimeSelectionTable(dragModel, segregated, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::dragModels::segregated::segregated +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + dragModel(dict, pair, registerObject), + m_("m", dimless, dict.lookup("m")), + n_("n", dimless, dict.lookup("n")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::dragModels::segregated::~segregated() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::dragModels::segregated::CdRe() const +{ + FatalErrorIn("Foam::dragModels::segregated::CdRe() const") + << "Not implemented." + << "Drag coefficient not defined for the segregated model." + << exit(FatalError); + + return pair_.phase1(); +} + + +Foam::tmp<Foam::volScalarField> Foam::dragModels::segregated::K() const +{ + const fvMesh& mesh(pair_.phase1().mesh()); + + const volScalarField& alpha1(pair_.phase1()); + const volScalarField& alpha2(pair_.phase2()); + + const volScalarField& rho1(pair_.phase1().rho()); + const volScalarField& rho2(pair_.phase2().rho()); + + tmp<volScalarField> tnu1(pair_.phase1().nu()); + tmp<volScalarField> tnu2(pair_.phase2().nu()); + + const volScalarField& nu1(tnu1()); + const volScalarField& nu2(tnu2()); + + volScalarField L + ( + IOobject + ( + "L", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedScalar("L", dimLength, 0), + zeroGradientFvPatchField<scalar>::typeName + ); + L.internalField() = cbrt(mesh.V()); + L.correctBoundaryConditions(); + + volScalarField I + ( + alpha1 + /max + ( + alpha1 + alpha2, + pair_.phase1().residualAlpha() + pair_.phase2().residualAlpha() + ) + ); + volScalarField magGradI + ( + max + ( + mag(fvc::grad(I)), + (pair_.phase1().residualAlpha() + pair_.phase2().residualAlpha())/L + ) + ); + + volScalarField muI + ( + rho1*nu1*rho2*nu2 + /(rho1*nu1 + rho2*nu2) + ); + volScalarField muAlphaI + ( + alpha1*rho1*nu1*alpha2*rho2*nu2 + /(alpha1*rho1*nu1 + alpha2*rho2*nu2) + ); + + volScalarField ReI + ( + pair_.rho() + *pair_.magUr() + /(magGradI*muI) + ); + + volScalarField lambda(m_*ReI + n_*muAlphaI/muI); + + return lambda*sqr(magGradI)*muI; +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::dragModels::segregated::Kf() const +{ + return fvc::interpolate(K()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.H new file mode 100644 index 0000000000000000000000000000000000000000..3379c02103f3a92c4141e999e2ac860f1f3eff15 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/dragModels/segregated/segregated.H @@ -0,0 +1,117 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::dragModels::segregated + +Description + Segregated drag model for use in regions with no obvious dispersed phase. + + Reference: + \verbatim + "Towards the Numerical Simulation of Multi-scale Two-phase Flows", + Marschall, H., + PhD Thesis, TU München, 2011 + \endverbatim + +SourceFiles + segregated.C + +\*---------------------------------------------------------------------------*/ + +#ifndef segregated_H +#define segregated_H + +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace dragModels +{ + +/*---------------------------------------------------------------------------*\ + Class segregated Declaration +\*---------------------------------------------------------------------------*/ + +class segregated +: + public dragModel +{ + // Private data + + //- M coefficient + const dimensionedScalar m_; + + //- N coefficient + const dimensionedScalar n_; + + +public: + + //- Runtime type information + TypeName("segregated"); + + + // Constructors + + //- Construct from components + segregated + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~segregated(); + + + // Member Functions + + //- Drag coefficient + virtual tmp<volScalarField> CdRe() const; + + //- The drag function used in the momentum equation + virtual tmp<volScalarField> K() const; + + //- The drag function Kf used in the face-momentum equations + virtual tmp<surfaceScalarField> Kf() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace dragModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C new file mode 100644 index 0000000000000000000000000000000000000000..7e1693dfed28aea4c31021fbbb78c482773feb5c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.C @@ -0,0 +1,76 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "RanzMarshall.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace heatTransferModels +{ + defineTypeNameAndDebug(RanzMarshall, 0); + addToRunTimeSelectionTable(heatTransferModel, RanzMarshall, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::heatTransferModels::RanzMarshall::RanzMarshall +( + const dictionary& dict, + const phasePair& pair +) +: + heatTransferModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::heatTransferModels::RanzMarshall::~RanzMarshall() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::heatTransferModels::RanzMarshall::K() const +{ + volScalarField Nu(scalar(2) + 0.6*sqrt(pair_.Re())*cbrt(pair_.Pr())); + + return + 6.0 + *max(pair_.dispersed(), residualAlpha_) + *pair_.continuous().kappa() + *Nu + /sqr(pair_.dispersed().d()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H new file mode 100644 index 0000000000000000000000000000000000000000..c02126528a03c8ddd8c503120b0263a03cb17492 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/RanzMarshall/RanzMarshall.H @@ -0,0 +1,95 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::heatTransferModels::RanzMarshall + +Description + Ranz-Marshall correlation for turbulent heat transfer from the surface of a + sphere to the surrounding fluid. + +SourceFiles + RanzMarshall.C + +\*---------------------------------------------------------------------------*/ + +#ifndef RanzMarshall_H +#define RanzMarshall_H + +#include "heatTransferModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace heatTransferModels +{ + +/*---------------------------------------------------------------------------*\ + Class RanzMarshall Declaration +\*---------------------------------------------------------------------------*/ + +class RanzMarshall +: + public heatTransferModel +{ +public: + + //- Runtime type information + TypeName("RanzMarshall"); + + + // Constructors + + //- Construct from components + RanzMarshall + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~RanzMarshall(); + + + // Member Functions + + //- The heat transfer function K used in the enthalpy equation + tmp<volScalarField> K() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace heatTransferModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C new file mode 100644 index 0000000000000000000000000000000000000000..1621b6be19dbeb3fdcaee31f379d0569c8a201cd --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.C @@ -0,0 +1,68 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "heatTransferModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(heatTransferModel, 0); + defineRunTimeSelectionTable(heatTransferModel, dictionary); +} + +const Foam::dimensionSet Foam::heatTransferModel::dimK(1, -1, -3, -1, 0); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::heatTransferModel::heatTransferModel +( + const dictionary& dict, + const phasePair& pair +) +: + pair_(pair), + residualAlpha_ + ( + "residualAlpha", + dimless, + dict.lookupOrDefault<scalar> + ( + "residualAlpha", + pair_.dispersed().residualAlpha().value() + ) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::heatTransferModel::~heatTransferModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H new file mode 100644 index 0000000000000000000000000000000000000000..6276e8aee14661d8c789eca3872ec45833a7540a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/heatTransferModel.H @@ -0,0 +1,132 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::heatTransferModel + +Description + +SourceFiles + heatTransferModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef heatTransferModel_H +#define heatTransferModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class heatTransferModel Declaration +\*---------------------------------------------------------------------------*/ + +class heatTransferModel +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + //- Residual phase fraction + const dimensionedScalar residualAlpha_; + + +public: + + //- Runtime type information + TypeName("heatTransferModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + heatTransferModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + + // Static data members + + //- Coefficient dimensions + static const dimensionSet dimK; + + + // Constructors + + //- Construct froma dictionary and a phase pair + heatTransferModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~heatTransferModel(); + + + // Selectors + + static autoPtr<heatTransferModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- The heat transfer function K used in the enthalpy equation + // ddt(alpha1*rho1*ha) + ... = ... K*(Ta - Tb) + // ddt(alpha2*rho2*hb) + ... = ... K*(Tb - Ta) + virtual tmp<volScalarField> K() const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C new file mode 100644 index 0000000000000000000000000000000000000000..24f02b69b48c480b1f45f45fdf1b683d2a091bff --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "heatTransferModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::heatTransferModel> Foam::heatTransferModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word heatTransferModelType(dict.lookup("type")); + + Info<< "Selecting heatTransferModel for " + << pair << ": " << heatTransferModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(heatTransferModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("heatTransferModel::New") + << "Unknown heatTransferModelType type " + << heatTransferModelType << endl << endl + << "Valid heatTransferModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C new file mode 100644 index 0000000000000000000000000000000000000000..4eec6de0283456fdf08fa62eab746a36275b8fe5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.C @@ -0,0 +1,78 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "sphericalHeatTransfer.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace heatTransferModels +{ + defineTypeNameAndDebug(sphericalHeatTransfer, 0); + addToRunTimeSelectionTable + ( + heatTransferModel, + sphericalHeatTransfer, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::heatTransferModels::sphericalHeatTransfer::sphericalHeatTransfer +( + const dictionary& dict, + const phasePair& pair +) +: + heatTransferModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::heatTransferModels::sphericalHeatTransfer::~sphericalHeatTransfer() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::heatTransferModels::sphericalHeatTransfer::K() const +{ + return + 60.0 + *max(pair_.dispersed(), residualAlpha_) + *pair_.continuous().kappa() + /sqr(pair_.dispersed().d()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H new file mode 100644 index 0000000000000000000000000000000000000000..88d098668fa581edb0add1c704e187b590565282 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/heatTransferModels/sphericalHeatTransfer/sphericalHeatTransfer.H @@ -0,0 +1,95 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::heatTransferModels::sphericalHeatTransfer + +Description + Model which applies an analytical solution for heat transfer from the + surface of a sphere to the fluid within the sphere. + +SourceFiles + sphericalHeatTransfer.C + +\*---------------------------------------------------------------------------*/ + +#ifndef sphericalHeatTransfer_H +#define sphericalHeatTransfer_H + +#include "heatTransferModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace heatTransferModels +{ + +/*---------------------------------------------------------------------------*\ + Class sphericalHeatTransfer Declaration +\*---------------------------------------------------------------------------*/ + +class sphericalHeatTransfer +: + public heatTransferModel +{ +public: + + //- Runtime type information + TypeName("spherical"); + + + // Constructors + + //- Construct from components + sphericalHeatTransfer + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~sphericalHeatTransfer(); + + + // Member Functions + + //- The heat transfer function K used in the enthalpy equation + tmp<volScalarField> K() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace heatTransferModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.C new file mode 100644 index 0000000000000000000000000000000000000000..244853634bd1f770044c9bf260d37c551714fd26 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.C @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "LegendreMagnaudet.H" +#include "phasePair.H" +#include "fvcGrad.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace liftModels +{ + defineTypeNameAndDebug(LegendreMagnaudet, 0); + addToRunTimeSelectionTable(liftModel, LegendreMagnaudet, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::liftModels::LegendreMagnaudet::LegendreMagnaudet +( + const dictionary& dict, + const phasePair& pair +) +: + liftModel(dict, pair), + residualRe_("residualRe", dimless, dict.lookup("residualRe")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::liftModels::LegendreMagnaudet::~LegendreMagnaudet() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::liftModels::LegendreMagnaudet::Cl() const +{ + volScalarField Re(max(pair_.Re(), residualRe_)); + + volScalarField Sr + ( + sqr(pair_.dispersed().d()) + /( + Re + *pair_.continuous().nu() + ) + *mag(fvc::grad(pair_.continuous().U())) + ); + + volScalarField ClLowSqr + ( + sqr(6.0*2.255) + *sqr(Sr) + /( + pow4(constant::mathematical::pi) + *Re + *pow3(Sr + 0.2*Re) + ) + ); + + volScalarField ClHighSqr + ( + sqr(0.5*(Re + 16.0)/(Re + 29.0)) + ); + + return sqrt(ClLowSqr + ClHighSqr); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.H new file mode 100644 index 0000000000000000000000000000000000000000..10de30e6262299092cb4615d72e751bf7fd9c727 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/LegendreMagnaudet/LegendreMagnaudet.H @@ -0,0 +1,116 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::liftModels::LegendreMagnaudet + +Description + Lift model of Legendre and Magnaudet. + + References: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M. + PhD Thesis + April 2013 + \endverbatim + + \verbatim + "The lift force on a spherical bubble in a viscous linear shear flow" + Legendre, D., Magnaudet, J., + Journal of Fluid Mechanics + Volume 368, August 1998, pp. 81-126 + \endverbatim + +SourceFiles + LegendreMagnaudet.C + +\*---------------------------------------------------------------------------*/ + +#ifndef LegendreMagnaudet_H +#define LegendreMagnaudet_H + +#include "liftModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace liftModels +{ + +/*---------------------------------------------------------------------------*\ + Class LegendreMagnaudet Declaration +\*---------------------------------------------------------------------------*/ + +class LegendreMagnaudet +: + public liftModel +{ + // Private data + + //- Residual Reynold's number + const dimensionedScalar residualRe_; + + +public: + + //- Runtime type information + TypeName("LegendreMagnaudet"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + LegendreMagnaudet + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~LegendreMagnaudet(); + + + // Member Functions + + //- Lift coefficient + virtual tmp<volScalarField> Cl() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace liftModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C new file mode 100644 index 0000000000000000000000000000000000000000..5548dfd70af3ae89483a3563b4298cf72d694f18 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Moraga.H" +#include "phasePair.H" +#include "fvcGrad.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace liftModels +{ + defineTypeNameAndDebug(Moraga, 0); + addToRunTimeSelectionTable(liftModel, Moraga, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::liftModels::Moraga::Moraga +( + const dictionary& dict, + const phasePair& pair +) +: + liftModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::liftModels::Moraga::~Moraga() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::liftModels::Moraga::Cl() const +{ + volScalarField Re(pair_.Re()); + + volScalarField sqrSr + ( + sqr(pair_.dispersed().d()) + /pair_.continuous().nu() + *mag(fvc::grad(pair_.continuous().U())) + ); + + if + ( + min(Re).value() < 1200.0 + || max(Re).value() > 18800.0 + || min(sqrSr).value() < 0.0016 + || max(sqrSr).value() > 0.04 + ) + { + WarningIn + ( + "Foam::tmp<Foam::volScalarField> " + "Foam::liftModels::Moraga::Cl() const" + ) << "Re and/or Sr are out of the range of applicability of the " + << "Moraga model. Clamping to range bounds" + << endl; + } + + Re.min(1200.0); + Re.max(18800.0); + + sqrSr.min(0.0016); + sqrSr.max(0.04); + + return 0.2*exp(- Re*sqrSr/3.6e5 - 0.12)*exp(Re*sqrSr/3.0e7); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.H new file mode 100644 index 0000000000000000000000000000000000000000..d1adbd8ea02871ce23c814df6aa57c29f016656b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.H @@ -0,0 +1,109 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::liftModels::Moraga + +Description + Lift model of Moraga et al. + + References: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M., + PhD Thesis, April 2013 + \endverbatim + + \verbatim + "Lateral forces on spheres in turbulent uniform shear flow" + Moraga, F.J., Bonetto, F.J., Lahey, R.T., + International Journal of Multiphase Flow + Volume 25, Issues 6-7, September 1999, pp. 1321-1372 + \endverbatim + +SourceFiles + Moraga.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Moraga_H +#define Moraga_H + +#include "liftModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace liftModels +{ + +/*---------------------------------------------------------------------------*\ + Class Moraga Declaration +\*---------------------------------------------------------------------------*/ + +class Moraga +: + public liftModel +{ +public: + + //- Runtime type information + TypeName("Moraga"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + Moraga + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Moraga(); + + + // Member Functions + + //- Lift coefficient + virtual tmp<volScalarField> Cl() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace liftModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.C new file mode 100644 index 0000000000000000000000000000000000000000..d4a4dfd17e534c7ee2382f669dbf506bcb8dfabc --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.C @@ -0,0 +1,78 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "TomiyamaLift.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace liftModels +{ + defineTypeNameAndDebug(TomiyamaLift, 0); + addToRunTimeSelectionTable(liftModel, TomiyamaLift, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::liftModels::TomiyamaLift::TomiyamaLift +( + const dictionary& dict, + const phasePair& pair +) +: + liftModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::liftModels::TomiyamaLift::~TomiyamaLift() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::liftModels::TomiyamaLift::Cl() const +{ + volScalarField EoH(pair_.EoH2()); + + volScalarField f + ( + 0.0010422*pow3(EoH) - 0.0159*sqr(EoH) - 0.0204*EoH + 0.474 + ); + + return + neg(EoH - scalar(4))*min(0.288*tanh(0.121*pair_.Re()), f) + + pos(EoH - scalar(4))*neg(EoH - scalar(10.7))*f + + pos(EoH - scalar(10.7))*(-0.288); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.H new file mode 100644 index 0000000000000000000000000000000000000000..c179558dde99c05384eb99023dcbbf7e50bc5187 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/TomiyamaLift/TomiyamaLift.H @@ -0,0 +1,106 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::liftModels::TomiyamaLift + +Description + Lift model of Tomiyama et al. + + Reference: + \verbatim + "Transverse migration of single bubbles in simple shear flows" + Tomiyama, A., Tamai, H., Zun, I., Hosokawa, S., + Chemical Engineering Science + Volume 57, Issue 11, June 2002, pp. 1849-1858 + \endverbatim + + The coefficient for pow3(EoH) proposed by Tomiyama (2002) has been modified + to make the model continuous at EoH = 10.7 while maintaining the + lift coefficient proposed by Tomiyama (2002) when EoH >= 10.7. + +SourceFiles + TomiyamaLift.C + +\*---------------------------------------------------------------------------*/ + +#ifndef TomiyamaLift_H +#define TomiyamaLift_H + +#include "liftModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace liftModels +{ + +/*---------------------------------------------------------------------------*\ + Class TomiyamaLift Declaration +\*---------------------------------------------------------------------------*/ + +class TomiyamaLift +: + public liftModel +{ +public: + + //- Runtime type information + TypeName("Tomiyama"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + TomiyamaLift + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~TomiyamaLift(); + + + // Member Functions + + //- Lift coefficient + virtual tmp<volScalarField> Cl() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace liftModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.C new file mode 100644 index 0000000000000000000000000000000000000000..efba0d332a53cb397a69ffcb1fc67034408553f4 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.C @@ -0,0 +1,86 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "constantLiftCoefficient.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace liftModels +{ + defineTypeNameAndDebug(constantLiftCoefficient, 0); + addToRunTimeSelectionTable(liftModel, constantLiftCoefficient, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::liftModels::constantLiftCoefficient::constantLiftCoefficient +( + const dictionary& dict, + const phasePair& pair +) +: + liftModel(dict, pair), + Cl_("Cl", dimless, dict.lookup("Cl")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::liftModels::constantLiftCoefficient::~constantLiftCoefficient() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::liftModels::constantLiftCoefficient::Cl() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return + tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "zero", + mesh.time().timeName(), + mesh + ), + mesh, + Cl_ + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.H new file mode 100644 index 0000000000000000000000000000000000000000..4e13218222225084a70cc467e92eb8426f0b8be5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/constantLiftCoefficient/constantLiftCoefficient.H @@ -0,0 +1,100 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::liftModels::constantLiftCoefficient + +Description + Constant coefficient lift model. + +SourceFiles + constantLiftCoefficient.C + +\*---------------------------------------------------------------------------*/ + +#ifndef constantLiftCoefficient_H +#define constantLiftCoefficient_H + +#include "liftModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace liftModels +{ + +/*---------------------------------------------------------------------------*\ + Class constantLiftCoefficient Declaration +\*---------------------------------------------------------------------------*/ + +class constantLiftCoefficient +: + public liftModel +{ + // Private data + + //- Constant lift coefficient + const dimensionedScalar Cl_; + + +public: + + //- Runtime type information + TypeName("constantCoefficient"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + constantLiftCoefficient + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~constantLiftCoefficient(); + + + // Member Functions + + //- Lift coefficient + virtual tmp<volScalarField> Cl() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace liftModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C new file mode 100644 index 0000000000000000000000000000000000000000..79e52a2856a73b68857a05cd65e69f26a55190cd --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.C @@ -0,0 +1,89 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "liftModel.H" +#include "phasePair.H" +#include "fvcCurl.H" +#include "surfaceInterpolate.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(liftModel, 0); + defineRunTimeSelectionTable(liftModel, dictionary); +} + +const Foam::dimensionSet Foam::liftModel::dimF(1, -2, -2, 0, 0); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::liftModel::liftModel +( + const dictionary& dict, + const phasePair& pair +) +: + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::liftModel::~liftModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volVectorField> Foam::liftModel::Fi() const +{ + return + Cl() + *pair_.continuous().rho() + *( + pair_.Ur() ^ fvc::curl(pair_.continuous().U()) + ); +} + + +Foam::tmp<Foam::volVectorField> Foam::liftModel::F() const +{ + return pair_.dispersed()*Fi(); +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::liftModel::Ff() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return + fvc::interpolate(pair_.dispersed()) + *(fvc::interpolate(Fi()) & mesh.Sf()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H new file mode 100644 index 0000000000000000000000000000000000000000..665c95dc3892f4497d69cd71a1004afe60400483 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/liftModel.H @@ -0,0 +1,137 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::liftModel + +Description + +SourceFiles + liftModel.C + newLiftModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef liftModel_H +#define liftModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class liftModel Declaration +\*---------------------------------------------------------------------------*/ + +class liftModel +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("liftModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + liftModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + + // Static data members + + //- Force dimensions + static const dimensionSet dimF; + + + // Constructors + + //- Construct from a dictionary and a phase pair + liftModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~liftModel(); + + + // Selectors + + static autoPtr<liftModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Return lift coefficient + virtual tmp<volScalarField> Cl() const = 0; + + //- Return phase-intensive lift force + virtual tmp<volVectorField> Fi() const; + + //- Return lift force + virtual tmp<volVectorField> F() const; + + //- Return face lift force + virtual tmp<surfaceScalarField> Ff() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C new file mode 100644 index 0000000000000000000000000000000000000000..c53ff96e3d30c46c119cb1f98a1f49bcff635b24 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/liftModel/newLiftModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "liftModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::liftModel> Foam::liftModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word liftModelType(dict.lookup("type")); + + Info<< "Selecting liftModel for " + << pair << ": " << liftModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(liftModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("liftModel::New") + << "Unknown liftModelType type " + << liftModelType << endl << endl + << "Valid liftModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.C new file mode 100644 index 0000000000000000000000000000000000000000..d4e13d5c7f644bde99ea653bd899ef7055868bae --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.C @@ -0,0 +1,134 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "noLift.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace liftModels +{ + defineTypeNameAndDebug(noLift, 0); + addToRunTimeSelectionTable(liftModel, noLift, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::liftModels::noLift::noLift +( + const dictionary& dict, + const phasePair& pair +) +: + liftModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::liftModels::noLift::~noLift() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::liftModels::noLift::Cl() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "Cl", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + dimensionedScalar("Cl", dimless, 0) + ) + ); +} + + +Foam::tmp<Foam::volVectorField> Foam::liftModels::noLift::F() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<volVectorField> + ( + new volVectorField + ( + IOobject + ( + "noLift:F", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + dimensionedVector("zero", dimF, vector::zero) + ) + ); +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::liftModels::noLift::Ff() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<surfaceScalarField> + ( + new surfaceScalarField + ( + IOobject + ( + "noLift:Ff", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + dimensionedScalar("zero", dimF*dimArea, 0) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.H new file mode 100644 index 0000000000000000000000000000000000000000..db3a90cb1358eaa66d770ac249e1fa7e80ac2eac --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/liftModels/noLift/noLift.H @@ -0,0 +1,99 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::liftModels::noLift + +Description + +SourceFiles + noLift.C + +\*---------------------------------------------------------------------------*/ + +#ifndef noLift_H +#define noLift_H + +#include "liftModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace liftModels +{ + +/*---------------------------------------------------------------------------*\ + Class noLift Declaration +\*---------------------------------------------------------------------------*/ + +class noLift +: + public liftModel +{ +public: + + //- Runtime type information + TypeName("none"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + noLift + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~noLift(); + + + // Member Functions + + //- Lift coefficient + virtual tmp<volScalarField> Cl() const; + + //- Lift force + virtual tmp<volVectorField> F() const; + + //- Lift force on faces + virtual tmp<surfaceScalarField> Ff() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace liftModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C new file mode 100644 index 0000000000000000000000000000000000000000..38c0cf6db69ae387e1bbd25c48627da51fd7b552 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.C @@ -0,0 +1,86 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "TomiyamaSwarm.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace swarmCorrections +{ + defineTypeNameAndDebug(TomiyamaSwarm, 0); + addToRunTimeSelectionTable + ( + swarmCorrection, + TomiyamaSwarm, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::swarmCorrections::TomiyamaSwarm::TomiyamaSwarm +( + const dictionary& dict, + const phasePair& pair +) +: + swarmCorrection(dict, pair), + residualAlpha_ + ( + "residualAlpha", + dimless, + dict.lookupOrDefault<scalar> + ( + "residualAlpha", + pair_.dispersed().residualAlpha().value() + ) + ), + l_("l", dimless, dict.lookup("l")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::swarmCorrections::TomiyamaSwarm::~TomiyamaSwarm() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::swarmCorrections::TomiyamaSwarm::Cs() const +{ + return + pow(max(this->pair_.continuous(), residualAlpha_), scalar(3) - 2*l_); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.H new file mode 100644 index 0000000000000000000000000000000000000000..736c7735896b7722d17cdf26198b84b9292aa090 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/TomiyamaSwarm/TomiyamaSwarm.H @@ -0,0 +1,109 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::TomiyamaSwarm + +Description + Swarm correction of Tomiyama et al. + + Reference: + \verbatim + "Drag Coefficients of Bubbles. 2nd Report. Drag Coefficient for a Swarm + of Bubbles and its Applicability to Transient Flow." + Tomiyama, A., Kataoka, I., Fukuda, T., and Sakaguchi, T., + Nippon Kikai Gakkai Ronbunshu + Volume 61, Issue 588, 1995, pp. 2810-2817 + \endverbatim + +SourceFiles + TomiyamaSwarm.C + +\*---------------------------------------------------------------------------*/ + +#ifndef TomiyamaSwarm_H +#define TomiyamaSwarm_H + +#include "swarmCorrection.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace swarmCorrections +{ + +/*---------------------------------------------------------------------------*\ + Class TomiyamaSwarm Declaration +\*---------------------------------------------------------------------------*/ + +class TomiyamaSwarm +: + public swarmCorrection +{ + // Private data + + //- Residual phase fraction + const dimensionedScalar residualAlpha_; + + //- Constant exponent + const dimensionedScalar l_; + + +public: + + //- Runtime type information + TypeName("Tomiyama"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + TomiyamaSwarm + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~TomiyamaSwarm(); + + + // Member Functions + + //- Swarm correction coefficient + virtual tmp<volScalarField> Cs() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace swarmCorrections +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.C new file mode 100644 index 0000000000000000000000000000000000000000..fc7244c6b76eca5d7f4f8169d79e8ad036b3afb4 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.C @@ -0,0 +1,84 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "noSwarm.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace swarmCorrections +{ + defineTypeNameAndDebug(noSwarm, 0); + addToRunTimeSelectionTable(swarmCorrection, noSwarm, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::swarmCorrections::noSwarm::noSwarm +( + const dictionary& dict, + const phasePair& pair +) +: + swarmCorrection(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::swarmCorrections::noSwarm::~noSwarm() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::swarmCorrections::noSwarm::Cs() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return + tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "one", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedScalar("one", dimless, 1) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.H new file mode 100644 index 0000000000000000000000000000000000000000..9a6097361eb52e3b5166c97f29e6e6edc50f3d26 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/noSwarm/noSwarm.H @@ -0,0 +1,93 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::swarmCorrections::noSwarm + +Description + +SourceFiles + noSwarm.C + +\*---------------------------------------------------------------------------*/ + +#ifndef noSwarm_H +#define noSwarm_H + +#include "swarmCorrection.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace swarmCorrections +{ + +/*---------------------------------------------------------------------------*\ + Class noSwarm Declaration +\*---------------------------------------------------------------------------*/ + +class noSwarm +: + public swarmCorrection +{ +public: + + //- Runtime type information + TypeName("none"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + noSwarm + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~noSwarm(); + + + // Member Functions + + //- Swarm correction coefficient + tmp<volScalarField> Cs() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace swarmCorrections +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/newSwarmCorrection.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/newSwarmCorrection.C new file mode 100644 index 0000000000000000000000000000000000000000..651286c3ee0ea01e3cafdb772a6a4b2c1a2853c7 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/newSwarmCorrection.C @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "swarmCorrection.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::swarmCorrection> +Foam::swarmCorrection::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word swarmCorrectionType(dict.lookup("type")); + + Info<< "Selecting swarmCorrection for " + << pair << ": " << swarmCorrectionType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(swarmCorrectionType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("swarmCorrection::New") + << "Unknown swarmCorrectionType type " + << swarmCorrectionType << endl << endl + << "Valid swarmCorrection types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.C new file mode 100644 index 0000000000000000000000000000000000000000..5c4edc45ede1e6cf537efce044be02388c275f58 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.C @@ -0,0 +1,56 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "swarmCorrection.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(swarmCorrection, 0); + defineRunTimeSelectionTable(swarmCorrection, dictionary); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::swarmCorrection::swarmCorrection +( + const dictionary& dict, + const phasePair& pair +) +: + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::swarmCorrection::~swarmCorrection() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.H new file mode 100644 index 0000000000000000000000000000000000000000..23531b3cc56359eb3cb29cc6c4b84dbbe01636c6 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/swarmCorrections/swarmCorrection/swarmCorrection.H @@ -0,0 +1,121 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::swarmCorrection + +Description + +SourceFiles + swarmCorrection.C + newSwarmCorrection.C + +\*---------------------------------------------------------------------------*/ + +#ifndef swarmCorrection_H +#define swarmCorrection_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class swarmCorrection Declaration +\*---------------------------------------------------------------------------*/ + +class swarmCorrection +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("swarmCorrection"); + + + // Declare runtime construction + declareRunTimeSelectionTable + ( + autoPtr, + swarmCorrection, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + + // Constructors + + //- Construct from a dictionary and a phase pair + swarmCorrection + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~swarmCorrection(); + + + // Selectors + + static autoPtr<swarmCorrection> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Swarm correction coefficient + virtual tmp<volScalarField> Cs() const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.C new file mode 100644 index 0000000000000000000000000000000000000000..c51b716340a930a01de142f51f63d5d19f666586 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.C @@ -0,0 +1,108 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Burns.H" +#include "phasePair.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "addToRunTimeSelectionTable.H" + +#include "dragModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace turbulentDispersionModels +{ + defineTypeNameAndDebug(Burns, 0); + addToRunTimeSelectionTable + ( + turbulentDispersionModel, + Burns, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::Burns::Burns +( + const dictionary& dict, + const phasePair& pair +) +: + turbulentDispersionModel(dict, pair), + sigma_("sigma", dimless, dict.lookup("sigma")), + residualAlpha_ + ( + "residualAlpha", + dimless, + dict.lookupOrDefault<scalar> + ( + "residualAlpha", + pair_.dispersed().residualAlpha().value() + ) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::Burns::~Burns() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::turbulentDispersionModels::Burns::D() const +{ + const fvMesh& mesh(pair_.phase1().mesh()); + const dragModel& + drag + ( + mesh.lookupObject<dragModel> + ( + IOobject::groupName(dragModel::typeName, pair_.name()) + ) + ); + + return + 0.75 + *drag.CdRe() + *pair_.continuous().nu() + *pair_.continuous().turbulence().nut() + /( + sigma_ + *sqr(pair_.dispersed().d()) + ) + *pair_.continuous().rho() + *(1.0 + pair_.dispersed()/max(pair_.continuous(), residualAlpha_)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.H new file mode 100644 index 0000000000000000000000000000000000000000..9a0491ebe9e7dec1392e9eba37fb2dafd8673ea7 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Burns/Burns.H @@ -0,0 +1,121 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::turbulentDispersionModels::Burns + +Description + Turbulent dispersion model of Burns et al. + + References: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M., + PhD Thesis + April 2013 + \endverbatim + + \verbatim + "The Favre averaged drag model for turbulent dispersion in Eulerian + multi-phase flows" + Burns, A.D., Frank, T., Hamill, I., Shi, J.M., + 5th international conference on multiphase flow + Volume 4, Paper 392, May 2004 + \endverbatim + +SourceFiles + Burns.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Burns_H +#define Burns_H + +#include "turbulentDispersionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace turbulentDispersionModels +{ + +/*---------------------------------------------------------------------------*\ + Class Burns Declaration +\*---------------------------------------------------------------------------*/ + +class Burns +: + public turbulentDispersionModel +{ + // Private data + + //- Schmidt number + const dimensionedScalar sigma_; + + //- Residual phase fraction + const dimensionedScalar residualAlpha_; + + +public: + + //- Runtime type information + TypeName("Burns"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + Burns + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Burns(); + + + // Member Functions + + //- Turbulent diffusivity + // multiplying the gradient of the phase-fraction + virtual tmp<volScalarField> D() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace turbulentDispersionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.C new file mode 100644 index 0000000000000000000000000000000000000000..a40dbf07703b4bc11010e2c167b29039ba9e1298 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.C @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Gosman.H" +#include "phasePair.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "addToRunTimeSelectionTable.H" + +#include "dragModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace turbulentDispersionModels +{ + defineTypeNameAndDebug(Gosman, 0); + addToRunTimeSelectionTable + ( + turbulentDispersionModel, + Gosman, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::Gosman::Gosman +( + const dictionary& dict, + const phasePair& pair +) +: + turbulentDispersionModel(dict, pair), + sigma_("sigma", dimless, dict.lookup("sigma")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::Gosman::~Gosman() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::turbulentDispersionModels::Gosman::D() const +{ + const fvMesh& mesh(pair_.phase1().mesh()); + const dragModel& + drag + ( + mesh.lookupObject<dragModel> + ( + IOobject::groupName(dragModel::typeName, pair_.name()) + ) + ); + + return + 0.75 + *drag.CdRe() + *pair_.dispersed() + *pair_.continuous().nu() + *pair_.continuous().turbulence().nut() + /( + sigma_ + *sqr(pair_.dispersed().d()) + ) + *pair_.continuous().rho(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.H new file mode 100644 index 0000000000000000000000000000000000000000..49c48e6b1227697b2d821cbf971a1a932dbdd7dc --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/Gosman/Gosman.H @@ -0,0 +1,110 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::turbulentDispersionModels::Gosman + +Description + Turbulent dispersion model of Gosman et al. + + Reference: + \verbatim + "Multidimensional modeling of turbulent two-phase flows in stirred + vessels" + Gosman, A.D., Lekakou, C., Politis, S., Issa, R.I., and Looney, M.K., + AIChE Journal + Volume 38, Issue 12, 1992, pp. 1946-1956 + \endverbatim + +SourceFiles + Gosman.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Gosman_H +#define Gosman_H + +#include "turbulentDispersionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace turbulentDispersionModels +{ + +/*---------------------------------------------------------------------------*\ + Class Gosman Declaration +\*---------------------------------------------------------------------------*/ + +class Gosman +: + public turbulentDispersionModel +{ + // Private data + + //- Schmidt number + const dimensionedScalar sigma_; + + +public: + + //- Runtime type information + TypeName("Gosman"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + Gosman + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Gosman(); + + + // Member Functions + + //- Turbulent diffusivity + // multiplying the gradient of the phase-fraction + virtual tmp<volScalarField> D() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace turbulentDispersionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C new file mode 100644 index 0000000000000000000000000000000000000000..52adccb9b44858ff623bca83c4c361a10be66d93 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.C @@ -0,0 +1,79 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "LopezDeBertodano.H" +#include "phasePair.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace turbulentDispersionModels +{ + defineTypeNameAndDebug(LopezDeBertodano, 0); + addToRunTimeSelectionTable + ( + turbulentDispersionModel, + LopezDeBertodano, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::LopezDeBertodano::LopezDeBertodano +( + const dictionary& dict, + const phasePair& pair +) +: + turbulentDispersionModel(dict, pair), + Ctd_("Ctd", dimless, dict.lookup("Ctd")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::LopezDeBertodano::~LopezDeBertodano() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::turbulentDispersionModels::LopezDeBertodano::D() const +{ + return + Ctd_ + *pair_.continuous().rho() + *pair_.continuous().turbulence().k(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.H new file mode 100644 index 0000000000000000000000000000000000000000..ce3c9996a0632b7ea30d01d7b664a4a0687fb110 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/LopezDeBertodano/LopezDeBertodano.H @@ -0,0 +1,116 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::turbulentDispersionModels::LopezDeBertodano + +Description + Lopez de Bertodano (1992) turbulent dispersion model. + + \verbatim + "Turbulent bubbly two-phase flow in a triangular + duct" + Lopez de Bertodano, M. + Ph.D. Thesis, Rensselaer Polytechnic Institution, New York, USA, 1992. + \endverbatim + + \verbatim + "The Favre averaged drag model for turbulent dispersion in Eulerian + multi-phase flows" + Burns, A.D., Frank, T., Hamill, I., Shi, J.M., + 5th international conference on multiphase flow + Volume 4, Paper 392, May 2004 + \endverbatim + +SourceFiles + LopezDeBertodano.C + +\*---------------------------------------------------------------------------*/ + +#ifndef LopezDeBertodano_H +#define LopezDeBertodano_H + +#include "turbulentDispersionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace turbulentDispersionModels +{ + +/*---------------------------------------------------------------------------*\ + Class LopezDeBertodano Declaration +\*---------------------------------------------------------------------------*/ + +class LopezDeBertodano +: + public turbulentDispersionModel +{ + // Private data + + //- Constant turbulent dispersion coefficient + const dimensionedScalar Ctd_; + + +public: + + //- Runtime type information + TypeName("LopezDeBertodano"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + LopezDeBertodano + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~LopezDeBertodano(); + + + // Member Functions + + //- Turbulent diffusivity + // multiplying the gradient of the phase-fraction + virtual tmp<volScalarField> D() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace turbulentDispersionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C new file mode 100644 index 0000000000000000000000000000000000000000..67566b9f885fb09358340b1b215ac119f4d4c7c6 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.C @@ -0,0 +1,83 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "constantTurbulentDispersionCoefficient.H" +#include "phasePair.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace turbulentDispersionModels +{ + defineTypeNameAndDebug(constantTurbulentDispersionCoefficient, 0); + addToRunTimeSelectionTable + ( + turbulentDispersionModel, + constantTurbulentDispersionCoefficient, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::constantTurbulentDispersionCoefficient:: +constantTurbulentDispersionCoefficient +( + const dictionary& dict, + const phasePair& pair +) +: + turbulentDispersionModel(dict, pair), + Ctd_("Ctd", dimless, dict.lookup("Ctd")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::constantTurbulentDispersionCoefficient:: +~constantTurbulentDispersionCoefficient() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::turbulentDispersionModels::constantTurbulentDispersionCoefficient:: +D() const +{ + return + Ctd_ + *pair_.dispersed() + *pair_.continuous().rho() + *pair_.continuous().turbulence().k(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.H new file mode 100644 index 0000000000000000000000000000000000000000..eb6385670cdec39dd2e4166320198403318fd435 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/constantTurbulentDispersionCoefficient/constantTurbulentDispersionCoefficient.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::turbulentDispersionModels::constantTurbulentDispersionCoefficient + +Description + Constant coefficient turbulent dispersion model. + +SourceFiles + constantTurbulentDispersionCoefficient.C + +\*---------------------------------------------------------------------------*/ + +#ifndef constantTurbulentDispersionCoefficient_H +#define constantTurbulentDispersionCoefficient_H + +#include "turbulentDispersionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace turbulentDispersionModels +{ + +/*---------------------------------------------------------------------------*\ + Class constantTurbulentDispersionCoefficient Declaration +\*---------------------------------------------------------------------------*/ + +class constantTurbulentDispersionCoefficient +: + public turbulentDispersionModel +{ + // Private data + + //- Constant turbulent dispersion coefficient + const dimensionedScalar Ctd_; + + +public: + + //- Runtime type information + TypeName("constantCoefficient"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + constantTurbulentDispersionCoefficient + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~constantTurbulentDispersionCoefficient(); + + + // Member Functions + + //- Turbulent diffusivity + // multiplying the gradient of the phase-fraction + virtual tmp<volScalarField> D() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace turbulentDispersionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C new file mode 100644 index 0000000000000000000000000000000000000000..5845e3569a6e4e947247a870c6d4afb4e74115cd --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.C @@ -0,0 +1,116 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "noTurbulentDispersion.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace turbulentDispersionModels +{ + defineTypeNameAndDebug(noTurbulentDispersion, 0); + addToRunTimeSelectionTable + ( + turbulentDispersionModel, + noTurbulentDispersion, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::noTurbulentDispersion::noTurbulentDispersion +( + const dictionary& dict, + const phasePair& pair +) +: + turbulentDispersionModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModels::noTurbulentDispersion:: +~noTurbulentDispersion() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::turbulentDispersionModels::noTurbulentDispersion::D() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "zero", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + dimensionedScalar("zero", dimD, 0) + ) + ); +} + + +Foam::tmp<Foam::volVectorField> +Foam::turbulentDispersionModels::noTurbulentDispersion::F() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return + tmp<volVectorField> + ( + new volVectorField + ( + IOobject + ( + "zero", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedVector("zero", dimF, vector::zero) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.H new file mode 100644 index 0000000000000000000000000000000000000000..8bca7fd04bbb41f10a61c82f890efcf34d1dae92 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/noTurbulentDispersion/noTurbulentDispersion.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::turbulentDispersionModels::noTurbulentDispersion + +Description + +SourceFiles + noTurbulentDispersion.C + +\*---------------------------------------------------------------------------*/ + +#ifndef noTurbulentDispersion_H +#define noTurbulentDispersion_H + +#include "turbulentDispersionModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace turbulentDispersionModels +{ + +/*---------------------------------------------------------------------------*\ + Class noTurbulentDispersion Declaration +\*---------------------------------------------------------------------------*/ + +class noTurbulentDispersion +: + public turbulentDispersionModel +{ +public: + + //- Runtime type information + TypeName("none"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + noTurbulentDispersion + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~noTurbulentDispersion(); + + + // Member Functions + + //- Turbulent diffusivity + // multiplying the gradient of the phase-fraction + virtual tmp<volScalarField> D() const; + + //- Turbulent dispersion force + virtual tmp<volVectorField> F() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace turbulentDispersionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C new file mode 100644 index 0000000000000000000000000000000000000000..14d560969bda804816f1f2584c1fa575be2c7ebf --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/newTurbulentDispersionModel.C @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "turbulentDispersionModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::turbulentDispersionModel> +Foam::turbulentDispersionModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word turbulentDispersionModelType(dict.lookup("type")); + + Info<< "Selecting turbulentDispersionModel for " + << pair << ": " << turbulentDispersionModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(turbulentDispersionModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("turbulentDispersionModel::New") + << "Unknown turbulentDispersionModelType type " + << turbulentDispersionModelType << endl << endl + << "Valid turbulentDispersionModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C new file mode 100644 index 0000000000000000000000000000000000000000..d5d805c08511d4a44431b0b4ffee006f08eeceb6 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.C @@ -0,0 +1,69 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "turbulentDispersionModel.H" +#include "phasePair.H" +#include "fvcGrad.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(turbulentDispersionModel, 0); + defineRunTimeSelectionTable(turbulentDispersionModel, dictionary); +} + +const Foam::dimensionSet Foam::turbulentDispersionModel::dimD(1, -1, -2, 0, 0); +const Foam::dimensionSet Foam::turbulentDispersionModel::dimF(1, -2, -2, 0, 0); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModel::turbulentDispersionModel +( + const dictionary& dict, + const phasePair& pair +) +: + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::turbulentDispersionModel::~turbulentDispersionModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volVectorField> +Foam::turbulentDispersionModel::F() const +{ + return D()*fvc::grad(pair_.dispersed()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H new file mode 100644 index 0000000000000000000000000000000000000000..932fdb3801c3017939ff20fa2fed3d0d9e430bc0 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/turbulentDispersionModels/turbulentDispersionModel/turbulentDispersionModel.H @@ -0,0 +1,134 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::turbulentDispersionModel + +Description + +SourceFiles + turbulentDispersionModel.C + newTurbulentDispersionModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef turbulentDispersionModel_H +#define turbulentDispersionModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class turbulentDispersionModel Declaration +\*---------------------------------------------------------------------------*/ + +class turbulentDispersionModel +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("turbulentDispersionModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + turbulentDispersionModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + // Static data members + + //- Diffusivity dimensions + static const dimensionSet dimD; + + //- Force dimensions + static const dimensionSet dimF; + + + // Constructors + + //- Construct from a dictionary and a phase pair + turbulentDispersionModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~turbulentDispersionModel(); + + + // Selectors + + static autoPtr<turbulentDispersionModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Turbulent diffusivity + // multiplying the gradient of the phase-fraction + virtual tmp<volScalarField> D() const = 0; + + //- Turbulent dispersion force + virtual tmp<volVectorField> F() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.C new file mode 100644 index 0000000000000000000000000000000000000000..616949c6beac33f4119d109c426782b65b850855 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.C @@ -0,0 +1,79 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Lamb.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace virtualMassModels +{ + defineTypeNameAndDebug(Lamb, 0); + addToRunTimeSelectionTable + ( + virtualMassModel, + Lamb, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::virtualMassModels::Lamb::Lamb +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + virtualMassModel(dict, pair, registerObject) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::virtualMassModels::Lamb::~Lamb() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::virtualMassModels::Lamb::Cvm() const +{ + volScalarField E(min(max(pair_.E(), SMALL), 1 - SMALL)); + volScalarField rtOmEsq(sqrt(1 - sqr(E))); + + return + (rtOmEsq - E*acos(E)) + /(E*acos(E) - sqr(E)*rtOmEsq); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.H new file mode 100644 index 0000000000000000000000000000000000000000..3a99c2ee2c1caac7d55efccd73cfc59d72b5cd3d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/Lamb/Lamb.H @@ -0,0 +1,102 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::virtualMassModels::Lamb + +Description + Virtual mass model of Lamb. + + Reference: + \verbatim + "Hydrodynamics" + Lamb, H., + Cambridge University Press, 1895 + \endverbatim + +SourceFiles + Lamb.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Lamb_H +#define Lamb_H + +#include "virtualMassModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace virtualMassModels +{ + +/*---------------------------------------------------------------------------*\ + Class Lamb Declaration +\*---------------------------------------------------------------------------*/ + +class Lamb +: + public virtualMassModel +{ +public: + + //- Runtime type information + TypeName("Lamb"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + Lamb + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~Lamb(); + + + // Member Functions + + //- Virtual mass coefficient + virtual tmp<volScalarField> Cvm() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace virtualMassModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C new file mode 100644 index 0000000000000000000000000000000000000000..2fa5f493050d66580da2fbf6083c5fc6153d29db --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.C @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "constantVirtualMassCoefficient.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace virtualMassModels +{ + defineTypeNameAndDebug(constantVirtualMassCoefficient, 0); + addToRunTimeSelectionTable + ( + virtualMassModel, + constantVirtualMassCoefficient, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::virtualMassModels::constantVirtualMassCoefficient:: +constantVirtualMassCoefficient +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + virtualMassModel(dict, pair, registerObject), + Cvm_("Cvm", dimless, dict.lookup("Cvm")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::virtualMassModels::constantVirtualMassCoefficient:: +~constantVirtualMassCoefficient() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::virtualMassModels::constantVirtualMassCoefficient::Cvm() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "Cvm", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + Cvm_ + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.H new file mode 100644 index 0000000000000000000000000000000000000000..c1f7e702ac743af13541d2198262ca38fed43dd0 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/constantVirtualMassCoefficient/constantVirtualMassCoefficient.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::virtualMassModels::constantVirtualMassCoefficient + +Description + Constant coefficient virtual mass model. + +SourceFiles + constantVirtualMassCoefficient.C + +\*---------------------------------------------------------------------------*/ + +#ifndef constantVirtualMassCoefficient_H +#define constantVirtualMassCoefficient_H + +#include "virtualMassModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace virtualMassModels +{ + +/*---------------------------------------------------------------------------*\ + Class constantVirtualMassCoefficient Declaration +\*---------------------------------------------------------------------------*/ + +class constantVirtualMassCoefficient +: + public virtualMassModel +{ + // Private data + + //- Constant virtual mass coefficient + const dimensionedScalar Cvm_; + + +public: + + //- Runtime type information + TypeName("constantCoefficient"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + constantVirtualMassCoefficient + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~constantVirtualMassCoefficient(); + + + // Member Functions + + //- Virtual mass coefficient + virtual tmp<volScalarField> Cvm() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace virtualMassModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.C new file mode 100644 index 0000000000000000000000000000000000000000..20378a0ad100d533a94e96499df9d134b95f8929 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.C @@ -0,0 +1,93 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "noVirtualMass.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace virtualMassModels +{ + defineTypeNameAndDebug(noVirtualMass, 0); + addToRunTimeSelectionTable(virtualMassModel, noVirtualMass, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::virtualMassModels::noVirtualMass::noVirtualMass +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + virtualMassModel(dict, pair, registerObject) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::virtualMassModels::noVirtualMass::~noVirtualMass() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::virtualMassModels::noVirtualMass::Cvm() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return + tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "zero", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedScalar("zero", dimless, 0) + ) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::virtualMassModels::noVirtualMass::K() const +{ + return Cvm()*dimensionedScalar("zero", dimDensity, 0); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.H new file mode 100644 index 0000000000000000000000000000000000000000..fc611aafd1a7974fb545c2c3ef2a91e1dbfe64cf --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/noVirtualMass/noVirtualMass.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::virtualMassModels::noVirtualMass + +Description + +SourceFiles + noVirtualMass.C + +\*---------------------------------------------------------------------------*/ + +#ifndef noVirtualMass_H +#define noVirtualMass_H + +#include "virtualMassModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace virtualMassModels +{ + +/*---------------------------------------------------------------------------*\ + Class noVirtualMass Declaration +\*---------------------------------------------------------------------------*/ + +class noVirtualMass +: + public virtualMassModel +{ +public: + + //- Runtime type information + TypeName("none"); + + + // Constructors + + //- Construct from a dictionary and a phase pair + noVirtualMass + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~noVirtualMass(); + + + // Member Functions + + //- Virtual mass coefficient + virtual tmp<volScalarField> Cvm() const; + + //- The virtual mass function K used in the momentum equation + virtual tmp<volScalarField> K() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace virtualMassModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/newVirtualMassModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/newVirtualMassModel.C new file mode 100644 index 0000000000000000000000000000000000000000..72f620a424b8735e90f987db00ede94470f854d5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/newVirtualMassModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "virtualMassModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::virtualMassModel> Foam::virtualMassModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word virtualMassModelType(dict.lookup("type")); + + Info<< "Selecting virtualMassModel for " + << pair << ": " << virtualMassModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(virtualMassModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("virtualMassModel::New") + << "Unknown virtualMassModelType type " + << virtualMassModelType << endl << endl + << "Valid virtualMassModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair, true); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C new file mode 100644 index 0000000000000000000000000000000000000000..a2ece4192d535d9b6614fc24dc2909fb96c02648 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.C @@ -0,0 +1,99 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "virtualMassModel.H" +#include "phasePair.H" +#include "surfaceInterpolate.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(virtualMassModel, 0); + defineRunTimeSelectionTable(virtualMassModel, dictionary); +} + +const Foam::dimensionSet Foam::virtualMassModel::dimK(dimDensity); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::virtualMassModel::virtualMassModel +( + const dictionary& dict, + const phasePair& pair, + const bool registerObject +) +: + regIOobject + ( + IOobject + ( + IOobject::groupName(typeName, pair.name()), + pair.phase1().mesh().time().timeName(), + pair.phase1().mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + registerObject + ) + ), + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::virtualMassModel::~virtualMassModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::virtualMassModel::Ki() const +{ + return Cvm()*pair_.continuous().rho(); +} + + +Foam::tmp<Foam::volScalarField> Foam::virtualMassModel::K() const +{ + return pair_.dispersed()*Ki(); +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::virtualMassModel::Kf() const +{ + return + fvc::interpolate(pair_.dispersed())*fvc::interpolate(Ki()); +} + + +bool Foam::virtualMassModel::writeData(Ostream& os) const +{ + return os.good(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.H new file mode 100644 index 0000000000000000000000000000000000000000..0af7097cf904f5c1ad8ba655275fb653e3505b9b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/virtualMassModels/virtualMassModel/virtualMassModel.H @@ -0,0 +1,151 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::virtualMassModel + +Description + +SourceFiles + virtualMassModel.C + newVirtualMassModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef virtualMassModel_H +#define virtualMassModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class virtualMassModel Declaration +\*---------------------------------------------------------------------------*/ + +class virtualMassModel +: + public regIOobject +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("virtualMassModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + virtualMassModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ), + (dict, pair, registerObject) + ); + + + // Static data members + + //- Coefficient dimensions + static const dimensionSet dimK; + + + // Constructors + + //- Construct from a dictionary and a phase pair + virtualMassModel + ( + const dictionary& dict, + const phasePair& pair, + const bool registerObject + ); + + + //- Destructor + virtual ~virtualMassModel(); + + + // Selectors + + static autoPtr<virtualMassModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Return the virtual mass coefficient + virtual tmp<volScalarField> Cvm() const = 0; + + //- Return the phase-intensive virtual mass coefficient Ki + // used in the momentum equation + // ddt(alpha1*rho1*U1) + ... = ... alphad*K*(DU1_Dt - DU2_Dt) + // ddt(alpha2*rho2*U2) + ... = ... alphad*K*(DU1_Dt - DU2_Dt) + virtual tmp<volScalarField> Ki() const; + + //- Return the virtual mass coefficient K + // used in the momentum equation + // ddt(alpha1*rho1*U1) + ... = ... K*(DU1_Dt - DU2_Dt) + // ddt(alpha2*rho2*U2) + ... = ... K*(DU1_Dt - DU2_Dt) + virtual tmp<volScalarField> K() const; + + //- Return the virtual mass coefficient Kf + // used in the face-momentum equations + virtual tmp<surfaceScalarField> Kf() const; + + // Dummy write for regIOobject + bool writeData(Ostream& os) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.C new file mode 100644 index 0000000000000000000000000000000000000000..93b2bb3f70c91445960395c1fcfbbf3ab916da33 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.C @@ -0,0 +1,57 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "wallDependentModel.H" +#include "wallDist.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::wallDependentModel::wallDependentModel(const fvMesh& mesh) +: + mesh_(mesh) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::wallDependentModel::~wallDependentModel() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +const Foam::volScalarField& Foam::wallDependentModel::yWall() const +{ + return wallDist::New(mesh_).y(); +} + + +const Foam::volVectorField& Foam::wallDependentModel::nWall() const +{ + return wallDist::New(mesh_).n(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.H new file mode 100644 index 0000000000000000000000000000000000000000..8f23f6881e1791a4ee99c895b14ed92bd4b2395a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallDependentModel/wallDependentModel.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::wallDependentModel + +Description + A class which provides on-demand creation and caching of wall distance and + wall normal fields for use by multiple models. + +SourceFiles + wallDependentModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef wallDependentModel_H +#define wallDependentModel_H + +#include "fvMesh.H" +#include "volFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class wallDependentModel Declaration +\*---------------------------------------------------------------------------*/ + +class wallDependentModel +{ + // Private data + + //- Reference to the mesh + const fvMesh& mesh_; + + + // Private Member Functions + + //- Disallow default bitwise copy construct + wallDependentModel(const wallDependentModel&); + + //- Disallow default bitwise assignment + void operator=(const wallDependentModel&); + + +public: + + // Constructors + + //- Construct from a mesh + wallDependentModel(const fvMesh& mesh); + + + //- Destructor + virtual ~wallDependentModel(); + + // Member Functions + + // Return the wall distance, creating and storing it if necessary + const volScalarField& yWall() const; + + // Return the wall normal, creating and storing it if necessary + const volVectorField& nWall() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.C new file mode 100644 index 0000000000000000000000000000000000000000..fa9b2749f047d79a00b250bbd19906477c87e222 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.C @@ -0,0 +1,87 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Antal.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace wallLubricationModels +{ + defineTypeNameAndDebug(Antal, 0); + addToRunTimeSelectionTable + ( + wallLubricationModel, + Antal, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::Antal::Antal +( + const dictionary& dict, + const phasePair& pair +) +: + wallLubricationModel(dict, pair), + Cw1_("Cw1", dimless, dict.lookup("Cw1")), + Cw2_("Cw2", dimless, dict.lookup("Cw2")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::Antal::~Antal() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volVectorField> Foam::wallLubricationModels::Antal::Fi() const +{ + volVectorField Ur(pair_.Ur()); + + const volVectorField& n(nWall()); + + return + max + ( + dimensionedScalar("zero", dimless/dimLength, 0), + Cw1_/pair_.dispersed().d() + Cw2_/yWall() + ) + *pair_.continuous().rho() + *magSqr(Ur - (Ur & n)*n) + *n; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.H new file mode 100644 index 0000000000000000000000000000000000000000..7639712417c5c54846df9c8f53eb5c59f478b662 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Antal/Antal.H @@ -0,0 +1,112 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::wallLubricationModels::Antal + +Description + Wall lubrication model of Antal et al. + + Reference: + \verbatim + "Analysis of phase distribution in fully developed laminar bubbly + two-phase flow" + Antal, S.P., Lahey Jr, R.T., and Flaherty, J.E. + International Journal of Multiphase Flow + Volume 17, Issue 5, September 1991, pp. 635-652 + \endverbatim + +SourceFiles + Antal.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Antal_H +#define Antal_H + +#include "wallLubricationModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace wallLubricationModels +{ + +/*---------------------------------------------------------------------------*\ + Class Antal Declaration +\*---------------------------------------------------------------------------*/ + +class Antal +: + public wallLubricationModel +{ + // Private data + + //- Coefficient 1 + const dimensionedScalar Cw1_; + + //- Coefficient 2 + const dimensionedScalar Cw2_; + + +public: + + //- Runtime type information + TypeName("Antal"); + + + // Constructors + + //- Construct from components + Antal + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Antal(); + + + // Member Functions + + //- Return phase-intensive wall lubrication force + tmp<volVectorField> Fi() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace wallLubricationModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.C new file mode 100644 index 0000000000000000000000000000000000000000..f1b11a32cc04fed09cc87d768526fc5cab2d4b75 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.C @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "Frank.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace wallLubricationModels +{ + defineTypeNameAndDebug(Frank, 0); + addToRunTimeSelectionTable + ( + wallLubricationModel, + Frank, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::Frank::Frank +( + const dictionary& dict, + const phasePair& pair +) +: + wallLubricationModel(dict, pair), + Cwd_("Cwd", dimless, dict.lookup("Cwd")), + Cwc_("Cwc", dimless, dict.lookup("Cwc")), + p_(readScalar(dict.lookup("p"))) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::Frank::~Frank() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volVectorField> Foam::wallLubricationModels::Frank::Fi() const +{ + volVectorField Ur(pair_.Ur()); + + const volVectorField& n(nWall()); + const volScalarField& y(yWall()); + + volScalarField Eo(pair_.Eo()); + volScalarField yTilde(y/(Cwc_*pair_.dispersed().d())); + + return + ( + pos(Eo - 1.0)*neg(Eo - 5.0)*exp(-0.933*Eo + 0.179) + + pos(Eo - 5.0)*neg(Eo - 33.0)*(0.00599*Eo - 0.0187) + + pos(Eo - 33.0)*0.179 + ) + *max + ( + dimensionedScalar("zero", dimless/dimLength, 0.0), + (1.0 - yTilde)/(Cwd_*y*pow(yTilde, p_ - 1.0)) + ) + *pair_.continuous().rho() + *magSqr(Ur - (Ur & n)*n) + *n; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.H new file mode 100644 index 0000000000000000000000000000000000000000..51527fd80b149a321ee341409876b0d0f1c48f67 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/Frank/Frank.H @@ -0,0 +1,122 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::wallLubricationModels::Frank + +Description + Wall lubrication model of Frank. + + References: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M. + PhD Thesis + April 2013 + \endverbatim + + \verbatim + "Advances in Computational Fluid Dynamics (CFD) of 3-dimensional Gas- + Liquid Multiphase Flows" + Frank, T. + NAFEMS Seminar: Simulation of Complex Flows (CFD), April 2005, pp. 1-18 + \endverbatim + +SourceFiles + Frank.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Frank_H +#define Frank_H + +#include "wallLubricationModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace wallLubricationModels +{ + +/*---------------------------------------------------------------------------*\ + Class Frank Declaration +\*---------------------------------------------------------------------------*/ + +class Frank +: + public wallLubricationModel +{ + // Private data + + //- Coefficient d + const dimensionedScalar Cwd_; + + //- Coefficient c + const dimensionedScalar Cwc_; + + //- Power p + const scalar p_; + + +public: + + //- Runtime type information + TypeName("Frank"); + + + // Constructors + + //- Construct from components + Frank + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~Frank(); + + + // Member Functions + + //- Return phase-intensive wall lubrication force + tmp<volVectorField> Fi() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace wallLubricationModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C new file mode 100644 index 0000000000000000000000000000000000000000..c3db3597af63310b661b599004163f8f2a8753fe --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.C @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "TomiyamaWallLubrication.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace wallLubricationModels +{ + defineTypeNameAndDebug(TomiyamaWallLubrication, 0); + addToRunTimeSelectionTable + ( + wallLubricationModel, + TomiyamaWallLubrication, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::TomiyamaWallLubrication::TomiyamaWallLubrication +( + const dictionary& dict, + const phasePair& pair +) +: + wallLubricationModel(dict, pair), + D_("Cwd", dimLength, dict.lookup("D")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::TomiyamaWallLubrication::~TomiyamaWallLubrication() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volVectorField> +Foam::wallLubricationModels::TomiyamaWallLubrication::Fi() const +{ + volVectorField Ur(pair_.Ur()); + + const volVectorField& n(nWall()); + const volScalarField& y(yWall()); + + volScalarField Eo(pair_.Eo()); + + return + ( + pos(Eo - 1.0)*neg(Eo - 5.0)*exp(-0.933*Eo + 0.179) + + pos(Eo - 5.0)*neg(Eo - 33.0)*(0.00599*Eo - 0.0187) + + pos(Eo - 33.0)*0.179 + ) + *0.5 + *pair_.dispersed().d() + *( + 1/sqr(y) + - 1/sqr(D_ - y) + ) + *pair_.continuous().rho() + *magSqr(Ur - (Ur & n)*n) + *n; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.H new file mode 100644 index 0000000000000000000000000000000000000000..9d37bbbd176f3badbb1c25708ce49a3c7b7410d2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/TomiyamaWallLubrication/TomiyamaWallLubrication.H @@ -0,0 +1,115 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::wallLubricationModels::TomiyamaWallLubrication + +Description + Wall lubrication model of Tomiyama. + + References: + \verbatim + "Implementation and Comparison of Correlations for interfacial Forces + in a Gas-Liquid System within an Euler-Euler Framework" + Otromke, M. + PhD Thesis, April 2013 + \endverbatim + + \verbatim + "Struggle with Computational Bubble Dynamics" + Tomiyama, A., + Multiphase Science and Technology + Volume 10, Issue 4, 1998, pp. 369-405 + \endverbatim + +SourceFiles + TomiyamaWallLubrication.C + +\*---------------------------------------------------------------------------*/ + +#ifndef TomiyamaWallLubrication_H +#define TomiyamaWallLubrication_H + +#include "wallLubricationModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace wallLubricationModels +{ + +/*---------------------------------------------------------------------------*\ + Class TomiyamaWallLubrication Declaration +\*---------------------------------------------------------------------------*/ + +class TomiyamaWallLubrication +: + public wallLubricationModel +{ + // Private data + + //- Characteristic channel dimension + const dimensionedScalar D_; + + +public: + + //- Runtime type information + TypeName("Tomiyama"); + + + // Constructors + + //- Construct from components + TomiyamaWallLubrication + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~TomiyamaWallLubrication(); + + + // Member Functions + + //- Return phase-intensive wall lubrication force + tmp<volVectorField> Fi() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace wallLubricationModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.C new file mode 100644 index 0000000000000000000000000000000000000000..8de7e302608272b3db1b4faa769d54125acfb188 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.C @@ -0,0 +1,117 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "noWallLubrication.H" +#include "phasePair.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace wallLubricationModels +{ + defineTypeNameAndDebug(noWallLubrication, 0); + addToRunTimeSelectionTable + ( + wallLubricationModel, + noWallLubrication, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::noWallLubrication::noWallLubrication +( + const dictionary& dict, + const phasePair& pair +) +: + wallLubricationModel(dict, pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::wallLubricationModels::noWallLubrication::~noWallLubrication() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volVectorField> +Foam::wallLubricationModels::noWallLubrication::Fi() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<volVectorField> + ( + new volVectorField + ( + IOobject + ( + "noWallLubrication:Fi", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + dimensionedVector("zero", dimF, vector::zero) + ) + ); +} + + +Foam::tmp<Foam::volVectorField> +Foam::wallLubricationModels::noWallLubrication::F() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return tmp<volVectorField> + ( + new volVectorField + ( + IOobject + ( + "noWallLubrication:F", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + dimensionedVector("zero", dimF, vector::zero) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.H new file mode 100644 index 0000000000000000000000000000000000000000..81a2c0327e3ff664cac6d5f470a498f81605967c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/noWallLubrication/noWallLubrication.H @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::wallLubricationModels::noWallLubrication + +Description + +SourceFiles + noWallLubrication.C + +\*---------------------------------------------------------------------------*/ + +#ifndef noWallLubrication_H +#define noWallLubrication_H + +#include "wallLubricationModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phasePair; + +namespace wallLubricationModels +{ + +/*---------------------------------------------------------------------------*\ + Class noWallLubrication Declaration +\*---------------------------------------------------------------------------*/ + +class noWallLubrication +: + public wallLubricationModel +{ +public: + + //- Runtime type information + TypeName("none"); + + + // Constructors + + //- Construct from components + noWallLubrication + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~noWallLubrication(); + + + // Member Functions + + //- Return phase-intensive wall lubrication force + tmp<volVectorField> Fi() const; + + //- Wall lubrication force + tmp<volVectorField> F() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace wallLubricationModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/newWallLubricationModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/newWallLubricationModel.C new file mode 100644 index 0000000000000000000000000000000000000000..9f7d905c1970b6fa5a54281be4635eb3e7811d41 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/newWallLubricationModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "wallLubricationModel.H" +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::wallLubricationModel> Foam::wallLubricationModel::New +( + const dictionary& dict, + const phasePair& pair +) +{ + word wallLubricationModelType(dict.lookup("type")); + + Info<< "Selecting wallLubricationModel for " + << pair << ": " << wallLubricationModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(wallLubricationModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("wallLubricationModel::New") + << "Unknown wallLubricationModelType type " + << wallLubricationModelType << endl << endl + << "Valid wallLubricationModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, pair); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C new file mode 100644 index 0000000000000000000000000000000000000000..2f3cb1aaa032019aba8a4278fe2e973e7f7b8c85 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.C @@ -0,0 +1,78 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "wallLubricationModel.H" +#include "phasePair.H" +#include "surfaceInterpolate.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(wallLubricationModel, 0); + defineRunTimeSelectionTable(wallLubricationModel, dictionary); +} + +const Foam::dimensionSet Foam::wallLubricationModel::dimF(1, -2, -2, 0, 0); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::wallLubricationModel::wallLubricationModel +( + const dictionary& dict, + const phasePair& pair +) +: + wallDependentModel(pair.phase1().mesh()), + pair_(pair) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::wallLubricationModel::~wallLubricationModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volVectorField> Foam::wallLubricationModel::F() const +{ + return pair_.dispersed()*Fi(); +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::wallLubricationModel::Ff() const +{ + const fvMesh& mesh(this->pair_.phase1().mesh()); + + return + fvc::interpolate(pair_.dispersed()) + *(fvc::interpolate(Fi()) & mesh.Sf()); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.H new file mode 100644 index 0000000000000000000000000000000000000000..b55415aeb62e6f930ee95d31ce87b7f75d85427a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/interfacialModels/wallLubricationModels/wallLubricationModel/wallLubricationModel.H @@ -0,0 +1,137 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::wallLubricationModel + +Description + +SourceFiles + wallLubricationModel.C + newWallLubricationModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef wallLubricationModel_H +#define wallLubricationModel_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "wallDependentModel.H" +#include "volFields.H" +#include "dictionary.H" +#include "runTimeSelectionTables.H" + +namespace Foam +{ + +class phasePair; + +/*---------------------------------------------------------------------------*\ + Class wallLubricationModel Declaration +\*---------------------------------------------------------------------------*/ + +class wallLubricationModel +: + public wallDependentModel +{ +protected: + + // Protected data + + //- Phase pair + const phasePair& pair_; + + +public: + + //- Runtime type information + TypeName("wallLubricationModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + wallLubricationModel, + dictionary, + ( + const dictionary& dict, + const phasePair& pair + ), + (dict, pair) + ); + + + // Static data members + + //- Coefficient dimensions + static const dimensionSet dimF; + + + // Constructors + + //- Construct from components + wallLubricationModel + ( + const dictionary& dict, + const phasePair& pair + ); + + + //- Destructor + virtual ~wallLubricationModel(); + + + // Selectors + + static autoPtr<wallLubricationModel> New + ( + const dictionary& dict, + const phasePair& pair + ); + + + // Member Functions + + //- Return phase-intensive wall lubrication force + virtual tmp<volVectorField> Fi() const = 0; + + //- Return wall lubrication force + virtual tmp<volVectorField> F() const; + + //- Return face wall lubrication force + virtual tmp<surfaceScalarField> Ff() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/UEqns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/UEqns.H new file mode 100644 index 0000000000000000000000000000000000000000..424182f859cce5628cc9875ac27f3f9a473f1b28 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/UEqns.H @@ -0,0 +1,63 @@ +Info<< "Constructing momentum equations" << endl; + +MRF.correctBoundaryVelocity(U1); +MRF.correctBoundaryVelocity(U2); + +fvVectorMatrix U1Eqn(U1, rho1.dimensions()*U1.dimensions()*dimVol/dimTime); +fvVectorMatrix U2Eqn(U2, rho2.dimensions()*U2.dimensions()*dimVol/dimTime); + +volScalarField Kd(fluid.Kd()); + +{ + volScalarField Vm(fluid.Vm()); + + { + U1Eqn = + ( + fvm::ddt(alpha1, rho1, U1) + fvm::div(alphaRhoPhi1, U1) + - fvm::Sp(phase1.continuityError(), U1) + + MRF.DDt(alpha1*rho1, U1) + + phase1.turbulence().divDevRhoReff(U1) + == + - Vm + *( + fvm::ddt(U1) + + fvm::div(phi1, U1) + - fvm::Sp(fvc::div(phi1), U1) + - phase2.DUDt() + ) + - MRF.DDt(Vm, U1 - U2) + + fvOptions(alpha1, rho1, U1) + ); + U1Eqn.relax(); + U1Eqn += fvm::Sp(Kd, U1); + fvOptions.constrain(U1Eqn); + U1.correctBoundaryConditions(); + fvOptions.correct(U1); + } + + { + U2Eqn = + ( + fvm::ddt(alpha2, rho2, U2) + fvm::div(alphaRhoPhi2, U2) + - fvm::Sp(phase2.continuityError(), U2) + + MRF.DDt(alpha2*rho2, U2) + + phase2.turbulence().divDevRhoReff(U2) + == + - Vm + *( + fvm::ddt(U2) + + fvm::div(phi2, U2) + - fvm::Sp(fvc::div(phi2), U2) + - phase1.DUDt() + ) + - MRF.DDt(Vm, U2 - U1) + + fvOptions(alpha2, rho2, U2) + ); + U2Eqn.relax(); + U2Eqn += fvm::Sp(Kd, U2); + fvOptions.constrain(U2Eqn); + U2.correctBoundaryConditions(); + fvOptions.correct(U2); + } +} diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/pEqn.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/pEqn.H new file mode 100644 index 0000000000000000000000000000000000000000..30ce7b221f3084ce391135271c292dd750056bdd --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pU/pEqn.H @@ -0,0 +1,398 @@ +surfaceScalarField alphaf1("alphaf1", fvc::interpolate(alpha1)); +surfaceScalarField alphaf2("alphaf2", scalar(1) - alphaf1); + +volScalarField rAU1 +( + IOobject::groupName("rAU", phase1.name()), + 1.0 + /( + U1Eqn.A() + + max(phase1.residualAlpha() - alpha1, scalar(0)) + *rho1/runTime.deltaT() + ) +); +volScalarField rAU2 +( + IOobject::groupName("rAU", phase2.name()), + 1.0 + /( + U2Eqn.A() + + max(phase2.residualAlpha() - alpha2, scalar(0)) + *rho2/runTime.deltaT() + ) +); + +surfaceScalarField alpharAUf1 +( + fvc::interpolate(max(alpha1, phase1.residualAlpha())*rAU1) +); +surfaceScalarField alpharAUf2 +( + fvc::interpolate(max(alpha2, phase2.residualAlpha())*rAU2) +); + +// Turbulent diffusion, particle-pressure, lift and wall-lubrication fluxes +tmp<surfaceScalarField> phiF1; +tmp<surfaceScalarField> phiF2; +{ + // Turbulent-dispersion diffusivity + volScalarField D(fluid.D()); + + // Phase-1 turbulent dispersion and particle-pressure flux + surfaceScalarField Df1 + ( + fvc::interpolate + ( + rAU1*(D + phase1.turbulence().pPrime()) + ) + ); + + // Phase-2 turbulent dispersion and particle-pressure flux + surfaceScalarField Df2 + ( + fvc::interpolate + ( + rAU2*(D + phase2.turbulence().pPrime()) + ) + ); + + // Cache the net diffusivity for implicit diffusion treatment in the + // phase-fraction equation + if (implicitPhasePressure) + { + fluid.pPrimeByA() = Df1 + Df2; + } + + // Lift and wall-lubrication forces + volVectorField F(fluid.F()); + + // Phase-fraction face-gradient + surfaceScalarField snGradAlpha1(fvc::snGrad(alpha1)*mesh.magSf()); + + // Phase-1 dispersion, lift and wall-lubrication flux + phiF1 = + ( + Df1*snGradAlpha1 + + (fvc::interpolate(rAU1*F) & mesh.Sf()) + ); + + // Phase-1 dispersion, lift and wall-lubrication flux + phiF2 = + ( + - Df2*snGradAlpha1 + - (fvc::interpolate(rAU2*F) & mesh.Sf()) + ); +} + + +// --- Pressure corrector loop +while (pimple.correct()) +{ + // Update continuity errors due to temperature changes + #include "correctContErrs.H" + + // Correct fixed-flux BCs to be consistent with the velocity BCs + MRF.correctBoundaryFlux(U1, phi1); + MRF.correctBoundaryFlux(U2, phi2); + + volVectorField HbyA1 + ( + IOobject::groupName("HbyA", phase1.name()), + U1 + ); + HbyA1 = + rAU1 + *( + U1Eqn.H() + + max(phase1.residualAlpha() - alpha1, scalar(0)) + *rho1*U1.oldTime()/runTime.deltaT() + ); + + volVectorField HbyA2 + ( + IOobject::groupName("HbyA", phase2.name()), + U2 + ); + HbyA2 = + rAU2 + *( + U2Eqn.H() + + max(phase2.residualAlpha() - alpha2, scalar(0)) + *rho2*U2.oldTime()/runTime.deltaT() + ); + + // Mean density for buoyancy force and p_rgh -> p + volScalarField rho("rho", fluid.rho()); + + surfaceScalarField ghSnGradRho + ( + "ghSnGradRho", + ghf*fvc::snGrad(rho)*mesh.magSf() + ); + + surfaceScalarField phig1 + ( + alpharAUf1 + *( + ghSnGradRho + - alphaf2*fvc::interpolate(rho1 - rho2)*(g & mesh.Sf()) + ) + ); + + surfaceScalarField phig2 + ( + alpharAUf2 + *( + ghSnGradRho + - alphaf1*fvc::interpolate(rho2 - rho1)*(g & mesh.Sf()) + ) + ); + + + // ddtPhiCorr filter -- only apply in pure(ish) phases + surfaceScalarField alphaf1Bar(fvc::interpolate(fvc::average(alphaf1))); + surfaceScalarField phiCorrCoeff1(pos(alphaf1Bar - 0.99)); + surfaceScalarField phiCorrCoeff2(pos(0.01 - alphaf1Bar)); + + forAll(mesh.boundary(), patchi) + { + // Set ddtPhiCorr to 0 on non-coupled boundaries + if + ( + !mesh.boundary()[patchi].coupled() + || isA<cyclicAMIFvPatch>(mesh.boundary()[patchi]) + ) + { + phiCorrCoeff1.boundaryField()[patchi] = 0; + phiCorrCoeff2.boundaryField()[patchi] = 0; + } + } + + // Phase-1 predicted flux + surfaceScalarField phiHbyA1 + ( + IOobject::groupName("phiHbyA", phase1.name()), + (fvc::interpolate(HbyA1) & mesh.Sf()) + + phiCorrCoeff1*fvc::interpolate(alpha1.oldTime()*rho1.oldTime()*rAU1) + *( + MRF.absolute(phi1.oldTime()) + - (fvc::interpolate(U1.oldTime()) & mesh.Sf()) + )/runTime.deltaT() + - phiF1() + - phig1 + ); + + // Phase-2 predicted flux + surfaceScalarField phiHbyA2 + ( + IOobject::groupName("phiHbyA", phase2.name()), + (fvc::interpolate(HbyA2) & mesh.Sf()) + + phiCorrCoeff2*fvc::interpolate(alpha2.oldTime()*rho2.oldTime()*rAU2) + *( + MRF.absolute(phi2.oldTime()) + - (fvc::interpolate(U2.oldTime()) & mesh.Sf()) + )/runTime.deltaT() + - phiF2() + - phig2 + ); + + // Face-drag coefficients + surfaceScalarField rAUKd1(fvc::interpolate(rAU1*Kd)); + surfaceScalarField rAUKd2(fvc::interpolate(rAU2*Kd)); + + // Construct the mean predicted flux + // including explicit drag contributions based on absolute fluxes + surfaceScalarField phiHbyA + ( + "phiHbyA", + alphaf1*(phiHbyA1 + rAUKd1*MRF.absolute(phi2)) + + alphaf2*(phiHbyA2 + rAUKd2*MRF.absolute(phi1)) + ); + MRF.makeRelative(phiHbyA); + + // Construct pressure "diffusivity" + surfaceScalarField rAUf + ( + "rAUf", + mag(alphaf1*alpharAUf1 + alphaf2*alpharAUf2) + ); + + // Update the fixedFluxPressure BCs to ensure flux consistency + setSnGrad<fixedFluxPressureFvPatchScalarField> + ( + p_rgh.boundaryField(), + ( + phiHbyA.boundaryField() + - ( + alphaf1.boundaryField()*phi1.boundaryField() + + alphaf2.boundaryField()*phi2.boundaryField() + ) + )/(mesh.magSf().boundaryField()*rAUf.boundaryField()) + ); + + tmp<fvScalarMatrix> pEqnComp1; + tmp<fvScalarMatrix> pEqnComp2; + + // Construct the compressibility parts of the pressure equation + if (pimple.transonic()) + { + surfaceScalarField phid1 + ( + IOobject::groupName("phid", phase1.name()), + fvc::interpolate(psi1)*phi1 + ); + surfaceScalarField phid2 + ( + IOobject::groupName("phid", phase2.name()), + fvc::interpolate(psi2)*phi2 + ); + + pEqnComp1 = + ( + phase1.continuityError() - fluid.dmdt() + - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1) + )/rho1 + + (alpha1/rho1)*correction + ( + psi1*fvm::ddt(p_rgh) + + fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh) + ); + deleteDemandDrivenData(pEqnComp1().faceFluxCorrectionPtr()); + pEqnComp1().relax(); + + pEqnComp2 = + ( + phase2.continuityError() + fluid.dmdt() + - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2) + )/rho2 + + (alpha2/rho2)*correction + ( + psi2*fvm::ddt(p_rgh) + + fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh) + ); + deleteDemandDrivenData(pEqnComp2().faceFluxCorrectionPtr()); + pEqnComp2().relax(); + } + else + { + pEqnComp1 = + ( + phase1.continuityError() + - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1) + )/rho1 + + (alpha1*psi1/rho1)*correction(fvm::ddt(p_rgh)); + + pEqnComp2 = + ( + phase2.continuityError() + - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2) + )/rho2 + + (alpha2*psi2/rho2)*correction(fvm::ddt(p_rgh)); + } + + // Cache p prior to solve for density update + volScalarField p_rgh_0(p_rgh); + + // Iterate over the pressure equation to correct for non-orthogonality + while (pimple.correctNonOrthogonal()) + { + // Construct the transport part of the pressure equation + fvScalarMatrix pEqnIncomp + ( + fvc::div(phiHbyA) + - fvm::laplacian(rAUf, p_rgh) + ); + + solve + ( + pEqnComp1() + pEqnComp2() + pEqnIncomp, + mesh.solver(p_rgh.select(pimple.finalInnerIter())) + ); + + // Correct fluxes and velocities on last non-orthogonal iteration + if (pimple.finalNonOrthogonalIter()) + { + phi = phiHbyA + pEqnIncomp.flux(); + + surfaceScalarField mSfGradp("mSfGradp", pEqnIncomp.flux()/rAUf); + + // Partial-elimination phase-flux corrector + { + surfaceScalarField phi1s + ( + phiHbyA1 + alpharAUf1*mSfGradp + ); + + surfaceScalarField phi2s + ( + phiHbyA2 + alpharAUf2*mSfGradp + ); + + surfaceScalarField phir + ( + ((phi1s + rAUKd1*phi2s) - (phi2s + rAUKd2*phi1s)) + /(1 - rAUKd1*rAUKd2) + ); + + phi1 = phi + alphaf2*phir; + phi2 = phi - alphaf1*phir; + } + + // Compressibility correction for phase-fraction equations + fluid.dgdt() = + ( + alpha1*(pEqnComp2 & p_rgh) + - alpha2*(pEqnComp1 & p_rgh) + ); + + // Optionally relax pressure for velocity correction + p_rgh.relax(); + + mSfGradp = pEqnIncomp.flux()/rAUf; + + // Partial-elimination phase-velocity corrector + { + volVectorField Us1 + ( + HbyA1 + + fvc::reconstruct(alpharAUf1*mSfGradp - phiF1() - phig1) + ); + + volVectorField Us2 + ( + HbyA2 + + fvc::reconstruct(alpharAUf2*mSfGradp - phiF2() - phig2) + ); + + volScalarField D1(rAU1*Kd); + volScalarField D2(rAU2*Kd); + + volVectorField U(alpha1*(Us1 + D1*U2) + alpha2*(Us2 + D2*U1)); + volVectorField Ur(((1 - D2)*Us1 - (1 - D1)*Us2)/(1 - D1*D2)); + + U1 = U + alpha2*Ur; + U1.correctBoundaryConditions(); + fvOptions.correct(U1); + + U2 = U - alpha1*Ur; + U2.correctBoundaryConditions(); + fvOptions.correct(U2); + } + } + } + + // Update and limit the static pressure + p = max(p_rgh + rho*gh, pMin); + + // Limit p_rgh + p_rgh = p - rho*gh; + + // Update densities from change in p_rgh + rho1 += psi1*(p_rgh - p_rgh_0); + rho2 += psi2*(p_rgh - p_rgh_0); + + // Correct p_rgh for consistency with p and the updated densities + rho = fluid.rho(); + p_rgh = p - rho*gh; + p_rgh.correctBoundaryConditions(); +} diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/DDtU.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/DDtU.H new file mode 100644 index 0000000000000000000000000000000000000000..63b61cd61a73ad944fafeeced01737665c90b1ed --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/DDtU.H @@ -0,0 +1,9 @@ + ddtPhi1 = + ( + (phi1 - phi1.oldTime())/runTime.deltaT() + ); + + ddtPhi2 = + ( + (phi2 - phi2.oldTime())/runTime.deltaT() + ); diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/UEqns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/UEqns.H new file mode 100644 index 0000000000000000000000000000000000000000..0303eea106f21bb45481c552c95ed45aea392291 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/UEqns.H @@ -0,0 +1,51 @@ +Info<< "Constructing face momentum equations" << endl; + +MRF.correctBoundaryVelocity(U1); +MRF.correctBoundaryVelocity(U2); + +fvVectorMatrix U1Eqn(U1, rho1.dimensions()*U1.dimensions()*dimVol/dimTime); +fvVectorMatrix U2Eqn(U2, rho2.dimensions()*U2.dimensions()*dimVol/dimTime); + +{ + volScalarField Vm(fluid.Vm()); + + fvVectorMatrix UgradU1 + ( + fvm::div(phi1, U1) - fvm::Sp(fvc::div(phi1), U1) + + MRF.DDt(U1) + ); + + fvVectorMatrix UgradU2 + ( + fvm::div(phi2, U2) - fvm::Sp(fvc::div(phi2), U2) + + MRF.DDt(U2) + ); + + { + U1Eqn = + ( + fvm::div(alphaRhoPhi1, U1) - fvm::Sp(fvc::div(alphaRhoPhi1), U1) + + MRF.DDt(alpha1*rho1, U1) + + phase1.turbulence().divDevRhoReff(U1) + + Vm*(UgradU1 - (UgradU2 & U2)) + ); + U1Eqn.relax(); + fvOptions.constrain(U1Eqn); + U1.correctBoundaryConditions(); + fvOptions.correct(U1); + } + + { + U2Eqn = + ( + fvm::div(alphaRhoPhi2, U2) - fvm::Sp(fvc::div(alphaRhoPhi2), U2) + + MRF.DDt(alpha2*rho2, U2) + + phase2.turbulence().divDevRhoReff(U2) + + Vm*(UgradU2 - (UgradU1 & U1)) + ); + U2Eqn.relax(); + fvOptions.constrain(U2Eqn); + U2.correctBoundaryConditions(); + fvOptions.correct(U2); + } +} diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/createDDtU.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/createDDtU.H new file mode 100644 index 0000000000000000000000000000000000000000..7445d4af23f5d5c63485052c0a7217e668c65717 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/createDDtU.H @@ -0,0 +1,9 @@ + surfaceScalarField ddtPhi1 + ( + (phi1 - phi1.oldTime())/runTime.deltaT() + ); + + surfaceScalarField ddtPhi2 + ( + (phi2 - phi2.oldTime())/runTime.deltaT() + ); diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/pEqn.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/pEqn.H new file mode 100644 index 0000000000000000000000000000000000000000..c48f0b07c7ebf6c3d300492eca21709660b38088 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/pUf/pEqn.H @@ -0,0 +1,348 @@ +surfaceScalarField alphaf1("alphaf1", fvc::interpolate(alpha1)); +surfaceScalarField alphaf2("alphaf2", scalar(1) - alphaf1); + +surfaceScalarField alphaRhof10 +( + "alphaRhof10", + fvc::interpolate + ( + max(alpha1.oldTime(), phase1.residualAlpha()) + *rho1.oldTime() + ) +); + +surfaceScalarField alphaRhof20 +( + "alphaRhof20", + fvc::interpolate + ( + max(alpha2.oldTime(), phase2.residualAlpha()) + *rho2.oldTime() + ) +); + +// Drag coefficient +surfaceScalarField Kdf("Kdf", fluid.Kdf()); + +// Virtual-mass coefficient +surfaceScalarField Vmf("Vmf", fluid.Vmf()); + +surfaceScalarField rAUf1 +( + IOobject::groupName("rAUf", phase1.name()), + 1.0 + /( + (alphaRhof10 + Vmf)/runTime.deltaT() + + fvc::interpolate(U1Eqn.A()) + + Kdf + ) +); + +surfaceScalarField rAUf2 +( + IOobject::groupName("rAUf", phase2.name()), + 1.0 + /( + (alphaRhof20 + Vmf)/runTime.deltaT() + + fvc::interpolate(U2Eqn.A()) + + Kdf + ) +); + + +// Turbulent dispersion, particle-pressure, lift and wall-lubrication forces +tmp<surfaceScalarField> Ff1; +tmp<surfaceScalarField> Ff2; +{ + // Turbulent-dispersion diffusivity + volScalarField D(fluid.D()); + + // Phase-1 turbulent dispersion and particle-pressure diffusivity + surfaceScalarField Df1 + ( + fvc::interpolate(D + phase1.turbulence().pPrime()) + ); + + // Phase-2 turbulent dispersion and particle-pressure diffusivity + surfaceScalarField Df2 + ( + fvc::interpolate(D + phase2.turbulence().pPrime()) + ); + + // Cache the net diffusivity for implicit diffusion treatment in the + // phase-fraction equation + if (implicitPhasePressure) + { + fluid.pPrimeByA() = rAUf1*Df1 + rAUf2*Df2; + } + + // Lift and wall-lubrication forces + surfaceScalarField Ff(fluid.Ff()); + + // Phase-fraction face-gradient + surfaceScalarField snGradAlpha1(fvc::snGrad(alpha1)*mesh.magSf()); + + // Phase-1 dispersion, lift and wall-lubrication force + Ff1 = Df1*snGradAlpha1 + Ff; + + // Phase-2 dispersion, lift and wall-lubrication force + Ff2 = -Df2*snGradAlpha1 - Ff; +} + + +while (pimple.correct()) +{ + // Update continuity errors due to temperature changes + #include "correctContErrs.H" + + surfaceScalarField rhof1(fvc::interpolate(rho1)); + surfaceScalarField rhof2(fvc::interpolate(rho2)); + + // Correct fixed-flux BCs to be consistent with the velocity BCs + MRF.correctBoundaryFlux(U1, phi1); + MRF.correctBoundaryFlux(U2, phi2); + + surfaceScalarField alpharAUf1 + ( + IOobject::groupName("alpharAUf", phase1.name()), + max(alphaf1, phase1.residualAlpha())*rAUf1 + ); + + surfaceScalarField alpharAUf2 + ( + IOobject::groupName("alpharAUf", phase2.name()), + max(alphaf2, phase2.residualAlpha())*rAUf2 + ); + + volScalarField rho("rho", fluid.rho()); + surfaceScalarField ghSnGradRho + ( + "ghSnGradRho", + ghf*fvc::snGrad(rho)*mesh.magSf() + ); + + // Phase-1 buoyancy flux + surfaceScalarField phig1 + ( + IOobject::groupName("phig", phase1.name()), + alpharAUf1 + *( + ghSnGradRho + - alphaf2*(rhof1 - rhof2)*(g & mesh.Sf()) + ) + ); + + // Phase-2 buoyancy flux + surfaceScalarField phig2 + ( + IOobject::groupName("phig", phase2.name()), + alpharAUf2 + *( + ghSnGradRho + - alphaf1*(rhof2 - rhof1)*(g & mesh.Sf()) + ) + ); + + + // Phase-1 predicted flux + surfaceScalarField phiHbyA1 + ( + IOobject::groupName("phiHbyA", phase1.name()), + phi1 + ); + + phiHbyA1 = + rAUf1 + *( + (alphaRhof10 + Vmf) + *MRF.absolute(phi1.oldTime())/runTime.deltaT() + + (fvc::interpolate(U1Eqn.H()) & mesh.Sf()) + + Vmf*ddtPhi2 + + Kdf*MRF.absolute(phi2) + - Ff1() + ); + + // Phase-2 predicted flux + surfaceScalarField phiHbyA2 + ( + IOobject::groupName("phiHbyA", phase2.name()), + phi2 + ); + + phiHbyA2 = + rAUf2 + *( + (alphaRhof20 + Vmf) + *MRF.absolute(phi2.oldTime())/runTime.deltaT() + + (fvc::interpolate(U2Eqn.H()) & mesh.Sf()) + + Vmf*ddtPhi1 + + Kdf*MRF.absolute(phi1) + - Ff2() + ); + + + surfaceScalarField phiHbyA + ( + "phiHbyA", + alphaf1*(phiHbyA1 - phig1) + alphaf2*(phiHbyA2 - phig2) + ); + MRF.makeRelative(phiHbyA); + + phiHbyA1 -= phig1; + phiHbyA2 -= phig2; + + surfaceScalarField rAUf + ( + "rAUf", + mag(alphaf1*alpharAUf1 + alphaf2*alpharAUf2) + ); + + // Update the fixedFluxPressure BCs to ensure flux consistency + setSnGrad<fixedFluxPressureFvPatchScalarField> + ( + p_rgh.boundaryField(), + ( + phiHbyA.boundaryField() + - ( + alphaf1.boundaryField()*phi1.boundaryField() + + alphaf2.boundaryField()*phi2.boundaryField() + ) + )/(mesh.magSf().boundaryField()*rAUf.boundaryField()) + ); + + tmp<fvScalarMatrix> pEqnComp1; + tmp<fvScalarMatrix> pEqnComp2; + + if (pimple.transonic()) + { + surfaceScalarField phid1 + ( + IOobject::groupName("phid", phase1.name()), + fvc::interpolate(psi1)*phi1 + ); + surfaceScalarField phid2 + ( + IOobject::groupName("phid", phase2.name()), + fvc::interpolate(psi2)*phi2 + ); + + pEqnComp1 = + ( + phase1.continuityError() - fluid.dmdt() + - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1) + )/rho1 + + (alpha1/rho1)*correction + ( + psi1*fvm::ddt(p_rgh) + + fvm::div(phid1, p_rgh) - fvm::Sp(fvc::div(phid1), p_rgh) + ); + deleteDemandDrivenData(pEqnComp1().faceFluxCorrectionPtr()); + pEqnComp1().relax(); + + pEqnComp2 = + ( + phase2.continuityError() + fluid.dmdt() + - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2) + )/rho2 + + (alpha2/rho2)*correction + ( + psi2*fvm::ddt(p_rgh) + + fvm::div(phid2, p_rgh) - fvm::Sp(fvc::div(phid2), p_rgh) + ); + deleteDemandDrivenData(pEqnComp2().faceFluxCorrectionPtr()); + pEqnComp2().relax(); + } + else + { + pEqnComp1 = + ( + phase1.continuityError() - fluid.dmdt() + - fvc::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), rho1) + )/rho1 + + (alpha1*psi1/rho1)*correction(fvm::ddt(p_rgh)); + + pEqnComp2 = + ( + phase2.continuityError() + fluid.dmdt() + - fvc::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), rho2) + )/rho2 + + (alpha2*psi2/rho2)*correction(fvm::ddt(p_rgh)); + } + + // Cache p prior to solve for density update + volScalarField p_rgh_0("p_rgh_0", p_rgh); + + while (pimple.correctNonOrthogonal()) + { + fvScalarMatrix pEqnIncomp + ( + fvc::div(phiHbyA) + - fvm::laplacian(rAUf, p_rgh) + ); + + solve + ( + pEqnComp1() + pEqnComp2() + pEqnIncomp, + mesh.solver(p_rgh.select(pimple.finalInnerIter())) + ); + + if (pimple.finalNonOrthogonalIter()) + { + surfaceScalarField mSfGradp("mSfGradp", pEqnIncomp.flux()/rAUf); + + phi = phiHbyA + pEqnIncomp.flux(); + + surfaceScalarField phi1s + ( + phiHbyA1 + + alpharAUf1*mSfGradp + - rAUf1*Kdf*MRF.absolute(phi2) + ); + + surfaceScalarField phi2s + ( + phiHbyA2 + + alpharAUf2*mSfGradp + - rAUf2*Kdf*MRF.absolute(phi1) + ); + + surfaceScalarField phir + ( + ((phi2s + rAUf2*Kdf*phi1s) - (phi1s + rAUf1*Kdf*phi2s)) + /(1.0 - rAUf1*rAUf2*sqr(Kdf)) + ); + + phi1 = phi - alphaf2*phir; + phi2 = phi + alphaf1*phir; + + U1 = fvc::reconstruct(MRF.absolute(phi1)); + U1.correctBoundaryConditions(); + fvOptions.correct(U1); + + U2 = fvc::reconstruct(MRF.absolute(phi2)); + U2.correctBoundaryConditions(); + fvOptions.correct(U2); + + fluid.dgdt() = + ( + alpha1*(pEqnComp2 & p_rgh) + - alpha2*(pEqnComp1 & p_rgh) + ); + } + } + + // Update and limit the static pressure + p = max(p_rgh + rho*gh, pMin); + + // Limit p_rgh + p_rgh = p - rho*gh; + + // Update densities from change in p_rgh + rho1 += psi1*(p_rgh - p_rgh_0); + rho2 += psi2*(p_rgh - p_rgh_0); + + // Correct p_rgh for consistency with p and the updated densities + rho = fluid.rho(); + p_rgh = p - rho*gh; + p_rgh.correctBoundaryConditions(); +} diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..eccde529bd8f3522f85224517c6ee8630c363d40 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/files @@ -0,0 +1,38 @@ +phaseCompressibleTurbulenceModels.C +phasePressureModel/phasePressureModel.C + +kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C + +kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C +kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C +kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C +kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C +kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C +kineticTheoryModels/viscosityModel/none/noneViscosity.C + +kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C +kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C +kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C +kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C +kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C + +kineticTheoryModels/radialModel/radialModel/radialModel.C +kineticTheoryModels/radialModel/radialModel/newRadialModel.C +kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C +kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C +kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C + +kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C +kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C +kineticTheoryModels/granularPressureModel/Lun/LunPressure.C +kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C + +kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C +kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C +kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C +kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C + +kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C +kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C + +LIB = $(FOAM_LIBBIN)/libphaseReactingTurbulenceModels diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..96fecff16d3bca387ae2ef4ec058413d5b64cadb --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/Make/options @@ -0,0 +1,11 @@ +EXE_INC = \ + -I../phaseSystems/lnInclude \ + -I../interfacialModels/lnInclude\ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/transportModels/incompressible/transportModel \ + -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.C new file mode 100644 index 0000000000000000000000000000000000000000..7a454304631a883aa8008e943e07805068e0aea6 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.C @@ -0,0 +1,172 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "kOmegaSSTSato.H" +#include "addToRunTimeSelectionTable.H" +#include "twoPhaseSystem.H" +#include "dragModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace RASModels +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasicTurbulenceModel> +kOmegaSSTSato<BasicTurbulenceModel>::kOmegaSSTSato +( + const alphaField& alpha, + const rhoField& rho, + const volVectorField& U, + const surfaceScalarField& alphaRhoPhi, + const surfaceScalarField& phi, + const transportModel& transport, + const word& propertiesName, + const word& type +) +: + kOmegaSST<BasicTurbulenceModel> + ( + alpha, + rho, + U, + alphaRhoPhi, + phi, + transport, + propertiesName, + type + ), + + gasTurbulencePtr_(NULL), + + Cmub_ + ( + dimensioned<scalar>::lookupOrAddToDict + ( + "Cmub", + this->coeffDict_, + 0.6 + ) + ) +{ + if (type == typeName) + { + correctNut(); + this->printCoeffs(type); + } +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasicTurbulenceModel> +bool kOmegaSSTSato<BasicTurbulenceModel>::read() +{ + if (kOmegaSST<BasicTurbulenceModel>::read()) + { + Cmub_.readIfPresent(this->coeffDict()); + + return true; + } + else + { + return false; + } +} + +template<class BasicTurbulenceModel> +const PhaseCompressibleTurbulenceModel +< + typename BasicTurbulenceModel::transportModel +>& +kOmegaSSTSato<BasicTurbulenceModel>::gasTurbulence() const +{ + if (!gasTurbulencePtr_) + { + const volVectorField& U = this->U_; + + const transportModel& liquid = this->transport(); + const twoPhaseSystem& fluid = + refCast<const twoPhaseSystem>(liquid.fluid()); + const transportModel& gas = fluid.otherPhase(liquid); + + gasTurbulencePtr_ = + &U.db() + .lookupObject<PhaseCompressibleTurbulenceModel<transportModel> > + ( + IOobject::groupName + ( + turbulenceModel::propertiesName, + gas.name() + ) + ); + } + + return *gasTurbulencePtr_; +} + + +template<class BasicTurbulenceModel> +void kOmegaSSTSato<BasicTurbulenceModel>::correctNut() +{ + const PhaseCompressibleTurbulenceModel<transportModel>& gasTurbulence = + this->gasTurbulence(); + + volScalarField yPlus + ( + pow(this->betaStar_, 0.25)*this->y_*sqrt(this->k_)/this->nu() + ); + + this->nut_ = + this->a1_*this->k_ + /max + ( + this->a1_*this->omega_, + this->F23()*sqrt(2.0)*mag(symm(fvc::grad(this->U_))) + ) + + sqr(1 - exp(-yPlus/16.0)) + *Cmub_*gasTurbulence.transport().d()*gasTurbulence.alpha() + *(mag(this->U_ - gasTurbulence.U())); + + this->nut_.correctBoundaryConditions(); +} + + +template<class BasicTurbulenceModel> +void kOmegaSSTSato<BasicTurbulenceModel>::correct() +{ + kOmegaSST<BasicTurbulenceModel>::correct(); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace RASModels +} // End namespace Foam + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.H new file mode 100644 index 0000000000000000000000000000000000000000..6d0f720b7dfadc52f001ac56475d42a1fffabb7d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kOmegaSSTSato/kOmegaSSTSato.H @@ -0,0 +1,217 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::RASModels::kOmegaSSTSato + +Group + grpRASTurbulence + +Description + Implementation of the k-omega-SST turbulence model for dispersed bubbly + flows with Sato (1981) bubble induced turbulent viscosity model. + + Bubble induced turbulent viscosity model described in: + \verbatim + Sato, Y., Sadatomi, M. + "Momentum and heat transfer in two-phase bubble flow - I, Theory" + International Journal of Multiphase FLow 7, pp. 167-177, 1981. + \endverbatim + + Turbulence model described in: + \verbatim + Menter, F., Esch, T. + "Elements of Industrial Heat Transfer Prediction" + 16th Brazilian Congress of Mechanical Engineering (COBEM), + Nov. 2001 + \endverbatim + + with the addition of the optional F3 term for rough walls from + \verbatim + Hellsten, A. + "Some Improvements in Menter’s k-omega-SST turbulence model" + 29th AIAA Fluid Dynamics Conference, + AIAA-98-2554, + June 1998. + \endverbatim + + Note that this implementation is written in terms of alpha diffusion + coefficients rather than the more traditional sigma (alpha = 1/sigma) so + that the blending can be applied to all coefficuients in a consistent + manner. The paper suggests that sigma is blended but this would not be + consistent with the blending of the k-epsilon and k-omega models. + + Also note that the error in the last term of equation (2) relating to + sigma has been corrected. + + Wall-functions are applied in this implementation by using equations (14) + to specify the near-wall omega as appropriate. + + The blending functions (15) and (16) are not currently used because of the + uncertainty in their origin, range of applicability and that is y+ becomes + sufficiently small blending u_tau in this manner clearly becomes nonsense. + + The default model coefficients correspond to the following: + \verbatim + kOmegaSSTCoeffs + { + alphaK1 0.85034; + alphaK2 1.0; + alphaOmega1 0.5; + alphaOmega2 0.85616; + Prt 1.0; // only for compressible + beta1 0.075; + beta2 0.0828; + betaStar 0.09; + gamma1 0.5532; + gamma2 0.4403; + a1 0.31; + b1 1.0; + c1 10.0; + F3 no; + Cmub 0.6; + } + \endverbatim + +SourceFiles + kOmegaSST.C + +SourceFiles + kOmegaSSTSato.C + +\*---------------------------------------------------------------------------*/ + +#ifndef kOmegaSSTSato_H +#define kOmegaSSTSato_H + +#include "kOmegaSST.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace RASModels +{ + +/*---------------------------------------------------------------------------*\ + Class kOmegaSSTSato Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasicTurbulenceModel> +class kOmegaSSTSato +: + public kOmegaSST<BasicTurbulenceModel> +{ + // Private data + + mutable const PhaseCompressibleTurbulenceModel + < + typename BasicTurbulenceModel::transportModel + > *gasTurbulencePtr_; + + + // Private Member Functions + + //- Return the turbulence model for the gas phase + const PhaseCompressibleTurbulenceModel + < + typename BasicTurbulenceModel::transportModel + >& + gasTurbulence() const; + + + // Disallow default bitwise copy construct and assignment + kOmegaSSTSato(const kOmegaSSTSato&); + kOmegaSSTSato& operator=(const kOmegaSSTSato&); + + +protected: + + // Protected data + + // Model coefficients + dimensionedScalar Cmub_; + + + // Protected Member Functions + + virtual void correctNut(); + +public: + + typedef typename BasicTurbulenceModel::alphaField alphaField; + typedef typename BasicTurbulenceModel::rhoField rhoField; + typedef typename BasicTurbulenceModel::transportModel transportModel; + + + //- Runtime type information + TypeName("kOmegaSSTSato"); + + + // Constructors + + //- Construct from components + kOmegaSSTSato + ( + const alphaField& alpha, + const rhoField& rho, + const volVectorField& U, + const surfaceScalarField& alphaRhoPhi, + const surfaceScalarField& phi, + const transportModel& transport, + const word& propertiesName = turbulenceModel::propertiesName, + const word& type = typeName + ); + + + //- Destructor + virtual ~kOmegaSSTSato() + {} + + + // Member Functions + + //- Read model coefficients if they have changed + virtual bool read(); + + //- Solve the turbulence equations and correct the turbulence viscosity + virtual void correct(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace RASModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "kOmegaSSTSato.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C new file mode 100644 index 0000000000000000000000000000000000000000..6ef7f1ec83eb6f2089d72ee0a2f53f69f0383d44 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C @@ -0,0 +1,93 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "GidaspowConductivity.H" +#include "mathematicalConstants.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace conductivityModels +{ + defineTypeNameAndDebug(Gidaspow, 0); + + addToRunTimeSelectionTable + ( + conductivityModel, + Gidaspow, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModels::Gidaspow::Gidaspow +( + const dictionary& dict +) +: + conductivityModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModels::Gidaspow::~Gidaspow() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::conductivityModels::Gidaspow::kappa +( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e +) const +{ + const scalar sqrtPi = sqrt(constant::mathematical::pi); + + return rho1*da*sqrt(Theta)* + ( + 2.0*sqr(alpha1)*g0*(1.0 + e)/sqrtPi + + (9.0/8.0)*sqrtPi*g0*0.5*(1.0 + e)*sqr(alpha1) + + (15.0/16.0)*sqrtPi*alpha1 + + (25.0/64.0)*sqrtPi/((1.0 + e)*g0) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H new file mode 100644 index 0000000000000000000000000000000000000000..f8987ce13d94b73458273a9ac7b97221bfe7ad4a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::conductivityModels::Gidaspow + +Description + +SourceFiles + Gidaspow.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Gidaspow_H +#define Gidaspow_H + +#include "conductivityModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace conductivityModels +{ + +/*---------------------------------------------------------------------------*\ + Class Gidaspow Declaration +\*---------------------------------------------------------------------------*/ + +class Gidaspow +: + public conductivityModel +{ + +public: + + //- Runtime type information + TypeName("Gidaspow"); + + + // Constructors + + //- Construct from components + Gidaspow(const dictionary& dict); + + + //- Destructor + virtual ~Gidaspow(); + + + // Member Functions + + tmp<volScalarField> kappa + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace conductivityModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C new file mode 100644 index 0000000000000000000000000000000000000000..55541ac8fabfa228a30825ca89c94f6b08476d8e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C @@ -0,0 +1,114 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "HrenyaSinclairConductivity.H" +#include "mathematicalConstants.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace conductivityModels +{ + defineTypeNameAndDebug(HrenyaSinclair, 0); + + addToRunTimeSelectionTable + ( + conductivityModel, + HrenyaSinclair, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::HrenyaSinclair +( + const dictionary& dict +) +: + conductivityModel(dict), + coeffDict_(dict.subDict(typeName + "Coeffs")), + L_("L", dimensionSet(0, 1, 0, 0, 0), coeffDict_.lookup("L")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair:: +~HrenyaSinclair() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::kappa +( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e +) const +{ + const scalar sqrtPi = sqrt(constant::mathematical::pi); + + volScalarField lamda + ( + scalar(1) + da/(6.0*sqrt(2.0)*(alpha1 + scalar(1.0e-5)))/L_ + ); + + return rho1*da*sqrt(Theta)* + ( + 2.0*sqr(alpha1)*g0*(1.0 + e)/sqrtPi + + (9.0/8.0)*sqrtPi*g0*0.25*sqr(1.0 + e)*(2.0*e - 1.0)*sqr(alpha1) + /(49.0/16.0 - 33.0*e/16.0) + + (15.0/16.0)*sqrtPi*alpha1*(0.5*sqr(e) + 0.25*e - 0.75 + lamda) + /((49.0/16.0 - 33.0*e/16.0)*lamda) + + (25.0/64.0)*sqrtPi + /((1.0 + e)*(49.0/16.0 - 33.0*e/16.0)*lamda*g0) + ); +} + + +bool Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::read() +{ + coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + + L_.readIfPresent(coeffDict_); + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H new file mode 100644 index 0000000000000000000000000000000000000000..14ff59acee7220e349e9aaa1325c0b6698377d75 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H @@ -0,0 +1,104 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair + +Description + +SourceFiles + HrenyaSinclair.C + +\*---------------------------------------------------------------------------*/ + +#ifndef HrenyaSinclair_H +#define HrenyaSinclair_H + +#include "conductivityModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace conductivityModels +{ + +/*---------------------------------------------------------------------------*\ + Class HrenyaSinclair Declaration +\*---------------------------------------------------------------------------*/ + +class HrenyaSinclair +: + public conductivityModel +{ + dictionary coeffDict_; + + //- Characteristic length of geometry + dimensionedScalar L_; + + +public: + + //- Runtime type information + TypeName("HrenyaSinclair"); + + + // Constructors + + //- Construct from components + HrenyaSinclair(const dictionary& dict); + + + //- Destructor + virtual ~HrenyaSinclair(); + + + // Member Functions + + tmp<volScalarField> kappa + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const; + + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace conductivityModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C new file mode 100644 index 0000000000000000000000000000000000000000..2bd6c25f79bd3944539b4c2ceeb702cca2a6c350 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C @@ -0,0 +1,93 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "SyamlalConductivity.H" +#include "mathematicalConstants.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace conductivityModels +{ + defineTypeNameAndDebug(Syamlal, 0); + + addToRunTimeSelectionTable + ( + conductivityModel, + Syamlal, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModels::Syamlal::Syamlal +( + const dictionary& dict +) +: + conductivityModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModels::Syamlal::~Syamlal() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::conductivityModels::Syamlal::kappa +( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e +) const +{ + const scalar sqrtPi = sqrt(constant::mathematical::pi); + + return rho1*da*sqrt(Theta)* + ( + 2.0*sqr(alpha1)*g0*(1.0 + e)/sqrtPi + + (9.0/8.0)*sqrtPi*g0*0.25*sqr(1.0 + e)*(2.0*e - 1.0)*sqr(alpha1) + /(49.0/16.0 - 33.0*e/16.0) + + (15.0/32.0)*sqrtPi*alpha1/(49.0/16.0 - 33.0*e/16.0) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H new file mode 100644 index 0000000000000000000000000000000000000000..dbc6b8f60a6d1fa23e70cd1f022ca02876cf3836 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::conductivityModels::Syamlal + +Description + +SourceFiles + Syamlal.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Syamlal_H +#define Syamlal_H + +#include "conductivityModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace conductivityModels +{ + +/*---------------------------------------------------------------------------*\ + Class Syamlal Declaration +\*---------------------------------------------------------------------------*/ + +class Syamlal +: + public conductivityModel +{ + +public: + + //- Runtime type information + TypeName("Syamlal"); + + + // Constructors + + //- Construct from components + Syamlal(const dictionary& dict); + + + //- Destructor + virtual ~Syamlal(); + + + // Member Functions + + tmp<volScalarField> kappa + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace conductivityModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C new file mode 100644 index 0000000000000000000000000000000000000000..4cd6368943dbbfca3fee155784d5268fc47f9de2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "conductivityModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + defineTypeNameAndDebug(conductivityModel, 0); + + defineRunTimeSelectionTable(conductivityModel, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModel::conductivityModel +( + const dictionary& dict +) +: + dict_(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::conductivityModel::~conductivityModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H new file mode 100644 index 0000000000000000000000000000000000000000..6e44f6457a0ac9280d06333b7ecc1dc67ed1a16f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H @@ -0,0 +1,133 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::conductivityModel + +SourceFiles + conductivityModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef conductivityModel_H +#define conductivityModel_H + +#include "dictionary.H" +#include "volFields.H" +#include "dimensionedTypes.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + +/*---------------------------------------------------------------------------*\ + Class conductivityModel Declaration +\*---------------------------------------------------------------------------*/ + +class conductivityModel +{ + // Private member functions + + //- Disallow default bitwise copy construct + conductivityModel(const conductivityModel&); + + //- Disallow default bitwise assignment + void operator=(const conductivityModel&); + + +protected: + + // Protected data + + const dictionary& dict_; + + +public: + + //- Runtime type information + TypeName("conductivityModel"); + + // Declare runtime constructor selection table + declareRunTimeSelectionTable + ( + autoPtr, + conductivityModel, + dictionary, + ( + const dictionary& dict + ), + (dict) + ); + + + // Constructors + + //- Construct from components + conductivityModel(const dictionary& dict); + + + // Selectors + + static autoPtr<conductivityModel> New + ( + const dictionary& dict + ); + + + //- Destructor + virtual ~conductivityModel(); + + + // Member Functions + + virtual tmp<volScalarField> kappa + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const = 0; + + virtual bool read() + { + return true; + } +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C new file mode 100644 index 0000000000000000000000000000000000000000..a878a0977319a96c1bc0ca2311da364045fec4be --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "conductivityModel.H" + +// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::kineticTheoryModels::conductivityModel> +Foam::kineticTheoryModels::conductivityModel::New +( + const dictionary& dict +) +{ + word conductivityModelType(dict.lookup("conductivityModel")); + + Info<< "Selecting conductivityModel " + << conductivityModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(conductivityModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalError + << "conductivityModel::New(const dictionary&) : " << endl + << " unknown conductivityModelType type " + << conductivityModelType + << ", constructor not in hash table" << endl << endl + << " Valid conductivityModelType types are :" << endl; + Info<< dictionaryConstructorTablePtr_->sortedToc() << abort(FatalError); + } + + return autoPtr<conductivityModel>(cstrIter()(dict)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C new file mode 100644 index 0000000000000000000000000000000000000000..ea28dd01b512d30195d0e43bb8178ed5185dc5fd --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C @@ -0,0 +1,254 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "JohnsonJacksonParticleSlipFvPatchVectorField.H" +#include "addToRunTimeSelectionTable.H" +#include "twoPhaseSystem.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + makePatchTypeField + ( + fvPatchVectorField, + JohnsonJacksonParticleSlipFvPatchVectorField + ); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::JohnsonJacksonParticleSlipFvPatchVectorField:: +JohnsonJacksonParticleSlipFvPatchVectorField +( + const fvPatch& p, + const DimensionedField<vector, volMesh>& iF +) +: + partialSlipFvPatchVectorField(p, iF), + specularityCoefficient_(p.size()) +{} + + +Foam::JohnsonJacksonParticleSlipFvPatchVectorField:: +JohnsonJacksonParticleSlipFvPatchVectorField +( + const JohnsonJacksonParticleSlipFvPatchVectorField& ptf, + const fvPatch& p, + const DimensionedField<vector, volMesh>& iF, + const fvPatchFieldMapper& mapper +) +: + partialSlipFvPatchVectorField(ptf, p, iF, mapper), + specularityCoefficient_(ptf.specularityCoefficient_) +{} + + +Foam::JohnsonJacksonParticleSlipFvPatchVectorField:: +JohnsonJacksonParticleSlipFvPatchVectorField +( + const fvPatch& p, + const DimensionedField<vector, volMesh>& iF, + const dictionary& dict +) +: + partialSlipFvPatchVectorField(p, iF), + specularityCoefficient_ + ( + "specularityCoefficient", + dimless, + dict.lookup("specularityCoefficient") + ) +{ + if + ( + (specularityCoefficient_.value() < 0) + || (specularityCoefficient_.value() > 1) + ) + { + FatalErrorIn + ( + "(" + "Foam::JohnsonJacksonParticleSlipFvPatchVectorField::" + "JohnsonJacksonParticleSlipFvPatchVectorField" + "const fvPatch& p," + "const DimensionedField<scalar, volMesh>& iF," + "const dictionary& dict" + ")" + ) << "The specularity coefficient has to be between 0 and 1" + << abort(FatalError); + } + + fvPatchVectorField::operator= + ( + vectorField("value", dict, p.size()) + ); +} + + +Foam::JohnsonJacksonParticleSlipFvPatchVectorField:: +JohnsonJacksonParticleSlipFvPatchVectorField +( + const JohnsonJacksonParticleSlipFvPatchVectorField& ptf +) +: + partialSlipFvPatchVectorField(ptf), + specularityCoefficient_(ptf.specularityCoefficient_) +{} + + +Foam::JohnsonJacksonParticleSlipFvPatchVectorField:: +JohnsonJacksonParticleSlipFvPatchVectorField +( + const JohnsonJacksonParticleSlipFvPatchVectorField& ptf, + const DimensionedField<vector, volMesh>& iF +) +: + partialSlipFvPatchVectorField(ptf, iF), + specularityCoefficient_(ptf.specularityCoefficient_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::JohnsonJacksonParticleSlipFvPatchVectorField::autoMap +( + const fvPatchFieldMapper& m +) +{ + partialSlipFvPatchVectorField::autoMap(m); +} + + +void Foam::JohnsonJacksonParticleSlipFvPatchVectorField::rmap +( + const fvPatchVectorField& ptf, + const labelList& addr +) +{ + partialSlipFvPatchVectorField::rmap(ptf, addr); +} + + +void Foam::JohnsonJacksonParticleSlipFvPatchVectorField::updateCoeffs() +{ + if (updated()) + { + return; + } + + // lookup the fluid model and the phase + const twoPhaseSystem& fluid = db().lookupObject<twoPhaseSystem> + ( + "phaseProperties" + ); + + const phaseModel& phased + ( + fluid.phase1().name() == dimensionedInternalField().group() + ? fluid.phase1() + : fluid.phase2() + ); + + // lookup all the fields on this patch + const fvPatchScalarField& alpha + ( + patch().lookupPatchField<volScalarField, scalar> + ( + phased.volScalarField::name() + ) + ); + + const fvPatchScalarField& gs0 + ( + patch().lookupPatchField<volScalarField, scalar> + ( + IOobject::groupName("gs0", phased.name()) + ) + ); + + const scalarField nu + ( + patch().lookupPatchField<volScalarField, scalar> + ( + IOobject::groupName("nut", phased.name()) + ) + ); + + word ThetaName(IOobject::groupName("Theta", phased.name())); + + const fvPatchScalarField& Theta + ( + db().foundObject<volScalarField>(ThetaName) + ? patch().lookupPatchField<volScalarField, scalar>(ThetaName) + : alpha + ); + + // lookup the packed volume fraction + dimensionedScalar alphaMax + ( + "alphaMax", + dimless, + db() + .lookupObject<IOdictionary> + ( + IOobject::groupName("turbulenceProperties", phased.name()) + ) + .subDict("RAS") + .subDict("kineticTheoryCoeffs") + .lookup("alphaMax") + ); + + // calculate the slip value fraction + scalarField c + ( + constant::mathematical::pi + *alpha + *gs0 + *specularityCoefficient_.value() + *sqrt(3.0*Theta) + /max(6.0*nu*alphaMax.value(), SMALL) + ); + + this->valueFraction() = c/(c + patch().deltaCoeffs()); + + partialSlipFvPatchVectorField::updateCoeffs(); +} + + +void Foam::JohnsonJacksonParticleSlipFvPatchVectorField::write +( + Ostream& os +) const +{ + fvPatchVectorField::write(os); + os.writeKeyword("specularityCoefficient") + << specularityCoefficient_ << token::END_STATEMENT << nl; + writeEntry("value", os); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H new file mode 100644 index 0000000000000000000000000000000000000000..1aaa801f0f8cebc7184b5b70f622aaf826ad26c3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.H @@ -0,0 +1,177 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::JohnsonJacksonParticleSlipFvPatchVectorField + +Description + Partial slip boundary condition for the particulate velocity. + + References: + \verbatim + "Multifluid Eulerian modeling of dense gas–solids fluidized bed + hydrodynamics: Influence of the dissipation parameters" + Reuge, N., + Chemical Engineering Science + Volume 63, Issue 22, November 2008, pp. 5540-5551 + \endverbatim + + \verbatim + "Frictional-collisional constitutive relations for granular materials, + with application to plane shearing" + Johnson, P.C., and Jackson, R., + Journal of Fluid Mechanics + Volume 176, March 1987, pp. 67-93 + \endverbatim + +SourceFiles + JohnsonJacksonParticleSlipFvPatchVectorField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef JohnsonJacksonParticleSlipFvPatchVectorField_H +#define JohnsonJacksonParticleSlipFvPatchVectorField_H + +#include "partialSlipFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class JohnsonJacksonParticleSlipFvPatchVectorField Declaration +\*---------------------------------------------------------------------------*/ + +class JohnsonJacksonParticleSlipFvPatchVectorField +: + public partialSlipFvPatchVectorField +{ + // Private data + + //- Specularity coefficient + dimensionedScalar specularityCoefficient_; + + +public: + + //- Runtime type information + TypeName("JohnsonJacksonParticleSlip"); + + + // Constructors + + //- Construct from patch and internal field + JohnsonJacksonParticleSlipFvPatchVectorField + ( + const fvPatch&, + const DimensionedField<vector, volMesh>& + ); + + //- Construct from patch, internal field and dictionary + JohnsonJacksonParticleSlipFvPatchVectorField + ( + const fvPatch&, + const DimensionedField<vector, volMesh>&, + const dictionary& + ); + + //- Construct by mapping onto a new patch + JohnsonJacksonParticleSlipFvPatchVectorField + ( + const JohnsonJacksonParticleSlipFvPatchVectorField&, + const fvPatch&, + const DimensionedField<vector, volMesh>&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + JohnsonJacksonParticleSlipFvPatchVectorField + ( + const JohnsonJacksonParticleSlipFvPatchVectorField& + ); + + //- Construct and return a clone + virtual tmp<fvPatchVectorField> clone() const + { + return tmp<fvPatchVectorField> + ( + new JohnsonJacksonParticleSlipFvPatchVectorField(*this) + ); + } + + //- Construct as copy setting internal field reference + JohnsonJacksonParticleSlipFvPatchVectorField + ( + const JohnsonJacksonParticleSlipFvPatchVectorField&, + const DimensionedField<vector, volMesh>& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp<fvPatchVectorField> clone + ( + const DimensionedField<vector, volMesh>& iF + ) const + { + return tmp<fvPatchVectorField> + ( + new JohnsonJacksonParticleSlipFvPatchVectorField(*this, iF) + ); + } + + + // Member functions + + // Mapping functions + + //- Map (and resize as needed) from self given a mapping object + virtual void autoMap + ( + const fvPatchFieldMapper& + ); + + //- Reverse map the given fvPatchField onto this fvPatchField + virtual void rmap + ( + const fvPatchVectorField&, + const labelList& + ); + + //- Update the coefficients + virtual void updateCoeffs(); + + //- Write + virtual void write(Ostream&) const; + +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C new file mode 100644 index 0000000000000000000000000000000000000000..93d97c650c77b3fecdfe929c3a975d87124661ac --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C @@ -0,0 +1,316 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "JohnsonJacksonParticleThetaFvPatchScalarField.H" +#include "addToRunTimeSelectionTable.H" +#include "twoPhaseSystem.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + makePatchTypeField + ( + fvPatchScalarField, + JohnsonJacksonParticleThetaFvPatchScalarField + ); +} + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::JohnsonJacksonParticleThetaFvPatchScalarField:: +JohnsonJacksonParticleThetaFvPatchScalarField +( + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF +) +: + mixedFvPatchScalarField(p, iF), + restitutionCoefficient_(p.size()), + specularityCoefficient_(p.size()) +{} + + +Foam::JohnsonJacksonParticleThetaFvPatchScalarField:: +JohnsonJacksonParticleThetaFvPatchScalarField +( + const JohnsonJacksonParticleThetaFvPatchScalarField& ptf, + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF, + const fvPatchFieldMapper& mapper +) +: + mixedFvPatchScalarField(ptf, p, iF, mapper), + restitutionCoefficient_(ptf.restitutionCoefficient_), + specularityCoefficient_(ptf.specularityCoefficient_) +{ +} + + +Foam::JohnsonJacksonParticleThetaFvPatchScalarField:: +JohnsonJacksonParticleThetaFvPatchScalarField +( + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF, + const dictionary& dict +) +: + mixedFvPatchScalarField(p, iF), + restitutionCoefficient_ + ( + "restitutionCoefficient", + dimless, + dict.lookup("restitutionCoefficient") + ), + specularityCoefficient_ + ( + "specularityCoefficient", + dimless, + dict.lookup("specularityCoefficient") + ) +{ + if + ( + (restitutionCoefficient_.value() < 0) + || (restitutionCoefficient_.value() > 1) + ) + { + FatalErrorIn + ( + "Foam::JohnsonJacksonParticleThetaFvPatchScalarField::" + "JohnsonJacksonParticleThetaFvPatchScalarField" + "(" + "const fvPatch& p," + "const DimensionedField<scalar, volMesh>& iF," + "const dictionary& dict" + ")" + ) << "The restitution coefficient has to be between 0 and 1" + << abort(FatalError); + } + + if + ( + (specularityCoefficient_.value() < 0) + || (specularityCoefficient_.value() > 1) + ) + { + FatalErrorIn + ( + "Foam::JohnsonJacksonParticleThetaFvPatchScalarField::" + "JohnsonJacksonParticleThetaFvPatchScalarField" + "(" + "const fvPatch& p," + "const DimensionedField<scalar, volMesh>& iF," + "const dictionary& dict" + ")" + ) << "The specularity coefficient has to be between 0 and 1" + << abort(FatalError); + } + + fvPatchScalarField::operator= + ( + scalarField("value", dict, p.size()) + ); +} + + +Foam::JohnsonJacksonParticleThetaFvPatchScalarField:: +JohnsonJacksonParticleThetaFvPatchScalarField +( + const JohnsonJacksonParticleThetaFvPatchScalarField& ptf +) +: + mixedFvPatchScalarField(ptf), + restitutionCoefficient_(ptf.restitutionCoefficient_), + specularityCoefficient_(ptf.specularityCoefficient_) +{} + + +Foam::JohnsonJacksonParticleThetaFvPatchScalarField:: +JohnsonJacksonParticleThetaFvPatchScalarField +( + const JohnsonJacksonParticleThetaFvPatchScalarField& ptf, + const DimensionedField<scalar, volMesh>& iF +) +: + mixedFvPatchScalarField(ptf, iF), + restitutionCoefficient_(ptf.restitutionCoefficient_), + specularityCoefficient_(ptf.specularityCoefficient_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::JohnsonJacksonParticleThetaFvPatchScalarField::autoMap +( + const fvPatchFieldMapper& m +) +{ + mixedFvPatchScalarField::autoMap(m); +} + + +void Foam::JohnsonJacksonParticleThetaFvPatchScalarField::rmap +( + const fvPatchScalarField& ptf, + const labelList& addr +) +{ + mixedFvPatchScalarField::rmap(ptf, addr); +} + + +void Foam::JohnsonJacksonParticleThetaFvPatchScalarField::updateCoeffs() +{ + if (updated()) + { + return; + } + + // lookup the fluid model and the phase + const twoPhaseSystem& fluid = db().lookupObject<twoPhaseSystem> + ( + "phaseProperties" + ); + + const phaseModel& phased + ( + fluid.phase1().name() == dimensionedInternalField().group() + ? fluid.phase1() + : fluid.phase2() + ); + + // lookup all the fields on this patch + const fvPatchScalarField& alpha + ( + patch().lookupPatchField<volScalarField, scalar> + ( + phased.volScalarField::name() + ) + ); + + const fvPatchVectorField& U + ( + patch().lookupPatchField<volVectorField, vector> + ( + IOobject::groupName("U", phased.name()) + ) + ); + + const fvPatchScalarField& gs0 + ( + patch().lookupPatchField<volScalarField, scalar> + ( + IOobject::groupName("gs0", phased.name()) + ) + ); + + const fvPatchScalarField& kappa + ( + patch().lookupPatchField<volScalarField, scalar> + ( + IOobject::groupName("kappa", phased.name()) + ) + ); + + const scalarField Theta(patchInternalField()); + + // lookup the packed volume fraction + dimensionedScalar alphaMax + ( + "alphaMax", + dimless, + db() + .lookupObject<IOdictionary> + ( + IOobject::groupName("turbulenceProperties", phased.name()) + ) + .subDict("RAS") + .subDict("kineticTheoryCoeffs") + .lookup("alphaMax") + ); + + // calculate the reference value and the value fraction + if (restitutionCoefficient_.value() != 1.0) + { + this->refValue() = + (2.0/3.0) + *specularityCoefficient_.value() + *magSqr(U) + /(scalar(1) - sqr(restitutionCoefficient_.value())); + + this->refGrad() = 0.0; + + scalarField c + ( + constant::mathematical::pi + *alpha + *gs0 + *(scalar(1) - sqr(restitutionCoefficient_.value())) + *sqrt(3.0*Theta) + /max(4.0*kappa*alphaMax.value(), SMALL) + ); + + this->valueFraction() = c/(c + patch().deltaCoeffs()); + } + + // for a restitution coefficient of 1, the boundary degenerates to a fixed + // gradient condition + else + { + this->refValue() = 0.0; + + this->refGrad() = + pos(alpha - SMALL) + *constant::mathematical::pi + *specularityCoefficient_.value() + *alpha + *gs0 + *sqrt(3.0*Theta) + *magSqr(U) + /max(6.0*kappa*alphaMax.value(), SMALL); + + this->valueFraction() = 0.0; + } + + mixedFvPatchScalarField::updateCoeffs(); +} + + +void Foam::JohnsonJacksonParticleThetaFvPatchScalarField::write +( + Ostream& os +) const +{ + fvPatchScalarField::write(os); + os.writeKeyword("restitutionCoefficient") + << restitutionCoefficient_ << token::END_STATEMENT << nl; + os.writeKeyword("specularityCoefficient") + << specularityCoefficient_ << token::END_STATEMENT << nl; + writeEntry("value", os); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H new file mode 100644 index 0000000000000000000000000000000000000000..5391e8c27d66326296b8fe3b2dda69cba9987dac --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.H @@ -0,0 +1,179 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::JohnsonJacksonParticleThetaFvPatchScalarField + +Description + Robin condition for the particulate granular temperature. + + References: + \verbatim + "Multifluid Eulerian modeling of dense gas–solids fluidized bed + hydrodynamics: Influence of the dissipation parameters" + Reuge, N., + Chemical Engineering Science + Volume 63, Issue 22, November 2008, pp. 5540-5551 + \endverbatim + + \verbatim + "Frictional-collisional constitutive relations for granular materials, + with application to plane shearing" + Johnson, P.C., and Jackson, R., + Journal of Fluid Mechanics + Volume 176, March 1987, pp. 67-93 + \endverbatim + +SourceFiles + JohnsonJacksonParticleThetaFvPatchScalarField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef JohnsonJacksonParticleThetaFvPatchScalarField_H +#define JohnsonJacksonParticleThetaFvPatchScalarField_H + +#include "mixedFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class JohnsonJacksonParticleThetaFvPatchScalarField Declaration +\*---------------------------------------------------------------------------*/ + +class JohnsonJacksonParticleThetaFvPatchScalarField +: + public mixedFvPatchScalarField +{ + // Private data + + //- Particle-wall restitution coefficient + dimensionedScalar restitutionCoefficient_; + + //- Specularity coefficient + dimensionedScalar specularityCoefficient_; + + +public: + + //- Runtime type information + TypeName("JohnsonJacksonParticleTheta"); + + + // Constructors + + //- Construct from patch and internal field + JohnsonJacksonParticleThetaFvPatchScalarField + ( + const fvPatch&, + const DimensionedField<scalar, volMesh>& + ); + + //- Construct from patch, internal field and dictionary + JohnsonJacksonParticleThetaFvPatchScalarField + ( + const fvPatch&, + const DimensionedField<scalar, volMesh>&, + const dictionary& + ); + + //- Construct by mapping onto a new patch + JohnsonJacksonParticleThetaFvPatchScalarField + ( + const JohnsonJacksonParticleThetaFvPatchScalarField&, + const fvPatch&, + const DimensionedField<scalar, volMesh>&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + JohnsonJacksonParticleThetaFvPatchScalarField + ( + const JohnsonJacksonParticleThetaFvPatchScalarField& + ); + + //- Construct and return a clone + virtual tmp<fvPatchScalarField> clone() const + { + return tmp<fvPatchScalarField> + ( + new JohnsonJacksonParticleThetaFvPatchScalarField(*this) + ); + } + + //- Construct as copy setting internal field reference + JohnsonJacksonParticleThetaFvPatchScalarField + ( + const JohnsonJacksonParticleThetaFvPatchScalarField&, + const DimensionedField<scalar, volMesh>& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp<fvPatchScalarField> clone + ( + const DimensionedField<scalar, volMesh>& iF + ) const + { + return tmp<fvPatchScalarField> + ( + new JohnsonJacksonParticleThetaFvPatchScalarField(*this, iF) + ); + } + + + // Member functions + + // Mapping functions + + //- Map (and resize as needed) from self given a mapping object + virtual void autoMap + ( + const fvPatchFieldMapper& + ); + + //- Reverse map the given fvPatchField onto this fvPatchField + virtual void rmap + ( + const fvPatchScalarField&, + const labelList& + ); + + //- Update the coefficients + virtual void updateCoeffs(); + + //- Write + virtual void write(Ostream&) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C new file mode 100644 index 0000000000000000000000000000000000000000..9f2be1a235ff6bff0467523fd0a22872e8556f66 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C @@ -0,0 +1,144 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "JohnsonJacksonFrictionalStress.H" +#include "addToRunTimeSelectionTable.H" +#include "mathematicalConstants.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace frictionalStressModels +{ + defineTypeNameAndDebug(JohnsonJackson, 0); + + addToRunTimeSelectionTable + ( + frictionalStressModel, + JohnsonJackson, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson:: +JohnsonJackson +( + const dictionary& dict +) +: + frictionalStressModel(dict), + coeffDict_(dict.subDict(typeName + "Coeffs")), + Fr_("Fr", dimensionSet(1, -1, -2, 0, 0), coeffDict_.lookup("Fr")), + eta_("eta", dimless, coeffDict_.lookup("eta")), + p_("p", dimless, coeffDict_.lookup("p")), + phi_("phi", dimless, coeffDict_.lookup("phi")), + alphaDeltaMin_("alphaDeltaMin", dimless, coeffDict_.lookup("alphaDeltaMin")) +{ + phi_ *= constant::mathematical::pi/180.0; +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson:: +~JohnsonJackson() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson:: +frictionalPressure +( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + + return + Fr_*pow(max(alpha1 - alphaMinFriction, scalar(0)), eta_) + /pow(max(alphaMax - alpha1, alphaDeltaMin_), p_); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson:: +frictionalPressurePrime +( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + return Fr_* + ( + eta_*pow(max(alpha1 - alphaMinFriction, scalar(0)), eta_ - 1.0) + *(alphaMax-alpha1) + + p_*pow(max(alpha1 - alphaMinFriction, scalar(0)), eta_) + )/pow(max(alphaMax - alpha1, alphaDeltaMin_), p_ + 1.0); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::nu +( + const volScalarField& alpha1, + const dimensionedScalar& alphaMax, + const volScalarField& pf, + const volSymmTensorField& D +) const +{ + return dimensionedScalar("0.5", dimTime, 0.5)*pf*sin(phi_); +} + + +bool Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::read() +{ + coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + + Fr_.read(coeffDict_); + eta_.read(coeffDict_); + p_.read(coeffDict_); + + phi_.read(coeffDict_); + phi_ *= constant::mathematical::pi/180.0; + + alphaDeltaMin_.read(coeffDict_); + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H new file mode 100644 index 0000000000000000000000000000000000000000..cc5a9dc5ea143e13dc480c137b7d403f5d35b59c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H @@ -0,0 +1,130 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson + +Description + +SourceFiles + JohnsonJacksonFrictionalStress.C + +\*---------------------------------------------------------------------------*/ + +#ifndef JohnsonJackson_H +#define JohnsonJackson_H + +#include "frictionalStressModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace frictionalStressModels +{ + +/*---------------------------------------------------------------------------*\ + Class JohnsonJackson Declaration +\*---------------------------------------------------------------------------*/ + +class JohnsonJackson +: + public frictionalStressModel +{ + // Private data + + dictionary coeffDict_; + + //- Material constant for frictional normal stress + dimensionedScalar Fr_; + + //- Material constant for frictional normal stress + dimensionedScalar eta_; + + //- Material constant for frictional normal stress + dimensionedScalar p_; + + //- Angle of internal friction + dimensionedScalar phi_; + + //- Lower limit for (alphaMax - alpha1) + dimensionedScalar alphaDeltaMin_; + + +public: + + //- Runtime type information + TypeName("JohnsonJackson"); + + + // Constructors + + //- Construct from components + JohnsonJackson(const dictionary& dict); + + + //- Destructor + virtual ~JohnsonJackson(); + + + // Member functions + + virtual tmp<volScalarField> frictionalPressure + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; + + virtual tmp<volScalarField> frictionalPressurePrime + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; + + virtual tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMax, + const volScalarField& pf, + const volSymmTensorField& D + ) const; + + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace frictionalStressModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C new file mode 100644 index 0000000000000000000000000000000000000000..7d0a4decd069b863b7cfc079d59c65e0d57e0bd8 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C @@ -0,0 +1,170 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "SchaefferFrictionalStress.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace frictionalStressModels +{ + defineTypeNameAndDebug(Schaeffer, 0); + + addToRunTimeSelectionTable + ( + frictionalStressModel, + Schaeffer, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::Schaeffer +( + const dictionary& dict +) +: + frictionalStressModel(dict), + coeffDict_(dict.subDict(typeName + "Coeffs")), + phi_("phi", dimless, coeffDict_.lookup("phi")) +{ + phi_ *= constant::mathematical::pi/180.0; +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::~Schaeffer() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::frictionalStressModels::Schaeffer:: +frictionalPressure +( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + return + dimensionedScalar("1e24", dimensionSet(1, -1, -2, 0, 0), 1e24) + *pow(Foam::max(alpha1 - alphaMinFriction, scalar(0)), 10.0); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::frictionalStressModels::Schaeffer:: +frictionalPressurePrime +( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + return + dimensionedScalar("1e25", dimensionSet(1, -1, -2, 0, 0), 1e25) + *pow(Foam::max(alpha1 - alphaMinFriction, scalar(0)), 9.0); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::nu +( + const volScalarField& alpha1, + const dimensionedScalar& alphaMax, + const volScalarField& pf, + const volSymmTensorField& D +) const +{ + const scalar I2Dsmall = 1.0e-15; + + // Creating nu assuming it should be 0 on the boundary which may not be + // true + tmp<volScalarField> tnu + ( + new volScalarField + ( + IOobject + ( + "Schaeffer:nu", + alpha1.mesh().time().timeName(), + alpha1.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + alpha1.mesh(), + dimensionedScalar("nu", dimensionSet(0, 2, -1, 0, 0), 0.0) + ) + ); + + volScalarField& nuf = tnu(); + + forAll (D, celli) + { + if (alpha1[celli] > alphaMax.value() - 5e-2) + { + nuf[celli] = + 0.5*pf[celli]*sin(phi_.value()) + /( + sqrt(1.0/6.0*(sqr(D[celli].xx() - D[celli].yy()) + + sqr(D[celli].yy() - D[celli].zz()) + + sqr(D[celli].zz() - D[celli].xx())) + + sqr(D[celli].xy()) + sqr(D[celli].xz()) + + sqr(D[celli].yz())) + I2Dsmall + ); + } + } + + // Correct coupled BCs + nuf.correctBoundaryConditions(); + + return tnu; +} + + +bool Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::read() +{ + coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + + phi_.read(coeffDict_); + phi_ *= constant::mathematical::pi/180.0; + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H new file mode 100644 index 0000000000000000000000000000000000000000..7ff4862348aea50bc0157ee6f26e361675cb66ad --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H @@ -0,0 +1,118 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::frictionalStressModels::Schaeffer + +Description + +SourceFiles + SchaefferFrictionalStress.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Schaeffer_H +#define Schaeffer_H + +#include "frictionalStressModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace frictionalStressModels +{ + +/*---------------------------------------------------------------------------*\ + Class Schaeffer Declaration +\*---------------------------------------------------------------------------*/ + +class Schaeffer +: + public frictionalStressModel +{ + // Private data + + dictionary coeffDict_; + + //- Angle of internal friction + dimensionedScalar phi_; + + +public: + + //- Runtime type information + TypeName("Schaeffer"); + + + // Constructors + + //- Construct from components + Schaeffer(const dictionary& dict); + + + //- Destructor + virtual ~Schaeffer(); + + + // Member functions + + virtual tmp<volScalarField> frictionalPressure + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; + + virtual tmp<volScalarField> frictionalPressurePrime + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; + + virtual tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMax, + const volScalarField& pf, + const volSymmTensorField& D + ) const; + + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace frictionalStressModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C new file mode 100644 index 0000000000000000000000000000000000000000..3a764313a7bb6e2b3c8ca37795c5cd7a97795ab0 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "frictionalStressModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + defineTypeNameAndDebug(frictionalStressModel, 0); + + defineRunTimeSelectionTable(frictionalStressModel, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::frictionalStressModel::frictionalStressModel +( + const dictionary& dict +) +: + dict_(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::frictionalStressModel::~frictionalStressModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H new file mode 100644 index 0000000000000000000000000000000000000000..0e08f7ec8c885c20e983bce95328f0f1cbad33aa --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H @@ -0,0 +1,143 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::frictionalStressModel + +SourceFiles + frictionalStressModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef frictionalStressModel_H +#define frictionalStressModel_H + +#include "dictionary.H" +#include "volFields.H" +#include "dimensionedTypes.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + +/*---------------------------------------------------------------------------*\ + Class frictionalStressModel Declaration +\*---------------------------------------------------------------------------*/ + +class frictionalStressModel +{ + // Private member functions + + //- Disallow default bitwise copy construct + frictionalStressModel(const frictionalStressModel&); + + //- Disallow default bitwise assignment + void operator=(const frictionalStressModel&); + + +protected: + + // Protected data + + //- Reference to higher-level dictionary for re-read + const dictionary& dict_; + + +public: + + //- Runtime type information + TypeName("frictionalStressModel"); + + // Declare runtime constructor selection table + declareRunTimeSelectionTable + ( + autoPtr, + frictionalStressModel, + dictionary, + ( + const dictionary& dict + ), + (dict) + ); + + + // Constructors + + //- Construct from components + frictionalStressModel(const dictionary& dict); + + + // Selectors + + static autoPtr<frictionalStressModel> New + ( + const dictionary& dict + ); + + + //- Destructor + virtual ~frictionalStressModel(); + + + // Member Functions + + virtual tmp<volScalarField> frictionalPressure + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const = 0; + + virtual tmp<volScalarField> frictionalPressurePrime + ( + const volScalarField& alpha1f, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const = 0; + + virtual tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const dimensionedScalar& alphaMax, + const volScalarField& pf, + const volSymmTensorField& D + ) const = 0; + + virtual bool read() = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C new file mode 100644 index 0000000000000000000000000000000000000000..db6102174a24a098fa7087969f67acbca719369b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "frictionalStressModel.H" + +// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::kineticTheoryModels::frictionalStressModel> +Foam::kineticTheoryModels::frictionalStressModel::New +( + const dictionary& dict +) +{ + word frictionalStressModelType(dict.lookup("frictionalStressModel")); + + Info<< "Selecting frictionalStressModel " + << frictionalStressModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(frictionalStressModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalError + << "frictionalStressModel::New(const dictionary&) : " << endl + << " unknown frictionalStressModelType type " + << frictionalStressModelType + << ", constructor not in hash table" << endl << endl + << " Valid frictionalStressModelType types are :" << endl; + Info<< dictionaryConstructorTablePtr_->sortedToc() + << abort(FatalError); + } + + return autoPtr<frictionalStressModel>(cstrIter()(dict)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C new file mode 100644 index 0000000000000000000000000000000000000000..3a94ea5734777e8ce390f52691a59da466f39fef --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "LunPressure.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace granularPressureModels +{ + defineTypeNameAndDebug(Lun, 0); + + addToRunTimeSelectionTable + ( + granularPressureModel, + Lun, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::granularPressureModels::Lun::Lun +( + const dictionary& dict +) +: + granularPressureModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::granularPressureModels::Lun::~Lun() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::granularPressureModels::Lun::granularPressureCoeff +( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& rho1, + const dimensionedScalar& e +) const +{ + + return rho1*alpha1*(1.0 + 2.0*(1.0 + e)*alpha1*g0); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::granularPressureModels::Lun:: +granularPressureCoeffPrime +( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& g0prime, + const volScalarField& rho1, + const dimensionedScalar& e +) const +{ + return rho1*(1.0 + alpha1*(1.0 + e)*(4.0*g0 + 2.0*g0prime*alpha1)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H new file mode 100644 index 0000000000000000000000000000000000000000..d82ba47d5b375e2ebda2b0cc6580929c2003d9e3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H @@ -0,0 +1,104 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::Lun + +Description + +SourceFiles + LunPressure.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Lun_H +#define Lun_H + +#include "granularPressureModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace granularPressureModels +{ + +/*---------------------------------------------------------------------------*\ + Class Lun Declaration +\*---------------------------------------------------------------------------*/ + +class Lun +: + public granularPressureModel +{ + +public: + + //- Runtime type information + TypeName("Lun"); + + + // Constructors + + //- Construct from components + Lun(const dictionary& dict); + + + //- Destructor + virtual ~Lun(); + + + // Member Functions + + tmp<volScalarField> granularPressureCoeff + ( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& rho1, + const dimensionedScalar& e + ) const; + + tmp<volScalarField> granularPressureCoeffPrime + ( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& g0prime, + const volScalarField& rho1, + const dimensionedScalar& e + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace granularPressureModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C new file mode 100644 index 0000000000000000000000000000000000000000..8e45c45e21ba66c165c7b014d811b6bc13f4727d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "SyamlalRogersOBrienPressure.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace granularPressureModels +{ + defineTypeNameAndDebug(SyamlalRogersOBrien, 0); + + addToRunTimeSelectionTable + ( + granularPressureModel, + SyamlalRogersOBrien, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::granularPressureModels::SyamlalRogersOBrien:: +SyamlalRogersOBrien +( + const dictionary& dict +) +: + granularPressureModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::granularPressureModels::SyamlalRogersOBrien:: +~SyamlalRogersOBrien() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::granularPressureModels::SyamlalRogersOBrien:: +granularPressureCoeff +( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& rho1, + const dimensionedScalar& e +) const +{ + + return 2.0*rho1*(1.0 + e)*sqr(alpha1)*g0; +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::granularPressureModels::SyamlalRogersOBrien:: +granularPressureCoeffPrime +( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& g0prime, + const volScalarField& rho1, + const dimensionedScalar& e +) const +{ + return rho1*alpha1*(1.0 + e)*(4.0*g0 + 2.0*g0prime*alpha1); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H new file mode 100644 index 0000000000000000000000000000000000000000..3f420538f1fafcd5ee0ce4996989de8cae59339a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H @@ -0,0 +1,104 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::SyamlalRogersOBrien + +Description + +SourceFiles + SyamlalRogersOBrienPressure.C + +\*---------------------------------------------------------------------------*/ + +#ifndef SyamlalRogersOBrien_H +#define SyamlalRogersOBrien_H + +#include "granularPressureModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace granularPressureModels +{ + +/*---------------------------------------------------------------------------*\ + Class SyamlalRogersOBrien Declaration +\*---------------------------------------------------------------------------*/ + +class SyamlalRogersOBrien +: + public granularPressureModel +{ + +public: + + //- Runtime type information + TypeName("SyamlalRogersOBrien"); + + + // Constructors + + //- Construct from components + SyamlalRogersOBrien(const dictionary& dict); + + + //- Destructor + virtual ~SyamlalRogersOBrien(); + + + // Member Functions + + tmp<volScalarField> granularPressureCoeff + ( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& rho1, + const dimensionedScalar& e + ) const; + + tmp<volScalarField> granularPressureCoeffPrime + ( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& g0prime, + const volScalarField& rho1, + const dimensionedScalar& e + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace granularPressureModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C new file mode 100644 index 0000000000000000000000000000000000000000..3a2214e9e63cdfd385f92ce3db441b2443ea4a68 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "granularPressureModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + defineTypeNameAndDebug(granularPressureModel, 0); + + defineRunTimeSelectionTable(granularPressureModel, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::granularPressureModel::granularPressureModel +( + const dictionary& dict +) +: + dict_(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::granularPressureModel::~granularPressureModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H new file mode 100644 index 0000000000000000000000000000000000000000..06160f6c0ac834330d49642d07e247b178ffcca1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H @@ -0,0 +1,142 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::granularPressureModel + +SourceFiles + granularPressureModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef granularPressureModel_H +#define granularPressureModel_H + +#include "dictionary.H" +#include "volFields.H" +#include "dimensionedTypes.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + +/*---------------------------------------------------------------------------*\ + Class granularPressureModel Declaration +\*---------------------------------------------------------------------------*/ + +class granularPressureModel +{ + // Private member functions + + //- Disallow default bitwise copy construct + granularPressureModel(const granularPressureModel&); + + //- Disallow default bitwise assignment + void operator=(const granularPressureModel&); + + +protected: + + // Protected data + + const dictionary& dict_; + + +public: + + //- Runtime type information + TypeName("granularPressureModel"); + + // Declare runtime constructor selection table + declareRunTimeSelectionTable + ( + autoPtr, + granularPressureModel, + dictionary, + ( + const dictionary& dict + ), + (dict) + ); + + + // Constructors + + //- Construct from components + granularPressureModel(const dictionary& dict); + + + // Selectors + + static autoPtr<granularPressureModel> New + ( + const dictionary& dict + ); + + + //- Destructor + virtual ~granularPressureModel(); + + + // Member Functions + + //- Granular pressure coefficient + virtual tmp<volScalarField> granularPressureCoeff + ( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& rho1, + const dimensionedScalar& e + ) const = 0; + + //- Derivative of the granular pressure coefficient + virtual tmp<volScalarField> granularPressureCoeffPrime + ( + const volScalarField& alpha1, + const volScalarField& g0, + const volScalarField& g0prime, + const volScalarField& rho1, + const dimensionedScalar& e + ) const = 0; + + virtual bool read() + { + return true; + } +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C new file mode 100644 index 0000000000000000000000000000000000000000..36b2c2b175ec15007558a51bea19fec6960175de --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "granularPressureModel.H" + +// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::kineticTheoryModels::granularPressureModel> +Foam::kineticTheoryModels::granularPressureModel::New +( + const dictionary& dict +) +{ + word granularPressureModelType(dict.lookup("granularPressureModel")); + + Info<< "Selecting granularPressureModel " + << granularPressureModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(granularPressureModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalError + << "granularPressureModel::New(const dictionary&) : " << endl + << " unknown granularPressureModelType type " + << granularPressureModelType + << ", constructor not in hash table" << endl << endl + << " Valid granularPressureModelType types are :" << endl; + Info<< dictionaryConstructorTablePtr_->sortedToc() + << abort(FatalError); + } + + return autoPtr<granularPressureModel>(cstrIter()(dict)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C new file mode 100644 index 0000000000000000000000000000000000000000..8de1fdc9e11b6ac99540eda2602b597027bb655a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C @@ -0,0 +1,540 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "kineticTheoryModel.H" +#include "mathematicalConstants.H" +#include "twoPhaseSystem.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::RASModels::kineticTheoryModel::kineticTheoryModel +( + const volScalarField& alpha, + const volScalarField& rho, + const volVectorField& U, + const surfaceScalarField& alphaRhoPhi, + const surfaceScalarField& phi, + const transportModel& phase, + const word& propertiesName, + const word& type +) +: + eddyViscosity<RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > > + ( + type, + alpha, + rho, + U, + alphaRhoPhi, + phi, + phase, + propertiesName + ), + + phase_(phase), + + viscosityModel_ + ( + kineticTheoryModels::viscosityModel::New + ( + coeffDict_ + ) + ), + conductivityModel_ + ( + kineticTheoryModels::conductivityModel::New + ( + coeffDict_ + ) + ), + radialModel_ + ( + kineticTheoryModels::radialModel::New + ( + coeffDict_ + ) + ), + granularPressureModel_ + ( + kineticTheoryModels::granularPressureModel::New + ( + coeffDict_ + ) + ), + frictionalStressModel_ + ( + kineticTheoryModels::frictionalStressModel::New + ( + coeffDict_ + ) + ), + + equilibrium_(coeffDict_.lookup("equilibrium")), + e_("e", dimless, coeffDict_.lookup("e")), + alphaMax_("alphaMax", dimless, coeffDict_.lookup("alphaMax")), + alphaMinFriction_ + ( + "alphaMinFriction", + dimless, + coeffDict_.lookup("alphaMinFriction") + ), + residualAlpha_ + ( + "residualAlpha", + dimless, + coeffDict_.lookup("residualAlpha") + ), + + Theta_ + ( + IOobject + ( + IOobject::groupName("Theta", phase.name()), + U.time().timeName(), + U.mesh(), + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + U.mesh() + ), + + lambda_ + ( + IOobject + ( + IOobject::groupName("lambda", phase.name()), + U.time().timeName(), + U.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE + ), + U.mesh(), + dimensionedScalar("zero", dimensionSet(0, 2, -1, 0, 0), 0.0) + ), + + gs0_ + ( + IOobject + ( + IOobject::groupName("gs0", phase.name()), + U.time().timeName(), + U.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE + ), + U.mesh(), + dimensionedScalar("zero", dimensionSet(0, 0, 0, 0, 0), 0.0) + ), + + kappa_ + ( + IOobject + ( + IOobject::groupName("kappa", phase.name()), + U.time().timeName(), + U.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE + ), + U.mesh(), + dimensionedScalar("zero", dimensionSet(1, -1, -1, 0, 0), 0.0) + ) +{ + if (type == typeName) + { + printCoeffs(type); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::RASModels::kineticTheoryModel::~kineticTheoryModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +bool Foam::RASModels::kineticTheoryModel::read() +{ + if + ( + eddyViscosity + < + RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > + >::read() + ) + { + coeffDict().lookup("equilibrium") >> equilibrium_; + e_.readIfPresent(coeffDict()); + alphaMax_.readIfPresent(coeffDict()); + alphaMinFriction_.readIfPresent(coeffDict()); + + viscosityModel_->read(); + conductivityModel_->read(); + radialModel_->read(); + granularPressureModel_->read(); + frictionalStressModel_->read(); + + return true; + } + else + { + return false; + } +} + + +Foam::tmp<Foam::volScalarField> +Foam::RASModels::kineticTheoryModel::k() const +{ + notImplemented("kineticTheoryModel::k()"); + return nut_; +} + + +Foam::tmp<Foam::volScalarField> +Foam::RASModels::kineticTheoryModel::epsilon() const +{ + notImplemented("kineticTheoryModel::epsilon()"); + return nut_; +} + + +Foam::tmp<Foam::volSymmTensorField> +Foam::RASModels::kineticTheoryModel::R() const +{ + return tmp<volSymmTensorField> + ( + new volSymmTensorField + ( + IOobject + ( + IOobject::groupName("R", U_.group()), + runTime_.timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + - (nut_)*dev(twoSymm(fvc::grad(U_))) + - (lambda_*fvc::div(phi_))*symmTensor::I + ) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::RASModels::kineticTheoryModel::pPrime() const +{ + const volScalarField& rho = phase_.rho(); + + tmp<volScalarField> tpPrime + ( + Theta_ + *granularPressureModel_->granularPressureCoeffPrime + ( + alpha_, + radialModel_->g0(alpha_, alphaMinFriction_, alphaMax_), + radialModel_->g0prime(alpha_, alphaMinFriction_, alphaMax_), + rho, + e_ + ) + + frictionalStressModel_->frictionalPressurePrime + ( + alpha_, + alphaMinFriction_, + alphaMax_ + ) + ); + + volScalarField::GeometricBoundaryField& bpPrime = tpPrime().boundaryField(); + + forAll(bpPrime, patchi) + { + if (!bpPrime[patchi].coupled()) + { + bpPrime[patchi] == 0; + } + } + + return tpPrime; +} + + +Foam::tmp<Foam::surfaceScalarField> +Foam::RASModels::kineticTheoryModel::pPrimef() const +{ + return fvc::interpolate(pPrime()); +} + + +Foam::tmp<Foam::volSymmTensorField> +Foam::RASModels::kineticTheoryModel::devRhoReff() const +{ + return tmp<volSymmTensorField> + ( + new volSymmTensorField + ( + IOobject + ( + IOobject::groupName("devRhoReff", U_.group()), + runTime_.timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + - (rho_*nut_) + *dev(twoSymm(fvc::grad(U_))) + - ((rho_*lambda_)*fvc::div(phi_))*symmTensor::I + ) + ); +} + + +Foam::tmp<Foam::fvVectorMatrix> +Foam::RASModels::kineticTheoryModel::divDevRhoReff +( + volVectorField& U +) const +{ + return + ( + - fvm::laplacian(rho_*nut_, U) + - fvc::div + ( + (rho_*nut_)*dev2(T(fvc::grad(U))) + + ((rho_*lambda_)*fvc::div(phi_)) + *dimensioned<symmTensor>("I", dimless, symmTensor::I) + ) + ); +} + + +void Foam::RASModels::kineticTheoryModel::correct() +{ + // Local references + volScalarField alpha(max(alpha_, scalar(0))); + const volScalarField& rho = phase_.rho(); + const surfaceScalarField& alphaRhoPhi = alphaRhoPhi_; + const volVectorField& U = U_; + const volVectorField& Uc_ = + refCast<const twoPhaseSystem>(phase_.fluid()).otherPhase(phase_).U(); + + const scalar sqrtPi = sqrt(constant::mathematical::pi); + dimensionedScalar ThetaSmall("ThetaSmall", Theta_.dimensions(), 1.0e-6); + dimensionedScalar ThetaSmallSqrt(sqrt(ThetaSmall)); + + tmp<volScalarField> tda(phase_.d()); + const volScalarField& da = tda(); + + tmp<volTensorField> tgradU(fvc::grad(U_)); + const volTensorField& gradU(tgradU()); + volSymmTensorField D(symm(gradU)); + + // Calculating the radial distribution function + gs0_ = radialModel_->g0(alpha, alphaMinFriction_, alphaMax_); + + if (!equilibrium_) + { + // Particle viscosity (Table 3.2, p.47) + nut_ = viscosityModel_->nu(alpha, Theta_, gs0_, rho, da, e_); + + volScalarField ThetaSqrt("sqrtTheta", sqrt(Theta_)); + + // Bulk viscosity p. 45 (Lun et al. 1984). + lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0_*(1.0 + e_)*ThetaSqrt/sqrtPi; + + // Stress tensor, Definitions, Table 3.1, p. 43 + volSymmTensorField tau + ( + rho*(2.0*nut_*D + (lambda_ - (2.0/3.0)*nut_)*tr(D)*I) + ); + + // Dissipation (Eq. 3.24, p.50) + volScalarField gammaCoeff + ( + "gammaCoeff", + 12.0*(1.0 - sqr(e_)) + *max(sqr(alpha), residualAlpha_) + *rho*gs0_*(1.0/da)*ThetaSqrt/sqrtPi + ); + + // Drag + volScalarField beta + ( + refCast<const twoPhaseSystem>(phase_.fluid()).drag(phase_).K() + ); + + // Eq. 3.25, p. 50 Js = J1 - J2 + volScalarField J1("J1", 3.0*beta); + volScalarField J2 + ( + "J2", + 0.25*sqr(beta)*da*magSqr(U - Uc_) + /( + max(alpha, residualAlpha_)*rho + *sqrtPi*(ThetaSqrt + ThetaSmallSqrt) + ) + ); + + // particle pressure - coefficient in front of Theta (Eq. 3.22, p. 45) + volScalarField PsCoeff + ( + granularPressureModel_->granularPressureCoeff + ( + alpha, + gs0_, + rho, + e_ + ) + ); + + // 'thermal' conductivity (Table 3.3, p. 49) + kappa_ = conductivityModel_->kappa(alpha, Theta_, gs0_, rho, da, e_); + + // Construct the granular temperature equation (Eq. 3.20, p. 44) + // NB. note that there are two typos in Eq. 3.20: + // Ps should be without grad + // the laplacian has the wrong sign + fvScalarMatrix ThetaEqn + ( + 1.5* + ( + fvm::ddt(alpha, rho, Theta_) + + fvm::div(alphaRhoPhi, Theta_) + - fvc::Sp(fvc::ddt(alpha, rho) + fvc::div(alphaRhoPhi), Theta_) + ) + - fvm::laplacian(kappa_, Theta_, "laplacian(kappa,Theta)") + == + fvm::SuSp(-((PsCoeff*I) && gradU), Theta_) + + (tau && gradU) + + fvm::Sp(-gammaCoeff, Theta_) + + fvm::Sp(-J1, Theta_) + + fvm::Sp(J2/(Theta_ + ThetaSmall), Theta_) + ); + + ThetaEqn.relax(); + ThetaEqn.solve(); + } + else + { + // Equilibrium => dissipation == production + // Eq. 4.14, p.82 + volScalarField K1("K1", 2.0*(1.0 + e_)*rho*gs0_); + volScalarField K3 + ( + "K3", + 0.5*da*rho* + ( + (sqrtPi/(3.0*(3.0 - e_))) + *(1.0 + 0.4*(1.0 + e_)*(3.0*e_ - 1.0)*alpha*gs0_) + +1.6*alpha*gs0_*(1.0 + e_)/sqrtPi + ) + ); + + volScalarField K2 + ( + "K2", + 4.0*da*rho*(1.0 + e_)*alpha*gs0_/(3.0*sqrtPi) - 2.0*K3/3.0 + ); + + volScalarField K4("K4", 12.0*(1.0 - sqr(e_))*rho*gs0_/(da*sqrtPi)); + + volScalarField trD + ( + "trD", + alpha/(alpha + residualAlpha_) + *fvc::div(phi_) + ); + volScalarField tr2D("tr2D", sqr(trD)); + volScalarField trD2("trD2", tr(D & D)); + + volScalarField t1("t1", K1*alpha + rho); + volScalarField l1("l1", -t1*trD); + volScalarField l2("l2", sqr(t1)*tr2D); + volScalarField l3 + ( + "l3", + 4.0 + *K4 + *alpha + *(2.0*K3*trD2 + K2*tr2D) + ); + + Theta_ = sqr + ( + (l1 + sqrt(l2 + l3)) + /(2.0*max(alpha, residualAlpha_)*K4) + ); + + kappa_ = conductivityModel_->kappa(alpha, Theta_, gs0_, rho, da, e_); + } + + Theta_.max(0); + Theta_.min(100); + + { + // particle viscosity (Table 3.2, p.47) + nut_ = viscosityModel_->nu(alpha, Theta_, gs0_, rho, da, e_); + + volScalarField ThetaSqrt("sqrtTheta", sqrt(Theta_)); + + // Bulk viscosity p. 45 (Lun et al. 1984). + lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0_*(1.0 + e_)*ThetaSqrt/sqrtPi; + + // Frictional pressure + volScalarField pf + ( + frictionalStressModel_->frictionalPressure + ( + alpha, + alphaMinFriction_, + alphaMax_ + ) + ); + + // Add frictional shear viscosity, Eq. 3.30, p. 52 + nut_ += frictionalStressModel_->nu + ( + alpha, + alphaMax_, + pf/rho, + D + ); + + // Limit viscosity + nut_.min(100); + } + + if (debug) + { + Info<< typeName << ':' << nl + << " max(Theta) = " << max(Theta_).value() << nl + << " max(nut) = " << max(nut_).value() << endl; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H new file mode 100644 index 0000000000000000000000000000000000000000..bfa1f872cb877ecdfd0e15e5e2d0faf8cbc5ef25 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H @@ -0,0 +1,230 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModel + +Description + Kinetic theory particle phase RAS model + + Reference: + \verbatim + "Derivation, implementation, and validation of computer simulation + models for gas-solid fluidized beds", + van Wachem, B.G.M., + Ph.D. Thesis, Delft University of Technology, Amsterdam, 2000. + \endverbatim + + There are no default model coefficients. + +SourceFiles + kineticTheoryModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef kineticTheoryModel_H +#define kineticTheoryModel_H + +#include "RASModel.H" +#include "eddyViscosity.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "phaseModel.H" +#include "dragModel.H" +#include "viscosityModel.H" +#include "conductivityModel.H" +#include "radialModel.H" +#include "granularPressureModel.H" +#include "frictionalStressModel.H" + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace RASModels +{ + +/*---------------------------------------------------------------------------*\ + Class kineticTheoryModel Declaration +\*---------------------------------------------------------------------------*/ + +class kineticTheoryModel +: + public eddyViscosity + < + RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > + > +{ + // Private data + + // Input Fields + + const phaseModel& phase_; + + + // Sub-models + + //- Run-time selected viscosity model + autoPtr<kineticTheoryModels::viscosityModel> viscosityModel_; + + //- Run-time selected conductivity model + autoPtr<kineticTheoryModels::conductivityModel> conductivityModel_; + + //- Run-time selected radial distribution model + autoPtr<kineticTheoryModels::radialModel> radialModel_; + + //- Run-time selected granular pressure model + autoPtr<kineticTheoryModels::granularPressureModel> + granularPressureModel_; + + //- Run-time selected frictional stress model + autoPtr<kineticTheoryModels::frictionalStressModel> + frictionalStressModel_; + + + // Kinetic Theory Model coefficients + + //- Use equilibrium approximation: generation == dissipation + Switch equilibrium_; + + //- Coefficient of restitution + dimensionedScalar e_; + + //- Maximum packing phase-fraction + dimensionedScalar alphaMax_; + + //- Min value for which the frictional stresses are zero + dimensionedScalar alphaMinFriction_; + + //- Residual phase fraction + dimensionedScalar residualAlpha_; + + + // Kinetic Theory Model Fields + + //- The granular energy/temperature + volScalarField Theta_; + + //- The granular bulk viscosity + volScalarField lambda_; + + //- The granular radial distribution + volScalarField gs0_; + + //- The granular "thermal" conductivity + volScalarField kappa_; + + + // Private Member Functions + + void correctNut() + {} + + //- Disallow default bitwise copy construct + kineticTheoryModel(const kineticTheoryModel&); + + //- Disallow default bitwise assignment + void operator=(const kineticTheoryModel&); + + +public: + + //- Runtime type information + TypeName("kineticTheory"); + + + // Constructors + + //- Construct from components + kineticTheoryModel + ( + const volScalarField& alpha, + const volScalarField& rho, + const volVectorField& U, + const surfaceScalarField& alphaRhoPhi, + const surfaceScalarField& phi, + const phaseModel& transport, + const word& propertiesName = turbulenceModel::propertiesName, + const word& type = typeName + ); + + + //- Destructor + virtual ~kineticTheoryModel(); + + + // Member Functions + + //- Re-read model coefficients if they have changed + virtual bool read(); + + //- Return the effective viscosity + virtual tmp<volScalarField> nuEff() const + { + return this->nut(); + } + + //- Return the effective viscosity on patch + virtual tmp<scalarField> nuEff(const label patchi) const + { + return this->nut(patchi); + } + + //- Return the turbulence kinetic energy + virtual tmp<volScalarField> k() const; + + //- Return the turbulence kinetic energy dissipation rate + virtual tmp<volScalarField> epsilon() const; + + //- Return the Reynolds stress tensor + virtual tmp<volSymmTensorField> R() const; + + //- Return the phase-pressure' + // (derivative of phase-pressure w.r.t. phase-fraction) + virtual tmp<volScalarField> pPrime() const; + + //- Return the face-phase-pressure' + // (derivative of phase-pressure w.r.t. phase-fraction) + virtual tmp<surfaceScalarField> pPrimef() const; + + //- Return the effective stress tensor + virtual tmp<volSymmTensorField> devRhoReff() const; + + //- Return the source term for the momentum equation + virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const; + + //- Solve the kinetic theory equations and correct the viscosity + virtual void correct(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace RASModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C new file mode 100644 index 0000000000000000000000000000000000000000..abc364979c56c56473fc76421dae0ce5d265fddb --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C @@ -0,0 +1,100 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "CarnahanStarlingRadial.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace radialModels +{ + defineTypeNameAndDebug(CarnahanStarling, 0); + + addToRunTimeSelectionTable + ( + radialModel, + CarnahanStarling, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModels::CarnahanStarling::CarnahanStarling +( + const dictionary& dict +) +: + radialModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModels::CarnahanStarling::~CarnahanStarling() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::radialModels::CarnahanStarling::g0 +( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + + return + 1.0/(1.0 - alpha) + + 3.0*alpha/(2.0*sqr(1.0 - alpha)) + + sqr(alpha)/(2.0*pow3(1.0 - alpha)); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::radialModels::CarnahanStarling::g0prime +( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + return + 2.5/sqr(1.0 - alpha) + + 4.0*alpha/pow3(1.0 - alpha) + + 1.5*sqr(alpha)/pow4(1.0 - alpha); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H new file mode 100644 index 0000000000000000000000000000000000000000..a4082d5326c1d2bf81929dca9383b3919e65f977 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H @@ -0,0 +1,102 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::radialModels::CarnahanStarling + +Description + +SourceFiles + CarnahanStarlingRadial.C + +\*---------------------------------------------------------------------------*/ + +#ifndef CarnahanStarling_H +#define CarnahanStarling_H + +#include "radialModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace radialModels +{ + +/*---------------------------------------------------------------------------*\ + Class CarnahanStarling Declaration +\*---------------------------------------------------------------------------*/ + +class CarnahanStarling +: + public radialModel +{ + +public: + + //- Runtime type information + TypeName("CarnahanStarling"); + + + // Constructors + + //- Construct from components + CarnahanStarling(const dictionary& dict); + + + //- Destructor + virtual ~CarnahanStarling(); + + + // Member Functions + + + tmp<volScalarField> g0 + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; + + tmp<volScalarField> g0prime + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace radialModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C new file mode 100644 index 0000000000000000000000000000000000000000..df931c8752866b2f0d08536e412af2034963f90a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C @@ -0,0 +1,94 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "LunSavageRadial.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace radialModels +{ + defineTypeNameAndDebug(LunSavage, 0); + + addToRunTimeSelectionTable + ( + radialModel, + LunSavage, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModels::LunSavage::LunSavage +( + const dictionary& dict +) +: + radialModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModels::LunSavage::~LunSavage() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::radialModels::LunSavage::g0 +( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + + return pow(1.0 - alpha/alphaMax, -2.5*alphaMax); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::radialModels::LunSavage::g0prime +( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + return 2.5*pow(1.0 - alpha/alphaMax, -2.5*alphaMax - 1); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H new file mode 100644 index 0000000000000000000000000000000000000000..17cd8e5907bee083fcef6cf249a2151d5f309239 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::radialModels::LunSavage + +Description + +SourceFiles + LunSavage.C + +\*---------------------------------------------------------------------------*/ + +#ifndef LunSavage_H +#define LunSavage_H + +#include "radialModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace radialModels +{ + +/*---------------------------------------------------------------------------*\ + Class LunSavage Declaration +\*---------------------------------------------------------------------------*/ + +class LunSavage +: + public radialModel +{ + +public: + + //- Runtime type information + TypeName("LunSavage"); + + + // Constructors + + //- Construct from components + LunSavage(const dictionary& dict); + + + //- Destructor + virtual ~LunSavage(); + + + // Member Functions + + tmp<volScalarField> g0 + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; + + tmp<volScalarField> g0prime + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace radialModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C new file mode 100644 index 0000000000000000000000000000000000000000..bc74ce177a7babce2484a87a8eb59616feaa6b4d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "SinclairJacksonRadial.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace radialModels +{ + defineTypeNameAndDebug(SinclairJackson, 0); + + addToRunTimeSelectionTable + ( + radialModel, + SinclairJackson, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModels::SinclairJackson::SinclairJackson +( + const dictionary& dict +) +: + radialModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModels::SinclairJackson::~SinclairJackson() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::radialModels::SinclairJackson::g0 +( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + return 1.0/(1.0 - cbrt(min(alpha, alphaMinFriction)/alphaMax)); +} + + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::radialModels::SinclairJackson::g0prime +( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax +) const +{ + volScalarField aByaMax + ( + cbrt(min(max(alpha, scalar(1e-3)), alphaMinFriction)/alphaMax) + ); + + return (1.0/(3*alphaMax))/sqr(aByaMax - sqr(aByaMax)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H new file mode 100644 index 0000000000000000000000000000000000000000..37545343a9c99f8eb4613def6e075e45c6a276be --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::SinclairJackson + +Description + +SourceFiles + SinclairJacksonRadial.C + +\*---------------------------------------------------------------------------*/ + +#ifndef SinclairJackson_H +#define SinclairJackson_H + +#include "radialModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace radialModels +{ + +/*---------------------------------------------------------------------------*\ + Class SinclairJackson Declaration +\*---------------------------------------------------------------------------*/ + +class SinclairJackson +: + public radialModel +{ + +public: + + //- Runtime type information + TypeName("SinclairJackson"); + + + // Constructors + + //- Construct from components + SinclairJackson(const dictionary& dict); + + + //- Destructor + virtual ~SinclairJackson(); + + + // Member Functions + + tmp<volScalarField> g0 + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; + + tmp<volScalarField> g0prime + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace radialModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C new file mode 100644 index 0000000000000000000000000000000000000000..65f6c9ebb83c109055334cd0184beaa751fc143c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "radialModel.H" + +// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::kineticTheoryModels::radialModel> +Foam::kineticTheoryModels::radialModel::New +( + const dictionary& dict +) +{ + word radialModelType(dict.lookup("radialModel")); + + Info<< "Selecting radialModel " + << radialModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(radialModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalError + << "radialModel::New(const dictionary&) : " << endl + << " unknown radialModelType type " + << radialModelType + << ", constructor not in hash table" << endl << endl + << " Valid radialModelType types are :" << endl; + Info<< dictionaryConstructorTablePtr_->sortedToc() + << abort(FatalError); + } + + return autoPtr<radialModel>(cstrIter()(dict)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C new file mode 100644 index 0000000000000000000000000000000000000000..821e9e6ec72973d10d2663908d69321bb6e8f71b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "radialModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + defineTypeNameAndDebug(radialModel, 0); + + defineRunTimeSelectionTable(radialModel, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModel::radialModel +( + const dictionary& dict +) +: + dict_(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::radialModel::~radialModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H new file mode 100644 index 0000000000000000000000000000000000000000..de73a227474e37d1a414459b0c74ed1b7eaf823d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H @@ -0,0 +1,139 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::radialModel + +SourceFiles + radialModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef radialModel_H +#define radialModel_H + +#include "dictionary.H" +#include "volFields.H" +#include "dimensionedTypes.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + +/*---------------------------------------------------------------------------*\ + Class radialModel Declaration +\*---------------------------------------------------------------------------*/ + +class radialModel +{ + // Private member functions + + //- Disallow default bitwise copy construct + radialModel(const radialModel&); + + //- Disallow default bitwise assignment + void operator=(const radialModel&); + + +protected: + + // Protected data + + const dictionary& dict_; + + +public: + + //- Runtime type information + TypeName("radialModel"); + + // Declare runtime constructor selection table + declareRunTimeSelectionTable + ( + autoPtr, + radialModel, + dictionary, + ( + const dictionary& dict + ), + (dict) + ); + + + // Constructors + + //- Construct from components + radialModel(const dictionary& dict); + + + // Selectors + + static autoPtr<radialModel> New + ( + const dictionary& dict + ); + + + //- Destructor + virtual ~radialModel(); + + + // Member Functions + + //- Radial distribution function + virtual tmp<volScalarField> g0 + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const = 0; + + //- Derivative of the radial distribution function + virtual tmp<volScalarField> g0prime + ( + const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, + const dimensionedScalar& alphaMax + ) const = 0; + + virtual bool read() + { + return true; + } +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C new file mode 100644 index 0000000000000000000000000000000000000000..98cf0c90efb92ad4e956cb3295b75239e8d74436 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C @@ -0,0 +1,87 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "GidaspowViscosity.H" +#include "mathematicalConstants.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace viscosityModels +{ + defineTypeNameAndDebug(Gidaspow, 0); + addToRunTimeSelectionTable(viscosityModel, Gidaspow, dictionary); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModels::Gidaspow::Gidaspow +( + const dictionary& dict +) +: + viscosityModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModels::Gidaspow::~Gidaspow() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::viscosityModels::Gidaspow::nu +( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e +) const +{ + const scalar sqrtPi = sqrt(constant::mathematical::pi); + + return da*sqrt(Theta)* + ( + (4.0/5.0)*sqr(alpha1)*g0*(1.0 + e)/sqrtPi + + (1.0/15.0)*sqrtPi*g0*(1.0 + e)*sqr(alpha1) + + (1.0/6.0)*sqrtPi*alpha1 + + (10.0/96.0)*sqrtPi/((1.0 + e)*g0) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H new file mode 100644 index 0000000000000000000000000000000000000000..e309ed988a1a0a8523b0cde1ee695e7b94eb0c7e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::viscosityModels::Gidaspow + +Description + +SourceFiles + GidaspowViscosity.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Gidaspow_H +#define Gidaspow_H + +#include "viscosityModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace viscosityModels +{ + +/*---------------------------------------------------------------------------*\ + Class Gidaspow Declaration +\*---------------------------------------------------------------------------*/ + +class Gidaspow +: + public viscosityModel +{ + +public: + + //- Runtime type information + TypeName("Gidaspow"); + + // Constructors + + //- Construct from components + Gidaspow(const dictionary& dict); + + + //- Destructor + virtual ~Gidaspow(); + + + // Member functions + + tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace viscosityModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C new file mode 100644 index 0000000000000000000000000000000000000000..bd95013d0ab95bacab95b8909343cba6e59fef42 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C @@ -0,0 +1,111 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "HrenyaSinclairViscosity.H" +#include "mathematicalConstants.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace viscosityModels +{ + defineTypeNameAndDebug(HrenyaSinclair, 0); + + addToRunTimeSelectionTable + ( + viscosityModel, + HrenyaSinclair, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::HrenyaSinclair +( + const dictionary& dict +) +: + viscosityModel(dict), + coeffDict_(dict.subDict(typeName + "Coeffs")), + L_("L", dimensionSet(0, 1, 0, 0, 0), coeffDict_.lookup("L")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::~HrenyaSinclair() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::nu +( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e +) const +{ + const scalar sqrtPi = sqrt(constant::mathematical::pi); + + volScalarField lamda + ( + scalar(1) + da/(6.0*sqrt(2.0)*(alpha1 + scalar(1.0e-5)))/L_ + ); + + return da*sqrt(Theta)* + ( + (4.0/5.0)*sqr(alpha1)*g0*(1.0 + e)/sqrtPi + + (1.0/15.0)*sqrtPi*g0*(1.0 + e)*(3.0*e - 1)*sqr(alpha1)/(3.0-e) + + (1.0/6.0)*sqrtPi*alpha1*(0.5*lamda + 0.25*(3.0*e - 1.0)) + /(0.5*(3.0 - e)*lamda) + + (10/96.0)*sqrtPi/((1.0 + e)*0.5*(3.0 - e)*g0*lamda) + ); +} + + +bool Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::read() +{ + coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + + L_.readIfPresent(coeffDict_); + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H new file mode 100644 index 0000000000000000000000000000000000000000..0a280ba3699a8923b34ce258253fd07ad059f11e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H @@ -0,0 +1,106 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair + +Description + +SourceFiles + HrenyaSinclairViscosity.C + +\*---------------------------------------------------------------------------*/ + +#ifndef HrenyaSinclair_H +#define HrenyaSinclair_H + +#include "viscosityModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace viscosityModels +{ + +/*---------------------------------------------------------------------------*\ + Class HrenyaSinclair Declaration +\*---------------------------------------------------------------------------*/ + +class HrenyaSinclair +: + public viscosityModel +{ + // Private data + + dictionary coeffDict_; + + //- Characteristic length of geometry + dimensionedScalar L_; + + +public: + + //- Runtime type information + TypeName("HrenyaSinclair"); + + + // Constructors + + //- Construct from components + HrenyaSinclair(const dictionary& dict); + + + //- Destructor + virtual ~HrenyaSinclair(); + + + // Member functions + + tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const; + + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace viscosityModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C new file mode 100644 index 0000000000000000000000000000000000000000..215d3608164e50552e7c3c1e759b48882ede0694 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C @@ -0,0 +1,86 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "SyamlalViscosity.H" +#include "mathematicalConstants.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace viscosityModels +{ + defineTypeNameAndDebug(Syamlal, 0); + addToRunTimeSelectionTable(viscosityModel, Syamlal, dictionary); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModels::Syamlal::Syamlal +( + const dictionary& dict +) +: + viscosityModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModels::Syamlal::~Syamlal() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::kineticTheoryModels::viscosityModels::Syamlal::nu +( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e +) const +{ + const scalar sqrtPi = sqrt(constant::mathematical::pi); + + return da*sqrt(Theta)* + ( + (4.0/5.0)*sqr(alpha1)*g0*(1.0 + e)/sqrtPi + + (1.0/15.0)*sqrtPi*g0*(1.0 + e)*(3.0*e - 1.0)*sqr(alpha1)/(3.0 - e) + + (1.0/6.0)*alpha1*sqrtPi/(3.0 - e) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H new file mode 100644 index 0000000000000000000000000000000000000000..844bf21b0da66edaff1bf8914fbdad89ca322273 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::kineticTheoryModels::viscosityModels::Syamlal + +Description + +SourceFiles + SyamlalViscosity.C + +\*---------------------------------------------------------------------------*/ + +#ifndef Syamlal_H +#define Syamlal_H + +#include "viscosityModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ +namespace viscosityModels +{ + +/*---------------------------------------------------------------------------*\ + Class Syamlal Declaration +\*---------------------------------------------------------------------------*/ + +class Syamlal +: + public viscosityModel +{ + +public: + + //- Runtime type information + TypeName("Syamlal"); + + + // Constructors + + //- Construct from components + Syamlal(const dictionary& dict); + + + //- Destructor + virtual ~Syamlal(); + + + // Member functions + + tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace viscosityModels +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C new file mode 100644 index 0000000000000000000000000000000000000000..4b3c97d69a4274f15b29c2465c7b02826d1cf033 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C @@ -0,0 +1,75 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "noneViscosity.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + defineTypeNameAndDebug(noneViscosity, 0); + addToRunTimeSelectionTable(viscosityModel, noneViscosity, dictionary); +} +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::noneViscosity::noneViscosity(const dictionary& dict) +: + viscosityModel(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::noneViscosity::~noneViscosity() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::kineticTheoryModels::noneViscosity::nu +( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e +) const +{ + return dimensionedScalar + ( + "0", + dimensionSet(0, 2, -1, 0, 0, 0, 0), + 0.0 + )*alpha1; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H new file mode 100644 index 0000000000000000000000000000000000000000..f5d74f0e96561578219bcb6070134547fc1bba57 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H @@ -0,0 +1,94 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::noneViscosity + +Description + +SourceFiles + noneViscosity.C + +\*---------------------------------------------------------------------------*/ + +#ifndef noneViscosity_H +#define noneViscosity_H + +#include "viscosityModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + +/*---------------------------------------------------------------------------*\ + Class noneViscosity Declaration +\*---------------------------------------------------------------------------*/ + +class noneViscosity +: + public viscosityModel +{ + +public: + + //- Runtime type information + TypeName("none"); + + + // Constructors + + //- Construct from components + noneViscosity(const dictionary& dict); + + + //- Destructor + virtual ~noneViscosity(); + + + // Member functions + + tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C new file mode 100644 index 0000000000000000000000000000000000000000..e79cbde0c17848e9969143745a3aebb51457b7e3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "viscosityModel.H" + +// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::kineticTheoryModels::viscosityModel> +Foam::kineticTheoryModels::viscosityModel::New +( + const dictionary& dict +) +{ + word viscosityModelType(dict.lookup("viscosityModel")); + + Info<< "Selecting viscosityModel " + << viscosityModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(viscosityModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalError + << "viscosityModel::New(const dictionary&) : " << endl + << " unknown viscosityModelType type " + << viscosityModelType + << ", constructor not in hash table" << endl << endl + << " Valid viscosityModelType types are :" << endl; + Info<< dictionaryConstructorTablePtr_->sortedToc() << abort(FatalError); + } + + return autoPtr<viscosityModel>(cstrIter()(dict)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C new file mode 100644 index 0000000000000000000000000000000000000000..dae23e2b31023febb26d6d143c178d8bd0aa7d8c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C @@ -0,0 +1,57 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "viscosityModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + defineTypeNameAndDebug(viscosityModel, 0); + defineRunTimeSelectionTable(viscosityModel, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModel::viscosityModel +( + const dictionary& dict +) +: + dict_(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModels::viscosityModel::~viscosityModel() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H new file mode 100644 index 0000000000000000000000000000000000000000..e0bc93cc79617a8cdf01a12b4de3ba7c57d222e9 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H @@ -0,0 +1,135 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::viscosityModel + +Description + +SourceFiles + viscosityModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef viscosityModel_H +#define viscosityModel_H + +#include "dictionary.H" +#include "volFields.H" +#include "dimensionedTypes.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace kineticTheoryModels +{ + +/*---------------------------------------------------------------------------*\ + Class viscosityModel Declaration +\*---------------------------------------------------------------------------*/ + +class viscosityModel +{ + // Private member functions + + //- Disallow default bitwise copy construct + viscosityModel(const viscosityModel&); + + //- Disallow default bitwise assignment + void operator=(const viscosityModel&); + + +protected: + + // Protected data + + const dictionary& dict_; + + +public: + + //- Runtime type information + TypeName("viscosityModel"); + + // Declare runtime constructor selection table + declareRunTimeSelectionTable + ( + autoPtr, + viscosityModel, + dictionary, + ( + const dictionary& dict + ), + (dict) + ); + + + // Constructors + + //- Construct from components + viscosityModel(const dictionary& dict); + + + // Selectors + + static autoPtr<viscosityModel> New + ( + const dictionary& dict + ); + + + //- Destructor + virtual ~viscosityModel(); + + + // Member Functions + + virtual tmp<volScalarField> nu + ( + const volScalarField& alpha1, + const volScalarField& Theta, + const volScalarField& g0, + const volScalarField& rho1, + const volScalarField& da, + const dimensionedScalar& e + ) const = 0; + + virtual bool read() + { + return true; + } +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace kineticTheoryModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C new file mode 100644 index 0000000000000000000000000000000000000000..65d857d9c842f58f147769165d86a13685ddcfc2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phaseCompressibleTurbulenceModels.C @@ -0,0 +1,94 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "PhaseCompressibleTurbulenceModel.H" +#include "phaseModel.H" +#include "twoPhaseSystem.H" +#include "addToRunTimeSelectionTable.H" +#include "makeTurbulenceModel.H" + +#include "laminar.H" +#include "RASModel.H" +#include "LESModel.H" + +makeBaseTurbulenceModel +( + volScalarField, + volScalarField, + compressibleTurbulenceModel, + PhaseCompressibleTurbulenceModel, + phaseModel +); + +#define makeRASModel(Type) \ + makeTemplatedTurbulenceModel \ + (phaseModelPhaseCompressibleTurbulenceModel, RAS, Type) + +#define makeLESModel(Type) \ + makeTemplatedTurbulenceModel \ + (phaseModelPhaseCompressibleTurbulenceModel, LES, Type) + +#include "kEpsilon.H" +makeRASModel(kEpsilon); + +#include "kOmegaSST.H" +makeRASModel(kOmegaSST); + +#include "kOmegaSSTSato.H" +makeRASModel(kOmegaSSTSato); + +#include "mixtureKEpsilon.H" +makeRASModel(mixtureKEpsilon); + +#include "LaheyKEpsilon.H" +makeRASModel(LaheyKEpsilon); + +#include "continuousGasKEpsilon.H" +makeRASModel(continuousGasKEpsilon); + +#include "Smagorinsky.H" +makeLESModel(Smagorinsky); + +#include "kEqn.H" +makeLESModel(kEqn); + +#include "SmagorinskyZhang.H" +makeLESModel(SmagorinskyZhang); + +#include "NicenoKEqn.H" +makeLESModel(NicenoKEqn); + +#include "continuousGasKEqn.H" +makeLESModel(continuousGasKEqn); + +#include "kineticTheoryModel.H" +makeTurbulenceModel +(phaseModelPhaseCompressibleTurbulenceModel, RAS, kineticTheoryModel); + +#include "phasePressureModel.H" +makeTurbulenceModel +(phaseModelPhaseCompressibleTurbulenceModel, RAS, phasePressureModel); + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C new file mode 100644 index 0000000000000000000000000000000000000000..8cca6f493f098cf93b841a128ff96286df2dbb46 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C @@ -0,0 +1,254 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "phasePressureModel.H" +#include "twoPhaseSystem.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::RASModels::phasePressureModel::phasePressureModel +( + const volScalarField& alpha, + const volScalarField& rho, + const volVectorField& U, + const surfaceScalarField& alphaRhoPhi, + const surfaceScalarField& phi, + const transportModel& phase, + const word& propertiesName, + const word& type +) +: + eddyViscosity<RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > > + ( + type, + alpha, + rho, + U, + alphaRhoPhi, + phi, + phase, + propertiesName + ), + + phase_(phase), + + alphaMax_(readScalar(coeffDict_.lookup("alphaMax"))), + preAlphaExp_(readScalar(coeffDict_.lookup("preAlphaExp"))), + expMax_(readScalar(coeffDict_.lookup("expMax"))), + g0_ + ( + "g0", + dimensionSet(1, -1, -2, 0, 0), + coeffDict_.lookup("g0") + ) +{ + nut_ == dimensionedScalar("zero", nut_.dimensions(), 0.0); + + if (type == typeName) + { + printCoeffs(type); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::RASModels::phasePressureModel::~phasePressureModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +bool Foam::RASModels::phasePressureModel::read() +{ + if + ( + eddyViscosity + < + RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > + >::read() + ) + { + coeffDict().lookup("alphaMax") >> alphaMax_; + coeffDict().lookup("preAlphaExp") >> preAlphaExp_; + coeffDict().lookup("expMax") >> expMax_; + g0_.readIfPresent(coeffDict()); + + return true; + } + else + { + return false; + } +} + + +Foam::tmp<Foam::volScalarField> +Foam::RASModels::phasePressureModel::k() const +{ + notImplemented("phasePressureModel::k()"); + return nut_; +} + + +Foam::tmp<Foam::volScalarField> +Foam::RASModels::phasePressureModel::epsilon() const +{ + notImplemented("phasePressureModel::epsilon()"); + return nut_; +} + + +Foam::tmp<Foam::volSymmTensorField> +Foam::RASModels::phasePressureModel::R() const +{ + return tmp<volSymmTensorField> + ( + new volSymmTensorField + ( + IOobject + ( + IOobject::groupName("R", U_.group()), + runTime_.timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh_, + dimensioned<symmTensor> + ( + "R", + dimensionSet(0, 2, -2, 0, 0), + symmTensor::zero + ) + ) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::RASModels::phasePressureModel::pPrime() const +{ + tmp<volScalarField> tpPrime + ( + g0_ + *min + ( + exp(preAlphaExp_*(alpha_ - alphaMax_)), + expMax_ + ) + ); + + volScalarField::GeometricBoundaryField& bpPrime = tpPrime().boundaryField(); + + forAll(bpPrime, patchi) + { + if (!bpPrime[patchi].coupled()) + { + bpPrime[patchi] == 0; + } + } + + return tpPrime; +} + + +Foam::tmp<Foam::surfaceScalarField> +Foam::RASModels::phasePressureModel::pPrimef() const +{ + tmp<surfaceScalarField> tpPrime + ( + g0_ + *min + ( + exp(preAlphaExp_*(fvc::interpolate(alpha_) - alphaMax_)), + expMax_ + ) + ); + + surfaceScalarField::GeometricBoundaryField& bpPrime = + tpPrime().boundaryField(); + + forAll(bpPrime, patchi) + { + if (!bpPrime[patchi].coupled()) + { + bpPrime[patchi] == 0; + } + } + + return tpPrime; +} + + +Foam::tmp<Foam::volSymmTensorField> +Foam::RASModels::phasePressureModel::devRhoReff() const +{ + return tmp<volSymmTensorField> + ( + new volSymmTensorField + ( + IOobject + ( + IOobject::groupName("devRhoReff", U_.group()), + runTime_.timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh_, + dimensioned<symmTensor> + ( + "R", + rho_.dimensions()*dimensionSet(0, 2, -2, 0, 0), + symmTensor::zero + ) + ) + ); +} + + +Foam::tmp<Foam::fvVectorMatrix> +Foam::RASModels::phasePressureModel::divDevRhoReff +( + volVectorField& U +) const +{ + return tmp<fvVectorMatrix> + ( + new fvVectorMatrix + ( + U, + rho_.dimensions()*dimensionSet(0, 4, -2, 0, 0) + ) + ); +} + + +void Foam::RASModels::phasePressureModel::correct() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H new file mode 100644 index 0000000000000000000000000000000000000000..a2b17dc1c7660edd7cd938faa83167d8d8b79fa2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseCompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H @@ -0,0 +1,191 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::phasePressureModel + +Description + Particle-particle phase-pressure RAS model + + The derivative of the phase-pressure with respect to the phase-fraction + is evaluated as + + g0*min(exp(preAlphaExp*(alpha - alphaMax)), expMax) + + The default model coefficients correspond to the following: + \verbatim + phasePressureCoeffs + { + preAlphaExp 500; + expMax 1000; + alphaMax 0.62; + g0 1000; + } + \endverbatim + +SourceFiles + phasePressureModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef phasePressureModel_H +#define phasePressureModel_H + +#include "RASModel.H" +#include "eddyViscosity.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace RASModels +{ + +/*---------------------------------------------------------------------------*\ + Class phasePressureModel Declaration +\*---------------------------------------------------------------------------*/ + +class phasePressureModel +: + public eddyViscosity + < + RASModel<PhaseCompressibleTurbulenceModel<phaseModel> > + > +{ + // Private data + + // Input Fields + + const phaseModel& phase_; + + + // Kinetic Theory Model coefficients + + //- Maximum packing phase-fraction + scalar alphaMax_; + + //- Pre-exponential factor + scalar preAlphaExp_; + + //- Maximum limit of the exponential + scalar expMax_; + + //- g0 + dimensionedScalar g0_; + + + // Private Member Functions + + void correctNut() + {} + + //- Disallow default bitwise copy construct + phasePressureModel(const phasePressureModel&); + + //- Disallow default bitwise assignment + void operator=(const phasePressureModel&); + + +public: + + //- Runtime type information + TypeName("phasePressure"); + + + // Constructors + + //- Construct from components + phasePressureModel + ( + const volScalarField& alpha, + const volScalarField& rho, + const volVectorField& U, + const surfaceScalarField& alphaRhoPhi, + const surfaceScalarField& phi, + const phaseModel& transport, + const word& propertiesName = turbulenceModel::propertiesName, + const word& type = typeName + ); + + + //- Destructor + virtual ~phasePressureModel(); + + + // Member Functions + + //- Re-read model coefficients if they have changed + virtual bool read(); + + //- Return the effective viscosity + virtual tmp<volScalarField> nuEff() const + { + return this->nut(); + } + + //- Return the effective viscosity on patch + virtual tmp<scalarField> nuEff(const label patchi) const + { + return this->nut(patchi); + } + + //- Return the turbulence kinetic energy + virtual tmp<volScalarField> k() const; + + //- Return the turbulence kinetic energy dissipation rate + virtual tmp<volScalarField> epsilon() const; + + //- Return the Reynolds stress tensor + virtual tmp<volSymmTensorField> R() const; + + //- Return the phase-pressure' + // (derivative of phase-pressure w.r.t. phase-fraction) + virtual tmp<volScalarField> pPrime() const; + + //- Return the face-phase-pressure' + // (derivative of phase-pressure w.r.t. phase-fraction) + virtual tmp<surfaceScalarField> pPrimef() const; + + //- Return the effective stress tensor + virtual tmp<volSymmTensorField> devRhoReff() const; + + //- Return the source term for the momentum equation + virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const; + + //- Solve the kinetic theory equations and correct the viscosity + virtual void correct(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace RASModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C new file mode 100644 index 0000000000000000000000000000000000000000..da6c62ade5912aa6ac5c89fc4e2eb73722f9778b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.C @@ -0,0 +1,485 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "BlendedInterfacialModel.H" +#include "fixedValueFvsPatchFields.H" +#include "surfaceInterpolate.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template<class ModelType> +template<class GeometricField> +void Foam::BlendedInterfacialModel<ModelType>::correctFixedFluxBCs +( + GeometricField& field +) const +{ + forAll(phase1_.phi()->boundaryField(), patchI) + { + if + ( + isA<fixedValueFvsPatchScalarField> + ( + phase1_.phi()->boundaryField()[patchI] + ) + ) + { + field.boundaryField()[patchI] + = pTraits<typename GeometricField::value_type>::zero; + } + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class ModelType> +Foam::BlendedInterfacialModel<ModelType>::BlendedInterfacialModel +( + const phaseModel& phase1, + const phaseModel& phase2, + const blendingMethod& blending, + autoPtr<ModelType> model, + autoPtr<ModelType> model1In2, + autoPtr<ModelType> model2In1, + const bool correctFixedFluxBCs +) +: + phase1_(phase1), + phase2_(phase2), + blending_(blending), + model_(model), + model1In2_(model1In2), + model2In1_(model2In1), + correctFixedFluxBCs_(correctFixedFluxBCs) +{} + + +template<class ModelType> +Foam::BlendedInterfacialModel<ModelType>::BlendedInterfacialModel +( + const phasePair::dictTable& modelTable, + const blendingMethod& blending, + const phasePair& pair, + const orderedPhasePair& pair1In2, + const orderedPhasePair& pair2In1, + const bool correctFixedFluxBCs +) +: + phase1_(pair.phase1()), + phase2_(pair.phase2()), + blending_(blending), + correctFixedFluxBCs_(correctFixedFluxBCs) +{ + if (modelTable.found(pair)) + { + model_.set + ( + ModelType::New + ( + modelTable[pair], + pair + ).ptr() + ); + } + + if (modelTable.found(pair1In2)) + { + model1In2_.set + ( + ModelType::New + ( + modelTable[pair1In2], + pair1In2 + ).ptr() + ); + } + + if (modelTable.found(pair2In1)) + { + model2In1_.set + ( + ModelType::New + ( + modelTable[pair2In1], + pair2In1 + ).ptr() + ); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class ModelType> +Foam::BlendedInterfacialModel<ModelType>::~BlendedInterfacialModel() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class ModelType> +bool Foam::BlendedInterfacialModel<ModelType>::hasModel +( + const class phaseModel& phase +) const +{ + return + &phase == &(phase1_) + ? model1In2_.valid() + : model2In1_.valid(); +} + + +template<class ModelType> +const ModelType& Foam::BlendedInterfacialModel<ModelType>::model +( + const class phaseModel& phase +) const +{ + return &phase == &(phase1_) ? model1In2_ : model2In1_; +} + + +template<class ModelType> +Foam::tmp<Foam::volScalarField> +Foam::BlendedInterfacialModel<ModelType>::K() const +{ + tmp<volScalarField> f1, f2; + + if (model_.valid() || model1In2_.valid()) + { + f1 = blending_.f1(phase1_, phase2_); + } + + if (model_.valid() || model2In1_.valid()) + { + f2 = blending_.f2(phase1_, phase2_); + } + + tmp<volScalarField> x + ( + new volScalarField + ( + IOobject + ( + ModelType::typeName + ":K", + phase1_.mesh().time().timeName(), + phase1_.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + phase1_.mesh(), + dimensionedScalar("zero", ModelType::dimK, 0) + ) + ); + + if (model_.valid()) + { + x() += model_->K()*(scalar(1) - f1() - f2()); + } + if (model1In2_.valid()) + { + x() += model1In2_->K()*f1; + } + if (model2In1_.valid()) + { + x() += model2In1_->K()*f2; + } + + if + ( + correctFixedFluxBCs_ + && (model_.valid() || model1In2_.valid() || model2In1_.valid()) + ) + { + correctFixedFluxBCs(x()); + } + + return x; +} + + +template<class ModelType> +Foam::tmp<Foam::surfaceScalarField> +Foam::BlendedInterfacialModel<ModelType>::Kf() const +{ + tmp<surfaceScalarField> f1, f2; + + if (model_.valid() || model1In2_.valid()) + { + f1 = fvc::interpolate + ( + blending_.f1(phase1_, phase2_) + ); + } + + if (model_.valid() || model2In1_.valid()) + { + f2 = fvc::interpolate + ( + blending_.f2(phase1_, phase2_) + ); + } + + tmp<surfaceScalarField> x + ( + new surfaceScalarField + ( + IOobject + ( + ModelType::typeName + ":Kf", + phase1_.mesh().time().timeName(), + phase1_.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + phase1_.mesh(), + dimensionedScalar("zero", ModelType::dimK, 0) + ) + ); + + if (model_.valid()) + { + x() += model_->Kf()*(scalar(1) - f1() - f2()); + } + + if (model1In2_.valid()) + { + x() += model1In2_->Kf()*f1; + } + + if (model2In1_.valid()) + { + x() += model2In1_->Kf()*f2; + } + + if + ( + correctFixedFluxBCs_ + && (model_.valid() || model1In2_.valid() || model2In1_.valid()) + ) + { + correctFixedFluxBCs(x()); + } + + return x; +} + + +template<class ModelType> +template<class Type> +Foam::tmp<Foam::GeometricField<Type, Foam::fvPatchField, Foam::volMesh> > +Foam::BlendedInterfacialModel<ModelType>::F() const +{ + tmp<volScalarField> f1, f2; + + if (model_.valid() || model1In2_.valid()) + { + f1 = blending_.f1(phase1_, phase2_); + } + + if (model_.valid() || model2In1_.valid()) + { + f2 = blending_.f2(phase1_, phase2_); + } + + tmp<GeometricField<Type, fvPatchField, volMesh> > x + ( + new GeometricField<Type, fvPatchField, volMesh> + ( + IOobject + ( + ModelType::typeName + ":F", + phase1_.mesh().time().timeName(), + phase1_.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + phase1_.mesh(), + dimensioned<Type>("zero", ModelType::dimF, pTraits<Type>::zero) + ) + ); + + if (model_.valid()) + { + x() += model_->F()*(scalar(1) - f1() - f2()); + } + + if (model1In2_.valid()) + { + x() += model1In2_->F()*f1; + } + + if (model2In1_.valid()) + { + x() -= model2In1_->F()*f2; // note : subtraction + } + + if + ( + correctFixedFluxBCs_ + && (model_.valid() || model1In2_.valid() || model2In1_.valid()) + ) + { + correctFixedFluxBCs(x()); + } + + return x; +} + + +template<class ModelType> +Foam::tmp<Foam::surfaceScalarField> +Foam::BlendedInterfacialModel<ModelType>::Ff() const +{ + tmp<surfaceScalarField> f1, f2; + + if (model_.valid() || model1In2_.valid()) + { + f1 = fvc::interpolate + ( + blending_.f1(phase1_, phase2_) + ); + } + + if (model_.valid() || model2In1_.valid()) + { + f2 = fvc::interpolate + ( + blending_.f2(phase1_, phase2_) + ); + } + + tmp<surfaceScalarField> x + ( + new surfaceScalarField + ( + IOobject + ( + ModelType::typeName + ":Ff", + phase1_.mesh().time().timeName(), + phase1_.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + phase1_.mesh(), + dimensionedScalar("zero", ModelType::dimF*dimArea, 0) + ) + ); + + if (model_.valid()) + { + x() += model_->Ff()*(scalar(1) - f1() - f2()); + } + + if (model1In2_.valid()) + { + x() += model1In2_->Ff()*f1; + } + + if (model2In1_.valid()) + { + x() -= model2In1_->Ff()*f2; // note : subtraction + } + + if + ( + correctFixedFluxBCs_ + && (model_.valid() || model1In2_.valid() || model2In1_.valid()) + ) + { + correctFixedFluxBCs(x()); + } + + return x; +} + + +template<class ModelType> +Foam::tmp<Foam::volScalarField> +Foam::BlendedInterfacialModel<ModelType>::D() const +{ + tmp<volScalarField> f1, f2; + + if (model_.valid() || model1In2_.valid()) + { + f1 = blending_.f1(phase1_, phase2_); + } + + if (model_.valid() || model2In1_.valid()) + { + f2 = blending_.f2(phase1_, phase2_); + } + + tmp<volScalarField> x + ( + new volScalarField + ( + IOobject + ( + ModelType::typeName + ":D", + phase1_.mesh().time().timeName(), + phase1_.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + phase1_.mesh(), + dimensionedScalar("zero", ModelType::dimD, 0) + ) + ); + + if (model_.valid()) + { + x() += model_->D()*(scalar(1) - f1() - f2()); + } + if (model1In2_.valid()) + { + x() += model1In2_->D()*f1; + } + if (model2In1_.valid()) + { + x() += model2In1_->D()*f2; + } + + if + ( + correctFixedFluxBCs_ + && (model_.valid() || model1In2_.valid() || model2In1_.valid()) + ) + { + correctFixedFluxBCs(x()); + } + + return x; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H new file mode 100644 index 0000000000000000000000000000000000000000..bd2ec60235624af8b37d191120ab2a0278e5863b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/BlendedInterfacialModel.H @@ -0,0 +1,168 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::BlendedInterfacialModel + +Description + +SourceFiles + BlendedInterfacialModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef BlendedInterfacialModel_H +#define BlendedInterfacialModel_H + +#include "blendingMethod.H" +#include "phasePair.H" +#include "orderedPhasePair.H" + +#include "geometricZeroField.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class BlendedInterfacialModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class ModelType> +class BlendedInterfacialModel +{ + // Private data + + //- Reference to phase 1 + const phaseModel& phase1_; + + //- Reference to phase 2 + const phaseModel& phase2_; + + //- Blending model + const blendingMethod& blending_; + + //- Model for region with no obvious dispersed phase + autoPtr<ModelType> model_; + + //- Model for dispersed phase 1 in continuous phase 2 + autoPtr<ModelType> model1In2_; + + //- Model for dispersed phase 2 in continuous phase 1 + autoPtr<ModelType> model2In1_; + + //- If true set coefficients and forces to 0 at fixed-flux BCs + bool correctFixedFluxBCs_; + + + // Private Member Functions + + //- Disallow default bitwise copy construct + BlendedInterfacialModel(const BlendedInterfacialModel<ModelType>&); + + //- Disallow default bitwise assignment + void operator=(const BlendedInterfacialModel<ModelType>&); + + //- Correct coeff/value on fixed flux boundary conditions + template<class GeometricField> + void correctFixedFluxBCs(GeometricField& field) const; + + +public: + + // Constructors + + //- Construct from two phases, blending method and three models + BlendedInterfacialModel + ( + const phaseModel& phase1, + const phaseModel& phase2, + const blendingMethod& blending, + autoPtr<ModelType> model, + autoPtr<ModelType> model1In2, + autoPtr<ModelType> model2In1, + const bool correctFixedFluxBCs = true + ); + + + //- Construct from the model table, dictionary and pairs + BlendedInterfacialModel + ( + const phasePair::dictTable& modelTable, + const blendingMethod& blending, + const phasePair& pair, + const orderedPhasePair& pair1In2, + const orderedPhasePair& pair2In1, + const bool correctFixedFluxBCs = true + ); + + + //- Destructor + ~BlendedInterfacialModel(); + + + // Member Functions + + //- Return true if a model is specified for the supplied phase + bool hasModel(const phaseModel& phase) const; + + //- Return the model for the supplied phase + const ModelType& model(const phaseModel& phase) const; + + //- Return the sign of the explicit value for the supplied phase + scalar sign(const phaseModel& phase) const; + + //- Return the blended force coefficient + tmp<volScalarField> K() const; + + //- Return the face blended force coefficient + tmp<surfaceScalarField> Kf() const; + + //- Return the blended force + template<class Type> + tmp<GeometricField<Type, fvPatchField, volMesh> > F() const; + + //- Return the face blended force + tmp<surfaceScalarField> Ff() const; + + //- Return the blended diffusivity + tmp<volScalarField> D() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "BlendedInterfacialModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C new file mode 100644 index 0000000000000000000000000000000000000000..ed0745b7840fc9db52e12d2da23e6d5d63ff7b61 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C @@ -0,0 +1,52 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "blendingMethod.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(blendingMethod, 0); + defineRunTimeSelectionTable(blendingMethod, dictionary); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::blendingMethod::blendingMethod +( + const dictionary& dict +) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::blendingMethod::~blendingMethod() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.H new file mode 100644 index 0000000000000000000000000000000000000000..ec52bd04e6f9fb43226b79597acf7b5d9b6252a7 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.H @@ -0,0 +1,120 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::blendingMethod + +Description + +SourceFiles + blendingMethod.C + +\*---------------------------------------------------------------------------*/ + +#ifndef blendingMethod_H +#define blendingMethod_H + +#include "dictionary.H" +#include "runTimeSelectionTables.H" +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class blendingMethod Declaration +\*---------------------------------------------------------------------------*/ + +class blendingMethod +{ +public: + + //- Runtime type information + TypeName("blendingMethod"); + + + // Declare runtime construction + declareRunTimeSelectionTable + ( + autoPtr, + blendingMethod, + dictionary, + ( + const dictionary& dict, + const wordList& phaseNames + ), + (dict, phaseNames) + ); + + + // Constructors + + //- Construct from a dictionary + blendingMethod + ( + const dictionary& dict + ); + + + // Selector + + static autoPtr<blendingMethod> New + ( + const dictionary& dict, + const wordList& phaseNames + ); + + + //- Destructor + virtual ~blendingMethod(); + + + // Member Functions + + //- Factor for first phase + virtual tmp<volScalarField> f1 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const = 0; + + //- Factor for second phase + virtual tmp<volScalarField> f2 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C new file mode 100644 index 0000000000000000000000000000000000000000..2dcc6d0a5e86c7763dbbb793b385bc7103c33dfb --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "blendingMethod.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::blendingMethod> Foam::blendingMethod::New +( + const dictionary& dict, + const wordList& phaseNames +) +{ + word blendingMethodType(dict.lookup("type")); + + Info<< "Selecting " << dict.dictName() << " blending method: " + << blendingMethodType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(blendingMethodType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("blendingMethod::New") + << "Unknown blendingMethodType type " + << blendingMethodType << endl << endl + << "Valid blendingMethod types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict, phaseNames); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C new file mode 100644 index 0000000000000000000000000000000000000000..664841d08282013a4a31d2f58d03b363da1a823f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C @@ -0,0 +1,124 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "hyperbolic.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace blendingMethods +{ + defineTypeNameAndDebug(hyperbolic, 0); + + addToRunTimeSelectionTable + ( + blendingMethod, + hyperbolic, + dictionary + ); +} +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::blendingMethods::hyperbolic::hyperbolic +( + const dictionary& dict, + const wordList& phaseNames +) +: + blendingMethod(dict), + transitionAlphaScale_ + ( + "transitionAlphaScale", + dimless, + dict.lookup("transitionAlphaScale") + ) +{ + forAllConstIter(wordList, phaseNames, iter) + { + const word name(IOobject::groupName("minContinuousAlpha", *iter)); + + minContinuousAlpha_.insert + ( + *iter, + dimensionedScalar + ( + name, + dimless, + dict.lookup(name) + ) + ); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::blendingMethods::hyperbolic::~hyperbolic() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::blendingMethods::hyperbolic::f1 +( + const phaseModel& phase1, + const phaseModel& phase2 +) const +{ + return + ( + 1 + + tanh + ( + (4/transitionAlphaScale_) + *(phase2 - minContinuousAlpha_[phase2.name()]) + ) + )/2; +} + + +Foam::tmp<Foam::volScalarField> Foam::blendingMethods::hyperbolic::f2 +( + const phaseModel& phase1, + const phaseModel& phase2 +) const +{ + return + ( + 1 + + tanh + ( + (4/transitionAlphaScale_) + *(phase1 - minContinuousAlpha_[phase1.name()]) + ) + )/2; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.H new file mode 100644 index 0000000000000000000000000000000000000000..c6d71c9dca48fb633029a99b0b83677817b06341 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.H @@ -0,0 +1,110 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::hyperbolic + +Description + +SourceFiles + hyperbolic.C + +\*---------------------------------------------------------------------------*/ + +#ifndef hyperbolic_H +#define hyperbolic_H + +#include "blendingMethod.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace blendingMethods +{ + +/*---------------------------------------------------------------------------*\ + Class hyperbolic Declaration +\*---------------------------------------------------------------------------*/ + +class hyperbolic +: + public blendingMethod +{ + // Private data + + //- Minimum fraction of phases which can be considered continuous + HashTable<dimensionedScalar, word, word::hash> minContinuousAlpha_; + + //- Width of the transition + const dimensionedScalar transitionAlphaScale_; + + +public: + + //- Runtime type information + TypeName("hyperbolic"); + + + // Constructors + + //- Construct from a dictionary and a list of phase names + hyperbolic + ( + const dictionary& dict, + const wordList& phaseNames + ); + + + //- Destructor + ~hyperbolic(); + + + // Member Functions + + //- Factor for first phase + virtual tmp<volScalarField> f1 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const; + + //- Factor for second phase + virtual tmp<volScalarField> f2 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace blendingMethods +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.C new file mode 100644 index 0000000000000000000000000000000000000000..d9bfe2b5985405296b0cf0763c0cebaadc8940c9 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.C @@ -0,0 +1,170 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "linear.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace blendingMethods +{ + defineTypeNameAndDebug(linear, 0); + + addToRunTimeSelectionTable + ( + blendingMethod, + linear, + dictionary + ); +} +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::blendingMethods::linear::linear +( + const dictionary& dict, + const wordList& phaseNames +) +: + blendingMethod(dict) +{ + forAllConstIter(wordList, phaseNames, iter) + { + const word nameFull + ( + IOobject::groupName("minFullyContinuousAlpha", *iter) + ); + + minFullyContinuousAlpha_.insert + ( + *iter, + dimensionedScalar + ( + nameFull, + dimless, + dict.lookup(nameFull) + ) + ); + + const word namePart + ( + IOobject::groupName("minPartlyContinuousAlpha", *iter) + ); + + minPartlyContinuousAlpha_.insert + ( + *iter, + dimensionedScalar + ( + namePart, + dimless, + dict.lookup(namePart) + ) + ); + + if + ( + minFullyContinuousAlpha_[*iter] + < minPartlyContinuousAlpha_[*iter] + ) + { + FatalErrorIn + ( + "Foam::blendingMethods::linear::linear" + "(" + "const dictionary& dict," + "const wordList& phaseNames" + ")" + ) << "The supplied fully continuous volume fraction for " + << *iter + << " is less than the partly continuous value." + << endl << exit(FatalError); + } + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::blendingMethods::linear::~linear() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::blendingMethods::linear::f1 +( + const phaseModel& phase1, + const phaseModel& phase2 +) const +{ + const dimensionedScalar + minFullAlpha(minFullyContinuousAlpha_[phase2.name()]); + const dimensionedScalar + minPartAlpha(minPartlyContinuousAlpha_[phase2.name()]); + + return + min + ( + max + ( + (phase2 - minPartAlpha) + /(minFullAlpha - minPartAlpha + SMALL), + scalar(0) + ), + scalar(1) + ); +} + + +Foam::tmp<Foam::volScalarField> Foam::blendingMethods::linear::f2 +( + const phaseModel& phase1, + const phaseModel& phase2 +) const +{ + const dimensionedScalar + minFullAlpha(minFullyContinuousAlpha_[phase1.name()]); + const dimensionedScalar + minPartAlpha(minPartlyContinuousAlpha_[phase1.name()]); + + return + min + ( + max + ( + (phase1 - minPartAlpha) + /(minFullAlpha - minPartAlpha + SMALL), + scalar(0) + ), + scalar(1) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.H new file mode 100644 index 0000000000000000000000000000000000000000..16b22a7bb4869b540c1bb1b56247e67e23382cc6 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/linear/linear.H @@ -0,0 +1,112 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::linear + +Description + +SourceFiles + linear.C + +\*---------------------------------------------------------------------------*/ + +#ifndef linear_H +#define linear_H + +#include "blendingMethod.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace blendingMethods +{ + +/*---------------------------------------------------------------------------*\ + Class linear Declaration +\*---------------------------------------------------------------------------*/ + +class linear +: + public blendingMethod +{ + // Private data + + //- Minimum fraction of phases which can be considered fully continuous + HashTable<dimensionedScalar, word, word::hash> + minFullyContinuousAlpha_; + + //- Minimum fraction of phases which can be considered partly continuous + HashTable<dimensionedScalar, word, word::hash> + minPartlyContinuousAlpha_; + + +public: + + //- Runtime type information + TypeName("linear"); + + + // Constructors + + //- Construct from a dictionary and two phases + linear + ( + const dictionary& dict, + const wordList& phaseNames + ); + + + //- Destructor + ~linear(); + + + // Member Functions + + //- Factor for primary phase + virtual tmp<volScalarField> f1 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const; + + //- Factor for secondary phase + virtual tmp<volScalarField> f2 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace blendingMethods +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C new file mode 100644 index 0000000000000000000000000000000000000000..b07795598d3b4367bbd7108472aae4ad4ca5df19 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C @@ -0,0 +1,129 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "noBlending.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace blendingMethods +{ + defineTypeNameAndDebug(noBlending, 0); + + addToRunTimeSelectionTable + ( + blendingMethod, + noBlending, + dictionary + ); +} +} + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::blendingMethods::noBlending::noBlending +( + const dictionary& dict, + const wordList& phaseNames +) +: + blendingMethod(dict), + continuousPhase_(dict.lookup("continuousPhase")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::blendingMethods::noBlending::~noBlending() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::blendingMethods::noBlending::f1 +( + const phaseModel& phase1, + const phaseModel& phase2 +) const +{ + const fvMesh& mesh(phase1.mesh()); + + return + tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "f", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedScalar + ( + "f", + dimless, + phase2.name() == continuousPhase_ + ) + ) + ); +} + + +Foam::tmp<Foam::volScalarField> Foam::blendingMethods::noBlending::f2 +( + const phaseModel& phase1, + const phaseModel& phase2 +) const +{ + const fvMesh& mesh(phase1.mesh()); + + return + tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "f", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedScalar + ( + "f", + dimless, + phase1.name() == continuousPhase_ + ) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.H new file mode 100644 index 0000000000000000000000000000000000000000..a777caef33860ce11b2d77025c1b316b3fd093e5 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.H @@ -0,0 +1,107 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::noBlending + +Description + +SourceFiles + noBlending.C + +\*---------------------------------------------------------------------------*/ + +#ifndef noBlending_H +#define noBlending_H + +#include "blendingMethod.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace blendingMethods +{ + +/*---------------------------------------------------------------------------*\ + Class noBlending Declaration +\*---------------------------------------------------------------------------*/ + +class noBlending +: + public blendingMethod +{ + // Private data + + //- Name of the continuous phase + const word continuousPhase_; + + +public: + + //- Runtime type information + TypeName("none"); + + + // Constructors + + //- Construct from a dictionary and two phases + noBlending + ( + const dictionary& dict, + const wordList& phaseNames + ); + + + //- Destructor + ~noBlending(); + + + // Member Functions + + //- Factor for primary phase + virtual tmp<volScalarField> f1 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const; + + //- Factor for secondary phase + virtual tmp<volScalarField> f2 + ( + const phaseModel& phase1, + const phaseModel& phase2 + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace blendingMethods +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..538bd7d63712f1a3b809a33767310e28931e5264 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/files @@ -0,0 +1,32 @@ +phaseModel/phaseModel/phaseModel.C +phaseModel/phaseModel/newPhaseModel.C +phaseModel/phaseModel/phaseModels.C + +phasePair/phasePairKey/phasePairKey.C +phasePair/phasePair/phasePair.C +phasePair/orderedPhasePair/orderedPhasePair.C + +phaseSystem/phaseSystem.C + +diameterModels/diameterModel/diameterModel.C +diameterModels/diameterModel/newDiameterModel.C +diameterModels/constantDiameter/constantDiameter.C +diameterModels/isothermalDiameter/isothermalDiameter.C + +diameterModels/IATE/IATE.C +diameterModels/IATE/IATEsources/IATEsource/IATEsource.C +diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C +diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C +diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C + +BlendedInterfacialModel/blendingMethods/blendingMethod/blendingMethod.C +BlendedInterfacialModel/blendingMethods/blendingMethod/newBlendingMethod.C +BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C +BlendedInterfacialModel/blendingMethods/linear/linear.C +BlendedInterfacialModel/blendingMethods/hyperbolic/hyperbolic.C + +twoPhaseSystem/twoPhaseSystem.C +twoPhaseSystem/newTwoPhaseSystem.C +twoPhaseSystem/twoPhaseSystems.C + +LIB = $(FOAM_LIBBIN)/libreactingTwoPhaseSystem diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/options b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..db17065417e84a7c60fa5f7d2e23e1f34db8f3a0 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/Make/options @@ -0,0 +1,18 @@ +EXE_INC = \ + -I../interfacialModels/lnInclude \ + -I../interfacialCompositionModels/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/phaseCompressible/lnInclude \ + -I$(LIB_SRC)/combustionModels/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fvOptions/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude + +LIB_LIBS = \ + -lcombustionModels diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C new file mode 100644 index 0000000000000000000000000000000000000000..f003d92b983455e3c7db3db69e3d39e4c29cddd3 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.C @@ -0,0 +1,571 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "HeatAndMassTransferPhaseSystem.H" + +#include "BlendedInterfacialModel.H" +#include "heatTransferModel.H" +#include "massTransferModel.H" +#include "interfaceCompositionModel.H" + +#include "HashPtrTable.H" + +#include "fvcDiv.H" +#include "fvmSup.H" +#include "fvMatrix.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>:: +HeatAndMassTransferPhaseSystem +( + const fvMesh& mesh +) +: + BasePhaseSystem(mesh) +{ + this->generatePairsAndSubModels + ( + "heatTransfer", + heatTransferModels_ + ); + + this->generatePairsAndSubModels + ( + "massTransfer", + massTransferModels_ + ); + + this->generatePairsAndSubModels + ( + "interfaceComposition", + interfaceCompositionModels_ + ); + + forAllConstIter + ( + phaseSystem::phasePairTable, + this->phasePairs_, + phasePairIter + ) + { + const phasePair& pair(phasePairIter()); + + if (pair.ordered()) + { + continue; + } + + // Initialy assume no mass transfer + + dmdt_.insert + ( + pair, + new volScalarField + ( + IOobject + ( + IOobject::groupName("dmdt", pair.name()), + this->mesh().time().timeName(), + this->mesh(), + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + this->mesh(), + dimensionedScalar("zero", dimDensity/dimTime, 0) + ) + ); + + dmdtExplicit_.insert + ( + pair, + new volScalarField + ( + IOobject + ( + IOobject::groupName("dmdtExplicit", pair.name()), + this->mesh().time().timeName(), + this->mesh() + ), + this->mesh(), + dimensionedScalar("zero", dimDensity/dimTime, 0) + ) + ); + + volScalarField H1(heatTransferModels_[pair][pair.first()]->K()); + volScalarField H2(heatTransferModels_[pair][pair.second()]->K()); + + Tf_.insert + ( + pair, + new volScalarField + ( + IOobject + ( + IOobject::groupName("Tf", pair.name()), + this->mesh().time().timeName(), + this->mesh(), + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + ( + H1*pair.phase1().thermo().T() + + H2*pair.phase2().thermo().T() + ) + /max + ( + H1 + H2, + dimensionedScalar("small", heatTransferModel::dimK, SMALL) + ) + ) + ); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>:: +~HeatAndMassTransferPhaseSystem() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::tmp<Foam::volScalarField> +Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::dmdt +( + const phasePairKey& key +) const +{ + const scalar dmdtSign(Pair<word>::compare(dmdt_.find(key).key(), key)); + + return dmdtSign**dmdt_[key]; +} + + +template<class BasePhaseSystem> +Foam::autoPtr<Foam::phaseSystem::momentumTransferTable> +Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::momentumTransfer +( + IOMRFZoneList& MRF +) const +{ + autoPtr<phaseSystem::momentumTransferTable> + eqnsPtr(BasePhaseSystem::momentumTransfer(MRF)); + + phaseSystem::momentumTransferTable& eqns = eqnsPtr(); + + // Source term due to mass trasfer + forAllConstIter + ( + phaseSystem::phasePairTable, + this->phasePairs_, + phasePairIter + ) + { + const phasePair& pair(phasePairIter()); + + if (pair.ordered()) + { + continue; + } + + const volVectorField& U1(pair.phase1().U()); + const volVectorField& U2(pair.phase2().U()); + + const volScalarField dmdt(this->dmdt(pair)); + const volScalarField dmdt12(dmdt*pos(dmdt)); + const volScalarField dmdt21(dmdt*neg(dmdt)); + + *eqns[pair.phase1().name()] += fvm::Sp(dmdt21, U1) - dmdt21*U2; + *eqns[pair.phase2().name()] += dmdt12*U1 - fvm::Sp(dmdt12, U2); + } + + return eqnsPtr; +} + + +template<class BasePhaseSystem> +Foam::autoPtr<Foam::phaseSystem::heatTransferTable> +Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::heatTransfer() const +{ + autoPtr<phaseSystem::heatTransferTable> eqnsPtr + ( + new phaseSystem::heatTransferTable() + ); + + phaseSystem::heatTransferTable& eqns = eqnsPtr(); + + forAllConstIter + ( + phaseSystem::phaseModelTable, + this->phaseModels_, + phaseModelIter + ) + { + const phaseModel& phase(phaseModelIter()); + + eqns.insert + ( + phase.name(), + new fvScalarMatrix(phase.thermo().he(), dimEnergy/dimTime) + ); + } + + // Heat transfer with the interface + forAllConstIter + ( + heatTransferModelTable, + heatTransferModels_, + heatTransferModelIter + ) + { + const phasePair& pair + ( + this->phasePairs_[heatTransferModelIter.key()] + ); + + const phaseModel* phase = &pair.phase1(); + const phaseModel* otherPhase = &pair.phase2(); + + const volScalarField& Tf(*Tf_[pair]); + + const volScalarField K1 + ( + heatTransferModelIter()[pair.first()]->K() + ); + const volScalarField K2 + ( + heatTransferModelIter()[pair.second()]->K() + ); + const volScalarField KEff + ( + K1*K2 + /max + ( + K1 + K2, + dimensionedScalar("small", heatTransferModel::dimK, SMALL) + ) + ); + + const volScalarField* K = &K1; + const volScalarField* otherK = &K2; + + forAllConstIter(phasePair, pair, iter) + { + const volScalarField& he(phase->thermo().he()); + volScalarField Cpv(phase->thermo().Cpv()); + + *eqns[phase->name()] += + (*K)*(Tf - phase->thermo().T()) + + KEff/Cpv*he - fvm::Sp(KEff/Cpv, he); + + Swap(phase, otherPhase); + Swap(K, otherK); + } + } + + return eqnsPtr; +} + + +template<class BasePhaseSystem> +Foam::autoPtr<Foam::phaseSystem::massTransferTable> +Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::massTransfer() const +{ + // Create a mass transfer matrix for each species of each phase + autoPtr<phaseSystem::massTransferTable> eqnsPtr + ( + new phaseSystem::massTransferTable() + ); + + phaseSystem::massTransferTable& eqns = eqnsPtr(); + + forAllConstIter + ( + phaseSystem::phaseModelTable, + this->phaseModels_, + phaseModelIter + ) + { + const phaseModel& phase(phaseModelIter()); + + const PtrList<volScalarField>& Yi = phase.Y(); + + forAll(Yi, i) + { + eqns.insert + ( + Yi[i].name(), + new fvScalarMatrix(Yi[i], dimMass/dimTime) + ); + } + } + + // Reset the interfacial mass flow rates + forAllConstIter + ( + phaseSystem::phasePairTable, + this->phasePairs_, + phasePairIter + ) + { + const phasePair& pair(phasePairIter()); + + if (pair.ordered()) + { + continue; + } + + *dmdt_[pair] = + *dmdtExplicit_[pair]; + + *dmdtExplicit_[pair] = + dimensionedScalar("zero", dimDensity/dimTime, 0); + } + + // Sum up the contribution from each interface composition model + forAllConstIter + ( + interfaceCompositionModelTable, + interfaceCompositionModels_, + interfaceCompositionModelIter + ) + { + const interfaceCompositionModel& compositionModel + ( + interfaceCompositionModelIter() + ); + + const phasePair& pair + ( + this->phasePairs_[interfaceCompositionModelIter.key()] + ); + const phaseModel& phase = pair.phase1(); + const phaseModel& otherPhase = pair.phase2(); + const phasePairKey key(phase.name(), otherPhase.name()); + + const volScalarField& Tf(*Tf_[key]); + + volScalarField& dmdtExplicit(*dmdtExplicit_[key]); + volScalarField& dmdt(*dmdt_[key]); + + scalar dmdtSign(Pair<word>::compare(dmdt_.find(key).key(), key)); + + const volScalarField K + ( + massTransferModels_[key][phase.name()]->K() + ); + + forAllConstIter + ( + hashedWordList, + compositionModel.species(), + memberIter + ) + { + const word& member = *memberIter; + + const word name + ( + IOobject::groupName(member, phase.name()) + ); + + const word otherName + ( + IOobject::groupName(member, otherPhase.name()) + ); + + const volScalarField KD + ( + K*compositionModel.D(member) + ); + + const volScalarField Yf + ( + compositionModel.Yf(member, Tf) + ); + + // Implicit transport through the phase + *eqns[name] += + phase.rho()*KD*Yf + - fvm::Sp(phase.rho()*KD, eqns[name]->psi()); + + // Sum the mass transfer rate + dmdtExplicit += dmdtSign*phase.rho()*KD*Yf; + dmdt -= dmdtSign*phase.rho()*KD*eqns[name]->psi(); + + // Explicit transport out of the other phase + if (eqns.found(otherName)) + { + *eqns[otherName] -= + otherPhase.rho()*KD*compositionModel.dY(member, Tf); + } + } + } + + return eqnsPtr; +} + + +template<class BasePhaseSystem> +void Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::correctThermo() +{ + BasePhaseSystem::correctThermo(); + + // This loop solves for the interface temperatures, Tf, and updates the + // interface composition models. + // + // The rate of heat transfer to the interface must equal the latent heat + // consumed at the interface, i.e.: + // + // H1*(T1 - Tf) + H2*(T2 - Tf) == mDotL + // == K*rho*(Yfi - Yi)*Li + // + // Yfi is likely to be a strong non-linear (typically exponential) function + // of Tf, so the solution for the temperature is newton-accelerated + + forAllConstIter + ( + phaseSystem::phasePairTable, + this->phasePairs_, + phasePairIter + ) + { + const phasePair& pair(phasePairIter()); + + if (pair.ordered()) + { + continue; + } + + const phasePairKey key12(pair.first(), pair.second(), true); + const phasePairKey key21(pair.second(), pair.first(), true); + + volScalarField H1(heatTransferModels_[pair][pair.first()]->K()); + volScalarField H2(heatTransferModels_[pair][pair.second()]->K()); + dimensionedScalar HSmall("small", heatTransferModel::dimK, SMALL); + + volScalarField mDotL + ( + IOobject + ( + "mDotL", + this->mesh().time().timeName(), + this->mesh() + ), + this->mesh(), + dimensionedScalar("zero", dimEnergy/dimVolume/dimTime, 0) + ); + volScalarField mDotLPrime + ( + IOobject + ( + "mDotLPrime", + this->mesh().time().timeName(), + this->mesh() + ), + this->mesh(), + dimensionedScalar("zero", mDotL.dimensions()/dimTemperature, 0) + ); + + volScalarField& Tf = *Tf_[pair]; + + // Add latent heats from forward and backward models + if (interfaceCompositionModels_.found(key12)) + { + interfaceCompositionModels_[key12]->addMDotL + ( + massTransferModels_[pair][pair.first()]->K(), + Tf, + mDotL, + mDotLPrime + ); + } + if (interfaceCompositionModels_.found(key21)) + { + interfaceCompositionModels_[key21]->addMDotL + ( + massTransferModels_[pair][pair.second()]->K(), + Tf, + mDotL, + mDotLPrime + ); + } + + // Update the interface temperature by applying one step of newton's + // method to the interface relation + Tf -= + ( + H1*(Tf - pair.phase1().thermo().T()) + + H2*(Tf - pair.phase2().thermo().T()) + + mDotL + ) + /( + max(H1 + H2 + mDotLPrime, HSmall) + ); + + // Update the interface compositions + if (interfaceCompositionModels_.found(key12)) + { + interfaceCompositionModels_[key12]->update(Tf); + } + if (interfaceCompositionModels_.found(key21)) + { + interfaceCompositionModels_[key21]->update(Tf); + } + + Info<< "Tf." << pair.name() + << ": min = " << min(Tf.internalField()) + << ", mean = " << average(Tf.internalField()) + << ", max = " << max(Tf.internalField()) + << endl; + } +} + + +template<class BasePhaseSystem> +bool Foam::HeatAndMassTransferPhaseSystem<BasePhaseSystem>::read() +{ + if (BasePhaseSystem::read()) + { + bool readOK = true; + + // Models ... + + return readOK; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H new file mode 100644 index 0000000000000000000000000000000000000000..02ec28e08db57e222cdfaae62616ed6d45d29b06 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatAndMassTransferPhaseSystem/HeatAndMassTransferPhaseSystem.H @@ -0,0 +1,180 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::HeatAndMassTransferPhaseSystem + +Description + Class which models interfacial heat and mass transfer between a number of + phases. Mass is transferred to or from a phase according to a composition + model at the surface of another phase. Heat is transferred from a phase to + an interfacial temperature. The interface temperature is calculated such + that the net rate at which the heat is transferred to the interface is + equal to the latent heat consumed by the mass transfer. + +SourceFiles + HeatAndMassTransferPhaseSystem.C + +\*---------------------------------------------------------------------------*/ + +#ifndef HeatAndMassTransferPhaseSystem_H +#define HeatAndMassTransferPhaseSystem_H + +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +template <class modelType> +class BlendedInterfacialModel; + +class blendingMethod; +class heatTransferModel; +class massTransferModel; +class interfaceCompositionModel; + +/*---------------------------------------------------------------------------*\ + Class HeatAndMassTransferPhaseSystem Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseSystem> +class HeatAndMassTransferPhaseSystem +: + public BasePhaseSystem +{ +protected: + + // Protected typedefs + + typedef HashTable + < + HashTable + < + autoPtr<BlendedInterfacialModel<heatTransferModel> > + >, + phasePairKey, + phasePairKey::hash + > heatTransferModelTable; + + typedef HashTable + < + HashTable + < + autoPtr<BlendedInterfacialModel<massTransferModel> > + >, + phasePairKey, + phasePairKey::hash + > massTransferModelTable; + + typedef HashTable + < + autoPtr<interfaceCompositionModel>, + phasePairKey, + phasePairKey::hash + > interfaceCompositionModelTable; + + + // Protected data + + //- Mass transfer rate + HashPtrTable<volScalarField, phasePairKey, phasePairKey::hash> + dmdt_; + + //- Explicit part of the mass transfer rate + HashPtrTable<volScalarField, phasePairKey, phasePairKey::hash> + dmdtExplicit_; + + //- Interface temperatures + HashPtrTable<volScalarField, phasePairKey, phasePairKey::hash> Tf_; + + // Sub Models + + //- Heat transfer models + heatTransferModelTable heatTransferModels_; + + //- Mass transfer models + massTransferModelTable massTransferModels_; + + //- Interface composition models + interfaceCompositionModelTable interfaceCompositionModels_; + + +public: + + // Constructors + + //- Construct from fvMesh + HeatAndMassTransferPhaseSystem(const fvMesh&); + + + //- Destructor + virtual ~HeatAndMassTransferPhaseSystem(); + + + // Member Functions + + //- Return the interfacial mass flow rate + virtual tmp<volScalarField> dmdt + ( + const phasePairKey& key + ) const; + + //- Return the momentum transfer matrices + virtual autoPtr<phaseSystem::momentumTransferTable> momentumTransfer + ( + IOMRFZoneList& mrfZones + ) const; + + //- Return the heat transfer matrices + virtual autoPtr<phaseSystem::heatTransferTable> + heatTransfer() const; + + //- Return the mass transfer matrices + virtual autoPtr<phaseSystem::massTransferTable> + massTransfer() const; + + //- Correct the thermodynamics + virtual void correctThermo(); + + //- Read base phaseProperties dictionary + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "HeatAndMassTransferPhaseSystem.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C new file mode 100644 index 0000000000000000000000000000000000000000..0a5d8a7060b2afd5a16173fb70ea27a7d4ed291d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.C @@ -0,0 +1,177 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "HeatTransferPhaseSystem.H" + +#include "BlendedInterfacialModel.H" +#include "heatTransferModel.H" + +#include "HashPtrTable.H" + +#include "fvcDiv.H" +#include "fvmSup.H" +#include "fvMatrix.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::HeatTransferPhaseSystem<BasePhaseSystem>::HeatTransferPhaseSystem +( + const fvMesh& mesh +) +: + BasePhaseSystem(mesh) +{ + this->generatePairsAndSubModels("heatTransfer", heatTransferModels_); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::HeatTransferPhaseSystem<BasePhaseSystem>::~HeatTransferPhaseSystem() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::tmp<Foam::volScalarField> +Foam::HeatTransferPhaseSystem<BasePhaseSystem>::dmdt +( + const phasePairKey& key +) const +{ + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + IOobject::groupName + ( + "dmdt", + this->phasePairs_[key]->name() + ), + this->mesh().time().timeName(), + this->mesh().time() + ), + this->mesh(), + dimensionedScalar("zero", dimDensity/dimTime, 0) + ) + ); +} + + +template<class BasePhaseSystem> +Foam::autoPtr<Foam::phaseSystem::heatTransferTable> +Foam::HeatTransferPhaseSystem<BasePhaseSystem>::heatTransfer() const +{ + autoPtr<phaseSystem::heatTransferTable> eqnsPtr + ( + new phaseSystem::heatTransferTable() + ); + + phaseSystem::heatTransferTable& eqns = eqnsPtr(); + + forAllConstIter + ( + phaseSystem::phaseModelTable, + this->phaseModels_, + phaseModelIter + ) + { + const phaseModel& phase(phaseModelIter()); + + eqns.insert + ( + phase.name(), + new fvScalarMatrix(phase.thermo().he(), dimEnergy/dimTime) + ); + } + + forAllConstIter + ( + heatTransferModelTable, + heatTransferModels_, + heatTransferModelIter + ) + { + const volScalarField K(heatTransferModelIter()->K()); + + const phasePair& pair(this->phasePairs_[heatTransferModelIter.key()]); + + const phaseModel* phase = &pair.phase1(); + const phaseModel* otherPhase = &pair.phase2(); + + forAllConstIter(phasePair, pair, iter) + { + const volScalarField& he(phase->thermo().he()); + volScalarField Cpv(phase->thermo().Cpv()); + + *eqns[phase->name()] += + K*(otherPhase->thermo().T() - phase->thermo().T() + he/Cpv) + - fvm::Sp(K/Cpv, he); + + Swap(phase, otherPhase); + } + } + + return eqnsPtr; +} + + +template<class BasePhaseSystem> +Foam::autoPtr<Foam::phaseSystem::massTransferTable> +Foam::HeatTransferPhaseSystem<BasePhaseSystem>::massTransfer() const +{ + autoPtr<phaseSystem::massTransferTable> eqnsPtr + ( + new phaseSystem::massTransferTable() + ); + + return eqnsPtr; +} + + +template<class BasePhaseSystem> +bool Foam::HeatTransferPhaseSystem<BasePhaseSystem>::read() +{ + if (BasePhaseSystem::read()) + { + bool readOK = true; + + // Models ... + + return readOK; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H new file mode 100644 index 0000000000000000000000000000000000000000..6bb96c90baeacb80ae3ed46d15168a899258fbfd --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/HeatTransferPhaseSystem/HeatTransferPhaseSystem.H @@ -0,0 +1,125 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::HeatTransferPhaseSystem + +Description + Class which models interfacial heat transfer between a number of phases. + +SourceFiles + HeatTransferPhaseSystem.C + +\*---------------------------------------------------------------------------*/ + +#ifndef HeatTransferPhaseSystem_H +#define HeatTransferPhaseSystem_H + +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class blendingMethod; +template <class modelType> class BlendedInterfacialModel; +class heatTransferModel; + +/*---------------------------------------------------------------------------*\ + Class HeatTransferPhaseSystem Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseSystem> +class HeatTransferPhaseSystem +: + public BasePhaseSystem +{ +protected: + + // Protected typedefs + + typedef HashTable + < + autoPtr<BlendedInterfacialModel<heatTransferModel> >, + phasePairKey, + phasePairKey::hash + > heatTransferModelTable; + + + // Protected data + + // Sub Models + + //- Heat transfer models + heatTransferModelTable heatTransferModels_; + + +public: + + // Constructors + + //- Construct from fvMesh + HeatTransferPhaseSystem(const fvMesh&); + + + //- Destructor + virtual ~HeatTransferPhaseSystem(); + + + // Member Functions + + //- Return the interfacial mass flow rate + virtual tmp<volScalarField> dmdt + ( + const phasePairKey& key + ) const; + + //- Return the heat transfer matrices + virtual autoPtr<phaseSystem::heatTransferTable> + heatTransfer() const; + + //- Return the mass transfer matrices + virtual autoPtr<phaseSystem::massTransferTable> + massTransfer() const; + + //- Read base phaseProperties dictionary + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "HeatTransferPhaseSystem.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C new file mode 100644 index 0000000000000000000000000000000000000000..083af1fed552174735248a709111aa64c398d391 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C @@ -0,0 +1,533 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "MomentumTransferPhaseSystem.H" + +#include "BlendedInterfacialModel.H" +#include "dragModel.H" +#include "virtualMassModel.H" +#include "liftModel.H" +#include "wallLubricationModel.H" +#include "turbulentDispersionModel.H" + +#include "IOMRFZoneList.H" +#include "HashPtrTable.H" + +#include "fvmDdt.H" +#include "fvmDiv.H" +#include "fvmSup.H" +#include "fvcDiv.H" +#include "fvMatrix.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>:: +MomentumTransferPhaseSystem +( + const fvMesh& mesh +) +: + BasePhaseSystem(mesh) +{ + this->generatePairsAndSubModels + ( + "drag", + dragModels_ + ); + + this->generatePairsAndSubModels + ( + "virtualMass", + virtualMassModels_ + ); + + this->generatePairsAndSubModels + ( + "lift", + liftModels_ + ); + + this->generatePairsAndSubModels + ( + "wallLubrication", + wallLubricationModels_ + ); + + this->generatePairsAndSubModels + ( + "turbulentDispersion", + turbulentDispersionModels_ + ); + + forAllConstIter + ( + dragModelTable, + dragModels_, + dragModelIter + ) + { + const phasePair& pair(this->phasePairs_[dragModelIter.key()]); + + Kds_.insert + ( + pair, + new volScalarField + ( + IOobject::groupName("Kd", pair.name()), + dragModelIter()->K() + ) + ); + } + + forAllConstIter + ( + virtualMassModelTable, + virtualMassModels_, + virtualMassModelIter + ) + { + const phasePair& pair(this->phasePairs_[virtualMassModelIter.key()]); + + Vms_.insert + ( + pair, + new volScalarField + ( + IOobject::groupName("Vm", pair.name()), + virtualMassModelIter()->K() + ) + ); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>:: +~MomentumTransferPhaseSystem() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +template<class BasePhaseSystem> +Foam::tmp<Foam::volScalarField> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Kd +( + const phasePairKey& key +) const +{ + return dragModels_[key]->K(); +} + + +template<class BasePhaseSystem> +Foam::tmp<Foam::surfaceScalarField> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Kdf +( + const phasePairKey& key +) const +{ + return dragModels_[key]->Kf(); +} + + +template<class BasePhaseSystem> +Foam::tmp<Foam::volScalarField> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Vm +( + const phasePairKey& key +) const +{ + if (virtualMassModels_.found(key)) + { + return virtualMassModels_[key]->K(); + } + else + { + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + virtualMassModel::typeName + ":K", + this->mesh_.time().timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh_, + dimensionedScalar("zero", virtualMassModel::dimK, 0) + ) + ); + } +} + + +template<class BasePhaseSystem> +Foam::tmp<Foam::surfaceScalarField> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Vmf +( + const phasePairKey& key +) const +{ + if (virtualMassModels_.found(key)) + { + return virtualMassModels_[key]->Kf(); + } + else + { + return tmp<surfaceScalarField> + ( + new surfaceScalarField + ( + IOobject + ( + virtualMassModel::typeName + ":Kf", + this->mesh_.time().timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh_, + dimensionedScalar("zero", virtualMassModel::dimK, 0) + ) + ); + } +} + + +template<class BasePhaseSystem> +Foam::tmp<Foam::volVectorField> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::F +( + const phasePairKey& key +) const +{ + if (liftModels_.found(key) && wallLubricationModels_.found(key)) + { + return + liftModels_[key]->template F<vector>() + + wallLubricationModels_[key]->template F<vector>(); + } + else if (liftModels_.found(key)) + { + return liftModels_[key]->template F<vector>(); + } + else if (wallLubricationModels_.found(key)) + { + return wallLubricationModels_[key]->template F<vector>(); + } + else + { + return tmp<volVectorField> + ( + new volVectorField + ( + IOobject + ( + liftModel::typeName + ":F", + this->mesh_.time().timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh_, + dimensionedVector("zero", liftModel::dimF, vector::zero) + ) + ); + } +} + + +template<class BasePhaseSystem> +Foam::tmp<Foam::surfaceScalarField> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Ff +( + const phasePairKey& key +) const +{ + if (liftModels_.found(key) && wallLubricationModels_.found(key)) + { + return + liftModels_[key]->Ff() + + wallLubricationModels_[key]->Ff(); + } + else if (liftModels_.found(key)) + { + return liftModels_[key]->Ff(); + } + else if (wallLubricationModels_.found(key)) + { + return wallLubricationModels_[key]->Ff(); + } + else + { + return tmp<surfaceScalarField> + ( + new surfaceScalarField + ( + IOobject + ( + liftModel::typeName + ":Ff", + this->mesh_.time().timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh_, + dimensionedScalar("zero", liftModel::dimF*dimArea, 0) + ) + ); + } +} + + +template<class BasePhaseSystem> +Foam::tmp<Foam::volScalarField> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::D +( + const phasePairKey& key +) const +{ + if (turbulentDispersionModels_.found(key)) + { + return turbulentDispersionModels_[key]->D(); + } + else + { + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + turbulentDispersionModel::typeName + ":D", + this->mesh_.time().timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh_, + dimensionedScalar("zero", turbulentDispersionModel::dimD, 0) + ) + ); + } +} + + +template<class BasePhaseSystem> +Foam::autoPtr<Foam::phaseSystem::momentumTransferTable> +Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::momentumTransfer +( + IOMRFZoneList& MRF +) const +{ + // Create a momentum transfer matrix for each phase + autoPtr<phaseSystem::momentumTransferTable> eqnsPtr + ( + new phaseSystem::momentumTransferTable() + ); + + phaseSystem::momentumTransferTable& eqns = eqnsPtr(); + + forAllConstIter + ( + phaseSystem::phaseModelTable, + this->phaseModels_, + phaseModelIter + ) + { + const phaseModel& phase(phaseModelIter()); + + eqns.insert + ( + phase.name(), + new fvVectorMatrix(phase.U(), dimMass*dimVelocity/dimTime) + ); + } + + // Update the drag coefficients + forAllConstIter + ( + dragModelTable, + dragModels_, + dragModelIter + ) + { + *Kds_[dragModelIter.key()] = dragModelIter()->K(); + } + + // Add the implicit part of the drag force + forAllConstIter + ( + phaseSystem::KdTable, + Kds_, + KdIter + ) + { + const volScalarField& K(*KdIter()); + + const phasePair& pair(this->phasePairs_[KdIter.key()]); + + const phaseModel* phase = &pair.phase1(); + const phaseModel* otherPhase = &pair.phase2(); + + forAllConstIter(phasePair, pair, iter) + { + const volVectorField& U(phase->U()); + + *eqns[phase->name()] -= fvm::Sp(K, U); + + Swap(phase, otherPhase); + } + } + + // Update the virtual mass coefficients + forAllConstIter + ( + virtualMassModelTable, + virtualMassModels_, + virtualMassModelIter + ) + { + *Vms_[virtualMassModelIter.key()] = virtualMassModelIter()->K(); + } + + // Add the virtual mass force + forAllConstIter + ( + phaseSystem::VmTable, + Vms_, + VmIter + ) + { + const volScalarField& Vm(*VmIter()); + + const phasePair& pair(this->phasePairs_[VmIter.key()]); + + const phaseModel* phase = &pair.phase1(); + const phaseModel* otherPhase = &pair.phase2(); + + forAllConstIter(phasePair, pair, iter) + { + const volVectorField& U(phase->U()); + const surfaceScalarField& phi(phase->phi()); + + *eqns[phase->name()] += + - Vm + *( + fvm::ddt(U) + + fvm::div(phi, U) + - fvm::Sp(fvc::div(phi), U) + - otherPhase->DUDt() + ) + - MRF.DDt(Vm, U - otherPhase->U()); + + Swap(phase, otherPhase); + } + } + + // Add the lift force + forAllConstIter + ( + liftModelTable, + liftModels_, + liftModelIter + ) + { + const volVectorField F(liftModelIter()->F<vector>()); + + const phasePair& pair(this->phasePairs_[liftModelIter.key()]); + + *eqns[pair.phase1().name()] += F; + *eqns[pair.phase2().name()] -= F; + } + + // Add the wall lubrication force + forAllConstIter + ( + wallLubricationModelTable, + wallLubricationModels_, + wallLubricationModelIter + ) + { + const volVectorField F(wallLubricationModelIter()->F<vector>()); + + const phasePair& + pair(this->phasePairs_[wallLubricationModelIter.key()]); + + *eqns[pair.phase1().name()] += F; + *eqns[pair.phase2().name()] -= F; + } + + // Add the turbulent dispersion force + forAllConstIter + ( + turbulentDispersionModelTable, + turbulentDispersionModels_, + turbulentDispersionModelIter + ) + { + const volVectorField F(turbulentDispersionModelIter()->F<vector>()); + + const phasePair& + pair(this->phasePairs_[turbulentDispersionModelIter.key()]); + + *eqns[pair.phase1().name()] += F; + *eqns[pair.phase2().name()] -= F; + } + + return eqnsPtr; +} + + +template<class BasePhaseSystem> +bool Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::read() +{ + if (BasePhaseSystem::read()) + { + bool readOK = true; + + // Read models ... + + return readOK; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H new file mode 100644 index 0000000000000000000000000000000000000000..87e180cb4ac0a6009391638ee7ecea89e006c962 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H @@ -0,0 +1,198 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::MomentumTransferPhaseSystem + +Description + Class which models interfacial momenum transfer between a number of phases. + Drag, virtual mass, lift, wall lubrication and turbulent dispersion are all + modelled. The explicit contribution from the drag is omitted from the + transfer matrices, as this forms part of the solution of the pressure + equation. + +SourceFiles + MomentumTransferPhaseSystem.C + +\*---------------------------------------------------------------------------*/ + +#ifndef MomentumTransferPhaseSystem_H +#define MomentumTransferPhaseSystem_H + +#include "phaseSystem.H" +#include "HashPtrTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +template <class modelType> +class BlendedInterfacialModel; + +class blendingMethod; +class dragModel; +class virtualMassModel; +class liftModel; +class wallLubricationModel; +class turbulentDispersionModel; + +/*---------------------------------------------------------------------------*\ + Class MomentumTransferPhaseSystem Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseSystem> +class MomentumTransferPhaseSystem +: + public BasePhaseSystem +{ +protected: + + // Protected typedefs + + typedef HashTable + < + autoPtr<BlendedInterfacialModel<dragModel> >, + phasePairKey, + phasePairKey::hash + > dragModelTable; + + typedef HashTable + < + autoPtr<BlendedInterfacialModel<virtualMassModel> >, + phasePairKey, + phasePairKey::hash + > virtualMassModelTable; + + typedef HashTable + < + autoPtr<BlendedInterfacialModel<liftModel> >, + phasePairKey, + phasePairKey::hash + > liftModelTable; + + typedef HashTable + < + autoPtr<BlendedInterfacialModel<wallLubricationModel> >, + phasePairKey, + phasePairKey::hash + > wallLubricationModelTable; + + typedef HashTable + < + autoPtr<BlendedInterfacialModel<turbulentDispersionModel> >, + phasePairKey, + phasePairKey::hash + > turbulentDispersionModelTable; + + +private: + + // Private data + + //- Drag coefficients + phaseSystem::KdTable Kds_; + + //- Virtual mass coefficients + phaseSystem::VmTable Vms_; + + // Sub Models + + //- Drag models + dragModelTable dragModels_; + + //- Virtual mass models + virtualMassModelTable virtualMassModels_; + + //- Lift models + liftModelTable liftModels_; + + //- Wall lubrication models + wallLubricationModelTable wallLubricationModels_; + + //- Turbulent dispersion models + turbulentDispersionModelTable turbulentDispersionModels_; + + +public: + + // Constructors + + //- Construct from fvMesh + MomentumTransferPhaseSystem(const fvMesh&); + + + //- Destructor + virtual ~MomentumTransferPhaseSystem(); + + + // Member Functions + + //- Return the drag coefficient + virtual tmp<volScalarField> Kd(const phasePairKey& key) const; + + //- Return the face drag coefficient + virtual tmp<surfaceScalarField> Kdf(const phasePairKey& key) const; + + //- Return the virtual mass coefficient + virtual tmp<volScalarField> Vm(const phasePairKey& key) const; + + //- Return the face virtual mass coefficient + virtual tmp<surfaceScalarField> Vmf(const phasePairKey& key) const; + + //- Return the combined force (lift + wall-lubrication) + virtual tmp<volVectorField> F(const phasePairKey& key) const; + + //- Return the combined face-force (lift + wall-lubrication) + virtual tmp<surfaceScalarField> Ff(const phasePairKey& key) const; + + //- Return the turbulent diffusivity + // Multiplies the phase-fraction gradient + virtual tmp<volScalarField> D(const phasePairKey& key) const; + + //- Return the momentum transfer matrices + virtual autoPtr<phaseSystem::momentumTransferTable> momentumTransfer + ( + IOMRFZoneList& mrfZones + ) const; + + //- Read base phaseProperties dictionary + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "MomentumTransferPhaseSystem.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.C new file mode 100644 index 0000000000000000000000000000000000000000..4d51d8c43d4850255fd3ad2dd61b449e5fcd4a8e --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.C @@ -0,0 +1,205 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "IATE.H" +#include "IATEsource.H" +#include "fvmDdt.H" +#include "fvmDiv.H" +#include "fvmSup.H" +#include "fvcDdt.H" +#include "fvcDiv.H" +#include "fvcAverage.H" +#include "fvOptionList.H" +#include "mathematicalConstants.H" +#include "fundamentalConstants.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + defineTypeNameAndDebug(IATE, 0); + + addToRunTimeSelectionTable + ( + diameterModel, + IATE, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::diameterModels::IATE::IATE +( + const dictionary& diameterProperties, + const phaseModel& phase +) +: + diameterModel(diameterProperties, phase), + kappai_ + ( + IOobject + ( + IOobject::groupName("kappai", phase.name()), + phase_.time().timeName(), + phase_.mesh(), + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + phase_.mesh() + ), + dMax_("dMax", dimLength, diameterProperties_.lookup("dMax")), + dMin_("dMin", dimLength, diameterProperties_.lookup("dMin")), + residualAlpha_ + ( + "residualAlpha", + dimless, + diameterProperties_.lookup("residualAlpha") + ), + d_ + ( + IOobject + ( + IOobject::groupName("d", phase.name()), + phase_.time().timeName(), + phase_.mesh(), + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + dsm() + ), + sources_ + ( + diameterProperties_.lookup("sources"), + IATEsource::iNew(*this) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::diameterModels::IATE::~IATE() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATE::dsm() const +{ + return max(6/max(kappai_, 6/dMax_), dMin_); +} + +// Placeholder for the nucleation/condensation model +// Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATE::Rph() const +// { +// const volScalarField& T = phase_thermo().T(); +// const volScalarField& p = phase_.p(); +// +// scalar A, B, C, sigma, vm, Rph; +// +// volScalarField ps(1e5*pow(10, A - B/(T + C))); +// volScalarField Dbc +// ( +// 4*sigma*vm/(constant::physicoChemical::k*T*log(p/ps)) +// ); +// +// return constant::mathematical::pi*sqr(Dbc)*Rph; +// } + +void Foam::diameterModels::IATE::correct() +{ + // Initialise the accumulated source term to the dilatation effect + volScalarField R + ( + ( + (1.0/3.0) + /max + ( + fvc::average(phase_ + phase_.oldTime()), + residualAlpha_ + ) + ) + *(fvc::ddt(phase_) + fvc::div(phase_.alphaPhi())) + ); + + // Accumulate the run-time selectable sources + forAll(sources_, j) + { + R -= sources_[j].R(); + } + + // const_cast needed because the operators and functions of fvOptions + // are currently non-const. + fv::optionList& fvOptions = const_cast<fv::optionList&> + ( + phase_.mesh().lookupObject<fv::optionList>("fvOptions") + ); + + // Construct the interfacial curvature equation + fvScalarMatrix kappaiEqn + ( + fvm::ddt(kappai_) + fvm::div(phase_.phi(), kappai_) + - fvm::Sp(fvc::div(phase_.phi()), kappai_) + == + - fvm::SuSp(R, kappai_) + //+ Rph() // Omit the nucleation/condensation term + + fvOptions(kappai_) + ); + + kappaiEqn.relax(); + + fvOptions.constrain(kappaiEqn); + + kappaiEqn.solve(); + + // Update the Sauter-mean diameter + d_ = dsm(); +} + + +bool Foam::diameterModels::IATE::read(const dictionary& phaseProperties) +{ + diameterModel::read(phaseProperties); + + diameterProperties_.lookup("dMax") >> dMax_; + diameterProperties_.lookup("dMin") >> dMin_; + + // Re-create all the sources updating number, type and coefficients + PtrList<IATEsource> + ( + diameterProperties_.lookup("sources"), + IATEsource::iNew(*this) + ).transfer(sources_); + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.H new file mode 100644 index 0000000000000000000000000000000000000000..5ad850e3f6b66b188beb42bb4fb16882fc2e7d2b --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATE.H @@ -0,0 +1,155 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::IATE + +Description + IATE (Interfacial Area Transport Equation) bubble diameter model. + + Solves for the interfacial curvature per unit volume of the phase rather + than interfacial area per unit volume to avoid stability issues relating to + the consistency requirements between the phase fraction and interfacial area + per unit volume. In every other respect this model is as presented in the + paper: + + \verbatim + "Development of Interfacial Area Transport Equation" + Ishii, M., Kim, S. and Kelly, J., + Nuclear Engineering and Technology, Vol.37 No.6 December 2005 + \endverbatim + +SourceFiles + IATE.C + +\*---------------------------------------------------------------------------*/ + +#ifndef IATE_H +#define IATE_H + +#include "diameterModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + +// Forward declaration of classes +class IATEsource; + +/*---------------------------------------------------------------------------*\ + Class IATE Declaration +\*---------------------------------------------------------------------------*/ + +class IATE +: + public diameterModel +{ + // Private data + + //- Interfacial curvature (alpha*interfacial area) + volScalarField kappai_; + + //- Maximum diameter used for stabilisation in the limit kappai->0 + dimensionedScalar dMax_; + + //- Minimum diameter used for stabilisation in the limit kappai->inf + dimensionedScalar dMin_; + + //- Residual phase fraction + dimensionedScalar residualAlpha_; + + //- The Sauter-mean diameter of the phase + volScalarField d_; + + //- IATE sources + PtrList<IATEsource> sources_; + + + // Private member functions + + tmp<volScalarField> dsm() const; + + +public: + + friend class IATEsource; + + //- Runtime type information + TypeName("IATE"); + + + // Constructors + + //- Construct from components + IATE + ( + const dictionary& diameterProperties, + const phaseModel& phase + ); + + + //- Destructor + virtual ~IATE(); + + + // Member Functions + + //- Return the interfacial curvature + const volScalarField& kappai() const + { + return kappai_; + } + + //- Return the interfacial area + tmp<volScalarField> a() const + { + return phase_*kappai_; + } + + //- Return the Sauter-mean diameter + virtual tmp<volScalarField> d() const + { + return d_; + } + + //- Correct the diameter field + virtual void correct(); + + //- Read phaseProperties dictionary + virtual bool read(const dictionary& phaseProperties); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C new file mode 100644 index 0000000000000000000000000000000000000000..59bf824f56ad4647c7bbb86dcf3494cd3543d130 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.C @@ -0,0 +1,148 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "IATEsource.H" +#include "twoPhaseSystem.H" +#include "fvMatrix.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "uniformDimensionedFields.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + defineTypeNameAndDebug(IATEsource, 0); + defineRunTimeSelectionTable(IATEsource, dictionary); +} +} + + +// * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::diameterModels::IATEsource> +Foam::diameterModels::IATEsource::New +( + const word& type, + const IATE& iate, + const dictionary& dict +) +{ + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(type); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn + ( + "IATEsource::New" + "(const word& type, const IATE&, const dictionary&)" + ) << "Unknown IATE source type " + << type << nl << nl + << "Valid IATE source types : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return autoPtr<IATEsource>(cstrIter()(iate, dict)); +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::Ur() const +{ + const uniformDimensionedVectorField& g = + phase().db().lookupObject<uniformDimensionedVectorField>("g"); + + return + sqrt(2.0) + *pow025 + ( + fluid().sigma()*mag(g) + *(otherPhase().rho() - phase().rho()) + /sqr(otherPhase().rho()) + ) + *pow(max(1 - phase(), scalar(0)), 1.75); +} + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::Ut() const +{ + return sqrt(2*otherPhase().turbulence().k()); +} + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::Re() const +{ + return max(Ur()*phase().d()/otherPhase().nu(), scalar(1.0e-3)); +} + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::CD() const +{ + const volScalarField Eo(this->Eo()); + const volScalarField Re(this->Re()); + + return + max + ( + min + ( + (16/Re)*(1 + 0.15*pow(Re, 0.687)), + 48/Re + ), + 8*Eo/(3*(Eo + 4)) + ); +} + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::Mo() const +{ + const uniformDimensionedVectorField& g = + phase().db().lookupObject<uniformDimensionedVectorField>("g"); + + return + mag(g)*pow4(otherPhase().nu())*sqr(otherPhase().rho()) + *(otherPhase().rho() - phase().rho()) + /pow3(fluid().sigma()); +} + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::Eo() const +{ + const uniformDimensionedVectorField& g = + phase().db().lookupObject<uniformDimensionedVectorField>("g"); + + return + mag(g)*sqr(phase().d()) + *(otherPhase().rho() - phase().rho()) + /fluid().sigma(); +} + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::IATEsource::We() const +{ + return + otherPhase().rho()*sqr(Ur())*phase().d()/fluid().sigma(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.H new file mode 100644 index 0000000000000000000000000000000000000000..8c8a68ef638fe447af8c4f62bf1eef75f824663a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/IATEsource/IATEsource.H @@ -0,0 +1,193 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::IATEsource + +Description + IATE (Interfacial Area Transport Equation) bubble diameter model + run-time selectable sources. + +SourceFiles + IATEsource.C + +\*---------------------------------------------------------------------------*/ + +#ifndef IATEsource_H +#define IATEsource_H + +#include "IATE.H" +#include "twoPhaseSystem.H" +#include "mathematicalConstants.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + +/*---------------------------------------------------------------------------*\ + Class IATEsource Declaration +\*---------------------------------------------------------------------------*/ + +class IATEsource +{ + +protected: + + // Protected data + + //- Reference to the IATE this source applies to + const IATE& iate_; + + +public: + + //- Runtime type information + TypeName("IATEsource"); + + + // Declare run-time constructor selection table + + declareRunTimeSelectionTable + ( + autoPtr, + IATEsource, + dictionary, + ( + const IATE& iate, + const dictionary& dict + ), + (iate, dict) + ); + + + //- Class used for the read-construction of + // PtrLists of IATE sources + class iNew + { + const IATE& iate_; + + public: + + iNew(const IATE& iate) + : + iate_(iate) + {} + + autoPtr<IATEsource> operator()(Istream& is) const + { + word type(is); + dictionary dict(is); + return IATEsource::New(type, iate_, dict); + } + }; + + + // Constructors + + IATEsource(const IATE& iate) + : + iate_(iate) + {} + + autoPtr<IATEsource> clone() const + { + notImplemented("autoPtr<IATEsource> clone() const"); + return autoPtr<IATEsource>(NULL); + } + + + // Selectors + + static autoPtr<IATEsource> New + ( + const word& type, + const IATE& iate, + const dictionary& dict + ); + + + //- Destructor + virtual ~IATEsource() + {} + + + // Member Functions + + const phaseModel& phase() const + { + return iate_.phase(); + } + + const twoPhaseSystem& fluid() const + { + return refCast<const twoPhaseSystem>(iate_.phase().fluid()); + } + + const phaseModel& otherPhase() const + { + return fluid().otherPhase(phase()); + } + + scalar phi() const + { + return 1.0/(36*constant::mathematical::pi); + } + + //- Return the bubble relative velocity + tmp<volScalarField> Ur() const; + + //- Return the bubble turbulent velocity + tmp<volScalarField> Ut() const; + + //- Return the bubble Reynolds number + tmp<volScalarField> Re() const; + + //- Return the bubble drag coefficient + tmp<volScalarField> CD() const; + + //- Return the bubble Morton number + tmp<volScalarField> Mo() const; + + //- Return the bubble Eotvos number + tmp<volScalarField> Eo() const; + + //- Return the bubble Webber number + tmp<volScalarField> We() const; + + virtual tmp<volScalarField> R() const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.C new file mode 100644 index 0000000000000000000000000000000000000000..d7244b14d4d3c80b29178ccce30d32af6a449e16 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.C @@ -0,0 +1,66 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "dummy.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + defineTypeNameAndDebug(dummy, 0); + addToRunTimeSelectionTable(IATEsource, dummy, word); +} +} +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::diameterModels::IATEsources::dummy::R() const +{ + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "R", + iate_.phase().U().time().timeName(), + iate_.phase().mesh() + ), + iate_.phase().U().mesh(), + dimensionedScalar("R", dimless/dimTime, 0) + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.H new file mode 100644 index 0000000000000000000000000000000000000000..e9c6529a97d643a92cc1391d65f86e09c24c49b4 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/dummy/dummy.H @@ -0,0 +1,96 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::IATEsources::dummy + +Description + +SourceFiles + dummy.C + +\*---------------------------------------------------------------------------*/ + +#ifndef dummy_H +#define dummy_H + +#include "IATEsource.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + +/*---------------------------------------------------------------------------*\ + Class dummy Declaration +\*---------------------------------------------------------------------------*/ + +class dummy +: + public IATEsource +{ + +public: + + //- Runtime type information + TypeName("dummy"); + + // Constructors + + dummy + ( + const word& name, + const IATE& iate, + const dictionary& dict + ) + : + IATEsource(iate) + {} + + + //- Destructor + virtual ~dummy() + {} + + + // Member Functions + + virtual tmp<volScalarField> R() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace IATEsources +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C new file mode 100644 index 0000000000000000000000000000000000000000..8fde0b702022bb19fcc5b59f7f214d796ab12495 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.C @@ -0,0 +1,109 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "randomCoalescence.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + defineTypeNameAndDebug(randomCoalescence, 0); + addToRunTimeSelectionTable(IATEsource, randomCoalescence, dictionary); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::diameterModels::IATEsources::randomCoalescence:: +randomCoalescence +( + const IATE& iate, + const dictionary& dict +) +: + IATEsource(iate), + Crc_("Crc", dimless, dict.lookup("Crc")), + C_("C", dimless, dict.lookup("C")), + alphaMax_("alphaMax", dimless, dict.lookup("alphaMax")) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::diameterModels::IATEsources::randomCoalescence::R() const +{ + tmp<volScalarField> tR + ( + new volScalarField + ( + IOobject + ( + "R", + iate_.phase().time().timeName(), + iate_.phase().mesh() + ), + iate_.phase().mesh(), + dimensionedScalar("R", dimless/dimTime, 0) + ) + ); + + volScalarField R = tR(); + + scalar Crc = Crc_.value(); + scalar C = C_.value(); + scalar alphaMax = alphaMax_.value(); + volScalarField Ut(this->Ut()); + const volScalarField& alpha = phase(); + const volScalarField& kappai = iate_.kappai(); + scalar cbrtAlphaMax = cbrt(alphaMax); + + forAll(R, celli) + { + if (alpha[celli] < alphaMax - SMALL) + { + scalar cbrtAlphaMaxMAlpha = cbrtAlphaMax - cbrt(alpha[celli]); + + R[celli] = + (-12)*phi()*kappai[celli]*alpha[celli] + *Crc + *Ut[celli] + *(1 - exp(-C*cbrt(alpha[celli]*alphaMax)/cbrtAlphaMaxMAlpha)) + /(cbrtAlphaMax*cbrtAlphaMaxMAlpha); + } + } + + return tR; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.H new file mode 100644 index 0000000000000000000000000000000000000000..42dad81250152fa932f6815f210a4e8f5043fb15 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/randomCoalescence/randomCoalescence.H @@ -0,0 +1,106 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::IATEsources::randomCoalescence + +Description + Random coalescence IATE source as defined in paper: + + \verbatim + "Development of Interfacial Area Transport Equation" + Ishii, M., Kim, S. and Kelly, J., + Nuclear Engineering and Technology, Vol.37 No.6 December 2005 + \endverbatim + + +SourceFiles + randomCoalescence.C + +\*---------------------------------------------------------------------------*/ + +#ifndef randomCoalescence_H +#define randomCoalescence_H + +#include "IATEsource.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + +/*---------------------------------------------------------------------------*\ + Class randomCoalescence Declaration +\*---------------------------------------------------------------------------*/ + +class randomCoalescence +: + public IATEsource +{ + // Private data + + dimensionedScalar Crc_; + dimensionedScalar C_; + dimensionedScalar alphaMax_; + + +public: + + //- Runtime type information + TypeName("randomCoalescence"); + + // Constructors + + randomCoalescence + ( + const IATE& iate, + const dictionary& dict + ); + + + //- Destructor + virtual ~randomCoalescence() + {} + + + // Member Functions + + virtual tmp<volScalarField> R() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace IATEsources +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C new file mode 100644 index 0000000000000000000000000000000000000000..334369f40f1d152b03cf6d469b3bd4c0370d4cfb --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.C @@ -0,0 +1,104 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "turbulentBreakUp.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + defineTypeNameAndDebug(turbulentBreakUp, 0); + addToRunTimeSelectionTable(IATEsource, turbulentBreakUp, dictionary); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::diameterModels::IATEsources::turbulentBreakUp:: +turbulentBreakUp +( + const IATE& iate, + const dictionary& dict +) +: + IATEsource(iate), + Cti_("Cti", dimless, dict.lookup("Cti")), + WeCr_("WeCr", dimless, dict.lookup("WeCr")) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::diameterModels::IATEsources::turbulentBreakUp::R() const +{ + tmp<volScalarField> tR + ( + new volScalarField + ( + IOobject + ( + "R", + iate_.phase().time().timeName(), + iate_.phase().mesh() + ), + iate_.phase().mesh(), + dimensionedScalar("R", dimless/dimTime, 0) + ) + ); + + volScalarField R = tR(); + + scalar Cti = Cti_.value(); + scalar WeCr = WeCr_.value(); + volScalarField Ut(this->Ut()); + volScalarField We(this->We()); + const volScalarField& d(iate_.d()()); + + forAll(R, celli) + { + if (We[celli] > WeCr) + { + R[celli] = + (1.0/3.0) + *Cti/d[celli] + *Ut[celli] + *sqrt(1 - WeCr/We[celli]) + *exp(-WeCr/We[celli]); + } + } + + return tR; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.H new file mode 100644 index 0000000000000000000000000000000000000000..d2040379c3bc24eae6261f96f5b7d77eeca57811 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/turbulentBreakUp/turbulentBreakUp.H @@ -0,0 +1,104 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::IATEsources::turbulentBreakUp + +Description + Turbulence-induced break-up IATE source as defined in paper: + + \verbatim + "Development of Interfacial Area Transport Equation" + Ishii, M., Kim, S. and Kelly, J., + Nuclear Engineering and Technology, Vol.37 No.6 December 2005 + \endverbatim + +SourceFiles + turbulentBreakUp.C + +\*---------------------------------------------------------------------------*/ + +#ifndef turbulentBreakUp_H +#define turbulentBreakUp_H + +#include "IATEsource.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + +/*---------------------------------------------------------------------------*\ + Class turbulentBreakUp Declaration +\*---------------------------------------------------------------------------*/ + +class turbulentBreakUp +: + public IATEsource +{ + // Private data + + dimensionedScalar Cti_; + dimensionedScalar WeCr_; + + +public: + + //- Runtime type information + TypeName("turbulentBreakUp"); + + // Constructors + + turbulentBreakUp + ( + const IATE& iate, + const dictionary& dict + ); + + + //- Destructor + virtual ~turbulentBreakUp() + {} + + + // Member Functions + + virtual tmp<volScalarField> R() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace IATEsources +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C new file mode 100644 index 0000000000000000000000000000000000000000..a015be5f76a46b7dc6eea5d8b877e269c6277029 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.C @@ -0,0 +1,72 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "wakeEntrainmentCoalescence.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + defineTypeNameAndDebug(wakeEntrainmentCoalescence, 0); + addToRunTimeSelectionTable + ( + IATEsource, + wakeEntrainmentCoalescence, + dictionary + ); +} +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::diameterModels::IATEsources::wakeEntrainmentCoalescence:: +wakeEntrainmentCoalescence +( + const IATE& iate, + const dictionary& dict +) +: + IATEsource(iate), + Cwe_("Cwe", dimless, dict.lookup("Cwe")) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::diameterModels::IATEsources::wakeEntrainmentCoalescence::R() const +{ + return (-12)*phi()*Cwe_*cbrt(CD())*iate_.a()*Ur(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.H new file mode 100644 index 0000000000000000000000000000000000000000..ed18bbc9b3c391e11befb3923964c711a02d446a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/IATE/IATEsources/wakeEntrainmentCoalescence/wakeEntrainmentCoalescence.H @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::IATEsources::wakeEntrainmentCoalescence + +Description + Bubble coalescence due to wake entrainment IATE source as defined in paper: + + \verbatim + "Development of Interfacial Area Transport Equation" + Ishii, M., Kim, S. and Kelly, J., + Nuclear Engineering and Technology, Vol.37 No.6 December 2005 + \endverbatim + +SourceFiles + wakeEntrainmentCoalescence.C + +\*---------------------------------------------------------------------------*/ + +#ifndef wakeEntrainmentCoalescence_H +#define wakeEntrainmentCoalescence_H + +#include "IATEsource.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ +namespace IATEsources +{ + +/*---------------------------------------------------------------------------*\ + Class wakeEntrainmentCoalescence Declaration +\*---------------------------------------------------------------------------*/ + +class wakeEntrainmentCoalescence +: + public IATEsource +{ + // Private data + + dimensionedScalar Cwe_; + + +public: + + //- Runtime type information + TypeName("wakeEntrainmentCoalescence"); + + // Constructors + + wakeEntrainmentCoalescence + ( + const IATE& iate, + const dictionary& dict + ); + + + //- Destructor + virtual ~wakeEntrainmentCoalescence() + {} + + + // Member Functions + + virtual tmp<volScalarField> R() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace IATEsources +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.C new file mode 100644 index 0000000000000000000000000000000000000000..4cd500fa36db4e3ec55aa4f2ff8476ce2e6b3692 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.C @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "constantDiameter.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + defineTypeNameAndDebug(constant, 0); + + addToRunTimeSelectionTable + ( + diameterModel, + constant, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::diameterModels::constant::constant +( + const dictionary& diameterProperties, + const phaseModel& phase +) +: + diameterModel(diameterProperties, phase), + d_("d", dimLength, diameterProperties_.lookup("d")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::diameterModels::constant::~constant() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::constant::d() const +{ + return tmp<Foam::volScalarField> + ( + new volScalarField + ( + IOobject + ( + "d", + phase_.time().timeName(), + phase_.mesh() + ), + phase_.mesh(), + d_ + ) + ); +} + + +bool Foam::diameterModels::constant::read(const dictionary& phaseProperties) +{ + diameterModel::read(phaseProperties); + + diameterProperties_.lookup("d") >> d_; + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.H new file mode 100644 index 0000000000000000000000000000000000000000..239c8c1fee8024f15687d172c0bfa0ef11d892f6 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/constantDiameter/constantDiameter.H @@ -0,0 +1,100 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::constant + +Description + Constant dispersed-phase particle diameter model. + +SourceFiles + constant.C + +\*---------------------------------------------------------------------------*/ + +#ifndef constant_H +#define constant_H + +#include "diameterModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + +/*---------------------------------------------------------------------------*\ + Class constant Declaration +\*---------------------------------------------------------------------------*/ + +class constant +: + public diameterModel +{ + // Private data + + //- The constant diameter of the phase + dimensionedScalar d_; + + +public: + + //- Runtime type information + TypeName("constant"); + + + // Constructors + + //- Construct from components + constant + ( + const dictionary& diameterProperties, + const phaseModel& phase + ); + + + //- Destructor + virtual ~constant(); + + + // Member Functions + + //- Return the diameter as a field + virtual tmp<volScalarField> d() const; + + //- Read diameterProperties dictionary + virtual bool read(const dictionary& diameterProperties); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C new file mode 100644 index 0000000000000000000000000000000000000000..a956565b4710a10ba4d594cc0e386a0ae7b2eb2f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.C @@ -0,0 +1,70 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "diameterModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(diameterModel, 0); + defineRunTimeSelectionTable(diameterModel, dictionary); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::diameterModel::diameterModel +( + const dictionary& diameterProperties, + const phaseModel& phase +) +: + diameterProperties_(diameterProperties), + phase_(phase) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::diameterModel::~diameterModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::diameterModel::correct() +{} + + +bool Foam::diameterModel::read(const dictionary& phaseProperties) +{ + diameterProperties_ = phaseProperties.subDict(type() + "Coeffs"); + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.H new file mode 100644 index 0000000000000000000000000000000000000000..19551f2d3c37c630cdae937ba2df681249fa0882 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/diameterModel.H @@ -0,0 +1,139 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModel + +Description + A2stract base-class for dispersed-phase particle diameter models. + +SourceFiles + diameterModel.C + newDiameterModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef diameterModel_H +#define diameterModel_H + +#include "dictionary.H" +#include "phaseModel.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class diameterModel Declaration +\*---------------------------------------------------------------------------*/ + +class diameterModel +{ + +protected: + + // Protected data + + dictionary diameterProperties_; + const phaseModel& phase_; + + +public: + + //- Runtime type information + TypeName("diameterModel"); + + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + diameterModel, + dictionary, + ( + const dictionary& diameterProperties, + const phaseModel& phase + ), + (diameterProperties, phase) + ); + + + // Constructors + + diameterModel + ( + const dictionary& diameterProperties, + const phaseModel& phase + ); + + + //- Destructor + virtual ~diameterModel(); + + + // Selectors + + static autoPtr<diameterModel> New + ( + const dictionary& diameterProperties, + const phaseModel& phase + ); + + + // Member Functions + + //- Return the phase diameter properties dictionary + const dictionary& diameterProperties() const + { + return diameterProperties_; + } + + //- Return the phase + const phaseModel& phase() const + { + return phase_; + } + + //- Return the phase mean diameter field + virtual tmp<volScalarField> d() const = 0; + + //- Correct the diameter field + virtual void correct(); + + //- Read phaseProperties dictionary + virtual bool read(const dictionary& phaseProperties) = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C new file mode 100644 index 0000000000000000000000000000000000000000..8db37d2bf024bb85a08e6a373ecc737937e20a46 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/diameterModel/newDiameterModel.C @@ -0,0 +1,63 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "diameterModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::diameterModel> Foam::diameterModel::New +( + const dictionary& dict, + const phaseModel& phase +) +{ + word diameterModelType + ( + dict.lookup("diameterModel") + ); + + Info << "Selecting diameterModel for phase " + << phase.name() + << ": " + << diameterModelType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(diameterModelType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("diameterModel::New") + << "Unknown diameterModelType type " + << diameterModelType << endl << endl + << "Valid diameterModel types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(dict.subDict(diameterModelType + "Coeffs"), phase); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.C new file mode 100644 index 0000000000000000000000000000000000000000..9fc5a48874f17968f47c58b0cd2e8454f3e4dad2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.C @@ -0,0 +1,91 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "isothermalDiameter.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + defineTypeNameAndDebug(isothermal, 0); + + addToRunTimeSelectionTable + ( + diameterModel, + isothermal, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::diameterModels::isothermal::isothermal +( + const dictionary& diameterProperties, + const phaseModel& phase +) +: + diameterModel(diameterProperties, phase), + d0_("d0", dimLength, diameterProperties_.lookup("d0")), + p0_("p0", dimPressure, diameterProperties_.lookup("p0")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::diameterModels::isothermal::~isothermal() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::diameterModels::isothermal::d() const +{ + const volScalarField& p = phase_.db().lookupObject<volScalarField> + ( + "p" + ); + + return d0_*pow(p0_/p, 1.0/3.0); +} + + +bool Foam::diameterModels::isothermal::read(const dictionary& phaseProperties) +{ + diameterModel::read(phaseProperties); + + diameterProperties_.lookup("d0") >> d0_; + diameterProperties_.lookup("p0") >> p0_; + + return true; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.H new file mode 100644 index 0000000000000000000000000000000000000000..96e718e827c1031e9e8461fcbeccf4435f3150e9 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/diameterModels/isothermalDiameter/isothermalDiameter.H @@ -0,0 +1,103 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::diameterModels::isothermal + +Description + Isothermal dispersed-phase particle diameter model. + +SourceFiles + isothermal.C + +\*---------------------------------------------------------------------------*/ + +#ifndef isothermal_H +#define isothermal_H + +#include "diameterModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace diameterModels +{ + +/*---------------------------------------------------------------------------*\ + Class isothermal Declaration +\*---------------------------------------------------------------------------*/ + +class isothermal +: + public diameterModel +{ + // Private data + + //- Reference diameter for the isothermal expansion + dimensionedScalar d0_; + + //- Reference pressure for the isothermal expansion + dimensionedScalar p0_; + + +public: + + //- Runtime type information + TypeName("isothermal"); + + + // Constructors + + //- Construct from components + isothermal + ( + const dictionary& diameterProperties, + const phaseModel& phase + ); + + + //- Destructor + virtual ~isothermal(); + + + // Member Functions + + //- Return the diameter field + virtual tmp<volScalarField> d() const; + + //- Read phaseProperties dictionary + virtual bool read(const dictionary& phaseProperties); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace diameterModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C new file mode 100644 index 0000000000000000000000000000000000000000..d62af01b53940703013ee81719186933b2c63e5c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.C @@ -0,0 +1,123 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "AnisothermalPhaseModel.H" +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::AnisothermalPhaseModel<BasePhaseModel>::AnisothermalPhaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + BasePhaseModel(fluid, phaseName), + K_ + ( + IOobject + ( + IOobject::groupName("K", this->name()), + fluid.mesh().time().timeName(), + fluid.mesh() + ), + fluid.mesh(), + dimensionedScalar("K", sqr(dimVelocity), scalar(0)) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::AnisothermalPhaseModel<BasePhaseModel>::~AnisothermalPhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel> +void Foam::AnisothermalPhaseModel<BasePhaseModel>::correctKinematics() +{ + BasePhaseModel::correctKinematics(); + K_ = 0.5*magSqr(this->U()); +} + + +template<class BasePhaseModel> +void Foam::AnisothermalPhaseModel<BasePhaseModel>::correctThermo() +{ + BasePhaseModel::correctThermo(); + + this->thermo_->correct(); +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::fvScalarMatrix> +Foam::AnisothermalPhaseModel<BasePhaseModel>::heEqn() +{ + const volScalarField& alpha = *this; + const surfaceScalarField& alphaPhi = this->alphaPhi(); + const surfaceScalarField& alphaRhoPhi = this->alphaRhoPhi(); + + const volScalarField& contErr(this->continuityError()); + + const volScalarField alphaEff + ( + this->thermo_->alphaEff(this->turbulence().mut()) + ); + + volScalarField& he = this->thermo_->he(); + + return + ( + fvm::ddt(alpha, this->rho(), he) + fvm::div(alphaRhoPhi, he) + - fvm::Sp(contErr, he) + + + fvc::ddt(alpha, this->rho(), K_) + fvc::div(alphaRhoPhi, K_) + - contErr*K_ + + - fvm::laplacian + ( + fvc::interpolate(alpha) + *fvc::interpolate(alphaEff), + he + ) + + + ( + he.name() == this->thermo_->phasePropertyName("e") + ? fvc::ddt(alpha)*this->thermo().p() + + fvc::div(alphaPhi, this->thermo().p()) + : -alpha*this->fluid().dpdt() + ) + == + this->Sh() + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H new file mode 100644 index 0000000000000000000000000000000000000000..a9c3953543704b9f39cc0440435208a6d798b36d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/AnisothermalPhaseModel/AnisothermalPhaseModel.H @@ -0,0 +1,99 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::AnisothermalPhaseModel + +Description + Class which represents a phase for which the temperature (strictly energy) + varies. Returns the energy equation and corrects the thermodynamic model. + +SourceFiles + AnisothermalPhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef AnisothermalPhaseModel_H +#define AnisothermalPhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel> +class AnisothermalPhaseModel +: + public BasePhaseModel +{ + // Private data + + //- Kinetic energy + volScalarField K_; + + +public: + + // Constructors + + AnisothermalPhaseModel(const phaseSystem& fluid, const word& phaseName); + + + //- Destructor + virtual ~AnisothermalPhaseModel(); + + + // Member Functions + + //- Correct the kinematics + virtual void correctKinematics(); + + //- Correct the thermodynamics + virtual void correctThermo(); + + //- Return the enthalpy equation + virtual tmp<fvScalarMatrix> heEqn(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "AnisothermalPhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C new file mode 100644 index 0000000000000000000000000000000000000000..909a5418b92ca77c9154671dab4334810244e493 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.C @@ -0,0 +1,87 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "InertPhaseModel.H" +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::InertPhaseModel<BasePhaseModel>::InertPhaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + BasePhaseModel(fluid, phaseName) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::InertPhaseModel<BasePhaseModel>::~InertPhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::tmp<Foam::fvScalarMatrix> +Foam::InertPhaseModel<BasePhaseModel>::R +( + volScalarField& Yi +) const +{ + return tmp<fvScalarMatrix> + ( + new fvScalarMatrix(Yi, dimMass/dimTime) + ); +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::volScalarField> +Foam::InertPhaseModel<BasePhaseModel>::Sh() const +{ + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + IOobject::groupName("Sh", this->name()), + this->mesh().time().timeName(), + this->mesh() + ), + this->mesh(), + dimensionedScalar("zero", dimEnergy/dimTime/dimVolume, 0), + zeroGradientFvPatchScalarField::typeName + ) + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H new file mode 100644 index 0000000000000000000000000000000000000000..c74088eaa505413fa79731e47dc6834b708f3bdd --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/InertPhaseModel/InertPhaseModel.H @@ -0,0 +1,95 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::InertPhaseModel + +Description + Class which represents an inert phase, with no reactions. Returns zero + reaction rate and heat. + +SourceFiles + InertPhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef InertPhaseModel_H +#define InertPhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel> +class InertPhaseModel +: + public BasePhaseModel +{ +public: + + // Constructors + + InertPhaseModel(const phaseSystem& fluid, const word& phaseName); + + + //- Destructor + virtual ~InertPhaseModel(); + + + // Member Functions + + // Thermo + + //- Return the fuel consumption rate matrix + virtual tmp<fvScalarMatrix> R + ( + volScalarField& Yi + ) const; + + //- Return the reaction heat source + virtual tmp<volScalarField> Sh() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "InertPhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C new file mode 100644 index 0000000000000000000000000000000000000000..07f99c5a5d23dc2d5cf315705a72e127f44b5bd2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.C @@ -0,0 +1,64 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "IsothermalPhaseModel.H" +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::IsothermalPhaseModel<BasePhaseModel>::IsothermalPhaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + BasePhaseModel(fluid, phaseName) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::IsothermalPhaseModel<BasePhaseModel>::~IsothermalPhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel> +void Foam::IsothermalPhaseModel<BasePhaseModel>::correctThermo() +{} + + +template<class BasePhaseModel> +Foam::tmp<Foam::fvScalarMatrix> +Foam::IsothermalPhaseModel<BasePhaseModel>::heEqn() +{ + return tmp<fvScalarMatrix>(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H new file mode 100644 index 0000000000000000000000000000000000000000..d43a1a6119b6efbcb8148e620074e04850454cc2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/IsothermalPhaseModel/IsothermalPhaseModel.H @@ -0,0 +1,91 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::IsothermalPhaseModel + +Description + Class which represents a phase for which the temperature (strictly energy) + remains constant. Returns an empty energy equation and does nothing when + correctThermo is called. + +SourceFiles + IsothermalPhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef IsothermalPhaseModel_H +#define IsothermalPhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel> +class IsothermalPhaseModel +: + public BasePhaseModel +{ +public: + + // Constructors + + IsothermalPhaseModel(const phaseSystem& fluid, const word& phaseName); + + + //- Destructor + virtual ~IsothermalPhaseModel(); + + + // Member Functions + + //- Correct the thermodynamics + virtual void correctThermo(); + + //- Return the enthalpy equation + virtual tmp<fvScalarMatrix> heEqn(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "IsothermalPhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C new file mode 100644 index 0000000000000000000000000000000000000000..61658e249caf8791af5c55c2f4b154e2092243cf --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.C @@ -0,0 +1,361 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "MovingPhaseModel.H" +#include "phaseSystem.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "fixedValueFvPatchFields.H" +#include "slipFvPatchFields.H" +#include "partialSlipFvPatchFields.H" + +#include "fvmDdt.H" +#include "fvmDiv.H" +#include "fvmSup.H" +#include "fvcDdt.H" +#include "fvcDiv.H" +#include "surfaceInterpolate.H" +#include "fvMatrix.H" + +// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::tmp<Foam::surfaceScalarField> +Foam::MovingPhaseModel<BasePhaseModel>::generatePhi +( + const word& phiName, + const volVectorField& U +) const +{ + IOobject phiHeader + ( + phiName, + U.mesh().time().timeName(), + U.mesh(), + IOobject::NO_READ + ); + + if (phiHeader.headerOk()) + { + Info<< "Reading face flux field " << phiName << endl; + + return + tmp<surfaceScalarField> + ( + new surfaceScalarField + ( + IOobject + ( + phiName, + U.mesh().time().timeName(), + U.mesh(), + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + U.mesh() + ) + ); + } + else + { + Info<< "Calculating face flux field " << phiName << endl; + + wordList phiTypes + ( + U.boundaryField().size(), + calculatedFvPatchScalarField::typeName + ); + + forAll(U.boundaryField(), i) + { + if + ( + isA<fixedValueFvPatchVectorField>(U.boundaryField()[i]) + || isA<slipFvPatchVectorField>(U.boundaryField()[i]) + || isA<partialSlipFvPatchVectorField>(U.boundaryField()[i]) + ) + { + phiTypes[i] = fixedValueFvPatchScalarField::typeName; + } + } + + return tmp<surfaceScalarField> + ( + new surfaceScalarField + ( + IOobject + ( + phiName, + U.mesh().time().timeName(), + U.mesh(), + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + fvc::interpolate(U) & U.mesh().Sf(), + phiTypes + ) + ); + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::MovingPhaseModel<BasePhaseModel>::MovingPhaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + BasePhaseModel(fluid, phaseName), + U_ + ( + IOobject + ( + IOobject::groupName("U", this->name()), + fluid.mesh().time().timeName(), + fluid.mesh(), + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + fluid.mesh() + ), + phi_ + ( + generatePhi + ( + IOobject::groupName("phi", this->name()), + U_ + ) + ), + alphaPhi_ + ( + IOobject + ( + IOobject::groupName("alphaPhi", this->name()), + fluid.mesh().time().timeName(), + fluid.mesh() + ), + fluid.mesh(), + dimensionedScalar("0", dimensionSet(0, 3, -1, 0, 0), 0) + ), + alphaRhoPhi_ + ( + IOobject + ( + IOobject::groupName("alphaRhoPhi", this->name()), + fluid.mesh().time().timeName(), + fluid.mesh() + ), + fluid.mesh(), + dimensionedScalar("0", dimensionSet(1, 0, -1, 0, 0), 0) + ), + DUDt_ + ( + IOobject + ( + IOobject::groupName("DUDt", this->name()), + fluid.mesh().time().timeName(), + fluid.mesh() + ), + fluid.mesh(), + dimensionedVector("0", dimAcceleration, vector::zero) + ), + turbulence_ + ( + PhaseCompressibleTurbulenceModel<phaseModel>::New + ( + *this, + this->thermo().rho(), + U_, + alphaRhoPhi_, + phi_, + *this + ) + ), + continuityError_ + ( + IOobject + ( + IOobject::groupName("continuityError", this->name()), + fluid.mesh().time().timeName(), + fluid.mesh() + ), + fluid.mesh(), + dimensionedScalar("0", dimDensity/dimTime, 0) + ) +{ + correctKinematics(); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::MovingPhaseModel<BasePhaseModel>::~MovingPhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel> +void Foam::MovingPhaseModel<BasePhaseModel>::correct() +{ + BasePhaseModel::correct(); + + continuityError_ = + fvc::ddt(*this, this->thermo().rho()) + fvc::div(alphaRhoPhi_); +} + + +template<class BasePhaseModel> +void Foam::MovingPhaseModel<BasePhaseModel>::correctKinematics() +{ + BasePhaseModel::correctKinematics(); + + DUDt_ = fvc::ddt(U_) + fvc::div(phi_, U_) - fvc::div(phi_)*U_; +} + + +template<class BasePhaseModel> +void Foam::MovingPhaseModel<BasePhaseModel>::correctTurbulence() +{ + BasePhaseModel::correctTurbulence(); + + turbulence_->correct(); +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::fvVectorMatrix> +Foam::MovingPhaseModel<BasePhaseModel>::UEqn() +{ + return + ( + fvm::ddt(*this, this->thermo().rho(), U_) + + fvm::div(alphaRhoPhi_, U_) + - fvm::Sp(continuityError_, U_) + + turbulence_->divDevRhoReff(U_) + ); +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::volVectorField> +Foam::MovingPhaseModel<BasePhaseModel>::U() const +{ + return U_; +} + + +template<class BasePhaseModel> +Foam::volVectorField& +Foam::MovingPhaseModel<BasePhaseModel>::U() +{ + return U_; +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::volVectorField> +Foam::MovingPhaseModel<BasePhaseModel>::DUDt() const +{ + return DUDt_; +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::volScalarField> +Foam::MovingPhaseModel<BasePhaseModel>::continuityError() const +{ + return continuityError_; +} + + +template<class BasePhaseModel> +Foam::volScalarField& +Foam::MovingPhaseModel<BasePhaseModel>::continuityError() +{ + return continuityError_; +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::surfaceScalarField> +Foam::MovingPhaseModel<BasePhaseModel>::phi() const +{ + return phi_; +} + + +template<class BasePhaseModel> +Foam::surfaceScalarField& +Foam::MovingPhaseModel<BasePhaseModel>::phi() +{ + return phi_; +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::surfaceScalarField> +Foam::MovingPhaseModel<BasePhaseModel>::alphaPhi() const +{ + return alphaPhi_; +} + + +template<class BasePhaseModel> +Foam::surfaceScalarField& +Foam::MovingPhaseModel<BasePhaseModel>::alphaPhi() +{ + return alphaPhi_; +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::surfaceScalarField> +Foam::MovingPhaseModel<BasePhaseModel>::alphaRhoPhi() const +{ + return alphaRhoPhi_; +} + + +template<class BasePhaseModel> +Foam::surfaceScalarField& +Foam::MovingPhaseModel<BasePhaseModel>::alphaRhoPhi() +{ + return alphaRhoPhi_; +} + + +template<class BasePhaseModel> +const Foam::PhaseCompressibleTurbulenceModel<Foam::phaseModel>& +Foam::MovingPhaseModel<BasePhaseModel>::turbulence() const +{ + return turbulence_; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H new file mode 100644 index 0000000000000000000000000000000000000000..b92f2599356b41d6f1ea8a9df0d81d229e6f0255 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MovingPhaseModel/MovingPhaseModel.H @@ -0,0 +1,189 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::MovingPhaseModel + +Description + Class which represents a moving fluid phase. Holds the velocity, fluxes and + turbulence model. Provides access to the turbulent quantities. + + Possible future extensions include separating the turbulent fuctionality + into another layer. It should also be possible to replace this layer with a + stationary phase model, in order to model packed beds or simple porous + media. This would probably require extra functionality, such as returning + the inputs into the general pressure equation (A, HbyA, etc ...). + + Note that this class does not return the turbulence model, it just provides + indirect access to the turbulent data. This is so a layer without + turbulence modelling (such as a stationary model) could be substituted. + +SourceFiles + MovingPhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef MovingPhaseModel_H +#define MovingPhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +template<class TransportModel> +class PhaseCompressibleTurbulenceModel; + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel> +class MovingPhaseModel +: + public BasePhaseModel +{ + // Private data + + //- Velocity field + volVectorField U_; + + //- Flux + surfaceScalarField phi_; + + //- Volumetric flux + surfaceScalarField alphaPhi_; + + //- Mass flux + surfaceScalarField alphaRhoPhi_; + + //- Lagrangian acceleration field (needed for virtual-mass) + volVectorField DUDt_; + + //- Turbulence model + autoPtr<PhaseCompressibleTurbulenceModel<phaseModel> > turbulence_; + + //- Continuity error + volScalarField continuityError_; + + + // Private static member functions + + //- Generate the flux field + tmp<surfaceScalarField> generatePhi + ( + const word& phiName, + const volVectorField& U + ) const; + + +public: + + // Constructors + + MovingPhaseModel + ( + const phaseSystem& fluid, + const word& phaseName + ); + + + //- Destructor + virtual ~MovingPhaseModel(); + + + // Member Functions + + //- Correct the phase properties other than the thermo and turbulence + virtual void correct(); + + //- Correct the kinematics + virtual void correctKinematics(); + + //- Correct the turbulence + virtual void correctTurbulence(); + + //- Return the momentum equation + virtual tmp<fvVectorMatrix> UEqn(); + + // Momentum + + //- Constant access the velocity + virtual tmp<volVectorField> U() const; + + //- Access the velocity + virtual volVectorField& U(); + + //- Return the substantive acceleration + virtual tmp<volVectorField> DUDt() const; + + //- Constant access the continuity error + virtual tmp<volScalarField> continuityError() const; + + //- Access the continuity error + virtual volScalarField& continuityError(); + + //- Constant access the volumetric flux + virtual tmp<surfaceScalarField> phi() const; + + //- Access the volumetric flux + virtual surfaceScalarField& phi(); + + //- Constant access the volumetric flux of the phase + virtual tmp<surfaceScalarField> alphaPhi() const; + + //- Access the volumetric flux of the phase + virtual surfaceScalarField& alphaPhi(); + + //- Constant access the mass flux of the phase + virtual tmp<surfaceScalarField> alphaRhoPhi() const; + + //- Access the mass flux of the phase + virtual surfaceScalarField& alphaRhoPhi(); + + + // Turbulence + + //- Return the turbulence model + virtual const PhaseCompressibleTurbulenceModel<phaseModel>& + turbulence() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "MovingPhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C new file mode 100644 index 0000000000000000000000000000000000000000..3d34d8cfe0fd461d3e887a4bf93ceb7cfea1a1ed --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.C @@ -0,0 +1,190 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "MultiComponentPhaseModel.H" + +#include "phaseSystem.H" + +#include "fvmDdt.H" +#include "fvmDiv.H" +#include "fvmSup.H" +#include "fvmLaplacian.H" +#include "fvcDdt.H" +#include "fvcDiv.H" +#include "fvMatrix.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::MultiComponentPhaseModel<BasePhaseModel>::MultiComponentPhaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + BasePhaseModel(fluid, phaseName), + Sc_ + ( + "Sc", + dimless, + fluid.subDict(phaseName).lookup("Sc") + ), + residualAlpha_ + ( + "residualAlpha", + dimless, + fluid.mesh().solverDict("Yi").lookup("residualAlpha") + ), + inertIndex_(-1) +{ + const word inertSpecie + ( + this->thermo_->lookupOrDefault("inertSpecie", word::null) + ); + + if (inertSpecie != word::null) + { + inertIndex_ = this->thermo_->composition().species()[inertSpecie]; + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::MultiComponentPhaseModel<BasePhaseModel>::~MultiComponentPhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel> +void Foam::MultiComponentPhaseModel<BasePhaseModel>::correctThermo() +{ + volScalarField Yt + ( + IOobject + ( + IOobject::groupName("Yt", this->name()), + this->fluid().mesh().time().timeName(), + this->fluid().mesh() + ), + this->fluid().mesh(), + dimensionedScalar("zero", dimless, 0) + ); + + PtrList<volScalarField>& Yi = Y(); + + forAll(Yi, i) + { + if (i != inertIndex_) + { + Yt += Yi[i]; + } + } + + if (inertIndex_ != -1) + { + Yi[inertIndex_] = scalar(1) - Yt; + Yi[inertIndex_].max(0); + } + else + { + forAll(Yi, i) + { + Yi[i] /= Yt; + Yi[i].max(0); + } + } + + BasePhaseModel::correctThermo(); +} + + +template<class BasePhaseModel> +Foam::tmp<Foam::fvScalarMatrix> +Foam::MultiComponentPhaseModel<BasePhaseModel>::YiEqn +( + volScalarField& Yi +) +{ + if + ( + (inertIndex_ != -1) + && ( + Yi.name() + == IOobject::groupName + ( + this->thermo_->composition().species()[inertIndex_], + this->name() + ) + ) + ) + { + return tmp<fvScalarMatrix>(); + } + + const volScalarField& alpha = *this; + const surfaceScalarField& alphaRhoPhi = this->alphaRhoPhi(); + const volScalarField& rho = this->rho(); + + return + ( + fvm::ddt(alpha, rho, Yi) + + fvm::div(alphaRhoPhi, Yi, "div(" + alphaRhoPhi.name() + ",Yi)") + - fvm::Sp(this->continuityError(), Yi) + + - fvm::laplacian + ( + fvc::interpolate(alpha) + *fvc::interpolate(this->turbulence().nut()*rho/Sc_), + Yi + ) + == + this->R(Yi) + + + fvc::ddt(residualAlpha_*rho, Yi) + - fvm::ddt(residualAlpha_*rho, Yi) + ); +} + + +template<class BasePhaseModel> +const Foam::PtrList<Foam::volScalarField>& +Foam::MultiComponentPhaseModel<BasePhaseModel>::Y() const +{ + return this->thermo_->composition().Y(); +} + + +template<class BasePhaseModel> +Foam::PtrList<Foam::volScalarField>& +Foam::MultiComponentPhaseModel<BasePhaseModel>::Y() +{ + return this->thermo_->composition().Y(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H new file mode 100644 index 0000000000000000000000000000000000000000..272e520eeb311d2196e09438e3a5b912d49d16a1 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/MultiComponentPhaseModel/MultiComponentPhaseModel.H @@ -0,0 +1,117 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::MultiComponentPhaseModel + +Description + Class which represents a phase with multiple species. Returns the species' + mass fractions, and their governing equations. + +SourceFiles + MultiComponentPhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef MultiComponentPhaseModel_H +#define MultiComponentPhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel> +class MultiComponentPhaseModel +: + public BasePhaseModel +{ +protected: + + // Protected data + + //- Schmidt number + dimensionedScalar Sc_; + + //- Residual phase fraction + dimensionedScalar residualAlpha_; + + //- Inert species index + label inertIndex_; + + +public: + + // Constructors + + MultiComponentPhaseModel + ( + const phaseSystem& fluid, + const word& phaseName + ); + + + //- Destructor + virtual ~MultiComponentPhaseModel(); + + + // Member Functions + + //- Correct the thermodynamics + virtual void correctThermo(); + + //- Return the species fraction equation + virtual tmp<fvScalarMatrix> YiEqn + ( + volScalarField& Yi + ); + + //- Constant access the species mass fractions + virtual const PtrList<volScalarField>& Y() const; + + //- Access the species mass fractions + virtual PtrList<volScalarField>& Y(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "MultiComponentPhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C new file mode 100644 index 0000000000000000000000000000000000000000..c3e1831158af975200e8b012ebf99415198f89f4 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.C @@ -0,0 +1,86 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "PurePhaseModel.H" +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::PurePhaseModel<BasePhaseModel>::PurePhaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + BasePhaseModel(fluid, phaseName) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::PurePhaseModel<BasePhaseModel>::~PurePhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel> +Foam::tmp<Foam::fvScalarMatrix> +Foam::PurePhaseModel<BasePhaseModel>::YiEqn +( + volScalarField& Yi +) +{ + notImplemented + ( + "template<class BasePhaseModel> " + "Foam::tmp<Foam::fvScalarMatrix> " + "Foam::PurePhaseModel<BasePhaseModel>::YiEqn" + "(volScalarField& Yi) const" + ); + + return tmp<fvScalarMatrix>(); +} + + +template<class BasePhaseModel> +const Foam::PtrList<Foam::volScalarField>& +Foam::PurePhaseModel<BasePhaseModel>::Y() const +{ + return Y_; +} + + +template<class BasePhaseModel> +Foam::PtrList<Foam::volScalarField>& +Foam::PurePhaseModel<BasePhaseModel>::Y() +{ + return Y_; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H new file mode 100644 index 0000000000000000000000000000000000000000..f17c60cb6f8c91b9f7aacac25341390a2b84f525 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/PurePhaseModel/PurePhaseModel.H @@ -0,0 +1,104 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::PurePhaseModel + +Description + Class which represents pure phases, i.e. without any species. Returns an + empty list of mass fractions. + +SourceFiles + PurePhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef PurePhaseModel_H +#define PurePhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel> +class PurePhaseModel +: + public BasePhaseModel +{ +protected: + + // Protected data + + //- Empty mass fraction field list + PtrList<volScalarField> Y_; + + +public: + + // Constructors + + PurePhaseModel(const phaseSystem& fluid, const word& phaseName); + + + //- Destructor + virtual ~PurePhaseModel(); + + + // Member Functions + + //- Return the species fraction equation + virtual tmp<fvScalarMatrix> YiEqn(volScalarField& Yi); + + + // Thermo + + //- Return the species mass fractions + virtual const PtrList<volScalarField>& Y() const; + + //- Access the species mass fractions + virtual PtrList<volScalarField>& Y(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "PurePhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C new file mode 100644 index 0000000000000000000000000000000000000000..a6ab32d2fcb8c0c91daef702360400c87eb6b86d --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.C @@ -0,0 +1,108 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "ReactingPhaseModel.H" +#include "phaseSystem.H" +#include "fvMatrix.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel, class ReactionType> +Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::ReactingPhaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + BasePhaseModel(fluid, phaseName, false), + reaction_ + ( + ReactionType::New(fluid.mesh(), phaseName) + ) +{ + this->thermo_ = &reaction_->thermo(); + + this->thermo_->validate + ( + IOobject::groupName(phaseModel::typeName, this->name()), + "h", + "e" + ); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel, class ReactionType> +Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::~ReactingPhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel, class ReactionType> +void Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::correctThermo() +{ + reaction_->setTurbulence + ( + const_cast<compressibleTurbulenceModel&> + ( + this->mesh().template lookupObject<compressibleTurbulenceModel> + ( + IOobject::groupName + ( + turbulenceModel::propertiesName, + this->name() + ) + ) + ) + ); + + BasePhaseModel::correctThermo(); + + reaction_->correct(); +} + + +template<class BasePhaseModel, class ReactionType> +Foam::tmp<Foam::fvScalarMatrix> +Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::R +( + volScalarField& Yi +) const +{ + return reaction_->R(Yi); +} + + +template<class BasePhaseModel, class ReactionType> +Foam::tmp<Foam::volScalarField> +Foam::ReactingPhaseModel<BasePhaseModel, ReactionType>::Sh() const +{ + return reaction_->Sh(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H new file mode 100644 index 0000000000000000000000000000000000000000..988674d55c8fa8010fbae34e6b2b0a12c294692c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ReactingPhaseModel/ReactingPhaseModel.H @@ -0,0 +1,108 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::ReactingPhaseModel + +Description + Class which represents phases with volumetric reactions. Returns the + reaction rate and heat. + +SourceFiles + ReactingPhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef ReactingPhaseModel_H +#define ReactingPhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel, class ReactionType> +class ReactingPhaseModel +: + public BasePhaseModel +{ +protected: + + // Protected data + + //- Reaction model + autoPtr<ReactionType> reaction_; + + +public: + + // Constructors + + ReactingPhaseModel + ( + const phaseSystem& fluid, + const word& phaseName + ); + + + //- Destructor + virtual ~ReactingPhaseModel(); + + + // Member Functions + + //- Correct the thermodynamics + virtual void correctThermo(); + + //- Return the species fraction equation + virtual tmp<fvScalarMatrix> R + ( + volScalarField& Yi + ) const; + + //- Return the reacton heat source + virtual tmp<volScalarField> Sh() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "ReactingPhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C new file mode 100644 index 0000000000000000000000000000000000000000..2befe1585afb66487fcd56f38a52c895cbed32ce --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.C @@ -0,0 +1,158 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "ThermoPhaseModel.H" + +#include "phaseSystem.H" + +#include "fvmDdt.H" +#include "fvmDiv.H" +#include "fvmSup.H" +#include "fvmLaplacian.H" +#include "fvcDdt.H" +#include "fvcDiv.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class BasePhaseModel, class ThermoType> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::ThermoPhaseModel +( + const phaseSystem& fluid, + const word& phaseName, + const bool createThermo +) +: + BasePhaseModel(fluid, phaseName) +{ + if (createThermo) + { + thermoPtr_.set + ( + ThermoType::New(fluid.mesh(), phaseName).ptr() + ); + + thermo_ = thermoPtr_.ptr(); + + thermo_->validate + ( + IOobject::groupName(phaseModel::typeName, this->name()), + "h", + "e" + ); + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class BasePhaseModel, class ThermoType> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::~ThermoPhaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class BasePhaseModel, class ThermoType> +const Foam::rhoThermo& +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::thermo() const +{ + return *thermo_; +} + + +template<class BasePhaseModel, class ThermoType> +Foam::rhoThermo& +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::thermo() +{ + return *thermo_; +} + + +template<class BasePhaseModel, class ThermoType> +Foam::tmp<Foam::volScalarField> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::rho() const +{ + return thermo_->rho(); +} + + +template<class BasePhaseModel, class ThermoType> +Foam::tmp<Foam::volScalarField> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::mu() const +{ + return thermo_->mu(); +} + + +template<class BasePhaseModel, class ThermoType> +Foam::tmp<Foam::scalarField> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::mu +( + const label patchI +) const +{ + return thermo_->mu(patchI); +} + + +template<class BasePhaseModel, class ThermoType> +Foam::tmp<Foam::volScalarField> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::nu() const +{ + return thermo_->nu(); +} + + +template<class BasePhaseModel, class ThermoType> +Foam::tmp<Foam::scalarField> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::nu +( + const label patchI +) const +{ + return thermo_->nu(patchI); +} + + +template<class BasePhaseModel, class ThermoType> +Foam::tmp<Foam::volScalarField> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::kappa() const +{ + return thermo_->kappa(); +} + + +template<class BasePhaseModel, class ThermoType> +Foam::tmp<Foam::scalarField> +Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::kappa +( + const label patchI +) const +{ + return thermo_->kappa(patchI); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H new file mode 100644 index 0000000000000000000000000000000000000000..0c2b243a83c2d7e2613ceded67c82cf479194e1c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/ThermoPhaseModel/ThermoPhaseModel.H @@ -0,0 +1,138 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::ThermoPhaseModel + +Description + Class which represents a phase with a thermodynamic model. Provides access + to the thermodynamic variables. Note that the thermo model itself is not + returned as this class could be substituted in the hierarcy for one which + mirrors the functionality, but does not include a thermo model; an + incompressible phase model, for example. + +SourceFiles + ThermoPhaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef ThermoPhaseModel_H +#define ThermoPhaseModel_H + +#include "phaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class rhoThermo; + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +template<class BasePhaseModel, class ThermoType> +class ThermoPhaseModel +: + public BasePhaseModel +{ +protected: + + // Protected data + + //- Thermophysical model + autoPtr<ThermoType> thermoPtr_; + + //- Thermophysical model + ThermoType* thermo_; + + +public: + + // Constructors + + ThermoPhaseModel + ( + const phaseSystem& fluid, + const word& phaseName, + const bool createThermo = true + ); + + + //- Destructor + virtual ~ThermoPhaseModel(); + + + // Member Functions + + // Thermo + + //- Return const access to the thermophysical model + virtual const rhoThermo& thermo() const; + + //- Return non-const access to the thermophysical model + // for correction + virtual rhoThermo& thermo(); + + //- Return the density field + virtual tmp<volScalarField> rho() const; + + + // Transport + + //- Return the laminar dynamic viscosity + virtual tmp<volScalarField> mu() const; + + //- Access the laminar dynamic viscosity + virtual tmp<scalarField> mu(const label patchI) const; + + //- Return the laminar kinematic viscosity + virtual tmp<volScalarField> nu() const; + + //- Access the laminar kinematic viscosity + virtual tmp<scalarField> nu(const label patchI) const; + + //- Return the laminar thermal conductivity + virtual tmp<volScalarField> kappa() const; + + //- Access the laminar thermal conductivity + virtual tmp<scalarField> kappa(const label patchI) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "ThermoPhaseModel.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C new file mode 100644 index 0000000000000000000000000000000000000000..f2686cedb5c764f55f286cba302b0b6df697a279 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/newPhaseModel.C @@ -0,0 +1,58 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "phaseModel.H" +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::phaseModel> Foam::phaseModel::New +( + const phaseSystem& fluid, + const word& phaseName +) +{ + word phaseModelType(fluid.subDict(phaseName).lookup("type")); + + Info<< "Selecting phaseModel for " + << phaseName << ": " << phaseModelType << endl; + + phaseSystemConstructorTable::iterator cstrIter = + phaseSystemConstructorTablePtr_->find(phaseModelType); + + if (cstrIter == phaseSystemConstructorTablePtr_->end()) + { + FatalErrorIn("phaseModel::New") + << "Unknown phaseModelType type " + << phaseModelType << endl << endl + << "Valid phaseModel types are : " << endl + << phaseSystemConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(fluid, phaseName); +} + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C new file mode 100644 index 0000000000000000000000000000000000000000..3518650190401af7f7d8e1af4c70c2319457a016 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.C @@ -0,0 +1,137 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "phaseModel.H" +#include "phaseSystem.H" +#include "diameterModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(phaseModel, 0); + defineRunTimeSelectionTable(phaseModel, phaseSystem); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::phaseModel::phaseModel +( + const phaseSystem& fluid, + const word& phaseName +) +: + volScalarField + ( + IOobject + ( + IOobject::groupName("alpha", phaseName), + fluid.mesh().time().timeName(), + fluid.mesh(), + IOobject::READ_IF_PRESENT, + IOobject::AUTO_WRITE + ), + fluid.mesh(), + dimensionedScalar("alpha", dimless, 0) + ), + + fluid_(fluid), + name_(phaseName), + residualAlpha_ + ( + "residualAlpha", + dimless, + fluid.subDict(phaseName).lookup("residualAlpha") + ), + alphaMax_(fluid.subDict(phaseName).lookupOrDefault("alphaMax", 1.0)) +{ + diameterModel_ = diameterModel::New(fluid.subDict(phaseName), *this); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::phaseModel::~phaseModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +const Foam::word& Foam::phaseModel::name() const +{ + return name_; +} + + +const Foam::phaseSystem& Foam::phaseModel::fluid() const +{ + return fluid_; +} + + +const Foam::dimensionedScalar& Foam::phaseModel::residualAlpha() const +{ + return residualAlpha_; +} + + +Foam::scalar Foam::phaseModel::alphaMax() const +{ + return alphaMax_; +} + + +Foam::tmp<Foam::volScalarField> Foam::phaseModel::d() const +{ + return diameterModel_().d(); +} + + +void Foam::phaseModel::correct() +{ + diameterModel_->correct(); +} + + +void Foam::phaseModel::correctKinematics() +{} + + +void Foam::phaseModel::correctThermo() +{} + + +void Foam::phaseModel::correctTurbulence() +{} + + +bool Foam::phaseModel::read() +{ + return diameterModel_->read(fluid_.subDict(name_)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H new file mode 100644 index 0000000000000000000000000000000000000000..0afb9f7855073a7383d0cc6850898cd75aadc447 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModel.H @@ -0,0 +1,258 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::phaseModel + +SourceFiles + phaseModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef phaseModel_H +#define phaseModel_H + +#include "dictionary.H" +#include "dimensionedScalar.H" +#include "volFields.H" +#include "surfaceFields.H" +#include "fvMatricesFwd.H" +#include "rhoThermo.H" +#include "runTimeSelectionTables.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class phaseSystem; +class diameterModel; + +template<class TransportModel> +class PhaseCompressibleTurbulenceModel; + +/*---------------------------------------------------------------------------*\ + Class phaseModel Declaration +\*---------------------------------------------------------------------------*/ + +class phaseModel +: + public volScalarField +{ + // Private data + + //- Reference to the phaseSystem to which this phase belongs + const phaseSystem& fluid_; + + //- Name of phase + word name_; + + //- Return the residual phase-fraction for given phase + // Used to stabilize the phase momentum as the phase-fraction -> 0 + dimensionedScalar residualAlpha_; + + //- Optional maximum phase-fraction (e.g. packing limit) + scalar alphaMax_; + + //- Diameter model + autoPtr<diameterModel> diameterModel_; + + +public: + + //- Runtime type information + ClassName("phaseModel"); + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + phaseModel, + phaseSystem, + ( + const phaseSystem& fluid, + const word& phaseName + ), + (fluid, phaseName) + ); + + + // Constructors + + phaseModel + ( + const phaseSystem& fluid, + const word& phaseName + ); + + + //- Destructor + virtual ~phaseModel(); + + + // Selectors + + static autoPtr<phaseModel> New + ( + const phaseSystem& fluid, + const word& phaseName + ); + + + // Member Functions + + //- Return the name of this phase + const word& name() const; + + //- Return the system to which this phase belongs + const phaseSystem& fluid() const; + + //- Return the residual phase-fraction for given phase + // Used to stabilize the phase momentum as the phase-fraction -> 0 + const dimensionedScalar& residualAlpha() const; + + //- Return the maximum phase-fraction (e.g. packing limit) + scalar alphaMax() const; + + //- Return the Sauter-mean diameter + tmp<volScalarField> d() const; + + //- Correct the phase properties + virtual void correct(); + + //- Correct the kinematics + virtual void correctKinematics(); + + //- Correct the thermodynamics + virtual void correctThermo(); + + //- Correct the turbulence + virtual void correctTurbulence(); + + //- Return the momentum equation + virtual tmp<fvVectorMatrix> UEqn() = 0; + + //- Return the enthalpy equation + virtual tmp<fvScalarMatrix> heEqn() = 0; + + //- Return the species fraction equation + virtual tmp<fvScalarMatrix> YiEqn(volScalarField& Yi) = 0; + + //- Read phase properties dictionary + virtual bool read(); + + + // Thermo + + //- Return const access to the thermophysical model + virtual const rhoThermo& thermo() const = 0; + + //- Return non-const access to the thermophysical model + // for correction + virtual rhoThermo& thermo() = 0; + + //- Return the density field + virtual tmp<volScalarField> rho() const = 0; + + //- Constant access the species mass fractions + virtual const PtrList<volScalarField>& Y() const = 0; + + //- Access the species mass fractions + virtual PtrList<volScalarField>& Y() = 0; + + + // Momentum + + //- Constant access the velocity + virtual tmp<volVectorField> U() const = 0; + + //- Access the velocity + virtual volVectorField& U() = 0; + + //- Return the substantive acceleration + virtual tmp<volVectorField> DUDt() const = 0; + + //- Constant access the continuity error + virtual tmp<volScalarField> continuityError() const = 0; + + //- Access the continuity error + virtual volScalarField& continuityError() = 0; + + //- Constant access the volumetric flux + virtual tmp<surfaceScalarField> phi() const = 0; + + //- Access the volumetric flux + virtual surfaceScalarField& phi() = 0; + + //- Constant access the volumetric flux of the phase + virtual tmp<surfaceScalarField> alphaPhi() const = 0; + + //- Access the volumetric flux of the phase + virtual surfaceScalarField& alphaPhi() = 0; + + //- Constant access the mass flux of the phase + virtual tmp<surfaceScalarField> alphaRhoPhi() const = 0; + + //- Access the mass flux of the phase + virtual surfaceScalarField& alphaRhoPhi() = 0; + + + // Transport + + //- Return the laminar dynamic viscosity + virtual tmp<volScalarField> mu() const = 0; + + //- Return the laminar dynamic viscosity on a patch + virtual tmp<scalarField> mu(const label patchI) const = 0; + + //- Return the laminar kinematic viscosity + virtual tmp<volScalarField> nu() const = 0; + + //- Return the laminar kinematic viscosity on a patch + virtual tmp<scalarField> nu(const label patchI) const = 0; + + //- Return the laminar thermal conductivity + virtual tmp<volScalarField> kappa() const = 0; + + //- Return the laminar thermal conductivity on a patch + virtual tmp<scalarField> kappa(const label patchI) const = 0; + + + // Turbulence + + //- Return the turbulence model + virtual const PhaseCompressibleTurbulenceModel<phaseModel>& + turbulence() const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C new file mode 100644 index 0000000000000000000000000000000000000000..45fe19295c0cde5837e3310699eac56cd1d93988 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseModel/phaseModel/phaseModels.C @@ -0,0 +1,145 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "addToRunTimeSelectionTable.H" + +#include "rhoThermo.H" +#include "rhoReactionThermo.H" + +#include "rhoCombustionModel.H" + +#include "phaseModel.H" +#include "ThermoPhaseModel.H" +#include "IsothermalPhaseModel.H" +#include "AnisothermalPhaseModel.H" +#include "PurePhaseModel.H" +#include "MultiComponentPhaseModel.H" +#include "InertPhaseModel.H" +#include "ReactingPhaseModel.H" +#include "MovingPhaseModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + typedef + MovingPhaseModel + < + AnisothermalPhaseModel + < + PurePhaseModel + < + InertPhaseModel + < + ThermoPhaseModel<phaseModel, rhoThermo> + > + > + > + > + purePhaseModel; + + addNamedToRunTimeSelectionTable + ( + phaseModel, + purePhaseModel, + phaseSystem, + purePhaseModel + ); + + typedef + MovingPhaseModel + < + IsothermalPhaseModel + < + PurePhaseModel + < + InertPhaseModel + < + ThermoPhaseModel<phaseModel, rhoThermo> + > + > + > + > + pureIsothermalPhaseModel; + + addNamedToRunTimeSelectionTable + ( + phaseModel, + pureIsothermalPhaseModel, + phaseSystem, + pureIsothermalPhaseModel + ); + + typedef + MovingPhaseModel + < + AnisothermalPhaseModel + < + MultiComponentPhaseModel + < + InertPhaseModel + < + ThermoPhaseModel<phaseModel, rhoReactionThermo> + > + > + > + > + multiComponentPhaseModel; + + addNamedToRunTimeSelectionTable + ( + phaseModel, + multiComponentPhaseModel, + phaseSystem, + multiComponentPhaseModel + ); + + typedef + MovingPhaseModel + < + AnisothermalPhaseModel + < + MultiComponentPhaseModel + < + ReactingPhaseModel + < + ThermoPhaseModel<phaseModel, rhoReactionThermo>, + combustionModels::rhoCombustionModel + > + > + > + > + reactingPhaseModel; + + addNamedToRunTimeSelectionTable + ( + phaseModel, + reactingPhaseModel, + phaseSystem, + reactingPhaseModel + ); +} + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.C new file mode 100644 index 0000000000000000000000000000000000000000..8c2bb470add4d7eb1e116bf96126ea054e295b9c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.C @@ -0,0 +1,88 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "orderedPhasePair.H" +#include "aspectRatioModel.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::orderedPhasePair::orderedPhasePair +( + const phaseModel& dispersed, + const phaseModel& continuous +) +: + phasePair + ( + dispersed, + continuous, + true + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::orderedPhasePair::~orderedPhasePair() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +const Foam::phaseModel& Foam::orderedPhasePair::dispersed() const +{ + return phase1(); +} + + +const Foam::phaseModel& Foam::orderedPhasePair::continuous() const +{ + return phase2(); +} + + +Foam::word Foam::orderedPhasePair::name() const +{ + word namec(second()); + namec[0] = toupper(namec[0]); + return first() + "In" + namec; +} + + +Foam::tmp<Foam::volScalarField> Foam::orderedPhasePair::E() const +{ + return + phase1().mesh().lookupObject<aspectRatioModel> + ( + IOobject::groupName + ( + aspectRatioModel::typeName, + orderedPhasePair::name() + ) + ).E(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.H new file mode 100644 index 0000000000000000000000000000000000000000..4779fd333d2a94c75bd446a6eb5ce6e9be9d480c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/orderedPhasePair/orderedPhasePair.H @@ -0,0 +1,106 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::orderedPhasePair + +Description + +SourceFiles + orderedPhasePair.C + +\*---------------------------------------------------------------------------*/ + +#ifndef orderedPhasePair_H +#define orderedPhasePair_H + +#include "phasePair.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class aspectRatioModel; + +/*---------------------------------------------------------------------------*\ + Class orderedPhasePair Declaration +\*---------------------------------------------------------------------------*/ + +class orderedPhasePair +: + public phasePair +{ + // Private data + + //- Aspect ratio model + autoPtr<aspectRatioModel> aspectRatio_; + + + // Private member functions + + //- Set the aspect ratio model, if there is one + void setAspectRatioModel(const dictTable aspectRatioTable); + + +public: + + // Constructors + + //- Construct from two phases and gravity + orderedPhasePair + ( + const phaseModel& dispersed, + const phaseModel& continuous + ); + + + //- Destructor + virtual ~orderedPhasePair(); + + + // Member Functions + + //- Dispersed phase + virtual const phaseModel& dispersed() const; + + //- Continuous phase + virtual const phaseModel& continuous() const; + + //- Pair name + virtual word name() const; + + //- Aspect ratio + virtual tmp<volScalarField> E() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.C new file mode 100644 index 0000000000000000000000000000000000000000..16478646d7df40c892d41852a40108d8ae7f2a32 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.C @@ -0,0 +1,202 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "phasePair.H" +#include "surfaceTensionModel.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::phasePair::EoH +( + const volScalarField& d +) const +{ + return + mag(dispersed().rho() - continuous().rho()) + *mag(g()) + *sqr(d) + /sigma(); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::phasePair::phasePair +( + const phaseModel& phase1, + const phaseModel& phase2, + const bool ordered +) +: + phasePairKey(phase1.name(), phase2.name(), ordered), + phase1_(phase1), + phase2_(phase2), + g_(phase1.mesh().lookupObject<uniformDimensionedVectorField>("g")) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::phasePair::~phasePair() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +const Foam::phaseModel& Foam::phasePair::dispersed() const +{ + FatalErrorIn("Foam::phasePair::dispersed() const") + << "Requested dispersed phase from an unordered pair." + << exit(FatalError); + + return phase1_; +} + + +const Foam::phaseModel& Foam::phasePair::continuous() const +{ + FatalErrorIn("Foam::phasePair::dispersed() const") + << "Requested continuous phase from an unordered pair." + << exit(FatalError); + + return phase1_; +} + + +Foam::word Foam::phasePair::name() const +{ + word name2(second()); + name2[0] = toupper(name2[0]); + return first() + "And" + name2; +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::rho() const +{ + return phase1()*phase1().rho() + phase2()*phase2().rho(); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::magUr() const +{ + return mag(phase1().U() - phase2().U()); +} + + +Foam::tmp<Foam::volVectorField> Foam::phasePair::Ur() const +{ + return dispersed().U() - continuous().U(); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::Re() const +{ + return magUr()*dispersed().d()/continuous().nu(); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::Pr() const +{ + return + continuous().nu() + *continuous().thermo().Cpv() + *continuous().rho() + /continuous().kappa(); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::Eo() const +{ + return EoH(dispersed().d()); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::EoH1() const +{ + return + EoH + ( + dispersed().d() + *cbrt(1 + 0.163*pow(Eo(), 0.757)) + ); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::EoH2() const +{ + return + EoH + ( + dispersed().d() + /cbrt(E()) + ); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::sigma() const +{ + return + phase1().mesh().lookupObject<surfaceTensionModel> + ( + IOobject::groupName + ( + surfaceTensionModel::typeName, + phasePair::name() + ) + ).sigma(); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::Mo() const +{ + return + mag(g()) + *continuous().nu() + *pow3 + ( + continuous().nu() + *continuous().rho() + /sigma() + ); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::Ta() const +{ + return Re()*pow(Mo(), 0.23); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePair::E() const +{ + FatalErrorIn("Foam::phasePair::E() const") + << "Requested aspect ratio of the dispersed phase in an unordered pair" + << exit(FatalError); + + return phase1(); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.H new file mode 100644 index 0000000000000000000000000000000000000000..4ee9eefbc198621ddb9a1034c7efdfd3772f54b2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePair.H @@ -0,0 +1,176 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::phasePair + +Description + +SourceFiles + phasePair.C + +\*---------------------------------------------------------------------------*/ + +#ifndef phasePair_H +#define phasePair_H + +#include "phaseModel.H" +#include "phasePairKey.H" +#include "uniformDimensionedFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phasePair Declaration +\*---------------------------------------------------------------------------*/ + +class phasePair +: + public phasePairKey +{ +public: + + // Hash table types + + //- Dictionary hash table + typedef HashTable<dictionary, phasePairKey, phasePairKey::hash> + dictTable; + + //- Scalar hash table + typedef HashTable<scalar, phasePairKey, phasePairKey::hash> + scalarTable; + + +private: + + // Private data + + //- Phase 1 + const phaseModel& phase1_; + + //- Phase 2 + const phaseModel& phase2_; + + //- Gravitational acceleration + const uniformDimensionedVectorField& g_; + + + // Private member functions + + // Etvos number for given diameter + tmp<volScalarField> EoH(const volScalarField& d) const; + + +public: + + // Constructors + + //- Construct from two phases and gravity + phasePair + ( + const phaseModel& phase1, + const phaseModel& phase2, + const bool ordered = false + ); + + + //- Destructor + virtual ~phasePair(); + + + // Member Functions + + //- Dispersed phase + virtual const phaseModel& dispersed() const; + + //- Continuous phase + virtual const phaseModel& continuous() const; + + //- Pair name + virtual word name() const; + + //- Average density + tmp<volScalarField> rho() const; + + //- Relative velocity magnitude + tmp<volScalarField> magUr() const; + + //- Relative velocity + tmp<volVectorField> Ur() const; + + //- Reynolds number + tmp<volScalarField> Re() const; + + //- Prandtl number + tmp<volScalarField> Pr() const; + + //- Eotvos number + tmp<volScalarField> Eo() const; + + //- Eotvos number based on hydraulic diameter type 1 + tmp<volScalarField> EoH1() const; + + //- Eotvos number based on hydraulic diameter type 2 + tmp<volScalarField> EoH2() const; + + //- Surface tension coefficient + tmp<volScalarField> sigma() const; + + //- Morton Number + tmp<volScalarField> Mo() const; + + //- Takahashi Number + tmp<volScalarField> Ta() const; + + //- Aspect ratio + virtual tmp<volScalarField> E() const; + + // Access + + // Phase 1 + inline const phaseModel& phase1() const; + + // Phase 2 + inline const phaseModel& phase2() const; + + // Gravitation acceleration + inline const uniformDimensionedVectorField& g() const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "phasePairI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePairI.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePairI.H new file mode 100644 index 0000000000000000000000000000000000000000..c461b7d9182a1a6d3ac07f950815654149afba2c --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePair/phasePairI.H @@ -0,0 +1,46 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +inline const Foam::phaseModel& Foam::phasePair::phase1() const +{ + return phase1_; +} + + +inline const Foam::phaseModel& Foam::phasePair::phase2() const +{ + return phase2_; +} + + +inline const Foam::uniformDimensionedVectorField& Foam::phasePair::g() const +{ + return g_; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.C new file mode 100644 index 0000000000000000000000000000000000000000..13ae288f089045048bef2560a4dcbba4f81ff12a --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.C @@ -0,0 +1,172 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "phasePairKey.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::phasePairKey::hash::hash() +{} + + +Foam::phasePairKey::phasePairKey() +{} + + +Foam::phasePairKey::phasePairKey +( + const word& name1, + const word& name2, + const bool ordered +) +: + Pair<word>(name1, name2), + ordered_(ordered) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::phasePairKey::~phasePairKey() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +bool Foam::phasePairKey::ordered() const +{ + return ordered_; +} + + +// * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * * // + +Foam::label Foam::phasePairKey::hash::operator() +( + const phasePairKey& key +) const +{ + if (key.ordered_) + { + return + word::hash() + ( + key.first(), + word::hash()(key.second()) + ); + } + else + { + return + word::hash()(key.first()) + + word::hash()(key.second()); + } +} + + +// * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * * // + +bool Foam::operator== +( + const phasePairKey& a, + const phasePairKey& b +) +{ + const label c = Pair<word>::compare(a,b); + + return + (a.ordered_ == b.ordered_) + && ( + (a.ordered_ && (c == 1)) + || (!a.ordered_ && (c != 0)) + ); +} + + +bool Foam::operator!= +( + const phasePairKey& a, + const phasePairKey& b +) +{ + return !(a == b); +} + + +// * * * * * * * * * * * * * * Istream Operator * * * * * * * * * * * * * * // + +Foam::Istream& Foam::operator>>(Istream& is, phasePairKey& key) +{ + const FixedList<word, 3> temp(is); + + key.first() = temp[0]; + + if (temp[1] == "and") + { + key.ordered_ = false; + } + else if(temp[1] == "in") + { + key.ordered_ = true; + } + else + { + FatalErrorIn + ( + "friend Istream& operator>>" + "(" + "Istream& is, " + "phasePairKey& key" + ")" + ) << "Phase pair type is not recognised. " + << temp + << "Use (phaseDispersed in phaseContinuous) for an ordered" + << "pair, or (phase1 and pase2) for an unordered pair." + << exit(FatalError); + } + + key.second() = temp[2]; + + return is; +} + + +// * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * * // + +Foam::Ostream& Foam::operator<<(Ostream& os, const phasePairKey& key) +{ + os << token::BEGIN_LIST + << key.first() + << token::SPACE + << (key.ordered_ ? "in" : "and") + << token::SPACE + << key.second() + << token::END_LIST; + + return os; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.H new file mode 100644 index 0000000000000000000000000000000000000000..b5d6acf07be75549b2869df71902c217479d1649 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phasePair/phasePairKey/phasePairKey.H @@ -0,0 +1,130 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::phasePairKey + +Description + +SourceFiles + +\*---------------------------------------------------------------------------*/ + +#ifndef phasePairKey_H +#define phasePairKey_H + +#include "Pair.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phasePairKey Declaration +\*---------------------------------------------------------------------------*/ + +class phasePairKey +: + public Pair<word> +{ +public: + + class hash + : + public Hash<phasePairKey> + { + public: + + // Constructors + + // Construct null + hash(); + + + // Member operators + + // Generate a hash from a phase pair key + label operator()(const phasePairKey& key) const; + }; + + +private: + + // Private data + + //- Flag to indicate whether ordering is important + bool ordered_; + + +public: + + // Constructors + + //- Construct null + phasePairKey(); + + //- Construct from names and the ordering flag + phasePairKey + ( + const word& name1, + const word& name2, + const bool ordered = false + ); + + + // Destructor + virtual ~phasePairKey(); + + + // Access + + //- Return the ordered flag + bool ordered() const; + + + // Friend Operators + + //- Test if keys are equal + friend bool operator==(const phasePairKey& a, const phasePairKey& b); + + //- Test if keys are unequal + friend bool operator!=(const phasePairKey& a, const phasePairKey& b); + + //- Read from stdin + friend Istream& operator>>(Istream& is, phasePairKey& key); + + //- Write to stdout + friend Ostream& operator<<(Ostream& os, const phasePairKey& key); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.C new file mode 100644 index 0000000000000000000000000000000000000000..9144093db5a9784454e6717e077b1ee8e5ed4ff6 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.C @@ -0,0 +1,370 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "phaseSystem.H" +#include "surfaceTensionModel.H" +#include "aspectRatioModel.H" +#include "surfaceInterpolate.H" +#include "fvcDdt.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(phaseSystem, 0); +} + +const Foam::word Foam::phaseSystem::propertiesName("phaseProperties"); + + +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +Foam::phaseSystem::phaseModelTable +Foam::phaseSystem::generatePhaseModels(const wordList& phaseNames) const +{ + phaseModelTable phaseModels; + + forAllConstIter(wordList, phaseNames, phaseNameIter) + { + phaseModels.insert + ( + *phaseNameIter, + phaseModel::New + ( + *this, + *phaseNameIter + ) + ); + } + + // normalise ? + + return phaseModels; +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::phaseSystem::generatePhi +( + const phaseModelTable& phaseModels +) const +{ + phaseModelTable::const_iterator phaseModelIter = phaseModels.begin(); + + tmp<surfaceScalarField> tmpPhi + ( + new surfaceScalarField + ( + "phi", + fvc::interpolate(phaseModelIter()())*phaseModelIter()->phi() + ) + ); + + ++phaseModelIter; + + for (; phaseModelIter != phaseModels.end(); ++ phaseModelIter) + { + tmpPhi() += + fvc::interpolate(phaseModelIter()()) + *phaseModelIter()->phi(); + } + + return tmpPhi; +} + + +void Foam::phaseSystem::generatePairs +( + const dictTable& modelDicts +) +{ + forAllConstIter(dictTable, modelDicts, iter) + { + const phasePairKey& key = iter.key(); + + // pair already exists + if (phasePairs_.found(key)) + { + // do nothing ... + } + + // new ordered pair + else if (key.ordered()) + { + phasePairs_.insert + ( + key, + autoPtr<phasePair> + ( + new orderedPhasePair + ( + phaseModels_[key.first()], + phaseModels_[key.second()] + ) + ) + ); + } + + // new unordered pair + else + { + phasePairs_.insert + ( + key, + autoPtr<phasePair> + ( + new phasePair + ( + phaseModels_[key.first()], + phaseModels_[key.second()] + ) + ) + ); + } + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::phaseSystem::phaseSystem +( + const fvMesh& mesh +) +: + IOdictionary + ( + IOobject + ( + "phaseProperties", + mesh.time().constant(), + mesh, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE + ) + ), + + mesh_(mesh), + + phaseNames_(lookup("phases")), + + phaseModels_(generatePhaseModels(phaseNames_)), + + phi_(generatePhi(phaseModels_)), + + dpdt_ + ( + IOobject + ( + "dpdt", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedScalar("dpdt", dimPressure/dimTime, 0) + ), + + dgdt_ + ( + IOobject + ( + "dgdt", + mesh.time().timeName(), + mesh, + IOobject::READ_IF_PRESENT, + IOobject::AUTO_WRITE + ), + mesh, + dimensionedScalar("dgdt", dimless/dimTime, 0) + ) +{ + // Blending methods + forAllConstIter(dictionary, subDict("blending"), iter) + { + blendingMethods_.insert + ( + iter().dict().dictName(), + blendingMethod::New + ( + iter().dict(), + wordList(lookup("phases")) + ) + ); + } + + // Sub-models + generatePairsAndSubModels("surfaceTension", surfaceTensionModels_); + generatePairsAndSubModels("aspectRatio", aspectRatioModels_); + + correctKinematics(); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::phaseSystem::~phaseSystem() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::phaseSystem::rho() const +{ + phaseModelTable::const_iterator phaseModelIter = phaseModels_.begin(); + + tmp<volScalarField> tmpRho + ( + phaseModelIter()()*phaseModelIter()->rho() + ); + + for (; phaseModelIter != phaseModels_.end(); ++ phaseModelIter) + { + tmpRho() += phaseModelIter()()*phaseModelIter()->rho(); + } + + return tmpRho; +} + + +Foam::tmp<Foam::volVectorField> Foam::phaseSystem::U() const +{ + phaseModelTable::const_iterator phaseModelIter = phaseModels_.begin(); + + tmp<volVectorField> tmpU + ( + phaseModelIter()()*phaseModelIter()->U() + ); + + for (; phaseModelIter != phaseModels_.end(); ++ phaseModelIter) + { + tmpU() += phaseModelIter()()*phaseModelIter()->U(); + } + + return tmpU; +} + + +Foam::tmp<Foam::volScalarField> +Foam::phaseSystem::sigma(const phasePairKey& key) const +{ + if (surfaceTensionModels_.found(key)) + { + return surfaceTensionModels_[key]->sigma(); + } + else + { + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + surfaceTensionModel::typeName + ":sigma", + this->mesh_.time().timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + this->mesh_, + dimensionedScalar("zero", surfaceTensionModel::dimSigma, 0) + ) + ); + } +} + + +void Foam::phaseSystem::solve() +{} + + +void Foam::phaseSystem::correct() +{ + forAllIter(phaseModelTable, phaseModels_, phaseModelIter) + { + phaseModelIter()->correct(); + } +} + + +void Foam::phaseSystem::correctKinematics() +{ + bool updateDpdt = false; + + forAllIter(phaseModelTable, phaseModels_, phaseModelIter) + { + phaseModelIter()->correctKinematics(); + + updateDpdt = updateDpdt || phaseModelIter()->thermo().dpdt(); + } + + // Update the pressure time-derivative if required + if (updateDpdt) + { + dpdt_ = fvc::ddt(phaseModels_.begin()()().thermo().p()); + } +} + + +void Foam::phaseSystem::correctThermo() +{ + forAllIter(phaseModelTable, phaseModels_, phaseModelIter) + { + phaseModelIter()->correctThermo(); + } +} + + +void Foam::phaseSystem::correctTurbulence() +{ + forAllIter(phaseModelTable, phaseModels_, phaseModelIter) + { + phaseModelIter()->correctTurbulence(); + } +} + + +bool Foam::phaseSystem::read() +{ + if (regIOobject::read()) + { + bool readOK = true; + + forAllIter(phaseModelTable, phaseModels_, phaseModelIter) + { + readOK &= phaseModelIter()->read(); + } + + // models ... + + return readOK; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.H new file mode 100644 index 0000000000000000000000000000000000000000..d7d21c430de267b01eb9fcf77394e59983212859 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystem.H @@ -0,0 +1,407 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::phaseSystem + +Description + Class to represent a system of phases and model interfacial transfers + between them. + +SourceFiles + phaseSystem.C + +\*---------------------------------------------------------------------------*/ + +#ifndef phaseSystem_H +#define phaseSystem_H + +#include "IOdictionary.H" + +#include "phaseModel.H" +#include "phasePair.H" +#include "orderedPhasePair.H" + +#include "volFields.H" +#include "surfaceFields.H" +#include "fvMatricesFwd.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class blendingMethod; +template <class modelType> class BlendedInterfacialModel; +class surfaceTensionModel; +class aspectRatioModel; +class IOMRFZoneList; + +/*---------------------------------------------------------------------------*\ + Class phaseSystem Declaration +\*---------------------------------------------------------------------------*/ + +class phaseSystem +: + public IOdictionary +{ +public: + + // Public typedefs + + typedef + HashPtrTable + < + volScalarField, + phasePairKey, + phasePairKey::hash + > + KdTable; + + typedef + HashPtrTable + < + volScalarField, + phasePairKey, + phasePairKey::hash + > + VmTable; + + typedef + HashPtrTable + < + fvVectorMatrix, + word, + string::hash + > + momentumTransferTable; + + typedef + HashPtrTable + < + fvScalarMatrix, + word, + string::hash + > + heatTransferTable; + + typedef + HashPtrTable + < + fvScalarMatrix, + word, + string::hash + > + massTransferTable; + + +protected: + + // Protected typedefs + + typedef + HashTable<autoPtr<phaseModel>, word, word::hash> + phaseModelTable; + + typedef + HashTable<dictionary, phasePairKey, phasePairKey::hash> + dictTable; + + typedef + HashTable<autoPtr<phasePair>, phasePairKey, phasePairKey::hash> + phasePairTable; + + typedef + HashTable<autoPtr<blendingMethod>, word, word::hash> + blendingMethodTable; + + typedef + HashTable + < + autoPtr<surfaceTensionModel>, + phasePairKey, + phasePairKey::hash + > + surfaceTensionModelTable; + + typedef + HashTable + < + autoPtr<aspectRatioModel>, + phasePairKey, + phasePairKey::hash + > + aspectRatioModelTable; + + + // Protected data + + //- Reference to the mesh + const fvMesh& mesh_; + + //- Phase names + wordList phaseNames_; + + //- Phase models + phaseModelTable phaseModels_; + + //- Phase pairs + phasePairTable phasePairs_; + + //- Total volumetric flux + surfaceScalarField phi_; + + //- Rate of change of pressure + volScalarField dpdt_; + + //- Dilatation + volScalarField dgdt_; + + //- Blending methods + blendingMethodTable blendingMethods_; + + + // Sub Models + + //- Surface tension models + surfaceTensionModelTable surfaceTensionModels_; + + //- Aspect ratio models + aspectRatioModelTable aspectRatioModels_; + + + // Protected member functions + + //- Generate the phases + HashTable<autoPtr<phaseModel> > generatePhaseModels + ( + const wordList& names + ) const; + + //- Generate the mixture flux + tmp<surfaceScalarField> generatePhi + ( + const HashTable<autoPtr<phaseModel> >& phaseModels + ) const; + + //- Generate pairs + void generatePairs + ( + const dictTable& modelDicts + ); + + //- Generate pairs and sub-model tables + template<class modelType> + void createSubModels + ( + const dictTable& modelDicts, + HashTable + < + autoPtr<modelType>, + phasePairKey, + phasePairKey::hash + >& models + ); + + //- Generate pairs and sub-model tables + template<class modelType> + void generatePairsAndSubModels + ( + const word& modelName, + HashTable + < + autoPtr<modelType>, + phasePairKey, + phasePairKey::hash + >& models + ); + + //- Generate pairs and blended sub-model tables + template<class modelType> + void generatePairsAndSubModels + ( + const word& modelName, + HashTable + < + autoPtr<BlendedInterfacialModel<modelType> >, + phasePairKey, + phasePairKey::hash + >& models + ); + + //- Generate pairs and per-phase sub-model tables + template<class modelType> + void generatePairsAndSubModels + ( + const word& modelName, + HashTable + < + HashTable<autoPtr<modelType> >, + phasePairKey, + phasePairKey::hash + >& models + ); + + +public: + + //- Runtime type information + TypeName("phaseSystem"); + + //- Default name of the phase properties dictionary + static const word propertiesName; + + + // Constructors + + //- Construct from fvMesh + phaseSystem(const fvMesh& mesh); + + + //- Destructor + virtual ~phaseSystem(); + + + // Member Functions + + //- Return the mixture density + tmp<volScalarField> rho() const; + + //- Return the mixture velocity + tmp<volVectorField> U() const; + + //- Return the surface tension coefficient + tmp<volScalarField> sigma(const phasePairKey& key) const; + + //- Return the drag coefficient + virtual tmp<volScalarField> Kd(const phasePairKey& key) const = 0; + + //- Return the face drag coefficient + virtual tmp<surfaceScalarField> Kdf(const phasePairKey& key) const = 0; + + //- Return the virtual mass coefficient + virtual tmp<volScalarField> Vm(const phasePairKey& key) const = 0; + + //- Return the face virtual mass coefficient + virtual tmp<surfaceScalarField> Vmf(const phasePairKey& key) const = 0; + + //- Return the combined force (lift + wall-lubrication) + virtual tmp<volVectorField> F(const phasePairKey& key) const = 0; + + //- Return the combined face-force (lift + wall-lubrication) + virtual tmp<surfaceScalarField> Ff(const phasePairKey& key) const = 0; + + //- Return the turbulent diffusivity + // Multiplies the phase-fraction gradient + virtual tmp<volScalarField> D(const phasePairKey& key) const = 0; + + //- Return the interfacial mass flow rate + virtual tmp<volScalarField> dmdt(const phasePairKey& key) const = 0; + + //- Return the momentum transfer matrices + virtual autoPtr<momentumTransferTable> momentumTransfer + ( + IOMRFZoneList& MRF + ) const = 0; + + //- Return the heat transfer matrices + virtual autoPtr<heatTransferTable> heatTransfer() const = 0; + + //- Return the mass transfer matrices + virtual autoPtr<massTransferTable> massTransfer() const = 0; + + //- Solve for the phase fractions + virtual void solve(); + + //- Correct the fluid properties other than the thermo and turbulence + virtual void correct(); + + //- Correct the kinematics + virtual void correctKinematics(); + + //- Correct the thermodynamics + virtual void correctThermo(); + + //- Correct the turbulence + virtual void correctTurbulence(); + + //- Read base phaseProperties dictionary + virtual bool read(); + + + // Access + + //- Constant access the mesh + inline const fvMesh& mesh() const; + + //- Constant access the mixture flux + inline const surfaceScalarField& phi() const; + + //- Access the mixture flux + inline surfaceScalarField& phi(); + + //- Constant access the rate of change of the pressure + inline const volScalarField& dpdt() const; + + //- Access the rate of change of the pressure + inline volScalarField& dpdt(); + + //- Constant access the dilatation parameter + inline const volScalarField& dgdt() const; + + //- Access the dilatation parameter + inline volScalarField& dgdt(); + + //- Access a sub model between a phase pair + template <class modelType> + const modelType& lookupSubModel(const phasePair& key) const; + + //- Access a sub model between two phases + template <class modelType> + const modelType& lookupSubModel + ( + const phaseModel& dispersed, + const phaseModel& continuous + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "phaseSystemI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "phaseSystemTemplates.H" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H new file mode 100644 index 0000000000000000000000000000000000000000..4095e3739f9337209ffdf78fe2630d9f00371864 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemI.H @@ -0,0 +1,70 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +inline const Foam::fvMesh& Foam::phaseSystem::mesh() const +{ + return mesh_; +} + + +inline const Foam::surfaceScalarField& Foam::phaseSystem::phi() const +{ + return phi_; +} + + +inline Foam::surfaceScalarField& Foam::phaseSystem::phi() +{ + return phi_; +} + + +inline const Foam::volScalarField& Foam::phaseSystem::dpdt() const +{ + return dpdt_; +} + + +inline Foam::volScalarField& Foam::phaseSystem::dpdt() +{ + return dpdt_; +} + +inline const Foam::volScalarField& Foam::phaseSystem::dgdt() const +{ + return dgdt_; +} + + +inline Foam::volScalarField& Foam::phaseSystem::dgdt() +{ + return dgdt_; +} + + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.H new file mode 100644 index 0000000000000000000000000000000000000000..2f3185b9d1e8621fde93b6cc53ead8926c3c51e2 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/phaseSystem/phaseSystemTemplates.H @@ -0,0 +1,210 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "BlendedInterfacialModel.H" + +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +template<class modelType> +void Foam::phaseSystem::createSubModels +( + const dictTable& modelDicts, + HashTable + < + autoPtr<modelType>, + phasePairKey, + phasePairKey::hash + >& models +) +{ + forAllConstIter(dictTable, modelDicts, iter) + { + const phasePairKey& key = iter.key(); + + models.insert + ( + key, + modelType::New + ( + *iter, + phasePairs_[key] + ) + ); + } +} + + +template<class modelType> +void Foam::phaseSystem::generatePairsAndSubModels +( + const word& modelName, + HashTable + < + autoPtr<modelType>, + phasePairKey, + phasePairKey::hash + >& models +) +{ + dictTable modelDicts(lookup(modelName)); + + generatePairs(modelDicts); + + createSubModels(modelDicts, models); +} + + +template<class modelType> +void Foam::phaseSystem::generatePairsAndSubModels +( + const word& modelName, + HashTable + < + autoPtr<BlendedInterfacialModel<modelType> >, + phasePairKey, + phasePairKey::hash + >& models +) +{ + typedef + HashTable<autoPtr<modelType>, phasePairKey, phasePairKey::hash> + modelTypeTable; + + modelTypeTable tempModels; + generatePairsAndSubModels(modelName, tempModels); + + const blendingMethod& blending + ( + blendingMethods_.found(modelName) + ? blendingMethods_[modelName] + : blendingMethods_["default"] + ); + + autoPtr<modelType> noModel(NULL); + + forAllConstIter(typename modelTypeTable, tempModels, iter) + { + if (!iter().valid()) + { + continue; + } + + Info<< "iter.key() " << iter.key() << endl; + const phasePairKey key(iter.key().first(), iter.key().second()); + const phasePairKey key1In2(key.first(), key.second(), true); + const phasePairKey key2In1(key.second(), key.first(), true); + + Info<< "key " << key << endl; + + models.insert + ( + key, + autoPtr<BlendedInterfacialModel<modelType> > + ( + new BlendedInterfacialModel<modelType> + ( + phaseModels_[key.first()], + phaseModels_[key.second()], + blending, + tempModels.found(key ) ? tempModels[key ] : noModel, + tempModels.found(key1In2) ? tempModels[key1In2] : noModel, + tempModels.found(key2In1) ? tempModels[key2In1] : noModel + ) + ) + ); + } +} + + +template<class modelType> +void Foam::phaseSystem::generatePairsAndSubModels +( + const word& modelName, + HashTable + < + HashTable<autoPtr<modelType> >, + phasePairKey, + phasePairKey::hash + >& models +) +{ + typedef + HashTable<autoPtr<modelType>, phasePairKey, phasePairKey::hash> + modelTypeTable; + + forAllConstIter(wordList, phaseNames_, phaseNameIter) + { + modelTypeTable tempModels; + generatePairsAndSubModels + ( + IOobject::groupName(modelName, *phaseNameIter), + tempModels + ); + + forAllConstIter(typename modelTypeTable, tempModels, tempModelIter) + { + const phasePairKey key(tempModelIter.key()); + + if (!models.found(key)) + { + models.insert + ( + key, + HashTable<autoPtr<modelType> >() + ); + } + + models[tempModelIter.key()].insert + ( + *phaseNameIter, + *tempModelIter + ); + } + } +} + +template <class modelType> +const modelType& Foam::phaseSystem::lookupSubModel(const phasePair& key) const +{ + return + mesh().lookupObject<modelType> + ( + IOobject::groupName(modelType::typeName, key.name()) + ); +} + + +template <class modelType> +const modelType& Foam::phaseSystem::lookupSubModel +( + const phaseModel& dispersed, + const phaseModel& continuous +) const +{ + return lookupSubModel<modelType>(orderedPhasePair(dispersed, continuous)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/newTwoPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/newTwoPhaseSystem.C new file mode 100644 index 0000000000000000000000000000000000000000..0324fb2f565254656674baeb7edb86741dfeea18 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/newTwoPhaseSystem.C @@ -0,0 +1,70 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "twoPhaseSystem.H" + +// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * // + +Foam::autoPtr<Foam::twoPhaseSystem> Foam::twoPhaseSystem::New +( + const fvMesh& mesh +) +{ + const word twoPhaseSystemType + ( + IOdictionary + ( + IOobject + ( + propertiesName, + mesh.time().constant(), + mesh, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE, + false + ) + ).lookup("type") + ); + + Info<< "Selecting twoPhaseSystem " + << twoPhaseSystemType << endl; + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(twoPhaseSystemType); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn("twoPhaseSystem::New") + << "Unknown twoPhaseSystemType type " + << twoPhaseSystemType << endl << endl + << "Valid twoPhaseSystem types are : " << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); + } + + return cstrIter()(mesh); +} + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C new file mode 100644 index 0000000000000000000000000000000000000000..114f7416331008b040772396d48b9b5d461f9d67 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C @@ -0,0 +1,378 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "twoPhaseSystem.H" +#include "dragModel.H" +#include "virtualMassModel.H" + +#include "MULES.H" +#include "subCycle.H" + +#include "fvcDdt.H" +#include "fvcDiv.H" +#include "fvcSnGrad.H" +#include "fvcFlux.H" +#include "fvcSup.H" + +#include "fvmDdt.H" +#include "fvmLaplacian.H" +#include "fvmSup.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(twoPhaseSystem, 0); + defineRunTimeSelectionTable(twoPhaseSystem, dictionary); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::twoPhaseSystem::twoPhaseSystem +( + const fvMesh& mesh +) +: + phaseSystem(mesh), + phase1_(phaseModels_[phaseNames_[0]]()), + phase2_(phaseModels_[phaseNames_[1]]()) +{ + phase2_.volScalarField::operator=(scalar(1) - phase1_); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::twoPhaseSystem::~twoPhaseSystem() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::twoPhaseSystem::sigma() const +{ + return sigma + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::twoPhaseSystem::Kd() const +{ + return Kd + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::surfaceScalarField> +Foam::twoPhaseSystem::Kdf() const +{ + return Kdf + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::twoPhaseSystem::Vm() const +{ + return Vm + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::surfaceScalarField> +Foam::twoPhaseSystem::Vmf() const +{ + return Vmf + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::volVectorField> +Foam::twoPhaseSystem::F() const +{ + return F + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::surfaceScalarField> +Foam::twoPhaseSystem::Ff() const +{ + return Ff + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::twoPhaseSystem::D() const +{ + return D + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::twoPhaseSystem::dmdt() const +{ + return dmdt + ( + phasePairKey(phase1().name(), phase2().name()) + ); +} + + +void Foam::twoPhaseSystem::solve() +{ + const fvMesh& mesh = this->mesh(); + const Time& runTime = mesh.time(); + + volScalarField& alpha1 = phase1_; + volScalarField& alpha2 = phase2_; + + const surfaceScalarField& phi = this->phi(); + const surfaceScalarField& phi1 = phase1_.phi(); + const surfaceScalarField& phi2 = phase2_.phi(); + + const volScalarField& dgdt = this->dgdt(); + + const dictionary& alphaControls = mesh.solverDict(alpha1.name()); + + label nAlphaSubCycles(readLabel(alphaControls.lookup("nAlphaSubCycles"))); + label nAlphaCorr(readLabel(alphaControls.lookup("nAlphaCorr"))); + + word alphaScheme("div(phi," + alpha1.name() + ')'); + word alpharScheme("div(phir," + alpha1.name() + ')'); + + alpha1.correctBoundaryConditions(); + + + surfaceScalarField phic("phic", phi); + surfaceScalarField phir("phir", phi1 - phi2); + + surfaceScalarField alpha1f(fvc::interpolate(max(alpha1, scalar(0)))); + + if (pPrimeByA_.valid()) + { + surfaceScalarField phiP + ( + pPrimeByA_()*fvc::snGrad(alpha1, "bounded")*mesh_.magSf() + ); + + phic += alpha1f*phiP; + phir += phiP; + } + + for (int acorr=0; acorr<nAlphaCorr; acorr++) + { + volScalarField::DimensionedInternalField Sp + ( + IOobject + ( + "Sp", + runTime.timeName(), + mesh + ), + mesh, + dimensionedScalar("Sp", dgdt.dimensions(), 0.0) + ); + + volScalarField::DimensionedInternalField Su + ( + IOobject + ( + "Su", + runTime.timeName(), + mesh + ), + // Divergence term is handled explicitly to be + // consistent with the explicit transport solution + fvc::div(phi)*min(alpha1, scalar(1)) + ); + + forAll(dgdt, celli) + { + if (dgdt[celli] > 0.0) + { + Sp[celli] -= dgdt[celli]/max(1.0 - alpha1[celli], 1e-4); + Su[celli] += dgdt[celli]/max(1.0 - alpha1[celli], 1e-4); + } + else if (dgdt[celli] < 0.0) + { + Sp[celli] += dgdt[celli]/max(alpha1[celli], 1e-4); + } + } + + surfaceScalarField alphaPhic1 + ( + fvc::flux + ( + phic, + alpha1, + alphaScheme + ) + + fvc::flux + ( + -fvc::flux(-phir, scalar(1) - alpha1, alpharScheme), + alpha1, + alpharScheme + ) + ); + + // Ensure that the flux at inflow BCs is preserved + forAll(alphaPhic1.boundaryField(), patchi) + { + fvsPatchScalarField& alphaPhic1p = + alphaPhic1.boundaryField()[patchi]; + + if (!alphaPhic1p.coupled()) + { + const scalarField& phi1p = phi1.boundaryField()[patchi]; + const scalarField& alpha1p = alpha1.boundaryField()[patchi]; + + forAll(alphaPhic1p, facei) + { + if (phi1p[facei] < 0) + { + alphaPhic1p[facei] = alpha1p[facei]*phi1p[facei]; + } + } + } + } + + if (nAlphaSubCycles > 1) + { + for + ( + subCycle<volScalarField> alphaSubCycle(alpha1, nAlphaSubCycles); + !(++alphaSubCycle).end(); + ) + { + surfaceScalarField alphaPhic10(alphaPhic1); + + MULES::explicitSolve + ( + geometricOneField(), + alpha1, + phi, + alphaPhic10, + (alphaSubCycle.index()*Sp)(), + (Su - (alphaSubCycle.index() - 1)*Sp*alpha1)(), + phase1_.alphaMax(), + 0 + ); + + if (alphaSubCycle.index() == 1) + { + phase1_.alphaPhi() = alphaPhic10; + } + else + { + phase1_.alphaPhi() += alphaPhic10; + } + } + + phase1_.alphaPhi() /= nAlphaSubCycles; + } + else + { + MULES::explicitSolve + ( + geometricOneField(), + alpha1, + phi, + alphaPhic1, + Sp, + Su, + phase1_.alphaMax(), + 0 + ); + + phase1_.alphaPhi() = alphaPhic1; + } + + if (pPrimeByA_.valid()) + { + fvScalarMatrix alpha1Eqn + ( + fvm::ddt(alpha1) - fvc::ddt(alpha1) + - fvm::laplacian(alpha1f*pPrimeByA_(), alpha1, "bounded") + ); + + alpha1Eqn.relax(); + alpha1Eqn.solve(); + + phase1_.alphaPhi() += alpha1Eqn.flux(); + } + + phase1_.alphaRhoPhi() = + fvc::interpolate(phase1_.rho())*phase1_.alphaPhi(); + + phase2_.alphaPhi() = phi - phase1_.alphaPhi(); + alpha2 = scalar(1) - alpha1; + phase2_.alphaRhoPhi() = + fvc::interpolate(phase2_.rho())*phase2_.alphaPhi(); + + Info<< alpha1.name() << " volume fraction = " + << alpha1.weightedAverage(mesh.V()).value() + << " Min(alpha1) = " << min(alpha1).value() + << " Max(alpha1) = " << max(alpha1).value() + << endl; + } +} + + +const Foam::dragModel& Foam::twoPhaseSystem::drag(const phaseModel& phase) const +{ + return lookupSubModel<dragModel>(phase, otherPhase(phase)); +} + + +const Foam::virtualMassModel& +Foam::twoPhaseSystem::virtualMass(const phaseModel& phase) const +{ + return lookupSubModel<virtualMassModel>(phase, otherPhase(phase)); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.H new file mode 100644 index 0000000000000000000000000000000000000000..55b7378f4bce8ff78e10f8dd8c11c86500b6a1ea --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.H @@ -0,0 +1,194 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013-2015 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 <http://www.gnu.org/licenses/>. + +Class + Foam::twoPhaseSystem + +Description + Class which solves the volume fraction equations for two phases. + +SourceFiles + twoPhaseSystem.C + +\*---------------------------------------------------------------------------*/ + +#ifndef twoPhaseSystem_H +#define twoPhaseSystem_H + +#include "phaseSystem.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class dragModel; +class virtualMassModel; + +/*---------------------------------------------------------------------------*\ + Class twoPhaseSystem Declaration +\*---------------------------------------------------------------------------*/ + +class twoPhaseSystem +: + public phaseSystem +{ +protected: + + // Protected data + + //- Phase model 1 + phaseModel& phase1_; + + //- Phase model 2 + phaseModel& phase2_; + + //- Optional dispersion diffusivity + tmp<surfaceScalarField> pPrimeByA_; + + +public: + + //- Runtime type information + TypeName("twoPhaseSystem"); + + // Declare runtime construction + + declareRunTimeSelectionTable + ( + autoPtr, + twoPhaseSystem, + dictionary, + ( + const fvMesh& mesh + ), + (mesh) + ); + + + // Constructors + + //- Construct from fvMesh + twoPhaseSystem(const fvMesh&); + + + //- Destructor + virtual ~twoPhaseSystem(); + + + // Selectors + + static autoPtr<twoPhaseSystem> New + ( + const fvMesh& mesh + ); + + + // Member Functions + + //- Solve for the phase fractions + virtual void solve(); + + using phaseSystem::sigma; + using phaseSystem::Kd; + using phaseSystem::Kdf; + using phaseSystem::Vm; + using phaseSystem::Vmf; + using phaseSystem::F; + using phaseSystem::Ff; + using phaseSystem::D; + using phaseSystem::dmdt; + + //- Return the surface tension coefficient + tmp<volScalarField> sigma() const; + + //- Return the drag coefficient + tmp<volScalarField> Kd() const; + + //- Return the face drag coefficient + tmp<surfaceScalarField> Kdf() const; + + //- Return the virtual mass coefficient + tmp<volScalarField> Vm() const; + + //- Return the face virtual mass coefficient + tmp<surfaceScalarField> Vmf() const; + + //- Return the combined force (lift + wall-lubrication) + tmp<volVectorField> F() const; + + //- Return the combined face-force (lift + wall-lubrication) + tmp<surfaceScalarField> Ff() const; + + //- Return the turbulent diffusivity + // Multiplies the phase-fraction gradient + tmp<volScalarField> D() const; + + //- Return the interfacial mass flow rate + tmp<volScalarField> dmdt() const; + + + // Access + + //- Constant access phase model 1 + const phaseModel& phase1() const; + + //- Access phase model 1 + phaseModel& phase1(); + + //- Constant access phase model 2 + const phaseModel& phase2() const; + + //- Access phase model 2 + phaseModel& phase2(); + + //- Constant access the phase not given as an argument + const phaseModel& otherPhase + ( + const phaseModel& phase + ) const; + + //- Return the drag model for the given phase + const dragModel& drag(const phaseModel& phase) const; + + //- Return the virtual mass model for the given phase + const virtualMassModel& virtualMass(const phaseModel& phase) const; + + //- Return non-const access to the dispersion diffusivity + inline tmp<surfaceScalarField>& pPrimeByA(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "twoPhaseSystemI.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystemI.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystemI.H new file mode 100644 index 0000000000000000000000000000000000000000..6a30bc73a38b2f1eb152a165cabfa19309e841cc --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystemI.H @@ -0,0 +1,74 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2014-2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +inline const Foam::phaseModel& Foam::twoPhaseSystem::phase1() const +{ + return phase1_; +} + + +inline Foam::phaseModel& Foam::twoPhaseSystem::phase1() +{ + return phase1_; +} + + +inline const Foam::phaseModel& Foam::twoPhaseSystem::phase2() const +{ + return phase2_; +} + + +inline Foam::phaseModel& Foam::twoPhaseSystem::phase2() +{ + return phase2_; +} + + +inline const Foam::phaseModel& Foam::twoPhaseSystem::otherPhase +( + const phaseModel& phase +) const +{ + if (&phase == &phase1_) + { + return phase2_; + } + else + { + return phase1_; + } +} + + +inline Foam::tmp<Foam::surfaceScalarField>& Foam::twoPhaseSystem::pPrimeByA() +{ + return pPrimeByA_; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystems.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystems.C new file mode 100644 index 0000000000000000000000000000000000000000..6b649afb6410a077c24217622632de4ecdcc7d27 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystems.C @@ -0,0 +1,69 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2015 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 <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "addToRunTimeSelectionTable.H" + +#include "phaseSystem.H" +#include "twoPhaseSystem.H" +#include "MomentumTransferPhaseSystem.H" +#include "HeatTransferPhaseSystem.H" +#include "HeatAndMassTransferPhaseSystem.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + typedef + HeatTransferPhaseSystem + < + MomentumTransferPhaseSystem<twoPhaseSystem> + > + heatAndMomentumTransferTwoPhaseSystem; + + addNamedToRunTimeSelectionTable + ( + twoPhaseSystem, + heatAndMomentumTransferTwoPhaseSystem, + dictionary, + heatAndMomentumTransferTwoPhaseSystem + ); + + typedef + HeatAndMassTransferPhaseSystem + < + MomentumTransferPhaseSystem<twoPhaseSystem> + > + heatMassAndMomentumTransferTwoPhaseSystem; + + addNamedToRunTimeSelectionTable + ( + twoPhaseSystem, + heatMassAndMomentumTransferTwoPhaseSystem, + dictionary, + heatMassAndMomentumTransferTwoPhaseSystem + ); +} + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C new file mode 100644 index 0000000000000000000000000000000000000000..5925fc4e24c568045c79f8f85a82ae7e07bc38b4 --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/reactingTwoPhaseEulerFoam.C @@ -0,0 +1,136 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2015 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 <http://www.gnu.org/licenses/>. + +Application + twoPhaseEulerFoam + +Description + Solver for a system of 2 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 momentun, heat and mass transfer. + +\*---------------------------------------------------------------------------*/ + +#include "fvCFD.H" +#include "twoPhaseSystem.H" +#include "PhaseCompressibleTurbulenceModel.H" +#include "pimpleControl.H" +#include "fvIOoptionList.H" +#include "fixedFluxPressureFvPatchScalarField.H" +#include "HashPtrTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +int main(int argc, char *argv[]) +{ + #include "setRootCase.H" + + #include "createTime.H" + #include "createMesh.H" + + pimpleControl pimple(mesh); + + #include "createFields.H" + #include "createMRF.H" + #include "createFvOptions.H" + #include "initContinuityErrs.H" + #include "readTimeControls.H" + #include "CourantNos.H" + #include "setInitialDeltaT.H" + + Switch faceMomentum + ( + pimple.dict().lookupOrDefault<Switch>("faceMomentum", false) + ); + + Switch implicitPhasePressure + ( + mesh.solverDict(alpha1.name()).lookupOrDefault<Switch> + ( + "implicitPhasePressure", false + ) + ); + + #include "pUf/createDDtU.H" + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + Info<< "\nStarting time loop\n" << endl; + + while (runTime.run()) + { + #include "readTimeControls.H" + #include "CourantNos.H" + #include "setDeltaT.H" + + runTime++; + Info<< "Time = " << runTime.timeName() << nl << endl; + + // --- Pressure-velocity PIMPLE corrector loop + while (pimple.loop()) + { + fluid.solve(); + fluid.correct(); + + #include "correctContErrs.H" + + #include "YEqns.H" + + if (faceMomentum) + { + #include "pUf/UEqns.H" + #include "EEqns.H" + #include "pUf/pEqn.H" + #include "pUf/DDtU.H" + } + else + { + #include "pU/UEqns.H" + #include "EEqns.H" + #include "pU/pEqn.H" + } + + fluid.correctKinematics(); + + if (pimple.turbCorr()) + { + fluid.correctTurbulence(); + } + } + + #include "write.H" + + Info<< "ExecutionTime = " + << runTime.elapsedCpuTime() + << " s\n\n" << endl; + } + + Info<< "End\n" << endl; + + return 0; +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/write.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/write.H new file mode 100644 index 0000000000000000000000000000000000000000..303661beb6492a7e608f6d5e2385c824bf8dc55f --- /dev/null +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/write.H @@ -0,0 +1,17 @@ + if (runTime.outputTime()) + { + volVectorField Ur + ( + IOobject + ( + "Ur", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + U1 - U2 + ); + + runTime.write(); + } diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.air new file mode 100644 index 0000000000000000000000000000000000000000..f704d27aa32633b83ada97b2dc1370c6eeb5fe7d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.air @@ -0,0 +1,45 @@ +/*--------------------------------*- 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 +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.water new file mode 100644 index 0000000000000000000000000000000000000000..3c62df75d0c74e8881ad13181e97f7757382d0bf --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/T.water @@ -0,0 +1,45 @@ +/*--------------------------------*- 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 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.water; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/Theta b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/Theta new file mode 100644 index 0000000000000000000000000000000000000000..e45304b83464ea6a9568531b35b570abae0d768f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/Theta @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 Theta; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -2 0 0 0 0 ]; + +internalField uniform 0.0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 1.0e-7; + } + + outlet + { + type inletOutlet; + inletValue uniform 1.0e-7; + value uniform 1.0e-7; + } + + walls + { + type zeroGradient; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.air new file mode 100644 index 0000000000000000000000000000000000000000..e81fffac0612e0a20d26f1cb9be4211ba4be9a16 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.air @@ -0,0 +1,41 @@ +/*--------------------------------*- 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.1 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.air; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.water new file mode 100644 index 0000000000000000000000000000000000000000..aab00fd78bb2a097604737fb5b1b77d2ae159967 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/U.water @@ -0,0 +1,41 @@ +/*--------------------------------*- 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 +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.water; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air new file mode 100644 index 0000000000000000000000000000000000000000..1b1a35684a06787a1eb3cb75f388563aad1443a1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air @@ -0,0 +1,1926 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air.org new file mode 100644 index 0000000000000000000000000000000000000000..4472b0c63598b7f95acf8d79fac10b3e9a08ebf7 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/alpha.air.org @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.air new file mode 100644 index 0000000000000000000000000000000000000000..ed94c59d53a9495e41cc6911c3618799ad0daff1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1.5e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type epsilonWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.water new file mode 100644 index 0000000000000000000000000000000000000000..1cd27e448b42cb846648d2fb9e609e6d44c25b78 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/epsilon.water @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1.5e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.water; + inletValue $internalField; + value $internalField; + } + + walls + { + type epsilonWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.air new file mode 100644 index 0000000000000000000000000000000000000000..b4dd7631087bbf4acdc15b118acf9d03ac9ae048 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 3.75e-5; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type kqRWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.water new file mode 100644 index 0000000000000000000000000000000000000000..3381282f9ca36cd142af029eacdd2189886c1b52 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/k.water @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 3.75e-5; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.water; + inletValue $internalField; + value $internalField; + } + + walls + { + type kqRWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.air new file mode 100644 index 0000000000000000000000000000000000000000..475091edaa9d00eaef74cb5e5f0031b7381d4a56 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.air @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 1e-8; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type nutkWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.water new file mode 100644 index 0000000000000000000000000000000000000000..475091edaa9d00eaef74cb5e5f0031b7381d4a56 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/nut.water @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 1e-8; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type nutkWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p new file mode 100644 index 0000000000000000000000000000000000000000..961771c727970e5d5259b913d2531a44f025a70f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p @@ -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 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/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p_rgh new file mode 100644 index 0000000000000000000000000000000000000000..c816028aaf34844b1f6bd2ec1e3460f9dac8ac29 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/0/p_rgh @@ -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 volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + outlet + { + type fixedValue; + value $internalField; + } + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/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/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/phaseProperties new file mode 100644 index 0000000000000000000000000000000000000000..db138464eda3edda4d6ebbb7b99f1aa173a01d77 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/phaseProperties @@ -0,0 +1,163 @@ +/*--------------------------------*- 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 heatAndMomentumTransferTwoPhaseSystem; + +phases (air water); + +air +{ + type purePhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + + residualAlpha 1e-6; +} + +water +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-6; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.air 0.7; + minPartlyContinuousAlpha.air 0.5; + minFullyContinuousAlpha.water 0.7; + minPartlyContinuousAlpha.water 0.5; + } +} + +surfaceTension +( + (air and water) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (air in water) + { + type constant; + E0 1.0; + } + + (water in air) + { + type constant; + E0 1.0; + } +); + +drag +( + (air in water) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (water in air) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (air and water) + { + type segregated; + m 0.5; + n 8; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (air in water) + { + type constantCoefficient; + Cvm 0.5; + } + + (water in air) + { + type constantCoefficient; + Cvm 0.5; + } +); + +heatTransfer +( + (air in water) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (water in air) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..4564ccc46a64685c98cc53274688263dee85086a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/polyMesh/boundary @@ -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 polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 25; + startFace 3650; + } + outlet + { + type patch; + nFaces 25; + startFace 3675; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 150; + startFace 3700; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water new file mode 100644 index 0000000000000000000000000000000000000000..c44c005d3b17561dc32c9e32262b37dc348aecc3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/thermophysicalProperties.water @@ -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 "constant"; + object thermophysicalProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + 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/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..93118858651234224d3055333322d9f76089ca02 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.air @@ -0,0 +1,34 @@ +/*--------------------------------*- 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 LES; + +LES +{ + LESModel continuousGasKEqn; //Smagorinsky; + + turbulence on; + printCoeffs on; + + delta cubeRootVol; + + cubeRootVolCoeffs + { + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.water new file mode 100644 index 0000000000000000000000000000000000000000..9ca26ce033fd977aaca9c1fd9769105394316716 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/constant/turbulenceProperties.water @@ -0,0 +1,34 @@ +/*--------------------------------*- 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 LES; + +LES +{ + LESModel NicenoKEqn; //SmagorinskyZhang; + + turbulence on; + printCoeffs on; + + delta cubeRootVol; + + cubeRootVolCoeffs + { + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/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 inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..26877364f246abe22650b7f6e479cb60e83cd144 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/controlDict @@ -0,0 +1,95 @@ +/*--------------------------------*- 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 reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 0.005; + +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; + +functions +{ + fieldAverage1 + { + type fieldAverage; + functionObjectLibs ( "libfieldFunctionObjects.so" ); + outputControl outputTime; + fields + ( + U.air + { + mean on; + prime2Mean off; + base time; + } + + U.water + { + mean on; + prime2Mean off; + base time; + } + + alpha.air + { + mean on; + prime2Mean off; + base time; + } + + p + { + mean on; + prime2Mean off; + base time; + } + ); + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..09bfa9fabf450be46e89ff6c633f0243379c2de3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSchemes @@ -0,0 +1,68 @@ +/*--------------------------------*- 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.air) Gauss vanLeer; + div(phir,alpha.air) 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\(alphaRhoPhi.*,k.*\)" 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; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..de1aecacf9335bb46447421cd5a486c4b85d685d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/fvSolution @@ -0,0 +1,91 @@ +/*--------------------------------*- 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.air + { + nAlphaCorr 1; + nAlphaSubCycles 2; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + 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; + } + + "(k|epsilon|Theta).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-7; + relTol 0; + minIter 1; + } +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/setFieldsDict new file mode 100644 index 0000000000000000000000000000000000000000..93d742ba74a2424f861b51d1c5d2d8211a625715 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/LES/bubbleColumn/system/setFieldsDict @@ -0,0 +1,36 @@ +/*--------------------------------*- 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 1 +); + +regions +( + boxToCell + { + box (0 0 -0.1) (0.15 0.701 0.1); + fieldValues + ( + volScalarFieldValue alpha.air 0 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.air new file mode 100644 index 0000000000000000000000000000000000000000..f704d27aa32633b83ada97b2dc1370c6eeb5fe7d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.air @@ -0,0 +1,45 @@ +/*--------------------------------*- 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 +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.water new file mode 100644 index 0000000000000000000000000000000000000000..3c62df75d0c74e8881ad13181e97f7757382d0bf --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/T.water @@ -0,0 +1,45 @@ +/*--------------------------------*- 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 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.water; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/Theta b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/Theta new file mode 100644 index 0000000000000000000000000000000000000000..e45304b83464ea6a9568531b35b570abae0d768f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/Theta @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 Theta; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -2 0 0 0 0 ]; + +internalField uniform 0.0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 1.0e-7; + } + + outlet + { + type inletOutlet; + inletValue uniform 1.0e-7; + value uniform 1.0e-7; + } + + walls + { + type zeroGradient; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.air new file mode 100644 index 0000000000000000000000000000000000000000..e81fffac0612e0a20d26f1cb9be4211ba4be9a16 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.air @@ -0,0 +1,41 @@ +/*--------------------------------*- 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.1 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.air; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.water new file mode 100644 index 0000000000000000000000000000000000000000..aab00fd78bb2a097604737fb5b1b77d2ae159967 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/U.water @@ -0,0 +1,41 @@ +/*--------------------------------*- 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 +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.water; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air new file mode 100644 index 0000000000000000000000000000000000000000..1b1a35684a06787a1eb3cb75f388563aad1443a1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air @@ -0,0 +1,1926 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air.org new file mode 100644 index 0000000000000000000000000000000000000000..4472b0c63598b7f95acf8d79fac10b3e9a08ebf7 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/alpha.air.org @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.air new file mode 100644 index 0000000000000000000000000000000000000000..ee103be57f575366de287cd8e45081bf774c1eed --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 epsilon.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1.5e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type epsilonWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.water new file mode 100644 index 0000000000000000000000000000000000000000..cf8ea7bda761d577f46a68ec014d0613df6b2e5b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilon.water @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 epsilon.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1.5e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.water; + inletValue $internalField; + value $internalField; + } + + walls + { + type epsilonWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilonm b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilonm new file mode 100644 index 0000000000000000000000000000000000000000..a3139ddbc1f7d66e002ce44dd4f7d5f86e49df41 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/epsilonm @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 epsilonm; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1.5e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phim; + inletValue $internalField; + value $internalField; + } + + walls + { + type zeroGradient; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.air new file mode 100644 index 0000000000000000000000000000000000000000..3b5244d4a3c1a91c58df7959586894e503c9a88d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 k.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 3.75e-5; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type kqRWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.water new file mode 100644 index 0000000000000000000000000000000000000000..7cec6e66d0c19a763956ff75d7152a78ae2c5183 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/k.water @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 k.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 3.75e-5; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.water; + inletValue $internalField; + value $internalField; + } + + walls + { + type kqRWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/km b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/km new file mode 100644 index 0000000000000000000000000000000000000000..f6f89f41672230cfa35131a612276d8a0c0ace7d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/km @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 km; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 3.75e-5; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phim; + inletValue $internalField; + value $internalField; + } + + walls + { + type zeroGradient; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.air new file mode 100644 index 0000000000000000000000000000000000000000..e3ce09a2cb1e17fbe965cff657096f38e8f43899 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.air @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 nut.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 1e-8; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type nutkWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.water new file mode 100644 index 0000000000000000000000000000000000000000..376ed3f7943b15d031ec855ec1bd81a5b011d577 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/nut.water @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 nut.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 1e-8; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type nutkWallFunction; + value $internalField; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p new file mode 100644 index 0000000000000000000000000000000000000000..961771c727970e5d5259b913d2531a44f025a70f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p @@ -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 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/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p_rgh new file mode 100644 index 0000000000000000000000000000000000000000..c816028aaf34844b1f6bd2ec1e3460f9dac8ac29 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/0/p_rgh @@ -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 volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + outlet + { + type fixedValue; + value $internalField; + } + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/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/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/phaseProperties new file mode 100644 index 0000000000000000000000000000000000000000..db138464eda3edda4d6ebbb7b99f1aa173a01d77 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/phaseProperties @@ -0,0 +1,163 @@ +/*--------------------------------*- 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 heatAndMomentumTransferTwoPhaseSystem; + +phases (air water); + +air +{ + type purePhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + + residualAlpha 1e-6; +} + +water +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-6; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.air 0.7; + minPartlyContinuousAlpha.air 0.5; + minFullyContinuousAlpha.water 0.7; + minPartlyContinuousAlpha.water 0.5; + } +} + +surfaceTension +( + (air and water) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (air in water) + { + type constant; + E0 1.0; + } + + (water in air) + { + type constant; + E0 1.0; + } +); + +drag +( + (air in water) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (water in air) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (air and water) + { + type segregated; + m 0.5; + n 8; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (air in water) + { + type constantCoefficient; + Cvm 0.5; + } + + (water in air) + { + type constantCoefficient; + Cvm 0.5; + } +); + +heatTransfer +( + (air in water) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (water in air) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..4564ccc46a64685c98cc53274688263dee85086a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/polyMesh/boundary @@ -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 polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 25; + startFace 3650; + } + outlet + { + type patch; + nFaces 25; + startFace 3675; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 150; + startFace 3700; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water new file mode 100644 index 0000000000000000000000000000000000000000..c44c005d3b17561dc32c9e32262b37dc348aecc3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/thermophysicalProperties.water @@ -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 "constant"; + object thermophysicalProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + 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/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..fe69aba1eadb947bda4d8ec9e6f4ea1ba2fd0a4e --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.air @@ -0,0 +1,34 @@ +/*--------------------------------*- 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 RAS; + +RAS +{ + RASModel mixtureKEpsilon; //continuousGasKEpsilon; + + turbulence on; + printCoeffs on; + + // mixtureKEpsilonCoeffs + // { + // Cp 1; + // C3 1; + // } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.water new file mode 100644 index 0000000000000000000000000000000000000000..b82e81c0cbc5e7ad5bd681eaa9bcbed6118de4ef --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/constant/turbulenceProperties.water @@ -0,0 +1,28 @@ +/*--------------------------------*- 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 RAS; + +RAS +{ + RASModel mixtureKEpsilon; //LaheyKEpsilon; + + turbulence on; + printCoeffs on; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/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 inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..26877364f246abe22650b7f6e479cb60e83cd144 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/controlDict @@ -0,0 +1,95 @@ +/*--------------------------------*- 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 reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 0.005; + +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; + +functions +{ + fieldAverage1 + { + type fieldAverage; + functionObjectLibs ( "libfieldFunctionObjects.so" ); + outputControl outputTime; + fields + ( + U.air + { + mean on; + prime2Mean off; + base time; + } + + U.water + { + mean on; + prime2Mean off; + base time; + } + + alpha.air + { + mean on; + prime2Mean off; + base time; + } + + p + { + mean on; + prime2Mean off; + base time; + } + ); + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..ad383605624f147f8fbe17c13656e07f7c1cea17 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSchemes @@ -0,0 +1,70 @@ +/*--------------------------------*- 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.air) Gauss vanLeer; + div(phir,alpha.air) 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\(alphaRhoPhi.*,(k|epsilon).*\)" Gauss limitedLinear 1; + "div\(phim,(k|epsilon)m\)" 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; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..f6f72076f0b473028b810467e708c8e0ba79002f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/fvSolution @@ -0,0 +1,91 @@ +/*--------------------------------*- 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.air + { + nAlphaCorr 1; + nAlphaSubCycles 2; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-8; + relTol 0; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-7; + relTol 0; + minIter 1; + } + + "e.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-7; + relTol 0; + minIter 1; + } + + "(k|epsilon|Theta).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-7; + relTol 0; + minIter 1; + } +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/setFieldsDict new file mode 100644 index 0000000000000000000000000000000000000000..93d742ba74a2424f861b51d1c5d2d8211a625715 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumn/system/setFieldsDict @@ -0,0 +1,36 @@ +/*--------------------------------*- 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 1 +); + +regions +( + boxToCell + { + box (0 0 -0.1) (0.15 0.701 0.1); + fieldValues + ( + volScalarFieldValue alpha.air 0 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.gas new file mode 100644 index 0000000000000000000000000000000000000000..50dd609bc096c48ea49d7c62b58e74c4bc7e0ac3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object AIR.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.9; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.liquid new file mode 100644 index 0000000000000000000000000000000000000000..21d6b06a4265435ed4f7383aaa80098f924ff93c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/AIR.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object AIR.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/CO.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/CO.gas new file mode 100644 index 0000000000000000000000000000000000000000..3241a1ab52a28dc4b11fac8c2538eae5bd0c5fe3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/CO.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object CO.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.1; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.gas new file mode 100644 index 0000000000000000000000000000000000000000..4c75b369281eec82daa4a4ca5265279552ab5527 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object H2O.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.liquid new file mode 100644 index 0000000000000000000000000000000000000000..c7ad1c1c75e91e4338531daeb1a0a775d9f79fbc --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/H2O.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object H2O.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.gas new file mode 100644 index 0000000000000000000000000000000000000000..7c14c5ec5f5339f502eed20b981df6af93355664 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object T.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 400; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.liquid new file mode 100644 index 0000000000000000000000000000000000000000..6f27c82d32805638ea15cf1ea297308b24a63d63 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/T.liquid @@ -0,0 +1,41 @@ +/*--------------------------------*- 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; + location "0"; + object T.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 400; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + inlet + { + type zeroGradient; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.gas new file mode 100644 index 0000000000000000000000000000000000000000..48fc136a2df7e7eeb0b88f1624140aa8811a0e5e --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object U.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.1 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.gas; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.liquid new file mode 100644 index 0000000000000000000000000000000000000000..b041afd007809c48630dc781c7f00d266f9e172f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/U.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object U.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.liquid; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/Ydefault b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/Ydefault new file mode 100644 index 0000000000000000000000000000000000000000..cc22bdff91c3af591c8546b1b4f58690d24df275 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/Ydefault @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object Ydefault; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas new file mode 100644 index 0000000000000000000000000000000000000000..2d4796c4338b76ce4dd78d7865e676577ce70eb6 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas @@ -0,0 +1,1926 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas.org new file mode 100644 index 0000000000000000000000000000000000000000..093bcdab07308b3a9d204b1212b6eacdcb261ce5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.gas.org @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid new file mode 100644 index 0000000000000000000000000000000000000000..60143dd5336b6b12bf086d20e7703d86359a21a7 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid @@ -0,0 +1,1926 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue uniform 0; + value uniform 0; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid.org new file mode 100644 index 0000000000000000000000000000000000000000..4ba98f325e8ef05c0660936b6f2008e1dd14b8f0 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/alpha.liquid.org @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue uniform 0; + value uniform 0; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/epsilon.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/epsilon.gas new file mode 100644 index 0000000000000000000000000000000000000000..c85600904b9a72f0ad56349031e8f2e7f140639d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/epsilon.gas @@ -0,0 +1,43 @@ +/*--------------------------------*- 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; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 1.5e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type epsilonWallFunction; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/k.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/k.gas new file mode 100644 index 0000000000000000000000000000000000000000..a2a79829f33b28561481906cb9643c1191603d27 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/k.gas @@ -0,0 +1,43 @@ +/*--------------------------------*- 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; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 3.75e-5; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type kqRWallFunction; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/nut.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/nut.gas new file mode 100644 index 0000000000000000000000000000000000000000..634a29a38b52f4f3c7cb531a1294caea3057c86a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/nut.gas @@ -0,0 +1,41 @@ +/*--------------------------------*- 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; + location "0"; + object nut; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 1e-8; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + outlet + { + type calculated; + value $internalField; + } + walls + { + type nutkWallFunction; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p new file mode 100644 index 0000000000000000000000000000000000000000..961771c727970e5d5259b913d2531a44f025a70f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p @@ -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 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/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p_rgh new file mode 100644 index 0000000000000000000000000000000000000000..c816028aaf34844b1f6bd2ec1e3460f9dac8ac29 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/0/p_rgh @@ -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 volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + outlet + { + type fixedValue; + value $internalField; + } + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/chemistryProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/chemistryProperties.gas new file mode 100644 index 0000000000000000000000000000000000000000..0e9eb6b63b92601dc5082292ae73442e3f15c49a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/chemistryProperties.gas @@ -0,0 +1,41 @@ +/*--------------------------------*- 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 chemistryProperties.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +chemistryType +{ + chemistrySolver EulerImplicit; + chemistryThermo rho; +} + +chemistry on; + +initialChemicalTimeStep 1e-07; + +EulerImplicitCoeffs +{ + cTauChem 1; + equilibriumRateLimiter off; +} + +odeCoeffs +{ + solver Rosenbrock43; + absTol 1e-12; + relTol 0.01; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/combustionProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/combustionProperties.gas new file mode 100644 index 0000000000000000000000000000000000000000..94555a9a7b2f16f4ef2ceebb306257d6c21701a2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/combustionProperties.gas @@ -0,0 +1,37 @@ +/*--------------------------------*- 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 combustionProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +combustionModel PaSR<rhoChemistryCombustion>; + +active true; + +laminarCoeffs +{ +} + +noCombustionCoeffs +{ +} + +PaSRCoeffs +{ + Cmix 1.0; + turbulentReaction yes; + useReactionRate true; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/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/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/phaseProperties new file mode 100644 index 0000000000000000000000000000000000000000..80179162ba1e658ca5dbe2d582f2459a0e18df44 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/phaseProperties @@ -0,0 +1,219 @@ +/*--------------------------------*- 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 heatMassAndMomentumTransferTwoPhaseSystem; + +phases (gas liquid); + +gas +{ + type reactingPhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + Sc 0.7; + + residualAlpha 1e-6; +} + +liquid +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-6; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.gas 0.7; + minPartlyContinuousAlpha.gas 0.5; + minFullyContinuousAlpha.liquid 0.7; + minPartlyContinuousAlpha.liquid 0.5; + } + + heatTransfer + { + type linear; + minFullyContinuousAlpha.gas 1; + minPartlyContinuousAlpha.gas 0; + minFullyContinuousAlpha.liquid 1; + minPartlyContinuousAlpha.liquid 0; + } + + massTransfer + { + type linear; + minFullyContinuousAlpha.gas 1; + minPartlyContinuousAlpha.gas 0; + minFullyContinuousAlpha.liquid 1; + minPartlyContinuousAlpha.liquid 0; + } +} + +surfaceTension +( + (gas and liquid) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (gas in liquid) + { + type constant; + E0 1.0; + } + + (liquid in gas) + { + type constant; + E0 1.0; + } +); + +drag +( + (gas in liquid) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (liquid in gas) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (gas in liquid) + { + type constantCoefficient; + Cvm 0.5; + } + + (liquid in gas) + { + type constantCoefficient; + Cvm 0.5; + } +); + +interfaceComposition +( + (gas in liquid) + { + type Saturated; + species ( H2O ); + Le 1.0; + saturationPressure + { + type ArdenBuck; + } + } +); + +heatTransfer.gas +( + (gas in liquid) + { + type spherical; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +heatTransfer.liquid +( + (gas in liquid) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type spherical; + residualAlpha 1e-4; + } +); + +massTransfer.gas +( + (gas in liquid) + { + type spherical; + Le 1.0; + } + + (liquid in gas) + { + type Frossling; + Le 1.0; + } +); + +massTransfer.liquid +( +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..4564ccc46a64685c98cc53274688263dee85086a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/polyMesh/boundary @@ -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 polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 25; + startFace 3650; + } + outlet + { + type patch; + nFaces 25; + startFace 3675; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 150; + startFace 3700; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/reactions.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/reactions.gas new file mode 100644 index 0000000000000000000000000000000000000000..a99cb12d887daf1f4e10d7c8d2f4e207b58d40bb --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/reactions.gas @@ -0,0 +1,22 @@ +species +( + CO + CO2 + H2 + H2O + AIR +); + +reactions +{ + waterGasShift + { + type reversibleArrheniusReaction; + + reaction "CO^0.93 + H2O^0.24 = CO2^0.69 + H2^1"; + + A 1e8; + beta 0.86; + Ta 1e4; + } +} diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermo.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermo.gas new file mode 100644 index 0000000000000000000000000000000000000000..dde77f08718b9e92919be8d3f2afa4f233dd7a03 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermo.gas @@ -0,0 +1,109 @@ +CO +{ + specie + { + nMoles 1; + molWeight 28.0106; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 2.71519 0.00206253 -9.98826e-07 2.30053e-10 -2.03648e-14 -14151.9 7.81869 ); + lowCpCoeffs ( 3.57953 -0.000610354 1.01681e-06 9.07006e-10 -9.04424e-13 -14344.1 3.50841 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +CO2 +{ + specie + { + nMoles 1; + molWeight 44.01; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.85746 0.00441437 -2.21481e-06 5.2349e-10 -4.72084e-14 -48759.2 2.27164 ); + lowCpCoeffs ( 2.35677 0.0089846 -7.12356e-06 2.45919e-09 -1.437e-13 -48372 9.90105 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +H2 +{ + specie + { + nMoles 1; + molWeight 2.01594; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.33728 -4.94025e-05 4.99457e-07 -1.79566e-10 2.00255e-14 -950.159 -3.20502 ); + lowCpCoeffs ( 2.34433 0.00798052 -1.94782e-05 2.01572e-08 -7.37612e-12 -917.935 0.68301 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +H2O +{ + specie + { + nMoles 1; + molWeight 18.0153; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.03399 0.00217692 -1.64073e-07 -9.7042e-11 1.68201e-14 -30004.3 4.96677 ); + lowCpCoeffs ( 4.19864 -0.00203643 6.5204e-06 -5.48797e-09 1.77198e-12 -30293.7 -0.849032 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +AIR +{ + specie + { + nMoles 1; + molWeight 28.9596; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.57304 -7.24383e-04 1.67022e-06 -1.26501e-10 -4.20580e-13 -1047.41 3.12431 ); + lowCpCoeffs ( 3.09589 1.22835e-03 -4.14267e-07 6.56910e-11 -3.87021e-15 -983.191 5.34161 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.gas new file mode 100644 index 0000000000000000000000000000000000000000..a06d0f8ddb5cc5043be6ce00d713b15ed5e640b9 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.gas @@ -0,0 +1,38 @@ +/*--------------------------------*- 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.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture reactingMixture; + transport sutherland; + thermo janaf; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +inertSpecie AIR; + +chemistryReader foamChemistryReader; + +foamChemistryFile "$FOAM_CASE/constant/reactions.gas"; + +foamChemistryThermoFile "$FOAM_CASE/constant/thermo.gas"; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.liquid new file mode 100644 index 0000000000000000000000000000000000000000..90073f75ef8b6546f2eddc9643dd6717531bc017 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/thermophysicalProperties.liquid @@ -0,0 +1,86 @@ +/*--------------------------------*- 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.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +species +( + AIR + H2O +); + +inertSpecie H2O; + +"(mixture|H2O)" +{ + specie + { + nMoles 1; + molWeight 18.0153; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Hf -1.5879e+07; + Cp 4195; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + +AIR +{ + specie + { + nMoles 1; + molWeight 28.9; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Hf 0; + Cp 4195; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.gas new file mode 100644 index 0000000000000000000000000000000000000000..fc0ab32ee84188b3647c95bdf1cee524481d2878 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.gas @@ -0,0 +1,28 @@ +/*--------------------------------*- 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.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel kEpsilon; + + turbulence on; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.liquid new file mode 100644 index 0000000000000000000000000000000000000000..8a2a00b53a88aa00c567160859e6a016a98457b8 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/constant/turbulenceProperties.liquid @@ -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.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/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 inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..3414324b79e1df863da8615df36aac297bbc7fc1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/controlDict @@ -0,0 +1,55 @@ +/*--------------------------------*- 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 reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 0.001; + +writeControl runTime; + +writeInterval 1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 10; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep no; + +maxCo 0.5; + +maxDeltaT 1; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/decomposeParDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/decomposeParDict new file mode 100644 index 0000000000000000000000000000000000000000..c98c387d4e61a201cae6268349ee3aefb08e66e7 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/decomposeParDict @@ -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 dictionary; + note "mesh decomposition control dictionary"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 6; + +method hierarchical; + +hierarchicalCoeffs +{ + n (1 6 1); + delta 0.001; + order xyz; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..295452d60010d6eb1c5a442a5be6ff423a2fbad3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSchemes @@ -0,0 +1,76 @@ +/*--------------------------------*- 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.*\)" Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + "div\(alphaRhoPhi.*,Yi\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; + + "div\(alphaRhoPhi.*,(k|epsilon).*\)" Gauss limitedLinear 1; + "div\(phim,(k|epsilon)m\)" 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; +} + +fluxRequired +{ + default no; + p_rgh; +} + +wallDist +{ + method meshWave; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..a629762abaf72cda6e99779b1ee1e9351b114d24 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/fvSolution @@ -0,0 +1,101 @@ +/*--------------------------------*- 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 3; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-11; + relTol 0.001; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + } + + "(e|h).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + } + + "(k|epsilon|Theta).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + } + + Yi + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + residualAlpha 1e-8; + } +} + +PIMPLE +{ + nOuterCorrectors 5; + nCorrectors 1; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/setFieldsDict new file mode 100644 index 0000000000000000000000000000000000000000..8afdc29c84e91a4befec79469440bab19940af46 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/setFieldsDict @@ -0,0 +1,38 @@ +/*--------------------------------*- 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.gas 1 + volScalarFieldValue alpha.liquid 0 +); + +regions +( + boxToCell + { + box (0 0 0) (0.15 0.501 0.1); + fieldValues + ( + volScalarFieldValue alpha.gas 0.01 + volScalarFieldValue alpha.liquid 0.99 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.air new file mode 100644 index 0000000000000000000000000000000000000000..de0ac66f78009070f3e2aaba4c8b5a4b79bc9f6b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.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 volScalarField; + object T.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 600; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 300; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 300; + value uniform 300; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.particles new file mode 100644 index 0000000000000000000000000000000000000000..58313dfb2b5c6f5d87e45ee056240033c9e61406 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/T.particles @@ -0,0 +1,44 @@ +/*--------------------------------*- 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.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 600; + +boundaryField +{ + inlet + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/Theta.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/Theta.particles new file mode 100644 index 0000000000000000000000000000000000000000..c9b385ccd8b7ceba80aa3332b0c25b85d8328566 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/Theta.particles @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 Theta.particles; +} +// ************************************************************************* // + +dimensions [ 0 2 -2 0 0 0 0 ]; + +internalField uniform 0; + +referenceLevel 1e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 1e-4; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.air new file mode 100644 index 0000000000000000000000000000000000000000..a9af55993e23ff26e112eb927135b6667f7d6f45 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.air @@ -0,0 +1,50 @@ +/*--------------------------------*- 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 volVectorField; + object U.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.25 0); + +boundaryField +{ + inlet + { + type interstitialInletVelocity; + inletVelocity uniform (0 0.25 0); + alpha alpha.air; + value $internalField; + } + + outlet + { + type pressureInletOutletVelocity; + phi phi.air; + value $internalField; + } + + walls + { + type fixedValue; + value uniform (0 0 0); + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.particles new file mode 100644 index 0000000000000000000000000000000000000000..fa0397ae355df01d3b11bdd17eda31f4c5ed636a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/U.particles @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 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 0); + } + + outlet + { + type fixedValue; + value uniform (0 0 0); + } + + walls + { + type fixedValue; + value uniform (0 0 0); + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air new file mode 100644 index 0000000000000000000000000000000000000000..288160cdf0cb17779eea8e5a9edaf82b5724b03d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air @@ -0,0 +1,6047 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +6000 +( +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +0.45 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type zeroGradient; + } + outlet + { + type zeroGradient; + } + walls + { + type zeroGradient; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air.org new file mode 100644 index 0000000000000000000000000000000000000000..6292e5ffc082798b8a816da47d97b8c41b755c61 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.air.org @@ -0,0 +1,44 @@ +/*--------------------------------*- 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; + +boundaryField +{ + inlet + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles new file mode 100644 index 0000000000000000000000000000000000000000..cf55161b4a5c380ee0bd2ce31687f4af99e2cd5d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles @@ -0,0 +1,6047 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +6000 +( +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +) +; + +boundaryField +{ + inlet + { + type zeroGradient; + } + outlet + { + type zeroGradient; + } + walls + { + type zeroGradient; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles.org new file mode 100644 index 0000000000000000000000000000000000000000..b28a5a97d9b1034a39925ead65f04cd371860b89 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/alpha.particles.org @@ -0,0 +1,44 @@ +/*--------------------------------*- 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.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/epsilon.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/epsilon.air new file mode 100644 index 0000000000000000000000000000000000000000..0b5f62a356b3f5a9ce5db5401e0b4f29bc1e4fc9 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/epsilon.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 epsilon.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 10; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type epsilonWallFunction; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/k.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/k.air new file mode 100644 index 0000000000000000000000000000000000000000..307a3495c9352c23273259a2af606fb730e96d63 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/k.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 k.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type kqRWallFunction; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.air new file mode 100644 index 0000000000000000000000000000000000000000..dcb65148ae4e0675d7368e0bea77ff0db7f72e60 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.air @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 nut.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +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; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.particles new file mode 100644 index 0000000000000000000000000000000000000000..6264a273f79124da66e26f9f2edf102259ac0874 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/nut.particles @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 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; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p new file mode 100644 index 0000000000000000000000000000000000000000..b318305599bff814b53f4675657a19c68bde0061 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type calculated; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p_rgh new file mode 100644 index 0000000000000000000000000000000000000000..383649e640bcc4e8c6b3b877e4415a79ef0a36d5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/0/p_rgh @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + + outlet + { + type fixedValue; + value $internalField; + } + + walls + { + type fixedFluxPressure; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..e0ac2653b5b370ad62f6770588121d30cac51627 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/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/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/phaseProperties new file mode 100644 index 0000000000000000000000000000000000000000..39a5e3d5df64b62367f5abf219b54a9d8d52ea84 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/phaseProperties @@ -0,0 +1,114 @@ +/*--------------------------------*- 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 heatAndMomentumTransferTwoPhaseSystem; + +phases (particles air); + +particles +{ + type purePhaseModel; + + diameterModel constant; + constantCoeffs + { + d 3e-4; + } + + alphaMax 0.62; + residualAlpha 1e-6; +} + +air +{ + type purePhaseModel; + + diameterModel constant; + constantCoeffs + { + d 1; + } + + residualAlpha 0; +} + +blending +{ + default + { + type none; + continuousPhase air; + } +} + +surfaceTension +( + (air and particles) + { + type constant; + sigma 0; + } +); + + +aspectRatio +( +); + +drag +( + (particles in air) + { + type GidaspowErgunWenYu; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( +); + +heatTransfer +( + (particles in air) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..cda7f49514ca6f2afe27dc960bcbf3ee35d53cb5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/polyMesh/boundary @@ -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 polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 30; + startFace 11770; + } + outlet + { + type patch; + nFaces 30; + startFace 11800; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 400; + startFace 11830; + } + frontAndBackPlanes + { + type empty; + inGroups 1(empty); + nFaces 12000; + startFace 12230; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles new file mode 100644 index 0000000000000000000000000000000000000000..7508b70aa3194312b37a36e71753f74b9cf76166 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/thermophysicalProperties.particles @@ -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.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState rhoConst; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 100; + } + equationOfState + { + rho 2500; + } + thermodynamics + { + Cp 6000; + Hf 0; + } + transport + { + mu 0; + Pr 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..d702f90d3b0338160b0d74e1675fc3661e73bf7d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.air @@ -0,0 +1,44 @@ +/*--------------------------------*- 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 RAS; + +RAS +{ + RASModel kEpsilon; + + turbulence on; + printCoeffs on; +} + +LES +{ + LESModel Smagorinsky; + + turbulence on; + printCoeffs on; + + delta cubeRootVol; + + cubeRootVolCoeffs + { + deltaCoeff 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.particles new file mode 100644 index 0000000000000000000000000000000000000000..6a26e64e58677d6a44754a4fd4a724d55fd2c5c1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/constant/turbulenceProperties.particles @@ -0,0 +1,62 @@ +/*--------------------------------*- 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.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel kineticTheory; + + turbulence on; + printCoeffs on; + + kineticTheoryCoeffs + { + equilibrium off; + + e 0.8; + alphaMax 0.62; + alphaMinFriction 0.5; + residualAlpha 1e-4; + + viscosityModel Gidaspow; + conductivityModel Gidaspow; + granularPressureModel Lun; + frictionalStressModel JohnsonJackson; + radialModel SinclairJackson; + + JohnsonJacksonCoeffs + { + Fr 0.05; + eta 2; + p 5; + phi 28.5; + alphaDeltaMin 0.05; + } + } + + phasePressureCoeffs + { + preAlphaExp 500; + expMax 1000; + alphaMax 0.62; + g0 1000; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..900f5a585b8a3abd2fd564c7b949035e390640ea --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/blockMeshDict @@ -0,0 +1,66 @@ +/*--------------------------------*- 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.01) + (0.15 0 -0.01) + (0.15 1 -0.01) + (0 1 -0.01) + (0 0 0.01) + (0.15 0 0.01) + (0.15 1 0.01) + (0 1 0.01) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (30 200 1) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + patch inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) + empty frontAndBackPlanes + ( + (0 3 2 1) + (4 5 6 7) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..fbbdb761cad4164f446cdf35f845d9611743ef65 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/controlDict @@ -0,0 +1,95 @@ +/*--------------------------------*- 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 reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 2; + +deltaT 0.0002; + +writeControl runTime; + +writeInterval 0.01; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable on; + +adjustTimeStep no; + +maxCo 0.9; + +maxDeltaT 1e-05; + +functions +{ + fieldAverage1 + { + type fieldAverage; + functionObjectLibs ( "libfieldFunctionObjects.so" ); + outputControl outputTime; + fields + ( + U.particles + { + mean on; + prime2Mean off; + base time; + } + + U.air + { + mean on; + prime2Mean off; + base time; + } + + alpha.particles + { + mean on; + prime2Mean off; + base time; + } + + p + { + mean on; + prime2Mean off; + base time; + } + ); + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..e859411a19e49261a3d56fba819bc2289b32af0e --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSchemes @@ -0,0 +1,81 @@ +/*--------------------------------*- 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.*\)" 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(alphaRhoPhi.particles,Theta.particles) Gauss limitedLinear 1; + + "div\(alphaRhoPhi.*,(k|epsilon).*\)" Gauss limitedLinear 1; + + div((((alpha.air*thermo:rho.air)*nuEff.air)*dev2(T(grad(U.air))))) 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; + bounded Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; + bounded uncorrected; +} + +fluxRequired +{ + default no; + p_rgh ; + alpha.particles; +} + +wallDist +{ + method meshWave; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..0965029f85a161e283e702aedaf24f3d33a6eae2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/fvSolution @@ -0,0 +1,108 @@ +/*--------------------------------*- 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; + implicitPhasePressure yes; + + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-9; + relTol 0; + minIter 1; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-8; + relTol 0.01; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } + + "(h|e).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-6; + relTol 0; + minIter 1; + } + + "Theta.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-6; + relTol 0; + minIter 1; + } + + "(k|epsilon).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; + faceMomentum yes; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/setFieldsDict new file mode 100644 index 0000000000000000000000000000000000000000..da4c6ee6f2b05ccee47aa322a096b2cacad742a0 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/fluidisedBed/system/setFieldsDict @@ -0,0 +1,38 @@ +/*--------------------------------*- 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 1 + volScalarFieldValue alpha.particles 0 +); + +regions +( + boxToCell + { + box ( 0 0 -0.1 ) ( 0.15 0.5 0.1 ); + fieldValues + ( + volScalarFieldValue alpha.air 0.45 + volScalarFieldValue alpha.particles 0.55 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.air new file mode 100644 index 0000000000000000000000000000000000000000..9c0fd4206c19f34a05d8c05da28254b22882ebcf --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.air @@ -0,0 +1,45 @@ +/*--------------------------------*- 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 Tair; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.water new file mode 100644 index 0000000000000000000000000000000000000000..e592c501d54f0421cc5df1b3ed3954cfb6969b1d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.water @@ -0,0 +1,45 @@ +/*--------------------------------*- 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 Twater; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.water; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/Theta b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/Theta new file mode 100644 index 0000000000000000000000000000000000000000..e45304b83464ea6a9568531b35b570abae0d768f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/Theta @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 Theta; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -2 0 0 0 0 ]; + +internalField uniform 0.0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 1.0e-7; + } + + outlet + { + type inletOutlet; + inletValue uniform 1.0e-7; + value uniform 1.0e-7; + } + + walls + { + type zeroGradient; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.air new file mode 100644 index 0000000000000000000000000000000000000000..e81fffac0612e0a20d26f1cb9be4211ba4be9a16 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.air @@ -0,0 +1,41 @@ +/*--------------------------------*- 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.1 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.air; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.water new file mode 100644 index 0000000000000000000000000000000000000000..aab00fd78bb2a097604737fb5b1b77d2ae159967 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.water @@ -0,0 +1,41 @@ +/*--------------------------------*- 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 +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.water; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air new file mode 100644 index 0000000000000000000000000000000000000000..1b1a35684a06787a1eb3cb75f388563aad1443a1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air @@ -0,0 +1,1926 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org new file mode 100644 index 0000000000000000000000000000000000000000..4472b0c63598b7f95acf8d79fac10b3e9a08ebf7 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p new file mode 100644 index 0000000000000000000000000000000000000000..961771c727970e5d5259b913d2531a44f025a70f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p @@ -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 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/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p_rgh new file mode 100644 index 0000000000000000000000000000000000000000..c816028aaf34844b1f6bd2ec1e3460f9dac8ac29 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/0/p_rgh @@ -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 volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + outlet + { + type fixedValue; + value $internalField; + } + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/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/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties new file mode 100644 index 0000000000000000000000000000000000000000..3f7a06fbc5be0b79a89405222abfb4bf4d0970a4 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties @@ -0,0 +1,166 @@ +/*--------------------------------*- 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 heatAndMomentumTransferTwoPhaseSystem; + +phases (air water); + +air +{ + type purePhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + + residualAlpha 1e-6; +} + +water +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-6; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.air 0.7; + minPartlyContinuousAlpha.air 0.5; + minFullyContinuousAlpha.water 0.7; + minPartlyContinuousAlpha.water 0.5; + } +} + +surfaceTension +( + (air and water) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (air in water) + { + type constant; + E0 1.0; + } + + (water in air) + { + type constant; + E0 1.0; + } +); + +drag +( + (air in water) + { + type SchillerNaumann; + + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (water in air) + { + type SchillerNaumann; + + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (air and water) + { + type segregated; + + m 0.5; + n 8; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (air in water) + { + type constantCoefficient; + Cvm 0.5; + } + + (water in air) + { + type constantCoefficient; + Cvm 0.5; + } +); + +heatTransfer +( + (air in water) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (water in air) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..4564ccc46a64685c98cc53274688263dee85086a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/boundary @@ -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 polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 25; + startFace 3650; + } + outlet + { + type patch; + nFaces 25; + startFace 3675; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 150; + startFace 3700; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water new file mode 100644 index 0000000000000000000000000000000000000000..c44c005d3b17561dc32c9e32262b37dc348aecc3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water @@ -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 "constant"; + object thermophysicalProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + 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/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..1296429b72a21953def920b08774aa75e1d048b1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/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/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.water new file mode 100644 index 0000000000000000000000000000000000000000..7f0d75a82fcdc99677fa0be8a4111cfe91e4a82c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/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/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/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 inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..26877364f246abe22650b7f6e479cb60e83cd144 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict @@ -0,0 +1,95 @@ +/*--------------------------------*- 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 reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 0.005; + +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; + +functions +{ + fieldAverage1 + { + type fieldAverage; + functionObjectLibs ( "libfieldFunctionObjects.so" ); + outputControl outputTime; + fields + ( + U.air + { + mean on; + prime2Mean off; + base time; + } + + U.water + { + mean on; + prime2Mean off; + base time; + } + + alpha.air + { + mean on; + prime2Mean off; + base time; + } + + p + { + mean on; + prime2Mean off; + base time; + } + ); + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..2c05f079b6251693175313fd48a99e12e92ab7e9 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSchemes @@ -0,0 +1,67 @@ +/*--------------------------------*- 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.air) Gauss vanLeer; + div(phir,alpha.air) 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; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..350b0c0c1fe42f2d87699003d0b6b2532edda2ed --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSolution @@ -0,0 +1,82 @@ +/*--------------------------------*- 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.air + { + nAlphaCorr 1; + nAlphaSubCycles 2; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + 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; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/setFieldsDict new file mode 100644 index 0000000000000000000000000000000000000000..93d742ba74a2424f861b51d1c5d2d8211a625715 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumn/system/setFieldsDict @@ -0,0 +1,36 @@ +/*--------------------------------*- 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 1 +); + +regions +( + boxToCell + { + box (0 0 -0.1) (0.15 0.701 0.1); + fieldValues + ( + volScalarFieldValue alpha.air 0 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/CO.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/CO.gas new file mode 100644 index 0000000000000000000000000000000000000000..3241a1ab52a28dc4b11fac8c2538eae5bd0c5fe3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/CO.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object CO.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.1; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.gas new file mode 100644 index 0000000000000000000000000000000000000000..4c75b369281eec82daa4a4ca5265279552ab5527 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object H2O.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.liquid new file mode 100644 index 0000000000000000000000000000000000000000..c7ad1c1c75e91e4338531daeb1a0a775d9f79fbc --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/H2O.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object H2O.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.gas new file mode 100644 index 0000000000000000000000000000000000000000..db51372765d2805710582d48fa2318e5a8ce45d7 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object T.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.liquid new file mode 100644 index 0000000000000000000000000000000000000000..1e5699a4cd04e86f169a7c747891625edad0b607 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/T.liquid @@ -0,0 +1,41 @@ +/*--------------------------------*- 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; + location "0"; + object T.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + inlet + { + type zeroGradient; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.gas new file mode 100644 index 0000000000000000000000000000000000000000..48fc136a2df7e7eeb0b88f1624140aa8811a0e5e --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object U.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.1 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.gas; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.liquid new file mode 100644 index 0000000000000000000000000000000000000000..b041afd007809c48630dc781c7f00d266f9e172f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/U.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object U.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.liquid; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/Ydefault b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/Ydefault new file mode 100644 index 0000000000000000000000000000000000000000..cc22bdff91c3af591c8546b1b4f58690d24df275 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/Ydefault @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object Ydefault; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.gas new file mode 100644 index 0000000000000000000000000000000000000000..a97658d602c2df4edc8202363726ce3289a15c11 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object air.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.9; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.liquid new file mode 100644 index 0000000000000000000000000000000000000000..dc181ed87a7080d2d8084c94da39b5403e4ad3d5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/air.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object air.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas new file mode 100644 index 0000000000000000000000000000000000000000..2d4796c4338b76ce4dd78d7865e676577ce70eb6 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas @@ -0,0 +1,1926 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +0.01 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas.org new file mode 100644 index 0000000000000000000000000000000000000000..093bcdab07308b3a9d204b1212b6eacdcb261ce5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.gas.org @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid new file mode 100644 index 0000000000000000000000000000000000000000..60143dd5336b6b12bf086d20e7703d86359a21a7 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid @@ -0,0 +1,1926 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0.99 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue uniform 0; + value uniform 0; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid.org new file mode 100644 index 0000000000000000000000000000000000000000..4ba98f325e8ef05c0660936b6f2008e1dd14b8f0 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/alpha.liquid.org @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue uniform 0; + value uniform 0; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p new file mode 100644 index 0000000000000000000000000000000000000000..961771c727970e5d5259b913d2531a44f025a70f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p @@ -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 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/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p_rgh new file mode 100644 index 0000000000000000000000000000000000000000..c816028aaf34844b1f6bd2ec1e3460f9dac8ac29 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/0/p_rgh @@ -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 volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + outlet + { + type fixedValue; + value $internalField; + } + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/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/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/phaseProperties new file mode 100644 index 0000000000000000000000000000000000000000..7fd6f0c6c2e37d449ff6c700b0bbd1e463bd10ab --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/phaseProperties @@ -0,0 +1,230 @@ +/*--------------------------------*- 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 heatMassAndMomentumTransferTwoPhaseSystem; + +phases (gas liquid); + +gas +{ + type multiComponentPhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + Sc 0.7; + + residualAlpha 1e-6; +} + +liquid +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-6; +} + +blending +{ + default + { + type linear; + minPartlyContinuousAlpha.gas 0.5; + minFullyContinuousAlpha.gas 0.7; + minPartlyContinuousAlpha.liquid 0.5; + minFullyContinuousAlpha.liquid 0.7; + } + + heatTransferModel + { + type linear; + minPartlyContinuousAlpha.gas 0; + minFullyContinuousAlpha.gas 1; + minPartlyContinuousAlpha.liquid 0; + minFullyContinuousAlpha.liquid 1; + } + + massTransferModel + { + type linear; + minPartlyContinuousAlpha.gas 0; + minFullyContinuousAlpha.gas 1; + minPartlyContinuousAlpha.liquid 0; + minFullyContinuousAlpha.liquid 1; + } +} + +surfaceTension +( + (gas and liquid) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (gas in liquid) + { + type constant; + E0 1.0; + } + + (liquid in gas) + { + type constant; + E0 1.0; + } +); + +drag +( + (gas in liquid) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (liquid in gas) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (gas in liquid) + { + type constantCoefficient; + Cvm 0.5; + } + + (liquid in gas) + { + type constantCoefficient; + Cvm 0.5; + } +); + +interfaceComposition +( + (gas in liquid) + { + type Saturated; + species ( H2O ); + Le 1.0; + saturationPressure + { + type ArdenBuck; + } + } +); + +heatTransfer.gas +( + (gas in liquid) + { + type spherical; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +heatTransfer.liquid +( + (gas in liquid) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type spherical; + residualAlpha 1e-4; + } +); + +massTransfer.gas +( + (gas in liquid) + { + type spherical; + Le 1.0; + } + + (liquid in gas) + { + type Frossling; + Le 1.0; + } +); + +massTransfer.liquid +( + (gas in liquid) + { + type Frossling; + Le 1.0; + } + + (liquid in gas) + { + type spherical; + Le 1.0; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..4564ccc46a64685c98cc53274688263dee85086a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/polyMesh/boundary @@ -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 polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 25; + startFace 3650; + } + outlet + { + type patch; + nFaces 25; + startFace 3675; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 150; + startFace 3700; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.gas new file mode 100644 index 0000000000000000000000000000000000000000..0bfc34018d2a9ecfe57d71bb88e74d616ffc9dc3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.gas @@ -0,0 +1,82 @@ +/*--------------------------------*- 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.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture multiComponentMixture; + transport sutherland; + thermo janaf; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +inertSpecie air; + +species +( + air + H2O +); + +H2O +{ + specie + { + nMoles 1; + molWeight 18.0153; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.03399 0.00217692 -1.64073e-07 -9.7042e-11 1.68201e-14 -30004.3 4.96677 ); + lowCpCoeffs ( 4.19864 -0.00203643 6.5204e-06 -5.48797e-09 1.77198e-12 -30293.7 -0.849032 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +air +{ + specie + { + nMoles 1; + molWeight 28.9596; + } + thermodynamics + { + Tlow 200; + Thigh 3500; + Tcommon 1000; + highCpCoeffs ( 3.57304 -7.24383e-04 1.67022e-06 -1.26501e-10 -4.20580e-13 -1047.41 3.12431 ); + lowCpCoeffs ( 3.09589 1.22835e-03 -4.14267e-07 6.56910e-11 -3.87021e-15 -983.191 5.34161 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.liquid new file mode 100644 index 0000000000000000000000000000000000000000..2f486f8bea8485ddaa6f0af952c9c7684080ed16 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/thermophysicalProperties.liquid @@ -0,0 +1,86 @@ +/*--------------------------------*- 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.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +species +( + air + H2O +); + +inertSpecie H2O; + +"(mixture|H2O)" +{ + specie + { + nMoles 1; + molWeight 18.0153; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Hf -1.5879e+07; + Cp 4195; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + +air +{ + specie + { + nMoles 1; + molWeight 28.9; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Hf 0; + Cp 4195; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.gas new file mode 100644 index 0000000000000000000000000000000000000000..1db1a26701655056fe19426b3e2cf045bf9abd86 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.gas @@ -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.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.liquid new file mode 100644 index 0000000000000000000000000000000000000000..8a2a00b53a88aa00c567160859e6a016a98457b8 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/constant/turbulenceProperties.liquid @@ -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.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/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 inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/continuityFunctions b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/continuityFunctions new file mode 100644 index 0000000000000000000000000000000000000000..04b7acab203b7e5ff5d953e30330f4dc1c4b3060 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/continuityFunctions @@ -0,0 +1,89 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +inletMassFlowRate +{ + type faceSource; + functionObjectLibs ("libfieldFunctionObjects.so"); + + fields + ( + alphaRhoPhi.gas + alphaRhoPhi.liquid + ); + + valueOutput false; + log true; + surfaceFormat null; + + source patch; + sourceName inlet; + + operation sum; + + outputControl timeStep; +} + +outletMassFlowRate +{ + type faceSource; + functionObjectLibs ("libfieldFunctionObjects.so"); + + fields + ( + alphaRhoPhi.gas + alphaRhoPhi.liquid + ); + + valueOutput false; + log true; + surfaceFormat null; + + source patch; + sourceName outlet; + + operation sum; + + outputControl timeStep; +} + +totalMass +{ + type coded; + functionObjectLibs ("libutilityFunctionObjects.so"); + redirectType error; + + code + #{ + const volScalarField& alphaGas = + mesh().lookupObject<volScalarField>("alpha.gas"); + const volScalarField& alphaLiquid = + mesh().lookupObject<volScalarField>("alpha.liquid"); + + const volScalarField& rhoGas = + mesh().lookupObject<volScalarField>("thermo:rho.gas"); + const volScalarField& rhoLiquid = + mesh().lookupObject<volScalarField>("thermo:rho.liquid"); + + const volScalarField& dmdt = + mesh().lookupObject<volScalarField>("dmdt.gasAndLiquid"); + + const scalarField& v = mesh().V(); + + Info<< "coded totalMass output:" << endl + << " volIntegrate(all) for alpha.gas*rho.gas = " + << gSum(alphaGas*rhoGas*v) << endl + << " volIntegrate(all) for alpha.liquid*rho.liquid = " + << gSum(alphaLiquid*rhoLiquid*v) << endl + << " volIntegrate(all) for dmdt = " + << gSum(dmdt*v) << endl + << endl; + #}; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..b6cb44bf8374feb59d87d5ef225a31097ef2c17c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/controlDict @@ -0,0 +1,59 @@ +/*--------------------------------*- 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 reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 0.0025; + +writeControl runTime; + +writeInterval 1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 10; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep no; + +maxCo 0.5; + +maxDeltaT 1; + +functions +{ + //#include "continuityFunctions" +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/decomposeParDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/decomposeParDict new file mode 100644 index 0000000000000000000000000000000000000000..c98c387d4e61a201cae6268349ee3aefb08e66e7 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/decomposeParDict @@ -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 dictionary; + note "mesh decomposition control dictionary"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 6; + +method hierarchical; + +hierarchicalCoeffs +{ + n (1 6 1); + delta 0.001; + order xyz; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..2eb455d3e03d7313b6b838cb9746ab51feb8c12f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSchemes @@ -0,0 +1,68 @@ +/*--------------------------------*- 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.*\)" Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + "div\(alphaRhoPhi.*,Yi\)" Gauss limitedLinear 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; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..323c361051cf202a21c95b08ccf2a2aed90db301 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/fvSolution @@ -0,0 +1,92 @@ +/*--------------------------------*- 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 3; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-11; + relTol 0.001; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + } + + "(e|h).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + } + + Yi + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + residualAlpha 1e-8; + } +} + +PIMPLE +{ + nOuterCorrectors 5; + nCorrectors 1; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/setFieldsDict new file mode 100644 index 0000000000000000000000000000000000000000..8afdc29c84e91a4befec79469440bab19940af46 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/setFieldsDict @@ -0,0 +1,38 @@ +/*--------------------------------*- 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.gas 1 + volScalarFieldValue alpha.liquid 0 +); + +regions +( + boxToCell + { + box (0 0 0) (0.15 0.501 0.1); + fieldValues + ( + volScalarFieldValue alpha.gas 0.01 + volScalarFieldValue alpha.liquid 0.99 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.gas new file mode 100644 index 0000000000000000000000000000000000000000..1da050a2b20ac28c7889656af470eae44146018a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.gas @@ -0,0 +1,41 @@ +/*--------------------------------*- 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.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.liquid new file mode 100644 index 0000000000000000000000000000000000000000..8a681a590b278a1947ab97622dbd1d45b1ea1847 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/T.liquid @@ -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 volScalarField; + object T.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + inlet + { + type zeroGradient; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.gas new file mode 100644 index 0000000000000000000000000000000000000000..4f37ea90bf2ad6ef686f9d6622ec30ff5419b18b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.gas @@ -0,0 +1,41 @@ +/*--------------------------------*- 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.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.1 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.gas; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.liquid new file mode 100644 index 0000000000000000000000000000000000000000..c70b49719c753ac2329244b12202e06362e45f71 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/U.liquid @@ -0,0 +1,41 @@ +/*--------------------------------*- 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.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.liquid; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.gas new file mode 100644 index 0000000000000000000000000000000000000000..2e6c5de3ba8693f769ab4a9a135190600bd135f2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object air.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.liquid new file mode 100644 index 0000000000000000000000000000000000000000..dc181ed87a7080d2d8084c94da39b5403e4ad3d5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/air.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object air.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.gas new file mode 100644 index 0000000000000000000000000000000000000000..5169dec6f86a6e852ea9669912040477b5cc2458 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.gas @@ -0,0 +1,1926 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.liquid new file mode 100644 index 0000000000000000000000000000000000000000..2fc0873d4f4eb92ff41d818210ba76e7fe899dab --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/alpha.liquid @@ -0,0 +1,1926 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue uniform 0; + value uniform 0; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p new file mode 100644 index 0000000000000000000000000000000000000000..961771c727970e5d5259b913d2531a44f025a70f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p @@ -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 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/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p_rgh new file mode 100644 index 0000000000000000000000000000000000000000..c816028aaf34844b1f6bd2ec1e3460f9dac8ac29 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/p_rgh @@ -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 volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + outlet + { + type fixedValue; + value $internalField; + } + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.gas new file mode 100644 index 0000000000000000000000000000000000000000..4bb3d7f79b2c2dfc41bb8973bd9c095d8525b315 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.gas @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object water.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.gas; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.liquid new file mode 100644 index 0000000000000000000000000000000000000000..51e7d02eb1bcf6481ec779533a3cd52b620e22ff --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/0/water.liquid @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object water.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + phi phi.liquid; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/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/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/phaseProperties new file mode 100644 index 0000000000000000000000000000000000000000..9ac25e45131fa5d1e7e7c62053e0cb54e7673bfb --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/phaseProperties @@ -0,0 +1,238 @@ +/*--------------------------------*- 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 heatMassAndMomentumTransferTwoPhaseSystem; + +phases (gas liquid); + +gas +{ + type multiComponentPhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + Sc 0.7; + + residualAlpha 1e-6; +} + +liquid +{ + type multiComponentPhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + Sc 0.7; + + residualAlpha 1e-6; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.gas 0.7; + minPartlyContinuousAlpha.gas 0.5; + minFullyContinuousAlpha.liquid 0.7; + minPartlyContinuousAlpha.liquid 0.5; + } + + heatTransferModel + { + type linear; + minFullyContinuousAlpha.gas 1; + minPartlyContinuousAlpha.gas 0; + minFullyContinuousAlpha.liquid 1; + minPartlyContinuousAlpha.liquid 0; + } + + massTransferModel + { + type linear; + minFullyContinuousAlpha.gas 1; + minPartlyContinuousAlpha.gas 0; + minFullyContinuousAlpha.liquid 1; + minPartlyContinuousAlpha.liquid 0; + } +} + +surfaceTension +( + (gas and liquid) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (gas in liquid) + { + type constant; + E0 1.0; + } + + (liquid in gas) + { + type constant; + E0 1.0; + } +); + +drag +( + (gas in liquid) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (liquid in gas) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (gas in liquid) + { + type constantCoefficient; + Cvm 0.5; + } + + (liquid in gas) + { + type constantCoefficient; + Cvm 0.5; + } +); + +interfaceComposition +( + (gas in liquid) + { + type Saturated; + species ( water ); + Le 1.0; + saturationPressure + { + type ArdenBuck; + } + } + + (liquid in gas) + { + type Henry; + species ( air ); + k ( 1.492e-2 ); + Le 1.0; + } +); + +heatTransfer.gas +( + (gas in liquid) + { + type spherical; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +heatTransfer.liquid +( + (gas in liquid) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (liquid in gas) + { + type spherical; + residualAlpha 1e-4; + } +); + +massTransfer.gas +( + (gas in liquid) + { + type spherical; + Le 1.0; + } + + (liquid in gas) + { + type Frossling; + Le 1.0; + } +); + +massTransfer.liquid +( + (gas in liquid) + { + type Frossling; + Le 1.0; + } + + (liquid in gas) + { + type spherical; + Le 1.0; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..4564ccc46a64685c98cc53274688263dee85086a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/polyMesh/boundary @@ -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 polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 25; + startFace 3650; + } + outlet + { + type patch; + nFaces 25; + startFace 3675; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 150; + startFace 3700; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.gas new file mode 100644 index 0000000000000000000000000000000000000000..8b8132932860b9c9eda4657c887da7d5bb17c25e --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.gas @@ -0,0 +1,76 @@ +/*--------------------------------*- 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.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture multiComponentMixture; + transport const; + thermo hConst; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +species +( + air + water +); + +inertSpecie air; + +"(mixture|air)" +{ + specie + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Hf 0; + Cp 1012.5; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + +water +{ + specie + { + nMoles 1; + molWeight 18.0153; + } + thermodynamics + { + Hf -1.3435e+07; + Cp 1857.8; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.liquid new file mode 100644 index 0000000000000000000000000000000000000000..22a48eded3b2d2c2893d46c9f0198f070da7b6ed --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/thermophysicalProperties.liquid @@ -0,0 +1,86 @@ +/*--------------------------------*- 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.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture multiComponentMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +species +( + air + water +); + +inertSpecie water; + +"(mixture|water)" +{ + specie + { + nMoles 1; + molWeight 18.0153; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Hf -1.5879e+07; + Cp 4195; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + +air +{ + specie + { + nMoles 1; + molWeight 28.9; + } + equationOfState + { + R 3000; + rho0 1027; + } + thermodynamics + { + Hf 0; + Cp 4195; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.gas b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.gas new file mode 100644 index 0000000000000000000000000000000000000000..1db1a26701655056fe19426b3e2cf045bf9abd86 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.gas @@ -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.gas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.liquid b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.liquid new file mode 100644 index 0000000000000000000000000000000000000000..8a2a00b53a88aa00c567160859e6a016a98457b8 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/constant/turbulenceProperties.liquid @@ -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.liquid; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/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 inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..d24ddcc3662413cc476aa5ae29772fe4b47bf2a6 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/controlDict @@ -0,0 +1,55 @@ +/*--------------------------------*- 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 reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 0.0025; + +writeControl runTime; + +writeInterval 1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 10; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep no; + +maxCo 0.5; + +maxDeltaT 1; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..fd4e48c43da170209f5e2203a3d0f830925dea21 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSchemes @@ -0,0 +1,68 @@ +/*--------------------------------*- 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.*\)" Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + "div\(alphaRhoPhi.*,Yi\)" Gauss limitedLinear 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; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..8f0f1704581f1e2704ed4212dbba1499334d9948 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/fvSolution @@ -0,0 +1,92 @@ +/*--------------------------------*- 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 3; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-12; + relTol 0.001; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + } + + "(e|h).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + } + + Yi + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-12; + relTol 0; + minIter 1; + residualAlpha 1e-8; + } +} + +PIMPLE +{ + nOuterCorrectors 5; + nCorrectors 1; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/setFieldsDict new file mode 100644 index 0000000000000000000000000000000000000000..facd52f351b499a4dcb9cfc2b34db5cb63058e4d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving/system/setFieldsDict @@ -0,0 +1,38 @@ +/*--------------------------------*- 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.gas 1 + volScalarFieldValue alpha.liquid 0 +); + +regions +( + boxToCell + { + box (0 0 0) (0.15 0.501 0.1); + fieldValues + ( + volScalarFieldValue alpha.gas 0 + volScalarFieldValue alpha.liquid 1 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.air new file mode 100644 index 0000000000000000000000000000000000000000..9c0fd4206c19f34a05d8c05da28254b22882ebcf --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.air @@ -0,0 +1,45 @@ +/*--------------------------------*- 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 Tair; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.water new file mode 100644 index 0000000000000000000000000000000000000000..1cfd38f926516878085292090cf2e55699fef0cb --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/T.water @@ -0,0 +1,45 @@ +/*--------------------------------*- 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 Twater; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 350; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.water; + inletValue uniform 300; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/Theta b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/Theta new file mode 100644 index 0000000000000000000000000000000000000000..e45304b83464ea6a9568531b35b570abae0d768f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/Theta @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 Theta; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 0 2 -2 0 0 0 0 ]; + +internalField uniform 0.0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 1.0e-7; + } + + outlet + { + type inletOutlet; + inletValue uniform 1.0e-7; + value uniform 1.0e-7; + } + + walls + { + type zeroGradient; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.air new file mode 100644 index 0000000000000000000000000000000000000000..e81fffac0612e0a20d26f1cb9be4211ba4be9a16 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.air @@ -0,0 +1,41 @@ +/*--------------------------------*- 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.1 0); + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.air; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.water new file mode 100644 index 0000000000000000000000000000000000000000..aab00fd78bb2a097604737fb5b1b77d2ae159967 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/U.water @@ -0,0 +1,41 @@ +/*--------------------------------*- 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 +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type pressureInletOutletVelocity; + phi phi.water; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air new file mode 100644 index 0000000000000000000000000000000000000000..1b1a35684a06787a1eb3cb75f388563aad1443a1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air @@ -0,0 +1,1926 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air.org new file mode 100644 index 0000000000000000000000000000000000000000..4472b0c63598b7f95acf8d79fac10b3e9a08ebf7 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/alpha.air.org @@ -0,0 +1,42 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/kappai.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/kappai.air new file mode 100644 index 0000000000000000000000000000000000000000..cd5560fb91c54e17ae70b91f32c52ef8fde3aa56 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/kappai.air @@ -0,0 +1,45 @@ +/*--------------------------------*- 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 kappai.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 -1 0 0 0 0 0]; + +internalField uniform 2000; + +boundaryField +{ + walls + { + type zeroGradient; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + inlet + { + type fixedValue; + value $internalField; + } + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p new file mode 100644 index 0000000000000000000000000000000000000000..961771c727970e5d5259b913d2531a44f025a70f --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p @@ -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 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/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p_rgh new file mode 100644 index 0000000000000000000000000000000000000000..c816028aaf34844b1f6bd2ec1e3460f9dac8ac29 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/0/p_rgh @@ -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 volScalarField; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [ 1 -1 -2 0 0 0 0 ]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + outlet + { + type fixedValue; + value $internalField; + } + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/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/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/phaseProperties new file mode 100644 index 0000000000000000000000000000000000000000..e46eefe31725c340be28636af3535333a0febd04 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/phaseProperties @@ -0,0 +1,186 @@ +/*--------------------------------*- 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 heatAndMomentumTransferTwoPhaseSystem; + +phases (air water); + +air +{ + type purePhaseModel; + + diameterModel IATE; + + IATECoeffs + { + dMax 1e-2; + dMin 1e-4; + residualAlpha 1e-6; + + sources + ( + wakeEntrainmentCoalescence + { + Cwe 0.002; + } + randomCoalescence + { + Crc 0.04; + C 3; + alphaMax 0.75; + } + turbulentBreakUp + { + Cti 0.085; + WeCr 6; + } + ); + } + + residualAlpha 1e-6; +} + +water +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-6; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.air 0.7; + minPartlyContinuousAlpha.air 0.5; + minFullyContinuousAlpha.water 0.7; + minPartlyContinuousAlpha.water 0.5; + } +} + +surfaceTension +( + (air and water) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (air in water) + { + type constant; + E0 1.0; + } + + (water in air) + { + type constant; + E0 1.0; + } +); + +drag +( + (air in water) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (water in air) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (air and water) + { + type segregated; + residualAlpha 1e-6; + m 0.5; + n 8; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (air in water) + { + type constantCoefficient; + Cvm 0.5; + } + + (water in air) + { + type constantCoefficient; + Cvm 0.5; + } +); + +heatTransfer +( + (air in water) + { + type RanzMarshall; + residualAlpha 1e-4; + } + + (water in air) + { + type RanzMarshall; + residualAlpha 1e-4; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..4564ccc46a64685c98cc53274688263dee85086a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/polyMesh/boundary @@ -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 polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 25; + startFace 3650; + } + outlet + { + type patch; + nFaces 25; + startFace 3675; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 150; + startFace 3700; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water new file mode 100644 index 0000000000000000000000000000000000000000..c44c005d3b17561dc32c9e32262b37dc348aecc3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/thermophysicalProperties.water @@ -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 "constant"; + object thermophysicalProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + 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/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..1296429b72a21953def920b08774aa75e1d048b1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/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/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/constant/turbulenceProperties.water new file mode 100644 index 0000000000000000000000000000000000000000..7f0d75a82fcdc99677fa0be8a4111cfe91e4a82c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/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/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..d03967afdc2ccf7afbecdf32d50159c309a475e3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/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 inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..26877364f246abe22650b7f6e479cb60e83cd144 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/controlDict @@ -0,0 +1,95 @@ +/*--------------------------------*- 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 reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 0.005; + +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; + +functions +{ + fieldAverage1 + { + type fieldAverage; + functionObjectLibs ( "libfieldFunctionObjects.so" ); + outputControl outputTime; + fields + ( + U.air + { + mean on; + prime2Mean off; + base time; + } + + U.water + { + mean on; + prime2Mean off; + base time; + } + + alpha.air + { + mean on; + prime2Mean off; + base time; + } + + p + { + mean on; + prime2Mean off; + base time; + } + ); + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..e17b4cee5264b88b332fc8e27de7b2eac03f4c9a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSchemes @@ -0,0 +1,69 @@ +/*--------------------------------*- 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.air) Gauss vanLeer; + div(phir,alpha.air) Gauss vanLeer; + + "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + + div(phi.air,kappai.air) Gauss vanLeer; + + "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; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..171537ad3172756755c138b73845168d27b50805 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/fvSolution @@ -0,0 +1,82 @@ +/*--------------------------------*- 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.air + { + nAlphaCorr 1; + nAlphaSubCycles 2; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-8; + relTol 0.01; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "(U|kappai).*" + { + 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; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/setFieldsDict new file mode 100644 index 0000000000000000000000000000000000000000..85996cf966762c6ca3a7c37a1eaa8ae462ecdb19 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnIATE/system/setFieldsDict @@ -0,0 +1,36 @@ +/*--------------------------------*- 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 alpha1 1 +); + +regions +( + boxToCell + { + box (0 0 -0.1) (0.15 0.701 0.1); + fieldValues + ( + volScalarFieldValue alphaair 0 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.air new file mode 100644 index 0000000000000000000000000000000000000000..de0ac66f78009070f3e2aaba4c8b5a4b79bc9f6b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.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 volScalarField; + object T.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 600; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 300; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 300; + value uniform 300; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.particles new file mode 100644 index 0000000000000000000000000000000000000000..5762b51bd8e92a7a48f6b3f63a39d7192a0b8e0c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.particles @@ -0,0 +1,47 @@ +/*--------------------------------*- 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.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 600; + +boundaryField +{ + inlet + { + type zeroGradient; + } + + outlet + { + type inletOutlet; + phi phi.particles; + inletValue uniform 300; + value uniform 300; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/Theta.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/Theta.particles new file mode 100644 index 0000000000000000000000000000000000000000..c9b385ccd8b7ceba80aa3332b0c25b85d8328566 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/Theta.particles @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 Theta.particles; +} +// ************************************************************************* // + +dimensions [ 0 2 -2 0 0 0 0 ]; + +internalField uniform 0; + +referenceLevel 1e-4; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 1e-4; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.air new file mode 100644 index 0000000000000000000000000000000000000000..a9af55993e23ff26e112eb927135b6667f7d6f45 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.air @@ -0,0 +1,50 @@ +/*--------------------------------*- 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 volVectorField; + object U.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.25 0); + +boundaryField +{ + inlet + { + type interstitialInletVelocity; + inletVelocity uniform (0 0.25 0); + alpha alpha.air; + value $internalField; + } + + outlet + { + type pressureInletOutletVelocity; + phi phi.air; + value $internalField; + } + + walls + { + type fixedValue; + value uniform (0 0 0); + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.particles new file mode 100644 index 0000000000000000000000000000000000000000..fa0397ae355df01d3b11bdd17eda31f4c5ed636a --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.particles @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 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 0); + } + + outlet + { + type fixedValue; + value uniform (0 0 0); + } + + walls + { + type fixedValue; + value uniform (0 0 0); + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles new file mode 100644 index 0000000000000000000000000000000000000000..cf55161b4a5c380ee0bd2ce31687f4af99e2cd5d --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles @@ -0,0 +1,6047 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +6000 +( +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0.55 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +) +; + +boundaryField +{ + inlet + { + type zeroGradient; + } + outlet + { + type zeroGradient; + } + walls + { + type zeroGradient; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles.org new file mode 100644 index 0000000000000000000000000000000000000000..b28a5a97d9b1034a39925ead65f04cd371860b89 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles.org @@ -0,0 +1,44 @@ +/*--------------------------------*- 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.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type zeroGradient; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/epsilon.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/epsilon.air new file mode 100644 index 0000000000000000000000000000000000000000..0b5f62a356b3f5a9ce5db5401e0b4f29bc1e4fc9 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/epsilon.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 epsilon.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 10; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type epsilonWallFunction; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/k.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/k.air new file mode 100644 index 0000000000000000000000000000000000000000..307a3495c9352c23273259a2af606fb730e96d63 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/k.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 k.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type kqRWallFunction; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.air new file mode 100644 index 0000000000000000000000000000000000000000..dcb65148ae4e0675d7368e0bea77ff0db7f72e60 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.air @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 nut.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +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; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.particles new file mode 100644 index 0000000000000000000000000000000000000000..6264a273f79124da66e26f9f2edf102259ac0874 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.particles @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 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; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p new file mode 100644 index 0000000000000000000000000000000000000000..b318305599bff814b53f4675657a19c68bde0061 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 +{ + inlet + { + type calculated; + value $internalField; + } + + outlet + { + type calculated; + value $internalField; + } + + walls + { + type calculated; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p_rgh new file mode 100644 index 0000000000000000000000000000000000000000..383649e640bcc4e8c6b3b877e4415a79ef0a36d5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/0/p_rgh @@ -0,0 +1,47 @@ +/*--------------------------------*- 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 +{ + inlet + { + type fixedFluxPressure; + value $internalField; + } + + outlet + { + type fixedValue; + value $internalField; + } + + walls + { + type fixedFluxPressure; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..e0ac2653b5b370ad62f6770588121d30cac51627 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/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/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/phaseProperties new file mode 100644 index 0000000000000000000000000000000000000000..140b966aee2d724c03ea39a748d9f5dbfdc0bf41 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/phaseProperties @@ -0,0 +1,116 @@ +/*--------------------------------*- 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 heatAndMomentumTransferTwoPhaseSystem; + +phases (particles air); + +particles +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 3e-4; + } + + alphaMax 0.62; + residualAlpha 1e-6; +} + +air +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1; + } + + residualAlpha 0; +} + +blending +{ + default + { + type none; + continuousPhase air; + } +} + +surfaceTension +( + (particles and air) + { + type constant; + sigma 0; + } +); + +aspectRatio +( +); + +drag +( + (particles in air) + { + type GidaspowErgunWenYu; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (particles in air) + { + type constantCoefficient; + Cvm 0.5; + } +); + +heatTransfer +( + (particles in air) + { + type RanzMarshall; + residualAlpha 1e-3; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..cda7f49514ca6f2afe27dc960bcbf3ee35d53cb5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/polyMesh/boundary @@ -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 polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 30; + startFace 11770; + } + outlet + { + type patch; + nFaces 30; + startFace 11800; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 400; + startFace 11830; + } + frontAndBackPlanes + { + type empty; + inGroups 1(empty); + nFaces 12000; + startFace 12230; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles new file mode 100644 index 0000000000000000000000000000000000000000..7508b70aa3194312b37a36e71753f74b9cf76166 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles @@ -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.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState rhoConst; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 100; + } + equationOfState + { + rho 2500; + } + thermodynamics + { + Cp 6000; + Hf 0; + } + transport + { + mu 0; + Pr 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..1296429b72a21953def920b08774aa75e1d048b1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/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/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.particles b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.particles new file mode 100644 index 0000000000000000000000000000000000000000..08671cc51ea166f57533dc054f713c4ec40cbd71 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.particles @@ -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 "constant"; + object turbulenceProperties.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel phasePressure; + + turbulence on; + printCoeffs on; + + kineticTheoryCoeffs + { + equilibrium on; + + e 0.8; + alphaMax 0.62; + alphaMinFriction 0.5; + + viscosityModel Gidaspow; + conductivityModel Gidaspow; + granularPressureModel Lun; + frictionalStressModel JohnsonJackson; + radialModel SinclairJackson; + + JohnsonJacksonCoeffs + { + Fr 0.05; + eta 2; + p 5; + phi 28.5; + alphaDeltaMin 0.05; + } + } + + phasePressureCoeffs + { + preAlphaExp 500; + expMax 1000; + alphaMax 0.62; + g0 1000; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..900f5a585b8a3abd2fd564c7b949035e390640ea --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/blockMeshDict @@ -0,0 +1,66 @@ +/*--------------------------------*- 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.01) + (0.15 0 -0.01) + (0.15 1 -0.01) + (0 1 -0.01) + (0 0 0.01) + (0.15 0 0.01) + (0.15 1 0.01) + (0 1 0.01) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (30 200 1) simpleGrading (1 1 1) +); + +edges +( +); + +patches +( + patch inlet + ( + (1 5 4 0) + ) + patch outlet + ( + (3 7 6 2) + ) + wall walls + ( + (0 4 7 3) + (2 6 5 1) + ) + empty frontAndBackPlanes + ( + (0 3 2 1) + (4 5 6 7) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..9718ec32348ad1bc167af031bbfc9f4d77b33cc2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/controlDict @@ -0,0 +1,95 @@ +/*--------------------------------*- 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 reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 2; + +deltaT 2e-4; + +writeControl runTime; + +writeInterval 0.01; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable on; + +adjustTimeStep no; + +maxCo 0.9; + +maxDeltaT 1e-05; + +functions +{ + fieldAverage1 + { + type fieldAverage; + functionObjectLibs ( "libfieldFunctionObjects.so" ); + outputControl outputTime; + fields + ( + U.particles + { + mean on; + prime2Mean off; + base time; + } + + U.air + { + mean on; + prime2Mean off; + base time; + } + + alpha.particles + { + mean on; + prime2Mean off; + base time; + } + + p + { + mean on; + prime2Mean off; + base time; + } + ); + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..62ff44d8e74f83effa4c19e2d2eedc9906c575e5 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSchemes @@ -0,0 +1,70 @@ +/*--------------------------------*- 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.*\)" 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.air*thermo:rho.air)*nuEff.air)*dev2(T(grad(U.air))))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; + bounded Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; + bounded uncorrected; +} + +fluxRequired +{ + default no; + p_rgh; + alpha.particles; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..0081c93776b3a05522db964a8e0bf401d63bdc7e --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSolution @@ -0,0 +1,109 @@ +/*--------------------------------*- 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; + + smoothLimiter 0.1; + + implicitPhasePressure yes; + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-9; + relTol 0; + minIter 1; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-8; + relTol 0; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } + + "(h|e).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-6; + relTol 0; + minIter 1; + } + + "Theta.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-6; + relTol 0; + minIter 1; + } + + "(k|epsilon).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/setFieldsDict new file mode 100644 index 0000000000000000000000000000000000000000..da4c6ee6f2b05ccee47aa322a096b2cacad742a0 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/fluidisedBed/system/setFieldsDict @@ -0,0 +1,38 @@ +/*--------------------------------*- 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 1 + volScalarFieldValue alpha.particles 0 +); + +regions +( + boxToCell + { + box ( 0 0 -0.1 ) ( 0.15 0.5 0.1 ); + fieldValues + ( + volScalarFieldValue alpha.air 0.45 + volScalarFieldValue alpha.particles 0.55 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.air new file mode 100644 index 0000000000000000000000000000000000000000..94edcc5942793917c36c8784ca94357a3f4908cc --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.air @@ -0,0 +1,36 @@ +/*--------------------------------*- 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 +{ + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.water new file mode 100644 index 0000000000000000000000000000000000000000..36476e1e298e769fee6112a48246d23e38ef7751 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/T.water @@ -0,0 +1,36 @@ +/*--------------------------------*- 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 +{ + outlet + { + type inletOutlet; + phi phi.water; + inletValue uniform 300; + value $internalField; + } + walls + { + type zeroGradient; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.air new file mode 100644 index 0000000000000000000000000000000000000000..2a2f95b7409ec78de91d9f418ebe94672379b193 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.air @@ -0,0 +1,36 @@ +/*--------------------------------*- 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 +{ + outlet + { + type pressureInletOutletVelocity; + phi phi.air; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.water new file mode 100644 index 0000000000000000000000000000000000000000..407b341dbe3a55c2aab4e7b4cad0d0ab2845a964 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/U.water @@ -0,0 +1,36 @@ +/*--------------------------------*- 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 +{ + outlet + { + type pressureInletOutletVelocity; + phi phi.water; + value $internalField; + } + walls + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air new file mode 100644 index 0000000000000000000000000000000000000000..1b1a35684a06787a1eb3cb75f388563aad1443a1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air @@ -0,0 +1,1926 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField nonuniform List<scalar> +1875 +( +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +) +; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air.org b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air.org new file mode 100644 index 0000000000000000000000000000000000000000..6832d99db233720d69cfbae7ebe2b46fdc0396b4 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/alpha.air.org @@ -0,0 +1,37 @@ +/*--------------------------------*- 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; + location "0"; + object alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + outlet + { + type inletOutlet; + phi phi.air; + inletValue uniform 1; + value uniform 1; + } + walls + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p new file mode 100644 index 0000000000000000000000000000000000000000..ae586321875e3dc411075af2f1dbcc32e24e10c3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p @@ -0,0 +1,35 @@ +/*--------------------------------*- 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 +{ + outlet + { + type calculated; + value $internalField; + } + walls + { + type calculated; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p_rgh new file mode 100644 index 0000000000000000000000000000000000000000..0d154f2bd87ba648870e2f93a11df96e7ce51d69 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/0/p_rgh @@ -0,0 +1,37 @@ +/*--------------------------------*- 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 +{ + outlet + { + type prghPressure; + p $internalField; + value $internalField; + } + + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/fvOptions b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/fvOptions new file mode 100644 index 0000000000000000000000000000000000000000..5bc7e7ef8736b4aeb07d5f51bf4fb88db27c81a3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/fvOptions @@ -0,0 +1,81 @@ +/*--------------------------------*- 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 fvOptions; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +injector1 +{ + timeStart 0.1; + duration 5; + selectionMode points; + points + ( + (0.075 0.2 0.05) + ); +} + +options +{ + massSource1 + { + type scalarSemiImplicitSource; + + scalarSemiImplicitSourceCoeffs + { + $injector1; + + volumeMode absolute; + injectionRateSuSp + { + thermo:rho.air (1e-3 0); // kg/s + } + } + } + + momentumSource1 + { + type vectorSemiImplicitSource; + + vectorSemiImplicitSourceCoeffs + { + $injector1; + + volumeMode absolute; + injectionRateSuSp + { + U.air ((0 -1e-2 0) 0); // kg*m/s^2 + } + } + } + + energySource1 + { + type scalarSemiImplicitSource; + + scalarSemiImplicitSourceCoeffs + { + $injector1; + + volumeMode absolute; + injectionRateSuSp + { + e.air (500 0); // kg*m^2/s^3 + } + } + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/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/reactingTwoPhaseEulerFoam/laminar/injection/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/phaseProperties new file mode 100644 index 0000000000000000000000000000000000000000..efcc993537fa9da5d2263ac5cfd9b59dff97a4fb --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/phaseProperties @@ -0,0 +1,164 @@ +/*--------------------------------*- 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 heatAndMomentumTransferTwoPhaseSystem; + +phases (air water); + +air +{ + type purePhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + + residualAlpha 1e-4; +} + +water +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-4; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.air 0.7; + minPartlyContinuousAlpha.air 0.5; + minFullyContinuousAlpha.water 0.7; + minPartlyContinuousAlpha.water 0.5; + } +} + +surfaceTension +( + (air and water) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (air in water) + { + type constant; + E0 1.0; + } + + (water in air) + { + type constant; + E0 1.0; + } +); + +drag +( + (air in water) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (water in air) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (air and water) + { + type segregated; + residualAlpha 1e-4; + m 0.5; + n 8; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (air in water) + { + type constantCoefficient; + Cvm 0.5; + } + + (water in air) + { + type constantCoefficient; + Cvm 0.5; + } +); + +heatTransfer +( + (air in water) + { + type RanzMarshall; + residualAlpha 1e-3; + } + + (water in air) + { + type RanzMarshall; + residualAlpha 1e-3; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..47889c5cc1a0ad0d690f39d0ecbfdaa7d6144658 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/polyMesh/boundary @@ -0,0 +1,42 @@ +/*--------------------------------*- 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 polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +3 +( + outlet + { + type patch; + nFaces 25; + startFace 3650; + } + walls + { + type wall; + inGroups 1(wall); + nFaces 175; + startFace 3675; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water new file mode 100644 index 0000000000000000000000000000000000000000..c44c005d3b17561dc32c9e32262b37dc348aecc3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/thermophysicalProperties.water @@ -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 "constant"; + object thermophysicalProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + 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/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..1296429b72a21953def920b08774aa75e1d048b1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/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/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/constant/turbulenceProperties.water new file mode 100644 index 0000000000000000000000000000000000000000..7f0d75a82fcdc99677fa0be8a4111cfe91e4a82c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/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/reactingTwoPhaseEulerFoam/laminar/injection/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..7d811b77b316a363aff67e4a1576c6cd11b8eff6 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/blockMeshDict @@ -0,0 +1,58 @@ +/*--------------------------------*- 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 outlet + ( + (3 7 6 2) + ) + wall walls + ( + (1 5 4 0) + (0 4 7 3) + (2 6 5 1) + ) +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..9855241d1121eb55363575434cc086deb538039e --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/controlDict @@ -0,0 +1,55 @@ +/*--------------------------------*- 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 reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 10; + +deltaT 0.005; + +writeControl runTime; + +writeInterval 0.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/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..ad0ccde96fd7e34ab1e7598706cf57be2a55d6cd --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSchemes @@ -0,0 +1,67 @@ +/*--------------------------------*- 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.air) Gauss vanLeer; + div(phir,alpha.air) 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; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..350b0c0c1fe42f2d87699003d0b6b2532edda2ed --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/fvSolution @@ -0,0 +1,82 @@ +/*--------------------------------*- 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.air + { + nAlphaCorr 1; + nAlphaSubCycles 2; + } + + p_rgh + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + 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; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/setFieldsDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/setFieldsDict new file mode 100644 index 0000000000000000000000000000000000000000..93d742ba74a2424f861b51d1c5d2d8211a625715 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/injection/system/setFieldsDict @@ -0,0 +1,36 @@ +/*--------------------------------*- 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 1 +); + +regions +( + boxToCell + { + box (0 0 -0.1) (0.15 0.701 0.1); + fieldValues + ( + volScalarFieldValue alpha.air 0 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.air new file mode 100644 index 0000000000000000000000000000000000000000..610cfff17ec8d396b7ce0d1198bae5f83616e7cd --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.air @@ -0,0 +1,44 @@ +/*--------------------------------*- 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 T1; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + rotor + { + type zeroGradient; + } + + stator + { + type zeroGradient; + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.water new file mode 100644 index 0000000000000000000000000000000000000000..c2ea64d776b6233c2bf5f0dbbc2769d6d6eab9e2 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.water @@ -0,0 +1,44 @@ +/*--------------------------------*- 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 T2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 500; + +boundaryField +{ + rotor + { + type zeroGradient; + } + + stator + { + type zeroGradient; + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/Theta b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/Theta new file mode 100644 index 0000000000000000000000000000000000000000..b18d202df894c0276dd7f546fd3820cd154623e4 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/Theta @@ -0,0 +1,44 @@ +/*--------------------------------*- 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 Theta; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + rotor + { + type zeroGradient; + } + + stator + { + type zeroGradient; + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.air new file mode 100644 index 0000000000000000000000000000000000000000..7a88b384782d81444c1dbc8643f955a4720536da --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.air @@ -0,0 +1,46 @@ +/*--------------------------------*- 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 volVectorField; + object U1; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + rotor + { + type fixedValue; + value uniform (0 0 0); + } + + stator + { + type fixedValue; + value uniform (0 0 0); + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.water new file mode 100644 index 0000000000000000000000000000000000000000..b93b8d870de47ad7c0f257b0301895c8c8ed05d9 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.water @@ -0,0 +1,46 @@ +/*--------------------------------*- 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 volVectorField; + object U2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + rotor + { + type fixedValue; + value uniform (0 0 0); + } + + stator + { + type fixedValue; + value uniform (0 0 0); + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air new file mode 100644 index 0000000000000000000000000000000000000000..b995d77c1687f8ba93cc24503dd72b1355ef7b90 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air @@ -0,0 +1,44 @@ +/*--------------------------------*- 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 +{ + rotor + { + type zeroGradient; + } + + stator + { + type zeroGradient; + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p new file mode 100644 index 0000000000000000000000000000000000000000..f8b3deba004c2c4faa3b934ca21a88e85e2dcd35 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p @@ -0,0 +1,46 @@ +/*--------------------------------*- 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 +{ + rotor + { + type calculated; + value $internalField; + } + + stator + { + type calculated; + value $internalField; + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p_rgh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p_rgh new file mode 100644 index 0000000000000000000000000000000000000000..3267f0a6f35ce0ba62a997ceb356ed75cca29bbc --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p_rgh @@ -0,0 +1,46 @@ +/*--------------------------------*- 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 +{ + rotor + { + type fixedFluxPressure; + value $internalField; + } + + stator + { + type fixedFluxPressure; + value $internalField; + } + + front + { + type empty; + } + + back + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/Allrun b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/Allrun new file mode 100755 index 0000000000000000000000000000000000000000..349ea685ea56c4967077cdb6bb6963a6b61c7c63 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/Allrun @@ -0,0 +1,12 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +application=`getApplication` + +runApplication ./makeMesh +runApplication $application + +# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/MRFProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/MRFProperties new file mode 100644 index 0000000000000000000000000000000000000000..c604aa7e2c4631238b2e0535d4786c4245c2dd5b --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/MRFProperties @@ -0,0 +1,31 @@ +/*--------------------------------*- 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 MRFProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +MRF1 +{ + cellZone rotor; + active yes; + + // Fixed patches (by default they 'move' with the MRF zone) + nonRotatingPatches (); + + origin (0 0 0); + axis (0 0 1); + omega constant 10.472; +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/g b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..508d65849430f8e5abf4b12d7baa53d70521a1c3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/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 0 0); + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties new file mode 100644 index 0000000000000000000000000000000000000000..e374b02851dda0771b29948ac03871b8d5917467 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties @@ -0,0 +1,163 @@ +/*--------------------------------*- 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 heatAndMomentumTransferTwoPhaseSystem; + +phases (air water); + +air +{ + type purePhaseModel; + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } + + residualAlpha 1e-4; +} + +water +{ + type purePhaseModel; + diameterModel constant; + constantCoeffs + { + d 1e-4; + } + + residualAlpha 1e-4; +} + +blending +{ + default + { + type linear; + minFullyContinuousAlpha.air 0.7; + minPartlyContinuousAlpha.air 0.5; + minFullyContinuousAlpha.water 0.7; + minPartlyContinuousAlpha.water 0.5; + } +} + +surfaceTension +( + (air and water) + { + type constant; + sigma 0.07; + } +); + +aspectRatio +( + (air in water) + { + type constant; + E0 1.0; + } + + (water in air) + { + type constant; + E0 1.0; + } +); + +drag +( + (air in water) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (water in air) + { + type SchillerNaumann; + residualRe 1e-3; + swarmCorrection + { + type none; + } + } + + (air and water) + { + type segregated; + m 0.5; + n 8; + swarmCorrection + { + type none; + } + } +); + +virtualMass +( + (air in water) + { + type constantCoefficient; + Cvm 0.5; + } + + (water in air) + { + type constantCoefficient; + Cvm 0.5; + } +); + +heatTransfer +( + (air in water) + { + type RanzMarshall; + residualAlpha 1e-3; + } + + (water in air) + { + type RanzMarshall; + residualAlpha 1e-3; + } +); + +lift +( +); + +wallLubrication +( +); + +turbulentDispersion +( +); + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/boundary b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..5c2a6cf99c517b8361b84403c7ca9833023efacd --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/boundary @@ -0,0 +1,50 @@ +/*--------------------------------*- 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 polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + rotor + { + type wall; + inGroups 1(wall); + nFaces 192; + startFace 5952; + } + stator + { + type wall; + inGroups 1(wall); + nFaces 192; + startFace 6144; + } + front + { + type empty; + inGroups 1(empty); + nFaces 3072; + startFace 6336; + } + back + { + type empty; + inGroups 1(empty); + nFaces 3072; + startFace 9408; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air @@ -0,0 +1,49 @@ +/*--------------------------------*- 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 + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + mu 1.84e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water new file mode 100644 index 0000000000000000000000000000000000000000..c44c005d3b17561dc32c9e32262b37dc348aecc3 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water @@ -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 "constant"; + object thermophysicalProperties.water; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + 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/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.air b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..1296429b72a21953def920b08774aa75e1d048b1 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/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/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.water b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.water new file mode 100644 index 0000000000000000000000000000000000000000..7f0d75a82fcdc99677fa0be8a4111cfe91e4a82c --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/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/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/makeMesh b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/makeMesh new file mode 100755 index 0000000000000000000000000000000000000000..4d667956a0a85573c003797a5e2385cba6296964 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/makeMesh @@ -0,0 +1,6 @@ +#!/bin/sh + +m4 < system/blockMeshDict.m4 > system/blockMeshDict +blockMesh +topoSet +setsToZones -noFlipMap diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..0c15d76614265f0bd56f90e53e981d36295ccbc4 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict @@ -0,0 +1,818 @@ +/*--------------------------------*- 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; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// General macros to create 2D/extruded-2D meshes + + + + + + + + + + + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.1; + +// Hub radius + + +// Impeller-tip radius + + +// Baffle-tip radius + + +// Tank radius + + +// MRF region radius + + +// Thickness of 2D slab + + +// Base z + + +// Top z + + +// Number of cells radially between hub and impeller tip + + +// Number of cells radially in each of the two regions between +// impeller and baffle tips + + +// Number of cells radially between baffle tip and tank + + +// Number of cells azimuthally in each of the 8 blocks + + +// Number of cells in the thickness of the slab + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +vertices +( + (0.2 0 0) // Vertex r0b = 0 + (0.2 0 0) // Vertex r0sb = 1 + (0.141421356364228 -0.141421356110391 0) // Vertex r1b = 2 + (3.58979347393082e-10 -0.2 0) // Vertex r2b = 3 + (3.58979347393082e-10 -0.2 0) // Vertex r2sb = 4 + (-0.141421355856554 -0.141421356618065 0) // Vertex r3b = 5 + (-0.2 7.17958694786164e-10 0) // Vertex r4b = 6 + (-0.2 7.17958694786164e-10 0) // Vertex r4sb = 7 + (-0.141421355856554 0.141421356618065 0) // Vertex r5b = 8 + (3.58979347393082e-10 0.2 0) // Vertex r6b = 9 + (3.58979347393082e-10 0.2 0) // Vertex r6sb = 10 + (0.141421356364228 0.141421356110391 0) // Vertex r7b = 11 + + (0.5 0 0) // Vertex rb0b = 12 + (0.353553390910569 -0.353553390275978 0) // Vertex rb1b = 13 + (8.97448368482705e-10 -0.5 0) // Vertex rb2b = 14 + (-0.353553389641386 -0.353553391545162 0) // Vertex rb3b = 15 + (-0.5 1.79489673696541e-09 0) // Vertex rb4b = 16 + (-0.353553389641386 0.353553391545162 0) // Vertex rb5b = 17 + (8.97448368482705e-10 0.5 0) // Vertex rb6b = 18 + (0.353553390910569 0.353553390275978 0) // Vertex rb7b = 19 + + (0.6 0 0) // Vertex ri0b = 20 + (0.424264069092683 -0.424264068331174 0) // Vertex ri1b = 21 + (1.07693804217925e-09 -0.6 0) // Vertex ri2b = 22 + (-0.424264067569663 -0.424264069854194 0) // Vertex ri3b = 23 + (-0.6 2.15387608435849e-09 0) // Vertex ri4b = 24 + (-0.424264067569663 0.424264069854194 0) // Vertex ri5b = 25 + (1.07693804217925e-09 0.6 0) // Vertex ri6b = 26 + (0.424264069092683 0.424264068331174 0) // Vertex ri7b = 27 + + (0.7 0 0) // Vertex Rb0b = 28 + (0.494974747274797 -0.494974746386369 0) // Vertex Rb1b = 29 + (1.25642771587579e-09 -0.7 0) // Vertex Rb2b = 30 + (-0.49497474549794 -0.494974748163226 0) // Vertex Rb3b = 31 + (-0.7 2.51285543175157e-09 0) // Vertex Rb4b = 32 + (-0.49497474549794 0.494974748163226 0) // Vertex Rb5b = 33 + (1.25642771587579e-09 0.7 0) // Vertex Rb6b = 34 + (0.494974747274797 0.494974746386369 0) // Vertex Rb7b = 35 + + (1 0 0) // Vertex R0b = 36 + (0.707106781821139 -0.707106780551956 0) // Vertex R1b = 37 + (0.707106781821139 -0.707106780551956 0) // Vertex R1sb = 38 + (1.79489673696541e-09 -1 0) // Vertex R2b = 39 + (-0.707106779282772 -0.707106783090323 0) // Vertex R3b = 40 + (-0.707106779282772 -0.707106783090323 0) // Vertex R3sb = 41 + (-1 3.58979347393082e-09 0) // Vertex R4b = 42 + (-0.707106779282772 0.707106783090323 0) // Vertex R5b = 43 + (-0.707106779282772 0.707106783090323 0) // Vertex R5sb = 44 + (1.79489673696541e-09 1 0) // Vertex R6b = 45 + (0.707106781821139 0.707106780551956 0) // Vertex R7b = 46 + (0.707106781821139 0.707106780551956 0) // Vertex R7sb = 47 + + (0.2 0 0.1) // Vertex r0t = 48 + (0.2 0 0.1) // Vertex r0st = 49 + (0.141421356364228 -0.141421356110391 0.1) // Vertex r1t = 50 + (3.58979347393082e-10 -0.2 0.1) // Vertex r2t = 51 + (3.58979347393082e-10 -0.2 0.1) // Vertex r2st = 52 + (-0.141421355856554 -0.141421356618065 0.1) // Vertex r3t = 53 + (-0.2 7.17958694786164e-10 0.1) // Vertex r4t = 54 + (-0.2 7.17958694786164e-10 0.1) // Vertex r4st = 55 + (-0.141421355856554 0.141421356618065 0.1) // Vertex r5t = 56 + (3.58979347393082e-10 0.2 0.1) // Vertex r6t = 57 + (3.58979347393082e-10 0.2 0.1) // Vertex r6st = 58 + (0.141421356364228 0.141421356110391 0.1) // Vertex r7t = 59 + + (0.5 0 0.1) // Vertex rb0t = 60 + (0.353553390910569 -0.353553390275978 0.1) // Vertex rb1t = 61 + (8.97448368482705e-10 -0.5 0.1) // Vertex rb2t = 62 + (-0.353553389641386 -0.353553391545162 0.1) // Vertex rb3t = 63 + (-0.5 1.79489673696541e-09 0.1) // Vertex rb4t = 64 + (-0.353553389641386 0.353553391545162 0.1) // Vertex rb5t = 65 + (8.97448368482705e-10 0.5 0.1) // Vertex rb6t = 66 + (0.353553390910569 0.353553390275978 0.1) // Vertex rb7t = 67 + + (0.6 0 0.1) // Vertex ri0t = 68 + (0.424264069092683 -0.424264068331174 0.1) // Vertex ri1t = 69 + (1.07693804217925e-09 -0.6 0.1) // Vertex ri2t = 70 + (-0.424264067569663 -0.424264069854194 0.1) // Vertex ri3t = 71 + (-0.6 2.15387608435849e-09 0.1) // Vertex ri4t = 72 + (-0.424264067569663 0.424264069854194 0.1) // Vertex ri5t = 73 + (1.07693804217925e-09 0.6 0.1) // Vertex ri6t = 74 + (0.424264069092683 0.424264068331174 0.1) // Vertex ri7t = 75 + + (0.7 0 0.1) // Vertex Rb0t = 76 + (0.494974747274797 -0.494974746386369 0.1) // Vertex Rb1t = 77 + (1.25642771587579e-09 -0.7 0.1) // Vertex Rb2t = 78 + (-0.49497474549794 -0.494974748163226 0.1) // Vertex Rb3t = 79 + (-0.7 2.51285543175157e-09 0.1) // Vertex Rb4t = 80 + (-0.49497474549794 0.494974748163226 0.1) // Vertex Rb5t = 81 + (1.25642771587579e-09 0.7 0.1) // Vertex Rb6t = 82 + (0.494974747274797 0.494974746386369 0.1) // Vertex Rb7t = 83 + + (1 0 0.1) // Vertex R0t = 84 + (0.707106781821139 -0.707106780551956 0.1) // Vertex R1t = 85 + (0.707106781821139 -0.707106780551956 0.1) // Vertex R1st = 86 + (1.79489673696541e-09 -1 0.1) // Vertex R2t = 87 + (-0.707106779282772 -0.707106783090323 0.1) // Vertex R3t = 88 + (-0.707106779282772 -0.707106783090323 0.1) // Vertex R3st = 89 + (-1 3.58979347393082e-09 0.1) // Vertex R4t = 90 + (-0.707106779282772 0.707106783090323 0.1) // Vertex R5t = 91 + (-0.707106779282772 0.707106783090323 0.1) // Vertex R5st = 92 + (1.79489673696541e-09 1 0.1) // Vertex R6t = 93 + (0.707106781821139 0.707106780551956 0.1) // Vertex R7t = 94 + (0.707106781821139 0.707106780551956 0.1) // Vertex R7st = 95 +); + +blocks +( + // block0 + hex (0 2 13 12 48 50 61 60) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block1 + hex (2 4 14 13 50 52 62 61) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block2 + hex (3 5 15 14 51 53 63 62) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block3 + hex (5 7 16 15 53 55 64 63) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block4 + hex (6 8 17 16 54 56 65 64) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block5 + hex (8 10 18 17 56 58 66 65) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block6 + hex (9 11 19 18 57 59 67 66) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block7 + hex (11 1 12 19 59 49 60 67) + rotor + (12 12 1) + simpleGrading (1 1 1) + + // block0 + hex (12 13 21 20 60 61 69 68) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block1 + hex (13 14 22 21 61 62 70 69) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block2 + hex (14 15 23 22 62 63 71 70) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block3 + hex (15 16 24 23 63 64 72 71) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block4 + hex (16 17 25 24 64 65 73 72) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block5 + hex (17 18 26 25 65 66 74 73) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block6 + hex (18 19 27 26 66 67 75 74) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block7 + hex (19 12 20 27 67 60 68 75) + rotor + (12 4 1) + simpleGrading (1 1 1) + + // block0 + hex (20 21 29 28 68 69 77 76) + (12 4 1) + simpleGrading (1 1 1) + + // block1 + hex (21 22 30 29 69 70 78 77) + (12 4 1) + simpleGrading (1 1 1) + + // block2 + hex (22 23 31 30 70 71 79 78) + (12 4 1) + simpleGrading (1 1 1) + + // block3 + hex (23 24 32 31 71 72 80 79) + (12 4 1) + simpleGrading (1 1 1) + + // block4 + hex (24 25 33 32 72 73 81 80) + (12 4 1) + simpleGrading (1 1 1) + + // block5 + hex (25 26 34 33 73 74 82 81) + (12 4 1) + simpleGrading (1 1 1) + + // block6 + hex (26 27 35 34 74 75 83 82) + (12 4 1) + simpleGrading (1 1 1) + + // block7 + hex (27 20 28 35 75 68 76 83) + (12 4 1) + simpleGrading (1 1 1) + + // block0 + hex (28 29 38 36 76 77 86 84) + (12 12 1) + simpleGrading (1 1 1) + + // block1 + hex (29 30 39 37 77 78 87 85) + (12 12 1) + simpleGrading (1 1 1) + + // block2 + hex (30 31 41 39 78 79 89 87) + (12 12 1) + simpleGrading (1 1 1) + + // block3 + hex (31 32 42 40 79 80 90 88) + (12 12 1) + simpleGrading (1 1 1) + + // block4 + hex (32 33 44 42 80 81 92 90) + (12 12 1) + simpleGrading (1 1 1) + + // block5 + hex (33 34 45 43 81 82 93 91) + (12 12 1) + simpleGrading (1 1 1) + + // block6 + hex (34 35 47 45 82 83 95 93) + (12 12 1) + simpleGrading (1 1 1) + + // block7 + hex (35 28 36 46 83 76 84 94) + (12 12 1) + simpleGrading (1 1 1) +); + +edges +( + arc 0 2 (0.184775906536601 -0.0765366863901046 0) + arc 2 4 (0.0765366867217582 -0.184775906399226 0) + arc 3 5 (-0.0765366860584508 -0.184775906673977 0) + arc 5 7 (-0.18477590626185 -0.0765366870534118 0) + arc 6 8 (-0.18477590626185 0.0765366870534118 0) + arc 8 10 (-0.0765366860584508 0.184775906673977 0) + arc 9 11 (0.0765366867217582 0.184775906399226 0) + arc 11 1 (0.184775906536601 0.0765366863901046 0) + + arc 12 13 (0.461939766341503 -0.191341715975262 0) + arc 13 14 (0.191341716804395 -0.461939765998065 0) + arc 14 15 (-0.191341715146127 -0.461939766684942 0) + arc 15 16 (-0.461939765654626 -0.19134171763353 0) + arc 16 17 (-0.461939765654626 0.19134171763353 0) + arc 17 18 (-0.191341715146127 0.461939766684942 0) + arc 18 19 (0.191341716804395 0.461939765998065 0) + arc 19 12 (0.461939766341503 0.191341715975262 0) + + arc 20 21 (0.554327719609804 -0.229610059170314 0) + arc 21 22 (0.229610060165275 -0.554327719197677 0) + arc 22 23 (-0.229610058175352 -0.55432772002193 0) + arc 23 24 (-0.554327718785551 -0.229610061160235 0) + arc 24 25 (-0.554327718785551 0.229610061160235 0) + arc 25 26 (-0.229610058175352 0.55432772002193 0) + arc 26 27 (0.229610060165275 0.554327719197677 0) + arc 27 20 (0.554327719609804 0.229610059170314 0) + + arc 28 29 (0.646715672878104 -0.267878402365366 0) + arc 29 30 (0.267878403526154 -0.64671567239729 0) + arc 30 31 (-0.267878401204578 -0.646715673358918 0) + arc 31 32 (-0.646715671916476 -0.267878404686941 0) + arc 32 33 (-0.646715671916476 0.267878404686941 0) + arc 33 34 (-0.267878401204578 0.646715673358918 0) + arc 34 35 (0.267878403526154 0.64671567239729 0) + arc 35 28 (0.646715672878104 0.267878402365366 0) + + arc 36 38 (0.923879532683006 -0.382683431950523 0) + arc 37 39 (0.382683433608791 -0.923879531996129 0) + arc 39 41 (-0.382683430292254 -0.923879533369883 0) + arc 40 42 (-0.923879531309252 -0.382683435267059 0) + arc 42 44 (-0.923879531309252 0.382683435267059 0) + arc 43 45 (-0.382683430292254 0.923879533369883 0) + arc 45 47 (0.382683433608791 0.923879531996129 0) + arc 46 36 (0.923879532683006 0.382683431950523 0) + + arc 48 50 (0.184775906536601 -0.0765366863901046 0.1) + arc 50 52 (0.0765366867217582 -0.184775906399226 0.1) + arc 51 53 (-0.0765366860584508 -0.184775906673977 0.1) + arc 53 55 (-0.18477590626185 -0.0765366870534118 0.1) + arc 54 56 (-0.18477590626185 0.0765366870534118 0.1) + arc 56 58 (-0.0765366860584508 0.184775906673977 0.1) + arc 57 59 (0.0765366867217582 0.184775906399226 0.1) + arc 59 49 (0.184775906536601 0.0765366863901046 0.1) + + arc 60 61 (0.461939766341503 -0.191341715975262 0.1) + arc 61 62 (0.191341716804395 -0.461939765998065 0.1) + arc 62 63 (-0.191341715146127 -0.461939766684942 0.1) + arc 63 64 (-0.461939765654626 -0.19134171763353 0.1) + arc 64 65 (-0.461939765654626 0.19134171763353 0.1) + arc 65 66 (-0.191341715146127 0.461939766684942 0.1) + arc 66 67 (0.191341716804395 0.461939765998065 0.1) + arc 67 60 (0.461939766341503 0.191341715975262 0.1) + + arc 68 69 (0.554327719609804 -0.229610059170314 0.1) + arc 69 70 (0.229610060165275 -0.554327719197677 0.1) + arc 70 71 (-0.229610058175352 -0.55432772002193 0.1) + arc 71 72 (-0.554327718785551 -0.229610061160235 0.1) + arc 72 73 (-0.554327718785551 0.229610061160235 0.1) + arc 73 74 (-0.229610058175352 0.55432772002193 0.1) + arc 74 75 (0.229610060165275 0.554327719197677 0.1) + arc 75 68 (0.554327719609804 0.229610059170314 0.1) + + arc 76 77 (0.646715672878104 -0.267878402365366 0.1) + arc 77 78 (0.267878403526154 -0.64671567239729 0.1) + arc 78 79 (-0.267878401204578 -0.646715673358918 0.1) + arc 79 80 (-0.646715671916476 -0.267878404686941 0.1) + arc 80 81 (-0.646715671916476 0.267878404686941 0.1) + arc 81 82 (-0.267878401204578 0.646715673358918 0.1) + arc 82 83 (0.267878403526154 0.64671567239729 0.1) + arc 83 76 (0.646715672878104 0.267878402365366 0.1) + + arc 84 86 (0.923879532683006 -0.382683431950523 0.1) + arc 85 87 (0.382683433608791 -0.923879531996129 0.1) + arc 87 89 (-0.382683430292254 -0.923879533369883 0.1) + arc 88 90 (-0.923879531309252 -0.382683435267059 0.1) + arc 90 92 (-0.923879531309252 0.382683435267059 0.1) + arc 91 93 (-0.382683430292254 0.923879533369883 0.1) + arc 93 95 (0.382683433608791 0.923879531996129 0.1) + arc 94 84 (0.923879532683006 0.382683431950523 0.1) +); + +patches +( + wall rotor + ( + (0 2 50 48) + (2 4 52 50) + (3 5 53 51) + (5 7 55 53) + (6 8 56 54) + (8 10 58 56) + (9 11 59 57) + (11 1 49 59) + + (0 12 60 48) + (1 12 60 49) + + (3 14 62 51) + (4 14 62 52) + + (6 16 64 54) + (7 16 64 55) + + (9 18 66 57) + (10 18 66 58) + ) + + wall stator + ( + (36 38 86 84) + (37 39 87 85) + (39 41 89 87) + (40 42 90 88) + (42 44 92 90) + (43 45 93 91) + (45 47 95 93) + (46 36 84 94) + + (37 29 77 85) + (38 29 77 86) + + (40 31 79 88) + (41 31 79 89) + + (43 33 81 91) + (44 33 81 92) + + (46 35 83 94) + (47 35 83 95) + ) + + empty front + ( + (48 50 61 60) + (50 52 62 61) + (51 53 63 62) + (53 55 64 63) + (54 56 65 64) + (56 58 66 65) + (57 59 67 66) + (59 49 60 67) + (60 61 69 68) + (61 62 70 69) + (62 63 71 70) + (63 64 72 71) + (64 65 73 72) + (65 66 74 73) + (66 67 75 74) + (67 60 68 75) + (68 69 77 76) + (69 70 78 77) + (70 71 79 78) + (71 72 80 79) + (72 73 81 80) + (73 74 82 81) + (74 75 83 82) + (75 68 76 83) + (76 77 86 84) + (77 78 87 85) + (78 79 89 87) + (79 80 90 88) + (80 81 92 90) + (81 82 93 91) + (82 83 95 93) + (83 76 84 94) + ) + + empty back + ( + (0 12 13 2) + (2 13 14 4) + (3 14 15 5) + (5 15 16 7) + (6 16 17 8) + (8 17 18 10) + (9 18 19 11) + (11 19 12 1) + (12 20 21 13) + (13 21 22 14) + (14 22 23 15) + (15 23 24 16) + (16 24 25 17) + (17 25 26 18) + (18 26 27 19) + (19 27 20 12) + (20 28 29 21) + (21 29 30 22) + (22 30 31 23) + (23 31 32 24) + (24 32 33 25) + (25 33 34 26) + (26 34 35 27) + (27 35 28 20) + (28 36 38 29) + (29 37 39 30) + (30 39 41 31) + (31 40 42 32) + (32 42 44 33) + (33 43 45 34) + (34 45 47 35) + (35 46 36 28) + ) +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict.m4 b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict.m4 new file mode 100644 index 0000000000000000000000000000000000000000..a93868498ba68d11b25b0875ff69205f62f822ed --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/blockMeshDict.m4 @@ -0,0 +1,818 @@ +/*--------------------------------*- 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; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// General macros to create 2D/extruded-2D meshes + +changecom(//)changequote([,]) +define(calc, [esyscmd(perl -e 'print ($1)')]) +define(VCOUNT, 0) +define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))]) +define(pi, 3.14159265) + +define(hex2D, hex ($1b $2b $3b $4b $1t $2t $3t $4t)) +define(quad2D, ($1b $2b $2t $1t)) +define(frontQuad, ($1t $2t $3t $4t)) +define(backQuad, ($1b $4b $3b $2b)) + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.1; + +// Hub radius +define(r, 0.2) + +// Impeller-tip radius +define(rb, 0.5) + +// Baffle-tip radius +define(Rb, 0.7) + +// Tank radius +define(R, 1) + +// MRF region radius +define(ri, calc(0.5*(rb + Rb))) + +// Thickness of 2D slab +define(z, 0.1) + +// Base z +define(Zb, 0) + +// Top z +define(Zt, calc(Zb + z)) + +// Number of cells radially between hub and impeller tip +define(Nr, 12) + +// Number of cells radially in each of the two regions between +// impeller and baffle tips +define(Ni, 4) + +// Number of cells radially between baffle tip and tank +define(NR, 12) + +// Number of cells azimuthally in each of the 8 blocks +define(Na, 12) + +// Number of cells in the thickness of the slab +define(Nz, 1) + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +define(vert, (x$1$2 y$1$2 $3)) +define(evert, (ex$1$2 ey$1$2 $3)) + +define(a0, 0) +define(a1, -45) +define(a2, -90) +define(a3, -135) +define(a4, 180) +define(a5, 135) +define(a6, 90) +define(a7, 45) + +define(ea0, -22.5) +define(ea1, -67.5) +define(ea2, -112.5) +define(ea3, -157.5) +define(ea4, 157.5) +define(ea5, 112.5) +define(ea6, 67.5) +define(ea7, 22.5) + +define(ca0, calc(cos((pi/180)*a0))) +define(ca1, calc(cos((pi/180)*a1))) +define(ca2, calc(cos((pi/180)*a2))) +define(ca3, calc(cos((pi/180)*a3))) +define(ca4, calc(cos((pi/180)*a4))) +define(ca5, calc(cos((pi/180)*a5))) +define(ca6, calc(cos((pi/180)*a6))) +define(ca7, calc(cos((pi/180)*a7))) + +define(sa0, calc(sin((pi/180)*a0))) +define(sa1, calc(sin((pi/180)*a1))) +define(sa2, calc(sin((pi/180)*a2))) +define(sa3, calc(sin((pi/180)*a3))) +define(sa4, calc(sin((pi/180)*a4))) +define(sa5, calc(sin((pi/180)*a5))) +define(sa6, calc(sin((pi/180)*a6))) +define(sa7, calc(sin((pi/180)*a7))) + +define(cea0, calc(cos((pi/180)*ea0))) +define(cea1, calc(cos((pi/180)*ea1))) +define(cea2, calc(cos((pi/180)*ea2))) +define(cea3, calc(cos((pi/180)*ea3))) +define(cea4, calc(cos((pi/180)*ea4))) +define(cea5, calc(cos((pi/180)*ea5))) +define(cea6, calc(cos((pi/180)*ea6))) +define(cea7, calc(cos((pi/180)*ea7))) + +define(sea0, calc(sin((pi/180)*ea0))) +define(sea1, calc(sin((pi/180)*ea1))) +define(sea2, calc(sin((pi/180)*ea2))) +define(sea3, calc(sin((pi/180)*ea3))) +define(sea4, calc(sin((pi/180)*ea4))) +define(sea5, calc(sin((pi/180)*ea5))) +define(sea6, calc(sin((pi/180)*ea6))) +define(sea7, calc(sin((pi/180)*ea7))) + +define(x00, calc(r*ca0)) +define(x01, calc(r*ca1)) +define(x02, calc(r*ca2)) +define(x03, calc(r*ca3)) +define(x04, calc(r*ca4)) +define(x05, calc(r*ca5)) +define(x06, calc(r*ca6)) +define(x07, calc(r*ca7)) + +define(x10, calc(rb*ca0)) +define(x11, calc(rb*ca1)) +define(x12, calc(rb*ca2)) +define(x13, calc(rb*ca3)) +define(x14, calc(rb*ca4)) +define(x15, calc(rb*ca5)) +define(x16, calc(rb*ca6)) +define(x17, calc(rb*ca7)) + +define(x20, calc(ri*ca0)) +define(x21, calc(ri*ca1)) +define(x22, calc(ri*ca2)) +define(x23, calc(ri*ca3)) +define(x24, calc(ri*ca4)) +define(x25, calc(ri*ca5)) +define(x26, calc(ri*ca6)) +define(x27, calc(ri*ca7)) + +define(x30, calc(Rb*ca0)) +define(x31, calc(Rb*ca1)) +define(x32, calc(Rb*ca2)) +define(x33, calc(Rb*ca3)) +define(x34, calc(Rb*ca4)) +define(x35, calc(Rb*ca5)) +define(x36, calc(Rb*ca6)) +define(x37, calc(Rb*ca7)) + +define(x40, calc(R*ca0)) +define(x41, calc(R*ca1)) +define(x42, calc(R*ca2)) +define(x43, calc(R*ca3)) +define(x44, calc(R*ca4)) +define(x45, calc(R*ca5)) +define(x46, calc(R*ca6)) +define(x47, calc(R*ca7)) + +define(y00, calc(r*sa0)) +define(y01, calc(r*sa1)) +define(y02, calc(r*sa2)) +define(y03, calc(r*sa3)) +define(y04, calc(r*sa4)) +define(y05, calc(r*sa5)) +define(y06, calc(r*sa6)) +define(y07, calc(r*sa7)) + +define(y10, calc(rb*sa0)) +define(y11, calc(rb*sa1)) +define(y12, calc(rb*sa2)) +define(y13, calc(rb*sa3)) +define(y14, calc(rb*sa4)) +define(y15, calc(rb*sa5)) +define(y16, calc(rb*sa6)) +define(y17, calc(rb*sa7)) + +define(y20, calc(ri*sa0)) +define(y21, calc(ri*sa1)) +define(y22, calc(ri*sa2)) +define(y23, calc(ri*sa3)) +define(y24, calc(ri*sa4)) +define(y25, calc(ri*sa5)) +define(y26, calc(ri*sa6)) +define(y27, calc(ri*sa7)) + +define(y30, calc(Rb*sa0)) +define(y31, calc(Rb*sa1)) +define(y32, calc(Rb*sa2)) +define(y33, calc(Rb*sa3)) +define(y34, calc(Rb*sa4)) +define(y35, calc(Rb*sa5)) +define(y36, calc(Rb*sa6)) +define(y37, calc(Rb*sa7)) + +define(y40, calc(R*sa0)) +define(y41, calc(R*sa1)) +define(y42, calc(R*sa2)) +define(y43, calc(R*sa3)) +define(y44, calc(R*sa4)) +define(y45, calc(R*sa5)) +define(y46, calc(R*sa6)) +define(y47, calc(R*sa7)) + +define(ex00, calc(r*cea0)) +define(ex01, calc(r*cea1)) +define(ex02, calc(r*cea2)) +define(ex03, calc(r*cea3)) +define(ex04, calc(r*cea4)) +define(ex05, calc(r*cea5)) +define(ex06, calc(r*cea6)) +define(ex07, calc(r*cea7)) + +define(ex10, calc(rb*cea0)) +define(ex11, calc(rb*cea1)) +define(ex12, calc(rb*cea2)) +define(ex13, calc(rb*cea3)) +define(ex14, calc(rb*cea4)) +define(ex15, calc(rb*cea5)) +define(ex16, calc(rb*cea6)) +define(ex17, calc(rb*cea7)) + +define(ex20, calc(ri*cea0)) +define(ex21, calc(ri*cea1)) +define(ex22, calc(ri*cea2)) +define(ex23, calc(ri*cea3)) +define(ex24, calc(ri*cea4)) +define(ex25, calc(ri*cea5)) +define(ex26, calc(ri*cea6)) +define(ex27, calc(ri*cea7)) + +define(ex30, calc(Rb*cea0)) +define(ex31, calc(Rb*cea1)) +define(ex32, calc(Rb*cea2)) +define(ex33, calc(Rb*cea3)) +define(ex34, calc(Rb*cea4)) +define(ex35, calc(Rb*cea5)) +define(ex36, calc(Rb*cea6)) +define(ex37, calc(Rb*cea7)) + +define(ex40, calc(R*cea0)) +define(ex41, calc(R*cea1)) +define(ex42, calc(R*cea2)) +define(ex43, calc(R*cea3)) +define(ex44, calc(R*cea4)) +define(ex45, calc(R*cea5)) +define(ex46, calc(R*cea6)) +define(ex47, calc(R*cea7)) + +define(ey00, calc(r*sea0)) +define(ey01, calc(r*sea1)) +define(ey02, calc(r*sea2)) +define(ey03, calc(r*sea3)) +define(ey04, calc(r*sea4)) +define(ey05, calc(r*sea5)) +define(ey06, calc(r*sea6)) +define(ey07, calc(r*sea7)) + +define(ey10, calc(rb*sea0)) +define(ey11, calc(rb*sea1)) +define(ey12, calc(rb*sea2)) +define(ey13, calc(rb*sea3)) +define(ey14, calc(rb*sea4)) +define(ey15, calc(rb*sea5)) +define(ey16, calc(rb*sea6)) +define(ey17, calc(rb*sea7)) + +define(ey20, calc(ri*sea0)) +define(ey21, calc(ri*sea1)) +define(ey22, calc(ri*sea2)) +define(ey23, calc(ri*sea3)) +define(ey24, calc(ri*sea4)) +define(ey25, calc(ri*sea5)) +define(ey26, calc(ri*sea6)) +define(ey27, calc(ri*sea7)) + +define(ey30, calc(Rb*sea0)) +define(ey31, calc(Rb*sea1)) +define(ey32, calc(Rb*sea2)) +define(ey33, calc(Rb*sea3)) +define(ey34, calc(Rb*sea4)) +define(ey35, calc(Rb*sea5)) +define(ey36, calc(Rb*sea6)) +define(ey37, calc(Rb*sea7)) + +define(ey40, calc(R*sea0)) +define(ey41, calc(R*sea1)) +define(ey42, calc(R*sea2)) +define(ey43, calc(R*sea3)) +define(ey44, calc(R*sea4)) +define(ey45, calc(R*sea5)) +define(ey46, calc(R*sea6)) +define(ey47, calc(R*sea7)) + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +vertices +( + vert(0, 0, Zb) vlabel(r0b) + vert(0, 0, Zb) vlabel(r0sb) + vert(0, 1, Zb) vlabel(r1b) + vert(0, 2, Zb) vlabel(r2b) + vert(0, 2, Zb) vlabel(r2sb) + vert(0, 3, Zb) vlabel(r3b) + vert(0, 4, Zb) vlabel(r4b) + vert(0, 4, Zb) vlabel(r4sb) + vert(0, 5, Zb) vlabel(r5b) + vert(0, 6, Zb) vlabel(r6b) + vert(0, 6, Zb) vlabel(r6sb) + vert(0, 7, Zb) vlabel(r7b) + + vert(1, 0, Zb) vlabel(rb0b) + vert(1, 1, Zb) vlabel(rb1b) + vert(1, 2, Zb) vlabel(rb2b) + vert(1, 3, Zb) vlabel(rb3b) + vert(1, 4, Zb) vlabel(rb4b) + vert(1, 5, Zb) vlabel(rb5b) + vert(1, 6, Zb) vlabel(rb6b) + vert(1, 7, Zb) vlabel(rb7b) + + vert(2, 0, Zb) vlabel(ri0b) + vert(2, 1, Zb) vlabel(ri1b) + vert(2, 2, Zb) vlabel(ri2b) + vert(2, 3, Zb) vlabel(ri3b) + vert(2, 4, Zb) vlabel(ri4b) + vert(2, 5, Zb) vlabel(ri5b) + vert(2, 6, Zb) vlabel(ri6b) + vert(2, 7, Zb) vlabel(ri7b) + + vert(3, 0, Zb) vlabel(Rb0b) + vert(3, 1, Zb) vlabel(Rb1b) + vert(3, 2, Zb) vlabel(Rb2b) + vert(3, 3, Zb) vlabel(Rb3b) + vert(3, 4, Zb) vlabel(Rb4b) + vert(3, 5, Zb) vlabel(Rb5b) + vert(3, 6, Zb) vlabel(Rb6b) + vert(3, 7, Zb) vlabel(Rb7b) + + vert(4, 0, Zb) vlabel(R0b) + vert(4, 1, Zb) vlabel(R1b) + vert(4, 1, Zb) vlabel(R1sb) + vert(4, 2, Zb) vlabel(R2b) + vert(4, 3, Zb) vlabel(R3b) + vert(4, 3, Zb) vlabel(R3sb) + vert(4, 4, Zb) vlabel(R4b) + vert(4, 5, Zb) vlabel(R5b) + vert(4, 5, Zb) vlabel(R5sb) + vert(4, 6, Zb) vlabel(R6b) + vert(4, 7, Zb) vlabel(R7b) + vert(4, 7, Zb) vlabel(R7sb) + + vert(0, 0, Zt) vlabel(r0t) + vert(0, 0, Zt) vlabel(r0st) + vert(0, 1, Zt) vlabel(r1t) + vert(0, 2, Zt) vlabel(r2t) + vert(0, 2, Zt) vlabel(r2st) + vert(0, 3, Zt) vlabel(r3t) + vert(0, 4, Zt) vlabel(r4t) + vert(0, 4, Zt) vlabel(r4st) + vert(0, 5, Zt) vlabel(r5t) + vert(0, 6, Zt) vlabel(r6t) + vert(0, 6, Zt) vlabel(r6st) + vert(0, 7, Zt) vlabel(r7t) + + vert(1, 0, Zt) vlabel(rb0t) + vert(1, 1, Zt) vlabel(rb1t) + vert(1, 2, Zt) vlabel(rb2t) + vert(1, 3, Zt) vlabel(rb3t) + vert(1, 4, Zt) vlabel(rb4t) + vert(1, 5, Zt) vlabel(rb5t) + vert(1, 6, Zt) vlabel(rb6t) + vert(1, 7, Zt) vlabel(rb7t) + + vert(2, 0, Zt) vlabel(ri0t) + vert(2, 1, Zt) vlabel(ri1t) + vert(2, 2, Zt) vlabel(ri2t) + vert(2, 3, Zt) vlabel(ri3t) + vert(2, 4, Zt) vlabel(ri4t) + vert(2, 5, Zt) vlabel(ri5t) + vert(2, 6, Zt) vlabel(ri6t) + vert(2, 7, Zt) vlabel(ri7t) + + vert(3, 0, Zt) vlabel(Rb0t) + vert(3, 1, Zt) vlabel(Rb1t) + vert(3, 2, Zt) vlabel(Rb2t) + vert(3, 3, Zt) vlabel(Rb3t) + vert(3, 4, Zt) vlabel(Rb4t) + vert(3, 5, Zt) vlabel(Rb5t) + vert(3, 6, Zt) vlabel(Rb6t) + vert(3, 7, Zt) vlabel(Rb7t) + + vert(4, 0, Zt) vlabel(R0t) + vert(4, 1, Zt) vlabel(R1t) + vert(4, 1, Zt) vlabel(R1st) + vert(4, 2, Zt) vlabel(R2t) + vert(4, 3, Zt) vlabel(R3t) + vert(4, 3, Zt) vlabel(R3st) + vert(4, 4, Zt) vlabel(R4t) + vert(4, 5, Zt) vlabel(R5t) + vert(4, 5, Zt) vlabel(R5st) + vert(4, 6, Zt) vlabel(R6t) + vert(4, 7, Zt) vlabel(R7t) + vert(4, 7, Zt) vlabel(R7st) +); + +blocks +( + // block0 + hex2D(r0, r1, rb1, rb0) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block1 + hex2D(r1, r2s, rb2, rb1) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block2 + hex2D(r2, r3, rb3, rb2) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block3 + hex2D(r3, r4s, rb4, rb3) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block4 + hex2D(r4, r5, rb5, rb4) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block5 + hex2D(r5, r6s, rb6, rb5) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block6 + hex2D(r6, r7, rb7, rb6) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block7 + hex2D(r7, r0s, rb0, rb7) + rotor + (Na Nr Nz) + simpleGrading (1 1 1) + + // block0 + hex2D(rb0, rb1, ri1, ri0) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block1 + hex2D(rb1, rb2, ri2, ri1) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block2 + hex2D(rb2, rb3, ri3, ri2) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block3 + hex2D(rb3, rb4, ri4, ri3) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block4 + hex2D(rb4, rb5, ri5, ri4) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block5 + hex2D(rb5, rb6, ri6, ri5) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block6 + hex2D(rb6, rb7, ri7, ri6) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block7 + hex2D(rb7, rb0, ri0, ri7) + rotor + (Na Ni Nz) + simpleGrading (1 1 1) + + // block0 + hex2D(ri0, ri1, Rb1, Rb0) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block1 + hex2D(ri1, ri2, Rb2, Rb1) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block2 + hex2D(ri2, ri3, Rb3, Rb2) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block3 + hex2D(ri3, ri4, Rb4, Rb3) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block4 + hex2D(ri4, ri5, Rb5, Rb4) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block5 + hex2D(ri5, ri6, Rb6, Rb5) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block6 + hex2D(ri6, ri7, Rb7, Rb6) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block7 + hex2D(ri7, ri0, Rb0, Rb7) + (Na Ni Nz) + simpleGrading (1 1 1) + + // block0 + hex2D(Rb0, Rb1, R1s, R0) + (Na NR Nz) + simpleGrading (1 1 1) + + // block1 + hex2D(Rb1, Rb2, R2, R1) + (Na NR Nz) + simpleGrading (1 1 1) + + // block2 + hex2D(Rb2, Rb3, R3s, R2) + (Na NR Nz) + simpleGrading (1 1 1) + + // block3 + hex2D(Rb3, Rb4, R4, R3) + (Na NR Nz) + simpleGrading (1 1 1) + + // block4 + hex2D(Rb4, Rb5, R5s, R4) + (Na NR Nz) + simpleGrading (1 1 1) + + // block5 + hex2D(Rb5, Rb6, R6, R5) + (Na NR Nz) + simpleGrading (1 1 1) + + // block6 + hex2D(Rb6, Rb7, R7s, R6) + (Na NR Nz) + simpleGrading (1 1 1) + + // block7 + hex2D(Rb7, Rb0, R0, R7) + (Na NR Nz) + simpleGrading (1 1 1) +); + +edges +( + arc r0b r1b evert(0, 0, Zb) + arc r1b r2sb evert(0, 1, Zb) + arc r2b r3b evert(0, 2, Zb) + arc r3b r4sb evert(0, 3, Zb) + arc r4b r5b evert(0, 4, Zb) + arc r5b r6sb evert(0, 5, Zb) + arc r6b r7b evert(0, 6, Zb) + arc r7b r0sb evert(0, 7, Zb) + + arc rb0b rb1b evert(1, 0, Zb) + arc rb1b rb2b evert(1, 1, Zb) + arc rb2b rb3b evert(1, 2, Zb) + arc rb3b rb4b evert(1, 3, Zb) + arc rb4b rb5b evert(1, 4, Zb) + arc rb5b rb6b evert(1, 5, Zb) + arc rb6b rb7b evert(1, 6, Zb) + arc rb7b rb0b evert(1, 7, Zb) + + arc ri0b ri1b evert(2, 0, Zb) + arc ri1b ri2b evert(2, 1, Zb) + arc ri2b ri3b evert(2, 2, Zb) + arc ri3b ri4b evert(2, 3, Zb) + arc ri4b ri5b evert(2, 4, Zb) + arc ri5b ri6b evert(2, 5, Zb) + arc ri6b ri7b evert(2, 6, Zb) + arc ri7b ri0b evert(2, 7, Zb) + + arc Rb0b Rb1b evert(3, 0, Zb) + arc Rb1b Rb2b evert(3, 1, Zb) + arc Rb2b Rb3b evert(3, 2, Zb) + arc Rb3b Rb4b evert(3, 3, Zb) + arc Rb4b Rb5b evert(3, 4, Zb) + arc Rb5b Rb6b evert(3, 5, Zb) + arc Rb6b Rb7b evert(3, 6, Zb) + arc Rb7b Rb0b evert(3, 7, Zb) + + arc R0b R1sb evert(4, 0, Zb) + arc R1b R2b evert(4, 1, Zb) + arc R2b R3sb evert(4, 2, Zb) + arc R3b R4b evert(4, 3, Zb) + arc R4b R5sb evert(4, 4, Zb) + arc R5b R6b evert(4, 5, Zb) + arc R6b R7sb evert(4, 6, Zb) + arc R7b R0b evert(4, 7, Zb) + + arc r0t r1t evert(0, 0, Zt) + arc r1t r2st evert(0, 1, Zt) + arc r2t r3t evert(0, 2, Zt) + arc r3t r4st evert(0, 3, Zt) + arc r4t r5t evert(0, 4, Zt) + arc r5t r6st evert(0, 5, Zt) + arc r6t r7t evert(0, 6, Zt) + arc r7t r0st evert(0, 7, Zt) + + arc rb0t rb1t evert(1, 0, Zt) + arc rb1t rb2t evert(1, 1, Zt) + arc rb2t rb3t evert(1, 2, Zt) + arc rb3t rb4t evert(1, 3, Zt) + arc rb4t rb5t evert(1, 4, Zt) + arc rb5t rb6t evert(1, 5, Zt) + arc rb6t rb7t evert(1, 6, Zt) + arc rb7t rb0t evert(1, 7, Zt) + + arc ri0t ri1t evert(2, 0, Zt) + arc ri1t ri2t evert(2, 1, Zt) + arc ri2t ri3t evert(2, 2, Zt) + arc ri3t ri4t evert(2, 3, Zt) + arc ri4t ri5t evert(2, 4, Zt) + arc ri5t ri6t evert(2, 5, Zt) + arc ri6t ri7t evert(2, 6, Zt) + arc ri7t ri0t evert(2, 7, Zt) + + arc Rb0t Rb1t evert(3, 0, Zt) + arc Rb1t Rb2t evert(3, 1, Zt) + arc Rb2t Rb3t evert(3, 2, Zt) + arc Rb3t Rb4t evert(3, 3, Zt) + arc Rb4t Rb5t evert(3, 4, Zt) + arc Rb5t Rb6t evert(3, 5, Zt) + arc Rb6t Rb7t evert(3, 6, Zt) + arc Rb7t Rb0t evert(3, 7, Zt) + + arc R0t R1st evert(4, 0, Zt) + arc R1t R2t evert(4, 1, Zt) + arc R2t R3st evert(4, 2, Zt) + arc R3t R4t evert(4, 3, Zt) + arc R4t R5st evert(4, 4, Zt) + arc R5t R6t evert(4, 5, Zt) + arc R6t R7st evert(4, 6, Zt) + arc R7t R0t evert(4, 7, Zt) +); + +patches +( + wall rotor + ( + quad2D(r0, r1) + quad2D(r1, r2s) + quad2D(r2, r3) + quad2D(r3, r4s) + quad2D(r4, r5) + quad2D(r5, r6s) + quad2D(r6, r7) + quad2D(r7, r0s) + + quad2D(r0, rb0) + quad2D(r0s, rb0) + + quad2D(r2, rb2) + quad2D(r2s, rb2) + + quad2D(r4, rb4) + quad2D(r4s, rb4) + + quad2D(r6, rb6) + quad2D(r6s, rb6) + ) + + wall stator + ( + quad2D(R0, R1s) + quad2D(R1, R2) + quad2D(R2, R3s) + quad2D(R3, R4) + quad2D(R4, R5s) + quad2D(R5, R6) + quad2D(R6, R7s) + quad2D(R7, R0) + + quad2D(R1, Rb1) + quad2D(R1s, Rb1) + + quad2D(R3, Rb3) + quad2D(R3s, Rb3) + + quad2D(R5, Rb5) + quad2D(R5s, Rb5) + + quad2D(R7, Rb7) + quad2D(R7s, Rb7) + ) + + empty front + ( + frontQuad(r0, r1, rb1, rb0) + frontQuad(r1, r2s, rb2, rb1) + frontQuad(r2, r3, rb3, rb2) + frontQuad(r3, r4s, rb4, rb3) + frontQuad(r4, r5, rb5, rb4) + frontQuad(r5, r6s, rb6, rb5) + frontQuad(r6, r7, rb7, rb6) + frontQuad(r7, r0s, rb0, rb7) + frontQuad(rb0, rb1, ri1, ri0) + frontQuad(rb1, rb2, ri2, ri1) + frontQuad(rb2, rb3, ri3, ri2) + frontQuad(rb3, rb4, ri4, ri3) + frontQuad(rb4, rb5, ri5, ri4) + frontQuad(rb5, rb6, ri6, ri5) + frontQuad(rb6, rb7, ri7, ri6) + frontQuad(rb7, rb0, ri0, ri7) + frontQuad(ri0, ri1, Rb1, Rb0) + frontQuad(ri1, ri2, Rb2, Rb1) + frontQuad(ri2, ri3, Rb3, Rb2) + frontQuad(ri3, ri4, Rb4, Rb3) + frontQuad(ri4, ri5, Rb5, Rb4) + frontQuad(ri5, ri6, Rb6, Rb5) + frontQuad(ri6, ri7, Rb7, Rb6) + frontQuad(ri7, ri0, Rb0, Rb7) + frontQuad(Rb0, Rb1, R1s, R0) + frontQuad(Rb1, Rb2, R2, R1) + frontQuad(Rb2, Rb3, R3s, R2) + frontQuad(Rb3, Rb4, R4, R3) + frontQuad(Rb4, Rb5, R5s, R4) + frontQuad(Rb5, Rb6, R6, R5) + frontQuad(Rb6, Rb7, R7s, R6) + frontQuad(Rb7, Rb0, R0, R7) + ) + + empty back + ( + backQuad(r0, r1, rb1, rb0) + backQuad(r1, r2s, rb2, rb1) + backQuad(r2, r3, rb3, rb2) + backQuad(r3, r4s, rb4, rb3) + backQuad(r4, r5, rb5, rb4) + backQuad(r5, r6s, rb6, rb5) + backQuad(r6, r7, rb7, rb6) + backQuad(r7, r0s, rb0, rb7) + backQuad(rb0, rb1, ri1, ri0) + backQuad(rb1, rb2, ri2, ri1) + backQuad(rb2, rb3, ri3, ri2) + backQuad(rb3, rb4, ri4, ri3) + backQuad(rb4, rb5, ri5, ri4) + backQuad(rb5, rb6, ri6, ri5) + backQuad(rb6, rb7, ri7, ri6) + backQuad(rb7, rb0, ri0, ri7) + backQuad(ri0, ri1, Rb1, Rb0) + backQuad(ri1, ri2, Rb2, Rb1) + backQuad(ri2, ri3, Rb3, Rb2) + backQuad(ri3, ri4, Rb4, Rb3) + backQuad(ri4, ri5, Rb5, Rb4) + backQuad(ri5, ri6, Rb6, Rb5) + backQuad(ri6, ri7, Rb7, Rb6) + backQuad(ri7, ri0, Rb0, Rb7) + backQuad(Rb0, Rb1, R1s, R0) + backQuad(Rb1, Rb2, R2, R1) + backQuad(Rb2, Rb3, R3s, R2) + backQuad(Rb3, Rb4, R4, R3) + backQuad(Rb4, Rb5, R5s, R4) + backQuad(Rb5, Rb6, R6, R5) + backQuad(Rb6, Rb7, R7s, R6) + backQuad(Rb7, Rb0, R0, R7) + ) +); + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/controlDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..7b2296286eea43d3e3c64622e2f6ae01f510d485 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/controlDict @@ -0,0 +1,55 @@ +/*--------------------------------*- 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 reactingTwoPhaseEulerFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 20; + +deltaT 1e-4; + +writeControl adjustableRunTime; + +writeInterval 0.1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep yes; + +maxCo 0.2; + +maxDeltaT 1; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..5b2fc02c45d98c90bba85d83f090b644ef6d4870 --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes @@ -0,0 +1,67 @@ +/*--------------------------------*- 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.air) Gauss vanLeer; + div(phir,alpha.air) 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 corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p_rgh; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSolution b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..a95a952401d428b3c8a83b229763258d70aff7dc --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSolution @@ -0,0 +1,89 @@ +/*--------------------------------*- 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.air + { + nAlphaCorr 1; + nAlphaSubCycles 2; + } + + p_rgh + { + solver PCG; + preconditioner + { + preconditioner GAMG; + smoother GaussSeidel; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + } + tolerance 1e-6; + relTol 0; + } + + p_rghFinal + { + $p_rgh; + relTol 0; + } + + "U.*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-5; + relTol 0; + minIter 1; + } + + "(h|e).*" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-8; + relTol 0; + minIter 1; + } +} + +PIMPLE +{ + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; + + pRefCell 0; + pRefValue 0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/topoSetDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/topoSetDict new file mode 100644 index 0000000000000000000000000000000000000000..bf749449bfe3a53cee9b2d709eb66a9b2aff4bfe --- /dev/null +++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/mixerVessel2D/system/topoSetDict @@ -0,0 +1,32 @@ +/*--------------------------------*- 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 topoSetDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +actions +( + { + name rotor; + type cellSet; + action new; + source zoneToCell; + sourceInfo + { + name rotor; + } + } +); + +// ************************************************************************* //