diff --git a/applications/solvers/combustion/XiFoam/EaEqn.H b/applications/solvers/combustion/XiFoam/EaEqn.H index 6840c4eb6d..5493722c93 100644 --- a/applications/solvers/combustion/XiFoam/EaEqn.H +++ b/applications/solvers/combustion/XiFoam/EaEqn.H @@ -16,9 +16,13 @@ : -dpdt ) - fvm::laplacian(turbulence->alphaEff(), hea) + + sources(rho, hea) ); EaEqn.relax(); + + sources.constrain(EaEqn); + EaEqn.solve(); thermo.correct(); diff --git a/applications/solvers/combustion/XiFoam/Make/options b/applications/solvers/combustion/XiFoam/Make/options index 3a07a7de58..fdebdc8ce8 100644 --- a/applications/solvers/combustion/XiFoam/Make/options +++ b/applications/solvers/combustion/XiFoam/Make/options @@ -1,14 +1,20 @@ EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fieldSources/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude\ -I$(LIB_SRC)/engine/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \ - -I$(LIB_SRC)/thermophysicalModels/laminarFlameSpeed/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/finiteVolume/lnInclude + -I$(LIB_SRC)/thermophysicalModels/laminarFlameSpeed/lnInclude EXE_LIBS = \ + -lfiniteVolume \ + -lfieldSources \ + -lsampling \ + -lmeshTools \ -lengine \ -lcompressibleTurbulenceModel \ -lcompressibleRASModels \ @@ -16,6 +22,4 @@ EXE_LIBS = \ -lfluidThermophysicalModels \ -lreactionThermophysicalModels \ -lspecie \ - -llaminarFlameSpeedModels \ - -lmeshTools \ - -lfiniteVolume + -llaminarFlameSpeedModels diff --git a/applications/solvers/combustion/XiFoam/UEqn.H b/applications/solvers/combustion/XiFoam/UEqn.H index b9bc567aae..643a99f134 100644 --- a/applications/solvers/combustion/XiFoam/UEqn.H +++ b/applications/solvers/combustion/XiFoam/UEqn.H @@ -5,10 +5,13 @@ + turbulence->divDevRhoReff(U) == rho*g + + sources(rho, U) ); UEqn.relax(); + sources.constrain(UEqn); + if (pimple.momentumPredictor()) { solve(UEqn == -fvc::grad(p)); diff --git a/applications/solvers/combustion/XiFoam/XiFoam.C b/applications/solvers/combustion/XiFoam/XiFoam.C index 1573ede331..a3e90f7169 100644 --- a/applications/solvers/combustion/XiFoam/XiFoam.C +++ b/applications/solvers/combustion/XiFoam/XiFoam.C @@ -56,6 +56,7 @@ Description #include "ignition.H" #include "Switch.H" #include "pimpleControl.H" +#include "IObasicSourceList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/combustion/XiFoam/bEqn.H b/applications/solvers/combustion/XiFoam/bEqn.H index ff19598ba1..49c2c63ae7 100644 --- a/applications/solvers/combustion/XiFoam/bEqn.H +++ b/applications/solvers/combustion/XiFoam/bEqn.H @@ -34,7 +34,7 @@ if (ign.ignited()) // Calculate turbulent flame speed flux // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - surfaceScalarField phiSt(fvc::interpolate(rhou*StCorr*Su*Xi)*nf); + surfaceScalarField phiSt("phiSt", fvc::interpolate(rhou*StCorr*Su*Xi)*nf); scalar StCoNum = max ( @@ -50,9 +50,11 @@ if (ign.ignited()) ( fvm::ddt(rho, b) + mvConvection->fvmDiv(phi, b) - + fvm::div(phiSt, b, "div(phiSt,b)") + + fvm::div(phiSt, b) - fvm::Sp(fvc::div(phiSt), b) - fvm::laplacian(turbulence->alphaEff(), b) + == + sources(rho, b) ); @@ -64,6 +66,9 @@ if (ign.ignited()) // Solve for b // ~~~~~~~~~~~ bEqn.relax(); + + sources.constrain(bEqn); + bEqn.solve(); Info<< "min(b) = " << min(b).value() << endl; @@ -153,9 +158,13 @@ if (ign.ignited()) == - fvm::SuSp(-rho*Rc*Su0/Su, Su) - fvm::SuSp(rho*(sigmas + Rc), Su) + + sources(rho, Su) ); SuEqn.relax(); + + sources.constrain(SuEqn); + SuEqn.solve(); // Limit the maximum Su @@ -234,9 +243,13 @@ if (ign.ignited()) ), Xi ) + + sources(rho, Xi) ); XiEqn.relax(); + + sources.constrain(XiEqn); + XiEqn.solve(); // Correct boundedness of Xi diff --git a/applications/solvers/combustion/XiFoam/createFields.H b/applications/solvers/combustion/XiFoam/createFields.H index 17103885e5..3b7cd9b7ae 100644 --- a/applications/solvers/combustion/XiFoam/createFields.H +++ b/applications/solvers/combustion/XiFoam/createFields.H @@ -138,3 +138,5 @@ fields.add(b); fields.add(thermo.he()); fields.add(thermo.heu()); + + IObasicSourceList sources(mesh); diff --git a/applications/solvers/combustion/XiFoam/ftEqn.H b/applications/solvers/combustion/XiFoam/ftEqn.H index 96dbc3f06b..da1d76fe69 100644 --- a/applications/solvers/combustion/XiFoam/ftEqn.H +++ b/applications/solvers/combustion/XiFoam/ftEqn.H @@ -13,10 +13,16 @@ if (composition.contains("ft")) { volScalarField& ft = composition.Y("ft"); - solve + fvScalarMatrix ftEqn ( fvm::ddt(rho, ft) + mvConvection->fvmDiv(phi, ft) - fvm::laplacian(turbulence->alphaEff(), ft) + == + sources(rho, ft) ); + + sources.constrain(ftEqn); + + ftEqn.solve(); } diff --git a/applications/solvers/combustion/XiFoam/pEqn.H b/applications/solvers/combustion/XiFoam/pEqn.H index 1543ca539a..b5a6d173fb 100644 --- a/applications/solvers/combustion/XiFoam/pEqn.H +++ b/applications/solvers/combustion/XiFoam/pEqn.H @@ -16,6 +16,8 @@ if (pimple.transonic()) ) ); + sources.relativeFlux(fvc::interpolate(psi), phid); + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -23,8 +25,12 @@ if (pimple.transonic()) fvm::ddt(psi, p) + fvm::div(phid, p) - fvm::laplacian(rho*rAU, p) + == + sources(psi, p, rho.name()) ); + sources.constrain(pEqn); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) @@ -45,6 +51,8 @@ else ) ); + sources.relativeFlux(phiHbyA); + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -52,8 +60,12 @@ else fvm::ddt(psi, p) + fvc::div(phiHbyA) - fvm::laplacian(rho*rAU, p) + == + sources(psi, p, rho.name()) ); + sources.constrain(pEqn); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) @@ -68,6 +80,7 @@ else U = HbyA - rAU*fvc::grad(p); U.correctBoundaryConditions(); +sources.correct(U); K = 0.5*magSqr(U); if (thermo.dpdt()) diff --git a/applications/solvers/combustion/engineFoam/Make/options b/applications/solvers/combustion/engineFoam/Make/options index ff38fdf051..c7b3219f2d 100644 --- a/applications/solvers/combustion/engineFoam/Make/options +++ b/applications/solvers/combustion/engineFoam/Make/options @@ -1,14 +1,21 @@ EXE_INC = \ - -I../XiFoam \ + -I$(FOAM_SOLVERS)/combustion/XiFoam \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fieldSources/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/engine/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \ - -I$(LIB_SRC)/thermophysicalModels/laminarFlameSpeed/lnInclude \ - -I$(LIB_SRC)/finiteVolume/lnInclude + -I$(LIB_SRC)/thermophysicalModels/laminarFlameSpeed/lnInclude EXE_LIBS = \ + -lfiniteVolume \ + -lfieldSources \ + -lsampling \ + -lmeshTools \ -lengine \ -lcompressibleTurbulenceModel \ -lcompressibleRASModels \ @@ -16,5 +23,4 @@ EXE_LIBS = \ -lfluidThermophysicalModels \ -lreactionThermophysicalModels \ -lspecie \ - -llaminarFlameSpeedModels \ - -lfiniteVolume + -llaminarFlameSpeedModels diff --git a/applications/solvers/combustion/engineFoam/UEqn.H b/applications/solvers/combustion/engineFoam/UEqn.H index f110051946..de3dc757cc 100644 --- a/applications/solvers/combustion/engineFoam/UEqn.H +++ b/applications/solvers/combustion/engineFoam/UEqn.H @@ -3,6 +3,8 @@ fvm::ddt(rho, U) + fvm::div(phi, U) + turbulence->divDevRhoReff(U) + == + sources(rho, U) ); if (pimple.momentumPredictor()) diff --git a/applications/solvers/combustion/engineFoam/engineFoam.C b/applications/solvers/combustion/engineFoam/engineFoam.C index 0ee3df6b7b..65cd0356ed 100644 --- a/applications/solvers/combustion/engineFoam/engineFoam.C +++ b/applications/solvers/combustion/engineFoam/engineFoam.C @@ -59,6 +59,7 @@ Description #include "OFstream.H" #include "mathematicalConstants.H" #include "pimpleControl.H" +#include "IObasicSourceList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/combustion/engineFoam/pEqn.H b/applications/solvers/combustion/engineFoam/pEqn.H index 7b005cc311..b38d6dbf4b 100644 --- a/applications/solvers/combustion/engineFoam/pEqn.H +++ b/applications/solvers/combustion/engineFoam/pEqn.H @@ -13,6 +13,8 @@ if (pimple.transonic()) *((fvc::interpolate(HbyA) & mesh.Sf()) - fvc::meshPhi(rho, U)) ); + sources.relativeFlux(fvc::interpolate(psi), phid); + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -20,8 +22,12 @@ if (pimple.transonic()) fvm::ddt(psi, p) + fvm::div(phid, p) - fvm::laplacian(rho*rAU, p) + == + sources(psi, p, rho.name()) ); + sources.constrain(pEqn); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) @@ -39,6 +45,8 @@ else *((fvc::interpolate(HbyA) & mesh.Sf()) - fvc::meshPhi(rho, U)) ); + sources.relativeFlux(fvc::interpolate(rho), phiHbyA); + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -46,8 +54,12 @@ else fvm::ddt(psi, p) + fvc::div(phiHbyA) - fvm::laplacian(rho*rAU, p) + == + sources(psi, p, rho.name()) ); + sources.constrain(pEqn); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) @@ -62,6 +74,7 @@ else U = HbyA - rAU*fvc::grad(p); U.correctBoundaryConditions(); +sources.correct(U); K = 0.5*magSqr(U); if (thermo.dpdt()) diff --git a/applications/solvers/combustion/fireFoam/Make/options b/applications/solvers/combustion/fireFoam/Make/options index b7498e50f5..73804d8283 100644 --- a/applications/solvers/combustion/fireFoam/Make/options +++ b/applications/solvers/combustion/fireFoam/Make/options @@ -1,6 +1,8 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fieldSources/lnInclude \ -I${LIB_SRC}/meshTools/lnInclude \ + -I${LIB_SRC}/sampling/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \ -I$(LIB_SRC)/lagrangian/distributionModels/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ @@ -29,7 +31,9 @@ EXE_INC = \ EXE_LIBS = \ -lfiniteVolume \ + -lfieldSources \ -lmeshTools \ + -lsampling \ -lcompressibleRASModels \ -lcompressibleLESModels \ -lspecie \ diff --git a/applications/solvers/combustion/fireFoam/UEqn.H b/applications/solvers/combustion/fireFoam/UEqn.H index 31d01e4327..90e633fc36 100644 --- a/applications/solvers/combustion/fireFoam/UEqn.H +++ b/applications/solvers/combustion/fireFoam/UEqn.H @@ -5,10 +5,13 @@ + turbulence->divDevRhoReff(U) == parcels.SU(U) + + sources(rho, U) ); UEqn.relax(); + sources.constrain(UEqn); + if (pimple.momentumPredictor()) { solve diff --git a/applications/solvers/combustion/fireFoam/YEEqn.H b/applications/solvers/combustion/fireFoam/YEEqn.H index f979d3bb7d..a23f99dab7 100644 --- a/applications/solvers/combustion/fireFoam/YEEqn.H +++ b/applications/solvers/combustion/fireFoam/YEEqn.H @@ -30,9 +30,13 @@ tmp > mvConvection parcels.SYi(i, Yi) + surfaceFilm.Srho(i) + combustion->R(Yi) + + sources(rho, Yi) ); YiEqn.relax(); + + sources.constrain(YiEqn); + YiEqn.solve(mesh.solver("Yi")); Yi.max(0.0); @@ -69,9 +73,13 @@ tmp > mvConvection + radiation->Sh(thermo) + parcels.Sh(he) + surfaceFilm.Sh() + + sources(rho, he) ); EEqn.relax(); + + sources.constrain(EEqn); + EEqn.solve(); thermo.correct(); diff --git a/applications/solvers/combustion/fireFoam/createFields.H b/applications/solvers/combustion/fireFoam/createFields.H index 8159ee73aa..be23570078 100644 --- a/applications/solvers/combustion/fireFoam/createFields.H +++ b/applications/solvers/combustion/fireFoam/createFields.H @@ -146,3 +146,5 @@ ( additionalControlsDict.lookup("solvePrimaryRegion") ); + + IObasicSourceList sources(mesh); diff --git a/applications/solvers/combustion/fireFoam/fireFoam.C b/applications/solvers/combustion/fireFoam/fireFoam.C index 021ed3c6f0..3f30495a99 100644 --- a/applications/solvers/combustion/fireFoam/fireFoam.C +++ b/applications/solvers/combustion/fireFoam/fireFoam.C @@ -40,6 +40,7 @@ Description #include "solidChemistryModel.H" #include "psiCombustionModel.H" #include "pimpleControl.H" +#include "IObasicSourceList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/combustion/fireFoam/pEqn.H b/applications/solvers/combustion/fireFoam/pEqn.H index 4c33f5633e..6101c9dd5d 100644 --- a/applications/solvers/combustion/fireFoam/pEqn.H +++ b/applications/solvers/combustion/fireFoam/pEqn.H @@ -21,6 +21,7 @@ surfaceScalarField phiHbyA + phig ); +sources.relativeFlux(phiHbyA); while (pimple.correctNonOrthogonal()) { @@ -33,8 +34,11 @@ while (pimple.correctNonOrthogonal()) == parcels.Srho() + surfaceFilm.Srho() + + sources(psi, p_rgh, rho.name()) ); + sources.constrain(p_rghEqn); + p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) @@ -42,6 +46,7 @@ while (pimple.correctNonOrthogonal()) phi = phiHbyA + p_rghEqn.flux(); U = HbyA + rAU*fvc::reconstruct((p_rghEqn.flux() + phig)/rhorAUf); U.correctBoundaryConditions(); + sources.correct(U); } } diff --git a/applications/solvers/combustion/fireFoam/rhoEqn.H b/applications/solvers/combustion/fireFoam/rhoEqn.H index f939060181..c465309edb 100644 --- a/applications/solvers/combustion/fireFoam/rhoEqn.H +++ b/applications/solvers/combustion/fireFoam/rhoEqn.H @@ -30,14 +30,19 @@ Description \*---------------------------------------------------------------------------*/ { - solve + fvScalarMatrix rhoEqn ( fvm::ddt(rho) + fvc::div(phi) == parcels.Srho(rho) + surfaceFilm.Srho() + + sources(rho) ); + + sources.constrain(rhoEqn); + + rhoEqn.solve(); } // ************************************************************************* // diff --git a/applications/solvers/combustion/reactingFoam/EEqn.H b/applications/solvers/combustion/reactingFoam/EEqn.H index e1bf055604..5568c7e5be 100644 --- a/applications/solvers/combustion/reactingFoam/EEqn.H +++ b/applications/solvers/combustion/reactingFoam/EEqn.H @@ -19,9 +19,13 @@ // - fvm::laplacian(turbulence->muEff(), he) // unit lewis no. == reaction->Sh() + + sources(rho, he) ); EEqn.relax(); + + sources.constrain(EEqn); + EEqn.solve(); thermo.correct(); diff --git a/applications/solvers/combustion/reactingFoam/Make/options b/applications/solvers/combustion/reactingFoam/Make/options index 46b69a63cd..d29dc0ed9a 100644 --- a/applications/solvers/combustion/reactingFoam/Make/options +++ b/applications/solvers/combustion/reactingFoam/Make/options @@ -1,14 +1,21 @@ EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fieldSources/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \ -I$(LIB_SRC)/ODE/lnInclude \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/combustionModels/lnInclude EXE_LIBS = \ + -lfiniteVolume \ + -lfieldSources \ + -lmeshTools \ + -lsampling \ -lcompressibleTurbulenceModel \ -lcompressibleRASModels \ -lcompressibleLESModels \ @@ -17,5 +24,4 @@ EXE_LIBS = \ -lfluidThermophysicalModels \ -lchemistryModel \ -lODE \ - -lfiniteVolume \ -lcombustionModels diff --git a/applications/solvers/combustion/reactingFoam/UEqn.H b/applications/solvers/combustion/reactingFoam/UEqn.H index b9bc567aae..643a99f134 100644 --- a/applications/solvers/combustion/reactingFoam/UEqn.H +++ b/applications/solvers/combustion/reactingFoam/UEqn.H @@ -5,10 +5,13 @@ + turbulence->divDevRhoReff(U) == rho*g + + sources(rho, U) ); UEqn.relax(); + sources.constrain(UEqn); + if (pimple.momentumPredictor()) { solve(UEqn == -fvc::grad(p)); diff --git a/applications/solvers/combustion/reactingFoam/YEqn.H b/applications/solvers/combustion/reactingFoam/YEqn.H index ccc4b135a5..2f0d29fd84 100644 --- a/applications/solvers/combustion/reactingFoam/YEqn.H +++ b/applications/solvers/combustion/reactingFoam/YEqn.H @@ -28,9 +28,13 @@ tmp > mvConvection - fvm::laplacian(turbulence->muEff(), Yi) == reaction->R(Yi) + + sources(rho, Yi) ); YiEqn.relax(); + + sources.constrain(YiEqn); + YiEqn.solve(mesh.solver("Yi")); Yi.max(0.0); diff --git a/applications/solvers/combustion/reactingFoam/createFields.H b/applications/solvers/combustion/reactingFoam/createFields.H index 32bdd372ee..21769875ea 100644 --- a/applications/solvers/combustion/reactingFoam/createFields.H +++ b/applications/solvers/combustion/reactingFoam/createFields.H @@ -99,3 +99,5 @@ volScalarField dQ mesh, dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) ); + +IObasicSourceList sources(mesh); diff --git a/applications/solvers/combustion/reactingFoam/pEqn.H b/applications/solvers/combustion/reactingFoam/pEqn.H index 1543ca539a..2ed1bc1ca5 100644 --- a/applications/solvers/combustion/reactingFoam/pEqn.H +++ b/applications/solvers/combustion/reactingFoam/pEqn.H @@ -16,6 +16,8 @@ if (pimple.transonic()) ) ); + sources.relativeFlux(fvc::interpolate(psi), phid); + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -23,8 +25,12 @@ if (pimple.transonic()) fvm::ddt(psi, p) + fvm::div(phid, p) - fvm::laplacian(rho*rAU, p) + == + sources(psi, p, rho.name()) ); + sources.constrain(pEqn); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) @@ -45,6 +51,8 @@ else ) ); + sources.relativeFlux(fvc::interpolate(rho), phiHbyA); + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -52,8 +60,12 @@ else fvm::ddt(psi, p) + fvc::div(phiHbyA) - fvm::laplacian(rho*rAU, p) + == + sources(psi, p, rho.name()) ); + sources.constrain(pEqn); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) @@ -68,6 +80,7 @@ else U = HbyA - rAU*fvc::grad(p); U.correctBoundaryConditions(); +sources.correct(U); K = 0.5*magSqr(U); if (thermo.dpdt()) diff --git a/applications/solvers/combustion/reactingFoam/reactingFoam.C b/applications/solvers/combustion/reactingFoam/reactingFoam.C index cd7d371651..c68f94ebf7 100644 --- a/applications/solvers/combustion/reactingFoam/reactingFoam.C +++ b/applications/solvers/combustion/reactingFoam/reactingFoam.C @@ -34,6 +34,7 @@ Description #include "psiCombustionModel.H" #include "multivariateScheme.H" #include "pimpleControl.H" +#include "IObasicSourceList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/combustion/rhoReactingFoam/Make/options b/applications/solvers/combustion/rhoReactingFoam/Make/options index 6dbd401b63..0d1336e1ac 100644 --- a/applications/solvers/combustion/rhoReactingFoam/Make/options +++ b/applications/solvers/combustion/rhoReactingFoam/Make/options @@ -1,17 +1,23 @@ EXE_INC = \ - -I../reactingFoam \ + -I$(FOAM_SOLVERS)/combustion/reactingFoam \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fieldSources/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \ -I$(LIB_SRC)/ODE/lnInclude \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(FOAM_SOLVERS)/combustion/reactingFoam \ -I$(LIB_SRC)/combustionModels/lnInclude EXE_LIBS = \ + -lfiniteVolume \ + -lfieldSources \ + -lmeshTools \ + -lsampling \ -lcompressibleTurbulenceModel \ -lcompressibleRASModels \ -lcompressibleLESModels \ @@ -20,5 +26,4 @@ EXE_LIBS = \ -lfluidThermophysicalModels \ -lchemistryModel \ -lODE \ - -lfiniteVolume \ -lcombustionModels diff --git a/applications/solvers/combustion/rhoReactingFoam/createFields.H b/applications/solvers/combustion/rhoReactingFoam/createFields.H index e99639e189..4c517fb646 100644 --- a/applications/solvers/combustion/rhoReactingFoam/createFields.H +++ b/applications/solvers/combustion/rhoReactingFoam/createFields.H @@ -101,3 +101,5 @@ volScalarField dQ mesh, dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) ); + +IObasicSourceList sources(mesh); diff --git a/applications/solvers/combustion/rhoReactingFoam/pEqn.H b/applications/solvers/combustion/rhoReactingFoam/pEqn.H index 85dbbf7f7e..cb25d83662 100644 --- a/applications/solvers/combustion/rhoReactingFoam/pEqn.H +++ b/applications/solvers/combustion/rhoReactingFoam/pEqn.H @@ -18,6 +18,8 @@ + fvc::ddtPhiCorr(rAU, rho, U, phi) ); + sources.relativeFlux(phiHbyA); + surfaceScalarField phid("phid", fvc::interpolate(thermo.psi())*phiHbyA); phiHbyA *= fvc::interpolate(rho); @@ -34,8 +36,12 @@ ( pDDtEqn - fvm::laplacian(rho*rAU, p) + == + sources(psi, p, rho.name()) ); + sources.constrain(pEqn); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) @@ -56,10 +62,14 @@ ) ); + sources.relativeFlux(fvc::interpolate(rho), phiHbyA); + fvScalarMatrix pDDtEqn ( fvc::ddt(rho) + psi*correction(fvm::ddt(p)) + fvc::div(phiHbyA) + == + sources(psi, p, rho.name()) ); while (pimple.correctNonOrthogonal()) @@ -70,6 +80,8 @@ - fvm::laplacian(rho*rAU, p) ); + sources.constrain(pEqn); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) @@ -87,6 +99,7 @@ U = HbyA - rAU*fvc::grad(p); U.correctBoundaryConditions(); + sources.correct(U); K = 0.5*magSqr(U); if (thermo.dpdt()) diff --git a/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C b/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C index 3ac060612d..0a91aa4b03 100644 --- a/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C +++ b/applications/solvers/combustion/rhoReactingFoam/rhoReactingFoam.C @@ -35,6 +35,7 @@ Description #include "turbulenceModel.H" #include "multivariateScheme.H" #include "pimpleControl.H" +#include "IObasicSourceList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/compressible/rhoCentralFoam/BCs/T/smoluchowskiJumpTFvPatchScalarField.C b/applications/solvers/compressible/rhoCentralFoam/BCs/T/smoluchowskiJumpTFvPatchScalarField.C index d0183e9f7d..2b04637b04 100644 --- a/applications/solvers/compressible/rhoCentralFoam/BCs/T/smoluchowskiJumpTFvPatchScalarField.C +++ b/applications/solvers/compressible/rhoCentralFoam/BCs/T/smoluchowskiJumpTFvPatchScalarField.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-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -38,6 +38,10 @@ Foam::smoluchowskiJumpTFvPatchScalarField::smoluchowskiJumpTFvPatchScalarField ) : mixedFvPatchScalarField(p, iF), + UName_("U"), + rhoName_("rho"), + psiName_("thermo:psi"), + muName_("thermo:mu"), accommodationCoeff_(1.0), Twall_(p.size(), 0.0), gamma_(1.4) @@ -57,6 +61,10 @@ Foam::smoluchowskiJumpTFvPatchScalarField::smoluchowskiJumpTFvPatchScalarField ) : mixedFvPatchScalarField(ptf, p, iF, mapper), + UName_(ptf.UName_), + rhoName_(ptf.rhoName_), + psiName_(ptf.psiName_), + muName_(ptf.muName_), accommodationCoeff_(ptf.accommodationCoeff_), Twall_(ptf.Twall_), gamma_(ptf.gamma_) @@ -71,6 +79,10 @@ Foam::smoluchowskiJumpTFvPatchScalarField::smoluchowskiJumpTFvPatchScalarField ) : mixedFvPatchScalarField(p, iF), + UName_(dict.lookupOrDefault("U", "U")), + rhoName_(dict.lookupOrDefault("rho", "rho")), + psiName_(dict.lookupOrDefault("psi", "thermo:psi")), + muName_(dict.lookupOrDefault("mu", "thermo:mu")), accommodationCoeff_(readScalar(dict.lookup("accommodationCoeff"))), Twall_("Twall", dict, p.size()), gamma_(dict.lookupOrDefault("gamma", 1.4)) @@ -93,7 +105,7 @@ Foam::smoluchowskiJumpTFvPatchScalarField::smoluchowskiJumpTFvPatchScalarField dict ) << "unphysical accommodationCoeff specified" << "(0 < accommodationCoeff <= 1)" << endl - << exit(FatalError); + << exit(FatalIOError); } if (dict.found("value")) @@ -159,13 +171,13 @@ void Foam::smoluchowskiJumpTFvPatchScalarField::updateCoeffs() } const fvPatchScalarField& pmu = - patch().lookupPatchField("mu"); + patch().lookupPatchField(muName_); const fvPatchScalarField& prho = - patch().lookupPatchField("rho"); + patch().lookupPatchField(rhoName_); const fvPatchField& ppsi = - patch().lookupPatchField("psi"); + patch().lookupPatchField(psiName_); const fvPatchVectorField& pU = - patch().lookupPatchField("U"); + patch().lookupPatchField(UName_); // Prandtl number reading consistent with rhoCentralFoam const dictionary& thermophysicalProperties = @@ -204,6 +216,12 @@ void Foam::smoluchowskiJumpTFvPatchScalarField::updateCoeffs() void Foam::smoluchowskiJumpTFvPatchScalarField::write(Ostream& os) const { fvPatchScalarField::write(os); + + writeEntryIfDifferent(os, "U", "U", UName_); + writeEntryIfDifferent(os, "rho", "rho", rhoName_); + writeEntryIfDifferent(os, "psi", "thermo:psi", psiName_); + writeEntryIfDifferent(os, "mu", "thermo:mu", muName_); + os.writeKeyword("accommodationCoeff") << accommodationCoeff_ << token::END_STATEMENT << nl; Twall_.writeEntry("Twall", os); diff --git a/applications/solvers/compressible/rhoCentralFoam/BCs/T/smoluchowskiJumpTFvPatchScalarField.H b/applications/solvers/compressible/rhoCentralFoam/BCs/T/smoluchowskiJumpTFvPatchScalarField.H index 8f84cfb6e6..845aa9f424 100644 --- a/applications/solvers/compressible/rhoCentralFoam/BCs/T/smoluchowskiJumpTFvPatchScalarField.H +++ b/applications/solvers/compressible/rhoCentralFoam/BCs/T/smoluchowskiJumpTFvPatchScalarField.H @@ -53,13 +53,25 @@ class smoluchowskiJumpTFvPatchScalarField // Private data - // Accommodation coefficient + //- Velocity field name, default = "U" + word UName_; + + //- Density field name, default = "rho" + word rhoName_; + + //- Compressibility field name, default = "thermo:psi" + word psiName_; + + //- Dynamic viscosity field name, default = "thermo:mu" + word muName_; + + //- Accommodation coefficient scalar accommodationCoeff_; - // Wall surface temperature + //- Wall surface temperature scalarField Twall_; - // Heat capacity ratio (default 1.4) + //- Heat capacity ratio (default 1.4) scalar gamma_; public: diff --git a/applications/solvers/compressible/rhoCentralFoam/BCs/U/maxwellSlipUFvPatchVectorField.C b/applications/solvers/compressible/rhoCentralFoam/BCs/U/maxwellSlipUFvPatchVectorField.C index 875e42683e..6ec81dd4dc 100644 --- a/applications/solvers/compressible/rhoCentralFoam/BCs/U/maxwellSlipUFvPatchVectorField.C +++ b/applications/solvers/compressible/rhoCentralFoam/BCs/U/maxwellSlipUFvPatchVectorField.C @@ -30,20 +30,20 @@ License #include "volFields.H" #include "fvcGrad.H" -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField +Foam::maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField ( const fvPatch& p, const DimensionedField& iF ) : mixedFixedValueSlipFvPatchVectorField(p, iF), + TName_("T"), + rhoName_("rho"), + psiName_("thermo:psi"), + muName_("thermo:mu"), + tauMCName_("tauMC"), accommodationCoeff_(1.0), Uwall_(p.size(), vector(0.0, 0.0, 0.0)), thermalCreep_(true), @@ -51,23 +51,28 @@ maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField {} -maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField +Foam::maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField ( - const maxwellSlipUFvPatchVectorField& tdpvf, + const maxwellSlipUFvPatchVectorField& mspvf, const fvPatch& p, const DimensionedField& iF, const fvPatchFieldMapper& mapper ) : - mixedFixedValueSlipFvPatchVectorField(tdpvf, p, iF, mapper), - accommodationCoeff_(tdpvf.accommodationCoeff_), - Uwall_(tdpvf.Uwall_), - thermalCreep_(tdpvf.thermalCreep_), - curvature_(tdpvf.curvature_) + mixedFixedValueSlipFvPatchVectorField(mspvf, p, iF, mapper), + TName_(mspvf.TName_), + rhoName_(mspvf.rhoName_), + psiName_(mspvf.psiName_), + muName_(mspvf.muName_), + tauMCName_(mspvf.tauMCName_), + accommodationCoeff_(mspvf.accommodationCoeff_), + Uwall_(mspvf.Uwall_), + thermalCreep_(mspvf.thermalCreep_), + curvature_(mspvf.curvature_) {} -maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField +Foam::maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField ( const fvPatch& p, const DimensionedField& iF, @@ -75,6 +80,11 @@ maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField ) : mixedFixedValueSlipFvPatchVectorField(p, iF), + TName_(dict.lookupOrDefault("T", "T")), + rhoName_(dict.lookupOrDefault("rho", "rho")), + psiName_(dict.lookupOrDefault("psi", "thermo:psi")), + muName_(dict.lookupOrDefault("mu", "thermo:mu")), + tauMCName_(dict.lookupOrDefault("tauMC", "tauMC")), accommodationCoeff_(readScalar(dict.lookup("accommodationCoeff"))), Uwall_("Uwall", dict, p.size()), thermalCreep_(dict.lookupOrDefault("thermalCreep", true)), @@ -88,13 +98,16 @@ maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField { FatalIOErrorIn ( - "maxwellSlipUFvPatchScalarField::" - "maxwellSlipUFvPatchScalarField" - "(const fvPatch&, const scalarField&, const dictionary&)", + "maxwellSlipUFvPatchScalarField::maxwellSlipUFvPatchScalarField" + "(" + "const fvPatch&, " + "const DimensionedField&, " + "const dictionary&" + ")", dict ) << "unphysical accommodationCoeff_ specified" << "(0 < accommodationCoeff_ <= 1)" << endl - << exit(FatalError); + << exit(FatalIOError); } if (dict.found("value")) @@ -119,23 +132,28 @@ maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField } -maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField +Foam::maxwellSlipUFvPatchVectorField::maxwellSlipUFvPatchVectorField ( - const maxwellSlipUFvPatchVectorField& tdpvf, + const maxwellSlipUFvPatchVectorField& mspvf, const DimensionedField& iF ) : - mixedFixedValueSlipFvPatchVectorField(tdpvf, iF), - accommodationCoeff_(tdpvf.accommodationCoeff_), - Uwall_(tdpvf.Uwall_), - thermalCreep_(tdpvf.thermalCreep_), - curvature_(tdpvf.curvature_) + mixedFixedValueSlipFvPatchVectorField(mspvf, iF), + TName_(mspvf.TName_), + rhoName_(mspvf.rhoName_), + psiName_(mspvf.psiName_), + muName_(mspvf.muName_), + tauMCName_(mspvf.tauMCName_), + accommodationCoeff_(mspvf.accommodationCoeff_), + Uwall_(mspvf.Uwall_), + thermalCreep_(mspvf.thermalCreep_), + curvature_(mspvf.curvature_) {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void maxwellSlipUFvPatchVectorField::updateCoeffs() +void Foam::maxwellSlipUFvPatchVectorField::updateCoeffs() { if (updated()) { @@ -143,11 +161,11 @@ void maxwellSlipUFvPatchVectorField::updateCoeffs() } const fvPatchScalarField& pmu = - patch().lookupPatchField("mu"); + patch().lookupPatchField(muName_); const fvPatchScalarField& prho = - patch().lookupPatchField("rho"); + patch().lookupPatchField(rhoName_); const fvPatchField& ppsi = - patch().lookupPatchField("psi"); + patch().lookupPatchField(psiName_); Field C1 ( @@ -163,7 +181,7 @@ void maxwellSlipUFvPatchVectorField::updateCoeffs() if (thermalCreep_) { const volScalarField& vsfT = - this->db().objectRegistry::lookupObject("T"); + this->db().objectRegistry::lookupObject(TName_); label patchi = this->patch().index(); const fvPatchScalarField& pT = vsfT.boundaryField()[patchi]; Field gradpT(fvc::grad(vsfT)().boundaryField()[patchi]); @@ -175,7 +193,7 @@ void maxwellSlipUFvPatchVectorField::updateCoeffs() if (curvature_) { const fvPatchTensorField& ptauMC = - patch().lookupPatchField("tauMC"); + patch().lookupPatchField(tauMCName_); vectorField n(patch().nf()); refValue() -= C1/prho*transform(I - n*n, (n & ptauMC)); @@ -185,9 +203,15 @@ void maxwellSlipUFvPatchVectorField::updateCoeffs() } -void maxwellSlipUFvPatchVectorField::write(Ostream& os) const +void Foam::maxwellSlipUFvPatchVectorField::write(Ostream& os) const { fvPatchVectorField::write(os); + writeEntryIfDifferent(os, "T", "T", TName_); + writeEntryIfDifferent(os, "rho", "rho", rhoName_); + writeEntryIfDifferent(os, "psi", "thermo:psi", psiName_); + writeEntryIfDifferent(os, "mu", "thermo:mu", muName_); + writeEntryIfDifferent(os, "tauMC", "tauMC", tauMCName_); + os.writeKeyword("accommodationCoeff") << accommodationCoeff_ << token::END_STATEMENT << nl; Uwall_.writeEntry("Uwall", os); @@ -204,14 +228,13 @@ void maxwellSlipUFvPatchVectorField::write(Ostream& os) const // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -makePatchTypeField -( - fvPatchVectorField, - maxwellSlipUFvPatchVectorField -); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam +namespace Foam +{ + makePatchTypeField + ( + fvPatchVectorField, + maxwellSlipUFvPatchVectorField + ); +} // ************************************************************************* // diff --git a/applications/solvers/compressible/rhoCentralFoam/BCs/U/maxwellSlipUFvPatchVectorField.H b/applications/solvers/compressible/rhoCentralFoam/BCs/U/maxwellSlipUFvPatchVectorField.H index df441c5d91..afebd9a9bf 100644 --- a/applications/solvers/compressible/rhoCentralFoam/BCs/U/maxwellSlipUFvPatchVectorField.H +++ b/applications/solvers/compressible/rhoCentralFoam/BCs/U/maxwellSlipUFvPatchVectorField.H @@ -54,6 +54,21 @@ class maxwellSlipUFvPatchVectorField { // Private data + //- Temperature field name, default = "T" + word TName_; + + //- Density field name, default = "rho" + word rhoName_; + + //- Compressibility field name, default = "thermo:psi" + word psiName_; + + //- Dynamic viscosity field name, default = "thermo:mu" + word muName_; + + //- tauMC field name, default = "tauMC" + word tauMCName_; + // Accommodation coefficient scalar accommodationCoeff_; diff --git a/applications/solvers/compressible/rhoCentralFoam/BCs/mixedFixedValueSlip/mixedFixedValueSlipFvPatchField.C b/applications/solvers/compressible/rhoCentralFoam/BCs/mixedFixedValueSlip/mixedFixedValueSlipFvPatchField.C index 8f31a2b460..5c1459381f 100644 --- a/applications/solvers/compressible/rhoCentralFoam/BCs/mixedFixedValueSlip/mixedFixedValueSlipFvPatchField.C +++ b/applications/solvers/compressible/rhoCentralFoam/BCs/mixedFixedValueSlip/mixedFixedValueSlipFvPatchField.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-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -98,6 +98,7 @@ mixedFixedValueSlipFvPatchField::mixedFixedValueSlipFvPatchField valueFraction_(ptf.valueFraction_) {} + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // // Map from self diff --git a/applications/solvers/compressible/rhoCentralFoam/BCs/rho/fixedRhoFvPatchScalarField.C b/applications/solvers/compressible/rhoCentralFoam/BCs/rho/fixedRhoFvPatchScalarField.C index cf9450a657..5eefe82ff5 100644 --- a/applications/solvers/compressible/rhoCentralFoam/BCs/rho/fixedRhoFvPatchScalarField.C +++ b/applications/solvers/compressible/rhoCentralFoam/BCs/rho/fixedRhoFvPatchScalarField.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-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,27 +27,22 @@ License #include "addToRunTimeSelectionTable.H" #include "fvPatchFieldMapper.H" #include "volFields.H" -#include "surfaceFields.H" -#include "fvCFD.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -fixedRhoFvPatchScalarField::fixedRhoFvPatchScalarField +Foam::fixedRhoFvPatchScalarField::fixedRhoFvPatchScalarField ( const fvPatch& p, const DimensionedField& iF ) : - fixedValueFvPatchScalarField(p, iF) + fixedValueFvPatchScalarField(p, iF), + pName_("p"), + psiName_("thermo:psi") {} -fixedRhoFvPatchScalarField::fixedRhoFvPatchScalarField +Foam::fixedRhoFvPatchScalarField::fixedRhoFvPatchScalarField ( const fixedRhoFvPatchScalarField& ptf, const fvPatch& p, @@ -55,43 +50,51 @@ fixedRhoFvPatchScalarField::fixedRhoFvPatchScalarField const fvPatchFieldMapper& mapper ) : - fixedValueFvPatchScalarField(ptf, p, iF, mapper) + fixedValueFvPatchScalarField(ptf, p, iF, mapper), + pName_(ptf.pName_), + psiName_(ptf.psiName_) {} -fixedRhoFvPatchScalarField::fixedRhoFvPatchScalarField +Foam::fixedRhoFvPatchScalarField::fixedRhoFvPatchScalarField ( const fvPatch& p, const DimensionedField& iF, const dictionary& dict ) : - fixedValueFvPatchScalarField(p, iF, dict) + fixedValueFvPatchScalarField(p, iF, dict), + pName_(dict.lookupOrDefault("p", "p")), + psiName_(dict.lookupOrDefault("psi", "thermo:psi")) {} -fixedRhoFvPatchScalarField::fixedRhoFvPatchScalarField +Foam::fixedRhoFvPatchScalarField::fixedRhoFvPatchScalarField ( - const fixedRhoFvPatchScalarField& tppsf + const fixedRhoFvPatchScalarField& frpsf ) : - fixedValueFvPatchScalarField(tppsf) + fixedValueFvPatchScalarField(frpsf), + pName_(frpsf.pName_), + psiName_(frpsf.psiName_) {} -fixedRhoFvPatchScalarField::fixedRhoFvPatchScalarField +Foam::fixedRhoFvPatchScalarField::fixedRhoFvPatchScalarField ( - const fixedRhoFvPatchScalarField& tppsf, + const fixedRhoFvPatchScalarField& frpsf, const DimensionedField& iF ) : - fixedValueFvPatchScalarField(tppsf, iF) + fixedValueFvPatchScalarField(frpsf, iF), + pName_(frpsf.pName_), + psiName_(frpsf.psiName_) {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void fixedRhoFvPatchScalarField::updateCoeffs() +void Foam::fixedRhoFvPatchScalarField::updateCoeffs() { if (updated()) { @@ -99,10 +102,10 @@ void fixedRhoFvPatchScalarField::updateCoeffs() } const fvPatchField& psip = - patch().lookupPatchField("psi"); + patch().lookupPatchField(psiName_); const fvPatchField& pp = - patch().lookupPatchField("p"); + patch().lookupPatchField(pName_); operator==(psip*pp); @@ -110,16 +113,24 @@ void fixedRhoFvPatchScalarField::updateCoeffs() } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +void Foam::fixedRhoFvPatchScalarField::write(Ostream& os) const +{ + fvPatchScalarField::write(os); -makePatchTypeField -( - fvPatchScalarField, - fixedRhoFvPatchScalarField -); + writeEntryIfDifferent(os, "p", "p", this->pName_); + writeEntryIfDifferent(os, "psi", "thermo:psi", psiName_); + writeEntry("value", os); +} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -} // End namespace Foam +namespace Foam +{ + makePatchTypeField + ( + fvPatchScalarField, + fixedRhoFvPatchScalarField + ); +} // ************************************************************************* // diff --git a/applications/solvers/compressible/rhoCentralFoam/BCs/rho/fixedRhoFvPatchScalarField.H b/applications/solvers/compressible/rhoCentralFoam/BCs/rho/fixedRhoFvPatchScalarField.H index 697ae723a5..6efbb4947d 100644 --- a/applications/solvers/compressible/rhoCentralFoam/BCs/rho/fixedRhoFvPatchScalarField.H +++ b/applications/solvers/compressible/rhoCentralFoam/BCs/rho/fixedRhoFvPatchScalarField.H @@ -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-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,9 +24,42 @@ License Class Foam::fixedRhoFvPatchScalarField +Group + grpInletBoundaryConditions + Description Foam::fixedRhoFvPatchScalarField + This boundary condition provides a fixed density inlet condition for + compressible solvers, where the density of calculated using: + + \f{ + \rho = \psi p + \f] + + where + \vartable + p | pressure [Pa] + \rho | density [kg/m3] + \endvartable + + + \heading Patch usage + + \table + Property | Description | Required | Default value + pName | Pressure field name | no | p + psiName | Compressibility field name | no | thermo:psi + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type fixedRho; + } + \endverbatim + SourceFiles fixedRhoFvPatchScalarField.C @@ -43,7 +76,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class fixedRhoFvPatchScalarField Declaration + Class fixedRhoFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class fixedRhoFvPatchScalarField @@ -51,6 +84,17 @@ class fixedRhoFvPatchScalarField public fixedValueFvPatchScalarField { +private: + + // Private data + + //- Pressure field name, default = "p" + word pName_; + + //- Compressibility field name, default = "thermo:psi" + word psiName_; + + public: //- Runtime type information @@ -125,6 +169,10 @@ public: //- Update the coefficients associated with the patch field virtual void updateCoeffs(); + + + //- Write + virtual void write(Ostream&) const; }; diff --git a/applications/solvers/compressible/rhoPimpleFoam/Allwmake b/applications/solvers/compressible/rhoPimpleFoam/Allwmake index f6f8ad3635..ac06b7350a 100755 --- a/applications/solvers/compressible/rhoPimpleFoam/Allwmake +++ b/applications/solvers/compressible/rhoPimpleFoam/Allwmake @@ -4,7 +4,6 @@ set -x wmake wmake rhoPimplecFoam -wmake rhoPorousMRFPimpleFoam -wmake rhoPorousMRFLTSPimpleFoam +wmake rhoLTSPimpleFoam # ----------------------------------------------------------------- end-of-file diff --git a/applications/solvers/compressible/rhoPimpleFoam/UEqn.H b/applications/solvers/compressible/rhoPimpleFoam/UEqn.H index 397e893035..e4fa5cd6b3 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/UEqn.H +++ b/applications/solvers/compressible/rhoPimpleFoam/UEqn.H @@ -5,6 +5,8 @@ tmp UEqn fvm::ddt(rho, U) + fvm::div(phi, U) + turbulence->divDevRhoReff(U) + == + sources(rho, U) ); UEqn().relax(); @@ -13,6 +15,6 @@ sources.constrain(UEqn()); if (pimple.momentumPredictor()) { - solve(UEqn() == -fvc::grad(p) + sources(rho, U)); + solve(UEqn() == -fvc::grad(p)); K = 0.5*magSqr(U); } diff --git a/applications/solvers/compressible/rhoPimpleFoam/pEqn.H b/applications/solvers/compressible/rhoPimpleFoam/pEqn.H index 5f28a3456d..a656d77248 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/pEqn.H +++ b/applications/solvers/compressible/rhoPimpleFoam/pEqn.H @@ -5,7 +5,7 @@ rho.relax(); volScalarField rAU(1.0/UEqn().A()); volVectorField HbyA("HbyA", U); -HbyA = rAU*(UEqn() == sources(rho, U))().H(); +HbyA = rAU*UEqn().H(); if (pimple.nCorrPISO() <= 1) { @@ -24,6 +24,8 @@ if (pimple.transonic()) ) ); + sources.relativeFlux(fvc::interpolate(psi), phid); + volScalarField Dp("Dp", rho*rAU); while (pimple.correctNonOrthogonal()) @@ -37,7 +39,7 @@ if (pimple.transonic()) sources(psi, p, rho.name()) ); - sources.constrain(pEqn, rho.name()); + sources.constrain(pEqn); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); @@ -59,6 +61,8 @@ else ) ); + sources.relativeFlux(fvc::interpolate(rho), phiHbyA); + volScalarField Dp("Dp", rho*rAU); while (pimple.correctNonOrthogonal()) @@ -73,7 +77,7 @@ else sources(psi, p, rho.name()) ); - sources.constrain(pEqn, rho.name()); + sources.constrain(pEqn); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/Make/files b/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/Make/files new file mode 100644 index 0000000000..ff61e6022f --- /dev/null +++ b/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/Make/files @@ -0,0 +1,3 @@ +rhoLTSPimpleFoam.C + +EXE = $(FOAM_APPBIN)/rhoLTSPimpleFoam diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/Make/options b/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/Make/options similarity index 100% rename from applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/Make/options rename to applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/Make/options diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/rhoPorousMRFLTSPimpleFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/rhoLTSPimpleFoam.C similarity index 94% rename from applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/rhoPorousMRFLTSPimpleFoam.C rename to applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/rhoLTSPimpleFoam.C index 18a32a1791..ccbba350c2 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/rhoPorousMRFLTSPimpleFoam.C +++ b/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/rhoLTSPimpleFoam.C @@ -26,7 +26,7 @@ Application Description Transient solver for laminar or turbulent flow of compressible fluids - with support for porous media and MRF for HVAC and similar applications. + with support for run-time selectable sources, e.g. MRF, explicit porosity. Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and pseudo-transient simulations with support for local time-stepping for @@ -37,8 +37,6 @@ Description #include "fvCFD.H" #include "psiThermo.H" #include "turbulenceModel.H" -#include "IOMRFZoneList.H" -#include "IOporosityModelList.H" #include "IObasicSourceList.H" #include "fvcSmooth.H" #include "pimpleControl.H" @@ -56,7 +54,6 @@ int main(int argc, char *argv[]) #include "setInitialrDeltaT.H" #include "createFields.H" - #include "createZones.H" #include "initContinuityErrs.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/setInitialrDeltaT.H b/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/setInitialrDeltaT.H similarity index 100% rename from applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/setInitialrDeltaT.H rename to applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/setInitialrDeltaT.H diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/setrDeltaT.H b/applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/setrDeltaT.H similarity index 100% rename from applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/setrDeltaT.H rename to applications/solvers/compressible/rhoPimpleFoam/rhoLTSPimpleFoam/setrDeltaT.H diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/pEqn.H b/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/pEqn.H index 628eb71f29..aa3e615af6 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/pEqn.H +++ b/applications/solvers/compressible/rhoPimpleFoam/rhoPimplecFoam/pEqn.H @@ -51,7 +51,7 @@ if (pimple.transonic()) // Relax the pressure equation to maintain diagonal dominance pEqn.relax(); - sources.constrain(pEqn, rho.name()); + sources.constrain(pEqn); pEqn.solve(); @@ -89,7 +89,7 @@ else sources(psi, p, rho.name()) ); - sources.constrain(pEqn, rho.name()); + sources.constrain(pEqn); pEqn.solve(); diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/Make/files b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/Make/files deleted file mode 100644 index 3b438a6177..0000000000 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFLTSPimpleFoam/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -rhoPorousMRFLTSPimpleFoam.C - -EXE = $(FOAM_APPBIN)/rhoPorousMRFLTSPimpleFoam diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/Make/files b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/Make/files deleted file mode 100644 index a798455eb7..0000000000 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/Make/files +++ /dev/null @@ -1,4 +0,0 @@ -rhoPorousMRFPimpleFoam.C - -EXE = $(FOAM_APPBIN)/rhoPorousMRFPimpleFoam - diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/Make/options b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/Make/options deleted file mode 100644 index c78d474b4f..0000000000 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/Make/options +++ /dev/null @@ -1,20 +0,0 @@ -EXE_INC = \ - -I.. \ - -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \ - -I$(LIB_SRC)/finiteVolume/cfdTools \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/sampling/lnInclude \ - -I$(LIB_SRC)/fieldSources/lnInclude - -EXE_LIBS = \ - -lfluidThermophysicalModels \ - -lspecie \ - -lcompressibleTurbulenceModel \ - -lcompressibleRASModels \ - -lcompressibleLESModels \ - -lfiniteVolume \ - -lmeshTools \ - -lsampling \ - -lfieldSources diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/UEqn.H b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/UEqn.H deleted file mode 100644 index 9651610157..0000000000 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/UEqn.H +++ /dev/null @@ -1,22 +0,0 @@ -// Solve the Momentum equation - -tmp UEqn -( - //pZones.ddt(rho, U) - fvm::ddt(rho, U) - + fvm::div(phi, U) - + turbulence->divDevRhoReff(U) -); - -UEqn().relax(); - -mrfZones.addCoriolis(rho, UEqn()); - -pZones.addResistance(UEqn()); - -sources.constrain(UEqn()); - -if (pimple.momentumPredictor()) -{ - solve(UEqn() == -fvc::grad(p) + sources(rho, U)); -} diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/createZones.H b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/createZones.H deleted file mode 100644 index f6c7e4dddf..0000000000 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/createZones.H +++ /dev/null @@ -1,5 +0,0 @@ - IOMRFZoneList mrfZones(mesh); - mrfZones.correctBoundaryVelocity(U); - - IOporosityModelList pZones(mesh); - Switch pressureImplicitPorosity(false); diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/pEqn.H b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/pEqn.H deleted file mode 100644 index 304798b966..0000000000 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/pEqn.H +++ /dev/null @@ -1,111 +0,0 @@ -rho = thermo.rho(); -rho = max(rho, rhoMin); -rho = min(rho, rhoMax); -rho.relax(); - -volScalarField rAU(1.0/UEqn().A()); -volVectorField HbyA("HbyA", U); -HbyA = rAU*(UEqn() == sources(rho, U))().H(); - -if (pimple.nCorrPISO() <= 1) -{ - UEqn.clear(); -} - -if (pimple.transonic()) -{ - surfaceScalarField phid - ( - "phid", - fvc::interpolate(psi) - *( - (fvc::interpolate(HbyA) & mesh.Sf()) - + fvc::ddtPhiCorr(rAU, rho, U, phi) - ) - ); - mrfZones.relativeFlux(fvc::interpolate(psi), phid); - - volScalarField Dp("Dp", rho*rAU); - - while (pimple.correctNonOrthogonal()) - { - fvScalarMatrix pEqn - ( - fvm::ddt(psi, p) - + fvm::div(phid, p) - - fvm::laplacian(Dp, p) - == - sources(psi, p, rho.name()) - ); - - sources.constrain(pEqn, rho.name()); - - pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); - - if (pimple.finalNonOrthogonalIter()) - { - phi == pEqn.flux(); - } - } -} -else -{ - surfaceScalarField phiHbyA - ( - "phiHbyA", - fvc::interpolate(rho) - *( - (fvc::interpolate(HbyA) & mesh.Sf()) - + fvc::ddtPhiCorr(rAU, rho, U, phi) - ) - ); - - mrfZones.relativeFlux(fvc::interpolate(rho), phiHbyA); - - volScalarField Dp("Dp", rho*rAU); - - while (pimple.correctNonOrthogonal()) - { - // Pressure corrector - fvScalarMatrix pEqn - ( - fvm::ddt(psi, p) - + fvc::div(phiHbyA) - - fvm::laplacian(Dp, p) - == - sources(psi, p, rho.name()) - ); - - sources.constrain(pEqn, rho.name()); - - pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); - - if (pimple.finalNonOrthogonalIter()) - { - phi = phiHbyA + pEqn.flux(); - } - } -} - -#include "rhoEqn.H" -#include "compressibleContinuityErrs.H" - -// Explicitly relax pressure for momentum corrector -p.relax(); - -rho = thermo.rho(); -rho = max(rho, rhoMin); -rho = min(rho, rhoMax); -rho.relax(); -Info<< "rho max/min : " << max(rho).value() - << " " << min(rho).value() << endl; - -U = HbyA - rAU*fvc::grad(p); -U.correctBoundaryConditions(); -sources.correct(U); -K = 0.5*magSqr(U); - -if (thermo.dpdt()) -{ - dpdt = fvc::ddt(p); -} diff --git a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/rhoPorousMRFPimpleFoam.C b/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/rhoPorousMRFPimpleFoam.C deleted file mode 100644 index 0975b0de2b..0000000000 --- a/applications/solvers/compressible/rhoPimpleFoam/rhoPorousMRFPimpleFoam/rhoPorousMRFPimpleFoam.C +++ /dev/null @@ -1,109 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see . - -Application - rhoPorousMRFPimpleFoam - -Description - Transient solver for laminar or turbulent flow of compressible fluids - with support for porous media and MRF for HVAC and similar applications. - - Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and - pseudo-transient simulations. - -\*---------------------------------------------------------------------------*/ - -#include "fvCFD.H" -#include "psiThermo.H" -#include "turbulenceModel.H" -#include "bound.H" -#include "IOMRFZoneList.H" -#include "IOporosityModelList.H" -#include "IObasicSourceList.H" -#include "pimpleControl.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -int main(int argc, char *argv[]) -{ - #include "setRootCase.H" - #include "createTime.H" - #include "createMesh.H" - - pimpleControl pimple(mesh); - - #include "createFields.H" - #include "createZones.H" - #include "initContinuityErrs.H" - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - Info<< "\nStarting time loop\n" << endl; - - while (runTime.run()) - { - #include "readTimeControls.H" - #include "compressibleCourantNo.H" - #include "setDeltaT.H" - - runTime++; - - Info<< "Time = " << runTime.timeName() << nl << endl; - - if (pimple.nCorrPIMPLE() <= 1) - { - #include "rhoEqn.H" - } - - // --- Pressure-velocity PIMPLE corrector loop - while (pimple.loop()) - { - #include "UEqn.H" - #include "EEqn.H" - - // --- Pressure corrector loop - while (pimple.correct()) - { - #include "pEqn.H" - } - - if (pimple.turbCorr()) - { - turbulence->correct(); - } - } - - runTime.write(); - - Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" - << " ClockTime = " << runTime.elapsedClockTime() << " s" - << nl << endl; - } - - Info<< "End\n" << endl; - - return 0; -} - - -// ************************************************************************* // diff --git a/applications/solvers/compressible/rhoSimpleFoam/UEqn.H b/applications/solvers/compressible/rhoSimpleFoam/UEqn.H index 21ec2646be..8bbd960281 100644 --- a/applications/solvers/compressible/rhoSimpleFoam/UEqn.H +++ b/applications/solvers/compressible/rhoSimpleFoam/UEqn.H @@ -4,6 +4,8 @@ ( fvm::div(phi, U) + turbulence->divDevRhoReff(U) + == + sources(rho, U) ); UEqn().relax(); diff --git a/applications/solvers/compressible/rhoSimpleFoam/pEqn.H b/applications/solvers/compressible/rhoSimpleFoam/pEqn.H index 2ea228f172..2782d20652 100644 --- a/applications/solvers/compressible/rhoSimpleFoam/pEqn.H +++ b/applications/solvers/compressible/rhoSimpleFoam/pEqn.H @@ -6,7 +6,7 @@ volScalarField rAU(1.0/UEqn().A()); volVectorField HbyA("HbyA", U); - HbyA = rAU*(UEqn() == sources(rho, U))().H(); + HbyA = rAU*UEqn().H(); UEqn.clear(); @@ -20,6 +20,8 @@ fvc::interpolate(psi)*(fvc::interpolate(HbyA) & mesh.Sf()) ); + sources.relativeFlux(fvc::interpolate(psi), phid); + while (simple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -33,7 +35,7 @@ // Relax the pressure equation to ensure diagonal-dominance pEqn.relax(); - sources.constrain(pEqn, rho.name()); + sources.constrain(pEqn); pEqn.setReference(pRefCell, pRefValue); @@ -53,6 +55,8 @@ fvc::interpolate(rho)*(fvc::interpolate(HbyA) & mesh.Sf()) ); + sources.relativeFlux(fvc::interpolate(rho), phiHbyA); + closedVolume = adjustPhi(phiHbyA, U, p); while (simple.correctNonOrthogonal()) @@ -67,7 +71,7 @@ pEqn.setReference(pRefCell, pRefValue); - sources.constrain(pEqn, rho.name()); + sources.constrain(pEqn); pEqn.solve(); diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/Make/files b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/Make/files deleted file mode 100644 index d4792428af..0000000000 --- a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -rhoPorousMRFSimpleFoam.C - -EXE = $(FOAM_APPBIN)/rhoPorousMRFSimpleFoam diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/EEqn.H b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/EEqn.H similarity index 100% rename from applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/EEqn.H rename to applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/EEqn.H diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/Make/files b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/Make/files new file mode 100644 index 0000000000..d108d0246e --- /dev/null +++ b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/Make/files @@ -0,0 +1,3 @@ +rhoPorousSimpleFoam.C + +EXE = $(FOAM_APPBIN)/rhoPorousSimpleFoam diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/Make/options b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/Make/options similarity index 100% rename from applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/Make/options rename to applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/Make/options diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/UEqn.H b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/UEqn.H similarity index 100% rename from applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/UEqn.H rename to applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/UEqn.H diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/createFields.H b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/createFields.H similarity index 100% rename from applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/createFields.H rename to applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/createFields.H diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/createZones.H b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/createZones.H similarity index 100% rename from applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/createZones.H rename to applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/createZones.H diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/pEqn.H b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/pEqn.H similarity index 100% rename from applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/pEqn.H rename to applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/pEqn.H diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/rhoPorousMRFSimpleFoam.C b/applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/rhoPorousSimpleFoam.C similarity index 100% rename from applications/solvers/compressible/rhoSimpleFoam/rhoPorousMRFSimpleFoam/rhoPorousMRFSimpleFoam.C rename to applications/solvers/compressible/rhoSimpleFoam/rhoPorousSimpleFoam/rhoPorousSimpleFoam.C diff --git a/applications/solvers/compressible/rhoSimpleFoam/rhoSimplecFoam/pEqn.H b/applications/solvers/compressible/rhoSimpleFoam/rhoSimplecFoam/pEqn.H index 1ffacc1afa..02300d8a9e 100644 --- a/applications/solvers/compressible/rhoSimpleFoam/rhoSimplecFoam/pEqn.H +++ b/applications/solvers/compressible/rhoSimpleFoam/rhoSimplecFoam/pEqn.H @@ -45,7 +45,7 @@ if (simple.transonic()) // Relax the pressure equation to maintain diagonal dominance pEqn.relax(); - sources.constrain(pEqn, rho.name()); + sources.constrain(pEqn); pEqn.setReference(pRefCell, pRefValue); @@ -82,7 +82,7 @@ else sources(psi, p, rho.name()) ); - sources.constrain(pEqn, rho.name()); + sources.constrain(pEqn); pEqn.setReference(pRefCell, pRefValue); diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/EEqn.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/EEqn.H new file mode 100644 index 0000000000..1cc6ed584c --- /dev/null +++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/EEqn.H @@ -0,0 +1,28 @@ +{ + volScalarField& he = thermo.he(); + + fvScalarMatrix EEqn + ( + fvm::ddt(rho, he) + fvm::div(phi, he) + + fvc::ddt(rho, K) + fvc::div(phi, K) + + ( + he.name() == "e" + ? fvc::div + ( + fvc::absolute(phi/fvc::interpolate(rho), U), + p, + "div(phiv,p)" + ) + : -dpdt + ) + - fvm::laplacian(turbulence->alphaEff(), he) + == + sources(rho, he) + ); + + EEqn.relax(); + sources.constrain(EEqn); + EEqn.solve(); + + thermo.correct(); +} diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/Make/options b/applications/solvers/heatTransfer/buoyantPimpleFoam/Make/options index 5d86b094de..6962643dcd 100644 --- a/applications/solvers/heatTransfer/buoyantPimpleFoam/Make/options +++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/Make/options @@ -1,21 +1,21 @@ EXE_INC = \ - -I../../compressible/rhoPimpleFoam \ - -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/sampling/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/fieldSources/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/radiationModels/lnInclude \ + -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel EXE_LIBS = \ - -lmeshTools \ - -lfluidThermophysicalModels \ - -lspecie \ - -lcompressibleTurbulenceModel \ - -lcompressibleRASModels \ - -lcompressibleLESModels \ -lfiniteVolume \ -lsampling \ -lmeshTools \ - -lfieldSources + -lfieldSources \ + -lfluidThermophysicalModels \ + -lradiationModels \ + -lspecie \ + -lcompressibleTurbulenceModel \ + -lcompressibleRASModels \ + -lcompressibleLESModels diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/UEqn.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/UEqn.H index d8f3bb56ce..e12724ed69 100644 --- a/applications/solvers/heatTransfer/buoyantPimpleFoam/UEqn.H +++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/UEqn.H @@ -5,10 +5,14 @@ fvm::ddt(rho, U) + fvm::div(phi, U) + turbulence->divDevRhoReff(U) + == + sources(rho, U) ); UEqn.relax(); + sources.constrain(UEqn); + if (pimple.momentumPredictor()) { solve @@ -22,7 +26,6 @@ - fvc::snGrad(p_rgh) )*mesh.magSf() ) - + sources(rho, U) ); K = 0.5*magSqr(U); } diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C b/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C index 79d3fb7f2f..62fcf33c04 100644 --- a/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C +++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/buoyantPimpleFoam.C @@ -36,7 +36,7 @@ Description #include "fvCFD.H" #include "rhoThermo.H" #include "turbulenceModel.H" -#include "fixedGradientFvPatchFields.H" +#include "radiationModel.H" #include "IObasicSourceList.H" #include "pimpleControl.H" @@ -49,6 +49,7 @@ int main(int argc, char *argv[]) #include "createMesh.H" #include "readGravitationalAcceleration.H" #include "createFields.H" + #include "createRadiationModel.H" #include "initContinuityErrs.H" #include "readTimeControls.H" #include "compressibleCourantNo.H" diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H index 9838978028..b606339627 100644 --- a/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H +++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/createFields.H @@ -1,9 +1,6 @@ Info<< "Reading thermophysical properties\n" << endl; - autoPtr pThermo - ( - rhoThermo::New(mesh) - ); + autoPtr pThermo(rhoThermo::New(mesh)); rhoThermo& thermo = pThermo(); thermo.validate(args.executable(), "h", "e"); diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H index 86c314c9c4..99bef3a118 100644 --- a/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H +++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H @@ -9,7 +9,7 @@ surfaceScalarField rhorAUf("Dp", fvc::interpolate(rho*rAU)); volVectorField HbyA("HbyA", U); - HbyA = rAU*(UEqn == sources(rho, U))().H(); + HbyA = rAU*UEqn.H(); surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf()); @@ -24,6 +24,8 @@ + phig ); + sources.relativeFlux(fvc::interpolate(rho), phiHbyA); + fvScalarMatrix p_rghDDtEqn ( fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh)) @@ -40,7 +42,7 @@ - fvm::laplacian(rhorAUf, p_rgh) ); - sources.constrain(p_rghEqn, rho.name()); + sources.constrain(p_rghEqn); p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter()))); diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/Allwmake b/applications/solvers/heatTransfer/buoyantSimpleFoam/Allwmake deleted file mode 100755 index 0fe8e8f4ad..0000000000 --- a/applications/solvers/heatTransfer/buoyantSimpleFoam/Allwmake +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -cd ${0%/*} || exit 1 # run from this directory -set -x - -wmake -wmake buoyantSimpleRadiationFoam - -# ----------------------------------------------------------------- end-of-file diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H index e4c79b40cc..094b50cb3e 100644 --- a/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H +++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H @@ -10,10 +10,17 @@ : fvc::div(phi, volScalarField("K", 0.5*magSqr(U))) ) - fvm::laplacian(turbulence->alphaEff(), he) + == + radiation->Sh(thermo) + + sources(rho, he) ); EEqn.relax(); + + sources.constrain(EEqn); + EEqn.solve(); thermo.correct(); + radiation->correct(); } diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/Make/options b/applications/solvers/heatTransfer/buoyantSimpleFoam/Make/options index 74ddd12446..5103b2dd72 100644 --- a/applications/solvers/heatTransfer/buoyantSimpleFoam/Make/options +++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/Make/options @@ -1,14 +1,22 @@ EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fieldSources/lnInclude \ + -I$(LIB_SRC)/sampling/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/radiationModels/lnInclude \ -I$(LIB_SRC)/turbulenceModels \ -I$(LIB_SRC)/turbulenceModels/compressible/RAS/lnInclude \ - -I$(LIB_SRC)/finiteVolume/cfdTools \ - -I$(LIB_SRC)/finiteVolume/lnInclude + -I$(LIB_SRC)/turbulenceModels/RAS \ EXE_LIBS = \ + -lfiniteVolume \ + -lfieldSources \ + -lsampling \ -lmeshTools \ -lfluidThermophysicalModels \ -lspecie \ + -lradiationModels \ -lcompressibleTurbulenceModel \ -lcompressibleRASModels \ - -lfiniteVolume + -lmeshTools diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/UEqn.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/UEqn.H index e1593c3691..860cef4547 100644 --- a/applications/solvers/heatTransfer/buoyantSimpleFoam/UEqn.H +++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/UEqn.H @@ -4,11 +4,13 @@ ( fvm::div(phi, U) + turbulence->divDevRhoReff(U) + == + sources(rho, U) ); UEqn().relax(); - mrfZones.addCoriolis(rho, UEqn()); + sources.constrain(UEqn()); if (simple.momentumPredictor()) { diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C b/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C index fc47fc90a1..bbd6f77773 100644 --- a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C +++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleFoam.C @@ -22,19 +22,20 @@ License along with OpenFOAM. If not, see . Application - buoyantSimpleFoam + buoyantSimpleRadiationFoam Description - Steady-state solver for buoyant, turbulent flow of compressible fluids + Steady-state solver for buoyant, turbulent flow of compressible fluids, + including radiation, for ventilation and heat-transfer. \*---------------------------------------------------------------------------*/ #include "fvCFD.H" #include "psiThermo.H" #include "RASModel.H" -#include "fixedGradientFvPatchFields.H" +#include "radiationModel.H" #include "simpleControl.H" -#include "IOMRFZoneList.H" +#include "IObasicSourceList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -45,7 +46,7 @@ int main(int argc, char *argv[]) #include "createMesh.H" #include "readGravitationalAcceleration.H" #include "createFields.H" - #include "createZones.H" + #include "createRadiationModel.H" #include "initContinuityErrs.H" simpleControl simple(mesh); diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleRadiationFoam/EEqn.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleRadiationFoam/EEqn.H deleted file mode 100644 index 0d1f41d0c3..0000000000 --- a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleRadiationFoam/EEqn.H +++ /dev/null @@ -1,22 +0,0 @@ -{ - volScalarField& he = thermo.he(); - - fvScalarMatrix EEqn - ( - fvm::div(phi, he) - + ( - he.name() == "e" - ? fvc::div(phi, volScalarField("Ekp", 0.5*magSqr(U) + p/rho)) - : fvc::div(phi, volScalarField("K", 0.5*magSqr(U))) - ) - - fvm::laplacian(turbulence->alphaEff(), he) - == - radiation->Sh(thermo) - ); - - EEqn.relax(); - EEqn.solve(); - - thermo.correct(); - radiation->correct(); -} diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleRadiationFoam/Make/files b/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleRadiationFoam/Make/files deleted file mode 100644 index a8347c5525..0000000000 --- a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleRadiationFoam/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -buoyantSimpleRadiationFoam.C - -EXE = $(FOAM_APPBIN)/buoyantSimpleRadiationFoam diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleRadiationFoam/Make/options b/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleRadiationFoam/Make/options deleted file mode 100644 index f26046adb2..0000000000 --- a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleRadiationFoam/Make/options +++ /dev/null @@ -1,18 +0,0 @@ -EXE_INC = \ - -I.. \ - -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/radiationModels/lnInclude \ - -I$(LIB_SRC)/turbulenceModels \ - -I$(LIB_SRC)/turbulenceModels/compressible/RAS/lnInclude \ - -I$(LIB_SRC)/turbulenceModels/RAS \ - -I$(LIB_SRC)/finiteVolume/cfdTools \ - -I$(LIB_SRC)/finiteVolume/lnInclude - -EXE_LIBS = \ - -lfluidThermophysicalModels \ - -lspecie \ - -lradiationModels \ - -lcompressibleTurbulenceModel \ - -lcompressibleRASModels \ - -lfiniteVolume \ - -lmeshTools diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleRadiationFoam/buoyantSimpleRadiationFoam.C b/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleRadiationFoam/buoyantSimpleRadiationFoam.C deleted file mode 100644 index 38f3a7c647..0000000000 --- a/applications/solvers/heatTransfer/buoyantSimpleFoam/buoyantSimpleRadiationFoam/buoyantSimpleRadiationFoam.C +++ /dev/null @@ -1,86 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see . - -Application - buoyantSimpleRadiationFoam - -Description - Steady-state solver for buoyant, turbulent flow of compressible fluids, - including radiation, for ventilation and heat-transfer. - -\*---------------------------------------------------------------------------*/ - -#include "fvCFD.H" -#include "psiThermo.H" -#include "RASModel.H" -#include "fixedGradientFvPatchFields.H" -#include "radiationModel.H" -#include "simpleControl.H" -#include "IOMRFZoneList.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -int main(int argc, char *argv[]) -{ - #include "setRootCase.H" - #include "createTime.H" - #include "createMesh.H" - #include "readGravitationalAcceleration.H" - #include "createFields.H" - #include "createZones.H" - #include "createRadiationModel.H" - #include "initContinuityErrs.H" - - simpleControl simple(mesh); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - Info<< "\nStarting time loop\n" << endl; - - while (simple.loop()) - { - Info<< "Time = " << runTime.timeName() << nl << endl; - - // Pressure-velocity SIMPLE corrector - { - #include "UEqn.H" - #include "EEqn.H" - #include "pEqn.H" - } - - turbulence->correct(); - - runTime.write(); - - Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" - << " ClockTime = " << runTime.elapsedClockTime() << " s" - << nl << endl; - } - - Info<< "End\n" << endl; - - return 0; -} - - -// ************************************************************************* // diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H index bb7a65cb1d..704bf32d50 100644 --- a/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H +++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/createFields.H @@ -87,3 +87,5 @@ dimensionedScalar initialMass = fvc::domainIntegrate(rho); dimensionedScalar totalVolume = sum(mesh.V()); + + IObasicSourceList sources(mesh); diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/createZones.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/createZones.H deleted file mode 100644 index 08480c68d2..0000000000 --- a/applications/solvers/heatTransfer/buoyantSimpleFoam/createZones.H +++ /dev/null @@ -1,3 +0,0 @@ - IOMRFZoneList mrfZones(mesh); - mrfZones.correctBoundaryVelocity(U); - diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/pEqn.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/pEqn.H index 66ae75b650..2e6cbf3d47 100644 --- a/applications/solvers/heatTransfer/buoyantSimpleFoam/pEqn.H +++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/pEqn.H @@ -17,7 +17,7 @@ fvc::interpolate(rho)*(fvc::interpolate(HbyA) & mesh.Sf()) ); - mrfZones.relativeFlux(fvc::interpolate(rho), phiHbyA); + sources.relativeFlux(fvc::interpolate(rho), phiHbyA); bool closedVolume = adjustPhi(phiHbyA, U, p_rgh); @@ -45,6 +45,7 @@ // calculated from the relaxed pressure U = HbyA + rAU*fvc::reconstruct((phig - p_rghEqn.flux())/rhorAUf); U.correctBoundaryConditions(); + sources.correct(U); } } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C index 4586122006..149a81a3a4 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C @@ -36,7 +36,6 @@ Description #include "regionProperties.H" #include "solidThermo.H" #include "radiationModel.H" -#include "IOporosityModelList.H" #include "IObasicSourceList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H index be84cfce0e..3e3157de72 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H @@ -16,6 +16,9 @@ ); EEqn.relax(); + + sources.constrain(EEqn); + EEqn.solve(); thermo.correct(); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/UEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/UEqn.H index 8bbc8be581..8df8cd4784 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/UEqn.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/UEqn.H @@ -3,13 +3,13 @@ ( fvm::div(phi, U) + turb.divDevRhoReff(U) - + sources(rho, U) + == + sources(rho, U) ); UEqn().relax(); - // Add porous resistance - pZones.addResistance(UEqn()); + sources.constrain(UEqn()); solve ( diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H index 3d66fa798b..d30848804e 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/createFluidFields.H @@ -18,7 +18,6 @@ PtrList rhoMin(fluidRegions.size()); PtrList heatSources(fluidRegions.size()); - PtrList porousZonesFluid(fluidRegions.size()); // Populate fluid field pointer lists forAll(fluidRegions, i) @@ -200,13 +199,6 @@ i, new IObasicSourceList(fluidRegions[i]) ); - - Info<< " Adding porous zones\n" << endl; - porousZonesFluid.set - ( - i, - new IOporosityModelList(fluidRegions[i]) - ); } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/pEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/pEqn.H index d2ea510ced..fca0848912 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/pEqn.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/pEqn.H @@ -23,6 +23,8 @@ phiHbyA += phig; + sources.relativeFlux(fvc::interpolate(rho), phiHbyA); + dimensionedScalar compressibility = fvc::domainIntegrate(psi); bool compressible = (compressibility.value() > SMALL); @@ -54,6 +56,7 @@ // calculated from the relaxed pressure U = HbyA + rAU*fvc::reconstruct((phig - p_rghEqn.flux())/rhorAUf); U.correctBoundaryConditions(); + sources.correct(U); } } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H index 4f15d8c619..ee005e0d22 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H @@ -14,8 +14,6 @@ IObasicSourceList& sources = heatSources[i]; - const IOporosityModelList& pZones = porousZonesFluid[i]; - const dimensionedScalar initialMass ( "initialMass", diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H index 753c3257de..2944c6aef0 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H @@ -24,6 +24,8 @@ + phig ); + sources.relativeFlux(fvc::interpolate(rho), phiHbyA); + { fvScalarMatrix p_rghDDtEqn ( @@ -64,6 +66,7 @@ U = HbyA + rAU*fvc::reconstruct((phig + p_rghEqn.flux())/rhorAUf); U.correctBoundaryConditions(); + sources.correct(U); K = 0.5*magSqr(U); } } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H index a04750cf17..c281ccc197 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H @@ -10,9 +10,14 @@ if (finalIter) ( fvm::ddt(betav*rho, h) - fvm::laplacian(betav*alpha, h, "laplacian(alpha,h)") - + sources(rho, h) + == + sources(rho, h) ); + hEqn().relax(); + + sources.constrain(hEqn()); + hEqn().solve(mesh.solver(h.select(finalIter))); } } diff --git a/applications/solvers/incompressible/pimpleFoam/UEqn.H b/applications/solvers/incompressible/pimpleFoam/UEqn.H index c274f6a2e8..84a404654a 100644 --- a/applications/solvers/incompressible/pimpleFoam/UEqn.H +++ b/applications/solvers/incompressible/pimpleFoam/UEqn.H @@ -5,12 +5,10 @@ tmp UEqn fvm::ddt(U) + fvm::div(phi, U) + turbulence->divDevReff(U) + == + sources(U) ); -mrfZones.addCoriolis(UEqn()); - -pZones.addResistance(UEqn()); - UEqn().relax(); sources.constrain(UEqn()); @@ -19,5 +17,5 @@ volScalarField rAU(1.0/UEqn().A()); if (pimple.momentumPredictor()) { - solve(UEqn() == -fvc::grad(p) + sources(U)); + solve(UEqn() == -fvc::grad(p)); } diff --git a/applications/solvers/incompressible/pimpleFoam/createZones.H b/applications/solvers/incompressible/pimpleFoam/createZones.H deleted file mode 100644 index fcd02024d5..0000000000 --- a/applications/solvers/incompressible/pimpleFoam/createZones.H +++ /dev/null @@ -1,4 +0,0 @@ - IOMRFZoneList mrfZones(mesh); - mrfZones.correctBoundaryVelocity(U); - - IOporosityModelList pZones(mesh); diff --git a/applications/solvers/incompressible/pimpleFoam/pEqn.H b/applications/solvers/incompressible/pimpleFoam/pEqn.H index 1eb8590552..9fc62bd9f1 100644 --- a/applications/solvers/incompressible/pimpleFoam/pEqn.H +++ b/applications/solvers/incompressible/pimpleFoam/pEqn.H @@ -1,5 +1,5 @@ volVectorField HbyA("HbyA", U); -HbyA = rAU*(UEqn() == sources(U))().H(); +HbyA = rAU*UEqn().H(); if (pimple.nCorrPISO() <= 1) { @@ -15,7 +15,7 @@ surfaceScalarField phiHbyA adjustPhi(phiHbyA, U, p); -mrfZones.relativeFlux(phiHbyA); +sources.relativeFlux(phiHbyA); // Non-orthogonal pressure corrector loop while (pimple.correctNonOrthogonal()) diff --git a/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C b/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C index d55af57e34..8b0f240e4d 100644 --- a/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C +++ b/applications/solvers/incompressible/pimpleFoam/pimpleFoam.C @@ -30,8 +30,7 @@ Description Sub-models include: - turbulence modelling, i.e. laminar, RAS or LES - - porosity (explicit treatment) - - Multiple Reference Frame (MRF) + - run-time selectable sources, e.g. MRF, explicit porosity \*---------------------------------------------------------------------------*/ @@ -51,7 +50,6 @@ int main(int argc, char *argv[]) #include "createTime.H" #include "createMesh.H" #include "createFields.H" - #include "createZones.H" #include "initContinuityErrs.H" pimpleControl pimple(mesh); diff --git a/applications/solvers/incompressible/simpleFoam/Allwmake b/applications/solvers/incompressible/simpleFoam/Allwmake index c73703955a..801fd3b767 100755 --- a/applications/solvers/incompressible/simpleFoam/Allwmake +++ b/applications/solvers/incompressible/simpleFoam/Allwmake @@ -5,7 +5,6 @@ set -x wmake wmake SRFSimpleFoam -wmake MRFSimpleFoam wmake porousSimpleFoam # ----------------------------------------------------------------- end-of-file diff --git a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/MRFSimpleFoam.C b/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/MRFSimpleFoam.C deleted file mode 100644 index 7c78107c53..0000000000 --- a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/MRFSimpleFoam.C +++ /dev/null @@ -1,85 +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 . - -Application - MRFSimpleFoam - -Description - Steady-state solver for incompressible, turbulent flow of non-Newtonian - fluids with MRF regions. - -\*---------------------------------------------------------------------------*/ - -#include "fvCFD.H" -#include "singlePhaseTransportModel.H" -#include "RASModel.H" -#include "IOMRFZoneList.H" -#include "simpleControl.H" -#include "IObasicSourceList.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -int main(int argc, char *argv[]) -{ - #include "setRootCase.H" - - #include "createTime.H" - #include "createMesh.H" - #include "createFields.H" - #include "initContinuityErrs.H" - - IOMRFZoneList mrfZones(mesh); - mrfZones.correctBoundaryVelocity(U); - - simpleControl simple(mesh); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - Info<< "\nStarting time loop\n" << endl; - - while (simple.loop()) - { - Info<< "Time = " << runTime.timeName() << nl << endl; - - // --- Pressure-velocity SIMPLE corrector - { - #include "UEqn.H" - #include "pEqn.H" - } - - turbulence->correct(); - - runTime.write(); - - Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" - << " ClockTime = " << runTime.elapsedClockTime() << " s" - << nl << endl; - } - - Info<< "End\n" << endl; - - return 0; -} - - -// ************************************************************************* // diff --git a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/Make/files b/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/Make/files deleted file mode 100644 index 56c194272d..0000000000 --- a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -MRFSimpleFoam.C - -EXE = $(FOAM_APPBIN)/MRFSimpleFoam diff --git a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/Make/options b/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/Make/options deleted file mode 100644 index e9f47baf9b..0000000000 --- a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/Make/options +++ /dev/null @@ -1,19 +0,0 @@ -EXE_INC = \ - -I.. \ - -I$(LIB_SRC)/turbulenceModels \ - -I$(LIB_SRC)/turbulenceModels/incompressible/RAS/RASModel \ - -I$(LIB_SRC)/transportModels \ - -I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/fieldSources/lnInclude \ - -I$(LIB_SRC)/sampling/lnInclude - - -EXE_LIBS = \ - -lincompressibleRASModels \ - -lincompressibleTransportModels \ - -lfiniteVolume \ - -lmeshTools \ - -lfieldSources \ - -lsampling diff --git a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/UEqn.H deleted file mode 100644 index d595a64c8f..0000000000 --- a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/UEqn.H +++ /dev/null @@ -1,17 +0,0 @@ - // Momentum predictor - - tmp UEqn - ( - fvm::div(phi, U) - + turbulence->divDevReff(U) - == - sources(U) - ); - - mrfZones.addCoriolis(UEqn()); - - UEqn().relax(); - - sources.constrain(UEqn()); - - solve(UEqn() == -fvc::grad(p)); diff --git a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/pEqn.H b/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/pEqn.H deleted file mode 100644 index b7bf83e8cd..0000000000 --- a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/pEqn.H +++ /dev/null @@ -1,38 +0,0 @@ -{ - volScalarField rAU(1.0/UEqn().A()); - volVectorField HbyA("HbyA", U); - HbyA = rAU*UEqn().H(); - UEqn.clear(); - - surfaceScalarField phiHbyA("phiHbyA", fvc::interpolate(HbyA) & mesh.Sf()); - adjustPhi(phiHbyA, U, p); - mrfZones.relativeFlux(phiHbyA); - adjustPhi(phiHbyA, U, p); - - // Non-orthogonal pressure corrector loop - while (simple.correctNonOrthogonal()) - { - fvScalarMatrix pEqn - ( - fvm::laplacian(rAU, p) == fvc::div(phiHbyA) - ); - - pEqn.setReference(pRefCell, pRefValue); - pEqn.solve(); - - if (simple.finalNonOrthogonalIter()) - { - phi = phiHbyA - pEqn.flux(); - } - } - - #include "continuityErrs.H" - - // Explicitly relax pressure for momentum corrector - p.relax(); - - // Momentum corrector - U = HbyA - rAU*fvc::grad(p); - U.correctBoundaryConditions(); - sources.correct(U); -} diff --git a/applications/solvers/incompressible/simpleFoam/pEqn.H b/applications/solvers/incompressible/simpleFoam/pEqn.H index adc0c0761a..116929e3ea 100644 --- a/applications/solvers/incompressible/simpleFoam/pEqn.H +++ b/applications/solvers/incompressible/simpleFoam/pEqn.H @@ -7,6 +7,8 @@ surfaceScalarField phiHbyA("phiHbyA", fvc::interpolate(HbyA) & mesh.Sf()); adjustPhi(phiHbyA, U, p); + sources.relativeFlux(phiHbyA); + // Non-orthogonal pressure corrector loop while (simple.correctNonOrthogonal()) { diff --git a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H index 632a160030..101c16d827 100644 --- a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H +++ b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H @@ -8,6 +8,8 @@ sources(U) ); + mrfZones.addCoriolis(UEqn()); + UEqn().relax(); sources.constrain(UEqn()); diff --git a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/createPorousZones.H b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/createZones.H similarity index 88% rename from applications/solvers/incompressible/simpleFoam/porousSimpleFoam/createPorousZones.H rename to applications/solvers/incompressible/simpleFoam/porousSimpleFoam/createZones.H index 5c6dbea19c..25c29f024c 100644 --- a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/createPorousZones.H +++ b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/createZones.H @@ -1,3 +1,6 @@ + IOMRFZoneList mrfZones(mesh); + mrfZones.correctBoundaryVelocity(U); + IOporosityModelList pZones(mesh); Switch pressureImplicitPorosity(false); diff --git a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/pEqn.H b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/pEqn.H index 8193e072c5..7aa494744f 100644 --- a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/pEqn.H +++ b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/pEqn.H @@ -12,6 +12,8 @@ UEqn.clear(); surfaceScalarField phiHbyA("phiHbyA", fvc::interpolate(HbyA) & mesh.Sf()); adjustPhi(phiHbyA, U, p); +mrfZones.relativeFlux(phiHbyA); + while (simple.correctNonOrthogonal()) { tmp tpEqn; @@ -50,3 +52,4 @@ else } U.correctBoundaryConditions(); +sources.correct(U); diff --git a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/porousSimpleFoam.C b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/porousSimpleFoam.C index bde78bcbe1..e7128f8c1f 100644 --- a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/porousSimpleFoam.C +++ b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/porousSimpleFoam.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-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -26,15 +26,17 @@ Application Description Steady-state solver for incompressible, turbulent flow with - implicit or explicit porosity treatment + implicit or explicit porosity treatment and support for multiple reference + frames (MRF) \*---------------------------------------------------------------------------*/ #include "fvCFD.H" #include "singlePhaseTransportModel.H" #include "RASModel.H" -#include "IOporosityModelList.H" #include "simpleControl.H" +#include "IOMRFZoneList.H" +#include "IOporosityModelList.H" #include "IObasicSourceList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -48,7 +50,7 @@ int main(int argc, char *argv[]) simpleControl simple(mesh); #include "createFields.H" - #include "createPorousZones.H" + #include "createZones.H" #include "initContinuityErrs.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H index 24f56e83d2..fe7b047d9a 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H @@ -7,6 +7,7 @@ rho.dimensionedInternalField()*g + coalParcels.SU(U) + limestoneParcels.SU(U) + + sources(rho, U) ); UEqn.relax(); @@ -15,6 +16,6 @@ if (pimple.momentumPredictor()) { - solve(UEqn == -fvc::grad(p) + sources(rho, U)); + solve(UEqn == -fvc::grad(p)); K = 0.5*magSqr(U); } diff --git a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H index 22d927ca6b..0baee1ad30 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H @@ -2,7 +2,7 @@ rho = thermo.rho(); volScalarField rAU(1.0/UEqn.A()); volVectorField HbyA("HbyA", U); -HbyA = rAU*(UEqn == sources(rho, U))().H(); +HbyA = rAU*UEqn.H(); if (pimple.transonic()) { @@ -16,6 +16,8 @@ if (pimple.transonic()) ) ); + sources.relativeFlux(fvc::interpolate(psi), phid); + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -28,7 +30,7 @@ if (pimple.transonic()) + sources(psi, p, rho.name()) ); - sources.constrain(pEqn, rho.name()); + sources.constrain(pEqn); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); @@ -50,6 +52,8 @@ else ) ); + sources.relativeFlux(fvc::interpolate(rho), phiHbyA); + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -62,7 +66,7 @@ else + sources(psi, p, rho.name()) ); - sources.constrain(pEqn, rho.name()); + sources.constrain(pEqn); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H index f5a909a9dd..2c327a1099 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H @@ -21,9 +21,11 @@ + surfaceFilm.Sh() + radiation->Sh(thermo) + combustion->Sh() + + sources(rho, he) ); EEqn.relax(); + sources.constrain(EEqn); EEqn.solve(); thermo.correct(); diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options b/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options index a477abff47..a2d24b6d11 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/Make/options @@ -1,5 +1,7 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/fieldSources/lnInclude \ + -I${LIB_SRC}/sampling/lnInclude \ -I${LIB_SRC}/meshTools/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \ -I$(LIB_SRC)/lagrangian/distributionModels/lnInclude \ @@ -25,6 +27,8 @@ EXE_INC = \ EXE_LIBS = \ -lfiniteVolume \ + -lfieldSources \ + -lsampling \ -lmeshTools \ -lcompressibleRASModels \ -lcompressibleLESModels \ diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/UEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/UEqn.H index 81c587e243..5884abe0c1 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/UEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/UEqn.H @@ -5,10 +5,13 @@ + turbulence->divDevRhoReff(U) == parcels.SU(U) + + sources(rho, U) ); UEqn.relax(); + sources.constrain(UEqn); + if (pimple.momentumPredictor()) { solve diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H index b14b7d6dae..e05dcdef6a 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H @@ -22,18 +22,24 @@ tmp > mvConvection { volScalarField& Yi = Y[i]; - solve + fvScalarMatrix YEqn ( fvm::ddt(rho, Yi) + mvConvection->fvmDiv(phi, Yi) - fvm::laplacian(turbulence->alphaEff(), Yi) == parcels.SYi(i, Yi) + + sources(rho, Yi) + + combustion->R(Yi) + surfaceFilm.Srho(i) - + combustion->R(Yi), - mesh.solver("Yi") ); + YEqn.relax(); + + sources.constrain(YEqn); + + YEqn.solve(mesh.solver("Yi")); + Yi.max(0.0); Yt += Yi; } diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H index 057978c8f8..1a15b1b2ab 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H @@ -139,3 +139,5 @@ mesh, dimensionedScalar("dQ", dimEnergy/dimTime, 0.0) ); + + IObasicSourceList sources(mesh); diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/pEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/pEqn.H index 6a09845b6b..bcdd3beca4 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/pEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/pEqn.H @@ -18,6 +18,7 @@ surfaceScalarField phiHbyA + phig ); +sources.relativeFlux(fvc::interpolate(rho), phiHbyA); while (pimple.correctNonOrthogonal()) { @@ -30,8 +31,11 @@ while (pimple.correctNonOrthogonal()) == parcels.Srho() + surfaceFilm.Srho() + + sources(psi, p_rgh, rho.name()) ); + sources.constrain(p_rghEqn); + p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) @@ -39,6 +43,7 @@ while (pimple.correctNonOrthogonal()) phi = phiHbyA + p_rghEqn.flux(); U = HbyA + rAU*fvc::reconstruct((p_rghEqn.flux() + phig)/rhorAUf); U.correctBoundaryConditions(); + sources.correct(U); } } diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C b/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C index 06df5b1748..203ee0ecd8 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C @@ -37,6 +37,7 @@ Description #include "psiCombustionModel.H" #include "radiationModel.H" #include "SLGThermo.H" +#include "IObasicSourceList.H" #include "pimpleControl.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/rhoEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/rhoEqn.H index f939060181..282acfe91e 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/rhoEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/rhoEqn.H @@ -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-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,6 +37,7 @@ Description == parcels.Srho(rho) + surfaceFilm.Srho() + + sources(rho) ); } diff --git a/applications/solvers/lagrangian/reactingParcelFoam/UEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/UEqn.H index 090922e572..612e582c54 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/UEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/UEqn.H @@ -7,6 +7,7 @@ == rho.dimensionedInternalField()*g + parcels.SU(U) + + sources(rho, U) ); UEqn.relax(); @@ -17,6 +18,6 @@ if (pimple.momentumPredictor()) { - solve(UEqn == -fvc::grad(p) + sources(rho, U)); + solve(UEqn == -fvc::grad(p)); K = 0.5*magSqr(U); } diff --git a/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H index 1bcdf7c92f..569beae058 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H @@ -7,17 +7,19 @@ volScalarField rAU(1.0/UEqn.A()); volVectorField HbyA("HbyA", U); - HbyA = rAU*(UEqn == sources(rho, U))().H(); + HbyA = rAU*UEqn.H(); - surfaceScalarField phiHbyA("phiHbyA", fvc::interpolate(HbyA) & mesh.Sf()); - if (!pZones.active()) - { - // ddtPhiCorr only used without porosity - phiHbyA += fvc::ddtPhiCorr(rAU, rho, U, phi); - } - - phiHbyA *= fvc::interpolate(rho); + surfaceScalarField phiHbyA + ( + "phiHbyA", + fvc::interpolate(rho) + *( + (fvc::interpolate(HbyA) & mesh.Sf()) + + fvc::ddtPhiCorr(rAU, rho, U, phi) + ) + ); + sources.relativeFlux(fvc::interpolate(rho), phiHbyA); fvScalarMatrix pDDtEqn ( @@ -36,7 +38,7 @@ - fvm::laplacian(rho*rAU, p) ); - sources.constrain(pDDtEqn, rho.name()); + sources.constrain(pEqn); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); diff --git a/applications/solvers/lagrangian/sprayFoam/UEqn.H b/applications/solvers/lagrangian/sprayFoam/UEqn.H index 2ddaa2c301..3723f7f79d 100644 --- a/applications/solvers/lagrangian/sprayFoam/UEqn.H +++ b/applications/solvers/lagrangian/sprayFoam/UEqn.H @@ -6,6 +6,7 @@ == rho.dimensionedInternalField()*g + parcels.SU(U) + + sources(rho, U) ); UEqn.relax(); @@ -14,6 +15,6 @@ if (pimple.momentumPredictor()) { - solve(UEqn == -fvc::grad(p) + sources(rho, U)); + solve(UEqn == -fvc::grad(p)); K = 0.5*magSqr(U); } diff --git a/applications/solvers/lagrangian/sprayFoam/pEqn.H b/applications/solvers/lagrangian/sprayFoam/pEqn.H index d476a6bda8..9d95ee6dec 100644 --- a/applications/solvers/lagrangian/sprayFoam/pEqn.H +++ b/applications/solvers/lagrangian/sprayFoam/pEqn.H @@ -2,7 +2,7 @@ rho = thermo.rho(); volScalarField rAU(1.0/UEqn.A()); volVectorField HbyA("HbyA", U); -HbyA = rAU*(UEqn == sources(rho, U))().H(); +HbyA = rAU*UEqn.H(); if (pimple.transonic()) { @@ -16,6 +16,8 @@ if (pimple.transonic()) ) ); + sources.relativeFlux(fvc::interpolate(psi), phid); + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -28,6 +30,8 @@ if (pimple.transonic()) + sources(psi, p, rho.name()) ); + sources.constrain(pEqn); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) @@ -48,6 +52,8 @@ else ) ); + sources.relativeFlux(fvc::interpolate(psi), phiHbyA); + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -60,6 +66,8 @@ else + sources(psi, p, rho.name()) ); + sources.constrain(pEqn); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) diff --git a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/pEqn.H b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/pEqn.H index 0301fba2ea..d3435a8163 100644 --- a/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/pEqn.H +++ b/applications/solvers/lagrangian/sprayFoam/sprayEngineFoam/pEqn.H @@ -2,7 +2,7 @@ rho = thermo.rho(); volScalarField rAU(1.0/UEqn.A()); volVectorField HbyA("HbyA", U); -HbyA = rAU*(UEqn == sources(rho, U))().H(); +HbyA = rAU*UEqn.H(); if (pimple.transonic()) { @@ -16,6 +16,8 @@ if (pimple.transonic()) ) ); + sources.relativeFlux(fvc::interpolate(psi), phid); + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -28,6 +30,8 @@ if (pimple.transonic()) + sources(psi, p, rho.name()) ); + sources.constrain(pEqn); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) @@ -48,6 +52,8 @@ else ) ); + sources.relativeFlux(fvc::interpolate(rho), phiHbyA); + while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -60,6 +66,8 @@ else + sources(psi, p, rho.name()) ); + sources.constrain(pEqn); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) diff --git a/applications/test/fvSolutionCombine/Test-fvSolutionCombine.C b/applications/test/fvSolutionCombine/Test-fvSolutionCombine.C index 074996252e..0d9775e849 100644 --- a/applications/test/fvSolutionCombine/Test-fvSolutionCombine.C +++ b/applications/test/fvSolutionCombine/Test-fvSolutionCombine.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-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -114,7 +114,7 @@ int main(int argc, char *argv[]) IOobject ( dictName, - "system", + runTime.system(), runTime, IOobject::MUST_READ_IF_MODIFIED, IOobject::NO_WRITE, @@ -128,9 +128,9 @@ int main(int argc, char *argv[]) return 2; } - if (optRewrite && solutionDict.instance() != "system") + if (optRewrite && solutionDict.instance() != runTime.system()) { - Info<<"instance is not 'system' " + Info<<"instance is not " << runTime.system() "- disabling rewrite for this file" << nl; optRewrite = false; } diff --git a/applications/utilities/mesh/conversion/foamToStarMesh/getTimeIndex.H b/applications/utilities/mesh/conversion/foamToStarMesh/getTimeIndex.H index d722c432e3..d21b64fdc1 100644 --- a/applications/utilities/mesh/conversion/foamToStarMesh/getTimeIndex.H +++ b/applications/utilities/mesh/conversion/foamToStarMesh/getTimeIndex.H @@ -4,7 +4,7 @@ if ( - runTime.timeName() != "constant" + runTime.timeName() != runTime.constant() && runTime.timeName() != "0" ) { diff --git a/applications/utilities/mesh/conversion/foamToSurface/getTimeIndex.H b/applications/utilities/mesh/conversion/foamToSurface/getTimeIndex.H index d722c432e3..d21b64fdc1 100644 --- a/applications/utilities/mesh/conversion/foamToSurface/getTimeIndex.H +++ b/applications/utilities/mesh/conversion/foamToSurface/getTimeIndex.H @@ -4,7 +4,7 @@ if ( - runTime.timeName() != "constant" + runTime.timeName() != runTime.constant() && runTime.timeName() != "0" ) { diff --git a/applications/utilities/mesh/generation/blockMesh/blockMeshApp.C b/applications/utilities/mesh/generation/blockMesh/blockMeshApp.C index 6f8712a0b3..097330487e 100644 --- a/applications/utilities/mesh/generation/blockMesh/blockMeshApp.C +++ b/applications/utilities/mesh/generation/blockMesh/blockMeshApp.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-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -104,60 +104,50 @@ int main(int argc, char *argv[]) polyMeshDir = polyMesh::meshSubDir; } - autoPtr meshDictIoPtr; + IOobject meshDictIO + ( + dictName, + runTime.constant(), + polyMeshDir, + runTime, + IOobject::MUST_READ, + IOobject::NO_WRITE, + false + ); if (args.optionFound("dict")) { const fileName dictPath = args["dict"]; - meshDictIoPtr.set + meshDictIO = IOobject ( - new IOobject ( - ( - isDir(dictPath) - ? dictPath/dictName - : dictPath - ), - runTime, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE, - false - ) - ); - } - else - { - meshDictIoPtr.set - ( - new IOobject - ( - dictName, - runTime.constant(), - polyMeshDir, - runTime, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE, - false - ) + isDir(dictPath) + ? dictPath/dictName + : dictPath + ), + runTime, + IOobject::MUST_READ, + IOobject::NO_WRITE, + false ); } - if (!meshDictIoPtr->headerOk()) + if (!meshDictIO.headerOk()) { FatalErrorIn(args.executable()) << "Cannot open mesh description file\n " - << meshDictIoPtr->objectPath() + << meshDictIO.objectPath() << nl << exit(FatalError); } Info<< "Creating block mesh from\n " - << meshDictIoPtr->objectPath() << endl; + << meshDictIO.objectPath() << endl; blockMesh::verbose(true); - IOdictionary meshDict(meshDictIoPtr()); + IOdictionary meshDict(meshDictIO); blockMesh blocks(meshDict, regionName); diff --git a/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C index be4fffa8df..b159f9c096 100644 --- a/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C +++ b/applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C @@ -1241,8 +1241,7 @@ int main(int argc, char *argv[]) #include "addRegionOption.H" #include "addOverwriteOption.H" - argList::addOption("dict", "name", "specify alternative dictionary"); - + #include "addDictOption.H" #include "setRootCase.H" #include "createTime.H" #include "createNamedMesh.H" @@ -1263,19 +1262,14 @@ int main(int argc, char *argv[]) const word oldInstance = mesh.pointsInstance(); bool overwrite = args.optionFound("overwrite"); - const word dictName - (args.optionLookupOrDefault("dict", "extrudeToRegionMeshDict")); - IOdictionary dict - ( - IOobject - ( - dictName, - runTime.system(), - runTime, - IOobject::MUST_READ_IF_MODIFIED - ) - ); + + const word dictName("extrudeToRegionMeshDict"); + + #include "setSystemMeshDictionaryIO.H" + + IOdictionary dict(dictIO); + // Point generator autoPtr model(extrudeModel::New(dict)); diff --git a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C index 6b63430918..2406cb667c 100644 --- a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C +++ b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C @@ -369,7 +369,10 @@ int main(int argc, char *argv[]) // Add all the surface regions as patches // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - labelList globalToPatch; + //- Global surface region to patch (non faceZone surface) or patches + // (faceZone surfaces) + labelList globalToMasterPatch; + labelList globalToSlavePatch; { Info<< nl << "Adding patches for surface regions" << nl @@ -377,7 +380,8 @@ int main(int argc, char *argv[]) << endl; // From global region number to mesh patch. - globalToPatch.setSize(surfaces.nRegions(), -1); + globalToMasterPatch.setSize(surfaces.nRegions(), -1); + globalToSlavePatch.setSize(surfaces.nRegions(), -1); Info<< "Patch\tType\tRegion" << nl << "-----\t----\t------" @@ -394,36 +398,111 @@ int main(int argc, char *argv[]) Info<< surfaces.names()[surfI] << ':' << nl << nl; - forAll(regNames, i) + if (surfaces.faceZoneNames()[surfI].empty()) { - label globalRegionI = surfaces.globalRegion(surfI, i); - - label patchI; - - if (surfacePatchInfo.set(globalRegionI)) + // 'Normal' surface + forAll(regNames, i) { - patchI = meshRefiner.addMeshedPatch - ( - regNames[i], - surfacePatchInfo[globalRegionI] - ); + label globalRegionI = surfaces.globalRegion(surfI, i); + + label patchI; + + if (surfacePatchInfo.set(globalRegionI)) + { + patchI = meshRefiner.addMeshedPatch + ( + regNames[i], + surfacePatchInfo[globalRegionI] + ); + } + else + { + dictionary patchInfo; + patchInfo.set("type", wallPolyPatch::typeName); + + patchI = meshRefiner.addMeshedPatch + ( + regNames[i], + patchInfo + ); + } + + Info<< patchI << '\t' << mesh.boundaryMesh()[patchI].type() + << '\t' << regNames[i] << nl; + + globalToMasterPatch[globalRegionI] = patchI; + globalToSlavePatch[globalRegionI] = patchI; } - else + } + else + { + // Zoned surface + forAll(regNames, i) { - dictionary patchInfo; - patchInfo.set("type", wallPolyPatch::typeName); + label globalRegionI = surfaces.globalRegion(surfI, i); - patchI = meshRefiner.addMeshedPatch - ( - regNames[i], - patchInfo - ); + // Add master side patch + { + label patchI; + + if (surfacePatchInfo.set(globalRegionI)) + { + patchI = meshRefiner.addMeshedPatch + ( + regNames[i], + surfacePatchInfo[globalRegionI] + ); + } + else + { + dictionary patchInfo; + patchInfo.set("type", wallPolyPatch::typeName); + + patchI = meshRefiner.addMeshedPatch + ( + regNames[i], + patchInfo + ); + } + + Info<< patchI << '\t' + << mesh.boundaryMesh()[patchI].type() + << '\t' << regNames[i] << nl; + + globalToMasterPatch[globalRegionI] = patchI; + } + // Add slave side patch + { + const word slaveName = regNames[i] + "_slave"; + label patchI; + + if (surfacePatchInfo.set(globalRegionI)) + { + patchI = meshRefiner.addMeshedPatch + ( + slaveName, + surfacePatchInfo[globalRegionI] + ); + } + else + { + dictionary patchInfo; + patchInfo.set("type", wallPolyPatch::typeName); + + patchI = meshRefiner.addMeshedPatch + ( + slaveName, + patchInfo + ); + } + + Info<< patchI << '\t' + << mesh.boundaryMesh()[patchI].type() + << '\t' << slaveName << nl; + + globalToSlavePatch[globalRegionI] = patchI; + } } - - Info<< patchI << '\t' << mesh.boundaryMesh()[patchI].type() - << '\t' << regNames[i] << nl; - - globalToPatch[globalRegionI] = patchI; } Info<< nl; @@ -479,7 +558,8 @@ int main(int argc, char *argv[]) meshRefiner, decomposer, distributor, - globalToPatch + globalToMasterPatch, + globalToSlavePatch ); // Refinement parameters @@ -510,7 +590,8 @@ int main(int argc, char *argv[]) autoSnapDriver snapDriver ( meshRefiner, - globalToPatch + globalToMasterPatch, + globalToSlavePatch ); // Snap parameters @@ -544,7 +625,12 @@ int main(int argc, char *argv[]) { cpuTime timer; - autoLayerDriver layerDriver(meshRefiner, globalToPatch); + autoLayerDriver layerDriver + ( + meshRefiner, + globalToMasterPatch, + globalToSlavePatch + ); // Layer addition parameters layerParameters layerParams(layerDict, mesh.boundaryMesh()); diff --git a/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C b/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C index c2e2a06ebb..89beec32ef 100644 --- a/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C +++ b/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C @@ -117,14 +117,9 @@ int main(int argc, char *argv[]) "Makes internal faces into boundary faces.\n" "Does not duplicate points." ); - + #include "addDictOption.H" #include "addOverwriteOption.H" - argList::addOption - ( - "dict", - "file", - "specify alternative dictionary for the createBaffles description" - ); + #include "addDictOption.H" #include "addRegionOption.H" #include "setRootCase.H" #include "createTime.H" @@ -136,14 +131,8 @@ int main(int argc, char *argv[]) const word oldInstance = mesh.pointsInstance(); - const word dictName - ( - args.optionLookupOrDefault - ( - "dict", - "createBafflesDict" - ) - ); + const word dictName("createBafflesDict"); + #include "setSystemMeshDictionaryIO.H" Switch internalFacesOnly(false); @@ -152,17 +141,7 @@ int main(int argc, char *argv[]) PtrList selectors; { Info<< "Reading baffle criteria from " << dictName << nl << endl; - IOdictionary dict - ( - IOobject - ( - dictName, - mesh.time().system(), - mesh, - IOobject::MUST_READ, - IOobject::NO_WRITE - ) - ); + IOdictionary dict(dictIO); dict.lookup("internalFacesOnly") >> internalFacesOnly; noFields = dict.lookupOrDefault("noFields", false); diff --git a/applications/utilities/mesh/manipulation/createPatch/createPatch.C b/applications/utilities/mesh/manipulation/createPatch/createPatch.C index 7a969e15d1..9e89c8d4df 100644 --- a/applications/utilities/mesh/manipulation/createPatch/createPatch.C +++ b/applications/utilities/mesh/manipulation/createPatch/createPatch.C @@ -505,13 +505,7 @@ int main(int argc, char *argv[]) { #include "addOverwriteOption.H" #include "addRegionOption.H" - argList::addOption - ( - "dict", - "word", - "name of dictionary to provide patch information" - ); - + #include "addDictOption.H" #include "setRootCase.H" #include "createTime.H" runTime.functionObjects().off(); @@ -521,38 +515,20 @@ int main(int argc, char *argv[]) const bool overwrite = args.optionFound("overwrite"); - word dictName - ( - args.optionLookupOrDefault("dict", "createPatchDict") - ); + #include "createNamedPolyMesh.H" + + const word oldInstance = mesh.pointsInstance(); + + const word dictName("createPatchDict"); + #include "setSystemMeshDictionaryIO.H" Info<< "Reading " << dictName << nl << endl; - IOdictionary dict - ( - IOobject - ( - dictName, - runTime.system(), - ( - meshRegionName != polyMesh::defaultRegion - ? meshRegionName - : word::null - ), - runTime, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE, - false - ) - ); - + IOdictionary dict(dictIO); // Whether to synchronise points const Switch pointSync(dict.lookup("pointSync")); - #include "createNamedPolyMesh.H" - - const word oldInstance = mesh.pointsInstance(); const polyBoundaryMesh& patches = mesh.boundaryMesh(); diff --git a/applications/utilities/mesh/manipulation/refineMesh/refineMesh.C b/applications/utilities/mesh/manipulation/refineMesh/refineMesh.C index f8a206e651..098864102d 100644 --- a/applications/utilities/mesh/manipulation/refineMesh/refineMesh.C +++ b/applications/utilities/mesh/manipulation/refineMesh/refineMesh.C @@ -298,12 +298,7 @@ int main(int argc, char *argv[]) #include "addOverwriteOption.H" #include "addRegionOption.H" - argList::addBoolOption - ( - "dict", - "refine according to system/refineMeshDict" - ); - + #include "addDictOption.H" #include "setRootCase.H" #include "createTime.H" runTime.functionObjects().off(); @@ -327,19 +322,12 @@ int main(int argc, char *argv[]) if (readDict) { - Info<< "Refining according to refineMeshDict" << nl << endl; + const word dictName("refineMeshDict"); + #include "setSystemMeshDictionaryIO.H" - refineDict = IOdictionary - ( - IOobject - ( - "refineMeshDict", - runTime.system(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ); + Info<< "Refining according to " << dictName << nl << endl; + + refineDict = IOdictionary(dictIO); const word setName(refineDict.lookup("set")); diff --git a/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C b/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C index 7eede94626..d03f24cd7c 100644 --- a/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C +++ b/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C @@ -614,11 +614,7 @@ int main(int argc, char *argv[]) # include "addRegionOption.H" # include "addOverwriteOption.H" # include "addTimeOptions.H" - argList::addBoolOption - ( - "dict", - "renumber according to system/renumberMeshDict" - ); +# include "addDictOption.H" argList::addBoolOption ( "frontWidth", @@ -700,23 +696,13 @@ int main(int argc, char *argv[]) if (readDict) { - Info<< "Renumber according to renumberMeshDict." << nl << endl; + const word dictName("renumberMeshDict"); + #include "setSystemMeshDictionaryIO.H" - renumberDictPtr.reset - ( - new IOdictionary - ( - IOobject - ( - "renumberMeshDict", - runTime.system(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE - ) - ) - ); - const IOdictionary renumberDict = renumberDictPtr(); + Info<< "Renumber according to " << dictName << nl << endl; + + renumberDictPtr.reset(new IOdictionary(dictIO)); + const IOdictionary& renumberDict = renumberDictPtr(); renumberPtr = renumberMethod::New(renumberDict); diff --git a/applications/utilities/mesh/manipulation/subsetMesh/cellSelection/outsideCellSelection.C b/applications/utilities/mesh/manipulation/subsetMesh/cellSelection/outsideCellSelection.C index 556ae4e07e..7cb4eec518 100644 --- a/applications/utilities/mesh/manipulation/subsetMesh/cellSelection/outsideCellSelection.C +++ b/applications/utilities/mesh/manipulation/subsetMesh/cellSelection/outsideCellSelection.C @@ -156,10 +156,21 @@ Foam::boolList Foam::cellSelections::outsideCellSelection::findRegions reduce(keepRegionI, maxOp