ENH: default jobControl now under the '~/.OpenFOAM/jobControl' directory
- this implies that jobControl is a user-resource for OpenFOAM. It was previously located under $WM_PROJECT_INST_DIR/jobControl, but few users will have write access there. - an unset FOAM_JOB_DIR variable is treated as "~/.OpenFOAM/jobControl", which can partially reduce environment clutter. - provide argList::noJobInfo() to conveniently suppress job-info on an individual basis for short-running utilities (eg, foamListTimes) to avoid unneeded clutter.
This commit is contained in:
parent
c341b22f9d
commit
af49eaf625
@ -241,6 +241,7 @@ int main(int argc, char *argv[])
|
||||
argList::addNote("manipulates dictionaries");
|
||||
|
||||
argList::noBanner();
|
||||
argList::noJobInfo();
|
||||
argList::validArgs.append("dictionary");
|
||||
argList::addBoolOption("keywords", "list keywords");
|
||||
argList::addOption("entry", "name", "report/select the named entry");
|
||||
|
@ -59,6 +59,7 @@ int main(int argc, char *argv[])
|
||||
timeSelector::addOptions(true, true);
|
||||
argList::noBanner();
|
||||
argList::noParallel();
|
||||
argList::noJobInfo();
|
||||
argList::addBoolOption
|
||||
(
|
||||
"processor",
|
||||
|
@ -36,7 +36,6 @@
|
||||
# file yet. Not supported by this script yet)
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
Script=${0##*/}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
@ -52,6 +51,8 @@ TMPFILE=/tmp/${Script}$$.tmp
|
||||
MACHDIR=$HOME/.OpenFOAM/${Script}
|
||||
DEFSTATEFILE=$HOME/.OpenFOAM/foamCheckJobs.out
|
||||
|
||||
# The default is "~/.OpenFOAM/jobControl"
|
||||
: ${FOAM_JOB_DIR:=$HOME/.OpenFOAM/jobControl}
|
||||
|
||||
if [ `uname -s` = Linux ]
|
||||
then
|
||||
@ -77,7 +78,7 @@ The output from checking all running jobs is collected in an optional
|
||||
file.
|
||||
|
||||
FILES:
|
||||
\$FOAM_JOB_DIR/runningJobs locks for running processes
|
||||
\$FOAM_JOB_DIR/runningJobs locks for running processes
|
||||
/finishedJobs locks for finished processes
|
||||
USAGE
|
||||
exit 1
|
||||
@ -196,13 +197,6 @@ fi
|
||||
|
||||
#- Check a few things
|
||||
|
||||
if [ ! "$FOAM_JOB_DIR" ]
|
||||
then
|
||||
echo "$Script : FOAM_JOB_DIR environment variable not set."
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$FOAM_JOB_DIR" ]
|
||||
then
|
||||
echo "$Script : directory does not exist."
|
||||
|
@ -34,6 +34,8 @@ Script=${0##*/}
|
||||
JOBSTRING='%4s %8s %20s %10s %8s %4s %12s %12s %20s\n'
|
||||
DEFSTATEFILE=$HOME/.OpenFOAM/foamCheckJobs.out
|
||||
|
||||
# The default is "~/.OpenFOAM/jobControl"
|
||||
: ${FOAM_JOB_DIR:=$HOME/.OpenFOAM/jobControl}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
@ -120,12 +122,6 @@ fi
|
||||
|
||||
#- Check a few things
|
||||
|
||||
if [ ! "$FOAM_JOB_DIR" ]
|
||||
then
|
||||
echo "$Script : FOAM_JOB_DIR environment variable not set."
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -d "$FOAM_JOB_DIR" ]
|
||||
then
|
||||
echo "$Script : directory does not exist."
|
||||
|
@ -25,8 +25,8 @@
|
||||
# etc/bashrc
|
||||
#
|
||||
# Description
|
||||
# Startup file for OpenFOAM
|
||||
# Sourced from ~/.profile or ~/.bashrc
|
||||
# Set the environment for OpenFOAM when using a POSIX shell.
|
||||
# To be sourced manually or from the ~/.profile or ~/.bashrc files.
|
||||
# Should be usable by any POSIX-compliant shell (eg, dash, ksh)
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
@ -25,7 +25,7 @@
|
||||
# etc/config.csh/compiler
|
||||
#
|
||||
# Description
|
||||
# Startup file for custom compiler versions for OpenFOAM
|
||||
# Setup file for custom compiler versions for OpenFOAM
|
||||
# Sourced from OpenFOAM-<VERSION>/etc/config.csh/settings
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
@ -25,7 +25,7 @@
|
||||
# etc/config.csh/settings
|
||||
#
|
||||
# Description
|
||||
# Startup file for OpenFOAM
|
||||
# Setup file for OpenFOAM
|
||||
# Sourced from OpenFOAM-<VERSION>/etc/cshrc
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
@ -137,8 +137,8 @@ endsw
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Location of the jobControl directory
|
||||
setenv FOAM_JOB_DIR $WM_PROJECT_INST_DIR/jobControl
|
||||
# Optional jobControl directory: unset is equivalent to ~/.OpenFOAM/jobControl
|
||||
# setenv FOAM_JOB_DIR "$HOME/.OpenFOAM/jobControl"
|
||||
|
||||
# wmake configuration
|
||||
setenv WM_DIR $WM_PROJECT_DIR/wmake
|
||||
|
@ -25,7 +25,7 @@
|
||||
# etc/config.sh/compiler
|
||||
#
|
||||
# Description
|
||||
# Startup file for custom compiler versions for OpenFOAM
|
||||
# Setup file for custom compiler versions for OpenFOAM
|
||||
# Sourced from OpenFOAM-<VERSION>/etc/config.sh/settings
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
@ -25,7 +25,7 @@
|
||||
# etc/config.sh/settings
|
||||
#
|
||||
# Description
|
||||
# Startup file for OpenFOAM
|
||||
# Setup file for OpenFOAM
|
||||
# Sourced from OpenFOAM-<VERSION>/etc/bashrc
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
@ -140,8 +140,8 @@ esac
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Location of the jobControl directory
|
||||
export FOAM_JOB_DIR=$WM_PROJECT_INST_DIR/jobControl
|
||||
# Optional jobControl directory: unset is equivalent to ~/.OpenFOAM/jobControl
|
||||
# export FOAM_JOB_DIR="$HOME/.OpenFOAM/jobControl"
|
||||
|
||||
# wmake configuration
|
||||
export WM_DIR=$WM_PROJECT_DIR/wmake
|
||||
|
@ -25,8 +25,8 @@
|
||||
# etc/cshrc
|
||||
#
|
||||
# Description
|
||||
# Startup file for OpenFOAM
|
||||
# Sourced from ~/.login or ~/.cshrc
|
||||
# Set the environment for OpenFOAM when using a cshell.
|
||||
# To be sourced manually or from the ~/.login or ~/.cshrc files.
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
|
@ -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) 2017 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -28,74 +28,14 @@ License
|
||||
#include "clock.H"
|
||||
#include "OFstream.H"
|
||||
#include "Pstream.H"
|
||||
#include "foamVersion.H"
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
bool Foam::JobInfo::writeJobInfo(Foam::debug::infoSwitch("writeJobInfo", 0));
|
||||
Foam::JobInfo Foam::jobInfo;
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::JobInfo::JobInfo()
|
||||
:
|
||||
runningJobPath_(),
|
||||
finishedJobPath_(),
|
||||
cpuTime_()
|
||||
{
|
||||
name() = "JobInfo";
|
||||
|
||||
if (writeJobInfo && Pstream::master())
|
||||
{
|
||||
string baseDir = getEnv("FOAM_JOB_DIR");
|
||||
string jobFile = hostName() + '.' + Foam::name(pid());
|
||||
|
||||
fileName runningDir(baseDir/"runningJobs");
|
||||
fileName finishedDir(baseDir/"finishedJobs");
|
||||
|
||||
runningJobPath_ = runningDir/jobFile;
|
||||
finishedJobPath_ = finishedDir/jobFile;
|
||||
|
||||
if (baseDir.empty())
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Cannot get JobInfo directory $FOAM_JOB_DIR"
|
||||
<< Foam::exit(FatalError);
|
||||
}
|
||||
|
||||
if (!isDir(runningDir) && !mkDir(runningDir))
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Cannot make JobInfo directory " << runningDir
|
||||
<< Foam::exit(FatalError);
|
||||
}
|
||||
|
||||
if (!isDir(finishedDir) && !mkDir(finishedDir))
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Cannot make JobInfo directory " << finishedDir
|
||||
<< Foam::exit(FatalError);
|
||||
}
|
||||
}
|
||||
|
||||
constructed = true;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::JobInfo::~JobInfo()
|
||||
{
|
||||
if (writeJobInfo && constructed && Pstream::master())
|
||||
{
|
||||
mv(runningJobPath_, finishedJobPath_);
|
||||
}
|
||||
|
||||
constructed = false;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
bool Foam::JobInfo::write(Ostream& os) const
|
||||
{
|
||||
@ -118,21 +58,6 @@ bool Foam::JobInfo::write(Ostream& os) const
|
||||
}
|
||||
|
||||
|
||||
void Foam::JobInfo::write() const
|
||||
{
|
||||
if (writeJobInfo && Pstream::master())
|
||||
{
|
||||
if (!write(OFstream(runningJobPath_)()))
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Failed to write to JobInfo file "
|
||||
<< runningJobPath_
|
||||
<< Foam::exit(FatalError);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Foam::JobInfo::end(const word& terminationType)
|
||||
{
|
||||
if (writeJobInfo && constructed && Pstream::master())
|
||||
@ -146,14 +71,87 @@ void Foam::JobInfo::end(const word& terminationType)
|
||||
add("termination", terminationType);
|
||||
}
|
||||
|
||||
rm(runningJobPath_);
|
||||
write(OFstream(finishedJobPath_)());
|
||||
Foam::rm(runningDir_/jobFileName_);
|
||||
write(OFstream(finishedDir_/jobFileName_)());
|
||||
}
|
||||
|
||||
constructed = false;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::JobInfo::JobInfo()
|
||||
:
|
||||
jobFileName_(),
|
||||
runningDir_(),
|
||||
finishedDir_(),
|
||||
cpuTime_()
|
||||
{
|
||||
name() = "JobInfo";
|
||||
|
||||
if (writeJobInfo && Pstream::master())
|
||||
{
|
||||
string jobDir = getEnv("FOAM_JOB_DIR");
|
||||
if (jobDir.empty())
|
||||
{
|
||||
// Fallback: ~/.OpenFOAM/jobControl
|
||||
jobDir = home()/WM_USER_RESOURCE_DIRNAME/"jobControl";
|
||||
}
|
||||
|
||||
jobFileName_ = hostName() + '.' + Foam::name(pid());
|
||||
runningDir_ = jobDir/"runningJobs";
|
||||
finishedDir_ = jobDir/"finishedJobs";
|
||||
|
||||
if (!isDir(jobDir) && !mkDir(jobDir))
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "No JobInfo directory: FOAM_JOB_DIR=" << jobDir
|
||||
<< Foam::exit(FatalError);
|
||||
}
|
||||
if (!isDir(runningDir_) && !mkDir(runningDir_))
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "No JobInfo directory: " << runningDir_
|
||||
<< Foam::exit(FatalError);
|
||||
}
|
||||
if (!isDir(finishedDir_) && !mkDir(finishedDir_))
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "No JobInfo directory: " << finishedDir_
|
||||
<< Foam::exit(FatalError);
|
||||
}
|
||||
}
|
||||
|
||||
constructed = true;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::JobInfo::~JobInfo()
|
||||
{
|
||||
signalEnd();
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
void Foam::JobInfo::write() const
|
||||
{
|
||||
if (writeJobInfo && constructed && Pstream::master())
|
||||
{
|
||||
const fileName output = runningDir_/jobFileName_;
|
||||
if (!write(OFstream(output)()))
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Failed to write to JobInfo file " << output
|
||||
<< Foam::exit(FatalError);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Foam::JobInfo::end()
|
||||
{
|
||||
end("normal");
|
||||
@ -176,9 +174,8 @@ void Foam::JobInfo::signalEnd() const
|
||||
{
|
||||
if (writeJobInfo && constructed && Pstream::master())
|
||||
{
|
||||
mv(runningJobPath_, finishedJobPath_);
|
||||
Foam::mv(runningDir_/jobFileName_, finishedDir_/jobFileName_);
|
||||
}
|
||||
|
||||
constructed = false;
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -31,6 +31,8 @@ Description
|
||||
- $FOAM_JOB_DIR/runningJobs
|
||||
- $FOAM_JOB_DIR/finishedJobs
|
||||
|
||||
If FOAM_JOB_DIR is unset, defaults to ~/.OpenFOAM/jobControl
|
||||
|
||||
SourceFiles
|
||||
JobInfo.C
|
||||
|
||||
@ -57,21 +59,28 @@ class JobInfo
|
||||
public dictionary
|
||||
{
|
||||
// Private data
|
||||
fileName runningJobPath_;
|
||||
fileName finishedJobPath_;
|
||||
|
||||
//- The name of the job file
|
||||
string jobFileName_;
|
||||
fileName runningDir_;
|
||||
fileName finishedDir_;
|
||||
cpuTime cpuTime_;
|
||||
|
||||
// Private Member Functions
|
||||
|
||||
bool write(Ostream&) const;
|
||||
bool write(Ostream& os) const;
|
||||
void end(const word& terminationType);
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Global value for constructed job info
|
||||
static bool constructed;
|
||||
|
||||
//- Global value for writeJobInfo enabled
|
||||
static bool writeJobInfo;
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct null
|
||||
@ -79,22 +88,26 @@ public:
|
||||
|
||||
|
||||
//- Destructor
|
||||
// Update job info and relocate the file from running to finished.
|
||||
~JobInfo();
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
// Write
|
||||
//- Write the job info to its file in the runningJobs directory
|
||||
void write() const;
|
||||
|
||||
void write() const;
|
||||
//- End with "termination=normal"
|
||||
void end();
|
||||
|
||||
void end();
|
||||
//- End with "termination=exit"
|
||||
void exit();
|
||||
|
||||
void exit();
|
||||
//- End with "termination=abort"
|
||||
void abort();
|
||||
|
||||
void abort();
|
||||
|
||||
void signalEnd() const;
|
||||
//- Update job info and relocate the file from running to finished.
|
||||
void signalEnd() const;
|
||||
};
|
||||
|
||||
|
||||
|
@ -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-2016 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -173,6 +173,12 @@ void Foam::argList::noFunctionObjects(bool addWithOption)
|
||||
}
|
||||
|
||||
|
||||
void Foam::argList::noJobInfo()
|
||||
{
|
||||
JobInfo::writeJobInfo = false;
|
||||
}
|
||||
|
||||
|
||||
void Foam::argList::noParallel()
|
||||
{
|
||||
removeOption("parallel");
|
||||
|
@ -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) 2016 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -352,6 +352,9 @@ public:
|
||||
// optionally adding a 'withFunctionObjects' option instead
|
||||
static void noFunctionObjects(bool addWithOption = false);
|
||||
|
||||
//- Suppress JobInfo, overriding controlDict setting
|
||||
static void noJobInfo();
|
||||
|
||||
//- Remove the parallel options
|
||||
static void noParallel();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user