Least-squares-weighted interpolation stencil. More...
Public Member Functions | |
TypeName ("leastSquares") | |
Runtime type information. More... | |
leastSquares (const fvMesh &, const dictionary &, const bool) | |
Construct from fvMesh. More... | |
virtual | ~leastSquares () |
Destructor. More... | |
virtual void | stencilWeights (const point &sample, const pointList &donorCcs, scalarList &weights) const |
Calculate lsq weights for single acceptor. More... | |
Public Member Functions inherited from inverseDistance | |
TypeName ("inverseDistance") | |
Runtime type information. More... | |
inverseDistance (const fvMesh &, const dictionary &, const bool) | |
Construct from fvMesh. More... | |
virtual | ~inverseDistance () |
Destructor. More... | |
virtual bool | update () |
Update stencils. Return false if nothing changed. More... | |
virtual const labelUList & | cellTypes () const |
Return the cell type list. More... | |
virtual const labelUList & | interpolationCells () const |
Indices of interpolated cells. More... | |
virtual const mapDistribute & | cellInterpolationMap () const |
Return a communication schedule. More... | |
virtual const labelListList & | cellStencil () const |
Per interpolated cell the neighbour cells (in terms of slots as. More... | |
virtual const scalarListList & | cellInterpolationWeights () const |
Weights for cellStencil. More... | |
virtual const scalarList & | cellInterpolationWeight () const |
Per interpolated cell the interpolation factor. (0 = use. More... | |
virtual void | stencilWeights (const point &sample, const pointList &donorCcs, scalarList &weights) const |
Calculate inverse distance weights for a single acceptor. More... | |
Public Member Functions inherited from cellCellStencil | |
TypeName ("cellCellStencil") | |
Runtime type information. More... | |
declareRunTimeSelectionTable (autoPtr, cellCellStencil, mesh,(const fvMesh &mesh, const dictionary &dict, const bool update),(mesh, dict, update)) | |
cellCellStencil (const fvMesh &) | |
Construct from fvMesh. More... | |
virtual | ~cellCellStencil () |
Destructor. More... | |
virtual bool | update ()=0 |
Update stencils. Return false if nothing changed. More... | |
virtual const labelUList & | cellTypes () const =0 |
Return the cell type list. More... | |
virtual const labelUList & | interpolationCells () const =0 |
Indices of interpolated cells. More... | |
virtual const mapDistribute & | cellInterpolationMap () const =0 |
Return a communication schedule. More... | |
virtual const labelListList & | cellStencil () const =0 |
Per interpolated cell the neighbour cells (in terms of slots as. More... | |
virtual const List< scalarList > & | cellInterpolationWeights () const =0 |
Weights for cellStencil. More... | |
virtual const scalarList & | cellInterpolationWeight () const =0 |
Per interpolated cell the interpolation factor. (0 = use. More... | |
virtual void | stencilWeights (const point &sample, const pointList &donorCcs, scalarList &weights) const =0 |
Calculate weights for a single acceptor. More... | |
virtual const wordHashSet & | nonInterpolatedFields () const |
Return the names of any (stencil or mesh specific) fields that. More... | |
virtual wordHashSet & | nonInterpolatedFields () |
Return non-const non-interpolating fields. More... | |
bool | localStencil (const labelUList &) const |
Helper: is stencil fully local. More... | |
const labelIOList & | zoneID () const |
Helper: get reference to registered zoneID. Loads volScalarField. More... | |
template<class Type > | |
Foam::tmp< Foam::volScalarField > | createField (const fvMesh &mesh, const word &name, const UList< Type > &psi) |
Additional Inherited Members | |
Public Types inherited from cellCellStencil | |
enum | patchCellType { OTHER = 0 , PATCH = 1 , OVERSET = 2 } |
enum | cellType { CALCULATED = 0 , INTERPOLATED = 1 , HOLE = 2 } |
Static Public Member Functions inherited from cellCellStencil | |
static autoPtr< cellCellStencil > | New (const fvMesh &, const dictionary &dict, const bool update=true) |
New function which constructs and returns pointer to a. More... | |
static const labelIOList & | zoneID (const fvMesh &) |
Helper: get reference to registered zoneID. Loads volScalarField. More... | |
static void | globalCellCells (const globalIndex &gi, const polyMesh &mesh, const boolList &isValidDonor, const labelList &selectedCells, labelListList &cellCells, pointListList &cellCellCentres) |
Helper: create cell-cell addressing in global numbering. More... | |
Protected Member Functions inherited from inverseDistance | |
void | markPatchesAsHoles (PstreamBuffers &pBufs, const PtrList< fvMeshSubset > &meshParts, const List< treeBoundBoxList > &patchBb, const List< labelVector > &patchDivisions, const PtrList< PackedList< 2 > > &patchParts, const label srcI, const label tgtI, labelList &allCellTypes) const |
Mark all cells overlapping (a voxel covered by) a src patch. More... | |
bool | betterDonor (const label destMesh, const label currentDonorMesh, const label newDonorMesh) const |
If multiple donors meshes: decide which is best. More... | |
void | markDonors (const globalIndex &globalCells, PstreamBuffers &pBufs, const PtrList< fvMeshSubset > &meshParts, const List< treeBoundBoxList > &meshBb, const labelList &allCellTypes, const label srcI, const label tgtI, labelListList &allStencil, labelList &allDonor) const |
Determine donors for all tgt cells. More... | |
void | uncompactedRegionSplit (const fvMesh &mesh, const globalIndex &globalFaces, const label nZones, const labelList &zoneID, const labelList &cellTypes, const boolList &isBlockedFace, labelList &cellRegion) const |
Replacement of regionSplit. More... | |
autoPtr< globalIndex > | compactedRegionSplit (const fvMesh &mesh, const globalIndex &globalFaces, labelList &cellRegion) const |
void | findHoles (const globalIndex &globalCells, const fvMesh &mesh, const labelList &zoneID, const labelListList &stencil, labelList &cellTypes) const |
Do flood filling to detect unreachable (from patches) sections. More... | |
void | seedCell (const label cellI, const scalar wantedFraction, bitSet &isFront, scalarField &fraction) const |
Seed faces of cell with wantedFraction (if higher than current) More... | |
void | walkFront (const scalar layerRelax, const labelListList &allStencil, labelList &allCellTypes, scalarField &allWeight) const |
Surround holes with layer(s) of interpolated cells. More... | |
virtual void | createStencil (const globalIndex &) |
Create stencil starting from the donor containing the acceptor. More... | |
Static Protected Member Functions inherited from inverseDistance | |
static label | index (const labelVector &nDivs, const labelVector &) |
Convert ijk indices into single index. More... | |
static labelVector | index3 (const labelVector &nDivs, const label) |
Convert single index into ijk. More... | |
static labelVector | index3 (const boundBox &bb, const labelVector &nDivs, const point &pt) |
Convert coordinate into ijk. More... | |
static point | position (const boundBox &bb, const labelVector &nDivs, const label boxI) |
Convert index back into coordinate. More... | |
static void | fill (PackedList< 2 > &elems, const boundBox &bb, const labelVector &nDivs, const boundBox &subBb, const unsigned int val) |
Fill all elements overlapping subBb with value val. More... | |
static bool | overlaps (const boundBox &bb, const labelVector &nDivs, const PackedList< 2 > &voxels, const treeBoundBox &subBb, const unsigned int val) |
Is any voxel inside subBb set to val. More... | |
static void | markBoundaries (const fvMesh &mesh, const vector &smallVec, const boundBox &bb, const labelVector &nDivs, PackedList< 2 > &patchTypes, const labelList &cellMap, labelList &patchCellTypes) |
Mark voxels of patchTypes with type of patch face. More... | |
static treeBoundBox | cellBb (const primitiveMesh &mesh, const label celli) |
Calculate bounding box of cell. More... | |
Static Protected Member Functions inherited from cellCellStencil | |
static labelList | count (const label size, const labelUList &lst) |
Count occurrences (in parallel) More... | |
template<class Type > | |
static tmp< volScalarField > | createField (const fvMesh &mesh, const word &name, const UList< Type > &) |
Helper: create volScalarField for postprocessing. More... | |
Protected Attributes inherited from inverseDistance | |
const dictionary | dict_ |
Dictionary of motion control parameters. More... | |
vector | smallVec_ |
Small perturbation vector for geometric tests. More... | |
labelList | cellTypes_ |
Per cell the cell type. More... | |
labelList | interpolationCells_ |
Indices of interpolated cells. More... | |
autoPtr< mapDistribute > | cellInterpolationMap_ |
Fetch interpolated cells. More... | |
labelListList | cellStencil_ |
Interpolation stencil. More... | |
scalarListList | cellInterpolationWeights_ |
Interpolation weights. More... | |
volScalarField | cellInterpolationWeight_ |
Amount of interpolation. More... | |
Protected Attributes inherited from cellCellStencil | |
const fvMesh & | mesh_ |
Reference to the mesh. More... | |
wordHashSet | nonInterpolatedFields_ |
Set of fields that should not be interpolated. More... | |
Static Protected Attributes inherited from cellCellStencil | |
static const Enum< cellType > | cellTypeNames_ |
Mode type names. More... | |
Least-squares-weighted interpolation stencil.
Base machinery is similar to inverse distance interpolation stencil but weights minimize error in LSQ sense recovering exact solution for linear solution problems. Gradient and values are found simultaneously.
Definition at line 58 of file leastSquaresCellCellStencil.H.
leastSquares | ( | const fvMesh & | mesh, |
const dictionary & | dict, | ||
const bool | doUpdate | ||
) |
Construct from fvMesh.
Definition at line 157 of file leastSquaresCellCellStencil.C.
References inverseDistance::update().
|
virtual |
Destructor.
Definition at line 175 of file leastSquaresCellCellStencil.C.
TypeName | ( | "leastSquares" | ) |
Runtime type information.
|
virtual |
Calculate lsq weights for single acceptor.
Reimplemented from inverseDistance.
Definition at line 45 of file leastSquaresCellCellStencil.C.
References A, forAll, Foam::mag(), Foam::magSqr(), List< T >::setSize(), UList< T >::size(), dimensioned< Type >::T(), SVD::VSinvUt(), Vector< Cmpt >::x(), Vector< Cmpt >::y(), Vector< Cmpt >::z(), and Foam::Zero.