OOFEM 3.0
Loading...
Searching...
No Matches
nlinearstatic.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 nlinearstatic_h
36#define nlinearstatic_h
37
40#include "function.h"
41
43
44#define _IFT_NonLinearStatic_Name "nonlinearstatic"
45#define _IFT_NonLinearStatic_controlmode "controlmode"
46#define _IFT_NonLinearStatic_deltat "deltat"
47#define _IFT_NonLinearStatic_deltatfunction "deltatfunction"
48#define _IFT_NonLinearStatic_stiffmode "stiffmode"
49#define _IFT_NonLinearStatic_refloadmode "refloadmode"
50#define _IFT_NonLinearStatic_keepll "keepll"
51#define _IFT_NonLinearStatic_donotfixload "donotfixload"
52#define _IFT_NonLinearStatic_nonlocstiff "nonlocstiff"
53#define _IFT_NonLinearStatic_nonlocalext "nonlocalext"
54#define _IFT_NonLinearStatic_loadBalancingFlag "loadbalancingflag"
55#define _IFT_NonLinearStatic_forceloadBalancingFlag "forceloadbalancingflag"
56#define _IFT_NonLinearStatic_updateElasticStiffnessFlag "updateelasticstiffnessflag"
58
59namespace oofem {
67
72
91{
92protected:
96
108
122 double deltaT;
125
135 SparseNonLinearSystemNM :: referenceLoadInputModeType refLoadInputMode;
136
139
140public:
141 NonLinearStatic(int i, EngngModel *master = nullptr);
142 virtual ~NonLinearStatic();
143
145 double giveDeltaT(int n);
146 void solveYourself() override;
147 void solveYourselfAt(TimeStep *tStep) override;
148 void terminate(TimeStep *tStep) override;
149
150 void printOutputAt(FILE *file, TimeStep *tStep) override;
151
152 void updateComponent(TimeStep *tStep, NumericalCmpn, Domain *d) override;
153 void updateSolution(FloatArray &solutionVector, TimeStep *tStep, Domain *d) override;
154 void updateMatrix(SparseMtrx &mat, TimeStep *tStep, Domain *d) override;
155 void updateAttributes(MetaStep *mStep) override;
156
157 double giveUnknownComponent(ValueModeType type, TimeStep *tStep, Domain *d, Dof *dof) override;
158 void initializeFrom(InputRecord &ir) override;
159 TimeStep *giveSolutionStepWhenIcApply(bool force = false) override;
161 TimeStep *giveNextStep() override;
162 double giveLoadLevel() override { return cumulatedLoadLevel + loadLevel; }
163
164 void saveContext(DataStream &stream, ContextMode mode) override;
165 void restoreContext(DataStream &stream, ContextMode mode) override;
166
167 void updateDomainLinks() override;
168
169 // identification
170 const char *giveClassName() const override { return "NonLinearStatic"; }
172 int useNonlocalStiffnessOption() override { return this->nonlocalStiffnessFlag; }
174 int giveUnknownDictHashIndx(ValueModeType mode, TimeStep *tStep) override { return ( int ) mode; }
176
177#ifdef __OOFEG
178 void showSparseMtrxStructure(int type, oofegGraphicContext &gc, TimeStep *tStep) override;
179#endif
180
181 int estimateMaxPackSize(IntArray &commMap, DataStream &buff, int packUnpackType) override;
182#ifdef __MPI_PARALLEL_MODE
183 LoadBalancer *giveLoadBalancer() override;
185
186#endif
187
188protected:
189 void assemble(SparseMtrx &answer, TimeStep *tStep, const MatrixAssembler &ma,
190 const UnknownNumberingScheme &, Domain *domain) override;
191 void proceedStep(int di, TimeStep *tStep);
192 virtual void updateLoadVectors(TimeStep *tStep);
193 void computeExternalLoadReactionContribution(FloatArray &reactions, TimeStep *tStep, int di) override;
194 void assembleIncrementalReferenceLoadVectors(FloatArray &_incrementalLoadVector,
195 FloatArray &_incrementalLoadVectorOfPrescribed,
196 SparseNonLinearSystemNM :: referenceLoadInputModeType _refMode,
197 Domain *sourceDomain, TimeStep *tStep);
198
199 void packMigratingData(TimeStep *tStep) override;
200 void unpackMigratingData(TimeStep *tStep) override;
201 double giveInitialTime() override {return 1;}
202
203};
204} // end namespace oofem
205#endif // nlinearstatic_h
enum fMode nonLinFormulation
Type of non linear formulation (total or updated formulation).
Definition engngm.h:283
double giveDeltaT()
Returns time step size from the time step controlelr.
Definition engngm.h:424
EngngModel * master
Master e-model; if defined receiver is in maintained (slave) mode.
Definition engngm.h:274
LinearStatic(int i, EngngModel *master=nullptr)
SparseNonLinearSystemNM::referenceLoadInputModeType refLoadInputMode
FloatArray initialLoadVectorOfPrescribed
A load vector which does not scale for prescribed DOFs.
void restoreContext(DataStream &stream, ContextMode mode) override
int giveUnknownDictHashIndx(ValueModeType mode, TimeStep *tStep) override
For load balancing purposes we store all values so hash is computed from mode value only.
void printOutputAt(FILE *file, TimeStep *tStep) override
TimeStep * giveNextStep() override
Returns next time step (next to current step) of receiver.
FloatArray incrementalLoadVector
FloatArray incrementalLoadVectorOfPrescribed
Incremental Load Vector for prescribed DOFs.
void initializeFrom(InputRecord &ir) override
const char * giveClassName() const override
Returns class name of the receiver.
double giveLoadLevel() override
Returns the current load level.
int dtFunction
Associated time function for time step increment.
double deltaT
Intrinsic time increment.
void showSparseMtrxStructure(int type, oofegGraphicContext &gc, TimeStep *tStep) override
double giveInitialTime() override
return time at the begining of analysis
void packMigratingData(TimeStep *tStep) override
double giveUnknownComponent(ValueModeType type, TimeStep *tStep, Domain *d, Dof *dof) override
void terminate(TimeStep *tStep) override
NonLinearStatic(int i, EngngModel *master=nullptr)
TimeStep * giveSolutionStepWhenIcApply(bool force=false) override
void updateComponent(TimeStep *tStep, NumericalCmpn, Domain *d) override
void proceedStep(int di, TimeStep *tStep)
fMode giveFormulation() override
LoadBalancer * giveLoadBalancer() override
void assembleIncrementalReferenceLoadVectors(FloatArray &_incrementalLoadVector, FloatArray &_incrementalLoadVectorOfPrescribed, SparseNonLinearSystemNM ::referenceLoadInputModeType _refMode, Domain *sourceDomain, TimeStep *tStep)
NonLinearStatic_controlType controlMode
Characterizes the type of control used.
int giveCurrentNumberOfIterations() override
NumericalMethod * giveNumericalMethod(MetaStep *mStep) override
Returns reference to receiver's numerical method.
virtual void updateLoadVectors(TimeStep *tStep)
void updateAttributes(MetaStep *mStep) override
void updateSolution(FloatArray &solutionVector, TimeStep *tStep, Domain *d) override
InitialGuess initialGuessType
The initial guess type to use before starting the nonlinear solver.
void unpackMigratingData(TimeStep *tStep) override
NonLinearStatic_stiffnessMode stiffMode
void saveContext(DataStream &stream, ContextMode mode) override
int estimateMaxPackSize(IntArray &commMap, DataStream &buff, int packUnpackType) override
void solveYourself() override
void updateMatrix(SparseMtrx &mat, TimeStep *tStep, Domain *d) override
void updateDomainLinks() override
LoadBalancerMonitor * giveLoadBalancerMonitor() override
int useNonlocalStiffnessOption() override
Returns nonzero if nonlocal stiffness option activated.
ConvergedReason numMetStatus
void computeExternalLoadReactionContribution(FloatArray &reactions, TimeStep *tStep, int di) override
void solveYourselfAt(TimeStep *tStep) override
Function * giveDtFunction()
FloatArray incrementOfDisplacement
void assemble(SparseMtrx &answer, TimeStep *tStep, const MatrixAssembler &ma, const UnknownNumberingScheme &, Domain *domain) override
SparseNonLinearSystemNM * nMethod
Numerical method used to solve the problem.
FloatArray initialLoadVector
A load vector already applied, which does not scales.
long ContextMode
Definition contextmode.h:43
fMode
Definition fmode.h:42
NonLinearStatic_stiffnessMode
Type determining the stiffness mode.
@ nls_secantInitialStiffness
The secant stiffness is used and updated only at the beginning of new load step.
@ nls_secantStiffness
The secant stiffness is used and updated whenever requested.
@ nls_tangentStiffness
The tangent stiffness is used and updated whenever requested.
@ nls_elasticStiffness
The initial elastic stiffness is used in the whole solution.
NonLinearStatic_controlType
Type determining type of loading control. This type determines the solver to be used.
@ nls_indirectControl
A generalized norm of displacement and loading vectors is controlled. In current implementation,...
@ nls_directControl
Describes the direct control where load or displacement (or both) are controlled.
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]

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