Does anyone anywhere know how to use BeamContact3D?

A forum dedicated to users with questions regarding soil materials and elements.

forum currently locked

Moderator: Moderators

Locked
mlw
Posts: 49
Joined: Sun Feb 20, 2011 7:27 pm
Location: New Zealand

Does anyone anywhere know how to use BeamContact3D?

Post by mlw » Wed Apr 20, 2011 7:13 pm

Hi all,

I have been trying to get this (very) simple model using BeamContact3D to work for about a month now.
The code gives errors when it tries to solve the 3rd run (gravity load on the pile), but works fine for the first two analyses (gravity loads on elastic soil and plastic soil without the pile). I suspect the problem originates from the use of BeamContact3D and ContactMaterial3D.
The error is: WARNING FE_Element :: setID<> - numDOF and number of dof at the DOF_Groups

The code follows, thanks in advance to anyone who can help.

#################################################
#
# Program models a pushover case in clay employing soil-pile interface slip and gapping
#
#################################################

# Unit system in this file: SI

set g 9.81

# destroys all previous analysis and parameters
wipe

model basic -ndm 3 -ndf 4

#define nodes
node 1 0.0 0.0 0.5
node 2 -0.5 0.0 0.0
node 3 -2.5 0.0 0.0
node 4 -2.5 0.0 2.5
node 5 0.0 0.0 2.5
node 6 2.5 0.0 2.5
node 7 2.5 0.0 0.0
node 8 0.5 0.0 0.0

node 9 0.0 -3.0 0.5
node 10 -0.5 -3.0 0.0
node 11 -2.5 -3.0 0.0
node 12 -2.5 -3.0 2.5
node 13 0.0 -3.0 2.5
node 14 2.5 -3.0 2.5
node 15 2.5 -3.0 0.0
node 16 0.5 -3.0 0.0

node 17 0.0 -6.0 0.5
node 18 -0.5 -6.0 0.0
node 19 -2.5 -6.0 0.0
node 20 -2.5 -6.0 2.5
node 21 0.0 -6.0 2.5
node 22 2.5 -6.0 2.5
node 23 2.5 -6.0 0.0
node 24 0.5 -6.0 0.0

node 25 0.0 -9.0 0.5
node 26 -0.5 -9.0 0.0
node 27 -2.5 -9.0 0.0
node 28 -2.5 -9.0 2.5
node 29 0.0 -9.0 2.5
node 30 2.5 -9.0 2.5
node 31 2.5 -9.0 0.0
node 32 0.5 -9.0 0.0

# intermediate nodes
node 33 -1.25 0.0 2.5
node 34 1.25 0.0 2.5
node 35 -1.25 -3.0 2.5
node 36 1.25 -3.0 2.5
node 37 -1.25 -6.0 2.5
node 38 1.25 -6.0 2.5
node 39 -1.25 -9.0 2.5
node 40 1.25 -9.0 2.5

#contact material nodes
node 57 -0.49 0.0 0.0
node 58 0.0 0.0 0.49
node 59 0.49 0.0 0.0
node 60 -0.49 -3.0 0.0
node 61 0.0 -3.0 0.49
node 62 0.49 -3.0 0.0
node 63 -0.49 -6.0 0.0
node 64 0.0 -6.0 0.49
node 65 0.49 -6.0 0.0
node 66 -0.49 -9.0 0.0
node 67 0.0 -9.0 0.49
node 68 0.49 -9.0 0.0

# fix base of model
fix 25 1 1 1 1
fix 26 1 1 1 1
fix 27 1 1 1 1
fix 28 1 1 1 1
fix 39 1 1 1 1
fix 29 1 1 1 1
fix 40 1 1 1 1
fix 30 1 1 1 1
fix 31 1 1 1 1
fix 32 1 1 1 1
fix 66 1 1 1 1
fix 67 1 1 1 1
fix 68 1 1 1 1

# fixes nodes on cross-section face from z (out of plane) movement on line of symmetry
fixZ [expr 0.0] 0 0 1 0 -tol 1e-4
fixZ [expr 2.5] 0 0 1 0 -tol 1e-4

# fix pore water condition at ground surface
fix 1 0 0 0 1
fix 2 0 0 0 1
fix 3 0 0 0 1
fix 4 0 0 0 1
fix 33 0 0 0 1
fix 5 0 0 0 1
fix 34 0 0 0 1
fix 6 0 0 0 1
fix 7 0 0 0 1
fix 8 0 0 0 1


# boundary conditions nodes slaved together in 1 (x disp) and 2 (y disp)
# creates periodic boundary conditions
equalDOF 3 7 1 2
equalDOF 11 15 1 2
equalDOF 19 23 1 2
equalDOF 27 31 1 2
equalDOF 4 6 1 2
equalDOF 12 14 1 2
equalDOF 20 22 1 2
equalDOF 28 30 1 2

