extraction of negative eigenvalues

About the development of the FEM module/workbench.

Moderator: bernd

User avatar
HarryvL
Veteran
Posts: 1285
Joined: Sat Jan 06, 2018 7:38 pm
Location: Netherlands

Re: extraction of negative eigenvalues

Post by HarryvL »

bernd wrote: Mon Jul 08, 2019 10:03 am
HarryvL wrote: Mon Jul 08, 2019 9:50 am This is surprising and different from what I remember. I will look into it and compare to what I did for the bridge.
great
HarryvL wrote: Mon Jul 08, 2019 9:50 am PS: yes the natural frequency in rad/s is the eigenvalue of the free vibration problem.
than what is the column eigenvalue for? Do you know some paper which explains all this without tons of integrals and matrix operations ... :oops: wikipedia does not a good job here IMHO.
All good questions. I will answer them when I am back at my computer. Unfortunately, eigenvalues and eigencectors go hand in hand with matrix equations so a little bit of that is unavoidable.
User avatar
HarryvL
Veteran
Posts: 1285
Joined: Sat Jan 06, 2018 7:38 pm
Location: Netherlands

Re: extraction of negative eigenvalues

Post by HarryvL »

bernd wrote: Mon Jul 08, 2019 10:03 am
HarryvL wrote: Mon Jul 08, 2019 9:50 am This is surprising and different from what I remember. I will look into it and compare to what I did for the bridge.
great
HarryvL wrote: Mon Jul 08, 2019 9:50 am PS: yes the natural frequency in rad/s is the eigenvalue of the free vibration problem.
than what is the column eigenvalue for? Do you know some paper which explains all this without tons of integrals and matrix operations ... :oops: wikipedia does not a good job here IMHO.
I looked into this and I need to make a few corrections to my earlier posts on this topic (which I will do through EDITS). Here is how I got myself confused:

1) The eigenvalue reported in Calculix (second column in dat file) is the square of the natural frequency and not the natural frequency itself.
2) So if this squared value is negative it is either due to numerical rounding of a near-zero value or something very special is going on
3) The Calculix manual gives an example of such a special case for a spinning disk on a slender shaft. The shaft becomes unstable above a certain rotational speed and the motion changes from oscillatory to exponential (unstable/explosive). This exponential behavior corresponds to a negative eigenvalue (and therefore imaginary natural frequency)
4) The only case I can imagine where we could hit a similar issue with FreeCAD is when we load a part or structure with forces that exceed the elastic buckling load (but I would need to check the math of such a case to be sure)
5) The references that I made to the bridge calculation are irrelevant. There all eigenvalues were positive, but the eigenmodes were complex due to damping. This required me to square and add the real and imaginary response amplitudes of the resulting motion.

So what does it all mean for the FEM work bench? Simply use the square root of the eigenvalue (second column) and divide this number by 2*PI to get the natural frequency in Hz. If the eigenvalue is negative then report 0.0 and display a warning ("Imaginary natural frequency found. This could either be due to numerical rounding of rigid body modes or physical instability, e.g. buckling. Please check input").

A clear reference for understanding free vibration and eigenvalue analysis is the book Finite Element Procedures by Klaus Jurgen Bathe.
User avatar
HarryvL
Veteran
Posts: 1285
Joined: Sat Jan 06, 2018 7:38 pm
Location: Netherlands

Re: extraction of negative eigenvalues

Post by HarryvL »

HarryvL wrote: Mon Jul 08, 2019 11:43 pm 4) The only case I can imagine where we could hit a similar issue with FreeCAD is when we load a part or structure with forces that exceed the elastic buckling load (but I would need to check the math of such a case to be sure)
I can confirm this is the case. Analysis of a rigid column on a rotational spring shows that the frequency eigenvalue depends as follows on the vertical load F:

(Omega_F) ^ 2= (1 - F/FE) * (Omega_0) ^ 2

where FE is the Euler buckling load of the column. So the natural frequency reduces to zero as the load approaches the Euler buckling load and then becomes imaginary (sqrt of a negative number). This means that the behaviour changes from oscillatory to exponential (uncontrolled collapse).

So I stick to the advice above (in bold) but would not display zero, but rather Omega = Sqrt(Abs(eigenvalue)) and display the warning when eigenvalue < 0.0.
Jee-Bee
Veteran
Posts: 2566
Joined: Tue Jun 16, 2015 10:32 am
Location: Netherlands

