How many modes to include in the modal anlaysis

  • Thread starter Ronankeating
  • Start date
  • Tags
    Modes
In summary: M is the mass matrix...I is the identity matrix. In summary, the conversation discusses the inputs for a modal analysis problem, including the mass and stiffness matrices, eigenvalues, and eigenvectors. The participants also discuss the process for determining the appropriate number of modes to use for the analysis, with some mentioning using methods like proper orthogonal decomposition. They also examine the results of the analysis, including the mode shapes and participation ratios, and question the accuracy of the algorithm and the significance of certain values in the results. Finally, they suggest comparing the results with a standard library routine for validation.
  • #1
Ronankeating
63
0
hi all,

Having those input in hand, mass ([M]) n*n matrix , stiffness ([K]) n*n matrices and having obtained the eigen-values, eigenvectors for the higher-frequencies with subspace or simlutaneous iteration respectively, eigen-values ([[itex]\Phi[/itex]]) as m*m diagonal matrix, and m*m eigen-vectors as ([Ω]).

To summarize the inputs:
n = the total DoFs in system
m = number of interested modes (m<n)
M = Mass matrix (n*n)
K = Stiffness matrix (n*n)
[itex]\Phi[/itex]=eigen value matrix (m*m diagonal)
Ω=eigen-vectors (m*m)

How am I supposed to find the that m number of modes are enough for modal analysis for the given case?

Generally in books suggest that, modal particiaption factors are (MPF) = R*[itex]\Phi[/itex]nT / ( [itex]\Phi[/itex]nT*M*[itex]\Phi[/itex]n ) where R is the time independent spatial loading type of external loads( p(t) = R*f (t) ).

But we are interested with eigen-solution of the problem, so there is no any external loading and reasonably there is no R spatial vector. So what actually is book referring with that p(t) = R*f (t) description ?

Regards,
 
Last edited:
Engineering news on Phys.org
  • #2
The magnitudes of the eigenvalues should with respect to one another should represent the total energy captured by their respective modes. Order your eigenvalues/eigenvectors such that the eigenvalues are in decreasing order and pick the first m that capture the proportion of energy you are looking to capture.

As an example from signals analysis, you can often use methods like proper orthogonal decomposition to generate hundreds of modes if you need them but often it's the first half dozen or so that contain 99% of the signal energy.
 
  • #3
Thanks for commenting,

Signal processing may also have similar behaviour but generally I was focusing on structural dynamics. But still didn't get that how spatial vector for loading type is formed in eigen value problem.

In order to get a better view I post the results from my program.

Stiffness and mass matrices are 20x20, but I'm only interested with first 12 modes, so m =12 in my case. I solve equations with simultaneous iteration and iteration ends after 1000 steps, eigen values are as posted below. I'm bit of dubious here that algorithm produces the correct results, there is a big ratio especially between 1st and 2nd eigen values, is it normal? The rest of the modes are decreasing gradually and looks normal in my idea.

ITERATION NUMBER 1000
ESTIMATED EIGEN-VALUES
0.1039E+07 0.5100E+01 0.3648E+01 0.3630E+01 0.3601E+01 0.3569E+01 0.3509E+01 0.3491E+01 0.3392E+01 0.3083E+01 0.1793E+01 0.2905E+00

I've abstained from posting eigen vectors here, cause it's really not readable, but I depict the calculation process.
Based on the instruction in the book I use the [itex]\Gamma[/itex]=[itex]\Phi[/itex]T*M*I; Meff=[itex]\Gamma[/itex]2 ; MPR=Meff/Mtotal and the output is as follow.
1: mode contribution = % 0.0000
2: mode contribution = % 0.0125
3: mode contribution = % 0.0000
4: mode contribution = % 0.0105
5: mode contribution = % 0.0439
6: mode contribution = % 0.0106
7: mode contribution = % 0.0443
8: mode contribution = % 0.1031
9: mode contribution = % 0.0452
10: mode contribution = % 0.0106
11: mode contribution = % 0.0001
12: mode contribution = % 0.0137
TOTAL MODAL PARTICIPATION 0.2945

Isn't is strange that even If I include %60 percent of modes, I got %29 in response?

