modelling multilayered soil

A place to ask questions on how to use OpenSees to perform Finite Element Reliability Analysis

Moderators: silvia, selimgunay, mhscott, Moderators

Post Reply
DIPTESHCHANDA
Posts: 3
Joined: Wed Jul 01, 2015 11:21 pm
Location: NIT AGARTALA

modelling multilayered soil

Post by DIPTESHCHANDA » Thu Jul 02, 2015 3:44 am

I have generated a code of pile foundation in which i wanted to find the response using time history analysis. i have done the problem using single layer of soil that is soft clay but i wanted to know if i do the same problem for multi layered soil where i have to do the changes in my code. i am sending the code kindly help me to solve the problem.

input.tcl......
set fix_t 0.4
#All the values are in SI units
#----------------------------------Soil Properties--------------------------------------------------------------------------
set Es 2500000
set Vs 0.4
set Gs [expr $Es/(2.0*(1+$Vs))]
#puts " Gs = $Gs "
#set Cu 9800
#in n per m2
set N 1
set gamma 13500.0
set e50 0.005
set Cd 1
set J 0.5
set alpha 0.7
#---------------------------------Raft Details-----------------------------------------------------------------------------
set soil_type 1
set raft_depth 0.9
set Er 21780000000
set Vr 0.17
#soil spring stiffness calculation for raft considering 20 number of meshing in x and y-direction
#set Keq [expr $Gs*10*(2+2.5)/(2-$Vs)]
#set Kld [expr $Keq/pow(20,2.0)]
#set Kzd [expr 5.4*5*$Gs/((pow(20,2)+2)*(1-$Vs))]
##puts " Kzd = $Kzd "
#---------------------------------Pile Details-----------------------------------------------------------------------------
set m 3
set n 3
set s 1
set pile_length 18.0
set Dp 0.3
set A [expr 3.14*pow($Dp,2.0)]
set Jx [expr 3.14*pow($Dp,4.0)/32.0]
set Iy [expr 3.14*pow($Dp,4.0)/64.0]
set Iz [expr 3.14*pow($Dp,4.0)/64.0]
set Ep 21780000000
set Vp 0.17
set Gp [expr $Ep/(2.0*(1+$Vp))]
#meshing in the pile in z direction
set z_mesh 20

raft modelling.tcl................
source input_2.tcl;
model basic -ndm 3 -ndf 6
file mkdir output;
#Define raft slab shell details
set secTag 1
#elastic modulus for raft material
set E 21780000000
#poisson's ratio for raft material
set v 0.17
set t $raft_depth
#density of raft material
set rho 2500
section ElasticMembranePlateSection $secTag $E $v $t

set eleargs "1"

#create plate element with meshing
block2D 20 20 1 1 shell $eleargs {
1 -5.000 -5.000 0
2 5.000 -5.000 0
3 5.000 5.000 0
4 -5.000 5.000 0
}

set M [expr 10*10*$t*$rho/400.0]
#mass on central nodes of raft
for { set b 1 } { $b <= 19 } { incr b } {
for { set a 1 } { $a <= 19 } { incr a } {
mass [expr $a+22+21*($b-1)] $M $M 1e-9 1e-9 1e-9 1e-9
}
}
#mass on corner nodes of raft
mass 1 [expr $M/4.0] [expr $M/4.0] 1e-9 1e-9 1e-9 1e-9
mass 21 [expr $M/4.0] [expr $M/4.0] 1e-9 1e-9 1e-9 1e-9
mass 421 [expr $M/4.0] [expr $M/4.0] 1e-9 1e-9 1e-9 1e-9
mass 441 [expr $M/4.0] [expr $M/4.0] 1e-9 1e-9 1e-9 1e-9
#mass on circumferential nodes of raft
for { set a 1 } { $a <= 19 } { incr a } {
mass [expr $a+1] [expr $M/2.0] [expr $M/2.0] 1e-9 1e-9 1e-9 1e-9
mass [expr $a+421] [expr $M/2.0] [expr $M/2.0] 1e-9 1e-9 1e-9 1e-9
mass [expr 21*$a+1] [expr $M/2.0] [expr $M/2.0] 1e-9 1e-9 1e-9 1e-9
mass [expr 21*($a+1)] [expr $M/2.0] [expr $M/2.0] 1e-9 1e-9 1e-9 1e-9
}

