OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
problemsequence.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 - 2013 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 problemsequence_h
36 #define problemsequence_h
37 
38 #include "engngm.h"
39 #include "inputrecord.h"
40 
42 
43 #define _IFT_ProblemSequence_Name "problemsequence"
44 #define _IFT_ProblemSequence_engineeringModels "engngms"
45 
46 
47 namespace oofem {
48 class Function;
49 
58 class OOFEM_EXPORT ProblemSequence : public EngngModel
59 {
60 protected:
62  std :: vector< std :: unique_ptr< EngngModel > >emodelList;
63  std :: vector< std :: string >inputStreamNames;
64 
67 
68 public:
70  ProblemSequence(int i, EngngModel * _master = NULL);
72  virtual ~ProblemSequence();
73 
74  ProblemSequence(const ProblemSequence &) = delete;
75  ProblemSequence & operator=(const ProblemSequence &) = delete;
76 
77  EngngModel & giveActiveModel() { return *emodelList[activeModel]; }
78 
79  virtual void solveYourself();
80 
81  //virtual void initializeYourself(TimeStep *tStep);
82  virtual int instanciateYourself(DataReader &dr, InputRecord *ir, const char *outFileName, const char *desc);
83  virtual IRResultType initializeFrom(InputRecord *ir);
84  virtual int checkProblemConsistency();
85 
86  virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode);
87  virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode);
88 
89  // identification
90  virtual const char *giveClassName() const { return "ProblemSequence"; }
91  virtual const char *giveInputRecordName() const { return _IFT_ProblemSequence_Name; }
92 
93 #ifdef __OOFEG
94  virtual void drawYourself(oofegGraphicContext &gc);
95  virtual void drawElements(oofegGraphicContext &gc);
96  virtual void drawNodes(oofegGraphicContext &gc);
97  virtual void showSparseMtrxStructure(int type, oofegGraphicContext &gc, TimeStep *tStep) { }
98 #endif
99 
100  virtual EngngModel *giveSlaveProblem(int i) { return NULL; }
101  virtual int giveNumberOfSlaveProblems() { return 0; }
102 
103  virtual int instanciateDefaultMetaStep(InputRecord *ir) { return 1; }
104 };
105 } // end namespace oofem
106 #endif // problemsequence_h
virtual int giveNumberOfSlaveProblems()
Returns number of slave problems.
int activeModel
Keeps track of the active model in the analysis sequence.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
virtual const char * giveInputRecordName() const
std::vector< std::string > inputStreamNames
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
Class representing the abstraction for input data source.
Definition: datareader.h:50
EngngModel & giveActiveModel()
virtual const char * giveClassName() const
Returns class name of the receiver.
virtual EngngModel * giveSlaveProblem(int i)
Returns i-th slave problem.
Meta-engineering problem used to solve a sequence off different problems, all using the same domain...
std::vector< std::unique_ptr< EngngModel > > emodelList
List of engineering models to solve sequentially.
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
#define _IFT_ProblemSequence_Name
virtual int instanciateDefaultMetaStep(InputRecord *ir)
Instanciate default metastep, if nmsteps is zero.
virtual void showSparseMtrxStructure(int type, oofegGraphicContext &gc, TimeStep *tStep)
Shows the sparse structure of required matrix, type == 1 stiffness.
Class representing the general Input Record.
Definition: inputrecord.h:101
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Definition: contextmode.h:43
Abstract base class representing the "problem" under consideration.
Definition: engngm.h:181
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class representing solution step.
Definition: timestep.h:80

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:30 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011