48#include "implicit_f.inc"
52#include "vect01_c.inc"
57 INTEGER,
INTENT(IN) :: NV46
58 INTEGER,
INTENT(IN) :: IXQ(NIXQ, NUMELQ)
59 my_real,
INTENT(IN) :: x(3, numnod)
60 INTEGER,
INTENT(IN) :: ITRIMAT
66 INTEGER :: I, II, KK, IAD2, LGTH
67 my_real :: yk, zk, yl, zl,yf, zf
69 my_real :: mat(2, 2), rhs(2), sol(2)
71 INTEGER :: FACE_TO_NODE_LOCAL_ID(4, 2), NODEID1, NODEID2
78 face_to_node_local_id(1, 1) = 1 ; face_to_node_local_id(1, 2) = 2
80 face_to_node_local_id(2, 1) = 2 ; face_to_node_local_id(2, 2) = 3
82 face_to_node_local_id(3, 1) = 3 ; face_to_node_local_id(3, 2) = 4
84 face_to_node_local_id(4, 1) = 4 ; face_to_node_local_id(4, 2) = 1
89 mat(1:2, 1:2) = zero ; rhs(1:2) = zero
95 iad2 = ale_connect%ee_connect%iad_connect(ii)
96 lgth = ale_connect%ee_connect%iad_connect(ii+1)-iad2
98 vois_id = ale_connect%ee_connect%connected(iad2 + kk - 1)
105 IF(vois_id == 0)
THEN
109 vall = segvar%PHASE_ALPHA(itrimat,-vois_id)
112 nodeid1 = ixq(1 + face_to_node_local_id(kk, 1), ii)
113 nodeid2 = ixq(1 + face_to_node_local_id(kk, 2), ii)
115 yf = half * (x(2, nodeid1) + x(2, nodeid2))
116 zf = half * (x(3, nodeid1) + x(3, nodeid2))
123 rhs(1) = rhs(1) + (valk - vall) * (yl - yk)
124 rhs(2) = rhs(2) + (valk - vall) * (zl - zk)
126 mat(1, 2) = mat(1, 2) + (yl - yk) * (zl
127 mat(2, 1) = mat(2, 1) + (zl - zk) * (yl - yk)
128 mat(2, 2) = mat(2, 2) + (zl - zk) * (zl - zk)
131 det = mat(1, 1) * mat(2, 2) - mat(2, 1) * mat(1, 2)
136 sol(1) = undet * (rhs(1) * mat(2,2) - rhs(2) * mat(1,2))
137 sol(2) = undet * (- mat(2,1) * rhs(1) + mat(1, 1) * rhs(2))
138 !!! Solution goes to the gradient
139 ALEMUSCL_Buffer%GRAD(II,2,ITRIMAT) = -sol(1)
140 ALEMUSCL_Buffer%GRAD(II,3,ITRIMAT) = -sol(2)