nDMaterial PressureIndependMultiYield 1 3 1.3 1.3e+4 6.5e+04 18 0.1

set gravX 0
set gravZ 0
set gravY [expr -1*$g]
set xperm 1
set yperm 1
set zperm 1
set bulk 2.2000e+006
set fmass 1

element brickUP 1 3 4 33 2 11 12 35 10 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 2 11 12 35 10 19 20 37 18 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 3 19 20 37 18 27 28 39 26 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 4 2 33 5 1 10 35 13 9 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 5 10 35 13 9 18 37 21 17 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 6 18 37 21 17 26 39 29 25 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 7 1 5 34 8 9 13 36 16 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 8 9 13 36 16 17 21 38 24 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 9 17 21 38 24 25 29 40 32 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 10 8 34 6 7 16 36 14 15 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 11 16 36 14 16 24 38 22 23 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 12 24 38 22 23 32 40 30 31 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ

element brickUP 13 57 2 1 58 60 10 9 61 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 14 60 10 9 61 63 18 17 64 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 15 63 18 17 64 66 26 25 67 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 16 58 1 8 59 61 9 16 62 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 17 61 9 16 62 64 17 24 65 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ
element brickUP 18 64 17 24 65 67 25 32 68 1 $bulk $fmass $xperm $yperm $zperm $gravX $gravY $gravZ

set NumElements 18

########################
# Gravity application #
########################

# elastic behavior ---------------------------------------------- 1st run
updateMaterialStage -material 1 -stage 0

numberer RCM
system SparseSPD
test NormDispIncr 1.00e-004 100 1
algorithm ModifiedNewton
constraints Penalty 1.e18 1.e18
integrator Newmark 1.5 1.
analysis Transient

set ok [analyze 1 5.00e+003]
if {$ok != 0} { return $ok }
puts "First run done."

# switch material stage from elastic (gravity) to plastic ------- 2nd run
updateMaterialStage -material 1 -stage 1

set ok [analyze 1 1]
if {$ok != 0} { return $ok }
puts "Second run done."

########################
# Set up pile analysis #
########################

wipeAnalysis

model basic -ndm 3 -ndf 6

# pile nodes for three piles (one for each soil node)
node 101 0.0 1.0 0.0
node 102 0.0 -1.5 0.0
node 103 0.0 -4.5 0.0
node 104 0.0 -7.5 0.0
node 105 0.0 -9.0 0.0

node 201 0.0 1.0 0.0
node 202 0.0 -1.5 0.0
node 203 0.0 -4.5 0.0
node 204 0.0 -7.5 0.0
node 205 0.0 -9.0 0.0

node 301 0.0 1.0 0.0
node 302 0.0 -1.5 0.0
node 303 0.0 -4.5 0.0
node 304 0.0 -7.5 0.0
node 305 0.0 -9.0 0.0

# intermediate nodes used to enforce equalDOF with soil
node 106 0.0 0.0 0.0
node 107 0.0 -3.0 0.0
node 108 0.0 -6.0 0.0

node 206 0.0 0.0 0.0
node 207 0.0 -3.0 0.0
node 208 0.0 -6.0 0.0

node 306 0.0 0.0 0.0
node 307 0.0 -3.0 0.0
node 308 0.0 -6.0 0.0

# fix three piles together
equalDOF 201 101 1 2 3 4 5 6
equalDOF 202 102 1 2 3 4 5 6
equalDOF 203 103 1 2 3 4 5 6
equalDOF 204 104 1 2 3 4 5 6
equalDOF 205 105 1 2 3 4 5 6
equalDOF 206 106 1 2 3 4 5 6
equalDOF 207 107 1 2 3 4 5 6
equalDOF 208 108 1 2 3 4 5 6

equalDOF 201 301 1 2 3 4 5 6
equalDOF 202 302 1 2 3 4 5 6
equalDOF 203 303 1 2 3 4 5 6
equalDOF 204 304 1 2 3 4 5 6
equalDOF 205 305 1 2 3 4 5 6
equalDOF 206 106 1 2 3 4 5 6
equalDOF 207 107 1 2 3 4 5 6
equalDOF 208 108 1 2 3 4 5 6

# fix pile nodes from moving out of the symmetrical plane
fix 201 0 0 1 0 0 1
fix 202 0 0 1 0 0 1
fix 203 0 0 1 0 0 1
fix 204 0 0 1 0 0 1
fix 205 0 0 1 0 0 1
fix 206 0 0 1 0 0 1
fix 207 0 0 1 0 0 1
fix 208 0 0 1 0 0 1

