34#include "implicit_f.inc"
42#include "remesh_c.inc"
46#include "timeri_c.inc"
51 INTEGER,
INTENT(IN) :: FLAG
53 INTEGER,
INTENT(IN) :: ITHERM
54 INTEGER,
INTENT(IN) :: OUT_ID
55 INTEGER,
INTENT(IN) :: NTIMAX
56 CHARACTER(LEN=9),
INTENT(INOUT) :: TITLES(NTIMAX)
57 REAL,
INTENT(INOUT) :: TABTIME(NTIMAX,PARASIZ)
61 INTEGER :: NF,NFIELDS,FIELDS(NTIMAX)
68 fields(1) = 31 ; fields(2) = 32 ; fields(3) = 33 ; fields(4) = 34
70 . flag,out_id,nfields,fields,titles)
76 fields(nf) = macro_timer_contsort
78 fields(nf) = macro_timer_contfor
81 fields(nf) = macro_timer_element
83 fields(nf) = macro_timer_kin
85 fields(nf) = macro_timer_integ
87 fields(nf) = macro_timer_io
89 fields(nf) = macro_timer_p0
91 fields(nf) = macro_timer_asm
92 IF(.NOT.( (idtmins==0).AND.(idtmins_int==0)))
THEN
94 fields(nf) = macro_timer_ams
97 fields(nf) = macro_timer_resol
100 . flag,out_id,nfields,fields,titles)
105 fields(1) = 36 ; fields(2) = 37 ; fields(3) = 38
106 CALL print_block(
"** ADAPTIVE MESH TIME **",tabtime,ntimax,
107 . flag,out_id,nfields,fields,titles)
113 total = tabtime(10,i)+tabtime(11,i)+
114 . tabtime(12,i)+tabtime(13,i)
115 tabtime(macro_timer_tmp1,i) = total
116 IF(tabtime(1,i) > 0 )
THEN
117 tabtime(macro_timer_tmp2,i) = 100.d0*total/tabtime(1,i)
119 tabtime(macro_timer_tmp2,i) = 0.0d0
122 fields(1) = 10 ; titles(10) =
'FORCES'
123 fields(2) = 11 ; titles(11) =
'RBYFOR'
124 fields(3) = 12 ; titles(12) =
'RBYVEL '
125 fields(4) = 13 ; titles(13) =
'VEL '
126 fields(5) = macro_timer_tmp1 ; titles(macro_timer_tmp1) =
'TOT'
127 fields(6) = macro_timer_tmp2 ; titles(macro_timer_tmp2) =
'%'
129 CALL print_block(
"** SPMD COM. TIME **",tabtime,ntimax,
130 . flag,out_id,nfields,fields,titles)
134 IF(idtmins/=0.OR.idtmins_int/=0)
THEN
135 fields(1) =61 ; titles(61) =
'PCG'
136 fields(2) =62 ; titles(62) =
'PARITF'
137 fields(3) =63 ; titles(63) =
'COMMR '
138 fields(4) =64 ; titles(64) =
'COMP_MV'
139 fields(5) =65 ; titles(65) =
'VFI'
140 fields(6) =80 ; titles(80) =
'COMM_MV'
141 fields(7) =70 ; titles(70) =
'TOT_PROJ '
142 fields(8) =71 ; titles(71) =
'MAT_LT2'
143 fields(9) =72 ; titles(72) =
'MAM_NM'
144 fields(10) =73 ; titles(73) =
'MAN_NNM'
145 fields(11) =74 ; titles(74) =
'COMP_MV_E '
146 fields(12) =75 ; titles(75) =
'BUILD_M'
149 . flag,out_id,nfields,fields,titles)
154 fields(1) = 67 ; titles(fields(1)) =
'COMMDOT'
155 fields(2) = 66 ; titles(fields(2)) =
'COMMV'
156 fields(3) = 68 ; titles(fields(3)) =
'GPU_CPU '
157 fields(4) = 69 ; titles(fields(4)) =
'CPU_GPU'
159 CALL print_block("**
IMPLICIT pcg **
",TABTIME,NTIMAX,
160 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
164 TABTIME(MACRO_TIMER_TMP1,I) = MAX(0.0,TABTIME(8,I)-TABTIME(20,I)
168 TABTIME(MACRO_TIMER_TMP2,I) = MAX(0.0,TABTIME(8,I)+
169 . TABTIME(19,I)+TABTIME(3,I)
170 . -TABTIME(29,I)-TABTIME(76,I))
174 IF( NINTER > 0 ) THEN
175 FIELDS(1) = 15 ; TITLES(FIELDS(1)) = 'BUKCRIT'
176 FIELDS(2) = 16 ; TITLES(FIELDS(2)) = 'COMMCRIT'
177 FIELDS(3) = 17 ; TITLES(FIELDS(3)) = 'BUCKET '
178 FIELDS(4) = 18 ; TITLES(FIELDS(4)) = 'GFRONT'
179 FIELDS(5) = 19 ; TITLES(FIELDS(5)) = 'CONTOPT'
180 FIELDS(6) = 20 ; TITLES(FIELDS(6)) = 'CONTF'
181 FIELDS(7) = MACRO_TIMER_TMP1 ;
182 TITLES(FIELDS(7)) = 'DST'
183 FIELDS(8) = MACRO_TIMER_TMP2 ;
184 TITLES(FIELDS(8)) = 'CE_FORCE'
186 IF(NINTER25 > 0) THEN
187 FIELDS(9) = 106 ; TITLES(FIELDS(9)) = 'NORML'
188 NFIELDS = NFIELDS + 1
191 IF(NINTERFRIC > 0) THEN
192 NFIELDS = NFIELDS + 1
193 FIELDS(NFIELDS) = MACRO_TIMER_FRIC ; TITLES(FIELDS(NFIELDS)) = 'FRIC'
196 CALL PRINT_BLOCK("**
INTERFACE time **
",TABTIME,NTIMAX,
197 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
199 FIELDS(1 )=21 ; TITLES(FIELDS(1 )) = 'FICOM1'
200 FIELDS(2 )=22 ; TITLES(FIELDS(2 )) = 'FICOM2'
201 FIELDS(3 )=23 ; TITLES(FIELDS(3 )) = 'ISDXV1'
202 FIELDS(4 )=24 ; TITLES(FIELDS(4 )) = 'ISDXV2'
203 FIELDS(5 )=27 ; TITLES(FIELDS(5 )) = 'TRIMMX'
204 FIELDS(6 )=25 ; TITLES(FIELDS(6 )) = 'TRIBOX'
205 FIELDS(7 )=30 ; TITLES(FIELDS(7 )) = 'TRIBUC'
206 FIELDS(8 )=26 ; TITLES(FIELDS(8 )) = 'TRIGAT'
207 FIELDS(9 )=76 ; TITLES(FIELDS(9 )) = 'SYNCCOM'
208 FIELDS(10)=29 ; TITLES(FIELDS(10)) = 'SHOOTING'
209 FIELDS(11)=28 ; TITLES(FIELDS(11)) = 'INT2_FV'
211 CALL PRINT_BLOCK(" ",TABTIME,NTIMAX,
212 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
215 FIELDS(1 )=40 ; TITLES(FIELDS(1 )) = 'RB_SENS'
216 FIELDS(2 )=41 ; TITLES(FIELDS(2 )) = 'CLOADS'
217 FIELDS(3 )=42 ; TITLES(FIELDS(3 )) = 'BCS'
218 FIELDS(4 )=43 ; TITLES(FIELDS(4 )) = 'RL_RW'
219 FIELDS(5 )=44 ; TITLES(FIELDS(5 )) = 'FIXVEL'
220 FIELDS(6 )=45 ; TITLES(FIELDS(6 )) = 'RBE3'
221 FIELDS(7 )=46 ; TITLES(FIELDS(7 )) = 'GRAV'
224 CALL PRINT_BLOCK("** kin cond & task0 time **
",TABTIME,NTIMAX,
225 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
227 FIELDS(1 )=47 ; TITLES(FIELDS(1 )) = 'MANCTR'
228 FIELDS(2 )=50 ; TITLES(FIELDS(2 )) = 'MONVOL'
229 FIELDS(3 )=52 ; TITLES(FIELDS(3 )) = 'DAMP'
230 FIELDS(4 )=28 ; TITLES(FIELDS(4 )) = 'INT2'
233 FIELDS(7 )=53 ; TITLES(FIELDS(7 )) = 'DT2'
234 FIELDS(8 )=49 ; TITLES(FIELDS(8 )) = 'AUX'
235 FIELDS(9 )=51 ; TITLES(FIELDS(9 )) = 'FORINTS'
237 IF(TABTIME(54,1) > 0 ) THEN
238 NFIELDS = NFIELDS + 1
239 FIELDS(10)=54 ; TITLES(FIELDS(10)) = 'R2R'
241 IF(TABTIME(55,1) > 0 ) THEN
242 NFIELDS = NFIELDS + 1
243 FIELDS(11)=55 ; TITLES(FIELDS(11)) = 'R2M'
245 CALL PRINT_BLOCK(" ",TABTIME,NTIMAX,
246 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
248 IF(IALE+IEULER+ITHERM/=0) THEN
249 FIELDS(1) = MACRO_TIMER_ALEMAIN
250 FIELDS(2) = MACRO_TIMER_IFSUB0
251 FIELDS(3) = MACRO_TIMER_MULTIFVM
252 FIELDS(4) = MACRO_TIMER_SPMDCFD
253 FIELDS(5) = MACRO_TIMER_MUSCL
255 CALL PRINT_BLOCK("** ale time **
",TABTIME,NTIMAX,
256 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
262 IF(TABTIME(MACRO_TIMER_MONVOL,1) > 0) THEN
263 NFIELDS = NFIELDS + 1
264 FIELDS(NFIELDS) = MACRO_TIMER_MONVOL
265 TITLES(MACRO_TIMER_MONVOL) = 'UP'
267 IF(TABTIME(MACRO_TIMER_FVMBAG,1) > 0) THEN
268 NFIELDS = NFIELDS + 1
269 FIELDS(NFIELDS) = MACRO_TIMER_FVMBAG
270 TITLES(MACRO_TIMER_FVMBAG) = 'FVMESH'
272 IF(TABTIME(MACRO_TIMER_FVMBAG,1) > 0) THEN
273 NFIELDS = NFIELDS + 1
274 FIELDS(NFIELDS) = MACRO_TIMER_FVMBAG1
275 TITLES(MACRO_TIMER_FVMBAG1) = 'FVBAG'
277 IF(NFIELDS > 0) CALL PRINT_BLOCK("** airbags **
",TABTIME,NTIMAX,
278 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
284 J = MACRO_TIMER_T25SLIDING
285 IF(TABTIME(J,1) > 0) THEN
286 NFIELDS = NFIELDS + 1
288 TITLES(J) = 'SLIDING'
290 J = MACRO_TIMER_T25NORM
291 IF(TABTIME(J,1) > 0) THEN
292 NFIELDS = NFIELDS + 1
296 J = MACRO_TIMER_T25STFE
297 IF(TABTIME(J,1) > 0) THEN
298 NFIELDS = NFIELDS + 1
300 TITLES(J) = 'GETSTIF'
302 J = MACRO_TIMER_T25VOX0
303 IF(TABTIME(J,1) > 0) THEN
304 NFIELDS = NFIELDS + 1
308 J = MACRO_TIMER_T25VOX0E2E
309 IF(TABTIME(J,1) > 0) THEN
310 NFIELDS = NFIELDS + 1
312 TITLES(J) = 'VOX0E2E'
314 J = MACRO_TIMER_T25RNUM
315 IF(TABTIME(J,1) > 0) THEN
316 NFIELDS = NFIELDS + 1
320 J = MACRO_TIMER_T25RNUME
321 IF(TABTIME(J,1) > 0) THEN
322 NFIELDS = NFIELDS + 1
324 TITLES(J) = 'RNUME2E'
326 J = MACRO_TIMER_T25BUC
327 IF(TABTIME(J,1) > 0) THEN
328 NFIELDS = NFIELDS + 1
332 J = MACRO_TIMER_T25BUCE2E
333 IF(TABTIME(J,1) > 0) THEN
334 NFIELDS = NFIELDS + 1
338 J = MACRO_TIMER_T25TRCE
339 IF(TABTIME(J,1) > 0) THEN
340 NFIELDS = NFIELDS + 1
345 IF(NFIELDS > 0) CALL PRINT_BLOCK("**/inter/type25 **
",TABTIME,NTIMAX,
346 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
351 FIELDS(1 )=48 ; TITLES(FIELDS(1 )) = 'SPH_TOT'
352 FIELDS(2 )=87 ; TITLES(FIELDS(2 )) = 'SPH_SORT'
353 FIELDS(3 )=88 ; TITLES(FIELDS(3 )) = 'SPH_FORCES'
354 FIELDS(4 )=89 ; TITLES(FIELDS(4 )) = 'SPH_OTHER'
355 FIELDS(5 )=90 ; TITLES(FIELDS(5 )) = 'SPH_SORT1'
356 FIELDS(6 )=91 ; TITLES(FIELDS(6 )) = 'COMSORT1'
357 FIELDS(7 )=94 ; TITLES(FIELDS(7 )) = 'SPH_SORT0'
358 FIELDS(8 )=92 ; TITLES(FIELDS(8 )) = 'COMM_SORT0'
359 FIELDS(9 )=93 ; TITLES(FIELDS(9 )) = 'COMM_FORCES'
361 CALL PRINT_BLOCK("** sph time **
",TABTIME,NTIMAX,
362 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
364 IF(TABTIME(MACRO_TIMER_GENH3D,1) > 0 ) THEN
366 FIELDS(1 )=MACRO_TIMER_GENH3D ; TITLES(FIELDS(1 ))= 'TOTAL'
367 FIELDS(2 )=MACRO_TIMER_SPMDH3D; TITLES(FIELDS(2 ))= 'SPMD'
368 FIELDS(3 )=MACRO_TIMER_LIBH3D ; TITLES(FIELDS(3 ))= 'H3DLIB'
369 FIELDS(4 )=MACRO_TIMER_GENH3D1; TITLES(FIELDS(4 ))= 'GPSTMAX'
374 CALL PRINT_BLOCK("** h3d animations **
",TABTIME,NTIMAX,
375 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
381 FIELDS(1 )=56 ; TITLES(FIELDS(1 )) = 'BEG_CRIT'
382 FIELDS(2 )=57 ; TITLES(FIELDS(2 )) = 'EOF_CRIT'
383 FIELDS(3 )=58 ; TITLES(FIELDS(3 )) = 'EOF_SORT'
384 FIELDS(4 )=59 ; TITLES(FIELDS(4 )) = 'EOF_FORCES'
385 FIELDS(5 )=60 ; TITLES(FIELDS(5 )) = 'EOF_CYCLE'
386 FIELDS(6 )=95 ; TITLES(FIELDS(6 )) = 'EOF_SPH'
389 CALL PRINT_BLOCK("** forced synch
",TABTIME,NTIMAX,
390 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
521#include "implicit_f.inc"
525#include "com01_c.inc"
526#include "com04_c.inc"
527#include "scr05_c.inc"
530#include "timerc_c.inc"
531#include "timeri_c.inc"
533#include "units_c.inc"
534#include "filescount_c.inc"
535 COMMON /iclock/clock0
537 COMMON /rclock/elapsed
538 DOUBLE PRECISION ELAPSED
542 TYPE(timer_),
INTENT(INOUT) :: T
543 INTEGER ,
INTENT(IN) :: ITHERM
544 TYPE(output_),
INTENT(INOUT) :: OUTPUT
548 INTEGER I, NPROC, MSGTAG, IRSIZE, J, IH, IM, IS
549 DOUBLE PRECISION SECS, TOTAL, CUMUL(MAX_NB_TIMER),
550 . AVERAGE(MAX_NB_TIMER), DEVIATION(MAX_NB_TIMER),
551 . DMIN(MAX_NB_TIMER), DMAX(MAX_NB_TIMER),CUMUL_MAT,CUMUL_ELEM,
552 . CUMUL_FAIL,ARRAY(NSPMD),X_MINVALUE,X_MAXVALUE,Y_MAXVALUE
553 INTEGER MEMUSE(NSPMD),MEM_L,MMIN,MMAX,MTOT,MAVR,
554 . OUTSIZE,RFILESIZE,NB_INTERV
555 INTEGER VMPEAK, VMSIZE,VMRSS,VMHWM, VMSTK,MEMSTAT(5,NSPMD),
557 CHARACTER(LEN=9) TITLES(MAX_NB_TIMER)
560 INTEGER :: LEN_RST_NAME
564 INTEGER :: CURRENT_RUN,OFFSET
565 INTEGER,
DIMENSION(2148) :: RST_NAME
566 INTEGER :: LEN_TMP_NAME
567 CHARACTER(len=4096) :: TMP_NAME
569 INTEGER,
PARAMETER :: INTSIZE = 4
570 REAL,
DIMENSION(:,:),
ALLOCATABLE :: CPUTIME
571 REAL,
DIMENSION(:,:),
ALLOCATABLE :: SYSTIME
572 REAL,
DIMENSION(:,:),
ALLOCATABLE :: REALTIME
575 titles(macro_timer_resol ) =
"RESOL"
576 titles(macro_timer_contsort ) =
"CONTSORT"
577 titles(macro_timer_contfor ) =
"CONTFOR"
578 titles(macro_timer_element ) =
"ELEMENT"
579 titles(macro_timer_kin ) =
"KINCOND"
580 titles(macro_timer_integ ) =
"INTEG"
581 titles(macro_timer_p0 ) =
"T0"
582 titles(macro_timer_io ) =
"IO"
583 titles(macro_timer_asm ) =
"ASM"
584 titles(macro_timer_ams ) =
"SMS"
587 titles(macro_timer_alemain ) =
"ALEMAIN"
588 titles(macro_timer_ifsub0 ) =
"IFSUB0"
589 titles(macro_timer_multifvm ) =
"MULTIFVM"
590 titles(macro_timer_spmdcfd ) =
"SPMDCFD"
591 titles(macro_timer_muscl ) =
"MUSCL"
594 titles(31) =
'[K]SETUP'
595 titles(32) =
'[M]SETUP'
596 titles(33) =
'IMP_SOLV'
597 titles(34) =
'IMP_TOT'
598 titles(36) =
'CRITER'
614 CALL map_memory(vmpeak, vmsize,vmrss,vmhwm, vmstk)
620 ALLOCATE(cputime(max_nb_timer,nspmd))
621 ALLOCATE(systime(max_nb_timer,nspmd))
622 ALLOCATE(realtime(max_nb_timer,nspmd))
624 DO i = 1, max_nb_timer
626 cputime(i,1) = t%CPUTIME(i)
627 systime(i,1) = t%SYSTIME(i)
628 realtime(i,1) = t%REALTIME(i)
631 memuse(ispmd+1)=vmpeak
632 memstat(1,ispmd+1) = vmpeak
633 memstat(2,ispmd+1) = vmsize
634 memstat(3,ispmd+1) = vmrss
635 memstat(4,ispmd+1) = vmhwm
645 . msgtag+ispmd+1,intsize)
647 . msgtag+ispmd+1,intsize)
649 . msgtag+ispmd+1,intsize)
652 CALL rad_spmd_recv(cputime(1,i),max_nb_timer*irsize,i-1,it_spmd,
654 CALL rad_spmd_recv(systime(1,i),max_nb_timer*irsize,i-1,it_spmd,
656 CALL rad_spmd_recv(realtime(1,i),max_nb_timer*irsize,i-1,it_spmd,
675 . msgtag+ispmd+1,intsize)
677 . msgtag+ispmd+1,intsize)
679 . msgtag+ispmd+1,intsize)
681 . msgtag+ispmd+1,intsize)
683 . msgtag+ispmd+1,intsize)
688 memstat(1,i) = memuse(i)
701 IF(memstat(4,1)/=-1)
THEN
703 ELSEIF(memstat(1,1)/=-1)
THEN
705 ELSEIF(memstat(2,1)/=-1)
THEN
707 ELSEIF(memstat(3,1)/=-1)
THEN
710 mmin = memstat(indice,1)
711 mmax = memstat(indice,1)
712 mtot = memstat(indice,1)
714 IF (mmin > memstat(indice,i) )
THEN
715 mmin = memstat(indice,i)
717 IF (mmax < memstat(indice,i) )
THEN
720 mtot = mtot+ memstat(indice,i)
729 ELSEIF(vmpeak/=-1)
THEN
731 ELSEIF(vmsize/=-1)
THEN
753 WRITE(istdo,*)
' ** CPU USER TIME **'
756 CALL print_summary(1,max_nb_timer,cputime,titles,istdo,itherm)
759 WRITE(iout,*)
' ** CPU USER TIME **'
763 CALL print_summary(1,max_nb_timer,cputime,titles,iout,itherm)
775 cumul_mat = cumul_mat +cputime(35,i)
776 cumul_elem= cumul_elem+cputime(3,i)
777 cumul_fail= cumul_fail+cputime(121,i)
781 WRITE(iout,*)
' ** MATERIAL LAWS COST **'
784 WRITE(istdo,*)
' ** MATERIAL LAWS COST **'
786 WRITE(iout,
'(A)')
' #PROC ELEM COST MAT COST FAIL COST'
787 WRITE(istdo,
'(A)')
' #PROC ELEM COST MAT COST FAIL COST'
789 WRITE(iout,
'(I4,3x,E9.4,3x,E9.4,3x,E9.4)') i,cputime(3,i),cputime(35,i),cputime(121,i)
790 WRITE(istdo,
'(I4,3x,E9.4,3x,E9.4,3x,E9.4)') i,cputime(3,i),cputime(35,i),cputime(121,i)
794 WRITE(iout,'(a,e9.4)
') ' total element cost..............:
',CUMUL_ELEM
795 WRITE(IOUT,'(a,e9.4)
') ' total material cost.............:
',CUMUL_MAT
796 WRITE(IOUT,'(a,e9.4)
') ' total fail cost.................:
',CUMUL_FAIL
798 WRITE(ISTDO,'(a,e9.4)
') ' total element cost..............:
',CUMUL_ELEM
799 WRITE(ISTDO,'(a,e9.4)
') ' total material cost.............:
',CUMUL_MAT
800 WRITE(ISTDO,'(a,e9.4)
') ' total fail cost.................:
',CUMUL_FAIL
809 DO I = 1, MAX_NB_TIMER
813 DO J = 1, MAX_NB_TIMER
814 CUMUL(J) = CUMUL(J) + CPUTIME(J,I)
817.AND.
IF(IDTMINS==0IDTMINS_INT==0)THEN
818 TOTAL = CUMUL(1)-CUMUL(2)-CUMUL(8)-CUMUL(3)-CUMUL(4)-CUMUL(5)
819 - -CUMUL(9)-CUMUL(MACRO_TIMER_ALEMAIN)
821 TOTAL = CUMUL(1)-CUMUL(2)-CUMUL(8)-CUMUL(3)-CUMUL(4)-CUMUL(5)
822 - -CUMUL(9)-CUMUL(39)-CUMUL(MACRO_TIMER_ALEMAIN)
824 IF(CUMUL(1)<=ZERO)CUMUL(1)=EM10
830 . ' ** cumulative cpu time summary **
'
832 WRITE(ISTDO,'(a,e9.4,3x,f6.2,a)
')' contact sorting.............:
',
833 + CUMUL(2),100*CUMUL(2)/CUMUL(1),' %
'
834 WRITE(ISTDO,'(a,e9.4,3x,f6.2,a)
')' contact forces..............:
',
835 + CUMUL(8),100*CUMUL(8)/CUMUL(1),' %
'
837 * WRITE(ISTDO,'(a,e9.4,3x,f6.2,a)
')' ..including contact normals:
',
838 * CUMUL(106),100*CUMUL(106)/CUMUL(1),' %
'
839 WRITE(ISTDO,'(a,e9.4,3x,f6.2,a)
')' element forces..............:
',
840 + CUMUL(3),100*CUMUL(3)/CUMUL(1),' %
'
841 WRITE(ISTDO,'(a,e9.4,3x,f6.2,a)
')' kinematic cond..............:
',
842 + CUMUL(4),100*CUMUL(4)/CUMUL(1),' %
'
843 WRITE(ISTDO,'(a,e9.4,3x,f6.2,a)
')' integration.................:
',
844 + CUMUL(5),100*CUMUL(5)/CUMUL(1),' %
'
845 WRITE(ISTDO,'(a,e9.4,3x,f6.2,a)
')' assembling..................:
',
846 + CUMUL(9),100*CUMUL(9)/CUMUL(1),' % '
847 IF(idtmins/=0.OR.idtmins_int/=0)
THEN
848 WRITE(istdo,
'(A,E9.4,3x,F6.2,A)')
' AMS.........................: ',
849 + cumul(39),100*cumul(39)/cumul(1),
' % '
851 IF(iale+ieuler+itherm/=0)
THEN
852 WRITE(istdo,
'(A,E9.4,3x,F6.2,A)')
' ALE.........................: ',
853 + cumul(macro_timer_alemain),
854 + 100*cumul(macro_timer_alemain)/cumul(1),
' % '
857 WRITE(istdo,
'(A,E9.4,3x,F6.2,A)')
' OTHERS (including I/O)......: ',
858 + total,100*total/cumul(1),
' % '
859 WRITE(istdo,
'(A,E9.4,3x,F6.2,A)')
' TOTAL.......................: ',
860 + cumul(1),100*cumul(1)/cumul(1),
' % '
873 .
' ** CUMULATIVE CPU TIME SUMMARY **'
875 WRITE(iout,
'(A,E9.4,3x,F6.2,A)')
' CONTACT SORTING.............: ',
876 + cumul(2),100*cumul(2)/cumul(1),
' % '
877 WRITE(iout,
'(A,E9.4,3x,F6.2,A)')
' CONTACT FORCES..............: ',
878 + cumul(8),100*cumul(8)/cumul(1),
' % '
880 *
WRITE(iout,
'(A,E9.4,3x,F6.2,A)')
' .. INCLUDING CONTACT NORMALS: ',
881 * cumul(106),100*cumul(106)/cumul(1),
' % '
882 WRITE(iout,
'(A,E9.4,3x,F6.2,A)')
' ELEMENT FORCES..............: ',
883 + cumul(3),100*cumul(3)/cumul(1),
' % '
884 WRITE(iout,
'(A,E9.4,3x,F6.2,A)')
' KINEMATIC COND..............: ',
885 + cumul(4),100*cumul(4)/cumul(1),
' % '
886 WRITE(iout,
'(A,E9.4,3x,F6.2,A)')
' INTEGRATION.................: ',
887 + cumul(5),100*cumul(5)/cumul(1),
' % '
888 WRITE(iout,
'(A,E9.4,3x,F6.2,A)')
' ASSEMBLING..................: ',
889 + cumul(9),100*cumul(9)/cumul(1),
' % '
890 IF(idtmins/=0.OR.idtmins_int/=0)
THEN
891 WRITE(iout,
'(A,E9.4,3x,F6.2,A)')
' AMS.........................: ',
892 + cumul(39),100*cumul(39)/cumul(1),
' % '
894 IF(iale+ieuler+itherm/=0)
THEN
895 WRITE(iout,
'(A,E9.4,3x,F6.2,A)')
' ALE.........................: ',
896 + cumul(macro_timer_alemain)
897 + ,100*cumul(macro_timer_alemain)/cumul(1),
' % '
899 WRITE(iout,
'(A,E9.4,3x,F6.2,A)')
' OTHERS (including I/O)......: ',
900 + total,100*total/cumul(1),
' % '
901 WRITE(iout,
'(A,E9.4,3x,F6.2,A)')
' TOTAL.......................: ',
902 + cumul(1),100*cumul(1)/cumul(1),
' % '
909 WRITE(iout,*)
' ** ELAPSED TIME **'
912 CALL print_summary(2,max_nb_timer,realtime,titles,iout,itherm)
916 WRITE(iout,*)
' ** ADDITIONAL DEBUG TIMERS (2) **'
920 . realtime(96,i),realtime(97,i),realtime(98,i),realtime(99,i),
921 . realtime(100,i),realtime(101,i),realtime(102,i)
928 .
' ** MEMORY USAGE STATISTICS **'
930 WRITE(istdo,
'(A,A,I8,A)')' total memory used
',
931 + '.........................:
',MTOT,' mb
'
932 WRITE(ISTDO,'(a,a,i8,a)
')' maximum memory per processor
' ,
933 * '...............:
', MMAX,' mb
'
934 WRITE(ISTDO,'(a,a,i8,a)
')' minimum memory per processor
',
935 * '...............:
',MMIN,' mb
'
936 WRITE(ISTDO,'(a,a,i8,a)
')' average memory per processor
',
937 * '...............:
', MAVR,' mb'
941 WRITE(istdo,
'(A)')
' #PROC MEMORY USED'
943 WRITE(istdo,
'(I4,A,I8,A)') i,
' ',memuse(i),
' MB'
951 .
' ** MEMORY USAGE STATISTICS **'
953 WRITE(iout,
'(A,A,I8,A)')
' TOTAL MEMORY USED ',
954 +
'.........................: ',mtot,
' MB'
955 WRITE(iout,
'(A,A,I8,A)')
' MAXIMUM MEMORY PER PROCESSOR' ,
956 *
'...............: ', mmax,
' MB'
957 WRITE(iout,
'(A,A,I8,A)')
' MINIMUM MEMORY PER PROCESSOR',
958 *
'...............: ',mmin,
' MB'
959 WRITE(iout,
'(A,A,I8,A)')
' AVERAGE MEMORY PER PROCESSOR',
960 *
'...............: ', mavr,
' MB'
973 IF(got_mem_map==1 .OR. imonm > 0)
THEN
974 WRITE(iout,
'(A)')
' ** PROCESS MEMORY MAPPING'
976 WRITE(iout,'(a)
') ' #PROC VMPEAK VMSIZE VMRSS VMHWM VMSTK'
978 WRITE(iout,
'(I4,A,I10,A,I10,A,I10,A,I10,A,I10)')
979 * i,
' ',memstat(1,i),
' ',memstat(2,i),
' ',memstat(3,i),
' ',
980 * memstat(4,i),
' ',memstat(5,i)
991 h3dtotalsize = h3dtotalsize*1024
992 outsize=animtotalsize+thfilesize+outpfilesize+h3dtotalsize
994 outsize = outsize+multithfilesize(i)
996 rfilesize=restartfilesize
998 rfilesize = rfilesize+multirests(i)
1000 totalfilecount = (outsize)+rfilesize+mumpsfilesize+
1002 totalfilecount = totalfilecount/1024
1003 outsize = outsize / 1024
1004 rfilesize = rfilesize / 1024
1005 mumpsfilesize = mumpsfilesize / 1024
1006 bcsfilesize = bcsfilesize / 1024
1008 .
' ** DISK USAGE STATISTICS **'
1010 WRITE(istdo,
'(A,A,I10,A)')
' TOTAL DISK SPACE USED ',
1011 *
'.....................: ',totalfilecount,
1013 WRITE(istdo,
'(A,A,I10,A)')
' ANIMATION/H3D/TH/OUTP SIZE ',
1014 *
'................: ',outsize,
1016 WRITE(istdo,
'(A,A,I10,A)')
' RESTART FILE SIZE ',
1017 *
'.........................: ',
1019 IF (mumpsfilesize > 0)
THEN
1020 WRITE(istdo,
'(A,A,I10,A)')
' MUMPS INTERNAL FILE USAGE ',
1021 *
'.................: '
1022 * mumpsfilesize,
' MB'
1024 IF (bcsfilesize > 0)
THEN
1025 WRITE(istdo,
'(A,A,I10,A)')
' BCS INTERNAL FILE USAGE ',
1026 *
'...................: ',
1035 .
' ** DISK USAGE STATISTICS **'
1037 WRITE(iout,
'(A,A,I10,A)')
' TOTAL DISK SPACE USED ',
1038 *
'.....................: ',totalfilecount,
1040 WRITE(iout,
'(A,A,I10,A)')
' ANIMATION/H3D/TH/OUTP SIZE ',
1041 *
'................: ',outsize,
1043 WRITE(iout,
'(A,A,I10,A)')
' RESTART FILE SIZE ',
1044 *
'.........................: ',
1046 IF (mumpsfilesize > 0)
THEN
1047 WRITE(iout,
'(A,A,I10,A)')
' MUMPS INTERNAL FILE USAGE ',
1048 *
'.................: ',
1049 * mumpsfilesize/1024,
' MB'
1051 IF (bcsfilesize > 0)
THEN
1052 WRITE(iout,
'(A,A,I10,A)')
' BCS INTERNAL FILE USAGE ',
1053 *
'...................: ',
1054 * bcsfilesize/1024,
' MB'
1063 CALL date_and_time(date,time)
1064 output%CHECKSUM%DATE = date
1065 output%CHECKSUM%TIME = time
1074 DO i = 1, len_tmp_name
1075 rst_name(i) = ichar(tmp_name(i:i))
1078 INQUIRE(file=tmp_name(1:len_tmp_name), exist=bool_file)
1082 CALL open_c(rst_name,len_tmp_name,2)
1099 ih=int(secs/3600.0d0)
1100 im=int((secs-ih*3600.0d0)/60.0d0)
1101 is=int(secs-ih*3600.0d0-im*60.0d0)
1104 .
' ** COMPUTE TIME INFORMATION **'
1106 .
' ** CURRENT ENGINE **'
1109 WRITE(iout,6200)startdate(1:4),startdate(5:6),startdate(7:8),
1110 . starttime(1:2),starttime(3:4),starttime(5:6)
1111 WRITE(iout,6300)date(1:4),date(5:6),date(7:8),
1112 . time(1:2),time(3:4),time(5:6)
1115 WRITE(istdo,6000)secs
1116 WRITE(istdo,6100)ih,im,is
1117 IF(nproc>1.AND.secs>zero)
WRITE(istdo,8000)cumul(1)/secs
1119 WRITE(iout,6000)secs
1120 WRITE(iout,6100)ih,im,is
1121 IF(nproc>1.AND.secs>zero)
WRITE(iout,8000)cumul(1)/secs
1123 1000
FORMAT(
' ** PROCESSOR NUMBER **',16(i8,5x,
"%",2x))
1124 2000
FORMAT(
' #PROC ',
'CONT.SORT ',
'CONT. F ',
'ELEMENT ',
1125 .
'KIN.COND. ',
'INTEGR.',
' I/O ',
'TASK0 ',
1126 .
'ASSEMB. ',
'RESOL ')
1127 3000
FORMAT(
' #PROC ',
'FORCES ',
'RBY.FOR. ',
'RBY.VEL. ',
1128 .
'VELOCITIES',
' TOTAL ',
'% CPU')
1129 5550
FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1130 + 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1132 6000
FORMAT(
' ELAPSED TIME =',f14.2,
' s')
1133 6100
FORMAT(
' ',i8,
':',i2.2,
':',i2.2)
1134 6200
FORMAT(
' EXECUTION STARTED .........................: ',
1135 . a4,
'/',a2,
'/',a2,
' ',a2,
':',a2,
':',a2)
1136 6300
FORMAT(
' EXECUTION COMPLETED .......................: ',
1137 . a4,
'/',a2,
'/',a2,
' ',a2,
':',a2,
':',a2)
1138 8000
FORMAT(
' ESTIMATED SPEEDUP=',f14.2)
1458 use element_mod ,
only : nixs,nixc,nixtg
1462#include "implicit_f.inc"
1466 COMMON /timerg/timerg(2,500000),cputimeg(500000)
1467 REAL TIMERG,CPUTIMEG
1469#include
"com01_c.inc"
1470#include
"task_c.inc"
1471#include
"units_c.inc"
1472#include
"param_c.inc"
1473#include
"chara_c.inc"
1474#include
"scr19_c.inc"
1475#include
"ddspmd_c.inc"
1479 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IXTG(,*),
1480 . IPM(NPROPMI,*),IXS(NIXS,*)
1487 . NEL,PROC,NGF, NGL,
1489 . NG,IRSIZE, MSGTAG3 ,NES,,NEC,NETG,NET,NEP,NER,NEUR,
1490 . MPT,NPTS,NPTT,NPTOT,ISOLNOD
1492 CHARACTER FILNAM*100,PROCNAM*4
1494 . ts, tq, tc, ttg, tt, tp, tr, tur, dtu,mins,maxs,minq,
1495 . maxq,minc,maxc,mintg,maxtg,minp,maxp,mint,maxt,minr,
1496 . maxr,minur,maxur, cpug, cpuelem, t(8,2)
1498 INTEGER NUMSOLG,NUMSHG,NUMTRIG,,ITY,MTN,NELEM,NPT,NSG,
1499 . NFT,IHBE,MMA,,FILEN,NUMSOL4G,NUMSOL10G
1502 . theogp(ngroup),tabx(3),tabmat(3),nptr,timmat,telt,tpsthtot,
1503 . tpsreel,batozmult,tppond
1510 WRITE(procnam,
'(I4.4)')ispmd+1
1511 filnam=rootnam(1:rootlen)//
'_'//chrun//
'_'//procnam//
'.ddw2'
1512 OPEN(unit=66,file=filnam,access=
'SEQUENTIAL',
1513 . form=
'FORMATTED',status=
'UNKNOWN')
1518 IF (tpseng==zero)
THEN
1521 tppond = tpseng/tpsref
1524 WRITE(66,
'(A)')
'DOMAIN DECOMPOSITION ANALYSIS FILE '
1525 WRITE(66,
'(A)')
'---------------------------------- '
1529 WRITE(66,1000) ispmd,ncycle
1543 isolnod = iparg(28,ng)
1544 IF (isolnod==4)
THEN
1545 numsol4g = numsol4g+1
1546 ELSEIF (isolnod==10)
THEN
1547 numsol10g = numsol10g+1
1549 numsolg = numsolg + 1
1551 ELSEIF (ity==3)
THEN
1553 ELSEIF (ity==7)
THEN
1554 numtrig = numtrig + 1
1571 isolnod=iparg(28,ng)
1572 IF (isolnod==4)
THEN
1573 telt = tet4tnl(mtn,1) + tet4telt(1)
1575 ELSEIF (isolnod==10)
THEN
1577 nfunc =
max(ipm(10,mma) - 3,1)
1579 telt = tet10tnl(mtn,1) + tet10telt(1)
1580 ELSEIF (nfunc>2.AND.nfunc<=7)
THEN
1581 telt = tet10tnl(mtn,2) + tet10telt(1)
1583 telt = tet10tnl(mtn,3) + tet10telt(1)
1586 IF (ihbe<=1.OR.ihbe==101)
THEN
1588 telt = sol1tnl(mtn,1) + soltelt(1)
1589 ELSEIF (ihbe==2.OR.ihbe==102)
THEN
1591 telt = sol1tnl(mtn,1) + soltelt(2)
1593 ELSEIF (ihbe==24.OR.ihbe==104)
THEN
1595 telt = sol1tnl(mtn,1) + soltelt(3)
1597 ELSEIF (ihbe==12.OR.ihbe==112)
THEN
1599 telt = sol8tnl(mtn,1) + soltelt(4)
1601 ELSEIF (ihbe==14.OR.ihbe>=222)
THEN
1605 nptt = mod(mpt/10,10)
1607 nptot = npts*nptt*int(nptr)
1609 telt = nptot*sol8tnl(mtn,1)+soltelt(5)+nptot*soltelt(6)
1611 ELSEIF(ihbe==17)
THEN
1612 telt = sol1tnl(mtn,1)*8+soltelt(7)
1614 telt = sol1tnl(mtn,1) + soltelt(1)
1618 theogp(ng)= telt*nelem*ncycle*tppond
1620 ELSEIF (ity==3)
THEN
1622 DO j=nft,nft+nelem-1
1626 IF (mtn==2.OR.mtn==3)
THEN
1629 tabmat(1) = shtnl(mtn,1,2)
1630 tabmat(2) = shtnl(mtn,2,2)
1631 tabmat(3) = shtnl(mtn,3,2)
1633 tabmat(1) = shtnl(mtn,1,1)
1634 tabmat(2) = shtnl(mtn,2,1)
1635 tabmat(3) = shtnl(mtn,3,1)
1638 ELSEIF (mtn==36)
THEN
1642 tabmat(1) = shtnl(mtn,1,1)
1643 tabmat(2) = shtnl(mtn,2,1)
1644 tabmat(3) = shtnl(mtn,3,1)
1645 ELSEIF (nfunc>2.AND.nfunc<=7)
THEN
1646 tabmat(1) = shtnl(mtn,1,2)
1647 tabmat(2) = shtnl(mtn,2,2)
1648 tabmat(3) = shtnl(mtn,3,2)
1649 ELSEIF (nfunc>7)
THEN
1650 tabmat(1) = shtnl(mtn,1,3)
1651 tabmat(2) = shtnl(mtn,2,3)
1652 tabmat(3) = shtnl(mtn,3,3)
1655 tabmat(1) = shtnl(mtn,1,1)
1656 tabmat(2) = shtnl(mtn,2,1)
1657 tabmat(3) = shtnl(mtn,3,1)
1670 IF (mtn==2.OR.mtn==3)
THEN
1673 timmat = shtnl(mtn,0,2)
1675 timmat = shtnl(mtn,0,1)
1678 ELSEIF (mtn==36)
THEN
1679 nfunc = nint(pm(40,mma))
1681 timmat = shtnl(mtn,0,1)
1682 ELSEIF (nfunc>2.AND.nfunc<=7)
THEN
1683 timmat = shtnl(mtn,0,2)
1684 ELSEIF (nfunc>7)
THEN
1685 timmat = shtnl(mtn,0,3)
1688 timmat = shtnl(mtn,0,1)
1695 IF (ihbe>=11.AND.ihbe<=19)
THEN
1696 telt = shtelt(3)+batozmult*timmat
1697 ELSEIF (ihbe>=21.AND.ihbe<=29)
THEN
1698 telt = shtelt(2) + timmat
1700 telt = shtelt(1) + timmat
1703 theogp(ng)= theogp(ng)+telt*ncycle*tppond
1706 ELSEIF (ity==7)
THEN
1708 DO j=nft,nft+nelem-1
1712 IF (mtn==2.OR.mtn==3)
THEN
1715 tabmat(1) = tritnl(mtn,1,2)
1716 tabmat(2) = tritnl(mtn,2,2)
1717 tabmat(3) = tritnl(mtn,3,2)
1719 tabmat(1) = tritnl(mtn,1,1)
1720 tabmat(2) = tritnl(mtn,2,1)
1721 tabmat(3) = tritnl(mtn,3,1)
1724 ELSEIF (mtn==36)
THEN
1727 tabmat(1) = tritnl(mtn,1,1)
1728 tabmat(2) = tritnl(mtn,2,1)
1729 tabmat(3) = tritnl(mtn,3,1)
1730 ELSEIF (nfunc>2.AND.nfunc<=7)
THEN
1731 tabmat(1) = tritnl(mtn,1,2)
1732 tabmat(2) = tritnl(mtn,2,2)
1733 tabmat(3) = tritnl(mtn,3,2)
1734 ELSEIF (nfunc>7)
THEN
1735 tabmat(1) = tritnl(mtn,1,3)
1736 tabmat(2) = tritnl(mtn,2,3)
1737 tabmat(3) = tritnl(mtn,3,3)
1740 tabmat(1) = tritnl(mtn,1,1)
1741 tabmat(2) = tritnl(mtn,2,1)
1742 tabmat(3) = tritnl(mtn,3,1)
1755 IF (mtn==2.OR.mtn==3)
THEN
1758 timmat = tritnl(mtn,0,2)
1760 timmat = tritnl(mtn,0,1)
1763 ELSEIF (mtn==36)
THEN
1764 nfunc = nint(pm(40,mma))
1766 timmat = tritnl(mtn,0,1)
1767 ELSEIF (nfunc>2.AND.nfunc<=7)
THEN
1768 timmat = tritnl(mtn,0,2)
1769 ELSEIF (nfunc>7)
THEN
1770 timmat = tritnl(mtn,0,3)
1773 timmat = tritnl(mtn,0,1)
1780 IF (ihbe>=11.AND.ihbe<=19)
THEN
1781 telt = tritelt(3)+batozmult*timmat
1782 ELSEIF (ihbe>=21.AND.ihbe<=29)
THEN
1783 telt = tritelt(2) + timmat
1785 telt = tritelt(1) + timmat
1788 theogp(ng)= theogp(ng)+telt*ncycle*tppond
1792 tpsthtot = tpsthtot + theogp(ng)
1793 tpsreel = tpsreel + cputimeg(ng)
1800 numother = ngroup - numshg - numtrig - numsolg
1802 WRITE(66,1100) numsolg,numshg,numtrig,numother
1804 WRITE(66,1200) tpsreel,tpsthtot
1809 .
CALL printtet4(iparg,theogp,numsol4g,ipm,ixs)
1821 WRITE (iout,1300) filnam(1:filen)
1822 WRITE (istdo,1300) filnam(1:filen)
1826 & 4x,
'SPMD PROCESSOR NUMBER . . . . . . . . . . . . . .',i10/
1827 & 4x,
'TOTAL NUMBER OF CYCLES. . . . . . . . . . . . . .',i10)
1830 & 4x,
'NUMBER OF SOLID ELEMENTS GROUPS . . . . . . . . .',i10/
1831 & 4x,
'NUMBER OF SHELL ELEMENTS GROUPS . . . . . . . . .',i10/
1832 & 4x,
'NUMBER OF TRIANGULAR ELEMENTS GROUPS. . . . . . .',i10/
1833 & 4x,
'NUMBER OF OTHER ELEMENT GROUPS. . . . . . . . . .',i10)
1836 & 4x,
'SOLID, SHELL, TRIANGULAR GROUP TIME'/,
1837 & 4x,
'-----------------------------------'/,
1838 & 4x,
'TOTAL GROUP TIME . . . . . . . . . . . . . . . .',1pg20
1839 & 4x,
'STARTER ESTIMATED GROUP TIME . . . . . . . . . .',1pg20
1841 1300
FORMAT (4x,
' DD ANALYSIS FILE:',1x,a,
' WRITTEN')
2614 2 IXC,IXQ,IXT,IXP,IXTG,
2615 3 IXR,IXS,KXIG3D,IPM,
2616 4 IGEO,GEO,POIN_UMP,CPUTIME_MP,
2617 5 NBR_GPMP,CPUTIME_MP_GLOB,TAB_UMP,PM,
2618 6 BUFMAT,TABMP_L,TAB_MAT )
2622 use element_mod ,
only : nixs,nixq,nixc,nixtg,nixq,nixp,nixr,nixt
2626#include "implicit_f.inc"
2630 COMMON /timerg/timerg(2,500000),cputimeg(500000)
2631 REAL TIMERG,CPUTIMEG
2633#include
"com01_c.inc"
2634#include
"com04_c.inc"
2635#include
"task_c.inc"
2636#include "param_c.inc"
2637#include "scr19_c.inc"
2641 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IXS(NIXS,*),
2642 . IXQ(NIXQ,*),IXT(NIXT,*), IXP(NIXP,*),
2643 . IXR(NIXR,*),KXIG3D(*),IXTG(NIXTG,*),
2644 . IPM(NPROPMI,*),IGEO(NPROPGI,*),
2645 . TAILLE,NBR_GPMP,TABMP_L
2647 my_real pm(npropm,*),geo(npropg,*),bufmat(*),tab_mat
2651 INTEGER,
DIMENSION(NUMMAT) :: POIN_UMP
2652 INTEGER,
DIMENSION(7,TAILLE) :: TAB_UMP
2653 my_real,
DIMENSION(TAILLE) :: cputime_mp
2654 my_real,
DIMENSION(NBR_GPMP,NSPMD+1):: cputime_mp_glob
2660 INTEGER NG,ITY,MID,MUID,NFT,I,J,K,
2662 . ISOL,ISOL2,TEST,INDI3
2663 my_real,
DIMENSION(NSPMD+1,TAILLE) :: CPUTIME_MP2
2664 INTEGER,
DIMENSION(TAILLE) :: ELEM_MP
2665 my_real,
DIMENSION(TAILLE) :: POIDS_REF
2671 . nel,proc,ngf, ngl,
2673 . irsize, msgtag3 ,nes,neq,nec,netg,net,nep,ner,neur,
2674 . mpt,npts,nptt,nptot,isolnod,jsrot
2676 CHARACTER FILNAM*100, PROCNAM*4
2678 . TS, TQ, TC, TTG, TT, TP, TR, TUR, DTU,MINS,,MINQ,
2679 . MAXQ,MINC,MAXC,MINTG,MAXTG,MINP,MAXP,MINT,MAXT,MINR,
2680 . MAXR,MINUR,MAXUR, CPUG, CPUELEM, T(8,2),CC
2682 INTEGER MTN, NELEM, NPT, NSG,
2683 . ihbe,nfunc,filen,numsol4g,numsol10g,jhbe
2686 . theogp(ngroup),tabx(3),tabmat(3),nptr,timmat,telt,tpsthtot,
2687 . tpsreel,batozmult,tppond
2690 my_real,
DIMENSION(NUMMAT,NUMGEO) ::
2691 . soltelt8_old,soltelt16_old,soltelt20_old,tetra4_old,
2692 . tetra10_old,shtnl_old,tritnl_old
2771 DO WHILE((k<=taille).AND.(test==0))
2773 IF((tab_ump(1,k)==muid))
THEN
2775 IF(tab_ump(2,k)==puid)
THEN
2778 IF (tab_ump(7,k)==ity)
THEN
2779 cputime_mp(k) = cputime_mp(k) + cputimeg(ng)
2780 elem_mp(k) = elem_mp(k) + iparg(2,ng)
2785 poids_ref(k)=tab_mat(ng)
2789 poids_ref(k)=tab_mat(ng)
2798 IF((isol==4).OR.(isol==6).OR.
2799 . (isol==8).OR.(isol==10).OR.
2800 . (isol==16).OR.(isol==20))
THEN
2805 IF(tab_ump(7,k)==isol)
THEN
2806 cputime_mp(k) = cputime_mp(k) + cputimeg(ng)
2807 elem_mp(k) = elem_mp(k) + iparg(2,ng)
2812 ELSEIF(isol==1010)
THEN
2814 ELSEIF(isol==1016)
THEN
2816 ELSEIF(isol==1020)
THEN
2818 ELSEIF(isol==1006)
THEN
2820 ELSEIF(isol==1004)
THEN
2827 poids_ref(k)= tab_mat(ng)
2848 cputime_mp2(i,j) = zero
2860 t1 = t1 + cputime_mp2(j,i)
2861 cputime_mp2(nspmd+1,i) = cputime_mp2(nspmd+1,i) + cputime_mp2(j,i)/(ncycle)
2863 IF((cputime_mp2(nspmd+1,i)>= zero).AND.(tab_ump(5,i)>0))
THEN
2864 cputime_mp2(nspmd+1,i) = cputime_mp2(nspmd+1,i)/(tab_ump(5,i))
2866 cputime_mp2(nspmd+1,i) = zero
2872 cputime_mp2(1,i) = cputime_mp(i)
2873 cputime_mp2(2,i) = cputime_mp(i)/ncycle
2874 IF((cputime_mp2(2,i)>= zero).AND.(tab_ump(5,i)>0))
THEN
2875 cputime_mp2(2,i) = cputime_mp2(2,i)/(tab_ump(5,i))
2877 cputime_mp2(2,i) = zero
2883 IF((cputime_mp(i)>zero).AND.(elem_mp(i)>0))
THEN
2884 cputime_mp(i) = cputime_mp(i)/(elem_mp(i)*ncycle)
2888 CALL printime_mp(taille,tab_ump,cputime_mp2,poin_ump,t1,elem_mp,
2889 . cputime_mp,poids_ref)