Modal properties error?

Post Reply
mike_oleary
Posts: 8
Joined: Tue Jul 04, 2023 11:00 am

Modal properties error?

Post by mike_oleary » Sun Aug 24, 2025 8:42 pm

I've noticed that when a model has the same x and y stiffness the modal properties seem to produce a small error. In this example it is less exaggerated, but I have been able to achieve as much as 120% cumulative mass participation in the X.

I'm curious as to what is the cause of this and if it is possibly a bug?

Code: Select all

wipe

# Model

model Basic -ndm 3 -ndf 6

# Materials

nDMaterial ElasticIsotropic 1 200000000000 0.3 7850

# Sections

section Elastic 1 200000000000 0.09 0.0006749999999999998 0.0006749999999999998 76923076923.07692 0.0011407499999999998

# Transforms

geomTransf Linear 1 1 0 0
geomTransf Linear 2 1 0 0
geomTransf Linear 3 0 -1 0
geomTransf Linear 4 0 -1 0
geomTransf Linear 5 0 1 0
geomTransf Linear 6 0 1 0
geomTransf Linear 7 0 1 0
geomTransf Linear 8 0 1 0

# Nodes

node 1 -0 -0 3
node 2 0 5 3
node 3 5 -0 3
node 4 5 5 3
node 5 -0 -0 0
node 6 0 5 0
node 7 5 -0 0
node 8 5 5 0

# Mass

mass 1 4592.25 4592.25 0 0 0 0
mass 2 4592.25 4592.25 0 0 0 0
mass 3 4592.25 4592.25 0 0 0 0
mass 4 4592.25 4592.25 0 0 0 0
mass 5 1059.75 1059.75 0 0 0 0
mass 6 1059.75 1059.75 0 0 0 0
mass 7 1059.75 1059.75 0 0 0 0
mass 8 1059.75 1059.75 0 0 0 0

# Supports

fix 5 1 1 1 1 1 1
fix 6 1 1 1 1 1 1
fix 7 1 1 1 1 1 1
fix 8 1 1 1 1 1 1

# Elements

element elasticBeamColumn 1 1 2 1 1
element elasticBeamColumn 2 3 4 1 2
element elasticBeamColumn 3 1 3 1 3
element elasticBeamColumn 4 2 4 1 4
element elasticBeamColumn 5 5 1 1 5
element elasticBeamColumn 6 6 2 1 6
element elasticBeamColumn 7 7 3 1 7
element elasticBeamColumn 8 8 4 1 8

# Analysis

eigen -fullGenLapack 3
record
modalProperties -file C:/modalProperties.txt

STKO Team
Posts: 3066
Joined: Tue Oct 29, 2019 8:45 am

Re: Modal properties error?

Post by STKO Team » Mon Aug 25, 2025 9:14 am

This is what I obtain with the FullGenLapack

Code: Select all

* 10. MODAL PARTICIPATION MASS RATIOS (%) (cumulative):
# The cumulative modal participation mass ratios (%) for each mode.
#          MODE            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- ------------- -------------
              1      0.889235       99.1108             0             0             0             0
              2       100.889       99.1108             0             0             0             0
              3       100.889       99.1108             0             0             0           100
While this is what I have with the default (-genBandArpack):

Code: Select all

* 10. MODAL PARTICIPATION MASS RATIOS (%) (cumulative):
# The cumulative modal participation mass ratios (%) for each mode.
#          MODE            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- ------------- -------------
              1       99.9999   0.000133387             0             0             0             0
              2           100           100             0             0             0             0
              3           100           100             0             0             0           100
I would always use the default Arpack solver for a series or reasons:
  • More accurate
  • Faster: it's meant to be used for extracting few eigenvalues out of a very large model (so it supports the sparse solver you use, if any. While the fullGenLapack always extracts all eigenvalues, even if you ask for few of them, slowing down the process as your model grows)
  • So unless you need M eigenvalues, with M > N-1, where N is the number of dynamic DOFs in your model, you can safely use the default eigensolver.