Re: extraction of negative eigenvalues

Post by Jee-Bee »

HarryvL wrote: Mon Jul 08, 2019 11:43 pm A clear reference for understanding free vibration and eigenvalue analysis is the book Finite Element Procedures by Klaus Jurgen Bathe.
For who is interested: http://web.mit.edu/kjb/www/Books/FEP_2n ... inting.pdf
User avatar
HarryvL
Veteran
Posts: 1285
Joined: Sat Jan 06, 2018 7:38 pm
Location: Netherlands

Re: extraction of negative eigenvalues

Post by HarryvL »

HarryvL wrote: Tue Jul 09, 2019 6:54 am I can confirm this is the case. Analysis of a rigid column on a rotational spring shows that the frequency eigenvalue depends as follows on the vertical load F:

(Omega_F) ^ 2= (1 - F/FE) * (Omega_0) ^ 2

where FE is the Euler buckling load of the column. So the natural frequency reduces to zero as the load approaches the Euler buckling load and then becomes imaginary (sqrt of a negative number). This means that the behaviour changes from oscillatory to exponential (uncontrolled collapse).
natural frequency and instability.jpg
natural frequency and instability.jpg (143.08 KiB) Viewed 852 times
mac_the_bike
Posts: 42
Joined: Sun Jun 30, 2019 12:56 pm

Re: extraction of negative eigenvalues

Post by mac_the_bike »

I didn't realize that my post would generate so many useful comments.

bernd:
Re: Sun Jun 30, 2019 7:45 pm

Yes, from a "mechanical point of view" all eigenvalues are greater than or equal to 0.0.

But we are dealing with a mathematical model and its accuracy is limited eventually by the precision of the numbers.

It is because of this, the precision of the numbers, that it is possible to have negative eigenvalues. It is not a bug in the program, all FEA programs that I have used have given negative values on occasions. As I wrote, the jump between the last Rigid Body Mode, RBM, and the first non-RBM gives a good indication of the validity of the FEM model.

About "negative eigenvalues will never be smaller than -1".
If we take my model, if all the terms in the stiffness matrix were scaled by 1e6, or the mass matrix by 1e-6, then the lowest eigenvalue would be -0.9e-5*1e6 = -9. Although this probably doesn't have much physical meaning.

General comment, the fact that my first mode, -0.9e-05, has an Imaginary Part is because its eigenvalue is negative and this output, to my mind, is not a problem.

The modes associated with the zero frequencies are, in general, RBMs, i.e. the strain energy associated with the motion is zero.

One exception is when there is a mechanism in the model in which case there will be an additional zero frequency. A example of a mechanism is a hinge, as HarryvL says.

HarryvL:
3) The Calculix manual gives an example of such a special case for a spinning disk on a slender shaft...

and also your example of a column in compression.

In these, the behaviour changes from oscillatory to uncontrolled motion, HarryvL, and the calculation doesn't give results that have physical meaning. This implies that there is some problem with the modelling.

If you have a situation like this in your model, you may never realise that this is the case if you don't set the lower eigenvalue limit sufficiently negative.

I know the answer, so here is the question: "How can I find out if there are modes I have missed that are smaller than the lower limit frequency limit?"

The answer is "Do a STURM sequence calculation". Select the lower frequency limit, in radians/sec, and perform the calculation at this value. The result will tell you how many modes there are below this value. So for example if you choose a value of -10.0 and you can see how many modes there are below this value.

There is no problem with higher eigenvalues, just rerun with a higher range of values.

UR_ "Mon Jul 01, 2019 9:16 am":
Are all your calculated eigenvalues greater than, or equal to, zero? If they are, then there is no beef.

Comments about reading the .dat file --
python code: importCcxDatResults.py
procedure: readResult
Looking at the "L39-L105" version, you only read the real part of the frequency, cols 39:55. Perhaps you should read cols 56:71, and use its value, including the negative sign, if cols 39:55 are zero.

Look at "by UR_ » Mon Jul 01, 2019 9:16 am":
The format of the "Eigenmode Frequency" entry should be something like "%g", as in the C language, so that small numbers don't come out as 0.0.
If you have changed any of these already, then my apologies.

Finally,
  • Some of these comments are also applicable to the calculation of Buckling Factors using matrices.
  • If you are having problems debugging a model that is to be used for static analysis, performing a vibration analysis could offer some insight.
The End, at last.

mac
not Modal Assurance Criterion
Post Reply