set node_num 441
set ele_num 400
for { set a 1 } { $a <= 441 } { incr a } {
fix [expr $a] 0 0 0 1 1 1
}
##########soil modelling#####################

set Zmesh [expr 38*38]
set Np 9
set K 10
set Y50 [expr 2.5*$K*$e50]
set Pult [expr ($Np*$Cu*$K*0.9)/41]
set qult [expr 5.7*$Cu*$K]
set y50 [expr 2.5*$K/100]
set Tult [expr ($alpha*$Cu*$K*$K)/$Zmesh]
set z50 [expr (0.5*$K)/100 ]


model basic -ndm 3 -ndf 3
#soil material for inside springs
uniaxialMaterial TzSimple1 2 1 $Tult $z50 0.0 0.0
uniaxialMaterial PySimple1 3 1 $qult $y50 0.0 0.0
#soil material for corner springs
uniaxialMaterial PySimple1 4 1 $Pult $Y50 $Cd 0.0
uniaxialMaterial PySimple1 5 1 $qult $y50 0.0 0.0
#soil material for edge springs excluding corners
uniaxialMaterial PySimple1 6 1 $Pult $Y50 $Cd 0.0
uniaxialMaterial PySimple1 7 1 $qult $y50 0.0 0.0
#################soil spring attched to raft corner nodes###################################
node [expr $node_num+1] [expr -5.000] [expr -5.000] [expr 0.0]
node [expr $node_num+2] [expr -5.000] [expr -5.000] [expr 0.0]
fix [expr $node_num+2] 1 1 1
equalDOF [expr 1] [expr $node_num+1] 1 2 3
element zeroLength [expr $ele_num+1] [expr $node_num+1] [expr $node_num+2] -mat 4 4 5 -dir 1 2 3

node [expr $node_num+3] [expr 5.000] [expr -5.000] [expr 0.0]
node [expr $node_num+4] [expr 5.000] [expr -5.000] [expr 0.0]
fix [expr $node_num+4] 1 1 1
equalDOF [expr 21] [expr $node_num+3] 1 2 3
element zeroLength [expr $ele_num+2] [expr $node_num+3] [expr $node_num+4] -mat 4 4 5 -dir 1 2 3

node [expr $node_num+5] [expr 5.000] [expr 5.000] [expr 0.0]
node [expr $node_num+6] [expr 5.000] [expr 5.000] [expr 0.0]
fix [expr $node_num+6] 1 1 1
equalDOF [expr 441] [expr $node_num+5] 1 2 3
element zeroLength [expr $ele_num+3] [expr $node_num+5] [expr $node_num+6] -mat 4 4 5 -dir 1 2 3

node [expr $node_num+7] [expr -5.000] [expr 5.000] [expr 0.0]
node [expr $node_num+8] [expr -5.000] [expr 5.000] [expr 0.0]
fix [expr $node_num+8] 1 1 1
equalDOF [expr 421] [expr $node_num+7] 1 2 3
element zeroLength [expr $ele_num+4] [expr $node_num+7] [expr $node_num+8] -mat 4 4 5 -dir 1 2 3

set node_num [expr $node_num+8]
set ele_num [expr $ele_num+4]

#######################soil spring connection for edge of raft###################################
for { set i 1 } { $i <= 19 } { incr i } {
#slave nodes
node [expr $node_num+2*$i-1] [expr -5.000+.500*$i] [expr -5.000] [expr 0.0]
equalDOF [expr $i+1] [expr $node_num+2*$i-1] 1 2 3
#fixed nodes
node [expr $node_num+2*$i] [expr -5.000+.500*$i] [expr -5.000] [expr 0.0]
fix [expr $node_num+2*$i] 1 1 1
element zeroLength [expr $ele_num+$i] [expr $node_num+2*$i-1] [expr $node_num+2*$i] -mat 6 6 7 -dir 1 2 3
}

