Hi,
I want to simulate simply supported beam applying static reversed cycle analysis.
Then the codes are as follows:
#--the model---------------------------------------------------------------------------
set L [expr 0.74*$m]; # beam length
set X1 0.;
set X3 [expr $X1 + $L];
set X5 [expr $X3 + $L];
set Y1 0.;
node 1 $X1 $Y1 # level 0
node 3 $X3 $Y1 # level 0
node 5 $X5 $Y1 # level 0
fix 1 1 1 0
fix 5 0 1 0
#--------------------------------------------------------------------
#---the cycle analysis-----------------------------------------------------------------
set IDctrlNode 3;
set IDctrlDOF 2;
# characteristics of cyclic analysis
set iDmax "0.00381 0.00762 0.01143 ";
set Dincr [expr 0.001];
set Fact [expr 2*$L]; # scale drift ratio by storey height for displacement cycles I donot know how to define Fact in beam
set CycleType Full;
set Ncycles 3;
set iPushNode "3 ";
pattern Plain 200 Linear {;
foreach PushNode $iPushNode {
load $PushNode 0.0 $P1 0.0 0.0 0.0 0.0
}
}
#----------------------------------------------------------------
I have tried the elastic element, which worked well. However, when it comes to nonlinear beamcolumn element, it doesnot work and the result is null.
Any advices? Thank you.
static cycle analysis of simply supported beam.
Moderators: silvia, selimgunay, Moderators
static cycle analysis of simply supported beam.
休息4 pm to 0 pm . 问问题at 1 am~2 pm.
Re: static cycle analysis of simply supported beam.
Here is an example of static cyclic analysis for one cycle with the max. displacement of 2.0 (on a 1D element):
pattern Plain 1 Linear {
load 2 1.0;
}
# Set up analysis parameters
constraints Transformation ;
numberer RCM ;
system BandGeneral ;
test EnergyIncr 1.e-6 25 0 ;
algorithm Newton ;
set controlnode 2
set loaddirection 1
set currentDisp 0.0
foreach Dincr {0.002 -0.004 0.002} {
integrator DisplacementControl $controlnode $loaddirection $Dincr
analysis Static
set nSteps 1000
if { $Dincr > 0 } {
set Dmax [expr $Dincr*$nSteps]
set ok 0
while {$ok == 0 && $currentDisp < $Dmax} {
set ok [analyze 1]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr 1.0e-6 2000 0
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr 1.0e-6 6 2
algorithm Newton
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm Newton
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currentDisp [nodeDisp $controlnode $loaddirection]
}
} elseif { $Dincr < 0 } {
set Dmax [expr $Dincr*$nSteps/2]
set ok 0
while {$ok == 0 && $currentDisp > $Dmax} {
set ok [analyze 1]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr 1.0e-6 2000 0
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr 1.0e-6 6 2
algorithm Newton
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm Newton
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currentDisp [nodeDisp $controlnode $loaddirection]
}
}
}
pattern Plain 1 Linear {
load 2 1.0;
}
# Set up analysis parameters
constraints Transformation ;
numberer RCM ;
system BandGeneral ;
test EnergyIncr 1.e-6 25 0 ;
algorithm Newton ;
set controlnode 2
set loaddirection 1
set currentDisp 0.0
foreach Dincr {0.002 -0.004 0.002} {
integrator DisplacementControl $controlnode $loaddirection $Dincr
analysis Static
set nSteps 1000
if { $Dincr > 0 } {
set Dmax [expr $Dincr*$nSteps]
set ok 0
while {$ok == 0 && $currentDisp < $Dmax} {
set ok [analyze 1]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr 1.0e-6 2000 0
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr 1.0e-6 6 2
algorithm Newton
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm Newton
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currentDisp [nodeDisp $controlnode $loaddirection]
}
} elseif { $Dincr < 0 } {
set Dmax [expr $Dincr*$nSteps/2]
set ok 0
while {$ok == 0 && $currentDisp > $Dmax} {
set ok [analyze 1]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr 1.0e-6 2000 0
algorithm Newton -initial
set ok [analyze 1]
test NormDispIncr 1.0e-6 6 2
algorithm Newton
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm Newton
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currentDisp [nodeDisp $controlnode $loaddirection]
}
}
}