Recently I started having this error in my simulations in AceFEM. For me it is quite strange because it happens in a particular step when the convergence has already achieved and then in the post-iteration call the analysis collapses and automatically cuts the step for the next trial. This is the part of the output file:

15:35:19 2261.21 12.80 Standard iteration

15:35:21 2263.26 2.05 K and R loop PARDISO : number of perturbed pivots: 405

15:35:29 2271.71 8.45 Linear solution (650403) Step=27 Iteration=5 Mode(l/g)=0/0 Events=0 |R|=2.37669e-012 |da|=5.37286e-013 Time(t/dt)=0.0630077/9.42236e-005 Multiplier(l/dl)=0.0630077/9.42236e-005

15:35:29 2271.71 0.00 Modified iteration: Residual: 0 Tangent: 1 Solver: 1

15:35:30 2272.32 0.61 K&R assembly failed in element: 1295 SMTConvergence - residul error in post-iteration to high (see SMTConvergence) |R|:1.*^50 Events=0 SMTConvergence-divergence:{"Residul error in post-iteration to high.", "ErrorStatus-2"}

Warning - step cut. Divergence in sub-iterative process. Events=1

Warning - step cut. Solver: near zero pivots. Events=405

As you can see in the penultimate iteration it has converged already but I don't know why it fails in the post-iteration call. Then if I continue the analysis, I will end up with a really small multiplier that makes the analysis extremely slow to proceed.

Have you ever had the same problem? Do you have any suggestions?


1 Answer 1


I've never used AceFEM but the error seems to be solely related to Pardiso which is used as linear solver. Pardiso uses a slightly cheated LU-factorization as precoditioner (which is usually a very good one) and applies about two steps of iterative refinement (which usually suffices). This strategy has the advantage that Pardiso can precompute a so-called symbolic factorization that does not depend on the actual nonzero values of the sparse matrix but only on the positions of nonzero matrix entries. This symbolic factorization can be reused if the nonzero-values change (this is the case, e.g., in Newton's method or when solving transient PDE with time-dependent coefficients by implicit methods).

However, sometimes, it does not work out. I recall that I frequently got bogus results when I used Pardiso for indefinite symmetric matrices that involved stiffness matrices of a 1-dimensional finite element discretization (bi-Laplacians with really bad condition numbers IIRC). In that case, UMFPACK proved to be more robust.

So I would advise you to tell AceFEM to use another linear solver and see what happens.

  • $\begingroup$ Thanks a lot for sharing your experience. $\endgroup$
    – KratosMath
    May 25, 2018 at 8:02
  • $\begingroup$ However, I don't know how to use UMFPACK in AceFEM. $\endgroup$
    – KratosMath
    May 25, 2018 at 11:23
  • $\begingroup$ From experience I can tell that it is always a good idea to have a look into the software's documentation could be of interest to you. Look up SMTSetSolver at page 84. Check out SMTSetSolver[1] or SMTSetSolver[2] (I cannot try it myself). $\endgroup$ May 25, 2018 at 11:38
  • $\begingroup$ Yes, thanks. But you know UMFPACK is not a part of the standard AceFEM distribution. therefore implementing it maybe needs additional requirements. $\endgroup$
    – KratosMath
    May 25, 2018 at 11:46
  • $\begingroup$ I read that. But apparently they have some other LU-solver available with SMTSetSolver[1] (and I would not be surprised if it called the built-in solver "Multifrontal" which is UMFPACK). $\endgroup$ May 25, 2018 at 11:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.