Prepared by Philip Cardiff and Ivan Batistić
cartesianMesh
utility.In this example, a cylindrical punch is pressed into an elastic cylindrical foundation (Figure 1). This case is proposed as a contact mechanics benchmark by the National Agency for Finite Element Methods and Standards (NAFEMS) [1]. The material properties of the punch are similar to steel (\(E_p = 210\) GPa, \(\nu_p = 0.3\)), whereas the foundation has aluminium properties (\(E_f = 70\) GPa, \(\nu_f = 0.3\)). The punch is loaded with a uniform pressure distribution at its top surface \(p = 100\) MPa. The bottom surface of the elastic foundation is fixed. Friction is considered, and the coefficient of friction is set to \(\mu=0.1\). The problem is solved with one load increment, neglecting inertia and gravity effects. The case can be solved using an axisymmetric computational model; however, the setup herein considers a 3-D model with symmetries.
The resulting displacement and stress fields are expected to be axisymmetric. At the edge of the contact region, a stress peak can be expected due to the singular pressure distribution. More precisely, the cylinder fillet radius is too small to avoid having a geometric discontinuity causing a singular pressure distribution. This means peak contact pressures increase at this location with increasing mesh density; however, note that displacement fields converge to a mesh-independent solution.
Figure 2 shows the convergence of axial displacement, radial displacement, and contact pressure as the mesh is refined [2]. The solids4foam
results match well with results reported in the literature [1].
The tutorial case is located at solids4foam/tutorials/solids/linearElasticity/punch
. The case can be run using the included Allrun
script, i.e. > ./Allrun
. In this case, the Allrun
script consists of the following steps:
cp system/punch_top/meshDict system/meshDict
solids4Foam::runApplication -s punch_top cartesianMesh
mkdir constant/punch_top
mv constant/polyMesh constant/punch_top/
cp system/punch_bottom/meshDict system/meshDict
solids4Foam::runApplication -s punch_bottom cartesianMesh
cfMesh
cannot make meshes for separate bodies at once): solids4Foam::runApplication mergeMeshes . . -addRegion punch_top -noFunctionObjects
transformPoints -scale "(0.001 0.001 0.001)" >& log.transformPoints
solids4Foam::runApplication autoPatch 45 -overwrite
solids4Foam::runApplication createPatch -overwrite
solids4Foam::runApplication splitPatch -overwrite
solids4Foam::runApplication setSet -batch batch.setSet
solids4Foam::runApplication setsToZones
Running the case:
solids4Foam::runApplication solids4Foam