37 2 ALE_NN_CONNECT ,NALE ,NODFT , NODLT ,
38 3 NBRCVOIS ,NBSDVOIS,LNRCVOIS, LNSDVOIS,
39 4 SKEW ,ISKEW ,ICODT )
65#include "implicit_f.inc"
73#include "tabsiz_c.inc"
82 INTEGER NALE(NUMNOD), NODFT, NODLT,
83 . NBRCVOIS(*),NBSDVOIS(*),
84 . LNRCVOIS(*),LNSDVOIS(*),ISKEW(*),ICODT(*)
85 my_real X(3,SX/3),V(3,SV/3), W(3,SW/3), WA(3,*), SKEW(LSKEW,*)
90 INTEGER I, LENCOM, K, ITER,NITER,NUM
91 my_real VEC(3),LAMBDA,IFORM, WEIGHT(6),SOM,SOM2,MIN_DIST,MAX_DIST
92 my_real,
DIMENSION(:),
ALLOCATABLE :: DIST
93 INTEGER :: IAD, IAD1, IAD2, NODE_ID
98 niter=nint(
ale%GRID%VGX)
99 iform=nint(
ale%GRID%GAMMA)
101 wa(1:3,nodft:nodlt)=x(1:3,nodft:nodlt)
108 lencom = nbrcvois(nspmd+1)+nbsdvois(nspmd+1)
109 CALL spmd_xvois(wa ,nbrcvois,nbsdvois,lnrcvois,lnsdvois,lencom)
116 IF(iabs(nale(i)) == 1)
THEN
117 iad1 = ale_nn_connect%IAD_CONNECT(i)
118 iad2 = ale_nn_connect%IAD_CONNECT(i + 1) - 1
123 node_id = ale_nn_connect%CONNECTED(iad)
124 vec(1) = vec(1) + wa(1, node_id)
125 vec(2) = vec(2) + wa(2, node_id)
126 vec(3) = vec(3) + wa(3, node_id)
129 vec(1) = vec(1) / num - wa(1,i)
130 vec(2) = vec(2) / num - wa(2,i)
131 vec(3) = vec(3) / num - wa(3,i)
135 w(1,i) = wa(1,i) + lambda * vec(1)
136 w(2,i) = wa(2,i) + lambda * vec(2)
137 w(3,i) = wa(3,i) + lambda * vec(3)
145 ELSEIF(iform == 2)
THEN
148 IF(iabs(nale(i)) == 1)
THEN
149 iad1 = ale_nn_connect%IAD_CONNECT(i)
150 iad2 = ale_nn_connect%IAD_CONNECT(i + 1) - 1
153 ALLOCATE(dist(iad2 - iad1 + 1))
156 node_id = ale_nn_connect%CONNECTED(iad)
157 vec(1) = wa(1,node_id) - wa(1,i)
158 vec(2) = wa(2,node_id) - wa(2,i)
159 vec(3) = wa(3,node_id) - wa(3,i)
160 dist(iad) = sqrt(vec(1)*vec(1)+vec(2)*vec(2)+vec(3)*vec(3))
163 som = sum(dist(1:num))
166 max_dist = maxval(dist(1:num))
169 som2 = som2 + one / dist(k)
173 weight(k)=dist(k)/som
177 node_id = ale_nn_connect%CONNECTED(iad)
178 vec(1) = vec(1) + weight(k) * (wa(1,node_id) - wa(1,i))
179 vec(2) = vec(2) + weight(k) * (wa(2,node_id) - wa(2,i))
180 vec(3) = vec(3) + weight(k) * (wa(3,node_id) - wa(3,i))
185 w(1,i) = wa(1,i) + lambda * vec(1)
186 w(2,i) = wa(2,i) + lambda * vec(2)
187 w(3,i) = wa(3,i) + lambda * vec(3)
199 wa(1:3,nodft:nodlt)=w(1:3,nodft:nodlt)
205 IF(iabs(nale(i)) == 1 .AND. dt2 > zero)
THEN
206 w(1,i)=(wa(1,i)-x(1,i))/dt2
207 w(2,i)=(wa(2,i)-x(2,i))/dt2
208 w(3,i)=(wa(3,i)-x(3,i))/dt2
209 ELSEIF(nale(i) == 0)
THEN