Hi
I did an eigen value analysis on a simple 2D steel frame and I have get negative eigen values during 0.1 second of my time history analysis which is applied 40 seconds. On the other hand the other recorder objects like element recorders did not stop recording the status of the elements. My questions are:
What is the probable reason of the negative values?
Is the structure getting unstable?
Are the information records by element recorder trustable?
Thanks
Negative eigen value
Moderators: silvia, selimgunay, Moderators
what eigenvalues are you asking for?
there are two possibilities: there is something wrong with your model, check all elements and materials.
or
you are asking for only one of two equal eigenvalues and the program can't decide. try asking for one more and see if this is the case.
there are two possibilities: there is something wrong with your model, check all elements and materials.
or
you are asking for only one of two equal eigenvalues and the program can't decide. try asking for one more and see if this is the case.
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
Dear Silvia
Thank you for your soon replying. I have analyzed a 2 story steel frame under Morgan Hill 57383 earthquake record while some gravitational load applied to the frame too. And I have get this eigen values from the eigen command during the analysis just like below:
0 3.568996e+001
. \
. |-Positive values
. /
6.28 3.285683e+000
6.3 -8.564577e-0013
6.32 -8.929174e-001
6.34 -8.809041e-001
6.36 -1.217125e+000
6.38 1.501043e+000
. \
. |-Positive values
. /
40. 0 3.568996e+001
I don’t think that my model definition is wrong because the negative values only appear in a few steps. Also if the lower scale factor of the record used, no negative eigen value will be appears.
On the other hand I have changed the number of eigen values requested in the model to 2, 3 or 4 but it is not fixed.
Is it possible to becoming the structure unstable just for a moment? And if yes how the element recorders can work fine on those moments?
I have attached the model too. It just needs a Morgan Hill 57383 earthquake record with the PEER format.
# Gneral descreption:Steel 2 story, 1 bay frame
# Analisys type:Nonlinear time history analysis
# Element type:Displacement Beam Column
# Section type:fiber
wipe
model BasicBuilder -ndm 2 -ndf 3
# ------------------------------
# Create model
# ------------------------------
set width 6
set height 3.6
node 1 0.0 0.0
node 2 0.0 $height
node 3 0.0 [expr 2*$height]
node 5 $width 0.0
node 6 $width $height
node 7 $width [expr 2*$height]
fix 1 1 1 1
fix 5 1 1 1
set mm 9e3
set mmi 0
mass 2 $mm $mm $mmi
mass 3 $mm $mm $mmi
mass 6 $mm $mm $mmi
mass 7 $mm $mm $mmi
# -----------------------------
# Define material
# -----------------------------
set E 2e+11
set Fy 2.5e+8
set PI 3.141592654
uniaxialMaterial Steel01 1 $Fy $E 0.03
# -----------------------------
# Define sections
# -----------------------------
# WsectoFiber.tcl
# Descreption: tcl procedure for creating a wide flange steel fiber section
# ----------------
# Defining a procedure to create fiber section
# -------------------------------------------------
puts "section tag Area Moment of inertia"
puts "----------- --------- -----------------"
proc Wsection {sectag mattag h b tw tf nsijf nsjkw} {
set af [expr $b*$tf]
set aw [expr ($h-2*$tf)*$tw/$nsjkw]
set dft [expr ($h-$tf)/2]
set dfb [expr -$dft]
set dw [expr ($h-2*$tf)/$nsjkw]
set d1 [expr $dw/2]
set mofi [expr 2*$af*$dft*$dft+$tw*($h-2*$tf)*($h-2*$tf)*($h-2*$tf)/12]
set area 0
set mofi 0
#
section Fiber $sectag {
# fiber $yLoc $zLoc $A $matTag
fiber $dft 0 $af $mattag
fiber $dfb 0 $af $mattag
set area [expr $area+2*$af]
set mofi [expr $af*$dft*$dft*2]+$mofi
#
for {set i 0} {$i < [expr $nsjkw/2]} {incr i 1} {
set distancep [expr $d1+$i*$dw]
set distancen [expr -$distancep]
fiber $distancep 0 $aw $mattag
fiber $distancen 0 $aw $mattag
set area [expr $area+2*$aw]
set mofi [expr $mofi+2*$aw*$distancep*$distancep]
}
}
puts "$sectag $area $mofi"
}
# sectag mattag h b tw tf nsijf nsjkw
#HEA
Wsection 124 1 0.23 0.24 7.50E-03 1.20E-02 10 10
#HEB
Wsection 216 1 0.16 0.16 8.00E-03 1.30E-02 10 10
Wsection 220 1 0.2 0.2 9.00E-03 1.50E-02 10 10
# ----------------------------
geomTransf PDelta 1
# ----------------------------
# Define element
# ----------------------------
#element dispBeamColumn $eletag $inode $jnode $numintgrpoint $sectag $transtag
element dispBeamColumn 10 1 2 5 216 1
element dispBeamColumn 11 5 6 5 216 1
element dispBeamColumn 20 2 3 5 220 1
element dispBeamColumn 21 6 7 5 220 1
element dispBeamColumn 12 2 6 5 124 1
element dispBeamColumn 22 3 7 5 124 1
# ---------------------------
# Gravity load
# ---------------------------
set lambda [eigen 1]
set omega [expr pow($lambda,0.5)]
set Tperiod [expr 2*$PI/$omega]
puts "========================================="
puts " Natural period at initial : $Tperiod "
puts "========================================="
set pointloadend -61777
set pointloadmid -123556
set dis 0.5
pattern Plain 1 Linear {
#eleLoad -ele $eleTag1 $eleTag2 -type -beamPoint $Pz $xL <$Px>
eleLoad -ele 12 -type -beamPoint $pointloadmid $dis
eleLoad -ele 22 -type -beamPoint $pointloadmid $dis
#load $nodeTag $Fx $Fz $Mz
load 2 0 $pointloadend 0
load 3 0 $pointloadend 0
load 6 0 $pointloadend 0
load 7 0 $pointloadend 0
}
constraints Transformation
numberer RCM
system BandGeneral
test NormDispIncr 1.0e-4 100
algorithm Newton
integrator LoadControl 1
analysis Static
analyze 1
loadConst -time 0.0
puts "_________________________"
puts "Gravity loads applied {:)"
# ---------------------------
# Lateral load
# ---------------------------
set steps 2000
wipeAnalysis
set inser "MHG06090.txt"
set outser "Earthquakerecord.acc"
# -----------------------------------------------------------------------------------------------------------------------------------------
# READSMDFILE.tcl
# A procedure which parses a ground motion record from the PEER strong motion database
proc ReadSMDFile {inFilename outFilename dt} {
upvar $dt DT
if [catch {open $inFilename r} inFileID] {
puts stderr "Cannot open $inFilename for reading"
} else {
set outFileID [open $outFilename w]
set flag 0
foreach line [split [read $inFileID] \n] {
if {[llength $line] == 0} {
continue
} elseif {$flag == 1} {
puts $outFileID $line
} else {
foreach word [split $line] {
if {$flag == 1} {
set DT $word
break
}
if {[string match $word "DT="] == 1} {
set flag 1
}
}
}
}
close $outFileID
close $inFileID
}
}
#ReadSMDFile inFilename outFilename dt
ReadSMDFile $inser $outser dt
#set accelSeries "Series -dt $dt -filePath -factor G"
set accelSeries "Series -dt $dt -filePath $outser -factor 11.5769636"
#pattern UniformExcitation $patternTag $dir -accel $series
pattern UniformExcitation 2 1 -accel $accelSeries
constraints Transformation
numberer RCM
system BandGeneral
test NormDispIncr 1.0e-4 100
algorithm Newton
integrator Newmark 0.5 0.25 0.202683 0.00154 0 0
analysis Transient
# Open output file
set Lamdafile [open Lambda.la w]
for {set i 0} {$i < $steps} {incr i 1} {
analyze 1 0.02
set lambda [eigen 4]
puts $Lamdafile "[expr 0.02*[expr $i+1]] $lambda"
}
puts "Lateral loads applied {:)"
set lambda [eigen 1]
set omega [expr pow($lambda,0.5)]
set Tperiod [expr 2*$PI/$omega]
puts "========================================="
puts " Natural period at the end : $Tperiod "
puts "========================================="
Thank you for your soon replying. I have analyzed a 2 story steel frame under Morgan Hill 57383 earthquake record while some gravitational load applied to the frame too. And I have get this eigen values from the eigen command during the analysis just like below:
0 3.568996e+001
. \
. |-Positive values
. /
6.28 3.285683e+000
6.3 -8.564577e-0013
6.32 -8.929174e-001
6.34 -8.809041e-001
6.36 -1.217125e+000
6.38 1.501043e+000
. \
. |-Positive values
. /
40. 0 3.568996e+001
I don’t think that my model definition is wrong because the negative values only appear in a few steps. Also if the lower scale factor of the record used, no negative eigen value will be appears.
On the other hand I have changed the number of eigen values requested in the model to 2, 3 or 4 but it is not fixed.
Is it possible to becoming the structure unstable just for a moment? And if yes how the element recorders can work fine on those moments?
I have attached the model too. It just needs a Morgan Hill 57383 earthquake record with the PEER format.
# Gneral descreption:Steel 2 story, 1 bay frame
# Analisys type:Nonlinear time history analysis
# Element type:Displacement Beam Column
# Section type:fiber
wipe
model BasicBuilder -ndm 2 -ndf 3
# ------------------------------
# Create model
# ------------------------------
set width 6
set height 3.6
node 1 0.0 0.0
node 2 0.0 $height
node 3 0.0 [expr 2*$height]
node 5 $width 0.0
node 6 $width $height
node 7 $width [expr 2*$height]
fix 1 1 1 1
fix 5 1 1 1
set mm 9e3
set mmi 0
mass 2 $mm $mm $mmi
mass 3 $mm $mm $mmi
mass 6 $mm $mm $mmi
mass 7 $mm $mm $mmi
# -----------------------------
# Define material
# -----------------------------
set E 2e+11
set Fy 2.5e+8
set PI 3.141592654
uniaxialMaterial Steel01 1 $Fy $E 0.03
# -----------------------------
# Define sections
# -----------------------------
# WsectoFiber.tcl
# Descreption: tcl procedure for creating a wide flange steel fiber section
# ----------------
# Defining a procedure to create fiber section
# -------------------------------------------------
puts "section tag Area Moment of inertia"
puts "----------- --------- -----------------"
proc Wsection {sectag mattag h b tw tf nsijf nsjkw} {
set af [expr $b*$tf]
set aw [expr ($h-2*$tf)*$tw/$nsjkw]
set dft [expr ($h-$tf)/2]
set dfb [expr -$dft]
set dw [expr ($h-2*$tf)/$nsjkw]
set d1 [expr $dw/2]
set mofi [expr 2*$af*$dft*$dft+$tw*($h-2*$tf)*($h-2*$tf)*($h-2*$tf)/12]
set area 0
set mofi 0
#
section Fiber $sectag {
# fiber $yLoc $zLoc $A $matTag
fiber $dft 0 $af $mattag
fiber $dfb 0 $af $mattag
set area [expr $area+2*$af]
set mofi [expr $af*$dft*$dft*2]+$mofi
#
for {set i 0} {$i < [expr $nsjkw/2]} {incr i 1} {
set distancep [expr $d1+$i*$dw]
set distancen [expr -$distancep]
fiber $distancep 0 $aw $mattag
fiber $distancen 0 $aw $mattag
set area [expr $area+2*$aw]
set mofi [expr $mofi+2*$aw*$distancep*$distancep]
}
}
puts "$sectag $area $mofi"
}
# sectag mattag h b tw tf nsijf nsjkw
#HEA
Wsection 124 1 0.23 0.24 7.50E-03 1.20E-02 10 10
#HEB
Wsection 216 1 0.16 0.16 8.00E-03 1.30E-02 10 10
Wsection 220 1 0.2 0.2 9.00E-03 1.50E-02 10 10
# ----------------------------
geomTransf PDelta 1
# ----------------------------
# Define element
# ----------------------------
#element dispBeamColumn $eletag $inode $jnode $numintgrpoint $sectag $transtag
element dispBeamColumn 10 1 2 5 216 1
element dispBeamColumn 11 5 6 5 216 1
element dispBeamColumn 20 2 3 5 220 1
element dispBeamColumn 21 6 7 5 220 1
element dispBeamColumn 12 2 6 5 124 1
element dispBeamColumn 22 3 7 5 124 1
# ---------------------------
# Gravity load
# ---------------------------
set lambda [eigen 1]
set omega [expr pow($lambda,0.5)]
set Tperiod [expr 2*$PI/$omega]
puts "========================================="
puts " Natural period at initial : $Tperiod "
puts "========================================="
set pointloadend -61777
set pointloadmid -123556
set dis 0.5
pattern Plain 1 Linear {
#eleLoad -ele $eleTag1 $eleTag2 -type -beamPoint $Pz $xL <$Px>
eleLoad -ele 12 -type -beamPoint $pointloadmid $dis
eleLoad -ele 22 -type -beamPoint $pointloadmid $dis
#load $nodeTag $Fx $Fz $Mz
load 2 0 $pointloadend 0
load 3 0 $pointloadend 0
load 6 0 $pointloadend 0
load 7 0 $pointloadend 0
}
constraints Transformation
numberer RCM
system BandGeneral
test NormDispIncr 1.0e-4 100
algorithm Newton
integrator LoadControl 1
analysis Static
analyze 1
loadConst -time 0.0
puts "_________________________"
puts "Gravity loads applied {:)"
# ---------------------------
# Lateral load
# ---------------------------
set steps 2000
wipeAnalysis
set inser "MHG06090.txt"
set outser "Earthquakerecord.acc"
# -----------------------------------------------------------------------------------------------------------------------------------------
# READSMDFILE.tcl
# A procedure which parses a ground motion record from the PEER strong motion database
proc ReadSMDFile {inFilename outFilename dt} {
upvar $dt DT
if [catch {open $inFilename r} inFileID] {
puts stderr "Cannot open $inFilename for reading"
} else {
set outFileID [open $outFilename w]
set flag 0
foreach line [split [read $inFileID] \n] {
if {[llength $line] == 0} {
continue
} elseif {$flag == 1} {
puts $outFileID $line
} else {
foreach word [split $line] {
if {$flag == 1} {
set DT $word
break
}
if {[string match $word "DT="] == 1} {
set flag 1
}
}
}
}
close $outFileID
close $inFileID
}
}
#ReadSMDFile inFilename outFilename dt
ReadSMDFile $inser $outser dt
#set accelSeries "Series -dt $dt -filePath -factor G"
set accelSeries "Series -dt $dt -filePath $outser -factor 11.5769636"
#pattern UniformExcitation $patternTag $dir -accel $series
pattern UniformExcitation 2 1 -accel $accelSeries
constraints Transformation
numberer RCM
system BandGeneral
test NormDispIncr 1.0e-4 100
algorithm Newton
integrator Newmark 0.5 0.25 0.202683 0.00154 0 0
analysis Transient
# Open output file
set Lamdafile [open Lambda.la w]
for {set i 0} {$i < $steps} {incr i 1} {
analyze 1 0.02
set lambda [eigen 4]
puts $Lamdafile "[expr 0.02*[expr $i+1]] $lambda"
}
puts "Lateral loads applied {:)"
set lambda [eigen 1]
set omega [expr pow($lambda,0.5)]
set Tperiod [expr 2*$PI/$omega]
puts "========================================="
puts " Natural period at the end : $Tperiod "
puts "========================================="