OOFEM 3.0
Loading...
Searching...
No Matches
metastep.h
Go to the documentation of this file.
1/*
2 *
3 * ##### ##### ###### ###### ### ###
4 * ## ## ## ## ## ## ## ### ##
5 * ## ## ## ## #### #### ## # ##
6 * ## ## ## ## ## ## ## ##
7 * ## ## ## ## ## ## ## ##
8 * ##### ##### ## ###### ## ##
9 *
10 *
11 * OOFEM : Object Oriented Finite Element Code
12 *
13 * Copyright (C) 1993 - 2025 Borek Patzak
14 *
15 *
16 *
17 * Czech Technical University, Faculty of Civil Engineering,
18 * Department of Structural Mechanics, 166 29 Prague, Czech Republic
19 *
20 * This library is free software; you can redistribute it and/or
21 * modify it under the terms of the GNU Lesser General Public
22 * License as published by the Free Software Foundation; either
23 * version 2.1 of the License, or (at your option) any later version.
24 *
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28 * Lesser General Public License for more details.
29 *
30 * You should have received a copy of the GNU Lesser General Public
31 * License along with this library; if not, write to the Free Software
32 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
33 */
34
35#ifndef metastep_h
36#define metastep_h
37
38#include "oofemcfg.h"
39#include "inputrecord.h"
40#include "floatarray.h"
42#include <memory>
43
45
46#define _IFT_MetaStep_Name "metastep"
47#define _IFT_MetaStep_nsteps "nsteps"
48#define _IFT_MetaStep_finalT "finalt"
49#define _IFT_MetaStep_deltaT "deltat"
50#define _IFT_MetaStep_prescribedTimes "prescribedtimes"
51#define _IFT_MetaStep_dtFunction "dtfunction"
52
53#define _IFT_MetaStep_timeReductionStrategyType "treductiontype"
54
56
57namespace oofem {
58class EngngModel;
59class TimeStepReductionStrategy;
60
74{
75protected:
81 double deltaT = 1;
83 double finalTime = 0;
85 std::shared_ptr<InputRecord> attributes;
87 int sindex;
89 int number;
93 int dtFunction = 0;
97 std :: string timeStepReductionStrategyType = "NoReductionStrategy";
99 std :: unique_ptr<TimeStepReductionStrategy> timeStepReductionStrategy;
101 double minDeltaT;
104
105public:
111 MetaStep(int n, EngngModel * e);
112 MetaStep(int n, EngngModel * e, int nsteps, InputRecord & attrib);
113 MetaStep(MetaStep &&ms) = default;
114
116 int giveNumber() { return number; }
118 int giveNumberOfSteps() { return this->numberOfSteps; }
120 double giveTimeIncrement() { return this->deltaT; }
122 InputRecord &giveAttributesRecord() { return *this->attributes; }
126 void initializeFrom(InputRecord &ir);
128 int setStepBounds(int startStepNumber);
130 void setNumberOfSteps(int newNumberOfSteps);
132 int isStepValid(int solStepNumber);
134 int giveStepRelativeNumber(int stepNumber) { return ( stepNumber - sindex + 1 ); }
136 int giveFirstStepNumber() { return sindex; }
138 int giveLastStepNumber() { return ( sindex + numberOfSteps - 1 ); }
140 const char *giveClassName() const { return "MetaStep"; }
142 int giveNumberOfMaxTimeStepReductions(){return timeStepReductionStrategy->giveNumberOfMaxTimeStepReductions();}
144 double giveFinalTime(){return finalTime;}
145 void setFinalTime(double ft){finalTime = ft;}
146 void recomputeFinalTime(int nSteps) {finalTime = nSteps * deltaT;}
148
149
150
156 Function *giveDtFunction(){return NULL;}
157
158
160 double giveDeltaT(){return this->deltaT;}
161 double giveDeltaT(int n, std::unique_ptr<TimeStep> &previousStep);
162
164 void setDeltaT(double dT){this->deltaT = dT;}
165
166
168 double giveMinDeltaT(){return this->minDeltaT;}
169
173 double giveDiscreteTime(int n){return discreteTimes.at(n);}
176 void reduceTimeStep();
178 void adaptTimeStep(int nIter, double targetTime);
180 void setTimeStepReductionFactor(double tStepRedFactor);
181 //returns TimeStepReductionStrategy
183
184
185
186};
187} // end namespace oofem
188#endif // metastep_h
const char * giveClassName() const
Returns class name of receiver.
Definition metastep.h:140
void recomputeFinalTime(int nSteps)
Definition metastep.h:146
double previousMetaStepFinalTime
final time of the previous meta step
Definition metastep.h:103
std::string timeStepReductionStrategyType
Time step reduction strategy type - default no reduction of time step.
Definition metastep.h:97
double giveTimeIncrement()
Returns time increment.
Definition metastep.h:120
double giveDiscreteTime(int n)
Definition metastep.h:173
std::shared_ptr< InputRecord > attributes
Engineering model attributes.
Definition metastep.h:85
int giveStepRelativeNumber(int stepNumber)
Returns the step relative number to receiver.
Definition metastep.h:134
int giveNumber()
Returns receiver's number.
Definition metastep.h:116
MetaStep(MetaStep &&ms)=default
double finalTime
final time of the metastep
Definition metastep.h:83
double minDeltaT
Minimal value of the time step.
Definition metastep.h:101
FloatArray prescribedTimes
Specified times where the problem is solved.
Definition metastep.h:91
TimeStepReductionStrategy * giveTimeStepReductionStrategy()
Definition metastep.h:182
int number
Receiver number.
Definition metastep.h:89
int giveFirstStepNumber()
Returns first step number.
Definition metastep.h:136
MetaStep(int n, EngngModel *e)
Definition metastep.C:39
int giveLastStepNumber()
Returns last step number.
Definition metastep.h:138
int giveNumberOfMaxTimeStepReductions()
Return maximal number of time step reductions.
Definition metastep.h:142
double giveDeltaT()
Returns the time step length.
Definition metastep.h:160
void setDeltaT(double dT)
Set the time step length.
Definition metastep.h:164
void checkDiscreteTimes()
Definition metastep.h:174
void setPreviousMetaStepFinalTime(double ft)
Definition metastep.h:147
double giveFinalTime()
Returns final time of the meta step.
Definition metastep.h:144
EngngModel * eModel
Engineering model of receiver.
Definition metastep.h:77
double giveMinDeltaT()
Return the minimal time step length set be the user.
Definition metastep.h:168
int dtFunction
Associated time function for time step increment.
Definition metastep.h:93
void setFinalTime(double ft)
Definition metastep.h:145
int sindex
Start solution step number for which receiver is responsible.
Definition metastep.h:87
int giveNumberOfSteps()
Returns number of Steps it represent.
Definition metastep.h:118
std ::unique_ptr< TimeStepReductionStrategy > timeStepReductionStrategy
Time step reduction strategy type.
Definition metastep.h:99
int numberOfSteps
Number of subsequent steps the receiver represent.
Definition metastep.h:79
InputRecord & giveAttributesRecord()
Returns e-model attributes.
Definition metastep.h:122
double deltaT
Intrinsic time increment.
Definition metastep.h:81
Function * giveDtFunction()
Definition metastep.h:156
FloatArray discreteTimes
Specified times where the problem is solved merge with prescribedTimes.
Definition metastep.h:95
#define OOFEM_EXPORT
Definition oofemcfg.h:7

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011