Available nonlinear algorithms
Prediction of the solution
By default, a nonlinear evolution problem uses the solution at the beginning of the time step, modified by applying Dirichlet boundary conditions, as the initial guess of the solution at the end of the time step, see below for details.
This can be changed by using the setPredictionPolicy
method, as follows:
// use the elastic operator by default
mechanics.setPredictionPolicy(
{.strategy = PredictionStrategy::BEGINNING_OF_TIME_STEP_PREDICTION});
Available strategies
Default prediction (PredictionStrategy::DEFAULT_PREDICTION)
By default, a nonlinear evolution problem uses the solution at the beginning of the time step, modified by applying Dirichlet boundary conditions, as the initial guess of the solution at the end of the time step.
Warning
In mechanics, this may lead to very high increments of the deformation gradients or the strain in the neighboring elements of boundaries where evolving displacements are imposed.
Prediction for the state at the beginning of the time step (PredictionStrategy::BEGINNING_OF_TIME_STEP_PREDICTION)
The prediction for the state at the beginning of the time step strategy determines the increment of the displacement \(\Delta\,\mathbb{u}\) by solving the following linear system:
where:
\(\mathbb{K}_{e}\) denotes one of the prediction operator (see below).
\(\bts{\mathbb{F}_{e}}\) denotes the external forces at the beginning of the time step.
\(\bts{\mathbb{F}_{i}}\) denotes the inner forces at the beginning of the time step.
\(\Delta\,\mathbb{u}\) is submitted to the the increment of the imposed Dirichlet boundary conditions.
Note
Although the wording explicitly refers to mechanics, this equation applies to all physics.
The following prediction operators can be chosen:
PredictionOperator::ELASTIC: the elastic operatorPredictionOperator::SECANT: the secant operator is typically defined by the elastic operatorPredictionOperator::TANGENT_PREDICTION: the tangent operator, defined by the time-continuous derivative of the thermodynamic force with respect to the gradients.PredictionOperator::LAST_ITERATE_OPERATOR: this operator reuses the one computed at the last iteration of the previous time step. At the first time step, the elastic operator is used.
Note
Internally, the computePrediction methods of the
NonLinearResolutionImplementation classes computes the opposite of the
prediction.
Prediction based on a behaviour integration with constant gradients (PredictionStrategy::CONSTANT_GRADIENTS_INTEGRATION_PREDICTION)
The CONSTANT_GRADIENTS_INTEGRATION strategy determines the
increment of the unknown \(\Delta\,{u}\) by solving the following
linear system:
where:
\(\tilde{\mathbb{K}}\) denotes the operator computed at the end of the behaviour integration.
\(\bts{\mathbb{F}_{e}}\) denotes the external forces at the beginning of the time step.
\(\ets{\tilde{\mathbb{F}}_{i}}\) denotes an approximation inner forces at the end of the time step computed by assuming that the gradients are constant over the time (and thus egal to their values at the beginning of the time step).
\(\Delta\,\mathbb{u}\) is submitted to the the increment of the imposed Dirichlet boundary conditions.
The behaviour integration allows taking into account:
the evolution of stress-free strain over the time step (thermal expansion, swelling, etc..),
the viscoplastic relaxation of the stress. This relaxation can be discarded by integrating the behaviour with a null time step.
The following operators are available:
IntegrationOperator::ELASTIC: the elastic operator,IntegrationOperator::SECANT: the secant operator is typically defined by the elastic operator affected by damage,IntegrationOperator::TANGENT: the tangent operator, defined by the time-continuous derivative of the thermodynamic force with respect to the gradients,IntegrationOperator::CONSISTENT_TANGENT: the constistent tangent operator, defined by the derivative of the thermodynamic force with respect to the gradients at the end of the time step. See [ST85] for details.
Note
Internally, the computePrediction methods of the
NonLinearResolutionImplementation classes computes the opposite of the
prediction.
Newton algorithm
The default nonlinear solver is the Newton’s algorithm.
Let \(\mathbb{u}^{(n)}\) be the estimate of the solution at the \(n^{\text{th}}\) iteration. The Newton’s algorithm determines a new estimate \(\mathbb{u}^{(n+1)}\) of the solution by computing a correction \(\delta\,\mathbb{u}^{(n)}\) as follows:
where:
\(\mathbb{K}\) denotes one of the search operator.
\(\ets{\mathbb{F}_{e}}^{(n)}\) denotes current estimate of the external forces at the end of the time step.
\(\ets{\mathbb{F}_{i}}^{(n)}\) denotes current estimate of the inner forces at the end of the time step.
Currently, the search operator is given by the consistent tangent operator.
The new estimate \(\mathbb{u}^{(n+1)}\) is calculated as follows:
Handling of integration failure
When the new estimate leads to an integration failure, a new estimate of the solution is calculated by keeping the same search direction but by reducing the amplitude of the correction by a factor \(2\) as follows:
This reduction of the amplitude repeated until a estimation of the solution that does not lead to an integration failure