set node_num [expr $node_num+38]
set ele_num [expr $ele_num+19]

for { set i 1 } { $i <= 19 } { incr i } {
#slave nodes
node [expr $node_num+2*$i-1] [expr 5.000] [expr -5.000+.500*$i] [expr 0.0]
equalDOF [expr 21*($i+1)] [expr $node_num+2*$i-1] 1 2 3
#fixed nodes
node [expr $node_num+2*$i] [expr 5.000] [expr -5.000+.500*$i] [expr 0.0]
fix [expr $node_num+2*$i] 1 1 1
element zeroLength [expr $ele_num+$i] [expr $node_num+2*$i-1] [expr $node_num+2*$i] -mat 6 6 7 -dir 1 2 3
}

set node_num [expr $node_num+38]
set ele_num [expr $ele_num+19]

for { set i 1 } { $i <= 19 } { incr i } {
#slave nodes
node [expr $node_num+2*$i-1] [expr -5.000+.500*$i] [expr 5.000] [expr 0.0]
equalDOF [expr 421+$i] [expr $node_num+2*$i-1] 1 2 3
#fixed nodes
node [expr $node_num+2*$i] [expr -5.00+.500*$i] [expr 5.000] [expr 0.0]
fix [expr $node_num+2*$i] 1 1 1
element zeroLength [expr $ele_num+$i] [expr $node_num+2*$i-1] [expr $node_num+2*$i] -mat 6 6 7 -dir 1 2 3
}

set node_num [expr $node_num+38]
set ele_num [expr $ele_num+19]

for { set i 1 } { $i <= 19 } { incr i } {
#slave nodes
node [expr $node_num+2*$i-1] [expr -5.000] [expr -5.000+.500*$i] [expr 0.0]
equalDOF [expr 1+21*$i] [expr $node_num+2*$i-1] 1 2 3
#fixed nodes
node [expr $node_num+2*$i] [expr -5.000] [expr -5.00+.500*$i] [expr 0.0]
fix [expr $node_num+2*$i] 1 1 1
element zeroLength [expr $ele_num+$i] [expr $node_num+2*$i-1] [expr $node_num+2*$i] -mat 6 6 7 -dir 1 2 3
}

set node_num [expr $node_num+38]
set ele_num [expr $ele_num+19]

#############soil spring definition and connection for central nodes of raft###################################
for { set j 1 } { $j <= 19 } { incr j } {
for { set i 1 } { $i <= 19 } { incr i } {
#slave nodes
node [expr $node_num+2*$i-1+38*($j-1)] [expr -4.50+.500*($i-1)] [expr -4.500+.500*($j-1)] 0.0
equalDOF [expr 23+$i+21*($j-1)] [expr $node_num+2*$i-1+38*($j-1)] 1 2 3
#fixed nodes
node [expr $node_num+2*$i+38*($j-1)] [expr -4.500+.500*($i-1)] [expr -4.500+.500*($j-1)] 0.0
fix [expr $node_num+2*$i+38*($j-1)] 1 1 1
element zeroLength [expr $ele_num+$i+19*($j-1)] [expr $node_num+2*$i-1+38*($j-1)] [expr $node_num+2*$i+38*($j-1)] -mat 2 2 3 -dir 1 2 3
}
}
###################################################################################################################################
set node_num [expr $node_num+722]
set ele_num [expr $ele_num+361]

puts "raft_modelling done"

pile modelling......
source raft_model.tcl;


model basic -ndm 3 -ndf 6
#output directories
file mkdir output ;

set start_node $node_num
puts "$node_num"

#Linear coordinate transformation
geomTransf Linear 1 -1 0 0

