36 use element_mod ,
only : nixc
40#include "implicit_f.inc"
52 INTEGER,
INTENT(IN) :: (NIXC,NUMELC),NEL,JFT,JLT,NFT
53 my_real,
INTENT(IN) :: x(3,numnod)
54 TYPE (ELBUF_STRUCT_),
INTENT(INOUT),
TARGET :: ELBUF_STR
58 INTEGER I,J,K,N1,N2,N3,N4,POS,POS_B,NEL_L,CORES(MVSIZ+1),FLAG,NODE_CORES_DIR2(4)
61 TYPE(g_bufel_) ,
POINTER :: GBUF
64 gbuf => elbuf_str%GBUF
72#include "vectorize.inc"
74 flag =
min(1,abs(gbuf%UPDATE(i)))
76 cores(1+nel_l*flag) = i
85 IF (gbuf%UPDATE(i) /= zero)
THEN
87 IF (gbuf%ADD_NODE(i) == ixc(3,j))
THEN
89 node_cores_dir2(1) = 4
90 node_cores_dir2(2) = 3
91 node_cores_dir2(3) = 2
92 node_cores_dir2(4) = 1
95 node_cores_dir2(1) = 2
96 node_cores_dir2(2) = 1
98 node_cores_dir2(4) = 3
101 pos = abs(gbuf%UPDATE(i))
102 pos_b = node_cores_dir2(pos)
104 n2 = gbuf%ADD_NODE(nel*pos+i)
106 n4 = gbuf%ADD_NODE(nel*pos_b+i)
108 dist = sqrt(
max(em20,(x(1,n1)-x(1,n2))**2+(x(2,n1)-x(2,n2))**2+(x(3,n1)-x(3,n2))**2))
109 distb = sqrt(
max(em20,(x(1,n3)-x(1,n4))**2+(x(2,n3)-x(2,n4))**2+(x(3,n3)-x(3,n4))**2))
110 dist =
min(dist,distb)
111 gbuf%INTVAR(i) = log(one + 1.72*dist/gbuf%INTVAR(nel+i))
112 gbuf%INTVAR(i) =
max(zero,gbuf%INTVAR(i))
113 gbuf%INTVAR(i) =
min(one,gbuf%INTVAR(i))