46 #ifndef LimitedScheme_H
47 #define LimitedScheme_H
63 template<
class Type,
class Limiter,
template<
class>
class LimitFunc>
153 #define makeLimitedSurfaceInterpolationTypeScheme\
162 typedef LimitedScheme<TYPE, LIMITER<NVDTVD>, limitFuncs::LIMFUNC> \
163 LimitedScheme##TYPE##LIMITER##NVDTVD##LIMFUNC##_; \
164 defineTemplateTypeNameAndDebugWithName \
165 (LimitedScheme##TYPE##LIMITER##NVDTVD##LIMFUNC##_, #SS, 0); \
167 surfaceInterpolationScheme<TYPE>::addMeshConstructorToTable \
168 <LimitedScheme<TYPE, LIMITER<NVDTVD>, limitFuncs::LIMFUNC>> \
169 add##SS##LIMFUNC##TYPE##MeshConstructorToTable_; \
171 surfaceInterpolationScheme<TYPE>::addMeshFluxConstructorToTable \
172 <LimitedScheme<TYPE, LIMITER<NVDTVD>, limitFuncs::LIMFUNC>> \
173 add##SS##LIMFUNC##TYPE##MeshFluxConstructorToTable_; \
175 limitedSurfaceInterpolationScheme<TYPE>::addMeshConstructorToTable \
176 <LimitedScheme<TYPE, LIMITER<NVDTVD>, limitFuncs::LIMFUNC>> \
177 add##SS##LIMFUNC##TYPE##MeshConstructorToLimitedTable_; \
179 limitedSurfaceInterpolationScheme<TYPE>::addMeshFluxConstructorToTable \
180 <LimitedScheme<TYPE, LIMITER<NVDTVD>, limitFuncs::LIMFUNC>> \
181 add##SS##LIMFUNC##TYPE##MeshFluxConstructorToLimitedTable_;
184 #define makeLimitedSurfaceInterpolationScheme(SS, LIMITER) \
186 makeLimitedSurfaceInterpolationTypeScheme(SS,LIMITER,NVDTVD,magSqr,scalar) \
187 makeLimitedSurfaceInterpolationTypeScheme(SS,LIMITER,NVDTVD,magSqr,vector) \
188 makeLimitedSurfaceInterpolationTypeScheme \
196 makeLimitedSurfaceInterpolationTypeScheme(SS,LIMITER,NVDTVD,magSqr,symmTensor)\
197 makeLimitedSurfaceInterpolationTypeScheme(SS,LIMITER,NVDTVD,magSqr,tensor)
200 #define makeLimitedVSurfaceInterpolationScheme(SS, LIMITER) \
201 makeLimitedSurfaceInterpolationTypeScheme(SS,LIMITER,NVDVTVDV,null,vector)
204 #define makeLLimitedSurfaceInterpolationTypeScheme\
214 typedef LimitedScheme<TYPE, LLIMITER<LIMITER<NVDTVD>>, limitFuncs::LIMFUNC> \
215 LimitedScheme##TYPE##LLIMITER##LIMITER##NVDTVD##LIMFUNC##_; \
216 defineTemplateTypeNameAndDebugWithName \
217 (LimitedScheme##TYPE##LLIMITER##LIMITER##NVDTVD##LIMFUNC##_, #SS, 0); \
219 surfaceInterpolationScheme<TYPE>::addMeshConstructorToTable \
220 <LimitedScheme<TYPE, LLIMITER<LIMITER<NVDTVD>>, limitFuncs::LIMFUNC>> \
221 add##SS##LIMFUNC##TYPE##MeshConstructorToTable_; \
223 surfaceInterpolationScheme<TYPE>::addMeshFluxConstructorToTable \
224 <LimitedScheme<TYPE, LLIMITER<LIMITER<NVDTVD>>, limitFuncs::LIMFUNC>> \
225 add##SS##LIMFUNC##TYPE##MeshFluxConstructorToTable_; \
227 limitedSurfaceInterpolationScheme<TYPE>::addMeshConstructorToTable \
228 <LimitedScheme<TYPE, LLIMITER<LIMITER<NVDTVD>>, limitFuncs::LIMFUNC>> \
229 add##SS##LIMFUNC##TYPE##MeshConstructorToLimitedTable_; \
231 limitedSurfaceInterpolationScheme<TYPE>::addMeshFluxConstructorToTable \
232 <LimitedScheme<TYPE, LLIMITER<LIMITER<NVDTVD>>, limitFuncs::LIMFUNC>> \
233 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.
virtual tmp< surfaceScalarField > limiter(const VolField< Type > &) const
Return the interpolation weighting factors.
TypeName("LimitedScheme")
Runtime type information.
void operator=(const LimitedScheme &)=delete
Disallow default bitwise assignment.
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.