ZeroLength contact element

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

Moderators: silvia, selimgunay, Moderators

Post Reply
Thomas_Tang
Posts: 9
Joined: Fri Oct 05, 2007 11:46 am
Location: Simpson Gumpertz & Heger

ZeroLength contact element

Post by Thomas_Tang » Wed Mar 26, 2008 11:43 am

Can anyone tell me the command and associated arguments to use the newly implemented ZeroLength contact element in Version 1.7.5?
What is the exact mechanical behavior of this element?
Is it proper to model the uplifiting between foundation and soil?

Thanks a lot!!!

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

Post by fmk » Thu Mar 27, 2008 11:10 am

this response is from Dr. Gang Wang

ZeroLengthContact Element

zeroLengthContact2D is Node-to-node frictional contact element used in
two dimensional analysis

Code: Select all

element zeroLengthContact2D eleTag? sNode? mNode? Kn? Kt? mu? -normal
Nx? Ny?
zeroLengthContact3D is Node-to-node frictional contact element used in
three dimensional analysis

Code: Select all

element zeroLengthContact3D eleTag? sNode? mNode? Kn? Kt? mu? c? dir?

Code: Select all

$eleTag       Unique element object tag
$sNode        Slave node tag
$mNode        Master node tag
$Kn           Penalty in normal direction
$Kt           Penalty in tangential direction
$mu           Friction coefficient
$c            Cohesion (not available in 2D)
$dir          Direction flag of the contact plane (3D), it can be:
       1        Out normal of the master plane pointing to +X direction
       2        Out normal of the master plane pointing to +Y direction
       3        Out normal of the master plane pointing to +Z direction
$Nx, $Ny      The out normal vector of the master plane (2D)         

NOTE:

[1] The contact element is node-to-node contact. Contact occurs between
two contact nodes when they come close. The relation follows
Mohr-coulomb law: T = $mu * N + $c, where T is tangential force and N is
normal force across the interface. $mu is friction coefficient and $c is
total cohesion (summed over the effective area of contact nodes)

[2] Definition of master and slave node / plane: the contact node pair
in node-to-node contact element are termed master node and slave node,
respectively. Master/slave plane is the contact plane which the
master/slave node belongs to. The discrimination is made solely for
contact detection purpose. User need to specify the corresponding out
normal of the master plane. For simplicity, 3D contact only allows 3
options to specify the direction of the contact plane. The convention
is: out normal of master plane always points to positive axial direction
(+X or +Y, or +Z)

[3] For 2D contact, slave nodes and master nodes must be 2 DOF. For 3D
contact, slave nodes and master nodes must be 3 DOF.

[4] The resulted tangent from the contact element is non-symmetric.
Switch to non-symmetric matrix solver if convergence problem is
experienced.



Gang Wang, Ph.D.

here is a 2D example:

Code: Select all

# ################################

# create the modelbuilder

# #################################



wipe



model BasicBuilder -ndm 2 -ndf 2



set displayMode "displayON"

 

# ################################

# build the model

# #################################



# y

# |

# 8-------7

# | slave |

# 5-------6

# 4-------3    

# | master|

# 1-------2---->x

#  

 

set L 1;

set H 0.5;

set Tol 0;

node  1    0   0  

node  2   $L   0 

node  3   $L  [expr $H+$Tol]  

node  4   0   [expr $H+$Tol]  

node  5   0   [expr $H-$Tol]  

node  6   $L  [expr $H-$Tol]  

node  7   $L  [expr 2*$H]  

node  8    0  [expr 2*$H]     



fix 1 1 1 

fix 2 0 1   



#nDMaterial ElasticIsotropic 1 1e16 0.3  ### no mass density, dont use it

##nDMaterial J2Plasticity tag? rho? K? G? sig0? sigInf? delta? H? <eta?>

nDMaterial J2Plasticity    1   200 1e10 1e10 1e16 1e20 0 0



#element bbarQuad 1  1  2  4  3    PlaneStrain 1

element quad 1  1  2  3  4  1 PlaneStrain 1

element quad 2  5  6  7  8  1 PlaneStrain 1



set Kn 1e8;

set Kt 1e8;

set fs 0.3;



#element zeroLengthContact2D  $eleID  $sNdID  $mNdID   $Kn        $Kt        $fs   $dir 

element zeroLengthContact2D      3      5       4  [expr $Kn] [expr $Kt] [expr $fs] -normal  0.0  1.0 

element zeroLengthContact2D      4      6       3  [expr $Kn] [expr $Kt] [expr $fs] -normal  0.0  1.0





#uniaxialMaterial ENT 2 1e16

#element zeroLength 3 4 5 -mat 2 -dir 2

#element zeroLength 4 3 6 -mat 2 -dir 2

  

set Vload  -40000

set Hload  20000

#set Hload  0

# Constant point load

pattern Plain 1 Constant {

   load  7  0.0 [expr $Vload/2]

   load  8  0.0 [expr $Vload/2]

   load  5  [expr $Hload/2]  0.0

   load  6  [expr $Hload/2]  0.0

}

  



# ################################

# create the analysis

# #################################



# #################################

# create the transient analysis

# #################################

set Threshhold 1e-12;  # Threshhold value for test norm

set MaxIte 100;           # Max iterations 

#set printflag 4;         # flag of show or not show test norm

set printflag 1;          # flag of show or not show test norm

set P1 1e15;     #Penalty constant

set P2 1e15;     #Penalty constant

 



