mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: improved zone constructors
- constructor for empty cell/face/point Zones, with contents to be transferred in later. - ZoneMesh::operator(const word&) to return existing zone or a new empty one.
This commit is contained in:
@ -642,7 +642,7 @@ int main(int argc, char *argv[])
|
||||
(
|
||||
patchNames[patchi],
|
||||
bFaceLabels,
|
||||
boolList(bFaceLabels.size(), false),
|
||||
false, // none are flipped
|
||||
fz.size(),
|
||||
pShapeMesh.faceZones()
|
||||
)
|
||||
|
||||
@ -1156,7 +1156,6 @@ int main(int argc, char *argv[])
|
||||
new cellZone
|
||||
(
|
||||
name,
|
||||
labelList(0),
|
||||
cellZonei,
|
||||
mesh.cellZones()
|
||||
)
|
||||
@ -1186,8 +1185,6 @@ int main(int argc, char *argv[])
|
||||
new faceZone
|
||||
(
|
||||
name,
|
||||
labelList(0),
|
||||
boolList(0),
|
||||
faceZonei,
|
||||
mesh.faceZones()
|
||||
)
|
||||
|
||||
@ -1077,7 +1077,6 @@ int main(int argc, char *argv[])
|
||||
// Create new faces
|
||||
forAll(faces, facei)
|
||||
{
|
||||
|
||||
if (faces[facei].size() != 2)
|
||||
{
|
||||
FatalErrorInFunction
|
||||
@ -1660,7 +1659,7 @@ int main(int argc, char *argv[])
|
||||
(
|
||||
name,
|
||||
zoneFaces,
|
||||
boolList(zoneFaces.size(), false),
|
||||
false, // none are flipped
|
||||
cnt,
|
||||
pShapeMesh.faceZones()
|
||||
);
|
||||
|
||||
@ -1102,7 +1102,7 @@ int main(int argc, char *argv[])
|
||||
(
|
||||
zoneName,
|
||||
zoneFaces[zoneI],
|
||||
boolList(zoneFaces[zoneI].size(), true),
|
||||
true, // all are flipped
|
||||
nValidFaceZones,
|
||||
mesh.faceZones()
|
||||
);
|
||||
|
||||
@ -1282,7 +1282,7 @@ int main(int argc, char *argv[])
|
||||
(
|
||||
faceZones.toc()[cnt],
|
||||
indizes,
|
||||
boolList(indizes.size(),false),
|
||||
false, // none are flipped
|
||||
cnt,
|
||||
mesh.faceZones()
|
||||
);
|
||||
|
||||
@ -16,10 +16,10 @@
|
||||
+ name(pairI)
|
||||
);
|
||||
|
||||
// An empty zone for cut points
|
||||
pz[pairI] = new pointZone
|
||||
(
|
||||
mergeName + "CutPointZone",
|
||||
labelList(0),
|
||||
0,
|
||||
mesh.pointZones()
|
||||
);
|
||||
@ -40,7 +40,7 @@
|
||||
(
|
||||
mergeName + "MasterZone",
|
||||
isf,
|
||||
boolList(masterPatch.size(), false),
|
||||
false, // none are flipped
|
||||
0,
|
||||
mesh.faceZones()
|
||||
);
|
||||
@ -61,17 +61,15 @@
|
||||
(
|
||||
mergeName + "SlaveZone",
|
||||
osf,
|
||||
boolList(slavePatch.size(), false),
|
||||
false, // none are flipped
|
||||
1,
|
||||
mesh.faceZones()
|
||||
);
|
||||
|
||||
// Add empty zone for cut faces
|
||||
// An empty zone for cut faces
|
||||
fz[3*pairI + 2] = new faceZone
|
||||
(
|
||||
mergeName + "CutFaceZone",
|
||||
labelList(0),
|
||||
boolList(0, false),
|
||||
2,
|
||||
mesh.faceZones()
|
||||
);
|
||||
|
||||
@ -1026,7 +1026,7 @@ int main(int argc, char *argv[])
|
||||
(
|
||||
cutZoneName,
|
||||
frontPatchFaces,
|
||||
boolList(frontPatchFaces.size(), false),
|
||||
false, // none are flipped
|
||||
0,
|
||||
mesh.faceZones()
|
||||
)
|
||||
|
||||
@ -502,70 +502,58 @@ void Foam::mergePolyMesh::merge()
|
||||
// Add the zones if necessary
|
||||
if (pointZoneNames_.size() > pointZones().size())
|
||||
{
|
||||
Info<< "Adding new pointZones. " << endl;
|
||||
label nZones = pointZones().size();
|
||||
Info<< "Adding new pointZones." << endl;
|
||||
|
||||
pointZones().setSize(pointZoneNames_.size());
|
||||
label zonei = pointZones().size(); // continue from here
|
||||
|
||||
for (label zoneI = nZones; zoneI < pointZoneNames_.size(); zoneI++)
|
||||
const label nZones = pointZoneNames_.size();
|
||||
|
||||
pointZones().setSize(nZones);
|
||||
|
||||
for (/*nil*/; zonei < nZones; ++zonei)
|
||||
{
|
||||
pointZones().set
|
||||
(
|
||||
zoneI,
|
||||
new pointZone
|
||||
(
|
||||
pointZoneNames_[zoneI],
|
||||
labelList(),
|
||||
zoneI,
|
||||
pointZones()
|
||||
)
|
||||
zonei,
|
||||
new pointZone(pointZoneNames_[zonei], zonei, pointZones())
|
||||
);
|
||||
}
|
||||
}
|
||||
if (cellZoneNames_.size() > cellZones().size())
|
||||
{
|
||||
Info<< "Adding new cellZones. " << endl;
|
||||
Info<< "Adding new cellZones." << endl;
|
||||
|
||||
label nZones = cellZones().size();
|
||||
label zonei = cellZones().size(); // continue from here
|
||||
|
||||
const label nZones = cellZoneNames_.size();
|
||||
|
||||
cellZones().setSize(cellZoneNames_.size());
|
||||
|
||||
for (label zoneI = nZones; zoneI < cellZoneNames_.size(); zoneI++)
|
||||
for (/*nil*/; zonei < nZones; ++zonei)
|
||||
{
|
||||
cellZones().set
|
||||
(
|
||||
zoneI,
|
||||
new cellZone
|
||||
(
|
||||
cellZoneNames_[zoneI],
|
||||
labelList(),
|
||||
zoneI,
|
||||
cellZones()
|
||||
)
|
||||
zonei,
|
||||
new cellZone(cellZoneNames_[zonei], zonei, cellZones())
|
||||
);
|
||||
}
|
||||
}
|
||||
if (faceZoneNames_.size() > faceZones().size())
|
||||
{
|
||||
Info<< "Adding new faceZones. " << endl;
|
||||
Info<< "Adding new faceZones." << endl;
|
||||
|
||||
label nZones = faceZones().size();
|
||||
label zonei = faceZones().size(); // continue from here
|
||||
|
||||
faceZones().setSize(faceZoneNames_.size());
|
||||
const label nZones = faceZoneNames_.size();
|
||||
|
||||
for (label zoneI = nZones; zoneI < faceZoneNames_.size(); zoneI++)
|
||||
faceZones().setSize(nZones);
|
||||
|
||||
for (/*nil*/; zonei < nZones; ++zonei)
|
||||
{
|
||||
faceZones().set
|
||||
(
|
||||
zoneI,
|
||||
new faceZone
|
||||
(
|
||||
faceZoneNames_[zoneI],
|
||||
labelList(),
|
||||
boolList(),
|
||||
zoneI,
|
||||
faceZones()
|
||||
)
|
||||
zonei,
|
||||
new faceZone(faceZoneNames_[zonei], zonei, faceZones())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -113,36 +113,28 @@ int main(int argc, char *argv[])
|
||||
pointSet set(*iter());
|
||||
SortableList<label> pointLabels(set.toc());
|
||||
|
||||
label zoneID = mesh.pointZones().findZoneID(set.name());
|
||||
if (zoneID == -1)
|
||||
// The original number of zones
|
||||
const label nOrigZones = mesh.pointZones().size();
|
||||
|
||||
// Get existing or create new empty zone
|
||||
pointZone& zn = mesh.pointZones()(set.name());
|
||||
|
||||
if (nOrigZones == mesh.pointZones().size())
|
||||
{
|
||||
Info<< "Adding set " << set.name() << " as a pointZone." << endl;
|
||||
label sz = mesh.pointZones().size();
|
||||
mesh.pointZones().setSize(sz+1);
|
||||
mesh.pointZones().set
|
||||
(
|
||||
sz,
|
||||
new pointZone
|
||||
(
|
||||
set.name(), //name
|
||||
pointLabels, //addressing
|
||||
sz, //index
|
||||
mesh.pointZones() //pointZoneMesh
|
||||
)
|
||||
);
|
||||
mesh.pointZones().writeOpt() = IOobject::AUTO_WRITE;
|
||||
mesh.pointZones().instance() = mesh.facesInstance();
|
||||
Info<< "Overwriting contents of existing pointZone "
|
||||
<< zn.index()
|
||||
<< " with that of set " << set.name() << "." << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
Info<< "Overwriting contents of existing pointZone " << zoneID
|
||||
<< " with that of set " << set.name() << "." << endl;
|
||||
mesh.pointZones()[zoneID] = pointLabels;
|
||||
mesh.pointZones().writeOpt() = IOobject::AUTO_WRITE;
|
||||
mesh.pointZones().instance() = mesh.facesInstance();
|
||||
Info<< "Adding set " << set.name() << " as a pointZone." << endl;
|
||||
}
|
||||
}
|
||||
|
||||
zn = pointLabels;
|
||||
|
||||
mesh.pointZones().writeOpt() = IOobject::AUTO_WRITE;
|
||||
mesh.pointZones().instance() = mesh.facesInstance();
|
||||
}
|
||||
|
||||
|
||||
IOobjectList faceObjects(objects.lookupClass(faceSet::typeName));
|
||||
@ -244,39 +236,31 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
label zoneID = mesh.faceZones().findZoneID(set.name());
|
||||
if (zoneID == -1)
|
||||
// The original number of zones
|
||||
const label nOrigZones = mesh.faceZones().size();
|
||||
|
||||
// Get existing or create new empty zone
|
||||
faceZone& zn = mesh.faceZones()(set.name());
|
||||
|
||||
if (nOrigZones == mesh.faceZones().size())
|
||||
{
|
||||
Info<< "Adding set " << set.name() << " as a faceZone." << endl;
|
||||
label sz = mesh.faceZones().size();
|
||||
mesh.faceZones().setSize(sz+1);
|
||||
mesh.faceZones().set
|
||||
(
|
||||
sz,
|
||||
new faceZone
|
||||
(
|
||||
set.name(), //name
|
||||
addressing.shrink(), //addressing
|
||||
flipMap.shrink(), //flipmap
|
||||
sz, //index
|
||||
mesh.faceZones() //pointZoneMesh
|
||||
)
|
||||
);
|
||||
mesh.faceZones().writeOpt() = IOobject::AUTO_WRITE;
|
||||
mesh.faceZones().instance() = mesh.facesInstance();
|
||||
Info<< "Overwriting contents of existing faceZone "
|
||||
<< zn.index()
|
||||
<< " with that of set " << set.name() << "." << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
Info<< "Overwriting contents of existing faceZone " << zoneID
|
||||
<< " with that of set " << set.name() << "." << endl;
|
||||
mesh.faceZones()[zoneID].resetAddressing
|
||||
(
|
||||
addressing.shrink(),
|
||||
flipMap.shrink()
|
||||
);
|
||||
mesh.faceZones().writeOpt() = IOobject::AUTO_WRITE;
|
||||
mesh.faceZones().instance() = mesh.facesInstance();
|
||||
Info<< "Adding set " << set.name() << " as a faceZone." << endl;
|
||||
}
|
||||
|
||||
zn.resetAddressing
|
||||
(
|
||||
addressing.shrink(),
|
||||
flipMap.shrink()
|
||||
);
|
||||
|
||||
mesh.faceZones().writeOpt() = IOobject::AUTO_WRITE;
|
||||
mesh.faceZones().instance() = mesh.facesInstance();
|
||||
}
|
||||
|
||||
|
||||
@ -293,39 +277,30 @@ int main(int argc, char *argv[])
|
||||
cellSet set(*iter());
|
||||
SortableList<label> cellLabels(set.toc());
|
||||
|
||||
label zoneID = mesh.cellZones().findZoneID(set.name());
|
||||
if (zoneID == -1)
|
||||
// The original number of zones
|
||||
const label nOrigZones = mesh.cellZones().size();
|
||||
|
||||
cellZone& zn = mesh.cellZones()(set.name());
|
||||
|
||||
if (nOrigZones == mesh.cellZones().size())
|
||||
{
|
||||
Info<< "Adding set " << set.name() << " as a cellZone." << endl;
|
||||
label sz = mesh.cellZones().size();
|
||||
mesh.cellZones().setSize(sz+1);
|
||||
mesh.cellZones().set
|
||||
(
|
||||
sz,
|
||||
new cellZone
|
||||
(
|
||||
set.name(), //name
|
||||
cellLabels, //addressing
|
||||
sz, //index
|
||||
mesh.cellZones() //pointZoneMesh
|
||||
)
|
||||
);
|
||||
mesh.cellZones().writeOpt() = IOobject::AUTO_WRITE;
|
||||
mesh.cellZones().instance() = mesh.facesInstance();
|
||||
Info<< "Overwriting contents of existing cellZone "
|
||||
<< zn.index()
|
||||
<< " with that of set " << set.name() << "." << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
Info<< "Overwriting contents of existing cellZone " << zoneID
|
||||
<< " with that of set " << set.name() << "." << endl;
|
||||
mesh.cellZones()[zoneID] = cellLabels;
|
||||
mesh.cellZones().writeOpt() = IOobject::AUTO_WRITE;
|
||||
mesh.cellZones().instance() = mesh.facesInstance();
|
||||
Info<< "Adding set " << set.name() << " as a cellZone." << endl;
|
||||
}
|
||||
|
||||
zn = cellLabels;
|
||||
|
||||
mesh.cellZones().writeOpt() = IOobject::AUTO_WRITE;
|
||||
mesh.cellZones().instance() = mesh.facesInstance();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Info<< "Writing mesh." << endl;
|
||||
|
||||
if (!mesh.write())
|
||||
|
||||
@ -72,109 +72,8 @@ Description
|
||||
#include "IOobjectList.H"
|
||||
#include "ReadFields.H"
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
label addPointZone(polyMesh& mesh, const word& name)
|
||||
{
|
||||
pointZoneMesh& zones = mesh.pointZones();
|
||||
label zoneID = zones.findZoneID(name);
|
||||
|
||||
if (zoneID != -1)
|
||||
{
|
||||
Info<< "Reusing existing pointZone " << zones[zoneID].name()
|
||||
<< " at index " << zoneID << endl;
|
||||
|
||||
return zoneID;
|
||||
}
|
||||
|
||||
zoneID = zones.size();
|
||||
Info<< "Adding pointZone " << name << " at index " << zoneID << endl;
|
||||
|
||||
zones.setSize(zoneID+1);
|
||||
zones.set
|
||||
(
|
||||
zoneID,
|
||||
new pointZone
|
||||
(
|
||||
name,
|
||||
labelList(0),
|
||||
zoneID,
|
||||
zones
|
||||
)
|
||||
);
|
||||
|
||||
return zoneID;
|
||||
}
|
||||
|
||||
|
||||
label addFaceZone(polyMesh& mesh, const word& name)
|
||||
{
|
||||
faceZoneMesh& zones = mesh.faceZones();
|
||||
label zoneID = zones.findZoneID(name);
|
||||
|
||||
if (zoneID != -1)
|
||||
{
|
||||
Info<< "Reusing existing faceZone " << zones[zoneID].name()
|
||||
<< " at index " << zoneID << endl;
|
||||
|
||||
return zoneID;
|
||||
}
|
||||
|
||||
zoneID = zones.size();
|
||||
Info<< "Adding faceZone " << name << " at index " << zoneID << endl;
|
||||
|
||||
zones.setSize(zoneID+1);
|
||||
zones.set
|
||||
(
|
||||
zoneID,
|
||||
new faceZone
|
||||
(
|
||||
name,
|
||||
labelList(0),
|
||||
boolList(),
|
||||
zoneID,
|
||||
zones
|
||||
)
|
||||
);
|
||||
|
||||
return zoneID;
|
||||
}
|
||||
|
||||
|
||||
label addCellZone(polyMesh& mesh, const word& name)
|
||||
{
|
||||
cellZoneMesh& zones = mesh.cellZones();
|
||||
label zoneID = zones.findZoneID(name);
|
||||
|
||||
if (zoneID != -1)
|
||||
{
|
||||
Info<< "Reusing existing cellZone " << zones[zoneID].name()
|
||||
<< " at index " << zoneID << endl;
|
||||
|
||||
return zoneID;
|
||||
}
|
||||
|
||||
zoneID = zones.size();
|
||||
Info<< "Adding cellZone " << name << " at index " << zoneID << endl;
|
||||
|
||||
zones.setSize(zoneID+1);
|
||||
zones.set
|
||||
(
|
||||
zoneID,
|
||||
new cellZone
|
||||
(
|
||||
name,
|
||||
labelList(0),
|
||||
zoneID,
|
||||
zones
|
||||
)
|
||||
);
|
||||
|
||||
return zoneID;
|
||||
}
|
||||
|
||||
|
||||
// Checks whether patch present
|
||||
void checkPatch(const polyBoundaryMesh& bMesh, const word& name)
|
||||
{
|
||||
@ -198,7 +97,6 @@ void checkPatch(const polyBoundaryMesh& bMesh, const word& name)
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
argList::addNote
|
||||
@ -341,10 +239,12 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (perfectCover)
|
||||
{
|
||||
// Add empty zone for resulting internal faces
|
||||
const label cutZoneID = addFaceZone(mesh, cutZoneName);
|
||||
|
||||
mesh.faceZones()[cutZoneID].resetAddressing(isf.xfer(), false);
|
||||
// Starts as master zone, but receives the resulting internal faces
|
||||
mesh.faceZones()
|
||||
(
|
||||
cutZoneName,
|
||||
true // verbose
|
||||
).resetAddressing(isf.xfer(), false);
|
||||
|
||||
// Add the perfect interface mesh modifier
|
||||
stitcher.set
|
||||
@ -363,12 +263,19 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
label pointZoneID = addPointZone(mesh, mergePatchName + "CutPointZone");
|
||||
mesh.pointZones()[pointZoneID] = labelList(0);
|
||||
// An empty point zone
|
||||
mesh.pointZones()
|
||||
(
|
||||
mergePatchName + "CutPointZone",
|
||||
true // verbose
|
||||
) = labelList();
|
||||
|
||||
label masterZoneID = addFaceZone(mesh, mergePatchName + "MasterZone");
|
||||
|
||||
mesh.faceZones()[masterZoneID].resetAddressing(isf.xfer(), false);
|
||||
// The master zone
|
||||
mesh.faceZones()
|
||||
(
|
||||
mergePatchName + "MasterZone",
|
||||
true // verbose
|
||||
).resetAddressing(isf.xfer(), false);
|
||||
|
||||
// Slave patch
|
||||
const polyPatch& slavePatch = mesh.boundaryMesh()[slavePatchName];
|
||||
@ -380,12 +287,18 @@ int main(int argc, char *argv[])
|
||||
osf[i] = slavePatch.start() + i;
|
||||
}
|
||||
|
||||
label slaveZoneID = addFaceZone(mesh, mergePatchName + "SlaveZone");
|
||||
mesh.faceZones()[slaveZoneID].resetAddressing(osf.xfer(), false);
|
||||
mesh.faceZones()
|
||||
(
|
||||
mergePatchName + "SlaveZone",
|
||||
true // verbose
|
||||
).resetAddressing(osf.xfer(), false);
|
||||
|
||||
// Add empty zone for cut faces
|
||||
const label cutZoneID = addFaceZone(mesh, cutZoneName);
|
||||
mesh.faceZones()[cutZoneID].resetAddressing(labelList(0), false);
|
||||
// An empty zone for cut faces
|
||||
mesh.faceZones()
|
||||
(
|
||||
cutZoneName,
|
||||
true // verbose
|
||||
).resetAddressing(labelList(), false);
|
||||
|
||||
|
||||
// Add the sliding interface mesh modifier
|
||||
|
||||
Reference in New Issue
Block a user