Note: It's a problem of symmetry with the lapack solver: 100.889 (X) + 99.1108 (Y) = 200

mike_oleary
Posts: 8
Joined: Tue Jul 04, 2023 11:00 am

Re: Modal properties error?

Post by mike_oleary » Tue Aug 26, 2025 2:07 am

Hmm those numbers are better than what I achieve. I was comparing to ETABS and noticed ETABS doesn't give this sort of error.

The reason for using FullGenLapack is 1 it's a small model and 2 I was testing both this case and the case in which the top nodes are constrained with a rigid diaphragm meaning the genBandArpack is not able to solve the problem for the 3 modes that should exist.

Results with no rigid diaphragm constraint

Code: Select all

# MODAL ANALYSIS REPORT

* 1. DOMAIN SIZE:
# This is the size of the problem: 1 for 1D problems, 2 for 2D problems, 3 for 3D problems.
3


* 2. EIGENVALUE ANALYSIS:
#          MODE        LAMBDA         OMEGA     FREQUENCY        PERIOD
# ------------- ------------- ------------- ------------- -------------
              1       7897.53       88.8681       14.1438     0.0707024
              2       7897.53       88.8681       14.1438     0.0707024
              3       8855.47       94.1035        14.977     0.0667689


* 3. TOTAL MASS OF THE STRUCTURE:
# The total masses (translational and rotational) of the structure
# including the masses at fixed DOFs (if any).
#            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- -------------
          22608         22608             0         38151         38151        282600


* 4. TOTAL FREE MASS OF THE STRUCTURE:
# The total masses (translational and rotational) of the structure
# including only the masses at free DOFs.
#            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- -------------
          18369         18369             0             0             0        229613


* 5. CENTER OF MASS:
# The center of mass of the structure, calculated from free masses.
#             X             Y             Z
# ------------- ------------- -------------
            2.5           2.5             3


* 6. MODAL PARTICIPATION FACTORS:
# The participation factor for a certain mode 'a' in a certain direction 'i'
# indicates how strongly displacement along (or rotation about)
# the global axes is represented in the eigenvector of that mode.
#          MODE            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- ------------- -------------
              1       17.6039       134.384             0             0             0             0
              2       135.532             0             0             0             0             0
              3             0             0             0             0             0      -479.179


* 7. MODAL PARTICIPATION MASSES:
# The modal participation masses for each mode.
#          MODE            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- ------------- -------------
              1       309.896       18059.1             0             0             0             0
              2         18369             0             0             0             0             0
              3             0             0             0             0             0        229613


* 8. MODAL PARTICIPATION MASSES (cumulative):
# The cumulative modal participation masses for each mode.
#          MODE            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- ------------- -------------
              1       309.896       18059.1             0             0             0             0
              2       18678.9       18059.1             0             0             0             0
              3       18678.9       18059.1             0             0             0        229613


* 9. MODAL PARTICIPATION MASS RATIOS (%):
# The modal participation mass ratios (%) for each mode.
#          MODE            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- ------------- -------------
              1       1.68706       98.3129             0             0             0             0
              2           100             0             0             0             0             0
              3             0             0             0             0             0           100


* 10. MODAL PARTICIPATION MASS RATIOS (%) (cumulative):
# The cumulative modal participation mass ratios (%) for each mode.
#          MODE            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- ------------- -------------
              1       1.68706       98.3129             0             0             0             0
              2       101.687       98.3129             0             0             0             0
              3       101.687       98.3129             0             0             0           100


Results with Rigid diaphragm constraint (better)

Code: Select all

# MODAL ANALYSIS REPORT

* 1. DOMAIN SIZE:
# This is the size of the problem: 1 for 1D problems, 2 for 2D problems, 3 for 3D problems.
3


* 2. EIGENVALUE ANALYSIS:
#          MODE        LAMBDA         OMEGA     FREQUENCY        PERIOD
# ------------- ------------- ------------- ------------- -------------
              1       7897.53       88.8681       14.1438     0.0707024
              2       7897.53       88.8681       14.1438     0.0707024
              3       8897.66       94.3274       15.0127     0.0666104


