37. VISCOPLASTIC_SOLVER Namelist

The VISCOPLASTIC_SOLVER namelist sets parameters that are specific to the viscoplasticity solver. This namelist is read whenever the PHYSICS Namelist option solid_mechanics is enabled and a VISCOPLASTIC_MODEL Namelist exists.

Required/Optional:

Required when viscoplasticity is enabled (i.e., when a :ref:`VISCOPLASTIC_MODEL

Namelist<VISCOPLASTIC_MODEL_Namelist/index:VISCOPLASTIC_MODEL Namelist>` exists). :Single/Multiple Instances: Single

37.1. strain_limit

This parameter controls the use of the ODE integrator in the plastic strain calculation. When the plastic strain at an integration point is below this limit, a single Heun step is taken. When the plastic strain is at or above this limit, the solver requested by viscoplastic_solver is invoked with an initial step size such that the predicted plastic strain delta does not exceed the limit.

Type:

real

Default:

1e-10

Valid Values:

\(\geq 0\)

Tip

This should be set to the minimum significant value of the plastic strain increment for a time step. If convergence seems poor when a viscoplastic material model is used, it may help to reduce this value.

37.2. abs_plastic_strain_tol

The tolerance \(\epsilon\) for the absolute error component of the plastic strain error norm used by the nonlinear solver. If \(\delta u\) is a plastic strain field increment with reference plastic strain field \(u\),then this error norm is

\[|||\delta u||| \equiv \mathop{{max}_j} |\delta u_j|/(\epsilon + \eta |u_j|)\]

The relative error tolerance \(\eta\) is given by rel_plastic_strain_tol.

Physical Dimension:

\(\Theta\)

Type:

real

Default:

1e-12

Valid Values:

\(\geq 0\)

Note

The error norm is dimensionless and normalized.

Note

For \(u_j\) sufficiently small the norm approximates an absolute norm with tolerance \(\epsilon\), and for \(u_j\) sufficiently large the norm approximates a relative norm with tolerance \(\eta\). If \(\epsilon = 0\) then the norm is a pure relative norm and the plastic strain must be bounded away from 0.

37.3. rel_plastic_strain_tol

The tolerance \(\eta\) for the relative error component of the plastic strain error norm used by the nonlinear solver. If \(\delta u\) is a plastic strain field increment with reference displacement field \(u\), then this error norm is

\[|||\delta u||| \equiv \mathop{{max}_j} |\delta u_j|/(\epsilon + \eta |u_j|)\]

The absolute error tolerance \(\epsilon\) is given by abs_plastic_strain_tol.

Physcial Dimension:

dimensionless

Type:

real

Default:

1e-3

Valid Values:

(0, 1)

Note

See the notes for abs_plastic_strain_tol.

37.4. maximum_iterations

Maximum allowed number of iterations of the nonlinear solver.

Type:

integer

Default:

10

Valid Values:

\([0,\infty)\)

37.5. nlk_max_vectors

For the NLK method, the maximum number of acceleration vectors to be used.

Type:

integer

Default:

3

Valid Values:

\([0,\infty)\)

37.6. rate_limit

This parameter controls the use of the ODE integrator in the plastic strain calculation. When the relative rate of change of the plastic strain at an integration point is below this limit, a single Heun step is taken. Otherwise, (and if the strain_limit is met), the solver requested by viscoplastic_solver is invoked with an initial step size such that the predicted plastic strain delta does not exceed the limit.

Type:

real

Default:

\(-\infty\)

Valid Values:

\((-\infty,\infty)\)

Note

The legacy viscoplasticity solver defaulted this value to 1.1, which seems to moderately speed up calculations at the cost of stability.

37.7. nlk_tol (expert)

The convergence tolerance for the NLK nonlinear solver for viscoplasticity. The nonlinear system is considered solved by the current iterate if the norm of the last solution correction is less than this value.

Type:

real

Default:

1e-2

Valid Values:

(0, 1]

37.8. nlk_vector_tolerance (expert)

The vector drop tolerance for the NLK method. When assembling the acceleration subspace vector by vector, a vector is dropped when the sine of the angle between the vector and the subspace less than this value.

Type:

real

Default:

0.01

Valid Values:

\((0,1)\)

37.9. pc_freq (expert)

This controls how frequently the preconditioner is updated in the adaptive BDF2 integrator. A value of \(N\) will allow a preconditioner to be used for as many as \(N\) consecutive time steps before being updated, although it may be updated more frequently based on other criteria. A value of 1 causes the preconditioner to be updated every time step.

Type:

integer

Default:

1

Valid Values:

\(\geq 1\)

Note

A basic strategy of the adaptive BDF2 integrator is to use a preconditioner for as many time steps as possible, and only update it when a nonlinear time step iteration fails to converge. This generally works quite well. But if you find that the integrator is thrashing — evidenced by the number of times a step failed with an old preconditioner and was retried (this is the NNR diagnostic value in the terminal output) being a significant fraction of the number of time steps — it may be more cost effective to set this value to 1, for example.

37.10. solver (expert)

The choice of viscoplastic solver. The default is fast and accurate, and an end user won’t benefit by changing this option. The default is to use the bdf2_integrator backend. The “jacobian” option uses an implicit NLK-accelerated idaesol solver. The “jfree” option uses a jacobian-free algorithm identical to the bdf2_integrator, but implemented on the idaesol type.

Type:

string

Default:

“bdf2”

Valid Values:

“bdf2”, “jacobian”, or “jfree”