33 2 XLL ,CANDN ,CANDE ,I_STOK,IXS ,
34 3 IXS10 ,IADLL ,EMINX ,NSV ,NELEM ,
35 4 N_MUL_MX,ITASK ,A ,ITIED ,
36 5 NINT ,NKMAX ,COMNTAG )
37 use element_mod ,
only : nixs
41#include "implicit_f.inc"
55 INTEGER I_STOK,N_MUL_MX,ITASK,ITIED,NINT,NKMAX ,
56 . LLL(*),JLL(*),SLL(*),CANDN(*),CANDE(*),COMNTAG(*),
57 . IXS(NIXS,*),IXS10(6,*),IADLL(*),NSV(*) ,NELEM(*)
60 . x(3,*),v(3,*),xll(*),
65 INTEGER I, K, IE, IS, IC, III(MVSIZ, 7), LLT, NFT, LE, FIRST, LAST,
68 . XX(MVSIZ,7),YY(MVSIZ,7),ZZ(MVSIZ,7),
125 first = 1 + i_stok * itask / nthread
126 last = i_stok*(itask+1) / nthread
136 IF(i10.ge .1.AND.i10.le .numels10)
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)
149 IF(dist.le .zero)
THEN
163 iii(llt,k+8)=ixs10(k,i10)
177 1 llt ,lll ,jll ,sll ,xll ,v ,
178 2 xx ,yy ,zz ,iii ,iadll ,
179 3 n_mul_mx ,a ,x ,itied ,nint ,nkmax ,
194 1 llt ,lll ,jll ,sll ,xll ,v ,
195 2 xx ,yy ,zz ,iii ,iadll ,
196 3 n_mul_mx ,a ,x ,itied ,nint ,nkmax ,
213 SUBROUTINE i10lll(LLT ,LLL ,JLL ,SLL ,XLL ,V ,
214 2 XX ,YY ,ZZ ,III ,IADLL ,
215 3 N_MUL_MX,A ,X ,ITIED,NINT ,NKMAX ,
224#include "implicit_f.inc"
225#include "comlock.inc"
229#include "mvsiz_p.inc"
233#include "com08_c.inc"
234 COMMON /lagglob/n_mult
239 INTEGER LLT,N_MUL_MX,ITIED,NINT ,NKMAX
240 INTEGER LLL(*),JLL(*),SLL(*),COMNTAG(*),
241 . iii(mvsiz,7),iadll(*)
244 . xll(*),v(3,*),a(3,*)
246 . xx(mvsiz,7),yy(mvsiz,7),zz(mvsiz,7),x(3,*)
250 INTEGER I, IK, NK, IAD, NN
254 . r(mvsiz),s(mvsiz),t(mvsiz),
255 . nx(mvsiz), ny(mvsiz), nz(mvsiz),
263 CALL i10rst(llt ,r ,s ,t ,ni ,
264 2 nx ,ny ,nz ,xx ,yy ,zz )
273 IF(r(i)>=-one.AND.s(i)>=-one.AND.t(i)>=-one.AND.
274 . r(i)<= one.AND.s(i)<= one.AND.t(i)<= one)
THEN
281 vx = vx - (v(1,iii(i,ik))+dt12*a(1,iii(i,ik)))*ni(i,ik)
282 vy = vy - (v(2,iii(i,ik))+dt12*a(2,iii(i,ik)))*ni(i,ik)
283 vz = vz - (v(3,iii(i,ik))+dt12*a(3,iii(i,ik)))*ni(i,ik)
287 vn = nx(i)*vx + ny(i)*vy + nz(i)*vz
291 IF(s(i)*vn<=zero)
THEN
296 aa = one/sqrt(nx(i)*nx(i)+ny(i)*ny(i)+nz(i)*nz(i))
302 IF(n_mult>n_mul_mx)
THEN
303#include "lockoff.inc"
304 CALL ancmsg(msgid=84,anmode=aninfo)
307 iadll(n_mult+1)=iadll(n_mult) + 21
308 IF(iadll(n_mult+1)-1>nkmax)
THEN
309#include "lockoff.inc"
310 CALL ancmsg(msgid=84,anmode=aninfo)
313 iad = iadll(n_mult) - 1
315 lll(iad+ik) = iii(i,ik)
318 xll(iad+ik) = nx(i)*ni(i,ik)
319 lll(iad+ik+7) = iii(i,ik)
322 xll(iad+ik+7) = ny(i)*ni(i,ik)
323 lll(iad+ik+14) = iii(i,ik)
326 xll(iad+ik+14) = nz(i)*ni(i,ik)
328 comntag(nn) = comntag(nn) + 1
333#include "lockoff.inc"
345 IF(r(i)>=-one.AND.s(i)>=-one.AND.t(i)>=-one.AND.
346 . r(i)<= one.AND.s(i)<= one.AND.t(i)<= one)
THEN
353 vx = vx - (v(1,iii(i,ik))+dt12*a(1,iii(i,ik)))*ni(i,ik)
354 vy = vy - (v(2,iii(i,ik))+dt12*a(2,iii(i,ik)))*ni(i,ik)
355 vz = vz - (v(3,iii(i,ik))+dt12*a(3,iii(i,ik)))*ni(i,ik)
361 vn = nx(i)*vx + ny(i)*vy + nz(i)*vz
365 IF(s(i)*vn<=zero)
THEN
371 IF(n_mult+3>n_mul_mx)
THEN
372#include "lockoff.inc"
373 CALL ancmsg(msgid=84,anmode=aninfo)
376 IF(iadll(n_mult+1)-1+7*3>nkmax)
THEN
377#include "lockoff.inc"
378 CALL ancmsg(msgid=84,anmode=aninfo)
383 iadll(n_mult+1)=iadll(n_mult) + 7
384 iad = iadll(n_mult) - 1
386 lll(iad+ik) = iii(i,ik)
389 xll(iad+ik) = ni(i,ik)
391 comntag(nn) = comntag(nn) + 1
396 iadll(n_mult+1)=iadll(n_mult) + 7
397 iad = iadll(n_mult) - 1
399 lll(iad+ik) = iii(i,ik)
402 xll(iad+ik) = ni(i,ik)
404 comntag(nn) = comntag(nn) + 1
409 iadll(n_mult+1)=iadll(n_mult) + 7
410 iad = iadll(n_mult) - 1
412 lll(iad+ik) = iii(i,ik)
415 xll(iad+ik) = ni(i,ik)
417 comntag(nn) = comntag(nn) + 1
420#include "lockoff.inc"
432 IF(r(i)>=-one.AND.s(i)>=-one.AND.t(i)>=-one.AND.
433 . r(i)<= one.AND.s(i)<= one.AND.t(i)<= one)
THEN
440 IF(n_mult+3>n_mul_mx)
THEN
441#include "lockoff.inc"
442 CALL ancmsg(msgid=84,anmode=aninfo)
445 IF(iadll(n_mult+1)-1+7*3>nkmax)
THEN
446#include "lockoff.inc"
447 CALL ancmsg(msgid=84,anmode=aninfo)
451 iadll(n_mult+1)=iadll(n_mult) + 7
452 iad = iadll(n_mult) - 1
454 lll(iad+ik) = iii(i,ik)
457 xll(iad+ik) = ni(i,ik)
459 comntag(nn) = comntag(nn) + 1
464 iadll(n_mult+1)=iadll(n_mult) + 7
465 iad = iadll(n_mult) - 1
467 lll(iad+ik) = iii(i,ik)
470 xll(iad+ik) = ni(i,ik)
472 comntag(nn) = comntag(nn) + 1
477 iadll(n_mult+1)=iadll(n_mult) + 7
478 iad = iadll(n_mult) - 1
480 lll(iad+ik) = iii(i,ik)
483 xll(iad+ik) = ni(i,ik)
485 comntag(nn) = comntag(nn) + 1
489#include "lockoff.inc"
509 2 NX ,NY ,NZ ,XX ,YY ,ZZ )
513#include "implicit_f.inc"
517#include "mvsiz_p.inc"
524 . XX(MVSIZ,7),YY(MVSIZ,7),ZZ(MVSIZ,7)
526 . (MVSIZ),S(MVSIZ),T(MVSIZ),NI(MVSIZ,7) ,
527 . NX(MVSIZ),NY(MVSIZ),NZ(MVSIZ)
531 INTEGER I, ITER, NITERMAX, JTER, NJTERMAX, CONV
533 . drdx(mvsiz),drdy(mvsiz),drdz(mvsiz),
534 . dsdx(mvsiz),dsdy(mvsiz),dsdz(mvsiz),
535 . dtdx(mvsiz),dtdy(mvsiz),dtdz(mvsiz),
536 . dxdr(mvsiz),dydr(mvsiz),dzdr(mvsiz),
537 . dxdt(mvsiz),dydt(mvsiz),dzdt(mvsiz),
538 . rr(mvsiz),ss(mvsiz),tt(mvsiz)
588 CALL i10deri(llt,rr ,ss ,tt ,ni ,
589 2 drdx ,drdy ,drdz ,dsdx ,dsdy ,dsdz ,
590 3 dtdx ,dtdy ,dtdz ,dxdr ,dydr ,dzdr ,
591 4 dxdt ,dydt ,dzdt ,xx ,yy ,zz )
600 CALL i10rstn(llt,rr,ss ,tt ,ni ,conv ,
601 2 drdx ,drdy ,drdz ,dsdx ,dsdy ,dsdz ,
602 3 dtdx ,dtdy ,dtdz ,xx ,yy ,zz ,
611 CALL i10ni(llt,rr ,ss ,tt ,ni )
619 nx(i) = dydt(i)*dzdr(i) - dzdt(i)*dydr(i)
620 ny(i) = dzdt(i)*dxdr(i) - dxdt(i)*dzdr(i)
621 nz(i) = dxdt(i)*dydr(i) - dydt(i)*dxdr(i)
631 SUBROUTINE i10ni(LLT,RR ,SS ,TT ,NI )
635#include "implicit_f.inc"
639#include "mvsiz_p.inc"
645 . RR(MVSIZ),SS(MVSIZ),TT(MVSIZ),NI(,7)
651 . u_m_r,u_p_r,u_m_s,u_p_s,u_m_t,u_p_t,
652 . ums_umt,ums_upt,ups_umt,ups_upt,
653 . umr_ums,umr_ups,upr_ums,upr_ups,
654 . umt_umr,umt_upr,upt_umr,upt_upr,
674 ums_umt = u_m_s * u_m_t
675 ums_upt = u_m_s * u_p_t
676 ups_umt = u_p_s * u_m_t
677 ups_upt = u_p_s * u_p_t
679 umr_ums = u_m_r * u_m_s
680 umr_ups = u_m_r * u_p_s
681 upr_ums = u_p_r * u_m_s
682 upr_ups = u_p_r * u_p_s
684 umt_umr = u_m_t * u_m_r
685 umt_upr = u_m_t * u_p_r
686 upt_umr = u_p_t * u_m_r
687 upt_upr = u_p_t * u_p_r
690 ni(i,1) = u_m_r * ums_umt * a
691 ni(i,2) = u_m_r * ums_upt * a
692 ni(i,3) = u_p_r * ums_upt * a
693 ni(i,4) = u_p_r * ums_umt * a
694 ni(i,5) = u_m_r * ups_umt * a
695 ni(i,6) = u_m_r * ups_upt * a
709 2 DRDX ,DRDY ,DRDZ ,DSDX ,DSDY ,DSDZ ,
710 3 DTDX ,DTDY ,DTDZ ,XX ,YY ,ZZ ,
720#include "mvsiz_p.inc"
721#include "constant.inc"
727 . r(mvsiz),s(mvsiz),t(mvsiz),ni(mvsiz,7) ,
728 . rr(mvsiz),ss(mvsiz),tt(mvsiz),
729 . xx(mvsiz,7) ,yy(mvsiz,7) ,zz(mvsiz,7) ,
730 . drdx(mvsiz),drdy(mvsiz),drdz(mvsiz),
731 . dsdx(mvsiz),dsdy(mvsiz),dsdz(mvsiz),
732 . dtdx(mvsiz),dtdy(mvsiz),dtdz(mvsiz)
738 . dx ,dy,dz,dr ,ds,dt,err
745 + - ni(i, 1)*xx(i, 1) - ni(i, 2)*xx(i, 2) - ni(i, 3)*xx(i, 3)
746 + - ni(i, 4)*xx(i, 4) - ni(i, 5)*xx(i, 5) - ni(i, 6)*xx(i, 6)
748 + - ni(i, 1)*yy(i, 1) - ni(i, 2)*yy(i, 2) - ni(i, 3)*yy(i, 3)
749 + - ni(i, 4)*yy(i, 4) - ni(i, 5)*yy(i, 5) - ni(i, 6)*yy(i, 6)
751 + - ni(i, 1)*zz(i, 1) - ni(i, 2)*zz(i, 2) - ni(i, 3)*zz(i, 3)
752 + - ni(i, 4)*zz(i, 4) - ni(i, 5)*zz(i, 5) - ni(i, 6)*zz(i, 6)
754 dr = drdx(i)*dx + drdy(i)*dy + drdz(i)*dz
755 ds = dsdx(i)*dx + dsdy(i)*dy + dsdz(i)*dz
756 dt = dtdx(i)*dx + dtdy(i)*dy + dtdz(i)*dz
766 IF(r(i)>=-one.AND.s(i)>=-one.AND.t(i)>=-one.AND.
767 . r(i)<= one.AND.s(i)<= one.AND.t(i)<= one)
THEN
768 err =
max(err,abs(dr),abs(ds),abs(dt))
770 rr(i) =
max(
min(rr(i),one),-one)
771 ss(i) =
max(
min(ss(i),one),-one)
772 tt(i) =
max(
min(tt(i),one),-one)
788 2 DRDX ,DRDY ,DRDZ ,DSDX ,DSDY ,DSDZ ,
789 3 DTDX ,DTDY ,DTDZ ,DXDR ,DYDR ,DZDR ,
790 4 DXDT ,DYDT ,DZDT ,XX ,YY ,ZZ )
794#include "implicit_f.inc"
798#include "mvsiz_p.inc"
804 . DXDR(MVSIZ), DYDR(MVSIZ), DZDR(MVSIZ),
805 . DXDT(MVSIZ), DYDT(MVSIZ), DZDT(MVSIZ),
806 . DRDX(MVSIZ), DSDX(MVSIZ), DTDX(MVSIZ),
807 . DRDY(MVSIZ), DSDY(MVSIZ), DTDY(MVSIZ),
808 . DRDZ(MVSIZ), DSDZ(MVSIZ), DTDZ(MVSIZ),
809 . XX(MVSIZ,7) ,YY(MVSIZ,7),ZZ(MVSIZ,7),
810 . NI(MVSIZ,7) ,(MVSIZ) ,SS(MVSIZ) ,TT(MVSIZ)
816 . dxds(mvsiz), dyds(mvsiz), dzds(mvsiz),
817 . dnidr(10),dnids(10),dnidt(10),
820 . u_m_r,u_p_r,u_m_s,u_p_s,u_m_t,u_p_t,
821 . ums_umt,ums_upt,ups_umt,ups_upt,
822 . umr_ums,umr_ups,upr_ums,upr_ups,
823 . umt_umr,umt_upr,upt_umr,upt_upr,
873 ums_umt = u_m_s * u_m_t
874 ums_upt = u_m_s * u_p_t
875 ups_umt = u_p_s * u_m_t
876 ups_upt = u_p_s * u_p_t
878 umr_ums = u_m_r * u_m_s
879 umr_ups = u_m_r * u_p_s
880 upr_ums = u_p_r * u_m_s
881 upr_ups = u_p_r * u_p_s
883 umt_umr = u_m_t * u_m_r
884 umt_upr = u_m_t * u_p_r
885 upt_umr = u_p_t * u_m_r
886 upt_upr = u_p_t * u_p_r
889 ni(i,1) = u_m_r * ums_umt * a
890 ni(i,2) = u_m_r * ums_upt * a
891 ni(i,3) = u_p_r * ums_upt * a
892 ni(i,4) = u_p_r * ums_umt * a
893 ni(i,5) = u_m_r * ups_umt * a
894 ni(i,6) = u_m_r * ups_upt * a
897 dnidr(1) = -ums_umt * a
898 dnidr(5) = -ups_umt * a
899 dnidr(2) = -ums_upt * a
900 dnidr(6) = -ups_upt * a
901 dnidr(3) = ums_upt * a
902 dnidr(4) = ums_umt * a
904 dnids(1) = -umt_umr * a
905 dnids(5) = umt_umr * a
906 dnids(2) = -upt_umr * a
907 dnids(6) = upt_umr * a
908 dnids(3) = -upt_upr * a
909 dnids(4) = -umt_upr * a
911 dnidt(1) = -umr_ums * a
912 dnidt(5) = -umr_ups * a
913 dnidt(2) = umr_ums * a
914 dnidt(6) = umr_ups * a
915 dnidt(3) = upr_ums * a
916 dnidt(4) = -upr_ums * a
922 dxdr(i) = dnidr(1)*xx(i,1) + dnidr(2)*xx(i,2) + dnidr(3)*xx(i,3)
923 + + dnidr(4)*xx(i,4) + dnidr(5)*xx(i,5) + dnidr(6)*xx(i,6)
925 dxds(i) = dnids(1)*xx(i,1) + dnids(2)*xx(i,2) + dnids(3)*xx(i,3)
926 + + dnids(4)*xx(i,4) + dnids(5)*xx(i,5) + dnids(6)*xx(i,6)
928 dxdt(i) = dnidt(1)*xx(i,1) + dnidt(2)*xx(i,2) + dnidt(3)*xx(i,3)
929 + + dnidt(4)*xx(i,4) + dnidt(5)*xx(i,5) + dnidt(6)*xx(i,6)
933 dydr(i) = dnidr(1)*yy(i,1) + dnidr(2)*yy(i,2) + dnidr(3)*yy(i,3)
934 + + dnidr(4)*yy(i,4) + dnidr(5)*yy(i,5) + dnidr(6)*yy(i,6)
936 dyds(i) = dnids(1)*yy(i,1) + dnids(2)*yy(i,2) + dnids(3)*yy(i,3)
937 + + dnids(4)*yy(i,4) + dnids(5)*yy(i,5) + dnids(6)*yy(i,6)
939 dydt(i) = dnidt(1)*yy(i,1) + dnidt(2)*yy(i,2) + dnidt(3)*yy(i,3)
940 + + dnidt(4)*yy(i,4) + dnidt(5)*yy(i,5) + dnidt(6)*yy(i,6)
944 dzdr(i) = dnidr(1)*zz(i,1) + dnidr(2)*zz(i,2) + dnidr(3)*zz(i,3)
945 + + dnidr(4)*zz(i,4) + dnidr(5)*zz(i,5) + dnidr(6)*zz(i,6)
947 dzds(i) = dnids(1)*zz(i,1) + dnids(2)*zz(i,2) + dnids(3)*zz(i,3)
948 + + dnids(4)*zz(i,4) + dnids(5)*zz(i,5) + dnids(6)*zz(i,6)
950 dzdt(i) = dnidt(1)*zz(i,1) + dnidt(2)*zz(i,2) + dnidt(3)*zz(i,3)
951 + + dnidt(4)*zz(i,4) + dnidt(5)*zz(i,5) + dnidt(6)*zz(i,6)
956 drdx(i)=dyds(i)*dzdt(i)-dzds(i)*dydt(i)
957 drdy(i)=dzds(i)*dxdt(i)-dxds(i)*dzdt(i)
958 drdz(i)=dxds(i)*dydt(i)-dyds(i)*dxdt(i)
960 dsdz(i)=dxdt(i)*dydr(i)-dydt(i)*dxdr(i)
961 dsdy(i)=dzdt(i)*dxdr(i)-dxdt(i)*dzdr(i)
962 dsdx(i)=dydt(i)*dzdr(i)-dzdt(i)*dydr(i)
964 dtdx(i)=dydr(i)*dzds(i)-dzdr(i)*dyds(i)
965 dtdy(i)=dzdr(i)*dxds(i)-dxdr(i)*dzds(i)
966 dtdz(i)=dxdr(i)*dyds(i)-dydr(i)*dxds(i)
968 det(i) = dxdr(i) * drdx(i)
969 . + dydr(i) * drdy(i)
970 . + dzdr(i) * drdz(i)
subroutine i10lagm(x, v, lll, jll, sll, xll, candn, cande, i_stok, ixs, ixs10, iadll, eminx, nsv, nelem, n_mul_mx, itask, a, itied, nint, nkmax, comntag)
subroutine i10deri(llt, rr, ss, tt, ni, drdx, drdy, drdz, dsdx, dsdy, dsdz, dtdx, dtdy, dtdz, dxdr, dydr, dzdr, dxdt, dydt, dzdt, xx, yy, zz)
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)