Regards,
 
  • #4
Whether it is signals analysis or structural dynamics makes no difference. The concepts in eigenvalue problems stay the same either way.

How is your first "mode contribution" 0%? What are you using the calculate those percentages. It should be like 99.999% based on the fact that your first eigenvalue appears to be 6 orders of magnitude larger than the rest.
 
  • #5
Ronankeating said:
I'm bit of dubious here that algorithm produces the correct results, there is a big ratio especially between 1st and 2nd eigen values, is it normal?

The jump from 51 to 106 looks very odd to me, unless you have a reason why it should happen. 1000 iterations seems a big number for such a small matrix as well, but since your output claims you have 8 eignevalues clustered between about 30 and 35 that might slow down the convergence of whatever you are doing.

Have you plotted out the mode shapes to check if they make any sense?

Or compare your results with a standard library routine like
http://www.netlib.org/lapack/explor...eigen.html#ga80bb116b6dacd91ef3241373469dd7f8
 
  • #6
Sorry for being late for reponse, but it took me a while to sort out all the packages to run the lapack library.

To obtain the mass pariticipation ratios I use the Γ=ΦT*M*I; Meff2 ; MPR=Meff/Mtotal, where ΦT is the eigenvector column corresponding to the mode of interest.

Based on the AlephZero suggection I used lapack(DSYGV subroutine) with all the modes and the results are as follow:
Code:
 Eigenvalues
       -1.8174    -1.3285    -0.4110     0.2897     0.7568     2.1237     5.1803    16.0423
 
 
 Estimate of reciprocal condition number for B
        6.3E-02
 
 Error estimates for the eigenvalues
        1.2E-14    1.1E-14    9.1E-15    8.9E-15    9.7E-15    1.2E-14      1.8E-14    3.7E-14
 
 Error estimates for the eigenvectors
        7.5E-14    7.3E-14    4.9E-14    7.3E-14    7.4E-14    2.7E-14      1.4E-14    5.7E-15
    1 mode contribution    6.0501
    2 mode contribution    1.3497
    3 mode contribution    0.5748
    4 mode contribution    0.0096
    5 mode contribution    1.8717
    6 mode contribution   10.7302
    7 mode contribution   54.4733
    8 mode contribution   24.9407
 Total mass participation ratios are  100.0000

Regarding the data above,

1. Why am I getting the negative values of eigen values, is it normal?
2. While eigenvalues are in increasing order why modal mass particiaption ratios aren't in harmony with eigenvalues, but having some kind of arbitrary order. Is it normal?
3. What other participation ratios can be introduced in the modal analysis? Generally I observe that those being mentioned in books (i.e. static load participation ratio, dynamic load PR , modal PR etc..) but have never seen any explicit formulation for them. Could you elaborate that a bit further?
4. Is that mass particiaption and modal participatin factors are different things or can used identically?
5. AFAIK Lapack doesn't support iterative methods (subspace), what other trustworthy packages can i use for that?

Regards,
 
  • #7
Ronankeating said:
1. Why am I getting the negative values of eigen values, is it
normal?

It would be normal for nominally zero eigenvalues to be slightly negative beause of rounding errors, but your numbers look too big for that. Most like the reason is some combination of
- K and/or M are wrong
- you supplied the data in the wrong format to the Lapack routine.

I would check out the eigenvalues of K and M separately. If you don't want to fight with more Lapack routines, you could set K to a unit matrix to check M, and M to a unit matrix to check K.

Or try a simple problem where you know the exact answers, like vibration of a stretched string with$$K = \begin{bmatrix} 2 & -1 \\ -1 & 2 & -1 \\ & -1 & 2 &-1 \\ & & & \ddots \\ & & & -1 & 2 & -1 \\
& & & & -1 & 2 \end{bmatrix} \qquad M = \begin{bmatrix} 4 & 1 \\ 1 & 4 & 1 \\ & 1 & 4 & 1 \\ & & & \ddots \\ & & & 1 & 4 & 1 \\
& & & & 1 & 4 \end{bmatrix}$$

