diff --git a/applications/solvers/combustion/XiFoam/XiEngineFoam/pEqn.H b/applications/solvers/combustion/XiFoam/XiEngineFoam/pEqn.H index aca8c2c11a..fedaea7106 100644 --- a/applications/solvers/combustion/XiFoam/XiEngineFoam/pEqn.H +++ b/applications/solvers/combustion/XiFoam/XiEngineFoam/pEqn.H @@ -13,7 +13,10 @@ if (pimple.transonic()) *( ( fvc::flux(HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, rhoUf)/fvc::interpolate(rho) + + MRF.zeroFilter + ( + rhorAUf*fvc::ddtCorr(rho, U, rhoUf)/fvc::interpolate(rho) + ) ) ) ); @@ -47,7 +50,7 @@ else "phiHbyA", ( fvc::flux(rho*HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, rhoUf) + + MRF.zeroFilter(rhorAUf*fvc::ddtCorr(rho, U, rhoUf)) ) ); diff --git a/applications/solvers/combustion/fireFoam/pEqn.H b/applications/solvers/combustion/fireFoam/pEqn.H index 0d42787fff..19cafee7ce 100644 --- a/applications/solvers/combustion/fireFoam/pEqn.H +++ b/applications/solvers/combustion/fireFoam/pEqn.H @@ -11,7 +11,7 @@ surfaceScalarField phiHbyA "phiHbyA", ( fvc::flux(rho*HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, phi) + + MRF.zeroFilter(rhorAUf*fvc::ddtCorr(rho, U, phi)) ) + phig ); diff --git a/applications/solvers/combustion/reactingFoam/pEqn.H b/applications/solvers/combustion/reactingFoam/pEqn.H index 36f3e77753..f4ff96931b 100644 --- a/applications/solvers/combustion/reactingFoam/pEqn.H +++ b/applications/solvers/combustion/reactingFoam/pEqn.H @@ -17,7 +17,10 @@ if (pimple.transonic()) fvc::interpolate(psi) *( fvc::flux(HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, phi)/fvc::interpolate(rho) + + MRF.zeroFilter + ( + rhorAUf*fvc::ddtCorr(rho, U, phi)/fvc::interpolate(rho) + ) ) ); @@ -49,7 +52,7 @@ else "phiHbyA", ( fvc::flux(rho*HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, phi) + + MRF.zeroFilter(rhorAUf*fvc::ddtCorr(rho, U, phi)) ) ); diff --git a/applications/solvers/combustion/reactingFoam/pcEqn.H b/applications/solvers/combustion/reactingFoam/pcEqn.H index a1564b0f20..5ca9b4adca 100644 --- a/applications/solvers/combustion/reactingFoam/pcEqn.H +++ b/applications/solvers/combustion/reactingFoam/pcEqn.H @@ -17,8 +17,11 @@ if (pimple.transonic()) fvc::interpolate(psi) *( fvc::flux(HbyA) - + fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi) - /fvc::interpolate(rho) + + MRF.zeroFilter + ( + fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi) + /fvc::interpolate(rho) + ) ) ); @@ -61,7 +64,7 @@ else "phiHbyA", ( fvc::flux(rho*HbyA) - + fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi) + + MRF.zeroFilter(fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi)) ) ); diff --git a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/pEqn.H b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/pEqn.H index 04296ddfc2..d5feab6e53 100644 --- a/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/pEqn.H +++ b/applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/pEqn.H @@ -15,7 +15,7 @@ surfaceScalarField phiHbyA "phiHbyA", ( fvc::flux(rho*HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, phi) + + MRF.zeroFilter(rhorAUf*fvc::ddtCorr(rho, U, phi)) ) + phig ); diff --git a/applications/solvers/compressible/rhoPimpleFoam/pEqn.H b/applications/solvers/compressible/rhoPimpleFoam/pEqn.H index f54376ffad..f2f2c5c71c 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/pEqn.H +++ b/applications/solvers/compressible/rhoPimpleFoam/pEqn.H @@ -20,7 +20,7 @@ surfaceScalarField phiHbyA ( "phiHbyA", fvc::interpolate(rho)*fvc::flux(HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, phi, rhoUf) + + MRF.zeroFilter(rhorAUf*fvc::ddtCorr(rho, U, phi, rhoUf)) ); fvc::makeRelative(phiHbyA, rho, U); diff --git a/applications/solvers/compressible/rhoPimpleFoam/pcEqn.H b/applications/solvers/compressible/rhoPimpleFoam/pcEqn.H index 7ac95a9c5b..8681246553 100644 --- a/applications/solvers/compressible/rhoPimpleFoam/pcEqn.H +++ b/applications/solvers/compressible/rhoPimpleFoam/pcEqn.H @@ -21,7 +21,10 @@ surfaceScalarField phiHbyA "phiHbyA", ( fvc::interpolate(rho)*fvc::flux(HbyA) - + fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi, rhoUf) + + MRF.zeroFilter + ( + fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi, rhoUf) + ) ) ); diff --git a/applications/solvers/compressible/sonicFoam/pEqn.H b/applications/solvers/compressible/sonicFoam/pEqn.H index bd553928b1..50a9ff240d 100644 --- a/applications/solvers/compressible/sonicFoam/pEqn.H +++ b/applications/solvers/compressible/sonicFoam/pEqn.H @@ -9,7 +9,7 @@ surfaceScalarField phid fvc::interpolate(psi) *( fvc::flux(HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, phi)/fvc::interpolate(rho) + + MRF.zeroFilter(rhorAUf*fvc::ddtCorr(rho, U, phi)/fvc::interpolate(rho)) ) ); diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/pEqn.H b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/pEqn.H index 51d9461c87..0eeb6e15a3 100644 --- a/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/pEqn.H +++ b/applications/solvers/heatTransfer/buoyantBoussinesqPimpleFoam/pEqn.H @@ -9,7 +9,7 @@ ( "phiHbyA", fvc::flux(HbyA) - + rAUf*fvc::ddtCorr(U, phi) + + MRF.zeroFilter(rAUf*fvc::ddtCorr(U, phi)) + phig ); diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H index 677fabffd5..9a2553a7e9 100644 --- a/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H +++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/pEqn.H @@ -19,7 +19,7 @@ surfaceScalarField phiHbyA "phiHbyA", ( fvc::flux(rho*HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, phi) + + MRF.zeroFilter(rhorAUf*fvc::ddtCorr(rho, U, phi)) ) + phig ); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H index dc67ab09e2..9bc978b254 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/pEqn.H @@ -19,7 +19,7 @@ surfaceScalarField phiHbyA "phiHbyA", ( fvc::flux(rho*HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, phi) + + MRF.zeroFilter(rhorAUf*fvc::ddtCorr(rho, U, phi)) ) + phig ); diff --git a/applications/solvers/incompressible/pimpleFoam/pEqn.H b/applications/solvers/incompressible/pimpleFoam/pEqn.H index df19741c50..e3c61fe37d 100644 --- a/applications/solvers/incompressible/pimpleFoam/pEqn.H +++ b/applications/solvers/incompressible/pimpleFoam/pEqn.H @@ -4,7 +4,7 @@ surfaceScalarField phiHbyA ( "phiHbyA", fvc::flux(HbyA) - + fvc::interpolate(rAU)*fvc::ddtCorr(U, phi, Uf) + + MRF.zeroFilter(fvc::interpolate(rAU)*fvc::ddtCorr(U, phi, Uf)) ); MRF.makeRelative(phiHbyA); diff --git a/applications/solvers/incompressible/pisoFoam/pEqn.H b/applications/solvers/incompressible/pisoFoam/pEqn.H index 05c34376ec..866d84e945 100644 --- a/applications/solvers/incompressible/pisoFoam/pEqn.H +++ b/applications/solvers/incompressible/pisoFoam/pEqn.H @@ -4,7 +4,7 @@ surfaceScalarField phiHbyA ( "phiHbyA", fvc::flux(HbyA) - + fvc::interpolate(rAU)*fvc::ddtCorr(U, phi) + + MRF.zeroFilter(fvc::interpolate(rAU)*fvc::ddtCorr(U, phi)) ); MRF.makeRelative(phiHbyA); diff --git a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H index 4f6eaf3550..0182e453ba 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/pEqn.H @@ -12,7 +12,10 @@ if (pimple.transonic()) fvc::interpolate(psi) *( fvc::flux(HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, phi)/fvc::interpolate(rho) + + MRF.zeroFilter + ( + rhorAUf*fvc::ddtCorr(rho, U, phi)/fvc::interpolate(rho) + ) ) ); @@ -45,7 +48,7 @@ else "phiHbyA", ( fvc::flux(rho*HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, phi) + + MRF.zeroFilter(rhorAUf*fvc::ddtCorr(rho, U, phi)) ) ); diff --git a/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H index 588273cf54..b685400077 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/pEqn.H @@ -18,7 +18,7 @@ surfaceScalarField phiHbyA "phiHbyA", ( fvc::flux(rho*HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, phi) + + MRF.zeroFilter(rhorAUf*fvc::ddtCorr(rho, U, phi)) ) + phig ); diff --git a/applications/solvers/lagrangian/sprayFoam/pEqn.H b/applications/solvers/lagrangian/sprayFoam/pEqn.H index b15fb81e13..10c49d1811 100644 --- a/applications/solvers/lagrangian/sprayFoam/pEqn.H +++ b/applications/solvers/lagrangian/sprayFoam/pEqn.H @@ -20,7 +20,10 @@ if (pimple.transonic()) fvc::interpolate(psi) *( fvc::flux(HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, phi)/fvc::interpolate(rho) + + MRF.zeroFilter + ( + rhorAUf*fvc::ddtCorr(rho, U, phi)/fvc::interpolate(rho) + ) ) ); diff --git a/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/pEqn.H b/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/pEqn.H index 90033814d3..a08bcf9fd1 100644 --- a/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/pEqn.H +++ b/applications/solvers/lagrangian/sprayFoam/sprayDyMFoam/pEqn.H @@ -20,7 +20,10 @@ if (pimple.transonic()) fvc::interpolate(psi) *( fvc::flux(HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, rhoUf)/fvc::interpolate(rho) + + MRF.zeroFilter + ( + rhorAUf*fvc::ddtCorr(rho, U, rhoUf)/fvc::interpolate(rho) + ) ) ); @@ -53,7 +56,7 @@ else ( "phiHbyA", fvc::flux(rho*HbyA) - + rhorAUf*fvc::ddtCorr(rho, U, rhoUf) + + MRF.zeroFilter(rhorAUf*fvc::ddtCorr(rho, U, rhoUf)) ); fvc::makeRelative(phiHbyA, rho, U); diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H index c34676157a..d4c0f41aab 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H +++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterDyMFoam/pEqn.H @@ -6,7 +6,7 @@ ( "phiHbyA", fvc::flux(HbyA) - + fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, Uf) + + MRF.zeroFilter(fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, Uf)) ); MRF.makeRelative(phiHbyA); diff --git a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/pEqn.H b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/pEqn.H index 7867727f86..5cdd9737d0 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/pEqn.H +++ b/applications/solvers/multiphase/compressibleInterFoam/compressibleInterFilmFoam/pEqn.H @@ -6,7 +6,7 @@ ( "phiHbyA", fvc::flux(HbyA) - + fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi) + + MRF.zeroFilter(fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi)) ); MRF.makeRelative(phiHbyA); diff --git a/applications/solvers/multiphase/compressibleInterFoam/pEqn.H b/applications/solvers/multiphase/compressibleInterFoam/pEqn.H index e7f00b91a1..5854748e99 100644 --- a/applications/solvers/multiphase/compressibleInterFoam/pEqn.H +++ b/applications/solvers/multiphase/compressibleInterFoam/pEqn.H @@ -6,7 +6,7 @@ ( "phiHbyA", fvc::flux(HbyA) - + fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi) + + MRF.zeroFilter(fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi)) ); MRF.makeRelative(phiHbyA); diff --git a/applications/solvers/multiphase/driftFluxFoam/pEqn.H b/applications/solvers/multiphase/driftFluxFoam/pEqn.H index 6797c44ccb..7a2be2efd0 100644 --- a/applications/solvers/multiphase/driftFluxFoam/pEqn.H +++ b/applications/solvers/multiphase/driftFluxFoam/pEqn.H @@ -6,7 +6,7 @@ ( "phiHbyA", fvc::flux(HbyA) - + fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi) + + MRF.zeroFilter(fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi)) ); MRF.makeRelative(phiHbyA); adjustPhi(phiHbyA, U, p_rgh); diff --git a/applications/solvers/multiphase/interFoam/pEqn.H b/applications/solvers/multiphase/interFoam/pEqn.H index 5aecb2df27..e443f26984 100644 --- a/applications/solvers/multiphase/interFoam/pEqn.H +++ b/applications/solvers/multiphase/interFoam/pEqn.H @@ -14,7 +14,7 @@ ( "phiHbyA", fvc::flux(HbyA) - + fvc::interpolate(rho*rAU())*fvc::ddtCorr(U, phi, Uf) + + MRF.zeroFilter(fvc::interpolate(rho*rAU())*fvc::ddtCorr(U, phi, Uf)) ); MRF.makeRelative(phiHbyA); diff --git a/applications/solvers/multiphase/multiphaseEulerFoam/pEqn.H b/applications/solvers/multiphase/multiphaseEulerFoam/pEqn.H index ad92a79718..6c2612b231 100644 --- a/applications/solvers/multiphase/multiphaseEulerFoam/pEqn.H +++ b/applications/solvers/multiphase/multiphaseEulerFoam/pEqn.H @@ -98,7 +98,10 @@ phiHbyAs[phasei] = ( fvc::flux(HbyAs[phasei]) - + rAlphaAUfs[phasei]*fvc::ddtCorr(phase.U(), phase.phi()) + + MRF.zeroFilter + ( + rAlphaAUfs[phasei]*fvc::ddtCorr(phase.U(), phase.phi()) + ) ); MRF.makeRelative(phiHbyAs[phasei]); MRF.makeRelative(phase.phi().oldTime()); diff --git a/applications/solvers/multiphase/potentialFreeSurfaceFoam/pEqn.H b/applications/solvers/multiphase/potentialFreeSurfaceFoam/pEqn.H index 76a44bd134..0e259d8809 100644 --- a/applications/solvers/multiphase/potentialFreeSurfaceFoam/pEqn.H +++ b/applications/solvers/multiphase/potentialFreeSurfaceFoam/pEqn.H @@ -11,7 +11,7 @@ surfaceScalarField phiHbyA ( "phiHbyA", fvc::flux(HbyA) - + rAUf*fvc::ddtCorr(U, phi) + + MRF.zeroFilter(rAUf*fvc::ddtCorr(U, phi)) ); MRF.makeRelative(phiHbyA); diff --git a/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/pEqn.H b/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/pEqn.H index dac95a1974..9f7da03a11 100644 --- a/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/pEqn.H +++ b/applications/solvers/multiphase/potentialFreeSurfaceFoam/potentialFreeSurfaceDyMFoam/pEqn.H @@ -12,7 +12,7 @@ ( "phiHbyA", fvc::flux(HbyA) - + rAUf*fvc::ddtCorr(U, Uf) + + MRF.zeroFilter(rAUf*fvc::ddtCorr(U, Uf)) ); MRF.makeRelative(phiHbyA); diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZone.H b/src/finiteVolume/cfdTools/general/MRF/MRFZone.H index 2a1f0a8678..a50733afcc 100644 --- a/src/finiteVolume/cfdTools/general/MRF/MRFZone.H +++ b/src/finiteVolume/cfdTools/general/MRF/MRFZone.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -257,6 +257,10 @@ public: //- Correct the boundary velocity for the rotation of the MRF region void correctBoundaryVelocity(volVectorField& U) const; + //- Zero the MRF region of the given field + template + void zero(GeometricField& phi) const; + //- Update MRFZone faces if the mesh topology changes void update(); diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZoneList.H b/src/finiteVolume/cfdTools/general/MRF/MRFZoneList.H index 4c0fffbe2f..7d9866261e 100644 --- a/src/finiteVolume/cfdTools/general/MRF/MRFZoneList.H +++ b/src/finiteVolume/cfdTools/general/MRF/MRFZoneList.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2017 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2018 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -184,6 +184,14 @@ public: surfaceScalarField& phi ) const; + //- Filter-out the MRF region contribution from the given field + // setting the corresponding values to zero + template + tmp> zeroFilter + ( + const tmp>& tphi + ) const; + //- Update MRFZone faces if the mesh topology changes void update(); @@ -210,6 +218,12 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +#ifdef NoRepository + #include "MRFZoneListTemplates.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + #endif // ************************************************************************* // diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZoneListTemplates.C b/src/finiteVolume/cfdTools/general/MRF/MRFZoneListTemplates.C new file mode 100644 index 0000000000..28a7662ed5 --- /dev/null +++ b/src/finiteVolume/cfdTools/general/MRF/MRFZoneListTemplates.C @@ -0,0 +1,64 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2018 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "MRFZoneList.H" + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template +Foam::tmp> +Foam::MRFZoneList::zeroFilter +( + const tmp>& tphi +) const +{ + if (size()) + { + tmp zphi + ( + New + ( + tphi, + "zeroFilter(" + tphi().name() + ')', + tphi().dimensions(), + true + ) + ); + + forAll(*this, i) + { + operator[](i).zero(zphi.ref()); + } + + return zphi; + } + else + { + return tmp(tphi, true); + } +} + + +// ************************************************************************* // diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C b/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C index 0a591035d6..30df24cf8f 100644 --- a/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C +++ b/src/finiteVolume/cfdTools/general/MRF/MRFZoneTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -207,4 +207,43 @@ void Foam::MRFZone::makeAbsoluteRhoFlux } +template +void Foam::MRFZone::zero +( + GeometricField& phi +) const +{ + if (!active_) + { + return; + } + + Field& phii = phi.primitiveFieldRef(); + + forAll(internalFaces_, i) + { + phii[internalFaces_[i]] = Zero; + } + + typename GeometricField::Boundary& phibf = + phi.boundaryFieldRef(); + + forAll(includedFaces_, patchi) + { + forAll(includedFaces_[patchi], i) + { + phibf[patchi][includedFaces_[patchi][i]] = Zero; + } + } + + forAll(excludedFaces_, patchi) + { + forAll(excludedFaces_[patchi], i) + { + phibf[patchi][excludedFaces_[patchi][i]] = Zero; + } + } +} + + // ************************************************************************* //