Boundary Conditions ur=0 uz=0 but not u_theta


I want to simulate a bar with a cylindrical hole in its middle, rotating around its z axis taking into account the centrifugal forces. The mathematical solution of the problem is not a problem for me. Now I have to impose boundary conditions for the displacement u. I want to fix ur=0 and uz=0 on my inner cylinder (cylindrical hole). I know that there are dirichletx,y,z conditions but I can’t find a solution in cylindrical.

Thanks a lot!

You can implement this using a penalty method for enforcing the dirichlet constraint in radial direction (uz = 0 you can enforce by dirichletz=bc)

Just add a term

# some high penalty value
pen = 1e6
n = specialcf.normal(mesh.dim)
a += pen * (u*n) * (v*n) * ds(cyl_boundary)

(if you want to do transient computations you would have to transform the normal with the displacement for further timesteps).