v0.14.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 More... | |
MoFEMErrorCode | setAlphaBeta (double alpha, double beta) |
set parameters controlling arc-length equations alpha controls off diagonal therms beta controls diagonal therm More... | |
ArcLengthCtx (MoFEM::Interface &m_field, const std::string &problem_name, const std::string &field_name="LAMBDA") | |
DofIdx | getPetscGlobalDofIdx () |
Get global index of load factor. More... | |
DofIdx | getPetscLocalDofIdx () |
Get local index of load factor. More... | |
FieldData & | getFieldData () |
Get value of load factor. More... | |
int | getPart () |
Get proc owning lambda dof. More... | |
Public Attributes | |
MoFEM::Interface & | mField |
double | s |
arc length radius More... | |
double | beta |
force scaling factor More... | |
double | alpha |
displacement scaling factor More... | |
SmartPetscObj< Vec > | ghosTdLambda |
double | dLambda |
increment of load factor More... | |
SmartPetscObj< Vec > | ghostDiag |
double | dIag |
diagonal value More... | |
double | dx2 |
inner_prod(dX,dX) More... | |
double | F_lambda2 |
inner_prod(F_lambda,F_lambda); More... | |
double | res_lambda |
f_lambda - s More... | |
SmartPetscObj< Vec > | F_lambda |
F_lambda reference load vector. More... | |
SmartPetscObj< Vec > | db |
db derivative of f(dx*dx), i.e. db = d[ f(dx*dx) ]/dx More... | |
SmartPetscObj< Vec > | xLambda |
solution of eq. K*xLambda = F_lambda More... | |
SmartPetscObj< Vec > | x0 |
displacement vector at beginning of step More... | |
SmartPetscObj< Vec > | dx |
dx = x-x0 More... | |
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 | ) |
double ArcLengthCtx::alpha |
displacement scaling factor
Definition at line 73 of file ArcLengthTools.hpp.
|
private |
Definition at line 121 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.