Eigenvalues Again (could be a bug?)
Moderators: silvia, selimgunay, Moderators
Eigenvalues Again (could be a bug?)
Great problem...
Calculating Eigenvalues of a simple supported axial tensioned beam with small bending stiffness modeled with 20 beam elements, I obtain unlikely values of eigenvalues (also negative) and, also worst, different values if I ask for 1 or 5 or 10 evalues. (!!)
On the contrary with 16 elements, I haven't this problem even if the values are not in good agreement with theoretical data.
Any idea? If you want i can post my file.
endryus
Calculating Eigenvalues of a simple supported axial tensioned beam with small bending stiffness modeled with 20 beam elements, I obtain unlikely values of eigenvalues (also negative) and, also worst, different values if I ask for 1 or 5 or 10 evalues. (!!)
On the contrary with 16 elements, I haven't this problem even if the values are not in good agreement with theoretical data.
Any idea? If you want i can post my file.
endryus
I need at least 20 flexural modes, so the internal nodes should be at least 20.
I post my file, try to have a look.
One more question: if I use distributed mass on beam elements in the mass matrix do I have also the rotational mass or only the translational ones?
have a nice day.
endryus
# ------------------------------
# OpenSees input file
# Written by: Andrea Mordini
# Date: April 2005
#
# Units: N, m, s
# ------------------------------
wipe;
#units_and_constants
#space units
set m 1.;
set cm [expr $m/100];
set mm [expr $m/1000];
#time units
set s 1.;
#force units
set N 1.;
set kN [expr $N*1000];
#stresses units
set MPa [expr $N/pow($mm,2)];
#constants
set pig [expr 2*asin(1.0)];
set g [expr 9.806*$m/pow($s,2)];
set large 1.e20;
set small 1.e-20;
# ------------------------------
# Procedures
# ------------------------------
proc Eigenvalues {maxeig} {
set pig [expr 2*asin(1.0)];
set lambda [eigen $maxeig]
puts "lambda"
for {set i 0} {$i < $maxeig} {incr i} {
puts [lindex $lambda $i]
}
for {set i 0} {$i < $maxeig} {incr i} {
# set temp [expr pow([lindex $lambda $i],0.5)]; # omega
set temp [expr pow(abs([lindex $lambda $i]),0.5)]; # omega
set temp2 [expr 2*$pig/$temp]; # period (sec.)
set temp3 [expr 1/$temp2]; # frequency (1/sec.)
lappend omega $temp
lappend period $temp2
lappend freq $temp3
}
puts "frequencies"
for {set i 0} {$i < $maxeig} {incr i} {
puts [lindex $freq $i]
}
}
# ------------------------------
# End of procedures
# ------------------------------
# Parameters
set ipt 5 ;# number of integration points on frame elements
set dx 0.127
set ml 0.0154 ;# mass per unit length
# ------------------------------
# Start of model generation
# ------------------------------
model basic -ndm 2 -ndf 3
# Nodes
# tag x y
node 1 0 0
node 2 [expr 1*$dx] 0
node 3 [expr 2*$dx] 0
node 4 [expr 3*$dx] 0
node 5 [expr 4*$dx] 0
node 6 [expr 5*$dx] 0
node 7 [expr 6*$dx] 0
node 8 [expr 7*$dx] 0
node 9 [expr 8*$dx] 0
node 10 [expr 9*$dx] 0
node 11 [expr 10*$dx] 0
node 12 [expr 11*$dx] 0
node 13 [expr 12*$dx] 0
node 14 [expr 13*$dx] 0
node 15 [expr 14*$dx] 0
node 16 [expr 15*$dx] 0
node 17 [expr 16*$dx] 0
node 18 [expr 17*$dx] 0
node 19 [expr 18*$dx] 0
node 20 [expr 19*$dx] 0
node 21 [expr 20*$dx] 0
# Restraints
# tag dx dy rz
fix 1 1 1 0
fix 21 1 1 0
# Sections
# tag E A J
section Elastic 1 [expr 206843*$MPa] [expr 1.9793*pow($mm,2)] [expr 0.3117*pow($mm,4)]
# Transformations
geomTransf PDelta 1
# Elements
# tag inode jnode intp sect transf
element nonlinearBeamColumn 1 1 2 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 2 2 3 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 3 3 4 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 4 4 5 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 5 5 6 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 6 6 7 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 7 7 8 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 8 8 9 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 9 9 10 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 10 10 11 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 11 11 12 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 12 12 13 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 13 13 14 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 14 14 15 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 15 15 16 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 16 16 17 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 17 17 18 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 18 18 19 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 19 19 20 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 20 20 21 $ipt 1 1 -mass $ml
# ------------------------------
# End of model generation
# ------------------------------
# ------------------------------
# Start of analysis 1
# ------------------------------
# Loads
pattern Plain 1 Linear {
sp 14 1 0.0137979912;
}
# Analysis parameters
system BandGeneral
constraints Transformation
numberer RCM
test NormDispIncr 1.0e-12 10 3
algorithm Linear
integrator LoadControl 1
analysis Static
# Analysis
analyze 1
loadConst -time 0
# ------------------------------
# End of analysis 1
# ------------------------------
Eigenvalues 1
Eigenvalues 5
Eigenvalues 10
print eigenvectors.out node
I post my file, try to have a look.
One more question: if I use distributed mass on beam elements in the mass matrix do I have also the rotational mass or only the translational ones?
have a nice day.
endryus
# ------------------------------
# OpenSees input file
# Written by: Andrea Mordini
# Date: April 2005
#
# Units: N, m, s
# ------------------------------
wipe;
#units_and_constants
#space units
set m 1.;
set cm [expr $m/100];
set mm [expr $m/1000];
#time units
set s 1.;
#force units
set N 1.;
set kN [expr $N*1000];
#stresses units
set MPa [expr $N/pow($mm,2)];
#constants
set pig [expr 2*asin(1.0)];
set g [expr 9.806*$m/pow($s,2)];
set large 1.e20;
set small 1.e-20;
# ------------------------------
# Procedures
# ------------------------------
proc Eigenvalues {maxeig} {
set pig [expr 2*asin(1.0)];
set lambda [eigen $maxeig]
puts "lambda"
for {set i 0} {$i < $maxeig} {incr i} {
puts [lindex $lambda $i]
}
for {set i 0} {$i < $maxeig} {incr i} {
# set temp [expr pow([lindex $lambda $i],0.5)]; # omega
set temp [expr pow(abs([lindex $lambda $i]),0.5)]; # omega
set temp2 [expr 2*$pig/$temp]; # period (sec.)
set temp3 [expr 1/$temp2]; # frequency (1/sec.)
lappend omega $temp
lappend period $temp2
lappend freq $temp3
}
puts "frequencies"
for {set i 0} {$i < $maxeig} {incr i} {
puts [lindex $freq $i]
}
}
# ------------------------------
# End of procedures
# ------------------------------
# Parameters
set ipt 5 ;# number of integration points on frame elements
set dx 0.127
set ml 0.0154 ;# mass per unit length
# ------------------------------
# Start of model generation
# ------------------------------
model basic -ndm 2 -ndf 3
# Nodes
# tag x y
node 1 0 0
node 2 [expr 1*$dx] 0
node 3 [expr 2*$dx] 0
node 4 [expr 3*$dx] 0
node 5 [expr 4*$dx] 0
node 6 [expr 5*$dx] 0
node 7 [expr 6*$dx] 0
node 8 [expr 7*$dx] 0
node 9 [expr 8*$dx] 0
node 10 [expr 9*$dx] 0
node 11 [expr 10*$dx] 0
node 12 [expr 11*$dx] 0
node 13 [expr 12*$dx] 0
node 14 [expr 13*$dx] 0
node 15 [expr 14*$dx] 0
node 16 [expr 15*$dx] 0
node 17 [expr 16*$dx] 0
node 18 [expr 17*$dx] 0
node 19 [expr 18*$dx] 0
node 20 [expr 19*$dx] 0
node 21 [expr 20*$dx] 0
# Restraints
# tag dx dy rz
fix 1 1 1 0
fix 21 1 1 0
# Sections
# tag E A J
section Elastic 1 [expr 206843*$MPa] [expr 1.9793*pow($mm,2)] [expr 0.3117*pow($mm,4)]
# Transformations
geomTransf PDelta 1
# Elements
# tag inode jnode intp sect transf
element nonlinearBeamColumn 1 1 2 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 2 2 3 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 3 3 4 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 4 4 5 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 5 5 6 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 6 6 7 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 7 7 8 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 8 8 9 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 9 9 10 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 10 10 11 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 11 11 12 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 12 12 13 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 13 13 14 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 14 14 15 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 15 15 16 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 16 16 17 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 17 17 18 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 18 18 19 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 19 19 20 $ipt 1 1 -mass $ml
element nonlinearBeamColumn 20 20 21 $ipt 1 1 -mass $ml
# ------------------------------
# End of model generation
# ------------------------------
# ------------------------------
# Start of analysis 1
# ------------------------------
# Loads
pattern Plain 1 Linear {
sp 14 1 0.0137979912;
}
# Analysis parameters
system BandGeneral
constraints Transformation
numberer RCM
test NormDispIncr 1.0e-12 10 3
algorithm Linear
integrator LoadControl 1
analysis Static
# Analysis
analyze 1
loadConst -time 0
# ------------------------------
# End of analysis 1
# ------------------------------
Eigenvalues 1
Eigenvalues 5
Eigenvalues 10
print eigenvectors.out node
-
- Posts: 68
- Joined: Fri Jul 02, 2004 6:10 am
- Location: Computers and Structures, Inc.
Distributed mass is converted to translational lumped mass (x & y)...
Berk Taftali
Georgia Institute of Technology
Ph.D. Candidate, Structural Engineering, Mechanics, and Materials
School of Civil and Environmental Engineering
Atlanta, GA 30332 USA
Email: gte994y@mail.gatech.edu
Georgia Institute of Technology
Ph.D. Candidate, Structural Engineering, Mechanics, and Materials
School of Civil and Environmental Engineering
Atlanta, GA 30332 USA
Email: gte994y@mail.gatech.edu
i'm looking over your file,
first of all, why do you define units and then don't use them uniformly? (length and mass-perunit lenght)
what are the units of
set dx 0.127
set ml 0.0154 ;# mass per unit length???
more importantly:
perform an eigenvalue analysis before you apply the loads. you'll see that the first eigenvalue is 20 -- good number.
then if you perform the eigenvalue analysis after the load analysis you get -4.5e5..... that means that your stiffness has changed significantly..... so look at where on your force-deformation curve you are performing the eigenvalue analysis.
please look this over and see if you still have problems.
first of all, why do you define units and then don't use them uniformly? (length and mass-perunit lenght)
what are the units of
set dx 0.127
set ml 0.0154 ;# mass per unit length???
more importantly:
perform an eigenvalue analysis before you apply the loads. you'll see that the first eigenvalue is 20 -- good number.
then if you perform the eigenvalue analysis after the load analysis you get -4.5e5..... that means that your stiffness has changed significantly..... so look at where on your force-deformation curve you are performing the eigenvalue analysis.
please look this over and see if you still have problems.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Hi Silvia, thanks for your response.
I have found the problem. The structure is half tensioned and half compressed, so after the analysis, when I calculate the eigen, it has already buckled!!
On the contrary, no problems if the structure is only tensioned.
Anyway I write some notes, maybe it can be useful to someone else.
1- No problems about units. If you use basic units and they are consistent you don't have to specify them. The units of dx and ml are m and kg/m as they are consistent with basic units.
2- I DO need to perform the eigen analysis after the loads are applied because I DO need the stiffness to be changed by loads... that's the reason I'm using a PDelta transformation.
In fact for the tensioned only structure, 20 is wrong, the first frequencies must be about 74 as I have checked theoretically and with others codes (Ansys, SAP2000, Abaqus).
endryus
I have found the problem. The structure is half tensioned and half compressed, so after the analysis, when I calculate the eigen, it has already buckled!!
On the contrary, no problems if the structure is only tensioned.
Anyway I write some notes, maybe it can be useful to someone else.
1- No problems about units. If you use basic units and they are consistent you don't have to specify them. The units of dx and ml are m and kg/m as they are consistent with basic units.
2- I DO need to perform the eigen analysis after the loads are applied because I DO need the stiffness to be changed by loads... that's the reason I'm using a PDelta transformation.
In fact for the tensioned only structure, 20 is wrong, the first frequencies must be about 74 as I have checked theoretically and with others codes (Ansys, SAP2000, Abaqus).
endryus
glad you solved your problem.
i understand doing an eigenvalue analysis after the load analysis, however, you should always check that you have a good model (and analysis program) by doing an eigenvalue analysis first. then you know you need to check the state of the model if the second eigenvalue analysis is giving you problems.
if you are getting the wrong period/freq, you should check your total mass and stuff like that.
about units, you are right, you do not have to use them if you are consistent, they are just a good tool. expecially if you are changing the number of segments along your beam, you can have tcl calculate the segment mass automatically.
i understand doing an eigenvalue analysis after the load analysis, however, you should always check that you have a good model (and analysis program) by doing an eigenvalue analysis first. then you know you need to check the state of the model if the second eigenvalue analysis is giving you problems.
if you are getting the wrong period/freq, you should check your total mass and stuff like that.
about units, you are right, you do not have to use them if you are consistent, they are just a good tool. expecially if you are changing the number of segments along your beam, you can have tcl calculate the segment mass automatically.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
i have to admit that I have not played with that recorder. However, do you have to do an eigenvalue analysis before the recorder? because, otherwise, how does it know that you wanted 20 eigenvalues? maybe the default is 2.
Frank knows more about this recorder.
Try different things with it, and I'll try to play with it, too.
Frank knows more about this recorder.
Try different things with it, and I'll try to play with it, too.
Silvia Mazzoni, PhD
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104
Structural Consultant
Degenkolb Engineers
235 Montgomery Street, Suite 500
San Francisco, CA. 94104