Loading...
Searching...
No Matches
weightedFlux< Type > Class Template Reference

Weighted flux interpolation scheme class. More...

#include <weightedFlux.H>

Inheritance diagram for weightedFlux< Type >:
Collaboration diagram for weightedFlux< Type >:

Public Member Functions

 TypeName ("weightedFlux")
 Runtime type information.
 weightedFlux (const fvMesh &mesh, Istream &is)
 Construct from Istream.
 weightedFlux (const fvMesh &mesh, const surfaceScalarField &faceFlux, Istream &is)
 Construct from faceFlux and Istream.
virtual ~weightedFlux ()
 Destructor.
tmp< surfaceScalarFieldweights (const GeometricField< Type, fvPatchField, volMesh > &) const
 Return the interpolation weighting factors.
const surfaceScalarFieldoDelta () const
 Return the distance between face and owner cell.
const surfaceScalarFieldnDelta () const
 Return the distance between face and neighbour cell.
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate (const GeometricField< Type, fvPatchField, volMesh > &vf) const
 Interpolate the cell values to faces.
Public Member Functions inherited from surfaceInterpolationScheme< Type >
 TypeName ("surfaceInterpolationScheme")
 Runtime type information.
 declareRunTimeSelectionTable (tmp, surfaceInterpolationScheme, Mesh,(const fvMesh &mesh, Istream &schemeData),(mesh, schemeData))
 declareRunTimeSelectionTable (tmp, surfaceInterpolationScheme, MeshFlux,(const fvMesh &mesh, const surfaceScalarField &faceFlux, Istream &schemeData),(mesh, faceFlux, schemeData))
 surfaceInterpolationScheme (const fvMesh &mesh)
 Construct from mesh.
virtual ~surfaceInterpolationScheme ()=default
 Destructor.
const fvMeshmesh () const
 Return mesh reference.
virtual bool corrected () const
 Return true if this scheme uses an explicit correction.
virtual tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > correction (const GeometricField< Type, fvPatchField, volMesh > &) const
 Return the explicit correction to the face-interpolate.
virtual tmp< GeometricField< typename innerProduct< vector, Type >::type, fvsPatchField, surfaceMesh > > dotInterpolate (const surfaceVectorField &Sf, const GeometricField< Type, fvPatchField, volMesh > &vf) const
 Return the face-interpolate of the given cell field.
tmp< GeometricField< typename innerProduct< vector, Type >::type, fvsPatchField, surfaceMesh > > dotInterpolate (const surfaceVectorField &Sf, const tmp< GeometricField< Type, fvPatchField, volMesh > > &) const
 Return the face-interpolate of the given tmp cell field.
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate (const tmp< GeometricField< Type, fvPatchField, volMesh > > &) const
 Return the face-interpolate of the given tmp cell field.
template<class SFType>
Foam::tmp< Foam::GeometricField< typename Foam::innerProduct< typename SFType::value_type, Type >::type, Foam::fvsPatchField, Foam::surfaceMesh > > dotInterpolate (const SFType &Sf, const GeometricField< Type, fvPatchField, volMesh > &vf, const tmp< surfaceScalarField > &tlambdas)
tmp< GeometricField< typename innerProduct< vector, scalar >::type, fvsPatchField, surfaceMesh > > dotInterpolate (const surfaceVectorField &Sf, const GeometricField< scalar, fvPatchField, volMesh > &) const
Foam::tmp< Foam::GeometricField< typename Foam::innerProduct< Foam::vector, Foam::scalar >::type, Foam::fvsPatchField, Foam::surfaceMesh > > dotInterpolate (const surfaceVectorField &Sf, const GeometricField< scalar, fvPatchField, volMesh > &) const
Public Member Functions inherited from refCount
constexpr refCount () noexcept
 Default construct, initializing count to 0.
int use_count () const noexcept
 Return the current reference count.
bool unique () const noexcept
 Return true if the reference count is zero.
void operator++ () noexcept
 Increment the reference count.
void operator++ (int) noexcept
 Increment the reference count.
void operator-- () noexcept
 Decrement the reference count.
void operator-- (int) noexcept
 Decrement the reference count.

Protected Member Functions

void clearOut ()
 Clear all fields.

Additional Inherited Members

Static Public Member Functions inherited from surfaceInterpolationScheme< Type >
static tmp< surfaceInterpolationScheme< Type > > New (const fvMesh &mesh, Istream &schemeData)
 Return new tmp interpolation scheme.
