diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files index 64565a192f..b1ae42368f 100644 --- a/src/finiteVolume/Make/files +++ b/src/finiteVolume/Make/files @@ -187,6 +187,7 @@ $(limitedSchemes)/Phi/Phi.C $(limitedSchemes)/filteredLinear/filteredLinear.C $(limitedSchemes)/filteredLinear2/filteredLinear2.C $(limitedSchemes)/filteredLinear3/filteredLinear3.C +$(limitedSchemes)/limitWith/limitWith.C multivariateSchemes = $(surfaceInterpolation)/multivariateSchemes $(multivariateSchemes)/multivariateSurfaceInterpolationScheme/multivariateSurfaceInterpolationSchemes.C diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/limitedSurfaceInterpolationScheme/limitedSurfaceInterpolationScheme.C b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/limitedSurfaceInterpolationScheme/limitedSurfaceInterpolationScheme.C index c865fe022d..458324b6cc 100644 --- a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/limitedSurfaceInterpolationScheme/limitedSurfaceInterpolationScheme.C +++ b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/limitedSurfaceInterpolationScheme/limitedSurfaceInterpolationScheme.C @@ -22,9 +22,6 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Description - Abstract base class for surface interpolation schemes. - \*---------------------------------------------------------------------------*/ #include "limitedSurfaceInterpolationScheme.H" @@ -39,7 +36,6 @@ namespace Foam // * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * // -// Return weighting factors for scheme given by name in dictionary template tmp > limitedSurfaceInterpolationScheme::New @@ -160,17 +156,14 @@ limitedSurfaceInterpolationScheme::~limitedSurfaceInterpolationScheme() template tmp limitedSurfaceInterpolationScheme::weights ( - const GeometricField& phi + const GeometricField& phi, + const surfaceScalarField& CDweights, + tmp tLimiter ) const { - const fvMesh& mesh = this->mesh(); - // Note that here the weights field is initialised as the limiter // from which the weight is calculated using the limiter value - tmp tWeights(this->limiter(phi)); - surfaceScalarField& Weights = tWeights(); - - const surfaceScalarField& CDweights = mesh.surfaceInterpolation::weights(); + surfaceScalarField& Weights = tLimiter(); scalarField& pWeights = Weights.internalField(); @@ -199,9 +192,22 @@ tmp limitedSurfaceInterpolationScheme::weights } } - return tWeights; + return tLimiter; } +template +tmp limitedSurfaceInterpolationScheme::weights +( + const GeometricField& phi +) const +{ + return this->weights + ( + phi, + this->mesh().surfaceInterpolation::weights(), + this->limiter(phi) + ); +} template tmp > diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/limitedSurfaceInterpolationScheme/limitedSurfaceInterpolationScheme.H b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/limitedSurfaceInterpolationScheme/limitedSurfaceInterpolationScheme.H index 569b942e53..875ac7e6b1 100644 --- a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/limitedSurfaceInterpolationScheme/limitedSurfaceInterpolationScheme.H +++ b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/limitedSurfaceInterpolationScheme/limitedSurfaceInterpolationScheme.H @@ -26,7 +26,7 @@ Class Foam::limitedSurfaceInterpolationScheme Description - Abstract base class for surface interpolation schemes. + Abstract base class for limited surface interpolation schemes. SourceFiles limitedSurfaceInterpolationScheme.C @@ -119,7 +119,7 @@ public: {} - //- Construct from mesh and Istream. + //- Construct from mesh and Istream. // The name of the flux field is read from the Istream and looked-up // from the mesh objectRegistry limitedSurfaceInterpolationScheme @@ -170,6 +170,15 @@ public: const GeometricField& ) const = 0; + //- Return the interpolation weighting factors for the given field, + // by limiting the given weights with the given limiter + tmp weights + ( + const GeometricField&, + const surfaceScalarField& CDweights, + tmp tLimiter + ) const; + //- Return the interpolation weighting factors for the given field virtual tmp weights (