I think questions 2 - 4 are premature until you get your eigensolutions working properly.
5. AFAIK Lapack doesn't support iterative methods (subspace), what other trustworthy packages can i use for that?
This is by the guy who invented it. IIRC there is some code in the book in Ref 7 in the paper.
http://web.mit.edu/kjb/www/Publications_Prior_to_1998/An_Accelerated_Subspace_Iteration_Method.pdf
 
  • #8
Thanks in advance,
It would be normal for nominally zero eigenvalues to be slightly negative beause of rounding errors, but your numbers look too big for that. Most like the reason is some combination of
- K and/or M are wrong
- you supplied the data in the wrong format to the Lapack routine.

I've started from lapack original example program (DSYGV example http://www.nag.com/lapack-ex/node103.html) which produced the exactly same results as expected for original example. The only thing that I altered for convenince in original program was, populating the K and M matrices with random numbers (ranging from 1 to 100) with help of random_seed() and random_number(int num) intrinsic subroutines. So "supplying the wrong format" item has been elimiated here in my idea.

If the hassle is "- K and/or M are wrong", then how can they be wrong ? At least the program is supposed to create the correct results for any arbitrary numerical value.

Sample K and M feeding for program , respectively (8x8)

K Matrix
0.5853E+02 0.9035E+02 0.7809E+02 0.1528E+02 0.9121E+02 0.2352E+02 0.5716E+01 0.5881E+02
0.9035E+02 0.7766E+02 0.5863E+02 0.8436E+02 0.3492E+02 0.4297E+02 0.2118E+02 0.2012E+02
0.7809E+02 0.5863E+02 0.8398E+01 0.5321E+01 0.5338E+02 0.7025E+02 0.3487E+02 0.6501E+02
0.1528E+02 0.8436E+02 0.5321E+01 0.3902E+02 0.7173E+02 0.2549E+02 0.1677E+02 0.2786E+02
0.9121E+02 0.3492E+02 0.5338E+02 0.7173E+02 0.5647E+02 0.5001E+02 0.2059E+02 0.4064E+02
0.2352E+02 0.4297E+02 0.7025E+02 0.2549E+02 0.5001E+02 0.5009E+02 0.6648E+02 0.4308E+02
0.5716E+01 0.2118E+02 0.3487E+02 0.1677E+02 0.2059E+02 0.6648E+02 0.6846E+02 0.1888E+02
0.5881E+02 0.2012E+02 0.6501E+02 0.2786E+02 0.4064E+02 0.4308E+02 0.1888E+02 0.9342E+02

M Matrix
20 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 30 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 30 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 30 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 40 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 40 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 40 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 40
 
  • #9
Ronankeating said:
The only thing that I altered for convenince in original program was, populating the K and M matrices with random numbers (ranging from 1 to 100) with help of random_seed() and random_number(int num) intrinsic subroutines. So "supplying the wrong format" item has been elimiated here in my idea.

If the hassle is "- K and/or M are wrong", then how can they be wrong ? At least the program is supposed to create the correct results for any arbitrary numerical value.

Yes, but if you populate K and/or M with random numbers they may not be positive definite, so you shouldn't expect the eigenvalues to be all positive.

I assumed the results in the previous post were from your actual structural matrices.

