150 1 JLT ,CAND_N ,CAND_E ,NIN ,
151 2 NSN ,NSNR ,INACTI ,MSEGLO ,
152 3 IRTLM ,TIME_S ,ITAB ,FARM ,PENM ,
153 5 IRECT ,NADMSR ,ADMSR ,LBM ,LCM ,
162#include "implicit_f.inc"
166#include "comlock.inc"
170 INTEGER JLT, NIN, NSN, NSNR, INACTI, NADMSR,
171 . CAND_N(*),CAND_E(*),ITAB(*),IRECT(4,*), ADMSR(4,*)
172 INTEGER MSEGLO(*), IRTLM(4,NSN) ,FARM(4,*), ISLIDE(4,*), NSV(*)
175 . PENM(4,*), LBM(4,*), LCM(4,*)
179 INTEGER I, J, K, L, N, I1, I2, I3, I4,
180 . far1, far2, far3, far4, fari, mglob,
181 . j1, j2, j3, j4, nor,
182 . loc_proc, iadlen, ns, it, jt, itria(2,4), nslide, itag(4)
183 DATA itria/1,2,2,3,3,4,4,1/
194 IF(irtlm(2,n) > 0) cycle
196 IF(irect(3,l)/=irect(4,l))
THEN
201 IF(farm(it,j)==2)
THEN
205 IF(farm(jt,j)==2)
THEN
214 IF(itag(k)/=0) islide(nslide,n)=admsr(k,l)
217 ELSEIF(penm(it,j)==zero)
THEN
232 time_s(1,n)=penm(it,j)
242 IF(farm(1,j)==2 .OR. farm(2,j)==2 .OR. farm(3,j)==2)
THEN
243 IF( farm(1,j) == 2 )
THEN
250 IF( farm(2,j) == 2 )
THEN
257 IF( farm(3,j) == 2 )
THEN
264 ELSEIF(penm(1,j)==zero)
THEN
278 time_s(1,n)=penm(1,j)
287 IF(irect(3,l)/=irect(4,l))
THEN
293 IF(farm(it,j)==2)
THEN
297 IF(farm(jt,j)==2)
THEN
306 IF(itag(k)/=0)
islide_fi(nin)%P(nslide,n)=admsr(k,l)
309 ELSEIF(penm(it,j)==zero)
THEN
322 time_sfi(nin)%P(2*(n-1)+1)=penm(it,j)
327 IF(farm(1,j)==2 .OR. farm(2,j)==2 .OR. farm(3,j)==2)
THEN
334 IF( farm(1,j) == 2 )
THEN
341 IF( farm(2,j) == 2 )
THEN
348 IF( farm(3,j) == 2 )
THEN
355 ELSEIF(penm(1,j)==zero)
THEN
369 time_sfi(nin)%P(2*(n-1)+1)=penm(1,j)
386 1 CAND_N ,CAND_E ,NIN ,NI25 ,NSN ,
387 2 NSNR ,NRTM ,SIZOPT ,K_STOK ,MSEGLO ,
388 3 MSEGTYP,I_STOK_OPT,ITAB,IRECT ,NADMSR ,
389 4 ADMSR ,ISLIDE ,NSV,KNOR2MSR,NOR2MSR,
390 5 IRTLM ,STFM ,FLAGREMN,KREMNOR,REMNOR)
398#include "implicit_f.inc"
402#include "comlock.inc"
406 INTEGER NIN, , NSN, NSNR, NADMSR, NRTM, I_MEM, SIZOPT, K_STOK,
407 . i_stok_opt, flagremn
408 INTEGER NSV(*), CAND_N(*),CAND_E(*)
417 INTEGER I, J, K, L, N, NL, NOR, ISH, NOR1, NOR2, M,
419 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PROV_E, PROV_N, TAGMSR
424 ALLOCATE(prov_e(sizopt))
425 ALLOCATE(prov_n(sizopt))
427 IF(flagremn == 2)
THEN
428 ALLOCATE(tagmsr(nrtm))
435 tagmsr(remnor(m)) = 1
441 DO nl=knor2msr(nor)+1,knor2msr(nor+1)
460 ish = iabs(msegtyp(l))
462 IF(ish > nrtm) ish=ish-nrtm
463 IF(mseglo(ish)==irtlm(1,n)) cycle
466 IF(stfm(l)> zero.AND.mseglo(l)/=irtlm(1,n).AND.
467 . itagm(l) /= n.AND.tagmsr(l)==0)
THEN
468 IF(nsv(n)/=irect(1,l).AND.nsv(n)/=irect(2,l).AND.
469 . nsv(n)/=irect(3,l).AND.nsv(n)/=irect(4,l))
THEN
472 IF(k_stok <= sizopt)
THEN
483 tagmsr(remnor(m)) = 0
492 DO nl=knor2msr(nor)+1,knor2msr(nor+1)
511 ish = iabs(msegtyp(l))
513 IF(ish > nrtm) ish=ish-nrtm
514 IF(mseglo(ish)==irtlm(1,n)) cycle
517 IF(stfm(l)> zero.AND.mseglo(l)/=irtlm(1,n).AND.
519 IF(nsv(n)/=irect(1,l).AND.nsv(n)/=irect(2,l).AND.
520 . nsv(n)/=irect(3,l).AND.nsv(n)/=irect(4,l))
THEN
523 IF(k_stok <= sizopt)
THEN
535 IF(flagremn == 2)
THEN
545 DO nl=knor2msr(nor)+1,knor2msr(nor+1)
548 ish = iabs(msegtyp(l))
550 IF(ish > nrtm) ish=ish-nrtm
551 IF(mseglo(ish)==
irtlm_fi(nin)%P(1,n)) cycle
554 IF(stfm(l)> zero.AND.mseglo(l)/=
irtlm_fi(nin)%P(1,n).AND.
555 . itagm(l) /= n+nsn.AND.tagmsr(l)==0)
THEN
558 IF(k_stok <= sizopt)
THEN
559 prov_n(k_stok)=n + nsn
576 DO nl=knor2msr(nor)+1,knor2msr(nor+1)
579 ish = iabs(msegtyp(l))
581 IF(ish > nrtm) ish=ish-nrtm
582 IF(mseglo(ish)==
irtlm_fi(nin)%P(1,n)) cycle
585 IF(stfm(l)> zero.AND.mseglo(l)/=
irtlm_fi(nin)%P(1,n).AND.
586 . itagm(l) /= n+nsn)
THEN
589 IF(k_stok <= sizopt)
THEN
590 prov_n(k_stok)=n + nsn
601 IF(i_stok_opt+k_stok>sizopt)
THEN
602 DEALLOCATE(prov_e,prov_n)
607 cand_n(i_stok_opt+1:i_stok_opt+k_stok) = prov_n(1:k_stok)
608 cand_e(i_stok_opt+1:i_stok_opt+k_stok) = prov_e(1:k_stok)
609 i_stok_opt = i_stok_opt + k_stok
611 DEALLOCATE(prov_e,prov_n)
612 IF(flagremn == 2)
DEALLOCATE(tagmsr)
624 1 I_STOK ,INDEX ,CAND_N ,CAND_E ,NIN ,
625 2 NSN ,NSNR ,INACTI ,MSEGLO ,IRTLM ,
626 3 PENM ,PENE_OLD,JTASK ,ITAB ,
627 4 NSV ,SECND_FR ,TIME_S,STIF_OLD )
635#include "implicit_f.inc"
640#include "comlock.inc"
644 INTEGER I_STOK, NIN, NSN, NSNR, INACTI, INDEX(*),
645 . CAND_N(*),CAND_E(*), JTASK, ITAB(*), NSV(*)
646 INTEGER MSEGLO(*), IRTLM(4,NSN)
648 . penm(4,*), pene_old(5,*), secnd_fr(6,*), time_s(2,*), stif_old(2,*)
652 INTEGER I, J, K, L, N, IKEEP
665 IF(iabs(irtlm(1,n))==mseglo(l))
THEN
666 IF(penm(1,j)+penm(2,j)+penm(3,j)+penm(4,j)/=zero)
THEN
672 print *,
'i25keepf native - internal problem',itab(nsv(n)),irtlm(1,n),ispmd+1
673 . penm(1,j),penm(2,j),penm(3,j),penm(4,j)
684 IF(iabs(
irtlm_fi(nin)%P(1,n-nsn))==mseglo(l))
THEN
685 IF(penm(1,j)+penm(2,j)+penm(3,j)+penm(4,j)/=zero)
THEN
690 print *,
'i25keepf remote - internal problem',
itafi(nin)%p(n-nsn),
irtlm_fi(nin)%p(1,n-nsn),
691 . ispmd+1,
time_sfi(nin)%p(2*(n-nsn-1)+1),
692 . penm(1,j)+penm(2,j)+penm(3,j)+penm(4,j)
702 IF(ikeep == 0) cand_n(j)=-cand_n(j)
798 1 NIN ,NI25 ,NSN ,NSNR ,ITYP ,
799 2 IFQ ,INACTI ,IGAP ,INTTH ,ILEV ,
800 3 ITAB ,NSV ,IAD_FRNOR,FR_NOR ,NADD ,
801 4 KADD ,RSIZ ,ISIZ ,SIZBUFS,FR_SLIDE ,
802 5 INDEX ,INTFRIC, IVIS2 ,ISTIF_MSDT,IFSUB_CAREA)
812#include "implicit_f.inc"
816#include "com01_c.inc"
819#include "comlock.inc"
823 INTEGER NIN, NI25, NSN, NSNR, ITYP, IFQ, INACTI, IGAP, INTTH, ILEV,
824 . RSIZ, ISIZ, INTFRIC, IVIS2, SIZBUFS(NSPMD)
825 INTEGER ITAB(*), INDEX(*), FR_SLIDE(4,*)
826 INTEGER IAD_FRNOR(NINTER25,NSPMD+1),FR_NOR(*),
827 . NADD(*), KADD(*), IRTLM(4,NSN), NSV(*)
828 INTEGER ,
INTENT(INOUT) :: ISTIF_MSDT, IFSUB_CAREA
832#include "com04_c.inc"
836 INTEGER I, J, K, N, NOR, NOD,
837 . LOC_PROC, P, IADLEN, NS, IDEB
838 INTEGER LR, LI, RSHIFT, ISHIFT, TAGSLD(NSN+NSNR), ILOC(NSN+NSNR)
851 IF(igap==1 .OR. igap==2)
THEN
864 IF(intth==0) rsiz = rsiz + 1
868 IF(intfric > 0 )
THEN
872 IF(istif_msdt > 0) rsiz = rsiz + 1
874 IF(ifsub_carea > 0) rsiz = rsiz + 1
880 ELSEIF(idtmins_int/=0)
THEN
897 IF (ilev==2) isiz = isiz + 1
907 IF(iad_frnor(ni25,p+1)-iad_frnor(ni25,p)>0)
THEN
910 DO j=iad_frnor(ni25,p),iad_frnor(ni25,p+1)-1
914 DO n=nadd(nor)+1, nadd(nor+1)
917 sizbufs(p)=sizbufs(p)+1
918 index(ideb+sizbufs(p))=i
919 iloc(i)=ideb+sizbufs(p)
921 tagsld(i)=tagsld(i)+1
930 fr_slide(tagsld(i),iloc(i))=j-iad_frnor(ni25,p) + 1
951 1 NIN ,NI25 ,NSN ,NSNR ,ITYP ,
952 2 IFQ ,INACTI ,IGAP ,INTTH ,ILEV ,
953 2 ITAB ,IAD_FRNOR,FR_NOR ,
954 3 LENS ,NADD ,KADD ,KINET ,
955 . NODNX_SMS,X ,V ,MS ,TEMP ,
956 . INTBUF_TAB,RBUF ,IBUF ,
957 4 RSIZ ,ISIZ ,SIZBUFS,FR_SLIDE ,INDEX ,
958 5 MAIN_PROC ,INTFRIC,IVIS2, ICODT, ISKEW ,
959 7 ISTIF_MSDT,IFSUB_CAREA,INTAREAN)
970#include "implicit_f.inc"
974#include "com01_c.inc"
977#include "comlock.inc"
981 INTEGER NIN, NI25, NSN, NSNR, ITYP, IFQ, INACTI, IGAP, INTTH, ILEV,
982 . RSIZ, ISIZ, INTFRIC, IVIS2, SIZBUFS(NSPMD)
983 INTEGER ITAB(*), INDEX(*), FR_SLIDE(4,*),
984 . kinet(*), nodnx_sms(*)
985 INTEGER IAD_FRNOR(NINTER25,NSPMD+1),FR_NOR(*), LENS,
986 . NADD(*), KADD(*), MAIN_PROC(NUMNOD)
987 INTEGER,
INTENT(IN) :: ICODT(*),ISKEW(*)
989 . X(3,*), V(3,*), MS(*), TEMP(*)
990 TYPE(INTBUF_STRUCT_) :: INTBUF_TAB
991 TYPE(real_pointer),
DIMENSION(NSPMD,NINTER25) :: RBUF
992 TYPE(int_pointer) ,
DIMENSION(NSPMD,NINTER25) ::
993 INTEGER ,
INTENT(IN) :: ISTIF_MSDT, IFSUB_CAREA
994 my_real ,
INTENT(IN) :: INTAREAN(NUMNOD)
998#include "com04_c.inc"
1002 INTEGER I, J, K, N, NOR, NOD,
1003 . LOC_PROC, P, IADLEN, NS, II, IDEB
1004 INTEGER NSEND, LR, LI, RSHIFT, ISHIFT
1013 IF(iad_frnor(ni25,p+1)-iad_frnor(ni25,p)>0)
THEN
1024 nod = intbuf_tab%NSV(i)
1025 rbuf(p,ni25)%p(lr+1) = x(1,nod)
1026 rbuf(p,ni25)%p(lr+2) = x(2,nod)
1027 rbuf(p,ni25)%p(lr+3) = x(3,nod)
1028 rbuf(p,ni25)%p(lr+4) = v(1,nod)
1029 rbuf(p,ni25)%p(lr+5) = v(2,nod)
1030 rbuf(p,ni25)%p(lr+6) = v(3,nod)
1031 rbuf(p,ni25)%p(lr+7) = ms(nod)
1032 rbuf(p,ni25)%p(lr+8) = intbuf_tab%STFNS(i)
1033 ibuf(p,ni25)%p(li+1) = intbuf_tab%NSV_ON_PMAIN(i)
1040 ibuf(p,ni25)%p(li+2) = itab(nod)
1042 ibuf(p,ni25)%p(li+3) = main_proc(nod)
1043 ibuf(p,ni25)%p(li+4) = kinet(nod)
1046 rbuf(p,ni25)%p(lr+1) =
xfi(nin)%P(1,ii)
1047 rbuf(p,ni25)%p(lr+2) =
xfi(nin)%P(2,ii)
1048 rbuf(p,ni25)%p(lr+3) =
xfi(nin)%P(3,ii)
1049 rbuf(p,ni25)%p(lr+4) =
vfi(nin)%P(1,ii)
1050 rbuf(p,ni25)%p(lr+5) =
vfi(nin)%P(2,ii)
1051 rbuf(p,ni25)%p(lr+6) =
vfi(nin)%P(3,ii)
1052 rbuf(p,ni25)%p(lr+7) =
msfi(nin)%P(ii)
1053 rbuf(p,ni25)%p(lr+8) =
stifi(nin)%P(ii)
1055 ibuf(p,ni25)%p(li+1) =
nsvfi(nin)%P(ii)
1056 ibuf(p,ni25)%p(li+2) =
itafi(nin)%P(ii)
1058 ibuf(p,ni25)%p(li+3) =
pmainfi(nin)%P(ii)
1059 ibuf(p,ni25)%p(li+4) =
kinfi(nin)%P(ii)
1076#include "vectorize.inc"
1080 nod = intbuf_tab%NSV(i)
1081 ibuf(p,ni25)%p(li+ishift) = icodt(nod)
1082 ibuf(p,ni25)%p(li+ishift+1)= iskew(nod)
1085 ibuf(p,ni25)%p(li+ishift) =
icodt_fi(nin)%P(ii)
1086 ibuf(p,ni25)%p(li+ishift+1)=
iskew_fi(nin)%P(ii)
1093 IF(igap==1 .OR. igap==2)
THEN
1098 nod = intbuf_tab%NSV(i)
1099 rbuf(p,ni25)%p(lr+rshift)= intbuf_tab%GAP_S(i)
1102 rbuf(p,ni25)%p(lr+rshift)=
gapfi(nin)%P(ii)
1109#include "vectorize.inc"
1113 rbuf(p,ni25)%p(lr+rshift) = intbuf_tab%GAP_S(i)
1114 rbuf(p,ni25)%p(lr+rshift+1)= intbuf_tab%GAP_SL(i)
1117 rbuf(p,ni25)%p(lr+rshift) =
gapfi(nin)%P(ii)
1118 rbuf(p,ni25)%p(lr+rshift+1)=
gap_lfi(nin)%P(ii)
1129#include "vectorize.inc"
1133 nod = intbuf_tab%NSV(i)
1134 rbuf(p,ni25)%p(lr+rshift) = temp(nod)
1135 rbuf(p,ni25)%p(lr+rshift+1)= intbuf_tab%AREAS(i)
1136 ibuf(p,ni25)%p(li+ishift) = intbuf_tab%IELES(i)
1139 rbuf(p,ni25)%p(lr+rshift) =
tempfi(nin)%P(ii)
1140 rbuf(p,ni25)%p(lr+rshift+1)=
areasfi(nin)%P(ii)
1141 ibuf(p,ni25)%p(li+ishift) =
matsfi(nin)%P(ii)
1153#include "vectorize.inc"
1157 nod = intbuf_tab%NSV(i)
1158 IF(intth==0) rbuf(p,ni25)%p(lr+rshift)= intbuf_tab%AREAS(i)
1159 ibuf(p,ni25)%p(li+ishift)=intbuf_tab%IF_ADH(i)
1162 IF(intth==0) rbuf(p,ni25)%p(lr+rshift)=
areasfi(nin)%P(ii)
1163 ibuf(p,ni25)%p(li+ishift)=
if_adhfi(nin)%P(ii)
1165 IF(intth==0) lr = lr + rsiz
1168 IF(intth==0) rshift = rshift + 1
1175#include "vectorize.inc"
1179 ibuf(p,ni25)%p(li+ishift) = intbuf_tab%IPARTFRICS(i)
1189 IF(istif_msdt > 0)
THEN
1191#include "vectorize.inc"
1195 rbuf(p,ni25)%p(lr+rshift)= intbuf_tab%STIFMSDT_S(i)
1205 IF(ifsub_carea > 0)
THEN
1207#include "vectorize.inc"
1211 nod = intbuf_tab%NSV(i)
1212 rbuf(p,ni25)%p(lr+rshift)= intarean(nod)
1215 rbuf(p,ni25)%p(lr+rshift)=
intareanfi(nin)%P(ii)
1226#include "vectorize.inc"
1230 nod = intbuf_tab%NSV(i)
1231 ibuf(p,ni25)%p(li+ishift) = nodnx_sms(nod)
1232 IF(p/=main_proc(nod))
THEN
1233 ibuf(p,ni25)%p(li+ishift+1)= ibuf(p,ni25)%p(li+1)
1235 ibuf(p,ni25)%p(li+ishift+1)= nod
1239 ibuf(p,ni25)%p(li+ishift) =
nodnxfi(nin)%P(ii)
1240 ibuf(p,ni25)%p(li+ishift+1)=
nodamsfi(nin)%P(ii)
1247 ELSEIF(idtmins_int/=0)
THEN
1249#include "vectorize.inc"
1253 nod = intbuf_tab%NSV(i)
1254 IF(p/=main_proc(nod))
THEN
1255 ibuf(p,ni25)%p(li+ishift)= ibuf(p,ni25)%p(li+1)
1257 ibuf(p,ni25)%p(li+ishift)= nod
1261 ibuf(p,ni25)%p(li+ishift) =
nodnxfi(nin)%P(ii)
1270#include "vectorize.inc"
1274 rbuf(p,ni25)%p(lr+rshift) =intbuf_tab%TIME_S(2*(i-1)+1)
1275 rbuf(p,ni25)%p(lr+rshift+1) =intbuf_tab%TIME_S(2*(i-1)+2)
1276 rbuf(p,ni25)%p(lr+rshift+2) =intbuf_tab%SECND_FR(6*(i-1)+4)
1277 rbuf(p,ni25)%p(lr+rshift+3) =intbuf_tab%SECND_FR(6*(i-1)+5)
1278 rbuf(p,ni25)%p(lr+rshift+4) =intbuf_tab%SECND_FR(6*(i-1)+6)
1279 rbuf(p,ni25)%p(lr+rshift+5) =intbuf_tab%PENE_OLD(5*(i-1)+2)
1280 rbuf(p,ni25)%p(lr+rshift+6) =intbuf_tab%STIF_OLD(2*(i-1)+2)
1281 rbuf(p,ni25)%p(lr+rshift+7) =intbuf_tab%PENE_OLD(5*(i-1)+3)
1282 rbuf(p,ni25)%p(lr+rshift+8) =intbuf_tab%PENE_OLD(5*(i-1)+4)
1283 rbuf(p,ni25)%p(lr+rshift+9) =intbuf_tab%PENE_OLD(5*(i-1)+5)
1286 rbuf(p,ni25)%p(lr+rshift) =
time_sfi(nin)%P(2*(ii-1)+1)
1287 rbuf(p,ni25)%p(lr+rshift+1) =
time_sfi(nin)%P(2*(ii-1)+2)
1288 rbuf(p,ni25)%p(lr+rshift+2) =
secnd_frfi(nin)%P(4,ii)
1289 rbuf(p,ni25)%p(lr+rshift+3) =
secnd_frfi(nin)%P(5,ii)
1290 rbuf(p,ni25)%p(lr+rshift+4) =
secnd_frfi(nin)%P(6,ii)
1291 rbuf(p,ni25)%p(lr+rshift+5) =
pene_oldfi(nin)%P(2,ii)
1292 rbuf(p,ni25)%p(lr+rshift+6) =
stif_oldfi(nin)%P(2,ii)
1293 rbuf(p,ni25)%p(lr+rshift+7) =
pene_oldfi(nin)%P(3,ii)
1294 rbuf(p,ni25)%p(lr+rshift+8) =
pene_oldfi(nin)%P(4,ii)
1295 rbuf(p,ni25)%p(lr+rshift+9) =
pene_oldfi(nin)%P(5,ii)
1299 rshift = rshift + 10
1302#include "vectorize.inc"
1306 nod = intbuf_tab%NSV(i)
1307 ibuf(p,ni25)%p(li+ishift) =intbuf_tab%IRTLM(4*(i-1)+1)
1308 ibuf(p,ni25)%p(li+ishift+1)=intbuf_tab%IRTLM(4*(i-1)+2)
1309 ibuf(p,ni25)%p(li+ishift+2)=intbuf_tab%IRTLM(4*(i-1)+3)
1310 ibuf(p,ni25)%p(li+ishift+3)=intbuf_tab%IRTLM(4*(i-1)+4)
1311 ibuf(p,ni25)%p(li+ishift+4)=intbuf_tab%ICONT_I(i)
1314 ibuf(p,ni25)%p(li+ishift) =
irtlm_fi(nin)%P(1,ii
1315 ibuf(p,ni25)%p(li+ishift+1)=
irtlm_fi(nin)%P(2,ii)
1316 ibuf(p,ni25)%p(li+ishift+2)=
irtlm_fi(nin)%P(3,ii)
1317 ibuf(p,ni25)%p(li+ishift+3)=
irtlm_fi(nin)%P(4,ii)
1318 ibuf(p,ni25)%p(li+ishift+4)=
icont_i_fi(nin)%P(ii)
1333 ibuf(p,ni25)%p(li+ishift) = 0
1350 ibuf(p,ni25)%p(li+ishift) =fr_slide(1,ideb+j)
1351 ibuf(p,ni25)%p(li+ishift+1)=fr_slide(2,ideb+j)
1352 ibuf(p,ni25)%p(li+ishift+2)=fr_slide(3,ideb+j)
1353 ibuf(p,ni25)%p(li+ishift+3)=fr_slide(4,ideb+j)
subroutine i25prep_send(nin, ni25, nsn, nsnr, ityp, ifq, inacti, igap, intth, ilev, itab, iad_frnor, fr_nor, lens, nadd, kadd, kinet, nodnx_sms, x, v, ms, temp, intbuf_tab, rbuf, ibuf, rsiz, isiz, sizbufs, fr_slide, index, main_proc, intfric, ivis2, icodt, iskew, istif_msdt, ifsub_carea, intarean)