Convergence

Home » Knowledge » Implicit » Convergence

Convergence problems in (static) non-linear implicit finite element analyses can arise in any FE-solver, it is in general nothing specific for LS-DYNA. The reason for convergence problems is in many cases simply that finding static equilibrium in a non-linear FE analysis (involving contacts, material non-linearity possibly including material failure, and large deformations) is very difficult.

Here, some tips on how to identify and possibly circumvent convergence problems in implicit analyses in LS-DYNA are presented. Troubleshooting convergence problems is also treated in Appendix P of the Keyword Manual Vol I, and in Appendix C (Section 13) of the Guideline for implicit analyses.

A quick checklist for troubleshooting implicit convergence issues follows. Note that this is not a complete listing!
More details follows below in subsequent sections.

  • Follow recommendations
    • See the Keyword Manual, Vol. I, Appendix P
    • The Guideline for implicit analysis using LS-DYNA
  • Warning and Error messages in the d3hsp and mes* – files
  • Model quality
    • Mesh quality, duplicate elements, negative volume solids, cracks in the mesh
    • Use recommended element types
    • Consistent unit system, etc.
  • Model connectivity
    • Do an eigenvalue analysis to check for unconnected subassemblies
    • If intended rigid body modes exist, activate implicit dynamics (initially)
  • Materials
    • Check hardening curves, etc.
  • Loadings and boundary conditions
    • Are boundary conditions sufficient for a static solution?
    • Try switching to displacement control
    • Try activating implicit dynamics
  • Time step size
    • Moderate initial time step
    • Reduce max. time step size
  • Control card settings
    • Try full Newton
  • … and other things … this listing is not complete!

Tracking convergence

Information relevant for tracking convergence in LS-DYNA is printed in the d3hsp and the mes* files(s). It is recommended to set NLPRINT=3 on *CONTROL_IMPLICIT_SOLUTION in order to obtain detailed information on the progress of the convergence. Opening d3hsp in a text editor, it can look like this:

where we have highlighted the Line search information, the displacement norm, the energy norm and the force residual. Here DCTOL is the displacement relative convergence tolerance, ECTOL is the energy relative convergence tolerance and RCTOL is the residual force relative tolerance. Convergence is detected if all criteria are met, that is if the relative displacement norm is below DCTOL, the relative energy norm is below ECTOL and the relative residual force is below RCTOL. Alternatively, convergence may be detected based on an absolute criteria (a function of the model size and the tolerance ABSTOL). This helps in situations where residuals are small, for example if the model is just undergoing prescribed translation without any opposing forces. The tolerances are set by the keyword *CONTROL_IMPLICIT_SOLUTION.

Note that the node IDs and rigid body IDs where the residuals are the larges are printed. This can be very helpful information for localizing where in the model convergence problems originate.

The D3hsp View tool of LS-PrePost provides a convenient GUI for accessing the information in the d3hsp file (select Misc. from the top menu bar and then go to D3hsp View).

Convergence information can be accessed both in text form and as history plots of the norms. The nodes or rigid bodies with max residual values can be highlighted directly on the model.

To classify the convergence behavior of the current simulation, it can be helpful to plot the relative displacement norm (Disp Norm, checked in the figure above). The left image of the figure below shows an example of very good convergence behavior: rapidly and monotonically decreasing norm, convergence within < 10 iterations. The right image shows an example of non-ideal convergence: the norm is “jumping up and down”, quite slowly decreasing, but convergence is obtained after 68 iterations. If this behavior occurs for many of the implicit time steps, it might be an indication that some kind of troubleshooting and model improvement is needed, even if Normal termination is obtained.

Model checking

Reduce the risk for convergence problems by thorough model checking before submitting. Use the built-in tools of your preprocessor, for example in LS-PrePost, from the main menu bar select Application, and go to Model Checking and then General Checking.

  • Carefully inspect the input deck
    • Check mesh quality. Avoid small or negative Jacobians and severely distorted elements
      (poor aspect ratios). Use recommended element formulations.
    • Make sure to use a consistent unit system.
      • Confirm that the total mass of the model agrees with your expectations.
        Search for “mass of body” in the d3hsp – file (printed during initialization)
      • Check magnitudes of loads.
    • Check material properties, rubbers, etc.
    • Check smoothness of load curves (no unintended discontinuities), hardening curves etc.
    • Use the Mortar contacts for implicit analyses, with the softer part as tracked / SURFA.
      • Check unintended contact penetrations, remove them if possible.
  • Run an eigenvalue analysis to check model connectivity (*CONTROL_IMPLICIT_EIGENVALUE)
    • Review boundary conditions and constraints
    • A pitfall may be beams that are free to spin about their own axis
  • Activate print flags to get more information from the solver
    • NLPRINT=3 and D3ITCTL=1 on *CONTROL_IMPLICIT_SOLUTION
    • MINFO=1 and PENOUT=2 on *CONTROL_OUTPUT
    • LPRINT=2 or 3 on *CONTROL_IMPLICIT_SOLVER

