diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/EEqns.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/EEqns.H index 4562d1ed19..3911fa339d 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/EEqns.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/EEqns.H @@ -14,14 +14,18 @@ volScalarField& he1 = thermo1.he(); volScalarField& he2 = thermo2.he(); + volScalarField Cpv1(thermo1.Cpv()); + volScalarField Cpv2(thermo2.Cpv()); + fvScalarMatrix he1Eqn ( fvm::ddt(alpha1, he1) + fvm::div(alphaPhi1, he1) - fvm::laplacian(k1, he1) == - heatTransferCoeff*(thermo1.he(p, thermo2.T())/thermo1.Cp())/rho1 - - fvm::Sp(heatTransferCoeff/thermo1.Cp()/rho1, he1) + heatTransferCoeff*(thermo2.T() - thermo1.T())/rho1 + + heatTransferCoeff*he1/Cpv1/rho1 + - fvm::Sp(heatTransferCoeff/Cpv1/rho1, he1) + alpha1*(dpdt/rho1 - (fvc::ddt(K1) + fvc::div(phi1, K1))) ); @@ -31,8 +35,9 @@ + fvm::div(alphaPhi2, he2) - fvm::laplacian(k2, he2) == - heatTransferCoeff*(thermo2.he(p, thermo1.T())/thermo2.Cp())/rho2 - - fvm::Sp(heatTransferCoeff/thermo2.Cp()/rho2, he2) + heatTransferCoeff*(thermo1.T() - thermo2.T())/rho2 + + heatTransferCoeff*he2/Cpv2/rho2 + - fvm::Sp(heatTransferCoeff/Cpv2/rho2, he2) + alpha2*(dpdt/rho2 - (fvc::ddt(K2) + fvc::div(phi2, K2))) ); diff --git a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/alphaEqn.H b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/alphaEqn.H index 7dfad758b4..a20f53e014 100644 --- a/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/alphaEqn.H +++ b/applications/solvers/multiphase/compressibleTwoPhaseEulerFoam/alphaEqn.H @@ -2,8 +2,8 @@ surfaceScalarField alphaPhi1("alphaPhi" + phase1Name, phi1); surfaceScalarField alphaPhi2("alphaPhi" + phase2Name, phi2); { - word alphaScheme("div(phi,alpha)"); - word alpharScheme("div(phir,alpha)"); + word alphaScheme("div(phi," + alpha1.name() + ')'); + word alpharScheme("div(phir," + alpha1.name() + ')'); surfaceScalarField phic("phic", phi); surfaceScalarField phir("phir", phi1 - phi2); diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/Make/options b/applications/solvers/multiphase/multiphaseEulerFoam/Make/options index 7cd8f48ee4..688b9364b6 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/Make/options +++ b/applications/solvers/multiphase/multiphaseEulerFoam/Make/options @@ -1,4 +1,4 @@ -EXE_INC = \ +EXE_INC = -g \ -IphaseModel/lnInclude \ -ImultiphaseSystem/lnInclude \ -ImultiphaseFixedFluxPressure \ diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/UEqns.H b/applications/solvers/multiphase/multiphaseEulerFoam/UEqns.H index e6478e4d89..a63ff3c85a 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/UEqns.H +++ b/applications/solvers/multiphase/multiphaseEulerFoam/UEqns.H @@ -32,9 +32,10 @@ forAllIter(PtrDictionary, fluid.phases(), iter) "div(Rc)" ) == - - fvm::Sp(fluid.dragCoeff(phase, dragCoeffs())/phase.rho(), U) + //- fvm::Sp(fluid.dragCoeff(phase, dragCoeffs())/phase.rho(), U) //- (alpha*phase.rho())*fluid.lift(phase) - + (alpha/phase.rho())*fluid.Svm(phase) + //+ + (alpha/phase.rho())*fluid.Svm(phase) - fvm::Sp ( slamDampCoeff @@ -53,7 +54,7 @@ forAllIter(PtrDictionary, fluid.phases(), iter) alpha*(1 + (1/phase.rho())*fluid.Cvm(phase)), UEqns[phasei] ); - UEqns[phasei].relax(); + //UEqns[phasei].relax(); phasei++; } diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/pEqn.H b/applications/solvers/multiphase/multiphaseEulerFoam/pEqn.H index 07d867b1e7..5e71a2eeeb 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/pEqn.H +++ b/applications/solvers/multiphase/multiphaseEulerFoam/pEqn.H @@ -67,8 +67,29 @@ const volScalarField& alpha = phase; alphafs.set(phasei, fvc::interpolate(alpha).ptr()); - rAUs.set(phasei, (1.0/UEqns[phasei].A()).ptr()); - rAlphaAUfs.set(phasei, fvc::interpolate(alpha*rAUs[phasei]).ptr()); + + volScalarField dragCoeffi + ( + IOobject + ( + "dragCoeffi", + runTime.timeName(), + mesh + ), + fluid.dragCoeff(phase, dragCoeffs())/phase.rho(), + zeroGradientFvPatchScalarField::typeName + ); + dragCoeffi.correctBoundaryConditions(); + + rAUs.set(phasei, (1.0/(UEqns[phasei].A() + dragCoeffi)).ptr()); + rAlphaAUfs.set + ( + phasei, + ( + alphafs[phasei] + /fvc::interpolate(UEqns[phasei].A() + dragCoeffi) + ).ptr() + ); HbyAs[phasei] = rAUs[phasei]*UEqns[phasei].H(); @@ -115,10 +136,9 @@ } phiHbyAs[phasei] += - fvc::interpolate - ( - (1.0/phase.rho())*rAUs[phasei]*(*dcIter()) - )*phase2Ptr->phi(); + fvc::interpolate((*dcIter())/phase.rho()) + /fvc::interpolate(UEqns[phasei].A() + dragCoeffi) + *phase2Ptr->phi(); HbyAs[phasei] += (1.0/phase.rho())*rAUs[phasei]*(*dcIter()) @@ -240,7 +260,7 @@ + rAlphaAUfs[phasei]*mSfGradp/phase.rho() ); - // phase.U() = fvc::reconstruct(phase.phi()); + //phase.U() = fvc::reconstruct(phase.phi()); phase.U().correctBoundaryConditions(); U += alpha*phase.U(); diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/fvSchemes b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/fvSchemes index 2f9b6ccca2..37a7524ee6 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/fvSchemes +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/fvSchemes @@ -18,6 +18,8 @@ FoamFile ddtSchemes { default Euler; + + "ddt\(alpha.*,.*\)" bounded Euler; } gradSchemes @@ -27,25 +29,20 @@ gradSchemes divSchemes { - default none; + default none; - div(phi,alpha) Gauss limitedLinear01 1; - div(phir,alpha) Gauss limitedLinear01 1; - div(alphaPhiair,Uair) Gauss limitedLinearV 1; - div(alphaPhiwater,Uwater) Gauss limitedLinearV 1; - div(phiair,Uair) Gauss limitedLinearV 1; - div(phiwater,Uwater) Gauss limitedLinearV 1; - div((alphaair*Rc)) Gauss linear; - div((alphawater*Rc)) Gauss linear; - div(alphaPhiair,hair) Gauss limitedLinear 1; - div(alphaPhiwater,hwater) Gauss limitedLinear 1; - div(alphaPhiwater,k) Gauss limitedLinear 1; - div(alphaPhiwater,epsilon) Gauss limitedLinear 1; - div(phi,Theta) Gauss limitedLinear 1; - div(phidair,p) Gauss upwind; - div(phidwater,p) Gauss upwind; - div(phiair,Kair) Gauss limitedLinear 1; - div(phiwater,Kwater) Gauss limitedLinear 1; + div(phi,alphaair) Gauss vanLeer; + div(phir,alphaair) Gauss vanLeer; + + "div\(alphaPhi.*,U.*\)" bounded Gauss limitedLinearV 1; + "div\(phi.*,U.*\)" Gauss limitedLinearV 1; + "div\(\(alpha.*Rc\)\)" Gauss linear; + "div\(phid.*,p\)" Gauss upwind; + + "div\(alphaPhi.*,h.*\)" bounded Gauss limitedLinear 1; + "div\(phi.*,K.*\)" Gauss limitedLinear 1; + + "div\(alphaPhi.*,(k|epsilon)\)" bounded Gauss limitedLinear 1; } laplacianSchemes diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/fvSolution b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/fvSolution index b4dc8bc622..067ac927d0 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/fvSolution +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/bubbleColumn/system/fvSolution @@ -63,23 +63,7 @@ solvers relTol 0; } - "Theta.*" - { - solver PBiCG; - preconditioner DILU; - tolerance 1e-05; - relTol 0; - } - - "k.*" - { - solver PBiCG; - preconditioner DILU; - tolerance 1e-05; - relTol 0; - } - - "epsilon.*" + "(k|epsilon|Theta).*" { solver PBiCG; preconditioner DILU; diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/controlDict b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/controlDict index e688082587..e07be01b0e 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/controlDict +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/controlDict @@ -17,7 +17,7 @@ FoamFile application compressibleTwoPhaseEulerFoam; -startFrom latestTime; +startFrom startTime; startTime 0; diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/fvSchemes b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/fvSchemes index e1bb6834f6..72cf3cb54b 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/fvSchemes +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/fvSchemes @@ -17,57 +17,54 @@ FoamFile ddtSchemes { - default Euler; + default Euler; + + "ddt\(alpha.,.*\)" bounded Euler; } gradSchemes { - default Gauss linear; + default Gauss linear; } divSchemes { - default none; + default none; - div(alphaPhi1,U1) Gauss limitedLinearV 1; - div(alphaPhi2,U2) Gauss limitedLinearV 1; - div(phi1,U1) Gauss limitedLinearV 1; - div(phi2,U2) Gauss limitedLinearV 1; - div(alphaPhi1,h1) Gauss limitedLinear 1; - div(alphaPhi2,h2) Gauss limitedLinear 1; - div(alphaPhi2,k) Gauss limitedLinear 1; - div(alphaPhi2,epsilon) Gauss limitedLinear 1; - div(phi,alpha) Gauss limitedLinear01 1; - div(phir,alpha) Gauss limitedLinear01 1; - div(phi,Theta) Gauss limitedLinear 1; - div((alpha1*Rc)) Gauss linear; - div((alpha2*Rc)) Gauss linear; - div(phid1,p) Gauss upwind; - div(phid2,p) Gauss upwind; - div(phi1,K1) Gauss limitedLinear 1; - div(phi2,K2) Gauss limitedLinear 1; + div(phi,alpha1) Gauss vanLeer; + div(phir,alpha1) Gauss vanLeer; + + "div\(alphaPhi.,U.\)" bounded Gauss limitedLinearV 1; + "div\(phi.,U.\)" Gauss limitedLinearV 1; + "div\(\(alpha.*Rc\)\)" Gauss linear; + "div\(phid.,p\)" Gauss upwind; + + "div\(alphaPhi.,h.\)" bounded Gauss limitedLinear 1; + "div\(phi.,K.\)" Gauss limitedLinear 1; + + div(alphaPhi2,k) bounded Gauss limitedLinear 1; + div(alphaPhi2,epsilon) bounded Gauss limitedLinear 1; } laplacianSchemes { - default Gauss linear uncorrected; + default Gauss linear uncorrected; } interpolationSchemes { - default linear; + default linear; } snGradSchemes { - default uncorrected; + default uncorrected; } fluxRequired { - default no; - p ; - alpha1 ; + default no; + p ; } diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/fvSolution b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/fvSolution index b4dc8bc622..1c5fdb8117 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/fvSolution +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/fluidisedBed/system/fvSolution @@ -90,8 +90,8 @@ solvers PIMPLE { - nOuterCorrectors 1; - nCorrectors 2; + nOuterCorrectors 3; + nCorrectors 1; nNonOrthogonalCorrectors 0; nAlphaCorr 1; nAlphaSubCycles 2; diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/polyMesh/boundary b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/polyMesh/boundary index 292f25b806..188a0f0c58 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/polyMesh/boundary +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/polyMesh/boundary @@ -32,12 +32,14 @@ FoamFile front { type empty; + inGroups 1(empty); nFaces 3072; startFace 6336; } back { type empty; + inGroups 1(empty); nFaces 3072; startFace 9408; } diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/thermophysicalProperties1 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/thermophysicalProperties1 new file mode 100644 index 0000000000..11c033af59 --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/thermophysicalProperties1 @@ -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; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +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/mixerVessel2D/constant/thermophysicalProperties2 b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/thermophysicalProperties2 new file mode 100644 index 0000000000..672b24a98b --- /dev/null +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/thermophysicalProperties2 @@ -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; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectFluid; + specie specie; + energy sensibleEnthalpy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 28.9; + } + equationOfState + { + rho0 1027; + } + thermodynamics + { + Cp 4195; + Hf 0; + } + transport + { + mu 3.645e-4; + Pr 2.289; + } +} + + +// ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/transportProperties b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/transportProperties index 9ea9ed2189..071be24444 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/transportProperties +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/constant/transportProperties @@ -17,14 +17,6 @@ FoamFile phase1 { - rho0 0; - rho 0.88; - R 287; - Cp 1007; - nu 2.46e-05; - d 4e-3; - - kappa 2.63e-2; diameterModel isothermal; isothermalCoeffs { @@ -35,14 +27,6 @@ phase1 phase2 { - rho 733; - rho0 733; - R 1e10; - Cp 4195; - nu 2.73e-6; - d 1e-4; - - kappa 0.668; diameterModel constant; constantCoeffs { @@ -54,12 +38,13 @@ phase2 Cvm 0.5; // Lift coefficient -Cl 0; +Cl 0; // Dispersed-phase turbulence coefficient -Ct 0.2; +Ct 1; // Minimum allowable pressure pMin 10000; + // ************************************************************************* // diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/fvSchemes b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/fvSchemes index 56e5e3fd0d..e1b193c952 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/fvSchemes +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/fvSchemes @@ -18,6 +18,8 @@ FoamFile ddtSchemes { default Euler; + + "ddt\(alpha.*,.*\)" bounded Euler; } gradSchemes @@ -29,16 +31,18 @@ divSchemes { default none; - div(phi,alpha1) Gauss limitedLinear01 1; - div(phir,alpha1) Gauss limitedLinear01 1; + div(phi,alpha1) Gauss vanLeer; + div(phir,alpha1) Gauss vanLeer; + + "div\(alphaPhi.,U.\)" bounded Gauss limitedLinearV 1; "div\(phi.,U.\)" Gauss limitedLinearV 1; - "div\(alphaPhi.,U.\)" Gauss limitedLinearV 1; - "div\(\(alpha.*Rc.\)\)" Gauss linear; - "div\(alphaPhi.,(k|epsilon)\)" Gauss limitedLinear 1; - div(phi,Theta) Gauss limitedLinear 1; - "div\(phi.,K.\)" Gauss linear; - "div\(alphaPhi.,T.\)" Gauss limitedLinear 1; + "div\(\(alpha.*Rc\)\)" Gauss linear; "div\(phid.,p\)" Gauss linear; + + "div\(alphaPhi.,h.\)" bounded Gauss limitedLinear 1; + "div\(phi.,K.\)" Gauss linear; + + "div\(alphaPhi.,(k|epsilon)\)" bounded Gauss limitedLinear 1; } laplacianSchemes diff --git a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/fvSolution b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/fvSolution index 891746fcf3..97c8cb32d1 100644 --- a/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/fvSolution +++ b/tutorials/multiphase/compressibleTwoPhaseEulerFoam/mixerVessel2D/system/fvSolution @@ -36,7 +36,7 @@ solvers relTol 0; } - U + "U.*" { solver smoothSolver; smoother GaussSeidel; @@ -45,14 +45,6 @@ solvers relTol 0.1; } - UFinal - { - solver PBiCG; - preconditioner DILU; - tolerance 1e-07; - relTol 0; - } - "alpha.*" { solver PBiCG; @@ -61,7 +53,7 @@ solvers relTol 0; } - "(k|epsilon|Theta|T).*" + "(k|epsilon|Theta|h).*" { solver PBiCG; preconditioner DILU; @@ -76,7 +68,7 @@ PIMPLE nCorrectors 3; nNonOrthogonalCorrectors 0; nAlphaCorr 1; - correctAlpha yes; + nAlphaSubCycles 2; pRefCell 0; pRefValue 0; } @@ -85,16 +77,15 @@ relaxationFactors { fields { - p 1; } equations { "U.*" 1; + "h.*" 1; "alpha.*" 1; "Theta.*" 1; "k.*" 1; "epsilon.*" 1; - "T.*" 1; } }