Public Member Functions | Private Member Functions | Private Attributes
extendedUpwindCellToFaceStencil Class Reference

Creates upwind stencil by shifting a centred stencil to upwind and downwind faces and optionally removing all non-(up/down)wind faces ('pureUpwind'). More...

Inheritance diagram for extendedUpwindCellToFaceStencil:
Inheritance graph
[legend]
Collaboration diagram for extendedUpwindCellToFaceStencil:
Collaboration graph
[legend]

Public Member Functions

 extendedUpwindCellToFaceStencil (const cellToFaceStencil &, const bool pureUpwind, const scalar minOpposedness)
 Construct from mesh and uncompacted centred face stencil. More...
 
 extendedUpwindCellToFaceStencil (const cellToFaceStencil &)
 Construct from mesh and uncompacted centred face stencil. Splits. More...
 
bool pureUpwind () const
 
const mapDistributeownMap () const
 Return reference to the parallel distribution map. More...
 
const mapDistributeneiMap () const
 Return reference to the parallel distribution map. More...
 
const labelListListownStencil () const
 Return reference to the stencil. More...
 
const labelListListneiStencil () const
 Return reference to the stencil. More...
 
template<class Type >
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > weightedSum (const surfaceScalarField &phi, const GeometricField< Type, fvPatchField, volMesh > &fld, const List< List< scalar > > &ownWeights, const List< List< scalar > > &neiWeights) const
 Sum vol field contributions to create face values. More...
 
template<class Type >
Foam::tmp< Foam::GeometricField< Type, Foam::fvsPatchField, Foam::surfaceMesh > > weightedSum (const surfaceScalarField &phi, const GeometricField< Type, fvPatchField, volMesh > &fld, const List< List< scalar > > &ownWeights, const List< List< scalar > > &neiWeights) const
 
- Public Member Functions inherited from extendedCellToFaceStencil
 ClassName ("extendedCellToFaceStencil")
 
 extendedCellToFaceStencil (const polyMesh &)
 Construct from mesh. More...
 
template<class Type >
void collectData (const mapDistribute &map, const labelListList &stencil, const GeometricField< Type, fvPatchField, volMesh > &fld, List< List< Type > > &stencilFld)
 
template<class Type >
Foam::tmp< Foam::GeometricField< Type, Foam::fvsPatchField, Foam::surfaceMesh > > weightedSum (const mapDistribute &map, const labelListList &stencil, const GeometricField< Type, fvPatchField, volMesh > &fld, const List< List< scalar > > &stencilWeights)
 

Private Member Functions

void selectOppositeFaces (const boolList &nonEmptyFace, const scalar minOpposedness, const label faceI, const label cellI, DynamicList< label > &oppositeFaces) const
 Find most 'opposite' faces of cell. More...
 
void transportStencil (const boolList &nonEmptyFace, const labelListList &faceStencil, const scalar minOpposedness, const label faceI, const label cellI, const bool stencilHasNeighbour, DynamicList< label > &oppositeFaces, labelHashSet &faceStencilSet, labelList &transportedStencil) const
 Transport (centred) face stencil to 'opposite' face. More...
 
void transportStencils (const labelListList &faceStencil, const scalar minOpposedness, labelListList &ownStencil, labelListList &neiStencil)
 Transport (centred) face stencil to 'opposite' faces. More...
 
 extendedUpwindCellToFaceStencil (const extendedUpwindCellToFaceStencil &)
 Disallow default bitwise copy construct. More...
 
void operator= (const extendedUpwindCellToFaceStencil &)
 Disallow default bitwise assignment. More...
 

Private Attributes

const bool pureUpwind_
 Does stencil contain upwind points only. More...
 
autoPtr< mapDistributeownMapPtr_
 Swap map for getting neigbouring data. More...
 
autoPtr< mapDistributeneiMapPtr_
 
labelListList ownStencil_
 Per face the stencil. More...
 
labelListList neiStencil_
 

Additional Inherited Members

- Static Public Member Functions inherited from extendedCellToFaceStencil
template<class T >
static void collectData (const mapDistribute &map, const labelListList &stencil, const GeometricField< T, fvPatchField, volMesh > &fld, List< List< T > > &stencilFld)
 Use map to get the data into stencil order. More...
 
template<class Type >
static tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > weightedSum (const mapDistribute &map, const labelListList &stencil, const GeometricField< Type, fvPatchField, volMesh > &fld, const List< List< scalar > > &stencilWeights)
 Sum vol field contributions to create face values. More...
 
- Static Protected Member Functions inherited from extendedCellToFaceStencil
static void writeStencilStats (Ostream &os, const labelListList &stencil, const mapDistribute &map)
 Write some statistics about stencil. More...
 
- Protected Attributes inherited from extendedCellToFaceStencil
const polyMeshmesh_
 

Detailed Description

Creates upwind stencil by shifting a centred stencil to upwind and downwind faces and optionally removing all non-(up/down)wind faces ('pureUpwind').

Note: the minOpposedness parameter is to decide which upwind and downwind faces to combine the stencils from. If myArea is the local area and upwindArea the area of the possible upwind candidate it will be included if (upwindArea & myArea)/magSqr(myArea) > minOpposedness so this includes both cosine and area. WIP.

Source files

Definition at line 59 of file extendedUpwindCellToFaceStencil.H.

Constructor & Destructor Documentation

◆ extendedUpwindCellToFaceStencil() [1/3]

Disallow default bitwise copy construct.

◆ extendedUpwindCellToFaceStencil() [2/3]