# fix pile nodes with 6 dof to soil nodes with 4 dof using intermediate nodes
equalDOF 206 58 1 2 3
equalDOF 207 61 1 2 3
equalDOF 208 64 1 2 3
equalDOF 205 67 1 2 3

equalDOF 106 57 1 2 3
equalDOF 107 60 1 2 3
equalDOF 108 63 1 2 3
equalDOF 105 66 1 2 3

equalDOF 306 59 1 2 3
equalDOF 307 62 1 2 3
equalDOF 308 65 1 2 3
equalDOF 305 68 1 2 3


geomTransf Linear 1001 0 0 -1

# pile properties - half round area on line of symmetry
set I 2.263832e-002
set A 3.771482e-001
set E 3.000000e+007
set G 1.153846e+007
set Jx 4.528828e-002

element elasticBeamColumn 101 101 106 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 102 106 102 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 103 102 107 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 104 107 103 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 105 103 108 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 106 108 104 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 107 104 105 $A $E $G $Jx $I $I 1001

element elasticBeamColumn 201 201 206 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 202 206 202 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 203 202 207 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 204 207 203 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 205 203 208 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 206 208 204 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 207 204 205 $A $E $G $Jx $I $I 1001

element elasticBeamColumn 301 301 306 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 302 306 302 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 303 302 307 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 304 307 303 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 305 303 308 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 306 308 304 $A $E $G $Jx $I $I 1001
element elasticBeamColumn 307 304 305 $A $E $G $Jx $I $I 1001

# Lagrange multiplier nodes
node 45 0.0 0.0 0.0
node 46 0.0 0.0 0.0
node 47 0.0 0.0 0.0
node 48 0.0 0.0 0.0
node 49 0.0 0.0 0.0
node 50 0.0 0.0 0.0
node 51 0.0 0.0 0.0
node 52 0.0 0.0 0.0
node 53 0.0 0.0 0.0
node 54 0.0 0.0 0.0
node 55 0.0 0.0 0.0
node 56 0.0 0.0 0.0

fix 45 1 1 1 1 1 1
fix 46 1 1 1 1 1 1
fix 47 1 1 1 1 1 1
fix 48 1 1 1 1 1 1
fix 49 1 1 1 1 1 1
fix 50 1 1 1 1 1 1
fix 51 1 1 1 1 1 1
fix 52 1 1 1 1 1 1
fix 53 1 1 1 1 1 1
fix 54 1 1 1 1 1 1
fix 55 1 1 1 1 1 1
fix 56 1 1 1 1 1 1


nDMaterial ContactMaterial3D 2 12 7142 5 0

element BeamContact3D 400 102 101 57 45 0.49 1001 2 1e-10 1e-10
element BeamContact3D 401 202 201 58 46 0.49 1001 2 1e-10 1e-10
element BeamContact3D 402 302 301 59 47 0.49 1001 2 1e-10 1e-10

element BeamContact3D 403 103 102 60 48 0.49 1001 2 1e-10 1e-10
element BeamContact3D 404 203 202 61 49 0.49 1001 2 1e-10 1e-10
element BeamContact3D 405 303 302 62 50 0.49 1001 2 1e-10 1e-10

element BeamContact3D 406 104 103 63 51 0.49 1001 2 1e-10 1e-10
element BeamContact3D 407 204 203 64 52 0.49 1001 2 1e-10 1e-10
element BeamContact3D 408 304 303 65 53 0.49 1001 2 1e-10 1e-10

element BeamContact3D 409 105 104 66 54 0.49 1001 2 1e-10 1e-10
element BeamContact3D 410 205 204 67 55 0.49 1001 2 1e-10 1e-10
element BeamContact3D 411 305 304 68 56 0.49 1001 2 1e-10 1e-10

# OpenSees doesn't seem to recognise BeamEndContact3D
#element BeamEndContact3D 409 105 104 66 54 0.49 1e-10 1e-10
#element BeamEndContact3D 410 205 204 67 55 0.49 1e-10 1e-10
#element BeamEndContact3D 411 305 304 68 56 0.49 1e-10 1e-10


set numSteps3rdRun 1
loadConst -time 0.

# pile mass t/m^3 x area x tributary length
mass 101 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001
mass 102 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001
mass 103 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001
mass 104 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001
mass 105 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001

mass 201 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001
mass 202 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001
mass 203 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001
mass 204 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001
mass 205 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001

mass 301 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001
mass 302 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001
mass 303 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001
mass 304 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001 2.545750e-001
mass 305 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001 1.272875e-001

