211 1 NSV ,NSN ,X ,V ,MS ,
212 2 BMINMAL ,WEIGHT ,STIFN ,NIN ,ISENDTO,
213 3 IRCVFROM,IAD_ELEM ,FR_ELEM,NSNR ,IGAP ,
214 4 GAP_S ,ITAB ,KINET ,IFQ ,INACTI ,
215 5 NSNFIOLD,INTTH ,IELEC ,AREAS ,TEMP ,
216 6 NUM_IMP ,NODNX_SMS,GAP_S_L ,ITYP,
217 7 IRTLM ,I24_TIME_S,I24_FRFI,I24_PENE_OLD,
218 8 I24_STIF_OLD ,NBINFLG,ILEV ,I24_ICONT_I ,
219 9 INTFRIC ,IPARTFRICS,ITIED ,IVIS2, IF_ADH)
229#include "implicit_f.inc"
236#include "com01_c.inc"
237#include "com04_c.inc"
239#include "timeri_c.inc"
244 INTEGER NIN, NSN, IFQ, INACTI, IGAP,INTTH,NSNR,INTFRIC,
246 . NSNFIOLD(*), NSV(*), WEIGHT(*),
247 . ISENDTO(NINTER+1,*), IRCVFROM(NINTER+1,*),
248 . IAD_ELEM(2,*), FR_ELEM(*), ITAB(*), KINET(*),
249 . IELEC(*),NUM_IMP, NODNX_SMS(*),IRTLM(*),ITYP,
250 . NBINFLG(*),ILEV,I24_ICONT_I(*),IPARTFRICS(*),IF_ADH(*)
253 . X(3,*), V(3,*), MS(*), BMINMAL(*), STIFN(*), GAP_S(*),
254 . AREAS(*),TEMP(*),GAP_S_L(*),I24_TIME_S(*),I24_FRFI(6,*),
255 . I24_PENE_OLD(5,*),I24_STIF_OLD(2,*)
260 INTEGER MSGTYP, I, NOD, LOC_PROC, , IDEB,
261 . SIZ,J, L, BUFSIZ, LEN, NB, , IAD,
263 . REQ_RB(NSPMD),KK,NBIRECV,IRINDEXI(),
264 . req_rd(nspmd),req_sd(nspmd),req_sd2(nspmd),
265 . req_rc(nspmd),req_sc(nspmd),
266 . indexi,isindexi(nspmd),index(numnod),nbox(nspmd),
267 . nbx,nby,nbz,ix,iy,iz,
268 . msgoff, msgoff2, msgoff3, msgoff4, msgoff5,
269 . rsiz, isiz, l2, req_sd3(nspmd),req_rd2(nspmd),
270 . len2, rshift, ishift, nd, jdeb, q, nbb
280 . xmaxb,ymaxb,zmaxb,xminb,yminb,zminb
282 TYPE(real_pointer),
DIMENSION(NSPMD) :: RBUF
283 TYPE(int_pointer) ,
DIMENSION(NSPMD) :: IBUF
284 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITAGNSNFI
302 IF(inacti==5.OR.inacti==6.OR.inacti==7.OR.ifq>0
303 . .OR.num_imp>0.OR.itied/=0.OR.ityp==23.OR.ityp==24
306 nsnfiold(p) =
nsnfi(nin)%P(p)
312 IF(ircvfrom(nin,loc_proc)==0.AND.
313 . isendto(nin,loc_proc)==0)
RETURN
314 bminma(1,loc_proc) = bminmal(1)
315 bminma(2,loc_proc) = bminmal(2)
316 bminma(3,loc_proc) = bminmal(3)
317 bminma(4,loc_proc) = bminmal(4)
318 bminma(5,loc_proc) = bminmal(5)
319 bminma(6,loc_proc) = bminmal(6)
323 IF(ircvfrom(nin,loc_proc)/=0)
THEN
325 IF(isendto(nin,p)/=0)
THEN
332 . it_spmd(p),msgtyp,req_sc(p))
335 . bminma(1,loc_proc),6 ,it_spmd(p),msgtyp,
344 IF(isendto(nin,loc_proc)/=0)
THEN
347 IF(ircvfrom(nin,p)/=0)
THEN
355 . it_spmd(p),msgtyp,req_rc(nbirecv))
358 . bminma(1,p) ,6 ,it_spmd(p),msgtyp,
374 IF(igap==1 .OR. igap==2)
THEN
388 IF(ityp==25.AND.ivis2==-1)
THEN
389 IF(intth==0) rsiz = rsiz + 1
394 IF(intfric > 0 )
THEN
402 ELSEIF(idtmins_int/=0)
THEN
411 IF (ilev==2) isiz = isiz + 1
420 IF (ilev==2) isiz = isiz + 1
427 ALLOCATE(itagnsnfi(numnod),stat=ierror)
428 itagnsnfi(1:numnod) = 0
431 IF(isendto(nin,loc_proc)/=0)
THEN
433 CALL spmd_waitany(nbirecv,req_rb,indexi)
435 CALL spmd_wait(req_rc(indexi))
437 DO j = iad_elem(1,p), iad_elem(1,p+1)-1
440 weight(nod) = weight(nod)*(-1)
455 IF(weight(nod)==1)
THEN
456 IF(stifn(i)>zero)
THEN
457 IF(itied/=0.AND.ityp==7.AND.
candf_si(nin)%P(i)/=0)
THEN
461 IF(x(1,nod) < xminb) cycle
462 IF(x(1,nod) > xmaxb) cycle
463 IF(x(2,nod) < yminb) cycle
464 IF(x(2,nod) > ymaxb) cycle
465 IF(x(3,nod) < zminb) cycle
466 IF(x(3,nod) > zmaxb) cycle
468 ix=int(nbx*(x(1,nod)-xminb)/(xmaxb-xminb))
469 IF(ix >= 0 .AND. ix <= nbx)
THEN
470 iy=int(nby*(x(2,nod)-yminb)/(ymaxb-yminb))
471 IF(iy >= 0 .AND. iy <= nby
THEN
472 iz=int(nbz*(x(3,nod)-zminb)/(zmaxb-zminb))
473 IF(iz >= 0 .AND. iz <= nbz)
THEN
474 IF(btest(
crvoxel(iy,iz,p),ix))
THEN
487 DO j = iad_elem(1,p), iad_elem(1,p+1)-1
490 weight(nod) = weight(nod)*(-1)
496 jdeb = jdeb +
nsnsi(nin)%P(q)
498 nbb =
nsnsi(nin)%P(p)
500 nd =
nsvsi(nin)%P(jdeb+j)
509 CALL spmd_isend(nbox(p),1,it_spmd(p),msgtyp,
515 ALLOCATE(rbuf(p)%P(rsiz*nb),stat=ierror)
516 ALLOCATE(ibuf(p)%P(isiz*nb),stat=ierror)
518 CALL ancmsg(msgid=20,anmode=aninfo)
527 rbuf(p)%p(l+1) = x(1,nod)
528 rbuf(p)%p(l+2) = x(2,nod)
529 rbuf(p)%p(l+3) = x(3,nod)
531 rbuf(p)%p(l+5) = v(2,nod)
532 rbuf(p)%p(l+6) = v(3,nod)
533 rbuf(p)%p(l+7) = ms(nod)
534 rbuf(p)%p(l+8) = stifn(i)
537 ibuf(p)%p(l2+3) = kinet(nod)
553 IF(igap==1 .OR. igap==2)
THEN
558 rbuf(p)%p(l+rshift)= gap_s(i)
569 rbuf(p)%p(l+rshift) = gap_s(i)
570 rbuf(p)%p(l+rshift+1)= gap_s_l(i)
583 rbuf(p)%p(l+rshift) = temp(nod)
584 rbuf(p)%p(l+rshift+1) = areas(i)
585 ibuf(p)%p(l2+ishift) = ielec(i)
594 IF(ityp==25.AND.ivis2==-1)
THEN
600 IF(intth==0) rbuf(p)%p(l+rshift) = areas(i)
601 ibuf(p)%p(l2+ishift) = if_adh(i)
602 ibuf(p)%p(l2+ishift+1)=itagnsnfi(nod)
603 IF(intth==0) l = l + rsiz
606 IF(intth==0) rshift = rshift + 1
615 ibuf(p)%p(l2+ishift) = ipartfrics(i)
627 ibuf(p)%p(l2+ishift) = nodnx_sms(nod)
628 ibuf(p)%p(l2+ishift+1)= nod
634 ELSEIF(idtmins_int/=0)
THEN
639 ibuf(p)%p(l2+ishift)= nod
652 rbuf(p)%p(l+rshift) =i24_time_s(i)
653 rbuf(p)%p(l+rshift+1) =i24_frfi(1,i)
654 rbuf(p)%p(l+rshift+2) =i24_frfi(2,i)
655 rbuf(p)%p(l+rshift+3) =i24_frfi(3,i)
656 rbuf(p)%p(l+rshift+4) =i24_pene_old(1,i)
657 rbuf(p)%p(l+rshift+5) =i24_stif_old(1,i)
658 rbuf(p)%p(l+rshift+6) =i24_pene_old(3,i)
659 rbuf(p)%p(l+rshift+7) =i24_pene_old(5,i)
669 ibuf(p)%p(l2+ishift) =irtlm(2*(i-1)+1)
670 ibuf(p)%p(l2+ishift+1)=irtlm(2*(i-1)+2)
671 ibuf(p)%p(l2+ishift+2)=i24_icont_i(i)
681 ibuf(p)%p(l2+ishift)=nbinflg(i)
695 rbuf(p)%p(l+rshift) =i24_time_s(2*(i-1)+1)
696 rbuf(p)%p(l+rshift+1) =i24_time_s(2*(i-1)+2)
697 rbuf(p)%p(l+rshift+2) =i24_pene_old(5,i)
709 ibuf(p)%p(l2+ishift) =irtlm(4*(i-1)+1)
710 ibuf(p)%p(l2+ishift+1)=irtlm(4*(i-1)+2)
713 ibuf(p)%p(l2+ishift+2)=irtlm(4*(i-1)+3)
714 ibuf(p)%p(l2+ishift+3)=irtlm(4*(i-1)+4)
715 ibuf(p)%p(l2+ishift+4)=i24_icont_i(i)
716 ibuf(p)%p(l2+ishift+5)=itagnsnfi(nod)
726 ibuf(p)%p(l2+ishift)=nbinflg(i)
749 1 rbuf(p)%P(1),nb*rsiz,it_spmd(p),msgtyp,
754 1 ibuf(p)%P(1),nb*isiz,it_spmd(p),msgtyp,
761 nbb =
nsnsi(nin)%P(p)
763 nd =
nsvsi(nin)%P(jdeb+j)
771 IF(ityp==25)
DEALLOCATE(itagnsnfi)
775 IF(ircvfrom(nin,loc_proc)/=0)
THEN
780 IF(isendto(nin,p)/=0)
THEN
783 CALL spmd_recv(
nsnfi(nin)%P(p),1,it_spmd(p),
785 IF(
nsnfi(nin)%P(p)>0)
THEN
788 nsnr = nsnr +
nsnfi(nin)%P(p)
799 ALLOCATE(xrem(rsiz,nsnr),stat=ierror)
800 ALLOCATE(
irem(isiz,nsnr),stat=ierror)
803 CALL ancmsg(msgid=20,anmode=aninfo)
809 len =
nsnfi(nin)%P(p)*rsiz
813 1 xrem(1,ideb),len,it_spmd(p),
816 len2 =
nsnfi(nin)%P(p)*isiz
819 1
irem(1,ideb),len2,it_spmd(p),
821 ideb = ideb +
nsnfi(nin)%P(p)
824 CALL spmd_waitany(nbirecv,req_rd,indexi)
825 CALL spmd_waitany(nbirecv,req_rd2,indexi)
835 IF(ircvfrom(nin,loc_proc)/=0)
THEN
837 IF(isendto(nin,p)/=0)
THEN
839 CALL spmd_wait(req_sb(p))
840 CALL spmd_wait(req_sc(p))
846 IF(isendto(nin,loc_proc)/=0)
THEN
848 IF(ircvfrom(nin,p)/=0)
THEN
850 CALL spmd_wait(req_sd(p))
852 CALL spmd_wait(req_sd2(p))
853 DEALLOCATE(rbuf(p)%p)
854 CALL spmd_wait(req_sd3(p))
855 DEALLOCATE(ibuf(p)%p)
885 1 NSV ,NSN ,X ,V ,MS ,
886 2 BMINMAL ,WEIGHT ,STIFN ,NIN ,ISENDTO,
887 3 IRCVFROM,IAD_ELEM ,FR_ELEM,NSNR ,IGAP ,
888 4 GAP_S ,ITAB ,KINET ,IFQ ,INACTI ,
889 5 NSNFIOLD,INTTH ,IELEC ,AREAS ,TEMP ,
890 6 NUM_IMP ,NODNX_SMS,GAP_S_L ,ITYP,
891 7 IRTLM ,I24_TIME_S,I24_FRFI,I24_PENE_OLD,
892 8 I24_STIF_OLD ,NBINFLG,ILEV ,I24_ICONT_I,
893 8 IXS, MULTI_FVM,INTFRIC ,IPARTFRICS)
901 use element_mod ,
only :nixs
905#include "implicit_f.inc"
912#include "com01_c.inc"
913#include "com04_c.inc"
915#include "timeri_c.inc"
920 INTEGER NIN, NSN, IFQ, INACTI, IGAP,INTTH,INTFRIC,
921 . nsnfiold(*), nsv(*), weight(*),
922 . isendto(ninter+1,*), ircvfrom(ninter+1,*),
923 . iad_elem(2,*), fr_elem(*), itab(*), kinet(*),
924 . ielec(*),num_imp, nodnx_sms(*),irtlm(*),ityp,
925 . nbinflg(*),ilev,i24_icont_i(*),nsnr,ixs(nixs, *),
929 . x(3,*), v(3,*), ms(*), bminmal(*), stifn(*), gap_s(*),
930 . areas(*),temp(*),gap_s_l(*),i24_time_s(*),i24_frfi(6,*),
931 . i24_pene_old(5,*),i24_stif_old(2,*)
933 TYPE (MULTI_FVM_STRUCT),
INTENT(IN) :: MULTI_FVM
938 INTEGER MSGTYP, I, , LOC_PROC, P, IDEB,
939 . SIZ,J, L, BUFSIZ, LEN, , IERROR1, IAD,
940 . IERROR,REQ_SB(NSPMD),
941 . req_rb(nspmd),kk,nbirecv,irindexi(nspmd),
942 . req_rd(nspmd),req_sd(nspmd),req_sd2(nspmd),
943 . req_rc(nspmd),req_sc(nspmd),
944 . indexi,isindexi(nspmd),index(numnod),nbox(nspmd),
945 . nbx,nby,nbz,ix,iy,iz,
946 . msgoff, msgoff2, msgoff3, msgoff4, msgoff5,
947 . rsiz, isiz, l2, req_sd3(nspmd),req_rd2(nspmd),
948 . len2, rshift, ishift, nd, jdeb, q, nbb
958 . xmaxb,ymaxb,zmaxb,xminb,yminb,zminb
960 TYPE(real_pointer),
DIMENSION(NSPMD) :: RBUF
961 TYPE(int_pointer) ,
DIMENSION(NSPMD) :: IBUF
980 IF(inacti==5.OR.inacti==6.OR.inacti==7.OR.ifq>0
981 . .OR.num_imp>0.OR.ityp==23.OR.ityp==24
984 nsnfiold(p) =
nsnfi(nin)%P(p)
990 IF(ircvfrom(nin,loc_proc)==0.AND.
991 . isendto(nin,loc_proc)==0)
RETURN
992 bminma(1,loc_proc) = bminmal(1)
993 bminma(2,loc_proc) = bminmal(2)
994 bminma(3,loc_proc) = bminmal(3)
995 bminma(4,loc_proc) = bminmal(4)
996 bminma(5,loc_proc) = bminmal(5)
997 bminma(6,loc_proc) = bminmal(6)
1001 IF(ircvfrom(nin,loc_proc)/=0)
THEN
1003 IF(isendto(nin,p)/=0)
THEN
1004 IF(p/=loc_proc)
THEN
1010 . it_spmd(p),msgtyp,req_sc(p))
1013 . bminma(1,loc_proc),6 ,it_spmd(p),msgtyp,
1022 IF(isendto(nin,loc_proc)/=0)
THEN
1025 IF(ircvfrom(nin,p)/=0)
THEN
1026 IF(loc_proc/=p)
THEN
1033 . it_spmd(p),msgtyp,req_rc(nbirecv))
1036 . bminma(1,p) ,6 ,it_spmd(p),msgtyp,
1052 IF(igap==1 .OR. igap==2)
THEN
1066 IF(intfric > 0 )
THEN
1071 IF(idtmins == 2)
THEN
1074 ELSEIF(idtmins_int/=0)
THEN
1083 IF(isendto(nin,loc_proc)/=0)
THEN
1085 CALL spmd_waitany(nbirecv,req_rb,indexi)
1087 CALL spmd_wait(req_rc(indexi))
1100 IF(stifn(i)>zero)
THEN
1101 IF(x(1,nod) < xminb) cycle
1102 IF(x(1,nod) > xmaxb) cycle
1103 IF(x(2,nod) < yminb) cycle
1104 IF(x(2,nod) > ymaxb) cycle
1105 IF(x(3,nod) < zminb) cycle
1106 IF(x(3,nod) > zmaxb) cycle
1108 ix=int(nbx*(x(1,nod)-xminb)/(xmaxb-xminb))
1109 IF(ix >= 0 .AND. ix <= nbx)
THEN
1110 iy=int(nby*(x(2,nod)-yminb)/(ymaxb-yminb))
1111 IF(iy >= 0 .AND. iy <= nby)
THEN
1112 iz=int(nbz*(x(3,nod)-zminb)/(zmaxb-zminb))
1113 IF(iz >= 0 .AND. iz <= nbz)
THEN
1114 IF(btest(
crvoxel(iy,iz,p),ix))
THEN
1128 CALL spmd_isend(nbox(p),1,it_spmd(p),msgtyp,
1134 ALLOCATE(rbuf(p)%P(rsiz*nb),stat=ierror)
1135 ALLOCATE(ibuf(p)%P(isiz*nb),stat=ierror)
1137 CALL ancmsg(msgid=20,anmode=aninfo)
1147 rbuf(p)%p(l+1) = x(1,nod)
1148 rbuf(p)%p(l+2) = x(2,nod)
1149 rbuf(p)%p(l+3) = x(3,nod)
1150 rbuf(p)%p(l+4) = v(1,nod)
1151 rbuf(p)%p(l+5) = v(2,nod)
1152 rbuf(p)%p(l+6) = v(3,nod)
1153 rbuf(p)%p(l+7) = ms(nod)
1154 rbuf(p)%p(l+8) = stifn(i)
1156 ibuf(p)%p(l2+2) = ixs(nixs, nod - numnod)
1157 ibuf(p)%p(l2+3) = kinet(nod)
1173 IF(igap==1 .OR. igap==2)
THEN
1178 rbuf(p)%p(l+rshift)= gap_s(i)
1189 rbuf(p)%p(l+rshift) = gap_s(i)
1190 rbuf(p)%p(l+rshift+1)= gap_s_l(i)
1203 rbuf(p)%p(l+rshift) = temp(nod)
1204 rbuf(p)%p(l+rshift+1) = areas(i)
1205 ibuf(p)%p(l2+ishift) = ielec(i)
1218 ibuf(p)%p(l2+ishift) = ipartfrics(i)
1230 ibuf(p)%p(l2+ishift) = nodnx_sms(nod)
1231 ibuf(p)%p(l2+ishift+1)= nod
1237 ELSEIF(idtmins_int/=0)
THEN
1242 ibuf(p)%p(l2+ishift)= nod
1263 1 rbuf(p)%P(1),nb*rsiz,it_spmd(p),msgtyp,
1268 1 ibuf(p)%P(1),nb*isiz,it_spmd(p),msgtyp,
1278 IF(ircvfrom(nin,loc_proc)/=0)
THEN
1283 IF(isendto(nin,p)/=0)
THEN
1284 IF(loc_proc/=p)
THEN
1286 CALL spmd_recv(
nsnfi(nin)%P(p),1,it_spmd(p),
1288 IF(
nsnfi(nin)%P(p)>0)
THEN
1291 nsnr = nsnr +
nsnfi(nin)%P(p)
1302 ALLOCATE(xrem(rsiz,nsnr),stat=ierror)
1303 ALLOCATE(
irem(isiz,nsnr),stat=ierror)
1306 CALL ancmsg(msgid=20,anmode=aninfo)
1312 len =
nsnfi(nin)%P(p)*rsiz
1316 1 xrem(1,ideb),len,it_spmd(p),
1319 len2 =
nsnfi(nin)%P(p)*isiz
1322 1
irem(1,ideb),len2,it_spmd(p),
1323 2 msgtyp,req_rd2(l))
1324 ideb = ideb +
nsnfi(nin)%P(p)
1327 CALL spmd_waitany(nbirecv,req_rd,indexi)
1328 CALL spmd_waitany(nbirecv,req_rd2,indexi)
1338 IF(ircvfrom(nin,loc_proc)/=0)
THEN
1340 IF(isendto(nin,p)/=0)
THEN
1341 IF(p/=loc_proc)
THEN
1342 CALL spmd_wait(req_sb(p))
1343 CALL spmd_wait(req_sc(p))
1349 IF(isendto(nin,loc_proc)/=0)
THEN
1351 IF(ircvfrom(nin,p)/=0)
THEN
1352 IF(p/=loc_proc)
THEN
1353 CALL spmd_wait(req_sd(p))
1355 CALL spmd_wait(req_sd2(p))
1356 DEALLOCATE(rbuf(p)%p)
1357 CALL spmd_wait(req_sd3(p))
1358 DEALLOCATE(ibuf(p)%p)
1384 1 NSV ,NSN ,X ,V ,MS ,
1385 2 BMINMAL ,WEIGHT ,STIFN ,NIN ,ISENDTO,
1386 3 IRCVFROM,IAD_ELEM ,FR_ELEM,NSNR ,IGAP ,
1387 4 GAP_S ,ITAB ,KINET ,IFQ ,INACTI ,
1388 5 NSNFIOLD,INTTH ,IELEC ,AREAS ,TEMP ,
1389 6 NUM_IMP ,NODNX_SMS,GAP_S_L ,ITYP,
1390 7 I24_IRTLM,I24_TIME_S,I24_FRFI,I24_PENE_OLD,
1391 8 I24_STIF_OLD ,NBINFLG,ILEV ,I24_ICONT_I ,
1392 9 XFIC ,VFIC ,IEDGE4 ,NSNE,IS2SE,
1393 A IRTSE,IS2PT,ISEGPT,MSFIC,NRTSE,IS2ID,ISPT2,
1394 B INTFRIC,IPARTFRICS,T2MAIN_SMS,INTNITSCHE,FORNEQS,
1395 C T2FAC_SMS,ISTIF_MSDT,STIFMSDT_S,IFSUB_CAREA,INTAREAN)
1405#include "implicit_f.inc"
1409#include
"com01_c.inc"
1410#include "com04_c.inc"
1411#include "task_c.inc"
1412#include "timeri_c.inc"
1417 INTEGER NIN, NSN, IFQ, INACTI, IGAP,INTTH,INTFRIC,INTNITSCHE,
1418 . NSNFIOLD(*), NSV(*), WEIGHT(*),
1419 . ISENDTO(NINTER+1,*), IRCVFROM(NINTER+1,*),
1420 . IAD_ELEM(2,*), FR_ELEM(*), (*), KINET(*),
1421 . IELEC(*),NUM_IMP, NODNX_SMS(*),I24_IRTLM(2,*),ITYP,
1422 . NBINFLG(*),ILEV,I24_ICONT_I(*),IEDGE4,NSNE,IS2SE(2,*),IRTSE(5,*),
1423 . IS2PT(*),ISEGPT(*),NRTSE, NSNR,IS2ID(*),ISPT2(*),IPARTFRICS(*),T2MAIN_SMS(6,*)
1424 INTEGER ,
INTENT(IN) :: ISTIF_MSDT, IFSUB_CAREA
1427 . X(3,*), V(3,*), MS(*), BMINMAL(*), (*), GAP_S(*),
1428 . AREAS(*),TEMP(*),GAP_S_L(*),I24_TIME_S(*),I24_FRFI(6,*),
1429 . I24_PENE_OLD(5,*),I24_STIF_OLD(2,*),XFIC(3,*),VFIC(3,*),MSFIC(*),
1430 . FORNEQS(3,*),T2FAC_SMS(*)
1431 my_real ,
INTENT(IN) :: STIFMSDT_S(NSN) , INTAREAN(NUMNOD)
1436 INTEGER MSGTYP, I, NOD, LOC_PROC, P, IDEB,
1437 . SIZ,J, L, BUFSIZ, LEN, NB, IERROR1, IAD,
1438 . IERROR,REQ_SB(NSPMD),
1439 . REQ_RB(NSPMD),KK,NBIRECV,IRINDEXI(NSPMD),
1440 . REQ_RD(NSPMD),REQ_SD(NSPMD),REQ_SD2(NSPMD),
1441 . REQ_RC(NSPMD),REQ_SC(NSPMD),
1442 . INDEXI,ISINDEXI(NSPMD),INDEX(NUMNOD+NSNE),NBOX(NSPMD),
1443 . NBX,NBY,NBZ,IX,IY,IZ,
1444 . MSGOFF, MSGOFF2, MSGOFF3, MSGOFF4, MSGOFF5,
1445 . RSIZ, ISIZ, L2, REQ_SD3(NSPMD),REQ_RD2(NSPMD),
1446 . , RSHIFT, ISHIFT,BOXR,NBE,ND,SURF,N1,N2,N3,N4,
1457 . xmaxb,ymaxb,zmaxb,xminb,yminb,zminb
1459 TYPE(real_pointer),
DIMENSION(NSPMD) :: RBUF
1460 TYPE(int_pointer) ,
DIMENSION(NSPMD) :: IBUF
1462 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAG_SN,INDEXE,TAG_2RY,NSV_INV
1468 ALLOCATE(tag_sn(numnod))
1469 ALLOCATE(indexe(numnod+nsne))
1470 ALLOCATE(tag_2ry(nsn))
1471 ALLOCATE(nsv_inv(numnod))
1475 ALLOCATE(tag_2ry(0))
1476 ALLOCATE(nsv_inv(0))
1482 loc_proc = ispmd + 1
1490 IF(inacti==5.OR.inacti==6.OR.inacti==7.OR.ifq>0
1491 . .OR.num_imp>0.OR.ityp==23.OR.ityp==24)
THEN
1493 nsnfiold(p) =
nsnfi(nin)%P(p)
1499 IF(ircvfrom(nin,loc_proc)==0.AND.
1500 . isendto(nin,loc_proc)==0)
RETURN
1501 bminma(1,loc_proc) = bminmal(1)
1502 bminma(2,loc_proc) = bminmal(2)
1503 bminma(3,loc_proc) = bminmal(3)
1504 bminma(4,loc_proc) = bminmal(4)
1505 bminma(5,loc_proc) = bminmal(5)
1506 bminma(6,loc_proc) = bminmal(6)
1510 IF(ircvfrom(nin,loc_proc)/=0)
THEN
1512 IF(isendto(nin,p)/=0)
THEN
1516 IF(p/=loc_proc)
THEN
1522 . it_spmd(p),msgtyp,req_sc(p))
1525 . bminma(1,loc_proc),6 ,it_spmd(p),msgtyp,
1534 IF(isendto(nin,loc_proc)/=0)
THEN
1537 IF(ircvfrom(nin,p)/=0)
THEN
1538 IF(loc_proc/=p)
THEN
1546 . it_spmd(p),msgtyp,req_rc(nbirecv))
1549 . bminma(1,p) ,6 ,it_spmd(p),msgtyp
1565 IF(igap==1 .OR. igap==2)
THEN
1578 IF(intfric > 0 )
THEN
1583 IF(idtmins == 2)
THEN
1587 ELSEIF(idtmins_int/=0)
THEN
1597 IF (ilev==2) isiz = isiz + 1
1598 IF(iedge4 > 0)isiz = isiz + 8
1602 IF(intnitsche > 0) rsiz = rsiz + 3
1605 IF(istif_msdt > 0) rsiz = rsiz + 1
1608 IF(ifsub_carea > 0) rsiz = rsiz + 1
1612 IF(isendto(nin,loc_proc)/=0)
THEN
1614 CALL spmd_waitany(nbirecv,req_rb,indexi)
1616 CALL spmd_wait(req_rc(indexi))
1618 DO j = iad_elem(1,p), iad_elem(1,p+1)-1
1621 weight(nod) = weight(nod)*(-1)
1644 IF (nod <= numnod)
THEN
1645 IF(weight(nod)==1)
THEN
1646 IF(stifn(i)>zero)
THEN
1647 IF(x(1,nod) < xminb) cycle
1648 IF(x(1,nod) > xmaxb) cycle
1649 IF(x(2,nod) < yminb) cycle
1650 IF(x(2,nod) > ymaxb) cycle
1652 IF(x(3,nod) > zmaxb) cycle
1655 ix=int(nbx*(x(1,nod)-xminb)/(xmaxb-xminb))
1656 IF(ix >= 0 .AND. ix <= nbx)
THEN
1657 iy=int(nby*(x(2,nod)-yminb)/(ymaxb-yminb))
1658 IF(iy >= 0 .AND. iy <= nby)
THEN
1659 iz=int(nbz*(x(3,nod)-zminb)/(zmaxb-zminb))
1660 IF(iz >= 0 .AND. iz <= nbz)
THEN
1661 IF(btest(
crvoxel(iy,iz,p),ix))
THEN
1680 IF(stifn(i)>zero)
THEN
1682 IF(xfic(1,nd) < xminb) cycle
1683 IF(xfic(1,nd) > xmaxb) cycle
1684 IF(xfic(2,nd) < yminb) cycle
1685 IF(xfic(2,nd) > ymaxb) cycle
1686 IF(xfic(3,nd) < zminb) cycle
1687 IF(xfic(3,nd) > zmaxb) cycle
1689 ix=int(nbx*(xfic(1,nd)-xminb)/(xmaxb-xminb))
1690 IF(ix >= 0 .AND. ix <= nbx)
THEN
1691 iy=int(nby*(xfic(2,nd)-yminb)/(ymaxb-yminb))
1692 IF(iy >= 0 .AND. iy <= nby)
THEN
1693 iz=int(nbz*(xfic(3,nd)-zminb)/(zmaxb-zminb))
1694 IF(iz >= 0 .AND. iz <= nbz)
THEN
1695 IF(btest(
crvoxel(iy,iz,p),ix))
THEN
1701 IF( tag_sn(n1)==0)
THEN
1703 index(nb) = nsv_inv(n1)
1707 IF( tag_sn(n2)==0)
THEN
1709 index(nb) = nsv_inv(n2)
1713 IF( tag_sn(n3)==0)
THEN
1715 index(nb) = nsv_inv(n3)
1719 IF( tag_sn(n4)==0)
THEN
1721 index(nb) = nsv_inv(n4)
1734 index(nb) = indexe(i)
1735 tag_2ry(indexe(i))=nb
1740 DO j = iad_elem(1,p), iad_elem(1,p+1)-1
1743 weight(nod) = weight(nod)*(-1)
1749 CALL spmd_isend(nbox(p),1,it_spmd(p),msgtyp,
1755 ALLOCATE(rbuf(p)%P(rsiz*nb),stat=ierror)
1756 ALLOCATE(ibuf(p)%P(isiz*nb),stat=ierror)
1758 CALL ancmsg(msgid=20,anmode=aninfo)
1768 IF(nod <=numnod)
THEN
1769 rbuf(p)%p(l+1) = x(1,nod)
1770 rbuf(p)%p(l+2) = x(2,nod)
1771 rbuf(p)%p(l+3) = x(3,nod)
1772 rbuf(p)%p(l+4) = v(1,nod)
1773 rbuf(p)%p(l+5) = v(2,nod)
1774 rbuf(p)%p(l+6) = v(3,nod)
1775 rbuf(p)%p(l+7) = ms(nod)
1776 rbuf(p)%p(l+8) = stifn(i)
1778 ibuf(p)%p(l2+2) = itab(nod)
1779 ibuf(p)%p(l2+3) = kinet(nod)
1785 IF(tag_sn(nod)<0)
THEN
1786 ibuf(p)%p(l2+8) = -1
1795 rbuf(p)%p(l+1) = xfic(1,nd)
1796 rbuf(p)%p(l+2) = xfic(2,nd)
1797 rbuf(p)%p(l+3) = xfic(3,nd)
1798 rbuf(p)%p(l+4) = vfic(1,nd)
1799 rbuf(p)%p(l+5) = vfic(2,nd)
1800 rbuf(p)%p(l+6) = vfic(3,nd)
1801 rbuf(p)%p(l+7) = msfic(nd)
1802 rbuf(p)%p(l+8) = stifn(i)
1804 ibuf(p)%p(l2+2) = is2id(nd)
1825 IF(igap==1 .OR. igap==2)
THEN
1830 rbuf(p)%p(l+rshift)= gap_s(i)
1841 rbuf(p)%p(l+rshift) = gap_s(i)
1842 rbuf(p)%p(l+rshift+1)= gap_s_l(i)
1855 rbuf(p)%p(l+rshift) = temp(nod)
1856 rbuf(p)%p(l+rshift+1) = areas(i)
1857 ibuf(p)%p(l2+ishift) = ielec(i)
1869 ibuf(p)%p(l2+ishift) = ipartfrics(i)
1883 rbuf(p)%p(l+rshift) = t2fac_sms(nod)
1884 ibuf(p)%p(l2+ishift) = nodnx_sms(nod)
1885 ibuf(p)%p(l2+ishift+1)= nod
1886 ibuf(p)%p(l2+ishift+2)= t2main_sms(1,nod)
1887 ibuf(p)%p(l2+ishift+3)= t2main_sms(2,nod)
1888 ibuf(p)%p(l2+ishift+4)= t2main_sms(3,nod)
1889 ibuf(p)%p(l2+ishift+5)= t2main_sms(4,nod)
1890 ibuf(p)%p(l2+ishift+6)= t2main_sms(5,nod)
1891 ibuf(p)%p(l2+ishift+7)= t2main_sms(6,nod)
1895 rbuf(p)%p(l+rshift) = one
1896 ibuf(p)%p(l2+ishift) = 0
1897 ibuf(p)%p(l2+ishift+1)= 0
1898 ibuf(p)%p(l2+ishift+2)= 0
1899 ibuf(p)%p(l2+ishift+3)= 0
1900 ibuf(p)%p(l2+ishift+4)= 0
1901 ibuf(p)%p(l2+ishift+5)= 0
1902 ibuf(p)%p(l2+ishift+6)= 0
1903 ibuf(p)%p(l2+ishift+7)= 0
1912 ELSEIF(idtmins_int/=0)
THEN
1918 rbuf(p)%p(l+rshift) = t2fac_sms(nod)
1919 ibuf(p)%p(l2+ishift)= nod
1920 ibuf(p)%p(l2+ishift+1)= t2main_sms(1,nod)
1921 ibuf(p)%p(l2+ishift+2)= t2main_sms(2,nod)
1922 ibuf(p)%p(l2+ishift+3)= t2main_sms(3,nod)
1923 ibuf(p)%p(l2+ishift+4)= t2main_sms(4,nod)
1924 ibuf(p)%p(l2+ishift+5)= t2main_sms(5,nod)
1925 ibuf(p)%p(l2+ishift+6)= t2main_sms(6,nod)
1939 rbuf(p)%p(l+rshift) =i24_time_s(i)
1940 rbuf(p)%p(l+rshift+1) =i24_frfi(1,i)
1941 rbuf(p)%p(l+rshift+2) =i24_frfi(2,i)
1942 rbuf(p)%p(l+rshift+3) =i24_frfi(3,i)
1943 rbuf(p)%p(l+rshift+4) =i24_pene_old(1,i)
1944 rbuf(p)%p(l+rshift+5) =i24_stif_old(1,i)
1945 rbuf(p)%p(l+rshift+6) =i24_pene_old(3,i)
1946 rbuf(p)%p(l+rshift+7) =i24_pene_old(5,i)
1951 IF(istif_msdt > 0)
THEN
1955 rbuf(p)%p(l+rshift) =stifmsdt_s(i)
1961 IF(ifsub_carea > 0)
THEN
1966 rbuf(p)%p(l+rshift) =intarean(nod)
1977 ibuf(p)%p(l2+ishift) =i24_irtlm(1,i)
1978 ibuf(p)%p(l2+ishift+1)=i24_irtlm(2,i)
1979 ibuf(p)%p(l2+ishift+2)=i24_icont_i(i)
1990 ibuf(p)%p(l2+ishift)=nbinflg(i)
2003 IF(nod > numnod)
THEN
2009 ibuf(p)%p(l2+ishift) = abs(tag_sn(n))
2011 ibuf(p)%p(l2+ishift+1) = abs(tag_sn(n))
2013 ibuf(p)%p(l2+ishift+2) = abs(tag_sn(n))
2015 ibuf(p)%p(l2+ishift+3) = abs(tag_sn(n))
2016 ibuf(p)%p(l2+ishift+4) = irtse(5,se)
2017 ibuf(p)%p(l2+ishift+5) = is2pt(nd)
2018 ibuf(p)%p(l2+ishift+7) = ispt2(i)
2019 ibuf(p)%p(l2+ishift+6) = isegpt(i)
2022 ibuf(p)%p(l2+ishift) = 0
2023 ibuf(p)%p(l2+ishift+1) = 0
2024 ibuf(p)%p(l2+ishift+2) = 0
2025 ibuf(p)%p(l2+ishift+3) = 0
2026 ibuf(p)%p(l2+ishift+4) = 0
2027 ibuf(p)%p(l2+ishift+5) = 0
2028 ibuf(p)%p(l2+ishift+7) = ispt2(i)
2029 ibuf(p)%p(l2+ishift+6) = tag_2ry(i)
2047 !
save specifics
irem and xrem indexes
for int24 sorting
2061 IF(intnitsche > 0 )
THEN
2066 rbuf(p)%p(l+rshift) =forneqs(1,nod)
2067 rbuf(p)%p(l+rshift+1) =forneqs(2,nod)
2068 rbuf(p)%p(l+rshift+2) =forneqs(3,nod)
2076 1 rbuf(p)%P(1),nb*rsiz,it_spmd(p),msgtyp,
2081 1 ibuf(p)%P(1),nb*isiz,it_spmd(p),msgtyp,
2090 IF(ircvfrom(nin,loc_proc)/=0)
THEN
2095 IF(isendto(nin,p)/=0)
THEN
2096 IF(loc_proc/=p)
THEN
2098 CALL spmd_recv(
nsnfi(nin)%P(p),1,it_spmd(p),
2101 IF(
nsnfi(nin)%P(p)>0)
THEN
2104 nsnr = nsnr +
nsnfi(nin)%P(p)
2116 ALLOCATE(xrem(rsiz,nsnr),stat=ierror)
2117 ALLOCATE(
irem(isiz,nsnr),stat=ierror)
2120 CALL ancmsg(msgid=20,anmode=aninfo)
2126 len =
nsnfi(nin)%P(p)*rsiz
2130 1 xrem(1,ideb),len,it_spmd(p),
2133 len2 =
nsnfi(nin)%P(p)*isiz
2136 1
irem(1,ideb),len2,it_spmd(p),
2137 2 msgtyp,req_rd2(l))
2139 ideb = ideb +
nsnfi(nin)%P(p)
2142 CALL spmd_waitany(nbirecv,req_rd,indexi)
2143 CALL spmd_waitany(nbirecv,req_rd2,indexi)
2158 len =
nsnfi(nin)%P(p)
2173 IF(ircvfrom(nin,loc_proc)/=0)
THEN
2175 IF(isendto(nin,p)/=0)
THEN
2176 IF(p/=loc_proc)
THEN
2177 CALL spmd_wait(req_sb(p))
2178 CALL spmd_wait(req_sc(p))
2184 IF(isendto(nin,loc_proc)/=0)
THEN
2186 IF(ircvfrom(nin,p)/=0)
THEN
2187 IF(p/=loc_proc)
THEN
2188 CALL spmd_wait(req_sd(p))
2190 CALL spmd_wait(req_sd2(p))
2191 DEALLOCATE(rbuf(p)%p)
2192 CALL spmd_wait(req_sd3(p))
2193 DEALLOCATE(ibuf(p)%p)
2200 IF(
ALLOCATED(tag_sn))
DEALLOCATE(tag_sn)
2201 IF(
ALLOCATED(tag_sn))
DEALLOCATE(indexe)
2223 2 IGAP ,NSNR,MULTIMP,ITY,INTTH ,
2224 3 ILEV ,IEDGE4, H3D_DATA,INTFRIC,
2225 4 INTNITSCHE,ISTIF_MSDT,IFSUB_CAREA,NODADT_THERM)
2236#include "implicit_f.inc"
2240#include "com01_c.inc"
2241#include "task_c.inc"
2242#include "scr14_c.inc"
2243#include "scr16_c.inc"
2244#include "scr18_c.inc"
2245#include "parit_c.inc"
2246#include "spmd_c.inc"
2251 INTEGER RESULT, NIN, NSN, I_STOK, IGAP, NSNR, MULTIMP, ITY,
2252 . CAND_N(*),INTTH,ILEV,IEDGE4,INTFRIC,INTNITSCHE
2253 INTEGER ,
INTENT(IN) :: , IFSUB_CAREA
2254 INTEGER ,
INTENT(IN) :: NODADT_THERM
2255 TYPE(H3D_DATABASE) :: H3D_DATA
2260 INTEGER OLDNSNR,NODFI,NNP,LSKYFI,
2261 . NOD, LOC_PROC, I, N, NN, P, IDEB, J, K,
2262 . IERROR1,IERROR2,IERROR3,IERROR4,IERROR5,IERROR6,IERROR7,
2263 . IERROR8,IERROR9,IERROR0,IERROR11,IERROR12,
2264 . IERROR13,IERROR14,IERROR15,IERROR16,IERROR17,IERROR18,
2265 . index(nsnr),nn2,rshift,ishift,nd
2267 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAUX,IAUXINV
2271 loc_proc = ispmd + 1
2285 IF(
irem(1,nn)>0)
THEN
2299 oldnsnr =
nsnfi(nin)%P(p)
2301 IF(
irem(1,i+ideb)<0 .AND.
irem(8,i+ideb)==1 )
THEN
2307 IF (
irem(1,nd) >0)
THEN
2313 IF (
irem(1,nd) >0)
THEN
2319 IF (
irem(1,nd) >0)
THEN
2325 IF (
irem(1,nd) >0)
THEN
2333 ideb = ideb + oldnsnr
2396 IF(
ASSOCIATED(
nsvfi(nin)%P))
DEALLOCATE(
nsvfi(nin)%P)
2397 ALLOCATE(
nsvfi(nin)%P(nodfi),stat=ierror1)
2398 IF(
ASSOCIATED(
xfi(nin)%P))
DEALLOCATE(
xfi(nin)%P)
2399 ALLOCATE(
xfi(nin)%P(3,nodfi),stat=ierror2)
2400 IF(
ASSOCIATED(
vfi(nin)%P))
DEALLOCATE(
vfi(nin)%P)
2401 ALLOCATE(
vfi(nin)%P(3,nodfi),stat=ierror3)
2402 IF(
ASSOCIATED(
msfi(nin)%P))
DEALLOCATE(
msfi(nin)%P)
2403 ALLOCATE(
msfi(nin)%P(nodfi),stat=ierror4)
2404 IF(
ASSOCIATED(
stifi(nin)%P))
DEALLOCATE(
stifi(nin)%P)
2405 ALLOCATE(
stifi(nin)%P(nodfi),stat=ierror5)
2406 IF(
ASSOCIATED(
itafi(nin)%P))
DEALLOCATE(
itafi(nin)%P)
2407 ALLOCATE(
itafi(nin)%P(nodfi),stat=ierror6)
2408 IF(ity==7.OR.ity==22.OR.ity==23.OR.ity==24)
THEN
2409 IF(
ASSOCIATED(
kinfi(nin)%P))
DEALLOCATE(
kinfi(nin)%P)
2410 ALLOCATE(
kinfi(nin)%P(nodfi),stat=ierror8)
2412 IF(
ASSOCIATED(
tempfi(nin)%P))
DEALLOCATE(
tempfi(nin)%P)
2413 ALLOCATE(
tempfi(nin)%P(nodfi),stat=ierror9)
2414 IF(
ASSOCIATED(
matsfi(nin)%P))
DEALLOCATE(
matsfi(nin)%P)
2415 ALLOCATE(
matsfi(nin)%P(nodfi),stat=ierror0)
2417 ALLOCATE(
areasfi(nin)%P(nodfi),stat=ierror11)
2420 IF(idtmins == 2)
THEN
2422 ALLOCATE(
nodnxfi(nin)%P(nodfi),stat=ierror12)
2424 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror13)
2426 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror14)
2431 ELSEIF(idtmins_int /= 0)
THEN
2433 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror13)
2435 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror14)
2442 IF(
ASSOCIATED(
gapfi(nin)%P))
DEALLOCATE(
gapfi(nin)%P)
2443 ALLOCATE(
gapfi(nin)%P(nodfi),stat=ierror7)
2446 ALLOCATE(
gap_lfi(nin)%P(nodfi),stat=ierror7)
2451 ALLOCATE(
irtlm_fi(nin)%P(2,nodfi),stat=ierror15)
2454 ALLOCATE(
time_sfi(nin)%P(nodfi),stat=ierror16)
2457 ALLOCATE(
secnd_frfi(nin)%P(6,nodfi),stat=ierror16)
2460 ALLOCATE(
pene_oldfi(nin)%P(5,nodfi),stat=ierror16)
2463 ALLOCATE(
stif_oldfi(nin)%P(2,nodfi),stat=ierror16)
2466 ALLOCATE(
icont_i_fi(nin)%P(nodfi),stat=ierror16)
2468 IF(istif_msdt > 0)
THEN
2473 IF(ifsub_carea > 0)
THEN
2475 ALLOCATE(
intareanfi(nin)%P(nodfi),stat=ierror16)
2480 ALLOCATE(
isedge_fi(nin)%P(nodfi),stat=ierror16)
2487 ALLOCATE(
is2pt_fi(nin)%P(nodfi),stat=ierror16)
2490 ALLOCATE(
ispt2_fi(nin)%P(nodfi),stat=ierror16)
2493 ALLOCATE(
isegpt_fi(nin)%P(nodfi),stat=ierror16)
2496 ALLOCATE(
is2se_fi(nin)%P(2,nodfi),stat=ierror16)
2501 IF(intfric > 0 )
THEN
2506 IF(intnitsche > 0 )
THEN
2508 ALLOCATE(
forneqsfi(nin)%P(3,nodfi),stat=ierror18)
2512 IF(ierror1+ierror2+ierror3+ierror4+ierror5+
2513 + ierror6+ierror7+ierror8 + ierror9 + ierror0 +
2514 + ierror11+ierror12+ierror13+ierror14+ierror15+
2515 + ierror16+ierror17+ierror18 /= 0)
THEN
2516 CALL ancmsg(msgid=20,anmode=aninfo)
2527 oldnsnr =
nsnfi(nin)%P(p)
2531 ALLOCATE(iaux(oldnsnr),stat=ierror17)
2532 ALLOCATE(iauxinv(oldnsnr),stat=ierror17)
2533 iauxinv(1:oldnsnr)=0
2534 IF(ierror17/=0)
THEN
2535 CALL ancmsg(msgid=20,anmode=aninfo)
2542 IF(
irem(1,i+ideb)<0)
THEN
2549#include "vectorize.inc"
2552 index(i+ideb) = nn2+j
2553 xfi(nin)%P(1,nn2+j) = xrem(1,i+ideb)
2554 xfi(nin)%P(2,nn2+j) = xrem(2,i+ideb)
2555 xfi(nin)%P(3,nn2+j) = xrem(3,i+ideb)
2556 vfi(nin)%P(1,nn2+j) = xrem(4,i+ideb)
2557 vfi(nin)%P(2,nn2+j) = xrem(5,i+ideb)
2558 vfi(nin)%P(3,nn2+j) = xrem(6,i+ideb)
2559 msfi(nin)%P(nn2+j) = xrem(7,i+ideb)
2560 stifi(nin)%P(nn2+j) = xrem(8,i+ideb)
2578 IF(igap==1 .OR. igap==2)
THEN
2579#include "vectorize.inc"
2582 gapfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
2587#include "vectorize.inc"
2590 gapfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
2591 gap_lfi(nin)%P(nn2+j) = xrem(rshift+1,i+ideb)
2598#include "vectorize.inc"
2601 tempfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
2602 areasfi(nin)%P(nn2+j) = xrem(rshift+1,i+ideb)
2610#include "vectorize.inc"
2620#include "vectorize.inc"
2638 ELSEIF(idtmins_int/=0)
THEN
2639#include "vectorize.inc"
2658#include "vectorize.inc"
2664 time_sfi(nin)%P(nn2+j ) =xrem(rshift,i+ideb)
2668 secnd_frfi(nin)%P(4,nn2+j) =xrem(rshift+1,i+ideb)
2669 secnd_frfi(nin)%P(5,nn2+j) =xrem(rshift+2,i+ideb)
2670 secnd_frfi(nin)%P(6,nn2+j) =xrem(rshift+3,i+ideb)
2673 pene_oldfi(nin)%P(2,nn2+j)=xrem(rshift+4,i+ideb)
2674 stif_oldfi(nin)%P(2,nn2+j)=xrem(rshift+5,i+ideb)
2677 pene_oldfi(nin)%P(4,nn2+j)=xrem(rshift+6,i+ideb)
2678 pene_oldfi(nin)%P(5,nn2+j)=xrem(rshift+7,i+ideb)
2684 IF(istif_msdt > 0)
THEN
2685#include "vectorize.inc"
2695 IF(ifsub_carea > 0)
THEN
2696#include "vectorize.inc"
2699 intareanfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
2705 IF (ilev==2) ishift = ishift + 1
2710 IF(
irem(8,i+ideb)==1)
THEN
2711 nd =
irem(ishift,i+ideb)
2714 nd =
irem(ishift+1,i+ideb)
2715 irtse_fi(nin)%P(2,nn2+j) = index(nd)
2717 nd =
irem(ishift+2,i+ideb)
2718 irtse_fi(nin)%P(3,nn2+j) = index(nd)
2720 nd =
irem(ishift+3,i+ideb)
2721 irtse_fi(nin)%P(4,nn2+j) = index(nd)
2737 IF(
irem(ishift+6,i+ideb) > 0)
THEN
2751 IF(intnitsche > 0 )
THEN
2753#include "vectorize.inc"
2756 forneqsfi(nin)%P(1,nn2+j) = xrem(rshift,i+ideb)
2757 forneqsfi(nin)%P(2,nn2+j) = xrem(rshift+1,i+ideb)
2758 forneqsfi(nin)%P(3,nn2+j) = xrem(rshift+2,i+ideb)
2765 ideb = ideb + oldnsnr
2766 nsnfi(nin)%P(p) = nn2-nnp
2775 lskyfi = nn2*multimax
2782 IF(
ALLOCATED(xrem))
DEALLOCATE(xrem)
2783 IF(
ALLOCATED(
irem))
DEALLOCATE(
irem)
2790 IF(intth == 0 )
THEN
2796 IF(
ASSOCIATED(
afi(nin)%P))
THEN
2797 DEALLOCATE(
afi(nin)%P)
2800 IF(
ASSOCIATED(
stnfi(nin)%P))
THEN
2801 DEALLOCATE(
stnfi(nin)%P)
2805 IF(nodfi>0)
ALLOCATE(
afi(nin)%P(3,nodfi*nthread),stat=ierror1)
2806 IF(nodfi>0)
ALLOCATE(
stnfi(nin)%P(nodfi*nthread),stat=ierror2)
2808 DO i = 1, nodfi*nthread
2809 afi(nin)%P(1,i) = zero
2810 afi(nin)%P(2,i) = zero
2811 afi(nin)%P(3,i) = zero
2812 stnfi(nin)%P(i) = zero
2816 IF(
ASSOCIATED(
vscfi(nin)%P))
DEALLOCATE(
vscfi(nin)%P)
2817 IF(nodfi>0)
ALLOCATE(
vscfi(nin)%P(nodfi*nthread),stat
2819 DO i = 1, nodfi*nthread
2820 vscfi(nin)%P(i) = zero
2829 IF(
ASSOCIATED(
fskyfi(nin)%P))
DEALLOCATE(
fskyfi(nin)%P)
2830 IF(
ASSOCIATED(
iskyfi(nin)%P))
DEALLOCATE(
iskyfi(nin)%P)
2835 ALLOCATE(
fskyfi(nin)%P(4,lskyfi),stat=ierror2)
2837 ALLOCATE(
fskyfi(nin)%P(5,lskyfi),stat=ierror2)
2846 IF(
ASSOCIATED(
afi(nin)%P))
DEALLOCATE(
afi(nin)%P)
2847 IF(
ASSOCIATED(
stnfi(nin)%P))
DEALLOCATE(
stnfi(nin)%P)
2848 IF(
ASSOCIATED(
fthefi(nin)%P))
DEALLOCATE(
fthefi(nin)%P)
2849 IF(nodfi>0)
ALLOCATE(
afi(nin)%P(3,nodfi*nthread),stat=ierror1)
2850 IF(nodfi>0)
ALLOCATE(
stnfi(nin)%P(nodfi*nthread),stat=ierror2)
2851 IF(nodfi>0)
ALLOCATE(
fthefi(nin)%P(nodfi*nthread),stat=ierror3)
2853 IF(nodadt_therm ==1)
THEN
2855 IF(nodfi>0.AND.nodadt_therm ==1)
ALLOCATE(
condnfi(nin)%P(nodfi*nthread),stat=ierror4)
2862 DO i = 1, nodfi*nthread
2863 afi(nin)%P(1,i) = zero
2864 afi(nin)%P(2,i) = zero
2865 afi(nin)%P(3,i) = zero
2866 stnfi(nin)%P(i) = zero
2869 IF(nodadt_therm ==1)
THEN
2876 IF(
ASSOCIATED(
vscfi(nin)%P))
DEALLOCATE(
vscfi(nin)%P)
2877 IF(nodfi>0)
ALLOCATE(
vscfi(nin)%P(nodfi),stat=ierror4)
2880 vscfi(nin)%P(i) = zero
2888 IF(
ASSOCIATED(
fskyfi(nin)%P))
DEALLOCATE(
fskyfi(nin)%P)
2889 IF(
ASSOCIATED(
iskyfi(nin)%P))
DEALLOCATE(
iskyfi(nin)%P)
2893 ALLOCATE(
iskyfi(nin)%P(lskyfi),stat=ierror1)
2895 ALLOCATE(
fskyfi(nin)%P(4,lskyfi),stat=ierror2)
2896 ALLOCATE(
ftheskyfi(nin)%P(lskyfi),stat=ierror3)
2898 ALLOCATE(
fskyfi(nin)%P(5,lskyfi),stat=ierror2)
2899 ALLOCATE(
ftheskyfi(nin)%P(lskyfi),stat=ierror3)
2904 IF(nodadt_therm ==1)
THEN
2906 IF(lskyfi>0)
ALLOCATE(
condnskyfi(nin)%P(lskyfi),stat=ierror4)
2913 IF(ierror1+ierror2+ierror3+ierror4/=0)
THEN
2914 CALL ancmsg(msgid=20,anmode=aninfo)
2920 IF(anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT >0)
THEN
2923 ALLOCATE(
fnconti(nin)%P(3,nodfi),stat=ierror1)
2924 ALLOCATE(
ftconti(nin)%P(3,nodfi),stat=ierror2)
2925 IF(ierror1+ierror2/=0)
THEN
2926 CALL ancmsg(msgid=20,anmode=aninfo)
2940 IF(h3d_data%N_SCAL_CSE_FRICINT >0)
THEN
2941 IF(h3d_data%N_CSE_FRIC_INTER (nin) >0)
THEN
2943 ALLOCATE(
efricfi(nin)%P(nodfi),stat=ierror1)
2945 CALL ancmsg(msgid=20,anmode=aninfo)
2954 IF(h3d_data%N_SCAL_CSE_FRIC >0)
THEN
2956 ALLOCATE(
efricgfi(nin)%P(nodfi),stat=ierror1)
2958 CALL ancmsg(msgid=20,anmode=aninfo)
2974 cand_n(i) = index(nn)+nsn
3001 2 IGAP ,NSNR ,MULTIMP ,ITY ,INTTH ,
3002 3 ILEV ,NSNFIOLD,IPARI ,H3D_DATA,INTFRIC,
3003 4 MULTI_FVM,NODADT_THERM)
3015#include "implicit_f.inc"
3019#include "com01_c.inc"
3020#include "com04_c.inc"
3021#include "task_c.inc"
3022#include "scr14_c.inc"
3023#include "scr16_c.inc"
3024#include "scr18_c.inc"
3025#include "param_c.inc"
3026#include "parit_c.inc"
3027#include "spmd_c.inc"
3032 INTEGER RESULT, NIN, NSN, I_STOK, IGAP, NSNR, MULTIMP, ITY,
3033 . CAND_N(*),INTTH,ILEV, INTFRIC,
3034 . NSNFIOLD(*), IPARI(NPARI,NINTER)
3035 INTEGER ,
INTENT(IN) :: NODADT_THERM
3036 TYPE(H3D_DATABASE) :: H3D_DATA
3037 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
3042 INTEGER OLDNSNR,NODFI,NNP,LSKYFI,
3043 . NOD, LOC_PROC, I, N, NN, P, IDEB, J, K,
3044 . IERROR1,IERROR2,IERROR3,IERROR4,IERROR5,IERROR6,IERROR7,
3045 . IERROR8,IERROR9,IERROR0,IERROR11,IERROR12,
3046 . ierror13,ierror14,ierror15,ierror16,ierror17,index(nsnr),
3047 . nn2,rshift,ishift, ioldnsnfi, nd, jdeb, nsnr_old, q
3049 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAUX
3053 loc_proc = ispmd + 1
3067 IF(
irem(1,nn)>0)
THEN
3094 IF(
ASSOCIATED(
nsvfi(nin)%P))
DEALLOCATE(
nsvfi(nin)%P)
3095 ALLOCATE(
nsvfi(nin)%P(nodfi),stat=ierror1)
3097 ALLOCATE(
pmainfi(nin)%P(nodfi),stat=ierror2)
3098 ierror1 = ierror2 + ierror1
3099 IF(
ASSOCIATED(
xfi(nin)%P))
DEALLOCATE(
xfi(nin)%P)
3100 ALLOCATE(
xfi(nin)%P(3,nodfi),stat=ierror2)
3101 IF(
ASSOCIATED(
vfi(nin)%P))
DEALLOCATE(
vfi(nin)%P)
3102 ALLOCATE(
vfi(nin)%P(3,nodfi),stat=ierror3)
3103 IF(
ASSOCIATED(
msfi(nin)%P))
DEALLOCATE(
msfi(nin)%P)
3104 ALLOCATE(
msfi(nin)%P(nodfi),stat=ierror4)
3105 IF(
ASSOCIATED(
stifi(nin)%P))
DEALLOCATE(
stifi(nin)%P)
3106 ALLOCATE(
stifi(nin)%P(nodfi),stat=ierror5)
3107 IF(
ASSOCIATED(
itafi(nin)%P))
DEALLOCATE(
itafi(nin)%P)
3108 ALLOCATE(
itafi(nin)%P(nodfi),stat=ierror6)
3109 IF(ity==7.OR.ity==22.OR.ity==23.OR.ity==24)
THEN
3110 IF(
ASSOCIATED(
kinfi(nin)%P))
DEALLOCATE(
kinfi(nin)%P)
3111 ALLOCATE(
kinfi(nin)%P(nodfi),stat=ierror8)
3113 IF(
ASSOCIATED(
tempfi(nin)%P))
DEALLOCATE(
tempfi(nin)%P)
3114 ALLOCATE(
tempfi(nin)%P(nodfi),stat=ierror9)
3115 IF(
ASSOCIATED(
matsfi(nin)%P))
DEALLOCATE(
matsfi(nin)%P)
3116 ALLOCATE(
matsfi(nin)%P(nodfi),stat=ierror0)
3118 ALLOCATE(
areasfi(nin)%P(nodfi),stat=ierror11)
3121 IF(idtmins == 2)
THEN
3123 ALLOCATE(
nodnxfi(nin)%P(nodfi),stat=ierror12)
3125 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror13)
3127 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror14)
3128 ELSEIF(idtmins_int /= 0)
THEN
3130 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror13)
3132 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror14)
3135 IF(
ASSOCIATED(
gapfi(nin)%P))
DEALLOCATE(
gapfi(nin)%P)
3136 ALLOCATE(
gapfi(nin)%P(nodfi),stat=ierror7)
3139 ALLOCATE(
gap_lfi(nin)%P(nodfi),stat=ierror7)
3144 ALLOCATE(
irtlm_fi(nin)%P(2,nodfi),stat=ierror15)
3147 ALLOCATE(
time_sfi(nin)%P(nodfi),stat=ierror16)
3150 ALLOCATE(
secnd_frfi(nin)%P(6,nodfi),stat=ierror16)
3153 ALLOCATE(
pene_oldfi(nin)%P(5,nodfi),stat=ierror16)
3156 ALLOCATE(
stif_oldfi(nin)%P(2,nodfi),stat=ierror16)
3159 ALLOCATE(
icont_i_fi(nin)%P(nodfi),stat=ierror16)
3163 IF(intfric > 0 )
THEN
3171 IF( multi_fvm%IS_INT18_LAW151.AND.iparit/=0 )
THEN
3174 IF( multi_fvm%INT18_GLOBAL_LIST(nin) )
THEN
3175 IF(
ALLOCATED( multi_fvm%R_AFI(nin)%R_FORCE_INT ) )
DEALLOCATE( multi_fvm%R_AFI(nin)%R_FORCE_INT )
3176 multi_fvm%R_AFI(nin)%NODFI = nodfi
3177 ALLOCATE( multi_fvm%R_AFI(nin)%R_FORCE_INT(3,6,nodfi*nthread) )
3178 multi_fvm%R_AFI(nin)%R_FORCE_INT(1:3,1:6,1:nodfi*nthread) = 0d+00
3184 IF(ierror1+ierror2+ierror3+ierror4+ierror5+
3185 + ierror6+ierror7+ierror8 + ierror9 + ierror0 +
3186 + ierror11+ierror12+ierror13+ierror14+ierror15+
3187 + ierror16+ierror17/= 0)
THEN
3188 CALL ancmsg(msgid=20,anmode=aninfo)
3201 oldnsnr =
nsnfi(nin)%P(p)
3205 ALLOCATE(iaux(oldnsnr),stat=ierror17)
3206 IF(ierror17/=0)
THEN
3207 CALL ancmsg(msgid=20,anmode=aninfo)
3214 IF(
irem(1,i+ideb)<0)
THEN
3221#include "vectorize.inc"
3224 index(i+ideb) = nn2+j
3225 xfi(nin)%P(1,nn2+j) = xrem(1,i+ideb)
3226 xfi(nin)%P(2,nn2+j) = xrem(2,i+ideb)
3227 xfi(nin)%P(3,nn2+j) = xrem(3,i+ideb)
3228 vfi(nin)%P(1,nn2+j) = xrem(4,i+ideb)
3229 vfi(nin)%P(2,nn2+j) = xrem(5,i+ideb)
3230 vfi(nin)%P(3,nn2+j) = xrem(6,i+ideb)
3231 msfi(nin)%P(nn2+j) = xrem(7,i+ideb)
3232 stifi(nin)%P(nn2+j) = xrem(8,i+ideb)
3251 IF(igap==1 .OR. igap==2)
THEN
3252#include "vectorize.inc"
3255 gapfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
3260#include "vectorize.inc"
3263 gapfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
3264 gap_lfi(nin)%P(nn2+j) = xrem(rshift+1,i+ideb)
3271#include "vectorize.inc"
3274 tempfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
3275 areasfi(nin)%P(nn2+j) = xrem(rshift+1,i+ideb)
3284#include "vectorize.inc"
3294#include "vectorize.inc"
3304 ELSEIF(idtmins_int/=0)
THEN
3305#include "vectorize.inc"
3316#include "vectorize.inc"
3322 time_sfi(nin)%P(nn2+j ) =xrem(rshift,i+ideb)
3326 secnd_frfi(nin)%P(4,nn2+j) =xrem(rshift+1,i+ideb)
3327 secnd_frfi(nin)%P(5,nn2+j) =xrem(rshift+2,i+ideb)
3328 secnd_frfi(nin)%P(6,nn2+j) =xrem(rshift+3,i+ideb)
3331 pene_oldfi(nin)%P(2,nn2+j)=xrem(rshift+4,i+ideb)
3332 stif_oldfi(nin)%P(2,nn2+j)=xrem(rshift+5,i+ideb)
3335 pene_oldfi(nin)%P(4,nn2+j)=xrem(rshift+6,i+ideb)
3336 pene_oldfi(nin)%P(5,nn2+j)=xrem(rshift+7,i+ideb)
3340 IF (ilev==2) ishift = ishift + 1
3345 ideb = ideb + oldnsnr
3346 nsnfi(nin)%P(p) = nn2-nnp
3354 lskyfi = nn2*multimax
3361 IF(
ALLOCATED(xrem))
DEALLOCATE(xrem)
3362 IF(
ALLOCATED(
irem))
DEALLOCATE(
irem)
3369 IF(intth == 0 )
THEN
3375 IF(
ASSOCIATED(
afi(nin)%P))
THEN
3376 DEALLOCATE(
afi(nin)%P)
3379 IF(
ASSOCIATED(
stnfi(nin)%P))
THEN
3380 DEALLOCATE(
stnfi(nin)%P)
3384 IF(nodfi>0)
ALLOCATE(
afi(nin)%P(3,nodfi*nthread),stat=ierror1)
3385 IF(nodfi>0)
ALLOCATE(
stnfi(nin)%P(nodfi*nthread),stat=ierror2)
3387 DO i = 1, nodfi*nthread
3388 afi(nin)%P(1,i) = zero
3389 afi(nin)%P(2,i) = zero
3390 afi(nin)%P(3,i) = zero
3391 stnfi(nin)%P(i) = zero
3395 IF(
ASSOCIATED(
vscfi(nin)%P))
DEALLOCATE(
vscfi(nin)%P)
3396 IF(nodfi>0)
ALLOCATE(
vscfi(nin)%P(nodfi*nthread),stat=ierror3)
3398 DO i = 1, nodfi*nthread
3399 vscfi(nin)%P(i) = zero
3414 IF(
ASSOCIATED(
afi(nin)%P))
DEALLOCATE(
afi(nin)%P)
3415 IF(
ASSOCIATED(
stnfi(nin)%P))
DEALLOCATE(
stnfi(nin)%P)
3416 IF(
ASSOCIATED(
fthefi(nin)%P))
DEALLOCATE(
fthefi(nin)%P)
3417 IF(nodfi>0)
ALLOCATE(
afi(nin)%P(3,nodfi*nthread),stat=ierror1)
3418 IF(nodfi>0)
ALLOCATE(
stnfi(nin)%P(nodfi*nthread),stat=ierror2)
3419 IF(nodfi>0)
ALLOCATE(
fthefi(nin)%P(nodfi*nthread),stat=ierror3)
3421 IF(nodadt_therm ==1)
THEN
3423 IF(nodfi>0.AND.nodadt_therm ==1)
ALLOCATE(
condnfi(nin)%P(nodfi*nthread),stat=ierror4)
3430 DO i = 1, nodfi*nthread
3431 afi(nin)%P(1,i) = zero
3432 afi(nin)%P(2,i) = zero
3433 afi(nin)%P(3,i) = zero
3434 stnfi(nin)%P(i) = zero
3437 IF(nodadt_therm ==1)
THEN
3444 IF(
ASSOCIATED(
vscfi(nin)%P))
DEALLOCATE(
vscfi(nin)%P)
3445 IF(nodfi>0)
ALLOCATE(
vscfi(nin)%P(nodfi),stat=ierror4)
3448 vscfi(nin)%P(i) = zero
3461 IF(ierror1+ierror2+ierror3+ierror4/=0)
THEN
3468 IF(anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT >0)
THEN
3471 ALLOCATE(
fnconti(nin)%P(3,nodfi),stat=ierror1)
3472 ALLOCATE(
ftconti(nin)%P(3,nodfi),stat=ierror2)
3473 IF(ierror1+ierror2/=0)
THEN
3474 CALL ancmsg(msgid=20,anmode=aninfo)
3488 IF(h3d_data%N_SCAL_CSE_FRICINT >0)
THEN
3489 IF(h3d_data%N_CSE_FRIC_INTER (nin) >0)
THEN
3491 ALLOCATE(
efricfi(nin)%P(nodfi),stat=ierror1)
3493 CALL ancmsg(msgid=20,anmode=aninfo)
3502 IF(h3d_data%N_SCAL_CSE_FRIC >0)
THEN
3504 ALLOCATE(
efricgfi(nin)%P(nodfi),stat=ierror1)
3506 CALL ancmsg(msgid=20,anmode=aninfo)
3522 cand_n(i) = index(nn)+nsn
3546 2 BMINMAL ,WEIGHT ,STIFN ,NIN ,ISENDTO,
3547 3 IRCVFROM,IAD_ELEM,FR_ELEM,NSNR,IGAP ,
3548 4 GAP_S ,NSNFIOLD,NODNX_SMS,ITAB,ITIED)
3558#include "implicit_f.inc"
3562#include "com01_c.inc"
3563#include "com04_c.inc"
3565#include "task_c.inc"
3569 INTEGER NIN, NSN, IGAP,
3570 . nsnfiold(*), nsv(*), weight(*), itab(*),
3571 . isendto(ninter+1,*), ircvfrom(ninter+1,*),
3572 . iad_elem(2,*), fr_elem(*), nodnx_sms(*),nsnr
3573 INTEGER,
INTENT(IN) :: ITIED
3575 . X(3,*), V(3,*), MS(*), BMINMAL(*), STIFN(*), GAP_S(*)
3581 INTEGER MSGTYP, I, NOD, LOC_PROC, P, IDEB,
3582 . J, L, BUFSIZ, LEN, NB, IERROR1,
3583 . IERROR,REQ_SB(NSPMD),
3584 . REQ_RB(NSPMD),KK,NBIRECV,IRINDEXI(NSPMD),
3585 . REQ_RD(NSPMD),REQ_SD(NSPMD),REQ_SD2(NSPMD),
3586 . INDEXI,ISINDEXI(NSPMD),INDEX(NUMNOD),NBOX(NSPMD),
3587 . msgoff, msgoff2, msgoff3, msgoff4,
3588 . req_rd2(nspmd), req_sd3(nspmd),
3589 . rsiz, isiz,rshift,ishift,len2,l2
3596 my_real bminma(6,nspmd), ratio
3597 TYPE(real_pointer),
DIMENSION(NSPMD) :: RBUF
3598 TYPE(int_pointer) ,
DIMENSION(NSPMD) :: IBUF
3608 nsnfiold(p) =
nsnfi(nin)%P(p)
3611 loc_proc = ispmd + 1
3615 IF(ircvfrom(nin,loc_proc)==0.AND.
3616 . isendto(nin,loc_proc)==0)
RETURN
3617 bminma(1,loc_proc) = bminmal(1)
3618 bminma(2,loc_proc) = bminmal(2)
3619 bminma(3,loc_proc) = bminmal(3)
3620 bminma(4,loc_proc) = bminmal(4)
3621 bminma(5,loc_proc) = bminmal(5)
3622 bminma(6,loc_proc) = bminmal(6)
3626 IF(ircvfrom(nin,loc_proc)/=0)
THEN
3628 IF(isendto(nin,p)/=0)
THEN
3629 IF(p/=loc_proc)
THEN
3632 . bminma(1,loc_proc),6 ,it_spmd(p),msgtyp,
3641 IF(isendto(nin,loc_proc)/=0)
THEN
3644 IF(ircvfrom(nin,p)/=0)
THEN
3645 IF(loc_proc/=p)
THEN
3650 . bminma(1,p) ,6 ,it_spmd(p),msgtyp,
3669 IF(idtmins == 2)
THEN
3672 ELSEIF(idtmins_int/=0)
THEN
3677 IF(isendto(nin,loc_proc)/=0)
THEN
3679 CALL spmd_waitany(nbirecv,req_rb,indexi)
3685 weight(nod) = weight(nod)*(-1)
3693 IF(weight(nod)==1)
THEN
3699 IF(stifn(i)>zero)
THEN
3700 IF(x(1,nod)<=bminma(1,p))
THEN
3701 IF(x(1,nod)>=bminma(4,p))
THEN
3702 IF(x(2,nod)<=bminma(2,p))
THEN
3703 IF(x(2,nod)>=bminma(5,p))
THEN
3704 IF(x(3,nod)<=bminma(3,p))
THEN
3705 IF(x(3,nod)>=bminma(6,p))
THEN
3720 DO j = iad_elem(1,p), iad_elem(1,p+1)-1
3723 weight(nod) = weight(nod)*(-1)
3729 CALL spmd_isend(nbox(p),1,it_spmd(p),msgtyp,
3735 ALLOCATE(rbuf(p)%P(rsiz*nb),stat=ierror)
3736 ALLOCATE(ibuf(p)%P(isiz*nb),stat=ierror)
3738 CALL ancmsg(msgid=20,anmode=aninfo)
3748 rbuf(p)%p(l+1) = x(1,nod)
3749 rbuf(p)%p(l+2) = x(2,nod)
3750 rbuf(p)%p(l+3) = x(3,nod
3751 rbuf(p)%p(l+4) = v(1,nod)
3752 rbuf(p)%p(l+5) = v(2,nod)
3753 rbuf(p)%p(l+6) = v(3,nod)
3754 rbuf(p)%p(l+7) = ms(nod)
3755 rbuf(p)%p(l+8) = stifn(i)
3757 ibuf(p)%p(l2+2) = itab(nod)
3774 rbuf(p)%p(l+rshift)= gap_s(i)
3786 ibuf(p)%p(l2+ishift) = nodnx_sms(nod)
3787 ibuf(p)%p(l2+ishift+1)= nod
3792 ELSEIF(idtmins_int/=0)
THEN
3798 ibuf(p)%p(l2+ishift)= nod
3805 1 rbuf(p)%P(1),nb*rsiz,it_spmd(p),
3806 2 msgtyp,req_sd2(p))
3810 1 ibuf(p)%P(1),nb*isiz,it_spmd(p),msgtyp,
3819 IF(ircvfrom(nin,loc_proc)/=0)
THEN
3824 IF(isendto(nin,p)/=0)
THEN
3825 IF(loc_proc/=p)
THEN
3827 CALL spmd_recv(
nsnfi(nin)%P(p),1,it_spmd(p),
3829 IF(
nsnfi(nin)%P(p)>0)
THEN
3832 nsnr = nsnr +
nsnfi(nin)%P(p)
3842 ALLOCATE(xrem(rsiz,nsnr),stat=ierror)
3844 ALLOCATE(
irem(isiz,nsnr),stat=ierror1)
3845 ierror=ierror+ierror1
3848 CALL ancmsg(msgid=20,anmode=aninfo)
3855 len =
nsnfi(nin)%P(p)*rsiz
3859 1 xrem(1,ideb),len,it_spmd(p),
3862 len2 =
nsnfi(nin)%P(p)*isiz
3865 1
irem(1,ideb),len2,it_spmd(p),
3866 2 msgtyp,req_rd2(l))
3868 ideb = ideb +
nsnfi(nin)%P(p)
3872 CALL spmd_waitany(nbirecv,req_rd,indexi)
3873 CALL spmd_waitany(nbirecv,req_rd2,indexi)
3879 IF(ircvfrom(nin,loc_proc)/=0)
THEN
3881 IF(isendto(nin,p)/=0)
THEN
3882 IF(p/=loc_proc)
THEN
3883 CALL spmd_wait(req_sb(p))
3889 IF(isendto(nin,loc_proc)/=0)
THEN
3891 IF(ircvfrom(nin,p)/=0)
THEN
3892 IF(p/=loc_proc)
THEN
3893 CALL spmd_wait(req_sd(p))
3895 CALL spmd_wait(req_sd2(p))
3896 DEALLOCATE(rbuf(p)%p)
3897 CALL spmd_wait(req_sd3(p))
3898 DEALLOCATE(ibuf(p)%p)
3924 2 IGAP ,NSNR,MULTIMP,ITY,INTTH,H3D_DATA)
3935#include "implicit_f.inc"
3939#include "com01_c.inc"
3940#include "task_c.inc"
3941#include "scr14_c.inc"
3942#include "scr16_c.inc"
3943#include "scr18_c.inc"
3944#include "parit_c.inc"
3945#include "spmd_c.inc"
3950 INTEGER RESULT, NIN, NSN, I_STOK, IGAP, NSNR, MULTIMP, ,
3952 TYPE(H3D_DATABASE) :: H3D_DATA
3957 INTEGER OLDNSNR,NODFI,NNP,LSKYFI,
3958 . NOD, LOC_PROC, I, N, NN, P, IDEB, J, K,
3959 . IERROR1,IERROR2,IERROR3,IERROR4,IERROR5,IERROR6,IERROR7,
3960 . IERROR8,IERROR9,IERROR10,IERROR11,IERROR12,IERROR13,
3961 . INDEX(NSNR),NN2,RSHIFT,ISHIFT
3963 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAUX
3967 loc_proc = ispmd + 1
3981 IF(
irem(1,nn)>0)
THEN
4004 IF(
ASSOCIATED(
nsvfi(nin)%P))
DEALLOCATE(
nsvfi(nin)%P)
4005 ALLOCATE(
nsvfi(nin)%P(nodfi),stat=ierror1)
4006 IF(
ASSOCIATED(
xfi(nin)%P))
DEALLOCATE(
xfi(nin)%P)
4007 ALLOCATE(
xfi(nin)%P(3,nodfi),stat=ierror2)
4008 IF(
ASSOCIATED(
vfi(nin)%P))
DEALLOCATE(
vfi(nin)%P)
4009 ALLOCATE(
vfi(nin)%P(3,nodfi),stat=ierror3)
4010 IF(
ASSOCIATED(
msfi(nin)%P))
DEALLOCATE(
msfi(nin)%P)
4011 ALLOCATE(
msfi(nin)%P(nodfi),stat=ierror4)
4012 IF(
ASSOCIATED(
stifi(nin)%P))
DEALLOCATE(
stifi(nin)%P)
4013 ALLOCATE(
stifi(nin)%P(nodfi),stat=ierror5)
4014 IF(
ASSOCIATED(
itafi(nin)%P))
DEALLOCATE(
itafi(nin)%P)
4015 ALLOCATE(
itafi(nin)%P(nodfi),stat=ierror6)
4016 IF(idtmins == 2)
THEN
4018 ALLOCATE(
nodnxfi(nin)%P(nodfi),stat=ierror7)
4020 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror8)
4022 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror9)
4023 ELSEIF(idtmins_int /= 0)
THEN
4025 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror10)
4027 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror11)
4030 IF(
ASSOCIATED(
gapfi(nin)%P))
DEALLOCATE(
gapfi(nin)%P)
4031 ALLOCATE(
gapfi(nin)%P(nodfi),stat=ierror12)
4034 ALLOCATE(
gap_lfi(nin)%P(nodfi),stat=ierror12)
4038 IF((ierror1+ierror2+ierror3+ierror4+ierror5+
4039 + ierror6+ierror7+ierror8 + ierror9 + ierror10 +
4040 + ierror11+ierror12)>0)
THEN
4041 CALL ancmsg(msgid=20,anmode=aninfo)
4052 oldnsnr =
nsnfi(nin)%P(p)
4056 ALLOCATE(iaux(oldnsnr),stat=ierror13)
4057 IF(ierror13/=0)
THEN
4058 CALL ancmsg(msgid=20,anmode=aninfo)
4065 IF(
irem(1,i+ideb)<0)
THEN
4072#include "vectorize.inc"
4075 index(i+ideb) = nn2+j
4076 xfi(nin)%P(1,nn2+j) = xrem(1,i+ideb)
4077 xfi(nin)%P(2,nn2+j) = xrem(2,i+ideb)
4078 xfi(nin)%P(3,nn2+j) = xrem(3,i+ideb)
4079 vfi(nin)%P(1,nn2+j) = xrem(4,i+ideb)
4080 vfi(nin)%P(2,nn2+j) = xrem(5,i+ideb)
4081 vfi(nin)%P(3,nn2+j) = xrem(6,i+ideb)
4082 msfi(nin)%P(nn2+j) = xrem(7,i+ideb)
4083 stifi(nin)%P(nn2+j) = xrem(8,i+ideb)
4094#include "vectorize.inc"
4097 gapfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
4104#include "vectorize.inc"
4113 ELSEIF(idtmins_int/=0)
THEN
4115#include "vectorize.inc"
4124 ideb = ideb + oldnsnr
4125 nsnfi(nin)%P(p) = nn2-nnp
4133 lskyfi = nn2*multimax
4140 IF(
ALLOCATED(xrem))
DEALLOCATE(xrem)
4141 IF(
ALLOCATED(
irem))
DEALLOCATE(
irem)
4151 IF(
ASSOCIATED(
afi(nin)%P))
DEALLOCATE(
afi(nin)%P)
4152 IF(
ASSOCIATED(
stnfi(nin)%P))
DEALLOCATE(
stnfi(nin)%P)
4153 IF(nodfi>0)
ALLOCATE(
afi(nin)%P(3,nodfi*nthread),stat=ierror1)
4154 IF(nodfi>0)
ALLOCATE(
stnfi(nin)%P(nodfi*nthread),stat=ierror2)
4156 DO i = 1, nodfi*nthread
4157 afi(nin)%P(1,i) = zero
4158 afi(nin)%P(2,i) = zero
4159 afi(nin)%P(3,i) = zero
4160 stnfi(nin)%P(i) = zero
4164 IF(
ASSOCIATED(
vscfi(nin)%P))
DEALLOCATE(
vscfi(nin)%P)
4165 IF(nodfi>0)
ALLOCATE(
vscfi(nin)%P(nodfi*nthread),stat=ierror3)
4167 DO i = 1, nodfi*nthread
4168 vscfi(nin)%P(i) = zero
4178 IF(
ASSOCIATED(
fskyfi(nin)%P))
DEALLOCATE(
fskyfi(nin)%P)
4179 IF(
ASSOCIATED(
iskyfi(nin)%P))
DEALLOCATE(
iskyfi(nin)%P)
4182 ALLOCATE(
iskyfi(nin)%P(lskyfi),stat=ierror1)
4184 ALLOCATE(
fskyfi(nin)%P(4,lskyfi),stat=ierror2)
4186 ALLOCATE(
fskyfi(nin)%P(5,lskyfi),stat=ierror2)
4191 IF(ierror1+ierror2+ierror3+ierror4/=0)
THEN
4192 CALL ancmsg(msgid=20,anmode=aninfo)
4198 IF(anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT >0)
THEN
4201 ALLOCATE(
fnconti(nin)%P(3,nodfi),stat=ierror1)
4202 ALLOCATE(
ftconti(nin)%P(3,nodfi),stat=ierror2)
4203 IF(ierror1+ierror2/=0)
THEN
4204 CALL ancmsg(msgid=20,anmode=aninfo)
4224 cand_n(i) = index(nn)+nsn
4389 1 IRECTS ,NRTS ,X ,V ,MS ,
4390 2 BMINMAL ,WEIGHT ,STIFS ,NIN ,ISENDTO,
4391 3 IRCVFROM,IAD_ELEM ,FR_ELEM,NRTSR ,INACTI ,
4392 4 GAP_S ,PENIS ,ITAB ,IGAP ,TZINF ,
4393 5 NODNX_SMS,GAP_S_L ,NSNFIOLD,IFORM,INTTH ,
4394 6 IELEC , AREAS ,TEMP ,NISUB,ADDSUBS,
4395 7 LISUBS ,INTFRIC ,IPARTFRICS,INFLG_SUBS)
4405#include "implicit_f.inc"
4409#include "com01_c.inc"
4410#include "com04_c.inc"
4411#include "task_c.inc"
4412#include "timeri_c.inc"
4417 INTEGER NIN, INACTI, IGAP, NRTS,NRTSR, INTFRIC,
4418 . weight(*),irects(2,nrts),
4419 . isendto(ninter+1,*), ircvfrom(ninter+1,*),
4420 . iad_elem(2,*), fr_elem(*), itab(*),
4421 . nodnx_sms(*),nsnfiold(*),iform,intth,ielec(*),
4422 . nisub,addsubs(*),lisubs(*),ipartfrics(*),inflg_subs(*)
4425 . x(3,*), v(3,*), ms(*), bminmal(6),
4426 . stifs(nrts), gap_s(nrts),
4427 . gap_s_l(*), tzinf, penis(2,*),areas(*),temp(*)
4432 INTEGER MSGTYP, I, LOC_PROC, P, IDEB,
4433 . MSGOFF, MSGOFF2, MSGOFF3, MSGOFF4,
4434 . SIZ,J, L, LEN, , IERROR1, IAD,
4435 . IERROR,REQ_SB(NSPMD),
4436 . REQ_RB(),KK,NBIRECV,IRINDEXI(NSPMD),
4437 . REQ_RD(NSPMD),REQ_SD(NSPMD),REQ_SD2(NSPMD),
4438 . REQ_RC(NSPMD),REQ_SC(NSPMD),
4439 . INDEXI,ISINDEXI(NSPMD),INDEX(),NBOX(NSPMD),
4440 . NBX,NBY,NBZ,IX,IY,IZ, N1, N2,
4441 . ix1,iy1,iz1,ix2,iy2,iz2, nod,
4442 . rsiz, isiz, l2, req_sd3(nspmd),
4443 . req_rd2(nspmd), rshift, ishift, len2, k,ll
4446 . xmaxb,ymaxb,zmaxb,xminb,yminb,zminb,
4447 . xmins, ymins, zmins, xmaxs, ymaxs, zmaxs,
4450 TYPE(real_pointer),
DIMENSION(NSPMD) :: RBUF
4451 TYPE(int_pointer) ,
DIMENSION(NSPMD) :: IBUF
4465 loc_proc = ispmd + 1
4475 nsnfiold(p) =
nsnfi(nin)%P(p)
4483 IF(ircvfrom(nin,loc_proc)==0.AND.
4484 . isendto(nin,loc_proc)==0)
RETURN
4485 bminma(1,loc_proc) = bminmal(1)
4486 bminma(2,loc_proc) = bminmal(2)
4487 bminma(3,loc_proc) = bminmal(3)
4488 bminma(4,loc_proc) = bminmal(4)
4489 bminma(5,loc_proc) = bminmal(5)
4490 bminma(6,loc_proc) = bminmal(6)
4494 IF(ircvfrom(nin,loc_proc)/=0)
THEN
4496 IF(isendto(nin,p)/=0)
THEN
4497 IF(p/=loc_proc)
THEN
4502 . it_spmd(p),msgtyp,req_sc(p))
4504 CALL spmd_isend(bminma(1,loc_proc),6,it_spmd(p),msgtyp,req_sb(p))
4512 IF(isendto(nin,loc_proc)/=0)
THEN
4515 IF(ircvfrom(nin,p)/=0)
THEN
4516 IF(loc_proc/=p)
THEN
4523 . it_spmd(p),msgtyp,req_rc(nbirecv))
4526 . bminma(1,p) ,6,it_spmd(p),msgtyp,
4541 IF(igap==1.OR.igap==2)
THEN
4544 ELSEIF(igap==3)
THEN
4549 IF(inacti==5.OR.inacti==6) rsiz = rsiz + 2
4552 IF(idtmins == 2)
THEN
4555 ELSEIF(idtmins_int/=0)
THEN
4563 IF(intfric > 0 )
THEN
4569 isiz = isiz + 1 + nisub
4575 IF(isendto(nin,loc_proc)/=0)
THEN
4577 CALL spmd_waitany(nbirecv,req_rb,indexi)
4581 CALL spmd_wait(req_rc(indexi))
4604 IF(stifs(i)>zero)
THEN
4605 xmins =
min(x(1,n1),x(1,n2))
4606 ymins =
min(x(2,n1),x(2,n2))
4607 zmins =
min(x(3,n1),x(3,n2))
4608 xmaxs =
max(x(1,n1),x(1,n2))
4609 ymaxs =
max(x(2,n1),x(2,n2))
4610 zmaxs =
max(x(3,n1),x(3,n2))
4611 ix1=int(nbx*(xmins-xminb)/dx)
4612 ix2=int(nbx*(xmaxs-xminb)/dx)
4613 IF(ix2>=0.AND.ix1<=nbx)
THEN
4614 iy1=int(nby*(ymins-yminb)/dy)
4615 iy2=int(nby*(ymaxs-yminb)/dy)
4616 IF(iy2>=0.AND.iy1<=nby)
THEN
4617 iz1=int(nbz*(zmins-zminb)/dz)
4618 iz2=int(nbz*(zmaxs-zminb)/dz)
4619 IF(iz2>=0.AND.iz1<=nbz)
THEN
4629 IF(btest(
crvoxel(iy,iz,p),ix))
THEN
4652 CALL spmd_isend(nbox(p),1,it_spmd(p),msgtyp,
4658 ALLOCATE(rbuf(p)%P(rsiz*nb),stat=ierror)
4659 ALLOCATE(ibuf(p)%P(isiz*nb),stat=ierror)
4661 CALL ancmsg(msgid=20,anmode=aninfo)
4672 rbuf(p)%p(l+1) = x(1,n1)
4673 rbuf(p)%p(l+2) = x(2,n1)
4674 rbuf(p)%p(l+3) = x(3,n1)
4675 rbuf(p)%p(l+4) = v(1,n1)
4676 rbuf(p)%p(l+5) = v(2,n1)
4677 rbuf(p)%p(l+6) = v(3,n1)
4678 rbuf(p)%p(l+7) = ms(n1)
4679 rbuf(p)%p(l+8)= x(1,n2)
4680 rbuf(p)%p(l+9)= x(2,n2)
4681 rbuf(p)%p(l+10)= x(3,n2)
4682 rbuf(p)%p(l+11)= v(1,n2)
4683 rbuf(p)%p(l+12)= v(2,n2)
4684 rbuf(p)%p(l+13)= v(3,n2)
4685 rbuf(p)%p(l+14)= ms(n2)
4686 rbuf(p)%p(l+15)= stifs(i)
4688 ibuf(p)%p(l2+2)= itab(n1)
4689 ibuf(p)%p(l2+3)= itab(n2)
4701 IF(igap==1 .OR. igap==2)
THEN
4705 rbuf(p)%p(l+rshift)= gap_s(i)
4714 rbuf(p)%p(l+rshift) = gap_s(i)
4715 rbuf(p)%p(l+rshift+1)= gap_s_l(i)
4728 rbuf(p)%p(l+rshift) = temp(n1)
4729 rbuf(p)%p(l+rshift+1) = temp(n2)
4730 rbuf(p)%p(l+rshift+2) = areas(i)
4731 ibuf(p)%p(l2+ishift) = ielec(i)
4744 ibuf(p)%p(l2+ishift) = ipartfrics(i)
4751 IF(inacti==5.OR.inacti==6)
THEN
4755 rbuf(p)%p(l+rshift) = penis(1,i)
4756 rbuf(p)%p(l+rshift+1)= penis(2,i)
4769 ibuf(p)%p(l2+ishift) = nodnx_sms(n1)
4770 ibuf(p)%p(l2+ishift+1)= n1
4771 ibuf(p)%p(l2+ishift+2)= nodnx_sms(n2)
4772 ibuf(p)%p(l2+ishift+3)= n2
4777 ELSEIF(idtmins_int/=0)
THEN
4783 ibuf(p)%p(l2+ishift) = n1
4784 ibuf(p)%p(l2+ishift+1)= n2
4795 ibuf(p)%p(l2+ishift) = addsubs(i+1)-addsubs(i)
4797 DO k = 1,addsubs(i+1)-addsubs(i)
4799 ibuf(p)%p(l2+ishift+ll)=lisubs(addsubs(i)+k-1)
4801 ibuf(p)%p(l2+ishift+ll)=inflg_subs(addsubs(i)+k-1)
4805 ishift = ishift + 2*nisub + 1
4810 1 rbuf(p)%P(1),nb*rsiz,it_spmd(p),msgtyp,
4815 1 ibuf(p)%P(1),nb*isiz,it_spmd(p),msgtyp,
4824 IF(ircvfrom(nin,loc_proc)/=0)
THEN
4829 IF(isendto(nin,p)/=0)
THEN
4830 IF(loc_proc/=p)
THEN
4832 CALL spmd_recv(
nsnfi(nin)%P(p),1,it_spmd(p),msgtyp)
4833 IF(
nsnfi(nin)%P(p)>0)
THEN
4846 ALLOCATE(xrem(rsiz,nrtsr),stat=ierror)
4847 ALLOCATE(
irem(isiz,nrtsr),stat=ierror1)
4849 ierror=ierror+ierror1
4851 CALL ancmsg(msgid=20,anmode=aninfo)
4857 len =
nsnfi(nin)%P(p)*rsiz
4859 CALL spmd_irecv(xrem(1,ideb),len,it_spmd(p),msgtyp,req_rd(l))
4861 len2 =
nsnfi(nin)%P(p)*isiz
4863 CALL spmd_irecv(
irem
4865 ideb = ideb +
nsnfi(nin)%P(p)
4868 CALL spmd_waitany(nbirecv,req_rd,indexi)
4869 CALL spmd_waitany(nbirecv,req_rd2,indexi)
4874 IF(ircvfrom(nin,loc_proc)/=0)
THEN
4876 IF(isendto(nin,p)/=0)
THEN
4877 IF(p/=loc_proc)
THEN
4878 CALL spmd_wait(req_sb(p))
4879 CALL spmd_wait(req_sc(p))
4885 IF(isendto(nin,loc_proc)/=0)
THEN
4887 IF(ircvfrom(nin,p)/=0)
THEN
4888 IF(p/=loc_proc)
THEN
4889 CALL spmd_wait(req_sd(p))
4891 CALL spmd_wait(req_sd2(p))
4892 DEALLOCATE(rbuf(p)%p)
4893 CALL spmd_wait(req_sd3(p))
4894 DEALLOCATE(ibuf(p)%p)
4918 2 INACTI,NRTSR,MULTIMP,IGAP,INTTH,
4919 2 NISUB,INTFRIC,NODADT_THERM)
4929#include "implicit_f.inc"
4933#include "com01_c.inc"
4934#include "task_c.inc"
4935#include "scr18_c.inc"
4936#include "parit_c.inc"
4937#include "spmd_c.inc"
4942 INTEGER RESULT, NIN, NRTS, I_STOK, INACTI, NRTSR, MULTIMP, IGAP,
4943 . cand_s(*),intth,nisub,intfric
4944 INTEGER ,
INTENT(IN) :: NODADT_THERM
4949 INTEGER OLDNRTSR,SEGFI,NODFI,NNP,LSKYFI,
4950 . nod, loc_proc, i, n, nn, p, ideb, n1, n2,
4951 . ierror1,ierror2,ierror3,ierror4,ierror5,ierror6,ierror7,
4952 . ierror8,ierror9,ierror10,ierror11,ierror12,ierror13,ierror14,
4953 . ierror15,ierror16,ierror17,index(nrtsr), nn2, rshift, ishift, j, k, l,ideb_subint,
4956 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAUX
4960 loc_proc = ispmd + 1
4975 IF(
irem(1,nn)>0)
THEN
5004 IF(
ASSOCIATED(
nsvfi(nin)%P))
DEALLOCATE(
nsvfi(nin)%P)
5005 ALLOCATE(
nsvfi(nin)%P(segfi),stat=ierror1)
5006 IF(
ASSOCIATED(
xfi(nin)%P))
DEALLOCATE(
xfi(nin)%P)
5007 ALLOCATE(
xfi(nin)%P(3,nodfi),stat=ierror2)
5008 IF(
ASSOCIATED(
vfi(nin)%P))
DEALLOCATE(
vfi(nin)%P)
5009 ALLOCATE(
vfi(nin)%P(3,nodfi),stat=ierror3)
5010 IF(
ASSOCIATED(
msfi(nin)%P))
DEALLOCATE(
msfi(nin)%P)
5011 ALLOCATE(
msfi(nin)%P(nodfi),stat=ierror4)
5012 IF(
ASSOCIATED(
stifi(nin)%P))
DEALLOCATE(
stifi(nin)%P)
5013 ALLOCATE(
stifi(nin)%P(segfi),stat=ierror5)
5014 IF(
ASSOCIATED(
itafi(nin)%P))
DEALLOCATE(
itafi(nin)%P)
5015 ALLOCATE(
itafi(nin)%P(nodfi),stat=ierror6)
5016 IF(idtmins == 2)
THEN
5018 ALLOCATE(
nodnxfi(nin)%P(nodfi),stat=ierror7)
5020 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror8)
5022 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror9)
5023 ELSEIF(idtmins_int /= 0)
THEN
5025 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror8)
5027 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror9)
5030 IF(
ASSOCIATED(
gapfi(nin)%P))
DEALLOCATE(
gapfi(nin)%P)
5031 ALLOCATE(
gapfi(nin)%P(segfi),stat=ierror10)
5035 ALLOCATE(
gap_lfi(nin)%P(nodfi),stat=ierror7)
5037 IF(inacti==5.OR.inacti==6)
THEN
5038 IF(
ASSOCIATED(
penfi(nin)%P))
DEALLOCATE(
penfi(nin)%P)
5039 ALLOCATE(
penfi(nin)%P(2,segfi),stat=ierror11)
5043 IF(
ASSOCIATED(
tempfi(nin)%P))
DEALLOCATE(
tempfi(nin)%P)
5044 ALLOCATE(
tempfi(nin)%P(2*nodfi),stat=ierror12
5045 IF(
ASSOCIATED(
matsfi(nin)%P))
DEALLOCATE(
matsfi(nin)%P)
5046 ALLOCATE(
matsfi(nin)%P(segfi),stat=ierror13)
5048 ALLOCATE(
areasfi(nin)%P(segfi),stat=ierror14)
5051 IF(intfric > 0 )
THEN
5058 ALLOCATE(
addsubsfi(nin)%P(segfi),stat=ierror15)
5060 ALLOCATE(
lisubsfi(nin)%P(nisub*segfi),stat=ierror16)
5062 ALLOCATE(
inflg_subsfi(nin)%P(nisub*segfi),stat=ierror16)
5065 IF(ierror1+ierror2+ierror3+ierror4+ierror5+
5066 + ierror6+ierror7+ierror8+ierror9+ierror10+
5067 + ierror11+ierror12+ierror13+ierror14+ierror15+
5068 + ierror16+ierror17/=0)
THEN
5069 CALL ancmsg(msgid=20,anmode=aninfo)
5082 oldnrtsr =
nsnfi(nin)%P(p)
5084 IF(oldnrtsr/=0)
THEN
5086 ALLOCATE(iaux(oldnrtsr),stat=ierror12)
5087 IF(ierror12/=0)
THEN
5088 CALL ancmsg(msgid=20,anmode=aninfo)
5094 IF(
irem(1,i+ideb)<0)
THEN
5101#include "vectorize.inc"
5104 index(i+ideb) = nn2+j
5105 n1 = 2*((nn2+j)-1)+1
5107 xfi(nin)%P(1,n1) = xrem(1,i+ideb)
5108 xfi(nin)%P(2,n1) = xrem(2,i+ideb)
5109 xfi(nin)%P(3,n1) = xrem(3,i+ideb)
5110 vfi(nin)%P(1,n1) = xrem(4,i+ideb)
5111 vfi(nin)%P(2,n1) = xrem(5,i+ideb)
5112 vfi(nin)%P(3,n1) = xrem(6,i+ideb)
5113 msfi(nin)%P(n1) = xrem(7,i+ideb)
5114 xfi(nin)%P(1,n2) = xrem(8,i+ideb)
5115 xfi(nin)%P(2,n2) = xrem(9,i+ideb)
5116 xfi(nin)%P(3,n2) = xrem(10,i+ideb)
5117 vfi(nin)%P(1,n2) = xrem(11,i+ideb)
5118 vfi(nin)%P(2,n2) = xrem(12,i+ideb)
5119 vfi(nin)%P(3,n2) = xrem(13,i+ideb)
5120 msfi(nin)%P(n2) = xrem(14,i+ideb)
5121 stifi(nin)%P(nn2+j) = xrem(15,i+ideb)
5131 IF(igap==1 .OR. igap==2)
THEN
5132#include "vectorize.inc"
5135 gapfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
5140#include "vectorize.inc"
5143 gapfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
5144 gap_lfi(nin)%P(nn2+j) = xrem(rshift+1,i+ideb)
5151#include "vectorize.inc"
5154 n1 = 2*((nn2+j)-1)+1
5156 tempfi(nin)%P(n1) = xrem(rshift,i+ideb)
5157 tempfi(nin)%P(n2) = xrem(rshift+1,i+ideb)
5158 areasfi(nin)%P(nn2+j) = xrem(rshift+2,i+ideb)
5166#include "vectorize.inc"
5175 IF(inacti==5.OR.inacti==6)
THEN
5176#include "vectorize.inc"
5179 penfi(nin)%P(1,nn2+j) = xrem(rshift,i+ideb)
5180 penfi(nin)%P(2,nn2+j) = xrem(rshift+1,i+ideb)
5189#include "vectorize.inc"
5192 n1 = 2*((nn2+j)-1)+1
5204 ELSEIF(idtmins_int/=0)
THEN
5206#include "vectorize.inc"
5209 n1 = 2*((nn2+j)-1)+1
5220 IF ((nisub>0).AND.(nn>0))
THEN
5223 addsubsfi(nin)%P(nn2+1) = ideb_subint + 1
5225 DO k = 1,
irem(ishift,i+ideb)
5227 lisubsfi(nin)%P(ideb_subint+k) =
irem(ishift+ll,i+ideb)
5232#include "vectorize.inc"
5237 DO k = 1,
irem(ishift,i+ideb)
5246 ishift = ishift + 1 + 2*nisub
5250 ideb = ideb + oldnrtsr
5251 nsnfi(nin)%P(p) = nn2-nnp
5261 lskyfi = nn2*multimax
5267 IF(
ALLOCATED(xrem))
DEALLOCATE(xrem)
5268 IF(
ALLOCATED(
irem))
DEALLOCATE(
irem)
5275 IF(intth == 0 )
THEN
5280 IF(
ASSOCIATED(
afi(nin)%P))
DEALLOCATE(
afi(nin)%P)
5281 IF(
ASSOCIATED(
stnfi(nin)%P))
DEALLOCATE(
stnfi(nin)%P)
5282 IF(nodfi>0)
ALLOCATE(
afi(nin)%P(3,nodfi*nthread),stat=ierror1)
5283 IF(nodfi>0)
ALLOCATE(
stnfi(nin)%P(nodfi*nthread),stat=ierror2)
5285 DO i = 1, nodfi*nthread
5286 afi(nin)%P(1,i) = zero
5287 afi(nin)%P(2,i) = zero
5288 afi(nin)%P(3,i) = zero
5289 stnfi(nin)%P(i) = zero
5293 IF(
ASSOCIATED(
vscfi(nin)%P))
DEALLOCATE(
vscfi(nin)%P)
5294 IF(nodfi>0)
ALLOCATE(
vscfi(nin)%P(nodfi*nthread),stat=ierror3)
5297 vscfi(nin)%P(i) = zero
5313 IF(
ASSOCIATED(
afiDEALLOCATE(
afi(nin)%P)
5314 IF(
ASSOCIATED(
stnfi(nin)%P))
DEALLOCATE(
stnfi(nin)%P)
5315 IF(nodfi>0)
ALLOCATE(
afi(nin)%P(3,nodfi*nthread),stat=ierror1)
5316 IF(nodfi>0)
ALLOCATE(
stnfi(nin)%P(nodfi*nthread),stat=ierror2)
5317 IF(nodfi>0)
ALLOCATE(
fthefi(nin)%P(nodfi*nthread),stat=ierror3)
5319 IF(nodadt_therm ==1)
THEN
5321 IF(nodfi>0)
ALLOCATE(
condnfi(nin)%P(nodfi*nthread),stat=ierror4)
5325 DO i = 1, nodfi*nthread
5326 afi(nin)%P(1,i) = zero
5327 afi(nin)%P(2,i) = zero
5328 afi(nin)%P(3,i) = zero
5329 stnfi(nin)%P(i) = zero
5332 IF(nodadt_therm ==1)
THEN
5333 DO i = 1, nodfi*nthread
5339 IF(
ASSOCIATED(
vscfi(nin)%P))
DEALLOCATE(
vscfi(nin)%P)
5340 IF(nodfi>0)
ALLOCATE(
vscfi(nin)%P(nodfi),stat=ierror3)
5343 vscfi(nin)%P(i) = zero
5353 IF(ierror1+ierror2+ierror3+ierror4/=0)
THEN
5354 CALL ancmsg(msgid=20,anmode=aninfo)
5364 cand_s(i) = index(nn)+nrts