**solver#

Description#

This command defines the solution method for the simulation. The default solver is an explicit Runge-Kutta method. In some cases, the Runge-Kutta integration may not be available for a material model, or greater efficiency can be achieved with use of the implicit integration. However, use of an implicit solution allows the possibility of divergence. Which approach to use varies greatly with the problem at hand, and some experimentation and experience may be required to find the best choice.

Many of the convergence control options below follow the same syntax as in the Zebulon FEA solver. In fact, the solution parallels very closely the RVE element, but gives improved efficiency and convenience with the other simulation options.

The current solvers available are as follows 1versions before 8.2 do not allow the explicit keyword, it is activated by the absence of a **solver entry.

Solvers

Description

explicit

default explicit solution

newton

iterative solution.

Explicit method#

The solution of mixed loading in the explicit solver requires some additional equations for the model derivative function (the function returning rates for all state variables as a function of the current state). This discussion applies primarily to the mechanical solution procedure, while other simulation models would have a similar formulation requirement.

Fundamentally, because the solver needs to support a mixed combination of stress and strain rates, we need to write the complete equation for the rate of change in stress:

(495)#\[\dot{\ten{\sigma}} = {\tenf{D}}_{el}:\left[\dot{\ten{\varepsilon}}_{to}-\dot{\ten{\varepsilon}}_{in}-\dot{\ten{ \varepsilon}}_{th} -\ldots\right] + \dot{\tenf D}_{el}: \ten{\varepsilon}_{el}\]

For rate dependant behaviors, \(\dot{\ten{\varepsilon}}_{in}\), \(\dot{\ten{ \varepsilon}}_{th}\), and \(\dot{\ten \varepsilon}_{el}\) are known, while for rate independent behaviors the inelastic strain rate is a function of the total strain rate, normally of the form:

(496)#\[\dot{\ten{\varepsilon}}_{in} = \dot{\lambda}\vect n = \frac{\vect n:\tenf{D}_{el}:\dot{\ten{\varepsilon}}_{to}}{\vect n:\tenf{D}_{el}:\vect n + H }\]

This term, while not greatly complicating the solution, may not be handled in the simulation solution for a particular model 2starting with 8.2 rate independent plasticity is handled by gen_evp and some ZebFront demonstration models. In that event a rate dependant flow law must be used, for example using a norton law with very small viscosity to approximate rate independence.

The basic solution proceedure rearranges the mixed equations to first solve for the total strain rates, and then resubstituting them into the basic rate equation to find \(dsig\). For example, a 2D solution could take the form:

(497)#\[\begin{split}\begin{bmatrix} \dot{\sigma}_1 \\ ? \\ ?\\ \dot{\sigma}_4 \end{bmatrix}= \tenf{D}_{el} : \begin{bmatrix} ? \\ \dot{\varepsilon}_{tot_{2}} \\ \dot{\varepsilon}_{tot_{3}} \\ ? \end{bmatrix} - \tenf{D}_{el}:\left[\dot{\ten{\varepsilon}}_{in}+ \dot{\ten{\varepsilon}}_{th}\right] + {\dot{\tenf D}_{el}}: \ten{\varepsilon}_{el}\end{split}\]

From which the following equation would be extracted:

(498)#\[\begin{split}\left[\begin{matrix} D_{{el}_{11}} & D_{{el}_{14}} \\ D_{{el}_{41}} & D_{{el}_{44}} \\ \end{matrix}\right]^{-1} \left[\begin{matrix}\dot{\sigma}_{11} \dot{\sigma}_{12}\end{matrix}\right] = \left[\begin{matrix}\dot{\epsilon}_{tot_{11}} \dot{\epsilon}_{tot_{12}}\end{matrix}\right]\end{split}\]

Syntax#

The solver syntax accepts a number of options which determine the convergence and automatic time stepping controls (primarily applicable to the newton solver). syntax:

**solver [ type ] \(~\,\) *algorithm algo-type \(~\,\) *automatic_time \(~\,\) *divergence factor \(~\,\) *iteration iter \(~\,\) *iter_optimal opt-iter \(~\,\) *max_dtime max-time \(~\,\) *min_dtime min-time \(~\,\) *ratio ratio \(~\,\) *security sec

*algorithm

*automatic_time

*divergence

*iteration

*iter_optimal

*max_dtime

*min_dtime

*ratio

*security