Cyclic compression of a Concrete04 bar

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

Moderators: silvia, selimgunay, Moderators

Post Reply
ashutoshsonpal
Posts: 5
Joined: Thu Feb 16, 2017 7:29 am

Cyclic compression of a Concrete04 bar

Post by ashutoshsonpal » Mon Dec 04, 2017 1:08 pm

I am trying to generate a backbone of a concrete04 bar subjected to a cycle of compressive loads (displacement controlled) but my analysis is not converging. Any help will be highly appreciated. Thanks in advance! Here is the source code:

#example for uniaxialMaterial concretecm (mander model) - cyclic

#units: kips, inch

model BasicBuilder -ndm 1 -ndf 1

node 1 0.0 0.0
node 2 1.0 0.0

fix 1 1

#confined concrete
uniaxialMaterial Concrete04 1 -6.4 -0.008 -0.028 3604 1e-3 1e-9

element truss 1 1 2 1.00 1

#concrete in compression
set P 1

pattern Plain 1 "Linear" {
load 2 $P
}

system BandGeneral
numberer RCM
constraints Plain
test NormDispIncr 1.0e-12 10000
algorithm Newton
analysis Static

recorder Node -file Conc04Cyclic.out -time -node 2 -dof 1 disp

set ok 0
set maxDisp 0.028
set dispCycleStep 0.002
set dispStep 0.0001

#displacement cycles as +ve and -ve
set numCycles [expr int($maxDisp/$dispCycleStep)]
set i 0
while {$i < $numCycles} {

#negative/comp cycle - loading
set currDisp 0;
integrator DisplacementControl 2 1 -$dispStep
set peak [expr -($i+1)*$dispCycleStep];
while {$ok == 0 && $currDisp > $peak} {
algorithm Newton
set ok [analyze 1]
if {$ok != 0} {
puts "Switching to modified NR!"
algorithm ModifiedNewton -initial
set ok [analyze 1]
if {$ok == 0} {
puts {Switching back to NR!}
algorithm Newton
}
}
if {$ok != 0} {
puts "Trying Broyden .."
after 1000
algorithm Broyden 8
set ok [analyze 1 ]
if {$ok == 0} {
puts {Switching back to NR!}
algorithm Newton
}
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
after 1000
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currDisp [nodeDisp 2];
puts $currDisp
}

puts "Loading done... Now unloading"
after 1000

#negative/comp cycle- unloading
integrator DisplacementControl 2 1 $dispStep
set peak 0;
while {$ok == 0 && $currDisp < $peak} {
algorithm Newton
set ok [analyze 1]
if {$ok != 0} {
puts "Switching to modified NR!"
algorithm ModifiedNewton -initial
set ok [analyze 1]
if {$ok == 0} {
puts {Switching back to NR!}
algorithm Newton
}
}
if {$ok != 0} {
puts "Trying Broyden .."
after 1000
algorithm Broyden 8
set ok [analyze 1 ]
if {$ok == 0} {
puts {Switching back to NR!}
algorithm Newton
}
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
after 1000
algorithm NewtonLineSearch 0.8
set ok [analyze 1]
algorithm Newton
}
set currDisp [nodeDisp 2];
puts $currDisp
}

if {$ok == 0} {
set i [expr $i+1]
puts "$i cycles done!"
after 1000
} else {
puts "Convergence problem...."
break;
}
}

if {$ok != 0} {
puts "Analysis failed!"
} else {
puts "Analysis successful!"
}

wipe

Post Reply