Hi all,
I have a problem in running transient analysis on a nonlinear steel frame.
When I define columns and beams with only two elements, I dont get any warning. But when I increase the number of elements in columns or beams (more than two) opensees.exe will be closed without any warning.
Any idea what is causing this problem?
here is my code, along with the proc for defining the fibers of the section:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
wipe all;
source TubesectionFiber.tcl;
set analysisType "harm_NonLin"
if {$analysisType == "harm_NonLin"} {
set dataDir Harm_NL-Output;
file mkdir $dataDir;
}
model BasicBuilder -ndm 2 -ndf 3
set E0 31000.0000
set dout 2.0000
set thick1 0.0830
set A1 0.6364
set I1 0.3905
set mass1 0.0000
set Fy 50.0000
set b 0.1800
set matID 1
uniaxialMaterial Steel01 $matID $Fy $E0 $b
set nfdout 20
set nfdin 18
set nfthick 2
set secID 1
TubesectionFiber $matID $secID $dout $thick1 $nfdout $nfdin $nfthick
set numIntgrPts 5
node 1 0.0 0.0 -mass $mass1 $mass1 0.0
node 2 90.0 0.0 -mass $mass1 $mass1 0.0
node 3 234.0 0.0 -mass $mass1 $mass1 0.0
node 5 90.0 32.0 -mass 0.0000 0.0000 0.0
node 4 234.0 32.0 -mass 0.0000 0.0000 0.0
node 6 0.0 32.0 -mass 0.0000 0.0000 0.0
fix 1 1 1 1
fix 2 1 1 1
fix 3 1 1 1
node 7 0.0 10.7 -mass 0.0000 0.0000 0.0
node 8 0.0 21.3 -mass 0.0000 0.0000 0.0
node 9 90.0 10.7 -mass 0.0000 0.0000 0.0
node 10 90.0 21.3 -mass 0.0000 0.0000 0.0
node 11 234.0 10.7 -mass 0.0000 0.0000 0.0
node 12 234.0 21.3 -mass 0.0000 0.0000 0.0
node 13 30.0 32.0 -mass 0.0000 0.0000 0.0
node 14 60.0 32.0 -mass 0.0000 0.0000 0.0
node 15 138.0 32.0 -mass 0.0000 0.0000 0.0
node 16 186.0 32.0 -mass 0.0000 0.0000 0.0
geomTransf Linear 10
element nonlinearBeamColumn 1 1 7 $numIntgrPts $secID 10
element nonlinearBeamColumn 2 7 8 $numIntgrPts $secID 10
element nonlinearBeamColumn 3 8 6 $numIntgrPts $secID 10
element nonlinearBeamColumn 4 2 9 $numIntgrPts $secID 10
element nonlinearBeamColumn 5 9 10 $numIntgrPts $secID 10
element nonlinearBeamColumn 6 10 5 $numIntgrPts $secID 10
element nonlinearBeamColumn 7 3 11 $numIntgrPts $secID 10
element nonlinearBeamColumn 8 11 12 $numIntgrPts $secID 10
element nonlinearBeamColumn 9 12 4 $numIntgrPts $secID 10
element nonlinearBeamColumn 10 6 13 $numIntgrPts $secID 10
element nonlinearBeamColumn 11 13 14 $numIntgrPts $secID 10
element nonlinearBeamColumn 12 14 5 $numIntgrPts $secID 10
element nonlinearBeamColumn 13 5 15 $numIntgrPts $secID 10
element nonlinearBeamColumn 14 15 16 $numIntgrPts $secID 10
element nonlinearBeamColumn 15 16 4 $numIntgrPts $secID 10
puts "Model Built"
recorder Element -file $dataDir/ForceeleSec.out -time section 1 force; # Column section forces, axial and moment, node i
recorder Element -file $dataDir/DefoeleSec.out -time section 1 deformation; # section deformations, axial and curvature, node i
recorder Node -file $dataDir/RBase.out -time -node 1 2 3 -dof 1 2 3 reaction; # support reaction
recorder Node -file $dataDir/joint_bc_Displx.out -node 6 5 4 -dof 1 2 3 disp
recorder Node -file $dataDir/col_Displx.out -nodeRange 7 12 -dof 1 2 3 disp
recorder Node -file $dataDir/midspan_Displz.out -nodeRange 13 16 -dof 1 2 3 disp
recorder Element -file $dataDir/globalForce.out -time globalForce
set Tol 1.e-6; # Convergence Test: tolerance
set maxNumIter 10; # Convergence Test: maximum number of iterations that will be performed before "failure to converge" is returned
set printFlag 0; # Convergence Test: flag used to print information on convergence (optional) # 1: print information on each step;
set TestType EnergyIncr; # Convergence-test type
test $TestType $Tol $maxNumIter $printFlag;
pattern Plain 2 "Sine 1 0 15.0000 5.0000 -factor 5.0000 " {
load 6 1 0 0
}
algorithm ModifiedNewton
integrator Newmark 0.5 0.25
test EnergyIncr 1.0e-8 10 0
numberer Plain
constraints Plain
system BandGeneral
analysis Transient
for {set i 1} {$i <= 30000.0000} {incr i 1} {
analyze 1 0.0005
}
###########################
proc TubesectionFiber { matID secID dout thick nfdout nfdin nfthick} {
set din [expr $dout - 2 * $thick]
set y1 [expr -$dout/2]
set y2 [expr $dout/2]
set y3 [expr -$din/2]
set y4 [expr $din/2]
set z1 [expr -$dout/2]
set z2 [expr $dout/2]
set z3 [expr -$din/2]
set z4 [expr $din/2]
section fiberSec $secID {
# nfIJ nfJK yI zI yJ zJ yK zK yL zL
patch quadr $matID $nfdout $nfthick $y1 $z1 $y2 $z1 $y2 $z3 $y1 $z3
patch quadr $matID $nfthick $nfdin $y4 $z3 $y2 $z3 $y2 $z4 $y4 $z4
patch quadr $matID $nfdout $nfthick $y1 $z4 $y2 $z4 $y2 $z2 $y1 $z2
patch quadr $matID $nfthick $nfdin $y1 $z3 $y3 $z3 $y3 $z4 $y1 $z4
}
}
Nonlinear frame/ transient analysis
Moderators: silvia, selimgunay, Moderators
Re: Nonlinear frame/ transient analysis
OpenSees may close if it encounters the lines that can not recognize.
I looked at your code and noticed two things:
1) your element recorders are not well defined. You are missing -ele argument. Look at the command manual to learn how to define an element recorder:http://opensees.berkeley.edu/wiki/index ... t_Recorder
2) when using nonlinear elements you may have convergence problems. in case it happens do the analysis in a while loop. here is a good example:http://opensees.berkeley.edu/wiki/index ... e_Analysis
I hope this helps.
I looked at your code and noticed two things:
1) your element recorders are not well defined. You are missing -ele argument. Look at the command manual to learn how to define an element recorder:http://opensees.berkeley.edu/wiki/index ... t_Recorder
2) when using nonlinear elements you may have convergence problems. in case it happens do the analysis in a while loop. here is a good example:http://opensees.berkeley.edu/wiki/index ... e_Analysis
I hope this helps.