Setting Appropriate Convergence Criteria
It is important to set appropriate convergence criteria. If the tolerances are too tight, models will never converge. If the tolerances are too weak, models will yield incorrect answers.
Global Nonlinear Convergence Criteria
Regardless of whether plasticity or only elasticity is used, MOOSE needs to know what you mean by "converged". You must place a tolerance on the nonlinear residual. In SolidMechanics this comes from integrating over an element, and for an element of side length the integral cannot be less than where is the precision of MOOSE (15 for double precision), is the dimensionality of the problem (SolidMechanics currently only works for ), and is the rough size of stress.
For example, for J2 plasticity, will be roughly the yield strength of the material, say . For a element of size 0.1, this yields .
However, you should set your nonlinear residual tolerance substantially larger than this estimate. This is because error is likely to be spread over the entire mesh, not just one element, so should be multiplied by the number of elements, and also that setting this small is risky because it relies on maintaining full precision throughout all computations. Instead, identify the crucial region of interest. Denote its volume by . Usually this will be less than the entire mesh. Then identify the error in that you are willing to accept. Denote this by . It will depend on the typical size of , and the length scale in the problem. Then set .
Convergence Criteria for UserObject Based Plasticity
There are three types of convergence criteria that need to be set when using plasticity:
tolerance(s) on the yield function(s)
tolerance on the plastic strain
tolerance(s) on the internal parameter(s)
These are somewhat interconnected.
Tolerance(s) on the yield function(s)
Firstly, let us explore lower bounds on the tolerance for the yield function(s). Consider the stress tensor, . I want to calculate : any changes of smaller than will be unnoticeable due to precision loss.
Imagine that has digits of precision. For standard MOOSE with double precision, . In models containing plasticity, the stress will often reside on the yield surface(s). This gives an estimate of the magnitude of . For instance, with Mohr-Coulomb plasticity, stresses will be of order , where is the cohesion, and is the friction angle, so is at the apex of the hexagonal pyramid. Denote this magnitude of by . For complicated multi-surface plasticity models, may be hard to estimate, but only order-of-magnitude calculations are appropriate here. Therefore, For example, with , and Mohr-Coulomb plasticity with and friction angle 30deg, . Changes of smaller than this value will be unnoticeable due to precision loss.
There is also another lower bound. This comes from evaluating the trial stress and returned stress using the strain: , where is the elasticity tensor, and is the strain. This means that For example, suppose strains of order are applied, and the elasticity tensor is order . This means trial stresses will be of order , so with , we get .
In conclusion, changes of smaller than will be unnoticeable due to precision loss, where is
Knowing this allows straightforward estimation of the lowest possible tolerance on the yield functions. However, it is unwise to use this tolerance! This is because roundoff errors can accrue within the internal workings of the plasticity algorithms. For instance, calculating eigenvalues of might effectively reduce by 1.
More commonly, the tolerance on stress is estimated by the user by considering what is physically reasonable. Eg, a stress change of 100Pa might be rather inconsequential, and this might translate into a tolerance on of 100Pa. Provided this 100Pa is not close to , the plasticity algorithms should converge.
Choose the tolerance on to be smaller than the yield stress, cohesion, tensile strength, etc.
Tolerances on the plastic strain and internal constraints
Similar arguments can be made for the plastic strain and internal constraints.
Choose the tolerance to be to , where are the typical strains encountered in the model