5 Replies Latest reply on Jun 17, 2015 10:12 AM by Shivani Patel

    Is there a way to handle solver warnings like "zero pivot" problems?

    Hendriks Hubbertz

      Hello everyone,

       

      is there any way to decode solver warnings? I want to know, in which part of the geometry (node/element) the problem is exactly.

      For example a warning/message could be like this:

      PCGLSS0204:Negative or zero pivot -3.490117e+000 at row 7284r)  

       

      Or can I have a look into the result-files or log-files to get an idea, where the problem is exactly?

      Up to now I can only do random changes to the meth or the constraints until the simulation works without problems. It would be great to get some ideas what to change to save time iterating.

       

      Best regards

        • Re: Is there a way to handle solver warnings like "zero pivot" problems?
          Jared Conway

          no real way to dig into that error without being a developer

          but some suggestions:

          1. look it up in the solidworks discussion forum and the solidworks Kb

          2. report it to your reseller, at minimum they can report to the developers so that a good error message can be generated

          3. use an iterative method to find the problem but be intelligent about it. errors usually come up from bad geometry, bad mesh, or bad setup. if you start simple (fixed bc and gravity and bonded contacts) you will be able to isolate geometry and mesh right away for example.

            • Re: Is there a way to handle solver warnings like "zero pivot" problems?
              Hendriks Hubbertz

              Thanks for the answer. It seems that I have to keep iterating (using gravity is a good tip).

              • Re: Is there a way to handle solver warnings like "zero pivot" problems?
                Vincent Janzen

                Jared, if you don't mind me reopening this discussion, I wonder if you would give a little clarification of your answer above?  We have been fighting these errors pretty extensively, on some fairly large assemblies, and are looking for anything that might help track them down.  Do you have some guidelines or working definitions you could suggest for "bad geometry", "bad mesh" and "bad setup"?

                 

                So far, we've been using geometry as long as it doesn't have any of the very small faces, etc. that cause the mesh to fail.  We're using a mesh if the aspect ratio and Jacobian ratio seem reasonable.  Setup is mostly a matter of visual inspection, to make sure the various contact sets seem correct, and such.

                 

                Do you know of any other general checks we could be doing, especially with regard to the geometry and the mesh, that may help us to get our model cleaner?

                 

                Thanks.

                  • Re: Is there a way to handle solver warnings like "zero pivot" problems?
                    Shivani Patel

                    This isn't exactly an answer, but it's the process I go through when dealing with unstable assemblies.

                     

                    Beforehand, I make sure I have no gaps, or I make note of gaps that should be welded/bonded and create those contacts.

                    I also recreate contacts between beams/solids, beams/shells, and solids/shells.

                     

                    If I'm getting no solution due to instability, like zero-point, I try "soft springs", then a frequency study with same setup, then select most components in the tree and "exclude from analysis". The third way is iterative and could take awhile, but it helps me narrow down which parts are causing the instability. Usually I get lucky with soft springs and can see which parts are "flying off into space".

                • Re: Is there a way to handle solver warnings like "zero pivot" problems?
                  Shaun Densberger

                  In the finite element method, you have a general equation:

                   

                  {f} = [K]{d}

                   

                  where:

                   

                  1. {f} is your force vector (your applied and unknown loads).
                  2. [K] is the global stiffness matrix of the system.
                  3. {d} is your displacement vector (your constraints and unknown displacements).

                   

                  Typically, a solver will use Gaussian elimination to upper triangularize the stiffness matrix to find your displacement vector solution; the pivot term in the stiffness matrix is the first non zero term. A zero pivot means that you've given the solver a system that cannot be solved deterministically (mathematically, this means that your stiffness matrix is not positive definite). If we take a simple spring element of stiffness k N/m and do not apply any constraints to the model, then we'll get a zero pivot after doing the Gaussian elimination to upper triangularize the stiffness matrix.

                   

                  zero pivot.PNG

                   

                  A negative pivot is usually called a small pivot, as this happens when the pivot index is some very small number (+/- 1e-20), which comes about because it's incredibly rare for a computer to calculate zero when doing Gaussian elimination.

                   

                  That being said, there are usually two reasons for a zero or small pivot:

                   

                  1. Your model is not constrained properly.
                  2. Your model has a very large difference in stiffness between neighboring elements (this results in a pivot that gets close to the round off error of the computer).

                   

                  Thankfully, the above issues are (usually) easy to solve:

                   

                  1. Make sure that your model is constraint against rigid body motion. If you have an assembly, make sure parts are connected.
                  2. Don't add in elements that have very large differences in their stiffness when compared to other elements in the model (8 orders of magnitude or so). For example, you don't want to connect a spring with a stiffness of 1e1 N/m to another spring of stiffness 1e12 N/m.

                   

                  "Up to now I can only do random changes to the meth or the constraints until the simulation works without problems."

                   

                  Are you randomly changing your constraints because you don't know what constraints are needed to fix all DOF? If it's an assembly, are you changing/adding constraints to additional parts?