[MBDyn-users] Input mistake

masarati at aero.polimi.it masarati at aero.polimi.it
Thu Aug 6 14:13:32 CEST 2009


> Thanks a lot for your answer and your time.
> Indeed, I want to impose displacement on axis 2, so I wrote :
> "position constraint,
>         inactive, active, inactive,
>         0., 1., 0.,
>         ramp, 5., 0., 10.0, 0.0, "
>
> But now, I have the problem I had before : the solver fail and I have a
> warning "matrix is singular". I didn't find references to explain warnings
> so I am not sure where I made error. But in this case, I believe it comes
> from under or overconstrained system so I add a new joint (dubbed
> "JOINT_CREMAILLIERE") to regularize with but I didn't suceed.
> I enclose updated files.

Dear Romuald,

I went back to your original file, added the modification illustrated
above, and forced the use of the "naive" solver with the statement

    linear solver: naive, colamd;

in the "initial value" block.  This is particularly useful because the
naive linear solver can tell what pivoting failed because of the
singularity of the matrix.  The output I get is

NaiveSolver: ENOPIV(88)
Initial assembly failed because no pivot element could be found for column
88 (Joint(8): dof(2)); aborting...

This means that the second multiplier of the total joint failed.  The
first multiplier is related to the imposed relative displacement along
axis 2 (the other components are inactive) while multipliers 2, 3 and 4
are related to the relative orientation constraints.

What seems to happen is that the relative orientation between node
NODE_CREMAILLIERE and NODE_BATI is directly constrained by JOINT_DISP, and
indirectly constrained by JOINT_AD and JOINT_CD.

In order to regularize the thing you need to determine why they are
overconstrained, and relax the orientation constraint.  Or, you can try to
use regularization; in this case, you need to use the "joint
regularization" element on as many equations of JOINT_DISP as required.

Hope this helps.  Cheers, p.



More information about the MBDyn-users mailing list