hi, I’m currently using this example to account for compressive and tensile forces in the cohesive model Cohesive zone modeling restricted to an interface — Computational Mechanics Numerical Tours with FEniCSx.
Consider a very simple case consisting of two blocks. The upper block is numbered 2, and the lower block is numbered 1. A vertical displacement is applied to block 2.
In the previous code, the following line was added to calculate the normal relative displacement.
def normal_opening(v, n):
opening = ufl.max_value(0.0,ufl.dot(v,n))
However, I’ve noticed an issue: the direction of the normal vector seems to be incorrect. The calculation of the normal displacement is as follows: (u2(+)-u1(-))*facetnormal(-). When I make changes to the positive directions of these three quantities, I’ve found the following problems
when using:
(u2(+)-u1(-))*facetnormal(-)
(u2(-)-u1(-))*facetnormal(-)
the results seem to be right
but when:
(u2(+)-u1(-))*facetnormal(+)
(u2(-)-u1(-))*facetnormal(+)
The normal direction is constantly in a damaged state, which indicates that it is in a compression process, suggesting that there is an issue with the direction of the normal vector. The load - displacement curves are shown in the following two figures. This seems to contradict the way the positive and negative directions are written in this paper.