Simple 3D soil cantilever model.

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

Moderators: silvia, selimgunay, Moderators

Post Reply
jskabanda
Posts: 3
Joined: Tue Jul 05, 2011 6:28 pm
Location: University of Toronto

Simple 3D soil cantilever model.

Post by jskabanda »

Hi I am university of Toronto student and I am trying to build a 3D soil model for future earthquake analyses. I have tried building a simple soil 3D model fixed at one end and applied 2 unit loads at the other end. However, when I compare the results from Opensees from my hand calculations and other programs I don't get the same answer. Can someone help me with this attached below is my code in opensees, the expected answer is around 4.3*10-4 but I am currently getting 3.29*10-4.

wipe
model BasicBuilder -ndm 3 -ndf 3
#-----------------------------------------------------------------------------------------
# 1. DEFINE ANALYSIS PARAMETERS
#-----------------------------------------------------------------------------------------
wipe
set soilThick 1.0
#---MATERIAL PROPERTIES
# soil mass density (Mg/m^3)
set rho 1.6
# soil shear wave velocity (m/s)
set Vs 201.5
# soil shear modulus (kPa)
set G 60000.0
# poisson's ratio of soil
set nu 0.0
# soil elastic modulus (kPa)
set E 150000.0

# number of elements in each direction
set nElemX 2
set nElemY 1
set nElemZ 1

set nElemx(1) 1
set nElemx(2) 1

set nElemy(1) 1

set nElemz(1) 1

set sElemx(1) 1.0
set sElemx(2) 1.0

set sElemy(1) 1.0

set sElemz(1) 1.0

set numLayers $nElemY

# number of nodes in horizontal direction
set nTotalnodesH [expr ($nElemZ+1)* ($nElemX+1)]

# number of nodes in vertical direction in each layer
set nNodeT 0
for {set k 1} {$k <= $numLayers} {incr k 1} {
set nNodeY($k) [expr $nTotalnodesH*$nElemy($k)]
puts "number of nodes in layer $k: $nNodeY($k)"
set nNodeT [expr $nNodeT + $nNodeY($k)]
}
set surface [expr $numLayers + 1]
set nNodeY($surface) [expr $nTotalnodesH * 1]
puts "number of nodes on surface: $nNodeY($surface)"
set nNodeT [expr $nNodeT + $nNodeY($surface)]
puts "total number of nodes: $nNodeT"

set yCoord 0.0
set xCoord 0.0
set zCoord 0.0

set count 1

for {set k 1} {$k <= 2} {incr k 1} {
node $count 0.0 $yCoord 0.0
node [expr $count+1] [expr $xCoord+1] $yCoord $zCoord
node [expr $count+2] [expr $xCoord+2] $yCoord $zCoord
node [expr $count+3] $xCoord $yCoord [expr $zCoord+1]
node [expr $count+4] [expr $xCoord+1] $yCoord [expr $zCoord+1]
node [expr $count+5] [expr $xCoord+2] $yCoord [expr $zCoord+1]

set yCoord [expr $yCoord + $sElemy(1)]

set count [expr $count + $nNodeY(1)]
}

#define soil material
nDMaterial ElasticIsotropic 1 $E $nu $rho;

for {set q 4} {$q <=5} {incr q 1} {
element stdBrick $q $q [expr $q+1] [expr $q-2] [expr $q-3] [expr $q+6] [expr $q+7] [expr $q+4] [expr $q+3] 1
}

fix 1 1 1 1
fix 4 1 1 1
fix 7 1 1 1
fix 10 1 1 1

# create a Linear TimeSeries with a tag of 1

timeSeries Linear 1

pattern Plain 1 1 {

# Create the nodal load - command: load nodeID xForce yForce
load 12 0 -1 0
load 9 0 -1 0
}
## Create the system of equation
system BandSPD
#

numberer Plain
#
## Create the constraint handler, a Plain handler is used as homo constraints
constraints Transformation
#
## Create the integration scheme, the LoadControl scheme using steps of 1.0
integrator LoadControl 1.0
#
## Create the solution algorithm, a Linear algorithm is created
algorithm Linear
#
## create the analysis object
analysis Static

# create a Recorder object for the nodal displacements at node 9
recorder Node -file example.out -time -node 9 -dof 1 2 3 disp

analyze 1

puts "node 9 displacement: [nodeDisp 9]"
print node 9
puts "node 12 displacement: [nodeDisp 12]"
print node 12
puts "node 1 displacement: [nodeDisp 1]"
print node 1


source DisplayPlane.tcl; # Including procedure
source DisplayModel3D.tcl;
DisplayModel3D NodeNumbers 20 20 20 1200 800; ## options: ModeShape , NodeNumbers , #DeformedShape
wipe;
Post Reply