static tmp< surfaceInterpolationScheme< Type > > New (const fvMesh &mesh, const surfaceScalarField &faceFlux, Istream &schemeData)
 Return new tmp interpolation scheme.
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.
template<class SFType>
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.
static tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate (const GeometricField< Type, fvPatchField, volMesh > &, const tmp< surfaceScalarField > &)
 Return the face-interpolate of the given cell field.

Detailed Description

template<class Type>
class Foam::weightedFlux< Type >

Weighted flux interpolation scheme class.

This scheme is used to compute fluxes with variable diffusivity or conductivity, as e.g.

  • a thermal flux: lambda*grad(T)
  • a mass flux: D*grad(u)
  • an electric current: -sigma*grad(potential)

When using the Gauss theorem to compute a gradient, cell centred values need to be interpolated to the faces. Using this scheme, temperature (T) is weighted by thermal conductivity when being interpolated. Similarly, velocity is weighted by diffusivity (D) and the electric potential by the electric conductivity (sigma). Lambda, D or sigma are read from the object registry - the names need to be specified in fvSchemes as e.g.

    gradSchemes
    {
        grad(T)             Gauss weightedFlux lambda;
        grad(u)             Gauss weightedFlux D;
        grad(potential)     Gauss weightedFlux sigma;
    }

For more details, see equation 16 and 17 in

    Weber, N., Beckstein, P., Galindo, V., Starace, M. & Weier, T. (2018).
    Electro-vortex flow simulation using coupled meshes.
    Computers and Fluids 168, 101-109.
    doi:10.1016/j.compfluid.2018.03.047
    https://arxiv.org/pdf/1707.06546.pdf
Note
For support, contact Norbe.nosp@m.rt.W.nosp@m.eber@.nosp@m.hzdr.nosp@m..de
Source files

Definition at line 82 of file weightedFlux.H.

Constructor & Destructor Documentation

◆ weightedFlux() [1/2]

template<class Type>
weightedFlux ( const fvMesh & mesh,
Istream & is )
inline

Construct from Istream.

The name of the flux field is read from the Istream and looked-up from the mesh objectRegistry

Definition at line 147 of file weightedFlux.H.

References surfaceInterpolationScheme< Type >::mesh().

Here is the call graph for this function:

◆ weightedFlux() [2/2]

template<class Type>
weightedFlux ( const fvMesh & mesh,
const surfaceScalarField & faceFlux,
Istream & is )
inline

Construct from faceFlux and Istream.

Definition at line 163 of file weightedFlux.H.

References surfaceInterpolationScheme< Type >::mesh().

Here is the call graph for this function:

◆ ~weightedFlux()

template<class Type>
~weightedFlux ( )
virtual

Destructor.

Definition at line 36 of file weightedFlux.C.

References clearOut().

Here is the call graph for this function:

Member Function Documentation

◆ clearOut()

template<class Type>
void clearOut ( )
protected

Clear all fields.

Definition at line 26 of file weightedFlux.C.

Referenced by ~weightedFlux().

Here is the caller graph for this function:

◆ TypeName()

template<class Type>
TypeName ( "weightedFlux< Type >" )

Runtime type information.

◆ weights()

template<class Type>
tmp< surfaceScalarField > weights ( const GeometricField< Type, fvPatchField, volMesh > & ) const
inlinevirtual

Return the interpolation weighting factors.

Implements surfaceInterpolationScheme< Type >.

Definition at line 189 of file weightedFlux.H.

References surfaceInterpolationScheme< Type >::mesh().

Here is the call graph for this function:

◆ oDelta()

template<class Type>
const surfaceScalarField & oDelta ( ) const
inline

Return the distance between face and owner cell.

Definition at line 200 of file weightedFlux.H.

Referenced by interpolate().

Here is the caller graph for this function:

◆ nDelta()

template<class Type>
const surfaceScalarField & nDelta ( ) const
inline

Return the distance between face and neighbour cell.

Definition at line 213 of file weightedFlux.H.

Referenced by interpolate().

Here is the caller graph for this function:

◆ interpolate()


The documentation for this class was generated from the following files:
  • src/finiteVolume/interpolation/surfaceInterpolation/schemes/weightedFlux/weightedFlux.H
  • src/finiteVolume/interpolation/surfaceInterpolation/schemes/weightedFlux/weightedFlux.C