Mesh quality checking

In addition to the quality checking tools built into most preprocessors, LS-DYNA prints some general information on the mesh quality during initialization (from R14) in the d3hsp file. Search for the phrase “Listing the top “, for example

Listing the top 100 shell elements wrt aspect ratio
 ___________________________________________________
            Element #        Aspect ratio
            =========        ============
                    1    0.1965231305E+04
                  138    0.2857142857E+02
                15319    0.2857142857E+02
                15456    0.2857142857E+02
                  139    0.2714285714E+02
                  140    0.2714285714E+02
                  141    0.2714285714E+02
...

which indicates (in this example) that shell ID 1 probably needs fixing. A corresponding listing for solid elements will also be printed. The Warning 60421 will be issued for elements with nearly coincident nodes, for example

*** Warning 60421 (IMP+421)
    Solid element XX has a slightly bad edge/diag ratio,
    check if nodes are coincidental and adjust mesh.

The warning for bad Jacobian, for example,

*** Warning solid element # XX has a bad jacobian value -3.991E-01

is in general an indication that re-meshing is required.

Nodal projection  by tied contacts may cause severely distorted elements, search for Warning 41240.

Mesh connectivity

Direct connectivity between structural elements (shells, beams) and continuum elements can create mechanisms (like unintended joints or hinges) in the model, since the structural elements have nodal rotations, while the continuum elements have not. One example that may be problematic is if a spring element (*ELEMENT_BEAM, elform=6) is connected directly to one node of a solid element. Similar problems may arise when 6 DOF constraints are attached to only one 3 DOF node of a solid element. In some cases LS-DYNA will issue a warning for this, for example

 *** Warning 60301 (IMP+301)
     Using *CONSTRAINED_SPOTWELD with nodes without rotational dofs.

Care must be taken when connecting 1st and 2nd order elements by common nodes. Probably, tied contact is a better option.

Tied contacts – checking and recommendations

Tied contacts are commonly used for creating connectivity between subassemblies, or connector entities (spotwelds, glue, etc.) in LS-DYNA. Use available tools to check that the tied contacts work as intended, for example in LS-PrePost: from the top menu bar, go to Application, then Model Checking > General Checking > Contact Check > Tied, and activate Show: Tied and Not Tied. This will highlight nodes that get tied in green, and missed nodes in red.

During initialization, LS-DYNA will issue warnings (printed in the d3hsp file) for nodes not being tied, for example

*** Warning 50135 (MPP+135)
     Tracked node is not constrained
     since it is not found on a segment.

*** Warning 50136 (MPP+136)
     Tracked node is not constrained
     since it is too far from segment.
*** Warning 30455 (INI+455)
      Tied node # 267957 on the master side of surface # 100988
                 type # 7 also belongs to interface # 100987
                 tied constraint is released for node 31669

and from R14, the nodes that are not tied are collected in node sets, printed in the d3hsp file, for each tied contact ID, for example

untied *set_node_list below for interface ID   100987
*SET_NODE_LIST
    100987
     22924     23372     23376     23380     23384     23388     23392     23396
...

Some recommendations for defining tied contacts follow:

  • If structural elements with 6DOFs are involved, use
    • *CONTACT_TIED_SHELL_EDGE_TO_SURFACE_ID, or
    • *CONTACT_TIED_SHELL_EDGE_TO_SURFACE_CONSTRAINED_OFFSET_ID
  • Set IPBACK=1 (Optional Card E) to reduce the risk for “loose parts”
  • For maximum control over which nodes that get tied, use a node set as SURFA (SURFATYP=4)
  • Use as few tied contact definitions as possible in the model, to minimize the risk of over-occupying a
    SURFB segment.

Sliding contacts

