Go to the documentation of this file.
49 Pout<<
"pointConstraints::makePatchPatchAddressing() : "
50 <<
"constructing boundary addressing"
63 label nPatchPatchPoints = 0;
67 if (!isA<emptyPointPatch>(pbm[
patchi]) && !pbm[
patchi].coupled())
71 nPatchPatchPoints += bp.
size();
76 <<
" nBoundaryPoints:" << bp.
size() <<
endl;
83 Pout<<
indent <<
"Found nPatchPatchPoints:" << nPatchPatchPoints
92 Map<label> patchPatchPointSet(2*nPatchPatchPoints);
99 labelList patchPatchPoints(nPatchPatchPoints);
105 if (!isA<emptyPointPatch>(pbm[
patchi]) && !pbm[
patchi].coupled())
112 label ppp = meshPoints[bp[pointi]];
116 label constraintI = -1;
118 if (iter == patchPatchPointSet.end())
120 patchPatchPointSet.insert(ppp, pppi);
121 patchPatchPoints[pppi] = ppp;
122 constraintI = pppi++;
126 constraintI = iter();
130 pbm[
patchi].applyConstraint
141 Pout<<
indent <<
"Have (local) constrained points:"
142 << nPatchPatchPoints <<
endl;
165 if (!isA<emptyPointPatch>(pbm[
patchi]) && !pbm[
patchi].coupled())
172 label ppp = meshPoints[bp[pointi]];
175 if (fnd != cpPointMap.end())
181 patchPatchPointSet[ppp]
192 forAll(globalPointSlaves, pointI)
194 const labelList& slaves = globalPointSlaves[pointI];
199 constraints[pointI].combine(constraints[slaves[i]]);
204 constraints[slaves[i]] = constraints[pointI];
216 forAll(constraints, coupledPointI)
218 if (constraints[coupledPointI].first() != 0)
220 label meshPointI = cpMeshPoints[coupledPointI];
224 label constraintI = -1;
226 if (iter == patchPatchPointSet.end())
236 if (patchPatchPoints.
size() <= pppi)
238 patchPatchPoints.
setSize(pppi+100);
240 patchPatchPointSet.insert(meshPointI, pppi);
241 patchPatchPoints[pppi] = meshPointI;
242 constraintI = pppi++;
253 constraintI = iter();
260 constraints[coupledPointI]
268 nPatchPatchPoints = pppi;
269 patchPatchPoints.
setSize(nPatchPatchPoints);
275 Pout<<
indent <<
"Have (global) constrained points:"
276 << nPatchPatchPoints <<
endl;
286 label nConstraints = 0;
307 Pout<<
indent <<
"Have non-trivial constrained points:"
308 << nConstraints <<
endl;
319 <<
"pointConstraints::makePatchPatchAddressing() : "
320 <<
"finished constructing boundary addressing"
334 Pout<<
"pointConstraints::pointConstraints(const pointMesh&): "
335 <<
"Constructing from pointMesh " << pm.
name()
349 Pout<<
"pointConstraints::~pointConstraints()" <<
endl;
371 const bool overrideFixedValue
380 syncUntransformedData
388 constrainCorners(pf);
398 if (overrideFixedValue)
408 void pointConstraints::constrainCorners<scalar>
416 void pointConstraints::constrainCorners<label>
const pointBoundaryMesh & boundary() const
Return reference to boundary mesh.
const labelListList & globalPointSlaves() const
~pointConstraints()
Destructor.
pointConstraints(const pointConstraints &)
Disallow default bitwise copy construct.
#define forAll(list, i)
Loop across all elements in list.
void correctDisplacement(const pointField &p, vectorField &disp) const
Correct motion displacements.
const globalMeshData & globalData() const
Return parallel info.
Accumulates point constraints through successive applications of the applyConstraint function.
labelList patchPatchPointConstraintPoints_
Mesh points on which to apply special constraints.
Ostream & endl(Ostream &os)
Add newline and flush stream.
void constrainDisplacement(pointVectorField &displacement, const bool overrideValue=false) const
Apply boundary conditions (single-patch constraints),.
const mapDistribute & globalPointSlavesMap() const
Ostream & incrIndent(Ostream &os)
Increment the indent level.
Mesh consisting of general polyhedral cells.
static const twoDPointCorrector & New(const polyMesh &mesh)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
const pointMesh & mesh() const
Class containing processor-to-processor mapping information.
InternalField & internalField()
Return internal field.
const word & name() const
Return name.
bool movePoints()
Correct weighting factors for moving mesh.
void distribute(List< T > &fld, const bool dummyTransform=true, const int tag=UPstream::msgType()) const
Distribute data using default commsType.
Various mesh related information for a parallel run. Upon construction, constructs all info using par...
Mesh representing a set of points created from polyMesh.
Ostream & decrIndent(Ostream &os)
Decrement the indent level.
tensorField patchPatchPointConstraintTensors_
Special constraints (as tensors)
Ostream & indent(Ostream &os)
Indent stream.
void correctBoundaryConditions()
Correct boundary field.
Application of (multi-)patch point contraints.
label constructSize() const
Constructed data size.
void setSize(const label)
Reset size of List.
void updateMesh(const mapPolyMesh &)
Update mesh topology using the morph engine.
prefixOSstream Pout(cout, "Pout")
List< pointConstraint > patchPatchPointConstraints_
Special constraints (raw)
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
const indirectPrimitivePatch & coupledPatch() const
Return patch of all coupled faces.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
void reverseDistribute(const label constructSize, List< T > &, const bool dummyTransform=true, const int tag=UPstream::msgType()) const
Reverse distribute data using default commsType.
Templated abstract base-class for optional mesh objects used to automate their allocation to the mesh...
void makePatchPatchAddressing()
Make patch-patch constraints.
void size(const label)
Override size to be inconsistent with allocated storage.
const Map< label > & meshPointMap() const
Mesh point map. Given the global point index find its.
const labelList & meshPoints() const
Return labelList of mesh points in patch.
Generic GeometricField class.
defineTypeNameAndDebug(combustionModel, 0)