for { set a 1 } { $a <= $n } { incr a } {
for { set b 1 } { $b <= $m } { incr b } {
for { set c 1 } { $c <= $z_mesh } { incr c } {
node [expr $node_num+$c+$z_mesh*($b-1)+$z_mesh*$m*($a-1)] [expr $s*(1.0-$m)/2.0+$s*($b-1)] [expr $s*(1.0-$n)/2.0+$s*($a-1)] [expr -($pile_length/$z_mesh)*$c]
mass [expr $node_num+$c+$z_mesh*($b-1)+$z_mesh*$m*($a-1)] [expr 180.0*($pile_length/(2*$z_mesh))] [expr 180.0*($pile_length/(2*$z_mesh))] 1e-9 1e-9 1e-9 1e-9
fix [expr $node_num+$c+$z_mesh*($b-1)+$z_mesh*$m*($a-1)] 0 0 0 0 0 0
}
}
}
section Elastic 1 21780000000 0.2826 0.000397 0.000397 9307692308 0.000794


for { set a 1 } { $a <= $n } { incr a } {
for { set b 1 } { $b <= $m } { incr b } {
for { set c 1 } { $c <= $z_mesh-1 } { incr c } {
#element elasticBeamColumn $eleTag $iNode $jNode $A $E $Iz $transfTag
#element elasticBeamColumn [expr $ele_num+$c+($z_mesh-1)*($b-1)+($z_mesh-1)*$m*($a-1)] [expr $node_num+$c+$z_mesh*($b-1)+$z_mesh*$m*($a-1)] [expr $node_num+$c+1+$z_mesh*($b-1)+$z_mesh*$m*($a-1)] $A $Ep $Gp $Jx $Iy $Iz 1
element dispBeamColumn [expr $ele_num+$c+($z_mesh-1)*($b-1)+($z_mesh-1)*$m*($a-1)] [expr $node_num+$c+$z_mesh*($b-1)+$z_mesh*$m*($a-1)] [expr $node_num+$c+1+$z_mesh*($b-1)+$z_mesh*$m*($a-1)] 10 1 1
#element dispBeamColumn $eleTag $iNode $jNode $numIntgrPts $secTag $transfTag <-mass $massDens>
}
}
}

set node_num1 [expr $node_num+$z_mesh*$m*$n]
set ele_num [expr $ele_num+($z_mesh-1)*$m*$n]

set c 0
set d 0

for { set a 1 } { $a <= 21 } { incr a } {
if {-5.0+10/20.0*($c-1) == (1-$m)*$s/2.0 } {
for { set b 1 } { $b <= 21 } { incr b } {
if { -5.0+10/20.0*($d-1) == (1-$n)*$s/2.0} {
set e [expr $c+21*($d-1)]
} else {
set d [expr $d+1]
}
}
} else {
set c [expr $c+1]
}
}

#puts "$e"
set start_node_rec [expr $ele_num+1]
puts $start_node_rec

for { set a 1 } { $a <= $n } { incr a } {
for { set b 1 } { $b <= $m } { incr b } {
#element elasticBeamColumn [expr $ele_num+$b+$m*($a-1)] [expr $e+2*($b-1)+42*($a-1)] [expr $start_node+1+$z_mesh*($b-1)+$m*$z_mesh*($a-1)] $A $Ep $Gp $Jx $Iy $Iz 1
element dispBeamColumn [expr $ele_num+$b+$m*($a-1)] [expr $e+2*($b-1)+42*($a-1)] [expr $start_node+1+$z_mesh*($b-1)+$m*$z_mesh*($a-1)] 10 1 1
}
}

set ele_num [expr $ele_num+$m*$n]

#soil springs

model basic -ndm 3 -ndf 3
set Y50 [expr 2.5*$Dp*$e50]