# static analysis

# integrator LoadControl 1.0

# integrator DisplacementControl 9 3 -0.01



# dynamic analysis

integrator Newmark  0.5 0.25





numberer RCM

#test NormDispIncr $Threshhold $MaxIte $printflag 

test EnergyIncr $Threshhold $MaxIte $printflag 





constraints Penalty $P1 $P2

#constraints Transformation  # very good for stdBrick, still very bad for brick8N

#constraints Lagrange  1e15 1e15

#constraints Plain 



algorithm Newton

system UmfPack

#system SparseGeneral -piv

#system ProfileSPD





#analysis Static

analysis Transient



recorder Node nodedisp.out disp -node  7 -dof  1 2



# ################################

# perform the analysis

# #################################



# loadConst

# do static analysis

# analyze 1



# do dynamic analysis

analyze 100 0.01

print node 7 8


and here is a 3d example:

Code: Select all

# ################################

# create the modelbuilder

# #################################



wipe



model BasicBuilder -ndm 3 -ndf 3



set displayMode "displayON"

#set displayMode "displayOFF"



# ################################

# build the model

# #################################



node  1  -1 -1 -1

node  2   1 -1 -1

node  3   1  1 -1

node  4  -1  1 -1

node  5  -1 -1  1

node  6   1 -1  1

node  7   1  1  1

node  8  -1  1  1



node  9   -1 -1  1

node  10   1 -1  1

node  11   1  1  1

node  12  -1  1  1

node  13  -1 -1  3

node  14   1 -1  3

node  15   1  1  3

node  16  -1  1  3





fix 1 1 1 1

fix 2 0 1 1  

fix 3 0 0 1

fix 4 0 0 1

    

#fix 1 1 1 1

#fix 2 1 1 1

#fix 3 1 1 1

#fix 4 1 1 1



#nDMaterial ElasticIsotropic 1 1e16 0.3

nDMaterial J2Plasticity 1 100 1e16 1e14 1000000 3000000 0 0

element stdBrick8N  1     1 2 3 4 5 6 7 8        1    

element stdBrick8N  2     9 10 11 12 13 14 15 16  1



set Kn 1e8;

set Kt 1e8;

set fs 0.5;

set c  0.0



element zeroLengthContact3D   3   9  5  [expr $Kn] [expr $Kt] [expr $fs] [expr $c] 3 

element zeroLengthContact3D   4  10  6  [expr $Kn] [expr $Kt] [expr $fs] [expr $c] 3 

element zeroLengthContact3D   5  11  7  [expr $Kn] [expr $Kt] [expr $fs] [expr $c] 3 

element zeroLengthContact3D   6  12  8  [expr $Kn] [expr $Kt] [expr $fs] [expr $c] 3 





#uniaxialMaterial ENT 2 1e16

#element zeroLength 3  5 9  -mat 2 -dir 3

#element zeroLength 4  6 10 -mat 2 -dir 3

#element zeroLength 5  7 11 -mat 2 -dir 3

#element zeroLength 6  8 12 -mat 2 -dir 3





# 1 --4 --- y   

# |   |

# 2 --3

# |

# x 

 

# 5 --8 --- y   

# |   |

# 6 --7

# |

# x 



# 9 --12 --- y   

# |   |

# 10--11

# |

# x 



# 13--16 --- y   

# |   |

# 14--15

# |

# x 



set Vload -40000

set Hload  40000

# Constant point load

pattern Plain 1 Linear {

   load 13 0.0 0.0 [expr $Vload/4]

   load 14 0.0 0.0 [expr $Vload/4]

   load 15 0.0 0.0 [expr $Vload/4]

   load 16 0.0 0.0 [expr $Vload/4]

   load  9 0.0 [expr $Hload/4] 0.0

   load 10 0.0 [expr $Hload/4] 0.0

   load 13 0.0 [expr $Hload/4] 0.0

   load 14 0.0 [expr $Hload/4] 0.0



}

  



# ################################

# create the analysis

# #################################



# #################################

# create the transient analysis

# #################################

set Threshhold 1e-12;  # Threshhold value for test norm

set MaxIte 100;           # Max iterations 

#set printflag 4;         # flag of show or not show test norm

set printflag 1;          # flag of show or not show test norm

set P1 1e15;     #Penalty constant

set P2 1e15;     #Penalty constant

 



# static

# integrator LoadControl 1.0

# integrator DisplacementControl 9 3 -0.01



# dynamic

integrator Newmark  0.5 0.25





numberer RCM

#test NormDispIncr $Threshhold $MaxIte $printflag 

test EnergyIncr $Threshhold $MaxIte $printflag 





constraints Penalty $P1 $P2

#constraints Transformation  # very good for stdBrick, still very bad for brick8N

#constraints Lagrange  1e15 1e15

#constraints Plain 



algorithm Newton

system UmfPack

#system SparseGeneral -piv

#system ProfileSPD





#analysis Static

analysis Transient



recorder Node nodedisp.out disp -node 13 -dof  2



# ################################

# perform the analysis

# #################################



#loadConst

# static

# analyze 1



# dynamic   

analyze 50 0.01

print node 5 9 13

Thomas_Tang
Posts: 9
Joined: Fri Oct 05, 2007 11:46 am
Location: Simpson Gumpertz & Heger

Post by Thomas_Tang » Mon Mar 31, 2008 9:00 am

Thank you very much, Frank!
Thanks to Dr. Wang!

Post Reply