OOFEM 3.0
Loading...
Searching...
No Matches
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 - 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 staticstructural_h
36#define staticstructural_h
37
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"
52namespace oofem {
53class SparseMtrx;
54class DofDistributedPrimaryField;
55
61{
62protected:
68
69public:
70 std :: unique_ptr< SparseMtrx >stiffnessMatrix;
71protected:
72
73 std :: unique_ptr< DofDistributedPrimaryField >field;
74
76
77 std :: unique_ptr< SparseNonLinearSystemNM >nMethod;
78 std :: string solverType;
79 MatResponseMode stiffMode;
80
81 double loadLevel;
82 double deltaT;
84
86
88
89public:
90 StaticStructural(int i, EngngModel *master=nullptr);
91 virtual ~StaticStructural();
92 void initializeFrom(InputRecord &ir) override;
93 void updateAttributes(MetaStep *mStep) override;
94
95 void solveYourself() override;
96 void solveYourselfAt(TimeStep *tStep) override;
97
98 void terminate(TimeStep *tStep) override;
99
100 void updateComponent(TimeStep *tStep, NumericalCmpn cmpn, Domain *d) override;
101 void updateSolution(FloatArray &solutionVector, TimeStep *tStep, Domain *d) override;
102 void updateInternalRHS(FloatArray &answer, TimeStep *tStep, Domain *d, FloatArray *eNorm) override;
103 void updateMatrix(SparseMtrx &mat, TimeStep *tStep, Domain *d) override;
104
105 double giveUnknownComponent(ValueModeType type, TimeStep *tStep, Domain *d, Dof *dof) override;
106 bool newDofHandling() override { return true; }
107
108 void updateDomainLinks() override;
109
110 int forceEquationNumbering() override;
111
112 double giveLoadLevel() override { return loadLevel; }
113 double giveEndOfTimeOfInterest() override;
115
116 //fMode giveFormulation() override { return TL; }
117
118 bool requiresEquationRenumbering(TimeStep *tStep) override;
119
120 int requiresUnknownsDictionaryUpdate() override { return true; }
121 int giveUnknownDictHashIndx(ValueModeType mode, TimeStep *tStep) override;
122 void computeExternalLoadReactionContribution(FloatArray &reactions, TimeStep *tStep, int di) override;
123 // identification
124 const char *giveInputRecordName() const { return _IFT_StaticStructural_Name; }
125 const char *giveClassName() const override { return "StaticStructural"; }
126
127 void saveContext(DataStream &stream, ContextMode mode) override;
128 void restoreContext(DataStream &stream, ContextMode mode) override;
129
130 int estimateMaxPackSize(IntArray &commMap, DataStream &buff, int packUnpackType) override;
131
132
133 void restartYourself(TimeStep *tS) override;
134
135 virtual TimeStep *giveCurrentStep(bool force = false) override {
136 if ( master && (!force)) {
137 return master->giveCurrentStep();
138 } else {
139 return timeStepController->giveCurrentStep();
140 }
141 }
142
143
144
145
149 virtual TimeStep *givePreviousStep(bool force = false) override {
150 if ( master && (!force)) {
151 return master->givePreviousStep();
152 } else {
153 return timeStepController->givePreviousStep();
154 }
155 }
156
157 void adaptTimeStep(double nIter) override {
158 timeStepController->adaptTimeStep(nIter);
159 }
160
161
162
163 FieldPtr giveField (FieldType key, TimeStep *) override;
164
165
166
167};
168} // end namespace oofem
169#endif // staticstructural_h
std::unique_ptr< TimeStepController > timeStepController
Time Step controller is responsible for collecting data from analysis, elements, and materials,...
Definition engngm.h:287
EngngModel * master
Master e-model; if defined receiver is in maintained (slave) mode.
Definition engngm.h:274
int requiresUnknownsDictionaryUpdate() override
int estimateMaxPackSize(IntArray &commMap, DataStream &buff, int packUnpackType) override
void restoreContext(DataStream &stream, ContextMode mode) override
StaticStructural(int i, EngngModel *master=nullptr)
int giveUnknownDictHashIndx(ValueModeType mode, TimeStep *tStep) override
void adaptTimeStep(double nIter) override
void updateComponent(TimeStep *tStep, NumericalCmpn cmpn, Domain *d) override
void restartYourself(TimeStep *tS) override
void updateMatrix(SparseMtrx &mat, TimeStep *tStep, Domain *d) override
void saveContext(DataStream &stream, ContextMode mode) override
NumericalMethod * giveNumericalMethod(MetaStep *mStep) override
Returns reference to receiver's numerical method.
FieldPtr giveField(FieldType key, TimeStep *) override
double giveEndOfTimeOfInterest() override
Returns end of time interest (time corresponding to end of time integration).
void updateAttributes(MetaStep *mStep) override
void initializeFrom(InputRecord &ir) override
std ::unique_ptr< SparseMtrx > stiffnessMatrix
const char * giveClassName() const override
Returns class name of the receiver.
virtual TimeStep * givePreviousStep(bool force=false) override
void solveYourself() override
virtual TimeStep * giveCurrentStep(bool force=false) override
std ::unique_ptr< SparseNonLinearSystemNM > nMethod
void terminate(TimeStep *tStep) override
std ::unique_ptr< DofDistributedPrimaryField > field
void solveYourselfAt(TimeStep *tStep) override
SparseMtrxType sparseMtrxType
bool requiresEquationRenumbering(TimeStep *tStep) override
void updateSolution(FloatArray &solutionVector, TimeStep *tStep, Domain *d) override
const char * giveInputRecordName() const
void updateDomainLinks() override
void updateInternalRHS(FloatArray &answer, TimeStep *tStep, Domain *d, FloatArray *eNorm) override
bool newDofHandling() override
double giveLoadLevel() override
Returns the current load level.
double giveUnknownComponent(ValueModeType type, TimeStep *tStep, Domain *d, Dof *dof) override
void computeExternalLoadReactionContribution(FloatArray &reactions, TimeStep *tStep, int di) override
int forceEquationNumbering() override
StructuralEngngModel(int i, EngngModel *master=nullptr)
Creates new StructuralEngngModel with number i, associated to domain d.
long ContextMode
Definition contextmode.h:43
FieldType
Physical type of field.
Definition field.h:64
std::shared_ptr< Field > FieldPtr
Definition field.h:78
#define _IFT_StaticStructural_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