Help with eigen value analysis

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Post Reply
philiplukek
Posts: 8
Joined: Tue May 23, 2017 4:25 am
Location: NIT ROURKELA

Help with eigen value analysis

Post by philiplukek »

Hi all

I am a newbie to opensees. i am currently using it as part of my postgraduation project. As a start i need to find out the free vibration response of a 1 storied 3d frame. my frame will have a node at the centre of the rigid diaphragm where all the equivalent seismic weight is assumed to be lumped. to obtain the time period i have used the code as given in the opensees wiki but the results are not encouraging. can someone pls help me. Thanks in advance.

The analysis results are as follows. I have also included my code.

FullGenEigenSolver::solve() - the eigenvalue 2 is numerically undetermined or infinite
FullGenEigenSolver::solve() - the eigenvalue 3 is numerically undetermined or infinite
FullGenEigenSolver::solve() - the eigenvalue 4 is numerically undetermined or infinite
FullGenEigenSolver::solve() - the eigenvalue 5 is numerically undetermined or infinite
periods are 8.414408581243894 4.6862143823297825e-154 4.6862143823297825e-154 4.6862143823297825e-154 4.6862143823297825e-154
WARNING No ConstraintHandler type exists (Plain, Penalty,
Lagrange, Transformation) only


#Remove existing model

wipe

# Modelling Command - 3 dimensional with 6 degrees of freedom per node

model BasicBuilder -ndm 3 -ndf 6

set dataDir Data; # set up name of data directory -- remove
file mkdir $dataDir; # create data directory
set GMdir "../GMfiles"; # ground-motion file directory
set ViewScale 0.25; # scaling factor for viewing deformed shape, it depends on the dimensions of the model
source DisplayPlane.tcl; # procedure for displaying a plane in model
source DisplayModel3D.tcl; # procedure for displaying 3D perspectives of model
source BuildRCrectSection.tcl; # procedure for definining RC fiber section

# DEFINE GEOMETRY

set stry 1; #no of stories
set xbay 1; #no of bays along length
set zbay 1; #no of bays along width

set xnodes [expr $xbay+1]; #no of nodes per floor along length
set ynodes [expr $stry+1]; #no of nodes along height
set znodes [expr $zbay+1]; #no of nodes per floor along width
set nnodes [expr $xnodes*$ynodes*$znodes]; #total no of nodes

set NoCol [expr $xnodes*$znodes]; # no of columns per floor
set NoBmX $znodes; # no of X directioned beams per floor
set NoBmZ $xnodes; # no of Z directioned beams per floor

set stry_ht 4.0; #height of one story in metres (assuming uniform story height)
set xbay_wd 5.0; #width of one bay in metres (assuming uniform bay width)
set zbay_wd 6.0; #width of one bay in metres (assuming uniform bay width)

set tot_ht [expr $stry*$stry_ht]; #total height of the frame
set tot_xwd [expr $xbay*$xbay_wd]; #total width of the frame along x
set tot_zwd [expr $zbay*$zbay_wd]; #total width of the frame along z


set Ubig 1.e10; # a really large number
set Usmall [expr 1/$Ubig]; # a really small number
set pi 3.141593

# DISPLAY GEOMETRIC PROPERTIES

puts "\n--------------------------------3 DIMENSIONAL BAY FRAME---------------------------------------"
puts "\n\n No of stories \t : $stry"
puts "\n No of bays \t : $xbay in x direction"
puts "\n No of bays \t : $zbay in z direction"
puts "\n\n storey height \t : $stry_ht"
puts "\n Bay width \t : $xbay_wd in x direction"
puts "\n Bay width \t : $zbay_wd in z direction \n\n"


# ASSIGN AND DISPLAY NODAL COORDINATES

puts "NODE Numbers and Coordinates are as follows : \n"

set y 0.0
set count 1
for {set i 0} {$i <= $stry} {incr i} {
set x 0.0
for {set j 0} {$j <= $xbay} {incr j} {
set z 0.0
for {set k 0} {$k <= $zbay} {incr k} {
node $count $x $y $z
puts "node $count $x $y $z"
set z [expr $z+$zbay_wd]
incr count
}
set x [expr $x+$xbay_wd]
}
set y [expr $y+$stry_ht]
}