extendedUpwindCellToFaceStencil ( const cellToFaceStencil stencil,
const bool  pureUpwind,
const scalar  minOpposedness 
)

Construct from mesh and uncompacted centred face stencil.

Transports facestencil to create owner and neighbour versions. pureUpwind to remove any remaining downwind cells.

Definition at line 380 of file extendedUpwindCellToFaceStencil.C.

References DynamicList::append(), forAll, cellToFaceStencil::globalNumbering(), mesh, cellToFaceStencil::mesh(), points, and List::size().

Here is the call graph for this function:

◆ extendedUpwindCellToFaceStencil() [3/3]

Construct from mesh and uncompacted centred face stencil. Splits.

stencil into owner and neighbour (so always pure upwind)

Definition at line 524 of file extendedUpwindCellToFaceStencil.C.

References DynamicList::append(), forAll, cellToFaceStencil::globalNumbering(), mesh, cellToFaceStencil::mesh(), points, and List::size().

Here is the call graph for this function:

Member Function Documentation

◆ selectOppositeFaces()

void selectOppositeFaces ( const boolList nonEmptyFace,
const scalar  minOpposedness,
const label  faceI,
const label  cellI,
DynamicList< label > &  oppositeFaces 
) const
private

Find most 'opposite' faces of cell.

Definition at line 35 of file extendedUpwindCellToFaceStencil.C.

References DynamicList::append(), DynamicList::clear(), forAll, SortableList::indices(), Foam::magSqr(), List::size(), and SortableList::sort().

Here is the call graph for this function:

◆ transportStencil()

void transportStencil ( const boolList nonEmptyFace,
const labelListList faceStencil,
const scalar  minOpposedness,
const label  faceI,
const label  cellI,
const bool  stencilHasNeighbour,
DynamicList< label > &  oppositeFaces,
labelHashSet faceStencilSet,
labelList transportedStencil 
) const
private

Transport (centred) face stencil to 'opposite' face.

Definition at line 107 of file extendedUpwindCellToFaceStencil.C.

References Foam::abort(), HashTable::clear(), Foam::FatalError, FatalErrorInFunction, forAll, forAllConstIter(), HashSet< Key, Hash >::insert(), n, List::setSize(), List::size(), and HashTable::size().

Here is the call graph for this function:

◆ transportStencils()

void transportStencils ( const labelListList faceStencil,
const scalar  minOpposedness,
labelListList ownStencil,
labelListList neiStencil 
)
private

Transport (centred) face stencil to 'opposite' faces.

Definition at line 200 of file extendedUpwindCellToFaceStencil.C.

References polyPatch::coupled(), forAll, patches, List::setSize(), polyPatch::start(), and List::transfer().

Here is the call graph for this function:

◆ operator=()

void operator= ( const extendedUpwindCellToFaceStencil )
private

Disallow default bitwise assignment.

◆ pureUpwind()

bool pureUpwind ( ) const
inline

◆ ownMap()

const mapDistribute& ownMap ( ) const
inline

◆ neiMap()

const mapDistribute& neiMap ( ) const
inline

Return reference to the parallel distribution map.

Definition at line 158 of file extendedUpwindCellToFaceStencil.H.

References extendedUpwindCellToFaceStencil::neiMapPtr_.

◆ ownStencil()

const labelListList& ownStencil ( ) const
inline

◆ neiStencil()

const labelListList& neiStencil ( ) const
inline

Return reference to the stencil.

Definition at line 170 of file extendedUpwindCellToFaceStencil.H.

References extendedUpwindCellToFaceStencil::neiStencil_.

◆ weightedSum() [1/2]

tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > weightedSum ( const surfaceScalarField phi,
const GeometricField< Type, fvPatchField, volMesh > &  fld,
const List< List< scalar > > &  ownWeights,
const List< List< scalar > > &  neiWeights 
) const

Sum vol field contributions to create face values.

Referenced by PureUpwindFitScheme< Type, Polynomial, Stencil >::correction(), and UpwindFitScheme< Type, Polynomial, Stencil >::correction().

Here is the caller graph for this function:

◆ weightedSum() [2/2]

Foam::tmp<Foam::GeometricField<Type, Foam::fvsPatchField, Foam::surfaceMesh> > weightedSum ( const surfaceScalarField phi,
const GeometricField< Type, fvPatchField, volMesh > &  fld,
const List< List< scalar > > &  ownWeights,
const List< List< scalar > > &  neiWeights 
) const

Definition at line 33 of file extendedUpwindCellToFaceStencilTemplates.C.

References fvsPatchField::coupled(), fld(), forAll, mesh, fvsPatchField::patch(), patchi, phi, sf(), and fvPatch::start().

Here is the call graph for this function:

Field Documentation

◆ pureUpwind_

const bool pureUpwind_
private

Does stencil contain upwind points only.

Definition at line 66 of file extendedUpwindCellToFaceStencil.H.

Referenced by extendedUpwindCellToFaceStencil::pureUpwind().

◆ ownMapPtr_

autoPtr<mapDistribute> ownMapPtr_
private

Swap map for getting neigbouring data.

Definition at line 69 of file extendedUpwindCellToFaceStencil.H.

Referenced by extendedUpwindCellToFaceStencil::ownMap().

◆ neiMapPtr_

autoPtr<mapDistribute> neiMapPtr_
private

◆ ownStencil_

labelListList ownStencil_
private

Per face the stencil.

Definition at line 73 of file extendedUpwindCellToFaceStencil.H.

Referenced by extendedUpwindCellToFaceStencil::ownStencil().

◆ neiStencil_

labelListList neiStencil_
private

The documentation for this class was generated from the following files: