37#ifndef surfaceInterpolationScheme_H
38#define surfaceInterpolationScheme_H
58class surfaceInterpolationScheme
71 surfaceInterpolationScheme(
const surfaceInterpolationScheme&) =
delete;
74 void operator=(
const surfaceInterpolationScheme&) =
delete;
80 TypeName(
"surfaceInterpolationScheme");
88 surfaceInterpolationScheme,
100 surfaceInterpolationScheme,
107 (
mesh, faceFlux, schemeData)
114 surfaceInterpolationScheme(
const fvMesh&
mesh)
163 template<
class SFType>
284#define makeSurfaceInterpolationTypeScheme(SS, Type) \
286defineNamedTemplateTypeNameAndDebug(SS<Type>, 0); \
288surfaceInterpolationScheme<Type>::addMeshConstructorToTable<SS<Type>> \
289 add##SS##Type##MeshConstructorToTable_; \
291surfaceInterpolationScheme<Type>::addMeshFluxConstructorToTable<SS<Type>> \
292 add##SS##Type##MeshFluxConstructorToTable_;
294#define makeSurfaceInterpolationScheme(SS) \
296makeSurfaceInterpolationTypeScheme(SS, scalar) \
297makeSurfaceInterpolationTypeScheme(SS, vector) \
298makeSurfaceInterpolationTypeScheme(SS, sphericalTensor) \
299makeSurfaceInterpolationTypeScheme(SS, symmTensor) \
300makeSurfaceInterpolationTypeScheme(SS, tensor)
Generic GeometricField class.
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.
An abstract base class with a fat-interface to all derived classes covering all possible ways in whic...
typeOfRank< typenamepTraits< arg1 >::cmptType, direction(pTraits< arg1 >::rank)+direction(pTraits< arg2 >::rank) -2 >::type type
constexpr refCount() noexcept
Default construct, initializing count to 0.
virtual bool corrected() const
Return true if this scheme uses an explicit correction.
surfaceInterpolationScheme(const fvMesh &mesh)
Construct from mesh.
virtual tmp< surfaceScalarField > weights(const GeometricField< Type, fvPatchField, volMesh > &) const =0
Return the interpolation weighting factors for the given field.
static tmp< GeometricField< typename innerProduct< typename SFType::value_type, Type >::type, fvsPatchField, surfaceMesh > > dotInterpolate(const SFType &Sf, const GeometricField< Type, fvPatchField, volMesh > &vf, const tmp< surfaceScalarField > &tlambdas)
Return the face-interpolate of the given cell field.
TypeName("surfaceInterpolationScheme")
Runtime type information.
static tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate(const GeometricField< Type, fvPatchField, volMesh > &, const tmp< surfaceScalarField > &, const tmp< surfaceScalarField > &)
Return the face-interpolate of the given cell field.
declareRunTimeSelectionTable(tmp, surfaceInterpolationScheme, MeshFlux,(const fvMesh &mesh, const surfaceScalarField &faceFlux, Istream &schemeData),(mesh, faceFlux, schemeData))
const fvMesh & mesh() const
Return mesh reference.
virtual tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > correction(const GeometricField< Type, fvPatchField, volMesh > &) const
Return the explicit correction to the face-interpolate.
static tmp< surfaceInterpolationScheme< Type > > New(const fvMesh &mesh, Istream &schemeData)
Return new tmp interpolation scheme.
declareRunTimeSelectionTable(tmp, surfaceInterpolationScheme, Mesh,(const fvMesh &mesh, Istream &schemeData),(mesh, schemeData))
virtual ~surfaceInterpolationScheme()=default
Destructor.
Mesh data needed to do the Finite Volume discretisation.
A class for managing temporary objects.
GeometricField< vector, fvsPatchField, surfaceMesh > surfaceVectorField
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
Macros to ease declaration of run-time selection tables.
#define declareRunTimeSelectionTable(ptrWrapper, baseType, argNames, argList, parList)
Declare a run-time selection (variables and adder classes).
Basic run-time type information using word as the type's name. Used to enhance the standard RTTI to c...
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Forwards and collection of common volume field types.