hei,
I am trying to find the first 4 modes of the model below. If I set the number of modes equal to 2, the script runs and i get results. But if I change the number of modes to 4 or more , the opensees window disappear and the output file is empty. Can someone tell me what is wrong with this script?
Thank you.
#StructureGeometryLinear
# metric units m, kg, N, sec
# Delete previous objects.
wipe;
# create data directory
file mkdir modes;
# ****Define model****
#******************************************************************************
model BasicBuilder -ndm 2 -ndf 3; set numModes 2;
#***Define geometry***---------------
#***Define length***
#set L1 4.5;
set L2 8.25;
set h1 4.25;
set h2 3.5;
set g 9.81;
set m 2500.;
#****Define cross sections
#--------------***Sectional walls and columns area****----------
set Aw4 [expr 4.5*0.175];
set Aw3 [expr 4.5*0.175];
set Aw2 [expr 4.5*0.175];
set Aw1 [expr 4.5*0.220];
set Col1 [expr 0.3*0.3];
set Col2 [expr 0.26*0.26];
set Col3 [expr 0.24*0.24];
puts "Generated Area walls"
#***Define nodes and assign masses***
# ***4th storey****
node 50 0. [expr $h1+3*$h2];
mass 50 [expr (125000+($h2/2)*$Aw4*$m)] 0. 0.;
node 51 $L2 [expr $h1+3*$h2];
#*** 3rd storey****
node 40 0. [expr $h1+2*$h2];
mass 40 [expr (192000.+($h2/2)*$Aw4*$m+($h2/2)*$Aw3*$m)] 0. 0.;
node 41 $L2 [expr $h1+2*$h2];
# ***2nd storey****
node 30 0. [expr $h1+$h2];
mass 30 [expr (193000.+($h2/2)*$Aw3*$m+($h2/2)*$Aw2*$m)] 0. 0.;
node 31 $L2 [expr $h1+$h2];
# ***1st storey***
node 20 0. $h1;
mass 20 [expr (196500.+($h2/2)*$Aw2*$m+($h1/2)*$Aw1*$m)] 0. 0.;
node 21 $L2 $h1;
# ***Ground floor****
node 10 0. 0.;
node 11 $L2 0.;
puts "Generated Nodes and Masses"
# ****Define restraints***
fix 10 1 1 1;
fix 11 1 1 1;
puts "Generated Restraints
#Define constraints
equalDOF 20 21 1 2 3; # Impose wall DOF's base wall 1 story
equalDOF 30 31 1 2 3; # Impose wall DOF's base wall 2 story
equalDOF 40 41 1 2 3; # Impose wall DOF's base wall 3 story
equalDOF 50 51 1 2 3; # Impose wall DOF's base wall 4 story
puts "Generated Constraints"
# Geometry transformation
set TransfTag 1;
geomTransf PDelta $TransfTag;
set Iy1 [expr (0.3*0.3*0.3*0.3)/12];
set Iy2 [expr (0.26*0.26*0.26*0.26)/12];
set Iy3 [expr (0.24*0.24*0.24*0.24)/12];
set E 27387e6; # Mander
# **** Define column members ***
element elasticBeamColumn 5 11 21 $Col1 $E $Iy1 $TransfTag;
element elasticBeamColumn 6 21 31 $Col2 $E $Iy2 $TransfTag;
element elasticBeamColumn 7 31 41 $Col3 $E $Iy3 $TransfTag;
element elasticBeamColumn 8 41 51 $Col3 $E $Iy3 $TransfTag;
puts "Done Columns"
#DEFINE WALLS
# Define walls
element elasticBeamColumn 1 10 20 $Aw1 $E [expr (0.22*4.5*4.5*4.5)/12] $TransfTag;
element elasticBeamColumn 2 20 30 $Aw2 $E [expr (0.175*4.5*4.5*4.5)/12] $TransfTag;
element elasticBeamColumn 3 30 40 $Aw3 $E [expr (0.175*4.5*4.5*4.5)/12] $TransfTag;
element elasticBeamColumn 4 40 50 $Aw4 $E [expr (0.175*4.5*4.5*4.5)/12] $TransfTag;
puts "Done Walls"
#Link between wall and column
uniaxialMaterial Elastic 100 1;
element twoNodeLink 2021 20 21 -mat 100 -dir 1; #link mellom node 20 og 21
element twoNodeLink 3031 30 31 -mat 100 -dir 1;
element twoNodeLink 4041 40 41 -mat 100 -dir 1;
element twoNodeLink 5051 50 51 -mat 100 -dir 1;
#Define Gravity Loads
pattern Plain 1 Linear {
#gravity loads on walls
load 20 0.0 -468000 0.
load 30 0.0 -468000 0.
load 40 0.0 -468000 0.
load 50 0.0 -340000 0.
#gravity loads on columns
load 21 0.0 -2549000 0.
load 31 0.0 -2549000 0.
load 41 0.0 -2549000 0.
load 51 0.0 -1849000 0.
}
puts "Model including gravity loads has been built."
# Apply loads
#***********************************
# Create the system of equation
system BandSPD
# Create the DOF numberer, the reverse Cuthill-McKee algorithm
numberer RCM
# Create the constraint handler, a Plain handler is used as homo constraints
constraints Plain
# Create the integration scheme, the LoadControl scheme using steps of 1.0
integrator LoadControl 1.0
# Create the solution algorithm, a Linear algorithm is created
algorithm Linear
# create the analysis object
analysis Static
analyze 1
puts "Model including gravity loads has been built."
# record eigenvectors
#----------------------
for { set k 1 } { $k <= $numModes } { incr k } {
recorder Node -file [format "modes/mode%i.out" $k] -nodeRange 10 51 -dof 1 "eigen $k"
}
#Perform eigenvalue analysis and store periods into a file
set lambda [eigen $numModes];
set omega {}
set f {}
set T {}
set pi 3.141593
foreach lam $lambda {
lappend omega [expr sqrt($lam)]
lappend f [expr sqrt($lam)/(2*$pi)]
lappend T [expr (2*$pi)/sqrt($lam)]
}
set period "modes/Periods.txt"
set Periods [open $period "w"]
foreach t $T {
puts $Periods " $t"
}
close $Periods
#Record eigenvectors
record
# get values of eigenvectors for translational DOFs
#---------------------------------------------------
set f15 [nodeEigenvector 50 1 1];# Mode1
set f14 [nodeEigenvector 40 1 1];
set f13 [nodeEigenvector 30 1 1];
set f12 [nodeEigenvector 20 1 1];
set f25 [nodeEigenvector 50 2 1];#Mode2
set f24 [nodeEigenvector 40 2 1];
set f23 [nodeEigenvector 30 2 1];
set f22 [nodeEigenvector 20 2 1];
puts "eigenvector 1: [list [expr {$f15/$f15}] [expr {$f14/$f15}] [expr {$f13/$f15}] [expr {$f12/$f15}]]"
puts "eigenvector 2: [list [expr {$f25/$f25}] [expr {$f24/$f25}] [expr {$f23/$f25}] [expr {$f22/$f25}]]"
#Display
recorder display "Mode Shape 1" 10 10 1000 400 -wipe
prp 60. 7.375 1;
vup 0 1 0;
vpn 0 0 1;
viewWindow -60 60 -15 15;
display -1 5 500;
recorder display "Mode Shape2" 10 250 1000 400 -wipe
prp 60. 7.375 1;
vup 0 1 0;
vpn 0 0 20;
viewWindow -60 60 -15 15;
display -2 5 500;
error in Modeshapes
Moderators: silvia, selimgunay, Moderators
Re: error in Modeshapes
The error message is:
ArpackSolver::Error with_saupd info = -9999
Could not build an Arnoldi Factorization.IPARAM<5> the size of the current Arnoldi factorization: is 4factorization. The user is advised to check that enough workspace and array storage has been allocated.
WARNING StaticAnalysis::eigen<> -- EigenSOE failed in solve<>
ArpackSolver::Error with_saupd info = -9999
Could not build an Arnoldi Factorization.IPARAM<5> the size of the current Arnoldi factorization: is 4factorization. The user is advised to check that enough workspace and array storage has been allocated.
WARNING StaticAnalysis::eigen<> -- EigenSOE failed in solve<>
Re: error in Modeshapes
Never mind I found the solution by using:
set lambda [eigen -fullGenLapack $numModes];
set lambda [eigen -fullGenLapack $numModes];
Re: error in Modeshapes
the default eigen solver is an iterative one, it cannot find all eigenvalues, it can only find all minus 1