ENH: multi-region support for reconstructParMesh (#2072)

This commit is contained in:
Mark Olesen 2021-06-11 14:47:16 +02:00
parent 620fe96c02
commit ae02a86562
4 changed files with 651 additions and 514 deletions

View File

@ -71,7 +71,6 @@ int main(int argc, char *argv[])
#include "setRootCase.H"
const auto decompFile = args.get<fileName>(1);
const bool region = args.found("region");
const bool verbose = args.found("verbose");
// Set time from database
@ -87,23 +86,17 @@ int main(int argc, char *argv[])
// Get region names
#include "getAllRegionOptions.H"
wordList regionDirs(regionNames);
if (regionDirs.size() == 1 && regionDirs[0] == polyMesh::defaultRegion)
{
regionDirs[0].clear();
}
else
{
Info<< "Decomposing regions: "
<< flatOutput(regionNames) << nl << endl;
}
labelList cellToProc;
forAll(regionNames, regioni)
{
const word& regionName = regionNames[regioni];
const word& regionDir = regionDirs[regioni];
// const word& regionDir =
// (
// regionName != polyMesh::defaultRegion
// ? regionName
// : word::null
// );
Info<< "\n\nDecomposing mesh " << regionName << nl << endl;
Info<< "Create mesh..." << flush;

View File

@ -52,7 +52,7 @@ void Foam::domainDecomposition::writeVolField
false
),
this->mesh(),
dimensionedScalar("cellDist", dimless, -1),
dimensionedScalar(dimless, Zero),
zeroGradientFvPatchScalarField::typeName
);

View File

@ -167,28 +167,34 @@ int main(int argc, char *argv[])
<< nl << endl;
}
const bool newTimes = args.found("newTimes");
const bool newTimes = args.found("newTimes");
// Get region names
#include "getAllRegionOptions.H"
wordList regionDirs(regionNames);
// Determine the processor count
label nProcs{0};
if (regionNames.size() == 1)
if (regionNames.empty())
{
if (regionNames[0] == polyMesh::defaultRegion)
{
regionDirs[0].clear();
}
else
FatalErrorInFunction
<< "No regions specified or detected."
<< exit(FatalError);
}
else if (regionNames[0] == polyMesh::defaultRegion)
{
nProcs = fileHandler().nProcs(args.path());
}
else
{
nProcs = fileHandler().nProcs(args.path(), regionNames[0]);
if (regionNames.size() == 1)
{
Info<< "Using region: " << regionNames[0] << nl << endl;
}
}
// Determine the processor count
label nProcs = fileHandler().nProcs(args.path(), regionDirs[0]);
if (!nProcs)
{
FatalErrorInFunction
@ -261,16 +267,21 @@ int main(int argc, char *argv[])
forAll(regionNames, regioni)
{
const word& regionName = regionNames[regioni];
const word& regionDir = regionDirs[regioni];
const word& regionDir =
(
regionName != polyMesh::defaultRegion
? regionName
: word::null
);
Info<< "\n\nReconstructing fields for mesh " << regionName << nl
<< endl;
Info<< "\n\nReconstructing fields" << nl
<< "region=" << regionName << nl << endl;
if
(
newTimes
&& regionNames.size() == 1
&& regionDirs[0].empty()
&& regionDir.empty()
&& haveAllTimes(masterTimeDirSet, timeDirs)
)
{