diff --git a/src/fieldSources/basicSource/basicSource.C b/src/fieldSources/basicSource/basicSource.C index 9ebcdc5834..64be60fa84 100644 --- a/src/fieldSources/basicSource/basicSource.C +++ b/src/fieldSources/basicSource/basicSource.C @@ -481,4 +481,36 @@ void Foam::basicSource::setValue(fvMatrix& eqn, const label fieldI) } +void Foam::basicSource::relativeFlux(surfaceScalarField& phi) const +{ + // do nothing +} + + +void Foam::basicSource::relativeFlux +( + const surfaceScalarField& rho, + surfaceScalarField& phi +) const +{ + // do nothing +} + + +void Foam::basicSource::absoluteFlux(surfaceScalarField& phi) const +{ + // do nothing +} + + +void Foam::basicSource::absoluteFlux +( + const surfaceScalarField& rho, + surfaceScalarField& phi +) const +{ + // do nothing +} + + // ************************************************************************* // diff --git a/src/fieldSources/basicSource/basicSource.H b/src/fieldSources/basicSource/basicSource.H index 69e9dcf408..3e4740cead 100644 --- a/src/fieldSources/basicSource/basicSource.H +++ b/src/fieldSources/basicSource/basicSource.H @@ -427,6 +427,29 @@ public: ); + // Flux manipulations + + //- Make the given absolute flux relative + virtual void relativeFlux(surfaceScalarField& phi) const; + + //- Make the given absolute mass-flux relative + virtual void relativeFlux + ( + const surfaceScalarField& rho, + surfaceScalarField& phi + ) const; + + //- Make the given relative flux absolute + virtual void absoluteFlux(surfaceScalarField& phi) const; + + //- Make the given relative mass-flux absolute + virtual void absoluteFlux + ( + const surfaceScalarField& rho, + surfaceScalarField& phi + ) const; + + // I-O //- Write the source header information diff --git a/src/fieldSources/basicSource/basicSourceList.C b/src/fieldSources/basicSource/basicSourceList.C index 2d484868a4..a7224e9a6c 100644 --- a/src/fieldSources/basicSource/basicSourceList.C +++ b/src/fieldSources/basicSource/basicSourceList.C @@ -108,6 +108,50 @@ void Foam::basicSourceList::reset(const dictionary& dict) } +void Foam::basicSourceList::relativeFlux(surfaceScalarField& phi) const +{ + forAll(*this, i) + { + this->operator[](i).relativeFlux(phi); + } +} + + +void Foam::basicSourceList::relativeFlux +( + const surfaceScalarField& rho, + surfaceScalarField& phi +) const +{ + forAll(*this, i) + { + this->operator[](i).relativeFlux(rho, phi); + } +} + + +void Foam::basicSourceList::absoluteFlux(surfaceScalarField& phi) const +{ + forAll(*this, i) + { + this->operator[](i).absoluteFlux(phi); + } +} + + +void Foam::basicSourceList::absoluteFlux +( + const surfaceScalarField& rho, + surfaceScalarField& phi +) const +{ + forAll(*this, i) + { + this->operator[](i).absoluteFlux(rho, phi); + } +} + + bool Foam::basicSourceList::read(const dictionary& dict) { checkTimeIndex_ = mesh_.time().timeIndex() + 2; diff --git a/src/fieldSources/basicSource/basicSourceList.H b/src/fieldSources/basicSource/basicSourceList.H index 5f5e053a94..002d23b1fb 100644 --- a/src/fieldSources/basicSource/basicSourceList.H +++ b/src/fieldSources/basicSource/basicSourceList.H @@ -152,6 +152,29 @@ public: void constrain(fvMatrix& eqn, const word& fieldName); + // Flux manipulations + + //- Make the given absolute flux relative + void relativeFlux(surfaceScalarField& phi) const; + + //- Make the given absolute mass-flux relative + void relativeFlux + ( + const surfaceScalarField& rho, + surfaceScalarField& phi + ) const; + + //- Make the given relative flux absolute + void absoluteFlux(surfaceScalarField& phi) const; + + //- Make the given relative mass-flux absolute + void absoluteFlux + ( + const surfaceScalarField& rho, + surfaceScalarField& phi + ) const; + + // I-O //- Read dictionary