From cda13049118a376e96bd0b15f9f20255509885e3 Mon Sep 17 00:00:00 2001 From: Henry Date: Wed, 11 Sep 2013 00:08:22 +0100 Subject: [PATCH] fvOptions: Add support for boundary field relative flux function --- .../cfdTools/general/MRF/MRFZone.C | 44 +++++++++---------- .../cfdTools/general/MRF/MRFZone.H | 6 +-- .../cfdTools/general/MRF/MRFZoneList.C | 20 ++++----- src/fvOptions/fvOptions/fvOption.C | 10 +++++ src/fvOptions/fvOptions/fvOption.H | 6 +++ src/fvOptions/fvOptions/fvOptionList.C | 18 ++++++++ src/fvOptions/fvOptions/fvOptionList.H | 6 +++ .../sources/derived/MRFSource/MRFSource.C | 9 ++++ .../sources/derived/MRFSource/MRFSource.H | 6 +++ 9 files changed, 90 insertions(+), 35 deletions(-) diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZone.C b/src/finiteVolume/cfdTools/general/MRF/MRFZone.C index 70ce53da1e..8565193823 100644 --- a/src/finiteVolume/cfdTools/general/MRF/MRFZone.C +++ b/src/finiteVolume/cfdTools/general/MRF/MRFZone.C @@ -461,6 +461,28 @@ void Foam::MRFZone::makeRelative(volVectorField& U) const } +void Foam::MRFZone::makeRelative(surfaceScalarField& phi) const +{ + makeRelativeRhoFlux(geometricOneField(), phi); +} + + +void Foam::MRFZone::makeRelative(FieldField& phi) const +{ + makeRelativeRhoFlux(oneFieldField(), phi); +} + + +void Foam::MRFZone::makeRelative +( + const surfaceScalarField& rho, + surfaceScalarField& phi +) const +{ + makeRelativeRhoFlux(rho, phi); +} + + void Foam::MRFZone::makeAbsolute(volVectorField& U) const { const volVectorField& C = mesh_.C(); @@ -499,28 +521,6 @@ void Foam::MRFZone::makeAbsolute(volVectorField& U) const } -void Foam::MRFZone::makeRelative(surfaceScalarField& phi) const -{ - makeRelativeRhoFlux(geometricOneField(), phi); -} - - -void Foam::MRFZone::makeRelative(FieldField& phi) const -{ - return makeRelativeRhoFlux(oneFieldField(), phi); -} - - -void Foam::MRFZone::makeRelative -( - const surfaceScalarField& rho, - surfaceScalarField& phi -) const -{ - makeRelativeRhoFlux(rho, phi); -} - - void Foam::MRFZone::makeAbsolute(surfaceScalarField& phi) const { makeAbsoluteRhoFlux(geometricOneField(), phi); diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZone.H b/src/finiteVolume/cfdTools/general/MRF/MRFZone.H index 97e59e2f6d..1396914122 100644 --- a/src/finiteVolume/cfdTools/general/MRF/MRFZone.H +++ b/src/finiteVolume/cfdTools/general/MRF/MRFZone.H @@ -218,9 +218,6 @@ public: //- Make the given absolute velocity relative within the MRF region void makeRelative(volVectorField& U) const; - //- Make the given relative velocity absolute within the MRF region - void makeAbsolute(volVectorField& U) const; - //- Make the given absolute flux relative within the MRF region void makeRelative(surfaceScalarField& phi) const; @@ -235,6 +232,9 @@ public: surfaceScalarField& phi ) const; + //- Make the given relative velocity absolute within the MRF region + void makeAbsolute(volVectorField& U) const; + //- Make the given relative flux absolute within the MRF region void makeAbsolute(surfaceScalarField& phi) const; diff --git a/src/finiteVolume/cfdTools/general/MRF/MRFZoneList.C b/src/finiteVolume/cfdTools/general/MRF/MRFZoneList.C index 8ab2aa1731..c56106f40c 100644 --- a/src/finiteVolume/cfdTools/general/MRF/MRFZoneList.C +++ b/src/finiteVolume/cfdTools/general/MRF/MRFZoneList.C @@ -169,15 +169,6 @@ void Foam::MRFZoneList::makeRelative(volVectorField& U) const } -void Foam::MRFZoneList::makeAbsolute(volVectorField& U) const -{ - forAll(*this, i) - { - operator[](i).makeAbsolute(U); - } -} - - void Foam::MRFZoneList::makeRelative(surfaceScalarField& phi) const { forAll(*this, i) @@ -193,7 +184,7 @@ Foam::MRFZoneList::relative const tmp >& phi ) const { - tmp > rphi(phi); + tmp > rphi(phi.ptr()); forAll(*this, i) { @@ -217,6 +208,15 @@ void Foam::MRFZoneList::makeRelative } +void Foam::MRFZoneList::makeAbsolute(volVectorField& U) const +{ + forAll(*this, i) + { + operator[](i).makeAbsolute(U); + } +} + + void Foam::MRFZoneList::makeAbsolute(surfaceScalarField& phi) const { forAll(*this, i) diff --git a/src/fvOptions/fvOptions/fvOption.C b/src/fvOptions/fvOptions/fvOption.C index 0751b64c77..6a34f9ae07 100644 --- a/src/fvOptions/fvOptions/fvOption.C +++ b/src/fvOptions/fvOptions/fvOption.C @@ -27,6 +27,7 @@ License #include "fvMesh.H" #include "fvMatrices.H" #include "volFields.H" +#include "fvsPatchFields.H" #include "ListOps.H" #include "addToRunTimeSelectionTable.H" @@ -480,6 +481,15 @@ void Foam::fv::option::makeRelative(surfaceScalarField& phi) const } +void Foam::fv::option::makeRelative +( + FieldField& phi +) const +{ + // do nothing +} + + void Foam::fv::option::makeRelative ( const surfaceScalarField& rho, diff --git a/src/fvOptions/fvOptions/fvOption.H b/src/fvOptions/fvOptions/fvOption.H index 0f8896827b..ec19296565 100644 --- a/src/fvOptions/fvOptions/fvOption.H +++ b/src/fvOptions/fvOptions/fvOption.H @@ -427,6 +427,12 @@ public: //- Make the given absolute flux relative virtual void makeRelative(surfaceScalarField& phi) const; + //- Make the given absolute boundary flux relative + virtual void makeRelative + ( + FieldField& phi + ) const; + //- Make the given absolute mass-flux relative virtual void makeRelative ( diff --git a/src/fvOptions/fvOptions/fvOptionList.C b/src/fvOptions/fvOptions/fvOptionList.C index 5329aa1243..b3ccc28f87 100644 --- a/src/fvOptions/fvOptions/fvOptionList.C +++ b/src/fvOptions/fvOptions/fvOptionList.C @@ -26,6 +26,7 @@ License #include "fvOptionList.H" #include "addToRunTimeSelectionTable.H" #include "fvMesh.H" +#include "surfaceFields.H" #include "Time.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -129,6 +130,23 @@ void Foam::fv::optionList::makeRelative } +Foam::tmp > +Foam::fv::optionList::relative +( + const tmp >& phi +) const +{ + tmp > rphi(phi.ptr()); + + forAll(*this, i) + { + operator[](i).makeRelative(rphi()); + } + + return rphi; +} + + void Foam::fv::optionList::makeAbsolute(surfaceScalarField& phi) const { forAll(*this, i) diff --git a/src/fvOptions/fvOptions/fvOptionList.H b/src/fvOptions/fvOptions/fvOptionList.H index 0d5b6abdb5..15e9733108 100644 --- a/src/fvOptions/fvOptions/fvOptionList.H +++ b/src/fvOptions/fvOptions/fvOptionList.H @@ -166,6 +166,12 @@ public: surfaceScalarField& phi ) const; + //- Return the given absolute boundary flux relative + tmp > relative + ( + const tmp >& tphi + ) const; + //- Make the given relative flux absolute void makeAbsolute(surfaceScalarField& phi) const; diff --git a/src/fvOptions/sources/derived/MRFSource/MRFSource.C b/src/fvOptions/sources/derived/MRFSource/MRFSource.C index d61e10f362..9f9fcca442 100644 --- a/src/fvOptions/sources/derived/MRFSource/MRFSource.C +++ b/src/fvOptions/sources/derived/MRFSource/MRFSource.C @@ -126,6 +126,15 @@ void Foam::fv::MRFSource::makeRelative(surfaceScalarField& phi) const } +void Foam::fv::MRFSource::makeRelative +( + FieldField& phi +) const +{ + mrfPtr_->makeRelative(phi); +} + + void Foam::fv::MRFSource::makeRelative ( const surfaceScalarField& rho, diff --git a/src/fvOptions/sources/derived/MRFSource/MRFSource.H b/src/fvOptions/sources/derived/MRFSource/MRFSource.H index 0b3da28cc4..8f99788bc9 100644 --- a/src/fvOptions/sources/derived/MRFSource/MRFSource.H +++ b/src/fvOptions/sources/derived/MRFSource/MRFSource.H @@ -140,6 +140,12 @@ public: //- Make the given absolute flux relative virtual void makeRelative(surfaceScalarField& phi) const; + //- Make the given absolute boundary flux relative + virtual void makeRelative + ( + FieldField& phi + ) const; + //- Make the given absolute mass-flux relative virtual void makeRelative (