Hello,
I have yet another question.
I'm trying to get a simplified model to run before I put it into a larger, bridge model.
I currently have a simple vertical column, that I'm pushing over. I have a zeroLength element at the base using the ElasticPP material. The current material has a slope of 160.0 and 2.0 is where it should go plastic in both tension and compression. But, when the base displacement gets to a point where the base reaction is 320 in compression, it goes haywire and I'm getting a lot of errors. Do I need to do something to get it to have plastic behavior?
Thanks
Jeff
wipe;
model BasicBuilder -ndm 3 -ndf 6;
set height 100.0
node 1 0.0 0.0 0.0;
node 2 0.0 0.0 0.0;
node 3 0.0 $height 0.0;
fix 1 1 1 1 1 1 1;
fix 2 0 1 1 1 1 1;
set col_horiz_spring_mat 1;
set col_torsion_spring_mat 2;
set col_horiz_2_ele 3;
set col_horiz_3_ele 4;
set col_torsion_ele 5;
set col_ele 6;
set transf_tag 7;
geomTransf Linear $transf_tag 0 0 -1;
uniaxialMaterial ElasticPP $col_horiz_spring_mat 160.0 2.0 -2.0 0.0;
#uniaxialMaterial ElasticPP $col_torsion_spring_mat 4816.0 9632.0 0.0;
element zeroLength $col_horiz_2_ele 1 2 -mat $col_horiz_spring_mat -dir 1;
#element zeroLength $col_horiz_3_ele 1 2 -mat $col_horiz_spring_mat -dir 3;
#element zeroLength $col_torsion_ele 2 1 -mat $col_torsion_spring_mat -dir 4;
element elasticBeamColumn $col_ele 2 3 100.0 29.e3 1.e4 1.e4 833.0 833. $transf_tag;
recorder Node -file node3.txt -time -node 3 -dof 1 2 3 4 5 6 disp;
recorder Node -file node2.txt -time -node 2 -dof 1 2 3 4 5 6 disp;
recorder Node -file node1.txt -time -node 1 -dof 1 2 3 4 5 6 reaction;
set IDctrlNode 3;
set IDctrlDOF 1;
source GeneratePeaks.tcl
pattern Plain 100 Linear {
load $IDctrlNode 0.001 0 0.001 0 0 0;
}
set Tol 1.0e-6;
set Dincr [expr 0.00001*$height];
constraints Transformation;
numberer RCM;
system BandGeneral;
test NormDispIncr 1.0e-6 6 0;
algorithm Newton;
integrator DisplacementControl $IDctrlNode 1 $Dincr;
analysis Static;
set iDmax "0.1";
set Fact $height;
#set CycleType Full; # you can do Full / Push / HalfCycle with the proc
#set CycleType HalfCycle; # you can do Full / Push / HalfCycle with the proc
set CycleType Push; # you can do Full / Push / HalfCycle with the proc
set Ncycles 1; # specify the number of cycles at each peak
set Tol 1.0e-6;
set TolStatic 1.0e-6;
set maxNumIterStatic 6;
set algorithmTypeStatic Newton;
set fmt1 "%s Cyclic analysis: CtrlNode %.3i, dof %.1i, Disp=%.4f %s"; # format for screen/file output of DONE/PROBLEM an
foreach Dmax $iDmax {
#puts "starting [expr $Dmax*100.0]% cycle";
set iDstep [GeneratePeaks $Dmax $Dincr $CycleType $Fact]; # this proc is defined above
for {set i 1} {$i <= $Ncycles} {incr i 1} {
# set zeroD 0
set D0 0.0
foreach Dstep $iDstep {
set D1 $Dstep
set Dincr [expr $D1 - $D0]
integrator DisplacementControl $IDctrlNode 1 $Dincr;
set ok [analyze 1];
if {$ok != 0} {
puts "analysis not ok (1)";
test NormDispIncr 1.0e-6 1000 0;
algorithm ModifiedNewton -initial;
set ok [analyze 1];
test NormDispIncr 1.0e-6 6 0;
algorithm Newton;
}
set currentDisp [nodeDisp $IDctrlNode 1];
set D0 $D1; # move to next step
}; # end Dstep
}; # end i
}; # end of iDmaxCycl
if {$ok != 0 } {
puts "PROBLEM";
#puts [format $fmt1 "PROBLEM" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
} else {
puts "OK";
# puts [format $fmt1 "DONE" $IDctrlNode $IDctrlDOF [nodeDisp $IDctrlNode $IDctrlDOF] $LunitTXT]
}
puts "external_loads_nom.tcl: ... Done Cyclic Analysis";
question about ElasticPP material
Moderators: silvia, selimgunay, Moderators
ElasticPP material
Thanks for your reply. I can understand the different integrator, but I'm not sure about why the sp should be used instead. I guess this won't matter when I put it in a larger model thats driven by an earthquake record, but I'd like to know.
Thanks,
Jeff
Thanks,
Jeff
From the way you defined your analysis objects I thought that you want to push the column up to certain displacement level and that is why I suggested you to use "sp". Using sp command you can set up the maximum displacement you want to apply on your column. If you use "load" command instead you you can control the maximum force you want to apply on your column.