mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
dumping redistributed surfaces
This commit is contained in:
@ -230,7 +230,7 @@ Foam::autoHexMeshDriver::autoHexMeshDriver
|
|||||||
IOobject
|
IOobject
|
||||||
(
|
(
|
||||||
"abc", // dummy name
|
"abc", // dummy name
|
||||||
mesh_.time().constant(), // directory
|
mesh_.time().timeName(), // directory
|
||||||
"triSurface", // instance
|
"triSurface", // instance
|
||||||
mesh_.time(), // registry
|
mesh_.time(), // registry
|
||||||
IOobject::MUST_READ,
|
IOobject::MUST_READ,
|
||||||
|
|||||||
@ -242,6 +242,8 @@ Foam::label Foam::autoRefineDriver::surfaceOnlyRefine
|
|||||||
// Only look at surface intersections (minLevel and surface curvature),
|
// Only look at surface intersections (minLevel and surface curvature),
|
||||||
// do not do internal refinement (refinementShells)
|
// do not do internal refinement (refinementShells)
|
||||||
|
|
||||||
|
const PtrList<featureEdgeMesh> dummyFeatures;
|
||||||
|
|
||||||
labelList candidateCells
|
labelList candidateCells
|
||||||
(
|
(
|
||||||
meshRefiner_.refineCandidates
|
meshRefiner_.refineCandidates
|
||||||
@ -249,8 +251,8 @@ Foam::label Foam::autoRefineDriver::surfaceOnlyRefine
|
|||||||
refineParams.keepPoints()[0],
|
refineParams.keepPoints()[0],
|
||||||
refineParams.curvature(),
|
refineParams.curvature(),
|
||||||
|
|
||||||
PtrList<featureEdgeMesh>(), // dummy featureMeshes;
|
dummyFeatures, // dummy featureMeshes;
|
||||||
labelList(0), // dummy featureLevels;
|
labelList(0), // dummy featureLevels;
|
||||||
|
|
||||||
false, // featureRefinement
|
false, // featureRefinement
|
||||||
false, // internalRefinement
|
false, // internalRefinement
|
||||||
@ -383,6 +385,8 @@ Foam::label Foam::autoRefineDriver::shellRefine
|
|||||||
<< "----------------------------" << nl
|
<< "----------------------------" << nl
|
||||||
<< endl;
|
<< endl;
|
||||||
|
|
||||||
|
const PtrList<featureEdgeMesh> dummyFeatures;
|
||||||
|
|
||||||
labelList candidateCells
|
labelList candidateCells
|
||||||
(
|
(
|
||||||
meshRefiner_.refineCandidates
|
meshRefiner_.refineCandidates
|
||||||
@ -390,8 +394,8 @@ Foam::label Foam::autoRefineDriver::shellRefine
|
|||||||
refineParams.keepPoints()[0],
|
refineParams.keepPoints()[0],
|
||||||
refineParams.curvature(),
|
refineParams.curvature(),
|
||||||
|
|
||||||
PtrList<featureEdgeMesh>(), // dummy featureMeshes;
|
dummyFeatures, // dummy featureMeshes;
|
||||||
labelList(0), // dummy featureLevels;
|
labelList(0), // dummy featureLevels;
|
||||||
|
|
||||||
false, // featureRefinement
|
false, // featureRefinement
|
||||||
true, // internalRefinement
|
true, // internalRefinement
|
||||||
|
|||||||
@ -1776,6 +1776,13 @@ void Foam::meshRefinement::distribute(const mapDistributePolyMesh& map)
|
|||||||
faceMap,
|
faceMap,
|
||||||
pointMap
|
pointMap
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (faceMap.valid())
|
||||||
|
{
|
||||||
|
// (ab)use the instance() to signal current modification time
|
||||||
|
geometry[i].instance() = geometry[i].time().timeName();
|
||||||
|
}
|
||||||
|
|
||||||
faceMap.clear();
|
faceMap.clear();
|
||||||
pointMap.clear();
|
pointMap.clear();
|
||||||
}
|
}
|
||||||
@ -1914,6 +1921,34 @@ bool Foam::meshRefinement::write() const
|
|||||||
&& meshCutter_.write()
|
&& meshCutter_.write()
|
||||||
&& surfaceIndex_.write();
|
&& surfaceIndex_.write();
|
||||||
|
|
||||||
|
|
||||||
|
// Make sure that any distributed surfaces (so ones which probably have
|
||||||
|
// been changed) get written as well.
|
||||||
|
// Note: should ideally have some 'modified' flag to say whether it
|
||||||
|
// has been changed or not.
|
||||||
|
searchableSurfaces& geometry =
|
||||||
|
const_cast<searchableSurfaces&>(surfaces_.geometry());
|
||||||
|
|
||||||
|
forAll(geometry, i)
|
||||||
|
{
|
||||||
|
searchableSurface& s = geometry[i];
|
||||||
|
|
||||||
|
// Check if instance() of surface is not constant or system.
|
||||||
|
// Is good hint that surface is distributed.
|
||||||
|
if
|
||||||
|
(
|
||||||
|
s.instance() != s.time().system()
|
||||||
|
&& s.instance() != s.time().caseSystem()
|
||||||
|
&& s.instance() != s.time().constant()
|
||||||
|
&& s.instance() != s.time().caseConstant()
|
||||||
|
)
|
||||||
|
{
|
||||||
|
// Make sure it gets written to current time, not constant.
|
||||||
|
s.instance() = s.time().timeName();
|
||||||
|
writeOk = writeOk && s.write();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return writeOk;
|
return writeOk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1904,6 +1904,7 @@ void Foam::distributedTriSurfaceMesh::distribute
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
dict_.set("bounds", procBb_[Pstream::myProcNo()]);
|
||||||
procBb_.transfer(newProcBb);
|
procBb_.transfer(newProcBb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user