6. 3D Solid Mechanics#
Michael Neunteufel, Astrid Pechstein
The equations of elasticity describe the deformation of solids due to applied forces. The treatment by the finite element method is very similar.
We consider several different formulations for a simple model problem introduced below.
from netgen.occ import *
from ngsolve import *
from ngsolve.webgui import Draw
box = Box((0, 0, 0), (3, 0.6, 1))
box.faces.name = "outer"
cyl = sum([Cylinder((0.5 + i, 0, 0.5), Y, 0.25, 0.8) for i in range(3)])
cyl.faces.name = "cyl"
geo = box - cyl
ea = {"euler_angles": [-70, 5, 30]}
scene = Draw(geo, **ea);
find edges between box and cylinder, and build chamfers:
cylboxedges = geo.faces["outer"].edges * geo.faces["cyl"].edges
cylboxedges.name = "cylbox"
geo = geo.MakeChamfer(cylboxedges, 0.03)
Draw(geo, **ea);
name faces for boundary conditions:
geo.faces.Min(X).name = "fix"
geo.faces.Max(X).name = "force"
Draw(geo, **ea);
mesh = Mesh(OCCGeometry(geo).GenerateMesh(maxh=0.1)).Curve(3)
Draw(mesh, **ea);
The model problem: the body is fixed at the left hand boundary “fix”, an external force \(\vec t\) is applied to the left hand boundary “force”. Otherwise, the body is elastic; different setups are considered.