Dynamic analysis in a 2D 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
JRamos
Posts: 1
Joined: Fri Jun 26, 2020 9:33 am

Dynamic analysis in a 2D model

Post by JRamos » Fri Jun 26, 2020 10:53 am

Hi Everyone!!

I am working on a dynamic analysis in a 2D model using a mesh. I’m using the Nine four quad elements, and PressureDependMultiYield02 material. I need to evaluate the stress response and pore overpressure. The code is running normally, however, the response shows that there is a decrease in pore pressure, which should not happen.

I want to know if there is any irregularity in the model that induces this incorrect behavior. The following are some parts of the script.

#-----------------------------------------------------------------------------------------
# 1. CREATE PORE PRESSURE NODES AND FIXITIES
#-----------------------------------------------------------------------------------------
model BasicBuilder -ndm 2 -ndf 3

# define pore pressure nodes:
node 1 0.000 0.000
node 5 0.000 0.522

node 4057 26.000 20.000
set ppNodesInfo [open nodeInfo.dat w]
puts $ppNodesInfo " 1 0.000 0.000"
puts $ppNodesInfo " 5 0.000 0.522"

puts $ppNodesInfo " 4057 26.000 20.000"
close $ppNodesInfo
# define fixities for pore pressure nodes:
fix 137 0 0 1
fix 277 0 0 1

fix 3921 0 1 0

# define equal degrees of freedom for pore pressure nodes
equalDOF 1 141 1 2
equalDOF 5 145 1 2

equalDOF 3917 4057 1 2
puts "Finished creating equalDOF for pore pressure nodes..."

#-----------------------------------------------------------------------------------------
# 2. CREATE INTERIOR NODES AND FIXITIES
#-----------------------------------------------------------------------------------------
model BasicBuilder -ndm 2 -ndf 2
# define interior nodes
node 2 0.000 0.261
node 6 0.000 0.783

node 3942 26.000 19.635
node 3 2.500 0.000
node 7 2.500 0.522

node 3808 23.500 19.635
puts "Finished creating all -ndf 2 nodes..."
# define fixities for interior nodes:
fix 3 0 1
fix 143 0 1

fix 3783 0 1
puts "Finished creating all -ndf 2 boundary conditions..."

# define equal degrees of freedom which have not yet been defined
equalDOF 1 3 1 2
equalDOF 5 7 1 2

equalDOF 3806 3942 1 2
puts "Finished creating equalDOF constraints..."
equalDOF 1 141 1

equalDOF 1 3783 1
puts "Finished creating equalDOF for base..."

#-----------------------------------------------------------------------------------------
# 3. CREATE SOIL MATERIALS
#-----------------------------------------------------------------------------------------
nDMaterial PressureIndependMultiYield 1 2 1.68 14046.9 42140.7 35.9 0.1 0.0 100.0 0.0 30
set thick1 1.0
set xWgt1 0.0
set yWgt1 -9.81
set uBulk1 2.2e5
set hPerm1 1.0e-5
set vPerm1 1.0e-5
#-----------------------------------------------------------------------------------------
# 4. CREATE SOIL ELEMENTS
#-----------------------------------------------------------------------------------------
element 9_4_QuadUP 1 1 141 145 5 3 138 7 2 4 $thick1 1 $uBulk1 1.0 1.0 1.0 $xWgt1 $yWgt1
element 9_4_QuadUP 2 5 145 149 9 7 142 11 6 8 $thick1 1 $uBulk1 1.0 1.0 1.0 $xWgt1 $yWgt1

