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 , 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,INFO,I,NOD, DT_CST, LOC_PROC,P,IDEB,
261 . SIZ,J, L, BUFSIZ, LEN, NB, IERROR1, IAD,
262 . IERROR,REQ_SB(NSPMD),
263 . (NSPMD),KK,NBIRECV,IRINDEXI(NSPMD),
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,
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)
317 bminma(4,loc_proc) = bminmal
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
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)
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)
530 rbuf(p)%p(l+4) = v(1,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)
536 ibuf(p)%p(l2+2) = itab(nod)
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)
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)
884 1 NSV ,NSN ,X ,V ,MS ,
885 2 BMINMAL ,WEIGHT ,STIFN ,NIN ,ISENDTO,
886 3 IRCVFROM,IAD_ELEM ,FR_ELEM,NSNR ,IGAP ,
887 4 GAP_S ,ITAB ,KINET ,IFQ ,INACTI ,
888 5 NSNFIOLD,INTTH ,IELEC ,AREAS ,TEMP ,
889 6 NUM_IMP ,NODNX_SMS,GAP_S_L ,ITYP,
890 7 IRTLM ,I24_TIME_S,I24_FRFI,I24_PENE_OLD,
891 8 I24_STIF_OLD ,NBINFLG,ILEV ,I24_ICONT_I,
892 8 IXS, MULTI_FVM,INTFRIC ,IPARTFRICS)
903#include "implicit_f.inc"
910#include "com01_c.inc"
911#include "com04_c.inc"
913#include "timeri_c.inc"
918 INTEGER NIN, NSN, IFQ, INACTI, IGAP,INTTH,INTFRIC,
919 . nsnfiold(*), nsv(*), weight(*),
920 . isendto(ninter+1,*), ircvfrom(ninter+1,*),
921 . iad_elem(2,*), fr_elem(*), itab(*), kinet(
922 . ielec(*),num_imp, nodnx_sms(*),irtlm(*),ityp,
923 . nbinflg(*),ilev,i24_icont_i(*),nsnr,ixs(nixs, *),
927 . x(3,*), v(3,*), ms(*), bminmal(*), stifn(*), gap_s(*),
928 . areas(*),temp(*),gap_s_l(*),i24_time_s(*),i24_frfi(6,*),
929 . i24_pene_old(5,*),i24_stif_old(2,*)
931 TYPE (MULTI_FVM_STRUCT),
INTENT(IN) :: MULTI_FVM
936 INTEGER MSGTYP,INFO,I,NOD, DT_CST, LOC_PROC,P,IDEB,
937 . SIZ,J, L, BUFSIZ, LEN, NB, IERROR1, IAD,
938 . IERROR,REQ_SB(NSPMD),
939 . req_rb(nspmd),kk,nbirecv,irindexi(nspmd),
940 . req_rd(nspmd),req_sd(nspmd),req_sd2(nspmd),
941 . req_rc(nspmd),req_sc(nspmd),
942 . indexi,isindexi(nspmd),index(numnod),nbox(nspmd),
943 . nbx,nby,nbz,ix,iy,iz,
944 . msgoff, msgoff2, msgoff3, msgoff4, msgoff5,
945 . rsiz, isiz, l2, req_sd3(nspmd),req_rd2(nspmd),
946 . len2, rshift, ishift, nd, jdeb, q, nbb
956 . xmaxb,ymaxb,zmaxb,xminb,yminb,zminb
958 TYPE(real_pointer),
DIMENSION(NSPMD) :: RBUF
959 TYPE(int_pointer) ,
DIMENSION(NSPMD) :: IBUF
960 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITAGNSNFI
978 IF(inacti==5.OR.inacti==6.OR.inacti==7.OR.ifq>0
979 . .OR.num_imp>0.OR.ityp==23.OR.ityp==24
982 nsnfiold(p) =
nsnfi(nin)%P(p)
988 IF(ircvfrom(nin,loc_proc)==0.AND.
989 . isendto(nin,loc_proc)==0)
RETURN
990 bminma(1,loc_proc) = bminmal(1)
991 bminma(2,loc_proc) = bminmal(2)
992 bminma(3,loc_proc) = bminmal(3)
993 bminma(4,loc_proc) = bminmal(4)
994 bminma(5,loc_proc) = bminmal(5)
995 bminma(6,loc_proc) = bminmal(6)
999 IF(ircvfrom(nin,loc_proc)/=0)
THEN
1001 IF(isendto(nin,p)/=0)
THEN
1002 IF(p/=loc_proc)
THEN
1008 . it_spmd(p),msgtyp,req_sc(p))
1011 . bminma(1,loc_proc),6 ,it_spmd(p),msgtyp,
1020 IF(isendto(nin,loc_proc)/=0)
THEN
1023 IF(ircvfrom(nin,p)/=0)
THEN
1024 IF(loc_proc/=p)
THEN
1031 . it_spmd(p),msgtyp,req_rc(nbirecv))
1034 . bminma(1,p) ,6 ,it_spmd(p),msgtyp,
1050 IF(igap==1 .OR. igap==2)
THEN
1064 IF(intfric > 0 )
THEN
1069 IF(idtmins == 2)
THEN
1072 ELSEIF(idtmins_int/=0)
THEN
1081 IF(isendto(nin,loc_proc)/=0)
THEN
1083 CALL spmd_waitany(nbirecv,req_rb,indexi)
1085 CALL spmd_wait(req_rc(indexi))
1098 IF(stifn(i)>zero)
THEN
1099 IF(x(1,nod) < xminb) cycle
1100 IF(x(1,nod) > xmaxb) cycle
1101 IF(x(2,nod) < yminb) cycle
1102 IF(x(2,nod) > ymaxb) cycle
1103 IF(x(3,nod) < zminb) cycle
1104 IF(x(3,nod) > zmaxb) cycle
1106 ix=int(nbx*(x(1,nod)-xminb)/(xmaxb-xminb))
1107 IF(ix >= 0 .AND. ix <= nbx)
THEN
1108 iy=int(nby*(x(2,nod)-yminb)/(ymaxb-yminb))
1109 IF(iy >= 0 .AND. iy <= nby)
THEN
1110 iz=int(nbz*(x(3,nod)-zminb)/(zmaxb-zminb))
1111 IF(iz >= 0 .AND. iz <= nbz)
THEN
1112 IF(btest(
crvoxel(iy,iz,p),ix))
THEN
1126 CALL spmd_isend(nbox(p),1,it_spmd(p),msgtyp
1132 ALLOCATE(rbuf(p)%P(rsiz*nb),stat=ierror)
1133 ALLOCATE(ibuf(p)%P(isiz*nb),stat=ierror)
1135 CALL ancmsg(msgid=20,anmode=aninfo)
1145 rbuf(p)%p(l+1) = x(1,nod)
1146 rbuf(p)%p(l+2) = x(2,nod)
1147 rbuf(p)%p(l+3) = x(3,nod)
1148 rbuf(p)%p(l+4) = v(1,nod)
1149 rbuf(p)%p(l+5) = v(2,nod)
1150 rbuf(p)%p(l+6) = v(3,nod)
1151 rbuf(p)%p(l+7) = ms(nod)
1152 rbuf(p)%p(l+8) = stifn(i)
1154 ibuf(p)%p(l2+2) = ixs(nixs, nod - numnod)
1155 ibuf(p)%p(l2+3) = kinet(nod)
1171 IF(igap==1 .OR. igap==2)
THEN
1176 rbuf(p)%p(l+rshift)= gap_s(i)
1187 rbuf(p)%p(l+rshift) = gap_s
1188 rbuf(p)%p(l+rshift+1)= gap_s_l(i)
1201 rbuf(p)%p(l+rshift) = temp(nod)
1202 rbuf(p)%p(l+rshift+1) = areas(i)
1203 ibuf(p)%p(l2+ishift) = ielec(i)
1216 ibuf(p)%p(l2+ishift) = ipartfrics(i)
1228 ibuf(p)%p(l2+ishift) = nodnx_sms(nod)
1229 ibuf(p)%p(l2+ishift+1)= nod
1235 ELSEIF(idtmins_int/=0)
THEN
1240 ibuf(p)%p(l2+ishift)= nod
1261 1 rbuf(p)%P(1),nb*rsiz,it_spmd(p),msgtyp,
1266 1 ibuf(p)%P(1),nb*isiz,it_spmd(p),msgtyp,
1276 IF(ircvfrom(nin,loc_proc)/=0)
THEN
1281 IF(isendto(nin,p)/=0)
THEN
1282 IF(loc_proc/=p)
THEN
1284 CALL spmd_recv(
nsnfi(nin)%P(p),1,it_spmd(p),
1286 IF(
nsnfi(nin)%P(p)>0)
THEN
1289 nsnr = nsnr +
nsnfi(nin)%P(p)
1300 ALLOCATE(xrem(rsiz,nsnr),stat=ierror)
1301 ALLOCATE(
irem(isiz,nsnr),stat=ierror)
1304 CALL ancmsg(msgid=20,anmode=aninfo)
1310 len =
nsnfi(nin)%P(p)*rsiz
1314 1 xrem(1,ideb),len,it_spmd(p),
1317 len2 =
nsnfi(nin)%P(p)*isiz
1320 1
irem(1,ideb),len2,it_spmd(p),
1321 2 msgtyp,req_rd2(l))
1322 ideb = ideb +
nsnfi(nin)%P(p)
1325 CALL spmd_waitany(nbirecv,req_rd,indexi)
1326 CALL spmd_waitany(nbirecv,req_rd2,indexi)
1336 IF(ircvfrom(nin,loc_proc)/=0)
THEN
1338 IF(isendto(nin,p)/=0)
THEN
1339 IF(p/=loc_proc)
THEN
1340 CALL spmd_wait(req_sb(p))
1341 CALL spmd_wait(req_sc(p))
1347 IF(isendto(nin,loc_proc)/=0)
THEN
1349 IF(ircvfrom(nin,p)/=0)
THEN
1350 IF(p/=loc_proc)
THEN
1351 CALL spmd_wait(req_sd(p))
1353 CALL spmd_wait(req_sd2(p))
1354 DEALLOCATE(rbuf(p)%p)
1355 CALL spmd_wait(req_sd3(p))
1356 DEALLOCATE(ibuf(p)%p)
1382 1 NSV ,NSN ,X ,V ,MS ,
1383 2 BMINMAL ,WEIGHT ,STIFN ,NIN ,ISENDTO,
1384 3 IRCVFROM,IAD_ELEM ,FR_ELEM,NSNR ,IGAP ,
1385 4 GAP_S ,ITAB ,KINET ,IFQ ,INACTI ,
1386 5 NSNFIOLD,INTTH ,IELEC ,AREAS ,TEMP ,
1387 6 NUM_IMP ,NODNX_SMS,GAP_S_L ,ITYP,
1388 7 I24_IRTLM,I24_TIME_S,I24_FRFI,I24_PENE_OLD,
1389 8 I24_STIF_OLD ,NBINFLG,ILEV ,I24_ICONT_I ,
1390 9 XFIC ,VFIC ,IEDGE4 ,NSNE,IS2SE,
1391 A IRTSE,IS2PT,ISEGPT,MSFIC,NRTSE,IS2ID,ISPT2,
1392 B INTFRIC,IPARTFRICS,T2MAIN_SMS,INTNITSCHE,FORNEQS,
1393 C T2FAC_SMS,ISTIF_MSDT,STIFMSDT_S,IFSUB_CAREA,INTAREAN)
1403#include "implicit_f.inc"
1407#include "com01_c.inc"
1408#include "com04_c.inc"
1409#include "task_c.inc"
1410#include "timeri_c.inc"
1415 INTEGER NIN, NSN, IFQ, INACTI, IGAP,INTTH,INTFRIC,INTNITSCHE,
1416 . NSNFIOLD(*), NSV(*), WEIGHT(*),
1417 . ISENDTO(NINTER+1,*), IRCVFROM(NINTER+1,*),
1418 . IAD_ELEM(2,*), FR_ELEM(*), ITAB(*), KINET(*),
1419 . IELEC(*),NUM_IMP, NODNX_SMS(*),I24_IRTLM(2,*),ITYP,
1420 . NBINFLG(*),ILEV,(*),IEDGE4,NSNE,IS2SE(2,*),IRTSE(5,*),
1421 . IS2PT(*),ISEGPT(*),NRTSE, NSNR,IS2ID(*),ISPT2(*),IPARTFRICS(*),(6,*)
1422 INTEGER ,
INTENT(IN) :: ISTIF_MSDT, IFSUB_CAREA
1425 . X(3,*), V(3,*), MS(*), BMINMAL(*), STIFN(*), GAP_S(*),
1426 . AREAS(*),TEMP(*),GAP_S_L(*),I24_TIME_S(*),I24_FRFI(
1429INTENT(IN) :: STIFMSDT_S(NSN) , INTAREAN(NUMNOD)
1434 INTEGER MSGTYP,INFO,I,NOD, DT_CST, LOC_PROC,P,IDEB,
1435 . SIZ,J, L, BUFSIZ, , NB, IERROR1, IAD,
1436 . IERROR,REQ_SB(NSPMD),
1437 . REQ_RB(NSPMD),,NBIRECV,IRINDEXI(NSPMD),
1438 . REQ_RD(NSPMD),REQ_SD(NSPMD),REQ_SD2(NSPMD),
1439 . (NSPMD),REQ_SC(NSPMD),
1440 . INDEXI,ISINDEXI(NSPMD),INDEX(NUMNOD+NSNE),NBOX(NSPMD),
1441 . NBX,NBY,NBZ,IX,IY,IZ,
1442 . MSGOFF, MSGOFF2, MSGOFF3, MSGOFF4, MSGOFF5,
1443 . RSIZ, ISIZ, L2, REQ_SD3(NSPMD),REQ_RD2(NSPMD),
1444 . LEN2, RSHIFT, ISHIFT,BOXR,NBE,ND,SURF,N1,N2,N3,N4
1455 . xmaxb,ymaxb,zmaxb,xminb,yminb,zminb
1457 TYPE(real_pointer),
DIMENSION(NSPMD) :: RBUF
1458 TYPE(int_pointer) ,
DIMENSION(NSPMD) :: IBUF
1460 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAG_SN,INDEXE,TAG_2RY,NSV_INV
1466 ALLOCATE(tag_sn(numnod))
1467 ALLOCATE(indexe(numnod+nsne))
1468 ALLOCATE(tag_2ry(nsn))
1469 ALLOCATE(nsv_inv(numnod))
1473 ALLOCATE(tag_2ry(0))
1474 ALLOCATE(nsv_inv(0))
1480 loc_proc = ispmd + 1
1488 IF(inacti==5.OR.inacti==6.OR.inacti==7.OR.ifq>0
1489 . .OR.num_imp>0.OR.ityp==23.OR.ityp==24)
THEN
1491 nsnfiold(p) =
nsnfi(nin)%P(p)
1497 IF(ircvfrom(nin,loc_proc)==0.AND.
1498 . isendto(nin,loc_proc)==0)
RETURN
1499 bminma(1,loc_proc) = bminmal(1)
1500 bminma(2,loc_proc) = bminmal(2)
1501 bminma(3,loc_proc) = bminmal(3)
1502 bminma(4,loc_proc) = bminmal(4)
1503 bminma(5,loc_proc) = bminmal(5)
1504 bminma(6,loc_proc) = bminmal(6)
1508 IF(ircvfrom(nin,loc_proc)/=0)
THEN
1510 IF(isendto(nin,p)/=0)
THEN
1514 IF(p/=loc_proc)
THEN
1520 . it_spmd(p),msgtyp,req_sc(p))
1523 . bminma(1,loc_proc),6 ,it_spmd(p),msgtyp,
1532 IF(isendto(nin,loc_proc)/=0)
THEN
1535 IF(ircvfrom(nin,p)/=0)
THEN
1536 IF(loc_proc/=p)
THEN
1544 . it_spmd(p),msgtyp,req_rc(nbirecv))
1547 . bminma(1,p) ,6 ,it_spmd(p),msgtyp,
1563 IF(igap==1 .OR. igap==2)
THEN
1576 IF(intfric > 0 )
THEN
1581 IF(idtmins == 2)
THEN
1585 ELSEIF(idtmins_int/=0)
THEN
1595 IF (ilev==2) isiz = isiz + 1
1596 IF(iedge4 > 0)isiz = isiz + 8
1600 IF(intnitsche > 0) rsiz = rsiz + 3
1603 IF(istif_msdt > 0) rsiz = rsiz + 1
1606 IF(ifsub_carea > 0) rsiz = rsiz + 1
1610 IF(isendto(nin,loc_proc)/=0)
THEN
1612 CALL spmd_waitany(nbirecv,req_rb,indexi)
1614 CALL spmd_wait(req_rc(indexi))
1616 DO j = iad_elem(1,p), iad_elem(1,p+1)-1
1619 weight(nod) = weight(nod)*(-1)
1642 IF (nod <= numnod)
THEN
1643 IF(weight(nod)==1)
THEN
1644 IF(stifn(i)>zero)
THEN
1645 IF(x(1,nod) < xminb) cycle
1646 IF(x(1,nod) > xmaxb) cycle
1647 IF(x(2,nod) < yminb) cycle
1648 IF(x(2,nod) > ymaxb) cycle
1649 IF(x(3,nod) < zminb) cycle
1650 IF(x(3,nod) > zmaxb) cycle
1653 ix=int(nbx*(x(1,nod)-xminb)/(xmaxb-xminb))
1654 IF(ix >= 0 .AND. ix <= nbx)
THEN
1655 iy=int(nby*(x(2,nod)-yminb)/(ymaxb-yminb))
1656 IF(iy >= 0 .AND. iy <= nby)
THEN
1657 iz=int(nbz*(x(3,nod)-zminb)/(zmaxb-zminb))
1658 IF(iz >= 0 .AND. iz <= nbz)
THEN
1659 IF(btest(
crvoxel(iy,iz,p),ix))
THEN
1678 IF(stifn(i)>zero)
THEN
1680 IF(xfic(1,nd) < xminb) cycle
1681 IF(xfic(1,nd) > xmaxb) cycle
1682 IF(xfic(2,nd) < yminb) cycle
1683 IF(xfic(2,nd) > ymaxb) cycle
1684 IF(xfic(3,nd) < zminb) cycle
1685 IF(xfic(3,nd) > zmaxb) cycle
1687 ix=int(nbx*(xfic(1,nd)-xminb)/(xmaxb-xminb))
1688 IF(ix >= 0 .AND. ix <= nbx)
THEN
1689 iy=int(nby*(xfic(2,nd)-yminb)/(ymaxb-yminb))
1690 IF(iy >= 0 .AND. iy <= nby)
THEN
1691 iz=int(nbz*(xfic(3,nd)-zminb)/(zmaxb-zminb))
1692 IF(iz >= 0 .AND. iz <= nbz)
THEN
1693 IF(btest(
crvoxel(iy,iz,p),ix))
THEN
1699 IF( tag_sn(n1)==0)
THEN
1701 index(nb) = nsv_inv(n1)
1705 IF( tag_sn(n2)==0)
THEN
1707 index(nb) = nsv_inv(n2)
1711 IF( tag_sn(n3)==0)
THEN
1713 index(nb) = nsv_inv(n3)
1717 IF( tag_sn(n4)==0)
THEN
1719 index(nb) = nsv_inv(n4)
1732 index(nb) = indexe(i)
1733 tag_2ry(indexe(i))=nb
1738 DO j = iad_elem(1,p), iad_elem(1,p+1)-1
1741 weight(nod) = weight(nod)*(-1)
1747 CALL spmd_isend(nbox(p),1,it_spmd(p),msgtyp,
1753 ALLOCATE(rbuf(p)%P(rsiz*nb),stat=ierror)
1754 ALLOCATE(ibuf(p)%P(isiz*nb),stat=ierror)
1756 CALL ancmsg(msgid=20,anmode=aninfo)
1766 IF(nod <=numnod)
THEN
1767 rbuf(p)%p(l+1) = x(1,nod)
1768 rbuf(p)%p(l+2) = x(2,nod)
1769 rbuf(p)%p(l+3) = x(3,nod)
1770 rbuf(p)%p(l+4) = v(1,nod)
1771 rbuf(p)%p(l+5) = v(2,nod)
1772 rbuf(p)%p(l+6) = v(3,nod)
1773 rbuf(p)%p(l+7) = ms(nod)
1774 rbuf(p)%p(l+8) = stifn(i)
1776 ibuf(p)%p(l2+2) = itab(nod)
1777 ibuf(p)%p(l2+3) = kinet(nod)
1783 IF(tag_sn(nod)<0)
THEN
1784 ibuf(p)%p(l2+8) = -1
1793 rbuf(p)%p(l+1) = xfic(1,nd)
1794 rbuf(p)%p(l+2) = xfic(2,nd)
1795 rbuf(p)%p(l+3) = xfic(3,nd)
1796 rbuf(p)%p(l+4) = vfic(1,nd)
1797 rbuf(p)%p(l+5) = vfic(2,nd)
1798 rbuf(p)%p(l+6) = vfic(3,nd)
1799 rbuf(p)%p(l+7) = msfic(nd)
1800 rbuf(p)%p(l+8) = stifn(i)
1802 ibuf(p)%p(l2+2) = is2id(nd)
1823 IF(igap==1 .OR. igap==2)
THEN
1828 rbuf(p)%p(l+rshift)= gap_s(i)
1839 rbuf(p)%p(l+rshift) = gap_s(i)
1840 rbuf(p)%p(l+rshift+1)= gap_s_l(i)
1853 rbuf(p)%p(l+rshift) = temp(nod)
1854 rbuf(p)%p(l+rshift+1) = areas(i)
1855 ibuf(p)%p(l2+ishift) = ielec(i)
1867 ibuf(p)%p(l2+ishift) = ipartfrics(i)
1881 rbuf(p)%p(l+rshift) = t2fac_sms(nod)
1882 ibuf(p)%p(l2+ishift) = nodnx_sms(nod)
1883 ibuf(p)%p(l2+ishift+1)= nod
1884 ibuf(p)%p(l2+ishift+2)= t2main_sms(1,nod)
1885 ibuf(p)%p(l2+ishift+3)= t2main_sms(2,nod)
1886 ibuf(p)%p(l2+ishift+4)= t2main_sms(3,nod)
1887 ibuf(p)%p(l2+ishift+5)= t2main_sms(4,nod)
1888 ibuf(p)%p(l2+ishift+6)= t2main_sms(5,nod)
1889 ibuf(p)%p(l2+ishift+7)= t2main_sms(6,nod)
1893 rbuf(p)%p(l+rshift) = one
1894 ibuf(p)%p(l2+ishift) = 0
1895 ibuf(p)%p(l2+ishift+1)= 0
1897 ibuf(p)%p(l2+ishift+3)= 0
1898 ibuf(p)%p(l2+ishift+4)= 0
1899 ibuf(p)%p(l2+ishift+5)= 0
1900 ibuf(p)%p(l2+ishift+6)= 0
1901 ibuf(p)%p(l2+ishift+7)= 0
1910 ELSEIF(idtmins_int/=0)
THEN
1916 rbuf(p)%p(l+rshift) = t2fac_sms(nod)
1917 ibuf(p)%p(l2+ishift)= nod
1918 ibuf(p)%p(l2+ishift+1)= t2main_sms(1,nod)
1919 ibuf(p)%p(l2+ishift+2)= t2main_sms(2,nod)
1920 ibuf(p)%p(l2+ishift+3)= t2main_sms(3,nod)
1921 ibuf(p)%p(l2+ishift+4)= t2main_sms(4,nod)
1922 ibuf(p)%p(l2+ishift+5)= t2main_sms(5,nod)
1937 rbuf(p)%p(l+rshift) =i24_time_s(i)
1938 rbuf(p)%p(l+rshift+1) =i24_frfi(1,i)
1939 rbuf(p)%p(l+rshift+2) =i24_frfi(2,i)
1940 rbuf(p)%p(l+rshift+3) =i24_frfi(3,i)
1941 rbuf(p)%p(l+rshift+4) =i24_pene_old(1,i)
1942 rbuf(p)%p(l+rshift+5) =i24_stif_old(1,i)
1943 rbuf(p)%p(l+rshift+6) =i24_pene_old(3,i)
1944 rbuf(p)%p(l+rshift+7) =i24_pene_old(5,i)
1949 IF(istif_msdt > 0)
THEN
1953 rbuf(p)%p(l+rshift) =stifmsdt_s(i)
1959 IF(ifsub_carea > 0)
THEN
1964 rbuf(p)%p(l+rshift) =intarean(nod)
1975 ibuf(p)%p(l2+ishift) =i24_irtlm(1,i)
1976 ibuf(p)%p(l2+ishift+1)=i24_irtlm(2,i)
1977 ibuf(p)%p(l2+ishift+2)=i24_icont_i(i)
1988 ibuf(p)%p(l2+ishift)=nbinflg(i)
2001 IF(nod > numnod)
THEN
2007 ibuf(p)%p(l2+ishift) = abs(tag_sn(n))
2009 ibuf(p)%p(l2+ishift+1) = abs(tag_sn(n))
2011 ibuf(p)%p(l2+ishift+2) = abs(tag_sn(n))
2013 ibuf(p)%p(l2+ishift+3) = abs(tag_sn(n))
2014 ibuf(p)%p(l2+ishift+4) = irtse(5,se)
2015 ibuf(p)%p(l2+ishift+5) = is2pt(nd)
2016 ibuf(p)%p(l2+ishift+7) = ispt2(i
2017 ibuf(p)%p(l2+ishift+6) = isegpt(i)
2020 ibuf(p)%p(l2+ishift) = 0
2021 ibuf(p)%p(l2+ishift+1) = 0
2022 ibuf(p)%p(l2+ishift+2) = 0
2023 ibuf(p)%p(l2+ishift+3) = 0
2024 ibuf(p)%p(l2+ishift+4) = 0
2025 ibuf(p)%p(l2+ishift+5) = 0
2026 ibuf(p)%p(l2+ishift+7) = ispt2(i)
2027 ibuf(p)%p(l2+ishift+6) = tag_2ry(i)
2059 IF(intnitsche > 0 )
THEN
2064 rbuf(p)%p(l+rshift) =forneqs(1,nod)
2065 rbuf(p)%p(l+rshift+1) =forneqs(2,nod)
2066 rbuf(p)%p(l+rshift+2) =forneqs(3,nod)
2074 1 rbuf(p)%P(1),nb*rsiz,it_spmd(p),msgtyp,
2079 1 ibuf(p)%P(1),nb*isiz,it_spmd(p),msgtyp,
2088 IF(ircvfrom(nin,loc_proc)/=0)
THEN
2093 IF(isendto(nin,p)/=0)
THEN
2094 IF(loc_proc/=p)
THEN
2096 CALL spmd_recv(
nsnfi(nin)%P(p),1,it_spmd(p),
2099 IF(
nsnfi(nin)%P(p)
THEN
2102 nsnr = nsnr +
nsnfi(nin)%P(p)
2114 ALLOCATE(xrem(rsiz,nsnr),stat=ierror)
2115 ALLOCATE(
irem(isiz,nsnr),stat=ierror)
2118 CALL ancmsg(msgid=20,anmode=aninfo)
2124 len =
nsnfi(nin)%P(p)*rsiz
2128 1 xrem(1,ideb),len,it_spmd(p),
2131 len2 =
nsnfi(nin)%P(p)*isiz
2134 1
irem(1,ideb),len2,it_spmd(p),
2135 2 msgtyp,req_rd2(l))
2137 ideb = ideb +
nsnfi(nin)%P(p)
2140 CALL spmd_waitany(nbirecv,req_rd,indexi)
2141 CALL spmd_waitany(nbirecv,req_rd2,indexi
2156 len =
nsnfi(nin)%P(p)
2158 IF(
irem(8,i+ideb)==1)
THEN
2171 IF(ircvfrom(nin,loc_proc)/=0)
THEN
2173 IF(isendto(nin,p)/=0)
THEN
2174 IF(p/=loc_proc)
THEN
2175 CALL spmd_wait(req_sb(p))
2176 CALL spmd_wait(req_sc(p))
2182 IF(isendto(nin,loc_proc)/=0)
THEN
2184 IF(ircvfrom(nin,p)/=0)
THEN
2185 IF(p/=loc_proc)
THEN
2186 CALL spmd_wait(req_sd(p))
2188 CALL spmd_wait(req_sd2(p))
2189 DEALLOCATE(rbuf(p)%p)
2190 CALL spmd_wait(req_sd3(p))
2191 DEALLOCATE(ibuf(p)%p)
2198 IF(
ALLOCATED(tag_sn))
DEALLOCATE(tag_sn)
2199 IF(
ALLOCATED(tag_sn))
DEALLOCATE(indexe)
2221 2 IGAP ,NSNR,MULTIMP,ITY,INTTH ,
2222 3 ILEV ,IEDGE4, H3D_DATA,INTFRIC,
2223 4 INTNITSCHE,ISTIF_MSDT,IFSUB_CAREA,NODADT_THERM)
2234#include "implicit_f.inc"
2238#include "com01_c.inc"
2239#include "task_c.inc"
2240#include
"scr14_c.inc"
2241#include "scr16_c.inc"
2242#include "scr18_c.inc"
2243#include "parit_c.inc"
2244#include "spmd_c.inc"
2249 INTEGER RESULT, , NSN, I_STOK, IGAP, NSNR, , ITY,
2250 . CAND_N(*),,ILEV,IEDGE4,INTFRIC,INTNITSCHE
2251 INTEGER ,
INTENT(IN) :: ISTIF_MSDT, IFSUB_CAREA
2252 INTEGER ,
INTENT(IN) :: NODADT_THERM
2253 TYPE(H3D_DATABASE) :: H3D_DATA
2258 INTEGER OLDNSNR,NODFI,NNP,LSKYFI,
2259 . NOD, LOC_PROC, I, N, NN, P, IDEB, J, K,
2260 . IERROR1,IERROR2,IERROR3,IERROR4,IERROR5,IERROR6,IERROR7,
2261 . IERROR8,IERROR9,IERROR0,IERROR11,IERROR12,
2262 . IERROR13,IERROR14,IERROR15,IERROR16,IERROR17,IERROR18,
2263 . index(nsnr),nn2,rshift,ishift,nd
2265 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAUX,IAUXINV
2269 loc_proc = ispmd + 1
2283 IF(
irem(1,nn)>0)
THEN
2297 oldnsnr =
nsnfi(nin)%P(p)
2299 IF(
irem(1,i+ideb)<0 .AND.
irem(8,i+ideb)==1 )
THEN
2305 IF (
irem(1,nd) >0)
THEN
2311 IF (
irem(1,nd) >0)
THEN
2317 IF (
irem(1,nd) >0)
THEN
2323 IF (
irem(1,nd) >0)
THEN
2331 ideb = ideb + oldnsnr
2394 IF(
ASSOCIATED(
nsvfi(nin)%P))
DEALLOCATE(
nsvfi(nin)%P)
2395 ALLOCATE(
nsvfi(nin)%P(nodfi),stat=ierror1)
2396 IF(
ASSOCIATED(
xfi(nin)%P))
DEALLOCATE(
xfi(nin)%P)
2397 ALLOCATE(
xfi(nin)%P(3,nodfi),stat=ierror2)
2398 IF(
ASSOCIATED(
vfi(nin)%P))
DEALLOCATE(
vfi(nin)%P)
2399 ALLOCATE(
vfi(nin)%P(3,nodfi),stat=ierror3)
2400 IF(
ASSOCIATED(
msfi(nin)%P))
DEALLOCATE(
msfi(nin)%P)
2401 ALLOCATE(
msfi(nin)%P(nodfi),stat=ierror4)
2402 IF(
ASSOCIATED(
stifi(nin)%P))
DEALLOCATE(
stifi(nin)%P)
2403 ALLOCATE(
stifi(nin)%P(nodfi),stat=ierror5)
2404 IF(
ASSOCIATED(
itafi(nin)%P))
DEALLOCATE(
itafi(nin)%P)
2405 ALLOCATE(
itafi(nin)%P(nodfi),stat=ierror6)
2406 IF(ity==7.OR.ity==22.OR.ity==23.OR.ity==24)
THEN
2407 IF(
ASSOCIATED(
kinfi(nin)%P))
DEALLOCATE(
kinfi(nin)%P)
2408 ALLOCATE(
kinfi(nin)%P(nodfi),stat=ierror8)
2410 IF(
ASSOCIATED(
tempfi(nin)%P))
DEALLOCATE(
tempfi(nin)%P)
2411 ALLOCATE(
tempfi(nin)%P(nodfi),stat=ierror9)
2412 IF(
ASSOCIATED(
matsfi(nin)%P))
DEALLOCATE(
matsfi(nin)%P)
2413 ALLOCATE(
matsfi(nin)%P(nodfi),stat=ierror0)
2415 ALLOCATE(
areasfi(nin)%P(nodfi),stat=ierror11)
2418 IF(idtmins == 2)
THEN
2420 ALLOCATE(
nodnxfi(nin)%P(nodfi),stat=ierror12)
2422 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror13)
2424 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror14)
2429 ELSEIF(idtmins_int /= 0)
THEN
2431 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror13)
2433 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror14)
2440 IF(
ASSOCIATED(
gapfi(nin)%P))
DEALLOCATE(
gapfi(nin)%P)
2441 ALLOCATE(
gapfi(nin)%P(nodfi),stat=ierror7)
2444 ALLOCATE(
gap_lfi(nin)%P(nodfi),stat=ierror7)
2449 ALLOCATE(
irtlm_fi(nin)%P(2,nodfi),stat=ierror15)
2452 ALLOCATE(
time_sfi(nin)%P(nodfi),stat=ierror16)
2455 ALLOCATE(
secnd_frfi(nin)%P(6,nodfi),stat=ierror16)
2461 ALLOCATE(
stif_oldfi(nin)%P(2,nodfi),stat=ierror16)
2464 ALLOCATE(
icont_i_fi(nin)%P(nodfi),stat=ierror16)
2466 IF(istif_msdt > 0)
THEN
2471 IF(ifsub_carea > 0)
THEN
2473 ALLOCATE(
intareanfi(nin)%P(nodfi),stat=ierror16)
2478 ALLOCATE(
isedge_fi(nin)%P(nodfi),stat=ierror16)
2482 ALLOCATE(
irtse_fi(nin)%P(5,nodfi),stat=ierror16)
2485 ALLOCATE(
is2pt_fi(nin)%P(nodfi),stat=ierror16)
2488 ALLOCATE(
ispt2_fi(nin)%P(nodfi),stat=ierror16)
2491 ALLOCATE(
isegpt_fi(nin)%P(nodfi),stat=ierror16)
2494 ALLOCATE(
is2se_fi(nin)%P(2,nodfi),stat=ierror16)
2499 IF(intfric > 0 )
THEN
2504 IF(intnitsche > 0 )
THEN
2506 ALLOCATE(
forneqsfi(nin)%P(3,nodfi),stat=ierror18)
2510 IF(ierror1+ierror2+ierror3+ierror4+ierror5+
2511 + ierror6+ierror7+ierror8 + ierror9 + ierror0 +
2512 + ierror11+ierror12+ierror13+ierror14+ierror15+
2513 + ierror16+ierror17+ierror18 /= 0)
THEN
2514 CALL ancmsg(msgid=20,anmode=aninfo)
2525 oldnsnr =
nsnfi(nin)%P(p)
2529 ALLOCATE(iaux(oldnsnr),stat=ierror17)
2530 ALLOCATE(iauxinv(oldnsnr),stat=ierror17)
2531 iauxinv(1:oldnsnr)=0
2532 IF(ierror17/=0)
THEN
2533 CALL ancmsg(msgid=20,anmode=aninfo)
2540 IF(
irem(1,i+ideb)<0)
THEN
2547#include "vectorize.inc"
2550 index(i+ideb) = nn2+j
2551 xfi(nin)%P(1,nn2+j) = xrem(1,i+ideb)
2552 xfi(nin)%P(2,nn2+j) = xrem(2,i+ideb)
2553 xfi(nin)%P(3,nn2+j) = xrem(3,i+ideb)
2554 vfi(nin)%P(1,nn2+j) = xrem(4,i+ideb)
2555 vfi(nin)%P(2,nn2+j) = xrem(5,i+ideb)
2556 vfi(nin)%P(3,nn2+j) = xrem(6,i+ideb)
2557 msfi(nin)%P(nn2+j) = xrem(7,i+ideb)
2558 stifi(nin)%P(nn2+j) = xrem(8,i+ideb)
2576 IF(igap==1 .OR. igap==2)
THEN
2577#include "vectorize.inc"
2580 gapfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
2585#include "vectorize.inc"
2588 gapfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
2589 gap_lfi(nin)%P(nn2+j) = xrem(rshift+1,i+ideb)
2596#include "vectorize.inc"
2599 tempfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
2600 areasfi(nin)%P(nn2+j) = xrem(rshift+1,i+ideb)
2608#include "vectorize.inc"
2618#include "vectorize.inc"
2636 ELSEIF(idtmins_int/=0)
THEN
2637#include "vectorize.inc"
2656#include "vectorize.inc"
2662 time_sfi(nin)%P(nn2+j ) =xrem(rshift,i+ideb)
2666 secnd_frfi(nin)%P(4,nn2+j) =xrem(rshift+1,i+ideb)
2667 secnd_frfi(nin)%P(5,nn2+j) =xrem(rshift+2,i+ideb)
2668 secnd_frfi(nin)%P(6,nn2+j) =xrem(rshift+3,i+ideb)
2671 pene_oldfi(nin)%P(2,nn2+j)=xrem(rshift+4,i+ideb)
2672 stif_oldfi(nin)%P(2,nn2+j)=xrem(rshift+5,i+ideb)
2675 pene_oldfi(nin)%P(4,nn2+j)=xrem(rshift+6,i+ideb)
2676 pene_oldfi(nin)%P(5,nn2+j)=xrem(rshift+7,i+ideb)
2682 IF(istif_msdt > 0)
THEN
2683#include "vectorize.inc"
2693 IF(ifsub_carea > 0)
THEN
2694#include "vectorize.inc"
2697 intareanfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
2703 IF (ilev==2) ishift = ishift + 1
2708 IF(
irem(8,i+ideb)==1)
THEN
2709 nd =
irem(ishift,i+ideb)
2711 irtse_fi(nin)%P(1,nn2+j) = index(nd)
2712 nd =
irem(ishift+1,i+ideb)
2713 irtse_fi(nin)%P(2,nn2+j) = index(nd)
2715 nd =
irem(ishift+2,i+ideb)
2716 irtse_fi(nin)%P(3,nn2+j) = index(nd)
2718 nd =
irem(ishift+3,i+ideb)
2719 irtse_fi(nin)%P(4,nn2+j) = index(nd)
2735 IF(
irem(ishift+6,i+ideb) > 0)
THEN
2749 IF(intnitsche > 0 )
THEN
2751#include "vectorize.inc"
2754 forneqsfi(nin)%P(1,nn2+j) = xrem(rshift,i+ideb)
2755 forneqsfi(nin)%P(2,nn2+j) = xrem(rshift+1,i+ideb)
2756 forneqsfi(nin)%P(3,nn2+j) = xrem(rshift+2,i+ideb)
2763 ideb = ideb + oldnsnr
2764 nsnfi(nin)%P(p) = nn2-nnp
2773 lskyfi = nn2*multimax
2780 IF(
ALLOCATED(xrem))
DEALLOCATE(xrem)
2781 IF(
ALLOCATED(
irem))
DEALLOCATE(
irem)
2788 IF(intth == 0 )
THEN
2794 IF(
ASSOCIATED(
afi(nin)%P))
THEN
2795 DEALLOCATE(
afi(nin)%P)
2798 IF(
ASSOCIATED(
stnfi(nin)%P))
THEN
2799 DEALLOCATE(
stnfi(nin)%P)
2803 IF(nodfi>0)
ALLOCATE(
afi(nin)%P(3,nodfi*nthread),stat=ierror1)
2804 IF(nodfi>0)
ALLOCATE(
stnfi(nin)%P(nodfi*nthread),stat=ierror2)
2806 DO i = 1, nodfi*nthread
2807 afi(nin)%P(1,i) = zero
2808 afi(nin)%P(2,i) = zero
2809 afi(nin)%P(3,i) = zero
2810 stnfi(nin)%P(i) = zero
2814 IF(
ASSOCIATED(
vscfi(nin)%P))
DEALLOCATE(
vscfi(nin)%P)
2815 IF(nodfi>0)
ALLOCATE(
vscfi(nin)%P(nodfi*nthread),stat=ierror3)
2817 DO i = 1, nodfi*nthread
2818 vscfi(nin)%P(i) = zero
2827 IF(
ASSOCIATED(
fskyfi(nin)%P))
DEALLOCATE(
fskyfi(nin)%P)
2828 IF(
ASSOCIATED(
iskyfi(nin)%P))
DEALLOCATE(
iskyfi(nin)%P)
2831 ALLOCATE(
iskyfi(nin)%P(lskyfi),stat=ierror1)
2833 ALLOCATE(
fskyfi(nin)%P(4,lskyfi),stat=ierror2)
2835 ALLOCATE(
fskyfi(nin)%P(5,lskyfi),stat=ierror2)
2844 IF(
ASSOCIATED(
afi(nin)%P))
DEALLOCATE(
afi(nin)%P)
2845 IF(
ASSOCIATED(
stnfi(nin)%P))
DEALLOCATE(
stnfi(nin)%P)
2846 IF(
ASSOCIATED(
fthefi(nin)%P))
DEALLOCATE(
fthefi(nin)%P)
2847 IF(nodfi>0)
ALLOCATE(
afi(nin)%P(3,nodfi*nthread),stat=ierror1)
2848 IF(nodfi>0)
ALLOCATE(
stnfi(nin)%P(nodfi*nthread),stat=ierror2)
2849 IF(nodfi>0)
ALLOCATE(
fthefi(nin)%P(nodfi*nthread),stat=ierror3)
2851 IF(nodadt_therm ==1)
THEN
2853 IF(nodfi>0.AND.nodadt_therm ==1)
ALLOCATE(
condnfi(nin)%P(nodfi*nthread),stat=ierror4)
2860 DO i = 1, nodfi*nthread
2861 afi(nin)%P(1,i) = zero
2862 afi(nin)%P(2,i) = zero
2863 afi(nin)%P(3,i) = zero
2864 stnfi(nin)%P(i) = zero
2867 IF(nodadt_therm ==1)
THEN
2874 IF(
ASSOCIATED(
vscfi(nin)%P))
DEALLOCATE(
vscfi(nin)%P)
2875 IF(nodfi>0)
ALLOCATE(
vscfi(nin)%P(nodfi),stat=ierror4)
2878 vscfi(nin)%P(i) = zero
2886 IF(
ASSOCIATED(
fskyfi(nin)%P))
DEALLOCATE(
fskyfi(nin)%P)
2887 IF(
ASSOCIATED(
iskyfi(nin)%P))
DEALLOCATE(
iskyfi(nin)%P)
2891 ALLOCATE(
iskyfi(nin)%P(lskyfi),stat=ierror1)
2893 ALLOCATE(
fskyfi(nin)%P(4,lskyfi),stat=ierror2)
2894 ALLOCATE(
ftheskyfi(nin)%P(lskyfi),stat=ierror3)
2896 ALLOCATE(
fskyfi(nin)%P(5,lskyfi),stat=ierror2)
2897 ALLOCATE(
ftheskyfi(nin)%P(lskyfi),stat=ierror3)
2902 IF(nodadt_therm ==1)
THEN
2904 IF(lskyfi>0)
ALLOCATE(
condnskyfi(nin)%P(lskyfi),stat=ierror4)
2911 IF(ierror1+ierror2+ierror3+ierror4/=0)
THEN
2912 CALL ancmsg(msgid=20,anmode=aninfo)
2918 IF(anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT >0)
THEN
2921 ALLOCATE(
fnconti(nin)%P(3,nodfi),stat=ierror1)
2922 ALLOCATE(
ftconti(nin)%P(3,nodfi),stat=ierror2)
2923 IF(ierror1+ierror2/=0)
THEN
2924 CALL ancmsg(msgid=20,anmode=aninfo)
2938 IF(h3d_data%N_SCAL_CSE_FRICINT >0)
THEN
2939 IF(h3d_data%N_CSE_FRIC_INTER (nin) >0)
THEN
2941 ALLOCATE(
efricfi(nin)%P(nodfi),stat=ierror1)
2943 CALL ancmsg(msgid=20,anmode=aninfo)
2952 IF(h3d_data%N_SCAL_CSE_FRIC >0)
THEN
2954 ALLOCATE(
efricgfi(nin)%P(nodfi),stat=ierror1)
2956 CALL ancmsg(msgid=20,anmode=aninfo)
2972 cand_n(i) = index(nn)+nsn
2999 2 IGAP ,NSNR ,MULTIMP ,ITY ,INTTH ,
3000 3 ILEV ,NSNFIOLD,IPARI ,H3D_DATA,INTFRIC,
3001 4 MULTI_FVM,NODADT_THERM)
3013#include "implicit_f.inc"
3017#include "com01_c.inc"
3018#include "com04_c.inc"
3019#include "task_c.inc"
3020#include "scr14_c.inc"
3021#include "scr16_c.inc"
3022#include "scr18_c.inc"
3023#include "param_c.inc"
3024#include "parit_c.inc"
3025#include "spmd_c.inc"
3030 INTEGER RESULT, NIN, NSN, I_STOK, IGAP, NSNR, MULTIMP, ITY,
3031 . CAND_N(*),INTTH,ILEV, INTFRIC,
3032 . NSNFIOLD(*), IPARI(NPARI,NINTER)
3033 INTEGER ,
INTENT(IN) :: NODADT_THERM
3034 TYPE(H3D_DATABASE) :: H3D_DATA
3035 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
3040 INTEGER OLDNSNR,NODFI,NNP,LSKYFI,
3041 . NOD, LOC_PROC, I, N, NN, P, IDEB, J, K,
3042 . IERROR1,IERROR2,IERROR3,IERROR4,IERROR5,IERROR6,IERROR7,
3043 . IERROR8,IERROR9,IERROR0,IERROR11,IERROR12,
3044 . ierror13,ierror14,ierror15,ierror16,ierror17,index(nsnr),
3045 . nn2,rshift,ishift, ioldnsnfi, nd, jdeb, nsnr_old, q
3047 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAUX
3049 .
DIMENSION(:),
ALLOCATABLE :: penefi_old, stiffi_old
3051 .
DIMENSION(:,:),
ALLOCATABLE :: secnd_frfi_old
3055 loc_proc = ispmd + 1
3069 IF(
irem(1,nn)>0)
THEN
3096 IF(
ASSOCIATED(
nsvfi(nin)%P))
DEALLOCATE(
nsvfi(nin)%P)
3097 ALLOCATE(
nsvfi(nin)%P(nodfi),stat=ierror1)
3099 ALLOCATE(
pmainfi(nin)%P(nodfi),stat=ierror2)
3100 ierror1 = ierror2 + ierror1
3101 IF(
ASSOCIATED(
xfi(nin)%P))
DEALLOCATE(
xfi(nin)%P)
3102 ALLOCATE(
xfi(nin)%P(3,nodfi),stat=ierror2)
3103 IF(
ASSOCIATED(
vfi(nin)%P))
DEALLOCATE(
vfi(nin)%P)
3104 ALLOCATE(
vfi(nin)%P(3,nodfi),stat=ierror3)
3105 IF(
ASSOCIATED(
msfi(nin)%P))
DEALLOCATE(
msfi(nin)%P)
3106 ALLOCATE(
msfi(nin)%P(nodfi),stat=ierror4)
3107 IF(
ASSOCIATED(
stifi(nin)%P))
DEALLOCATE(
stifi(nin)%P)
3108 ALLOCATE(
stifi(nin)%P(nodfi),stat=ierror5)
3109 IF(
ASSOCIATED(
itafi(nin)%P))
DEALLOCATE(
itafi(nin)%P)
3110 ALLOCATE(
itafi(nin)%P(nodfi),stat=ierror6)
3111 IF(ity==7.OR.ity==22.OR.ity==23.OR.ity==24)
THEN
3112 IF(
ASSOCIATED(
kinfi(nin)%P))
DEALLOCATE(
kinfi(nin)%P)
3113 ALLOCATE(
kinfi(nin)%P(nodfi),stat=ierror8)
3115 IF(
ASSOCIATED(
tempfi(nin)%P))
DEALLOCATE(
tempfi(nin)%P)
3116 ALLOCATE(
tempfi(nin)%P(nodfi),stat=ierror9)
3117 IF(
ASSOCIATED(
matsfi(nin)%P))
DEALLOCATE(
matsfi(nin)%P)
3118 ALLOCATE(
matsfi(nin)%P(nodfi),stat=ierror0)
3120 ALLOCATE(
areasfi(nin)%P(nodfi),stat=ierror11)
3123 IF(idtmins == 2)
THEN
3125 ALLOCATE(
nodnxfi(nin)%P(nodfi),stat=ierror12)
3127 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror13)
3129 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror14)
3130 ELSEIF(idtmins_int /= 0)
THEN
3132 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror13)
3134 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror14)
3137 IF(
ASSOCIATED(
gapfi(nin)%P))
DEALLOCATE(
gapfi(nin)%P)
3138 ALLOCATE(
gapfi(nin)%P(nodfi),stat=ierror7)
3141 ALLOCATE(
gap_lfi(nin)%P(nodfi),stat=ierror7)
3146 ALLOCATE(
irtlm_fi(nin)%P(2,nodfi),stat=ierror15)
3149 ALLOCATE(
time_sfi(nin)%P(nodfi),stat=ierror16)
3152 ALLOCATE(
secnd_frfi(nin)%P(6,nodfi),stat=ierror16)
3155 ALLOCATE(
pene_oldfi(nin)%P(5,nodfi),stat=ierror16)
3158 ALLOCATE(
stif_oldfi(nin)%P(2,nodfi),stat=ierror16)
3161 ALLOCATE(
icont_i_fi(nin)%P(nodfi),stat=ierror16)
3165 IF(intfric > 0 )
THEN
3171 ! ----------------------
3173 IF( multi_fvm%IS_INT18_LAW151.AND.iparit/=0 )
THEN
3176 IF( multi_fvm%INT18_GLOBAL_LIST(nin) )
THEN
3177 IF(
ALLOCATED( multi_fvm%R_AFI(nin)%R_FORCE_INT ) )
DEALLOCATE( multi_fvm%R_AFI(nin)%R_FORCE_INT )
3178 multi_fvm%R_AFI(nin)%NODFI = nodfi
3179 ALLOCATE( multi_fvm%R_AFI(nin)%R_FORCE_INT(3,6,nodfi*nthread) )
3180 multi_fvm%R_AFI(nin)%R_FORCE_INT(1:3,1:6,1:nodfi*nthread) = 0d+00
3186 IF(ierror1+ierror2+ierror3+ierror4+ierror5+
3187 + ierror6+ierror7+ierror8 + ierror9 + ierror0 +
3188 + ierror11+ierror12+ierror13+ierror14+ierror15+
3189 + ierror16+ierror17/= 0)
THEN
3190 CALL ancmsg(msgid=20,anmode=aninfo)
3203 oldnsnr =
nsnfi(nin)%P(p)
3207 ALLOCATE(iaux(oldnsnr),stat=ierror17)
3208 IF(ierror17/=0)
THEN
3209 CALL ancmsg(msgid=20,anmode=aninfo)
3216 IF(
irem(1,i+ideb)<0)
THEN
3223#include "vectorize.inc"
3226 index(i+ideb) = nn2+j
3227 xfi(nin)%P(1,nn2+j) = xrem(1,i+ideb)
3228 xfi(nin)%P(2,nn2+j) = xrem(2,i+ideb)
3229 xfi(nin)%P(3,nn2+j) = xrem(3,i+ideb)
3230 vfi(nin)%P(1,nn2+j) = xrem(4,i+ideb)
3231 vfi(nin)%P(2,nn2+j) = xrem(5,i+ideb)
3232 vfi(nin)%P(3,nn2+j) = xrem(6,i+ideb)
3233 msfi(nin)%P(nn2+j) = xrem(7,i+ideb)
3234 stifi(nin)%P(nn2+j) = xrem(8,i+ideb)
3253 IF(igap==1 .OR. igap==2)
THEN
3254#include "vectorize.inc"
3257 gapfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
3262#include "vectorize.inc"
3265 gapfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
3266 gap_lfi(nin)%P(nn2+j) = xrem(rshift+1,i+ideb)
3273#include "vectorize.inc"
3276 tempfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
3277 areasfi(nin)%P(nn2+j) = xrem(rshift+1,i+ideb)
3286#include "vectorize.inc"
3296#include "vectorize.inc"
3306 ELSEIF(idtmins_int/=0)
THEN
3307#include "vectorize.inc"
3318#include "vectorize.inc"
3324 time_sfi(nin)%P(nn2+j ) =xrem(rshift,i+ideb)
3328 secnd_frfi(nin)%P(4,nn2+j) =xrem(rshift+1,i+ideb)
3329 secnd_frfi(nin)%P(5,nn2+j) =xrem(rshift+2,i+ideb)
3330 secnd_frfi(nin)%P(6,nn2+j) =xrem(rshift+3,i+ideb)
3333 pene_oldfi(nin)%P(2,nn2+j)=xrem(rshift+4,i+ideb)
3334 stif_oldfi(nin)%P(2,nn2+j)=xrem(rshift+5,i+ideb)
3337 pene_oldfi(nin)%P(4,nn2+j)=xrem(rshift+6,i+ideb)
3338 pene_oldfi(nin)%P(5,nn2+j)=xrem(rshift+7,i+ideb)
3342 IF (ilev==2) ishift = ishift + 1
3347 ideb = ideb + oldnsnr
3348 nsnfi(nin)%P(p) = nn2-nnp
3356 lskyfi = nn2*multimax
3363 IF(
ALLOCATED(xrem))
DEALLOCATE(xrem)
3364 IF(
ALLOCATED(
irem))
DEALLOCATE(
irem)
3371 IF(intth == 0 )
THEN
3377 IF(
ASSOCIATED(
afi(nin)%P))
THEN
3378 DEALLOCATE(
afi(nin)%P)
3381 IF(
ASSOCIATED(
stnfi(nin)%P))
THEN
3382 DEALLOCATE(
stnfi(nin)%P)
3386 IF(nodfi>0)
ALLOCATE(
afi(nin)%P(3,nodfi*nthread),stat=ierror1)
3387 IF(nodfi>0)
ALLOCATE(
stnfi(nin)%P(nodfi*nthread),stat=ierror2)
3389 DO i = 1, nodfi*nthread
3390 afi(nin)%P(1,i) = zero
3391 afi(nin)%P(2,i) = zero
3392 afi(nin)%P(3,i) = zero
3393 stnfi(nin)%P(i) = zero
3397 IF(
ASSOCIATED(
vscfi(nin)%P))
DEALLOCATE(
vscfi(nin)%P)
3398 IF(nodfi>0)
ALLOCATE(
vscfi(nin)%P(nodfi*nthread),stat=ierror3)
3400 DO i = 1, nodfi*nthread
3401 vscfi(nin)%P(i) = zero
3416 IF(
ASSOCIATED(
afi(nin)%P))
DEALLOCATE(
afi(nin)%P)
3417 IF(
ASSOCIATED(
stnfi(nin)%P))
DEALLOCATE(
stnfi(nin)%P)
3418 IF(
ASSOCIATED(
fthefi(nin)%P))
DEALLOCATE(
fthefi(nin)%P)
3419 IF(nodfi>0)
ALLOCATE(
afi(nin)%P(3,nodfi*nthread),stat=ierror1)
3420 IF(nodfi>0)
ALLOCATE(
stnfi(nin)%P(nodfi*nthread),stat=ierror2)
3421 IF(nodfi>0)
ALLOCATE(
fthefi(nin)%P(nodfi*nthread),stat=ierror3)
3423 IF(nodadt_therm ==1)
THEN
3425 IF(nodfi>0.AND.nodadt_therm ==1)
ALLOCATE(
condnfi(nin)%P(nodfi*nthread),stat=ierror4)
3432 DO i = 1, nodfi*nthread
3433 afi(nin)%P(1,i) = zero
3434 afi(nin)%P(2,i) = zero
3435 afi(nin)%P(3,i) = zero
3436 stnfi(nin)%P(i) = zero
3439 IF(nodadt_therm ==1)
THEN
3446 IF(
ASSOCIATED(
vscfi(nin)%P))
DEALLOCATE(
vscfi(nin)%P)
3447 IF(nodfi>0)
ALLOCATE(
vscfi(nin)%P(nodfi),stat=ierror4)
3450 vscfi(nin)%P(i) = zero
3470 IF(anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT >0)
THEN
3473 ALLOCATE(
fnconti(nin)%P(3,nodfi),stat=ierror1)
3474 ALLOCATE(
ftconti(nin)%P(3,nodfi),stat=ierror2)
3475 IF(ierror1+ierror2/=0)
THEN
3476 CALL ancmsg(msgid=20,anmode=aninfo)
3490 IF(h3d_data%N_SCAL_CSE_FRICINT >0)
THEN
3491 IF(h3d_data%N_CSE_FRIC_INTER (nin) >0)
THEN
3493 ALLOCATE(
efricfi(nin)%P(nodfi),stat=ierror1)
3495 CALL ancmsg(msgid=20,anmode=aninfo)
3504 IF(h3d_data%N_SCAL_CSE_FRIC >0)
THEN
3506 ALLOCATE(
efricgfi(nin)%P(nodfi),stat=ierror1)
3508 CALL ancmsg(msgid=20,anmode=aninfo)
3524 cand_n(i) = index(nn)+nsn
3549 2 BMINMAL ,WEIGHT ,STIFN ,NIN ,ISENDTO,
3550 3 IRCVFROM,IAD_ELEM,FR_ELEM,NSNR,IGAP ,
3551 4 GAP_S ,NSNFIOLD,NODNX_SMS,ITAB,ITIED)
3562#include
"implicit_f.inc"
3566#include
"com01_c.inc"
3567#include "com04_c.inc"
3569#include "task_c.inc"
3573 INTEGER NIN, NSN, IGAP,
3574 . NSNFIOLD(*), NSV(*), WEIGHT(*), ITAB(*),
3575 . ISENDTO(NINTER+1,*), IRCVFROM(NINTER+1,*),
3576 . IAD_ELEM(2,*), FR_ELEM(*), NODNX_SMS(*),NSNR
3577 INTEGER,
INTENT(IN) :: ITIED
3579 . X(3,*), V(3,*), MS(*), BMINMAL(*), STIFN(*), GAP_S(*)
3585 INTEGER MSGTYP,INFO,I,NOD, DT_CST, LOC_PROC,P,IDEB,
3586 . J, L, BUFSIZ, LEN, NB, IERROR1,
3587 . IERROR,REQ_SB(NSPMD),
3588 . REQ_RB(NSPMD),KK,NBIRECV,IRINDEXI(NSPMD),
3589 . REQ_RD(NSPMD),REQ_SD(NSPMD),(NSPMD),
3590 . indexi,isindexi(nspmd),index(numnod),nbox(nspmd),
3591 . msgoff, msgoff2, msgoff3, msgoff4,
3592 . req_rd2(nspmd), req_sd3(nspmd),
3593 . rsiz, isiz,rshift,ishift,len2,l2
3600 my_real bminma(6,nspmd), ratio
3601 TYPE(real_pointer),
DIMENSION(NSPMD) :: RBUF
3602 TYPE(int_pointer) ,
DIMENSION(NSPMD) :: IBUF
3612 nsnfiold(p) =
nsnfi(nin)%P(p)
3615 loc_proc = ispmd + 1
3619 IF(ircvfrom(nin,loc_proc)==0.AND.
3620 . isendto(nin,loc_proc)==0)
RETURN
3621 bminma(1,loc_proc) = bminmal(1)
3622 bminma(2,loc_proc) = bminmal(2)
3623 bminma(3,loc_proc) = bminmal(3)
3624 bminma(4,loc_proc) = bminmal(4)
3625 bminma(5,loc_proc) = bminmal(5)
3626 bminma(6,loc_proc) = bminmal(6)
3630 IF(ircvfrom(nin,loc_proc)/=0)
THEN
3632 IF(isendto(nin,p)/=0)
THEN
3633 IF(p/=loc_proc)
THEN
3636 . bminma(1,loc_proc),6 ,it_spmd(p),msgtyp,
3645 IF(isendto(nin,loc_proc)/=0)
THEN
3648 IF(ircvfrom(nin,p)/=0)
THEN
3649 IF(loc_proc/=p)
THEN
3654 . bminma(1,p) ,6 ,it_spmd(p),msgtyp,
3673 IF(idtmins == 2)
THEN
3676 ELSEIF(idtmins_int/=0)
THEN
3681 IF(isendto(nin,loc_proc)/=0)
THEN
3683 CALL spmd_waitany(nbirecv,req_rb,indexi)
3686 DO j = iad_elem(1,p), iad_elem(1,p+1)-1
3689 weight(nod) = weight(nod)*(-1)
3697 IF(weight(nod)==1)
THEN
3703 IF(stifn(i)>zero)
THEN
3704 IF(x(1,nod)<=bminma(1,p))
THEN
3705 IF(x(1,nod)>=bminma(4,p))
THEN
3706 IF(x(2,nod)<=bminma(2,p))
THEN
3707 IF(x(2,nod)>=bminma(5,p))
THEN
3708 IF(x(3,nod)<=bminma(3,p))
THEN
3709 IF(x(3,nod)>=bminma(6,p))
THEN
3724 DO j = iad_elem(1,p), iad_elem(1,p+1)-1
3727 weight(nod) = weight(nod)*(-1)
3733 CALL spmd_isend(nbox(p),1,it_spmd(p),msgtyp,
3739 ALLOCATE(rbuf(p)%P(rsiz*nb),stat=ierror)
3740 ALLOCATE(ibuf(p)%P(isiz*nb),stat=ierror)
3742 CALL ancmsg(msgid=20,anmode=aninfo)
3752 rbuf(p)%p(l+1) = x(1,nod)
3753 rbuf(p)%p(l+2) = x(2,nod)
3754 rbuf(p)%p(l+3) = x(3,nod)
3755 rbuf(p)%p(l+4) = v(1,nod)
3756 rbuf(p)%p(l+5) = v(2,nod)
3757 rbuf(p)%p(l+6) = v(3,nod)
3758 rbuf(p)%p(l+7) = ms(nod)
3759 rbuf(p)%p(l+8) = stifn(i)
3761 ibuf(p)%p(l2+2) = itab(nod)
3778 rbuf(p)%p(l+rshift)= gap_s(i)
3790 ibuf(p)%p(l2+ishift) = nodnx_sms(nod)
3791 ibuf(p)%p(l2+ishift+1)= nod
3796 ELSEIF(idtmins_int/=0)
THEN
3802 ibuf(p)%p(l2+ishift)= nod
3809 1 rbuf(p)%P(1),nb*rsiz,it_spmd(p),
3810 2 msgtyp,req_sd2(p))
3814 1 ibuf(p)%P(1),nb*isiz,it_spmd(p),msgtyp,
3823 IF(ircvfrom(nin,loc_proc)/=0)
THEN
3828 IF(isendto(nin,p)/=0)
THEN
3829 IF(loc_proc/=p)
THEN
3831 CALL spmd_recv(
nsnfi(nin)%P(p),1,it_spmd(p),
3833 IF(
nsnfi(nin)%P(p)>0)
THEN
3836 nsnr = nsnr +
nsnfi(nin)%P(p)
3846 ALLOCATE(xrem(rsiz,nsnr),stat=ierror)
3848 ALLOCATE(
irem(isiz,nsnr),stat=ierror1)
3849 ierror=ierror+ierror1
3852 CALL ancmsg(msgid=20,anmode=aninfo)
3859 len =
nsnfi(nin)%P(p)*rsiz
3863 1 xrem(1,ideb),len,it_spmd(p),
3866 len2 =
nsnfi(nin)%P(p)*isiz
3869 1
irem(1,ideb),len2,it_spmd(p),
3870 2 msgtyp,req_rd2(l))
3872 ideb = ideb +
nsnfi(nin)%P(p)
3876 CALL spmd_waitany(nbirecv,req_rd,indexi)
3877 CALL spmd_waitany(nbirecv,req_rd2,indexi)
3883 IF(ircvfrom(nin,loc_proc)/=0)
THEN
3885 IF(isendto(nin,p)/=0)
THEN
3886 IF(p/=loc_proc)
THEN
3887 CALL spmd_wait(req_sb(p))
3893 IF(isendto(nin,loc_proc)/=0)
THEN
3895 IF(ircvfrom(nin,p)/=0)
THEN
3896 IF(p/=loc_proc)
THEN
3897 CALL spmd_wait(req_sd(p))
3899 CALL spmd_wait(req_sd2(p))
3900 DEALLOCATE(rbuf(p)%p)
3901 CALL spmd_wait(req_sd3(p))
3902 DEALLOCATE(ibuf(p)%p)
3928 2 IGAP ,NSNR,MULTIMP,ITY,INTTH,H3D_DATA)
3939#include "implicit_f.inc"
3943#include "com01_c.inc"
3944#include "task_c.inc"
3945#include "scr14_c.inc"
3946#include "scr16_c.inc"
3947#include "scr18_c.inc"
3948#include "parit_c.inc"
3949#include "spmd_c.inc"
3954 INTEGER RESULT, NIN, NSN, I_STOK, IGAP, NSNR, MULTIMP, ITY,
3956 TYPE(H3D_DATABASE) :: H3D_DATA
3961 INTEGER OLDNSNR,NODFI,NNP,LSKYFI,
3962 . NOD, LOC_PROC, I, N, NN, P, IDEB, J, K,
3963 . IERROR1,IERROR2,IERROR3,IERROR4,IERROR5,IERROR6,IERROR7,
3964 . IERROR8,IERROR9,IERROR10,IERROR11,IERROR12,IERROR13,
3965 . INDEX(NSNR),NN2,RSHIFT,ISHIFT
3967 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAUX
3971 loc_proc = ispmd + 1
3985 IF(
irem(1,nn)>0)
THEN
4008 IF(
ASSOCIATED(
nsvfi(nin)%P))
DEALLOCATE(
nsvfi(nin)%P)
4009 ALLOCATE(
nsvfi(nin)%P(nodfi),stat=ierror1)
4010 IF(
ASSOCIATED(
xfi(nin)%P))
DEALLOCATE(
xfi(nin)%P)
4011 ALLOCATE(
xfi(nin)%P(3,nodfi),stat=ierror2)
4012 IF(
ASSOCIATED(
vfi(nin)%P))
DEALLOCATE(
vfi(nin)%P)
4013 ALLOCATE(
vfi(nin)%P(3,nodfi),stat=ierror3)
4014 IF(
ASSOCIATED(
msfi(nin)%P))
DEALLOCATE(
msfi(nin)%P)
4015 ALLOCATE(
msfi(nin)%P(nodfi),stat=ierror4)
4016 IF(
ASSOCIATED(
stifi(nin)%P))
DEALLOCATE(
stifi(nin)%P)
4017 ALLOCATE(
stifi(nin)%P(nodfi),stat=ierror5)
4018 IF(
ASSOCIATED(
itafi(nin)%P))
DEALLOCATE(
itafi(nin)%P)
4019 ALLOCATE(
itafi(nin)%P(nodfi),stat=ierror6)
4020 IF(idtmins == 2)
THEN
4022 ALLOCATE(
nodnxfi(nin)%P(nodfi),stat=ierror7)
4024 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror8)
4026 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror9)
4027 ELSEIF(idtmins_int /= 0)
THEN
4029 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror10)
4031 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror11)
4034 IF(
ASSOCIATED(
gapfi(nin)%P))
DEALLOCATE(
gapfi(nin)%P)
4035 ALLOCATE(
gapfi(nin)%P(nodfi),stat=ierror12)
4038 ALLOCATE(
gap_lfi(nin)%P(nodfi),stat=ierror12)
4042 IF((ierror1+ierror2+ierror3+ierror4+ierror5+
4043 + ierror6+ierror7+ierror8 + ierror9 + ierror10 +
4044 + ierror11+ierror12)>0)
THEN
4045 CALL ancmsg(msgid=20,anmode
4056 oldnsnr =
nsnfi(nin)%P(p)
4060 ALLOCATE(iaux(oldnsnr),stat=ierror13)
4061 IF(ierror13/=0)
THEN
4062 CALL ancmsg(msgid=20,anmode=aninfo)
4069 IF(
irem(1,i+ideb)<0)
THEN
4076#include "vectorize.inc"
4079 index(i+ideb) = nn2+j
4080 xfi(nin)%P(1,nn2+j) = xrem(1,i+ideb)
4081 xfi(nin)%P(2,nn2+j) = xrem(2,i+ideb)
4082 xfi(nin)%P(3,nn2+j) = xrem(3,i+ideb)
4083 vfi(nin)%P(1,nn2+j) = xrem(4,i+ideb)
4084 vfi(nin)%P(2,nn2+j) = xrem(5,i+ideb)
4085 vfi(nin)%P(3,nn2+j) = xrem(6,i+ideb)
4086 msfi(nin)%P(nn2+j) = xrem(7,i+ideb)
4087 stifi(nin)%P(nn2+j) = xrem(8,i+ideb)
4098#include "vectorize.inc"
4101 gapfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
4108#include "vectorize.inc"
4117 ELSEIF(idtmins_int/=0)
THEN
4119#include "vectorize.inc"
4128 ideb = ideb + oldnsnr
4129 nsnfi(nin)%P(p) = nn2-nnp
4137 lskyfi = nn2*multimax
4144 IF(
ALLOCATED(xrem))
DEALLOCATE(xrem)
4145 IF(
ALLOCATED(
irem))
DEALLOCATE(
irem)
4155 IF(
ASSOCIATED(
afi(nin)%P))
DEALLOCATE(
afi(nin)%P)
4156 IF(
ASSOCIATED(
stnfi(nin)%P))
DEALLOCATE(
stnfi(nin)%P)
4157 IF(nodfi>0)
ALLOCATE(
afi(nin)%P(3,nodfi
4158 IF(nodfi>0)
ALLOCATE(
stnfi(nin)%P(nodfi*nthread),stat=ierror2)
4160 DO i = 1, nodfi*nthread
4161 afi(nin)%P(1,i) = zero
4162 afi(nin)%P(2,i) = zero
4163 afi(nin)%P(3,i) = zero
4164 stnfi(nin)%P(i) = zero
4168 IF(
ASSOCIATED(
vscfi(nin)%P))
DEALLOCATE(
vscfi(nin)%P)
4169 IF(nodfi>0)
ALLOCATE(
vscfi(nin)%P(nodfi*nthread),stat=ierror3)
4171 DO i = 1, nodfi*nthread
4172 vscfi(nin)%P(i) = zero
4182 IF(
ASSOCIATED(
fskyfi(nin)%P))
DEALLOCATE(
fskyfi(nin)%P)
4183 IF(
ASSOCIATED(
iskyfi(nin)%P))
DEALLOCATE(
iskyfi(nin)%P)
4186 ALLOCATE(
iskyfi(nin)%P(lskyfi),stat=ierror1)
4188 ALLOCATE(
fskyfi(nin)%P(4,lskyfi),stat=ierror2)
4190 ALLOCATE(
fskyfi(nin)%P(5,lskyfi),stat=ierror2)
4195 IF(ierror1+ierror2+ierror3+ierror4/=0)
THEN
4196 CALL ancmsg(msgid=20,anmode=aninfo)
4202 IF(anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT >0)
THEN
4205 ALLOCATE(
fnconti(nin)%P(3,nodfi),stat=ierror1)
4206 ALLOCATE(
ftconti(nin)%P(3,nodfi),stat=ierror2)
4207 IF(ierror1+ierror2/=0)
THEN
4208 CALL ancmsg(msgid=20,anmode=aninfo)
4228 cand_n(i) = index(nn)+nsn
4393 1 IRECTS ,NRTS ,X ,V ,MS ,
4394 2 BMINMAL ,WEIGHT ,STIFS ,NIN ,ISENDTO,
4395 3 IRCVFROM,IAD_ELEM ,FR_ELEM,NRTSR ,INACTI ,
4396 4 GAP_S ,PENIS ,ITAB ,IGAP ,TZINF ,
4397 5 NODNX_SMS,GAP_S_L ,NSNFIOLD,IFORM,INTTH ,
4398 6 IELEC , AREAS ,TEMP ,NISUB,ADDSUBS,
4399 7 LISUBS ,INTFRIC ,IPARTFRICS,INFLG_SUBS)
4409#include "implicit_f.inc"
4413#include "com01_c.inc"
4414#include "com04_c.inc"
4415#include "task_c.inc"
4416#include "timeri_c.inc"
4421 INTEGER NIN, INACTI, IGAP, NRTS,NRTSR, INTFRIC,
4422 . weight(*),irects(2,nrts),
4423 . isendto(ninter+1,*), ircvfrom(ninter+1,*),
4424 . iad_elem(2,*), fr_elem(*), itab(*),
4425 . nodnx_sms(*),nsnfiold(*),iform,intth,ielec(*),
4426 . nisub,addsubs(*),lisubs(*),ipartfrics(*),inflg_subs(*)
4429 . x(3,*), v(3,*), ms(*), bminmal(6),
4430 . stifs(nrts), gap_s(nrts),
4431 . gap_s_l(*), tzinf, penis(2,*),areas(*),temp(*)
4436 INTEGER MSGTYP,,I, LOC_PROC,P,IDEB,
4437 . MSGOFF, MSGOFF2, MSGOFF3, MSGOFF4,
4438 . SIZ,J, L, LEN, NB, IERROR1, IAD,
4439 . IERROR,REQ_SB(NSPMD),
4440 . REQ_RB(),KK,NBIRECV,IRINDEXI(NSPMD),
4441 . REQ_RD(NSPMD),REQ_SD(NSPMD),REQ_SD2(NSPMD),
4442 . (NSPMD),REQ_SC(NSPMD),
4443 . INDEXI,ISINDEXI(NSPMD),INDEX(NRTS),NBOX(NSPMD),
4444 . NBX,NBY,NBZ,IX,IY,IZ, N1, N2,
4445 . ix1,iy1,iz1,ix2,iy2,iz2, nod,
4446 . rsiz, isiz, l2, req_sd3(nspmd),
4447 . req_rd2(nspmd), rshift, ishift, len2, k,ll
4450 . xmaxb,ymaxb,zmaxb,xminb,yminb,zminb,
4451 . xmins, ymins, zmins, xmaxs, ymaxs, zmaxs,
4454 TYPE(real_pointer),
DIMENSION(NSPMD) :: RBUF
4455 TYPE(int_pointer) ,
DIMENSION(NSPMD) :: IBUF
4469 loc_proc = ispmd + 1
4479 nsnfiold(p) =
nsnfi(nin)%P(p)
4487 IF(ircvfrom(nin,loc_proc)==0.AND.
4488 . isendto(nin,loc_proc)==0)
RETURN
4489 bminma(1,loc_proc) = bminmal(1)
4490 bminma(2,loc_proc) = bminmal(2)
4491 bminma(3,loc_proc) = bminmal(3)
4492 bminma(4,loc_proc) = bminmal(4)
4493 bminma(5,loc_proc) = bminmal(5)
4494 bminma(6,loc_proc) = bminmal(6)
4498 IF(ircvfrom(nin,loc_proc)/=0)
THEN
4500 IF(isendto(nin,p)/=0)
THEN
4501 IF(p/=loc_proc)
THEN
4506 . it_spmd(p),msgtyp,req_sc(p))
4508 CALL spmd_isend(bminma(1,loc_proc),6,it_spmd(p),msgtyp,req_sb(p))
4516 IF(isendto(nin,loc_proc)/=0)
THEN
4519 IF(ircvfrom(nin,p)/=0)
THEN
4520 IF(loc_proc/=p)
THEN
4527 . it_spmd(p),msgtyp,req_rc(nbirecv))
4530 . bminma(1,p) ,6,it_spmd(p),msgtyp,
4545 IF(igap==1.OR.igap==2)
THEN
4548 ELSEIF(igap==3)
THEN
4553 IF(inacti==5.OR.inacti==6) rsiz = rsiz + 2
4556 IF(idtmins == 2)
THEN
4559 ELSEIF(idtmins_int/=0)
THEN
4567 IF(intfric > 0 )
THEN
4573 isiz = isiz + 1 + nisub
4579 IF(isendto(nin,loc_proc)/=0)
THEN
4581 CALL spmd_waitany(nbirecv,req_rb,indexi)
4585 CALL spmd_wait(req_rc(indexi))
4587!
DO j = iad_elem(1,p), iad_elem(1,p+1)-1
4608 IF(stifs(i)>zero)
THEN
4609 xmins =
min(x(1,n1),x(1,n2))
4610 ymins =
min(x(2,n1),x(2,n2))
4611 zmins =
min(x(3,n1),x(3,n2))
4612 xmaxs =
max(x(1,n1),x(1,n2))
4613 ymaxs =
max(x(2,n1),x(2,n2))
4614 zmaxs =
max(x(3,n1),x(3,n2))
4615 ix1=int(nbx*(xmins-xminb)/dx)
4616 ix2=int(nbx*(xmaxs-xminb)/dx)
4617 IF(ix2>=0.AND.ix1<=nbx)
THEN
4618 iy1=int(nby*(ymins-yminb)/dy)
4619 iy2=int(nby*(ymaxs-yminb)/dy)
4620 IF(iy2>=0.AND.iy1<=nby)
THEN
4621 iz1=int(nbz*(zmins-zminb)/dz)
4622 iz2=int(nbz*(zmaxs-zminb)/dz)
4623 IF(iz2>=0.AND.iz1<=nbz)
THEN
4633 IF(btest(
crvoxel(iy,iz,p),ix))
THEN
4656 CALL spmd_isend(nbox(p),1,it_spmd(p),msgtyp,
4662 ALLOCATE(rbuf(p)%P(rsiz*nb),stat=ierror)
4663 ALLOCATE(ibuf(p)%P(isiz*nb),stat=ierror)
4665 CALL ancmsg(msgid=20,anmode=aninfo)
4676 rbuf(p)%p(l+1) = x(1,n1)
4677 rbuf(p)%p(l+2) = x(2,n1)
4678 rbuf(p)%p(l+3) = x(3,n1)
4679 rbuf(p)%p(l+4) = v(1,n1)
4680 rbuf(p)%p(l+5) = v(2,n1)
4681 rbuf(p)%p(l+6) = v(3,n1)
4682 rbuf(p)%p(l+7) = ms(n1)
4683 rbuf(p)%p(l+8)= x(1,n2)
4684 rbuf(p)%p(l+9)= x(2,n2)
4685 rbuf(p)%p(l+10)= x(3,n2)
4686 rbuf(p)%p(l+11)= v(1,n2)
4687 rbuf(p)%p(l+12)= v(2,n2)
4688 rbuf(p)%p(l+13)= v(3,n2)
4689 rbuf(p)%p(l+14)= ms(n2)
4690 rbuf(p)%p(l+15)= stifs(i)
4692 ibuf(p)%p(l2+2)= itab(n1)
4693 ibuf(p)%p(l2+3)= itab(n2)
4705 IF(igap==1 .OR. igap==2)
THEN
4709 rbuf(p)%p(l+rshift)= gap_s(i)
4718 rbuf(p)%p(l+rshift) = gap_s(i)
4719 rbuf(p)%p(l+rshift+1)= gap_s_l(i)
4732 rbuf(p)%p(l+rshift) = temp(n1)
4733 rbuf(p)%p(l+rshift+1) = temp(n2)
4734 rbuf(p)%p(l+rshift+2) = areas(i)
4735 ibuf(p)%p(l2+ishift) = ielec(i)
4748 ibuf(p)%p(l2+ishift) = ipartfrics(i)
4755 IF(inacti==5.OR.inacti==6)
THEN
4759 rbuf(p)%p(l+rshift) = penis(1,i)
4760 rbuf(p)%p(l+rshift+1)= penis(2,i)
4773 ibuf(p)%p(l2+ishift) = nodnx_sms(n1)
4774 ibuf(p)%p(l2+ishift+1)= n1
4775 ibuf(p)%p(l2+ishift+2)= nodnx_sms(n2)
4776 ibuf(p)%p(l2+ishift+3)= n2
4781 ELSEIF(idtmins_int/=0)
THEN
4787 ibuf(p)%p(l2+ishift) = n1
4788 ibuf(p)%p(l2+ishift+1)= n2
4799 ibuf(p)%p(l2+ishift) = addsubs(i+1)-addsubs(i)
4801 DO k = 1,addsubs(i+1)-addsubs(i)
4803 ibuf(p)%p(l2+ishift+ll)=lisubs(addsubs(i)+k-1)
4805 ibuf(p)%p(l2+ishift+ll)=inflg_subs(addsubs(i)+k-1)
4809 ishift = ishift + 2*nisub + 1
4814 1 rbuf(p)%P(1),nb*rsiz,it_spmd(p),msgtyp,
4819 1 ibuf(p)%P(1),nb*isiz,it_spmd(p),msgtyp,
4828 IF(ircvfrom(nin,loc_proc)/=0)
THEN
4833 IF(isendto(nin,p)/=0)
THEN
4834 IF(loc_proc/=p)
THEN
4836 CALL spmd_recv(
nsnfi(nin)%P(p),1,it_spmd(p),msgtyp)
4837 IF(
nsnfi(nin)%P(p)>0)
THEN
4840 nrtsr = nrtsr +
nsnfi(nin)%P(p)
4850 ALLOCATE(xrem(rsiz,nrtsr),stat=ierror)
4851 ALLOCATE(
irem(isiz,nrtsr),stat=ierror1)
4853 ierror=ierror+ierror1
4855 CALL ancmsg(msgid=20,anmode=aninfo)
4861 len =
nsnfi(nin)%P(p)*rsiz
4863 CALL spmd_irecv(xrem(1,ideb),len,it_spmd(p),msgtyp,req_rd(l))
4865 len2 =
nsnfi(nin)%P(p)*isiz
4867 CALL spmd_irecv(
irem(1,ideb),len2,it_spmd(p),msgtyp,req_rd2(l))
4869 ideb = ideb +
nsnfi(nin)%P(p)
4872 CALL spmd_waitany(nbirecv,req_rd,indexi)
4873 CALL spmd_waitany(nbirecv,req_rd2,indexi)
4878 IF(ircvfrom(nin,loc_proc)/=0)
THEN
4880 IF(isendto(nin,p)/=0)
THEN
4881 IF(p/=loc_proc)
THEN
4882 CALL spmd_wait(req_sb(p))
4883 CALL spmd_wait(req_sc(p))
4889 IF(isendto(nin,loc_proc)/=0)
THEN
4891 IF(ircvfrom(nin,p)/=0)
THEN
4892 IF(p/=loc_proc)
THEN
4893 CALL spmd_wait(req_sd(p))
4895 CALL spmd_wait(req_sd2(p))
4896 DEALLOCATE(rbuf(p)%p)
4897 CALL spmd_wait(req_sd3(p))
4898 DEALLOCATE(ibuf(p)%p)
4923 2 INACTI,NRTSR,MULTIMP,IGAP,INTTH,
4924 2 NISUB,INTFRIC,NODADT_THERM)
4935#include "implicit_f.inc"
4939#include
"com01_c.inc"
4940#include "task_c.inc"
4941#include "scr18_c.inc"
4942#include "parit_c.inc"
4943#include "spmd_c.inc"
4948 INTEGER RESULT, NIN, NRTS, I_STOK, INACTI, NRTSR, MULTIMP, IGAP,
4949 . cand_s(*),intth,nisub,intfric
4950 INTEGER ,
INTENT(IN) :: NODADT_THERM
4955 INTEGER OLDNRTSR,SEGFI,NODFI,NNP,LSKYFI,
4956 . nod, loc_proc, i, n, nn, p, ideb, n1, n2,
4957 . ierror1,ierror2,ierror3,ierror4,ierror5,ierror6,ierror7,
4958 . ierror8,ierror9,ierror10,ierror11,ierror12,ierror13,ierror14,
4959 . ierror15,ierror16,ierror17,index(nrtsr), nn2, rshift, ishift, j, k, l,ideb_subint,
4962 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IAUX
4966 LOC_PROC = ispmd + 1
4981 IF(
irem(1,nn)>0)
THEN
5010 IF(
ASSOCIATED(
nsvfi(nin)%P))
DEALLOCATE(
nsvfi(nin)%P)
5011 ALLOCATE(
nsvfi(nin)%P(segfi),stat=ierror1)
5012 IF(
ASSOCIATED(
xfi(nin)%P))
DEALLOCATE(
xfi(nin)%P)
5013 ALLOCATE(
xfi(nin)%P(3,nodfi),stat=ierror2)
5014 IF(
ASSOCIATED(
vfi(nin)%P))
DEALLOCATE(
vfi(nin)%P)
5015 ALLOCATE(
vfi(nin)%P(3,nodfi),stat=ierror3)
5016 IF(
ASSOCIATED(
msfi(nin)%P))
DEALLOCATE(
msfi(nin)%P)
5017 ALLOCATE(
msfi(nin)%P(nodfi),stat=ierror4)
5018 IF(
ASSOCIATED(
stifi(nin)%P))
DEALLOCATE(
stifi(nin)%P)
5019 ALLOCATE(
stifi(nin)%P(segfi),stat=ierror5)
5020 IF(
ASSOCIATED(
itafi(nin)%P))
DEALLOCATE(
itafi(nin)%P)
5021 ALLOCATE(
itafi(nin)%P(nodfi),stat=ierror6)
5022 IF(idtmins == 2)
THEN
5024 ALLOCATE(
nodnxfi(nin)%P(nodfi),stat=ierror7)
5026 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror8)
5028 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror9)
5029 ELSEIF(idtmins_int /= 0)
THEN
5031 ALLOCATE(
nodamsfi(nin)%P(nodfi),stat=ierror8)
5033 ALLOCATE(
procamsfi(nin)%P(nodfi),stat=ierror9)
5036 IF(
ASSOCIATED(
gapfi(nin)%P))
DEALLOCATE(
gapfi(nin)%P)
5037 ALLOCATE(
gapfi(nin)%P(segfi),stat=ierror10)
5041 ALLOCATE(
gap_lfi(nin)%P(nodfi),stat=ierror7)
5043 IF(inacti==5.OR.inacti==6)
THEN
5044 IF(
ASSOCIATED(
penfi(nin)%P))
DEALLOCATE(
penfi(nin)%P)
5045 ALLOCATE(
penfi(nin)%P(2,segfi),stat=ierror11)
5049 IF(
ASSOCIATED(
tempfi(nin)%P))
DEALLOCATE(
tempfi(nin)%P)
5050 ALLOCATE(
tempfi(nin)%P(2*nodfi),stat=ierror12)
5051 IF(
ASSOCIATED(
matsfi(nin)%P))
DEALLOCATE(
matsfi(nin)%P)
5052 ALLOCATE(
matsfi(nin)%P(segfi),stat=ierror13)
5054 ALLOCATE(
areasfi(nin)%P(segfi),stat=ierror14)
5057 IF(intfric > 0 )
THEN
5064 ALLOCATE(
addsubsfi(nin)%P(segfi),stat=ierror15)
5066 ALLOCATE(
lisubsfi(nin)%P(nisub*segfi),stat=ierror16)
5068 ALLOCATE(
inflg_subsfi(nin)%P(nisub*segfi),stat=ierror16)
5071 IF(ierror1+ierror2+ierror3+ierror4+ierror5+
5072 + ierror6+ierror7+ierror8+ierror9+ierror10+
5073 + ierror11+ierror12+ierror13+ierror14+ierror15
5074 + ierror16+ierror17/=0)
THEN
5075 CALL ancmsg(msgid=20,anmode=aninfo)
5088 oldnrtsr =
nsnfi(nin)%P(p)
5090 IF(oldnrtsr/=0)
THEN
5092 ALLOCATE(iaux(oldnrtsr),stat=ierror12)
5093 IF(ierror12/=0)
THEN
5094 CALL ancmsg(msgid=20,anmode=aninfo)
5100 IF(
irem(1,i+ideb)<0)
THEN
5107#include "vectorize.inc"
5110 index(i+ideb) = nn2+j
5111 n1 = 2*((nn2+j)-1)+1
5113 xfi(nin)%P(1,n1) = xrem(1,i+ideb)
5114 xfi(nin)%P(2,n1) = xrem(2,i+ideb)
5115 xfi(nin)%P(3,n1) = xrem(3,i+ideb)
5116 vfi(nin)%P(1,n1) = xrem(4,i+ideb)
5117 vfi(nin)%P(2,n1) = xrem(5,i+ideb)
5118 vfi(nin)%P(3,n1) = xrem(6,i+ideb)
5119 msfi(nin)%P(n1) = xrem(7,i+ideb)
5120 xfi(nin)%P(1,n2) = xrem(8,i+ideb)
5121 xfi(nin)%P(2,n2) = xrem(9,i+ideb)
5122 xfi(nin)%P(3,n2) = xrem(10,i+ideb)
5123 vfi(nin)%P(1,n2) = xrem(11,i+ideb)
5124 vfi(nin)%P(2,n2) = xrem(12,i+ideb)
5125 vfi(nin)%P(3,n2) = xrem(13,i+ideb)
5126 msfi(nin)%P(n2) = xrem(14,i+ideb)
5127 stifi(nin)%P(nn2+j) = xrem(15,i+ideb)
5137 IF(igap==1 .OR. igap==2)
THEN
5138#include "vectorize.inc"
5141 gapfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
5146#include
"vectorize.inc"
5149 gapfi(nin)%P(nn2+j) = xrem(rshift,i+ideb)
5150 gap_lfi(nin)%P(nn2+j) = xrem(rshift+1,i+ideb)
5157#include "vectorize.inc"
5160 n1 = 2*((nn2+j)-1)+1
5162 tempfi(nin)%P(n1) = xrem(rshift,i+ideb)
5163 tempfi(nin)%P(n2) = xrem(rshift+1,i+ideb)
5164 areasfi(nin)%P(nn2+j) = xrem(rshift+2,i+ideb)
5172#include "vectorize.inc"
5181 IF(inacti==5.OR.inacti==6)
THEN
5182#include "vectorize.inc"
5185 penfi(nin)%P(1,nn2+j) = xrem(rshift,i+ideb)
5186 penfi(nin)%P(2,nn2+j) = xrem(rshift+1,i+ideb)
5195#include "vectorize.inc"
5198 n1 = 2*((nn2+j)-1)+1
5210 ELSEIF(idtmins_int/=0)
THEN
5212#include "vectorize.inc"
5215 n1 = 2*((nn2+j)-1)+1
5226 IF ((nisub>0).AND.(nn>0))
THEN
5229 addsubsfi(nin)%P(nn2+1) = ideb_subint + 1
5231 DO k = 1,
irem(ishift,i+ideb)
5233 lisubsfi(nin)%P(ideb_subint+k) =
irem(ishift+ll,i+ideb)
5238#include "vectorize.inc"
5243 DO k = 1,
irem(ishift,i+ideb)
5252 ishift = ishift + 1 + 2*nisub
5256 ideb = ideb + oldnrtsr
5257 nsnfi(nin)%P(p) = nn2-nnp
5267 lskyfi = nn2*multimax
5273 IF(
ALLOCATED(xrem))
DEALLOCATE(xrem)
5274 IF(
ALLOCATED(
irem))
DEALLOCATE(
irem)
5281 IF(intth == 0 )
THEN
5286 IF(
ASSOCIATED(
afi(nin)%P))
DEALLOCATE(
afi(nin)%P)
5287 IF(
ASSOCIATED(
stnfi(nin)%P))
DEALLOCATE(
stnfi(nin)%P)
5288 IF(nodfi>0)
ALLOCATE(
afi(nin)%P(3,nodfi*nthread),stat=ierror1)
5289 IF(nodfi>0)
ALLOCATE(
stnfi(nin)%P(nodfi*nthread),stat=ierror2)
5291 DO i = 1, nodfi*nthread
5292 afi(nin)%P(1,i) = zero
5293 afi(nin)%P(2,i) = zero
5294 afi(nin)%P(3,i) = zero
5295 stnfi(nin)%P(i) = zero
5299 IF(
ASSOCIATED(
vscfi(nin)%P))
DEALLOCATE(
vscfi(nin)%P)
5300 IF(nodfi>0)
ALLOCATE(
vscfi(nin)%P(nodfi*nthread),stat=ierror3)
5302 DO i = 1, nodfi*nthread
5303 vscfi(nin)%P(i) = zero
5319 IF(
ASSOCIATED(
afi(nin)%P))
DEALLOCATE(
afi(nin)%P)
5320 IF(
ASSOCIATED(
stnfi(nin)%P))
DEALLOCATE(
stnfi(nin)%P)
5321 IF(nodfi>0)
ALLOCATE(
afi(nin)%P(3,nodfi*nthread),stat=ierror1)
5322 IF(nodfi>0)
ALLOCATE(
stnfi(nin)%P(nodfi*nthread),stat=ierror2)
5323 IF(nodfi>0)
ALLOCATE(
fthefi(nin)%P(nodfi*nthread),stat=ierror3)
5325 IF(nodadt_therm ==1)
THEN
5327 IF(nodfi>0)
ALLOCATE(
condnfi(nin)%P(nodfi*nthread),stat=ierror4)
5331 DO i = 1, nodfi*nthread
5332 afi(nin)%P(1,i) = zero
5333 afi(nin)%P(2,i) = zero
5334 afi(nin)%P(3,i) = zero
5335 stnfi(nin)%P(i) = zero
5338 IF(nodadt_therm ==1)
THEN
5345 IF(
ASSOCIATED(
vscfi(nin)%P))
DEALLOCATE(
vscfi(nin)%P)
5346 IF(nodfi>0)
ALLOCATE(
vscfi(nin)%P(nodfi),stat=ierror3)
5349 vscfi(nin)%P(i) = zero
5359 IF(ierror1+ierror2+ierror3+ierror4/=0)
THEN
5360 CALL ancmsg(msgid=20,anmode=aninfo)
5370 cand_s(i) = index(nn)+nrts