G+Smo  24.08.0
Geometry + Simulation Modules
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
gsALMConsistentCrisfield.h
Go to the documentation of this file.
1 
19 #pragma once
20 
22 
23 namespace gismo
24 {
25 
33 template <class T>
35 {
36 
37  typedef gsALMBase<T> Base;
38 
39  typedef typename Base::ALResidual_t ALResidual_t;
40  typedef typename Base::Jacobian_t Jacobian_t;
41  typedef typename Base::dJacobian_t dJacobian_t;
42 
43 public:
44 
45  using Base::setLength;
46 
47 protected:
48 
49  using Base::computeJacobian;
50  using Base::computeResidual;
52  using Base::computeUt;
53  using Base::computeUbar;
55  using Base::computeLength;
56 
57 public:
58 
60  gsALMConsistentCrisfield( const Jacobian_t &Jacobian,
61  const ALResidual_t&ALResidual,
62  const gsVector<T> &Force )
63  : Base(Jacobian,ALResidual,Force)
64  {
66  getOptions();
67 
68  initMethods();
69  }
70 
72  gsALMConsistentCrisfield( const dJacobian_t &dJacobian,
73  const ALResidual_t&ALResidual,
74  const gsVector<T> &Force )
75  : Base(dJacobian,ALResidual,Force)
76  {
78  getOptions();
79 
80  initMethods();
81  }
82 
83 protected:
84 
86  void initMethods();
88  void initiateStep();
90  void iterationFinish();
91 
93  void quasiNewtonPredictor();
95  void quasiNewtonIteration();
96 
98  void predictor();
99  void predictorGuess();
101  void iteration();
102 
104  void initOutput();
106  void stepOutput();
107 
109  void defaultOptions();
111  void getOptions();
112 
113 protected:
114 
115  // Number of degrees of freedom
116  using Base::m_numDof;
117 
118  using Base::m_jacobian;
119  using Base::m_djacobian;
120  using Base::m_residualFun;
121  using Base::m_forcing;
122 
124  using Base::m_options;
125 
127  using Base::m_numIterations;
128 
130  using Base::m_maxIterations;
131 
133  using Base::m_arcLength;
134  using Base::m_arcLength_prev;
135 
137  using Base::m_verbose;
138 
140  using Base::m_note;
141 
143  using Base::m_converged;
144 
146  using Base::m_residueF;
147 
149  using Base::m_residueU;
150 
152  using Base::m_residueL;
153 
155  using Base::m_indicator;
156  using Base::m_negatives;
157 
159  using Base::m_relax;
160 
161  // Previous update
162  using Base::m_DeltaUold;
163  using Base::m_DeltaLold;
165  using Base::m_U;
166  using Base::m_Uprev;
167  using Base::m_Uguess;
169  using Base::m_DeltaU;
171  using Base::m_deltaUbar;
173  using Base::m_deltaUt;
175  using Base::m_deltaU;
176 
178  using Base::m_L;
179  using Base::m_Lprev;
180  using Base::m_Lguess;
182  using Base::m_DeltaL;
184  using Base::m_deltaL;
186  using Base::m_deltaLs;
187 
189  using Base::m_jacMat;
190  using Base::m_detKT;
191 
193  T m_phi;
194  bool m_phi_user;
195 };
196 
197 
198 } // namespace gismo
199 
200 #ifndef GISMO_BUILD_LIB
201 #include GISMO_HPP_HEADER(gsALMConsistentCrisfield.hpp)
202 #endif
gsVector< T > m_deltaLs
Vector with lambda updates.
Definition: gsALMBase.h:504
void initMethods()
See gsALMBase.
Definition: gsALMConsistentCrisfield.hpp:39
virtual gsStatus computeStability(bool jacobian=true, T shift=-1e2)
Calculates the stability of the solution x.
Definition: gsALMBase.hpp:521
virtual void computeUbar()
Compute .
Definition: gsALMBase.hpp:249
void quasiNewtonPredictor()
See gsALMBase.
Definition: gsALMConsistentCrisfield.hpp:55
gsVector< T > m_deltaUbar
u_bar
Definition: gsALMBase.h:491
bool m_converged
Convergence result.
Definition: gsALMBase.h:454
void initOutput()
See gsALMBase.
Definition: gsALMConsistentCrisfield.hpp:198
gsVector< T > m_deltaUt
u_t
Definition: gsALMBase.h:493
virtual void computeUt()
Compute .
Definition: gsALMBase.hpp:255
T m_residueU
Displacement residuum.
Definition: gsALMBase.h:464
T m_residueF
Force residuum.
Definition: gsALMBase.h:460
T m_relax
Relaxation factor.
Definition: gsALMBase.h:479
void initiateStep()
See gsALMBase.
Definition: gsALMConsistentCrisfield.hpp:90
T m_deltaL
Update of update of lambda.
Definition: gsALMBase.h:502
void iterationFinish()
See gsALMBase.
Definition: gsALMConsistentCrisfield.hpp:181
virtual void computeResidualNorms()
Compute the residual error norms.
Definition: gsALMBase.hpp:151
void getOptions()
See gsALMBase.
Definition: gsALMConsistentCrisfield.hpp:30
index_t m_maxIterations
Maximum number of Arc Length iterations allowed.
Definition: gsALMBase.h:421
gsVector< T > m_DeltaU
Update of displacement vector.
Definition: gsALMBase.h:489
void defaultOptions()
See gsALMBase.
Definition: gsALMConsistentCrisfield.hpp:23
T m_phi
Scaling parameter.
Definition: gsALMConsistentCrisfield.h:193
gsSparseMatrix< T > m_jacMat
Jacobian matrix.
Definition: gsALMBase.h:510
gsALMConsistentCrisfield(const dJacobian_t &dJacobian, const ALResidual_t &ALResidual, const gsVector< T > &Force)
Constructor using the jacobian that takes the solution and the solution step.
Definition: gsALMConsistentCrisfield.h:72
T m_DeltaL
Update of lambdaGeneralizedSelfAdjointEigenSolver.
Definition: gsALMBase.h:500
virtual void setLength(T length)
Set arc length to length.
Definition: gsALMBase.h:118
void iteration()
See gsALMBase.
Definition: gsALMConsistentCrisfield.hpp:75
T m_residueL
Load residuum.
Definition: gsALMBase.h:468
Base class to perform the arc length method to solve a nonlinear equation system. ...
void stepOutput()
See gsALMBase.
Definition: gsALMConsistentCrisfield.hpp:222
virtual void computeLength()
Compute the adaptive arc-length.
Definition: gsALMBase.hpp:106
Performs the Consistent Crisfield arc length method to solve a nonlinear equation system...
Definition: gsALMConsistentCrisfield.h:34
gsVector< T > m_U
Displacement vector (present, at previously converged point)
Definition: gsALMBase.h:487
T m_L
Lambda (present, at previously converged point)
Definition: gsALMBase.h:498
void quasiNewtonIteration()
See gsALMBase.
Definition: gsALMConsistentCrisfield.hpp:66
index_t m_numIterations
Number of Arc Length iterations performed.
Definition: gsALMBase.h:418
T m_arcLength
Length of the step in the u,f plane.
Definition: gsALMBase.h:427
gsALMConsistentCrisfield(const Jacobian_t &Jacobian, const ALResidual_t &ALResidual, const gsVector< T > &Force)
Constructor.
Definition: gsALMConsistentCrisfield.h:60
Performs the arc length method to solve a nonlinear system of equations.
Definition: gsALMBase.h:37
void predictor()
See gsALMBase.
Definition: gsALMConsistentCrisfield.hpp:102
T m_indicator
Indicator for bifurcation.
Definition: gsALMBase.h:475
gsVector< T > m_deltaU
Update of update of displacement vector.
Definition: gsALMBase.h:495