Loading...
Searching...
No Matches
setTimeStepFunctionObject.C
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2013-2016 OpenFOAM Foundation
9 Copyright (C) 2016-2021 OpenCFD Ltd.
10-------------------------------------------------------------------------------
11License
12 This file is part of OpenFOAM.
13
14 OpenFOAM is free software: you can redistribute it and/or modify it
15 under the terms of the GNU General Public License as published by
16 the Free Software Foundation, either version 3 of the License, or
17 (at your option) any later version.
18
19 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22 for more details.
23
24 You should have received a copy of the GNU General Public License
25 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26
27\*---------------------------------------------------------------------------*/
28
32// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
34namespace Foam
35{
36namespace functionObjects
37{
39
41 (
45 );
46}
47}
48
49
50// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
51
52Foam::functionObjects::setTimeStepFunctionObject::setTimeStepFunctionObject
53(
54 const word& name,
55 const Time& runTime,
56 const dictionary& dict
57)
58:
59 timeFunctionObject(name, runTime)
61 read(dict);
62}
63
64
65// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
66
68{
69 // Wanted timestep
70 scalar newDeltaT = timeStepPtr_().value(time_.timeOutputValue());
71
72 static label index = -1;
73
74 if (time_.timeIndex() != index)
75 {
76 // Store current time so we don't get infinite recursion (since
77 // setDeltaT calls adjustTimeStep() again)
78 index = time_.timeIndex();
79
80 // Set time, allow deltaT to be adjusted for writeInterval purposes
81 const_cast<Time&>(time_).setDeltaT(newDeltaT, false);
82 }
83
84 return true;
85}
86
87
89(
90 const dictionary& dict
91)
92{
94
95 timeStepPtr_ = Function1<scalar>::New("deltaT", dict, &time_);
96
97 // Ensure that adjustTimeStep is active
98 if (!time_.controlDict().getOrDefault("adjustTimeStep", false))
99 {
101 << "Need to set 'adjustTimeStep' true to allow timestep control"
102 << nl
104 }
105
106 return true;
107}
108
113}
114
115
117{
118 return true;
119}
120
121
122// ************************************************************************* //
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
scalar timeOutputValue() const
Return the current user-time value. (ie, after applying any timeToUserTime() conversion).
Definition TimeStateI.H:24
label timeIndex() const noexcept
Return the current time index.
Definition TimeStateI.H:43
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
Definition Time.H:75
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
Abstract base-class for Time/database function objects.
const word & name() const noexcept
Return the name of this functionObject.
virtual bool read(const dictionary &dict)
Read and set the function object if its data have changed.
This function object overrides the calculation time step.
virtual bool read(const dictionary &dict)
Read the function-object dictionary.
virtual bool adjustTimeStep()
Called at the end of Time::adjustDeltaT() if adjustTime is true.
virtual bool execute()
Execute the function-object operations (no-op).
virtual bool write()
Write the function-object results (no-op).
const Time & time_
Reference to the time database.
timeFunctionObject(const timeFunctionObject &)=delete
No copy construct.
A class for handling words, derived from Foam::string.
Definition word.H:66
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
Definition className.H:142
engineTime & runTime
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
Definition error.H:629
Function objects are OpenFOAM utilities to ease workflow configurations and enhance workflows.
Namespace for OpenFOAM.
IOerror FatalIOError
Error stream (stdout output on all processes), with additional 'FOAM FATAL IO ERROR' header text and ...
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for expressions::valueTypeCode::INVALID.
Definition exprTraits.C:127
errorManipArg< error, int > exit(error &err, const int errNo=1)
Definition errorManip.H:125
constexpr char nl
The newline '\n' character (0x0a).
Definition Ostream.H:50
dictionary dict