It is strongly recommended to use the Mortar contacts to model sliding contact in implicit analyses,

  • *CONTACT_AUTOMATIC_SURFACE_TO_SURFACE_MORTAR_ID,
  • *CONTACT_AUTOMATIC_SINGLE_SURFACE_MORTAR_ID

To start out with, use the default settings for contact stiffness. The use of contact damping (VDC on Card 2 of the contact definition) is not recommended for implicit analyses.

For the single surface Mortar contact, the option to disregard self-contact within a single part may be beneficial for convergence and performance. In many load cases for implicit analyses, buckling or severe deformation of parts is not expected, and then it is possibly to consider contact only part-to-part (not within the same part itself) by setting IGNORE=-2 on Optional Card C.

Use your preprocessing tools to check the model for unintended penetrations, for example in LS-PrePost, from the main top menu select Application, go to Model Checking, then General Checking and select Contact Check. Small initial penetrations are in many situations unavoidable, due to for example, discretization/facetting, and this type of penetrations are in most cases acceptable. Severe initial penetrations or intersections (like a part passing completely through another part) however can cause convergence problems, and such situations should (preferably) be resolved before submitting.

During initialization, the Mortar contact will print a detailed report of the initial penetrations in the mes* files, search for the phrase “Mortar contact information”.  Before the first implicit step begins, the maximum penetration values for each contact definition are printed again in the mes* files, for example

  Contact sliding interface        151
    Number of contact pairs        80179
    Maximum penetration is  0.1686677E-17 between
    elements     515944 and     493946 on this processor
    Maximum relative penetration is  0.6337536E+00 % between
    elements     515944 and     493946 on this processor

BEGIN implicit dynamics step      1 t= 1.0000E-02             02/04/...
 ============================================================

It is good practice to check this initial report, to confirm that penetrations reported are in line with the expectations obtained from the checks in the preprocessor.  If much bigger penetrations than expected are reported, one possible remedy could be to set IGNORE=-2 in case the contact is of single-surface type. If tetrahedral elements are involved, try specifying a reasonably small contact search depth by the PENMAX variable on Optional Card B.

Material models and failure / damage

In addition to the general recommendations for material models in implicit analyses, it may also be worth to carefully consider if failure criteria should be active in the model. It may be wise to first obtain a working model without failure, and once this is established try if also material failure is feasible. Element erosion can lead to severe convergence problems, but is possible to handle also in implicit analyses (or  by automatically switching from implicit to explicit analysis). Material damage/failure defined by *MAT_ADD_{EROSION/DAMAGE_…} keywords can be deactivated globally, by setting MAEF=1 on *CONTROL_MAT.

This in general also applies to other failure types, for example *CONSTRAINED_JOINT_…_FAILURE.

Troubleshooting tips

Troubleshooting often is a process, involving several iterations, before a satisfactory solution can be found. It is about gathering information and consistently testing different hypotheses regarding what may be causing the problem.

LS-DYNA will provide information that may be useful for troubleshooting in the ASCII text files

  • d3hsp
    • Model information, contact settings, element formulations etc. – Confirm that you  got what you intended.
    • Element quality reports (failed elements)
    • Errors and Warnings
    • Implicit iteration information, convergence history
  • messag (smp/LS-DYNA) or mes0* (mpp/LS-DYNA)
    • Errors and warnnigs
    • Mortar contact information during the simulation (penetrations, number of active segments, etc.)
    • Extended iteration information, also including line search
  • d3msg – summmary of Errors and Warnings with extended information, after completed analysis

and in the binary databases (for 3D – visualization using for example, LS-PrePost)

  • d3iter
    • Shows the deformed configuration after each iteration
  • d3plot, binout*
    • For tracking the solution progress during the analysis

The d3iter database may provide very useful information for troubleshooting, since it shows the deformed geometry after each nonlinear iteration (it may be required to use the displacement scale factor to discover where the “unexpected” deformations occur). It will also provide visual feedback if, for example, unconnected subassemblies are “flying away”.

Recommendations – for a good starting point