for { set a 1 } { $a <= $n } { incr a } {
for { set b 1 } { $b <= $m } { incr b } {
for { set c 1 } { $c <= $z_mesh } { incr c } {
node [expr $node_num1+(2*$c-1)+2*$z_mesh*($b-1)+2*$z_mesh*$m*($a-1)] [expr $s*(1-$m)/2.0+$s*($b-1)] [expr $s*(1-$n)/2.0+$s*($a-1)] [expr -($pile_length/$z_mesh)*$c]
equalDOF [expr $node_num+$c+$z_mesh*($b-1)+$z_mesh*$m*($a-1)] [expr $node_num1+(2*$c-1)+2*$z_mesh*($b-1)+2*$z_mesh*$m*($a-1)] 1 2 3
node [expr $node_num1+(2*$c)+2*$z_mesh*($b-1)+2*$z_mesh*$m*($a-1)] [expr $s*(1-$m)/2.0+$s*($b-1)] [expr $s*(1-$n)/2.0+$s*($a-1)] [expr -($pile_length/$z_mesh)*$c]
fix [expr $node_num1+(2*$c)+2*$z_mesh*($b-1)+2*$z_mesh*$m*($a-1)] 1 1 1

set x [expr $c*$pile_length/$z_mesh]
set Np [expr 3.0+$gamma*$x/$Cu+$J*$x/$Dp]
if { $Np <= 9.0 } {
set Pult [expr $Np*$Cu*$Dp]
} else {
set Pult [expr 9.0*$Cu*$Dp]
}

set tult [expr $alpha*$Cu*3.14*$Dp*$pile_length/$z_mesh]
set z50 [expr .5*$Dp/100]
set qult [expr 5.7*$Cu*(3.14*pow($Dp,2.0)/4.0)]
set y50 [expr 2.5*$Dp/100]
set k [expr 2*($c-1)+1]

if { $c < $z_mesh } {
set mattag [expr $k+2*$z_mesh*($b-1)+2*$m*$z_mesh*($a-1)]
set mattag1 [expr $k+1+2*$z_mesh*($b-1)+2*$m*$z_mesh*($a-1)]
uniaxialMaterial PySimple1 $mattag 1 $Pult $Y50 $Cd 0.0
uniaxialMaterial TzSimple1 $mattag1 1 $tult $z50 0.0 0.0
element zeroLength [expr $c+$ele_num] [expr $node_num1+(2*$c-1)+2*$z_mesh*($b-1)+2*$z_mesh*$m*($a-1)] [expr $node_num1+(2*$c)+2*$z_mesh*($b-1)+2*$z_mesh*$m*($a-1)] -mat $mattag $mattag $mattag1 -dir 1 2 3
} else {
set mattag [expr $k+2*$z_mesh*($b-1)+2*$m*$z_mesh*($a-1)]
set mattag1 [expr $k+1+2*$z_mesh*($b-1)+2*$m*$z_mesh*($a-1)]
uniaxialMaterial PySimple1 $mattag 1 $Pult $Y50 $Cd 0.0
uniaxialMaterial PySimple1 $mattag1 1 $qult $y50 0.0 0.0
element zeroLength [expr $c+$ele_num] [expr $node_num1+(2*$c-1)+2*$z_mesh*($b-1)+2*$z_mesh*$m*($a-1)] [expr $node_num1+(2*$c)+2*$z_mesh*($b-1)+2*$z_mesh*$m*($a-1)] -mat $mattag $mattag $mattag1 -dir 1 2 3
}
}

set ele_num [expr $ele_num+$z_mesh]
}
}

set node_num [expr $node_num1+2*$z_mesh*$m*$n]
set ele_num [expr $ele_num+$z_mesh*$m*$n]

#puts "$node_num"
#puts "$ele_num"
#
#
#
###taking nodes and elements information as output
for { set i 1323 } { $i <= 1863} { incr i } {
print output/nodes.txt -node $i
}
#
for { set i 1 } { $i <= 1381} { incr i } {
print output/elements.txt -ele $i
}
##
#
#

Post Reply