pattern Plain 101 Linear {

# load factor times reference load is the load applied to the pile
load 101 0. [expr -1.272875e-001*$g/$numSteps3rdRun] 0. 0. 0. 0.
load 102 0. [expr -2.545750e-001*$g/$numSteps3rdRun] 0. 0. 0. 0.
load 103 0. [expr -2.545750e-001*$g/$numSteps3rdRun] 0. 0. 0. 0.
load 104 0. [expr -2.545750e-001*$g/$numSteps3rdRun] 0. 0. 0. 0.
load 105 0. [expr -1.272875e-001*$g/$numSteps3rdRun] 0. 0. 0. 0.

load 201 0. [expr -1.272875e-001*$g/$numSteps3rdRun] 0. 0. 0. 0.
load 202 0. [expr -2.545750e-001*$g/$numSteps3rdRun] 0. 0. 0. 0.
load 203 0. [expr -2.545750e-001*$g/$numSteps3rdRun] 0. 0. 0. 0.
load 204 0. [expr -2.545750e-001*$g/$numSteps3rdRun] 0. 0. 0. 0.
load 205 0. [expr -1.272875e-001*$g/$numSteps3rdRun] 0. 0. 0. 0.

load 301 0. [expr -1.272875e-001*$g/$numSteps3rdRun] 0. 0. 0. 0.
load 302 0. [expr -2.545750e-001*$g/$numSteps3rdRun] 0. 0. 0. 0.
load 303 0. [expr -2.545750e-001*$g/$numSteps3rdRun] 0. 0. 0. 0.
load 304 0. [expr -2.545750e-001*$g/$numSteps3rdRun] 0. 0. 0. 0.
load 305 0. [expr -1.272875e-001*$g/$numSteps3rdRun] 0. 0. 0. 0.
}


# add pile gravity (plastic) ----------- 3nd run

numberer RCM
system SparseSPD
test NormDispIncr 1.00e-004 150 2
algorithm ModifiedNewton
constraints Lagrange
integrator Newmark 1.5 1.
analysis Transient

set ok [analyze $numSteps3rdRun 1]
if {$ok != 0} { return $ok }
puts "Third run done."


#############################
# Loading Pushover
#############################


wipeAnalysis
loadConst -time 0.0

model basic -ndm 3 -ndf 6

# Apply load to top of pile in increments of 0.01m displacement
pattern Plain 2 Linear {
sp 201 1 0.01
}

# Update soil permeability properties

for {set i 1} {$i<=$NumElements} {incr i 1} {
parameter $i element $i hPerm
updateParameter $i [expr 1.0000e-004/$g/$fmass]
parameter $i+100 element $i vPerm
updateParameter $i+100 [expr 1.0000e-004/$g/$fmass]
}

# output responses
remove recorders

# record response at soil-pile interface
eval "recorder Element -file force.out -time -ele 400 401 402 403 404 405 406 407 408 409 410 411 force"
eval "recorder Element -file frictionforce.out -time -ele 400 401 402 403 404 405 406 407 408 409 410 411 frictionforce"
eval "recorder Element -file masterforce.out -time -ele 400 401 402 403 404 405 406 407 408 409 410 411 masterforce"

# record soil and pile displacements
eval "recorder Node - piledisp.out -time -node 201 206 202 207 203 208 204 205 -dof 1 disp"
eval "recorder Node - soildisp.out -time -node 57 60 63 66 59 62 65 68 -dof 1 disp"

# record pore water pressure in soil elements
eval "recorder Node -file pwp.out -time -node 2 10 18 26 8 16 24 32 7 15 23 31 -dof 4 vel"


# use large damping for pushover analysis
set am 0
set ak 1
set numSteps 20
set TimeIncr 1

set gamma 0.600000

numberer RCM
system SparseSPD
test NormDispIncr 1.00e-004 50 1
algorithm KrylovNewton
constraints Lagrange
rayleigh $am 0.0 $ak 0.0
integrator Newmark $gamma [expr pow($gamma+0.5, 2)/4]
analysis VariableTransient

analyze $numSteps $TimeIncr [expr $TimeIncr/100] $TimeIncr 15

puts "Analysis Finished!!"
Last edited by mlw on Sun Apr 24, 2011 6:20 pm, edited 1 time in total.

mlw
Posts: 49
Joined: Sun Feb 20, 2011 7:27 pm
Location: New Zealand

Re: Does anyone anywhere know how to use BeamContact3D?

Post by mlw » Thu Apr 21, 2011 10:45 am

Yes, that's the theory behind it. But how do you actually implement BeamContact3D in OpenSees? Do I need one pile element and one BeamContact3D element per solid node? Or can I connect multiple BeamContact3D elements to one pile element? Are there any particular algorithm or constraint handler or system that should be used? Do you have an example that I could look at?

fmk
Site Admin
Posts: 5866
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Re: Does anyone anywhere know how to use BeamContact3D?

Post by fmk » Fri May 13, 2011 11:51 am

contact pedro arduino at the university of washington.

Locked