set nodeflag $count

# SET BOUNDARY CONDITIONS - Assuming only the base nodes to be fixed

fixY 0.0 1 1 1 1 1 1

#Assigning nodes for rigid diaphragm - for one storey one bay one girder building
# Node created at centre

set diaph1x [expr 0.5*$xbay_wd]; #distance of diaphragm 1 from origin along x direction
set diaph1z [expr $zbay_wd/2.0]; #distance of diaphragm 1 from origin along z direction

node 1111 $diaph1x $stry_ht $diaph1z; #1111 node number

# Constraints for rigid Diaphragms

fix $nodeflag 0 1 0 1 0 1

# Define rigid diaphragm

rigidDiaphragm 2 1111 5 6 7 8; #2 is the perpendicular direction, 5 6 7 8 slave nodes

# DEFINE SECTIONS

set SectionType Elastic; # options - elastic, FiberSection

# define section tags:
set ColSecTag 1
set BeamXSecTag 2
set BeamZSecTag 3
set ColSecTagFiber 4
set BeamXSecTagFiber 5
set BeamZSecTagFiber 6
set SecTagTorsion 7

set col_b 0.25; #column width
set col_d 0.3; #column depth

set bm_b 0.2; #beam width
set bm_d 0.2; #beam depth

set Ar_col [expr $col_b*$col_d]
set Iz_col [expr $col_b*pow($col_d,3)/12.0]
set Iy_col [expr $col_d*pow($col_b,3)/12.0]
set Jc $Ubig

set Ar_bm [expr $bm_b*$bm_d]
set Iz_bm [expr $bm_b*pow($bm_d,3)/12.0]
set Iy_bm [expr $bm_d*pow($bm_b,3)/12.0]
set Jb $Ubig

set fck 25; # compressive strength of concrete
set Ec [expr 5000*sqrt($fck)]; # Modulus of Elasticity of concrete
set nu 0.3; # Poissons ratio
set Gc [expr $Ec/2/(1+$nu)]; # Shear Modulus

