### Raviart-Thomas BC.

370
views
1
8 months ago by
Dear community,

I am new to fenics and I would like to use it in order to solve a linear elastic problem with least-square finite elements.
As far as I know, Raviart-Thomas essential bc on the stresses  are evaluated along the normal direction. Since RT are vector finite elements, in 2D I should have only two coefficients as unknowns, one for the first raw of the stress tensor, the other one for the second raw.
Anyhow it seems I need to specify all the four components of the stress tensor. For example, in the following j must have four components and not the two that should correspond to the external force on the boundary (Fx,Fy).
Could you explain me why it is like this and how fenics deals with this kind of boundary condition? Do the four components really correspond to the single stress components?

# definition of P1 and RT elements vector finite elements
fe2DP1 = VectorElement("P",mesh.ufl_cell(),2)
fe2DRT = VectorElement("RT",mesh.ufl_cell(),1)
feW  = MixedElement([fe2DRT,fe2DP1])
W = FunctionSpace(mesh, feW)
w = Function(W)
# boundary condition on RT space
j = Expression((("0.000","0.001"),("0.00","0.000")),degree=5)
bc = DirichletBC(W.sub(0), j, boundary_T)
Community: FEniCS Project

1
8 months ago by
FEniCS applies essential boundary conditions by evaluating the degrees of freedom (nodes) on the given function (the Expression j in this case). For Raviart-Thomas (and BDM, Nedelec etc) elements, the degrees of freedom are defined on vector fields. In particular, the degrees of freedom are typically average or point-wise normal components. Hence, yes, this is why you need to prescribe a vector (field) as a prescribed value to a Raviart-Thomas element, and a tensor (field) as a prescribed value to a vector Raviart-Thomas element.
Dear Marie,

Given a rectangular beam in 2D, with zero displacement on the left and free load on bottom and top, I would like to apply a compression on the right. Let σ be the stress tensor, ν the external normal and f the boundary force. Then what I would like to apply is σ ν= f, but in a strong/essential form. How can I do this in fenics?

Furthermore I have a doubt about the application of boundary conditions. It seems that the bc are somehow overwritten. If I write them like this:

bc1 = DirichletBC(W.sub(1), g, boundary_L)
bc2 = DirichletBC(W.sub(0), h, boundary_B)
bc4 = DirichletBC(W.sub(0), h, boundary_T)
bc3 = DirichletBC(W.sub(0), j, boundary_R)

bcs=[bc1,bc2,bc4,bc3]

or like this:

bc1 = DirichletBC(W.sub(1), g, boundary_L)
bc2 = DirichletBC(W.sub(0), h, boundary_B)
bc3 = DirichletBC(W.sub(0), j, boundary_R)
bc4 = DirichletBC(W.sub(0), h, boundary_T)

bcs=[bc1,bc2,bc3,bc4]

so changing the position of 3 and 4, I obtain two different result. In the last one, the bc are not seen. Any hint regarding this?

Thank you again
written 8 months ago by Garo