Hi, all
I am looking up an eigenvalue at a certain step in dynamic analysis.
For example, I am using an uniform excitation load pattern which has 878 time steps.
I am interested in the eigenvalue exactly at a 478 step.
I write down following..
...
pattern UniformExcitation 2 1 -accel $Gaccel1
pattern UniformExcitation 3 2 -accel $Gaccel2
pattern UniformExcitation 4 3 -accel $Gaccel3
#wipe analysis
constraints Penalty 1.0e+18 1.0e+18
numberer RCM
system UmfPack
test EnergyIncr 1.0e-6 20 0
algorithm KrylovNewton
integrator Newmark 0.5 0.25
analysis VariableTransient
set ok [analyze 477 0.02]
set controlTime [getTime]
puts "$controlTime"
# recorder
eval "recorder Node -file eigenvector1.out -node all -dof 1 2 3 \"eigen 1\" "
eval "recorder Node -file eigenvector2.out -node all -dof 1 2 3 \"eigen 2\" "
eval "recorder Node -file eigenvector3.out -node all -dof 1 2 3 \"eigen 3\" "
eval "recorder Node -file eigenvector4.out -node all -dof 1 2 3 \"eigen 4\" "
eval "recorder Node -file eigenvector5.out -node all -dof 1 2 3 \"eigen 5\" "
eval "recorder Node -file eigenvector6.out -node all -dof 1 2 3 \"eigen 6\" "
set ok [analyze 399 0.02]
set controlTime [getTime]
puts "$controlTime"
---------------------------------------------------------------
Is it a right way?
Otherwise, I will appreciate any suggestion on this.
All the best,
Eigenvalues at a certain step in dynamic analysis
Moderators: silvia, selimgunay, Moderators
-
- Posts: 27
- Joined: Fri Sep 14, 2007 12:17 pm
- Location: UCSD
I would do the analysis in a loop:
set Nnodes 35
set Nstep 878
set DtAnalysis 0.02
for { set k 1 } { $k <= $Nstep } { incr k } {
analyze 1 $DtAnalysis
if { $k == 478 } {
set lambda [eigen 1]
set T [expr (2*$pi)/sqrt($lambda)]
puts " fundamental period is $T "
recorder Node -file eigenvector1.out -nodeRange 1 $Nnodes -dof 1 2 3 "eigen 1"
recorder Node -file eigenvector2.out -nodeRange 1 $Nnodes -dof 1 2 3 "eigen 2"
recorder Node -file eigenvector3.out -nodeRange 1 $Nnodes -dof 1 2 3 "eigen 3"
recorder Node -file eigenvector4.out -nodeRange 1 $Nnodes -dof 1 2 3 "eigen 4"
recorder Node -file eigenvector5.out -nodeRange 1 $Nnodes -dof 1 2 3 "eigen 5"
recorder Node -file eigenvector6.out -nodeRange 1 $Nnodes -dof 1 2 3 "eigen 6"
}
}
You have to specify number of nodes (Nnodes) to match your example. For unknown reason -node all did not work so I changed it to -nodeRegion 1 $Nnodes.
set Nnodes 35
set Nstep 878
set DtAnalysis 0.02
for { set k 1 } { $k <= $Nstep } { incr k } {
analyze 1 $DtAnalysis
if { $k == 478 } {
set lambda [eigen 1]
set T [expr (2*$pi)/sqrt($lambda)]
puts " fundamental period is $T "
recorder Node -file eigenvector1.out -nodeRange 1 $Nnodes -dof 1 2 3 "eigen 1"
recorder Node -file eigenvector2.out -nodeRange 1 $Nnodes -dof 1 2 3 "eigen 2"
recorder Node -file eigenvector3.out -nodeRange 1 $Nnodes -dof 1 2 3 "eigen 3"
recorder Node -file eigenvector4.out -nodeRange 1 $Nnodes -dof 1 2 3 "eigen 4"
recorder Node -file eigenvector5.out -nodeRange 1 $Nnodes -dof 1 2 3 "eigen 5"
recorder Node -file eigenvector6.out -nodeRange 1 $Nnodes -dof 1 2 3 "eigen 6"
}
}
You have to specify number of nodes (Nnodes) to match your example. For unknown reason -node all did not work so I changed it to -nodeRegion 1 $Nnodes.