Page 1 of 1
Modal properties error?
Posted: Sun Aug 24, 2025 8:42 pm
by mike_oleary
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
Re: Modal properties error?
Posted: Mon Aug 25, 2025 9:14 am
by STKO Team
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
Re: Modal properties error?
Posted: Tue Aug 26, 2025 2:07 am
by mike_oleary
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.
Re: Modal properties error?
Posted: Tue Aug 26, 2025 8:23 am
by STKO Team
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.