48 use element_mod ,
only :nixs
52#include "implicit_f.inc"
56#include "vect01_c.inc"
61 INTEGER,
INTENT(IN) :: IXS(NIXS,NUMELS)
62 my_real,
INTENT(IN) :: x(3,numnod)
63 INTEGER,
INTENT(IN) :: ITRIMAT
68 INTEGER :: , II, KK, IAD2, LGTH
71 my_real :: mat(3, 3), rhs(3), sol(3)
73 INTEGER :: FACE_TO_NODE_LOCAL_ID(6, 4)
74 my_real ::
norm(3), a(3), b(3), c(3), surf, surf1, surf2
81 face_to_node_local_id(1, 1) = 1 ; face_to_node_local_id(1, 2) = 4
82 face_to_node_local_id(1, 3) = 3 ; face_to_node_local_id(1, 4) = 2
84 face_to_node_local_id(2, 1) = 3 ; face_to_node_local_id(2, 2) = 4
85 face_to_node_local_id(2, 3) = 8 ; face_to_node_local_id(2, 4) = 7
87 face_to_node_local_id(3, 1) = 5 ; face_to_node_local_id(3, 2) = 6
88 face_to_node_local_id(3, 3) = 7 ; face_to_node_local_id(3, 4) = 8
90 face_to_node_local_id(4, 1) = 1 ; face_to_node_local_id(4, 2) = 2
91 face_to_node_local_id(4, 3) = 6 ; face_to_node_local_id(4, 4) = 5
93 face_to_node_local_id(5, 1) = 2 ; face_to_node_local_id(5, 2) = 3
96 face_to_node_local_id(6, 1) = 1 ; face_to_node_local_id(6, 2) = 5
97 face_to_node_local_id(6, 3) = 8 ; face_to_node_local_id(6, 4) = 4
102 mat(1:3, 1:3) = zero ; rhs(1:3) = zero
109 iad2 = ale_connect%ee_connect%iad_connect(ii)
110 lgth = ale_connect%ee_connect%iad_connect(ii+1)-iad2
112 vois_id = ale_connect%ee_connect%connected(iad2 + kk - 1)
114 IF (vois_id > 0)
THEN
121 IF(vois_id == 0)
THEN
125 vall = segvar%PHASE_ALPHA(itrimat,-vois_id)
131 a(1:3) = x(1:3, ixs(face_to_node_local_id(kk, 1) + 1, ii))
132 b(1:3) = x(1:3, ixs(face_to_node_local_id(kk, 2) + 1, ii))
133 c(1:3) = x(1:3, ixs(face_to_node_local_id(kk, 3) + 1, ii))
135 norm(1) = (b(2) - a(2)) * (c(3) - a(3)) - (b(3) - a(3)) * (c(2) - a(2))
136 norm(2) = (b(3) - a(3)) * (c(1) - a(1)) - (b(1) - a(1)) * (c(3) - a(3))
137 norm(3) = (b(1) - a(1)) * (c(2) - a(2)) - (b(2) - a(2)) * (c(1) - a(1))
140 xf = surf1 * third * (a(1) + b(1) + c(1))
141 yf = surf1 * third * (a(2) + b(2) + c(2))
142 zf = surf1 * third * (a(3) + b(3) + c(3))
144 a(1:3) = x(1:3, ixs(face_to_node_local_id(kk, 1) + 1, ii))
145 b(1:3) = x(1:3, ixs(face_to_node_local_id(kk, 3) + 1, ii))
146 c(1:3) = x(1:3, ixs(face_to_node_local_id(kk, 4) + 1, ii))
148 norm(1) = (b(2) - a(2)) * (c(3) - a(3)) - (b(3) - a(3)) * (c(2) - a(2))
149 norm(2) = (b(3) - a(3)) * (c(1) - a(1)) - (b(1) - a(1)) * (c(3) - a(3))
150 norm(3) = (b(1) - a(1)) * (c(2) - a(2)) - (b(2) - a(2)) * (c(1) - a(1))
153 xf = xf + surf2 * third * (a(1) + b(1) + c(1))
154 yf = yf + surf2 * third * (a(2) + b(2) + c(2))
155 zf = zf + surf2 * third * (a(3) + b(3) + c(3))
174 rhs(1) = rhs(1) + (valk - vall) * (xl - xk)
175 rhs(2) = rhs(2) + (valk - vall) * (yl - yk)
176 rhs(3) = rhs(3) + (valk - vall) * (zl - zk)
177 mat(1, 1) = mat(1, 1) + (xl - xk) * (xl - xk)
178 mat(1, 2) = mat(1, 2) + (xl - xk) * (yl - yk)
179 mat(1, 3) = mat(1, 3) + (xl - xk) * (zl - zk)
180 mat(2, 1) = mat(2, 1) + (yl - yk) * (xl - xk)
181 mat(2, 2) = mat(2, 2) + (yl - yk) * (yl - yk)
182 mat(2, 3) = mat(2, 3) + (yl - yk) * (zl - zk)
183 mat(3, 1) = mat(3, 1) + (zl - zk) * (xl - xk)
184 mat(3, 2) = mat(3, 2) + (zl - zk) * (yl - yk)
185 mat(3, 3) = mat(3, 3) + (zl - zk) * (zl - zk)
188 CALL cg(3, mat, rhs, sol, 3, em10)