5 &(nameinp,namelog,nparts,pmethod,format_med)
64 CHARACTER(LEN=MAXLENHARD),
INTENT(IN) :: NAMEINP
65 CHARACTER(LEN=MAXLENHARD),
INTENT(IN) :: NAMELOG
66 INTEGER,
INTENT(IN) :: NPARTS
67 INTEGER,
INTENT(IN) :: PMETHOD
68 LOGICAL,
INTENT(IN) :: FORMAT_MED
74 CHARACTER(LEN=MAXLENHARD) :: NAMEINP2,NAMELOG2
75 INTEGER :: NINP=10,nlog=11,ninp2=12,nlog2=13
76 INTEGER :: I,I_LENINP,IERR,J,K,COMPT,
77 & n,numtet,numtri,numtrig,i_lenlog,l,ni,nf,nt,ibid,idd,
78 & compt1,compt2,compt3,nbtriidd,m,color1,
79 & color2,pr1,pr2,nbtetj,iddnt,nit,nft,mt,
80 & numtrib,numtetb,ibidc,nbretouche,indpu(1)
82 CHARACTER(LEN=300) :: TEXTERROR
83 CHARACTER(LEN=8) :: STR8
84 CHARACTER(LEN=300) :: STR26
85 CHARACTER(LEN=80) :: TITRE
86 CHARACTER(LEN=2) :: MOINS1
87 CHARACTER(LEN=4) :: BLANC
90 CHARACTER(LEN=200) :: LINE
94 CHARACTER(LEN=72) :: THEFORMAT
96 CHARACTER(LEN=80),
ALLOCATABLE :: LOGFAMILY(:)
98 INTEGER,
PARAMETER :: NSEC1=151
99 INTEGER,
PARAMETER :: NSEC2=2411
100 INTEGER,
PARAMETER :: NSEC3=2412
104 INTEGER :: NELEMTOTAL
109 INTEGER,
DIMENSION(:),
ALLOCATABLE :: VECTNB
113 INTEGER,
PARAMETER :: MDIM=3
115 CHARACTER(LEN=16),
DIMENSION(MDIM) :: NAMECOOR, UNITCOOR
116 CHARACTER(LEN=16) :: DATA_TEMP
117 CHARACTER(LEN=43) :: TXT, TXT_OLD
119 CHARACTER(LEN=MED_NAME_SIZE),
DIMENSION(:),
ALLOCATABLE :: FAM
120 CHARACTER(LEN=MED_NAME_SIZE) :: MED_VERSION
121 CHARACTER(LEN=MED_NAME_SIZE) :: MESH_NAME
122 CHARACTER(LEN=MED_NAME_SIZE) :: DTUNIT
123 CHARACTER(LEN=MED_COMMENT_SIZE) :: DESC
124 CHARACTER(LEN=MED_LNAME_SIZE),
DIMENSION(:),
ALLOCATABLE ::
127 CHARACTER,
DIMENSION(:),
ALLOCATABLE :: DUMNAME
129 LOGICAL :: HDFOK, MEDOK
134 INTEGER :: MAJOR, MINOR, REL
141 INTEGER,
DIMENSION(:),
ALLOCATABLE :: DUMNUM
142 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IKLESTRI2
143 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NUFATRIA, NUFATRIA2
144 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NUFATETRA
145 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NUFANO
146 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ID_CHANGE_LOG
147 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ID_CHANGE_LOG2
149 DOUBLE PRECISION,
ALLOCATABLE :: COOR(:)
151 INTEGER :: PTET1,PTET2,PTET3,DEB1,FIN1,DEB2,FIN2,DEB3,FIN3
152 INTEGER :: PTRI1,PTRI2,PTRI3
157 DOUBLE PRECISION,
ALLOCATABLE :: X1(:),Y1(:),Z1(:)
158 INTEGER,
ALLOCATABLE :: ECOLOR(:)
160 INTEGER :: IKLE1,IKLE2,IKLE3,IKLE4,IKLEB
161 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IKLESTET
163 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IKLESTRI
165 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IKLESTRIN
167 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IKLEIN
168 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TYPELEM
169 INTEGER :: NBTET,NBTRI
170 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TETTRI, TETTRI2
172 INTEGER,
DIMENSION(:),
ALLOCATABLE :: EPART
174 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NPART
176 INTEGER,
DIMENSION(:),
ALLOCATABLE :: CONVTRI
179 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NPOINTSD, NELEMSD
181 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NPOINTISD
184 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NODES1,NODES2,NODES3,NODES4
185 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NODES1T,NODES2T,NODES3T
186 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TRIUNV
190 INTEGER,
DIMENSION(:),
ALLOCATABLE :: PRIORITY
191 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NCOLOR,NCOLOR2
193 LOGICAL,
DIMENSION(:,:),
ALLOCATABLE :: TETCOLOR
194 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: DEJA_TROUVE
196 INTEGER,
DIMENSION(:),
ALLOCATABLE :: KNOLG
197 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: NACHB
201 INTEGER,
PARAMETER :: NBMAXNSHARE = 10
206 INTEGER :: NBSDOMVOIS = nbmaxnshare + 2
208 INTEGER,
PARAMETER :: MAX_SIZE_FLUX = 99
210 INTEGER,
DIMENSION(MAX_SIZE_FLUX) :: SIZE_FLUXIN
215 INTEGER,
DIMENSION(: ),
ALLOCATABLE :: TEMPO,GLOB_2_LOC
216 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IKLES,IKLE,IFABOR
217 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: NULONE,IKLBOR
218 INTEGER :: IKL,NSOLS,NSOLS_OLD,N1,N2
219 INTEGER :: IELEM,IPTFR,IELEB,N3
220 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: FACE_CHECK
221 INTEGER,
PARAMETER :: NCOL = 256
222 INTEGER,
DIMENSION(NCOL ) :: COLOR_PRIO
223 INTEGER :: PRIO_NEW,NPTFR
224 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NBOR2,NBOR
225 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NELBOR,LIHBOR
228 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NELEM_P
230 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NPOIN_P
236 INTEGER :: MAX_NELEM_P
238 INTEGER :: MAX_NPOIN_P
246 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NUMBER_TRIA
248 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ELEGL
250 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: NODEGL
252 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: NODELG
254 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: TRI_REF
257 CHARACTER(LEN=11) :: EXTENS
261 parameter( somfac = reshape((/ 1,2,3 , 4,1,2 , 2,3,4 , 3,4,1 /),
268 CALL system_clock(count=temps_sc(1),count_rate=parsec)
269 ALLOCATE (vectnb(nbsdomvois-3))
271 WRITE(
lu,*)
'+-------------------------------------------------+' 272 WRITE(
lu,*)
' PARTEL: TELEMAC ESTEL3D PARTITIONER' 273 WRITE(
lu,*)
'+-------------------------------------------------+' 274 WRITE(
lu,*)
' READING UNV AND LOG FILES' 279 WRITE(
lu,*)
'MED FORMAT IS USED FOR THE MESH' 281 WRITE(
lu,*)
'ERROR: MED FORMAT IS USED FOR THE MESH BUT MED 282 & LIBRARY IS NOT INSTALLED' 287 WRITE(
lu,*)
'UNV FORMAT IS USED FOR THE MESH' 295 CALL mficom (nameinp, hdfok, medok, cret)
296 CALL check_call(cret,
'MFICOM')
298 IF (.NOT.hdfok)
WRITE(
lu,*)
'MESH FILE NOT COMPATIBLE WITH HDF5' 299 IF (.NOT.medok)
WRITE(
lu,*)
'MESH FILE NOT COMPATIBLE WITH MED' 302 CALL mfiope(fid, nameinp, med_acc_rdonly, cret)
303 CALL check_call(cret,
'MFIOPE')
306 CALL mfisvr (fid, med_version, cret)
307 CALL check_call(cret,
'MFISVR')
308 WRITE(
lu,*)
'MED VERSION OF THE MESH FILE : '//trim(med_version)
311 CALL mfinvr (fid, major, minor, rel, cret)
312 CALL check_call(cret,
'MFINVR')
313 IF (major.LT.3)
WRITE(
lu,*)
'MED FILE IS TOO ''OLD'' (' //
314 & trim(med_version) //
') => PLEASE CONVERT IT WITH MEDIMPORT ' 319 IF (.NOT.format_med)
THEN 320 OPEN(ninp,file=nameinp,status=
'OLD',form=
'FORMATTED',err=131)
325 OPEN(nlog,file=namelog,status=
'OLD',form=
'FORMATTED',err=130)
334 READ(unit=nlog, fmt=
'(A200)', iostat=ios) line
336 WRITE(
lu, *)
'ERROR READING THE MESH COMPLEMENTARY FILE.' 339 pos =index(line,
':') + 1
340 READ(unit=line(pos:),fmt=*, iostat=ios) npoint
342 WRITE(
lu,*)
'FORMAT ERROR READING THE MESH COMPLEMENTARY FILE.' 348 READ(unit=nlog, fmt=
'(A200)', iostat=ios) line
350 WRITE(
lu,*)
'ERROR READING THE MESH COMPLEMENTARY FILE.' 353 pos =index(line,
':') + 1
354 READ(unit=line(pos:),fmt=*, iostat=ios) nelemtotal
356 WRITE(
lu,*)
'FORMAT ERROR READING THE MESH COMPLEMENTARY FILE.' 362 READ(unit=nlog, fmt=
'(A200)', iostat=ios) line
364 WRITE(
lu,*)
'ERROR READING THE MESH COMPLEMENTARY FILE.' 367 pos =index(line,
':') + 1
368 READ(unit=line(pos:),fmt=*, iostat=ios) nbfamily
370 WRITE(
lu,*)
'FORMAT ERROR READING THE MESH COMPLEMENTARY FILE.' 380 READ(unit=nlog, fmt=
'(A200)', iostat=ios) line
382 WRITE(
lu,*)
'! PROBLEM WITH THE NUMBER OF FAMILY!' 388 IF (.NOT.format_med)
THEN 390 ALLOCATE(logfamily(nbfamily),stat=ierr)
391 CALL check_allocate(ierr,
' LOGFAMILY')
393 READ(nlog,50,err=111,end=120)logfamily(i)
398 READ(unit=nlog, fmt=
'(A200)', iostat=ios) line
400 WRITE(
lu,*)
'! PROBLEM WITH THE NUMBER OF COLOR !' 403 pos = index(line,
':') + 1
404 READ(unit=line(pos:), fmt=*, iostat=ios) nbcolor
406 WRITE(
lu,*)
'! PROBLEM WITH THE NUMBER COLOR !' 409 ALLOCATE(priority(nbcolor),stat=ierr)
410 CALL check_allocate(ierr,
' PRIORITY')
412 WRITE(
lu,93) nelemtotal
414 IF (nbcolor.EQ.0)
THEN 415 WRITE(
lu,*)
'VOUS AVEZ OUBLIE DE REMPLIR LE FICHIER LOG...' 424 READ(unit=nlog, fmt=
'(A200)', iostat=ios) line
427 WRITE(
lu,*)
'! PROBLEM WITH THE PRIORITY OF COLOR NODES !' 431 pos = index(line,
':') + 1
432 READ(unit=line(pos:), fmt=*, iostat=ios) (priority(j),j=1,nbcolor)
435 WRITE(
lu,*)
'! PROBLEM WITH THE PRIORITY OF COLOR NODES !' 439 WRITE(
lu,*) (priority(j),j=1,nbcolor)
446 ALLOCATE(nelem_p(nparts),stat=ierr)
447 CALL check_allocate(ierr,
'NELEM_P')
448 ALLOCATE(npoin_p(nparts),stat=ierr)
449 CALL check_allocate(ierr,
'NPOIN_P')
459 CALL mmhnmh(fid, nbmesh, cret)
460 CALL check_call(cret,
'MMHNMH')
461 IF (nbmesh .NE. 1)
WRITE(
lu,*)
'! ONLY ONE MESH EXPECTED !' 464 CALL mmhmii(fid,1,mesh_name,ndim,idum,stype,desc,dtunit,idum,
465 & idum,idum,namecoor,unitcoor,cret)
466 CALL check_call(cret,
'MMHMII')
469 CALL mfanfa(fid,mesh_name,nbfamily2,cret)
470 CALL check_call(cret,
'MFANFA')
473 ALLOCATE (fam(nbfamily2))
476 ALLOCATE(id_change_log2(nbfamily2,2))
485 CALL mfanfg (fid,mesh_name,i,nbgrf,cret)
486 CALL check_call(cret,
'MFANFG')
491 ALLOCATE(gr_family(nbgrf))
494 CALL mfafai(fid,mesh_name,i,fam(i),num,gr_family,
496 CALL check_call(cret,
'MFAFAI')
500 pos = index(gr_family(1),
':')-1
503 IF ((pos.LT.1).OR.(pos.GT.3))
THEN 517 READ(gr_family(1)(1:pos),fmt=
'(i'//achar(48+pos)//
')',
528 id_change_log2(i,1) = nsols
529 id_change_log2(i,2) = num
532 IF ((nsols.NE.-99).AND.(nsols.GT.0))
533 & nbfamily = nbfamily + 1
534 DEALLOCATE(gr_family)
539 print*,
'NBFAMILY2',nbfamily2
541 WRITE(
lu,*)
'MED_ID=',id_change_log2(i,2),
542 &
' <==> NCOLOR_ID=',id_change_log2(i,1)
546 ALLOCATE(id_change_log(nbfamily,2))
549 nsols = id_change_log2(i,1)
550 IF ((nsols.NE.-99).AND.(nsols.GT.0))
THEN 552 id_change_log(j,:) = id_change_log2(i,:)
555 DEALLOCATE(id_change_log2)
559 print*,
'NBFAMILY',nbfamily
561 WRITE(
lu,*)
'MED_ID=',id_change_log(i,2),
' <==> NCOLOR_ID=',
569 CALL mmhnax(fid,1,ndim,cret)
570 CALL check_call(cret,
'MMHNAX')
572 IF (ndim.NE.mdim)
THEN 573 WRITE(
lu,*)
'3 DIMENSIONS MESH EXPECTED - FOUND ', ndim
577 CALL mmhnme (fid, mesh_name, med_no_dt, med_no_it, med_node,
578 & med_none, med_coordinate, med_nodal, idum, idum,
580 CALL check_call(cret,
'MMHNME')
583 ALLOCATE(coor(npoint*mdim), stat=ierr)
584 CALL check_allocate(ierr,
' COOR')
586 CALL mmhcor(fid,trim(mesh_name),med_no_dt,med_no_it,
587 & med_no_interlace, coor, cret)
588 CALL check_call(cret,
'MMHCOR')
590 ALLOCATE(x1(npoint), stat=ierr)
591 CALL check_allocate(ierr,
' X1')
592 ALLOCATE(y1(npoint), stat=ierr)
593 CALL check_allocate(ierr,
' Y1')
594 ALLOCATE(z1(npoint), stat=ierr)
595 CALL check_allocate(ierr,
' Z1')
599 y1(i) = coor(i+ npoint)
600 z1(i) = coor(i+2*npoint)
609 CALL mmhnme(fid,mesh_name,med_no_dt,med_no_it,med_cell,
610 & med_tria3, med_connectivity,med_nodal,idum,idum,
612 CALL check_call(cret,
'MMHNME')
615 CALL mmhnme(fid,mesh_name,med_no_dt,med_no_it,med_cell,
616 & med_tetra4, med_connectivity,med_nodal,idum,idum,
618 CALL check_call(cret,
'MMHNME')
622 WRITE(
lu,*)
'NUMBER OF TETRAHEDRONS IN THE MESH',nbtet
623 WRITE(
lu,*)
'NUMBER OF TRIANGLES IN THE MESH', nbtri2
624 WRITE(
lu,*)
'NUMBER OF POINTS IN THE MESH', npoint
625 WRITE(
lu,*)
'NUMBER OF EXTERNAL FACES', nbcolor
629 data_temp = i2char2(priority(i))
631 txt = trim(txt_old) //
' ' // trim(data_temp)
634 WRITE(
lu,*)
'PRIORITE DES FACES EXTERNES'//trim(txt)
636 ALLOCATE(iklestet(nbtet*4), stat=ierr)
637 CALL check_allocate(ierr,
' IKLESTET')
638 ALLOCATE(nufatetra(nbtet), stat=ierr)
639 CALL check_allocate(ierr,
' NUFATETRA')
640 ALLOCATE(dumname(nbtet),stat=ierr)
641 CALL check_allocate(ierr,
' DUMNAME')
642 ALLOCATE(dumnum(nbtet),stat=ierr)
643 CALL check_allocate(ierr,
' DUMNUM')
646 CALL mmhelr(fid,mesh_name,med_no_dt,med_no_it,med_cell,
647 & med_tetra4,med_nodal,med_no_interlace,iklestet,idum,
648 & dumname,idum,dumnum,idum,nufatetra,cret)
649 CALL check_call(cret,
'MMHELR')
650 DEALLOCATE(dumname,dumnum)
655 IF (nufatetra(i).EQ.id_change_log(j,2))
THEN 656 nufatetra(i) = id_change_log(j,1)
666 IF (nbtri2.GT.0)
THEN 668 ALLOCATE(iklestri2(nbtri2*3), stat=ierr)
669 CALL check_allocate(ierr,
' IKLESTRI2')
670 ALLOCATE(nufatria2(nbtri2), stat=ierr)
671 CALL check_allocate(ierr,
' NUFATRIA2')
672 ALLOCATE(dumname(nbtri2),stat=ierr)
673 CALL check_allocate(ierr,
' DUMNAME')
674 ALLOCATE(dumnum(nbtri2),stat=ierr)
675 CALL check_allocate(ierr,
' DUMNUM')
677 CALL mmhelr(fid,mesh_name,med_no_dt,med_no_it,med_cell,
678 & med_tria3,med_nodal,med_no_interlace,iklestri2,idum,
679 & dumname,idum,dumnum,idum,nufatria2,cret)
680 CALL check_call(cret,
'MMHELR')
681 DEALLOCATE(dumname,dumnum)
683 ALLOCATE(iklestrin(nbtri2,3), stat=ierr)
684 CALL check_allocate(ierr,
' IKLESTRIN')
688 iklestrin(i,1) = iklestri2(i)
689 iklestrin(i,2) = iklestri2(i+nbtri2)
690 iklestrin(i,3) = iklestri2(i+2*nbtri2)
693 iklestri2(3*(i-1)+1:3*i) = iklestrin(i,1:3)
695 DEALLOCATE(iklestrin)
699 IF (nufatria2(i).EQ.id_change_log(j,2))
THEN 700 nufatria2(i) = id_change_log(j,1)
715 ALLOCATE(nufano(npoint), stat=ierr)
716 CALL check_allocate(ierr,
' NUFANO')
718 IF (nbtri2.GT.0)
THEN 722 IF (nufatria2(j)==priority(i))
THEN 723 nufano(iklestri2(3*(j-1)+1)) = priority(i)
724 nufano(iklestri2(3*(j-1)+2)) = priority(i)
725 nufano(iklestri2(3*j)) = priority(i)
737 IF (nufatria2(j).GT.0)
THEN 740 nsols_old = nufatria2(j)
743 IF (nsols_old.GT.maxval(priority))
THEN 744 nsols_old = nsols_old - 100 + maxval(priority)
747 prio_new = size_fluxin(nsols_old)
748 IF (prio_new.EQ.0)
THEN 749 size_flux = size_flux + 1
750 size_fluxin(nsols_old) = 1
753 IF (nufatria2(j).LT.100) nbtri = nbtri + 1
755 IF (nufatria2(j).GE.100) nelin = nelin + 1
759 ALLOCATE(iklestrin(nelin,4))
760 CALL check_allocate(ierr,
' IKLESTRIN')
766 IF (nufatria2(j).GE.100)
THEN 768 ikle1 = iklestri2(3*(j-1)+1)
769 ikle2 = iklestri2(3*(j-1)+2)
770 ikle3 = iklestri2(3*j)
772 iklestrin(i,1) = nufatria2(j)
773 iklestrin(i,2) = ikle1
774 iklestrin(i,3) = ikle2
775 iklestrin(i,4) = ikle3
781 print*,
'CORRECTED NB OF BORDER TRIANGLES NBTRI',nbtri
782 print*,
'NUMBER OF INNER TRIANGLES NELIN',nelin
785 nelemtotal = nbtet + nbtri
786 print*,
'CORRECTED TOTAL NUMBER OF ELEMENT',nelemtotal
789 ALLOCATE(iklestri(3*nbtri))
790 CALL check_allocate(ierr,
' IKLESTRI')
791 ALLOCATE(nufatria(nbtri), stat=ierr)
792 CALL check_allocate(ierr,
' NUFATRIA')
798 IF ((nufatria2(j).GT.0) .AND. (nufatria2(j).LT.100))
THEN 800 iklestri(3*(i-1)+1) = iklestri2(3*(j-1)+1)
801 iklestri(3*(i-1)+2) = iklestri2(3*(j-1)+2)
802 iklestri(3*i) = iklestri2(3*j)
803 nufatria(i) = nufatria2(j)
806 DEALLOCATE(iklestri2)
807 DEALLOCATE(nufatria2)
809 ALLOCATE(ikle(nbtet,4), stat=ierr)
810 CALL check_allocate(ierr,
' IKLE')
814 ikle(i,1) = iklestet(i+nbtet)
815 ikle(i,2) = iklestet(i)
816 ikle(i,3) = iklestet(i+2*nbtet)
817 ikle(i,4) = iklestet(i+3*nbtet)
820 ALLOCATE(typelem(nelemtotal,2),stat=ierr)
821 CALL check_allocate(ierr,
' TYPELEM')
826 iklestet(4*(i-1)+1:4*i) = ikle(i,1:4)
831 ALLOCATE(nbor2(npoint), stat=ierr)
832 CALL check_allocate(ierr,
' NBOR2')
833 ALLOCATE(glob_2_loc(npoint))
834 CALL check_allocate(ierr,
' GLOB_2_LOC')
843 ikl = iklestri(3*(i-1)+j)
845 IF ((k.EQ.0).AND.(nufano(ikl)>0))
THEN 848 glob_2_loc(ikl) = iptfr
853 DEALLOCATE(glob_2_loc)
855 ALLOCATE(convtri(nelemtotal), stat=ierr)
856 CALL check_allocate(ierr,
' CONVTRI')
865 ALLOCATE(ecolor(nelemtotal), stat=ierr)
866 CALL check_allocate(ierr,
' ECOLOR')
871 ecolor(i) = nufatetra(i)
873 DEALLOCATE(nufatetra)
875 ecolor(i+nbtet) = nufatria(i)
879 ALLOCATE(ncolor2(npoint), stat=ierr)
880 CALL check_allocate(ierr,
' NCOLOR2')
884 ncolor2(nbor2(i)) = nufano(nbor2(i))
889 ALLOCATE(npointsd(nparts),stat=ierr)
890 CALL check_allocate(ierr,
' NPOINTSD')
891 ALLOCATE(nelemsd(nparts),stat=ierr)
892 CALL check_allocate(ierr,
' NELEMSD')
893 ALLOCATE(npointisd(nparts),stat=ierr)
894 CALL check_allocate(ierr,
' NPOINTISD')
900 IF (.NOT.format_med)
THEN 903 ALLOCATE(x1(npoint),stat=ierr)
904 CALL check_allocate(ierr,
' X1')
905 ALLOCATE(y1(npoint),stat=ierr)
906 CALL check_allocate(ierr,
' Y1')
907 ALLOCATE(z1(npoint),stat=ierr)
908 CALL check_allocate(ierr,
' Z1')
909 ALLOCATE(ncolor(npoint),stat=ierr)
910 CALL check_allocate(ierr,
' NCOLOR')
911 ALLOCATE(ncolor2(npoint),stat=ierr)
912 CALL check_allocate(ierr,
' NCOLOR2')
913 ALLOCATE(ecolor(nelemtotal),stat=ierr)
914 CALL check_allocate(ierr,
' ECOLOR')
915 ALLOCATE(iklestet(4*nelemtotal),stat=ierr)
916 CALL check_allocate(ierr,
' IKLESTET')
917 ALLOCATE(iklestri(3*nelemtotal),stat=ierr)
918 CALL check_allocate(ierr,
' IKLESTRI')
919 ALLOCATE(iklestrin(nelemtotal,4),stat=ierr)
920 CALL check_allocate(ierr,
' IKLESTRIN')
921 ALLOCATE(typelem(nelemtotal,2),stat=ierr)
922 CALL check_allocate(ierr,
' TYPELEM')
923 ALLOCATE(convtri(nelemtotal),stat=ierr)
924 CALL check_allocate(ierr,
' CONVTRI')
925 ALLOCATE(npointsd(nparts),stat=ierr)
926 CALL check_allocate(ierr,
' NPOINTSD')
927 ALLOCATE(nelemsd(nparts),stat=ierr)
928 CALL check_allocate(ierr,
' NELEMSD')
929 ALLOCATE(npointisd(nparts),stat=ierr)
930 CALL check_allocate(ierr,
' NPOINTISD')
933 ALLOCATE(nbor2(npoint),stat=ierr)
934 CALL check_allocate(ierr,
' NBOR2')
935 ALLOCATE(tempo(2*npoint),stat=ierr)
936 CALL check_allocate(ierr,
' TEMPO')
937 ALLOCATE(face_check(nbfamily),stat=ierr)
938 CALL check_allocate(ierr,
' FACE_CHECK')
939 ALLOCATE(glob_2_loc(npoint),stat=ierr)
940 CALL check_allocate(ierr,
' GLOB_2_LOC')
941 ALLOCATE(ikles(nelemtotal,4),stat=ierr)
947 DO WHILE ( read_sec1 .OR. read_sec2 .OR. read_sec3 )
951 DO WHILE (moins1/=
'-1' .OR. blanc/=
' ')
952 READ(ninp,2000, err=1100, end=1200) blanc, moins1
959 DO WHILE (nsec == -1)
960 READ(ninp,*, err=1100, end=1200) nsec
969 READ(ninp,25,err=1100, end=1200) titre
980 READ(ninp,*,err=1100,end=1200) n,n1,n2,ncolor(ielem)
981 READ(ninp,*,err=1100,end=1200) x1(ielem), y1(ielem),
1007 face_check(:) = .false.
1013 color_prio(priority(k)) = k
1016 DO ielem = 1, nelemtotal
1018 READ(ninp,*,err=1100,end=1200) nsec, elem, n1, n2,
1021 IF (nsec == -1)
EXIT 1023 SELECT CASE ( elem )
1029 ecolor(ielem) = nsols
1031 READ(ninp,*, err=1100, end=1200) ikle1, ikle2,
1034 ikles(ielem, 1) = tempo(ikle1)
1035 ikles(ielem, 2) = tempo(ikle2)
1036 ikles(ielem, 3) = tempo(ikle3)
1037 ikles(ielem, 4) = tempo(ikle4)
1045 typelem(ielem,1)=elem
1046 typelem(ielem,2)=nbtet
1050 IF (nsols.GT.0.AND.nsols.LT.100)
THEN 1052 IF ( nsols > ncol )
THEN 1053 WRITE(
lu,*)
'COLOR ID POUR SURFACES EXTERNE' 1054 & //
'S TROP GRAND. LA LIMITE EST : ',ncol
1057 prio_new = color_prio(nsols)
1059 IF ( prio_new .EQ. 0 )
THEN 1060 WRITE(
lu,*)
' NUMERO DE FACE NON DECLARE',
1061 &
'DANS LE TABLEAU UTILISATEUR LOGFAMILY ',
1062 &
'VOIR LE FICHIER DES PARAMETRES ' 1066 face_check(prio_new) = .true.
1070 ecolor(ielem) = nsols
1072 READ(ninp,*,err=1100,end=1200)ikle1,ikle2,ikle3
1074 prio_new = size_fluxin(nsols)
1076 IF (prio_new.EQ.0)
THEN 1077 size_flux = size_flux + 1
1078 size_fluxin(nsols) = 1
1081 ikles(ielem, 1) = tempo(ikle1)
1082 ikles(ielem, 2) = tempo(ikle2)
1083 ikles(ielem, 3) = tempo(ikle3)
1090 typelem(ielem,1)=elem
1091 typelem(ielem,2)=nbtri
1092 convtri(nbtri)=ielem
1096 ikl = ikles(ielem,j)
1098 iptfr = glob_2_loc(ikl)
1100 IF ( iptfr .EQ. 0 )
THEN 1104 glob_2_loc(ikl) = nptfr
1111 ELSE IF (nsols.GT.100)
THEN 1122 prio_new = size_fluxin(nsols_old)
1124 IF (prio_new.EQ.0)
THEN 1125 size_flux = size_flux + 1
1126 size_fluxin(nsols_old) = 1
1131 READ(ninp,*,err=1100,end=1200)ikle1,ikle2,ikle3
1133 iklestrin(nelin,1) = nsols
1134 iklestrin(nelin,2) = tempo(ikle1)
1135 iklestrin(nelin,3) = tempo(ikle2)
1136 iklestrin(nelin,4) = tempo(ikle3)
1140 READ(ninp,*,err=1100,end=1200)ikle1,ikle2,ikle3
1146 WRITE(
lu,*)
'ELEMENT INCONNU DANS LE MAILLAGE' 1153 IF (.NOT. face_check(k))
THEN 1154 WRITE(
lu,*)
' LA COULEUR DE FACE ',k,
1155 &
' N''APPARAIT PAS DANS LE MAILLAGE.' 1171 nelemtotal=nbtet+nbtri
1175 CALL system_clock(count=temps_sc(2),count_rate=parsec)
1176 WRITE(
lu,*)
' TEMPS DE LECTURE FICHIERS LOG & UNV',
1177 & (1.0*(temps_sc(2)-temps_sc(1)))/(1.0*parsec),
' SECONDS' 1183 ALLOCATE(nelbor(nbtri),stat=ierr)
1184 CALL check_allocate(ierr,
' NELBOR')
1185 ALLOCATE(iklbor(nbtri,3),stat=ierr)
1186 CALL check_allocate(ierr,
' IKLBOR')
1187 ALLOCATE(ifabor(nbtet,4),stat=ierr)
1188 CALL check_allocate(ierr,
' IFABOR')
1191 IF (.NOT. format_med)
THEN 1193 ALLOCATE(ikle(nbtet,4),stat=ierr)
1194 CALL check_allocate(ierr,
' IKLE')
1198 ikle(ielem,i ) = ikles(ielem, i)
1206 IF (nelin .GT. 0)
THEN 1207 ALLOCATE(iklein(nelin,4),stat=ierr)
1208 CALL check_allocate(ierr,
' IKLEIN')
1212 iklein(ielem,i ) = iklestrin(ielem, i)
1216 ALLOCATE(iklein(1,4),stat=ierr)
1218 DEALLOCATE(iklestrin)
1220 WRITE(
lu,*)
'FIN DE LA COPIE DE LA CONNECTIVITE INITIALE' 1222 ALLOCATE(nbor(nptfr),stat=ierr)
1223 CALL check_allocate(ierr,
' NBOR')
1226 nbor(ielem) = nbor2(ielem)
1231 WRITE(
lu,*)
'PARTEL_VOISIN31' 1233 CALL voisin31(ifabor,nbtet,nbtet,31,
1234 & ikle,nbtet,npoint,nbor,nptfr,
1235 & lihbor,2,indpu,iklestri,nbtri)
1237 WRITE(
lu,*)
'FIN DE PARTEL_VOISIN31' 1239 ALLOCATE(lihbor(nptfr),stat=ierr)
1240 CALL check_allocate(ierr,
'LIHBOR')
1241 ALLOCATE(nulone(nbtri,3),stat=ierr)
1242 CALL check_allocate(ierr,
' NULONE')
1244 CALL elebd31( nelbor, nulone, iklbor,
1245 & ifabor, nbor, ikle,
1246 & nbtet, nbtri, nbtet, npoint,
1252 WRITE(
lu,*)
'FIN DE PARTEL_ELEBD31' 1253 ALLOCATE(number_tria(npoint),stat=ierr)
1254 CALL check_allocate(ierr,
'NUMBER_TRIA')
1261 ikle2 = iklestri(k+1)
1262 ikle3 = iklestri(k+2)
1264 IF (ikle2 < the_tri) the_tri=ikle2
1265 IF (ikle3< the_tri) the_tri=ikle3
1266 number_tria(the_tri)=number_tria(the_tri)+1
1268 max_tria=maxval(number_tria)
1270 DEALLOCATE(number_tria)
1272 ALLOCATE(tri_ref(npoint,0:max_tria),stat=ierr)
1273 CALL check_allocate(ierr,
' TRI_REF')
1278 ikle2 = iklestri(k+1)
1279 ikle3 = iklestri(k+2)
1281 IF (ikle2 < the_tri) the_tri=ikle2
1282 IF (ikle3< the_tri) the_tri=ikle3
1283 tri_ref(the_tri,0)=tri_ref(the_tri,0)+1
1284 pos=tri_ref(the_tri,0)
1285 tri_ref(the_tri,pos)=j
1288 ALLOCATE(tettri(4*nbtet),stat=ierr)
1289 CALL check_allocate(ierr,
' TETTRI')
1290 ALLOCATE(tettri2(nbtet),stat=ierr)
1291 CALL check_allocate(ierr,
' TETTRI2')
1296 ielem = nelbor(ieleb)
1297 ikle1 = nbor(iklbor(ieleb,1))
1298 ikle2 = nbor(iklbor(ieleb,2))
1299 ikle3 = nbor(iklbor(ieleb,3))
1301 IF (ikle2 < the_tri) the_tri=ikle2
1302 IF (ikle3<the_tri) the_tri=ikle3
1303 pos=tri_ref(the_tri,0)
1307 j=tri_ref(the_tri,jj)
1309 IF ((ikle1.EQ.iklestri(k)).AND.
1310 & (ikle2.EQ.iklestri(k+1)).AND.
1311 & (ikle3.EQ.iklestri(k+2)))
THEN 1313 ELSE IF ((ikle1.EQ.iklestri(k)).AND.
1314 & (ikle3.EQ.iklestri(k+1)).AND.
1315 & (ikle2.EQ.iklestri(k+2)))
THEN 1317 ELSE IF ((ikle2.EQ.iklestri(k)).AND.
1318 & (ikle1.EQ.iklestri(k+1)).AND.
1319 & (ikle3.EQ.iklestri(k+2)))
THEN 1321 ELSE IF ((ikle2.EQ.iklestri(k)).AND.
1322 & (ikle3.EQ.iklestri(k+1)).AND.
1323 & (ikle1.EQ.iklestri(k+2)))
THEN 1325 ELSE IF ((ikle3.EQ.iklestri(k)).AND.
1326 & (ikle1.EQ.iklestri(k+1)).AND.
1327 & (ikle2.EQ.iklestri(k+2)))
THEN 1329 ELSE IF ((ikle3.EQ.iklestri(k)).AND.
1330 & (ikle2.EQ.iklestri(k+1)).AND.
1331 & (ikle1.EQ.iklestri(k+2)))
THEN 1340 IF (ifabor(ielem,i).LE.0)
THEN 1341 IF ((ikle1.EQ.(ikle(nelbor(ieleb),somfac(1,i))))
1342 & .AND.(ikle2.EQ.(ikle(nelbor(ieleb),somfac(2,i))))
1343 & .AND. (ikle3.EQ.(ikle(nelbor(ieleb),somfac(3,i)))))
1346 n = 4*(ielem-1)+ni+1
1349 tettri2(ielem) = ni + 1
1361 CALL system_clock(count=temps_sc(3),count_rate=parsec)
1369 ALLOCATE(nodes1(npoint),stat=ierr)
1370 CALL check_allocate(ierr,
' NODES1')
1374 ikleb=iklestet(4*(i-1)+k)
1375 nodes1(ikleb)=nodes1(ikleb)+1
1381 ALLOCATE(nodes2(npoint+1),stat=ierr)
1382 CALL check_allocate(ierr,
' NODES2')
1386 compt=compt+nodes1(i)
1390 ALLOCATE(nodes3(compt),stat=ierr)
1391 CALL check_allocate(ierr,
' NODES3')
1395 ikleb=iklestet(4*(i-1)+k)
1397 nf=ni+nodes1(ikleb)-1
1400 IF (nodes3(n)==-1)
THEN 1416 ALLOCATE(nodes1t(npoint),stat=ierr)
1417 CALL check_allocate(ierr,
' NODES1T')
1421 ikleb=iklestri(3*(i-1)+k)
1422 nodes1t(ikleb)=nodes1t(ikleb)+1
1426 ALLOCATE(nodes2t(npoint+1),stat=ierr)
1427 CALL check_allocate(ierr,
' NODES2T')
1431 compt=compt+nodes1t(i)
1432 nodes2t(i+1)=compt+1
1434 ALLOCATE(nodes3t(compt),stat=ierr)
1435 CALL check_allocate(ierr,
' NODES3T')
1439 ikleb=iklestri(3*(i-1)+k)
1441 nf=ni+nodes1t(ikleb)-1
1444 IF (nodes3t(n)==-1)
THEN 1456 CALL system_clock(count=temps_sc(4),count_rate=parsec)
1457 WRITE(
lu,*)
' TEMPS CONNECTIVITE INVERSE PART1/ PART2',
1458 & (1.0*(temps_sc(3)-temps_sc(2)))/(1.0*parsec),
'/',
1459 & (1.0*(temps_sc(4)-temps_sc(3)))/(1.0*parsec),
' SECONDS' 1475 ALLOCATE(epart(nbtet),stat=ierr)
1476 CALL check_allocate (ierr,
'EPART')
1477 ALLOCATE (npart(npoint),stat=ierr)
1478 CALL check_allocate (ierr,
'NPART')
1483 CALL system_clock(count=temps_sc(5),count_rate=parsec)
1486 WRITE(
lu,*)
' STARTING METIS MESH PARTITIONING------------------+' 1488 CALL partitioner(pmethod, nbtet, npoint, 4, nparts, iklestet,
1491 CALL system_clock(count=temps_sc(6),count_rate=parsec)
1494 WRITE(
lu,*)
' END METIS MESH PARTITIONING------------------+' 1495 WRITE(
lu,*)
' TEMPS CONSOMME PAR METIS ',
1496 & (1.0*(temps_sc(6)-temps_sc(5)))/(1.0*parsec),
' SECONDS' 1497 WRITE(
lu,80) nelemtotal,npoint
1498 WRITE(
lu,81) nbtet,nbtri
1500 WRITE(
lu,*)
'SORTIE DE METIS CORRECTE' 1511 nelem_p(epart(i))=nelem_p(epart(i))+1
1513 max_nelem_p=maxval(nelem_p)
1514 WRITE(
lu,*)
'NB MAX OF TETRAS PER SUBDOMAIN : ',max_nelem_p
1515 WRITE(
lu,*)
'NB OF TETRA PER SUBDOMAIN :' 1517 WRITE(
lu,*) i, nelem_p(i)
1521 ALLOCATE(elegl(max_nelem_p,nparts),stat=ierr)
1523 CALL check_allocate(ierr,
'ELEGL')
1525 nelem_p(epart(i))=nelem_p(epart(i))+1
1526 elegl(nelem_p(epart(i)),epart(i))=i
1530 ALLOCATE(nodelg(npoint,nparts),stat=ierr)
1531 CALL check_allocate(ierr,
'NODELG')
1537 DO pos=1,nelem_p(idd)
1538 ielem=elegl(pos,idd)
1543 IF (nodelg(node,idd) .EQ. 0)
THEN 1544 npoin_p(idd)=npoin_p(idd)+1
1545 nodelg(node,idd)=npoin_p(idd)
1551 max_npoin_p=maxval(npoin_p)
1553 WRITE(
lu,*)
'NB MAX OF POINT PER SUBDOMAIN :', max_npoin_p
1554 WRITE(
lu,*)
'NB OF POINT PER SUBDOMAIN :' 1556 WRITE(
lu,*) i, npoin_p(i)
1559 ALLOCATE(nodegl(max_npoin_p,nparts),stat=ierr)
1560 CALL check_allocate(ierr,
'NODEGL')
1564 IF (nodelg(node,idd) .NE. 0)
THEN 1565 nodegl(nodelg(node,idd),idd)=node
1579 ALLOCATE(nodes4(npoint),stat=ierr)
1580 CALL check_allocate(ierr,
' NODES4')
1582 ALLOCATE(knolg(npoint),stat=ierr)
1583 CALL check_allocate(ierr,
' KNOLG')
1588 ALLOCATE(nachb(nbsdomvois,npoint),stat=ierr)
1589 CALL check_allocate(ierr,
' NACHB')
1594 ALLOCATE(triunv(4*nbtri),stat=ierr)
1595 CALL check_allocate(ierr,
'TRIUNV')
1608 numtrig=convtri(numtet)
1609 color1=ecolor(numtrig)
1612 IF (color2 > 0)
THEN 1616 IF (priority(l)==color1)
THEN 1619 IF (priority(l)==color2)
THEN 1623 IF ((pr1==0).OR.(pr2==0))
GOTO 154
1624 IF (pr1<pr2) ncolor2(j)=color1
1631 CALL system_clock(count=temps_sc(7),count_rate=parsec)
1647 ALLOCATE(tetcolor(nbtet,4),stat=ierr)
1648 CALL check_allocate(ierr,
' TETCOLOR')
1649 tetcolor(:,:)=.false.
1660 IF (ncolor2(j) > 0)
THEN 1667 IF (epart(nt) /= iddnt)
THEN 1682 IF (tettri2(nt)>0)
THEN 1684 nft=nit+tettri2(nt)-1
1687 numtrib=3*(numtri-1)+1
1688 ikle1=iklestri(numtrib)
1689 ikle2=iklestri(numtrib+1)
1690 ikle3=iklestri(numtrib+2)
1693 IF ((ikle1==j).OR.(ikle2==j).OR.(ikle3==j))
THEN 1705 ikle1=iklestet(numtetb+l-1)
1707 tetcolor(nt,l)=(tetcolor(nt,l).OR..true.)
1708 nbretouche=nbretouche+1
1717 CALL system_clock(count=temps_sc(8),count_rate=parsec)
1718 WRITE(
lu,*)
' NOMBRE DE RETOUCHE DU PARTITIONNEMENT (PART2): ',
1720 WRITE(
lu,*)
' TEMPS DE RETOUCHE DU PARTITIONNEMENT PART1/PART2',
1721 & (1.0*(temps_sc(7)-temps_sc(6)))/(1.0*parsec),
'/',
1722 & (1.0*(temps_sc(8)-temps_sc(7)))/(1.0*parsec),
' SECONDS' 1729 IF (nelin .GT. 0)
THEN 1730 ALLOCATE(deja_trouve(nelin),stat=ierr)
1732 ALLOCATE(deja_trouve(1),stat=ierr)
1734 CALL check_allocate(ierr,
'DEJA_TROUVE')
1735 deja_trouve(:)=.false.
1738 i_leninp = len_trim(nameinp2)
1739 i_lenlog = len_trim(namelog2)
1746 nameinp2(i_leninp+1:i_leninp+11) = extens(nparts-1,idd-1)
1747 OPEN(ninp2,file=nameinp2,status=
'UNKNOWN',form=
'FORMATTED',
1752 namelog2(i_lenlog+1:i_lenlog+11) = extens(nparts-1,idd-1)
1753 OPEN(nlog2,file=namelog2,status=
'UNKNOWN',form=
'FORMATTED',
1758 WRITE(ninp2,60,err=112)blanc,moins1
1759 WRITE(ninp2,61,err=112)nsec1
1760 WRITE(ninp2,62,err=112)titre
1762 WRITE(ninp2,62,err=112)titre
1763 WRITE(ninp2,62,err=112)titre
1764 WRITE(ninp2,62,err=112)titre
1765 WRITE(ninp2,62,err=112)titre
1766 WRITE(ninp2,62,err=112)titre
1767 WRITE(ninp2,62,err=112)titre
1768 WRITE(ninp2,60,err=112)blanc,moins1
1771 WRITE(ninp2,60,err=112)blanc,moins1
1772 WRITE(ninp2,61,err=112)nsec2
1776 DO pos_node=1,npoin_p(idd)
1777 j=nodegl(pos_node,idd)
1784 WRITE(ninp2,63,err=112)compt,ibid,ibid,ncolor2(j)
1785 WRITE(ninp2,64,err=112)x1(j),y1(j),z1(j)
1793 IF (nachb(1+l,j)==idd) nachblog=.false.
1797 IF (k.GT.nbsdomvois-2)
GOTO 151
1811 npointsd(idd)=compt-1
1812 WRITE(ninp2,60,err=112)blanc,moins1
1815 WRITE(ninp2,60,err=112)blanc,moins1
1816 WRITE(ninp2,61,err=112)nsec3
1825 DO pos=1,nelem_p(idd)
1834 IF (tetcolor(numtet,1)) ibidc=ibidc+1000
1835 IF (tetcolor(numtet,2)) ibidc=ibidc+ 200
1836 IF (tetcolor(numtet,3)) ibidc=ibidc+ 30
1837 IF (tetcolor(numtet,4)) ibidc=ibidc+ 4
1843 WRITE(ninp2,65,err=112)compt,elem,-ibidc,ibid,ecolor(j),4
1844 IF (ecolor(j).LE.0) print*,
'PB WRITE COLOR',j,ecolor(j)
1847 ikle1=nodes4(iklestet(n))
1848 ikle2=nodes4(iklestet(n+1))
1849 ikle3=nodes4(iklestet(n+2))
1850 ikle4=nodes4(iklestet(n+3))
1851 WRITE(ninp2,66,err=112)ikle1,ikle2,ikle3,ikle4
1852 IF ((ikle1.LT.0).OR.(ikle2.LT.0).OR.(ikle3.LT.0)
1853 & .OR.(ikle4.LT.0))
GOTO 147
1854 IF (tettri2(numtet).NE.0)
THEN 1856 nf=ni+tettri2(numtet)-1
1859 numtrig=convtri(numtri)
1861 triunv(4*nbtriidd+1)=ecolor(numtrig)
1863 ikle1=nodes4(iklestri(n))
1864 ikle2=nodes4(iklestri(n+1))
1865 ikle3=nodes4(iklestri(n+2))
1866 triunv(4*nbtriidd+2)=ikle1
1867 triunv(4*nbtriidd+3)=ikle2
1868 triunv(4*nbtriidd+4)=ikle3
1871 IF ((ikle1.LT.0).OR.(ikle2.LT.0).OR.(ikle3.LT.0))
1881 WRITE(ninp2,65,err=112)compt,elem,ibid,ibid,
1882 & triunv(4*(j-1)+1),3
1883 ikle1=triunv(4*(j-1)+2)
1884 ikle2=triunv(4*(j-1)+3)
1885 ikle3=triunv(4*(j-1)+4)
1886 WRITE(ninp2,67,err=112)ikle1,ikle2,ikle3
1892 IF (nelin .GT. 0)
THEN 1894 IF (deja_trouve(j)) cycle
1895 ikle1=nodes4(iklein(j,2))
1896 ikle2=nodes4(iklein(j,3))
1897 ikle3=nodes4(iklein(j,4))
1898 IF ((ikle1.EQ.-1).OR.(ikle2.EQ.-1).OR.(ikle3.EQ.-1)) cycle
1907 ptri1 = nodegl(ikle1,idd)
1908 ptri2 = nodegl(ikle2,idd)
1909 ptri3 = nodegl(ikle3,idd)
1911 deb1 = nodes2(ptri1)
1912 fin1 = deb1 + nodes1(ptri1)-1
1913 deb2 = nodes2(ptri2)
1914 fin2 = deb2 + nodes1(ptri2)-1
1915 deb3 = nodes2(ptri3)
1916 fin3 = deb3 + nodes1(ptri3)-1
1918 DO ptet1 = deb1, fin1
1919 DO ptet2 = deb2, fin2
1920 IF (nodes3(ptet1).EQ.nodes3(ptet2))
THEN 1921 DO ptet3 = deb3, fin3
1922 IF (nodes3(ptet3).EQ.nodes3(ptet1))
THEN 1923 IF (epart(nodes3(ptet3)).EQ.idd)
THEN 1935 IF (.NOT.found_tet) cycle
1938 WRITE(ninp2,65,err=112) compt,elem,ibid,ibid,iklein(j,1),3
1939 WRITE(ninp2,67,err=112) ikle1,ikle2,ikle3
1941 deja_trouve(j) = .true.
1947 WRITE(ninp2,60,err=112)blanc,moins1
1952 nelemsd(idd)=compt-1
1957 WRITE(nlog2,51 ,err=113) npointsd(idd)
1958 WRITE(nlog2,52 ,err=113) nelemsd(idd)
1959 WRITE(nlog2,523,err=113) size_flux
1963 #if defined HAVE_MED 1964 IF (format_med)
THEN 1965 WRITE(nlog2,53 ,err=113) nbfamily
1967 WRITE(nlog2,50,err=113)
'--' 1971 IF (.NOT.format_med)
THEN 1972 WRITE(nlog2,53 ,err=113) nbfamily-1
1974 WRITE(nlog2,50,err=113)
'--' 1986 WRITE(nlog2,531,err=113) nbcolor
1987 WRITE(unit=theformat,fmt=1000) nbcolor
1988 1000
FORMAT(
'(''PRIORITY :'',',i3,
'(X,I3,))')
1989 theformat=trim(theformat)
1991 WRITE (nlog2,fmt=theformat(1:len(theformat)-1))
1992 & (priority(i), i=1, nbcolor)
2000 WRITE(nlog2,54,err=113)ni,nf
2002 WRITE(nlog2,540,err=113)(knolg(6*(j-1)+k),k=1,6)
2005 WRITE(nlog2,541,err=113)knolg(6*ni+1)
2006 ELSE IF (nf.EQ.2)
THEN 2007 WRITE(nlog2,542,err=113)(knolg(6*ni+k),k=1,2)
2008 ELSE IF (nf.EQ.3)
THEN 2009 WRITE(nlog2,543,err=113)(knolg(6*ni+k),k=1,3)
2010 ELSE IF (nf.EQ.4)
THEN 2011 WRITE(nlog2,544,err=113)(knolg(6*ni+k),k=1,4)
2012 ELSE IF (nf.EQ.5)
THEN 2013 WRITE(nlog2,545,err=113)(knolg(6*ni+k),k=1,5)
2015 WRITE(nlog2,55,err=113)npoint
2029 nachb(nbsdomvois,:)=-1
2035 IF (nachb(k,j)==idd)
THEN 2037 nachb(nbsdomvois,j)=compt
2042 npointisd(idd)=compt
2046 namelog2(i_lenlog+1:i_lenlog+11) = extens(nparts-1,idd-1)
2047 OPEN(nlog2,file=namelog2,status=
'OLD',form=
'FORMATTED',
2048 & position=
'APPEND',err=133)
2049 WRITE(nlog2,56,err=113) npointisd(idd)
2051 IF (nachb(nbsdomvois,j)>0)
THEN 2055 IF (nachb(k+1,j)/= idd)
THEN 2059 IF (compt.GT.nbsdomvois-3)
GOTO 152
2061 IF (nachb(k+1,j)>0)
THEN 2064 vectnb(compt)=nachb(k+1,j)-1
2072 WRITE(nlog2,640,err=113)nodelg(j,idd),(vectnb(k),k=1,5)
2075 WRITE(nlog2,640,err=113)(vectnb(6*(l-1)+k),k=0,5)
2078 WRITE(nlog2,641,err=113)vectnb(6*ni)
2079 ELSEIF (nf.EQ.2)
THEN 2080 WRITE(nlog2,642,err=113)(vectnb(6*ni+k),k=0,1)
2081 ELSEIF (nf.EQ.3)
THEN 2082 WRITE(nlog2,643,err=113)(vectnb(6*ni+k),k=0,2)
2083 ELSEIF (nf.EQ.4)
THEN 2084 WRITE(nlog2,644,err=113)(vectnb(6*ni+k),k=0,3)
2085 ELSEIF (nf.EQ.5)
THEN 2086 WRITE(nlog2,645,err=113)(vectnb(6*ni+k),k=0,4)
2090 WRITE(nlog2,57,err=113)
2093 CALL system_clock(count=temps_sc(9),count_rate=parsec)
2094 WRITE(
lu,*)
' REMPLISSAGE DES FICHIERS UNV ET LOG',
2095 & (1.0*(temps_sc(9)-temps_sc(8)))/(1.0*parsec),
' SECONDS' 2105 WRITE(
lu,86)idd,nelemsd(idd),npointsd(idd),npointisd(idd)
2106 compt3=compt3+npointisd(idd)
2107 compt2=compt2+npointsd(idd)
2108 compt1=compt1+nelemsd(idd)
2110 WRITE(
lu,*)
' ------------------------------------' 2111 WRITE(
lu,87)compt1,compt2,compt3
2112 WRITE(
lu,88)compt1/nparts,compt2/nparts,compt3/nparts
2114 WRITE(
lu,83)(1.0*(temps_sc(9)-temps_sc(1)))/(1.0*parsec)
2115 WRITE(
lu,*)
' ENDING METIS MESH PARTITIONING--------------------+' 2117 WRITE(
lu,*)
' WRITING GEOMETRY FILE FOR EACH PROCESSOR' 2118 WRITE(
lu,*)
' WRITING LOG FILE FOR EACH PROCESSOR' 2128 51
FORMAT(
' TOTAL NO. OF NODES : ',i10)
2129 52
FORMAT(
' TOTAL NO. OF ELEMENTS : ',i10)
2130 523
FORMAT(
' TOTAL NO. OF USER-FLUX : ',i10)
2131 53
FORMAT(
' TOTAL NO. OF FAMILIES : ',i10)
2132 531
FORMAT(
' TOTAL NUMBER OF EXTERNAL FACES : ',i10)
2133 54
FORMAT(
' DEBUT DE KNOLG: ',i10,
' ',i10)
2151 55
FORMAT(
' FIN DE KNOLG: ',i10)
2152 56
FORMAT(
' DEBUT DE NACHB: ',i10)
2153 57
FORMAT(
' FIN DE NACHB: ')
2170 80
FORMAT(
' #NUMBER TOTAL OF ELEMENTS: ',i8,
2172 81
FORMAT(
' #TETRAHEDRONS : ',i8,
2173 &
' #TRIANGLE MESH BORDER : ',i8)
2174 82
FORMAT(
' #NPARTS : ',i8)
2175 83
FORMAT(
' RUNTIME : ',f10.2,
' S')
2176 86
FORMAT(
' DOMAIN: ',i3,
' #ELEMENTS: ',i8,
' #NODES: ',i8,
2177 &
' #INTERFACENODES: ',i8)
2178 87
FORMAT(
' TOTAL VALUES OF ELEMENTS: ',i10,
' NODES: ',i10,
2179 &
' INTERFACENODES: ',i10)
2180 88
FORMAT(
' MEAN VALUES OF ELEMENTS : ',i8,
' NODES: ',i8,
2181 &
' INTERFACENODES: ',i8)
2182 89
FORMAT(
' INPUT UNV FILE :',a50)
2185 92
FORMAT(
' NUMBER OF NODES:',i10)
2186 93
FORMAT(
' NUMBER OF ELEMENTS:',i10)
2187 94
FORMAT(
' NUMBER OF COLORS:',i5)
2191 DEALLOCATE(x1,y1,z1)
2193 DEALLOCATE(iklestet,iklestri,tettri,tettri2)
2194 DEALLOCATE(epart,npart)
2195 DEALLOCATE(nelemsd,npointsd,npointisd)
2196 DEALLOCATE(nodes1,nodes2,nodes3,nodes4,triunv)
2197 DEALLOCATE(nodes1t,nodes2t,nodes3t)
2198 DEALLOCATE(knolg,nachb,priority,ncolor2)
2209 111 texterror=
'! UNEXPECTED FILE FORMAT2: '//nameinp//
' !' 2211 112 texterror=
'! UNEXPECTED FILE FORMAT3: '//nameinp2//
' !' 2213 113 texterror=
'! UNEXPECTED FILE FORMAT4: '//namelog2//
' !' 2215 120 texterror=
'! UNEXPECTED EOF WHILE READING: '//namelog//
' !' 2217 130 texterror=
'! PROBLEM WHILE OPENING: '//namelog//
' !' 2219 131 texterror=
'! PROBLEM WHILE OPENING: '//nameinp//
' !' 2221 132 texterror=
'! PROBLEM WHILE OPENING: '//nameinp2//
' !' 2223 133 texterror=
'! PROBLEM WHILE OPENING: '//namelog2//
' !' 2225 140 texterror=
'! FILE DOES NOT EXIST: '//nameinp//
' !' 2227 141 texterror=
'! FILE DOES NOT EXIST: '//namelog//
' !' 2229 144
WRITE(unit=str8,fmt=
'(I8)')maxlensoft
2230 texterror=
'! NAME OF INPUT FILE '//nameinp//
' IS LONGER THAN '//
2231 & str8(1:3)//
' CHARACTERS !' 2233 145
WRITE(unit=str8,fmt=
'(I8)')maxlensoft
2234 texterror=
'! NAME OF INPUT FILE '//namelog//
' IS LONGER THAN '//
2235 & str8(1:3)//
' CHARACTERS !' 2237 146 texterror=
'! PROBLEM WITH CONSTRUCTION OF INVERSE CONNECTIVITY !' 2239 147 texterror=
'! PROBLEM WHILE WRITING: '//nameinp2//
' !' 2241 149 texterror=
'! NO INPUT UNV FILE !' 2243 151
WRITE(unit=str8,fmt=
'(I8)')j
2244 WRITE(unit=str26,fmt=
'(I3,1X,I3,1X,I3,1X,I3,1X,I3,1X,I3)')
2245 & (nachb(k,j),k=2,nbsdomvois-1),idd
2246 texterror=
'! NODE '//str8//
' BELONGS TO DOMAINS '//str26(1:23)
2249 152 texterror=
'! PROBLEM WITH CONSTRUCTION OF VECTNB FOR NACHB !' 2251 154 texterror=
'! PROBLEM WITH THE PRIORITY OF COLOR NODES !' 2254 1100 texterror=
'ERREUR DE LECTURE DU FICHIER UNV '//
2255 &
'VIA MESH_CONNECTIVITY' 2257 1200 texterror=
'ERREUR DE FIN DE LECTURE DU FICHIER UNV '//
2258 &
'VIA MESH_CONNECTIVITY' 2261 999
WRITE(
lu,*) texterror
subroutine voisin31(IFABOR, NELEM, NELMAX, IELM, IKLE, SIZIKL, NPOIN, NBOR, NPTFR, LIHBOR, KLOG, INDPU, IKLESTR, NELEB2)
subroutine elebd31(NELBOR, NULONE, IKLBOR, IFABOR, NBOR, IKLE, NELEM, NELEB, NELMAX, NPOIN, NPTFR, IELM)