HOME › FORUM › User Discussions › Error while determining Eigen vectors for three storey frame
Tagged: Eigen vectors
- This topic has 1 reply, 1 voice, and was last updated 5 years, 3 months ago by
Amruth.
-
AuthorPosts
-
February 17, 2018 at 9:10 am #26860
Amruth
ParticipantHello, I have an error with the code and i could not recognize it. I request you to help me in correcting. Following code is mentioned below
Thank you
# # Natural frequency calculations for the test structure
# units used in code m, kg, Nwipe
# mass input in kg
set m1 2.0512
set m2 1.8852
set m3 1.7192
set numModes 3#input materials
# For Columns made of Acrylic
set Ac 0.014; #0.035×0.4
set Ic 1.43e-6; #0.4×0.035^3/12
set Ec 2.74e+9
# For Slabs made of Aluminum
set As 0.045; #0.3×0.15
set Is 3.375e-4; #0.15×0.3^3/12
set Es 6.89476e10;
#geometry of 1 floor
set L 0.3.
set h 0.4.# create data directory
file mkdir modes;# define the model
#———————————
#model builder
model BasicBuilder -ndm 2 -ndf 3# nodal coordinates:
node 1 0. 0. ;
node 2 $L 0. ;
node 3 0. $h ;
node 4 $L $h ;
node 5 0. [expr 2*$h];
node 6 $L [expr 2*$h];
node 7 0. [expr 3*$h];
node 8 $L [expr 3*$h];# Single point constraints — Boundary Conditions
fix 1 1 1 1;
fix 2 1 1 1;# This command is used to construct a multi-point constraint between nodes (MP constraints)
equalDOF 3 4 2 3; #impose the displacements at dof’s 2 and 3 of node 4 to be the same as those of node 3
equalDOF 5 6 2 3; #impose the displacements at dof’s 2 and 3 of node 6 to be the same as those of node 5
equalDOF 7 8 2 3; #impose the displacements at dof’s 2 and 3 of node 8 to be the same as those of node 7# assign mass
mass 3 [expr $m1/2.] 0. 0. ;
mass 4 [expr $m1/2.] 0. 0. ;
mass 5 [expr $m2/2.] 0. 0. ;
mass 6 [expr $m2/2.] 0. 0. ;
mass 7 [expr $m3/2.] 0. 0. ;
mass 8 [expr $m3/2.] 0. 0. ;# define geometric transformation:
set TransfTag 1;
geomTransf Linear $TransfTag ;# define elements:
# columns
element elasticBeamColumn 1 1 3 $Ac $Ec $Ic $TransfTag;
element elasticBeamColumn 2 3 5 $Ac $Ec $Ic $TransfTag;
element elasticBeamColumn 3 5 7 $Ac $Ec $Ic $TransfTag;
element elasticBeamColumn 4 2 4 $Ac $Ec $Ic $TransfTag;
element elasticBeamColumn 5 4 6 $Ac $Ec $Ic $TransfTag;
element elasticBeamColumn 6 6 8 $Ac $Ec $Ic $TransfTag;# slabs
element elasticBeamColumn 7 3 4 $As $Es $Is $TransfTag;
element elasticBeamColumn 8 5 6 $As $Es $Is $TransfTag;
element elasticBeamColumn 9 7 8 $As $Es $Is $TransfTag;# record eigenvectors
#———————-
for { set k 1 } { $k <= $numModes } { incr k } {
recorder Node -file [format “modes/mode%i.out” $k] -nodeRange 1 8 -dof 1 2 3 “eigen $k”
}# perform eigen analysis
#—————————–
set lambda [eigen $numModes];# calculate frequencies and periods of the structure
#—————————————————
set omega {}
set f {}
set T {}
set pi 3.141593foreach 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 consisting of periods
#——————————————–
set period “modes/Periods.txt”
set Periods [open $period “w”]
foreach t $T {
puts $Periods ” $t”
}
close $Periods# create display for mode shapes
#———————————
# $windowTitle $xLoc $yLoc $xPixels $yPixels
recorder display “Mode Shape 1” 10 10 500 500 -wipe
prp $h $h 1; # projection reference point (prp); defines the center of projection (viewer eye)
vup 0 1 0; # view-up vector (vup)
vpn 0 0 1; # view-plane normal (vpn)
viewWindow -200 200 -200 200; # coordiantes of the window relative to prp
display -1 5 20; # the 1st arg. is the tag for display mode (ex. -1 is for the first mode shape)
# the 2nd arg. is magnification factor for nodes, the 3rd arg. is magnif. factor of deformed shape
recorder display “Mode Shape 2” 10 510 500 500 -wipe
prp $h $h 1;
vup 0 1 0;
vpn 0 0 1;
viewWindow -200 200 -200 200
display -2 5 20recorder display “Mode Shape 3” 10 550 500 500 -wipe
prp $h $h 1;
vup 0 1 0;
vpn 0 0 1;
viewWindow -200 200 -200 200
display -3 5 20# Run a one step gravity load with no loading (to record eigenvectors)
#———————————————————————–
integrator LoadControl 0 1 0 0# Convergence test
# tolerance maxIter displayCode
test EnergyIncr 1.0e-10 100 0# Solution algorithm
algorithm Newton# DOF numberer
numberer RCM# Constraint handler
constraints Transformation# System of equations solver
system ProfileSPDanalysis Static
set res [analyze 1]
if {$res < 0} {
puts “Modal analysis failed”
}# get values of eigenvectors for translational DOFs
#—————————————————
set f11 [nodeEigenvector 3 1 1] ; #gives the value of eigenvector that corresponds to mode 1 at node 3 in dof 1
set f21 [nodeEigenvector 5 1 1]set f12 [nodeEigenvector 3 2 1]
set f22 [nodeEigenvector 5 2 1]set f33 [nodeEigenvector 5 3 1]
set f43 [nodeEigenvector 7 3 1]set f34 [nodeEigenvector 5 3 1]
set f44 [nodeEigenvector 7 3 1]puts “eigenvector 1: [list [expr {$f11/$f21}] [expr {$f21/$f21}] ]”
puts “eigenvector 2: [list [expr {$f12/$f22}] [expr {$f22/$f22}] ]”puts “eigenvector 1: [list [expr {$f33/$f43}] [expr {$f43/$f43}] ]”
puts “eigenvector 2: [list [expr {$f34/$f44}] [expr {$f44/$f44}] ]”February 17, 2018 at 9:47 am #26861Amruth
ParticipantSorry all,
I got it corrected
(Resolved)
-
AuthorPosts
- You must be logged in to reply to this topic.