From 4b527e3e27a8ed8ed829a47c8c480a041c917d34 Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 3 Nov 2011 16:58:53 +0000 Subject: [PATCH] ENH: Updated solvers using fieldSources --- applications/solvers/incompressible/pimpleFoam/UEqn.H | 5 +++-- .../incompressible/simpleFoam/MRFSimpleFoam/UEqn.H | 3 ++- .../incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H | 5 +++-- applications/solvers/incompressible/simpleFoam/UEqn.H | 5 +++-- .../incompressible/simpleFoam/porousSimpleFoam/UEqn.H | 5 +++-- .../solvers/lagrangian/LTSReactingParcelFoam/UEqn.H | 3 ++- .../solvers/lagrangian/LTSReactingParcelFoam/YEqn.H | 3 ++- .../solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H | 3 ++- .../solvers/lagrangian/LTSReactingParcelFoam/pEqn.H | 5 +++-- .../solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H | 3 ++- .../lagrangian/LTSReactingParcelFoam/timeScales.H | 2 +- .../solvers/lagrangian/coalChemistryFoam/UEqn.H | 5 +++-- .../solvers/lagrangian/coalChemistryFoam/YEqn.H | 6 ++++-- .../solvers/lagrangian/coalChemistryFoam/hsEqn.H | 6 ++++-- .../solvers/lagrangian/coalChemistryFoam/pEqn.H | 10 ++++++---- .../solvers/lagrangian/coalChemistryFoam/rhoEqn.H | 3 ++- .../porousExplicitSourceReactingParcelFoam/UEqn.H | 3 ++- .../porousExplicitSourceReactingParcelFoam/YEqn.H | 3 ++- .../porousExplicitSourceReactingParcelFoam/hsEqn.H | 3 ++- .../porousExplicitSourceReactingParcelFoam/pEqn.H | 4 +++- .../porousExplicitSourceReactingParcelFoam/rhoEqn.H | 3 ++- 21 files changed, 56 insertions(+), 32 deletions(-) diff --git a/applications/solvers/incompressible/pimpleFoam/UEqn.H b/applications/solvers/incompressible/pimpleFoam/UEqn.H index 4d5a99c800..120c230e17 100644 --- a/applications/solvers/incompressible/pimpleFoam/UEqn.H +++ b/applications/solvers/incompressible/pimpleFoam/UEqn.H @@ -5,12 +5,13 @@ tmp UEqn fvm::ddt(U) + fvm::div(phi, U) + turbulence->divDevReff(U) + + sources(U) ); -sources.apply(UEqn()); - UEqn().relax(); +sources.constrain(UEqn()); + volScalarField rAU(1.0/UEqn().A()); if (pimple.momentumPredictor()) diff --git a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/UEqn.H index dd23e3d221..3c0d01e922 100644 --- a/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/UEqn.H +++ b/applications/solvers/incompressible/simpleFoam/MRFSimpleFoam/UEqn.H @@ -4,11 +4,12 @@ ( fvm::div(phi, U) + turbulence->divDevReff(U) + + sources(U) ); mrfZones.addCoriolis(UEqn()); - sources.apply(UEqn()); + sources.constrain(UEqn()); UEqn().relax(); diff --git a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H index 94380de28c..ef88991aef 100644 --- a/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H +++ b/applications/solvers/incompressible/simpleFoam/SRFSimpleFoam/UrelEqn.H @@ -5,10 +5,11 @@ fvm::div(phi, Urel) + turbulence->divDevReff(Urel) + SRF->Su() + + sources(Urel) ); - sources.apply(UrelEqn()); - UrelEqn().relax(); + sources.constrain(UrelEqn()); + solve(UrelEqn() == -fvc::grad(p)); diff --git a/applications/solvers/incompressible/simpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/UEqn.H index df1d53a353..854c86bec1 100644 --- a/applications/solvers/incompressible/simpleFoam/UEqn.H +++ b/applications/solvers/incompressible/simpleFoam/UEqn.H @@ -4,10 +4,11 @@ ( fvm::div(phi, U) + turbulence->divDevReff(U) + + sources(U) ); - sources.apply(UEqn()); - UEqn().relax(); + sources.constrain(UEqn()); + solve(UEqn() == -fvc::grad(p)); diff --git a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H index 2dd998c484..d9127ab754 100644 --- a/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H +++ b/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/UEqn.H @@ -4,12 +4,13 @@ ( fvm::div(phi, U) + turbulence->divDevReff(U) + + sources(U) ); - sources.apply(UEqn()); - UEqn().relax(); + sources.constrain(UEqn()); + // Include the porous media resistance and solve the momentum equation // either implicit in the tensorial resistance or transport using by // including the spherical part of the resistance in the momentum diagonal diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H index bf6f141875..c689f2667d 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/UEqn.H @@ -4,12 +4,13 @@ fvm::ddt(rho, U) + fvm::div(phi, U) + turbulence->divDevRhoReff(U) + + sources(rho, U) == rho.dimensionedInternalField()*g + parcels.SU(U) ); - sources.apply(UEqn); + sources.constrain(UEqn); pZones.addResistance(UEqn); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H index a5ee090d84..2eeb4f7850 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/YEqn.H @@ -28,12 +28,13 @@ if (solveSpecies) fvm::ddt(rho, Yi) + mvConvection->fvmDiv(phi, Yi) - fvm::laplacian(turbulence->muEff(), Yi) + + sources(Yi) == parcels.SYi(i, Yi) + combustion->R(Yi) ); - sources.apply(YEqn); + sources.constrain(YEqn); YEqn.solve(mesh.solver("Yi")); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H index c8c634bbd9..9ed83206bc 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/hsEqn.H @@ -4,6 +4,7 @@ fvm::ddt(rho, hs) + mvConvection->fvmDiv(phi, hs) - fvm::laplacian(turbulence->alphaEff(), hs) + + sources(rho, hs) == DpDt + parcels.Sh(hs) @@ -11,7 +12,7 @@ + combustion->Sh() ); - sources.apply(hsEqn); + sources.constrain(hsEqn); hsEqn.solve(); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H index 3c9cfdeade..bb7b7be815 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/pEqn.H @@ -27,12 +27,11 @@ ( fvc::ddt(rho) + psi*correction(fvm::ddt(p)) + fvc::div(phi) + + sources(psi, p, rho.name()) == parcels.Srho() ); - sources.apply(pDDtEqn, rho.name()); - while (pimple.correctNonOrthogonal()) { fvScalarMatrix pEqn @@ -41,6 +40,8 @@ - fvm::laplacian(rho*rAU, p) ); + sources.constrain(pDDtEqn, rho.name()); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H index 829ad231e7..f87fc5211d 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/rhoEqn.H @@ -34,11 +34,12 @@ Description ( fvm::ddt(rho) + fvc::div(phi) + + sources(rho) == parcels.Srho(rho) ); - sources.apply(rhoEqn); + sources.constrain(rhoEqn); rhoEqn.solve(); diff --git a/applications/solvers/lagrangian/LTSReactingParcelFoam/timeScales.H b/applications/solvers/lagrangian/LTSReactingParcelFoam/timeScales.H index e61e6cdac7..43ebced834 100644 --- a/applications/solvers/lagrangian/LTSReactingParcelFoam/timeScales.H +++ b/applications/solvers/lagrangian/LTSReactingParcelFoam/timeScales.H @@ -76,7 +76,7 @@ Info<< "Time scales min/max:" << endl; ( DpDt + parcels.hsTrans()/(mesh.V()*runTime.deltaT()) -// + energySource.Su() +// + sources(rho, hs) + combustion->Sh()() ) /rho diff --git a/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H index 2956bf99d8..1211ce88ab 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/UEqn.H @@ -3,16 +3,17 @@ fvm::ddt(rho, U) + fvm::div(phi, U) + turbulence->divDevRhoReff(U) + + sources(rho, U) == rho.dimensionedInternalField()*g + coalParcels.SU(U) + limestoneParcels.SU(U) ); - sources.apply(UEqn); - UEqn.relax(); + sources.constrain(UEqn); + if (pimple.momentumPredictor()) { solve(UEqn == -fvc::grad(p)); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H index c6abcb4db5..c2e6d6944e 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/YEqn.H @@ -27,14 +27,16 @@ tmp > mvConvection fvm::ddt(rho, Yi) + mvConvection->fvmDiv(phi, Yi) - fvm::laplacian(turbulence->muEff(), Yi) + + sources(rho, Yi) == coalParcels.SYi(i, Yi) + combustion->R(Yi) ); - sources.apply(YiEqn); - YiEqn.relax(); + + sources.constrain(YiEqn); + YiEqn.solve(mesh.solver("Yi")); Yi.max(0.0); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H index fa9f3a0a44..1c4c20d18c 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/hsEqn.H @@ -4,6 +4,7 @@ fvm::ddt(rho, hs) + mvConvection->fvmDiv(phi, hs) - fvm::laplacian(turbulence->alphaEff(), hs) + + sources(rho, hs) == DpDt + combustion->Sh() @@ -12,9 +13,10 @@ + radiation->Shs(thermo) ); - sources.apply(hsEqn); - hsEqn.relax(); + + sources.constrain(hsEqn); + hsEqn.solve(); thermo.correct(); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H index b8bb134522..245f419bbf 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H @@ -22,11 +22,12 @@ if (pimple.transonic()) fvm::ddt(psi, p) + fvm::div(phid, p) - fvm::laplacian(rho*rAU, p) + + sources(psi, p, rho.name()) == coalParcels.Srho() ); - sources.apply(pEqn, rho.name()); + sources.constrain(pEqn, rho.name()); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); @@ -39,8 +40,8 @@ if (pimple.transonic()) else { phi = - fvc::interpolate(rho)* - ( + fvc::interpolate(rho) + *( (fvc::interpolate(U) & mesh.Sf()) + fvc::ddtPhiCorr(rAU, rho, U, phi) ); @@ -52,11 +53,12 @@ else fvm::ddt(psi, p) + fvc::div(phi) - fvm::laplacian(rho*rAU, p) + + sources(psi, p, rho.name()) == coalParcels.Srho() ); - sources.apply(pEqn, rho.name()); + sources.constrain(pEqn, rho.name()); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H index 8902cc95a8..336aa8b48c 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/rhoEqn.H @@ -34,11 +34,12 @@ Description ( fvm::ddt(rho) + fvc::div(phi) + + sources(rho) == coalParcels.Srho(rho) ); - sources.apply(rhoEqn); + sources.constrain(rhoEqn); rhoEqn.solve(); } diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H index a89058d2b5..134ec50950 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/UEqn.H @@ -4,12 +4,13 @@ fvm::ddt(rho, U) + fvm::div(phi, U) + turbulence->divDevRhoReff(U) + + sources(rho, U) == rho.dimensionedInternalField()*g + parcels.SU(U) ); - sources.apply(UEqn); + sources.constrain(UEqn); pZones.addResistance(UEqn); diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H index 8811a5ffe3..71059f3e63 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/YEqn.H @@ -29,12 +29,13 @@ if (solveSpecies) fvm::ddt(rho, Yi) + mvConvection->fvmDiv(phi, Yi) - fvm::laplacian(turbulence->muEff(), Yi) + + sources(rho, Yi) == parcels.SYi(i, Yi) + combustion->R(Yi) ); - sources.apply(YiEqn); + sources.constrain(YiEqn); YiEqn.solve(mesh.solver("Yi")); diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H index d15dd3367e..27628beb7c 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/hsEqn.H @@ -34,6 +34,7 @@ fvm::ddt(rho, hs) + mvConvection->fvmDiv(phi, hs) - fvm::laplacian(turbulence->alphaEff(), hs) + + sources(rho, hs) == pWork() + parcels.Sh(hs) @@ -41,7 +42,7 @@ + combustion->Sh() ); - sources.apply(hsEqn); + sources.constrain(hsEqn); hsEqn.solve(); diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H index 705a4bae92..cd2f228659 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/pEqn.H @@ -27,11 +27,11 @@ ( fvc::ddt(rho) + psi*correction(fvm::ddt(p)) + fvc::div(phi) + + sources(psi, p, rho.name()) == parcels.Srho() ); - sources.apply(pDDtEqn, rho.name()); while (pimple.correctNonOrthogonal()) { @@ -41,6 +41,8 @@ - fvm::laplacian(rho*rAU, p) ); + sources.constrain(pDDtEqn, rho.name()); + pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) diff --git a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H index d5d36f7c5f..e2816dd18c 100644 --- a/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H +++ b/applications/solvers/lagrangian/porousExplicitSourceReactingParcelFoam/rhoEqn.H @@ -34,11 +34,12 @@ Description ( fvm::ddt(rho) + fvc::div(phi) + + sources(rho) == parcels.Srho(rho) ); - sources.apply(rhoEqn); + sources.constrain(rhoEqn); rhoEqn.solve(); }