- Cleanup/centralize handling of -decomposeParDict by relocating common code into argList. Ensures that all processes receive identical information about the -decomposeParDict opton. - Only use alternative decomposeParDict for simpleFoam/motorBike tutorial so that this will be included in the test loop for snappy. - Added Mattijs' fix for surfaceRedistributePar.
This commit is contained in:
parent
196a4ea4e5
commit
52d0289ee1
@ -107,16 +107,12 @@ int main(int argc, char *argv[])
|
||||
fileName dictPath;
|
||||
|
||||
// Check if the dictionary is specified on the command-line
|
||||
if (args.optionFound("dict"))
|
||||
if (args.optionReadIfPresent("dict", dictPath))
|
||||
{
|
||||
dictPath = args["dict"];
|
||||
|
||||
dictPath =
|
||||
(
|
||||
isDir(dictPath)
|
||||
? dictPath/dictName
|
||||
: dictPath
|
||||
);
|
||||
if (isDir(dictPath))
|
||||
{
|
||||
dictPath = dictPath / dictName;
|
||||
}
|
||||
}
|
||||
// Check if dictionary is present in the constant directory
|
||||
else if
|
||||
|
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -67,14 +67,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
// Allow override of decomposeParDict location
|
||||
fileName decompDictFile;
|
||||
if (args.optionReadIfPresent("decomposeParDict", decompDictFile))
|
||||
{
|
||||
if (isDir(decompDictFile))
|
||||
{
|
||||
decompDictFile = decompDictFile / "decomposeParDict";
|
||||
}
|
||||
}
|
||||
|
||||
args.optionReadIfPresent("decomposeParDict", decompDictFile);
|
||||
|
||||
IOdictionary foamyHexMeshDict
|
||||
(
|
||||
|
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -524,13 +524,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
// Allow override of decomposeParDict location
|
||||
fileName decompDictFile;
|
||||
if (args.optionReadIfPresent("decomposeParDict", decompDictFile))
|
||||
{
|
||||
if (isDir(decompDictFile))
|
||||
{
|
||||
decompDictFile = decompDictFile / "decomposeParDict";
|
||||
}
|
||||
}
|
||||
args.optionReadIfPresent("decomposeParDict", decompDictFile);
|
||||
|
||||
labelList decomp = decompositionModel::New
|
||||
(
|
||||
|
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright 2015-2016 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -837,13 +837,7 @@ int main(int argc, char *argv[])
|
||||
if (Pstream::parRun())
|
||||
{
|
||||
fileName decompDictFile;
|
||||
if (args.optionReadIfPresent("decomposeParDict", decompDictFile))
|
||||
{
|
||||
if (isDir(decompDictFile))
|
||||
{
|
||||
decompDictFile = decompDictFile/"decomposeParDict";
|
||||
}
|
||||
}
|
||||
args.optionReadIfPresent("decomposeParDict", decompDictFile);
|
||||
|
||||
decomposeDict = IOdictionary
|
||||
(
|
||||
|
@ -211,14 +211,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
// Allow override of decomposeParDict location
|
||||
fileName decompDictFile;
|
||||
if (args.optionReadIfPresent("decomposeParDict", decompDictFile))
|
||||
{
|
||||
if (isDir(decompDictFile))
|
||||
{
|
||||
decompDictFile = decompDictFile/"decomposeParDict";
|
||||
}
|
||||
}
|
||||
|
||||
args.optionReadIfPresent("decomposeParDict", decompDictFile);
|
||||
|
||||
wordList regionNames;
|
||||
wordList regionDirs;
|
||||
@ -301,7 +294,6 @@ int main(int argc, char *argv[])
|
||||
),
|
||||
decompDictFile
|
||||
)
|
||||
|
||||
).lookup("numberOfSubdomains")
|
||||
);
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -64,6 +64,7 @@ Usage
|
||||
#include "fvMeshTools.H"
|
||||
#include "fvMeshDistribute.H"
|
||||
#include "decompositionMethod.H"
|
||||
#include "decompositionModel.H"
|
||||
#include "timeSelector.H"
|
||||
#include "PstreamReduceOps.H"
|
||||
#include "volFields.H"
|
||||
@ -74,7 +75,6 @@ Usage
|
||||
#include "loadOrCreateMesh.H"
|
||||
#include "processorFvPatchField.H"
|
||||
#include "zeroGradientFvPatchFields.H"
|
||||
#include "decompositionModel.H"
|
||||
|
||||
#include "parFvFieldReconstructor.H"
|
||||
#include "parLagrangianRedistributor.H"
|
||||
@ -2153,7 +2153,6 @@ int main(int argc, char *argv[])
|
||||
bool newTimes = args.optionFound("newTimes");
|
||||
|
||||
|
||||
|
||||
if (env("FOAM_SIGFPE"))
|
||||
{
|
||||
WarningInFunction
|
||||
@ -2246,8 +2245,6 @@ int main(int argc, char *argv[])
|
||||
Pstream::scatter(decompose);
|
||||
|
||||
|
||||
|
||||
|
||||
// If running distributed we have problem of new processors not finding
|
||||
// a system/controlDict. However if we switch on the master-only reading
|
||||
// the problem becomes that the time directories are differing sizes and
|
||||
@ -2331,7 +2328,6 @@ int main(int argc, char *argv[])
|
||||
// Determine any region
|
||||
word regionName = polyMesh::defaultRegion;
|
||||
fileName meshSubDir;
|
||||
|
||||
if (args.optionReadIfPresent("region", regionName))
|
||||
{
|
||||
meshSubDir = regionName/polyMesh::meshSubDir;
|
||||
@ -2775,13 +2771,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
// Allow override of decomposeParDict location
|
||||
fileName decompDictFile;
|
||||
if (args.optionReadIfPresent("decomposeParDict", decompDictFile))
|
||||
{
|
||||
if (isDir(decompDictFile))
|
||||
{
|
||||
decompDictFile = decompDictFile / "decomposeParDict";
|
||||
}
|
||||
}
|
||||
args.optionReadIfPresent("decomposeParDict", decompDictFile);
|
||||
|
||||
|
||||
// Determine decomposition
|
||||
|
@ -51,13 +51,11 @@ int readNumProcs
|
||||
const Time& runTime
|
||||
)
|
||||
{
|
||||
const word dictName = "decomposeParDict";
|
||||
fileName dictFile;
|
||||
if (args.optionReadIfPresent(optionName, dictFile))
|
||||
if (args.optionReadIfPresent(optionName, dictFile) && isDir(dictFile))
|
||||
{
|
||||
if (isDir(dictFile))
|
||||
{
|
||||
dictFile = dictFile/"decomposeParDict";
|
||||
}
|
||||
dictFile = dictFile / dictName;
|
||||
}
|
||||
|
||||
return readInt
|
||||
@ -68,7 +66,7 @@ int readNumProcs
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"decomposeParDict",
|
||||
dictName,
|
||||
runTime.system(),
|
||||
runTime,
|
||||
IOobject::MUST_READ_IF_MODIFIED,
|
||||
@ -376,7 +374,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (parallelSource && !parallelTarget)
|
||||
{
|
||||
int nProcs = readNumProcs
|
||||
const int nProcs = readNumProcs
|
||||
(
|
||||
args,
|
||||
"sourceDecomposeParDict",
|
||||
@ -448,7 +446,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
else if (!parallelSource && parallelTarget)
|
||||
{
|
||||
int nProcs = readNumProcs
|
||||
const int nProcs = readNumProcs
|
||||
(
|
||||
args,
|
||||
"targetDecomposeParDict",
|
||||
@ -521,13 +519,13 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
else if (parallelSource && parallelTarget)
|
||||
{
|
||||
int nProcsSource = readNumProcs
|
||||
const int nProcsSource = readNumProcs
|
||||
(
|
||||
args,
|
||||
"sourceDecomposeParDict",
|
||||
runTimeSource
|
||||
);
|
||||
int nProcsTarget = readNumProcs
|
||||
const int nProcsTarget = readNumProcs
|
||||
(
|
||||
args,
|
||||
"targetDecomposeParDict",
|
||||
|
@ -156,14 +156,10 @@ int main(int argc, char *argv[])
|
||||
// Note: cannot use setSystemRunTimeDictionaryIO.H since dictionary
|
||||
// is in constant
|
||||
|
||||
fileName dictPath = "";
|
||||
if (args.optionFound("dict"))
|
||||
fileName dictPath;
|
||||
if (args.optionReadIfPresent("dict", dictPath) && isDir(dictPath))
|
||||
{
|
||||
dictPath = args["dict"];
|
||||
if (isDir(dictPath))
|
||||
{
|
||||
dictPath = dictPath / dictName;
|
||||
}
|
||||
dictPath = dictPath / dictName;
|
||||
}
|
||||
|
||||
if (dictPath.size())
|
||||
|
@ -1,9 +1,12 @@
|
||||
EXE_INC = \
|
||||
-I$(LIB_SRC)/triSurface/lnInclude \
|
||||
-I$(LIB_SRC)/meshTools/lnInclude \
|
||||
-I$(LIB_SRC)/parallel/decompose/decompositionMethods/lnInclude \
|
||||
-I$(LIB_SRC)/parallel/decompose/decompose/lnInclude \
|
||||
-I$(LIB_SRC)/parallel/distributed/lnInclude
|
||||
|
||||
EXE_LIBS = \
|
||||
-ldistributed \
|
||||
-lmeshTools \
|
||||
-ltriSurface
|
||||
-ltriSurface \
|
||||
-ldecompose
|
||||
|
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -46,6 +46,7 @@ Note
|
||||
#include "distributedTriSurfaceMesh.H"
|
||||
#include "mapDistribute.H"
|
||||
#include "localIOdictionary.H"
|
||||
#include "decompositionModel.H"
|
||||
|
||||
using namespace Foam;
|
||||
|
||||
@ -103,7 +104,8 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
argList::addNote
|
||||
(
|
||||
"redistribute a triSurface"
|
||||
"Redistribute a triSurface. "
|
||||
"The specified surface must be located in the constant/triSurface directory"
|
||||
);
|
||||
|
||||
argList::validArgs.append("triSurfaceMesh");
|
||||
@ -127,7 +129,7 @@ int main(int argc, char *argv[])
|
||||
<< "Using distribution method "
|
||||
<< distTypeName << nl << endl;
|
||||
|
||||
const bool keepNonMapped = args.options().found("keepNonMapped");
|
||||
const bool keepNonMapped = args.optionFound("keepNonMapped");
|
||||
|
||||
if (keepNonMapped)
|
||||
{
|
||||
@ -151,6 +153,37 @@ int main(int argc, char *argv[])
|
||||
|
||||
Random rndGen(653213);
|
||||
|
||||
// For independent decomposition, ensure that distributedTriSurfaceMesh
|
||||
// can find the alternative decomposeParDict specified via the
|
||||
// -decomposeParDict option.
|
||||
if (distType == distributedTriSurfaceMesh::INDEPENDENT)
|
||||
{
|
||||
fileName decompDictFile;
|
||||
args.optionReadIfPresent("decomposeParDict", decompDictFile);
|
||||
|
||||
IOdictionary* dict = new IOdictionary
|
||||
(
|
||||
decompositionModel::selectIO
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"decomposeParDict",
|
||||
runTime.system(),
|
||||
runTime,
|
||||
IOobject::MUST_READ_IF_MODIFIED,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
decompDictFile
|
||||
)
|
||||
);
|
||||
|
||||
// The object must have the expected "decomposeParDict" name.
|
||||
// This also implies that it cannot be changed during the run.
|
||||
dict->rename("decomposeParDict");
|
||||
|
||||
runTime.store(dict);
|
||||
}
|
||||
|
||||
// Determine mesh bounding boxes:
|
||||
List<List<treeBoundBox>> meshBb(Pstream::nProcs());
|
||||
if (distType == distributedTriSurfaceMesh::FOLLOW)
|
||||
|
@ -2,8 +2,8 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -600,10 +600,29 @@ void Foam::argList::parse
|
||||
// establish rootPath_/globalCase_/case_ for master
|
||||
getRootCase();
|
||||
|
||||
// See if running distributed (different roots for different procs)
|
||||
label dictNProcs = -1;
|
||||
fileName source;
|
||||
// Establish location of decomposeParDict, allow override with
|
||||
// the -decomposeParDict option.
|
||||
fileName source = rootPath_/globalCase_/"system"/"decomposeParDict";
|
||||
if (options_.found("decomposeParDict"))
|
||||
{
|
||||
bool adjustOpt = false;
|
||||
|
||||
source = options_["decomposeParDict"];
|
||||
if (isDir(source))
|
||||
{
|
||||
adjustOpt = true;
|
||||
source = source/"decomposeParDict";
|
||||
}
|
||||
// Could also check for absolute path, but shouldn't be needed
|
||||
if (adjustOpt)
|
||||
{
|
||||
source.clean();
|
||||
options_.set("decomposeParDict", source);
|
||||
}
|
||||
}
|
||||
|
||||
// If running distributed (different roots for different procs)
|
||||
label dictNProcs = -1;
|
||||
if (options_.found("roots"))
|
||||
{
|
||||
source = "-roots";
|
||||
@ -617,16 +636,8 @@ void Foam::argList::parse
|
||||
}
|
||||
else
|
||||
{
|
||||
source = rootPath_/globalCase_/"system"/"decomposeParDict";
|
||||
// Override with -decomposeParDict
|
||||
if (options_.found("decomposeParDict"))
|
||||
{
|
||||
source = options_["decomposeParDict"];
|
||||
if (isDir(source))
|
||||
{
|
||||
source = source/"decomposeParDict";
|
||||
}
|
||||
}
|
||||
// Use values from decomposeParDict, the location was already
|
||||
// established above.
|
||||
|
||||
IFstream decompDictStream(source);
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
fileName dictPath = "";
|
||||
if (args.optionFound("dict"))
|
||||
fileName dictPath;
|
||||
if (args.optionReadIfPresent("dict", dictPath))
|
||||
{
|
||||
dictPath = args["dict"];
|
||||
if (isDir(dictPath))
|
||||
{
|
||||
dictPath = dictPath / dictName;
|
||||
|
@ -1,7 +1,6 @@
|
||||
fileName dictPath = "";
|
||||
if (args.optionFound("dict"))
|
||||
fileName dictPath;
|
||||
if (args.optionReadIfPresent("dict", dictPath))
|
||||
{
|
||||
dictPath = args["dict"];
|
||||
if (isDir(dictPath))
|
||||
{
|
||||
dictPath = dictPath / dictName;
|
||||
|
@ -1,7 +1,6 @@
|
||||
fileName dictPath = "";
|
||||
if (args.optionFound("dict"))
|
||||
fileName dictPath;
|
||||
if (args.optionReadIfPresent("dict", dictPath))
|
||||
{
|
||||
dictPath = args["dict"];
|
||||
if (isDir(dictPath))
|
||||
{
|
||||
dictPath = dictPath / dictName;
|
||||
|
@ -4,14 +4,16 @@ cd ${0%/*} || exit 1 # Run from this directory
|
||||
# Source tutorial run functions
|
||||
. $WM_PROJECT_DIR/bin/tools/RunFunctions
|
||||
|
||||
decompDict="-decomposeParDict system/decomposeParDict.6"
|
||||
|
||||
# copy motorbike surface from resources directory
|
||||
\cp $FOAM_TUTORIALS/resources/geometry/motorBike.obj.gz constant/triSurface/
|
||||
runApplication surfaceFeatureExtract
|
||||
|
||||
runApplication blockMesh
|
||||
|
||||
runApplication decomposePar
|
||||
runParallel snappyHexMesh -overwrite
|
||||
runApplication decomposePar $decompDict
|
||||
runParallel $decompDict snappyHexMesh -overwrite
|
||||
|
||||
#- For non-parallel running: - set the initial fields
|
||||
# restore0Dir
|
||||
@ -19,9 +21,9 @@ runParallel snappyHexMesh -overwrite
|
||||
#- For parallel running: set the initial fields
|
||||
restore0Dir -processor
|
||||
|
||||
runParallel patchSummary
|
||||
runParallel potentialFoam
|
||||
runParallel $(getApplication)
|
||||
runParallel $decompDict patchSummary
|
||||
runParallel $decompDict potentialFoam
|
||||
runParallel $decompDict $(getApplication)
|
||||
|
||||
runApplication reconstructParMesh -constant
|
||||
runApplication reconstructPar -latestTime
|
||||
|
@ -28,7 +28,7 @@ simpleCoeffs
|
||||
|
||||
hierarchicalCoeffs
|
||||
{
|
||||
n (3 2 1);
|
||||
n (2 2 1);
|
||||
delta 0.001;
|
||||
order xyz;
|
||||
}
|
Loading…
Reference in New Issue
Block a user