mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: improved argList handling of libs, functionObjects
- include -no-libs option by default, similar to '-lib',
which makes it available to all solvers/utilities.
Add argList allowLibs() method to query it.
- relocate with/no functionObjects logic from Time to argList
itself as argList allowFunctionObjects()
- add libs/functionObjects override handling to decomposePar etc
ENH: report the stream relativeName for IOerrors (see c9333a5ac8)
This commit is contained in:
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2020-2021 OpenCFD Ltd.
|
Copyright (C) 2020-2022 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -46,8 +46,8 @@ int main(int argc, char *argv[])
|
|||||||
profiling::disable(); // No profiling output
|
profiling::disable(); // No profiling output
|
||||||
argList::noBanner();
|
argList::noBanner();
|
||||||
argList::noParallel();
|
argList::noParallel();
|
||||||
|
argList::noFunctionObjects();
|
||||||
argList::removeOption("case");
|
argList::removeOption("case");
|
||||||
argList::removeOption("noFunctionObjects");
|
|
||||||
argList::addBoolOption("no-close", "Skip dlclose");
|
argList::addBoolOption("no-close", "Skip dlclose");
|
||||||
argList::addBoolOption("quiet", "Disable verbosity");
|
argList::addBoolOption("quiet", "Disable verbosity");
|
||||||
|
|
||||||
|
|||||||
@ -63,7 +63,6 @@ int main(int argc, char *argv[])
|
|||||||
argList::addNote("Test timeSelector and TimePaths");
|
argList::addNote("Test timeSelector and TimePaths");
|
||||||
|
|
||||||
timeSelector::addOptions(true, true);
|
timeSelector::addOptions(true, true);
|
||||||
argList::noLibs();
|
|
||||||
argList::noFunctionObjects();
|
argList::noFunctionObjects();
|
||||||
|
|
||||||
argList::addOption("relative", "PATH", "Test relativePath");
|
argList::addOption("relative", "PATH", "Test relativePath");
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2020-2021 OpenCFD Ltd.
|
Copyright (C) 2020-2022 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -65,8 +65,8 @@ int main(int argc, char *argv[])
|
|||||||
profiling::disable(); // No profiling output
|
profiling::disable(); // No profiling output
|
||||||
argList::noBanner();
|
argList::noBanner();
|
||||||
argList::noParallel();
|
argList::noParallel();
|
||||||
|
argList::noFunctionObjects();
|
||||||
argList::removeOption("case");
|
argList::removeOption("case");
|
||||||
argList::removeOption("noFunctionObjects");
|
|
||||||
argList::addBoolOption
|
argList::addBoolOption
|
||||||
(
|
(
|
||||||
"or",
|
"or",
|
||||||
|
|||||||
@ -1014,7 +1014,9 @@ int main(int argc, char *argv[])
|
|||||||
Time::controlDictName,
|
Time::controlDictName,
|
||||||
args.rootPath(),
|
args.rootPath(),
|
||||||
args.caseName()
|
args.caseName()
|
||||||
/ ("processor" + Foam::name(proci))
|
/ ("processor" + Foam::name(proci)),
|
||||||
|
args.allowFunctionObjects(),
|
||||||
|
args.allowLibs()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -244,7 +244,9 @@ int main(int argc, char *argv[])
|
|||||||
(
|
(
|
||||||
Time::controlDictName,
|
Time::controlDictName,
|
||||||
args.rootPath(),
|
args.rootPath(),
|
||||||
args.caseName()/("processor" + Foam::name(proci))
|
args.caseName()/("processor" + Foam::name(proci)),
|
||||||
|
args.allowFunctionObjects(),
|
||||||
|
args.allowLibs()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -731,7 +731,9 @@ int main(int argc, char *argv[])
|
|||||||
(
|
(
|
||||||
Time::controlDictName,
|
Time::controlDictName,
|
||||||
args.rootPath(),
|
args.rootPath(),
|
||||||
args.caseName()/("processor" + Foam::name(proci))
|
args.caseName()/("processor" + Foam::name(proci)),
|
||||||
|
args.allowFunctionObjects(),
|
||||||
|
args.allowLibs()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -168,7 +168,6 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
// Less frequently used - reduce some clutter
|
// Less frequently used - reduce some clutter
|
||||||
argList::setAdvanced("decomposeParDict");
|
argList::setAdvanced("decomposeParDict");
|
||||||
argList::setAdvanced("noFunctionObjects");
|
|
||||||
|
|
||||||
argList::addVerboseOption("Additional verbosity");
|
argList::addVerboseOption("Additional verbosity");
|
||||||
|
|
||||||
|
|||||||
@ -268,7 +268,6 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
// Less frequently used - reduce some clutter
|
// Less frequently used - reduce some clutter
|
||||||
argList::setAdvanced("decomposeParDict");
|
argList::setAdvanced("decomposeParDict");
|
||||||
argList::setAdvanced("noFunctionObjects");
|
|
||||||
|
|
||||||
argList::addVerboseOption("Additional verbosity");
|
argList::addVerboseOption("Additional verbosity");
|
||||||
|
|
||||||
|
|||||||
@ -87,7 +87,6 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
// Less frequently used - reduce some clutter
|
// Less frequently used - reduce some clutter
|
||||||
argList::setAdvanced("decomposeParDict");
|
argList::setAdvanced("decomposeParDict");
|
||||||
argList::setAdvanced("noFunctionObjects");
|
|
||||||
|
|
||||||
argList::addOption
|
argList::addOption
|
||||||
(
|
(
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2017-2020 OpenCFD Ltd.
|
Copyright (C) 2017-2022 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -100,7 +100,9 @@ int main(int argc, char *argv[])
|
|||||||
(
|
(
|
||||||
Time::controlDictName,
|
Time::controlDictName,
|
||||||
args.rootPath(),
|
args.rootPath(),
|
||||||
args.caseName()/("processor" + Foam::name(proci))
|
args.caseName()/("processor" + Foam::name(proci)),
|
||||||
|
args.allowFunctionObjects(),
|
||||||
|
args.allowLibs()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -56,6 +56,7 @@ using namespace Foam;
|
|||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
// Normally without functionObjects, with -withFunctionObjects to enable
|
||||||
argList::noFunctionObjects(true);
|
argList::noFunctionObjects(true);
|
||||||
|
|
||||||
// No -constant, no special treatment for 0/
|
// No -constant, no special treatment for 0/
|
||||||
|
|||||||
@ -494,6 +494,7 @@ void evaluate
|
|||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
// Normally without functionObjects, with -withFunctionObjects to enable
|
||||||
argList::noFunctionObjects(true);
|
argList::noFunctionObjects(true);
|
||||||
|
|
||||||
// No -constant, no special treatment for 0/
|
// No -constant, no special treatment for 0/
|
||||||
@ -741,7 +742,7 @@ int main(int argc, char *argv[])
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.found("withFunctionObjects"))
|
if (args.allowFunctionObjects())
|
||||||
{
|
{
|
||||||
runTime.functionObjects().start();
|
runTime.functionObjects().start();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -120,7 +120,6 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
// Less frequently used - reduce some clutter
|
// Less frequently used - reduce some clutter
|
||||||
argList::setAdvanced("decomposeParDict");
|
argList::setAdvanced("decomposeParDict");
|
||||||
argList::setAdvanced("noFunctionObjects");
|
|
||||||
|
|
||||||
argList::addArgument("output", "The output surface file");
|
argList::addArgument("output", "The output surface file");
|
||||||
|
|
||||||
|
|||||||
@ -535,25 +535,15 @@ Foam::Time::Time
|
|||||||
// * '-withFunctionObjects' exists and used = enable
|
// * '-withFunctionObjects' exists and used = enable
|
||||||
// * '-noFunctionObjects' exists and used = disable
|
// * '-noFunctionObjects' exists and used = disable
|
||||||
// * default: no functions if there is no way to enable/disable them
|
// * default: no functions if there is no way to enable/disable them
|
||||||
if
|
if (enableFunctionObjects && args.allowFunctionObjects())
|
||||||
(
|
|
||||||
argList::validOptions.found("withFunctionObjects")
|
|
||||||
? args.found("withFunctionObjects")
|
|
||||||
: argList::validOptions.found("noFunctionObjects")
|
|
||||||
? !args.found("noFunctionObjects")
|
|
||||||
: false
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
if (enableFunctionObjects)
|
functionObjects_.on();
|
||||||
{
|
|
||||||
functionObjects_.on();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Libraries
|
// Libraries
|
||||||
//
|
//
|
||||||
// * enable by default unless '-no-libs' option was used
|
// * enable by default unless '-no-libs' option was used
|
||||||
if (enableLibs && !args.found("no-libs"))
|
if (enableLibs && args.allowLibs())
|
||||||
{
|
{
|
||||||
libs_.open("libs", controlDict_);
|
libs_.open("libs", controlDict_);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2016 OpenFOAM Foundation
|
Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
Copyright (C) 2017-2021 OpenCFD Ltd.
|
Copyright (C) 2017-2022 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -261,7 +261,7 @@ Foam::OSstream& Foam::messageStream::operator()
|
|||||||
functionName,
|
functionName,
|
||||||
sourceFileName,
|
sourceFileName,
|
||||||
sourceFileLineNumber,
|
sourceFileLineNumber,
|
||||||
ioStream.name(),
|
ioStream.relativeName(),
|
||||||
ioStream.lineNumber(),
|
ioStream.lineNumber(),
|
||||||
-1 // No known endLineNumber
|
-1 // No known endLineNumber
|
||||||
);
|
);
|
||||||
|
|||||||
@ -50,8 +50,8 @@ SourceFiles
|
|||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef messageStream_H
|
#ifndef Foam_messageStream_H
|
||||||
#define messageStream_H
|
#define Foam_messageStream_H
|
||||||
|
|
||||||
#include "label.H"
|
#include "label.H"
|
||||||
#include "string.H"
|
#include "string.H"
|
||||||
|
|||||||
@ -82,8 +82,14 @@ Foam::argList::initValidTables::initValidTables()
|
|||||||
(
|
(
|
||||||
"lib",
|
"lib",
|
||||||
"name",
|
"name",
|
||||||
"Additional library or library list to load"
|
"Additional library or library list to load."
|
||||||
" (can be used multiple times)",
|
" (Can be used multiple times)",
|
||||||
|
true // advanced option
|
||||||
|
);
|
||||||
|
argList::addBoolOption
|
||||||
|
(
|
||||||
|
"no-libs",
|
||||||
|
"Disable use of the controlDict 'libs' entry",
|
||||||
true // advanced option
|
true // advanced option
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -483,8 +489,8 @@ void Foam::argList::noFunctionObjects(bool addWithOption)
|
|||||||
argList::addBoolOption
|
argList::addBoolOption
|
||||||
(
|
(
|
||||||
"withFunctionObjects",
|
"withFunctionObjects",
|
||||||
"Execute functionObjects",
|
"Execute functionObjects"
|
||||||
true // advanced option
|
// An advanced option, but seldom used so expose it more
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1755,6 +1761,32 @@ Foam::argList::~argList()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Capabilities * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
bool Foam::argList::allowFunctionObjects() const
|
||||||
|
{
|
||||||
|
if (validOptions.found("withFunctionObjects"))
|
||||||
|
{
|
||||||
|
// '-withFunctionObjects' is available and explicitly enabled
|
||||||
|
return options_.found("withFunctionObjects");
|
||||||
|
}
|
||||||
|
else if (validOptions.found("noFunctionObjects"))
|
||||||
|
{
|
||||||
|
// '-noFunctionObjects' is available and not explicitly disabled
|
||||||
|
return !options_.found("noFunctionObjects");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Disallow functions if there is no way to enable/disable them
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Foam::argList::allowLibs() const
|
||||||
|
{
|
||||||
|
return !options_.found("no-libs");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
Foam::label Foam::argList::count(const UList<word>& optionNames) const
|
Foam::label Foam::argList::count(const UList<word>& optionNames) const
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||||
Copyright (C) 2016-2021 OpenCFD Ltd.
|
Copyright (C) 2016-2022 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -382,6 +382,15 @@ public:
|
|||||||
//- Modify the verbose flag
|
//- Modify the verbose flag
|
||||||
inline int verbose(const int level) noexcept;
|
inline int verbose(const int level) noexcept;
|
||||||
|
|
||||||
|
//- The controlDict 'functions' entry is allowed to be used.
|
||||||
|
// There must be a command-line option to enable/disable
|
||||||
|
// (-withFunctionObjects, -noFunctionObjects)
|
||||||
|
// and has not been explicitly disabled
|
||||||
|
bool allowFunctionObjects() const;
|
||||||
|
|
||||||
|
//- The controlDict 'libs' entry is allowed to be used.
|
||||||
|
//- (eg, has not been disabled by the -no-libs option)
|
||||||
|
bool allowLibs() const;
|
||||||
|
|
||||||
//- Mutable access to the loaded dynamic libraries
|
//- Mutable access to the loaded dynamic libraries
|
||||||
inline dlLibraryTable& libs() const noexcept;
|
inline dlLibraryTable& libs() const noexcept;
|
||||||
|
|||||||
Reference in New Issue
Block a user