The first step of troubleshooting is to establish a good starting point, with respect to control card settings, contacts etc. Follow the recommendations of Appendix P of the Keyword Manual, and the Guideline for implicit analyses in LS-DYNA. A brief summary follows:

  • *CONTROL_ACCURACY
    • IACC = 1 – turn on implicit accuracy on selected features
  • *CONTROL_IMPLICIT_GENERAL
    • DT0 – carefully chosen with application in mind
  • *CONTROL_IMPLICIT_AUTO
    • IAUTO = 1 -always include auto time stepping
    • ITEPOT = 100 – force time step increase upon convergence
  • *CONTROL_IMPLICIT_SOLUTION
    • DCTOL – think twice before increasing from default
    • ABSTOL=1.E-20 – for avoiding premature convergence
    • DNORM=1 – to base convergence on displacement change during step
    • NLNORM = 4 – for consistent treatment of norms and scalar products
    • NLPRINT = 3 – to get detained output messages for troubleshooting convergence
  • *CONTROL_IMLPICIT_DYNAMICS
    • Use dynamics to handle rigid body modes
  • *CONTROL_SHELL, CONTROL_SOLID
    • Activate ESORT for automatic sorting of trias, pentas

An oscillating residual norm may be indication of a convergence problem caused by contacts. Track convergence norms in d3hsp and mes* – files, look for situations where one iteration is close to converge, the next norms are orders of magnitude higher, and then close to convergence again, and so on. The Mortar Contacts will also reject severely penetrated iterates, issuing an information message (search in d3hsp)

 Contact algorithm rejected current iterate,
 list of element pairs affected follows (at most 10):
     Element #           47052 vs           58986
 ------------------------------------------------------------
      automatic time step size DECREASE, RETRY step:

Here, the problematic element IDs are listed. Inspect the model (check d3plot and d3iter) in the vicinity of these elements and see if large deformations or penetrations can explain the behavior further.

Try to remove unintended initial penetration’s from the model. Use for example LS-PrePost to check and fix penetrations. Also check reported initial penetrations in the mes* files. In addition, by setting PENOUT=2 on *CONTROL_OUTPUT, it becomes possible to fringe plot absolute and relative penetrations in the d3plot file.

For intended penetrations (like press fit) use IGNORE = 3 or 4 of the Mortar contacts (or alternatively try *CONTACT_SURFACE_TO_SURFACE_INTERFERENCE_ID).

If you suspect that initial penetrations are spuriously found by the Mortar contacts, you could try

  • Set PENMAX on Optional Card B, to smaller than or equal the smallest element size
  • Set IGNORE = -2 on *CONTACT_AUTOMATIC_SINGLE_SURFACE_MORTAR_ID

Contact release can cause severe convergence problems. Look for relative penetrations above 1, for example in the mes* file(s)

Maximum relative penetration is  0.1268843E+03 % between
     elements     162548 and     162861 on this processor
 *** Warning Penetration is close to maximum before release

In this case it would be a good idea to inspect the model in the vicinity of the element IDs 162548 and 162861. Increasing IGAP (to for eaxmple 5) on Optional Card C of the Mortar contact can reduce the risk for contact release.

One way to test if contact problems are causing the convergence problems can be to switch to tied contacts (*CONTACT_AUTOMATIC_…._MORTAR_TIED_ID) or reducing the contact stiffness (SFSA). Note that this is only a step in the investigations of the convergence problems, to see how the model responds to these changes, and it should not be seen as the final fix.

For high coefficients of friction, it can be beneficial for convergence to activate the unsymmetrical linear solver by setting LCPACK = 3 on *CONTROL_IMPLICIT_SOLVER.

Error and warning messages

A listing including some suggested actions follows.

  • Convergence could not be found, even at minimum time step size
*** Error 60004 (IMP+4)
    *********************************************************
    *                                                       *
    *                -  FATAL ERROR  -                      *
    *                                                       *
    *  Nonlinear solver failed to find equilibrium.         *
    *                                                       *
    *********************************************************
    • Indicates fundamental need for troubleshooting
  • Auto-SPC Error
*** Error 60047 (IMP+47)
     *********************************************************
     *                                                       *
     *                    -  FATAL ERROR  -                  *
     *  AUTOSPC detected very large entries in the           *
     *  assembled matrix.  These are probably caused         *
     *  by overflow during elemental matrix computations.    *
     *  This could be caused by an energy explosion.         *
     *  Recommend switching to the REAL*8 version of LS-DYNA.*
     *                                                       *
     *********************************************************
    • Indicates unconstrained parts, missing connectivity or boundary conditions. Typically, pre-tension of (beam-type) bolts “free in space”
    • Check the model connectivity, material models, units etc.
  • AUTO-SPC Warnings
