db7fac3f24
git-svn-id: https://openfoam-extend.svn.sourceforge.net/svnroot/openfoam-extend/trunk/Core/OpenFOAM-1.5-dev@1731 e4e07f05-0c2f-0410-a05a-b8ba57e0c909
125 lines
4 KiB
C
125 lines
4 KiB
C
Info<< nl << "Creating merge patch pairs" << nl << endl;
|
|
|
|
if (mergePatchPairs.size() > 0)
|
|
{
|
|
// Create and add point and face zones and mesh modifiers
|
|
List<pointZone*> pz(mergePatchPairs.size());
|
|
List<faceZone*> fz(3*mergePatchPairs.size());
|
|
List<cellZone*> cz(0);
|
|
|
|
forAll (mergePatchPairs, pairI)
|
|
{
|
|
const word mergeName
|
|
(
|
|
mergePatchPairs[pairI].first()
|
|
+ mergePatchPairs[pairI].second()
|
|
+ name(pairI)
|
|
);
|
|
|
|
pz[pairI] = new pointZone
|
|
(
|
|
mergeName + "CutPointZone",
|
|
labelList(0),
|
|
0,
|
|
mesh.pointZones()
|
|
);
|
|
|
|
// Master patch
|
|
const word masterPatchName(mergePatchPairs[pairI].first());
|
|
const polyPatch& masterPatch =
|
|
mesh.boundaryMesh()
|
|
[
|
|
mesh.boundaryMesh().findPatchID(masterPatchName)
|
|
];
|
|
|
|
labelList isf(masterPatch.size());
|
|
|
|
forAll (isf, i)
|
|
{
|
|
isf[i] = masterPatch.start() + i;
|
|
}
|
|
|
|
fz[3*pairI] = new faceZone
|
|
(
|
|
mergeName + "MasterZone",
|
|
isf,
|
|
boolList(masterPatch.size(), false),
|
|
0,
|
|
mesh.faceZones()
|
|
);
|
|
|
|
// Slave patch
|
|
const word slavePatchName(mergePatchPairs[pairI].second());
|
|
const polyPatch& slavePatch =
|
|
mesh.boundaryMesh()
|
|
[
|
|
mesh.boundaryMesh().findPatchID(slavePatchName)
|
|
];
|
|
|
|
labelList osf(slavePatch.size());
|
|
|
|
forAll (osf, i)
|
|
{
|
|
osf[i] = slavePatch.start() + i;
|
|
}
|
|
|
|
fz[3*pairI + 1] = new faceZone
|
|
(
|
|
mergeName + "SlaveZone",
|
|
osf,
|
|
boolList(slavePatch.size(), false),
|
|
1,
|
|
mesh.faceZones()
|
|
);
|
|
|
|
// Add empty zone for cut faces
|
|
fz[3*pairI + 2] = new faceZone
|
|
(
|
|
mergeName + "CutFaceZone",
|
|
labelList(0),
|
|
boolList(0, false),
|
|
2,
|
|
mesh.faceZones()
|
|
);
|
|
} // end of all merge pairs
|
|
|
|
Info << "Adding point and face zones" << endl;
|
|
mesh.addZones(pz, fz, cz);
|
|
|
|
|
|
Info << "Creating attachPolyTopoChanger" << endl;
|
|
attachPolyTopoChanger polyMeshAttacher(mesh);
|
|
polyMeshAttacher.setSize(mergePatchPairs.size());
|
|
|
|
forAll (mergePatchPairs, pairI)
|
|
{
|
|
const word mergeName
|
|
(
|
|
mergePatchPairs[pairI].first()
|
|
+ mergePatchPairs[pairI].second()
|
|
+ name(pairI)
|
|
);
|
|
|
|
// Add the sliding interface mesh modifier
|
|
polyMeshAttacher.set
|
|
(
|
|
pairI,
|
|
new slidingInterface
|
|
(
|
|
"couple" + name(pairI),
|
|
pairI,
|
|
polyMeshAttacher,
|
|
mergeName + "MasterZone",
|
|
mergeName + "SlaveZone",
|
|
mergeName + "CutPointZone",
|
|
mergeName + "CutFaceZone",
|
|
mergePatchPairs[pairI].first(),
|
|
mergePatchPairs[pairI].second(),
|
|
slidingInterface::INTEGRAL, // always integral
|
|
intersection::VISIBLE
|
|
)
|
|
);
|
|
}
|
|
|
|
polyMeshAttacher.attach(true);
|
|
}
|