Dear all,
I am working on adding a three-node flat shell element for general 3D linear-elastic static analysis of shells with small deformations into FEAP as an user element. The shell element has 6 degrees of freedom (DOF) per node (u, v, w, t_x, t_y, t_z) and is formed with 2 independent parts: in-plane membrane element with drilling DOF (u, v, t_z) and out-of-plane Mindlin plate bending element (w, t_x, t_y). u, v and z are displacements in x, y and z directions, while t_x, t_y, t_z are rotations which can be represented as rotation vectors oriented positively in x, y and z directions by following a right-hand rule, respectively.
Stiffness matrix of the element is formed in a local 2D system (element plane), so transformations are needed in order for the element to work in general 3D shell problems. For that, I have utilized FEAP subroutines tran3d and rots3d. trans3d subroutine is called in the beginning so global 3D coordinates (xl) can be transformed into local 2D coordinates (yl), while rots3d subroutine is called at the end so the stiffness matrix can be transformed back into the global system.
To see if these two subroutines can be used for the element in question, I have prepared an arbitrary 2D shell problem in x-y plane subjected to in and out-of-plane loading to test if I get the same results with or without these transformation subroutines.
Turns out that the results are different, and the difference is only in the DOFs corresponding to the membrane part. To investigate this, I took a closer look into the stiffness matrix and found out that there is a difference in the rows/columns corresponding to the drilling DOFs (t_z).
Next, I have set the membrane part to be the CST element (Constant Strain Triangle - no drilling DOFs), and the results between the aforementioned cases are now equal.
It seems to me that the tran3d and/or rots3d subroutine(s) are/is treating the drilling DOFs in a different way than other DOFs. Before I go any deeper in understanding the code of the transformation subroutines, does anyone have any explanation regarding the issue?