*** Warning 60055 (IMP+55)
     *********************************************************
     *                                                       *
     *                -  WARNING  -                          *
     *                                                       *
     *          6 Unconstrained degrees of freedom have      *
     * been detected and removed from this IMPLICIT model.   *
     *                                                       *
     *********************************************************
    • Indicates unconstrained parts, missing boundary conditions.
    • Set LPRINT > 1 on *CONTROL_IMPLICIT_SOLVER to get a list of all nodes (or rigid parts) subjected to AUTOSPC:s
    • Inspect the model and take action. Care must be taken that the AUTOSPC:s are not constraining the model in an undesired way.
  • Negative eigenvalues
*** Warning 60124 (IMP+124)
       2 negative eigenvalues detected
    • Warning from linear equation solver while factoring the stiffness matrix (iterations continue)
    • Inspect the model for loose parts or subassemblies. Check the model connectivity.
    • Perform an eigenvalue analysis to identify loose parts
    • Open the d3iter file and look for parts “flying away”
    • Activate implicit dynamics to handle intended rigid body modes
  • Unfulfilled boundary conditions
Convergence prevented due to unfulfilled bc...
    • Prescribed motions are not satisfied, which may prevent convergence
    • From R15, it is possible to exclude the prescribed motions from the line search by setting LSTOL < 0 on
      *CONTROL_IMPLICIT_SOLUTION (line search tolerance will then be |LSTOL|).
  • Material model detected excessive plastic strain increment
Material model rejected current iterate,
list of elements affected follows (at most 20):

       Element # 26137

------------------------------------------------------------
automatic time step size DECREASE, RETRY step:
    • Inspect the model in the vicinity of listed elements. Check the material data, hardening curve etc.
    • If the warning occurs repeatedly, one remedy may be to switch from MAT_24 to for example MAT_103
  • Linear solver problems
*** Error 60110 (IMP+110) (processor # 0)
     terminating : MF2 Factorization error 154
    • Possible remedy: Try the MUMPS linear solver, sett lsorlvr=30 on *CONTROL_IMPLICIT_SOLVER
    • May be a sign of model instability, or parts flying away. Inspect d3iter file. Possibly try activating the non-symmetrical linear solver (LCPACK=3 on *CONTROL_IMPLICIT_SOLVER).

Troubleshooting tips – constraints and boundary conditions

  • Avoid using release conditions (TRFLAG, RRFLAG) on constrained nodal rigid bodes (*CONSTRAINED_NODAL_RIGID_BODY)
    • Use joints instead
  • Also, if possible, avoid release conditions of beam elements. Use joints or trusses instead.
  • Use *BOUNDARY_PRESCRIBED_MOTION_RIGID for *CONSTRAINED_NODAL_RIGID_BODY s.
    • Be careful with *BOUNDARY_SPC on rigid nodes.
  • Use *BOUNDARY_PRESCRIBED_MOTION if boundary conditions should be activated / deactivated.
    • Alternatively use multistage Analysis, see Appendix X of the Keyword Manual.
  • If starting from an explicit model with many *CONSTRAINED_JOINT_… it might help adding joint stiffness and/or damping using
    *CONTROL_RIGID (variables GJADSTF, GJADVSC, TJADSTF, TJADVSC on Card 2).

Troubleshooting tips – general things to investigate

If the convergence problems prevail, it may be required to reduce the model in order to gain insight to the cause of the problems. Try removing parts, contacts, etc. to get a partial model working. Then add features again, step by step, to detect when the convergence problems appear again.

Things worth testing to see how the model reacts can be:

  • Decrease the maximum time step
  • Turn on implicit dynamics
  • Switch nonlinear implicit solution scheme to full Newton (set ILIMIT=1 and MAXREF = 15 – 60 on *CONTROL_IMPLICIT_SOLUTION)
  • Try the nonsymmetric linear solver (LCPACK=3 on *CONTROL_IMPLICIT_SOLVER)
  • Activate contributions from the geometrical stiffness (IGS=1 on *CONTROL_IMPLICIT_GENERAL)
  • Change contact stiffness (increase if large penetrations are noted, decrease – just as a test – otherwise)
    • Temporarily switch to tied contact – does it improve the convergence?
  • Try switching to displacement control (if possible)
  • Tighten tolerances, that is try (for example) setting DCTOL = 5.E-4 on *CONTROL_IMPLICIT_SOLUTION
    • Also adding the residual force criterion may be worth investigating, try for example RCTOL = 1.E-2