diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/Allwclean b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/Allwclean index cc138bc068e6882e24eb995668e00a0fc18d3e58..8af1402435a2178688f40851c00f4059d8fe6ecd 100755 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/Allwclean +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/Allwclean @@ -2,9 +2,9 @@ cd ${0%/*} || exit 1 # run from this directory set -x -wclean libso phaseModel +wclean libso twoPhaseSystem wclean libso interfacialModels -wclean libso kineticTheoryModels +wclean libso phaseIncompressibleTurbulenceModels wclean # ----------------------------------------------------------------- end-of-file diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/Allwmake b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/Allwmake index 29294d166a947be8f5f391168d9e4f67faeb8718..4927c5509ab007d6ef148c536f5b2e3d1833287d 100755 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/Allwmake +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/Allwmake @@ -2,7 +2,8 @@ cd ${0%/*} || exit 1 # run from this directory set -x -wmake libso phaseModel +wmakeLnInclude interfacialModels +wmake libso twoPhaseSystem wmake libso interfacialModels wmake libso kineticTheoryModels wmake diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/EEqns.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/EEqns.H index 1810bdd4d9f07377f8f7cb42702f3bd4e4a19ef9..3127450f0090dbe406d994f192ceb674be5f5936 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/EEqns.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/EEqns.H @@ -1,22 +1,12 @@ { - volScalarField k1 - ( - "k1", - alpha1*(thermo1.alpha()/rho1 + sqr(Ct)*nut2*thermo1.CpByCpv()/Prt) - ); - - volScalarField k2 - ( - "k2", - alpha2*(thermo2.alpha()/rho2 + nut2*thermo2.CpByCpv()/Prt) - ); - volScalarField& he1 = thermo1.he(); volScalarField& he2 = thermo2.he(); volScalarField Cpv1(thermo1.Cpv()); volScalarField Cpv2(thermo2.Cpv()); + volScalarField heatTransferCoeff(fluid.heatTransferCoeff()); + fvScalarMatrix he1Eqn ( fvm::ddt(alpha1, he1) + fvm::div(alphaPhi1, he1) @@ -32,7 +22,8 @@ : -alpha1*dpdt )/rho1 - - fvm::laplacian(k1, he1) + //***HGW- fvm::laplacian(alpha1*turbulence1->alphaEff(), he1) + - fvm::laplacian(alpha1*turbulence1->nuEff(), he1) == heatTransferCoeff*(thermo2.T() - thermo1.T())/rho1 + heatTransferCoeff*he1/Cpv1/rho1 @@ -54,7 +45,8 @@ : -alpha2*dpdt )/rho2 - - fvm::laplacian(k2, he2) + //***HGW- fvm::laplacian(alpha2*turbulence2->alphaEff(), he2) + - fvm::laplacian(alpha2*turbulence2->nuEff(), he2) == heatTransferCoeff*(thermo1.T() - thermo2.T())/rho2 + heatTransferCoeff*he2/Cpv2/rho2 diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/Make/options b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/Make/options index d90ba7bbbdf308e0b43489c0e0efd851b5367e28..ac52ae02aebc843117cfdf2b6aebf22514d7ae73 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/Make/options +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/Make/options @@ -2,18 +2,22 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/transportModels/incompressible/lnInclude \ - -IturbulenceModel \ - -IkineticTheoryModels/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/turbulenceModel/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/phaseIncompressible/lnInclude \ + -IphaseIncompressibleTurbulenceModels/lnInclude \ -IinterfacialModels/lnInclude \ - -IphaseModel/lnInclude \ + -ItwoPhaseSystem/lnInclude \ -Iaveraging EXE_LIBS = \ -lfluidThermophysicalModels \ -lspecie \ + -lturbulenceModels \ + -lincompressibleTurbulenceModels \ + -lphaseIncompressibleTurbulenceModels \ -lincompressibleTransportModels \ - -lcompressiblePhaseModel \ + -lcompressibleTwoPhaseSystem \ -lcompressibleEulerianInterfacialModels \ - -lcompressibleKineticTheoryModel \ -lfiniteVolume \ -lmeshTools diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/UEqns.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/UEqns.H index ae22926c4e79f29ebf2ebdaccca548933218a9d1..dea48be335460a4e698b13fa867467eedb0af76c 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/UEqns.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/UEqns.H @@ -5,31 +5,12 @@ mrfZones.correctBoundaryVelocity(U); fvVectorMatrix U1Eqn(U1, U1.dimensions()*dimVol/dimTime); fvVectorMatrix U2Eqn(U2, U2.dimensions()*dimVol/dimTime); -{ - { - volTensorField gradU1T(fvc::grad(U1)().T()); - - if (kineticTheory.on()) - { - kineticTheory.solve(gradU1T); - nuEff1 = kineticTheory.mu1()/rho1; - } - else // If not using kinetic theory is using Ct model - { - nuEff1 = sqr(Ct)*nut2 + thermo1.mu()/rho1; - } - - volTensorField Rc1 - ( - "Rc", - (((2.0/3.0)*I)*nuEff1)*tr(gradU1T) - nuEff1*gradU1T - ); +volScalarField dragCoeff(fluid.dragCoeff()); - if (kineticTheory.on()) - { - Rc1 -= ((kineticTheory.lambda()/rho1)*tr(gradU1T))*tensor(I); - } +{ + volVectorField liftForce(fluid.liftForce(U)); + { U1Eqn = ( fvm::ddt(alpha1, U1) @@ -38,31 +19,23 @@ fvVectorMatrix U2Eqn(U2, U2.dimensions()*dimVol/dimTime); // Compressibity correction - fvm::Sp(fvc::ddt(alpha1) + fvc::div(alphaPhi1), U1) - + Cvm*rho2*alpha1*alpha2/rho1* + + fluid.Cvm()*rho2*alpha1*alpha2/rho1* ( fvm::ddt(U1) + fvm::div(phi1, U1) - fvm::Sp(fvc::div(phi1), U1) ) - - fvm::laplacian(alpha1*nuEff1, U1) - + fvc::div(alpha1*Rc1) + + turbulence1->divDevReff(U1) == - fvm::Sp(dragCoeff/rho1, U1) - - alpha1*alpha2/rho1*(liftForce - Cvm*rho2*DDtU2) + - alpha1*alpha2/rho1*(liftForce - fluid.Cvm()*rho2*DDtU2) ); - mrfZones.addCoriolis(alpha1*(1 + Cvm*rho2*alpha2/rho1), U1Eqn); + mrfZones.addCoriolis(alpha1*(1 + fluid.Cvm()*rho2*alpha2/rho1), U1Eqn); U1Eqn.relax(); } { - volTensorField gradU2T(fvc::grad(U2)().T()); - volTensorField Rc2 - ( - "Rc", - (((2.0/3.0)*I)*nuEff2)*tr(gradU2T) - nuEff2*gradU2T - ); - U2Eqn = ( fvm::ddt(alpha2, U2) @@ -71,20 +44,18 @@ fvVectorMatrix U2Eqn(U2, U2.dimensions()*dimVol/dimTime); // Compressibity correction - fvm::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), U2) - + Cvm*rho2*alpha1*alpha2/rho2* + + fluid.Cvm()*rho2*alpha1*alpha2/rho2* ( fvm::ddt(U2) + fvm::div(phi2, U2) - fvm::Sp(fvc::div(phi2), U2) ) - - - fvm::laplacian(alpha2*nuEff2, U2) - + fvc::div(alpha2*Rc2) + + turbulence2->divDevReff(U2) == - fvm::Sp(dragCoeff/rho2, U2) - + alpha1*alpha2/rho2*(liftForce + Cvm*rho2*DDtU1) + + alpha1*alpha2/rho2*(liftForce + fluid.Cvm()*rho2*DDtU1) ); - mrfZones.addCoriolis(alpha2*(1 + Cvm*rho2*alpha1/rho2), U2Eqn); + mrfZones.addCoriolis(alpha2*(1 + fluid.Cvm()*rho2*alpha1/rho2), U2Eqn); U2Eqn.relax(); } } diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/alphaEqn.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/alphaEqn.H index 601ff0e919a5b3537f01799ae3a425ede07dae43..2bd8277caabe0140e953b2df7222cbd30df32d7e 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/alphaEqn.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/alphaEqn.H @@ -1,6 +1,3 @@ -surfaceScalarField alphaPhi1("alphaPhi" + phase1Name, phi1); -surfaceScalarField alphaPhi2("alphaPhi" + phase2Name, phi2); - { word alphaScheme("div(phi," + alpha1.name() + ')'); word alpharScheme("div(phir," + alpha1.name() + ')'); @@ -8,12 +5,23 @@ surfaceScalarField alphaPhi2("alphaPhi" + phase2Name, phi2); surfaceScalarField phic("phic", phi); surfaceScalarField phir("phir", phi1 - phi2); - if (g0.value() > 0.0) + surfaceScalarField alpha1f(fvc::interpolate(max(alpha1, 0.0))); + + tmp<surfaceScalarField> pPrimeByA; + + if (implicitPhasePressure) { - surfaceScalarField alpha1f(fvc::interpolate(alpha1)); - surfaceScalarField phipp(ppMagf*fvc::snGrad(alpha1)*mesh.magSf()); - phir += phipp; - phic += alpha1f*phipp; + pPrimeByA = + fvc::interpolate((1.0/rho1)*rAU1*turbulence1().pPrime()) + + fvc::interpolate((1.0/rho2)*rAU2*turbulence2().pPrime()); + + surfaceScalarField phiP + ( + pPrimeByA()*fvc::snGrad(alpha1, "bounded")*mesh.magSf() + ); + + phic += alpha1f*phiP; + phir += phiP; } for (int acorr=0; acorr<nAlphaCorr; acorr++) @@ -92,7 +100,7 @@ surfaceScalarField alphaPhi2("alphaPhi" + phase2Name, phi2); alphaPhic1, Sp, Su, - (g0.value() > 0 ? alphaMax : 1), + 1, 0 ); @@ -104,61 +112,19 @@ surfaceScalarField alphaPhi2("alphaPhi" + phase2Name, phi2); { alphaPhi1 = alphaPhic1; } - - /* - // Legacy semi-implicit and potentially unbounded form - fvScalarMatrix alpha1Eqn - ( - fvm::ddt(alpha1) - + fvm::div(phic, alpha1, alphaScheme) - + fvm::div - ( - -fvc::flux(-phir, alpha2, alpharScheme), - alpha1, - alpharScheme - ) - == - fvm::Sp(Sp, alpha1) + Su - ); - - alpha1Eqn.relax(); - alpha1Eqn.solve(); - - if (nAlphaSubCycles > 1) - { - alphaPhi1 += (runTime.deltaT()/totalDeltaT)*alpha1Eqn.flux(); - } - else - { - alphaPhi1 = alpha1Eqn.flux(); - } - */ } - if (g0.value() > 0.0) + if (implicitPhasePressure) { - surfaceScalarField alpha1f(fvc::interpolate(alpha1)); - - ppMagf = - fvc::interpolate((1.0/rho1)*rAU1) - *g0*min(exp(preAlphaExp*(alpha1f - alphaMax)), expMax); - fvScalarMatrix alpha1Eqn ( fvm::ddt(alpha1) - fvc::ddt(alpha1) - - fvm::laplacian - ( - alpha1f*ppMagf, - alpha1, - "laplacian(alpha1PpMag,alpha1)" - ) + - fvm::laplacian(alpha1f*pPrimeByA, alpha1, "bounded") ); alpha1Eqn.relax(); alpha1Eqn.solve(); - #include "packingLimiter.H" - alphaPhi1 += alpha1Eqn.flux(); } @@ -173,4 +139,4 @@ surfaceScalarField alphaPhi2("alphaPhi" + phase2Name, phi2); } } -rho = alpha1*rho1 + alpha2*rho2; +rho = fluid.rho(); diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/compressibleTwoPhaseEulerFoam.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/compressibleTwoPhaseEulerFoam.C index 50266a195e0277bdee6148d35ae14e43fbadbcb0..22018f9d8caf0f0fb85396a8cdb2406b3c6eb429 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/compressibleTwoPhaseEulerFoam.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/compressibleTwoPhaseEulerFoam.C @@ -34,21 +34,11 @@ Description #include "MULES.H" #include "subCycle.H" #include "rhoThermo.H" -#include "nearWallDist.H" -#include "wallFvPatch.H" -#include "fixedValueFvsPatchFields.H" -#include "Switch.H" - -#include "IFstream.H" -#include "OFstream.H" - -#include "phaseModel.H" +#include "twoPhaseSystem.H" #include "dragModel.H" #include "heatTransferModel.H" -#include "kineticTheoryModel.H" - +#include "PhaseIncompressibleTurbulenceModel.H" #include "pimpleControl.H" - #include "IOMRFZoneList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -62,7 +52,6 @@ int main(int argc, char *argv[]) #include "readGravitationalAcceleration.H" #include "createFields.H" #include "createMRFZones.H" - #include "readPPProperties.H" #include "initContinuityErrs.H" #include "readTimeControls.H" #include "CourantNos.H" @@ -87,8 +76,6 @@ int main(int argc, char *argv[]) while (pimple.loop()) { #include "alphaEqn.H" - #include "kEpsilon.H" - #include "interfacialCoeffs.H" #include "EEqns.H" #include "UEqns.H" @@ -99,6 +86,12 @@ int main(int argc, char *argv[]) } #include "DDtU.H" + + if (pimple.turbCorr()) + { + turbulence1->correct(); + turbulence2->correct(); + } } #include "write.H" diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/createFields.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/createFields.H index 5b030b95ea64522589ec0583b07e58b51f61d73f..f279445cf639bc7992037f31a6f4b92ed487c714 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/createFields.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/createFields.H @@ -1,64 +1,38 @@ - Info<< "Reading transportProperties\n" << endl; + Info<< "Creating twoPhaseSystem\n" << endl; - IOdictionary transportProperties - ( - IOobject - ( - "transportProperties", - runTime.constant(), - mesh, - IOobject::MUST_READ, - IOobject::NO_WRITE - ) - ); + twoPhaseSystem fluid(mesh); - word phase1Name - ( - transportProperties.found("phases") - ? wordList(transportProperties.lookup("phases"))[0] - : "1" - ); + phaseModel& phase1 = fluid.phase1(); + phaseModel& phase2 = fluid.phase2(); - word phase2Name - ( - transportProperties.found("phases") - ? wordList(transportProperties.lookup("phases"))[1] - : "2" - ); + volScalarField& alpha1 = phase1; + volScalarField& alpha2 = phase2; - autoPtr<phaseModel> phase1 = phaseModel::New + volVectorField& U1 = phase1.U(); + surfaceScalarField& phi1 = phase1.phi(); + surfaceScalarField alphaPhi1 ( - mesh, - transportProperties, - phase1Name + IOobject::groupName("alphaPhi", phase1.name()), + fvc::interpolate(alpha1)*phi1 ); - autoPtr<phaseModel> phase2 = phaseModel::New + volVectorField& U2 = phase2.U(); + surfaceScalarField& phi2 = phase2.phi(); + surfaceScalarField alphaPhi2 ( - mesh, - transportProperties, - phase2Name + IOobject::groupName("alphaPhi", phase2.name()), + fvc::interpolate(alpha2)*phi2 ); - volScalarField& alpha1 = phase1(); - volScalarField& alpha2 = phase2(); - alpha2 = scalar(1) - alpha1; - - volVectorField& U1 = phase1->U(); - surfaceScalarField& phi1 = phase1->phi(); - - volVectorField& U2 = phase2->U(); - surfaceScalarField& phi2 = phase2->phi(); - dimensionedScalar pMin ( "pMin", dimPressure, - transportProperties.lookup("pMin") + fluid.lookup("pMin") ); - rhoThermo& thermo1 = phase1->thermo(); - rhoThermo& thermo2 = phase2->thermo(); + rhoThermo& thermo1 = phase1.thermo(); + rhoThermo& thermo2 = phase2.thermo(); volScalarField& p = thermo1.p(); @@ -78,7 +52,7 @@ IOobject::NO_READ, IOobject::AUTO_WRITE ), - alpha1*U1 + alpha2*U2 + fluid.U() ); surfaceScalarField phi @@ -91,7 +65,7 @@ IOobject::NO_READ, IOobject::AUTO_WRITE ), - fvc::interpolate(alpha1)*phi1 + fvc::interpolate(alpha2)*phi2 + fluid.phi() ); volScalarField rho @@ -104,7 +78,7 @@ IOobject::NO_READ, IOobject::AUTO_WRITE ), - alpha1*rho1 + alpha2*rho2 + fluid.rho() ); Info<< "Calculating field DDtU1 and DDtU2\n" << endl; @@ -127,119 +101,11 @@ Info<< "Calculating field g.h\n" << endl; volScalarField gh("gh", g & mesh.C()); - dimensionedScalar Cvm - ( - "Cvm", - dimless, - transportProperties.lookup("Cvm") - ); - - dimensionedScalar Cl - ( - "Cl", - dimless, - transportProperties.lookup("Cl") - ); - - dimensionedScalar Ct - ( - "Ct", - dimless, - transportProperties.lookup("Ct") - ); - - #include "createRASTurbulence.H" - - IOdictionary interfacialProperties - ( - IOobject - ( - "interfacialProperties", - runTime.constant(), - mesh, - IOobject::MUST_READ, - IOobject::NO_WRITE - ) - ); - - autoPtr<dragModel> drag1 = dragModel::New - ( - interfacialProperties, - alpha1, - phase1, - phase2 - ); - - autoPtr<dragModel> drag2 = dragModel::New - ( - interfacialProperties, - alpha2, - phase2, - phase1 - ); - - autoPtr<heatTransferModel> heatTransfer1 = heatTransferModel::New - ( - interfacialProperties, - alpha1, - phase1, - phase2 - ); - - autoPtr<heatTransferModel> heatTransfer2 = heatTransferModel::New - ( - interfacialProperties, - alpha2, - phase2, - phase1 - ); - - word dispersedPhase(interfacialProperties.lookup("dispersedPhase")); - - if - ( - !( - dispersedPhase == phase1Name - || dispersedPhase == phase2Name - || dispersedPhase == "both" - ) - ) - { - FatalErrorIn(args.executable()) - << "invalid dispersedPhase " << dispersedPhase - << exit(FatalError); - } - - Info << "dispersedPhase is " << dispersedPhase << endl; - - scalar residualPhaseFraction - ( - readScalar - ( - interfacialProperties.lookup("residualPhaseFraction") - ) - ); - - dimensionedScalar residualSlip - ( - "residualSlip", - dimVelocity, - interfacialProperties.lookup("residualSlip") - ); - - kineticTheoryModel kineticTheory - ( - phase1, - U2, - alpha1, - drag1 - ); - volScalarField rAU1 ( IOobject ( - "rAU" + phase1Name, + IOobject::groupName("rAU", phase1.name()), runTime.timeName(), mesh, IOobject::NO_READ, @@ -249,21 +115,20 @@ dimensionedScalar("zero", dimensionSet(0, 0, 1, 0, 0), 0.0) ); - surfaceScalarField ppMagf + volScalarField rAU2 ( IOobject ( - "ppMagf", + IOobject::groupName("rAU", phase2.name()), runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), mesh, - dimensionedScalar("zero", dimensionSet(0, 2, -1, 0, 0), 0.0) + dimensionedScalar("zero", dimensionSet(0, 0, 1, 0, 0), 0.0) ); - label pRefCell = 0; scalar pRefValue = 0.0; setRefCell(p, mesh.solutionDict().subDict("PIMPLE"), pRefCell, pRefValue); @@ -290,5 +155,31 @@ Info<< "Creating field kinetic energy K\n" << endl; - volScalarField K1("K" + phase1Name, 0.5*magSqr(U1)); - volScalarField K2("K" + phase2Name, 0.5*magSqr(U2)); + volScalarField K1(IOobject::groupName("K", phase1.name()), 0.5*magSqr(U1)); + volScalarField K2(IOobject::groupName("K", phase2.name()), 0.5*magSqr(U2)); + + autoPtr<PhaseIncompressibleTurbulenceModel<phaseModel> > + turbulence1 + ( + PhaseIncompressibleTurbulenceModel<phaseModel>::New + ( + alpha1, + U1, + alphaPhi1, + phi1, + phase1 + ) + ); + + autoPtr<PhaseIncompressibleTurbulenceModel<phaseModel> > + turbulence2 + ( + PhaseIncompressibleTurbulenceModel<phaseModel>::New + ( + alpha2, + U2, + alphaPhi2, + phi2, + phase2 + ) + ); diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/createRASTurbulence.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/createRASTurbulence.H deleted file mode 100644 index 0a782ef51edf99f32eaf986325fd926db596e410..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/createRASTurbulence.H +++ /dev/null @@ -1,189 +0,0 @@ - IOdictionary RASProperties - ( - IOobject - ( - "RASProperties", - runTime.constant(), - mesh, - //IOobject::MUST_READ_IF_MODIFIED, - IOobject::MUST_READ, - IOobject::NO_WRITE - ) - ); - - - Switch turbulence - ( - RASProperties.lookup("turbulence") - ); - - dictionary kEpsilonDict - ( - RASProperties.subDictPtr("kEpsilonCoeffs") - ); - - dimensionedScalar Cmu - ( - dimensionedScalar::lookupOrAddToDict - ( - "Cmu", - kEpsilonDict, - 0.09 - ) - ); - - dimensionedScalar C1 - ( - dimensionedScalar::lookupOrAddToDict - ( - "C1", - kEpsilonDict, - 1.44 - ) - ); - - dimensionedScalar C2 - ( - dimensionedScalar::lookupOrAddToDict - ( - "C2", - kEpsilonDict, - 1.92 - ) - ); - - dimensionedScalar alpha1k - ( - dimensionedScalar::lookupOrAddToDict - ( - "alpha1k", - kEpsilonDict, - 1.0 - ) - ); - - dimensionedScalar alpha1Eps - ( - dimensionedScalar::lookupOrAddToDict - ( - "alpha1Eps", - kEpsilonDict, - 0.76923 - ) - ); - - dimensionedScalar Prt - ( - dimensioned<scalar>::lookupOrAddToDict - ( - "Prt", - kEpsilonDict, - 1.0 - ) - ); - - dictionary wallFunctionDict - ( - RASProperties.subDictPtr("wallFunctionCoeffs") - ); - - dimensionedScalar kappa - ( - dimensionedScalar::lookupOrAddToDict - ( - "kappa", - wallFunctionDict, - 0.41 - ) - ); - - dimensionedScalar E - ( - dimensionedScalar::lookupOrAddToDict - ( - "E", - wallFunctionDict, - 9.8 - ) - ); - - if (RASProperties.lookupOrDefault("printCoeffs", false)) - { - Info<< "kEpsilonCoeffs" << kEpsilonDict << nl - << "wallFunctionCoeffs" << wallFunctionDict << endl; - } - - - nearWallDist y(mesh); - - - Info<< "Reading field k\n" << endl; - volScalarField k - ( - IOobject - ( - "k", - runTime.timeName(), - mesh, - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - mesh - ); - - Info<< "Reading field epsilon\n" << endl; - volScalarField epsilon - ( - IOobject - ( - "epsilon", - runTime.timeName(), - mesh, - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - mesh - ); - - - Info<< "Calculating field nut2\n" << endl; - volScalarField nut2 - ( - IOobject - ( - "nut" + phase2Name, - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - Cmu*sqr(k)/epsilon - ); - - Info<< "Calculating field nuEff1\n" << endl; - volScalarField nuEff1 - ( - IOobject - ( - "nuEff" + phase1Name, - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - sqr(Ct)*nut2 + thermo1.mu()/rho1 - ); - - Info<< "Calculating field nuEff2\n" << endl; - volScalarField nuEff2 - ( - IOobject - ( - "nuEff" + phase2Name, - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - nut2 + thermo2.mu()/rho2 - ); diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialCoeffs.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialCoeffs.H deleted file mode 100644 index d53bec5ea4f5ed2dc8393425bb4c4ddfa816c39d..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialCoeffs.H +++ /dev/null @@ -1,88 +0,0 @@ -volScalarField dragCoeff -( - IOobject - ( - "dragCoeff", - runTime.timeName(), - mesh - ), - mesh, - dimensionedScalar("dragCoeff", dimensionSet(1, -3, -1, 0, 0), 0) -); - -volVectorField liftForce -( - IOobject - ( - "liftForce", - runTime.timeName(), - mesh - ), - mesh, - dimensionedVector("liftForce", dimensionSet(1, -2, -2, 0, 0), vector::zero) -); - -volScalarField heatTransferCoeff -( - IOobject - ( - "heatTransferCoeff", - runTime.timeName(), - mesh - ), - mesh, - dimensionedScalar("heatTransferCoeff", dimensionSet(1, -1, -3, -1, 0), 0) -); - -{ - volVectorField Ur(U1 - U2); - volScalarField magUr(mag(Ur) + residualSlip); - - if (dispersedPhase == phase1Name) - { - dragCoeff = drag1->K(magUr); - heatTransferCoeff = heatTransfer1->K(magUr); - } - else if (dispersedPhase == phase2Name) - { - dragCoeff = drag2->K(magUr); - heatTransferCoeff = heatTransfer2->K(magUr); - } - else if (dispersedPhase == "both") - { - dragCoeff = - ( - alpha2*drag1->K(magUr) - + alpha1*drag2->K(magUr) - ); - - heatTransferCoeff = - ( - alpha2*heatTransfer1->K(magUr) - + alpha1*heatTransfer2->K(magUr) - ); - } - else - { - FatalErrorIn(args.executable()) - << "dispersedPhase: " << dispersedPhase << " is incorrect" - << exit(FatalError); - } - - volScalarField alphaCoeff(max(alpha1*alpha2, residualPhaseFraction)); - dragCoeff *= alphaCoeff; - heatTransferCoeff *= alphaCoeff; - - liftForce = Cl*(alpha1*rho1 + alpha2*rho2)*(Ur ^ fvc::curl(U)); - - // Remove lift, drag and phase heat-transfer at fixed-flux boundaries - forAll(phi1.boundaryField(), patchi) - { - if (isA<fixedValueFvsPatchScalarField>(phi1.boundaryField()[patchi])) - { - dragCoeff.boundaryField()[patchi] = 0.0; - heatTransferCoeff.boundaryField()[patchi] = 0.0; - liftForce.boundaryField()[patchi] = vector::zero; - } - } -} diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialModels/Make/options b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialModels/Make/options index f031e058986a9c4ac3c37c83fafeaf2f592f28df..e7e60696ec115958097f3014006ebf9c93889980 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialModels/Make/options +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialModels/Make/options @@ -1,9 +1,10 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/transportModels/incompressible/transportModel \ -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I../phaseModel/lnInclude + -I../twoPhaseSystem/lnInclude LIB_LIBS = \ - -lcompressiblePhaseModel \ + -lcompressibleTwoPhaseSystem \ -lfluidThermophysicalModels \ -lspecie diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C index 00be8a338ffa3db3b10a1b2043105ff598e0314f..9159b287849963cdd03963567beccf66753b32a6 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialModels/dragModels/dragModel/newDragModel.C @@ -37,7 +37,7 @@ Foam::autoPtr<Foam::dragModel> Foam::dragModel::New { word dragModelType ( - interfaceDict.lookup("dragModel" + phase1.name()) + interfaceDict.lookup(phase1.name()) ); Info << "Selecting dragModel for phase " diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C index aaa972032d071d9ee1945e3bb141cff24cb16c36..cf3ae9741236ef8942a4ecd88eb4fb8539714d17 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/interfacialModels/heatTransferModels/heatTransferModel/newHeatTransferModel.C @@ -37,7 +37,7 @@ Foam::autoPtr<Foam::heatTransferModel> Foam::heatTransferModel::New { word heatTransferModelType ( - interfaceDict.lookup("heatTransferModel" + phase1.name()) + interfaceDict.lookup(phase1.name()) ); Info<< "Selecting heatTransferModel for phase " diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/Make/files b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/Make/files deleted file mode 100644 index 2b36d0bc319b5a3b3541a93c316a671d508a4285..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/Make/files +++ /dev/null @@ -1,32 +0,0 @@ -kineticTheoryModel/kineticTheoryModel.C - -viscosityModel/viscosityModel/viscosityModel.C -viscosityModel/viscosityModel/newViscosityModel.C -viscosityModel/Gidaspow/GidaspowViscosity.C -viscosityModel/Syamlal/SyamlalViscosity.C -viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C -viscosityModel/none/noneViscosity.C - -conductivityModel/conductivityModel/conductivityModel.C -conductivityModel/conductivityModel/newConductivityModel.C -conductivityModel/Gidaspow/GidaspowConductivity.C -conductivityModel/Syamlal/SyamlalConductivity.C -conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C - -radialModel/radialModel/radialModel.C -radialModel/radialModel/newRadialModel.C -radialModel/CarnahanStarling/CarnahanStarlingRadial.C -radialModel/LunSavage/LunSavageRadial.C -radialModel/SinclairJackson/SinclairJacksonRadial.C - -granularPressureModel/granularPressureModel/granularPressureModel.C -granularPressureModel/granularPressureModel/newGranularPressureModel.C -granularPressureModel/Lun/LunPressure.C -granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C - -frictionalStressModel/frictionalStressModel/frictionalStressModel.C -frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C -frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C -frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C - -LIB = $(FOAM_LIBBIN)/libcompressibleKineticTheoryModel diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/Make/options b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/Make/options deleted file mode 100644 index 7fdabf573092bd4219e75fa41044236e02b7d50e..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/Make/options +++ /dev/null @@ -1,6 +0,0 @@ -EXE_INC = \ - -I$(LIB_SRC)/foam/lnInclude \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I../phaseModel/lnInclude \ - -I../interfacialModels/lnInclude diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C deleted file mode 100644 index 81393568200bd0b7b97cf54e8e0c0bf3a8ae1d7b..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C +++ /dev/null @@ -1,389 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more 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 "surfaceInterpolate.H" -#include "mathematicalConstants.H" -#include "fvCFD.H" - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -Foam::kineticTheoryModel::kineticTheoryModel -( - const Foam::phaseModel& phase1, - const Foam::volVectorField& U2, - const Foam::volScalarField& alpha1, - const Foam::dragModel& draga -) -: - phase1_(phase1), - U1_(phase1.U()), - U2_(U2), - alpha1_(alpha1), - phi1_(phase1.phi()), - draga_(draga), - - rho1_(phase1.rho()), - - kineticTheoryProperties_ - ( - IOobject - ( - "kineticTheoryProperties", - U1_.time().constant(), - U1_.mesh(), - IOobject::MUST_READ, - IOobject::NO_WRITE - ) - ), - kineticTheory_(kineticTheoryProperties_.lookup("kineticTheory")), - equilibrium_(kineticTheoryProperties_.lookup("equilibrium")), - - viscosityModel_ - ( - kineticTheoryModels::viscosityModel::New - ( - kineticTheoryProperties_ - ) - ), - conductivityModel_ - ( - kineticTheoryModels::conductivityModel::New - ( - kineticTheoryProperties_ - ) - ), - radialModel_ - ( - kineticTheoryModels::radialModel::New - ( - kineticTheoryProperties_ - ) - ), - granularPressureModel_ - ( - kineticTheoryModels::granularPressureModel::New - ( - kineticTheoryProperties_ - ) - ), - frictionalStressModel_ - ( - kineticTheoryModels::frictionalStressModel::New - ( - kineticTheoryProperties_ - ) - ), - e_(kineticTheoryProperties_.lookup("e")), - alphaMax_(kineticTheoryProperties_.lookup("alphaMax")), - alphaMinFriction_(kineticTheoryProperties_.lookup("alphaMinFriction")), - Fr_(kineticTheoryProperties_.lookup("Fr")), - eta_(kineticTheoryProperties_.lookup("eta")), - p_(kineticTheoryProperties_.lookup("p")), - phi_(dimensionedScalar(kineticTheoryProperties_.lookup("phi"))*M_PI/180.0), - Theta_ - ( - IOobject - ( - "Theta", - U1_.time().timeName(), - U1_.mesh(), - IOobject::MUST_READ, - IOobject::AUTO_WRITE - ), - U1_.mesh() - ), - mu1_ - ( - IOobject - ( - "mu" + phase1.name(), - U1_.time().timeName(), - U1_.mesh(), - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - U1_.mesh(), - dimensionedScalar("zero", dimensionSet(1, -1, -1, 0, 0), 0.0) - ), - lambda_ - ( - IOobject - ( - "lambda", - U1_.time().timeName(), - U1_.mesh(), - IOobject::NO_READ, - IOobject::NO_WRITE - ), - U1_.mesh(), - dimensionedScalar("zero", dimensionSet(1, -1, -1, 0, 0), 0.0) - ), - pa_ - ( - IOobject - ( - "pa", - U1_.time().timeName(), - U1_.mesh(), - IOobject::NO_READ, - IOobject::AUTO_WRITE - ), - U1_.mesh(), - dimensionedScalar("zero", dimensionSet(1, -1, -2, 0, 0), 0.0) - ), - kappa_ - ( - IOobject - ( - "kappa", - U1_.time().timeName(), - U1_.mesh(), - IOobject::NO_READ, - IOobject::NO_WRITE - ), - U1_.mesh(), - dimensionedScalar("zero", dimensionSet(1, -1, -1, 0, 0), 0.0) - ), - gs0_ - ( - IOobject - ( - "gs0", - U1_.time().timeName(), - U1_.mesh(), - IOobject::NO_READ, - IOobject::NO_WRITE - ), - U1_.mesh(), - dimensionedScalar("zero", dimensionSet(0, 0, 0, 0, 0), 1.0) - ) -{} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::kineticTheoryModel::~kineticTheoryModel() -{} - - -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void Foam::kineticTheoryModel::solve(const volTensorField& gradU1t) -{ - if (!kineticTheory_) - { - return; - } - - const scalar sqrtPi = sqrt(constant::mathematical::pi); - - volScalarField da_(phase1_.d()); - - surfaceScalarField phi(1.5*phi1_*fvc::interpolate(rho1_*alpha1_)); - - volTensorField dU(gradU1t.T()); - volSymmTensorField D(symm(dU)); - - // NB, drag = K*alpha1*alpha2, - // (the alpha1 and alpha2 has been extracted from the drag function for - // numerical reasons) - volScalarField Ur(mag(U1_ - U2_)); - volScalarField alpha2Prim(alpha1_*(1.0 - alpha1_)*draga_.K(Ur)); - - // Calculating the radial distribution function (solid volume fraction is - // limited close to the packing limit, but this needs improvements) - // The solution is higly unstable close to the packing limit. - gs0_ = radialModel_->g0 - ( - min(max(alpha1_, scalar(1e-6)), alphaMax_ - 0.01), - alphaMax_ - ); - - // particle pressure - coefficient in front of Theta (Eq. 3.22, p. 45) - volScalarField PsCoeff - ( - granularPressureModel_->granularPressureCoeff - ( - alpha1_, - gs0_, - rho1_, - e_ - ) - ); - - // 'thermal' conductivity (Table 3.3, p. 49) - kappa_ = conductivityModel_->kappa(alpha1_, Theta_, gs0_, rho1_, da_, e_); - - // particle viscosity (Table 3.2, p.47) - mu1_ = viscosityModel_->mu1(alpha1_, Theta_, gs0_, rho1_, da_, e_); - - dimensionedScalar Tsmall - ( - "small", - dimensionSet(0 , 2 ,-2 ,0 , 0, 0, 0), - 1.0e-6 - ); - - dimensionedScalar TsmallSqrt = sqrt(Tsmall); - volScalarField ThetaSqrt(sqrt(Theta_)); - - // dissipation (Eq. 3.24, p.50) - volScalarField gammaCoeff - ( - 12.0*(1.0 - sqr(e_))*sqr(alpha1_)*rho1_*gs0_*(1.0/da_)*ThetaSqrt/sqrtPi - ); - - // Eq. 3.25, p. 50 Js = J1 - J2 - volScalarField J1(3.0*alpha2Prim); - volScalarField J2 - ( - 0.25*sqr(alpha2Prim)*da_*sqr(Ur) - /(max(alpha1_, scalar(1e-6))*rho1_*sqrtPi*(ThetaSqrt + TsmallSqrt)) - ); - - // bulk viscosity p. 45 (Lun et al. 1984). - lambda_ = (4.0/3.0)*sqr(alpha1_)*rho1_*da_*gs0_*(1.0+e_)*ThetaSqrt/sqrtPi; - - // stress tensor, Definitions, Table 3.1, p. 43 - volSymmTensorField tau(2.0*mu1_*D + (lambda_ - (2.0/3.0)*mu1_)*tr(D)*I); - - if (!equilibrium_) - { - // construct the granular temperature equation (Eq. 3.20, p. 44) - // NB. note that there are two typos in Eq. 3.20 - // no grad infront of Ps - // wrong sign infront of laplacian - fvScalarMatrix ThetaEqn - ( - fvm::ddt(1.5*alpha1_*rho1_, Theta_) - + fvm::div(phi, Theta_, "div(phi,Theta)") - == - fvm::SuSp(-((PsCoeff*I) && dU), Theta_) - + (tau && dU) - + fvm::laplacian(kappa_, Theta_, "laplacian(kappa,Theta)") - + fvm::Sp(-gammaCoeff, Theta_) - + fvm::Sp(-J1, Theta_) - + fvm::Sp(J2/(Theta_ + Tsmall), Theta_) - ); - - ThetaEqn.relax(); - ThetaEqn.solve(); - } - else - { - // equilibrium => dissipation == production - // Eq. 4.14, p.82 - volScalarField K1(2.0*(1.0 + e_)*rho1_*gs0_); - volScalarField K3 - ( - 0.5*da_*rho1_* - ( - (sqrtPi/(3.0*(3.0-e_))) - *(1.0 + 0.4*(1.0 + e_)*(3.0*e_ - 1.0)*alpha1_*gs0_) - +1.6*alpha1_*gs0_*(1.0 + e_)/sqrtPi - ) - ); - - volScalarField K2 - ( - 4.0*da_*rho1_*(1.0 + e_)*alpha1_*gs0_/(3.0*sqrtPi) - 2.0*K3/3.0 - ); - - volScalarField K4(12.0*(1.0 - sqr(e_))*rho1_*gs0_/(da_*sqrtPi)); - - volScalarField trD(tr(D)); - volScalarField tr2D(sqr(trD)); - volScalarField trD2(tr(D & D)); - - volScalarField t1(K1*alpha1_ + rho1_); - volScalarField l1(-t1*trD); - volScalarField l2(sqr(t1)*tr2D); - volScalarField l3 - ( - 4.0 - *K4 - *max(alpha1_, scalar(1e-6)) - *(2.0*K3*trD2 + K2*tr2D) - ); - - Theta_ = sqr((l1 + sqrt(l2 + l3))/(2.0*(alpha1_ + 1.0e-4)*K4)); - } - - Theta_.max(1.0e-15); - Theta_.min(1.0e+3); - - volScalarField pf - ( - frictionalStressModel_->frictionalPressure - ( - alpha1_, - alphaMinFriction_, - alphaMax_, - Fr_, - eta_, - p_ - ) - ); - - PsCoeff += pf/(Theta_+Tsmall); - - PsCoeff.min(1.0e+10); - PsCoeff.max(-1.0e+10); - - // update particle pressure - pa_ = PsCoeff*Theta_; - - // frictional shear stress, Eq. 3.30, p. 52 - volScalarField muf - ( - frictionalStressModel_->muf - ( - alpha1_, - alphaMax_, - pf, - D, - phi_ - ) - ); - - // add frictional stress - mu1_ += muf; - mu1_.min(1.0e+2); - mu1_.max(0.0); - - Info<< "kinTheory: max(Theta) = " << max(Theta_).value() << endl; - - volScalarField ktn(mu1_/rho1_); - - Info<< "kinTheory: min(nu1) = " << min(ktn).value() - << ", max(nu1) = " << max(ktn).value() << endl; - - Info<< "kinTheory: min(pa) = " << min(pa_).value() - << ", max(pa) = " << max(pa_).value() << endl; -} - - -// ************************************************************************* // diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H deleted file mode 100644 index a5861ae12967f45a048475b792b7e9dd5a8fcdfb..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H +++ /dev/null @@ -1,196 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more 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 - -SourceFiles - kineticTheoryModel.C - -\*---------------------------------------------------------------------------*/ - -#ifndef kineticTheoryModel_H -#define kineticTheoryModel_H - -#include "dragModel.H" -#include "phaseModel.H" -#include "autoPtr.H" -#include "viscosityModel.H" -#include "conductivityModel.H" -#include "radialModel.H" -#include "granularPressureModel.H" -#include "frictionalStressModel.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/*---------------------------------------------------------------------------*\ - Class kineticTheoryModel Declaration -\*---------------------------------------------------------------------------*/ - -class kineticTheoryModel -{ - // Private data - - const phaseModel& phase1_; - const volVectorField& U1_; - const volVectorField& U2_; - const volScalarField& alpha1_; - const surfaceScalarField& phi1_; - - const dragModel& draga_; - - const volScalarField& rho1_; - - //- dictionary holding the modeling info - IOdictionary kineticTheoryProperties_; - - //- use kinetic theory or not. - Switch kineticTheory_; - - //- use generation == dissipation - Switch equilibrium_; - - autoPtr<kineticTheoryModels::viscosityModel> viscosityModel_; - - autoPtr<kineticTheoryModels::conductivityModel> conductivityModel_; - - autoPtr<kineticTheoryModels::radialModel> radialModel_; - - autoPtr<kineticTheoryModels::granularPressureModel> - granularPressureModel_; - - autoPtr<kineticTheoryModels::frictionalStressModel> - frictionalStressModel_; - - //- coefficient of restitution - const dimensionedScalar e_; - - //- maximum packing - const dimensionedScalar alphaMax_; - - //- min value for which the frictional stresses are zero - const dimensionedScalar alphaMinFriction_; - - //- material constant for frictional normal stress - const dimensionedScalar Fr_; - - //- material constant for frictional normal stress - const dimensionedScalar eta_; - - //- material constant for frictional normal stress - const dimensionedScalar p_; - - //- angle of internal friction - const dimensionedScalar phi_; - - //- The granular energy/temperature - volScalarField Theta_; - - //- The granular viscosity - volScalarField mu1_; - - //- The granular bulk viscosity - volScalarField lambda_; - - //- The granular pressure - volScalarField pa_; - - //- The granular temperature conductivity - volScalarField kappa_; - - //- The radial distribution function - volScalarField gs0_; - - - // Private Member Functions - - //- Disallow default bitwise copy construct - kineticTheoryModel(const kineticTheoryModel&); - - //- Disallow default bitwise assignment - void operator=(const kineticTheoryModel&); - - -public: - - // Constructors - - //- Construct from components - kineticTheoryModel - ( - const phaseModel& phase1, - const volVectorField& U2, - const volScalarField& alpha1, - const dragModel& draga - ); - - - //- Destructor - virtual ~kineticTheoryModel(); - - - // Member Functions - - void solve(const volTensorField& gradU1t); - - bool on() const - { - return kineticTheory_; - } - - const volScalarField& mu1() const - { - return mu1_; - } - - const volScalarField& pa() const - { - return pa_; - } - - const volScalarField& lambda() const - { - return lambda_; - } - - const volScalarField& kappa() const - { - return kappa_; - } -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/pEqn.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/pEqn.H index 756a231fc2f589ad5bb35bc021d44737260d38b5..e9211def7f4054b279e3cf16f5c4f1bd938f0dc3 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/pEqn.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/pEqn.H @@ -3,15 +3,23 @@ surfaceScalarField alpha2f(scalar(1) - alpha1f); rAU1 = 1.0/U1Eqn.A(); - volScalarField rAU2(1.0/U2Eqn.A()); + rAU2 = 1.0/U2Eqn.A(); surfaceScalarField rAlphaAU1f(fvc::interpolate(alpha1*rAU1)); surfaceScalarField rAlphaAU2f(fvc::interpolate(alpha2*rAU2)); - volVectorField HbyA1("HbyA" + phase1Name, U1); + volVectorField HbyA1 + ( + IOobject::groupName("HbyA", phase1.name()), + U1 + ); HbyA1 = rAU1*U1Eqn.H(); - volVectorField HbyA2("HbyA" + phase2Name, U2); + volVectorField HbyA2 + ( + IOobject::groupName("HbyA", phase2.name()), + U2 + ); HbyA2 = rAU2*U2Eqn.H(); mrfZones.absoluteFlux(phi1.oldTime()); @@ -19,30 +27,32 @@ mrfZones.absoluteFlux(phi2.oldTime()); mrfZones.absoluteFlux(phi2); - surfaceScalarField ppDrag("ppDrag", 0.0*phi1); - - if (g0.value() > 0.0) - { - ppDrag -= ppMagf*fvc::snGrad(alpha1)*mesh.magSf(); - } + // Phase-1 pressure flux (e.g. due to particle-particle pressure) + surfaceScalarField phiP1 + ( + "phiP1", + fvc::interpolate((1.0/rho1)*rAU1*turbulence1().pPrime()) + *fvc::snGrad(alpha1)*mesh.magSf() + ); - if (kineticTheory.on()) - { - ppDrag -= - fvc::interpolate(1.0/rho1)*rAlphaAU1f - *fvc::snGrad(kineticTheory.pa())*mesh.magSf(); - } + // Phase-2 pressure flux (e.g. due to particle-particle pressure) + surfaceScalarField phiP2 + ( + "phiP2", + fvc::interpolate((1.0/rho2)*rAU2*turbulence2().pPrime()) + *fvc::snGrad(alpha2)*mesh.magSf() + ); surfaceScalarField phiHbyA1 ( - "phiHbyA" + phase1Name, + IOobject::groupName("phiHbyA", phase1.name()), (fvc::interpolate(HbyA1) & mesh.Sf()) + fvc::ddtPhiCorr(rAU1, alpha1, U1, phi1) ); surfaceScalarField phiHbyA2 ( - "phiHbyA" + phase2Name, + IOobject::groupName("phiHbyA", phase2.name()), (fvc::interpolate(HbyA2) & mesh.Sf()) + fvc::ddtPhiCorr(rAU2, alpha2, U2, phi2) ); @@ -53,7 +63,7 @@ phiHbyA1 += ( fvc::interpolate((1.0/rho1)*rAU1*dragCoeff)*phi2 - + ppDrag + - phiP1 + rAlphaAU1f*(g & mesh.Sf()) ); mrfZones.relativeFlux(phiHbyA1); @@ -61,6 +71,7 @@ phiHbyA2 += ( fvc::interpolate((1.0/rho2)*rAU2*dragCoeff)*phi1 + - phiP2 + rAlphaAU2f*(g & mesh.Sf()) ); mrfZones.relativeFlux(phiHbyA2); @@ -92,12 +103,12 @@ { surfaceScalarField phid1 ( - "phid" + phase1Name, + IOobject::groupName("phid", phase1.name()), fvc::interpolate(psi1)*phi1 ); surfaceScalarField phid2 ( - "phid" + phase2Name, + IOobject::groupName("phid", phase2.name()), fvc::interpolate(psi2)*phi2 ); @@ -173,29 +184,30 @@ mSfGradp = pEqnIncomp.flux()/Dp; U1 = HbyA1 - + fvc::reconstruct - ( - ppDrag - + rAlphaAU1f - *( - (g & mesh.Sf()) - + mSfGradp/fvc::interpolate(rho1) - ) - ); + + fvc::reconstruct + ( + rAlphaAU1f + *( + (g & mesh.Sf()) + + mSfGradp/fvc::interpolate(rho1) + ) + - phiP1 + ); U1.correctBoundaryConditions(); U2 = HbyA2 - + fvc::reconstruct - ( - rAlphaAU2f - *( + + fvc::reconstruct + ( + rAlphaAU2f + *( (g & mesh.Sf()) + mSfGradp/fvc::interpolate(rho2) ) - ); + - phiP2 + ); U2.correctBoundaryConditions(); - U = alpha1*U1 + alpha2*U2; + U = fluid.U(); } } diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/packingLimiter.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/packingLimiter.H deleted file mode 100644 index 249f1035a19fffe95efe6b378c96bfb275858a2d..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/packingLimiter.H +++ /dev/null @@ -1,36 +0,0 @@ - if (packingLimiter) - { - // Calculating exceeding volume fractions - volScalarField alpha1Ex(max(alpha1 - alphaMax, scalar(0))); - - // Finding neighbouring cells of the whole domain - labelListList neighbour = mesh.cellCells(); - scalarField cellVolumes(mesh.cellVolumes()); - - forAll (alpha1Ex, celli) - { - // Finding the labels of the neighbouring cells - labelList neighbourCell = neighbour[celli]; - - // Initializing neighbouring cells contribution - scalar neighboursEx = 0.0; - - forAll (neighbourCell, cellj) - { - labelList neighboursNeighbour = neighbour[neighbourCell[cellj]]; - scalar neighboursNeighbourCellVolumes = 0.0; - - forAll (neighboursNeighbour, cellk) - { - neighboursNeighbourCellVolumes += - cellVolumes[neighboursNeighbour[cellk]]; - } - - neighboursEx += - alpha1Ex[neighbourCell[cellj]]*cellVolumes[celli] - /neighboursNeighbourCellVolumes; - } - - alpha1[celli] += neighboursEx - alpha1Ex[celli]; - } - } diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/Make/files b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..96f9c63e4a872a15dc04d48ed0c5be265b410888 --- /dev/null +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/Make/files @@ -0,0 +1,35 @@ +phaseIncompressibleTurbulenceModels.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 + +LIB = $(FOAM_LIBBIN)/libphaseIncompressibleTurbulenceModels diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/Make/options b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..8608cd8610cde43bf90a3aca9da2068137d553f0 --- /dev/null +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/Make/options @@ -0,0 +1,10 @@ +EXE_INC = \ + -I$(LIB_SRC)/foam/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/transportModels/incompressible/transportModel \ + -I$(LIB_SRC)/TurbulenceModels/turbulenceModel/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/phaseIncompressible/lnInclude \ + -I../twoPhaseSystem/lnInclude \ + -I../interfacialModels/lnInclude diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C similarity index 98% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C index ced65bf823635d5c73f36a3ea44dc9ba35ef8cfc..8f9289293eb9aefc4061f56c54f0fdc7c233559f 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.C @@ -80,7 +80,7 @@ Foam::kineticTheoryModels::conductivityModels::Gidaspow::kappa { const scalar sqrtPi = sqrt(constant::mathematical::pi); - return rho1*da*sqrt(Theta)* + return 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) diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Gidaspow/GidaspowConductivity.H diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C similarity index 90% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C index b103a1afe22a86ad13ce37f9b0dd880d97f0c06c..2d2e1f65512dcce562369d1abffcbe4f3f41a389 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C @@ -56,8 +56,8 @@ Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::HrenyaSinclair ) : conductivityModel(dict), - coeffsDict_(dict.subDict(typeName + "Coeffs")), - L_(coeffsDict_.lookup("L")) + coeffDict_(dict.subDict(typeName + "Coeffs")), + L_("L", dimensionSet(0, 1, 0, 0, 0), coeffDict_.lookup("L")) {} @@ -88,7 +88,7 @@ Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::kappa scalar(1) + da/(6.0*sqrt(2.0)*(alpha1 + scalar(1.0e-5)))/L_ ); - return rho1*da*sqrt(Theta)* + return da*sqrt(Theta)* ( 2.0*sqr(alpha1)*g0*(1.0 + e)/sqrtPi + (9.0/8.0)*sqrtPi*0.25*sqr(1.0 + e)*(2.0*e - 1.0)*sqr(alpha1) @@ -101,4 +101,14 @@ Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::kappa } +bool Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::read() +{ + coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + + L_.readIfPresent(coeffDict_); + + return true; +} + + // ************************************************************************* // diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H similarity index 97% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H index e2ab8b8cca4a3fc6b417c63cf4f6bfba49a00953..0280a2359655a0d953e5d4d267ef86fb3c7429d3 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.H @@ -53,12 +53,12 @@ class HrenyaSinclair : public conductivityModel { - - dictionary coeffsDict_; + dictionary coeffDict_; //- characteristic length of geometry dimensionedScalar L_; + public: //- Runtime type information @@ -86,6 +86,8 @@ public: const volScalarField& da, const dimensionedScalar& e ) const; + + virtual bool read(); }; diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C similarity index 98% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C index a50c6ceec4107c8e8ba735d6833ffbefeeabef24..d7dac43706749b971d5d9ef25a3aa99889c60624 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.C @@ -80,7 +80,7 @@ Foam::kineticTheoryModels::conductivityModels::Syamlal::kappa { const scalar sqrtPi = sqrt(constant::mathematical::pi); - return rho1*da*sqrt(Theta)* + return 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) diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/Syamlal/SyamlalConductivity.H diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.C diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H similarity index 97% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H index 7981a2b141823699b832815c3577805f54a6d07c..f4a8a2566e6858259fab03d4fba8f7d8127a58f0 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/conductivityModel.H @@ -113,6 +113,11 @@ public: const volScalarField& da, const dimensionedScalar& e ) const = 0; + + virtual bool read() + { + return true; + } }; diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/conductivityModel/newConductivityModel.C diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C similarity index 68% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C index eb7d0292949bfcd3bc6ee1013f6ca9ef83719c12..b05277dbb191d3aa9b627842bc501aea0df7ce85 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,6 +25,7 @@ License #include "JohnsonJacksonFrictionalStress.H" #include "addToRunTimeSelectionTable.H" +#include "mathematicalConstants.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -55,8 +56,15 @@ JohnsonJackson const dictionary& dict ) : - frictionalStressModel(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")) +{ + phi_ *= constant::mathematical::pi/180.0; +} // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // @@ -74,16 +82,13 @@ frictionalPressure ( const volScalarField& alpha1, const dimensionedScalar& alphaMinFriction, - const dimensionedScalar& alphaMax, - const dimensionedScalar& Fr, - const dimensionedScalar& eta, - const dimensionedScalar& p + const dimensionedScalar& alphaMax ) const { return - Fr*pow(max(alpha1 - alphaMinFriction, scalar(0)), eta) - /pow(max(alphaMax - alpha1, scalar(5.0e-2)), p); + Fr_*pow(max(alpha1 - alphaMinFriction, scalar(0)), eta_) + /pow(max(alphaMax - alpha1, scalar(5.0e-2)), p_); } @@ -93,32 +98,41 @@ frictionalPressurePrime ( const volScalarField& alpha1, const dimensionedScalar& alphaMinFriction, - const dimensionedScalar& alphaMax, - const dimensionedScalar& Fr, - const dimensionedScalar& eta, - const dimensionedScalar& p + const dimensionedScalar& alphaMax ) const { - return Fr* + return Fr_* ( - eta*pow(max(alpha1 - alphaMinFriction, scalar(0)), eta - 1.0) + eta_*pow(max(alpha1 - alphaMinFriction, scalar(0)), eta_ - 1.0) *(alphaMax-alpha1) - + p*pow(max(alpha1 - alphaMinFriction, scalar(0)), eta) - )/pow(max(alphaMax - alpha1, scalar(5.0e-2)), p + 1.0); + + p_*pow(max(alpha1 - alphaMinFriction, scalar(0)), eta_) + )/pow(max(alphaMax - alpha1, scalar(5.0e-2)), p_ + 1.0); } Foam::tmp<Foam::volScalarField> -Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::muf +Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::nu ( const volScalarField& alpha1, const dimensionedScalar& alphaMax, const volScalarField& pf, - const volSymmTensorField& D, - const dimensionedScalar& phi + const volSymmTensorField& D ) const { - return dimensionedScalar("0.5", dimTime, 0.5)*pf*sin(phi); + return dimensionedScalar("0.5", dimTime, 0.5)*pf*sin(phi_); +} + + +bool Foam::kineticTheoryModels::frictionalStressModels::JohnsonJackson::read() +{ + coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + + Fr_.readIfPresent(coeffDict_); + eta_.readIfPresent(coeffDict_); + p_.readIfPresent(coeffDict_); + phi_.readIfPresent(coeffDict_); + + return true; } diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H similarity index 81% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H index 985338b741b953f8c846cf7f9b92a29e3689fe5a..2b59c0a043f0266a8483481b9b72b739a8a4a587 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/JohnsonJackson/JohnsonJacksonFrictionalStress.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,6 +53,22 @@ 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_; + public: @@ -76,30 +92,25 @@ public: ( const volScalarField& alpha1, const dimensionedScalar& alphaMinFriction, - const dimensionedScalar& alphaMax, - const dimensionedScalar& Fr, - const dimensionedScalar& eta, - const dimensionedScalar& p + const dimensionedScalar& alphaMax ) const; virtual tmp<volScalarField> frictionalPressurePrime ( const volScalarField& alpha1, const dimensionedScalar& alphaMinFriction, - const dimensionedScalar& alphaMax, - const dimensionedScalar& Fr, - const dimensionedScalar& eta, - const dimensionedScalar& p + const dimensionedScalar& alphaMax ) const; - virtual tmp<volScalarField> muf + virtual tmp<volScalarField> nu ( const volScalarField& alpha1, const dimensionedScalar& alphaMax, const volScalarField& pf, - const volSymmTensorField& D, - const dimensionedScalar& phi + const volSymmTensorField& D ) const; + + virtual bool read(); }; diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C similarity index 76% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C index ec6f55ab65d74039b183f233550c9ef920f8aaa7..537a76fecd785083b965f8aa7854cea58258edd5 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -54,7 +54,9 @@ Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::Schaeffer const dictionary& dict ) : - frictionalStressModel(dict) + frictionalStressModel(dict), + coeffDict_(dict.subDict(typeName + "Coeffs")), + phi_("phi", dimless, coeffDict_.lookup("phi")) {} @@ -72,10 +74,7 @@ frictionalPressure ( const volScalarField& alpha1, const dimensionedScalar& alphaMinFriction, - const dimensionedScalar& alphaMax, - const dimensionedScalar& Fr, - const dimensionedScalar& eta, - const dimensionedScalar& p + const dimensionedScalar& alphaMax ) const { return @@ -90,10 +89,7 @@ frictionalPressurePrime ( const volScalarField& alpha1, const dimensionedScalar& alphaMinFriction, - const dimensionedScalar& alphaMax, - const dimensionedScalar& Fr, - const dimensionedScalar& eta, - const dimensionedScalar& p + const dimensionedScalar& alphaMax ) const { return @@ -103,42 +99,44 @@ frictionalPressurePrime Foam::tmp<Foam::volScalarField> -Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::muf +Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::nu ( const volScalarField& alpha1, const dimensionedScalar& alphaMax, const volScalarField& pf, - const volSymmTensorField& D, - const dimensionedScalar& phi + const volSymmTensorField& D ) const { const scalar I2Dsmall = 1.0e-15; - // Creating muf assuming it should be 0 on the boundary which may not be + // Creating nu assuming it should be 0 on the boundary which may not be // true - tmp<volScalarField> tmuf + tmp<volScalarField> tnu ( new volScalarField ( IOobject ( - "muf", + "Schaeffer:nu", alpha1.mesh().time().timeName(), - alpha1.mesh() + alpha1.mesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false ), alpha1.mesh(), - dimensionedScalar("muf", dimensionSet(1, -1, -1, 0, 0), 0.0) + dimensionedScalar("nu", dimensionSet(0, 2, -1, 0, 0), 0.0) ) ); - volScalarField& muff = tmuf(); + volScalarField& nuf = tnu(); forAll (D, celli) { if (alpha1[celli] > alphaMax.value() - 5e-2) { - muff[celli] = - 0.5*pf[celli]*sin(phi.value()) + 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()) @@ -149,9 +147,20 @@ Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::muf } } - muff.correctBoundaryConditions(); + // Correct coupled BCs + nuf.correctBoundaryConditions(); + + return tnu; +} + + +bool Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::read() +{ + coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + + phi_.readIfPresent(coeffDict_); - return tmuf; + return true; } diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H similarity index 84% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H index d99da3a32d1ab44772710f9d1f0da4923ab4e47f..1de4d5042ff6c779966b47207580b7283dd06976 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,6 +53,13 @@ class Schaeffer : public frictionalStressModel { + // Private data + + dictionary coeffDict_; + + //- Angle of internal friction + dimensionedScalar phi_; + public: @@ -76,30 +83,25 @@ public: ( const volScalarField& alpha1, const dimensionedScalar& alphaMinFriction, - const dimensionedScalar& alphaMax, - const dimensionedScalar& Fr, - const dimensionedScalar& eta, - const dimensionedScalar& p + const dimensionedScalar& alphaMax ) const; virtual tmp<volScalarField> frictionalPressurePrime ( const volScalarField& alpha1, const dimensionedScalar& alphaMinFriction, - const dimensionedScalar& alphaMax, - const dimensionedScalar& Fr, - const dimensionedScalar& n, - const dimensionedScalar& p + const dimensionedScalar& alphaMax ) const; - virtual tmp<volScalarField> muf + virtual tmp<volScalarField> nu ( const volScalarField& alpha1, const dimensionedScalar& alphaMax, const volScalarField& pf, - const volSymmTensorField& D, - const dimensionedScalar& phi + const volSymmTensorField& D ) const; + + virtual bool read(); }; diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C similarity index 96% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C index 3b59e3615f86050567ecea083641bcd4f5f30541..02e1dc702fbb0d7847973064b45e20461952410f 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H similarity index 87% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H index 913b2ad105caab94c7ddcbe0d05ce1b6dc131154..0da14115cf84c4889a1ef2197c8155a16109ce63 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/frictionalStressModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -63,6 +63,7 @@ protected: // Protected data + //- Reference to higher-level dictionary for re-read const dictionary& dict_; @@ -108,30 +109,25 @@ public: ( const volScalarField& alpha1, const dimensionedScalar& alphaMinFriction, - const dimensionedScalar& alphaMax, - const dimensionedScalar& Fr, - const dimensionedScalar& eta, - const dimensionedScalar& p + const dimensionedScalar& alphaMax ) const = 0; virtual tmp<volScalarField> frictionalPressurePrime ( const volScalarField& alpha1f, const dimensionedScalar& alphaMinFriction, - const dimensionedScalar& alphaMax, - const dimensionedScalar& Fr, - const dimensionedScalar& eta, - const dimensionedScalar& p + const dimensionedScalar& alphaMax ) const = 0; - virtual tmp<volScalarField> muf + virtual tmp<volScalarField> nu ( const volScalarField& alpha1, const dimensionedScalar& alphaMax, const volScalarField& pf, - const volSymmTensorField& D, - const dimensionedScalar& phi + const volSymmTensorField& D ) const = 0; + + virtual bool read() = 0; }; diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/frictionalStressModel/frictionalStressModel/newFrictionalStressModel.C diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.C diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/Lun/LunPressure.H diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.C diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/SyamlalRogersOBrien/SyamlalRogersOBrienPressure.H diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.C diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H similarity index 98% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H index df3ef7e8c155f99fedd67d1495f552540db64514..d30373ac2cc35efa91a074b4739f1f8d56c7ba66 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/granularPressureModel.H @@ -122,6 +122,11 @@ public: const volScalarField& rho1, const dimensionedScalar& e ) const = 0; + + virtual bool read() + { + return true; + } }; diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/granularPressureModel/granularPressureModel/newGranularPressureModel.C diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C new file mode 100644 index 0000000000000000000000000000000000000000..c143dba2d1f5fd3ab1cb43abf908bb83d4836f26 --- /dev/null +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.C @@ -0,0 +1,545 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more 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 "surfaceInterpolate.H" +#include "mathematicalConstants.H" +#include "twoPhaseSystem.H" +#include "fvcDiv.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::kineticTheoryModel::kineticTheoryModel +( + const volScalarField& alpha, + const geometricOneField& rho, + const volVectorField& U, + const surfaceScalarField& alphaPhi, + const surfaceScalarField& phi, + const transportModel& phase, + const word& propertiesName, + const word& type +) +: + RASModels::eddyViscosity<PhaseIncompressibleTurbulenceModel<phaseModel> > + ( + type, + alpha, + rho, + U, + alphaPhi, + phi, + phase, + propertiesName + ), + + phase_(phase), + + draga_(phase.fluid().drag1()), + + viscosityModel_ + ( + kineticTheoryModels::viscosityModel::New + ( + this->coeffDict_ + ) + ), + conductivityModel_ + ( + kineticTheoryModels::conductivityModel::New + ( + this->coeffDict_ + ) + ), + radialModel_ + ( + kineticTheoryModels::radialModel::New + ( + this->coeffDict_ + ) + ), + granularPressureModel_ + ( + kineticTheoryModels::granularPressureModel::New + ( + this->coeffDict_ + ) + ), + frictionalStressModel_ + ( + kineticTheoryModels::frictionalStressModel::New + ( + this->coeffDict_ + ) + ), + + equilibrium_(this->coeffDict_.lookup("equilibrium")), + e_("e", dimless, this->coeffDict_.lookup("e")), + alphaMax_("alphaMax", dimless, this->coeffDict_.lookup("alphaMax")), + alphaMinFriction_ + ( + "alphaMinFriction", + dimless, + this->coeffDict_.lookup("alphaMinFriction") + ), + + 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) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::kineticTheoryModel::~kineticTheoryModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::kineticTheoryModel::correct() +{ + // Local references + volScalarField alpha(max(this->alpha_, 0.0)); + const volScalarField& rho = phase_.rho(); + const surfaceScalarField& alphaPhi = this->alphaPhi_; + const volVectorField& U = this->U_; + const volVectorField& Uc_ = 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(this->U_)); + const volTensorField& gradU(tgradU()); + volSymmTensorField D(symm(gradU)); + + // Calculating the radial distribution function + volScalarField 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(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(2.0*nut_*D + (lambda_ - (2.0/3.0)*nut_)*tr(D)*I); + + // Dissipation (Eq. 3.24, p.50) + volScalarField gammaCoeff + ( + 12.0*(1.0 - sqr(e_)) + *max(sqr(alpha), phase_.fluid().residualPhaseFraction()) + *gs0*(1.0/da)*ThetaSqrt/sqrtPi + ); + + // NB, drag = K*alpha*alpha2, + // (the alpha and alpha2 has been extracted from the drag function for + // numerical reasons) + volScalarField magUr(mag(U - Uc_)); + + volScalarField alpha2Prim + ( + max + ( + alpha*(1.0 - alpha), + phase_.fluid().residualPhaseFraction() + )*draga_.K(magUr + phase_.fluid().residualSlip())/rho + ); + + // Eq. 3.25, p. 50 Js = J1 - J2 + volScalarField J1(3.0*alpha2Prim); + volScalarField J2 + ( + 0.25*sqr(alpha2Prim)*da*sqr(magUr) + /( + max(alpha, phase_.fluid().residualPhaseFraction()) + *sqrtPi*(ThetaSqrt + ThetaSmallSqrt) + ) + ); + + // particle pressure - coefficient in front of Theta (Eq. 3.22, p. 45) + volScalarField PsCoeff + ( + granularPressureModel_->granularPressureCoeff + ( + alpha, + gs0, + rho, + e_ + )/rho + ); + + // 'thermal' conductivity (Table 3.3, p. 49) + volScalarField 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, Theta_) + + fvm::div(alphaPhi, Theta_) + - fvc::Sp(fvc::ddt(alpha) + fvc::div(alphaPhi), 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(2.0*(1.0 + e_)*rho*gs0); + volScalarField 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 + ( + 4.0*da*rho*(1.0 + e_)*alpha*gs0/(3.0*sqrtPi) - 2.0*K3/3.0 + ); + + volScalarField K4(12.0*(1.0 - sqr(e_))*rho*gs0/(da*sqrtPi)); + + volScalarField trD + ( + alpha/(alpha + phase_.fluid().residualPhaseFraction()) + *fvc::div(this->phi_) + ); + volScalarField tr2D(sqr(trD)); + volScalarField trD2(tr(D & D)); + + volScalarField t1(K1*alpha + rho); + volScalarField l1(-t1*trD); + volScalarField l2(sqr(t1)*tr2D); + volScalarField l3 + ( + 4.0 + *K4 + *alpha + *(2.0*K3*trD2 + K2*tr2D) + ); + + Theta_ = sqr + ( + (l1 + sqrt(l2 + l3)) + /(2.0*max(alpha, phase_.fluid().residualPhaseFraction())*K4) + ); + } + + Theta_.max(0); + Theta_.min(100); + + { + // particle viscosity (Table 3.2, p.47) + nut_ = viscosityModel_->nu(alpha, Theta_, gs0, rho, da, e_); + + volScalarField ThetaSqrt(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; + } +} + + +/* +Foam::tmp<Foam::volScalarField> Foam::kineticTheoryModel::pp() const +{ + + // Particle pressure coefficient + // Coefficient in front of Theta (Eq. 3.22, p. 45) + volScalarField PsCoeff + ( + granularPressureModel_->granularPressureCoeff + ( + alpha, + gs0, + rho, + e_ + ) + ); + + // Frictional pressure + volScalarField pf + ( + frictionalStressModel_->frictionalPressure + ( + alpha, + alphaMinFriction_, + alphaMax_ + ) + ); + + // Return total particle pressure + return PsCoeff*Theta_ + pf; +} +*/ + + +Foam::tmp<Foam::volScalarField> Foam::kineticTheoryModel::pPrime() const +{ + // Local references + const volScalarField& alpha = this->alpha_; + const volScalarField& rho = phase_.rho(); + + return + ( + Theta_ + *granularPressureModel_->granularPressureCoeffPrime + ( + alpha, + radialModel_->g0(alpha, alphaMinFriction_, alphaMax_), + radialModel_->g0prime(alpha, alphaMinFriction_, alphaMax_), + rho, + e_ + ) + + frictionalStressModel_->frictionalPressurePrime + ( + alpha, + alphaMinFriction_, + alphaMax_ + ) + ); +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::kineticTheoryModel::pPrimef() const +{ + // Local references + const volScalarField& alpha = this->alpha_; + const volScalarField& rho = phase_.rho(); + + return fvc::interpolate + ( + Theta_ + *granularPressureModel_->granularPressureCoeffPrime + ( + alpha, + radialModel_->g0(alpha, alphaMinFriction_, alphaMax_), + radialModel_->g0prime(alpha, alphaMinFriction_, alphaMax_), + rho, + e_ + ) + + frictionalStressModel_->frictionalPressurePrime + ( + alpha, + alphaMinFriction_, + alphaMax_ + ) + ); +} + + +void Foam::kineticTheoryModel::correctNut() +{} + + +Foam::tmp<Foam::volScalarField> Foam::kineticTheoryModel::k() const +{ + notImplemented("kineticTheoryModel::k()"); + return nut_; +} + + +Foam::tmp<Foam::volScalarField> Foam::kineticTheoryModel::epsilon() const +{ + notImplemented("kineticTheoryModel::epsilon()"); + return nut_; +} + + +Foam::tmp<Foam::volSymmTensorField> Foam::kineticTheoryModel::R() const +{ + return tmp<volSymmTensorField> + ( + new volSymmTensorField + ( + IOobject + ( + IOobject::groupName("R", this->U_.group()), + this->runTime_.timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + - (this->nut_)*dev(twoSymm(fvc::grad(this->U_))) + - (lambda_*fvc::div(this->phi_))*symmTensor::I + ) + ); +} + + +Foam::tmp<Foam::volSymmTensorField> Foam::kineticTheoryModel::devRhoReff() const +{ + return tmp<volSymmTensorField> + ( + new volSymmTensorField + ( + IOobject + ( + IOobject::groupName("devRhoReff", this->U_.group()), + this->runTime_.timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + - (this->rho_*this->nut_) + *dev(twoSymm(fvc::grad(this->U_))) + - ((this->rho_*lambda_)*fvc::div(this->phi_))*symmTensor::I + ) + ); +} + + +Foam::tmp<Foam::fvVectorMatrix> Foam::kineticTheoryModel::divDevRhoReff +( + volVectorField& U +) const +{ + return + ( + - fvm::laplacian(this->rho_*this->nut_, U) + - fvc::div + ( + (this->rho_*this->nut_)*dev2(T(fvc::grad(U))) + + ((this->rho_*lambda_)*fvc::div(this->phi_))*symmTensor::I + ) + ); +} + + +bool Foam::kineticTheoryModel::read() +{ + if + ( + RASModels::eddyViscosity + < + PhaseIncompressibleTurbulenceModel<phaseModel> + >::read() + ) + { + this->coeffDict().lookup("equilibrium") >> equilibrium_; + e_.readIfPresent(this->coeffDict()); + alphaMax_.readIfPresent(this->coeffDict()); + alphaMinFriction_.readIfPresent(this->coeffDict()); + + viscosityModel_->read(); + conductivityModel_->read(); + radialModel_->read(); + granularPressureModel_->read(); + frictionalStressModel_->read(); + + return true; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H new file mode 100644 index 0000000000000000000000000000000000000000..e7146f8e62cedb7a49840a392419fd27b9e6c658 --- /dev/null +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/kineticTheoryModel/kineticTheoryModel.H @@ -0,0 +1,214 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more 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 + +SourceFiles + kineticTheoryModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef kineticTheoryModel_H +#define kineticTheoryModel_H + +#include "eddyViscosity.H" +#include "PhaseIncompressibleTurbulenceModel.H" +#include "dragModel.H" +#include "phaseModel.H" +#include "autoPtr.H" +#include "viscosityModel.H" +#include "conductivityModel.H" +#include "radialModel.H" +#include "granularPressureModel.H" +#include "frictionalStressModel.H" + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class kineticTheoryModel Declaration +\*---------------------------------------------------------------------------*/ + +class kineticTheoryModel +: + public RASModels::eddyViscosity + < + PhaseIncompressibleTurbulenceModel<phaseModel> + > +{ + // Private data + + // Input Fields + + const phaseModel& phase_; + + + //- Drag model + const dragModel& draga_; + + // 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_; + + + // Kinetic Theory Model Fields + + //- The granular energy/temperature + volScalarField Theta_; + + //- The granular bulk viscosity + volScalarField lambda_; + + + // Private Member Functions + + //- Disallow default bitwise copy construct + kineticTheoryModel(const kineticTheoryModel&); + + //- Disallow default bitwise assignment + void operator=(const kineticTheoryModel&); + + +protected: + + // Protected member functions + + virtual void correctNut(); + + +public: + + //- Runtime type information + TypeName("kineticTheory"); + + + // Constructors + + //- Construct from components + kineticTheoryModel + ( + const volScalarField& alpha, + const geometricOneField& rho, + const volVectorField& U, + const surfaceScalarField& alphaPhi, + const surfaceScalarField& phi, + const phaseModel& transport, + const word& propertiesName = turbulenceModel::propertiesName, + const word& type = typeName + ); + + + //- Destructor + virtual ~kineticTheoryModel(); + + + // Member Functions + + //- 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(); + + //- Re-read model coefficients if they have changed + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C similarity index 90% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C index cfe74982a8878a8dfd0ce25a2c8f64058b10b00b..bedc30350001bcf221dfade2df1a2fa3b35da5de 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -70,6 +70,7 @@ Foam::tmp<Foam::volScalarField> Foam::kineticTheoryModels::radialModels::CarnahanStarling::g0 ( const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, const dimensionedScalar& alphaMax ) const { @@ -77,7 +78,7 @@ Foam::kineticTheoryModels::radialModels::CarnahanStarling::g0 return 1.0/(1.0 - alpha) + 3.0*alpha/(2.0*sqr(1.0 - alpha)) - + sqr(alpha)/(2.0*pow(1.0 - alpha, 3)); + + sqr(alpha)/(2.0*pow3(1.0 - alpha)); } @@ -85,13 +86,14 @@ 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/pow(1.0 - alpha, 3.0) - + 1.5*sqr(alpha)/pow(1.0 - alpha, 4.0); + + 4.0*alpha/pow3(1.0 - alpha) + + 1.5*sqr(alpha)/pow4(1.0 - alpha); } diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H similarity index 93% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H index ee61b1809911d29051501b6c5367046eceafa449..77396863eadb5af260174dfb09d3cfeed83954fa 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/CarnahanStarling/CarnahanStarlingRadial.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -76,12 +76,14 @@ public: 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; }; diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C similarity index 91% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C index 9f029288dd86f5bb37716308ceeefa74afbaf0ac..e9a4cfb522c38ef746853bdb5166e8e511d265ca 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -70,6 +70,7 @@ Foam::tmp<Foam::volScalarField> Foam::kineticTheoryModels::radialModels::LunSavage::g0 ( const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, const dimensionedScalar& alphaMax ) const { @@ -82,10 +83,11 @@ 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, -1.0 - 2.5*alphaMax); + return 2.5*pow(1.0 - alpha/alphaMax, -2.5*alphaMax - 1); } diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H similarity index 93% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H index 81333790fdd41e31d348a867e5f6b5d9109981a3..53492c9c659f09e636e08148d6922666ca2d7d61 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/LunSavage/LunSavageRadial.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -75,12 +75,14 @@ public: 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; }; diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C similarity index 86% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C index 0109f756b5a95786128c23c68450d1743157ff86..da1d658f5d38d5472629a44cf9112df16ca92747 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -70,10 +70,11 @@ Foam::tmp<Foam::volScalarField> Foam::kineticTheoryModels::radialModels::SinclairJackson::g0 ( const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, const dimensionedScalar& alphaMax ) const { - return 1.0/(1.0 - pow(alpha/alphaMax, 1.0/3.0)); + return 1.0/(1.0 - cbrt(min(alpha, alphaMinFriction)/alphaMax)); } @@ -81,12 +82,16 @@ Foam::tmp<Foam::volScalarField> Foam::kineticTheoryModels::radialModels::SinclairJackson::g0prime ( const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, const dimensionedScalar& alphaMax ) const { - return - (1.0/3.0)*pow(max(alpha, scalar(1.0e-6))/alphaMax, -2.0/3.0) - /(alphaMax*sqr(1.0 - pow(alpha/alphaMax, 1.0/3.0))); + volScalarField aByaMax + ( + cbrt(min(max(alpha, 1e-3), alphaMinFriction)/alphaMax) + ); + + return (1.0/(3*alphaMax))/sqr(aByaMax - sqr(aByaMax)); } diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H similarity index 93% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H index 56931e9f01b04eced20644f9fd29407d148698de..bc8f44be792354d9d88825cdc2209f3a856cd462 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/SinclairJackson/SinclairJacksonRadial.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -75,12 +75,14 @@ public: 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; }; diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/radialModel/newRadialModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/radialModel/newRadialModel.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/newRadialModel.C diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/radialModel/radialModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C similarity index 95% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/radialModel/radialModel.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C index 7caf81d366f8241ca8df1c79e57a2d39ee8d9839..893117a8116116a8005f51d34101a484153deee4 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/radialModel/radialModel.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/radialModel/radialModel.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H similarity index 93% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/radialModel/radialModel.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H index e67a02c5c633f080c28b72ce03dd5873c7c984a7..fc0a583c44e59d832d94d91894740f7b17f8ac64 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/radialModel/radialModel/radialModel.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/radialModel/radialModel/radialModel.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -108,6 +108,7 @@ public: virtual tmp<volScalarField> g0 ( const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, const dimensionedScalar& alphaMax ) const = 0; @@ -115,8 +116,14 @@ public: virtual tmp<volScalarField> g0prime ( const volScalarField& alpha, + const dimensionedScalar& alphaMinFriction, const dimensionedScalar& alphaMax ) const = 0; + + virtual bool read() + { + return true; + } }; diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C similarity index 96% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C index e3bf99518c648c847728b0cdd6c083423644436f..22e57614362d7131cb2c4d16a52e2dcc3ef4f1e0 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.C @@ -62,7 +62,7 @@ Foam::kineticTheoryModels::viscosityModels::Gidaspow::~Gidaspow() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // Foam::tmp<Foam::volScalarField> -Foam::kineticTheoryModels::viscosityModels::Gidaspow::mu1 +Foam::kineticTheoryModels::viscosityModels::Gidaspow::nu ( const volScalarField& alpha1, const volScalarField& Theta, @@ -74,7 +74,7 @@ Foam::kineticTheoryModels::viscosityModels::Gidaspow::mu1 { const scalar sqrtPi = sqrt(constant::mathematical::pi); - return rho1*da*sqrt(Theta)* + 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) diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H similarity index 98% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H index 0e3631ac0bf5e5b84a47166d31e8a1145d9ddbd8..325f4f06c03f8a60ce4e2e187f0e04689d573480 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Gidaspow/GidaspowViscosity.H @@ -71,7 +71,7 @@ public: // Member functions - tmp<volScalarField> mu1 + tmp<volScalarField> nu ( const volScalarField& alpha1, const volScalarField& Theta, diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C similarity index 87% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C index 9f7fdd22ccb2e20143e98ee25a6bcd0af5aebb15..e1bcc67e92d07d9b667875b8620d3b4f4b4f7e46 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.C @@ -56,8 +56,8 @@ Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::HrenyaSinclair ) : viscosityModel(dict), - coeffsDict_(dict.subDict(typeName + "Coeffs")), - L_(coeffsDict_.lookup("L")) + coeffDict_(dict.subDict(typeName + "Coeffs")), + L_("L", dimensionSet(0, 1, 0, 0, 0), coeffDict_.lookup("L")) {} @@ -70,7 +70,7 @@ Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::~HrenyaSinclair() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // Foam::tmp<Foam::volScalarField> -Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::mu1 +Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::nu ( const volScalarField& alpha1, const volScalarField& Theta, @@ -87,7 +87,7 @@ Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::mu1 scalar(1) + da/(6.0*sqrt(2.0)*(alpha1 + scalar(1.0e-5)))/L_ ); - return rho1*da*sqrt(Theta)* + 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) @@ -98,4 +98,14 @@ Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::mu1 } +bool Foam::kineticTheoryModels::viscosityModels::HrenyaSinclair::read() +{ + coeffDict_ <<= dict_.subDict(typeName + "Coeffs"); + + L_.readIfPresent(coeffDict_); + + return true; +} + + // ************************************************************************* // diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H similarity index 95% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H index 80b0e863ae98347be1c6040d66cabb7ba279fbf5..90fe892f8681714089af5b66be8f2778c22edd44 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/HrenyaSinclair/HrenyaSinclairViscosity.H @@ -55,9 +55,9 @@ class HrenyaSinclair { // Private data - dictionary coeffsDict_; + dictionary coeffDict_; - //- characteristic length of geometry + //- Characteristic length of geometry dimensionedScalar L_; @@ -79,7 +79,7 @@ public: // Member functions - tmp<volScalarField> mu1 + tmp<volScalarField> nu ( const volScalarField& alpha1, const volScalarField& Theta, @@ -88,6 +88,8 @@ public: const volScalarField& da, const dimensionedScalar& e ) const; + + virtual bool read(); }; diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C similarity index 96% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C index fa7ba802d2f25a70f3ac59078a357a129e617e78..ed5df62c86d9e28a4b9eb8bb08b487749b792d8e 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.C @@ -62,7 +62,7 @@ Foam::kineticTheoryModels::viscosityModels::Syamlal::~Syamlal() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // Foam::tmp<Foam::volScalarField> -Foam::kineticTheoryModels::viscosityModels::Syamlal::mu1 +Foam::kineticTheoryModels::viscosityModels::Syamlal::nu ( const volScalarField& alpha1, const volScalarField& Theta, @@ -74,7 +74,7 @@ Foam::kineticTheoryModels::viscosityModels::Syamlal::mu1 { const scalar sqrtPi = sqrt(constant::mathematical::pi); - return rho1*da*sqrt(Theta)* + 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) diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H similarity index 98% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H index f82ef8af0666488c2bb6049c2b32047083d5b732..7d2583e5616a2f74ad4396bc35af27597a8b6023 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/Syamlal/SyamlalViscosity.H @@ -72,7 +72,7 @@ public: // Member functions - tmp<volScalarField> mu1 + tmp<volScalarField> nu ( const volScalarField& alpha1, const volScalarField& Theta, diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/none/noneViscosity.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C similarity index 97% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/none/noneViscosity.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C index 85f495cca5d137022866105a4d7975110b13e4cb..44c54a5168148a1400fa9205ed56792982866702 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/none/noneViscosity.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.C @@ -53,7 +53,7 @@ Foam::kineticTheoryModels::noneViscosity::~noneViscosity() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -Foam::tmp<Foam::volScalarField> Foam::kineticTheoryModels::noneViscosity::mu1 +Foam::tmp<Foam::volScalarField> Foam::kineticTheoryModels::noneViscosity::nu ( const volScalarField& alpha1, const volScalarField& Theta, @@ -66,7 +66,7 @@ Foam::tmp<Foam::volScalarField> Foam::kineticTheoryModels::noneViscosity::mu1 return dimensionedScalar ( "0", - dimensionSet(1, -1, -1, 0, 0, 0, 0), + dimensionSet(0, 2, -1, 0, 0, 0, 0), 0.0 )*alpha1; } diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/none/noneViscosity.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H similarity index 98% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/none/noneViscosity.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H index 641ebe30eb27d582391d82d5841faec6d08dabf7..25fe4ce7b8da8c1d0f0c632e6e9c3a5b3fc3be3b 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/none/noneViscosity.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/none/noneViscosity.H @@ -70,7 +70,7 @@ public: // Member functions - tmp<volScalarField> mu1 + tmp<volScalarField> nu ( const volScalarField& alpha1, const volScalarField& Theta, diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/newViscosityModel.C diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.C diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H similarity index 96% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H index 91007f05381029b00f87587b20178510d78a6d9f..bfd021a4b1f4ac60c009b5ab497fcfe3fd94e8d5 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/viscosityModel/viscosityModel/viscosityModel.H @@ -106,7 +106,7 @@ public: // Member Functions - virtual tmp<volScalarField> mu1 + virtual tmp<volScalarField> nu ( const volScalarField& alpha1, const volScalarField& Theta, @@ -115,6 +115,11 @@ public: const volScalarField& da, const dimensionedScalar& e ) const = 0; + + virtual bool read() + { + return true; + } }; diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/phaseIncompressibleTurbulenceModels.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/phaseIncompressibleTurbulenceModels.C new file mode 100644 index 0000000000000000000000000000000000000000..f47e3943a198d0fc48513ffe5bfb1a5da92bf02b --- /dev/null +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/phaseIncompressibleTurbulenceModels.C @@ -0,0 +1,172 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more 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 "PhaseIncompressibleTurbulenceModel.H" +#include "laminar.H" +#include "RASModel.H" +#include "kEpsilon.H" +#include "LaheyKEpsilon.H" +#include "continuousGasKEpsilon.H" +#include "kineticTheoryModel.H" +#include "phasePressureModel.H" +#include "phaseModel.H" +#include "addToRunTimeSelectionTable.H" + +namespace Foam +{ + typedef TurbulenceModel + < + volScalarField, + geometricOneField, + incompressibleTurbulenceModel, + phaseModel + > basePhaseIncompressibleTransportTurbulenceModel; + + defineTemplateRunTimeSelectionTable + ( + basePhaseIncompressibleTransportTurbulenceModel, + dictionary + ); + + typedef PhaseIncompressibleTurbulenceModel<phaseModel> + incompressibleTransportTurbulenceModel; + + typedef laminar<incompressibleTransportTurbulenceModel> + incompressibleLaminar; + + defineNamedTemplateTypeNameAndDebug(incompressibleLaminar, 0); + + addToRunTimeSelectionTable + ( + basePhaseIncompressibleTransportTurbulenceModel, + incompressibleLaminar, + dictionary + ); + + + typedef RASModel<incompressibleTransportTurbulenceModel> + incompressibleRASModel; + + defineNamedTemplateTypeNameAndDebug(incompressibleRASModel, 0); + + defineTemplateRunTimeSelectionTable(incompressibleRASModel, dictionary); + + addToRunTimeSelectionTable + ( + basePhaseIncompressibleTransportTurbulenceModel, + incompressibleRASModel, + dictionary + ); + + namespace RASModels + { + typedef kEpsilon<incompressibleTransportTurbulenceModel> + incompressiblekEpsilon; + + defineNamedTemplateTypeNameAndDebug(incompressiblekEpsilon, 0); + + addToRunTimeSelectionTable + ( + incompressibleRASModel, + incompressiblekEpsilon, + dictionary + ); + } + + namespace RASModels + { + typedef LaheyKEpsilon<incompressibleTransportTurbulenceModel> + incompressibleLaheyKEpsilon; + + defineNamedTemplateTypeNameAndDebug(incompressibleLaheyKEpsilon, 0); + + addToRunTimeSelectionTable + ( + incompressibleRASModel, + incompressibleLaheyKEpsilon, + dictionary + ); + } + + namespace RASModels + { + typedef continuousGasKEpsilon<incompressibleTransportTurbulenceModel> + incompressiblecontinuousGasKEpsilon; + + defineNamedTemplateTypeNameAndDebug + ( + incompressiblecontinuousGasKEpsilon, + 0 + ); + + addToRunTimeSelectionTable + ( + incompressibleRASModel, + incompressiblecontinuousGasKEpsilon, + dictionary + ); + } +} + + +namespace Foam +{ + typedef PhaseIncompressibleTurbulenceModel<phaseModel> + incompressibleTransportTurbulenceModel; + + typedef RASModel<incompressibleTransportTurbulenceModel> + incompressibleRASModel; + + defineTypeNameAndDebug(kineticTheoryModel, 0); + + addToRunTimeSelectionTable + ( + incompressibleRASModel, + kineticTheoryModel, + dictionary + ); +} + + +namespace Foam +{ + typedef PhaseIncompressibleTurbulenceModel<phaseModel> + incompressibleTransportTurbulenceModel; + + typedef RASModel<incompressibleTransportTurbulenceModel> + incompressibleRASModel; + + defineTypeNameAndDebug(phasePressureModel, 0); + + addToRunTimeSelectionTable + ( + incompressibleRASModel, + phasePressureModel, + dictionary + ); +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C new file mode 100644 index 0000000000000000000000000000000000000000..99cc91994c0003d493225f435b8ebabdd109d3a0 --- /dev/null +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/phasePressureModel/phasePressureModel.C @@ -0,0 +1,219 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more 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 "surfaceInterpolate.H" +#include "twoPhaseSystem.H" +#include "dimensionedType.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::phasePressureModel::phasePressureModel +( + const volScalarField& alpha, + const geometricOneField& rho, + const volVectorField& U, + const surfaceScalarField& alphaPhi, + const surfaceScalarField& phi, + const transportModel& phase, + const word& propertiesName, + const word& type +) +: + RASModels::eddyViscosity<PhaseIncompressibleTurbulenceModel<phaseModel> > + ( + type, + alpha, + rho, + U, + alphaPhi, + phi, + phase, + propertiesName + ), + + phase_(phase), + + alphaMax_(readScalar(this->coeffDict_.lookup("alphaMax"))), + preAlphaExp_(readScalar(this->coeffDict_.lookup("preAlphaExp"))), + expMax_(readScalar(this->coeffDict_.lookup("expMax"))), + g0_ + ( + "g0", + dimensionSet(1, -1, -2, 0, 0), + this->coeffDict_.lookup("g0") + ) +{ + this->nut_ == dimensionedScalar("zero", this->nut_.dimensions(), 0.0); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::phasePressureModel::~phasePressureModel() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::phasePressureModel::correct() +{} + + +void Foam::phasePressureModel::correctNut() +{} + + +Foam::tmp<Foam::volScalarField> Foam::phasePressureModel::pPrime() const +{ + return + g0_ + *min + ( + exp(preAlphaExp_*(this->alpha_ - alphaMax_)), + expMax_ + ); +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::phasePressureModel::pPrimef() const +{ + return + g0_ + *min + ( + exp(preAlphaExp_*(fvc::interpolate(this->alpha_) - alphaMax_)), + expMax_ + ); +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePressureModel::k() const +{ + notImplemented("phasePressureModel::k()"); + return nut_; +} + + +Foam::tmp<Foam::volScalarField> Foam::phasePressureModel::epsilon() const +{ + notImplemented("phasePressureModel::epsilon()"); + return nut_; +} + + +Foam::tmp<Foam::volSymmTensorField> Foam::phasePressureModel::R() const +{ + return tmp<volSymmTensorField> + ( + new volSymmTensorField + ( + IOobject + ( + IOobject::groupName("R", this->U_.group()), + this->runTime_.timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + this->mesh_, + dimensioned<symmTensor> + ( + "R", + dimensionSet(0, 2, -2, 0, 0), + symmTensor::zero + ) + ) + ); +} + + +Foam::tmp<Foam::volSymmTensorField> Foam::phasePressureModel::devRhoReff() const +{ + return tmp<volSymmTensorField> + ( + new volSymmTensorField + ( + IOobject + ( + IOobject::groupName("devRhoReff", this->U_.group()), + this->runTime_.timeName(), + this->mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + this->mesh_, + dimensioned<symmTensor> + ( + "R", + this->rho_.dimensions()*dimensionSet(0, 2, -2, 0, 0), + symmTensor::zero + ) + ) + ); +} + + +Foam::tmp<Foam::fvVectorMatrix> Foam::phasePressureModel::divDevRhoReff +( + volVectorField& U +) const +{ + return tmp<fvVectorMatrix> + ( + new fvVectorMatrix + ( + U, + this->rho_.dimensions()*dimensionSet(0, 4, -2, 0, 0) + ) + ); +} + + +bool Foam::phasePressureModel::read() +{ + if + ( + RASModels::eddyViscosity + < + PhaseIncompressibleTurbulenceModel<phaseModel> + >::read() + ) + { + this->coeffDict().lookup("alphaMax") >> alphaMax_; + this->coeffDict().lookup("preAlphaExp") >> preAlphaExp_; + this->coeffDict().lookup("expMax") >> expMax_; + g0_.readIfPresent(this->coeffDict()); + + return true; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H new file mode 100644 index 0000000000000000000000000000000000000000..1c4028f16a94e885da707699e02984c7522c9fc7 --- /dev/null +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/phasePressureModel/phasePressureModel.H @@ -0,0 +1,182 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more 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 + +SourceFiles + phasePressureModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef phasePressureModel_H +#define phasePressureModel_H + +#include "eddyViscosity.H" +#include "PhaseIncompressibleTurbulenceModel.H" +#include "dragModel.H" +#include "phaseModel.H" +#include "autoPtr.H" +#include "viscosityModel.H" +#include "conductivityModel.H" +#include "radialModel.H" +#include "granularPressureModel.H" +#include "frictionalStressModel.H" + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class phasePressureModel Declaration +\*---------------------------------------------------------------------------*/ + +class phasePressureModel +: + public RASModels::eddyViscosity + < + PhaseIncompressibleTurbulenceModel<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 + + //- Disallow default bitwise copy construct + phasePressureModel(const phasePressureModel&); + + //- Disallow default bitwise assignment + void operator=(const phasePressureModel&); + + +protected: + + // Protected member functions + + virtual void correctNut(); + + +public: + + //- Runtime type information + TypeName("phasePressure"); + + + // Constructors + + //- Construct from components + phasePressureModel + ( + const volScalarField& alpha, + const geometricOneField& rho, + const volVectorField& U, + const surfaceScalarField& alphaPhi, + const surfaceScalarField& phi, + const phaseModel& transport, + const word& propertiesName = turbulenceModel::propertiesName, + const word& type = typeName + ); + + + //- Destructor + virtual ~phasePressureModel(); + + + // Member Functions + + //- 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(); + + //- Re-read model coefficients if they have changed + virtual bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/readPPProperties.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/readPPProperties.H index 3acbf758d04105e7d3ec4f6aad60035c7398d082..4f32564a482f0ae76245dcb76b256aefb1ad0c3b 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/readPPProperties.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/readPPProperties.H @@ -29,8 +29,3 @@ ( ppProperties.lookup("g0") ); - - Switch packingLimiter - ( - ppProperties.lookup("packingLimiter") - ); diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/readTwoPhaseEulerFoamControls.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/readTwoPhaseEulerFoamControls.H index 9913595cf296cb67ab33cc3e503ef111cd610475..29353a8fa1deea189e0fa017c28ba5685013245c 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/readTwoPhaseEulerFoamControls.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/readTwoPhaseEulerFoamControls.H @@ -1,2 +1,7 @@ #include "readTimeControls.H" #include "alphaControls.H" + + Switch implicitPhasePressure + ( + alphaControls.lookupOrDefault<Switch>("implicitPhasePressure", false) + ); diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/turbulenceModel/kEpsilon.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/turbulenceModel/kEpsilon.H deleted file mode 100644 index b74e1b18d79c4dac7b21cf3edc8bd56fb3ddb04d..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/turbulenceModel/kEpsilon.H +++ /dev/null @@ -1,72 +0,0 @@ -if (turbulence) -{ - if (mesh.changing()) - { - y.correct(); - } - - tmp<volTensorField> tgradU2(fvc::grad(U2)); - volScalarField G(2*nut2*(tgradU2() && dev(symm(tgradU2())))); - tgradU2.clear(); - - #include "wallFunctions.H" - - // Dissipation equation - fvScalarMatrix epsEqn - ( - fvm::ddt(alpha2, epsilon) - + fvm::div(alphaPhi2, epsilon) - - // Compressibity correction - - fvm::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), epsilon) - - - fvm::laplacian - ( - alpha1Eps*nuEff2, epsilon, - "laplacian(DepsilonEff,epsilon)" - ) - == - C1*alpha2*G*epsilon/k - - fvm::Sp(C2*alpha2*epsilon/k, epsilon) - ); - - #include "wallDissipation.H" - - - - epsEqn.relax(); - epsEqn.solve(); - - epsilon.max(dimensionedScalar("zero", epsilon.dimensions(), 1.0e-15)); - - - // Turbulent kinetic energy equation - fvScalarMatrix kEqn - ( - fvm::ddt(alpha2, k) - + fvm::div(alphaPhi2, k) - - // Compressibity correction - - fvm::Sp(fvc::ddt(alpha2) + fvc::div(alphaPhi2), k) - - - fvm::laplacian - ( - alpha1k*nuEff2, k, - "laplacian(DkEff,k)" - ) - == - alpha2*G - - fvm::Sp(alpha2*epsilon/k, k) - ); - kEqn.relax(); - kEqn.solve(); - - k.max(dimensionedScalar("zero", k.dimensions(), 1.0e-8)); - - //- Re-calculate turbulence viscosity - nut2 = Cmu*sqr(k)/epsilon; - - #include "wallViscosity.H" -} - -nuEff2 = nut2 + thermo2.mu()/rho2; diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/turbulenceModel/wallDissipation.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/turbulenceModel/wallDissipation.H deleted file mode 100644 index 14224fd646a3ec4ab00de7ffb2eb05035893bdf9..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/turbulenceModel/wallDissipation.H +++ /dev/null @@ -1,50 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more 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 - wallDissipation - -Description - Set wall dissipation in the epsilon matrix - -\*---------------------------------------------------------------------------*/ - -{ - const fvPatchList& patches = mesh.boundary(); - - forAll(patches, patchi) - { - const fvPatch& p = patches[patchi]; - - if (isA<wallFvPatch>(p)) - { - epsEqn.setValues - ( - p.faceCells(), - epsilon.boundaryField()[patchi].patchInternalField() - ); - } - } -} - -// ************************************************************************* // diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/turbulenceModel/wallFunctions.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/turbulenceModel/wallFunctions.H deleted file mode 100644 index d85181cba2e020e57fb2063d09d4af4f14b01807..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/turbulenceModel/wallFunctions.H +++ /dev/null @@ -1,83 +0,0 @@ -{ - labelList cellBoundaryFaceCount(epsilon.size(), 0); - - scalar Cmu25 = ::pow(Cmu.value(), 0.25); - scalar Cmu75 = ::pow(Cmu.value(), 0.75); - scalar kappa_ = kappa.value(); - - const fvPatchList& patches = mesh.boundary(); - - //- Initialise the near-wall P field to zero - forAll(patches, patchi) - { - const fvPatch& currPatch = patches[patchi]; - - if (isA<wallFvPatch>(currPatch)) - { - forAll(currPatch, facei) - { - label faceCelli = currPatch.faceCells()[facei]; - - epsilon[faceCelli] = 0.0; - G[faceCelli] = 0.0; - } - } - } - - //- Accumulate the wall face contributions to epsilon and G - // Increment cellBoundaryFaceCount for each face for averaging - forAll(patches, patchi) - { - const fvPatch& currPatch = patches[patchi]; - const scalarField& mu2_ = thermo2.mu().boundaryField()[patchi]; - const scalarField& rho2_ = rho2.boundaryField()[patchi]; - - if (isA<wallFvPatch>(currPatch)) - { - const scalarField& nut2w = nut2.boundaryField()[patchi]; - - scalarField magFaceGradU(mag(U2.boundaryField()[patchi].snGrad())); - - forAll(currPatch, facei) - { - label faceCelli = currPatch.faceCells()[facei]; - - // For corner cells (with two boundary or more faces), - // epsilon and G in the near-wall cell are calculated - // as an average - - cellBoundaryFaceCount[faceCelli]++; - - epsilon[faceCelli] += - Cmu75*::pow(k[faceCelli], 1.5) - /(kappa_*y[patchi][facei]); - - G[faceCelli] += - (nut2w[facei] + mu2_[facei]/rho2_[facei]) - *magFaceGradU[facei] - *Cmu25*::sqrt(k[faceCelli]) - /(kappa_*y[patchi][facei]); - } - } - } - - - // perform the averaging - - forAll(patches, patchi) - { - const fvPatch& curPatch = patches[patchi]; - - if (isA<wallFvPatch>(curPatch)) - { - forAll(curPatch, facei) - { - label faceCelli = curPatch.faceCells()[facei]; - - epsilon[faceCelli] /= cellBoundaryFaceCount[faceCelli]; - G[faceCelli] /= cellBoundaryFaceCount[faceCelli]; - cellBoundaryFaceCount[faceCelli] = 1; - } - } - } -} diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/turbulenceModel/wallViscosity.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/turbulenceModel/wallViscosity.H deleted file mode 100644 index 9aa032149ca51f65d51d412c4dc13b7d61b9c46c..0000000000000000000000000000000000000000 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/turbulenceModel/wallViscosity.H +++ /dev/null @@ -1,40 +0,0 @@ -{ - scalar Cmu25 = ::pow(Cmu.value(), 0.25); - scalar kappa_ = kappa.value(); - scalar E_ = E.value(); - - const fvPatchList& patches = mesh.boundary(); - - forAll(patches, patchi) - { - const fvPatch& currPatch = patches[patchi]; - const scalarField& mu2_ = thermo2.mu().boundaryField()[patchi]; - const scalarField& rho2_ = rho2.boundaryField()[patchi]; - - if (isA<wallFvPatch>(currPatch)) - { - scalarField& nutw = nut2.boundaryField()[patchi]; - - forAll(currPatch, facei) - { - label faceCelli = currPatch.faceCells()[facei]; - - // calculate yPlus - scalar yPlus = - Cmu25*y[patchi][facei]*::sqrt(k[faceCelli]) - /(mu2_[facei]/rho2_[facei]); - - if (yPlus > 11.6) - { - nutw[facei] = - (mu2_[facei]/rho2_[facei]) - *(yPlus*kappa_/::log(E_*yPlus) - 1); - } - else - { - nutw[facei] = 0.0; - } - } - } - } -} diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/Make/files b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/Make/files similarity index 76% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/Make/files rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/Make/files index c465aaa45490c24c1d02030adef6fd4c4f6df65d..fb49c3cef761ab0d94d4b702a807f0378cd0cc74 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/Make/files +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/Make/files @@ -4,4 +4,6 @@ diameterModels/diameterModel/newDiameterModel.C diameterModels/constantDiameter/constantDiameter.C diameterModels/isothermalDiameter/isothermalDiameter.C -LIB = $(FOAM_LIBBIN)/libcompressiblePhaseModel +twoPhaseSystem.C + +LIB = $(FOAM_LIBBIN)/libcompressibleTwoPhaseSystem diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/Make/options b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/Make/options similarity index 80% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/Make/options rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/Make/options index e441b0417bb82b021ee7e0ae470e030900e43a71..ab3c396f5796ea50f8afd47eeb3a4c6d5c950316 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/Make/options +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/Make/options @@ -1,4 +1,6 @@ EXE_INC = \ + -I../twoPhaseSystem \ + -I../interfacialModels/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/transportModels/incompressible/lnInclude diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/diameterModels/constantDiameter/constantDiameter.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/constantDiameter/constantDiameter.C similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/diameterModels/constantDiameter/constantDiameter.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/constantDiameter/constantDiameter.C diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/diameterModels/constantDiameter/constantDiameter.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/constantDiameter/constantDiameter.H similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/diameterModels/constantDiameter/constantDiameter.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/constantDiameter/constantDiameter.H diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/diameterModels/diameterModel/diameterModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/diameterModel/diameterModel.C similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/diameterModels/diameterModel/diameterModel.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/diameterModel/diameterModel.C diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/diameterModels/diameterModel/diameterModel.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/diameterModel/diameterModel.H similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/diameterModels/diameterModel/diameterModel.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/diameterModel/diameterModel.H diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/diameterModels/diameterModel/newDiameterModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/diameterModel/newDiameterModel.C similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/diameterModels/diameterModel/newDiameterModel.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/diameterModel/newDiameterModel.C diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/diameterModels/isothermalDiameter/isothermalDiameter.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/isothermalDiameter/isothermalDiameter.C similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/diameterModels/isothermalDiameter/isothermalDiameter.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/isothermalDiameter/isothermalDiameter.C diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/diameterModels/isothermalDiameter/isothermalDiameter.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/isothermalDiameter/isothermalDiameter.H similarity index 100% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/diameterModels/isothermalDiameter/isothermalDiameter.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/diameterModels/isothermalDiameter/isothermalDiameter.H diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/phaseModel/phaseModel.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.C similarity index 76% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/phaseModel/phaseModel.C rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.C index 112a30218896b55c184c7d8740956f602a8b9474..e0275a6238217ba8f88cb5f3ece5495fd14a8b7e 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/phaseModel/phaseModel.C +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.C @@ -24,7 +24,10 @@ License \*---------------------------------------------------------------------------*/ #include "phaseModel.H" +#include "twoPhaseSystem.H" #include "diameterModel.H" +#include "dragModel.H" +#include "heatTransferModel.H" #include "fixedValueFvPatchFields.H" #include "slipFvPatchFields.H" #include "surfaceInterpolate.H" @@ -33,8 +36,8 @@ License Foam::phaseModel::phaseModel ( - const fvMesh& mesh, - const dictionary& transportProperties, + const twoPhaseSystem& fluid, + const dictionary& phaseProperties, const word& phaseName ) : @@ -42,48 +45,44 @@ Foam::phaseModel::phaseModel ( IOobject ( - "alpha" + phaseName, - mesh.time().timeName(), - mesh, + IOobject::groupName("alpha", phaseName), + fluid.mesh().time().timeName(), + fluid.mesh(), IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), - mesh, + fluid.mesh(), dimensionedScalar("alpha", dimless, 0) ), + fluid_(fluid), name_(phaseName), phaseDict_ ( - transportProperties.subDict - ( - phaseName == "1" || phaseName == "2" - ? "phase" + phaseName - : word(phaseName) - ) + phaseProperties.subDict(name_) ), - thermo_(rhoThermo::New(mesh, phaseName)), + thermo_(rhoThermo::New(fluid.mesh(), name_)), U_ ( IOobject ( - "U" + phaseName, - mesh.time().timeName(), - mesh, + IOobject::groupName("U", name_), + fluid.mesh().time().timeName(), + fluid.mesh(), IOobject::MUST_READ, IOobject::AUTO_WRITE ), - mesh + fluid.mesh() ) { - thermo_->validate("phaseModel " + phaseName, "h", "e"); + thermo_->validate("phaseModel " + name_, "h", "e"); - const word phiName = "phi" + phaseName; + const word phiName = IOobject::groupName("phi", name_); IOobject phiHeader ( phiName, - mesh.time().timeName(), - mesh, + fluid_.mesh().time().timeName(), + fluid_.mesh(), IOobject::NO_READ ); @@ -98,12 +97,12 @@ Foam::phaseModel::phaseModel IOobject ( phiName, - mesh.time().timeName(), - mesh, + fluid_.mesh().time().timeName(), + fluid_.mesh(), IOobject::MUST_READ, IOobject::AUTO_WRITE ), - mesh + fluid_.mesh() ) ); } @@ -136,12 +135,12 @@ Foam::phaseModel::phaseModel IOobject ( phiName, - mesh.time().timeName(), - mesh, + fluid_.mesh().time().timeName(), + fluid_.mesh(), IOobject::NO_READ, IOobject::AUTO_WRITE ), - fvc::interpolate(U_) & mesh.Sf(), + fvc::interpolate(U_) & fluid_.mesh().Sf(), phiTypes ) ); @@ -155,20 +154,6 @@ Foam::phaseModel::phaseModel } -Foam::autoPtr<Foam::phaseModel> Foam::phaseModel::New -( - const fvMesh& mesh, - const dictionary& transportProperties, - const word& phaseName -) -{ - return autoPtr<phaseModel> - ( - new phaseModel(mesh, transportProperties, phaseName) - ); -} - - // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::phaseModel::~phaseModel() diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/phaseModel/phaseModel.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.H similarity index 86% rename from applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/phaseModel/phaseModel.H rename to applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.H index 87c6f0b562946864dd76683f4a8a50fb634ca612..ed2a6115462185851dc9f52857231cd65dfa8c46 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/phaseModel/phaseModel/phaseModel.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/phaseModel/phaseModel.H @@ -36,6 +36,7 @@ SourceFiles #include "dimensionedScalar.H" #include "volFields.H" #include "surfaceFields.H" +#include "transportModel.H" #include "rhoThermo.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -44,18 +45,24 @@ namespace Foam { // Forward declarations +class twoPhaseSystem; class diameterModel; + /*---------------------------------------------------------------------------*\ Class phaseModel Declaration \*---------------------------------------------------------------------------*/ class phaseModel : - public volScalarField + public volScalarField, + public transportModel { // Private data + //- Reference to the twoPhaseSystem to which this phase belongs + const twoPhaseSystem& fluid_; + //- Name of phase word name_; @@ -80,19 +87,8 @@ public: phaseModel ( - const fvMesh& mesh, - const dictionary& transportProperties, - const word& phaseName - ); - - - // Selectors - - //- Return a reference to the selected turbulence model - static autoPtr<phaseModel> New - ( - const fvMesh& mesh, - const dictionary& transportProperties, + const twoPhaseSystem& fluid, + const dictionary& phaseProperties, const word& phaseName ); @@ -103,6 +99,12 @@ public: // Member Functions + //- Return the twoPhaseSystem to which this phase belongs + const twoPhaseSystem& fluid() const + { + return fluid_; + } + const word& name() const { return name_; @@ -165,6 +167,16 @@ public: { return phiPtr_(); } + + //- Dummy correct + void correct() + {} + + //- Dummy read + bool read() + { + return true; + } }; diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C new file mode 100644 index 0000000000000000000000000000000000000000..83902a7b7d7385b1c5619d769e11287a05ca8c0f --- /dev/null +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.C @@ -0,0 +1,390 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more 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 "surfaceInterpolate.H" +#include "fixedValueFvsPatchFields.H" +#include "fvcCurl.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::twoPhaseSystem::twoPhaseSystem +( + const fvMesh& mesh +) +: + IOdictionary + ( + IOobject + ( + "phaseProperties", + mesh.time().constant(), + mesh, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE + ) + ), + + mesh_(mesh), + + phase1_ + ( + *this, + *this, + wordList(lookup("phases"))[0] + ), + + phase2_ + ( + *this, + *this, + wordList(lookup("phases"))[1] + ), + + Cvm_ + ( + "Cvm", + dimless, + lookup("Cvm") + ), + + Cl_ + ( + "Cl", + dimless, + lookup("Cl") + ), + + drag1_ + ( + dragModel::New + ( + subDict("drag"), + phase1_, + phase1_, + phase2_ + ) + ), + + drag2_ + ( + dragModel::New + ( + subDict("drag"), + phase2_, + phase2_, + phase1_ + ) + ), + + heatTransfer1_ + ( + heatTransferModel::New + ( + subDict("heatTransfer"), + phase1_, + phase1_, + phase2_ + ) + ), + + heatTransfer2_ + ( + heatTransferModel::New + ( + subDict("heatTransfer"), + phase2_, + phase2_, + phase1_ + ) + ), + + dispersedPhase_(lookup("dispersedPhase")), + + residualPhaseFraction_ + ( + readScalar(lookup("residualPhaseFraction")) + ), + + residualSlip_ + ( + "residualSlip", + dimVelocity, + lookup("residualSlip") + ) +{ + if + ( + !( + dispersedPhase_ == phase1_.name() + || dispersedPhase_ == phase2_.name() + || dispersedPhase_ == "both" + ) + ) + { + FatalErrorIn("twoPhaseSystem::twoPhaseSystem(const fvMesh& mesh)") + << "invalid dispersedPhase " << dispersedPhase_ + << exit(FatalError); + } + + Info << "dispersedPhase is " << dispersedPhase_ << endl; + + // Ensure the phase-fractions sum to 1 + phase2_.volScalarField::operator=(scalar(1) - phase1_); +} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> Foam::twoPhaseSystem::rho() const +{ + return phase1_*phase1_.thermo().rho() + phase2_*phase2_.thermo().rho(); +} + + +Foam::tmp<Foam::volVectorField> Foam::twoPhaseSystem::U() const +{ + return phase1_*phase1_.U() + phase2_*phase2_.U(); +} + + +Foam::tmp<Foam::surfaceScalarField> Foam::twoPhaseSystem::phi() const +{ + return + fvc::interpolate(phase1_)*phase1_.phi() + + fvc::interpolate(phase2_)*phase2_.phi(); +} + + +Foam::tmp<Foam::volScalarField> Foam::twoPhaseSystem::dragCoeff() const +{ + tmp<volScalarField> tdragCoeff + ( + new volScalarField + ( + IOobject + ( + "dragCoeff", + mesh_.time().timeName(), + mesh_ + ), + mesh_, + dimensionedScalar("dragCoeff", dimensionSet(1, -3, -1, 0, 0), 0) + ) + ); + volScalarField& dragCoeff = tdragCoeff(); + + volVectorField Ur(phase1_.U() - phase2_.U()); + volScalarField magUr(mag(Ur) + residualSlip_); + + if (dispersedPhase_ == phase1_.name()) + { + dragCoeff = drag1().K(magUr); + } + else if (dispersedPhase_ == phase2_.name()) + { + dragCoeff = drag2().K(magUr); + } + else if (dispersedPhase_ == "both") + { + dragCoeff = + ( + phase2_*drag1().K(magUr) + + phase1_*drag2().K(magUr) + ); + } + else + { + FatalErrorIn("twoPhaseSystem::dragCoeff()") + << "dispersedPhase: " << dispersedPhase_ << " is incorrect" + << exit(FatalError); + } + + volScalarField alphaCoeff(max(phase1_*phase2_, residualPhaseFraction_)); + dragCoeff *= alphaCoeff; + + // Remove drag at fixed-flux boundaries + forAll(phase1_.phi().boundaryField(), patchi) + { + if + ( + isA<fixedValueFvsPatchScalarField> + ( + phase1_.phi().boundaryField()[patchi] + ) + ) + { + dragCoeff.boundaryField()[patchi] = 0.0; + } + } + + return tdragCoeff; +} + + +Foam::tmp<Foam::volVectorField> Foam::twoPhaseSystem::liftForce +( + const volVectorField& U +) const +{ + tmp<volVectorField> tliftForce + ( + new volVectorField + ( + IOobject + ( + "liftForce", + mesh_.time().timeName(), + mesh_ + ), + mesh_, + dimensionedVector + ( + "liftForce", + dimensionSet(1, -2, -2, 0, 0), + vector::zero + ) + ) + ); + volVectorField& liftForce = tliftForce(); + + volVectorField Ur(phase1_.U() - phase2_.U()); + + liftForce = + Cl_*(phase1_*phase1_.rho() + phase2_*phase2_.rho()) + *(Ur ^ fvc::curl(U)); + + // Remove lift at fixed-flux boundaries + forAll(phase1_.phi().boundaryField(), patchi) + { + if + ( + isA<fixedValueFvsPatchScalarField> + ( + phase1_.phi().boundaryField()[patchi] + ) + ) + { + liftForce.boundaryField()[patchi] = vector::zero; + } + } + + return tliftForce; +} + + +Foam::tmp<Foam::volScalarField> Foam::twoPhaseSystem::heatTransferCoeff() const +{ + tmp<volScalarField> theatTransferCoeff + ( + new volScalarField + ( + IOobject + ( + "heatTransferCoeff", + mesh_.time().timeName(), + mesh_ + ), + mesh_, + dimensionedScalar + ( + "heatTransferCoeff", + dimensionSet(1, -1, -3, -1, 0), + 0 + ) + ) + ); + volScalarField& heatTransferCoeff = theatTransferCoeff(); + + volVectorField Ur(phase1_.U() - phase2_.U()); + volScalarField magUr(mag(Ur) + residualSlip_); + + if (dispersedPhase_ == phase1_.name()) + { + heatTransferCoeff = heatTransfer1().K(magUr); + } + else if (dispersedPhase_ == phase2_.name()) + { + heatTransferCoeff = heatTransfer2().K(magUr); + } + else if (dispersedPhase_ == "both") + { + heatTransferCoeff = + ( + phase2_*heatTransfer1().K(magUr) + + phase1_*heatTransfer2().K(magUr) + ); + } + else + { + FatalErrorIn("twoPhaseSystem::heatTransferCoeff()") + << "dispersedPhase: " << dispersedPhase_ << " is incorrect" + << exit(FatalError); + } + + volScalarField alphaCoeff(max(phase1_*phase2_, residualPhaseFraction_)); + heatTransferCoeff *= alphaCoeff; + + // Remove heatTransfer at fixed-flux boundaries + forAll(phase1_.phi().boundaryField(), patchi) + { + if + ( + isA<fixedValueFvsPatchScalarField> + ( + phase1_.phi().boundaryField()[patchi] + ) + ) + { + heatTransferCoeff.boundaryField()[patchi] = 0.0; + } + } + + return theatTransferCoeff; +} + + +bool Foam::twoPhaseSystem::read() +{ + if (regIOobject::read()) + { + bool readOK = true; + + readOK &= phase1_.read(); + readOK &= phase2_.read(); + + lookup("Cvm") >> Cvm_; + lookup("Cl") >> Cl_; + + return readOK; + } + else + { + return false; + } +} + + +// ************************************************************************* // diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.H new file mode 100644 index 0000000000000000000000000000000000000000..3a7896ea02b13a5e41563b6ee6bc29b39b508687 --- /dev/null +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/twoPhaseSystem/twoPhaseSystem.H @@ -0,0 +1,228 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more 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 + Incompressible multi-phase mixture with built in solution for the + phase fractions with interface compression for interface-capturing. + + Derived from transportModel so that it can be unsed in conjunction with + the incompressible turbulence models. + + Surface tension and contact-angle is handled for the interface + between each phase-pair. + +SourceFiles + twoPhaseSystem.C + +\*---------------------------------------------------------------------------*/ + +#ifndef twoPhaseSystem_H +#define twoPhaseSystem_H + +#include "IOdictionary.H" +#include "phaseModel.H" +#include "dragModel.H" +#include "heatTransferModel.H" +#include "volFields.H" +#include "surfaceFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declarations +class dragModel; +class heatTransferModel; + + +/*---------------------------------------------------------------------------*\ + Class twoPhaseSystem Declaration +\*---------------------------------------------------------------------------*/ + +class twoPhaseSystem +: + public IOdictionary +{ + // Private data + + const fvMesh& mesh_; + + phaseModel phase1_; + phaseModel phase2_; + + dimensionedScalar Cvm_; + dimensionedScalar Cl_; + + autoPtr<dragModel> drag1_; + autoPtr<dragModel> drag2_; + + autoPtr<heatTransferModel> heatTransfer1_; + autoPtr<heatTransferModel> heatTransfer2_; + + word dispersedPhase_; + scalar residualPhaseFraction_; + dimensionedScalar residualSlip_; + + +public: + + // Constructors + + //- Construct from fvMesh + twoPhaseSystem(const fvMesh&); + + + //- Destructor + virtual ~twoPhaseSystem() + {} + + + // Member Functions + + const fvMesh& mesh() const + { + return mesh_; + } + + const phaseModel& phase1() const + { + return phase1_; + } + + const phaseModel& phase2() const + { + return phase2_; + } + + const phaseModel& otherPhase(const phaseModel& phase) const + { + if (&phase == &phase1_) + { + return phase2_; + } + else + { + return phase1_; + } + } + + phaseModel& phase1() + { + return phase1_; + } + + phaseModel& phase2() + { + return phase2_; + } + + const dragModel& drag1() const + { + return drag1_(); + } + + const dragModel& drag2() const + { + return drag2_(); + } + + const dragModel& drag(const phaseModel& phase) const + { + if (&phase == &phase1_) + { + return drag1_(); + } + else + { + return drag2_(); + } + } + + scalar residualPhaseFraction() const + { + return residualPhaseFraction_; + } + + const dimensionedScalar& residualSlip() const + { + return residualSlip_; + } + + tmp<volScalarField> dragCoeff() const; + tmp<volVectorField> liftForce(const volVectorField& U) const; + + const heatTransferModel& heatTransfer1() const + { + return heatTransfer1_(); + } + + const heatTransferModel& heatTransfer2() const + { + return heatTransfer2_(); + } + + tmp<volScalarField> heatTransferCoeff() const; + + //- Return the mixture density + tmp<volScalarField> rho() const; + + //- Return the mixture velocity + tmp<volVectorField> U() const; + + //- Return the mixture flux + tmp<surfaceScalarField> phi() const; + + //- Return the virtual-mass coefficient + dimensionedScalar Cvm() const + { + return Cvm_; + } + + //- Return the lift coefficient + dimensionedScalar Cl() const + { + return Cl_; + } + + //- Dummy correct + void correct() + {} + + //- Read base phaseProperties dictionary + bool read(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/kineticTheoryProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/kineticTheoryProperties deleted file mode 100644 index dd434c837468e4c3719d0f21153fa9edc5fd4ab9..0000000000000000000000000000000000000000 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/kineticTheoryProperties +++ /dev/null @@ -1,52 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: 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 kineticTheoryProperties; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -kineticTheory off; - -equilibrium on; - -e e [ 0 0 0 0 0 0 0 ] 0.9; - -alphaMax alphaMax [ 0 0 0 0 0 0 0 ] 0.6; - -alphaMinFriction alphaMinFriction [ 0 0 0 0 0 0 0 ] 0.5; - -Fr Fr [ 1 -1 -2 0 0 0 0 ] 0.05; - -eta eta [ 0 0 0 0 0 0 0 ] 2; - -p p [ 0 0 0 0 0 0 0 ] 5; - -phi phi [ 0 0 0 0 0 0 0 ] 25; - -viscosityModel Syamlal; - -conductivityModel HrenyaSinclair; - -granularPressureModel Lun; - -frictionalStressModel JohnsonJackson; - -radialModel SinclairJackson; - -HrenyaSinclairCoeffs -{ - L L [ 0 1 0 0 0 0 0 ] 0.0005; -} - - -// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/epsilon b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/epsilon deleted file mode 100644 index 69b3e74c838b2f693281b70c870742448faeb9b8..0000000000000000000000000000000000000000 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/epsilon +++ /dev/null @@ -1,50 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: 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 10.0; - -referenceLevel 0; - -boundaryField -{ - inlet - { - type fixedValue; - value uniform 10.0; - } - - outlet - { - type inletOutlet; - phi phi2; - inletValue uniform 10.0; - value uniform 10.0; - } - - walls - { - type zeroGradient; - } - - frontAndBackPlanes - { - type empty; - } -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/filterProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/filterProperties deleted file mode 100644 index 19c054ea8c0818836cff1abca6d55e2af619b76c..0000000000000000000000000000000000000000 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/filterProperties +++ /dev/null @@ -1,27 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: 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 filterProperties; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -filter off; - -filterNormal ( 0 0 1 ); - -filterPosition filterPosition [ 0 1 0 0 0 ] ( 0 0 0.02 ); - -filterThickness filterThickness [ 0 1 0 0 0 ] 1e-06; - - -// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/interfacialProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/interfacialProperties deleted file mode 100644 index 63efa66a33df1344b571e8b25a15fc48880dd097..0000000000000000000000000000000000000000 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/interfacialProperties +++ /dev/null @@ -1,29 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: 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 interfacialProperties; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -dragModel1 GidaspowErgunWenYu; -dragModel2 GidaspowErgunWenYu; - -heatTransferModel1 RanzMarshall; -heatTransferModel2 RanzMarshall; - -dispersedPhase "1"; - -residualPhaseFraction 1e-3; -residualSlip 1e-2; - -// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/kineticTheoryProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/kineticTheoryProperties deleted file mode 100644 index 84660d86278e0440cba0defddad073cfa34caf66..0000000000000000000000000000000000000000 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/kineticTheoryProperties +++ /dev/null @@ -1,52 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: 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 kineticTheoryProperties; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -kineticTheory on; - -equilibrium on; - -e e [ 0 0 0 0 0 0 0 ] 0.8; - -alphaMax alphaMax [ 0 0 0 0 0 0 0 ] 0.62; - -alphaMinFriction alphaMinFriction [ 0 0 0 0 0 0 0 ] 0.65; - -Fr Fr [ 1 -1 -2 0 0 0 0 ] 0.05; - -eta eta [ 0 0 0 0 0 0 0 ] 2; - -p p [ 0 0 0 0 0 0 0 ] 5; - -phi phi [ 0 0 0 0 0 0 0 ] 0; - -viscosityModel Gidaspow; - -conductivityModel Gidaspow; - -granularPressureModel Lun; - -frictionalStressModel JohnsonJackson; - -radialModel SinclairJackson; - -HrenyaSinclairCoeffs -{ - L L [ 0 1 0 0 0 0 0 ] 0.0005; -} - - -// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/Tair b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.air similarity index 97% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/Tair rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.air index 25bc08d671014e05362550e22ecd36921d254728..9c0fd4206c19f34a05d8c05da28254b22882ebcf 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/Tair +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.air @@ -27,7 +27,7 @@ boundaryField outlet { type inletOutlet; - phi phiair; + phi phi.air; inletValue $internalField; value $internalField; } diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/Twater b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.water similarity index 97% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/Twater rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.water index f0f366c7dc27735b261b92c9eb7e2570dcaff136..1cfd38f926516878085292090cf2e55699fef0cb 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/Twater +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/T.water @@ -27,7 +27,7 @@ boundaryField outlet { type inletOutlet; - phi phiwater; + phi phi.water; inletValue uniform 300; value $internalField; } diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/Theta b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/Theta similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/Theta rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/Theta diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/Uair b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.air similarity index 95% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/Uair rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.air index ac6020947e16d1537f7ed05c0878183567bac15c..e81fffac0612e0a20d26f1cb9be4211ba4be9a16 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/Uair +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.air @@ -10,7 +10,7 @@ FoamFile version 2.0; format binary; class volVectorField; - object Uair; + object U.air; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -28,7 +28,7 @@ boundaryField outlet { type pressureInletOutletVelocity; - phi phiair; + phi phi.air; value $internalField; } walls diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/Uwater b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.water similarity index 95% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/Uwater rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.water index 22ed59a0ef3e78143b36a455a5c2d9f41f09df3a..aab00fd78bb2a097604737fb5b1b77d2ae159967 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/Uwater +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/U.water @@ -10,7 +10,7 @@ FoamFile version 2.0; format binary; class volVectorField; - object Uwater; + object U.water; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -28,7 +28,7 @@ boundaryField outlet { type pressureInletOutletVelocity; - phi phiwater; + phi phi.water; value $internalField; } walls diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/alphaair b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air similarity index 98% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/alphaair rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air index a2224f95c3c32f38ce0e3e0dd361b3fabc5bf60f..b59d4482b471c29d89a5c8186b5793446cb7a1a5 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/alphaair +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air @@ -11,13 +11,13 @@ FoamFile format ascii; class volScalarField; location "0"; - object alpha1; + object alpha.air; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 0 0 0 0 0 0]; -internalField nonuniform List<scalar> +internalField nonuniform List<scalar> 1875 ( 0 @@ -1908,7 +1908,7 @@ boundaryField outlet { type inletOutlet; - phi phiair; + phi phi.air; inletValue uniform 1; value uniform 1; } diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/alphaair.org b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org similarity index 93% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/alphaair.org rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org index 62088eca2323cb4b66162a3131679877f60bb945..4472b0c63598b7f95acf8d79fac10b3e9a08ebf7 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/alphaair.org +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/alpha.air.org @@ -10,7 +10,8 @@ FoamFile version 2.0; format ascii; class volScalarField; - object alphaair; + location "0"; + object alpha.air; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -28,7 +29,7 @@ boundaryField outlet { type inletOutlet; - phi phiair; + phi phi.air; inletValue uniform 1; value uniform 1; } diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/p b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/p similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/p rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/0/p diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/g b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/g similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/g rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/g diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties new file mode 100644 index 0000000000000000000000000000000000000000..8e7701bf4cbb55811305ff6b022674cfd2bc6e95 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties @@ -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 "constant"; + object phaseProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +phases (air water); + +air +{ + diameterModel isothermal; + isothermalCoeffs + { + d0 3e-3; + p0 1e5; + } +} + +water +{ + diameterModel constant; + constantCoeffs + { + d 1e-4; + } +} + +drag +{ + air SchillerNaumann; + water SchillerNaumann; +} + +heatTransfer +{ + air RanzMarshall; + water RanzMarshall; +} + +dispersedPhase both; + +residualPhaseFraction 1e-3; +residualSlip 1e-2; + +// Virtual-mass ceofficient +Cvm 0.5; + +// Lift coefficient +Cl 0; + +// Minimum allowable pressure +pMin 10000; + + + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/polyMesh/blockMeshDict b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/blockMeshDict similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/polyMesh/blockMeshDict rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/blockMeshDict diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/polyMesh/boundary b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/boundary similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/polyMesh/boundary rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/polyMesh/boundary diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/thermophysicalPropertiesair b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air similarity index 96% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/thermophysicalPropertiesair rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air index 11c033af59bbfbf08d2b11244e50f0fd00c1542f..3cac781ab1bf649afe060310f5ea7c898123efd9 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/thermophysicalPropertiesair +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.air @@ -11,7 +11,7 @@ FoamFile format ascii; class dictionary; location "constant"; - object thermophysicalProperties; + object thermophysicalProperties.air; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/thermophysicalProperties2 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water similarity index 95% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/thermophysicalProperties2 rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water index 789f0427d7c9bd5d4d833f44b0f39359e8ab8bbf..394eb31679cf250cd4f43a40924f257c503e52c1 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/thermophysicalProperties2 +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/thermophysicalProperties.water @@ -11,7 +11,7 @@ FoamFile format ascii; class dictionary; location "constant"; - object thermophysicalProperties; + object thermophysicalProperties.water; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -31,7 +31,7 @@ mixture specie { nMoles 1; - molWeight 28.9; + molWeight 18; } equationOfState { diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/MRFProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.air similarity index 92% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/MRFProperties rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.air index fd749d03963870c76ab4a9d85ad86bd95c33a71f..1296429b72a21953def920b08774aa75e1d048b1 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/MRFProperties +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.air @@ -11,10 +11,10 @@ FoamFile format ascii; class dictionary; location "constant"; - object MRFProperties; + object turbulenceProperties.air; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// none +simulationType laminar; // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/RASProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.water similarity index 91% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/RASProperties rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.water index bd099a7e258af8451964c7746334da298510e1f0..7f0d75a82fcdc99677fa0be8a4111cfe91e4a82c 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/RASProperties +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/constant/turbulenceProperties.water @@ -11,13 +11,10 @@ FoamFile format ascii; class dictionary; location "constant"; - object RASProperties; + object turbulenceProperties.water; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -turbulence on; - -printCoeffs on; - +simulationType laminar; // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/controlDict b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict similarity index 97% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/controlDict rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict index 24d66f91c7d44dfeb7b24b508c2593511edb6ed9..18bd2e06daecdad9cfcfe4aa17a643d49df8d145 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/controlDict +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/system/controlDict @@ -60,21 +60,21 @@ functions outputControl outputTime; fields ( - Uair + U.air { mean on; prime2Mean off; base time; } - Uwater + U.water { mean on; prime2Mean off; base time; } - alphaair + alpha.air { mean on; prime2Mean off; diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/fvSchemes b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSchemes similarity index 90% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/fvSchemes rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSchemes index c0ea375341437d614a1cad16c12827f45ec79cdd..ef63a5dd4cab38262b0f54c7f73a8a7184197784 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/fvSchemes +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSchemes @@ -29,8 +29,8 @@ divSchemes { default none; - div(phi,alphaair) Gauss vanLeer; - div(phir,alphaair) Gauss vanLeer; + div(phi,alpha.air) Gauss vanLeer; + div(phir,alpha.air) Gauss vanLeer; "div\(alphaPhi.*,U.*\)" Gauss limitedLinearV 1; "div\(phi.*,U.*\)" Gauss limitedLinearV 1; @@ -40,7 +40,7 @@ divSchemes "div\(alphaPhi.*,h.*\)" Gauss limitedLinear 1; "div\(alphaPhi.*,K.*\)" Gauss limitedLinear 1; - "div\(alphaPhi.*,(k|epsilon)\)" Gauss limitedLinear 1; + "div\(\(\(alpha.*nuEff.*\)*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; } laplacianSchemes diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSolution b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..a25ccff8c62a0d6c8289dc37ad95385ffaaaf771 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/system/fvSolution @@ -0,0 +1,84 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: 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 + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-08; + relTol 0.01; + } + + pFinal + { + $p; + tolerance 1e-08; + relTol 0; + } + + "U.*" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-05; + relTol 0; + } + + "h.*" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-8; + relTol 0; + } +} + +PIMPLE +{ + nOuterCorrectors 1; + nCorrectors 2; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + fields + { + } + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/setFieldsDict b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/system/setFieldsDict similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/setFieldsDict rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/bubbleColumn/system/setFieldsDict diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.air new file mode 100644 index 0000000000000000000000000000000000000000..5e2332c34b0949d669c8c0309ff964318c1151ce --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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 300; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/T1 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.particles similarity index 94% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/T1 rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.particles index 92073f40861cd9e06527253a2f6e9f41379b5477..155187199907bcc1ea0a526baea46812b3b29d63 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/T1 +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/T.particles @@ -10,7 +10,7 @@ FoamFile version 2.0; format ascii; class volScalarField; - object T1; + object T.particles; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -29,7 +29,7 @@ boundaryField outlet { type inletOutlet; - phi phi1; + phi phi.particles; inletValue $internalField; value $internalField; } diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/Theta b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/Theta.particles similarity index 89% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/Theta rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/Theta.particles index 549cece590651e084bfff8997b390bfaad694720..c9b385ccd8b7ceba80aa3332b0c25b85d8328566 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/Theta +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/Theta.particles @@ -10,22 +10,22 @@ FoamFile version 2.0; format ascii; class volScalarField; - object Theta; + object Theta.particles; } // ************************************************************************* // dimensions [ 0 2 -2 0 0 0 0 ]; -internalField uniform 1.0e-4; +internalField uniform 0; -referenceLevel 0; +referenceLevel 1e-4; boundaryField { inlet { type fixedValue; - value uniform 1.0e-4; + value uniform 1e-4; } outlet diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/U2 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.air similarity index 93% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/U2 rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.air index cacb4e22301f822a04031ca3c8cef99da533ddb1..4896cfb962a47eebb1ef639ae307045472f49060 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/U2 +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.air @@ -8,9 +8,9 @@ FoamFile { version 2.0; - format binary; + format ascii; class volVectorField; - object U2; + object U.air; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -29,7 +29,7 @@ boundaryField outlet { type pressureInletOutletVelocity; - phi phi2; + phi phi.air; value $internalField; } diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/U1 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.particles similarity index 93% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/U1 rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.particles index 0543b7e78ff70c020c8651d5f413610c0020e04d..95abcf62b37fe1a1613711e17040560e5d1d4ed9 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/U1 +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/U.particles @@ -8,9 +8,9 @@ FoamFile { version 2.0; - format binary; + format ascii; class volVectorField; - object U1; + object U.particles; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -29,7 +29,7 @@ boundaryField outlet { type pressureInletOutletVelocity; - phi phi1; + phi phi.particles; value $internalField; } diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.air new file mode 100644 index 0000000000000000000000000000000000000000..b75ea3d3e03df9d73afb17585bda6169698da32b --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.air @@ -0,0 +1,6048 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: 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 fixedValue; + value uniform 1; + } + outlet + { + type zeroGradient; + } + walls + { + type zeroGradient; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/epsilon b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.air.org similarity index 79% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/epsilon rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.air.org index 3f507afed8ea6ba738e2fc7772a1fe96b57609de..29db06c78367cb29c5f8b9b9bdc7ca58ee1db9c6 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/epsilon +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.air.org @@ -10,39 +10,36 @@ FoamFile version 2.0; format ascii; class volScalarField; - location "0"; - object epsilon; + object alpha.air; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -dimensions [ 0 2 -3 0 0 0 0 ]; +dimensions [0 0 0 0 0 0 0]; -internalField uniform 20; +internalField uniform 0; boundaryField { - rotor + inlet { - type zeroGradient; - value uniform 20; + type fixedValue; + value uniform 1; } - stator + outlet { type zeroGradient; - value uniform 20; } - front + walls { - type empty; + type zeroGradient; } - back + frontAndBackPlanes { type empty; } } - // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/alpha1 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles similarity index 99% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/alpha1 rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles index a50f9c1e24fd1412c50b3c6f90fa0bdd17024633..54696662f7dd9c369fbe0270605298b659c2d100 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/alpha1 +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles @@ -11,13 +11,13 @@ FoamFile format ascii; class volScalarField; location "0"; - object alpha1; + object alpha.particles; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 0 0 0 0 0 0]; -internalField nonuniform List<scalar> +internalField nonuniform List<scalar> 6000 ( 0.55 diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/alpha1.org b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles.org similarity index 97% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/alpha1.org rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles.org index fdb7e4b86f2155e85eb861ed696f8861302e6fa3..69666444bc1beb16275c2ac20a69f6c41cd4252e 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/alpha1.org +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/alpha.particles.org @@ -10,7 +10,7 @@ FoamFile version 2.0; format ascii; class volScalarField; - object alpha1; + object alpha.particles; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/epsilon.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/epsilon.air new file mode 100644 index 0000000000000000000000000000000000000000..0b5f62a356b3f5a9ce5db5401e0b4f29bc1e4fc9 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/k.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/k.air new file mode 100644 index 0000000000000000000000000000000000000000..6d823d53288103b382da9a843830d5b1df37a263 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/k.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 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; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.air new file mode 100644 index 0000000000000000000000000000000000000000..dcb65148ae4e0675d7368e0bea77ff0db7f72e60 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.particles b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/nut.particles new file mode 100644 index 0000000000000000000000000000000000000000..6264a273f79124da66e26f9f2edf102259ac0874 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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/compressibleTwoPhaseEulerFoam/fluidisedBed/0/p b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/p similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/p rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/0/p diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/g b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/g similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/g rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/g diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/transportProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/phaseProperties similarity index 78% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/transportProperties rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/phaseProperties index 22cb823b5e8467166888bc825e56fec8967e53e5..7d994cb3fd15234bf6cd8674e841b546b691b1c1 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/transportProperties +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/phaseProperties @@ -11,11 +11,13 @@ FoamFile format ascii; class dictionary; location "constant"; - object transportProperties; + object phaseProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -phase1 +phases (particles air); + +particles { diameterModel constant; constantCoeffs @@ -24,7 +26,7 @@ phase1 } } -phase2 +air { diameterModel constant; constantCoeffs @@ -33,15 +35,29 @@ phase2 } } +drag +{ + particles GidaspowErgunWenYu; + air GidaspowErgunWenYu; +} + +heatTransfer +{ + particles RanzMarshall; + air RanzMarshall; +} + +dispersedPhase particles; + +residualPhaseFraction 1e-3; +residualSlip 1e-2; + // Virtual-mass ceofficient Cvm 0; // Lift coefficient Cl 0; -// Dispersed-phase turbulence coefficient -Ct 0; - // Minimum allowable pressure pMin 10000; diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/polyMesh/blockMeshDict b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/polyMesh/blockMeshDict similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/polyMesh/blockMeshDict rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/polyMesh/blockMeshDict diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/polyMesh/boundary b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/polyMesh/boundary similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/polyMesh/boundary rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/polyMesh/boundary diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/thermophysicalProperties2 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air similarity index 96% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/thermophysicalProperties2 rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air index e61009c10be927d2af1b6981cc75ad368e85d5c3..befc0aeae449cccc50a24e955083b88b914aba67 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/thermophysicalProperties2 +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.air @@ -11,7 +11,7 @@ FoamFile format ascii; class dictionary; location "constant"; - object thermophysicalProperties; + object thermophysicalProperties.air; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/thermophysicalProperties1 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles similarity index 93% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/thermophysicalProperties1 rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles index 0ac5f83a42bcfee041ee23060a2d9ba85d476fab..7508b70aa3194312b37a36e71753f74b9cf76166 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/thermophysicalProperties1 +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/thermophysicalProperties.particles @@ -11,7 +11,7 @@ FoamFile format ascii; class dictionary; location "constant"; - object thermophysicalProperties; + object thermophysicalProperties.particles; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -44,8 +44,8 @@ mixture } transport { - mu 2.5e-03; - Pr 24.47; + mu 0; + Pr 1; } } diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/MRFProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.air similarity index 92% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/MRFProperties rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.air index fd749d03963870c76ab4a9d85ad86bd95c33a71f..1296429b72a21953def920b08774aa75e1d048b1 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/MRFProperties +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.air @@ -11,10 +11,10 @@ FoamFile format ascii; class dictionary; location "constant"; - object MRFProperties; + object turbulenceProperties.air; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// none +simulationType laminar; // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.particles b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.particles new file mode 100644 index 0000000000000000000000000000000000000000..a4b21800313acddd15e33eeb1d0461357e26706b --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/constant/turbulenceProperties.particles @@ -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 "constant"; + object turbulenceProperties.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel phasePressure; + + turbulence 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; + } + } + + phasePressureCoeffs + { + preAlphaExp 500; + expMax 1000; + alphaMax 0.62; + g0 1000; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/controlDict b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/system/controlDict similarity index 96% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/controlDict rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/system/controlDict index e07be01b0e42f97d8bd948d5362b833c4b35c713..103ff2a9794a349e2a2939e9afb239fcbe9ceae2 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/controlDict +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/system/controlDict @@ -60,21 +60,21 @@ functions outputControl outputTime; fields ( - U1 + U.particles { mean on; prime2Mean off; base time; } - U2 + U.air { mean on; prime2Mean off; base time; } - alpha1 + alpha.particles { mean on; prime2Mean off; diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSchemes b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..93e6cddd228f756399f32ab3ef4d57a9ab9611a7 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/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\(alphaPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + "div\(\(alpha.*Rc\)\)" Gauss linear; + "div\(phi.*,.*rho.*\)" Gauss linear; + div(alphaPhi.particles,Theta.particles) Gauss limitedLinear 1; + div(alphaPhi.air,k.air) Gauss limitedLinear 1; + div(alphaPhi.air,epsilon.air) Gauss limitedLinear 1; + + "div\(alphaPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,(K.*|p)\)" Gauss limitedLinear 1; + + "div\(\(\(alpha.*nuEff.*\)*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; + + div(((nut.particles*dev2(T(grad(U.particles))))+((lambda.particles*div(phi.particles))*(1,0,0,1,0,1)))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; + bounded Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; + bounded uncorrected; +} + +fluxRequired +{ + default no; + p ; + alpha.particles; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/fvSolution b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSolution similarity index 80% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/fvSolution rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSolution index e0cc208e4ef5f8e59ae5a5ce3a4871e631eb1303..03aa48fd9aed26a22ed284a2a0c263191d2d4545 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/fvSolution +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/system/fvSolution @@ -17,10 +17,16 @@ FoamFile solvers { - alpha1 + "alpha.*" { nAlphaCorr 1; nAlphaSubCycles 2; + implicitPhasePressure yes; + + solver PCG; + preconditioner DIC; + tolerance 1e-6; + relTol 0; } p @@ -57,15 +63,7 @@ solvers { solver PBiCG; preconditioner DILU; - tolerance 1e-8; - relTol 0; - } - - "alpha.*" - { - solver PBiCG; - preconditioner DILU; - tolerance 1e-10; + tolerance 1e-6; relTol 0; } @@ -73,19 +71,11 @@ solvers { solver PBiCG; preconditioner DILU; - tolerance 1e-05; - relTol 0; - } - - "k.*" - { - solver PBiCG; - preconditioner DILU; - tolerance 1e-05; + tolerance 1e-6; relTol 0; } - "epsilon.*" + "(k|epsilon).*" { solver PBiCG; preconditioner DILU; @@ -108,12 +98,7 @@ relaxationFactors } equations { - "U.*" 1; - "h.*" 1; - "alpha.*" 1; - "Theta.*" 1; - "k.*" 1; - "epsilon.*" 1; + ".*" 1; } } diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/interfacialProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/system/setFieldsDict similarity index 67% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/interfacialProperties rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/system/setFieldsDict index 5964adcedc85ce4cfb8757b6dd2f652ba6cd9b88..da4c6ee6f2b05ccee47aa322a096b2cacad742a0 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/interfacialProperties +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/fluidisedBed/system/setFieldsDict @@ -10,20 +10,29 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; - object interfacialProperties; + location "system"; + object setFieldsDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -dragModelair SchillerNaumann; -dragModelwater SchillerNaumann; +defaultFieldValues +( + volScalarFieldValue alpha.air 1 + volScalarFieldValue alpha.particles 0 +); -heatTransferModelair RanzMarshall; -heatTransferModelwater RanzMarshall; +regions +( + boxToCell + { + box ( 0 0 -0.1 ) ( 0.15 0.5 0.1 ); + fieldValues + ( + volScalarFieldValue alpha.air 0.45 + volScalarFieldValue alpha.particles 0.55 + ); + } +); -dispersedPhase both; - -residualPhaseFraction 1e-3; -residualSlip 1e-2; // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/T1 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.air similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/T1 rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.air diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/T2 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.water similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/T2 rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/0/T.water diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/Theta b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/0/Theta similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/Theta rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/0/Theta diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/U1 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.air similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/U1 rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.air diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/U2 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.water similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/U2 rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/0/U.water diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/alpha1 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/alpha1 rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/p b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/p rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/0/p diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/Allrun b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/Allrun similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/Allrun rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/Allrun diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/MRFProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/MRFProperties similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/MRFProperties rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/MRFProperties diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/g b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/g similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/g rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/g diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/transportProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties similarity index 80% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/transportProperties rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties index 071be244440b0a9f281d63867e87687763209d5f..0046495f912257f66dc73da800577ee976f73f42 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/transportProperties +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/phaseProperties @@ -11,11 +11,13 @@ FoamFile format ascii; class dictionary; location "constant"; - object transportProperties; + object phaseProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -phase1 +phases (air water); + +air { diameterModel isothermal; isothermalCoeffs @@ -25,7 +27,7 @@ phase1 } } -phase2 +water { diameterModel constant; constantCoeffs @@ -34,15 +36,29 @@ phase2 } } +drag +{ + air SchillerNaumann; + water SchillerNaumann; +} + +heatTransfer +{ + air RanzMarshall; + water RanzMarshall; +} + +dispersedPhase both; + +residualPhaseFraction 1e-3; +residualSlip 1e-2; + // Virtual-mass ceofficient Cvm 0.5; // Lift coefficient Cl 0; -// Dispersed-phase turbulence coefficient -Ct 1; - // Minimum allowable pressure pMin 10000; diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/polyMesh/blockMeshDict.m4 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/blockMeshDict.m4 similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/polyMesh/blockMeshDict.m4 rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/blockMeshDict.m4 diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/polyMesh/boundary b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/boundary similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/polyMesh/boundary rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/polyMesh/boundary diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/thermophysicalProperties1 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air similarity index 96% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/thermophysicalProperties1 rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air index 11c033af59bbfbf08d2b11244e50f0fd00c1542f..3cac781ab1bf649afe060310f5ea7c898123efd9 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/thermophysicalProperties1 +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.air @@ -11,7 +11,7 @@ FoamFile format ascii; class dictionary; location "constant"; - object thermophysicalProperties; + object thermophysicalProperties.air; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/thermophysicalProperties.water new file mode 100644 index 0000000000000000000000000000000000000000..394eb31679cf250cd4f43a40924f257c503e52c1 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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 sensibleEnthalpy; +} + +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/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/RASProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.air similarity index 89% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/RASProperties rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.air index 552ecb32c7b2430e061322808c20842dc3e354b8..1296429b72a21953def920b08774aa75e1d048b1 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/RASProperties +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.air @@ -11,15 +11,10 @@ FoamFile format ascii; class dictionary; location "constant"; - object RASProperties; + object turbulenceProperties.air; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -RASModel laminar; - -turbulence off; - -printCoeffs off; - +simulationType laminar; // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.water b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/constant/turbulenceProperties.water new file mode 100644 index 0000000000000000000000000000000000000000..7f0d75a82fcdc99677fa0be8a4111cfe91e4a82c --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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/compressibleTwoPhaseEulerFoam/mixerVessel2D/makeMesh b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/makeMesh similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/makeMesh rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/makeMesh diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/controlDict b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/system/controlDict similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/controlDict rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/system/controlDict diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/fvSchemes b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes similarity index 78% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/fvSchemes rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes index 275907488b4c204290759f85a7003bb66f553902..faed9fcacb65e8c45c9e0fd693ffcbd571b48868 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/fvSchemes +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSchemes @@ -29,18 +29,18 @@ divSchemes { default none; - div(phi,alpha1) Gauss vanLeer; - div(phir,alpha1) Gauss vanLeer; + div(phi,alpha.air) Gauss vanLeer; + div(phir,alpha.air) Gauss vanLeer; - "div\(alphaPhi.,U.\)" Gauss limitedLinearV 1; - "div\(phi.,U.\)" Gauss limitedLinearV 1; + "div\(alphaPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; "div\(\(alpha.*Rc\)\)" Gauss linear; "div\(phi.*,.*rho.*\)" Gauss linear; - "div\(alphaPhi.,h.\)" Gauss limitedLinear 1; - "div\(alphaPhi.,K.\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,h.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,K.*\)" Gauss limitedLinear 1; - "div\(alphaPhi.,(k|epsilon)\)" Gauss limitedLinear 1; + "div\(\(\(alpha.*nuEff.*\)*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; } laplacianSchemes diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/fvSolution b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSolution similarity index 85% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/fvSolution rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSolution index 5e6a4b0b21269cbbd6cbde062c090325a1bf1e5e..1646b9187f5ab0b3fea14a9744035c7f1f3cd820 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/fvSolution +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/system/fvSolution @@ -17,7 +17,7 @@ FoamFile solvers { - alpha1 + alpha.air { nAlphaCorr 1; nAlphaSubCycles 2; @@ -51,14 +51,6 @@ solvers relTol 0.1; } - "alpha.*" - { - solver PBiCG; - preconditioner DILU; - tolerance 1e-10; - relTol 0; - } - "(k|epsilon|Theta|h).*" { solver PBiCG; @@ -85,12 +77,7 @@ relaxationFactors } equations { - "U.*" 1; - "h.*" 1; - "alpha.*" 1; - "Theta.*" 1; - "k.*" 1; - "epsilon.*" 1; + ".*" 1; } } diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/topoSetDict b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/system/topoSetDict similarity index 100% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/topoSetDict rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/laminar/mixerVessel2D/system/topoSetDict diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/interfacialProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/interfacialProperties deleted file mode 100644 index 06b13a7b3c68ae7a87a4c2f40e232fef99502c7d..0000000000000000000000000000000000000000 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/interfacialProperties +++ /dev/null @@ -1,30 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: 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 interfacialProperties; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -dragModel1 SchillerNaumann; -dragModel2 SchillerNaumann; - -heatTransferModel1 RanzMarshall; -heatTransferModel2 RanzMarshall; - -dispersedPhase both; -dragPhase blended; - -residualPhaseFraction 1e-3; -residualSlip 1e-2; - -// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/kineticTheoryProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/kineticTheoryProperties deleted file mode 100644 index 2df50542e555669990b2caa032cf9aee7f92b8ad..0000000000000000000000000000000000000000 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/kineticTheoryProperties +++ /dev/null @@ -1,52 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: 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 kineticTheoryProperties; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -kineticTheory off; - -equilibrium on; - -e e [ 0 0 0 0 0 0 0 ] 0.9; - -alphaMax alphaMax [ 0 0 0 0 0 0 0 ] 0.6; - -alphaMinFriction alphaMinFriction [ 0 0 0 0 0 0 0 ] 0.5; - -Fr Fr [ 1 -1 -2 0 0 0 0 ] 0.05; - -eta eta [ 0 0 0 0 0 0 0 ] 2; - -p p [ 0 0 0 0 0 0 0 ] 5; - -phi phi [ 0 0 0 0 0 0 0 ] 25; - -viscosityModel Syamlal; - -conductivityModel HrenyaSinclair; - -granularPressureModel Lun; - -frictionalStressModel JohnsonJackson; - -radialModel SinclairJackson; - -HrenyaSinclairCoeffs -{ - L L [ 0 1 0 0 0 0 0 ] 0.0005; -} - - -// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/T2 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/T.air similarity index 95% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/T2 rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/T.air index fc6ae7931a5ba41cf54ac1e03856622d22855d4d..9c0fd4206c19f34a05d8c05da28254b22882ebcf 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/T2 +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/T.air @@ -10,7 +10,7 @@ FoamFile version 2.0; format ascii; class volScalarField; - object T2; + object Tair; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -20,25 +20,22 @@ internalField uniform 300; boundaryField { - inlet + walls { - type fixedValue; - value $internalField; + type zeroGradient; } - outlet { type inletOutlet; - phi phi2; + phi phi.air; inletValue $internalField; value $internalField; } - - walls + inlet { - type zeroGradient; + type fixedValue; + value $internalField; } - frontAndBackPlanes { type empty; diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/T.water b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/T.water new file mode 100644 index 0000000000000000000000000000000000000000..1cfd38f926516878085292090cf2e55699fef0cb --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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 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/compressibleTwoPhaseEulerFoam/bubbleColumn/0/k b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/Theta similarity index 82% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/k rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/Theta index 9701bd625c5d07a6522baa8bdfbbc7b42ba0db3c..e45304b83464ea6a9568531b35b570abae0d768f 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/k +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/Theta @@ -10,28 +10,27 @@ FoamFile version 2.0; format ascii; class volScalarField; - object k; + object Theta; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -dimensions [0 2 -2 0 0 0 0]; +dimensions [ 0 2 -2 0 0 0 0 ]; -internalField uniform 1e-8; +internalField uniform 0.0; boundaryField { inlet { type fixedValue; - value uniform 1e-8; + value uniform 1.0e-7; } outlet { type inletOutlet; - phi phiwater; - inletValue uniform 1e-8; - value uniform 1e-8; + inletValue uniform 1.0e-7; + value uniform 1.0e-7; } walls diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/U.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/U.air new file mode 100644 index 0000000000000000000000000000000000000000..e81fffac0612e0a20d26f1cb9be4211ba4be9a16 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/U.water b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/U.water new file mode 100644 index 0000000000000000000000000000000000000000..aab00fd78bb2a097604737fb5b1b77d2ae159967 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/alpha.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/alpha.air new file mode 100644 index 0000000000000000000000000000000000000000..b59d4482b471c29d89a5c8186b5793446cb7a1a5 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/alpha.air.org b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/alpha.air.org new file mode 100644 index 0000000000000000000000000000000000000000..4472b0c63598b7f95acf8d79fac10b3e9a08ebf7 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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/compressibleTwoPhaseEulerFoam/bubbleColumn/0/epsilon b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/epsilon.air similarity index 80% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/epsilon rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/epsilon.air index bb5b3e0a73f083f93109b40e0d3659f5f1466b6d..ed94c59d53a9495e41cc6911c3618799ad0daff1 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/0/epsilon +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/epsilon.air @@ -16,27 +16,28 @@ FoamFile dimensions [0 2 -3 0 0 0 0]; -internalField uniform 0.1; +internalField uniform 1.5e-4; boundaryField { inlet { type fixedValue; - value uniform 0.1; + value $internalField; } outlet { type inletOutlet; - phi phiwater; - inletValue uniform 0.1; - value uniform 0.1; + phi phi.air; + inletValue $internalField; + value $internalField; } walls { - type zeroGradient; + type epsilonWallFunction; + value $internalField; } defaultFaces diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/epsilon.water b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/epsilon.water new file mode 100644 index 0000000000000000000000000000000000000000..1cd27e448b42cb846648d2fb9e609e6d44c25b78 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +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/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/k.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/k.air new file mode 100644 index 0000000000000000000000000000000000000000..b4dd7631087bbf4acdc15b118acf9d03ac9ae048 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +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/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/k.water b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/k.water new file mode 100644 index 0000000000000000000000000000000000000000..3381282f9ca36cd142af029eacdd2189886c1b52 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +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/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/nut.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/nut.air new file mode 100644 index 0000000000000000000000000000000000000000..475091edaa9d00eaef74cb5e5f0031b7381d4a56 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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 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/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/nut.water b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/nut.water new file mode 100644 index 0000000000000000000000000000000000000000..475091edaa9d00eaef74cb5e5f0031b7381d4a56 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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 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/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/p b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/0/p new file mode 100644 index 0000000000000000000000000000000000000000..ae2c14b7460e91d82d3717d540b6a9d33dc087e8 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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 fixedFluxPressure; + value $internalField; + } + outlet + { + type fixedValue; + value $internalField; + } + walls + { + type fixedFluxPressure; + value $internalField; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/g b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..0cc222ca3457ed24bf9753d0926fbee84359e624 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/transportProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/phaseProperties similarity index 83% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/transportProperties rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/phaseProperties index 4109b97fba732b43a9d34b6c3d5b3e6f150495ee..445b31ed27b4c066e571fb74975243250710e8f6 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/transportProperties +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/phaseProperties @@ -11,7 +11,7 @@ FoamFile format ascii; class dictionary; location "constant"; - object transportProperties; + object phaseProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -36,6 +36,23 @@ water } } +drag +{ + air SchillerNaumann; + water SchillerNaumann; +} + +heatTransfer +{ + air RanzMarshall; + water RanzMarshall; +} + +dispersedPhase both; + +residualPhaseFraction 1e-3; +residualSlip 1e-2; + // Virtual-mass ceofficient Cvm 0.5; @@ -49,4 +66,5 @@ Ct 1; pMin 10000; + // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/ppProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/polyMesh/blockMeshDict similarity index 64% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/ppProperties rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/polyMesh/blockMeshDict index eddbfd7ad7910a8a85af9c310b1424eb18d3eb1e..d03967afdc2ccf7afbecdf32d50159c309a475e3 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/ppProperties +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/polyMesh/blockMeshDict @@ -10,20 +10,52 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; - object ppProperties; + object blockMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -preAlphaExp 300; +convertToMeters 1; -expMax 10; +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) +); -alphaMax 0.6; +blocks +( + hex (0 1 2 3 4 5 6 7) (25 75 1) simpleGrading (1 1 1) +); -g0 g0 [ 1 -1 -2 0 0 0 0 ] 0; +edges +( +); -packingLimiter off; +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/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/polyMesh/boundary b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..bf47f69643c9925d3a1ef19c6b4ddc67cf604e0a --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/polyMesh/boundary @@ -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 polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 25; + startFace 3650; + } + outlet + { + type patch; + nFaces 25; + startFace 3675; + } + walls + { + type wall; + nFaces 150; + startFace 3700; + } + defaultFaces + { + type empty; + inGroups 1(empty); + nFaces 3750; + startFace 3850; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/thermophysicalProperties.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/thermophysicalProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..3cac781ab1bf649afe060310f5ea7c898123efd9 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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 sensibleEnthalpy; +} + +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/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/thermophysicalPropertieswater b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/thermophysicalProperties.water similarity index 96% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/thermophysicalPropertieswater rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/thermophysicalProperties.water index 789f0427d7c9bd5d4d833f44b0f39359e8ab8bbf..935e0715ef3cf71e6fd0cbe435f89c3edce89c87 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/thermophysicalPropertieswater +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/thermophysicalProperties.water @@ -11,7 +11,7 @@ FoamFile format ascii; class dictionary; location "constant"; - object thermophysicalProperties; + object thermophysicalProperties.water; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/ppProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/turbulenceProperties.air similarity index 84% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/ppProperties rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/turbulenceProperties.air index eddbfd7ad7910a8a85af9c310b1424eb18d3eb1e..6deff0f5921aabff4e42de76f78754a54622b8ca 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/constant/ppProperties +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/turbulenceProperties.air @@ -11,19 +11,19 @@ FoamFile format ascii; class dictionary; location "constant"; - object ppProperties; + object turbulenceProperties.air; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -preAlphaExp 300; +simulationType RAS; -expMax 10; - -alphaMax 0.6; - -g0 g0 [ 1 -1 -2 0 0 0 0 ] 0; +RAS +{ + RASModel continuousGasKEpsilon; -packingLimiter off; + turbulence on; + printCoeffs on; +} // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/ppProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/turbulenceProperties.water similarity index 80% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/ppProperties rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/turbulenceProperties.water index f6416561c0ae471b7d9191871e2c6bcd33667bda..357bfd4bfa5f7974058e2832f9fec5c93ef60a89 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/constant/ppProperties +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/constant/turbulenceProperties.water @@ -11,19 +11,24 @@ FoamFile format ascii; class dictionary; location "constant"; - object ppProperties; + object turbulenceProperties.water; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -preAlphaExp 500; +simulationType RAS; -expMax 1000; - -alphaMax 0.62; +RAS +{ + RASModel LaheyKEpsilon; -g0 g0 [ 1 -1 -2 0 0 0 0 ] 0; + turbulence on; -packingLimiter no; + printCoeffs on; + LaheyKEpsilonCoeffs + { + //Cmub 0; + } +} // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/system/controlDict b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..18bd2e06daecdad9cfcfe4aa17a643d49df8d145 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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 compressibleTwoPhaseEulerFoam; + +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/compressibleTwoPhaseEulerFoam/fluidisedBed/system/fvSchemes b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/system/fvSchemes similarity index 63% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/fvSchemes rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/system/fvSchemes index 6cbee38f7871c73a58663948be4905135d9e649e..9393e5c97eebcfa75718194cba3bc6ff794421ee 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/fvSchemes +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/system/fvSchemes @@ -17,52 +17,53 @@ FoamFile ddtSchemes { - default Euler; + default Euler; } gradSchemes { - default Gauss linear; + default Gauss linear; } divSchemes { default none; - div(phi,alpha1) Gauss vanLeer; - div(phir,alpha1) Gauss vanLeer; + div(phi,alpha.air) Gauss vanLeer; + div(phir,alpha.air) Gauss vanLeer; - "div\(alphaPhi.,U.\)" Gauss limitedLinearV 1; - "div\(phi.,U.\)" Gauss limitedLinearV 1; + "div\(alphaPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; "div\(\(alpha.*Rc\)\)" Gauss linear; "div\(phi.*,.*rho.*\)" Gauss linear; - "div\(alphaPhi.,(h|e).\)" Gauss limitedLinear 1; - "div\(alphaPhi.,(K.|p)\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,h.*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,K.*\)" Gauss limitedLinear 1; - div(alphaPhi2,k) Gauss limitedLinear 1; - div(alphaPhi2,epsilon) Gauss limitedLinear 1; + "div\(alphaPhi.*,(k|epsilon).*\)" Gauss limitedLinear 1; + + "div\(\(\(alpha.*nuEff.*\)*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; } laplacianSchemes { - default Gauss linear uncorrected; + default Gauss linear uncorrected; } interpolationSchemes { - default linear; + default linear; } snGradSchemes { - default uncorrected; + default uncorrected; } fluxRequired { - default no; - p ; + default no; + p ; } diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/fvSolution b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/system/fvSolution similarity index 87% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/fvSolution rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/system/fvSolution index 1689fc3519883a0af17454b6842bfb264a5690a3..31c23479937af718dd1eb38c7bd6698d9b987645 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/fvSolution +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/system/fvSolution @@ -17,7 +17,7 @@ FoamFile solvers { - alphaair + alpha.air { nAlphaCorr 1; nAlphaSubCycles 2; @@ -49,7 +49,7 @@ solvers { solver PBiCG; preconditioner DILU; - tolerance 1e-05; + tolerance 1e-7; relTol 0; } @@ -57,7 +57,7 @@ solvers { solver PBiCG; preconditioner DILU; - tolerance 1e-8; + tolerance 1e-7; relTol 0; } @@ -65,7 +65,7 @@ solvers { solver PBiCG; preconditioner DILU; - tolerance 1e-05; + tolerance 1e-7; relTol 0; } } @@ -84,12 +84,7 @@ relaxationFactors } equations { - "U.*" 1; - "h.*" 1; - "alpha.*" 1; - "Theta.*" 1; - "k.*" 1; - "epsilon.*" 1; + ".*" 1; } } diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/setFieldsDict b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/system/setFieldsDict similarity index 79% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/setFieldsDict rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/system/setFieldsDict index 8347405ba76b4e99de866bf32c536313cec19d29..93d742ba74a2424f861b51d1c5d2d8211a625715 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/setFieldsDict +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/bubbleColumn/system/setFieldsDict @@ -15,9 +15,22 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -defaultFieldValues ( volScalarFieldValue alpha1 0 ); +defaultFieldValues +( + volScalarFieldValue alpha.air 1 +); -regions ( boxToCell { box ( 0 0 -0.1 ) ( 0.15 0.5 0.1 ) ; fieldValues ( volScalarFieldValue alpha1 0.55 ) ; } ); +regions +( + boxToCell + { + box (0 0 -0.1) (0.15 0.701 0.1); + fieldValues + ( + volScalarFieldValue alpha.air 0 + ); + } +); // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/T.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/T.air new file mode 100644 index 0000000000000000000000000000000000000000..5e2332c34b0949d669c8c0309ff964318c1151ce --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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 300; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.air; + inletValue $internalField; + value $internalField; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/T.particles b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/T.particles new file mode 100644 index 0000000000000000000000000000000000000000..155187199907bcc1ea0a526baea46812b3b29d63 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/T.particles @@ -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.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 600; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + + outlet + { + type inletOutlet; + phi phi.particles; + inletValue $internalField; + value $internalField; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/k b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/Theta.particles similarity index 68% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/k rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/Theta.particles index 1ae05e468e21b3ba28c4aecccfafa12962e30bce..c9b385ccd8b7ceba80aa3332b0c25b85d8328566 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/0/k +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/Theta.particles @@ -10,30 +10,27 @@ FoamFile version 2.0; format ascii; class volScalarField; - object k; + object Theta.particles; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// ************************************************************************* // dimensions [ 0 2 -2 0 0 0 0 ]; -internalField uniform 1.0; +internalField uniform 0; -referenceLevel 0; +referenceLevel 1e-4; boundaryField { inlet { type fixedValue; - value uniform 1.0; + value uniform 1e-4; } outlet { - type inletOutlet; - phi phi2; - inletValue uniform 1.0; - value uniform 1.0; + type zeroGradient; } walls @@ -47,4 +44,4 @@ boundaryField } } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/U.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/U.air new file mode 100644 index 0000000000000000000000000000000000000000..4896cfb962a47eebb1ef639ae307045472f49060 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/U.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 volVectorField; + object U.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0.25 0); + +boundaryField +{ + inlet + { + type fixedValue; + value uniform (0 0.25 0); + } + + outlet + { + type pressureInletOutletVelocity; + phi phi.air; + value $internalField; + } + + walls + { + type fixedValue; + value uniform (0 0 0); + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/U.particles b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/U.particles new file mode 100644 index 0000000000000000000000000000000000000000..95abcf62b37fe1a1613711e17040560e5d1d4ed9 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/U.particles @@ -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 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 pressureInletOutletVelocity; + phi phi.particles; + value $internalField; + } + + walls + { + type fixedValue; + value uniform (0 0 0); + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/alpha.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/alpha.air new file mode 100644 index 0000000000000000000000000000000000000000..b75ea3d3e03df9d73afb17585bda6169698da32b --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/alpha.air @@ -0,0 +1,6048 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: 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 fixedValue; + value uniform 1; + } + outlet + { + type zeroGradient; + } + walls + { + type zeroGradient; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/alpha.air.org b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/alpha.air.org new file mode 100644 index 0000000000000000000000000000000000000000..29db06c78367cb29c5f8b9b9bdc7ca58ee1db9c6 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/alpha.air.org @@ -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 alpha.air; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 1; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } + + frontAndBackPlanes + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/alpha.particles b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/alpha.particles new file mode 100644 index 0000000000000000000000000000000000000000..54696662f7dd9c369fbe0270605298b659c2d100 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/alpha.particles @@ -0,0 +1,6048 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: 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 fixedValue; + value uniform 0; + } + outlet + { + type zeroGradient; + } + walls + { + type zeroGradient; + } + frontAndBackPlanes + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/k b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/alpha.particles.org similarity index 85% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/k rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/alpha.particles.org index 4704b49c838eb9f1f6c32dad5d2440ad7e7989f6..69666444bc1beb16275c2ac20a69f6c41cd4252e 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/0/k +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/alpha.particles.org @@ -10,39 +10,36 @@ FoamFile version 2.0; format ascii; class volScalarField; - location "0"; - object k; + object alpha.particles; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -dimensions [ 0 2 -2 0 0 0 0 ]; +dimensions [0 0 0 0 0 0 0]; internalField uniform 0; boundaryField { - rotor + inlet { - type zeroGradient; + type fixedValue; value uniform 0; } - stator + outlet { type zeroGradient; - value uniform 0; } - front + walls { - type empty; + type zeroGradient; } - back + frontAndBackPlanes { type empty; } } - // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/epsilon.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/epsilon.air new file mode 100644 index 0000000000000000000000000000000000000000..0b5f62a356b3f5a9ce5db5401e0b4f29bc1e4fc9 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/k.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/k.air new file mode 100644 index 0000000000000000000000000000000000000000..6d823d53288103b382da9a843830d5b1df37a263 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/k.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 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; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/nut.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/nut.air new file mode 100644 index 0000000000000000000000000000000000000000..dcb65148ae4e0675d7368e0bea77ff0db7f72e60 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/nut.particles b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/nut.particles new file mode 100644 index 0000000000000000000000000000000000000000..6264a273f79124da66e26f9f2edf102259ac0874 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/p b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/0/p new file mode 100644 index 0000000000000000000000000000000000000000..08560053d57ba942a2a9776708fdbf73c01af651 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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 fixedFluxPressure; + value $internalField; + } + + outlet + { + type fixedValue; + value $internalField; + } + + walls + { + type fixedFluxPressure; + value $internalField; + } + + frontAndBackPlanes + { + type empty; + } +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/g b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/g new file mode 100644 index 0000000000000000000000000000000000000000..e0ac2653b5b370ad62f6770588121d30cac51627 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/phaseProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/phaseProperties new file mode 100644 index 0000000000000000000000000000000000000000..7d994cb3fd15234bf6cd8674e841b546b691b1c1 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/phaseProperties @@ -0,0 +1,65 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: 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; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +phases (particles air); + +particles +{ + diameterModel constant; + constantCoeffs + { + d 3e-4; + } +} + +air +{ + diameterModel constant; + constantCoeffs + { + d 1; + } +} + +drag +{ + particles GidaspowErgunWenYu; + air GidaspowErgunWenYu; +} + +heatTransfer +{ + particles RanzMarshall; + air RanzMarshall; +} + +dispersedPhase particles; + +residualPhaseFraction 1e-3; +residualSlip 1e-2; + +// Virtual-mass ceofficient +Cvm 0; + +// Lift coefficient +Cl 0; + +// Minimum allowable pressure +pMin 10000; + + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/polyMesh/blockMeshDict b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/polyMesh/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..900f5a585b8a3abd2fd564c7b949035e390640ea --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/polyMesh/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/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/polyMesh/boundary b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..a9ee4ff2e652ee07eb4f455a9e47c2de57453c61 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/polyMesh/boundary @@ -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 polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +4 +( + inlet + { + type patch; + nFaces 30; + startFace 11770; + } + outlet + { + type patch; + nFaces 30; + startFace 11800; + } + walls + { + type wall; + nFaces 400; + startFace 11830; + } + frontAndBackPlanes + { + type empty; + inGroups 1(empty); + nFaces 12000; + startFace 12230; + } +) + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/thermophysicalProperties.air b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/thermophysicalProperties.air new file mode 100644 index 0000000000000000000000000000000000000000..befc0aeae449cccc50a24e955083b88b914aba67 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/thermophysicalProperties.particles b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/thermophysicalProperties.particles new file mode 100644 index 0000000000000000000000000000000000000000..7508b70aa3194312b37a36e71753f74b9cf76166 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/RASProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/turbulenceProperties.air similarity index 88% rename from tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/RASProperties rename to tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/turbulenceProperties.air index 41b54318fe41ab6593fd868ca5c080769a1988c1..673e6f8d344ed3f2cec5580af31a02b32ee064f4 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/RASProperties +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/turbulenceProperties.air @@ -11,15 +11,18 @@ FoamFile format ascii; class dictionary; location "constant"; - object RASProperties; + object turbulenceProperties.air; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -RASModel kEpsilon; +simulationType RAS; -turbulence off; +RAS +{ + RASModel kEpsilon; -printCoeffs on; + turbulence on; +} // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/turbulenceProperties.particles b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/turbulenceProperties.particles new file mode 100644 index 0000000000000000000000000000000000000000..d41e1058279efa8cdfd53f1d6354c7bc2e07e6e5 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/constant/turbulenceProperties.particles @@ -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 "constant"; + object turbulenceProperties.particles; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel kineticTheory; + + turbulence 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; + } + } + + phasePressureCoeffs + { + preAlphaExp 500; + expMax 1000; + alphaMax 0.62; + g0 1000; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/system/controlDict b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..103ff2a9794a349e2a2939e9afb239fcbe9ceae2 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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 compressibleTwoPhaseEulerFoam; + +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/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/system/fvSchemes b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..93e6cddd228f756399f32ab3ef4d57a9ab9611a7 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/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\(alphaPhi.*,U.*\)" Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + "div\(\(alpha.*Rc\)\)" Gauss linear; + "div\(phi.*,.*rho.*\)" Gauss linear; + div(alphaPhi.particles,Theta.particles) Gauss limitedLinear 1; + div(alphaPhi.air,k.air) Gauss limitedLinear 1; + div(alphaPhi.air,epsilon.air) Gauss limitedLinear 1; + + "div\(alphaPhi.*,(h|e).*\)" Gauss limitedLinear 1; + "div\(alphaPhi.*,(K.*|p)\)" Gauss limitedLinear 1; + + "div\(\(\(alpha.*nuEff.*\)*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; + + div(((nut.particles*dev2(T(grad(U.particles))))+((lambda.particles*div(phi.particles))*(1,0,0,1,0,1)))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear uncorrected; + bounded Gauss linear uncorrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default uncorrected; + bounded uncorrected; +} + +fluxRequired +{ + default no; + p ; + alpha.particles; +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/system/fvSolution b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..03aa48fd9aed26a22ed284a2a0c263191d2d4545 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/system/fvSolution @@ -0,0 +1,106 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: 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 PCG; + preconditioner DIC; + tolerance 1e-6; + relTol 0; + } + + p + { + solver GAMG; + smoother DIC; + nPreSweeps 0; + nPostSweeps 2; + nFinestSweeps 2; + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + tolerance 1e-08; + relTol 0.01; + } + + pFinal + { + $p; + tolerance 1e-08; + relTol 0; + } + + "U.*" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-05; + relTol 0; + } + + "(h|e).*" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-6; + relTol 0; + } + + "Theta.*" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-6; + relTol 0; + } + + "(k|epsilon).*" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-05; + relTol 0; + } +} + +PIMPLE +{ + nOuterCorrectors 1; + nCorrectors 3; + nNonOrthogonalCorrectors 0; +} + +relaxationFactors +{ + fields + { + } + equations + { + ".*" 1; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/system/setFieldsDict b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/ras/fluidisedBed/system/setFieldsDict new file mode 100644 index 0000000000000000000000000000000000000000..da4c6ee6f2b05ccee47aa322a096b2cacad742a0 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/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 + ); + } +); + + +// ************************************************************************* //