I didn't realize that my post would generate so many useful comments.
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.
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
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.
- 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.
not Modal Assurance Criterion