question about ElasticPP material

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Post Reply
jefferyr
Posts: 39
Joined: Tue Feb 12, 2008 12:40 pm
Location: Portland State University

question about ElasticPP material

Post by jefferyr »

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";
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Post by vesna »

Your model is good. The only problem is the integrator you use. Use load control integrator instead of displacement control integrator and in the load pattern command use sp command instead of load command.
jefferyr
Posts: 39
Joined: Tue Feb 12, 2008 12:40 pm
Location: Portland State University

ElasticPP material

Post by jefferyr »

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
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Post by vesna »

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.
Post Reply