252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
346 USE intbufdef_mod
348
349
350
351 USE spmd_comm_world_mod, ONLY : spmd_comm_world
352#include "implicit_f.inc"
353
354
355
356#include "com01_c.inc"
357#include "com04_c.inc"
358#include "task_c.inc"
359#include "spmd_c.inc"
360#include "sms_c.inc"
361
362
363
364 TYPE(INTBUF_STRUCT_) :: INTBUF_TAB
365 INTEGER, INTENT(IN) :: NIN, NI25, NSN, IGAP, INTTH,ILEV,INTFRIC,FLAGREMN,
366 . LREMNORMAX, NRTM, IVIS2,
367 . NB_SLID(NSPMD),
368 . ITAB(*)
369 INTEGER, INTENT(INOUT) :: NSNR
370 INTEGER, INTENT(IN) :: NODADT_THERM
371 INTEGER, INTENT(IN) :: ISTIF_MSDT,
372 INTEGER IAD_FRNOR(NINTER25,NSPMD+1),FR_NOR(*)
373 TYPE(H3D_DATABASE) :: H3D_DATA
374
375
376
377#ifdef MPI
378 INTEGER NSNR_OLD,NSNR_NEW,NODFI,NNP,LSKYFI,
379 . , LOC_PROC, I, N, NN, P, , J, K,L,JJ, I_STOK, IX, II
380 INTEGER NSNR_TOT
381 INTEGER, DIMENSION(:), ALLOCATABLE :: INDEX
382 INTEGER NN2,RSHIFT,ISHIFT, IOLDNSNFI, ND, JDEB, Q
383 INTEGER, DIMENSION(:), ALLOCATABLE :: IAUX,IAUX_LOCAL,IAUX_REV,IAUX_K,IAUX_L
384 INTEGER IDEB_NEW
385 INTEGER IDEB_OLD
386 INTEGER IDEB_SLID
387 INTEGER PNEW,POLD,ID_OLD,ID_NEW
388 INTEGER SNEW,SOLD,PMAIN,NB_SLID_TOT
390 . DIMENSION(:), ALLOCATABLE :: penefi_old, stiffi_old
391 INTEGER MARGIN,N_NEW_SECND,UID
392 TYPE(I25_TMP_STRUCT) :: TMP
393 TYPE(int_pointer) , DIMENSION(NSPMD) :: INDX_FOR_P,UID_FOR_P
394 INTEGER, ALLOCATABLE, DIMENSION(:) :: PERMUTATIONS, PROC_ORIG
395 INTEGER SINDEX(NSPMD), SIZE_PERM_MAX, PROC_FROM
396 INTEGER WORK(70000)
397 INTEGER PLOCAL, NBLOCAL, PM, KK, KM, KI, LL, SIZREMNORFI, SIZ, NE
398 INTEGER, DIMENSION(:), ALLOCATABLE ::
399
400
401
402 loc_proc = ispmd + 1
403 nodfi = 0
404 lskyfi= 0
405 nb_slid_tot = 0
406 nsnr_tot = 0
407
408
409
410
411
412 DO p = 1,nspmd
413 nodfi = nodfi +
nsnfi(nin)%P(p) + nb_slid(p)
414 nb_slid_tot = nb_slid_tot + nb_slid(p)
415 nsnr_tot = nsnr_tot +
nsnfi(nin)%P(p)
416 ENDDO
417 ALLOCATE(proc_orig(nb_slid_tot))
418 ideb = 0
419 DO p = 1,nspmd
420 proc_orig(ideb+1:ideb+nb_slid(p)) = p
421 ideb = ideb + nb_slid(p)
422 ENDDO
423
424
425 ALLOCATE(index(nsnr_tot))
426 index(1:nsnr_tot) = 0
427 CALL reallocate_fi1(nodfi,tmp,nin,intth,igap,ilev,intfric,flagremn,ivis2,istif_msdt,ifsub_carea)
428 nsnfi(nin)%P(1:nspmd) = tmp%NSNFI%P(1:nspmd)
429
430
431
432 ideb = 0
433 ideb_new = 0
434 jdeb = 0
435 ideb_new = 0
436 ideb_old = 0
437 ideb_slid = 0
438
439
440
441! only new remote kept in xrem
442
443
444 DO p = 1,nspmd
445
446 nullify(indx_for_p(p)%P)
447 nullify(uid_for_p(p)%P)
448 ALLOCATE(indx_for_p(p)%P(
max(nb_slid_tot,1)))
449 ALLOCATE(uid_for_p(p)%P(
max(1,nb_slid_tot)))
450 indx_for_p(p)%P(1:nb_slid_tot) = 0
451 uid_for_p(p)%P(1:nb_slid_tot) = 0
452 sindex(p) = 0
453 ENDDO
454
455
456 DO i = 1,nb_slid_tot
459 sindex(p) = sindex(p) + 1
460
461 indx_for_p(p)%P(sindex(p)) = i
462 uid_for_p(p)%P(sindex(p)) = uid
463 ENDDO
464
465 size_perm_max = 0
466 DO p = 1, nspmd
467 size_perm_max =
max(size_perm_max,sindex(p))
468 ENDDO
469
470 ALLOCATE(permutations(2*size_perm_max))
471 IF(flagremn == 2 ) THEN
472 ALLOCATE(remnor_fi_tmp(nodfi*lremnormax))
473 ki = 0
474 ENDIF
475 DO p = 1, nspmd
476
477
478 nn = 0
479 nsnr_old =
nsnfi(nin)%P(p)
480 nsnr_new = sindex(p)
481 nsnfi(nin)%P(p) = nsnr_new + nsnr_old
482
483 IF(nsnr_old + nsnr_new > 0) THEN
484
485
486 IF(nsnr_new > 0) THEN
487 CALL my_orders(0,work,uid_for_p(p)%P,permutations,nsnr_new,1)
488 DO i = 1,nsnr_new
489 permutations(i) = indx_for_p(p)%P(permutations(i))
490 ENDDO
491 DO i = 1,nsnr_new
492 indx_for_p(p)%P(i) = permutations(i)
493 ENDDO
494 ENDIF
495
496 ALLOCATE(iaux(nsnr_old+nsnr_new))
497 ALLOCATE(iaux_local(nsnr_old+nsnr_new))
498 ALLOCATE(iaux_rev(nsnr_old+nsnr_new))
499 ALLOCATE(iaux_k(nsnr_old+nsnr_new))
500 ALLOCATE(iaux_l(nsnr_old+nsnr_new))
501
502 pold=1
503 pnew=1
504
505
506 i = 1
507 ix= 1
508 plocal = 1
509 nblocal = 0
510 DO WHILE(pold<= nsnr_old .OR. pnew <= nsnr_new)
511
512
513 IF(pold > nsnr_old) THEN
514 id_old = 0
515 ELSE
516 id_old = tmp%ITAFI%P(ideb_old+pold)
517 ENDIF
518 IF(pnew > nsnr_new) THEN
519
520
521
522 id_new = id_old + 1
523 ELSE
524 id_new =
irem(2,indx_for_p(p)%P(pnew))
525 ENDIF
526 IF((id_new > id_old .OR. pnew > nsnr_new).AND. pold <= nsnr_old) THEN
527 index(ideb_old+pold) = ix + ideb_new
528 ix = ix + 1
529 iaux(i) = pold
530 pold = pold + 1
531
532
533 ELSEIF ((id_new < id_old .OR. pold > nsnr_old) .AND. pnew <= nsnr_new) THEN
534
535
536 IF(nsn > 0)THEN
537 DO WHILE( itab(intbuf_tab%NSV(plocal)) < id_new .AND. plocal < nsn )
538 plocal = plocal + 1
539 ENDDO
540 IF(itab(intbuf_tab%NSV(plocal)) == id_new) THEN
541
542 nblocal = nblocal + 1
543 iaux_rev(nblocal) = i
544 iaux_local(nblocal) = plocal
545
546 ELSE
547
548 ix = ix + 1
549 ENDIF
550 iaux(i) = -pnew
551 pnew = pnew + 1
552 ELSE
553
554 ix = ix + 1
555 iaux(i) = -pnew
556 pnew = pnew + 1
557 END IF
558 ELSEIF (id_new == id_old .AND. pnew <= nsnr_new .AND. pold <= nsnr_old) THEN
559
560
561
563 index(ideb_old+pold) = ix + ideb_new
564 ix = ix + 1
565 iaux(i) = -pnew
566 pnew = pnew + 1
567 pold = pold + 1
568
569! . ideb_old+pold-1,index(ideb_old+pold-1)
570 ENDIF
571 i = i + 1
572 ENDDO
573
574
575
576
577
578
579 DO j = 1,nblocal
580 i = iaux(iaux_rev(j))
581 l = indx_for_p(p)%P(-i)
582 k = iaux_local(j)
583 iaux_k(iaux_rev(j)) = k
584 iaux_l(iaux_rev(j)) = l
585 iaux(iaux_rev(j)) = 0
586 ENDDO
587
588
589
590
591
592
593
594
596 nsnfi(nin)%P(p) = nn - nblocal
597
598
599 nblocal = 0
600 DO j=1,nn
601 i = iaux(j)
602 k = ideb_new+j-nblocal
603 IF(i > 0 )THEN
604
605 l = ideb_old+i
606 xfi(nin)%P(1,k) = tmp%XFI%P(1,l)
607 xfi(nin)%P(2,k) = tmp%XFI%P(2,l)
608 xfi(nin)%P(3,k) = tmp%XFI%P(3,l)
609 vfi(nin)%P(1,k) = tmp%VFI%P(1,l)
610 vfi(nin)%P(2,k) = tmp%VFI%P(2,l)
611 vfi(nin)%P(3,k) = tmp%VFI%P(3,l)
612 msfi(nin)%P(k) = tmp%MSFI%P(l)
613 stifi(nin)%P(k) = tmp%STIFI%P(l)
614 nsvfi(nin)%P(k) = tmp%NSVFI%P(l)
615 itafi(nin)%P(k) = tmp%ITAFI%P(l)
616 pmainfi(nin)%P(k) = tmp%PMAINFI%P(l)
617 kinfi(nin)%P(k) = tmp%KINFI%P(l)
618 ELSEIF( i < 0 ) THEN
619
620 l = indx_for_p(p)%P(-i)
621 xfi(nin)%P(1,k) = xrem(1,l)
622 xfi(nin)%P(2,k) = xrem(2,l)
623 xfi(nin)%P(3,k) = xrem(3,l)
624 vfi(nin)%P(1,k) = xrem(4,l)
625 vfi(nin)%P(2,k) = xrem(5,l)
626 vfi(nin)%P(3,k) = xrem(6,l)
627 msfi(nin)%P(k) = xrem(7,l)
628 stifi(nin)%P(k) = xrem(8,l)
633 ELSEIF(i == 0) THEN
634
635
636 nblocal = nblocal +1
637 ENDIF
638 END DO
639
640
641
642 rshift = 9
643
644
645 ishift = 8
646
647
648 IF(.true. )THEN
649 nblocal = 0
650 DO j = 1, nn
651 i = iaux(j)
652 k = ideb_new+j -nblocal
653 IF (i > 0) THEN
654 l = ideb_old+i
655 icodt_fi(nin)%P(k) = tmp%ICODT_FI%P(l)
656 iskew_fi(nin)%P(k) = tmp%ISKEW_FI%P(l)
657 ELSEIF( i < 0 ) THEN
658 l = indx_for_p(p)%P(-i)
661 ELSEIF(i == 0) THEN
662 nblocal = nblocal+1
663 END IF
664 END DO
665 ishift = ishift + 2
666 ENDIF
667
668
669
670
671 IF(igap==1 .OR. igap==2)THEN
672 nblocal = 0
673 DO j=1,nn
674 i = iaux(j)
675 k = ideb_new+j-nblocal
676 IF (i > 0) THEN
677 l = ideb_old+i
678 gapfi(nin)%P(k) = tmp%GAPFI%P(l)
679 ELSEIF( i < 0 ) THEN
680 l = indx_for_p(p)%P(-i)
681 gapfi(nin)%P(k) = xrem(rshift,l)
682 ELSEIF(i == 0) THEN
683 nblocal = nblocal+1
684 END IF
685 END DO
686 rshift = rshift + 1
687 ELSEIF(igap==3)THEN
688 nblocal = 0
689 DO j = 1, nn
690 i = iaux(j)
691 k = ideb_new+j - nblocal
692 IF (i > 0) THEN
693 l = ideb_old+i
694 gapfi(nin)%P(k) = tmp%GAPFI%P(l)
695 gap_lfi(nin)%P(k) = tmp%GAP_LFI%P(l)
696 ELSEIF( i < 0 ) THEN
697 l = indx_for_p(p)%P(-i)
698 gapfi(nin)%P(k) = xrem(rshift ,l)
699 gap_lfi(nin)%P(k) = xrem(rshift+1,l)
700 ELSEIF(i == 0) THEN
701 nblocal = nblocal+1
702 END IF
703 END DO
704 rshift = rshift + 2
705 ENDIF
706
707
708
709 IF(intth>0)THEN
710 nblocal = 0
711 DO j = 1, nn
712 i = iaux(j)
713 k = ideb_new+j -nblocal
714 IF (i > 0) THEN
715 l = ideb_old+i
716 tempfi(nin)%P(k) = tmp%TEMPFI%P(l)
717 areasfi(nin)%P(k) = tmp%AREASFI%P(l)
718 matsfi(nin)%P(k) = tmp%MATSFI%P(l)
719 ELSEIF( i < 0 ) THEN
720 l = indx_for_p(p)%P(-i)
721 tempfi(nin)%P(k) = xrem(rshift ,l)
722 areasfi(nin)%P(k) = xrem(rshift+1,l)
724 ELSEIF(i == 0) THEN
725 nblocal = nblocal+1
726 END IF
727 END DO
728 rshift = rshift + 2
729 ishift = ishift + 1
730 ENDIF
731
732
733 IF(ivis2==-1)THEN
734 nblocal = 0
735 DO j = 1, nn
736 i = iaux(j)
737 k = ideb_new+j -nblocal
738 IF (i > 0) THEN
739 l = ideb_old+i
740 IF(intth==0)
areasfi(nin)%P(k) = tmp%AREASFI%P(l)
741 if_adhfi(nin)%P(k) = tmp%IF_ADHFI%P(l)
742 ELSEIF( i < 0 ) THEN
743 l = indx_for_p(p)%P(-i)
744 IF(intth==0)
areasfi(nin)%P(k) = xrem(rshift,l)
746 ELSEIF(i == 0) THEN
747 k = iaux_k(j)
748 l = iaux_l(j)
749 IF(intth==0) intbuf_tab%AREAS(k) = xrem(rshift,l)
750 intbuf_tab%IF_ADH(k) =
irem(ishift,l)
751 nblocal = nblocal+1
752 END IF
753 END DO
754 IF(intth==0) rshift = rshift + 1
755 ishift = ishift + 1
756 ENDIF
757
758
759 IF(intfric > 0 ) THEN
760 nblocal = 0
761 DO j = 1, nn
762 i = iaux(j)
763 k = ideb_new+j -nblocal
764 IF (i > 0) THEN
765 l = ideb_old+i
767 ELSEIF( i < 0 ) THEN
768 l = indx_for_p(p)%P(-i)
770 ELSEIF(i == 0) THEN
771 nblocal = nblocal+1
772 END IF
773 END DO
774 ishift = ishift + 1
775 ENDIF
776
777 IF(istif_msdt > 0) THEN
778 nblocal = 0
779 DO j = 1, nn
780 i = iaux(j)
781 k = ideb_new+j -nblocal
782 IF (i > 0) THEN
783 l = ideb_old+i
785 ELSEIF( i < 0 ) THEN
786 l = indx_for_p(p)%P(-i)
788 ELSEIF(i == 0) THEN
789 nblocal = nblocal+1
790 END IF
791 END DO
792 rshift = rshift + 1
793 ENDIF
794
795
796 IF(ifsub_carea > 0) THEN
797 nblocal = 0
798 DO j = 1, nn
799 i = iaux(j)
800 k = ideb_new+j -nblocal
801 IF (i > 0) THEN
802 l = ideb_old+i
804 ELSEIF( i < 0 ) THEN
805 l = indx_for_p(p)%P(-i)
807 ELSEIF(i == 0) THEN
808 nblocal = nblocal+1
809 END IF
810 END DO
811 rshift = rshift + 1
812 ENDIF
813
814 IF(idtmins==2)THEN
815 nblocal = 0
816 DO j = 1, nn
817 i = iaux(j)
818 k = ideb_new+j-nblocal
819 IF (i > 0) THEN
820 l = ideb_old+i
821 nodnxfi(nin)%P(k) = tmp%NODNXFI%P(l)
822 nodamsfi(nin)%P(k) = tmp%NODAMSFI%P(l)
824 ELSEIF( i < 0 ) THEN
825 l = indx_for_p(p)%P(-i)
829 ELSEIF(i == 0) THEN
830 nblocal = nblocal+1
831 END IF
832 END DO
833 ishift = ishift + 2
834
835 ELSEIF(idtmins_int/=0)THEN
836 nblocal = 0
837 DO j = 1, nn
838 i = iaux(j)
839 k = ideb_new+j-nblocal
840 IF (i > 0) THEN
841 l = ideb_old+i
842 nodamsfi(nin)%P(k) = tmp%NODAMSFI%P(l)
844 ELSEIF( i < 0 ) THEN
845 l = indx_for_p(p)%P(-i)
848 ELSEIF(i == 0) THEN
849 nblocal = nblocal+1
850 END IF
851 END DO
852 ishift = ishift + 1
853 ENDIF
854
855
856
857 nblocal = 0
858 DO j = 1, nn
859 i = iaux(j)
860 k = ideb_new+j-nblocal
861 IF (i > 0) THEN
862 l = ideb_old+i
863 time_sfi(nin)%P(2*(k-1)+1) = tmp%TIME_SFI%P(2*(l-1)+1)
864 time_sfi(nin)%P(2*(k-1)+2) = tmp%TIME_SFI%P(2*(l-1)+2)
865 secnd_frfi(nin)%P(4,k) = tmp%SECND_FRFI%P(4,l)
866 secnd_frfi(nin)%P(5,k) = tmp%SECND_FRFI%P(5,l)
867 secnd_frfi(nin)%P(6,k) = tmp%SECND_FRFI%P(6,l)
873 ELSEIF( i < 0 ) THEN
874 l = indx_for_p(p)%P(-i)
875 time_sfi(nin)%P(2*(k-1)+1) = xrem(rshift+0,l)
876 time_sfi(nin)%P(2*(k-1)+2) = xrem(rshift+1,l)
885 ELSEIF(i == 0) THEN
886 k = iaux_k(j)
887 l = iaux_l(j)
888 intbuf_tab%TIME_S(2*(k-1)+1) = xrem(rshift+0,l)
889 intbuf_tab%TIME_S(2*(k-1)+2) = xrem(rshift+1,l)
890 intbuf_tab%SECND_FR(6*(k-1)+4) = xrem(rshift+2,l)
891 intbuf_tab%SECND_FR(6*(k-1)+5) = xrem(rshift+3,l)
892 intbuf_tab%SECND_FR(6*(k-1)+6) = xrem(rshift+4,l)
893 intbuf_tab%PENE_OLD(5*(k-1)+2) = xrem(rshift+5,l)
894 intbuf_tab%STIF_OLD(2*(k-1)+2) = xrem(rshift+6,l)
895 intbuf_tab%PENE_OLD(5*(k-1)+3) = xrem(rshift+7,l)
896 intbuf_tab%PENE_OLD(5*(k-1)+4) = xrem(rshift+8,l)
897 intbuf_tab%PENE_OLD(5*(k-1)+5) = xrem(rshift+9,l)
898 nblocal = nblocal+1
899 END IF
900 END DO
901 rshift = rshift + 10
902
903 nblocal = 0
904 DO j = 1, nn
905 i = iaux(j)
906 k = ideb_new+j-nblocal
907 IF (i > 0) THEN
908 l = ideb_old+i
909 irtlm_fi(nin)%P(1,k) = tmp%IRTLM_FI%P(1,l)
910 irtlm_fi(nin)%P(2,k) = tmp%IRTLM_FI%P(2,l)
911 irtlm_fi(nin)%P(3,k) = tmp%IRTLM_FI%P(3,l)
912 irtlm_fi(nin)%P(4,k) = tmp%IRTLM_FI%P(4,l)
914 ELSEIF( i < 0 ) THEN
915 l = indx_for_p(p)%P(-i)
921 ELSEIF(i == 0) THEN
922 k = iaux_k(j)
923 l = iaux_l(j)
924 intbuf_tab%IRTLM(4*(k-1)+1) =
irem(ishift+0,l)
925 intbuf_tab%IRTLM(4*(k-1)+2) =
irem(ishift+1,l)
926 intbuf_tab%IRTLM(4*(k-1)+3) =
irem(ishift+2,l)
927 intbuf_tab%IRTLM(4*(k-1)+4) =
irem(ishift+3,l)
928 intbuf_tab%ICONT_I(k) =
irem(ishift+4,l)
929 nblocal = nblocal+1
930 END IF
931 END DO
932 ishift = ishift + 5
933
934 IF (ilev==2) THEN
935
936 nblocal = 0
937 DO j = 1, nn
938 i = iaux(j)
939 k = ideb_new+j-nblocal
940 IF (i > 0) THEN
941 l = ideb_old+i
942
943 ELSEIF( i < 0 ) THEN
944 l = indx_for_p(p)%P(-i)
946 ELSEIF(i == 0) THEN
947 nblocal = nblocal+1
948 END IF
949 END DO
950 ishift = ishift + 1
951 END IF
952
953 nblocal = 0
954 DO j = 1, nn
955 i = iaux(j)
956 k = ideb_new+j-nblocal
957 IF (i > 0) THEN
958
959 l = ideb_old+i
960 islide_fi(nin)%P(1,k) = tmp%ISLIDE_FI%P(1,l)
961 islide_fi(nin)%P(2,k) = tmp%ISLIDE_FI%P(2,l)
962 islide_fi(nin)%P(3,k) = tmp%ISLIDE_FI%P(3,l)
963 islide_fi(nin)%P(4,k) = tmp%ISLIDE_FI%P(4,l)
964 ELSEIF( i < 0 ) THEN
965
966 l = indx_for_p(p)%P(-i)
967 proc_from = proc_orig(l)
968 DO jj = 1,4
969 IF(
irem(ishift-1+jj,l) >0 )
THEN
970 islide_fi(nin)%P(jj,k) = fr_nor(
irem(ishift-1+jj,l) + iad_frnor(ni25,proc_from) - 1)
971 ELSE
973 ENDIF
974 ENDDO
975 ELSEIF(i == 0) THEN
976
977 k = iaux_k(j)
978 l = iaux_l(j)
979 proc_from = proc_orig(l)
980 DO jj = 1,4
981 IF(
irem(ishift-1+jj,l) >0 )
THEN
982 intbuf_tab%ISLIDE(4*(k-1)+jj) = fr_nor(
irem(ishift-1+jj,l) + iad_frnor(ni25,proc_from) - 1)
983 ELSE
984 intbuf_tab%ISLIDE(4*(k-1)+jj) = 0
985 ENDIF
986 ENDDO
987 nblocal = nblocal+1
988 END IF
989 END DO
990 ishift = ishift + 4
991
992
993
994
995 IF(flagremn==2)THEN
996 nblocal = 0
997 DO j = 1, nn
998 i = iaux(j)
999 k = ideb_new+j-nblocal
1000 IF (i > 0) THEN
1001 l = ideb_old+i
1002 siz = tmp%KREMNOR_FI%P(l+1)- tmp%KREMNOR_FI%P(l)
1004
1005 DO km=tmp%KREMNOR_FI%P(l)+1,tmp%KREMNOR_FI%P(l+1)
1006 ki = ki +1
1007 remnor_fi_tmp(ki) = tmp%REMNOR_FI%P(km)
1008 ENDDO
1009 ELSEIF( i < 0 ) THEN
1010 DO ne=1,nrtm
1011 kk = intbuf_tab%KREMNODE(2*(ne-1)+2) + 1
1012 ll = intbuf_tab%KREMNODE(2*(ne-1)+3)
1013 DO km=kk,ll
1014 IF(intbuf_tab%REMNODE(km) == -
itafi(nin)%P(k) )
THEN
1016 ki = ki+1
1017 remnor_fi_tmp(ki) = ne
1018 ENDIF
1019 ENDDO
1020 ENDDO
1021 ELSEIF(i == 0) THEN
1022 nblocal = nblocal+1
1023 END IF
1024
1025 END DO
1026
1027 ENDIF
1028
1029
1030
1031
1032 ideb_new = ideb_new +
nsnfi(nin)%P(p)
1033
1034
1035 ideb_old = ideb_old + nsnr_old
1036 ideb_slid = ideb_slid + nb_slid(p)
1037 DEALLOCATE(iaux,iaux_local,iaux_rev,iaux_k,iaux_l)
1038
1039
1040 ENDIF
1041 ENDDO
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064 IF(flagremn == 2 ) THEN
1065 DO n=1,nodfi
1067 END DO
1068
1069 DO n=nodfi,1,-1
1071 END DO
1073
1076 IF(sizremnorfi > 0) THEN
1077 DO n=1,sizremnorfi
1079 ENDDO
1080 ENDIF
1081 DEALLOCATE(remnor_fi_tmp)
1082 ENDIF
1083
1084
1085
1086
1087 lskyfi = ideb_new*multimax
1088 nsnr = ideb_new
1089
1090
1091
1092
1093
1094
1095
1096 IF(ALLOCATED(xrem)) DEALLOCATE(xrem)
1097 IF(
ALLOCATED(
irem))
DEALLOCATE(
irem)
1098
1099
1100
1101
1102 CALL reallocate_fi2(nin, intth, nodfi, lskyfi, h3d_data,nodadt_therm)
1103
1104
1105
1106 CALL deallocate_fi1_tmp(nodfi,tmp,nin,intth,igap,ilev,intfric,flagremn,ivis2,istif_msdt,ifsub_carea)
1107
1108 DO i = 1, intbuf_tab%I_STOK(1)
1109 n = intbuf_tab%CAND_N(i)
1110 nn = n-nsn
1111 IF(nn>0)THEN
1112 intbuf_tab%CAND_N(i) = abs(index(nn))+nsn
1113 ENDIF
1114 ENDDO
1115
1116 DO i = 1, intbuf_tab%I_STOK(2)
1117 n = intbuf_tab%CAND_OPT_N(i)
1118 nn = n-nsn
1119 IF(nn>0)THEN
1120 intbuf_tab%CAND_OPT_N(i) = abs(index(nn))+nsn
1121 ENDIF
1122 ENDDO
1123
1124 DO p=1,nspmd
1125 DEALLOCATE(indx_for_p(p)%P)
1126 DEALLOCATE(uid_for_p(p)%P)
1127 ENDDO
1128
1129 DEALLOCATE(permutations,proc_orig)
1130
1131
1132#endif
1133 RETURN
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
integer, dimension(:,:), allocatable irem
subroutine reallocate_fi2(nin, intth, nodfi, lskyfi, h3d_data, nodadt_therm)
subroutine reallocate_fi1(new_size, tmp, nin, intth, igap, ilev, intfric, flagremn, ivis2, istif_msdt, ifsub_carea)
subroutine deallocate_fi1_tmp(new_size, tmp, nin, intth, igap, ilev, intfric, flagremn, ivis2, istif_msdt, ifsub_carea)