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