* 3. TOTAL MASS OF THE STRUCTURE:
# The total masses (translational and rotational) of the structure
# including the masses at fixed DOFs (if any).
#            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- -------------
          22608         22608             0         38151         38151        282600


* 4. TOTAL FREE MASS OF THE STRUCTURE:
# The total masses (translational and rotational) of the structure
# including only the masses at free DOFs.
#            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- -------------
          18369         18369             0             0             0        229613


* 5. CENTER OF MASS:
# The center of mass of the structure, calculated from free masses.
#             X             Y             Z
# ------------- ------------- -------------
            2.5           2.5             3


* 6. MODAL PARTICIPATION FACTORS:
# The participation factor for a certain mode 'a' in a certain direction 'i'
# indicates how strongly displacement along (or rotation about)
# the global axes is represented in the eigenvector of that mode.
#          MODE            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- ------------- -------------
              1     0.0875313      -135.532             0             0             0             0
              2       135.532             0             0             0             0             0
              3             0             0             0             0             0       479.179


* 7. MODAL PARTICIPATION MASSES:
# The modal participation masses for each mode.
#          MODE            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- ------------- -------------
              1    0.00766172         18369             0             0             0             0
              2         18369             0             0             0             0             0
              3             0             0             0             0             0        229612


* 8. MODAL PARTICIPATION MASSES (cumulative):
# The cumulative modal participation masses for each mode.
#          MODE            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- ------------- -------------
              1    0.00766172         18369             0             0             0             0
              2         18369         18369             0             0             0             0
              3         18369         18369             0             0             0        229612


* 9. MODAL PARTICIPATION MASS RATIOS (%):
# The modal participation mass ratios (%) for each mode.
#          MODE            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- ------------- -------------
              1   4.17101e-05           100             0             0             0             0
              2           100             0             0             0             0             0
              3             0             0             0             0             0           100


* 10. MODAL PARTICIPATION MASS RATIOS (%) (cumulative):
# The cumulative modal participation mass ratios (%) for each mode.
#          MODE            MX            MY            MZ           RMX           RMY           RMZ
# ------------- ------------- ------------- ------------- ------------- ------------- -------------
              1   4.17101e-05           100             0             0             0             0
              2           100           100             0             0             0             0
              3           100           100             0             0             0           100
When compared to ETABs Eigen values/periods/total mass is correct. But mass participation is slightly off.


Maybe you could also explain to me why the genBandArpack does not supporting setting a min and max number of modes to solve for like ETABS? It would be nice to be able to give a range to try target 90% mass participation without getting an error that the target number of modes can't be solved and having to run the modal analysis many times with different number of modes to find some acceptable value.

STKO Team
Posts: 3066
Joined: Tue Oct 29, 2019 8:45 am

Re: Modal properties error?

Post by STKO Team » Tue Aug 26, 2025 8:23 am

Hmm those numbers are better than what I achieve. I was comparing to ETABS and noticed ETABS doesn't give this sort of error.
As you have seen, this behavior is solver-dependent, so you may obtain slightly different results based on how the eigenvectors are computed.
The reason for using FullGenLapack is 1 it's a small model
I see, but Arpack is always faster
2 I was testing both this case and the case in which the top nodes are constrained with a rigid diaphragm meaning the genBandArpack is not able to solve the problem for the 3 modes that should exist.
Try to add also vertical masses so you have more dynamic DOFs

aybe you could also explain to me why the genBandArpack does not supporting setting a min and max number of modes to solve for like ETABS? It would be nice to be able to give a range to try target 90% mass participation without getting an error that the target number of modes can't be solved and having to run the modal analysis many times with different number of modes to find some acceptable value.
The eigenvalue computation and the extraction of modal properties are two different functions in OpenSees and also in ETABS. computation of modal masses is a post processing test (after eigenvalues and eigenvectors).
So maybe ETABS iteratively re-computes the eigenvalues, adapting the number of modes based on the obtained modal properties.

Post Reply