In any case, if your input matrices are generated from random numbers, how do you know if the output is right or wrong? (You could check the output by reconstructing K and M from the eigenvalues and eigenvectors, but you didn't say you had done anything like that).
 
  • #10
Yes, but if you populate K and/or M with random numbers they may not be positive definite, so you shouldn't expect the eigenvalues to be all positive.
I assumed the results in the previous post were from your actual structural matrices.
Sorry for not being explanatory and verbose enough, but it seems that issue has been cleared out, lapack library works well produces the consistent results and if I feed it with correct input(K and M obtained from structural matrices) I'll get correct results I think (non negative eigenvalues).

All other items have been eliminated, except that :

3. What other participation ratios can be introduced in the modal analysis? Generally I observe that those being mentioned in books (i.e. static load participation ratio, dynamic load PR , modal PR etc..) but have never seen any explicit formulation for them. Could you elaborate that a bit further?

4. Is that mass particiaption and modal participatin factors are different things or can be used identically?


Could shed some light on those topics as well?

Thanks for helping,

Regards,
 
  • #11
The equation you quoted is the mathmematically correct way to find the modal components of an arbitrary applied force.

The maths of modal analysis is simpler if you always normalize the mode shape amplitudes, so that ##\Phi^T M \Phi = 1## and ##\Phi^T K \Phi = \omega^2## for each mode. Using modes that are "mass normalized" in that way is the obvious choice if you are using modes calculated from a model of the mass and stiffness.

But for practical engineering, working with a small mount of measured data and no theoretical model of the structure, it may be simpler just to normalize all the mode shapes to unit amplitude one point on the strucutre, or normalize each mode so its own maximum amplitude is 1. That leads to various measures of "modal participation", "effective modal mass", etc. The terminology used to describe this is not standardized and sometimes not even defined, except by "reverse engineering" what a particular report or paper means.

If you do a properly planned modal test, you can get the mathematically consistent scale factors from the measured data. But if the only measurements you have are from a couple of strain gauges put on the structure for some other purpose, doing something (even if it's not nice mathematically) may be better than doing nothing at all.
 
  • #12
Thank you very much indeed for your valuable posts,

One final question, how am I supposed to obtain the element forces after modal analysis?
If I obtain the element forces with Fs= k*x formulaiton there shuldn't be any problem but the glitch here is I've applied the Guyan reduction to whole structural system, and so the structural matrices K and M are reduced. How to expand the formulation of obtaining the element forces from reduced system to original system?

Regards,
 
  • #13
You have two options.

1. Back substitute to get the unreduced model displacements from the reduced displacements, then find the element forces.
2. If the element forces are a linear function of the element displacements, they will also be a linear function of the reduced model displacements. When you do the reduction, you can construct a set of coefficients to get a particular element force from the reduced displacements.

Which is the "best" way depends how many element forces you want form the model. If you want to back substitute the displacments anyway to do computer graphics etc, option 1 is easiest to program. If you want to find only a few forces and the number of reduced variables is << the full model size, option 2 may run faster.

The maths for option 2 is to think of the reduction in terms of ##x_s = L x_m## (see some earlier posts) and transform any matrix ##A## between "master" and "slave" variables using ##L^T A L##.
 

Related to How many modes to include in the modal anlaysis

1. How do I determine the number of modes to include in modal analysis?

The number of modes to include in modal analysis is determined by considering the complexity of the system, the level of accuracy required, and the available computational resources. Generally, it is recommended to include enough modes to capture at least 80-90% of the system's response.

2. Can too many modes be included in modal analysis?

Including too many modes in modal analysis can result in a large computational burden and may not provide significant additional information. It is important to strike a balance between the number of modes included and the accuracy of the results.

3. What are the consequences of including too few modes in modal analysis?

If too few modes are included in modal analysis, the results may not accurately represent the system's behavior. This could lead to incorrect design decisions and potential errors in the analysis. It is important to carefully select the appropriate number of modes for accurate results.

4. Are there any guidelines for selecting the number of modes in modal analysis?

There are no strict guidelines for selecting the number of modes in modal analysis, as it ultimately depends on the specific system and analysis requirements. However, it is generally recommended to include enough modes to capture the dominant behavior of the system while keeping the computational effort reasonable.

5. How can I validate the number of modes included in modal analysis?

The number of modes included in modal analysis can be validated by comparing the results with experimental data or other established analytical models. If the results are consistent and sufficiently accurate, then the number of modes can be considered appropriate for the analysis.

Similar threads

  • Mechanical Engineering
Replies
3
Views
2K
  • Advanced Physics Homework Help
Replies
4
Views
2K
  • Linear and Abstract Algebra
Replies
17
Views
4K
  • Programming and Computer Science
Replies
31
Views
2K
  • Math Proof Training and Practice
3
Replies
86
Views
10K
  • Precalculus Mathematics Homework Help
Replies
4
Views
1K
  • General Engineering
Replies
4
Views
4K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
2K
  • Differential Equations
Replies
25
Views
3K
  • Engineering and Comp Sci Homework Help
Replies
1
Views
2K
Back
Top