if {$SectionType == "Elastic"} {

section Elastic $ColSecTag $Ec $Ar_col $Iz_col $Iy_col $Gc $Jc
section Elastic $BeamXSecTag $Ec $Ar_bm $Iz_bm $Iy_bm $Gc $Jb
section Elastic $BeamZSecTag $Ec $Ar_bm $Iz_bm $Iy_bm $Gc $Jb

set IDconcCore 1; # material numbers for recorder (this stressstrain recorder will be blank, as this is an elastic section)
set IDSteel 2; # material numbers for recorder (this stressstrain recorder will be blank, as this is an elastic section)


} elseif {$SectionType == "FiberSection"} {

source LibMaterialsRC.tcl; # define library of Reinforced-concrete Materials

set cover 0.05; # 50 millimeters
set diaBarCol 0.016; # diameter of longitduinal reinforcement bar on column
set diaBarBeam 0.016; # diameter of longitudinal reinforcement bar on beam

set numBarsTopCol 8; # number of longitudinal-reinforcement bars on top layer
set numBarsBotCol 8; # number of longitudinal-reinforcement bars on bottom layer
set numBarsIntCol 6; # TOTAL number of reinforcing bars on the intermediate layers
set barAreaTopCol [expr ($pi/4)*pow($diaBarCol,2)]; # longitudinal-reinforcement bar area
set barAreaBotCol [expr ($pi/4)*pow($diaBarCol,2)]; # longitudinal-reinforcement bar area
set barAreaIntCol [expr ($pi/4)*pow($diaBarCol,2)]; # longitudinal-reinforcement bar area

set numBarsTopBeam 6; # number of longitudinal-reinforcement bars on top layer
set numBarsBotBeam 6; # number of longitudinal-reinforcement bars on bottom layer
set numBarsIntBeam 2; # TOTAL number of reinforcing bars on the intermediate layers
set barAreaTopBeam [expr ($pi/4)*pow($diaBarBeam,2)]; # longitudinal-reinforcement bar area
set barAreaBotBeam [expr ($pi/4)*pow($diaBarBeam,2)]; # longitudinal-reinforcement bar area
set barAreaIntBeam [expr ($pi/4)*pow($diaBarBeam,2)]; # longitudinal-reinforcement bar area

set nfCoreY 20; # number of fibers in the core patch in the y direction
set nfCoreZ 20; # number of fibers in the core patch in the z direction
set nfCoverY 20; # number of fibers in the cover patches with long sides in the y direction
set nfCoverZ 20; # number of fibers in the cover patches with long sides in the z direction

# rectangular section with one layer of steel evenly distributed around the perimeter and a confined core.
BuildRCrectSection $ColSecTagFiber $col_d $col_b $cover $cover $IDconcCore $IDconcCover $IDSteel $numBarsTopCol $barAreaTopCol $numBarsBotCol $barAreaBotCol $numBarsIntCol $barAreaIntCol $nfCoreY $nfCoreZ $nfCoverY $nfCoverZ
BuildRCrectSection $BeamXSecTagFiber $bm_d $bm_b $cover $cover $IDconcCore $IDconcCover $IDSteel $numBarsTopBeam $barAreaTopBeam $numBarsBotBeam $barAreaBotBeam $numBarsIntBeam $barAreaIntBeam $nfCoreY $nfCoreZ $nfCoverY $nfCoverZ
BuildRCrectSection $BeamZSecTagFiber $bm_d $bm_d $cover $cover $IDconcCore $IDconcCover $IDSteel $numBarsTopBeam $barAreaTopBeam $numBarsBotBeam $barAreaBotBeam $numBarsIntBeam $barAreaIntBeam $nfCoreY $nfCoreZ $nfCoverY $nfCoverZ

# assign torsional Stiffness for 3D Model
uniaxialMaterial Elastic $SecTagTorsion $Ubig
section Aggregator $ColSecTag $SecTagTorsion T -section $ColSecTagFiber
section Aggregator $BeamXSecTag $SecTagTorsion T -section $BeamXSecTagFiber
section Aggregator $BeamZSecTag $SecTagTorsion T -section $BeamZSecTagFiber

} else {

puts "No section has been defined"
return -1

}

# DEFINE ELEMENTS

# Define Geometric Transformation for Beam-Column Elements

set ColTransfId 1; # Tag number for the transformation of columns
set BeamXTransfId 2; # Tag number for the transformation of beams along X direction
set BeamZTransfId 3; # Tag number for beam tranformation along Z direction

set ColTransfType Linear; # Options - PDelta, Linear

geomTransf $ColTransfType $ColTransfId 0 0 1; #columns
geomTransf Linear $BeamXTransfId 0 1 0; #beams in X direction
geomTransf Linear $BeamZTransfId 1 0 0 ; #beams in Z direction

set np 5; # number of Gauss integration points for non linear curvature distribution

# Define elastic Beam elements - assumed having equal geometric properties


puts "\n X DIRECTIONED BEAM numbers and node connectivity as follows : \n"

for {set i 0} {$i < $stry} {incr i} {
set n1 [expr (($i+1)*($xnodes*$znodes))+1]
set flag $n1
for {set j 0} {$j <= $zbay} {incr j} {
set n1 $flag
for {set k 0} {$k < $xbay} {incr k} {
incr count
set n2 [expr $n1+$zbay+1]
# element nonlinearBeamColumn $count $n1 $n2 $np $BeamXSecTag $BeamXTransfId
element elasticBeamColumn $count $n1 $n2 $Ar_bm $Ec $Gc $Jb $Iy_bm $Iz_bm $BeamXTransfId
puts "element $count $n1 $n2"
set n1 $n2
}
incr flag
}
}

puts "\n Z DIRECTIONED BEAM numbers and node connectivity as follows : \n"

for {set i 0} {$i < $stry} {incr i} {
set n1 [expr (($i+1)*($xnodes*$znodes))+1]
for {set j 0} {$j <= $xbay} {incr j} {
for {set k 0} {$k < $zbay} {incr k} {
incr count
set n2 [expr $n1+1]
# element nonlinearBeamColumn $count $n1 $n2 $np $BeamZSecTag $BeamZTransfId
element elasticBeamColumn $count $n1 $n2 $Ar_bm $Ec $Gc $Jb $Iz_bm $Iy_bm $BeamZTransfId
puts "element $count $n1 $n2"
set n1 $n2
}
set n1 [expr $n2+1]
}
}

