This example illustrates the Hertz contact problem using linear elasticity.
![]() |
![]() |
Fig. 1 Before contact | Fig. 2 After contact mechanics solution |
############################################################# # This illustrates the classical Hertz contact problem of a # rigid cylinder indenting an elastic half-space. The # governing equation is linear elasticity and the constitutive # law is a simple compressible linear isotropic function # requiring a Young's modulus (E) and Poisson's ratio (v). # The half-space is trilinear and the cylinder is bicubic-linear. # Even though the problem is linear, the addition of contact makes # the problem non-linear requiring a Newton-Raphson solution approach. ############################################################# # Define parameters, regions, coordinate system and bases fem def para;r;hertz;example fem def region;r;two;example fem def coord 3,1 fem def bases;r;collapsed;example # Read in half-space described by trilinear elements fem def nodes;r;half;example reg 1 fem def elem;r;half;example reg 1 # Refine half-space with dense mesh in region of contact fem refine xi 1 element 101 ntimes 2 reg 1 fem refine xi 1 element 101,103 ntimes 2 reg 1 fem refine xi 1 element 101,107,105,108 ntimes 1 reg 1 fem refine xi 1 element 101,107,111,112 ntimes 1 reg 1 fem refine xi 3 ntimes 3 reg 1 # Define fibre directions fem def fibre;r;half;example reg 1 fem def elem;r;half;example fibre reg 1 # Read in rigid cylinder described by bicubic-linear elements fem def nodes;r;cylinder;example reg 2 fem def elem;r;cylinder;example reg 2 # Update derivatives and scale-factors fem up node deriv 1 linear reg 2 fem up node deriv 2 linear reg 2 fem up node deriv 3 linear reg 2 fem up scale_factors normalise reg 2 # Align cylinder for contact fem change nodes rotate by -90 reg 2 fem change nodes translate by -2,2,0 reg 2 # Define fibre directions fem def fibre;r;cylinder;example reg 2 fem def elem;r;cylinder;example fibre reg 2 ## Export cylinder (master surface) #fem export nodes;cylinder as cylinder reg 2 #fem export elem;cylinder as cylinder reg 2 # Node groups for fixed boundary conditions fem group nodes 101,305,221,301,179,297,217,293,107,103,303,219,299,177,295,215,291,105 as fixedx reg 1 fem group nodes 105,161,145,169,129,165,149,173,121,153,133,157,113,137,125,141,109,117,106 as fixedy1 reg 1 fem group nodes 107,162,146,170,130,166,150,174,122,154,134,158,114,138,126,142,110,118,108 as fixedy2 reg 1 fem group nodes 101..442 as fixedz reg 1 fem group nodes 1..20 as cylinderfixedz reg 2 fem group nodes 1..20 as cylinderfixedy reg 2 fem group nodes 1..20 as cylinderfixedx reg 2 # Define equations fem def equa;r;half;example reg 1 fem def equa;r;cylinder;example reg 2 # Define material properties fem def mat;r;half;example reg 1 fem def mat;r;cylinder;example reg 2 # Define initial fixed boundary conditions fem def init;r;half;example reg 1 fem def init;r;cylinder;example reg 2 # Move cylinder through prescribed displacement fem change nodes translate by 0,-0.02,0 nodes cylinderfixedy reg 2 # define contact parameters fem def contact;r;contact;example # Define solve for problem reg 1 fem def solve;r;half;example reg 1 $j=0; $CONVERGED=0; while ($CONVERGED==0) { $j++; ######################################Projection # Set contact xi points on specified faces (8x8) fem def xi;c contact_points faces 381,575,531,593,479,584,548 points 8 reg 1 # Define data at xi positions fem def data;c from_xi reg 1 # Update slave info fem update data field to slave # Project onto target face fem def xi;c closest_face faces 623 region 2 # Store projection gap in data fields fem update data field from gap region 2 # Update master info fem update data field to master # Place initial geometry YP(ny,3) into XP if ($j>1) { FEM up geom from sol YP_index 3 to 1..3 reg 1 } #####################################Mechanics problem # Solve contact problem fem solve error 0.01 iterate 5 reg 1 FEM up geom from sol to 1..3 reg 1 } # Place initial geometry YP(ny,3) into XP FEM up geom from sol YP_index 3 to 1..3 reg 1 # Only need displacements for stresses fem update solution geometry subtract reg 1 # Fit stresses at Gauss points to nodal fields fem def field;r;half;example fem def elem;r;half;example field fem up gauss stress ref fem de fit;r;half;example gauss fem fit ## Export undeformed slave with stresses #fem export nodes;half as half reg 1 #fem export elem;half as half reg 1 # Add undeformed geometry to displacements fem update solution geometry add reg 1 # Update XP from YP FEM up geom from sol to 1..3 reg 1 ## Export deformed slave #fem export nodes;half_def as half_def reg 1 offset 1000 #fem export elem;half_def as half_def reg 1 offset_elem 1000 ## Export deformed master #fem export nodes;cylinder_def as cylinder_def reg 2 offset 2000 #fem export elem;cylinder_def as cylinder_def reg 2 offset_elem 2000
Name Modified Size
example_d25.com 23-Apr-2008 4.7k collapsed.ipbase 01-Sep-2004 8.3k contact.ipcont 25-Sep-2008 626 contact.ipsolv 16-Aug-2010 2.7k contact.ipsolv.old 13-Apr-2007 2.5k coupled.irequa 01-Sep-2004 3.6k coupled.irsolv 13-Apr-2007 1.0k cylinder.ipelem 01-Sep-2004 3.3k cylinder.ipelfb 01-Sep-2004 2.4k cylinder.ipequa 29-Sep-2004 2.0k cylinder.ipfibr 01-Sep-2004 15k cylinder.ipinit 01-Sep-2004 2.4k cylinder.ipmate 01-Sep-2004 974 cylinder.ipnode 01-Sep-2004 18k cylinder.ipsolv 13-Apr-2007 1.1k half.ipbase 01-Sep-2004 3.3k half.ipelem 01-Sep-2004 506 half.ipelfb 01-Sep-2004 38k half.ipelfd 01-Sep-2004 38k half.ipequa 29-Sep-2004 2.0k half.ipfibr 01-Sep-2004 60k half.ipfiel 01-Sep-2004 68k half.ipfit 13-Apr-2007 1.8k half.ipinit 01-Sep-2004 875 half.ipmate 01-Sep-2004 973 half.ipnode 01-Sep-2004 2.1k half.ipsolv 13-Apr-2007 1.1k half.ipxi 01-Sep-2004 3.5k hertz.ipequa 01-Sep-2004 1.7k hertz.ippara 09-Nov-2008 6.0k hertz.ipsolv 13-Apr-2007 1.4k hertz.ircoor 01-Sep-2004 1.1k hertz.irsolv 13-Apr-2007 1.5k test_output.com 01-Sep-2004 0 two.ipregi 01-Sep-2004 93 view.com 01-Sep-2004 2.6k
Name Modified Size
examples_d_d2_d25.tar.gz 17-Aug-2010 113k
Status | Tested | Real time (s) | |
hpc_cmo64_irix | Success | Sun Jul 31 01:35:44 2005 | 11 |
rs6000-aix | |||
cm64 | Success | Wed Mar 4 01:12:07 2009 | 5 |
x86_64-linux | |||
cm | Success | Sun Mar 6 00:01:12 2016 | 2 |
Success | hpc_cmo64_irix: | cmiss_test.log.retain. | |
rs6000-aix | |||
Success | cm64: | cmiss_test.log.retain. | |
x86_64-linux | |||
Success | cm: | cmiss_test.log.retain. |
Success | hpc_cmo64_irix: | ndiff test: no significant differences with generic answer. | |
rs6000-aix | |||
Success | cm64: | ndiff test: no significant differences with generic answer. | |
x86_64-linux | |||
Success | cm: | ndiff test: no significant differences with generic answer. |
Html last generated: Sun Mar 6 05:51:25 2016
Input last modified: Mon Aug 16 11:35:03 2010