![]() |
v0.15.0 |
Store variables for ArcLength analysis. More...
#include "users_modules/basic_finite_elements/src/ArcLengthTools.hpp"
Public Member Functions | |
| virtual | ~ArcLengthCtx ()=default |
| MoFEMErrorCode | setS (double s) |
| set arc radius | |
| MoFEMErrorCode | setAlphaBeta (double alpha, double beta) |
| set parameters controlling arc-length equations alpha controls off diagonal therms beta controls diagonal therm | |
| ArcLengthCtx (MoFEM::Interface &m_field, const std::string &problem_name, const std::string &field_name="LAMBDA") | |
| DofIdx | getPetscGlobalDofIdx () |
| Get global index of load factor. | |
| DofIdx | getPetscLocalDofIdx () |
| Get local index of load factor. | |
| FieldData & | getFieldData () |
| Get value of load factor. | |
| int | getPart () |
| Get proc owning lambda dof. | |
Public Attributes | |
| MoFEM::Interface & | mField |
| double | s |
| arc length radius | |
| double | beta |
| force scaling factor | |
| double | alpha |
| displacement scaling factor | |
| SmartPetscObj< Vec > | ghosTdLambda |
| double | dLambda |
| increment of load factor | |
| SmartPetscObj< Vec > | ghostDiag |
| double | dIag |
| diagonal value | |
| double | dx2 |
| inner_prod(dX,dX) | |
| double | F_lambda2 |
| inner_prod(F_lambda,F_lambda); | |
| double | res_lambda |
| f_lambda - s | |
| SmartPetscObj< Vec > | F_lambda |
| F_lambda reference load vector. | |
| SmartPetscObj< Vec > | db |
| db derivative of f(dx*dx), i.e. db = d[ f(dx*dx) ]/dx | |
| SmartPetscObj< Vec > | xLambda |
| solution of eq. K*xLambda = F_lambda | |
| SmartPetscObj< Vec > | x0 |
| displacement vector at beginning of step | |
| SmartPetscObj< Vec > | dx |
| dx = x-x0 | |
Private Attributes | |
| NumeredDofEntity * | arcDofRawPtr |
Store variables for ArcLength analysis.
The constrain function if given by
\[ r_\lambda = f_\lambda(\mathbf{x},\lambda) - s^2 \]
where \(f_\lambda(\mathbf{x},\lambda)\) is some constrain function, which has general form given by
\[ f_\lambda(\mathbf{x},\lambda) = \alpha f(\Delta\mathbf{x}) + \beta^2 \Delta\lambda^2 \| \mathbf{F}_{\lambda} \|^2 \]
where for example \(f(\mathbf{x})=\|\Delta\mathbf{x}\|^2\) is some user defined function evaluating increments vector of degrees of freedom \(\Delta\mathbf{x}\). The increment vector is
\[ \Delta \mathbf{x} = \mathbf{x}-\mathbf{x}_0 \]
and
\[ \Delta \lambda = \lambda-\lambda_0. \]
For convenience we assume that
\[ \frac{\partial f}{\partial \mathbf{x}}\Delta \mathbf{x} = \textrm{d}\mathbf{b} \Delta \mathbf{x}, \]
as result linearised constrain equation takes form
\[ \textrm{d}\mathbf{b} \delta \Delta x + D \delta \Delta\lambda - r_{\lambda} = 0 \]
where
\[ D = 2\beta^2 \Delta\lambda \| \mathbf{F}_{\lambda} \|^2. \]
User need to implement functions calculating \(f(\mathbf{x},\lambda)\), i.e. function \(f(\|\Delta\mathbf{x}\|^2)\) and its derivative, \(\textrm{d}\mathbf{b}\).
Definition at line 65 of file ArcLengthTools.hpp.
|
virtualdefault |
| ArcLengthCtx::ArcLengthCtx | ( | MoFEM::Interface & | m_field, |
| const std::string & | problem_name, | ||
| const std::string & | field_name = "LAMBDA" |
||
| ) |
Definition at line 38 of file ArcLengthTools.cpp.
|
inline |
|
inline |
|
inline |
Get global index of load factor.
Definition at line 107 of file ArcLengthTools.hpp.
|
inline |
| MoFEMErrorCode ArcLengthCtx::setAlphaBeta | ( | double | alpha, |
| double | beta | ||
| ) |
set parameters controlling arc-length equations alpha controls off diagonal therms beta controls diagonal therm
Definition at line 29 of file ArcLengthTools.cpp.
| MoFEMErrorCode ArcLengthCtx::setS | ( | double | s | ) |
set arc radius
Definition at line 22 of file ArcLengthTools.cpp.
| double ArcLengthCtx::alpha |
displacement scaling factor
Definition at line 73 of file ArcLengthTools.hpp.
|
private |
Definition at line 124 of file ArcLengthTools.hpp.
| double ArcLengthCtx::beta |
force scaling factor
Definition at line 72 of file ArcLengthTools.hpp.
| SmartPetscObj<Vec> ArcLengthCtx::db |
db derivative of f(dx*dx), i.e. db = d[ f(dx*dx) ]/dx
Definition at line 85 of file ArcLengthTools.hpp.
| double ArcLengthCtx::dIag |
diagonal value
Definition at line 78 of file ArcLengthTools.hpp.
| double ArcLengthCtx::dLambda |
increment of load factor
Definition at line 76 of file ArcLengthTools.hpp.
| SmartPetscObj<Vec> ArcLengthCtx::dx |
dx = x-x0
Definition at line 88 of file ArcLengthTools.hpp.
| double ArcLengthCtx::dx2 |
inner_prod(dX,dX)
Definition at line 80 of file ArcLengthTools.hpp.
| SmartPetscObj<Vec> ArcLengthCtx::F_lambda |
F_lambda reference load vector.
Definition at line 83 of file ArcLengthTools.hpp.
| double ArcLengthCtx::F_lambda2 |
inner_prod(F_lambda,F_lambda);
Definition at line 81 of file ArcLengthTools.hpp.
| SmartPetscObj<Vec> ArcLengthCtx::ghostDiag |
Definition at line 77 of file ArcLengthTools.hpp.
| SmartPetscObj<Vec> ArcLengthCtx::ghosTdLambda |
Definition at line 75 of file ArcLengthTools.hpp.
| MoFEM::Interface& ArcLengthCtx::mField |
Definition at line 69 of file ArcLengthTools.hpp.
| double ArcLengthCtx::res_lambda |
f_lambda - s
Definition at line 82 of file ArcLengthTools.hpp.
| double ArcLengthCtx::s |
arc length radius
Definition at line 71 of file ArcLengthTools.hpp.
| SmartPetscObj<Vec> ArcLengthCtx::x0 |
displacement vector at beginning of step
Definition at line 87 of file ArcLengthTools.hpp.
| SmartPetscObj<Vec> ArcLengthCtx::xLambda |
solution of eq. K*xLambda = F_lambda
Definition at line 86 of file ArcLengthTools.hpp.