OOFEM 3.0
Loading...
Searching...
No Matches
staggeredproblem.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 staggeredproblem_h
36#define staggeredproblem_h
37
38#include "engngm.h"
39#include "inputrecord.h"
40#include "floatarray.h"
41
43
44#define _IFT_StaggeredProblem_Name "staggeredproblem"
45#define _IFT_StaggeredProblem_deltat "deltat"
46#define _IFT_StaggeredProblem_dtf "dtf"
47#define _IFT_StaggeredProblem_timeDefinedByProb "timedefinedbyprob"
48#define _IFT_StaggeredProblem_stepmultiplier "stepmultiplier"
49//#define _IFT_StaggeredProblem_timeLag "timelag"
50#define _IFT_StaggeredProblem_prescribedtimes "prescribedtimes"
51#define _IFT_StaggeredProblem_prob1 "prob1"
52#define _IFT_StaggeredProblem_prob2 "prob2"
53#define _IFT_StaggeredProblem_prob3 "prob3"
54#define _IFT_StaggeredProblem_coupling "coupling"
55#define _IFT_StaggeredProblem_adaptiveStepLength "adaptivesteplength"
56#define _IFT_StaggeredProblem_minsteplength "minsteplength"
57#define _IFT_StaggeredProblem_maxsteplength "maxsteplength"
58#define _IFT_StaggeredProblem_reqiterations "reqiterations"
59#define _IFT_StaggeredProblem_endoftimeofinterest "endoftimeofinterest"
60#define _IFT_StaggeredProblem_adaptivestepsince "adaptivestepsince"
62
63namespace oofem {
64class Function;
65
91{
92protected:
94 std :: vector< std :: unique_ptr< EngngModel > >emodelList;
95 double deltaT;
96 std :: vector< std :: string >inputStreamNames;
104
110 // double timeLag;
111
114
117
134
137
138
139public:
143 StaggeredProblem(int i, EngngModel * _master=nullptr);
145 virtual ~StaggeredProblem();
149 void setUDContextOutputMode(int cStep);
151 void setRenumberFlag() override;
152
153 void solveYourself() override;
154 void solveYourselfAt(TimeStep *tStep) override;
155 int forceEquationNumbering() override;
156 void updateYourself(TimeStep *tStep) override;
157 void initializeYourself(TimeStep *tStep) override { }
158 int initializeAdaptive(int tStepNumber) override { return 0; }
159 void terminate(TimeStep *tStep) override;
160 void doStepOutput(TimeStep *tStep) override;
161
162 int instanciateYourself(DataReader &dr, InputRecord &ir, const char *outFileName, const char *desc) override;
163 void initializeFrom(InputRecord &ir) override;
164 void updateAttributes(MetaStep *mStep) override;
165
166 void saveContext(DataStream &stream, ContextMode mode) override;
167 void restoreContext(DataStream &stream, ContextMode mode) override;
168 void updateDomainLinks() override;
169
171 void printOutputAt(FILE *file, TimeStep *tStep) override;
172
173 TimeStep *giveCurrentStep(bool force = false) override;
174 TimeStep *givePreviousStep(bool force = false) override;
175 TimeStep *giveSolutionStepWhenIcApply(bool force = false) override;
177 int giveNumberOfFirstStep(bool force = false) override;
178
179 TimeStep *giveNextStep() override;
180
181 // identification
182 const char *giveClassName() const override { return "StaggeredProblem"; }
183 virtual const char *giveInputRecordName() const { return _IFT_StaggeredProblem_Name; }
184 int useNonlocalStiffnessOption() override { return 0; }
185
186 fMode giveFormulation() override { return UNKNOWN; }
192 Function *giveDtFunction();
193
197 double giveDeltaT(int n);
198
202 double giveDiscreteTime(int n);
203
205 void giveCoupledModels(IntArray &answer) { answer = coupledModels; }
206
207#ifdef __OOFEG
208 void drawYourself(oofegGraphicContext &gc) override;
209 void drawElements(oofegGraphicContext &gc) override;
210 void drawNodes(oofegGraphicContext &gc) override;
211 void showSparseMtrxStructure(int type, oofegGraphicContext &gc, TimeStep *tStep) override { }
212#endif
213
214 int checkProblemConsistency() override;
215
216 EngngModel *giveSlaveProblem(int i) override;
217 int giveNumberOfSlaveProblems() override { return (int)inputStreamNames.size(); }
218
219protected:
220 int instanciateSlaveProblems();
221};
222} // end namespace oofem
223#endif // staggeredproblem_h
EngngModel(int i, EngngModel *_master=NULL)
Definition engngm.C:99
double minStepLength
adaptive time step length - minimum
StaggeredProblem(int i, EngngModel *_master=nullptr)
int forceEquationNumbering() override
TimeStep * givePreviousStep(bool force=false) override
int useNonlocalStiffnessOption() override
Returns nonzero if nonlocal stiffness option activated.
std ::vector< std ::string > inputStreamNames
StaggeredProblem & operator=(const StaggeredProblem &)=delete
void showSparseMtrxStructure(int type, oofegGraphicContext &gc, TimeStep *tStep) override
TimeStep * giveNextStep() override
Returns next time step (next to current step) of receiver.
void solveYourself() override
const char * giveClassName() const override
Returns class name of the receiver.
int dtFunction
Associated time function for time step increment.
IntArray coupledModels
List of slave models to which this model is coupled.
int initializeAdaptive(int tStepNumber) override
int timeDefinedByProb
Optional parameter which specify problems to define load time functions.
double reqIterations
adaptive time step length - required (=optimum) number of iterations
StaggeredProblem(const StaggeredProblem &)=delete
void printOutputAt(FILE *file, TimeStep *tStep) override
fMode giveFormulation() override
TimeStep * giveCurrentStep(bool force=false) override
void setRenumberFlag() override
Sets the renumber flag to true.
void updateYourself(TimeStep *tStep) override
void solveYourselfAt(TimeStep *tStep) override
double maxStepLength
adaptive time step length - maximum
FloatArray discreteTimes
Specified times where the problem is solved.
void setContextOutputMode(ContextOutputMode contextMode)
int giveNumberOfSlaveProblems() override
Returns number of slave problems.
void giveCoupledModels(IntArray &answer)
Returns list of model number that this model is coupled with. Used for staggered approach.
int giveNumberOfFirstStep(bool force=false) override
void initializeYourself(TimeStep *tStep) override
double adaptiveStepSince
adaptive time step length applies after prescribed time
void setProblemMode(problemMode pmode)
virtual const char * giveInputRecordName() const
std ::vector< std ::unique_ptr< EngngModel > > emodelList
List of engineering models to solve sequentially.
TimeStep * giveSolutionStepWhenIcApply(bool force=false) override
void setUDContextOutputMode(int cStep)
long ContextMode
Definition contextmode.h:43
fMode
Definition fmode.h:42
@ UNKNOWN
Unknown.
Definition fmode.h:43
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
#define OOFEM_EXPORT
Definition oofemcfg.h:7
#define _IFT_StaggeredProblem_Name

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