29 1 X ,NSV ,MSR ,NSN ,NMN ,
30 2 ITASK ,XSAV ,NIN ,STFN ,V ,
31 3 XSLV_G ,XMSR_G ,VSLV_G ,VMSR_G ,PENE_OLD,
32 4 GAP_S ,GAPN_M ,DELTA_PMAX_GAP,PMAX_GAP,
33 5 EDGE_L2 ,ISEADD ,ISEDGE ,IEDGE ,DGAP_M ,
34 6 DELTA_PMAX_DGAP , INTPLY ,DELTA_PMAX_GAP_NODE,ITAB )
38#include "implicit_f.inc"
49 INTEGER NSN,NMN,ITASK,IEDGE, NIN,
50 . NSV(*),MSR(*),ISEADD(*) ,ISEDGE(*),INTPLY,DELTA_PMAX_GAP_NODE,ITAB(*)
52 . X(3,*), V(3,*), XSAV(3,*), STFN(*),PENE_OLD(5,),
53 . XSLV_G(*),XMSR_G(*), (*), VMSR_G(*),GAP_S(*),GAPN_M(*),
54 . EDGE_L2(*),DELTA_PMAX_GAP,PMAX_GAP,DGAP_M(*),DELTA_PMAX_DGAP
58 INTEGER ,NMNF,NSNL,NMNL,I, J, K, II, N,IAD,NES,JG,DELTA_PMAX_GAP_NODE_L
60 . XSLV(18),XMSR(12), VSLV(6), VMSR(6),DELTA_PMAX_GAP_L,PMAX_GAP_L,
61 . EDGE_L2_OLD,EDGE_L2_NEW,AAA,DELTA_L
69 delta_pmax_gap_l = zero
71 delta_pmax_gap_node_l=0
122 nsnf = 1 + itask*nsn / nthread
123 nsnl = (itask+1)*nsn / nthread
124 nmnf = 1 + itask*nmn / nthread
125 nmnl = (itask+1)*nmn / nthread
128 IF(nsn+nmn < numnod)
THEN
130#include "vectorize.inc"
133 IF(stfn(i)/=zero .AND. j<=numnod)
THEN
144 aaa = (x(1,jg)-x(1,j))*(x(1,jg)-x(1,j))
145 . + (x(2,jg)-x(2,j))*(x(2,jg)-x(2,j))
146 . + (x(3,jg)-x(3,j))*(x(3,jg)-x(3,j))
147 edge_l2_new =
max(edge_l2_new, aaa )
149 edge_l2_new = (half+em3)*sqrt(edge_l2_new)
150 edge_l2_old = edge_l2(i)
152 edge_l2(i) = edge_l2_new
155 delta_l=
max(pene_old(3,i),edge_l2_new)
156 . -
max(pene_old(4,i),edge_l2_old)
158 IF(delta_l > delta_pmax_gap_l)
THEN
159 delta_pmax_gap_node_l = j
160 delta_pmax_gap_l = delta_l
168 pmax_gap_l =
max(pmax_gap_l,edge_l2_new)
170 xslv(1) =
max(xslv(1),x(1,j)-xsav(1,i))
171 xslv(2) =
max(xslv(2),x(2,j)-xsav(2,i))
172 xslv(3) =
max(xslv(3),x(3,j)-xsav(3,i))
173 xslv(4) =
min(xslv(4),x(1,j)-xsav(1,i))
174 xslv(5) =
min(xslv(5),x(2,j)-xsav(2,i))
175 xslv(6) =
min(xslv(6),x(3,j)-xsav(3,i))
191 vslv(1)=
max(vslv(1),v(1,j))
192 vslv(2)=
max(vslv(2),v(2,j))
193 vslv(3)=
max(vslv(3),v(3,j))
194 vslv(4)=
min(vslv(4),v(1,j))
196 vslv(6)=
min(vslv(6),v(3,j))
199#include "vectorize.inc"
205 xmsr(1) =
max(xmsr(1),x(1,j)-xsav(1,ii))
206 xmsr(2) =
max(xmsr(2),x(2,j)-xsav(2,ii))
207 xmsr(3) =
max(xmsr(3),x(3,j)-xsav(3,ii))
208 xmsr(4) =
min(xmsr(4),x(1,j)-xsav(1,ii))
209 xmsr(5) =
min(xmsr(5),x(2,j)-xsav(2,ii))
210 xmsr(6) =
min(xmsr(6),x(3,j)-xsav(3,ii))
219 vmsr(1)=
max(vmsr(1),v(1,j))
220 vmsr(2)=
max(vmsr(2),v(2,j))
221 vmsr(3)=
max(vmsr(3),v(3,j))
222 vmsr(4)=
min(vmsr(4),v(1,j))
223 vmsr(5)=
min(vmsr(5),v(2,j))
224 vmsr(6)=
min(vmsr(6),v(3,j))
229#include
"vectorize.inc"
232 IF(stfn(i)/=zero .AND. j<=numnod)
THEN
243 aaa = (x(1,jg)-x(1,j))*(x(1,jg)-x(1,j))
244 . + (x(2,jg)-x(2,j))*(x(2,jg)-x(2,j))
245 . + (x(3,jg)-x(3,j))*(x(3,jg)-x(3,j))
246 edge_l2_new =
max(edge_l2_new, aaa )
248 edge_l2_new = (half+em3)*sqrt(edge_l2_new)
249 edge_l2_old = edge_l2(i)
251 edge_l2(i) = edge_l2_new
254 delta_l=
max(pene_old(3,i),edge_l2_new)
255 . -
max(pene_old(4,i),edge_l2_old)
256 IF(delta_l > delta_pmax_gap_l)
THEN
257 delta_pmax_gap_node_l = j
258 delta_pmax_gap_l = delta_l
266 pmax_gap_l =
max(pmax_gap_l,edge_l2_new)
268 xslv(1)=
max(xslv(1),x(1,j)-xsav(1,j))
269 xslv(2)=
max(xslv(2),x(2,j)-xsav(2,j))
270 xslv(3)=
max(xslv(3),x(3,j)-xsav(3,j))
271 xslv(4)=
min(xslv(4),x(1,j)-xsav(1,j))
272 xslv(5)=
min(xslv(5),x(2,j)-xsav(2,j))
273 xslv(6)=
min(xslv(6),x(3,j)-xsav(3,j))
289 vslv(1)=
max(vslv(1),v(1,j))
290 vslv(2)=
max(vslv(2),v(2,j))
291 vslv(3)=
max(vslv(3),v(3,j))
292 vslv(4)=
min(vslv(4),v(1,j))
293 vslv(5)=
min(vslv(5),v(2,j))
294 vslv(6)=
min(vslv(6),v(3,j))
299#include "vectorize.inc"
304 xmsr(1)=
max(xmsr(1),x(1,j)-xsav(1,j))
305 xmsr(2)=
max(xmsr(2),x(2,j)-xsav(2,j))
306 xmsr(3)=
max(xmsr(3),x(3,j)-xsav(3,j))
307 xmsr(4)=
min(xmsr(4),x(1,j)-xsav(1,j))
308 xmsr(5)=
min(xmsr(5),x(2,j)-xsav(2,j))
309 xmsr(6)=
min(xmsr(6),x(3,j)-xsav(3,j))
318 vmsr(1)=
max(vmsr(1),v(1,j))
319 vmsr(2)=
max(vmsr(2),v(2,j))
320 vmsr(3)=
max(vmsr(3),v(3,j))
321 vmsr(4)=
min(vmsr(4),v(1,j))
322 vmsr(5)=
min(vmsr(5),v(2,j))
323 vmsr(6)=
min(vmsr(6),v(3,j))
332 stfn(i)=
max(stfn(i),zero)
338 IF(delta_pmax_gap_l > delta_pmax_gap)
THEN
339 delta_pmax_gap=delta_pmax_gap_l
340 delta_pmax_gap_node=itab(delta_pmax_gap_node_l)
345 IF(intply > 0) delta_pmax_gap = delta_pmax_gap + delta_pmax_dgap
347 pmax_gap =
max(pmax_gap,pmax_gap_l)
349 xslv_g(1)=
max(xslv_g(1),xslv(1))
350 xslv_g(2)=
max(xslv_g(2),xslv(2))
351 xslv_g(3)=
max(xslv_g(3),xslv(3))
352 xslv_g(4)=
min(xslv_g(4),xslv(4))
353 xslv_g(5)=
min(xslv_g(5),xslv(5))
354 xslv_g(6)=
min(xslv_g(6),xslv(6))
370 xmsr_g(1)=
max(xmsr_g(1),xmsr(1))
371 xmsr_g(2)=
max(xmsr_g(2),xmsr(2))
372 xmsr_g(3)=
max(xmsr_g(3),xmsr(3))
373 xmsr_g(4)=
min(xmsr_g(4),xmsr(4))
374 xmsr_g(5)=
min(xmsr_g(5),xmsr(5))
375 xmsr_g(6)=
min(xmsr_g(6),xmsr(6))
384 vslv_g(1)=
max(vslv_g(1),vslv(1))
385 vslv_g(2)=
max(vslv_g(2),vslv(2))
386 vslv_g(3)=
max(vslv_g(3),vslv(3))
387 vslv_g(4)=
min(vslv_g(4),vslv(4))
388 vslv_g(5)=
min(vslv_g(5),vslv(5))
389 vslv_g(6)=
min(vslv_g(6),vslv(6))
390 vmsr_g(1)=
max(vmsr_g(1),vmsr(1))
391 vmsr_g(2)=
max(vmsr_g(2),vmsr(2))
392 vmsr_g(3)=
max(vmsr_g(3),vmsr(3))
393 vmsr_g(4)=
min(vmsr_g(4),vmsr(4))
394 vmsr_g(5)=
min(vmsr_g(5),vmsr(5))
395 vmsr_g(6)=
min(vmsr_g(6),vmsr(6))
397#include "lockoff.inc"