35 const label sizeBeforeMapping,
37 const label addressingOffset
40 sizeBeforeMapping_(sizeBeforeMapping),
41 directAddressing_(addressingSlice)
43 forAll(directAddressing_, i)
48 directAddressing_[i] -= addressingOffset;
53Foam::faFieldDecomposer::processorAreaPatchFieldDecomposer::
54processorAreaPatchFieldDecomposer
56 const label nTotalFaces,
63 sizeBeforeMapping_(nTotalFaces),
64 addressing_(addressingSlice.size()),
65 weights_(addressingSlice.size())
70 label ai = addressingSlice[i];
73 if (ai < neigh.
size())
81 addressing_[i][0] = owner[ai];
82 addressing_[i][1] = neigh[ai];
88 weights_[i][1] = 1.0 -
weights[ai];
108 addressing_[i][0] = owner[ai];
110 weights_[i][0] = 1.0;
116Foam::faFieldDecomposer::processorAreaPatchFieldDecomposer::
117processorAreaPatchFieldDecomposer
127 mesh.edgeNeighbour(),
131 ?
mesh.weights().primitiveField()
138Foam::faFieldDecomposer::processorEdgePatchFieldDecomposer::
139processorEdgePatchFieldDecomposer
141 label sizeBeforeMapping,
145 sizeBeforeMapping_(sizeBeforeMapping),
146 addressing_(addressingSlice.size()),
147 weights_(addressingSlice.size())
154 addressing_[i][0] =
mag(addressingSlice[i]) - 1;
155 weights_[i][0] =
sign(addressingSlice[i]);
172 edgeAddressing_(edgeAddressing),
173 faceAddressing_(faceAddressing),
174 boundaryAddressing_(boundaryAddressing),
176 patchFieldDecomposerPtrs_(),
177 processorAreaPatchFieldDecomposerPtrs_(),
178 processorEdgePatchFieldDecomposerPtrs_()
184 const faMesh& completeMesh,
206 const label nTotalFaces,
226 reset(nTotalFaces, boundaryRanges, edgeOwner, edgeNeigbour);
234 return patchFieldDecomposerPtrs_.empty();
240 patchFieldDecomposerPtrs_.clear();
241 processorAreaPatchFieldDecomposerPtrs_.clear();
242 processorEdgePatchFieldDecomposerPtrs_.clear();
248 const label nTotalFaces,
255 const label nMappers = procMesh_.boundary().size();
257 patchFieldDecomposerPtrs_.resize(nMappers);
258 processorAreaPatchFieldDecomposerPtrs_.resize(nMappers);
259 processorEdgePatchFieldDecomposerPtrs_.resize(nMappers);
261 forAll(boundaryAddressing_, patchi)
263 const label oldPatchi = boundaryAddressing_[patchi];
264 const faPatch& fap = procMesh_.boundary()[patchi];
269 patchFieldDecomposerPtrs_.set
274 boundaryRanges[oldPatchi].size(),
276 boundaryRanges[oldPatchi].start()
282 processorAreaPatchFieldDecomposerPtrs_.set
294 processorEdgePatchFieldDecomposerPtrs_.set
299 procMesh_.boundary()[patchi].size(),
311 const label nMappers = procMesh_.boundary().size();
312 patchFieldDecomposerPtrs_.resize(nMappers);
313 processorAreaPatchFieldDecomposerPtrs_.resize(nMappers);
314 processorEdgePatchFieldDecomposerPtrs_.resize(nMappers);
327 forAll(boundaryAddressing_, patchi)
329 const label oldPatchi = boundaryAddressing_[patchi];
330 const faPatch& fap = procMesh_.boundary()[patchi];
335 patchFieldDecomposerPtrs_.set
342 completePatchStarts[oldPatchi]
348 processorAreaPatchFieldDecomposerPtrs_.set
358 processorEdgePatchFieldDecomposerPtrs_.set
363 procMesh_.boundary()[patchi].size(),
void resize(const label len)
Adjust allocated size of list.
A List obtained as a section of another List.
void size(const label n)
Older name for setAddressableSize.
label size() const noexcept
The number of elements in the list.
void reset()
Reset to defaults.
labelList patchStarts() const
Return a list of patch start indices.
Patch field decomposer class.
Processor patch field decomposer class.
const scalarListList & weights() const
Return the interpolation weights.
Processor patch field decomposer class.
Finite Area area and edge field decomposer.
bool empty() const
True if no mappers have been allocated.
void reset(const faMesh &completeMesh)
Reset mappers using information from the complete mesh.
void clear()
Remove all mappers.
Finite area mesh (used for 2-D non-Euclidian finite area method) defined using a patch of faces on a ...
const faBoundaryMesh & boundary() const noexcept
Return constant reference to boundary mesh.
Finite area patch class. Used for 2-D non-Euclidian finite area method.
List< T >::subList patchSlice(const List< T > &l) const
Slice list to patch.
Patch field decomposer class.
A class representing the concept of 0 (zero) that can be used to avoid manipulating objects known to ...
const labelList nFaces(UPstream::listGatherValues< label >(aMesh.nFaces()))
dimensionedScalar sign(const dimensionedScalar &ds)
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
#define forAll(list, i)
Loop across all elements in list.