KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
poromechanics_ramm_arc_length_nonlocal_strategy.hpp
Go to the documentation of this file.
1 
2 // | / |
3 // ' / __| _` | __| _ \ __|
4 // . \ | ( | | ( |\__ `
5 // _|\_\_| \__,_|\__|\___/ ____/
6 // Multi-Physics
7 //
8 // License: BSD License
9 // Kratos default license: kratos/license.txt
10 //
11 // Main authors: Ignasi de Pouplana
12 //
13 
14 
15 #if !defined(KRATOS_POROMECHANICS_RAMM_ARC_LENGTH_NONLOCAL_STRATEGY)
16 #define KRATOS_POROMECHANICS_RAMM_ARC_LENGTH_NONLOCAL_STRATEGY
17 
18 // Project includes
23 
24 // Application includes
26 
27 namespace Kratos
28 {
29 
30 template<class TSparseSpace,class TDenseSpace,class TLinearSolver>
31 
32 class PoromechanicsRammArcLengthNonlocalStrategy : public PoromechanicsRammArcLengthStrategy<TSparseSpace, TDenseSpace, TLinearSolver>
33 {
34 
35 public:
36 
38 
46  typedef TSparseSpace SparseSpaceType;
53  using Grandx2MotherType::mpA; //Tangent matrix
54  using Grandx2MotherType::mpb; //Residual vector of iteration i
55  using Grandx2MotherType::mpDx; //Delta x of iteration i
60  using MotherType::mpf;
61  using MotherType::mpDxf;
62  using MotherType::mpDxb;
65  using MotherType::mRadius;
67  using MotherType::mLambda;
70 
71 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
72 
76  typename TSchemeType::Pointer pScheme,
77  typename TConvergenceCriteriaType::Pointer pNewConvergenceCriteria,
78  typename TBuilderAndSolverType::Pointer pNewBuilderAndSolver,
79  Parameters& rParameters,
80  int MaxIterations = 30,
81  bool CalculateReactions = false,
82  bool ReformDofSetAtEachStep = false,
83  bool MoveMeshFlag = false
84  ) : PoromechanicsRammArcLengthStrategy<TSparseSpace, TDenseSpace, TLinearSolver>(model_part, pScheme,
85  pNewConvergenceCriteria, pNewBuilderAndSolver, rParameters, MaxIterations, CalculateReactions, ReformDofSetAtEachStep, MoveMeshFlag)
86  {
88  mSearchNeighboursAtEachStep = rParameters["search_neighbours_step"].GetBool();
89  }
90 
91  //------------------------------------------------------------------------------------
92 
95 
96 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
97 
98  void Initialize() override
99  {
100  KRATOS_TRY
101 
102  if (mInitializeWasPerformed == false)
103  {
105 
106  if(mNonlocalDamageIsInitialized == false)
107  {
108  if(BaseType::GetModelPart().GetProcessInfo()[DOMAIN_SIZE]==2)
109  {
111  }
112  else
113  {
115  }
117 
119  }
120  }
121 
122  KRATOS_CATCH( "" )
123  }
124 
125 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
126 
127  void InitializeSolutionStep() override
128  {
129  KRATOS_TRY
130 
132 
133  if(mNonlocalDamageIsInitialized == false)
134  {
135  if(BaseType::GetModelPart().GetProcessInfo()[DOMAIN_SIZE]==2)
136  {
138  }
139  else
140  {
142  }
144 
146  }
147 
148  KRATOS_CATCH( "" )
149  }
150 
151 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
152 
153  bool SolveSolutionStep() override
154  {
155  // ********** Prediction phase **********
156 
157  KRATOS_INFO("Ramm's Arc Length Nonlocal Strategy") << "INITIAL ARC-LENGTH RADIUS: " << mRadius_0 << std::endl;
158 
159  KRATOS_INFO("Ramm's Arc Length Nonlocal Strategy") << "ARC-LENGTH RADIUS: " << mRadius/mRadius_0 << " X initial radius" << std::endl;
160 
161  // Initialize variables
162  DofsArrayType& rDofSet = mpBuilderAndSolver->GetDofSet();
163  TSystemMatrixType& mA = *mpA;
164  TSystemVectorType& mDx = *mpDx;
166  TSystemVectorType& mf = *mpf;
167  TSystemVectorType& mDxb = *mpDxb;
168  TSystemVectorType& mDxf = *mpDxf;
169  TSystemVectorType& mDxPred = *mpDxPred;
170  TSystemVectorType& mDxStep = *mpDxStep;
171 
172  //initializing the parameters of the iteration loop
173  double NormDx;
174  unsigned int iteration_number = 1;
175  BaseType::GetModelPart().GetProcessInfo()[NL_ITERATION_NUMBER] = iteration_number;
176  bool is_converged = false;
177  mpScheme->InitializeNonLinIteration(BaseType::GetModelPart(), mA, mDx, mb);
179  is_converged = mpConvergenceCriteria->PreCriteria(BaseType::GetModelPart(), rDofSet, mA, mDx, mb);
180 
181  TSparseSpace::SetToZero(mA);
182  TSparseSpace::SetToZero(mb);
183  TSparseSpace::SetToZero(mDxf);
184 
185  // Note: This is not so efficient, but I want to solve mA*mDxf=mf without losing mf
186  this->BuildWithDirichlet(mA, mDxf, mb);
187  noalias(mb) = mf;
188  mpBuilderAndSolver->SystemSolve(mA, mDxf, mb);
189 
190  //update results
191  double DLambda = mRadius/TSparseSpace::TwoNorm(mDxf);
192  mDLambdaStep = DLambda;
193  mLambda += DLambda;
194  noalias(mDxPred) = DLambda*mDxf;
195  noalias(mDxStep) = mDxPred;
196  this->Update(rDofSet, mA, mDxPred, mb);
197 
198  //move the mesh if needed
200 
201  // ********** Correction phase (iteration cicle) **********
202  if (is_converged == true)
203  {
204  mpConvergenceCriteria->InitializeSolutionStep(BaseType::GetModelPart(), rDofSet, mA, mDxf, mb);
205  if (mpConvergenceCriteria->GetActualizeRHSflag() == true)
206  {
207  TSparseSpace::SetToZero(mb);
209  }
210  is_converged = mpConvergenceCriteria->PostCriteria(BaseType::GetModelPart(), rDofSet, mA, mDxf, mb);
211  }
212 
213  while (is_converged == false && iteration_number++ < mMaxIterationNumber)
214  {
215  //setting the number of iteration
216  BaseType::GetModelPart().GetProcessInfo()[NL_ITERATION_NUMBER] = iteration_number;
217 
218  mpScheme->InitializeNonLinIteration(BaseType::GetModelPart(), mA, mDx, mb);
220 
221  is_converged = mpConvergenceCriteria->PreCriteria(BaseType::GetModelPart(), rDofSet, mA, mDx, mb);
222 
223  TSparseSpace::SetToZero(mA);
224  TSparseSpace::SetToZero(mb);
225  TSparseSpace::SetToZero(mDxf);
226 
227  // Note: This is not so efficient, but I want to solve mA*mDxf=mf without losing mf
228  this->BuildWithDirichlet(mA, mDxf, mb);
229  noalias(mb) = mf;
230  mpBuilderAndSolver->SystemSolve(mA, mDxf, mb);
231 
232  TSparseSpace::SetToZero(mA);
233  TSparseSpace::SetToZero(mb);
234  TSparseSpace::SetToZero(mDxb);
235 
236  mpBuilderAndSolver->BuildAndSolve(mpScheme, BaseType::GetModelPart(), mA, mDxb, mb);
237 
238  DLambda = -TSparseSpace::Dot(mDxPred, mDxb)/TSparseSpace::Dot(mDxPred, mDxf);
239 
240  noalias(mDx) = mDxb + DLambda*mDxf;
241 
242  //Check solution before update
243  if( mNormxEquilibrium > 1.0e-10 )
244  {
245  NormDx = TSparseSpace::TwoNorm(mDx);
246 
247  if( (NormDx/mNormxEquilibrium) > 1.0e3 || (std::abs(DLambda)/std::abs(mLambda-mDLambdaStep)) > 1.0e3 )
248  {
249  is_converged = false;
250  break;
251  }
252  }
253 
254  //update results
255  mDLambdaStep += DLambda;
256  mLambda += DLambda;
257  noalias(mDxStep) += mDx;
258  this->Update(rDofSet, mA, mDx, mb);
259 
260  //move the mesh if needed
262 
263  mpScheme->FinalizeNonLinIteration(BaseType::GetModelPart(), mA, mDx, mb);
265 
266  // *** Check Convergence ***
267 
268  if (is_converged == true)
269  {
270  if (mpConvergenceCriteria->GetActualizeRHSflag() == true)
271  {
272  TSparseSpace::SetToZero(mb);
274  }
275  is_converged = mpConvergenceCriteria->PostCriteria(BaseType::GetModelPart(), rDofSet, mA, mDx, mb);
276  }
277 
278  }//While
279 
280  // Check iteration_number
281  if (iteration_number >= mMaxIterationNumber)
282  {
283  is_converged = true;
284  //plots a warning if the maximum number of iterations is exceeded
285  if(BaseType::GetModelPart().GetCommunicator().MyPID() == 0)
286  {
287  this->MaxIterationsExceeded();
288  }
289  }
290 
291  //calculate reactions if required
292  if (mCalculateReactionsFlag == true)
293  {
294  mpBuilderAndSolver->CalculateReactions(mpScheme, BaseType::GetModelPart(), mA, mDx, mb);
295  }
296 
297  BaseType::GetModelPart().GetProcessInfo()[IS_CONVERGED] = is_converged;
298 
299  return is_converged;
300  }
301 
302 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
303 
304  void FinalizeSolutionStep() override
305  {
306  KRATOS_TRY
307 
309 
310  if(mSearchNeighboursAtEachStep == true)
311  {
314  }
315 
316  KRATOS_CATCH("")
317  }
318 
319 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
320 
321  void Clear() override
322  {
323  KRATOS_TRY
324 
326 
327  if(mSearchNeighboursAtEachStep == false)
328  {
331  }
332 
333  KRATOS_CATCH( "" )
334  }
335 
336 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
337 
338 protected:
339 
344 
345 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
346 
347  bool CheckConvergence() override
348  {
349  // ********** Prediction phase **********
350 
351  // Initialize variables
352  DofsArrayType& rDofSet = mpBuilderAndSolver->GetDofSet();
353  TSystemMatrixType& mA = *mpA;
354  TSystemVectorType& mDx = *mpDx;
356 
357  mpScheme->InitializeNonLinIteration(BaseType::GetModelPart(), mA, mDx, mb);
359 
360  TSparseSpace::SetToZero(mA);
361  TSparseSpace::SetToZero(mb);
362  TSparseSpace::SetToZero(mDx);
363 
364  mpBuilderAndSolver->BuildAndSolve(mpScheme, BaseType::GetModelPart(), mA, mDx, mb);
365 
366  mpScheme->Update(BaseType::GetModelPart(), rDofSet, mA, mDx, mb);
367 
368  //move the mesh if needed
370 
371  mpScheme->FinalizeNonLinIteration(BaseType::GetModelPart(), mA, mDx, mb);
372 
373  unsigned int iteration_number = 0;
374  bool is_converged = false;
375  double dofs_ratio = 1000.0;
376  double ReferenceDofsNorm;
377  double NormDx;
378 
379  // ********** Correction phase (iteration cicle) **********
380 
381  while (is_converged == false && iteration_number < mMaxIterationNumber)
382  {
383  //setting the number of iteration
384  iteration_number += 1;
385  BaseType::GetModelPart().GetProcessInfo()[NL_ITERATION_NUMBER] = iteration_number;
386 
387  mpScheme->InitializeNonLinIteration(BaseType::GetModelPart(), mA, mDx, mb);
389 
390  TSparseSpace::SetToZero(mA);
391  TSparseSpace::SetToZero(mb);
392  TSparseSpace::SetToZero(mDx);
393 
394  mpBuilderAndSolver->BuildAndSolve(mpScheme, BaseType::GetModelPart(), mA, mDx, mb);
395 
396  mpScheme->Update(BaseType::GetModelPart(), rDofSet, mA, mDx, mb);
397 
398  //move the mesh if needed
400 
401  mpScheme->FinalizeNonLinIteration(BaseType::GetModelPart(), mA, mDx, mb);
403 
404  NormDx = TSparseSpace::TwoNorm(mDx);
405  ReferenceDofsNorm = this->CalculateReferenceDofsNorm(rDofSet);
406  dofs_ratio = NormDx/ReferenceDofsNorm;
407  KRATOS_INFO("Ramm's Arc Length Nonlocal Strategy") << "TEST ITERATION: " << iteration_number << std::endl;
408  KRATOS_INFO("Ramm's Arc Length Nonlocal Strategy") << " Dofs Ratio = " << dofs_ratio << std::endl;
409 
410  if(dofs_ratio <= 1.0e-3)
411  is_converged = true;
412  }
413 
414  return is_converged;
415  }
416 
417 }; // Class PoromechanicsRammArcLengthNonlocalStrategy
418 
419 } // namespace Kratos
420 
421 #endif // KRATOS_POROMECHANICS_RAMM_ARC_LENGTH_NONLOCAL_STRATEGY defined
This is the base class to define the different convergence criterion considered.
Definition: convergence_criteria.h:58
Implicit solving strategy base class This is the base class from which we will derive all the implici...
Definition: implicit_solving_strategy.h:61
BaseType::TSystemVectorType TSystemVectorType
Definition: implicit_solving_strategy.h:72
Scheme< TSparseSpace, TDenseSpace > TSchemeType
Definition: implicit_solving_strategy.h:82
BuilderAndSolver< TSparseSpace, TDenseSpace, TLinearSolver > TBuilderAndSolverType
Definition: implicit_solving_strategy.h:84
BaseType::TSystemMatrixType TSystemMatrixType
Definition: implicit_solving_strategy.h:70
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
ProcessInfo & GetProcessInfo()
Definition: model_part.h:1746
Definition: nonlocal_damage_2D_utilities.hpp:26
Definition: nonlocal_damage_3D_utilities.hpp:26
Definition: nonlocal_damage_utilities.hpp:36
virtual void SearchGaussPointsNeighbours(Parameters *pParameters, ModelPart &rModelPart)
Definition: nonlocal_damage_utilities.hpp:82
void CalculateNonlocalEquivalentStrain(Parameters *pParameters, const ProcessInfo &CurrentProcessInfo)
Definition: nonlocal_damage_utilities.hpp:89
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
bool GetBool() const
This method returns the boolean contained in the current Parameter.
Definition: kratos_parameters.cpp:675
A sorted associative container similar to an STL set, but uses a vector to store pointers to its data...
Definition: pointer_vector_set.h:72
Definition: poromechanics_newton_raphson_strategy.hpp:35
Parameters * mpParameters
Member Variables.
Definition: poromechanics_newton_raphson_strategy.hpp:165
double CalculateReferenceDofsNorm(DofsArrayType &rDofSet)
Definition: poromechanics_newton_raphson_strategy.hpp:240
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:33
KRATOS_CLASS_POINTER_DEFINITION(PoromechanicsRammArcLengthNonlocalStrategy)
ImplicitSolvingStrategy< TSparseSpace, TDenseSpace, TLinearSolver > BaseType
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:39
BaseType::TSystemMatrixType TSystemMatrixType
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:48
void Clear() override
Clears the internal storage.
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:321
ResidualBasedNewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver > Grandx2MotherType
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:40
BaseType::DofsArrayType DofsArrayType
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:47
BaseType::TSystemVectorType TSystemVectorType
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:49
ConvergenceCriteria< TSparseSpace, TDenseSpace > TConvergenceCriteriaType
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:43
unsigned int mMaxIterationNumber
Definition: residualbased_newton_raphson_strategy.h:1261
PoromechanicsNewtonRaphsonStrategy< TSparseSpace, TDenseSpace, TLinearSolver > GrandMotherType
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:41
TSystemVectorPointerType mpb
The increment in the solution.
Definition: residualbased_newton_raphson_strategy.h:1237
~PoromechanicsRammArcLengthNonlocalStrategy() override
Destructor.
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:94
NonlocalDamageUtilities * mpNonlocalDamageUtility
Member Variables.
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:341
PoromechanicsRammArcLengthStrategy< TSparseSpace, TDenseSpace, TLinearSolver > MotherType
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:42
TSystemMatrixPointerType mpA
The RHS vector of the system of equations.
Definition: residualbased_newton_raphson_strategy.h:1238
void InitializeSolutionStep() override
Performs all the required operations that should be done (for each step) before solving the solution ...
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:127
PoromechanicsRammArcLengthNonlocalStrategy(ModelPart &model_part, typename TSchemeType::Pointer pScheme, typename TConvergenceCriteriaType::Pointer pNewConvergenceCriteria, typename TBuilderAndSolverType::Pointer pNewBuilderAndSolver, Parameters &rParameters, int MaxIterations=30, bool CalculateReactions=false, bool ReformDofSetAtEachStep=false, bool MoveMeshFlag=false)
Constructor.
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:74
bool mCalculateReactionsFlag
Flag telling if it is needed or not to compute the reactions.
Definition: residualbased_newton_raphson_strategy.h:1253
void Initialize() override
Initialization of member variables and prior operations.
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:98
BaseType::TBuilderAndSolverType TBuilderAndSolverType
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:44
BaseType::TSchemeType TSchemeType
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:45
Parameters * mpParameters
Member Variables.
Definition: poromechanics_newton_raphson_strategy.hpp:165
TSystemVectorPointerType mpDx
The pointer to the convergence criteria employed.
Definition: residualbased_newton_raphson_strategy.h:1236
TBuilderAndSolverType::Pointer mpBuilderAndSolver
The pointer to the time scheme employed.
Definition: residualbased_newton_raphson_strategy.h:1233
TSchemeType::Pointer mpScheme
Definition: residualbased_newton_raphson_strategy.h:1232
TSparseSpace SparseSpaceType
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:46
bool CheckConvergence() override
Name of the nodal variable associated to every SubModelPart.
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:347
bool SolveSolutionStep() override
Solves the current step. This function returns true if a solution has been found, false otherwise.
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:153
bool mNonlocalDamageIsInitialized
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:342
TConvergenceCriteriaType::Pointer mpConvergenceCriteria
The pointer to the builder and solver employed.
Definition: residualbased_newton_raphson_strategy.h:1234
bool mInitializeWasPerformed
The maximum number of iterations, 30 by default.
Definition: residualbased_newton_raphson_strategy.h:1263
bool mSearchNeighboursAtEachStep
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:343
void FinalizeSolutionStep() override
Performs all the required operations that should be done (for each step) after solving the solution s...
Definition: poromechanics_ramm_arc_length_nonlocal_strategy.hpp:304
Definition: poromechanics_ramm_arc_length_strategy.hpp:30
double mDLambdaStep
Norm of the solution vector in equilibrium.
Definition: poromechanics_ramm_arc_length_strategy.hpp:458
TSystemVectorPointerType mpDxPred
Delta x of A*Dxb=b.
Definition: poromechanics_ramm_arc_length_strategy.hpp:447
double mNormxEquilibrium
Loading factor.
Definition: poromechanics_ramm_arc_length_strategy.hpp:457
void BuildWithDirichlet(TSystemMatrixType &mA, TSystemVectorType &mDx, TSystemVectorType &mb)
Definition: poromechanics_ramm_arc_length_strategy.hpp:494
void Clear() override
Clears the internal storage.
Definition: poromechanics_ramm_arc_length_strategy.hpp:373
TSystemVectorPointerType mpf
Member Variables.
Definition: poromechanics_ramm_arc_length_strategy.hpp:444
void InitializeSolutionStep() override
Performs all the required operations that should be done (for each step) before solving the solution ...
Definition: poromechanics_ramm_arc_length_strategy.hpp:149
TSystemVectorPointerType mpDxf
Vector of reference external forces.
Definition: poromechanics_ramm_arc_length_strategy.hpp:445
TSystemVectorPointerType mpDxStep
Delta x of prediction phase.
Definition: poromechanics_ramm_arc_length_strategy.hpp:448
virtual void Update(DofsArrayType &rDofSet, TSystemMatrixType &mA, TSystemVectorType &mDx, TSystemVectorType &mb)
Definition: poromechanics_ramm_arc_length_strategy.hpp:506
TSystemVectorPointerType mpDxb
Delta x of A*Dxf=f.
Definition: poromechanics_ramm_arc_length_strategy.hpp:446
double mRadius_0
Definition: poromechanics_ramm_arc_length_strategy.hpp:455
void Initialize() override
Initialization of member variables and prior operations.
Definition: poromechanics_ramm_arc_length_strategy.hpp:90
double mRadius
Used to limit the radius of the arc length strategy.
Definition: poromechanics_ramm_arc_length_strategy.hpp:455
void FinalizeSolutionStep() override
Performs all the required operations that should be done (for each step) after solving the solution s...
Definition: poromechanics_ramm_arc_length_strategy.hpp:314
double mLambda
Radius of the arc length strategy.
Definition: poromechanics_ramm_arc_length_strategy.hpp:456
This is the base Newton Raphson strategy.
Definition: residualbased_newton_raphson_strategy.h:66
unsigned int mMaxIterationNumber
Definition: residualbased_newton_raphson_strategy.h:1261
TSystemVectorPointerType mpb
The increment in the solution.
Definition: residualbased_newton_raphson_strategy.h:1237
TSystemMatrixPointerType mpA
The RHS vector of the system of equations.
Definition: residualbased_newton_raphson_strategy.h:1238
virtual void MaxIterationsExceeded()
This method prints information after reach the max number of iterations.
Definition: residualbased_newton_raphson_strategy.h:1340
bool mCalculateReactionsFlag
Flag telling if it is needed or not to compute the reactions.
Definition: residualbased_newton_raphson_strategy.h:1253
TSystemVectorPointerType mpDx
The pointer to the convergence criteria employed.
Definition: residualbased_newton_raphson_strategy.h:1236
TBuilderAndSolverType::Pointer mpBuilderAndSolver
The pointer to the time scheme employed.
Definition: residualbased_newton_raphson_strategy.h:1233
TSchemeType::Pointer mpScheme
Definition: residualbased_newton_raphson_strategy.h:1232
TConvergenceCriteriaType::Pointer mpConvergenceCriteria
The pointer to the builder and solver employed.
Definition: residualbased_newton_raphson_strategy.h:1234
bool mInitializeWasPerformed
The maximum number of iterations, 30 by default.
Definition: residualbased_newton_raphson_strategy.h:1263
ModelPart & GetModelPart()
Operations to get the pointer to the model.
Definition: solving_strategy.h:350
TSparseSpace::MatrixType TSystemMatrixType
Definition: solving_strategy.h:71
bool MoveMeshFlag()
This function returns the flag that says if the mesh is moved.
Definition: solving_strategy.h:290
TSparseSpace::VectorType TSystemVectorType
Definition: solving_strategy.h:73
virtual void MoveMesh()
This function is designed to move the mesh.
Definition: solving_strategy.h:330
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
#define KRATOS_INFO(label)
Definition: logger.h:250
double TwoNorm(SparseSpaceType &dummy, SparseSpaceType::VectorType &x)
Definition: add_strategies_to_python.cpp:164
ProcessInfo & GetProcessInfo(ModelPart &rModelPart)
Definition: add_model_part_to_python.cpp:54
double Dot(SparseSpaceType &dummy, SparseSpaceType::VectorType &rX, SparseSpaceType::VectorType &rY)
Definition: add_strategies_to_python.cpp:85
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
model_part
Definition: face_heat.py:14
double precision function mb(a)
Definition: TensorModule.f:849