The class contains the addressing required by the lduMatrix: upper, lower and losort. More...
Public Member Functions | |
lduAddressing (const label nEqns) | |
virtual | ~lduAddressing () |
label | size () const |
virtual const labelUList & | lowerAddr () const =0 |
virtual const labelUList & | upperAddr () const =0 |
virtual const labelUList & | patchAddr (const label patchNo) const =0 |
virtual const lduSchedule & | patchSchedule () const =0 |
void | clearOut () |
const labelUList & | losortAddr () const |
const labelUList & | ownerStartAddr () const |
const labelUList & | losortStartAddr () const |
label | triIndex (const label a, const label b) const |
Tuple2< label, scalar > | band () const |
The class contains the addressing required by the lduMatrix: upper, lower and losort.
The addressing can be created in two ways: either with references to upper and lower in which case it stores references or from labelLists, in which case it stores the addressing itself. Additionally, the losort addressing belongs to the class is as on lazy evaluation.
The ordering of owner addresses is such that the labels are in increasing order, with groups of identical labels for edges "owned" by the same point. The neighbour labels are also ordered in ascending order but only for groups of edges belonging to each point. An example is given below:
owner neighbour 0 1 0 20 1 2 1 21 2 3 2 22 3 4 3 23 4 5 4 24 5 6 5 25 6 7 6 26 7 8 7 27 8 9 8 28 9 10 9 29
There exists an alternative way of addressing the owner list: instead of repeating the same label in the owner list, it is possible to address the start of each point neighbours in the neighbour list. This reduces the size of owner addressing from a list over all edges to a list over all points + 1:
Owner start list: 0 2 4 6 8 10 12 14 16 18
We shall use the second form of the addressing for fast lookup of edge label from the known owner and neighbour, using the following algorithm:
While owner start addressing allows us to find the edge owned by the points, it is also necessary to find the edges for which the point is a neighbour. Losort addressing lists the edges neighboured by the point and we shall use the same trick as above to address into this list. Thus, for every point the losort start gives the address of the first face to neighbour this point.
Definition at line 110 of file lduAddressing.H.
|
inlineexplicit |
Definition at line 151 of file lduAddressing.H.
|
virtual |
Definition at line 171 of file lduAddressing.C.
References Foam::deleteDemandDrivenData().
|
inline |
Definition at line 167 of file lduAddressing.H.
Referenced by fvMeshPrimitiveLduAddressing::addAddressing(), pairGAMGAgglomeration::agglomerate(), GAMGAgglomeration::agglomerateLduAddressing(), GAMGAgglomeration::checkRestriction(), GAMGAgglomeration::compactLevels(), GAMGAgglomeration::GAMGAgglomeration(), lduPrimitiveMesh::gather(), GAMGProcAgglomeration::globalCellCells(), lduPrimitiveMesh::globalCellCells(), lduPrimitiveMesh::lduPrimitiveMesh(), LUscalarMatrix::LUscalarMatrix(), MGridGenGAMGAgglomeration::MGridGenGAMGAgglomeration(), Foam::operator<<(), dynamicOversetFvMesh::updateAddressing(), and dynamicOversetFvMesh::write().
|
pure virtual |
Implemented in faMeshLduAddressing, fvMeshPrimitiveLduAddressing, fvMeshLduAddressing, and lduPrimitiveMesh.
Referenced by dynamicOversetFvMesh::active(), fvMeshPrimitiveLduAddressing::addAddressing(), dynamicOversetFvMesh::addInterpolation(), pairGAMGAgglomeration::agglomerate(), GAMGAgglomeration::agglomerateLduAddressing(), TDILUPreconditioner< Type, DType, LUType >::calcInvD(), DICPreconditioner::calcReciprocalD(), DILUPreconditioner::calcReciprocalD(), GAMGAgglomeration::checkRestriction(), GAMGAgglomeration::compactLevels(), lduPrimitiveMesh::gather(), GAMGProcAgglomeration::globalCellCells(), lduPrimitiveMesh::globalCellCells(), lduMatrix::H(), lduMatrix::H1(), lduPrimitiveMesh::lduPrimitiveMesh(), Foam::operator<<(), fvMesh::owner(), faMesh::owner(), lduMatrix::sumDiag(), dynamicOversetFvMesh::updateAddressing(), and dynamicOversetFvMesh::write().
|
pure virtual |
Implemented in faMeshLduAddressing, fvMeshPrimitiveLduAddressing, fvMeshLduAddressing, and lduPrimitiveMesh.
Referenced by fvMeshPrimitiveLduAddressing::addAddressing(), dynamicOversetFvMesh::addInterpolation(), pairGAMGAgglomeration::agglomerate(), GAMGAgglomeration::agglomerateLduAddressing(), assemblyFaceAreaPairGAMGAgglomeration::assemblyFaceAreaPairGAMGAgglomeration(), TDILUPreconditioner< Type, DType, LUType >::calcInvD(), DILUPreconditioner::calcReciprocalD(), DICPreconditioner::calcReciprocalD(), GAMGAgglomeration::checkRestriction(), lduPrimitiveMesh::gather(), GAMGProcAgglomeration::globalCellCells(), lduPrimitiveMesh::globalCellCells(), lduMatrix::H(), lduMatrix::H1(), lduPrimitiveMesh::lduPrimitiveMesh(), fvMesh::neighbour(), faMesh::neighbour(), Foam::operator<<(), TGaussSeidelSmoother< Type, DType, LUType >::smooth(), GaussSeidelSmoother::smooth(), symGaussSeidelSmoother::smooth(), nonBlockingGaussSeidelSmoother::smooth(), lduMatrix::sumDiag(), fvMeshPrimitiveLduAddressing::triIndex(), dynamicOversetFvMesh::updateAddressing(), and dynamicOversetFvMesh::write().
|
pure virtual |
Implemented in lduPrimitiveMeshAssembly, faMeshLduAddressing, fvMeshPrimitiveLduAddressing, fvMeshLduAddressing, and lduPrimitiveMesh.
Referenced by dynamicOversetFvMesh::addInterpolation(), GAMGAgglomeration::agglomerateLduAddressing(), processorFvPatchField< Type >::initInterfaceMatrixUpdate(), calculatedProcessorFvPatchField< Type >::initInterfaceMatrixUpdate(), Foam::operator<<(), dynamicOversetFvMesh::updateAddressing(), cyclicAMIGAMGInterfaceField::updateInterfaceMatrix(), cyclicACMIGAMGInterfaceField::updateInterfaceMatrix(), jumpCyclicFvPatchField< vector >::updateInterfaceMatrix(), jumpCyclicAMIFvPatchField< scalar >::updateInterfaceMatrix(), cyclicGAMGInterfaceField::updateInterfaceMatrix(), calculatedProcessorGAMGInterfaceField::updateInterfaceMatrix(), processorGAMGInterfaceField::updateInterfaceMatrix(), cyclicFvPatchField< vector >::updateInterfaceMatrix(), cyclicAMIFvPatchField< scalar >::updateInterfaceMatrix(), cyclicACMIFvPatchField< Type >::updateInterfaceMatrix(), processorFvPatchField< Type >::updateInterfaceMatrix(), and dynamicOversetFvMesh::write().
|
pure virtual |
Implemented in faMeshLduAddressing, fvMeshPrimitiveLduAddressing, fvMeshLduAddressing, and lduPrimitiveMesh.
Referenced by lduPrimitiveMesh::gather(), LduMatrix< Type, DType, LUType >::patchSchedule(), and lduMatrix::patchSchedule().
void clearOut | ( | ) |
Definition at line 214 of file lduAddressing.C.
References Foam::deleteDemandDrivenData().
Referenced by fvMatrix< Type >::createOrUpdateLduPrimitiveAssembly().
const Foam::labelUList & losortAddr | ( | ) | const |
Definition at line 181 of file lduAddressing.C.
Referenced by dynamicOversetFvMesh::addInterpolation(), and dynamicOversetFvMesh::write().
const Foam::labelUList & ownerStartAddr | ( | ) | const |
Definition at line 192 of file lduAddressing.C.
Referenced by dynamicOversetFvMesh::addInterpolation(), TGaussSeidelSmoother< Type, DType, LUType >::smooth(), symGaussSeidelSmoother::smooth(), GaussSeidelSmoother::smooth(), nonBlockingGaussSeidelSmoother::smooth(), fvMeshPrimitiveLduAddressing::triIndex(), and dynamicOversetFvMesh::write().
const Foam::labelUList & losortStartAddr | ( | ) | const |
Definition at line 203 of file lduAddressing.C.
Referenced by dynamicOversetFvMesh::addInterpolation(), and dynamicOversetFvMesh::write().
Foam::label triIndex | ( | const label | a, |
const label | b | ||
) | const |
Definition at line 222 of file lduAddressing.C.
References Foam::abort(), Foam::constant::physicoChemical::b, Foam::FatalError, FatalErrorInFunction, Foam::max(), and Foam::min().
Foam::Tuple2< Foam::label, Foam::scalar > band | ( | ) | const |
Definition at line 253 of file lduAddressing.C.
References Foam::diff(), forAll, Foam::max(), and Foam::Zero.
Referenced by GAMGAgglomeration::compactLevels().
Copyright © 2011-2018 OpenFOAM | OPENFOAM® is a registered trademark of OpenCFD Ltd.