42 NamedEnum<surfaceSlipDisplacementPointPatchVectorField::projectMode, 3>::
51 surfaceSlipDisplacementPointPatchVectorField::projectModeNames_;
56 void surfaceSlipDisplacementPointPatchVectorField::calcProjection
78 projectVec = projectLen*n;
83 const pointZone* zonePtr = NULL;
85 if (frozenPointsZone_.size() > 0)
88 label zoneID = pZones.
findZoneID(frozenPointsZone_);
93 "surfaceSlipDisplacementPointPatchVectorField::calcProjection()"
94 ) <<
"Cannot find zone " << frozenPointsZone_ <<
endl
98 zonePtr = &pZones[zoneID];
100 Pout<<
"surfaceSlipDisplacementPointPatchVectorField : Fixing all "
101 << zonePtr->size() <<
" points in pointZone " << zonePtr->
name()
115 start[i] = points0[meshPoints[i]] + displacement[i];
118 label nNotProjected = 0;
122 List<pointIndexHit> nearest;
134 if (zonePtr && (zonePtr->whichPoint(meshPoints[i]) >= 0))
137 displacement[i] = points0[meshPoints[i]] - localPoints[i];
139 else if (nearest[i].hit())
142 nearest[i].hitPoint()
143 - points0[meshPoints[i]];
151 Pout<<
" point:" << meshPoints[i]
152 <<
" coord:" << localPoints[i]
153 <<
" did not find any surface within " << projectLen
164 List<pointIndexHit> nearest;
191 offset[i] = start[i][wedgePlane_];
192 start[i][wedgePlane_] = 0;
193 projectVecs[i][wedgePlane_] = 0;
197 List<pointIndexHit> rightHit;
209 List<pointIndexHit> leftHit;
224 if (zonePtr && (zonePtr->whichPoint(meshPoints[i]) >= 0))
227 displacement[i] = points0[meshPoints[i]] - localPoints[i];
229 else if (nearest[i].hit())
233 nearest[i].hitPoint()
234 - points0[meshPoints[i]];
240 if (rightHit[i].hit())
242 if (leftHit[i].hit())
246 magSqr(rightHit[i].hitPoint()-start[i])
247 <
magSqr(leftHit[i].hitPoint()-start[i])
250 interPt = rightHit[i];
254 interPt = leftHit[i];
259 interPt = rightHit[i];
264 if (leftHit[i].hit())
266 interPt = leftHit[i];
275 interPt.rawPoint()[wedgePlane_] += offset[i];
277 displacement[i] = interPt.rawPoint()-points0[meshPoints[i]];
285 Pout<<
" point:" << meshPoints[i]
286 <<
" coord:" << localPoints[i]
287 <<
" did not find any intersection between"
288 <<
" ray from " << start[i]-projectVecs[i]
289 <<
" to " << start[i]+projectVecs[i] <<
endl;
296 reduce(nNotProjected, sumOp<label>());
298 if (nNotProjected > 0)
300 Info<<
"surfaceSlipDisplacement :"
302 <<
" did not project " << nNotProjected
304 <<
" points." <<
endl;
319 projectMode_(NEAREST),
334 surfacesDict_(dict.
subDict(
"geometry")),
335 projectMode_(projectModeNames_.read(dict.
lookup(
"projectMode"))),
336 projectDir_(dict.
lookup(
"projectDirection")),
352 surfacesDict_(ppf.surfacesDict_),
353 projectMode_(ppf.projectMode_),
354 projectDir_(ppf.projectDir_),
355 wedgePlane_(ppf.wedgePlane_),
356 frozenPointsZone_(ppf.frozenPointsZone_)
367 surfacesDict_(ppf.surfacesDict_),
368 projectMode_(ppf.projectMode_),
369 projectDir_(ppf.projectDir_),
370 wedgePlane_(ppf.wedgePlane_),
371 frozenPointsZone_(ppf.frozenPointsZone_)
383 surfacesDict_(ppf.surfacesDict_),
384 projectMode_(ppf.projectMode_),
385 projectDir_(ppf.projectDir_),
386 wedgePlane_(ppf.wedgePlane_),
387 frozenPointsZone_(ppf.frozenPointsZone_)
396 if (surfacesPtr_.
empty())
405 db().time().constant(),
415 return surfacesPtr_();
424 vectorField displacement(this->patchInternalField());
427 calcProjection(displacement);
433 setInInternalField(iF, displacement);
444 os.
writeKeyword(
"projectMode") << projectModeNames_[projectMode_]
452 os.
writeKeyword(
"frozenPointsZone") << frozenPointsZone_