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
140 virtual tmp<surfaceScalarField>
limiter
142 const GeometricField<Type, fvPatchField, volMesh>&
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")
virtual tmp< surfaceScalarField > limiter(const GeometricField< Type, fvPatchField, volMesh > &) const
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
Generic GeometricField class.