84 for (label i=0; i <
mesh.meshes().
size(); ++i)
92 faceAreas[subFaceMap[facei]] = areas[facei];
101 label globalPatchID =
mesh.patchMap()[i][patchI];
103 if (globalPatchID == -1)
105 if (
pp.masterImplicit())
111 const cyclicAMIPolyPatch& mpp =
115 mpp.AMI().srcWeights();
122 for(label j=0; j<w.size(); j++)
124 const label globalFaceI =
125 mesh.faceBoundMap()[i][patchI][subFaceI];
127 if (globalFaceI != -1)
129 faceAreas[globalFaceI] = w[j]*sf[faceI];
137 const cyclicACMIPolyPatch& mpp =
141 mpp.AMI().srcWeights();
144 const scalar tol = mpp.tolerance();
150 for(label j=0; j<w.size(); j++)
152 if (mask[faceI] > tol)
154 const label globalFaceI =
155 mesh.faceBoundMap()[i]
158 faceAreas[globalFaceI] = w[j]*sf[faceI];
168 const label globalFaceI =
169 mesh.faceBoundMap()[i][patchI][faceI];
171 if (globalFaceI != -1)
173 faceAreas[globalFaceI] = sf[faceI];
190 faceAreas/
sqrt(
mag(faceAreas)),
210 fvmesh.Sf().primitiveField()
211 /
sqrt(fvmesh.magSf().primitiveField()),
225 const lduMatrix& matrix,
241 faceAreas/
sqrt(
mag(faceAreas)),
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
uindirectPrimitivePatch pp(UIndirectList< face >(mesh.faces(), faceLabels), mesh.points())
const scalarListList & srcWeights() const
Return const access to source patch weights.
Geometric agglomerated algebraic multigrid agglomeration class.
label nCellsInCoarsestLevel_
Number of cells in coarsest level.
const Internal & internalField() const noexcept
Return a const-reference to the dimensioned internal field.
const Internal::FieldType & primitiveField() const noexcept
Return a const-reference to the internal field values.
const lduMesh & mesh() const noexcept
void size(const label n)
Older name for setAddressableSize.
Agglomerate using the pair algorithm.
assemblyFaceAreaPairGAMGAgglomeration(const lduMatrix &matrix, const dictionary &controlDict)
Construct given mesh and controls.
~assemblyFaceAreaPairGAMGAgglomeration()
Destructor.
Cyclic patch for Arbitrarily Coupled Mesh Interface (ACMI).
const scalarField & mask() const
Mask field where 1 = overlap(coupled), 0 = no-overlap.
static scalar tolerance()
Overlap tolerance.
Cyclic patch for Arbitrary Mesh Interface (AMI).
const AMIPatchToPatchInterpolation & AMI() const
Return a reference to the AMI interpolator.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Mesh data needed to do the Finite Volume discretisation.
const surfaceVectorField & Sf() const
Return cell face area vectors.
const fvBoundaryMesh & boundary() const noexcept
Return reference to boundary mesh.
const surfaceScalarField & magSf() const
Return cell face area magnitudes.
lduMatrix is a general matrix class in which the coefficients are stored as three arrays,...
const lduMesh & mesh() const noexcept
Return the LDU mesh from which the addressing is obtained.
Abstract base class for meshes which provide LDU addressing for the construction of lduMatrix and LDU...
An assembly of lduMatrix that is specific inter-region coupling through mapped patches.
Agglomerate using the pair algorithm.
static tmp< labelField > agglomerate(label &nCoarseCells, const lduAddressing &fineMatrixAddressing, const scalarField &faceWeights)
Calculate and return agglomeration.
pairGAMGAgglomeration(const pairGAMGAgglomeration &)=delete
No copy construct.
A polyBoundaryMesh is a polyPatch list with registered IO, a reference to the associated polyMesh,...
const polyBoundaryMesh & boundaryMesh() const noexcept
Return boundary mesh.
A patch is a list of labels that address the faces in the global face list.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
runTime controlDict().readEntry("adjustTimeStep"
const polyBoundaryMesh & patches
List< scalarList > scalarListList
List of scalarList.
Pair< int > faceMap(const label facePi, const face &faceP, const label faceNi, const face &faceN)
Type & refCast(U &obj)
A dynamic_cast (for references) to Type reference.
List< labelList > labelListList
List of labelList.
List< label > labelList
A List of labels.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
dimensionedScalar sqrt(const dimensionedScalar &ds)
const Type * isA(const U &obj)
Attempt dynamic_cast to Type.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
Field< vector > vectorField
Specialisation of Field<T> for vector.
static constexpr const zero Zero
Global zero (0).
dimensioned< Type > cmptMultiply(const dimensioned< Type > &, const dimensioned< Type > &)
List< scalar > scalarList
List of scalar.
#define forAll(list, i)
Loop across all elements in list.