88 USE bief, ONLY : bief_ncsize => ncsize, nbmaxnshare, ipid,
front2 93 INTEGER,
PARAMETER :: maxnproc = 100000
95 INTEGER,
PARAMETER :: maxaddch = 10
97 INTEGER,
PARAMETER :: maxvar = 100
99 INTEGER,
PARAMETER :: maxallvarlength = 3200
102 INTEGER nvar, nplan, nptfr, nptir, nptfrmax
103 INTEGER nelem, npoin, ndp, nelem2, npoin2, ndum
106 INTEGER,
ALLOCATABLE :: ikles(:), ikles_p(:)
107 INTEGER,
ALLOCATABLE :: ikles3d(:),ikles3d_p(:,:,:)
108 INTEGER,
ALLOCATABLE :: irand(:), irand_p(:)
109 INTEGER,
ALLOCATABLE :: lihbor(:), liubor(:), livbor(:)
110 INTEGER,
ALLOCATABLE :: litbor(:)
111 INTEGER :: npoin_p, nelem_p , nptfr_p,nptir_p
112 INTEGER,
ALLOCATABLE :: nbor(:), nbor_p(:)
113 INTEGER,
ALLOCATABLE :: numliq(:)
114 INTEGER,
ALLOCATABLE :: knolg(:), knogl(:),
check(:)
115 INTEGER,
ALLOCATABLE :: elelg(:)
116 INTEGER,
ALLOCATABLE :: cut(:), cut_p(:), sort(:)
117 INTEGER,
ALLOCATABLE :: part_p(:,:)
119 REAL,
ALLOCATABLE :: f(:,:), f_p(:,:)
120 REAL,
ALLOCATABLE :: hbor(:)
121 REAL,
ALLOCATABLE :: ubor(:), vbor(:), aubor(:)
122 REAL,
ALLOCATABLE :: tbor(:), atbor(:), btbor(:)
126 INTEGER :: ninp, ncli, nout, nclm
127 INTEGER time(3), date(3)
129 CHARACTER(LEN=80) :: title
130 CHARACTER(LEN=32) :: vari, variable(maxvar)
131 CHARACTER(LEN=PATH_LEN) :: nameinp, namecli, nameout, nameclm
132 CHARACTER(LEN=15) :: fmt4
135 INTEGER i, j, k, l , m, err, iso
136 INTEGER istop, istart, iseg, iloop
137 INTEGER i_len, i_s, i_sp, i_lencli, i_leninp
140 LOGICAL is, timecount
145 INTEGER,
ALLOCATABLE :: epart(:), npart(:)
150 INTEGER,
PARAMETER :: maxfro = 3000
151 INTEGER nfrliq, nfrsol, debliq(maxfro), finliq(maxfro)
152 INTEGER debsol(maxfro), finsol(maxfro)
153 INTEGER,
ALLOCATABLE :: dejavu(:), kp1bor(:,:)
154 INTEGER,
ALLOCATABLE :: nachb(:,:)
155 DOUBLE PRECISION,
ALLOCATABLE :: x_d(:), y_d(:)
159 INTEGER,
ALLOCATABLE :: ifabor(:,:), ifanum(:,:), nelbor(:)
160 INTEGER,
ALLOCATABLE :: nulone(:,:)
161 INTEGER,
ALLOCATABLE :: ikle(:,:), iklbor(:,:), isegf(:)
162 INTEGER,
ALLOCATABLE :: it1(:), it2(:), it3(:)
166 INTEGER tdebp, tfinp, temps, parsec
168 CHARACTER(LEN=11) :: extens
170 CHARACTER(LEN=8),
PARAMETER :: fformat=
'SERAFIN ' 182 DOUBLE PRECISION :: starttime,endtime,startiotime,startctime
183 INTEGER,
ALLOCATABLE :: gelegl(:),gelegl1(:)
186 INTEGER,
ALLOCATABLE :: ifapar(:,:)
193 INTEGER ndp_2d,nb_inter_glob,compt
195 INTEGER,
ALLOCATABLE :: nbre_ef(:),nbre_ef_loc(:),ef_i(:),
196 & tab_tmp(:),ef_ii(:),global_inter_node_reord(:)
197 INTEGER,
ALLOCATABLE :: part_p_tmp1(:),part_p_tmp2(:)
199 INTEGER noeud,nbre_noeud_interne
200 INTEGER nbre_ef_i,ier,nbre_nptir
205 CHARACTER(LEN=MAXLENTMPDIR) :: path
206 INTEGER :: ncar, ncsize
209 CALL p_init(path, ncar, ipid, ncsize)
214 IF (parsec==0) timecount = .false.
222 IF (ipid .EQ. 0)
THEN 225 WRITE(
lu,*)
'+----------------------------------------------+' 227 WRITE(
lu,*)
' PARTEL //' 228 WRITE(
lu,*)
' PARALLEL VERSION DEVELOPPED BY' 229 WRITE(
lu,*)
' CHRISTOPHE DENIS (SINETICS)' 231 WRITE(
lu,*)
' PARTEL' 232 WRITE(
lu,*)
' BUNDESANSTALT FUER WASSERBAU, KARLSRUHE' 234 WRITE(
lu,*)
' METIS 5.0.2' 235 WRITE(
lu,*)
' REGENTS OF THE UNIVERSITY OF MINNESOTA' 237 WRITE(
lu,*)
'+----------------------------------------------+' 244 INQUIRE (file=
'PARTEL.PAR',exist=is)
246 WRITE (
lu,
'('' FILE DOES NOT EXIST: '',A30)')
'PARTEL.PAR' 251 CALL get_free_id(id_input)
252 OPEN(unit=id_input,file=
'partel.par')
253 READ(id_input,*) nameinp
254 READ(id_input,*) namecli
255 READ(id_input,*) nparts
256 READ(id_input,*) pmethod
262 IF (pmethod .EQ. 3)
THEN 264 WRITE(
lu,*)
'PARTITIONING USING PARMETIS' 266 ELSEIF (pmethod .EQ. 4)
THEN 268 WRITE(
lu,*)
'PARTITIONING USING PTSCOTCH' 272 INQUIRE (file=nameinp,exist=is)
274 WRITE (
lu,
'('' FILE DOES NOT EXIST: '',A30)') nameinp
279 INQUIRE (file=namecli,exist=is)
281 WRITE (
lu,
'('' FILE DOES NOT EXIST: '',A30)') namecli
289 IF (nameinp(i_sp-i:i_sp-i) .NE.
' ')
EXIT 296 WRITE(
lu,*)
'ATTENTION:' 297 WRITE(
lu,*)
'THE NAME OF THE INPUT FILE:' 299 WRITE(
lu,*)
'IS LONGER THAN ',
path_len,
' CHARACTERS' 300 WRITE(
lu,*)
'WHICH IS THE LONGEST APPLICABLE NAME FOR TELEMAC' 301 WRITE(
lu,*)
'INPUT AND OUTPUT FILES. STOPPED. ' 306 IF (ipid .EQ. 0)
THEN 309 CALL get_free_id(ninp)
310 OPEN(ninp,file=nameinp,status=
'OLD',form=
'UNFORMATTED')
321 IF(vari(j:j).EQ.
' ') vari(j:j) =
'-' 324 IF (istop.GT.maxallvarlength)
THEN 325 WRITE(
lu,*)
'VARIABLE NAMES TOO LONG FOR STRING ALLVAR' 326 WRITE(
lu,*)
'STOPPED.' 336 READ (ninp) (ib(i), i=1,10)
337 IF (ib(8).NE.0.OR.ib(9).NE.0)
THEN 338 WRITE(
lu,*)
'THIS IS A PARTIAL OUTPUT FILE' 339 WRITE(
lu,*)
'MAYBE MEET GRETEL BEFORE...' 343 IF (ib(10).EQ.1)
THEN 344 READ(ninp) date(1), date(2), date(3), time(1), time(2), time(3)
347 READ (ninp) nelem,npoin,ndp,ndum
351 nelem2 = nelem/(nplan-1)
352 IF (mod(npoin,nplan).NE.0)
THEN 353 WRITE (
lu,*)
'BUT NPOIN2 /= NPOIN3/NPLAN!' 357 IF (mod(nelem,(nplan-1)).NE.0)
THEN 358 WRITE (
lu,*)
'BUT NELEM2 /= NELEM3/NPLAN!' 369 WRITE(
lu,*)
'THE INPUT FILE ASSUMED TO BE 2D SELAFIN' 370 ELSEIF (ndp.EQ.6)
THEN 371 WRITE(
lu,*)
'THE INPUT FILE ASSUMED TO BE 3D SELAFIN' 381 ALLOCATE (ikles(nelem2*3),stat=err)
382 CALL check_allocate(err,
'IKLES')
384 ALLOCATE (ikles3d(nelem*ndp),stat=err)
385 CALL check_allocate(err,
'IKLES3D')
387 ALLOCATE (irand(npoin),stat=err)
388 CALL check_allocate(err,
'IRAND')
391 ALLOCATE (f(npoin,nvar+2),stat=err)
392 CALL check_allocate(err,
'IRAND')
397 READ(ninp) ((ikles((k-1)*ndp+j),j=1,ndp),k=1,nelem)
399 READ(ninp) ((ikles3d((k-1)*ndp+j),j=1,ndp),k=1,nelem)
403 ikles((k-1)*3+j)=ikles3d((k-1)*6+j)
410 READ(ninp) (irand(j),j=1,npoin)
413 READ(ninp) (f(j,1),j=1,npoin)
414 READ(ninp) (f(j,2),j=1,npoin)
430 READ(ninp) (f(j,k), j=1,npoin)
437 IF (ipid .EQ. 0)
THEN 439 WRITE(
lu,*)
'TEMPS LECTURE :',startctime-starttime
450 ALLOCATE (lihbor(nptfrmax),stat=err)
451 CALL check_allocate(err,
'LIHBOR')
452 ALLOCATE (liubor(nptfrmax),stat=err)
453 CALL check_allocate(err,
'LIUBOR')
454 ALLOCATE (livbor(nptfrmax),stat=err)
455 CALL check_allocate(err,
'LIVBOR')
456 ALLOCATE (hbor(nptfrmax),stat=err)
457 CALL check_allocate(err,
'HBOR')
458 ALLOCATE (ubor(nptfrmax),stat=err)
459 CALL check_allocate(err,
'UBOR')
460 ALLOCATE (vbor(nptfrmax),stat=err)
461 CALL check_allocate(err,
'VBOR')
462 ALLOCATE (aubor(nptfrmax),stat=err)
463 CALL check_allocate(err,
'AUBOR')
464 ALLOCATE (tbor(nptfrmax),stat=err)
465 CALL check_allocate(err,
'TBOR')
466 ALLOCATE (atbor(nptfrmax),stat=err)
467 CALL check_allocate(err,
'ATBOR')
468 ALLOCATE (btbor(nptfrmax),stat=err)
469 CALL check_allocate(err,
'BTBOR')
470 ALLOCATE (litbor(nptfrmax),stat=err)
471 CALL check_allocate(err,
'LITBOR')
472 ALLOCATE (nbor(nptfrmax),stat=err)
473 CALL check_allocate(err,
'NBOR')
474 ALLOCATE (numliq(nptfrmax),stat=err)
475 CALL check_allocate(err,
'NUMLIQ')
476 ALLOCATE (
check(nptfrmax),stat=err)
477 CALL check_allocate(err,
'CHECK')
484 IF (namecli(i_sp-i:i_sp-i) .NE.
' ')
EXIT 491 WRITE(
lu,*)
'ATTENTION:' 492 WRITE(
lu,*)
'THE NAME OF THE BOUNDARY CONDITIONS FILE:' 494 WRITE(
lu,*)
'IS LONGER THAN ',
path_len,
' CHARACTERS' 495 WRITE(
lu,*)
'WHICH IS THE LONGEST APPLICABLE NAME FOR TELEMAC ' 496 WRITE(
lu,*)
'INPUT AND OUTPUT FILES. STOPPED. ' 501 CALL get_free_id(ncli)
502 OPEN(ncli,file=namecli,status=
'OLD',form=
'FORMATTED')
509 READ(ncli,*,end=901,err=901) lihbor(k),liubor(k),
511 & hbor(k),ubor(k),vbor(k),aubor(k),litbor(k),
512 & tbor(k),atbor(k),btbor(k),nbor(k),
check(k)
540 ALLOCATE (dejavu(nptfr),stat=err)
541 CALL check_allocate(err,
'DEJAVU')
542 ALLOCATE (kp1bor(nptfr,2),stat=err)
543 CALL check_allocate(err,
'KP1BOR')
549 ALLOCATE (ifabor(nelem2,3),stat=err)
550 CALL check_allocate(err,
'IFABOR')
551 ALLOCATE (ifanum(nelem2,3),stat=err)
552 CALL check_allocate(err,
'IFANUM')
553 ALLOCATE (iklbor(nptfr,2),stat=err)
554 CALL check_allocate(err,
'IKLBOR')
555 ALLOCATE (nelbor(nptfr),stat=err)
556 CALL check_allocate(err,
'NELBOR')
557 ALLOCATE (nulone(nptfr,2),stat=err)
558 CALL check_allocate(err,
'NULONE')
559 ALLOCATE (isegf(nptfr),stat=err)
560 CALL check_allocate(err,
'ISEGF')
561 ALLOCATE (ikle(nelem2,3),stat=err)
562 CALL check_allocate(err,
'IKLE')
563 ALLOCATE (it1(npoin),stat=err)
564 CALL check_allocate(err,
'IT1')
565 ALLOCATE (it2(npoin),stat=err)
566 CALL check_allocate(err,
'IT2')
567 ALLOCATE (it3(npoin),stat=err)
568 CALL check_allocate(err,
'IT3')
570 ALLOCATE (nachb(nbmaxnshare,nptir),stat=err)
571 CALL check_allocate(err,
'NACHB')
572 ALLOCATE (x_d(npoin2),stat=err)
573 CALL check_allocate(err,
'X_D')
574 ALLOCATE (y_d(npoin2),stat=err)
575 CALL check_allocate(err,
'Y_D')
581 ikle(j,i) = ikles((j-1)*3+i)
587 CALL voisin(ifabor, nelem2, nelem2, 11, ikle, nelem2,
588 & npoin2, nachb, nbor, nptfr, it1, it2)
592 CALL elebd (nelbor, nulone, kp1bor, ifabor, nbor(1:nptfr), ikle,
593 & nelem2, iklbor, nelem2, nelem2,
594 & npoin2, nptfr, 11, lihbor, 2,
595 & isegf, it1, it2, it3 ,
608 x_d(i) = dble(f(i,1))
609 y_d(i) = dble(f(i,2))
612 & lihbor,liubor,x_d,y_d,
613 & nbor,kp1bor(1:nptfr,1),dejavu,npoin2,nptfr,
614 & 2,.false.,numliq,maxfro)
646 ALLOCATE (epart(nelem2),stat=err)
647 CALL check_allocate(err,
'EPART')
648 ALLOCATE (npart(npoin2),stat=err)
649 CALL check_allocate(err,
'NPART')
652 IF (pmethod.NE.3 .AND. pmethod.NE.4)
THEN 653 OPEN(id_input,file=
'RESULT_SEQ_METIS')
655 READ(id_input,*) epart(i)
664 WRITE(
lu,*)
' THE MESH PARTITIONING STEP STARTS' 666 CALL system_clock (count=temps, count_rate=parsec)
669 CALL partitioner_para(pmethod, nelem2, npoin2, ndp, nparts,
670 & ikles, epart, npart)
671 WRITE(
lu,*)
' THE MESH PARTITIONING STEP HAS FINISHED' 673 CALL system_clock (count=temps, count_rate=parsec)
675 WRITE(
lu,*)
' RUNTIME OF PARTITIONER ',
676 & (1.0*(tfinp-tdebp))/(1.0*parsec),
' SECONDS' 687 ALLOCATE (knogl(npoin2),stat=err)
688 CALL check_allocate(err,
'KNOGL')
693 ALLOCATE (nbre_ef(npoin2),stat=err)
694 CALL check_allocate(err,
'NBRE_EF')
697 ALLOCATE (f_p(npoin2,nvar+2),stat=err)
699 ALLOCATE (f_p(npoin2*nplan,nvar+2),stat=err)
701 CALL check_allocate(err,
'F_P')
703 ALLOCATE (gelegl(nelem2),stat=err)
704 CALL check_allocate(err,
'GELEGL')
705 ALLOCATE (gelegl1(nelem2),stat=err)
706 CALL check_allocate(err,
'GELEGL1')
708 ALLOCATE (sort(npoin2),stat=err)
709 CALL check_allocate(err,
'CUT_P')
711 ALLOCATE (cut(npoin2),stat=err)
712 CALL check_allocate(err,
'CUT_P')
715 ALLOCATE(nbor_p(npoin2),stat=err)
716 ALLOCATE(tab_tmp( nbmaxnshare),stat=err)
732 noeud=ikles((ef-1)*3+k)
733 nbre_ef(noeud)=nbre_ef(noeud)+1
747 IF (epart(ef) .EQ. i)
THEN 750 noeud=ikles((ef-1)*3+k)
751 IF (knogl(noeud) .EQ. 0)
THEN 766 ALLOCATE (elelg(nelem_p),stat=err)
767 CALL check_allocate(err,
'ELELG')
772 ALLOCATE (knolg(npoin_p),stat=err)
774 ALLOCATE (knolg(npoin_p*nplan),stat=err)
776 CALL check_allocate(err,
'KNOLG')
781 ALLOCATE (nbre_ef_loc(npoin_p),stat=err)
782 CALL check_allocate(err,
'NBRE_EF_LOC')
785 ALLOCATE (ef_i(nelem_p),stat=err)
786 CALL check_allocate(err,
'EF_I')
788 ALLOCATE (ef_ii(nelem_p),stat=err)
789 CALL check_allocate(err,
'EF_II')
800 IF (epart(ef) .EQ. i)
THEN 826 noeud=ikles((ef-1)*3+k)
827 nbre_ef_loc(knogl(noeud))=nbre_ef_loc(knogl(noeud))+1
828 IF (nbre_ef_loc(knogl(noeud)) .EQ. 1)
THEN 832 IF (irand(noeud) .NE. 0)
THEN 838 f_p(npoin_p,l)=f(noeud,l)
844 IF (nbre_ef_loc(knogl(noeud)) .EQ. nbre_ef(noeud))
THEN 845 nbre_noeud_interne=nbre_noeud_interne+1
856 nbre_nptir=npoin_p-nbre_noeud_interne
857 ALLOCATE (cut_p(nbre_nptir),stat=err)
858 CALL check_allocate(err,
'CUT_P')
866 noeud=ikles((ef-1)*3+k)
867 IF (abs(nbre_ef_loc(knogl(noeud))) .NE. nbre_ef(noeud))
875 IF (nbre_ef_loc(knogl(noeud)) .NE. nbre_ef(noeud).AND.
876 & nbre_ef_loc(knogl(noeud)) .GT. 0)
THEN 883 nbre_ef_loc(knogl(noeud))=
884 & -1*nbre_ef_loc(knogl(noeud))
887 IF (
INTERFACE .EQV. .true.)
THEN 888 nbre_ef_i=nbre_ef_i+1
893 WRITE(22,*)
'NPTIR_P',nptir_p
900 IF (cut(j) .NE. 0)
THEN 901 nb_inter_glob=nb_inter_glob+1
904 ALLOCATE(global_inter_node_reord(nb_inter_glob),stat=err)
905 CALL check_allocate(err,
'GLOBAL_INTER_REORD')
906 ALLOCATE(part_p(nb_inter_glob,nbmaxnshare+1),stat=err)
907 CALL check_allocate(err,
'PART_P')
908 ALLOCATE(part_p_tmp1(nparts+1),stat=err)
909 CALL check_allocate(err,
'PART_P_TMP1')
910 ALLOCATE(part_p_tmp2(nparts+1),stat=err)
911 CALL check_allocate(err,
'PART_P_TMP2')
914 IF (cut(j) .NE. 0)
THEN 915 nb_inter_glob=nb_inter_glob+1
916 global_inter_node_reord( nb_inter_glob)=j
927 noeud=global_inter_node_reord(j)
928 IF (sort(noeud) .NE. 0)
THEN 930 part_p_tmp1(nparts+1)=part_p_tmp1(nparts+1)+1
935 IF (part_p_tmp2(k) .NE. 0 .AND. k .NE. i)
THEN 938 part_p(j,nbmaxnshare+1)=part_p_tmp2(nparts+1)
942 DEALLOCATE(part_p_tmp1)
943 DEALLOCATE(part_p_tmp2)
945 max_n_neigh=maxval(part_p(:,nbmaxnshare+1))
947 IF ( max_n_neigh > nbmaxnshare-1 )
THEN 948 WRITE(
lu,*)
'SERIOUS WARNING: ' 950 &
'AN INTERFACE NODE BELONGS TO ',
951 &
'MORE THAN NBMAXNSHARE-1 SUBDOMAINS' 952 WRITE(
lu,*)
'TELEMAC MAY PROTEST!' 954 IF (max_n_neigh > maxnproc)
THEN 955 WRITE (
lu,*)
'THERE IS A NODE WHICH BELONGS TO MORE THAN ',
956 & maxnproc,
' PROCESSORS, HOW COME?' 960 IF (max_n_neigh < nbmaxnshare-1) max_n_neigh = nbmaxnshare-1
972 ifaloc(:)=ifabor(ef,:)
973 WHERE (ifaloc .GT. 0)
976 halo=any(ifaloc .GT. 0 .AND. ifaloc .NE. i)
977 IF (halo .EQV. .true.)
THEN 981 ALLOCATE (ifapar(7,nhalo),stat=err)
982 CALL check_allocate(err,
'IFAPAR')
990 ifaloc(:)=ifabor(ef,:)
991 WHERE (ifaloc .GT. 0)
994 halo=any(ifaloc .GT. 0 .AND. ifaloc .NE. i)
995 IF (halo .EQV. .true.)
THEN 997 ifapar(1,nhalo)=ef_ii(j)
998 ifapar(2:4,nhalo)=ifaloc(:)
999 ifapar(5:7,nhalo)=ifabor(ef_i(j),:)
1011 IF (.NOT.
ALLOCATED(nbor_p))
THEN 1012 ALLOCATE(nbor_p(npoin2),stat=err)
1013 CALL check_allocate(err,
'NBOR_P')
1019 IF (ipid .EQ. 0)
THEN 1021 WRITE(
lu,*)
'TEMPS CALCUL :',startiotime-startctime
1032 nameclm(i_lencli+1:i_lencli+11) = extens(nparts-1,ipid)
1034 CALL get_free_id(nclm)
1035 OPEN(nclm,file=nameclm,
1036 & status=
'UNKNOWN',form=
'FORMATTED')
1052 IF ( knogl(nbor(k)) /= 0)
THEN 1071 IF (epart(nelbor(k)).NE.i)
THEN 1082 IF (epart(nelbor(m)).NE.i)
THEN 1098 & lihbor(k), liubor(k), livbor(k),
1099 & hbor(k), ubor(k), vbor(k),
1100 & aubor(k), litbor(k), tbor(k), atbor(k), btbor(k),
1101 & nbor(k),
check(k), iseg, xseg, yseg, numliq(k)
1103 4000
FORMAT (1x,i2,1x,2(i1,1x),3(f24.12,1x),1x,
1104 & f24.12,3x,i1,1x,3(f24.12,1x),1i15,1x,1i15,
1105 & 1x,i15,1x,2(f27.15,1x),i15)
1111 WRITE (nclm,*) nptir_p
1113 IF (max_n_neigh < nbmaxnshare-1) max_n_neigh = nbmaxnshare-1
1115 WRITE (fmt4(2:4),
'(I3)') max_n_neigh+1
1117 DO j=1, nb_inter_glob
1118 noeud=global_inter_node_reord(j)
1119 IF (sort(noeud) .NE. 0)
THEN 1121 WRITE(nclm,fmt=fmt4) global_inter_node_reord(j),
1122 & (part_p(j,k)-1, k=1,max_n_neigh)
1128 IF (ifapar(2+m,j)>0)
THEN 1129 ifapar(5+m,j)=gelegl1(ifapar(5+m,j))
1136 IF (ifapar(2+m,j)>0)
THEN 1137 ifapar(2+m,j)=ifapar(2+m,j)-1
1142 WRITE(nclm,
'(I15)') nhalo
1145 WRITE (nclm,
'(7(I15,1X))') ifapar(:,k)
1149 ALLOCATE (irand_p(npoin2),stat=err)
1150 CALL check_allocate(err,
'IRAND_P')
1152 CALL check_allocate(err,
'F_P')
1153 ALLOCATE(ikles_p(nelem2*3),stat=err)
1155 ALLOCATE(ikles3d_p(6,nelem2,nplan-1),stat=err)
1157 CALL check_allocate(err,
'IKLES3D_P')
1162 nameout(i_leninp+1:i_leninp+11) = extens(nparts-1,ipid)
1164 CALL get_free_id(nout)
1165 OPEN(nout,file=nameout,form=
'UNFORMATTED' 1166 & ,status=
'UNKNOWN')
1174 WRITE(nout) variable(k)
1188 WRITE(nout) (ib(k), k=1,10)
1189 IF (ib(10).EQ.1)
THEN 1190 WRITE(nout) date(1), date(2), date(3),
1191 & time(1), time(2), time(3)
1194 WRITE(nout) nelem_p, npoin_p, ndp, ndum
1196 WRITE(nout) nelem_p*(nplan-1),
1197 & npoin_p*nplan, ndp, ndum
1202 ikles_p((j-1)*3+k) = knogl(ikles((ef-1)*3+k))
1208 ikles3d_p(1,j,k) = ikles_p(1+(j-1)*3) + (k-1)*npoin_p
1209 ikles3d_p(2,j,k) = ikles_p(2+(j-1)*3) + (k-1)*npoin_p
1210 ikles3d_p(3,j,k) = ikles_p(3+(j-1)*3) + (k-1)*npoin_p
1211 ikles3d_p(4,j,k) = ikles_p(1+(j-1)*3) + k *npoin_p
1212 ikles3d_p(5,j,k) = ikles_p(2+(j-1)*3) + k *npoin_p
1213 ikles3d_p(6,j,k) = ikles_p(3+(j-1)*3) + k *npoin_p
1218 IF (nplan.LE.1)
THEN 1220 & ((ikles_p((j-1)*3+k),k=1,3),j=1,nelem_p)
1223 & (((ikles3d_p(l,j,k),l=1,6),j=1,nelem_p),k=1,nplan-1)
1229 IF (nplan.EQ.0)
THEN 1230 WRITE(nout) (knolg(j), j=1,npoin_p)
1233 WRITE(nout) (knolg(j), j=1,npoin_p*nplan)
1237 IF (nplan.GT.1)
THEN 1241 f_p(j+(l-1)*npoin_p,k) = f(knolg(j)+(l-1)*npoin2,k)
1249 IF (nplan.EQ.0)
THEN 1250 WRITE(nout) (f_p(j,1),j=1,npoin_p)
1251 WRITE(nout) (f_p(j,2),j=1,npoin_p)
1253 WRITE(nout) (f_p(j,1),j=1,npoin_p*nplan)
1254 WRITE(nout) (f_p(j,2),j=1,npoin_p*nplan)
1263 WRITE(nout) (f_p(j,k),j=1,npoin_p)
1265 WRITE(nout) (f_p(j,k),j=1,npoin_p*nplan)
1328 IF (ipid .EQ. 0)
THEN 1330 WRITE(
lu,*)
'TEMPS ECRITURE :',endtime-startiotime
1331 WRITE(
lu,*)
'TEMPS TOTAL :',endtime-starttime
1332 WRITE(
lu,*)
'+---- PARTEL: NORMAL TERMINATION ----+' 1338 END PROGRAM partel_para
subroutine p_isum_array(SEND_BUFFER, RECV_BUFFER, NCOUNT, IERR)
subroutine p_init(CHAINE, NCAR, IPID, NCSIZE)
subroutine check(IKLE2, NBOR, NELBOR, IKLBOR, NELEB, NELEBX, IKLE3, NELBO3, NULONE, DIM1NUL, DIM2NUL, NBOR3, NELMAX2, NPTFR, NELMAX, NPTFR3, INFO)
subroutine front2(NFRLIQ, LIHBOR, LIUBOR, X, Y, NBOR, KP1BOR, DEJAVU, NPOIN, NPTFR, KLOG, LISTIN, NUMLIQ, MAXFRO)
real *8 function p_time()
integer, parameter path_len
subroutine voisin(IFABOR, NELEM, NELMAX, IELM, IKLE, SIZIKL, NPOIN, NACHB, NBOR, NPTFR, IADR, NVOIS)
subroutine elebd(NELBOR, NULONE, KP1BOR, IFABOR, NBOR, IKLE, SIZIKL, IKLBOR, NELEM, NELMAX, NPOIN, NPTFR, IELM, LIHBOR, KLOG, ISEG, T1, T2, T3, NELEBX, NELEB)