Commit 27888bf7 authored by Andrew Heather's avatar Andrew Heather
Browse files

ENH: Updated mechanism to create empty sets and zones

parent 34606f54
......@@ -29,6 +29,18 @@ License
#include "stringListOps.H"
#include "Pstream.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace Foam
{
template<class ZoneType, class MeshType>
int Foam::ZoneMesh<ZoneType, MeshType>::disallowGenericZones
(
debug::debugSwitch("disallowGenericZones", 0)
);
}
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
template<class ZoneType, class MeshType>
......@@ -429,8 +441,40 @@ Foam::label Foam::ZoneMesh<ZoneType, MeshType>::findZoneID
<< "List of available zone names: " << names() << endl;
}
// Not found
return -1;
if (disallowGenericZones != 0)
{
// Create a new ...
Info<< "Creating dummy zone " << zoneName << endl;
dictionary dict;
dict.set("type", ZoneType::typeName);
dict.set(ZoneType::labelsName, labelList());
// flipMap only really applicable for face zones, but should not get
// in the way for cell- and point-zones...
dict.set("flipMap", boolList());
label newZonei = zones.size();
ZoneMesh<ZoneType, MeshType>& zm =
const_cast<ZoneMesh<ZoneType, MeshType>&>(*this);
zm.append
(
new ZoneType
(
zoneName,
dict,
newZonei,
zm
)
);
return newZonei;
}
else
{
// Not found
return -1;
}
}
......
......@@ -102,6 +102,10 @@ class ZoneMesh
public:
//- Debug switch to disallow the use of generic zones
static int disallowGenericZones;
// Constructors
//- Read constructor given IOobject and a MeshType reference
......
......@@ -37,6 +37,11 @@ namespace Foam
defineRunTimeSelectionTable(topoSet, word);
defineRunTimeSelectionTable(topoSet, size);
defineRunTimeSelectionTable(topoSet, set);
int Foam::topoSet::disallowGenericSets
(
debug::debugSwitch("disallowGenericSets", 0)
);
}
......@@ -297,14 +302,14 @@ Foam::IOobject Foam::topoSet::findIOobject
writeOption w
)
{
return IOobject
IOobject io
(
name,
mesh.time().findInstance
(
mesh.dbDir()/polyMesh::meshSubDir/"sets",
word::null,
r,
IOobject::READ_IF_PRESENT,
mesh.facesInstance()
),
polyMesh::meshSubDir/"sets",
......@@ -312,6 +317,14 @@ Foam::IOobject Foam::topoSet::findIOobject
r,
w
);
if (!io.typeHeaderOk<topoSet>(false) && disallowGenericSets != 0)
{
DebugInfo<< "Setting no read for set " << name << endl;
io.readOpt() = IOobject::NO_READ;
}
return io;
}
......
......@@ -142,6 +142,9 @@ public:
//- Name of file set will use.
static fileName localPath(const polyMesh& mesh, const word& name);
//- Debug switch to disallow the use of generic sets
static int disallowGenericSets;
// Declare run-time constructor selection table
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment