Strain zz-component boundary condition in plane stress problems

Dear community,

I am solving a 2D plane stress problem. One thing I would like to try is to implement the boundary condition in which the zz component of the strain is zero (\epsilon_{zz}(R_2)=0). What would I need to add or change in the code snippet shown below if the boundary has the mesh tag shown in the snippet?

boundary_tag = 2   # this is the mesh boundary tag

T = fem.Constant(domain, default_scalar_type((0, 0)))
ds = ufl.Measure("ds", domain=domain)

def epsilon(u):
    return ufl.sym(ufl.grad(u))  # Equivalent to 0.5*(ufl.nabla_grad(u) + ufl.nabla_grad(u).T)


def sigma(u):
    return lambda_ * ufl.nabla_div(u) * ufl.Identity(len(u)) + 2 * mu * epsilon(u)

u = ufl.TrialFunction(V)
v = ufl.TestFunction(V)
a = ufl.inner(sigma(u), epsilon(v)) * ufl.dx
L = ufl.dot(f, v) * ufl.dx + ufl.dot(T, v) * ds

Regards,
Jorge

I’m not really familiar with solid mechanics formulations, however there’s an excellent set of tutorials from @bleyerj here which may help.

1 Like

It is not possible to impose \epsilon_{zz}=0 as a boundary condition. What is the context in which you would like to enforce this ?

A spinning polytrope hollow disk whose solution makes sense in the plane strain approximation but doesn’t in the plane stress case. It gets messed up in the outer boundary, and the idea is to make the zz-strain 0 there.