# Define elastic Column elements - assumed having equal geometric properties

set count 0
set flag 1

puts "\n COLUMN numbers and node connectivity as follows : \n"

for {set i 0} {$i <= $xbay} {incr i} {

for {set j 0} {$j <= $zbay} {incr j} {
set n1 $flag
for {set k 0} {$k < $stry} {incr k} {
set n2 [expr ($xnodes*$znodes)+$n1]
incr count
# element nonlinearBeamColumn $count $n1 $n2 $np $ColSecTag $ColTransfId
element elasticBeamColumn $count $n1 $n2 $Ar_col $Ec $Gc $Jc $Iy_col $Iz_col $ColTransfId
puts "element $count $n1 $n2"
set n1 $n2
}
incr flag
}
}


# ----------------------------------------------------------LOADING---------------------------------------------------------------------------------------------

# GRAVITY LOADS

# calculate dead load of frame, assume this to be an internal frame (do LL in a similar manner)
# calculate distributed weight along the beam length

set g 9.81; # acceleration due to gravity
set GammaConcrete 25.0; # Reinforced-Concrete weight density (in kN/m^3)
set WeightCol [expr $GammaConcrete*$col_b*$col_d*$stry_ht/2.0]; # self weight of Column
set WeightBeamX [expr $GammaConcrete*$bm_b*$bm_d*$xbay_wd]; # self weight of Beam in X
set WeightBeamZ [expr $GammaConcrete*$bm_b*$bm_d*$zbay_wd]; # self weight of Beam in Z

set Tslab 0.01; # thickness of slab
set WeightSlab [expr $GammaConcrete*$Tslab*$xbay_wd*$zbay_wd];

set LiveUdl 3; # Live load in kN/m^2
set LiveFactor 0.5; # live load factor as per is 1893
set WeightLive [expr $LiveUdl*$xbay_wd*$zbay_wd*$LiveFactor]; # weight of slab due to live load

# Calculating Floor Weight

set FloorWeight2 [expr (($NoCol*$WeightCol) + ($NoBmX*$WeightBeamX) + ($NoBmZ*$WeightBeamZ) + $WeightSlab + $WeightLive) ]
set FloorMass2 [expr $FloorWeight2/$g]

# Assign floor weight as lumped mass to the central node

mass 1111 0.0 0.0 $FloorMass2 0.0 0.0 0.0


#MODAL ANALYSIS

set numModes 5

#record eigenvectors
# ----------------------
for { set k 1 } { $k <= $numModes } { incr k } {
recorder Node -file [format "Data/mode%i.out" $k] -nodeRange 5 8 -dof 1 2 3 4 5 6 "eigen $k"
}

# perform eigen analysis
# -----------------------------
set lambda [eigen -fullGenLapack $numModes]

#calculate frequencies and periods of the structure
# ---------------------------------------------------
set omega {}
set f {}
set T {}

foreach lam $lambda {
lappend omega [expr sqrt($lam)]
lappend f [expr sqrt($lam)/(2*$pi)]
lappend T [expr (2*$pi)/sqrt($lam)]
}

puts "periods are $T"

#write the output file cosisting of periods
# --------------------------------------------
set period "Data/Periods.txt"
set Periods [open $period "w"]
foreach t $T {
puts $Periods " $t"
}
close $Periods

constraints transformation
numberer RCM
system BandGeneral
test NormDispIncr 1.0e-6 6 2
algorithm Newton
integrator LoadControl 0.1
analysis Static
analyze 10
venkateshyadav
Posts: 52
Joined: Fri Mar 17, 2017 11:01 am
Location: IIT Patna

Re: Help with eigen value analysis

Post by venkateshyadav »

Hi,
are you bale to solve the problem? am also facing some problem in the eigen analysis of 3D frame.
Am not able match the Time period values of Opensees and SAP? Can you please help me here
Post Reply