51#ifndef LimitedScheme_H
52#define LimitedScheme_H
68template<
class Type,
class Limiter,
template<
class>
class LimitFunc>
104 const Limiter& weight
155#define makeLimitedSurfaceInterpolationTypeScheme\
164typedef LimitedScheme<TYPE, LIMITER<NVDTVD>, limitFuncs::LIMFUNC> \
165 LimitedScheme##TYPE##LIMITER##NVDTVD##LIMFUNC##_; \
166defineTemplateTypeNameAndDebugWithName \
167 (LimitedScheme##TYPE##LIMITER##NVDTVD##LIMFUNC##_, #SS, 0); \
169surfaceInterpolationScheme<TYPE>::addMeshConstructorToTable \
170<LimitedScheme<TYPE, LIMITER<NVDTVD>, limitFuncs::LIMFUNC>> \
171 add##SS##LIMFUNC##TYPE##MeshConstructorToTable_; \
173surfaceInterpolationScheme<TYPE>::addMeshFluxConstructorToTable \
174<LimitedScheme<TYPE, LIMITER<NVDTVD>, limitFuncs::LIMFUNC>> \
175 add##SS##LIMFUNC##TYPE##MeshFluxConstructorToTable_; \
177limitedSurfaceInterpolationScheme<TYPE>::addMeshConstructorToTable \
178<LimitedScheme<TYPE, LIMITER<NVDTVD>, limitFuncs::LIMFUNC>> \
179 add##SS##LIMFUNC##TYPE##MeshConstructorToLimitedTable_; \
181limitedSurfaceInterpolationScheme<TYPE>::addMeshFluxConstructorToTable \
182<LimitedScheme<TYPE, LIMITER<NVDTVD>, limitFuncs::LIMFUNC>> \
183 add##SS##LIMFUNC##TYPE##MeshFluxConstructorToLimitedTable_;
186#define makeLimitedSurfaceInterpolationScheme(SS, LIMITER) \
188makeLimitedSurfaceInterpolationTypeScheme(SS,LIMITER,NVDTVD,magSqr,scalar) \
189makeLimitedSurfaceInterpolationTypeScheme(SS,LIMITER,NVDTVD,magSqr,vector) \
190makeLimitedSurfaceInterpolationTypeScheme \
198makeLimitedSurfaceInterpolationTypeScheme(SS,LIMITER,NVDTVD,magSqr,symmTensor)\
199makeLimitedSurfaceInterpolationTypeScheme(SS,LIMITER,NVDTVD,magSqr,tensor)
202#define makeLimitedVSurfaceInterpolationScheme(SS, LIMITER) \
203makeLimitedSurfaceInterpolationTypeScheme(SS,LIMITER,NVDVTVDV,null,vector)
206#define makeLLimitedSurfaceInterpolationTypeScheme\
216typedef LimitedScheme<TYPE, LLIMITER<LIMITER<NVDTVD>>, limitFuncs::LIMFUNC> \
217 LimitedScheme##TYPE##LLIMITER##LIMITER##NVDTVD##LIMFUNC##_; \
218defineTemplateTypeNameAndDebugWithName \
219 (LimitedScheme##TYPE##LLIMITER##LIMITER##NVDTVD##LIMFUNC##_, #SS, 0); \
221surfaceInterpolationScheme<TYPE>::addMeshConstructorToTable \
222<LimitedScheme<TYPE, LLIMITER<LIMITER<NVDTVD>>, limitFuncs::LIMFUNC>> \
223 add##SS##LIMFUNC##TYPE##MeshConstructorToTable_; \
225surfaceInterpolationScheme<TYPE>::addMeshFluxConstructorToTable \
226<LimitedScheme<TYPE, LLIMITER<LIMITER<NVDTVD>>, limitFuncs::LIMFUNC>> \
227 add##SS##LIMFUNC##TYPE##MeshFluxConstructorToTable_; \
229limitedSurfaceInterpolationScheme<TYPE>::addMeshConstructorToTable \
230<LimitedScheme<TYPE, LLIMITER<LIMITER<NVDTVD>>, limitFuncs::LIMFUNC>> \
231 add##SS##LIMFUNC##TYPE##MeshConstructorToLimitedTable_; \
233limitedSurfaceInterpolationScheme<TYPE>::addMeshFluxConstructorToTable \
234<LimitedScheme<TYPE, LLIMITER<LIMITER<NVDTVD>>, limitFuncs::LIMFUNC>> \
235 add##SS##LIMFUNC##TYPE##MeshFluxConstructorToLimitedTable_;
Generic GeometricField class.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Class to create NVD/TVD limited weighting-factors.
LimitedScheme(const fvMesh &mesh, const surfaceScalarField &faceFlux, const Limiter &weight)
Construct from mesh and faceFlux and limiter scheme.
LimitedScheme(const fvMesh &mesh, const surfaceScalarField &faceFlux, Istream &is)
Construct from mesh, faceFlux and Istream.
virtual tmp< surfaceScalarField > limiter(const GeometricField< Type, fvPatchField, volMesh > &) const
Return the interpolation weighting factors.
TypeName("LimitedScheme")
Runtime type information.
Mesh data needed to do the Finite Volume discretisation.
Abstract base class for limited surface interpolation schemes.
const fvMesh & mesh() const
Return mesh reference.
A class for managing temporary objects.
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.