element 9_4_QuadUP 952 3913 4053 4057 3917 3915 3942 3919 3806 3808 $thick1 1 $uBulk1 1.0 1.0 1.0 $xWgt1 $yWgt1
# permeabilities are initial set at 1.0 m/s for gravity analysis, values are updated after gravity
#-----------------------------------------------------------------------------------------
# 5. LYSMER DASHPOT
#-----------------------------------------------------------------------------------------
# define dashpot nodes
node 4068 0.000 0.000
node 4069 0.000 0.000
# define fixities for dashpot nodes
fix 4068 1 1
fix 4069 0 1
# define equal DOF for dashpot and base soil node
equalDOF 1 4068 1
puts "Finished creating dashpot nodes and boundary conditions..."
# define dashpot material
set baseArea 26
set dashpotCoeff 1750.00
uniaxialMaterial Viscous 15 [expr $dashpotCoeff*$baseArea] 1
# define dashpot element
element zeroLength 960 4068 4069 -mat 15 -dir 1
puts "Finished creating dashpot material and element..."
#-----------------------------------------------------------------------------------------
# 6. CREATE GRAVITY RECORDERS
#-----------------------------------------------------------------------------------------
# create list for pore pressure nodes
set nodeList3 {}
set channel [open "nodeInfo.dat" r]
set count 0;
foreach line [split [read -nonewline $channel] \n] {
set count [expr $count+1];
set lineData($count) $line
set nodeNumber [lindex $lineData($count) 0]
lappend nodeList3 $nodeNumber
}
close $channel
# record nodal displacment, acceleration, and porepressure
eval "recorder Node -file Gdisplacement.out -time -node $nodeList3 -dof 1 2 disp"
eval "recorder Node -file Gacceleration.out -time -node $nodeList3 -dof 1 2 accel"
eval "recorder Node -file GporePressure.out -time -node $nodeList3 -dof 3 vel"
# record elemental stress and strain
recorder Element -file Gstress1.out -time -eleRange 1 952 material 1 stress
recorder Element -file Gstrain1.out -time -eleRange 1 952 material 1 strain
puts "Finished creating gravity recorders..."
#-----------------------------------------------------------------------------------------
# 7. DEFINE ANALYSIS PARAMETERS
#-----------------------------------------------------------------------------------------
#---GROUND MOTION PARAMETERS
# time step in ground motion record
set motionDT 0.005
# number of steps in ground motion record
set motionSteps 5000
#---RAYLEIGH DAMPING PARAMETERS
set pi 3.141592654
# damping ratio
set damp 0.02
# lower frequency
set omega1 [expr 2*$pi*0.2]
# upper frequency
set omega2 [expr 2*$pi*20]
# damping coefficients
set a0 [expr 2*$damp*$omega1*$omega2/($omega1 + $omega2)]
set a1 [expr 2*$damp/($omega1 + $omega2)]
puts "damping coefficients: a_0 = $a0; a_1 = $a1"
#---DETERMINE STABLE ANALYSIS TIME STEP USING CFL CONDITION
# maximum shear wave velocity (m/s)
set vsMax 250.0
# element size (m)
set eleSize 3.6576
# duration of ground motion (s)
set duration [expr $motionDT*$motionSteps]
# trial analysis time step
set kTrial [expr $eleSize/(pow($vsMax,0.5))]
# define time step and number of steps for analysis
if { $motionDT <= $kTrial } {
set nSteps $motionSteps
set dT $motionDT
} else {
set nSteps [expr int(floor($duration/$kTrial)+1)]
set dT [expr $duration/$nSteps]
}
puts "number of steps in analysis: $nSteps"
puts "analysis time step: $dT"
#---ANALYSIS PARAMETERS
# Newmark parameters
set gamma 0.5
set beta 0.25

#-----------------------------------------------------------------------------------------
# 8. GRAVITY ANALYSIS
#-----------------------------------------------------------------------------------------
# update materials to ensure elastic behavior
updateMaterialStage -material 1 -stage 0
constraints Penalty 1.e18 1.e18
test NormDispIncr 1e-3 35 1
algorithm Newton
numberer RCM
system UmfPack
integrator Newmark $gamma $beta
analysis Transient
set startT [clock seconds]
analyze 10 5.0e2
analyze 10 5.0e3
puts "Finished with elastic gravity analysis..."
# update materials to consider plastic behavior
updateMaterialStage -material 1 -stage 1
# plastic gravity loading
analyze 10 5.0e-3
puts "Finished with plastic gravity analysis..."
#-----------------------------------------------------------------------------------------
# 11. UPDATE ELEMENT PERMEABILITY VALUES FOR POST-GRAVITY ANALYSIS
#-----------------------------------------------------------------------------------------

