From c15bd5914b29eb1e2a2f1f35023326ffd5480a1d Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Wed, 10 Apr 2024 14:13:58 +0100 Subject: [PATCH] functionObjects::userTimeStep: New functionObject to write the time-step in user-time units --- etc/caseDicts/functions/control/userTimeStep | 19 +++ src/functionObjects/utilities/Make/files | 1 + .../userTimeStep/userTimeStepFunctionObject.C | 119 +++++++++++++++ .../userTimeStep/userTimeStepFunctionObject.H | 144 ++++++++++++++++++ 4 files changed, 283 insertions(+) create mode 100644 etc/caseDicts/functions/control/userTimeStep create mode 100644 src/functionObjects/utilities/userTimeStep/userTimeStepFunctionObject.C create mode 100644 src/functionObjects/utilities/userTimeStep/userTimeStepFunctionObject.H diff --git a/etc/caseDicts/functions/control/userTimeStep b/etc/caseDicts/functions/control/userTimeStep new file mode 100644 index 0000000000..4a6beac014 --- /dev/null +++ b/etc/caseDicts/functions/control/userTimeStep @@ -0,0 +1,19 @@ +/*--------------------------------*- C++ -*----------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Version: dev + \\/ M anipulation | +------------------------------------------------------------------------------- +Description + Writes the user time step to a file for monitoring. + +\*---------------------------------------------------------------------------*/ + +type userTimeStep; +libs ("libutilityFunctionObjects.so"); + +writeControl timeStep; +writeInterval 1; + +// ************************************************************************* // diff --git a/src/functionObjects/utilities/Make/files b/src/functionObjects/utilities/Make/files index 05c9fbb68c..b0839b6112 100644 --- a/src/functionObjects/utilities/Make/files +++ b/src/functionObjects/utilities/Make/files @@ -2,6 +2,7 @@ codedFunctionObject/codedFunctionObject.C residuals/residuals.C timeActivatedFileUpdate/timeActivatedFileUpdate.C timeStep/timeStepFunctionObject.C +userTimeStep/userTimeStepFunctionObject.C setTimeStep/setTimeStepFunctionObject.C setWriteInterval/setWriteIntervalFunctionObject.C systemCall/systemCall.C diff --git a/src/functionObjects/utilities/userTimeStep/userTimeStepFunctionObject.C b/src/functionObjects/utilities/userTimeStep/userTimeStepFunctionObject.C new file mode 100644 index 0000000000..6aa65a5b4a --- /dev/null +++ b/src/functionObjects/utilities/userTimeStep/userTimeStepFunctionObject.C @@ -0,0 +1,119 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Copyright (C) 2024 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "userTimeStepFunctionObject.H" +#include "Time.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace functionObjects +{ + defineTypeNameAndDebug(userTimeStep, 0); + + addToRunTimeSelectionTable + ( + functionObject, + userTimeStep, + dictionary + ); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::functionObjects::userTimeStep::userTimeStep +( + const word& name, + const Time& runTime, + const dictionary& dict +) +: + regionFunctionObject(name, runTime, dict), + logFiles(obr_, name) +{ + read(dict); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::functionObjects::userTimeStep::~userTimeStep() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +bool Foam::functionObjects::userTimeStep::read(const dictionary& dict) +{ + functionObject::read(dict); + + resetName(typeName); + + return true; +} + + +void Foam::functionObjects::userTimeStep::writeFileHeader(const label i) +{ + if (Pstream::master()) + { + writeHeader(file(), "User time step"); + writeCommented(file(), "Time"); + + file() << tab << "deltaT"; + + file() << endl; + } +} + + +bool Foam::functionObjects::userTimeStep::execute() +{ + return true; +} + + +bool Foam::functionObjects::userTimeStep::write() +{ + logFiles::write(); + + if (Pstream::master()) + { + writeTime(file()); + + file() << tab << time_.timeToUserTime(time_.deltaTValue()); + + file() << endl; + } + + return true; +} + + +// ************************************************************************* // diff --git a/src/functionObjects/utilities/userTimeStep/userTimeStepFunctionObject.H b/src/functionObjects/utilities/userTimeStep/userTimeStepFunctionObject.H new file mode 100644 index 0000000000..f96105d6f6 --- /dev/null +++ b/src/functionObjects/utilities/userTimeStep/userTimeStepFunctionObject.H @@ -0,0 +1,144 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Copyright (C) 2024 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +Class + Foam::functionObjects::userTimeStep + +Description + Writes the time step + + Example of function object specification: + \verbatim + userTimeStep + { + type userTimeStep; + + libs ("libutilityFunctionObjects.so"); + + writeControl userTimeStep; + writeInterval 1; + } + \endverbatim + + Output data is written to the dir postProcessing/userTimeStep/\/ + +See also + Foam::functionObject + Foam::functionObjects::regionFunctionObject + Foam::functionObjects::logFiles + +SourceFiles + userTimeStep.C + +\*---------------------------------------------------------------------------*/ + +#ifndef userTimeStepFunctionObject_H +#define userTimeStepFunctionObject_H + +#include "regionFunctionObject.H" +#include "logFiles.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace functionObjects +{ + +/*---------------------------------------------------------------------------*\ + Class userTimeStep Declaration +\*---------------------------------------------------------------------------*/ + +class userTimeStep +: + public regionFunctionObject, + public logFiles +{ + +protected: + + // Protected Member Functions + + //- Output file header information + virtual void writeFileHeader(const label i); + + +public: + + //- Runtime type information + TypeName("userTimeStep"); + + + // Constructors + + //- Construct from Time and dictionary + userTimeStep + ( + const word& name, + const Time& runTime, + const dictionary& dict + ); + + //- Disallow default bitwise copy construction + userTimeStep(const userTimeStep&) = delete; + + + //- Destructor + virtual ~userTimeStep(); + + + // Member Functions + + //- Read the controls + virtual bool read(const dictionary&); + + //- Return the list of fields required + virtual wordList fields() const + { + return wordList::null(); + } + + //- Execute, currently does nothing + virtual bool execute(); + + //- Write the time step value + virtual bool write(); + + + // Member Operators + + //- Disallow default bitwise assignment + void operator=(const userTimeStep&) = delete; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace functionObjects +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* //