Hi
I am modelling a soil plate with 2D quadUP elements to simulate a plain strain condition in Opensees. The loading is displacement time history at one corner node of the soil plate. the program works fine for small deformation, but it does not converge in large deformation, even if trying most of the available different solver options. Can anyone suggest how to carryout large displacement analysis of soil in OpenSees.
Is there any possibility of carrying out large displacement analysis of soil while using u-p-U formulation as well.?
Many Thanks
Suresh
Large deformation analysis in soil
Moderator: Moderators
Large deformation analysis in soil
PhD Student
Department of Engineering Science
University of Oxford, UK
Department of Engineering Science
University of Oxford, UK
This is a script I am using on my files. It basically changes timestep and convergence criteria if convergence is not achieved, and keeps track of steps where convergence is very relaxed:
# We analyze the first loading 10s +3s
set ok 0
set currentTime 0.0
set i_extr_nl 0.0
set dt 0.005
set i_suc 0
set disp_incr 1.0e-5
set iter 30
test NormDispIncr $disp_incr $iter 2;
algorithm Newton
while {$currentTime < 13.} {
# test NormDispIncr $disp_incr $iter 2;
test EnergyIncr $disp_incr $iter 2;
set ok [analyze 1 $dt]
set currentTime [getTime]
puts "$ok dt=$dt Disp_incr=$disp_incr #Iter=$iter"
if {$ok ==0} {
set i_suc [expr $i_suc+1]
if {$disp_incr>1e-3} {
set i_extr_nl [expr $i_extr_nl+1]
}
if {$i_suc>10} {
set disp_incr [expr $disp_incr/2]
if {$disp_incr<1e-6} {
set disp_incr 1e-6
}
if {$dt<0.0005} {
set iter 30
}
}
if {$i_suc>20} {
set dt [expr $dt*2]
if {$dt>0.05} {
set dt 0.05
}
}
}
if {$ok !=0} {
# puts "Changing parameters to achieve convergence"
set dt [expr $dt/2]
if {$i_suc==0} {
set disp_incr [expr $disp_incr*2]
if {$disp_incr>0.005} {
set disp_incr 0.005
}
}
if {$dt<0.0005} {
set iter 200
}
set i_suc 0
}
}
# We analyze the first loading 10s +3s
set ok 0
set currentTime 0.0
set i_extr_nl 0.0
set dt 0.005
set i_suc 0
set disp_incr 1.0e-5
set iter 30
test NormDispIncr $disp_incr $iter 2;
algorithm Newton
while {$currentTime < 13.} {
# test NormDispIncr $disp_incr $iter 2;
test EnergyIncr $disp_incr $iter 2;
set ok [analyze 1 $dt]
set currentTime [getTime]
puts "$ok dt=$dt Disp_incr=$disp_incr #Iter=$iter"
if {$ok ==0} {
set i_suc [expr $i_suc+1]
if {$disp_incr>1e-3} {
set i_extr_nl [expr $i_extr_nl+1]
}
if {$i_suc>10} {
set disp_incr [expr $disp_incr/2]
if {$disp_incr<1e-6} {
set disp_incr 1e-6
}
if {$dt<0.0005} {
set iter 30
}
}
if {$i_suc>20} {
set dt [expr $dt*2]
if {$dt>0.05} {
set dt 0.05
}
}
}
if {$ok !=0} {
# puts "Changing parameters to achieve convergence"
set dt [expr $dt/2]
if {$i_suc==0} {
set disp_incr [expr $disp_incr*2]
if {$disp_incr>0.005} {
set disp_incr 0.005
}
}
if {$dt<0.0005} {
set iter 200
}
set i_suc 0
}
}
you are using small deformation assumption (with current thatold implemenation of u-p-U) so anything you do counts as small deformations. there is an old implementation of u-p finite element and material models for large deformation from us (CompGeoMech at UCD) in OpenSees repository so something along those lines should be used, however, that implementation has not been updated/maintained for a while...
small or large steps make not difference in regard to small vs. large deformations, what counts is how do you treat your deformation and stresses...
Boris Jeremic
UCD
small or large steps make not difference in regard to small vs. large deformations, what counts is how do you treat your deformation and stresses...
Boris Jeremic
UCD