OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
staticstructural.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 staticstructural_h
36 #define staticstructural_h
37 
38 #include "../sm/EngineeringModels/structengngmodel.h"
39 #include "../sm/EngineeringModels/xfemsolverinterface.h"
40 #include "sparsenonlinsystemnm.h"
41 #include "sparsemtrxtype.h"
42 #include "staggeredsolver.h"
43 
44 #define _IFT_StaticStructural_Name "staticstructural"
45 #define _IFT_StaticStructural_deltat "deltat"
46 #define _IFT_StaticStructural_prescribedTimes "prescribedtimes"
47 #define _IFT_StaticStructural_solvertype "solvertype"
48 #define _IFT_StaticStructural_stiffmode "stiffmode"
49 #define _IFT_StaticStructural_nonlocalExtension "nonlocalext"
50 
51 #define _IFT_StaticStructural_recomputeaftercrackpropagation "recomputeaftercrackprop"
52 namespace oofem {
53 class SparseMtrx;
54 
60 {
61 protected:
65 
66 public:
67  std :: unique_ptr< SparseMtrx >stiffnessMatrix;
68 protected:
69 
70  std :: unique_ptr< PrimaryField >field;
71 
73 
74  std :: unique_ptr< SparseNonLinearSystemNM >nMethod;
75  std :: string solverType;
77 
78  double loadLevel;
79  double deltaT;
81 
83 
85 
86 public:
87  StaticStructural(int i, EngngModel * _master = NULL);
88  virtual ~StaticStructural();
90  virtual void updateAttributes(MetaStep *mStep);
91 
92  virtual void solveYourself();
93  virtual void solveYourselfAt(TimeStep *tStep);
94 
95  virtual void terminate(TimeStep *tStep);
96 
97  virtual void updateComponent(TimeStep *tStep, NumericalCmpn cmpn, Domain *d);
98 
99  virtual double giveUnknownComponent(ValueModeType type, TimeStep *tStep, Domain *d, Dof *dof);
100 
101  virtual void updateDomainLinks();
102 
103  virtual int forceEquationNumbering();
104 
105  virtual double giveLoadLevel() { return loadLevel; }
106  virtual TimeStep *giveNextStep();
107  virtual double giveEndOfTimeOfInterest();
109 
110  virtual fMode giveFormulation() { return TL; }
111 
112  void setSolution(TimeStep *tStep, const FloatArray &vectorToStore);
113 
114  virtual bool requiresEquationRenumbering(TimeStep *tStep);
115 
116  virtual int requiresUnknownsDictionaryUpdate() { return true; }
117  virtual int giveUnknownDictHashIndx(ValueModeType mode, TimeStep *tStep);
118 
119  // identification
120  virtual const char *giveInputRecordName() const { return _IFT_StaticStructural_Name; }
121  virtual const char *giveClassName() const { return "StaticStructural"; }
122 
123  virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode);
125 
126  virtual int estimateMaxPackSize(IntArray &commMap, DataStream &buff, int packUnpackType);
127 };
128 } // end namespace oofem
129 #endif // staticstructural_h
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode)
Stores the state of model to output stream.
virtual void solveYourself()
Starts solution process.
virtual int forceEquationNumbering()
Forces equation renumbering on all domains associated to engng model.
Class and object Domain.
Definition: domain.h:115
virtual void updateAttributes(MetaStep *mStep)
Update receiver attributes according to step metaStep attributes.
Class representing meta step.
Definition: metastep.h:62
Total Lagrange.
Definition: fmode.h:44
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
MatResponseMode stiffMode
Provides extra solver functionality needed for XFEM.
virtual void terminate(TimeStep *tStep)
Terminates the solution of time step.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Definition: valuemodetype.h:78
This base class is an abstraction for numerical algorithm.
Definition: nummet.h:80
Solves a static structural problem.
virtual NumericalMethod * giveNumericalMethod(MetaStep *mStep)
Returns reference to receiver&#39;s numerical method.
virtual int estimateMaxPackSize(IntArray &commMap, DataStream &buff, int packUnpackType)
Determines the space necessary for send/receive buffer.
Class implementing an array of integers.
Definition: intarray.h:61
MatResponseMode
Describes the character of characteristic material matrix.
std::unique_ptr< SparseMtrx > stiffnessMatrix
virtual double giveLoadLevel()
Returns the current load level.
virtual fMode giveFormulation()
Indicates type of non linear computation (total or updated formulation).
NumericalCmpn
Type representing numerical component.
Definition: numericalcmpn.h:46
std::unique_ptr< SparseNonLinearSystemNM > nMethod
virtual const char * giveInputRecordName() const
SparseMtrxType
Enumerative type used to identify the sparse matrix type.
virtual void updateDomainLinks()
Updates domain links after the domains of receiver have changed.
InitialGuess
Means to choose methods for finding a good initial guess.
Definition: engngm.h:197
SparseMtrxType sparseMtrxType
virtual void updateComponent(TimeStep *tStep, NumericalCmpn cmpn, Domain *d)
Updates components mapped to numerical method if necessary during solution process.
virtual double giveEndOfTimeOfInterest()
Returns end of time interest (time corresponding to end of time integration).
#define _IFT_StaticStructural_Name
virtual bool requiresEquationRenumbering(TimeStep *tStep)
Returns true if equation renumbering is required for given solution step.
Class representing vector of real numbers.
Definition: floatarray.h:82
virtual TimeStep * giveNextStep()
Returns next time step (next to current step) of receiver.
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
virtual void solveYourselfAt(TimeStep *tStep)
Solves problem for given time step.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode)
Restores the state of model from output stream.
Class representing the general Input Record.
Definition: inputrecord.h:101
fMode
Type representing the type of formulation (total or updated) of non-linear computation.
Definition: fmode.h:42
virtual int requiresUnknownsDictionaryUpdate()
Indicates if EngngModel requires Dofs dictionaries to be updated.
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Definition: contextmode.h:43
virtual double giveUnknownComponent(ValueModeType type, TimeStep *tStep, Domain *d, Dof *dof)
Returns requested unknown.
This class implements extension of EngngModel for structural models.
StaticStructural(int i, EngngModel *_master=NULL)
std::unique_ptr< PrimaryField > field
Abstract base class representing the "problem" under consideration.
Definition: engngm.h:181
virtual int giveUnknownDictHashIndx(ValueModeType mode, TimeStep *tStep)
This method is responsible for computing unique dictionary id (ie hash value) from given valueModeTyp...
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description in input reader.
Abstract class Dof represents Degree Of Freedom in finite element mesh.
Definition: dof.h:93
Class representing solution step.
Definition: timestep.h:80
void setSolution(TimeStep *tStep, const FloatArray &vectorToStore)
virtual const char * giveClassName() const
Returns class name of the receiver.

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:31 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011