====== Managing N.-R. Iterations ======
Mechanical iterations parameters are imposed by functions associated to ''metafor.getMechanicalIterationManager()'', when thermal iterations parameters are imposed by functions associated to ''metafor.getThermalIterationManager()''.
mim = metafor.getMechanicalIterationManager()
tim = metafor.getThermalIterationManager()
mim/tim.setResidualComputationMethod(meth)
mim/tim.setVerbose()
mim/tim.setResidualTolerance(prec)
mim/tim.setMaxNbOfIterations(itma)
mim/tim.setNbOfIterationsForStiffUpdate(irea)
mim/tim.setMaxNbOfLineSearchIterations(lsma)
mim/tim.setLineSearchTolerance1(lsp1)
mim/tim.setLineSearchTolerance2(lsp2)
mim.setPredictorComputationMethod(predMeth)
mim.setConstrainedDofsVAComputationMethod(VACMeth)
mim/tim.setPreviousResidualsDecreaseCriterion()
mim/tim.setCpuDependency(cpuDep)
mim/tim.setForceOneIte(bool)
where ''meth'' defines the method used to compute the $Residual$.
=== Method1ResidualComputation(limitNormFactor) ===
important : since revision 2946 Method1ResidualComputation is **not anymore** the default value
The residual is adimensionalized by the norm of external forces and internal reactions .
First :
$$Rmin = \frac{||FreeExternalForces|| + ||CstrInternalForces||+||CstrInertialForces||}{nreac} $$
If
$$ Rmin < limitNormFactor $$
$Rmin$ is set to
$$ Rmin = limitNormFactor $$
and the residual is adimensionalized :
$$Residual = \frac{||FreeResidual||}{ndofs*Rmin}$$
where
$ndofs$ : total number of degrees of freedom
$nreac$ : number of fixed degrees of freedom (having an associated reaction)
=== Method2ResidualComputation(limitNormFactor) ===
The residual is adimensionalized by the square of the norm of external forces and internal reactions. First:
$$Rmin = \frac{\sqrt{||FreeExternalForces||^2 + ||CstrInternalForces||^2+||CstrInertialForces||^2}}{nreac}$$
If
$$ Rmin < limitNormFactor $$
then
$$ Rmin = limitNormFactor $$
and the residual is adimensionalized :
$$Residual = \frac{||FreeResidual||}{ndofs*Rmin}$$
where
$ndofs$ : total number of degrees of freedom
$nreac$ : number of fixed degrees of freedom (having an associated reaction)
=== Method3ResidualComputation(limitNormFactor) ===
The residual is adimensionalized by the norm of external and inertial forces, and internal reactions (**value to use preferentially for thermal simulations. Careful, the user must define it**).
If
$$ ||FreeExternalForces|| < limitNormFactor $$
then
$$ Residual = max(|FreeResidual|) $$
Else,
$$Rmin = ||FreeExternalForces|| + ||CstrInternalForces||+||CstrInertialForces|| $$
and
$$Residual = \frac{||FreeResidual||}{ndofs*Rmin}$$
=== Method4ResidualComputation(limitNormFactor) (**default value**) ===
important : since revision 2946 Method4ResidualComputation is the new **default value**
This method is the same as ''Method1ResidualComputation()'' but without dividing by the number of dofs nor nreac, so
$$Rmin = ||FreeExternalForces|| + ||CstrInternalForces||+||CstrInertialForces|| $$
If
$$ Rmin < limitNormFactor$$
then
$$ Rmin = limitNormFactor $$
and the residual is adimensionalized :
$$Residual = \frac{||FreeResidual||}{Rmin}$$
=== Method5ResidualComputation(adimFactor) ===
The residual is adimensionalized by the factor ''adimFactor'', given by the user, without dividing by the number of dofs.
$$Residual = \frac{||FreeResidual||}{adimFactor }$$
=== Method6ResidualComputation(adimFactor) ===
The residual is adimensionalized by the factor ''adimFactor'', given by the user, and by the number of dofs.
$$Residual = \frac{||FreeResidual||}{ndofs * adimFactor }$$
where
$ndofs$ : total number of dofs
=== Parameters ===
^ Parameter ^ Default value ^ Description ^
| ''limitNormFactor'' | 1.0 | Value from which the residual is no longer divided by $$Rmin$$ (to adjust as a function of the loading using verbose output)|
| ''adimFactor'' | - | Fixed adimensionalization factor for methods #5 and 6 (no default value, the factor must be defined for these methods)|
| ''prec'' | 1.0E-4 | accuracy that the residual must reach |
| ''itma'' | 7 | maximal number of Newton-Raphson iterations (this number if corrected internally if the automatic criterion is used to update the matrix). Iterations are stopped if the residual does not decrease over 6 iterations|
| ''irea'' | 1 |= 1 : stiffness matrix updated for each iteration|
| | | > 1 : stiffness matrix is updated automatically if the iteration number is lower than ''irea''. The criterion is based on a convergence speed and a CPU time ratio (requires ''MDE_ICPU=1'')|
| ''lsma'' | 0 | maximal line-search iteration number|
| ''lsp1'' | 1.0 | accuracy that the line-search residual must reach |
| ''lsp2'' | 1.E-8 | stop criterion when the line search parameter is not updated enough |
| ''predMeth'' | ''EXTRAPOLATION_DEFAULT'' | ''EXTRAPOLATION_DEFAULT'' = Extrapolation of the scheme by default (for example method to compute the displacement predictor by Newmark formula in the case of [[doc:user:integration:scheme:dynimpl#la_famille_alpha-generalisee|alpha-generalized scheme]]) |
| | | ''EXTRAPOLATION_MRUA'' = method to compute the displacement predictor by MRUA formula (for now only possible for [[doc:user:integration:scheme:dynimpl#la_famille_alpha-generalisee|alpha-generalized algorithms]]) |
| | | ''EXTRAPOLATION_ZERO'' = New positions are equal to the old ones, speed (and acceleration for dynamic schemes) equal to zero (for now only possible for [[doc:user:integration:scheme:quasistatique|quasi-static algorithms]] and [[doc:user:integration:scheme:dynimpl#la_famille_alpha-generalisee|alpha-generalized algorithms]]) . |
| ''VACMeth'' | ''VAC_SCHEMECONSISTANT'' | ''VAC_SCHEMECONSISTANT'' : Calculation of speed and acceleration with Newmark formula |
| | | ''VAC_BACKWARDEULER'' : Calculation of speed and acceleration using Backward Euler (to stabilize Newmark with dofs with a non zero fixed displacement. See JPP's thesis pg VIII.28) |
| ''cpuDep'' | ''False'' | Specify if the criterion for updating the stiffness matrix (irea > 1) depends on the User CPU time. (Metafor Version > 2422). |
| ''forceOneIte'' | ''False'' | If True, Force the resolution of at least one iteration (mechanical or thermal according to the iteration manager even if the tolerance is allready met at iteration 0. |