33 2 XLL ,CANDN ,CANDE ,I_STOK,IXS ,
34 3 IXS20 ,IADLL ,EMINX ,NSV ,NELEM ,
35 4 NC ,N_MUL_MX,ITASK ,A ,ITIED ,
36 5 NINT ,NKMAX ,EMINXS ,COMNTAG)
37 use element_mod ,
only : nixs
41#include "implicit_f.inc"
55 INTEGER NC,I_STOK,N_MUL_MX,ITASK,ITIED,NINT,NKMAX ,
56 . LLL(*),JLL(*),SLL(*),CANDN(*),CANDE(*),(*),
57 . IXS(NIXS,*),IXS20(12,*),IADLL(*),NSV(*) ,NELEM(*)
60 . x(3,*),v(3,*),xll(*),
61 . eminx(6,*),eminxs(6,*),a(3,*)
65 INTEGER I,K,IE,IS,IC,III(MVSIZ,21),LLT,NFT,LE,FIRST,LAST,
68 . XX(MVSIZ,21),YY(MVSIZ,21),ZZ(MVSIZ,21),
125 first = 1 + i_stok * itask / nthread
126 last = i_stok*(itask+1) / nthread
132 i20 = ie - numels8 - numels10
136 IF(i20.ge .1.AND.i20.le .numels20)
THEN
139 dist =
max(eminx(1,le)-x(1,is)-dt2*(v(1,is)+dt12*a(1,is)),
140 . x(1,is)+dt2*(v(1,is)+dt12*a(1,is))-eminx(4,le),dist)
141 dist =
max(eminx(2,le)-x(2,is)-dt2*(v(2,is)+dt12*a(2,is)),
142 . x(2,is)+dt2*(v(2,is)+dt12*a(2,is))-eminx(5,le),dist)
143 dist =
max(eminx(3,le)-x(3,is)-dt2*(v(3,is)+dt12*a(3,is)),
144 . x(3,is)+dt2*(v(3,is)+dt12*a(3,is))-eminx(6,le),dist)
159 iii(llt,k)=ixs(k+1,ie)
162 iii(llt,k+8)=ixs20(k,i20)
175 1 llt ,lll ,jll ,sll ,xll ,v ,
176 2 xx ,yy ,zz ,iii ,nc ,iadll ,
177 3 n_mul_mx ,a ,x ,itied ,nint ,nkmax ,
192 1 llt ,lll ,jll ,sll ,xll ,v ,
193 2 xx ,yy ,zz ,iii ,nc ,iadll ,
194 3 n_mul_mx ,a ,x ,itied ,nint ,nkmax ,
211 SUBROUTINE i21lll(LLT ,LLL ,JLL ,SLL ,XLL ,V ,
212 2 XX ,YY ,ZZ ,III ,NC ,IADLL ,
213 3 N_MUL_MX,A ,X ,ITIED,NINT ,NKMAX ,
222#include "implicit_f.inc"
223#include "comlock.inc"
227#include "mvsiz_p.inc"
231#include "com08_c.inc"
235 INTEGER LLT,NC,N_MUL_MX,ITIED,NINT ,NKMAX
236 INTEGER LLL(*),JLL(*),SLL(*),COMNTAG(*),
237 . III(MVSIZ,21),IADLL(*)
240 . XLL(*),V(3,*),A(3,*)
242 . xx(mvsiz,21),yy(mvsiz,21),zz(mvsiz,21),x(3,*)
246 INTEGER I,IK,NK,IAD,NN
250 . r(mvsiz),s(mvsiz),t(mvsiz),
251 . nsx(mvsiz), nsy(mvsiz), nsz(mvsiz),
252 . nx(mvsiz), ny(mvsiz), nz(mvsiz),
260 CALL i20rst(llt ,r ,s ,t ,ni ,
261 2 nsx ,nsy ,nsz ,nx ,ny ,nz ,
271 IF(r(i)>=-one.AND.s(i)>=-one.AND.t(i)>=-one.AND.
272 . r(i)<= one.AND.s(i)<= one.AND.t(i)<= one)
THEN
279 vx = vx - (v(1,iii(i,ik))+dt12*a(1,iii(i,ik)))*ni(i,ik)
280 vy = vy - (v(2,iii(i,ik))+dt12*a(2,iii(i,ik)))*ni(i,ik)
281 vz = vz - (v(3,iii(i,ik))+dt12*a(3,iii(i,ik)))*ni(i,ik)
287 vn = nsx(i)*vx + nsy(i)*vy + nsz(i)*vz
291 IF(s(i)*vn<=zero)
THEN
297 aa = one/sqrt(nsx(i)*nsx(i)+nsy(i)*nsy(i)+nsz(i)*nsz(i))
304#include "lockoff.inc"
305 CALL ancmsg(msgid=84,anmode=aninfo)
308 iadll(nc+1)=iadll(nc) + 63
309 IF(iadll(nc+1)-1>nkmax)
THEN
310#include "lockoff.inc"
311 CALL ancmsg(msgid=84,anmode=aninfo)
316 lll(iad+ik) = iii(i,ik)
319 xll(iad+ik) = nsx(i)*ni(i,ik)
320 lll(iad+ik+21) = iii(i,ik)
323 xll(iad+ik+21) = nsy(i)*ni(i,ik)
324 lll(iad+ik+42) = iii(i,ik)
327 xll(iad+ik+42) = nsz(i)*ni(i,ik)
329 comntag(nn) = comntag(nn) + 1
334#include "lockoff.inc"
346 IF(r(i)>=-one.AND.s(i)>=-one.AND.t(i)>=-one.AND.
347 . r(i)<= one.AND.s(i)<= one.AND.t(i)<= one)
THEN
354 vx = vx - (v(1,iii(i,ik))+dt12*a(1,iii(i,ik)))*ni(i,ik)
355 vy = vy - (v(2,iii(i,ik))+dt12*a(2,iii(i,ik)))*ni(i,ik)
356 vz = vz - (v(3,iii(i,ik))+dt12*a(3,iii(i,ik)))*ni(i,ik)
362 vn = nx(i)*vx + ny(i)*vy + nz(i)*vz
372 IF(nc+3>n_mul_mx)
THEN
373#include "lockoff.inc"
374 CALL ancmsg(msgid=84,anmode=aninfo)
377 IF(iadll(nc+1)-1+21*3>nkmax)
THEN
378#include "lockoff.inc"
379 CALL ancmsg(msgid=84,anmode=aninfo)
384 iadll(nc+1)=iadll(nc) + 21
387 lll(iad+ik) = iii(i,ik)
390 xll(iad+ik) = ni(i,ik)
392 comntag(nn) = comntag(nn)
397 iadll(nc+1)=iadll(nc) + 21
400 lll(iad+ik) = iii(i,ik)
403 xll(iad+ik) = ni(i,ik)
405 comntag(nn) = comntag(nn) + 1
410 iadll(nc+1)=iadll(nc) + 21
413 lll(iad+ik) = iii(i,ik)
416 xll(iad+ik) = ni(i,ik)
418 comntag(nn) = comntag(nn) + 1
421#include "lockoff.inc"
433 IF(r(i)>=-one.AND.s(i)>=-one.AND.t(i)>=-one.AND.
434 . r(i)<= one.AND.s(i)<= one.AND.t(i)<= one)
THEN
441 IF(nc+3>n_mul_mx)
THEN
442#include "lockoff.inc"
443 CALL ancmsg(msgid=84,anmode=aninfo)
446 IF(iadll(nc+1)-1+21*3>nkmax)
THEN
447#include "lockoff.inc"
448 CALL ancmsg(msgid=84,anmode=aninfo)
452 iadll(nc+1)=iadll(nc) + 21
455 lll(iad+ik) = iii(i,ik)
458 xll(iad+ik) = ni(i,ik)
460 comntag(nn) = comntag(nn) + 1
465 iadll(nc+1)=iadll(nc) + 21
468 lll(iad+ik) = iii(i,ik)
471 xll(iad+ik) = ni(i,ik)
473 comntag(nn) = comntag(nn) + 1
478 iadll(nc+1)=iadll(nc) + 21
481 lll(iad+ik) = iii(i,ik)
484 xll(iad+ik) = ni(i,ik)
486 comntag(nn) = comntag(nn) + 1
490#include "lockoff.inc"
subroutine i21lagm(x, v, lll, jll, sll, xll, candn, cande, i_stok, ixs, ixs20, iadll, eminx, nsv, nelem, nc, n_mul_mx, itask, a, itied, nint, nkmax, eminxs, comntag)
subroutine i21lll(llt, lll, jll, sll, xll, v, xx, yy, zz, iii, nc, iadll, n_mul_mx, a, x, itied, nint, nkmax, comntag)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)