64Foam::assemblyFaceAreaPairGAMGAgglomeration::
65assemblyFaceAreaPairGAMGAgglomeration
75 if (isA<lduPrimitiveMeshAssembly>(ldumesh))
78 refCast<const lduPrimitiveMeshAssembly>(ldumesh);
84 for (label i=0; i <
mesh.meshes().
size(); ++i)
86 const fvMesh& m = refCast<const fvMesh>(
mesh.meshes()[i]);
92 faceAreas[subFaceMap[facei]] = areas[facei];
101 label globalPatchID =
mesh.patchMap()[i][patchI];
103 if (globalPatchID == -1)
109 if (isA<cyclicAMIPolyPatch>(pp))
112 refCast<const cyclicAMIPolyPatch>(pp);
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];
135 else if (isA<cyclicACMIPolyPatch>(pp))
138 refCast<const cyclicACMIPolyPatch>(pp);
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];
189 faceAreas/
sqrt(
mag(faceAreas)),
198 const fvMesh& fvmesh = refCast<const fvMesh>(matrix.
mesh());
218Foam::assemblyFaceAreaPairGAMGAgglomeration::
219assemblyFaceAreaPairGAMGAgglomeration
236 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.
const scalarListList & srcWeights() const
Return const access to source patch weights.
Geometric agglomerated algebraic multigrid agglomeration class.
const Internal::FieldType & primitiveField() const
Return a const-reference to the internal field.
const Internal & internalField() const
Return a const-reference to the dimensioned internal field.
const lduMesh & mesh() const
void size(const label n)
Older name for setAddressableSize.
Agglomerate using the pair algorithm.
~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 fvBoundaryMesh & boundary() const
Return reference to boundary mesh.
const surfaceVectorField & Sf() const
Return cell face area vectors.
const surfaceScalarField & magSf() const
Return cell face area magnitudes.
virtual const labelUList & upperAddr() const =0
Return upper addressing.
lduMatrix is a general matrix class in which the coefficients are stored as three arrays,...
const lduMesh & mesh() const
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...
virtual const lduAddressing & lduAddr() const =0
Return ldu addressing.
An assembly of lduMatrix that is specific inter-region coupling through mapped patches.
Agglomerate using the pair algorithm.
void agglomerate(const lduMesh &mesh, const scalarField &faceWeights)
Agglomerate all levels starting from the given face weights.
A polyBoundaryMesh is a polyPatch list with additional search methods and registered IO.
const polyBoundaryMesh & boundaryMesh() const
Return boundary mesh.
A patch is a list of labels that address the faces in the global face list.
virtual bool masterImplicit() const
Return implicit master.
const labelUList & faceCells() const
Return face-cell addressing.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
runTime controlDict().readEntry("adjustTimeStep"
const polyBoundaryMesh & patches
Pair< int > faceMap(const label facePi, const face &faceP, const label faceNi, const face &faceN)
dimensionedScalar sqrt(const dimensionedScalar &ds)
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
static constexpr const zero Zero
Global zero (0)
dimensioned< Type > cmptMultiply(const dimensioned< Type > &, const dimensioned< Type > &)
#define forAll(list, i)
Loop across all elements in list.