# choose base number for parameter IDs which is higer than other tags used in analysis
set ctr 10000.0
# loop over elements to define parameter IDs
for {set i 1} {$i<=959} {incr i 1} {
parameter [expr int($ctr+1.0)] element $i vPerm
parameter [expr int($ctr+2.0)] element $i hPerm
set ctr [expr $ctr+2.0]
}
# update permeability parameters for each element
updateParameter 10001 $vPerm1
updateParameter 10002 $hPerm1

updateParameter 11904 $hPerm1

#-----------------------------------------------------------------------------------------
# 9. CREATE POST-GRAVITY RECORDERS
#-----------------------------------------------------------------------------------------
# reset time and analysis
setTime 0.
wipeAnalysis
remove recorders
# recorder time step
set recDT [expr 2*$motionDT]
# record nodal displacment, acceleration, and porepressure
eval "recorder Node -file displacement.out -time -dT $recDT -node $nodeList3 -dof 1 2 disp"
eval "recorder Node -file acceleration.out -time -dT $recDT -node $nodeList3 -dof 1 2 accel"
eval "recorder Node -file porePressure.out -time -dT $recDT -node $nodeList3 -dof 3 vel"
# record elemental stress and strain
recorder Element -file stress1.out -time -dT $recDT -eleRange 1 952 material 1 stress
recorder Element -file strain1.out -time -dT $recDT -eleRange 1 952 material 1 strain
puts "Finished creating all recorders..."

#-----------------------------------------------------------------------------------------
# 10. DYNAMIC ANALYSIS
#-----------------------------------------------------------------------------------------

model BasicBuilder -ndm 2 -ndf 3
# define constant scaling factor for applied velocity
set cFactor [expr $baseArea*$dashpotCoeff]
# define velocity time history file
set velocityFile velocityHistory.out
# timeseries object for force history
set mSeries "Path -dt $motionDT -filePath $velocityFile -factor $cFactor"
# loading object
pattern Plain 10 $mSeries {
load 1 1.0 0.0 0.0
}
puts "Dynamic loading created..."

constraints Penalty 1.e16 1.e16
test NormDispIncr 1.0e-3 200 1
algorithm KrylovNewton
numberer RCM
system UmfPack
integrator Newmark $gamma $beta
rayleigh $a0 $a1 0.0 0.0
analysis Transient
# perform analysis with timestep reduction loop
set ok [analyze $nSteps $dT]
# if analysis fails, reduce timestep and continue with analysis
if {$ok != 0} {
puts "did not converge, reducing time step"
set curTime [getTime]
puts "curTime: $curTime"
set curStep [expr $curTime/$dT]
puts "curStep: $curStep"
set remStep [expr int(($nSteps-$curStep)*2.0)]
puts "remStep: $remStep"
set dT [expr $dT/2.0]
puts "dT: $dT"
set ok [analyze $remStep $dT]
# if analysis fails again, reduce timestep and continue with analysis
if {$ok != 0} {
puts "did not converge, reducing time step"
set curTime [getTime]
puts "curTime: $curTime"
set curStep [expr $curTime/$dT]
puts "curStep: $curStep"
set remStep [expr int(($remStep-$curStep)*2.0)]
puts "remStep: $remStep"
set dT [expr $dT/2.0]
puts "dT: $dT"
analyze $remStep $dT
}
}
set endT [clock seconds]
puts "Finished with dynamic analysis..."
puts "Analysis execution time: [expr $endT-$startT] seconds"
wipe

Could anybody help me to identify the problem? Thanks

Post Reply