BC in Cylindrical Coordinates

Hello all,

I have a simple solid cylindrical geometry and I want to apply boundary conditions in polar coordinates such as constraint the cylinder in the radial direction but set free in the tangential and axial direction. I have standard displacement as an independent variable.

V2 = VectorFunctionSpace(mesh, Element,2)
        

and I can define the polar coordinates as following form

r = Expression("sqrt(x[0]*x[0]+x[1]*x[1])")
theta = Expression("atan2(x[1],x[0])")

However, I have no idea about how it should be used in DirichletBC.

Since the “V2” is in cartesian coordinates when I try to define the Diricthlet BC as following

bc1 = DirichletBC(V2,??????,outer_bc)

where outer_bc is the outer cylindirical face of the cylinder. Any idea to solve this issue ? Thanks.

For more clear demonstration, I add an image

Where I want to define fixed boundary conditions on outer face along “r” (U_r) and leave free in “theta” and “z” directions.