29 #include "PatchTools.H"
35 class PrimitivePatchType,
40 propagationTol_ = 0.01;
44 class PrimitivePatchType,
50 dummyTrackData_ = 12345;
62 class PrimitivePatchType,
70 const label neighbourFaceI,
71 const Type& neighbourInfo,
77 bool wasValid = edgeInfo.valid(td_);
93 if (!changedEdge_[edgeI])
95 changedEdge_[edgeI] =
true;
96 changedEdges_.append(edgeI);
100 if (!wasValid && edgeInfo.valid(td_))
116 class PrimitivePatchType,
124 const label neighbourEdgeI,
125 const Type& neighbourInfo,
131 bool wasValid = faceInfo.valid(td_);
147 if (!changedFace_[faceI])
149 changedFace_[faceI] =
true;
150 changedFaces_.append(faceI);
154 if (!wasValid && faceInfo.valid(td_))
165 class PrimitivePatchType,
184 label patchEdgeI = patchEdges_[i];
185 label coupledEdgeI = coupledEdges_[i];
187 if (changedEdge_[patchEdgeI])
189 const Type&
data = allEdgeInfo_[patchEdgeI];
194 bool sameOrientation =
196 sameEdgeOrientation_[i]
197 == cppOrientation[coupledEdgeI]
200 cppEdgeData[coupledEdgeI].updateEdge
245 label patchEdgeI = patchEdges_[i];
246 label coupledEdgeI = coupledEdges_[i];
248 const Type&
data = cppEdgeData[coupledEdgeI];
252 bool sameOrientation =
254 sameEdgeOrientation_[i]
255 == cppOrientation[coupledEdgeI]
258 allEdgeInfo_[patchEdgeI].updateEdge
268 if (!changedEdge_[patchEdgeI])
270 changedEdges_.
append(patchEdgeI);
271 changedEdge_[patchEdgeI] =
true;
284 class PrimitivePatchType,
292 const PrimitivePatchType& patch,
305 allEdgeInfo_(allEdgeInfo),
306 allFaceInfo_(allFaceInfo),
308 changedEdge_(patch_.nEdges()),
309 changedEdges_(patch_.size()),
310 changedFace_(patch_.size()),
311 changedFaces_(patch_.size()),
313 nUnvisitedEdges_(patch_.nEdges()),
314 nUnvisitedFaces_(patch_.size())
318 PatchTools::matchEdges
321 mesh_.globalData().coupledPatch(),
329 if (allEdgeInfo_.size() != patch_.nEdges())
332 <<
"size of edgeInfo work array is not equal to the number"
333 <<
" of edges in the patch" <<
endl
334 <<
" edgeInfo :" << allEdgeInfo_.size() <<
endl
335 <<
" patch.nEdges:" << patch_.nEdges()
338 if (allFaceInfo_.size() != patch_.size())
341 <<
"size of edgeInfo work array is not equal to the number"
342 <<
" of faces in the patch" <<
endl
343 <<
" faceInfo :" << allFaceInfo_.size() <<
endl
344 <<
" patch.size:" << patch_.size()
350 setEdgeInfo(changedEdges, changedEdgesInfo);
354 Pout<<
"Seed edges : " << changedEdges_.size() <<
endl;
358 label iter = iterate(maxIter);
360 if ((maxIter > 0) && (iter >= maxIter))
363 <<
"Maximum number of iterations reached. Increase maxIter." <<
endl
364 <<
" maxIter:" << maxIter <<
endl
365 <<
" changedEdges:" << changedEdges_.size() <<
endl
366 <<
" changedFaces:" << changedFaces_.size() <<
endl
374 class PrimitivePatchType,
382 const PrimitivePatchType& patch,
390 allEdgeInfo_(allEdgeInfo),
391 allFaceInfo_(allFaceInfo),
393 changedEdge_(patch_.nEdges()),
394 changedEdges_(patch_.nEdges()),
395 changedFace_(patch_.size()),
396 changedFaces_(patch_.size()),
398 nUnvisitedEdges_(patch_.nEdges()),
399 nUnvisitedFaces_(patch_.size())
403 PatchTools::matchEdges
406 mesh_.globalData().coupledPatch(),
419 class PrimitivePatchType,
426 return nUnvisitedEdges_;
432 class PrimitivePatchType,
439 return nUnvisitedFaces_;
446 class PrimitivePatchType,
457 forAll(changedEdges, changedEdgeI)
459 label edgeI = changedEdges[changedEdgeI];
461 bool wasValid = allEdgeInfo_[edgeI].valid(td_);
464 allEdgeInfo_[edgeI] = changedEdgesInfo[changedEdgeI];
467 if (!wasValid && allEdgeInfo_[edgeI].valid(td_))
474 if (!changedEdge_[edgeI])
476 changedEdge_[edgeI] =
true;
477 changedEdges_.
append(edgeI);
486 class PrimitivePatchType,
493 changedEdges_.clear();
494 changedEdge_ =
false;
496 forAll(changedFaces_, changedFaceI)
498 label faceI = changedFaces_[changedFaceI];
500 if (!changedFace_[faceI])
504 <<
" not marked as having been changed" <<
nl
505 <<
"This might be caused by multiple occurences of the same"
509 const Type& neighbourWallInfo = allFaceInfo_[faceI];
512 const labelList& fEdges = patch_.faceEdges()[faceI];
516 label edgeI = fEdges[fEdgeI];
518 Type& currentWallInfo = allEdgeInfo_[edgeI];
520 if (!currentWallInfo.equal(neighbourWallInfo, td_))
539 Pout<<
"Changed edges : " << changedEdges_.size() <<
endl;
549 class PrimitivePatchType,
556 changedFaces_.clear();
557 changedFace_ =
false;
561 forAll(changedEdges_, changedEdgeI)
563 label edgeI = changedEdges_[changedEdgeI];
565 if (!changedEdge_[edgeI])
569 <<
" not marked as having been changed" <<
nl
570 <<
"This might be caused by multiple occurences of the same"
574 const Type& neighbourWallInfo = allEdgeInfo_[edgeI];
578 const labelList& eFaces = edgeFaces[edgeI];
581 label faceI = eFaces[eFaceI];
583 Type& currentWallInfo = allFaceInfo_[faceI];
585 if (!currentWallInfo.equal(neighbourWallInfo, td_))
600 Pout<<
"Changed faces : " << changedFaces_.size() <<
endl;
610 class PrimitivePatchType,
627 while (iter < maxIter)
631 Pout<<
"Iteration " << iter <<
endl;
634 label nFaces = edgeToFace();
638 Pout<<
"Total changed faces : " << nFaces <<
endl;
646 label nEdges = faceToEdge();
650 Pout<<
"Total changed edges : " << nEdges <<
nl
651 <<
"Total evaluations : " << nEvals_ <<
nl
652 <<
"Remaining unvisited edges : " << nUnvisitedEdges_ <<
nl
653 <<
"Remaining unvisited faces : " << nUnvisitedFaces_ <<
nl