OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
timer.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| print_summary ../engine/source/system/timer.F
25!||--- called by ------------------------------------------------------
26!|| printime ../engine/source/system/timer.F
27!||--- calls -----------------------------------------------------
28!|| print_block ../engine/source/system/timer.F
29!||====================================================================
30 SUBROUTINE print_summary(FLAG,NTIMAX,TABTIME,TITLES,OUT_ID,ITHERM)
31C-----------------------------------------------
32C I m p l i c i t T y p e s
33C-----------------------------------------------
34#include "implicit_f.inc"
35C----------------------------------------------
36C C o m m o n B l o c k s
37C-----------------------------------------------
38#include "macro.inc"
39#include "com01_c.inc"
40#include "com04_c.inc"
41#include "impl1_c.inc"
42#include "remesh_c.inc"
43#include "sms_c.inc"
44#include "sphcom.inc"
45#include "task_c.inc"
46#include "timeri_c.inc"
47
48C-----------------------------------------------
49C D u m m y A r g u m e n t s
50C-----------------------------------------------
51 INTEGER, INTENT(IN) :: FLAG ! 1 : No MIN/MAX block
52 ! 2 : Min/Max block
53 INTEGER, INTENT(IN) :: ITHERM
54 INTEGER, INTENT(IN) :: OUT_ID ! file descriptor
55 INTEGER, INTENT(IN) :: NTIMAX ! max number of timer
56 CHARACTER(LEN=9), INTENT(INOUT) :: TITLES(NTIMAX) ! number of columns
57 REAL, INTENT(INOUT) :: TABTIME(NTIMAX,PARASIZ)
58C-----------------------------------------------
59C L o c a l V a r i a b l e s
60C-----------------------------------------------
61 INTEGER :: NF,NFIELDS,FIELDS(NTIMAX)
62 INTEGER I,J
63 REAL :: TOTAL
64 REAL :: ZEROS = 0.0
65
66 IF (impl_s==1) THEN
67 nfields = 4
68 fields(1) = 31 ; fields(2) = 32 ; fields(3) = 33 ; fields(4) = 34
69 CALL print_block("** IMPLICIT **",tabtime,ntimax,
70 . flag,out_id,nfields,fields,titles)
71 ENDIF
72C
73c IF(IMONM >= 1)THEN
74 nf = 1
75 IF(ninter > 0) THEN
76 fields(nf) = macro_timer_contsort
77 nf = nf + 1
78 fields(nf) = macro_timer_contfor
79 nf = nf + 1
80 ENDIF
81 fields(nf) = macro_timer_element
82 nf = nf + 1
83 fields(nf) = macro_timer_kin
84 nf = nf + 1
85 fields(nf) = macro_timer_integ
86 nf = nf + 1
87 fields(nf) = macro_timer_io
88 nf = nf + 1
89 fields(nf) = macro_timer_p0
90 nf = nf + 1
91 fields(nf) = macro_timer_asm
92 IF(.NOT.( (idtmins==0).AND.(idtmins_int==0))) THEN
93 nf = nf + 1
94 fields(nf) = macro_timer_ams
95 ENDIF
96 nf = nf + 1
97 fields(nf) = macro_timer_resol
98 nfields = nf
99 CALL print_block("** SUMMARY **",tabtime,ntimax,
100 . flag,out_id,nfields,fields,titles)
101
102
103 IF(nadmesh/=0)THEN
104 nfields = 3
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)
108
109 END IF !adaptive mesh
110
111 IF (nspmd > 1) THEN
112 DO i = 1, nspmd
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)
118 ELSE
119 tabtime(macro_timer_tmp2,i) = 0.0d0
120 ENDIF
121 ENDDO
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) = '%'
128 NFIELDS = 6
129 CALL PRINT_BLOCK("** SPMD COM. TIME **",TABTIME,NTIMAX,
130 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
131 ENDIF ! SPMD
132C
133 IF (IMONM>=1) THEN
134.OR. IF(IDTMINS/=0IDTMINS_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'
147 NFIELDS = 12
148 CALL PRINT_BLOCK("** AMS TIME **",TABTIME,NTIMAX,
149 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
150
151 END IF
152C
153 IF(IMPL_S == 1) THEN
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'
158 NFIELDS = 4
159 CALL PRINT_BLOCK("** IMPLICIT PCG **",TABTIME,NTIMAX,
160 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
161 END IF
162C
163 DO I = 1, NSPMD
164 TABTIME(MACRO_TIMER_TMP1,I) = MAX(0.0,TABTIME(8,I)-TABTIME(20,I)
165 . -TABTIME(29,I)
166 . -TABTIME(76,I),
167 . +TABTIME(77,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))
171
172 ENDDO
173
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'
185 nfields = 8
186 IF(ninter25 > 0) THEN
187 fields(9) = 106 ; titles(fields(9)) = 'NORML'
188 nfields = nfields + 1
189 ENDIF
190
191 IF(ninterfric > 0) THEN
192 nfields = nfields + 1
193 fields(nfields) = macro_timer_fric ; titles(fields(nfields)) = 'FRIC'
194 ENDIF
195
196 CALL print_block("** INTERFACE TIME **",tabtime,ntimax,
197 . flag,out_id,nfields,fields,titles)
198
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'
210 nfields = 11
211 CALL print_block(" ",tabtime,ntimax,
212 . flag,out_id,nfields,fields,titles)
213 ENDIF
214
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'
222
223 nfields = 7
224 CALL print_block("** KIN COND & TASK0 TIME **",tabtime,ntimax,
225 . flag,out_id,nfields,fields,titles)
226
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'
231 fields(5 )=44
232 fields(6 )=41
233 fields(7 )=53 ; titles(fields(7 )) = 'DT2'
234 fields(8 )=49 ; titles(fields(8 )) = 'aux'
235 FIELDS(9 )=51 ; TITLES(FIELDS(9 )) = 'forints'
236 NFIELDS = 9
237 IF(TABTIME(54,1) > 0 ) THEN
238 NFIELDS = NFIELDS + 1
239 FIELDS(10)=54 ; TITLES(FIELDS(10)) = 'r2r'
240 ENDIF
241 IF(TABTIME(55,1) > 0 ) THEN
242 NFIELDS = NFIELDS + 1
243 FIELDS(11)=55 ; TITLES(FIELDS(11)) = 'r2m'
244 ENDIF
245 CALL PRINT_BLOCK(" ",TABTIME,NTIMAX,
246 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
247
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
254 NFIELDS = 5
255 CALL PRINT_BLOCK("** ALE TIME **",TABTIME,NTIMAX,
256 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
257
258 ENDIF
259
260 IF(.FALSE.) THEN
261 NFIELDS = 0
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'
266 ENDIF
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'
271 ENDIF
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'
276 ENDIF
277 IF(NFIELDS > 0) CALL PRINT_BLOCK("** AIRBAGS **",TABTIME,NTIMAX,
278 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
279 ENDIF
280
281
282C /INTER/TYPE25 25
283 NFIELDS = 0
284 J = MACRO_TIMER_T25SLIDING
285 IF(TABTIME(J,1) > 0) THEN
286 NFIELDS = NFIELDS + 1
287 FIELDS(NFIELDS) = J
288 TITLES(J) = 'sliding'
289 ENDIF
290 J = MACRO_TIMER_T25NORM
291 IF(TABTIME(J,1) > 0) THEN
292 NFIELDS = NFIELDS + 1
293 FIELDS(NFIELDS) = J
294 TITLES(J) = 'norm'
295 ENDIF
296 J = MACRO_TIMER_T25STFE
297 IF(TABTIME(J,1) > 0) THEN
298 NFIELDS = NFIELDS + 1
299 FIELDS(NFIELDS) = J
300 TITLES(J) = 'getstif'
301 ENDIF
302 J = MACRO_TIMER_T25VOX0
303 IF(TABTIME(J,1) > 0) THEN
304 NFIELDS = NFIELDS + 1
305 FIELDS(NFIELDS) = J
306 TITLES(J) = 'vox0'
307 ENDIF
308 J = MACRO_TIMER_T25VOX0E2E
309 IF(TABTIME(J,1) > 0) THEN
310 NFIELDS = NFIELDS + 1
311 FIELDS(NFIELDS) = J
312 TITLES(J) = 'vox0e2e'
313 ENDIF
314 J = MACRO_TIMER_T25RNUM
315 IF(TABTIME(J,1) > 0) THEN
316 NFIELDS = NFIELDS + 1
317 FIELDS(NFIELDS) = J
318 TITLES(J) = 'rnum'
319 ENDIF
320 J = MACRO_TIMER_T25RNUME
321 IF(TABTIME(J,1) > 0) THEN
322 NFIELDS = NFIELDS + 1
323 FIELDS(NFIELDS) = J
324 TITLES(J) = 'rnume2e'
325 ENDIF
326 J = MACRO_TIMER_T25BUC
327 IF(TABTIME(J,1) > 0) THEN
328 NFIELDS = NFIELDS + 1
329 FIELDS(NFIELDS) = J
330 TITLES(J) = 'buc'
331 ENDIF
332 J = MACRO_TIMER_T25BUCE2E
333 IF(TABTIME(J,1) > 0) THEN
334 NFIELDS = NFIELDS + 1
335 FIELDS(NFIELDS) = J
336 TITLES(J) = 'buce2e'
337 ENDIF
338 J = MACRO_TIMER_T25TRCE
339 IF(TABTIME(J,1) > 0) THEN
340 NFIELDS = NFIELDS + 1
341 FIELDS(NFIELDS) = J
342 TITLES(J) = 'trce2e'
343 ENDIF
344
345 IF(NFIELDS > 0) CALL PRINT_BLOCK("**/INTER/TYPE25 **",TABTIME,NTIMAX,
346 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
347
348
349 NFIELDS = 0
350 IF (NUMSPH > 0)THEN
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'
360 NFIELDS = 9
361 CALL PRINT_BLOCK("** SPH TIME **",TABTIME,NTIMAX,
362 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
363 ENDIF
364 IF(TABTIME(MACRO_TIMER_GENH3D,1) > 0 ) THEN
365
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'
370c FIELDS(5 )=MACRO_TIMER_GENH3D2; TITLES(FIELDS(5 ))= 'WRITE'
371
372 NFIELDS = 4
373
374 CALL PRINT_BLOCK("** H3D ANIMATIONS **",TABTIME,NTIMAX,
375 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
376 ENDIF
377C
378
379
380 IF (IMONM == 2) THEN
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'
387 NFIELDS = 6
388
389 CALL PRINT_BLOCK("** FORCED SYNCH",TABTIME,NTIMAX,
390 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
391
392 ENDIF
393 ENDIF !IMONM > 0
394
395
396 END SUBROUTINE
397
398
399!||====================================================================
400!|| print_block ../engine/source/system/timer.F
401!||--- called by ------------------------------------------------------
402!|| print_summary ../engine/source/system/timer.F
403!||====================================================================
404 SUBROUTINE PRINT_BLOCK(TITLE_PART,TABTIME,NTIMAX,
405 . FLAG,OUT_ID,NFIELDS,FIELDS,TITLES)
406C-----------------------------------------------
407C I m p l i c i t T y p e s
408C-----------------------------------------------
409#include "implicit_f.inc"
410C----------------------------------------------
411C C o m m o n B l o c k s
412C-----------------------------------------------
413#include "com01_c.inc"
414#include "task_c.inc"
415C-----------------------------------------------
416C D u m m y A r g u m e n t s
417C-----------------------------------------------
418 INTEGER, INTENT(IN) :: NTIMAX
419 CHARACTER(LEN=*), INTENT(IN) :: TITLE_PART
420 REAL, INTENT(INOUT) :: TABTIME(NTIMAX,PARASIZ)
421 INTEGER, INTENT(IN) :: FLAG ! 1 : No Min/Max
422 ! 2 : Min/Max
423 INTEGER, INTENT(IN) :: OUT_ID ! file descriptor
424 INTEGER, INTENT(IN) :: NFIELDS ! number of columns (must be <= 15 )
425 INTEGER, INTENT(IN) :: FIELDS(NFIELDS) ! number of columns
426
427 CHARACTER(LEN=9), INTENT(IN) :: TITLES(NTIMAX) ! number of columns
428C-----------------------------------------------
429C L o c a l V a r i a b l e s
430C-----------------------------------------------
431 CHARACTER(LEN=22) :: FORMAT1="(1x,A4,1x,15(1x,E9.4))"
432 CHARACTER(LEN=22) :: FORMAT2="(1x,A5,1x,15(1x,A9))"
433 CHARACTER(LEN=22) :: FORMAT3="(17x,A20)"
434 CHARACTER(LEN=22) :: FORMAT4="(I4,2x,15(1x,E9.4))"
435 CHARACTER(LEN=22) :: FORMAT5="(A4,2x,15(1x,E9.4))"
436
437 DOUBLE PRECISION :: DMIN(NFIELDS)
438 DOUBLE PRECISION :: DMAX(NFIELDS)
439 DOUBLE PRECISION :: AVG(NFIELDS)
440
441 CHARACTER(LEN=9) :: TITLES_LOC(NFIELDS) ! number of columns
442 DOUBLE PRECISION :: ARRAY(15)
443 INTEGER I,J
444
445 DO J = 1,NFIELDS
446 TITLES_LOC(j) = TITLES(FIELDS(J))
447 ENDDO
448
449 WRITE(OUT_ID,*)' '
450 WRITE(OUT_ID,FORMAT3) TITLE_PART
451 WRITE(OUT_ID,*)' '
452 WRITE(OUT_ID,FORMAT2) "#PROC",TITLES_LOC(1:NFIELDS)
453 DO I = 1,NSPMD
454 DO J = 1,NFIELDS
455 ARRAY(J) = TABTIME(FIELDS(J),I)
456 ENDDO
457 WRITE(OUT_ID,FORMAT4) I,ARRAY(1:NFIELDS)
458 ENDDO
459
460.AND. IF(FLAG==2 NSPMD > 2) THEN
461 DO I = 1, NFIELDS
462 AVG(I)=ZERO
463 DMAX(I)=TABTIME(FIELDS(I),1)
464 DMIN(I)=TABTIME(FIELDS(I),1)
465 END DO
466 DO I = 1, NSPMD
467 DO J = 1, NFIELDS
468 AVG(J)=AVG(J)+TABTIME(FIELDS(J),I)
469 DMIN(J)=MIN(DMIN(J) ,DBLE(TABTIME(FIELDS(J),I)))
470 DMAX(J)=MAX(DMAX(J) ,DBLE(TABTIME(FIELDS(J),I)))
471 END DO
472 END DO
473 DO I=1,NFIELDS
474 AVG(I)=AVG(I)/NSPMD
475 END DO
476
477 WRITE(OUT_ID,*)' '
478 WRITE(OUT_ID,FORMAT2) " ",TITLES_LOC(1:NFIELDS)
479 WRITE(OUT_ID,FORMAT5) "MIN",DMIN(1:NFIELDS)
480 WRITE(OUT_ID,FORMAT5) "MAX",DMAX(1:NFIELDS)
481 WRITE(OUT_ID,FORMAT5) "AVG",AVG(1:NFIELDS)
482 ENDIF
483 END SUBROUTINE
484
485
486!||====================================================================
487!|| printime ../engine/source/system/timer.F
488!||--- called by ------------------------------------------------------
489!|| resol ../engine/source/engine/resol.F
490!||--- calls -----------------------------------------------------
491!|| close_c ../common_source/tools/input_output/write_routtines.c
492!|| cur_fil_c ../common_source/tools/input_output/write_routtines.c
493!|| elapstime ../engine/source/system/timer.F
494!|| fseek_end_c ../common_source/tools/input_output/write_routtines.c
495!|| get_mem_map_var ../engine/source/system/timer.F
496!|| map_memory ../common_source/comm/memory_use_c.c
497!|| open_c ../common_source/tools/input_output/write_routtines.c
498!|| print_summary ../engine/source/system/timer.F
499!|| rad_spmd_recv ../engine/source/mpi/generic/rad_spmd_recv.F
500!|| rad_spmd_send ../engine/source/mpi/generic/rad_spmd_send.F
501!|| spmd_glob_isum9 ../engine/source/mpi/interfaces/spmd_th.F
502!|| write_dpdb ../common_source/tools/input_output/write_db.F
503!||--- uses -----------------------------------------------------
504!|| inoutfile_mod ../common_source/modules/inoutfile_mod.F
505!|| output_mod ../common_source/modules/output/output_mod.F90
506!|| time_mod ../engine/share/modules/time_mod.F
507!|| timer_mod ../engine/source/system/timer_mod.F90
508!||====================================================================
509 SUBROUTINE PRINTIME(T,ITHERM,OUTPUT)
510C routine d'affichage des timers
511C-----------------------------------------------
512C M o d u l e s
513C-----------------------------------------------
514 USE TIMER_MOD
515 USE TIME_MOD
516 USE INOUTFILE_MOD
517 USE OUTPUT_MOD
518C-----------------------------------------------
519C I m p l i c i t T y p e s
520C-----------------------------------------------
521#include "implicit_f.inc"
522C-----------------------------------------------
523C C o m m o n B l o c k s
524C-----------------------------------------------
525#include "com01_c.inc"
526#include "com04_c.inc"
527#include "scr05_c.inc"
528#include "sms_c.inc"
529#include "task_c.inc"
530#include "timerc_c.inc"
531#include "timeri_c.inc"
532!#include "timerr_c.inc"
533#include "units_c.inc"
534#include "filescount_c.inc"
535 COMMON /ICLOCK/CLOCK0
536 INTEGER CLOCK0
537 COMMON /RCLOCK/ELAPSED
538 DOUBLE PRECISION ELAPSED
539C-----------------------------------------------
540C D u m m y A r g u m e n t s
541C-----------------------------------------------
542 TYPE(TIMER_), INTENT(INOUT) :: T
543 INTEGER ,INTENT(IN) :: ITHERM
544 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT
545C-----------------------------------------------
546C L o c a l V a r i a b l e s
547C-----------------------------------------------
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),
556 . GOT_MEM_MAP
557 CHARACTER(LEN=9) TITLES(MAX_NB_TIMER)
558 INTEGER FIELDS(11),NFIELDS
559 REAL ZEROS
560 INTEGER :: NF,IJK,IJKL,LEN_RST_NAME
561 CHARACTER*8 DATE
562 CHARACTER*10 TIME
563 LOGICAL :: BOOL_FILE
564 INTEGER :: CURRENT_RUN,OFFSET
565 INTEGER, DIMENSION(2148) :: RST_NAME
566 INTEGER :: LEN_TMP_NAME
567 CHARACTER(len=4096) :: TMP_NAME
568 INTEGER :: INDICE
569 INTEGER, PARAMETER :: INTSIZE = 4
570 REAL, DIMENSION(:,:), ALLOCATABLE :: CPUTIME
571 REAL, DIMENSION(:,:), ALLOCATABLE :: SYSTIME
572 REAL, DIMENSION(:,:), ALLOCATABLE :: REALTIME
573
574
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"
585
586
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"
592
593
594 TITLES(31) = '[k]setup'
595 TITLES(32) = '[m]setup'
596 TITLES(33) = 'imp_solv'
597 TITLES(34) = 'imp_tot'
598 TITLES(36) = 'criter'
599 TITLES(37) = 'for'
600 TITLES(38) = 'vel'
601C
602 ZEROS=ZERO
603 IF (ICRAY==1) THEN
604 IRSIZE = 8
605 ELSE
606 IRSIZE = 4
607 ENDIF
608C
609 VMPEAK=-1
610 VMSIZE=-1
611 VMRSS=-1
612 VMHWM=-1
613 VMSTK=-1
614 CALL MAP_MEMORY(VMPEAK, VMSIZE,VMRSS,VMHWM, VMSTK)
615 NPROC = NSPMD
616C nproc = nombre de domaines, toutes les taches SMP comptent pour un seul proc
617CC NPROC = MAX(NTHREAD,NSPMD)
618CC smp nproc = ntask, spmd nproc = NSPMD
619
620 ALLOCATE(CPUTIME(MAX_NB_TIMER,NSPMD))
621 ALLOCATE(SYSTIME(MAX_NB_TIMER,NSPMD))
622 ALLOCATE(REALTIME(MAX_NB_TIMER,NSPMD))
623
624 DO I = 1, MAX_NB_TIMER
625 ! copy local timers
626 CPUTIME(I,1) = T%CPUTIME(I)
627 SYSTIME(I,1) = T%SYSTIME(I)
628 REALTIME(I,1) = T%REALTIME(I)
629 ENDDO
630
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
636 MEMSTAT(5,ISPMD+1) = VMSTK
637
638
639
640 IF (NSPMD > 1) THEN
641C gather des cpu et sys time pour spmd
642 MSGTAG = 1000
643 IF (ISPMD/=0) THEN
644 CALL RAD_SPMD_SEND(T%CPUTIME,MAX_NB_TIMER*IRSIZE,0,IT_SPMD,
645 . MSGTAG+ISPMD+1,INTSIZE)
646 CALL RAD_SPMD_SEND(T%SYSTIME,MAX_NB_TIMER*IRSIZE,0,IT_SPMD,
647 . MSGTAG+ISPMD+1,INTSIZE)
648 CALL RAD_SPMD_SEND(T%REALTIME,MAX_NB_TIMER*IRSIZE,0,IT_SPMD,
649 . MSGTAG+ISPMD+1,INTSIZE)
650 ELSE
651 DO I = 2, NSPMD
652 CALL RAD_SPMD_RECV(CPUTIME(1,I),MAX_NB_TIMER*IRSIZE,I-1,IT_SPMD,
653 . MSGTAG+I,INTSIZE)
654 CALL RAD_SPMD_RECV(SYSTIME(1,I),MAX_NB_TIMER*IRSIZE,I-1,IT_SPMD,
655 . MSGTAG+I,INTSIZE)
656 CALL RAD_SPMD_RECV(REALTIME(1,I),MAX_NB_TIMER*IRSIZE,I-1,IT_SPMD,
657 . MSGTAG+I,INTSIZE)
658 ENDDO
659 ENDIF
660
661C Gather de la m moire utilis e
662 MSGTAG = 1100
663 MEMUSE=0
664 MEM_L=0
665
666c MEMUSE(ISPMD+1)=VMPEAK
667c MEMSTAT(1,ISPMD+1) = VMPEAK
668c MEMSTAT(2,ISPMD+1) = VMSIZE
669c MEMSTAT(3,ISPMD+1) = VMRSS
670c MEMSTAT(4,ISPMD+1) = VMHWM
671c MEMSTAT(5,ISPMD+1) = VMSTK
672
673 IF (ISPMD/=0) THEN
674 CALL RAD_SPMD_SEND( MEMUSE(ISPMD+1),1*IRSIZE,0,IT_SPMD,
675 . MSGTAG+ISPMD+1,INTSIZE)
676 CALL RAD_SPMD_SEND( VMSIZE,1*IRSIZE,0,IT_SPMD,
677 . MSGTAG+ISPMD+1,INTSIZE)
678 CALL RAD_SPMD_SEND( VMRSS,1*IRSIZE,0,IT_SPMD,
679 . MSGTAG+ISPMD+1,INTSIZE)
680 CALL RAD_SPMD_SEND( VMHWM,1*IRSIZE,0,IT_SPMD,
681 . MSGTAG+ISPMD+1,INTSIZE)
682 CALL RAD_SPMD_SEND( VMSTK,1*IRSIZE,0,IT_SPMD,
683 . MSGTAG+ISPMD+1,INTSIZE)
684 ELSE
685 DO I = 2, NSPMD
686 CALL RAD_SPMD_RECV(MEMUSE(I),1*IRSIZE,I-1,IT_SPMD,
687 . MSGTAG+I,INTSIZE)
688 MEMSTAT(1,I) = MEMUSE(I)
689 CALL RAD_SPMD_RECV(MEMSTAT(2,I),1*IRSIZE,I-1,IT_SPMD,
690 . MSGTAG+I,INTSIZE)
691 CALL RAD_SPMD_RECV(MEMSTAT(3,I),1*IRSIZE,I-1,IT_SPMD,
692 . MSGTAG+I,INTSIZE)
693 CALL RAD_SPMD_RECV(MEMSTAT(4,I),1*IRSIZE,I-1,IT_SPMD,
694 . MSGTAG+I,INTSIZE)
695 CALL RAD_SPMD_RECV(MEMSTAT(5,I),1*IRSIZE,I-1,IT_SPMD,
696 . MSGTAG+I,INTSIZE)
697
698 ENDDO
699
700 INDICE = 1
701 IF(MEMSTAT(4,1)/=-1) THEN
702 INDICE = 4
703 ELSEIF(MEMSTAT(1,1)/=-1) THEN
704 INDICE = 1
705 ELSEIF(MEMSTAT(2,1)/=-1) THEN
706 INDICE = 2
707 ELSEIF(MEMSTAT(3,1)/=-1) THEN
708 INDICE = 3
709 ENDIF
710 MMIN = MEMSTAT(INDICE,1)
711 MMAX = MEMSTAT(INDICE,1)
712 MTOT = MEMSTAT(INDICE,1)
713 DO I=2,NSPMD
714 IF (MMIN > MEMSTAT(INDICE,I) ) THEN
715 MMIN = MEMSTAT(INDICE,I)
716 ENDIF
717 IF (MMAX < MEMSTAT(INDICE,I) ) THEN
718 MMAX = MEMUSE(I)
719 ENDIF
720 MTOT = MTOT+ MEMSTAT(INDICE,I)
721 ENDDO
722 MAVR=MTOT/NSPMD
723 ENDIF
724 ELSE
725C Monoproc run
726C Gestion de la m moire utilisee
727 IF(VMHWM/=-1) THEN
728 MEM_L = VMHWM
729 ELSEIF(VMPEAK/=-1) THEN
730 MEM_L = VMPEAK
731 ELSEIF(VMSIZE/=-1) THEN
732 MEM_L = VMSIZE
733 ELSE
734 MEM_L = -1
735 ENDIF
736 MMIN = MEM_L
737 MMAX = MEM_L
738 MTOT = MEM_L
739 MAVR = MEM_L
740 ENDIF
741C
742C Gather de la taille des fichiers restart
743 IF(NSPMD > 1)CALL SPMD_GLOB_ISUM9(RESTARTFILESIZE,1)
744C Gather taille des fichiers multiple restart
745 IF(NSPMD > 1)CALL SPMD_GLOB_ISUM9(MULTIRESTS,26)
746C
747
748
749C
750 IF (ISPMD/=0) RETURN
751
752 WRITE(ISTDO,*)' '
753 WRITE(ISTDO,*)' ** cpu user time **'
754 WRITE(ISTDO,*)' '
755
756 CALL PRINT_SUMMARY(1,MAX_NB_TIMER,CPUTIME,TITLES,ISTDO,ITHERM)
757
758 WRITE(IOUT,*)' '
759 WRITE(IOUT,*)' ** cpu user time **'
760 WRITE(IOUT,*)' '
761
762
763 CALL PRINT_SUMMARY(1,MAX_NB_TIMER,CPUTIME,TITLES,IOUT,ITHERM)
764
765
766
767
768C
769C
770 IF(IMON_MAT==1)THEN
771 CUMUL_MAT=ZERO
772 CUMUL_ELEM=ZERO
773 CUMUL_FAIL=ZERO
774 DO I = 1, NPROC
775 CUMUL_MAT = CUMUL_MAT +CPUTIME(35,I)
776 CUMUL_ELEM= CUMUL_ELEM+CPUTIME(3,I)
777 CUMUL_FAIL= CUMUL_FAIL+CPUTIME(121,I)
778 ENDDO
779
780 WRITE(IOUT,*)' '
781 WRITE(IOUT,*)' ** material laws cost **'
782 WRITE(IOUT,*)' '
783 WRITE(ISTDO,*)' '
784 WRITE(ISTDO,*)' ** material laws cost **'
785 WRITE(ISTDO,*)' '
786 WRITE(IOUT, '(a)')' #PROC ELEM COST MAT COST FAIL COST'
787 WRITE(istdo,'(A)')' #PROC ELEM COST MAT COST FAIL COST'
788 DO i = 1, nproc
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)
791 ENDDO
792 WRITE(iout,*)' '
793 WRITE(istdo,*)' '
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
797
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
801 WRITE(IOUT,*)' '
802 WRITE(ISTDO,*)' '
803 ENDIF
804C
805 WRITE(IOUT,*)' '
806C---------------------------
807C Global timings
808C---------------------------
809 DO I = 1, MAX_NB_TIMER
810 CUMUL(I) = ZERO
811 END DO
812 DO I = 1,NPROC
813 DO J = 1, MAX_NB_TIMER
814 CUMUL(J) = CUMUL(J) + CPUTIME(J,I)
815 ENDDO
816 ENDDO
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)
820 ELSE
821 TOTAL = CUMUL(1)-CUMUL(2)-CUMUL(8)-CUMUL(3)-CUMUL(4)-CUMUL(5)
822 - -CUMUL(9)-CUMUL(39)-CUMUL(MACRO_TIMER_ALEMAIN)
823 END IF
824 IF(CUMUL(1)<=ZERO)CUMUL(1)=EM10
825
826
827 WRITE(ISTDO,*) ''
828
829 WRITE(ISTDO,*)
830 . ' ** cumulative cpu time summary **'
831 WRITE(ISTDO,*)' '
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),' % '
836 IF(NINTER25/=0)
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.OR. IF(IDTMINS/=0IDTMINS_INT/=0)THEN
848 WRITE(ISTDO,'(a,e9.4,3x,f6.2,a)')' ams.........................: ',
849 + CUMUL(39),100*CUMUL(39)/CUMUL(1),' % '
850 END IF
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),' % '
855 ENDIF
856
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),' % '
861c IF(NUMSPH /=0) THEN
862c WRITE(ISTDO,'(A,E9.4,3x,F6.2,A)')' SPH TOTAL...................: ',
863c + CUMUL(48),
864c + 100*CUMUL(48)/CUMUL(1),' % '
865c ENDIF
866
867
868
869 WRITE(istdo,*)' '
870
871 WRITE(iout,*) ''
872 WRITE(iout,*)
873 . ' ** CUMULATIVE CPU TIME SUMMARY **'
874 WRITE(iout,*)' '
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),' % '
879 IF(NINTER25/=0)
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.OR. IF(IDTMINS/=0IDTMINS_INT/=0)THEN
891 WRITE(IOUT,'(a,e9.4,3x,f6.2,a)')' ams.........................: ',
892 + CUMUL(39),100*CUMUL(39)/CUMUL(1),' % '
893 END IF
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),' % '
898 ENDIF
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),' % '
903 WRITE(IOUT,*)' '
904
905
906C
907
908 WRITE(IOUT,*)' '
909 WRITE(IOUT,*)' ** elapsed time **'
910 WRITE(IOUT,*)' '
911
912 CALL PRINT_SUMMARY(2,MAX_NB_TIMER,REALTIME,TITLES,IOUT,ITHERM)
913
914 IF(.FALSE.)THEN
915 WRITE(IOUT,*)' '
916 WRITE(IOUT,*)' ** additional debug timers(2) **'
917 WRITE(IOUT,*)' '
918 DO I = 1, NPROC
919 WRITE(IOUT,5550)I,
920 . REALTIME(96,I),REALTIME(97,I),REALTIME(98,I),REALTIME(99,I),
921 . REALTIME(100,I),REALTIME(101,I),REALTIME(102,I)
922 ENDDO
923 END IF
924C
925 WRITE(IOUT,*)' '
926
927 WRITE(ISTDO,*)
928 . ' ** memory usage statistics **'
929 WRITE(ISTDO,*)' '
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'
938 WRITE(ISTDO,*)' '
939
940 IF (IMONM > 0)THEN
941 WRITE(ISTDO,'(a)') ' #PROC MEMORY USED'
942 DO i = 1, nproc
943 WRITE(istdo,'(I4,A,I8,A)') i,' ',memuse(i),' MB'
944 ENDDO
945 WRITE(istdo,*)' '
946 ENDIF
947
948
949C Output file
950 WRITE(iout,*)
951 . ' ** MEMORY USAGE STATISTICS **'
952 WRITE(iout,*)' '
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'
961 WRITE(iout,*)' '
962
963c IF (IMONM > 0)THEN
964c WRITE(IOUT,'(A)') ' #PROC MEMORY USE'
965c DO I = 1, NPROC
966c WRITE(IOUT,'(I4,A,I8,A)') I,' ',MEMUSE(I),' MB'
967c ENDDO
968c WRITE(IOUT,*)' '
969c ENDIF
970
971C workaround / one variable in commandline.inc conflicts with scr07.inc
972 CALL get_mem_map_var(got_mem_map)
973 IF(got_mem_map==1 .OR. imonm > 0)THEN
974 WRITE(iout,'(A)') ' ** PROCESS MEMORY MAPPING'
975 WRITE(iout,*)' '
976 WRITE(iout,'(A)') ' #PROC VMPEAK VMSIZE VMRSS VMHWM VMSTK'
977 DO i = 1, nproc
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)
981 ENDDO
982 WRITE(istdo,*)' '
983
984 ENDIF
985
986C Engine Disk usage Statistics
987! ANIMTOTALSIZE : kb
988! THFILESIZE : kb
989! OUTPFILESIZE : kb
990! H3DTOTALSIZE : mb --> kb
991 h3dtotalsize = h3dtotalsize*1024
992 outsize=animtotalsize+thfilesize+outpfilesize+h3dtotalsize
993 DO i=1,9
994 outsize = outsize+multithfilesize(i)
995 ENDDO
996 rfilesize=restartfilesize
997 DO i=1,26
998 rfilesize = rfilesize+multirests(i)
999 ENDDO
1000 totalfilecount = (outsize)+rfilesize+mumpsfilesize+
1001 * bcsfilesize
1002 totalfilecount = totalfilecount/1024
1003 outsize = outsize / 1024
1004 rfilesize = rfilesize / 1024
1005 mumpsfilesize = mumpsfilesize / 1024
1006 bcsfilesize = bcsfilesize / 1024
1007 WRITE(istdo,*)
1008 . ' ** DISK USAGE STATISTICS **'
1009 WRITE(istdo,*)' '
1010 WRITE(istdo,'(A,A,I10,A)')' TOTAL DISK SPACE USED ',
1011 * '.....................: ',totalfilecount,
1012 * ' MB'
1013 WRITE(istdo,'(A,A,I10,A)')' ANIMATION/H3D/TH/OUTP SIZE ',
1014 * '................: ',outsize,
1015 * ' MB'
1016 WRITE(istdo,'(A,A,I10,A)')' RESTART FILE SIZE ',
1017 * '.........................: ',
1018 * RFILESIZE,' mb'
1019 IF (MUMPSFILESIZE > 0)THEN
1020 WRITE(ISTDO,'(a,a,i10,a)')' mumps internal file usage ',
1021 * '.................: ',
1022 * MUMPSFILESIZE,' mb'
1023 ENDIF
1024 IF (BCSFILESIZE > 0) THEN
1025 WRITE(ISTDO,'(a,a,i10,a)')' bcs internal file usage ',
1026 * '...................: ',
1027 * BCSFILESIZE,' mb'
1028 ENDIF
1029
1030
1031 WRITE(ISTDO,*)' '
1032
1033
1034 WRITE(IOUT,*)
1035 . ' ** disk usage statistics **'
1036 WRITE(IOUT,*)' '
1037 WRITE(IOUT,'(a,a,i10,a)')' total disk space used ',
1038 * '.....................: ',TOTALFILECOUNT,
1039 * ' mb'
1040 WRITE(IOUT,'(a,a,i10,a)')' animation/h3d/th/outp SIZE ',
1041 * '................: ',OUTSIZE,
1042 * ' mb'
1043 WRITE(IOUT,'(a,a,i10,a)')' restart file SIZE ',
1044 * '.........................: ',
1045 * RFILESIZE,' mb'
1046 IF (MUMPSFILESIZE > 0)THEN
1047 WRITE(IOUT,'(a,a,i10,a)')' mumps internal file usage ',
1048 * '.................: ',
1049 * MUMPSFILESIZE/1024,' mb'
1050 ENDIF
1051 IF (BCSFILESIZE > 0) THEN
1052 WRITE(IOUT,'(a,a,i10,a)')' bcs internal file usage ',
1053 * '...................: ',
1054 * BCSFILESIZE/1024,' mb'
1055 ENDIF
1056
1057 WRITE(IOUT,*)' '
1058
1059C---------------------------
1060C Elapsed time & Estimated Speedup
1061C---------------------------
1062 CALL ELAPSTIME(T,SECS)
1063 CALL DATE_AND_TIME(DATE,TIME)
1064 OUTPUT%CHECKSUM%DATE = DATE
1065 OUTPUT%CHECKSUM%TIME = TIME
1066! ---------------------------
1067 IF(ISPMD==0) THEN
1068 CURRENT_RUN = GLOBAL_COMP_TIME%RUN_NBR
1069 GLOBAL_COMP_TIME%ENGINE_TIME(CURRENT_RUN) = SECS
1070 LEN_RST_NAME = LEN_TRIM(GLOBAL_COMP_TIME%RST_NAME)
1071 LEN_TMP_NAME = OUTFILE_NAME_LEN + LEN_RST_NAME
1072 TMP_NAME=OUTFILE_NAME(1:OUTFILE_NAME_LEN)//GLOBAL_COMP_TIME%RST_NAME(1:LEN_RST_NAME)
1073
1074 DO I = 1, LEN_TMP_NAME
1075 RST_NAME(I) = ICHAR(TMP_NAME(I:I))
1076 END DO
1077 BOOL_FILE=.FALSE.
1078 INQUIRE(FILE=TMP_NAME(1:LEN_TMP_NAME), EXIST=BOOL_FILE)
1079! check if *_0000.rst exists
1080 IF(BOOL_FILE) THEN
1081 CALL CUR_FIL_C(20)
1082 CALL OPEN_C(RST_NAME,LEN_TMP_NAME,2)
1083! write the starter + engine elapsed time
1084 OFFSET= - STORAGE_SIZE(GLOBAL_COMP_TIME%ENGINE_TIME(CURRENT_RUN))/8
1085 CALL FSEEK_END_C(OFFSET)
1086 CALL WRITE_DPDB(GLOBAL_COMP_TIME%ENGINE_TIME(CURRENT_RUN),1)
1087 CALL CLOSE_C
1088 ENDIF
1089 ENDIF
1090! ---------------------------
1091
1092
1093C CALL SYSTEM_CLOCK(COUNT=CLOCK1, COUNT_RATE=CLOCKRATE,
1094C + COUNT_MAX=NBMAX )
1095C SECS = CLOCK1-CLOCK0 ! diff temps final - temps initial (qui peut ne pas etre 0 !)
1096C IF(SECS<ZERO) SECS = SECS + NBMAX ! cas depassement nb de periode maximum
1097C SECS = SECS/CLOCKRATE
1098
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)
1102
1103 WRITE(IOUT,*)
1104 . ' ** compute time information **'
1105 WRITE(IOUT,*)
1106 . ' ** current engine **'
1107 WRITE(IOUT,*)' '
1108
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)
1113 WRITE(IOUT,*)' '
1114
1115 WRITE(ISTDO,6000)SECS
1116 WRITE(ISTDO,6100)IH,IM,IS
1117.AND. IF(NPROC>1SECS>ZERO)WRITE(ISTDO,8000)CUMUL(1)/SECS
1118 WRITE(ISTDO,*)' '
1119 WRITE(IOUT,6000)SECS
1120 WRITE(IOUT,6100)IH,IM,IS
1121.AND. IF(NPROC>1SECS>ZERO)WRITE(IOUT,8000)CUMUL(1)/SECS
1122
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 2001 FORMAT(' #PROC ','CONT.SORT ','CONT. F ','ELEMENT ',
1128 . 'KIN.COND. ','INTEGR.',' I/O ','TASK0 ',
1129 . 'ASSEMB. ','AMS ','RESOL ')
1130 2050 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1131 . 1x,e9.4,1x,e9.4,1x,e9.4)
1132 2051 FORMAT(i4,3x,f6.2,a,1x,f6.2,a,1x,f6.2,a,1x,f6.2,a,1x,f6.2,a,
1133 . 1x,f6.2,a,1x,f6.2,a,1x,f6.2,a,1x,f6.2,a)
1134 2055 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1135 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1136 2057 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1137 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1138 2100 FORMAT(' #PROC ','CONT.SORT ','CONT. F ','element ',
1139 . 'kin.cond. ','integr.',' i/o ','task0 ',
1140 . 'assemb. ','resol ')
1141 2101 FORMAT(' #PROC ','CONT.SORT ','CONT. F ','ELEMENT ',
1142 . 'KIN.COND. ','INTEGR.',' I/O ','TASK0 ',
1143 . 'ASSEMB. ' ,'AMS ','RESOL ')
1144 2102 FORMAT(' ','CONT.SORT ','CONT. F ','ELEMENT ',
1145 . 'KIN.COND. ','INTEGR.',' I/O ','TASK0 ',
1146 . 'ASSEMB. ','RESOL ')
1147 2103 FORMAT(' ','CONT.SORT ','CONT. F ','ELEMENT ',
1148 . 'KIN.COND. ','INTEGR.',' I/O ','TASK0 ',
1149 . 'ASSEMB. ' ,'AMS ','RESOL ')
1150 2110 FORMAT(' #PROC ','[K]SETUP ','[M]SETUP ','IMPL.SOLV ',
1151 . 'IMPL.TOTAL')
1152 2120 FORMAT(' #PROC ',' COMM DOT',' COMM V ','COMM GPU>CPU ',
1153 . 'COMM CPU>GPU ')
1154 2121 FORMAT(' ',' COMM DOT',' COMM V ','COMM GPU>CPU ',
1155 . 'COMM CPU>GPU ')
1156 2125 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1157 2126 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1158 2150 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,
1159 . e9.4,1x,e9.4,1x,e9.4)
1160 2151 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,
1161 . e9.4,1x,e9.4,1x,e9.4)
1162 2155 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1163 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1164 2156 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1165 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1166 2157 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1167 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1168 2158 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1169 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1170 2160 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1171 2200 FORMAT(' #PROC ','CRITER ','ADAPT FOR ','ADAPT VEL ')
1172 2201 FORMAT(' ','CRITER ','ADAPT FOR ','ADAPT VEL ')
1173 2250 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4)
1174 2251 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4)
1175 3000 FORMAT(' #PROC ','FORCES ','RBY.FOR. ','RBY.VEL. ',
1176 . 'VELOCITIES',' TOTAL ','% CPU')
1177 3001 FORMAT(' ','FORCES ','RBY.FOR. ','RBY.VEL. ',
1178 . 'VELOCITIES',' TOTAL ')
1179 3050 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,2x,f6.2)
1180 3051 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1181 3330 FORMAT(' #PROC ',' PCG ',' PARIT F ',' COMM R ',
1182 . ' COMP M.V ',' COMM VFI ',' COMM M.V ',' TOT PROJ ',
1183 . ' MAV_LT2 ',' MAM_NM ',' MAV_N,MN ',' COMP MV/E',
1184 . ' BUILD M ')
1185 3331 FORMAT(' ',' PCG ',' PARIT F ',' COMM R ',
1186 . ' COMP M.V ',' COMM VFI ',' COMM M.V ',' TOT PROJ ',' MAV_LT2 ',
1187 . ' MAM_NM ',' MAV_N,MN ',' COMP MV/E',' BUILD M ')
1188 3335 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1189 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1190 3336 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,
1191 . 1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1192 4000 FORMAT(' #PROC ','BUCKCRIT ',' COMMCRIT',' BUCKET ',
1193 . ' GFRONT ',' CONT.OPT ',' CONT.F** ',
1194 . ' CONT.DST ',' C+E FORCE',' CONT.NORML')
1195 4001 FORMAT(' ','BUCKCRIT ',' COMMCRIT',' BUCKET ',
1196 . ' GFRONT ',' CONT.OPT ',' CONT.F** ',
1197 . ' CONT.DST ',' C+E FORCE')
1198 4050 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,
1199 . e9.4,1x,e9.4,1x,e9.4)
1200 4051 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,
1201 . e9.4,1x,e9.4)
1202 4500 FORMAT(' #PROC ','RB+SENS ',' CLOADS ',' BCS ',
1203 . ' RL+RW ',' FIXVEL ',' RBE3 ',' GRAV')
1204 4501 FORMAT(' ','RB+SENS ',' CLOADS ',' BCS ',
1205 . ' RL+RW ',' FIXVEL ',' RBE3 ',' GRAV')
1206 4550 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,2x,e9.4,1x,
1207 . e9.4,1x,e9.4,1x,e9.4)
1208 4551 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,2x,e9.4,1x,
1209 . e9.4,1x,e9.4,1x,e9.4)
1210 5000 FORMAT(' #PROC ','FICOM1 ',' FICOM2 ',' ISDXV1 ',
1211 . ' ISDXV2 ',' TRI MMX**',' TRI BOX ',
1212 . ' TRI BUC**',' TRI GAT**',' SYNC COM ',
1213 . ' SHOOTING ',' INT2 F+V')
1214 5001 FORMAT(' ','FICOM1 ',' FICOM2 ',' isdxv1 ',
1215 . ' isdxv2 ',' tri mmx**',' tri box ',
1216 . ' tri buc**',' tri gat**',' sync com ',
1217 . ' shooting ',' int2 f+v')
1218 5050 FORMAT(I4,3x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,
1219 + 1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4)
1220 5051 FORMAT(1x,A4,2x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,
1221 + 1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4)
1222 5500 FORMAT(' #PROC ','MANCTR ',' MONVOL ',' DAMP ',
1223 . ' INT2* ',' FIXVEL* ',' CLOADS* ',
1224 . ' DT2 ',' AUX ',' FORINTS ',
1225 . ' R2R ',' R2M')
1226 5501 FORMAT(' ','MANCTR ',' MONVOL ',' damp ',
1227 . ' int2* ',' fixvel* ',' cloads* ',
1228 . ' dt2 ',' aux ',' forints ',
1229 . ' r2r ',' r2m')
1230 5550 FORMAT(I4,3x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,
1231 + 1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,
1232 + 1x,E9.4,1x,E9.4)
1233 5551 FORMAT(1x,A4,2x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,
1234 + 1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,
1235 + 1x,E9.4,1x,E9.4)
1236 5600 FORMAT(' #PROC ',' SPH/TOTAL',' SPH/SORT ','SPH/FORCES',
1237 . ' SPH/OTHER',' SPH/SORT1',' COMM.SORT1',' SPH/SORT0',
1238 . ' COMM.SORT0',' COMM.FORCES')
1239 5601 FORMAT(' ',' SPH/TOTAL',' SPH/SORT ','SPH/FORCES',
1240 . ' SPH/OTHER',' SPH/SORT1',' COMM.SORT1',' SPH/SORT0',
1241 . ' COMM.SORT0',' COMM.FORCES')
1242 6000 FORMAT(' ELAPSED TIME =',f14.2,' s')
1243 6100 FORMAT(' ',i8,':',i2.2,':',i2.2)
1244 6200 FORMAT(' EXECUTION STARTED .........................: ',
1245 . a4,'/',a2,'/',a2,' ',a2,':',a2,':',a2)
1246 6300 FORMAT(' EXECUTION COMPLETED .......................: ',
1247 . a4,'/',a2,'/',a2,' ',a2,':',a2,':',a2)
1248 6500 FORMAT(' #PROC ','BEG CRIT ','EOF CRIT ','EOF SORT ',
1249 . ' EOF FORCE',' EOF CYCLE',' EOF SPH')
1250 6501 FORMAT(' ','BEG CRIT ','EOF CRIT ','EOF SORT ',
1251 . ' EOF FORCE',' EOF CYCLE',' EOF SPH')
1252 6550 FORMAT(i4,3x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1253 6551 FORMAT(1x,a4,2x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4,1x,e9.4)
1254 8000 FORMAT(' ESTIMATED SPEEDUP=',f14.2)
1255C
1256 RETURN
1257 END
1258!||====================================================================
1259!|| print_runtime ../engine/source/system/timer.F
1260!||--- called by ------------------------------------------------------
1261!|| arret ../engine/source/system/arret.F
1262!||--- uses -----------------------------------------------------
1263!|| time_mod ../engine/share/modules/time_mod.F
1264!||====================================================================
1265 SUBROUTINE print_runtime( )
1266C-----------------------------------------------
1267C M o d u l e s
1268C-----------------------------------------------
1269 USE time_mod
1270C-----------------------------------------------
1271C I m p l i c i t T y p e s
1272C-----------------------------------------------
1273#include "implicit_f.inc"
1274C-----------------------------------------------
1275C C o m m o n B l o c k s
1276C-----------------------------------------------
1277#include "units_c.inc"
1278C-----------------------------------------------
1279C L o c a l V a r i a b l e s
1280C-----------------------------------------------
1281 INTEGER :: I,IJK,IJKL,CURRENT_RUN
1282 REAL(kind=8) :: total_time,result
1283 INTEGER, DIMENSION(GLOBAL_COMP_TIME%RUN_NBR+2) :: IH_TAB,IM_TAB,IS_TAB
1284! ----------------------------------------
1285
1286 total_time = global_comp_time%STARTER_TIME
1287 DO i=1,global_comp_time%RUN_NBR
1288 total_time = total_time + global_comp_time%ENGINE_TIME(i)
1289 ih_tab(i)=int(global_comp_time%ENGINE_TIME(i)/3600.0d0)
1290 im_tab(i)=int((global_comp_time%ENGINE_TIME(i)-ih_tab(i)*3600.0d0)/60.0d0)
1291 is_tab(i)=int(global_comp_time%ENGINE_TIME(i)-ih_tab(i)*3600.0d0-im_tab(i)*60.0d0)
1292 ENDDO
1293 ijk = global_comp_time%RUN_NBR + 1
1294 ih_tab(ijk)=int(global_comp_time%STARTER_TIME/3600.0d0)
1295 im_tab(ijk)=int((global_comp_time%STARTER_TIME-ih_tab(ijk)*3600.0d0)/60.0d0)
1296 is_tab(ijk)=int(global_comp_time%STARTER_TIME-ih_tab(ijk)*3600.0d0-im_tab(ijk)*60.0d0)
1297
1298 ijkl = global_comp_time%RUN_NBR + 2
1299 ih_tab(ijkl)=int(total_time/3600.0d0)
1300 im_tab(ijkl)=int((total_time-ih_tab(ijkl)*3600.0d0)/60.0d0)
1301 is_tab(ijkl)=int(total_time-ih_tab(ijkl)*3600-im_tab(ijkl)*60.0d0)
1302
1303 WRITE(iout,*) ' '
1304 WRITE(iout,*)
1305 . ' ** COMPUTE RUNTIME INFORMATION SUMMARY **'
1306 WRITE(iout,*) ' '
1307 WRITE(iout,100) global_comp_time%STARTER_TIME,ih_tab(ijk),im_tab(ijk),is_tab(ijk)
1308 DO i=1,global_comp_time%RUN_NBR
1309 WRITE(iout,101) i,global_comp_time%ENGINE_TIME(i),ih_tab(i),im_tab(i),is_tab(i)
1310 ENDDO
1311 WRITE(iout,103)
1312 WRITE(iout,102)total_time,ih_tab(ijkl),im_tab(ijkl),is_tab(ijkl)
1313 WRITE(iout,*)' '
1314C
1315
1316C
1317 100 FORMAT(' STARTER RUNTIME =', (f14.2),'s',' (',i2.2,':',i2.2,':',i2.2,')')
1318 101 FORMAT(' #',(i4.3), ' ENGINE RUNTIME =',(f14.2),'s',' (',i2.2,':',i2.2,':',i2.2,')')
1319 102 FORMAT(' STARTER+ENGINE RUNTIME =',(f14.2),'s',' (',i2.2,':',i2.2,':',i2.2,')')
1320 103 FORMAT(' ------------------------------ ')
1321
1322 RETURN
1323 END SUBROUTINE
1324
1325!||====================================================================
1326!|| printcpu ../engine/source/system/timer.F
1327!||--- called by ------------------------------------------------------
1328!|| radioss2 ../engine/source/engine/radioss2.F
1329!||--- calls -----------------------------------------------------
1330!|| cpuinfo ../engine/source/system/mon_c.c
1331!|| get_solver_stacksize ../common_source/comm/stacksize.cpp
1332!|| my_flush ../engine/source/system/machine.F
1333!|| spmd_printcpuinfo ../engine/source/mpi/output/spmd_printcpuinfo.F
1334!||====================================================================
1335 SUBROUTINE printcpu(IFLAG)
1336C-----------------------------------------------
1337C I m p l i c i t T y p e s
1338C-----------------------------------------------
1339#include "implicit_f.inc"
1340C-----------------------------------------------
1341C C o m m o n B l o c k s
1342C-----------------------------------------------
1343#include "com01_c.inc"
1344#include "task_c.inc"
1345#include "units_c.inc"
1346#include "impl1_c.inc"
1347C-----------------------------------------------
1348C D u m m y A r g u m e n t s
1349C-----------------------------------------------
1350 INTEGER IFLAG
1351
1352 CHARACTER*256 HOSTNAME, CPUNAM
1353 INTEGER FREQUENCE,LENH,LENC,I,MEM,SWAP
1354 SAVE hostname,cpunam,frequence,lenh,lenc,mem,swap
1355
1356 CHARACTER(len=129) :: STACKSIZE_INFO
1357 INTEGER :: STACKSIZE_INFO_LEN
1358
1359 CHARACTER(len=129) :: OMP_STACKSIZE_INFO
1360 INTEGER :: OMP_STACKSIZE_INFO_LEN
1361
1362 IF(iflag==1) THEN
1363
1364 CALL cpuinfo(hostname,lenh,cpunam, lenc, frequence,mem,swap)
1365
1366 ELSEIF(iflag==2) THEN
1367 ! 2nd call after parallel initialization & communication
1368 IF(ispmd==0) THEN
1369 WRITE(iout,*)' '
1370 WRITE(iout,7000)
1371 WRITE(iout,*)' '
1372 IF(nspmd==1) THEN
1373 IF(mem>-1)THEN
1374 WRITE(iout,7400)
1375 WRITE(iout,'(A,A,A,A,A,I4,A,I6,A,I6,A)') ' ',
1376 . hostname(1:lenh),' ',cpunam(1:lenc),', ',frequence,
1377 . ' MHz, ',mem,' MB RAM, ',swap,' MB swap'
1378 ELSE
1379 WRITE(iout,7450)
1380 WRITE(iout,'(A,A,A,A,A,I4,A)') ' ',
1381 . hostname(1:lenh),' ',cpunam(1:lenc),', ',frequence,
1382 . ' MHz '
1383 END IF
1384 ELSE
1385 i = 1
1386 IF(mem>-1)THEN
1387 WRITE(iout,7500)
1388 WRITE(iout,'(I4,A,A,A,A,A,I4,A,I6,A,I6,A)') i,' ',
1389 . hostname(1:lenh),' ',cpunam(1:lenc),', ',frequence,
1390 . ' MHz, ',mem,' MB RAM, ',swap,' MB swap'
1391 ELSE
1392 WRITE(iout,7550)
1393 WRITE(iout,'(I4,A,A,A,A,A,I4,A)') i,' ',
1394 . hostname(1:lenh),' ',cpunam(1:lenc),', ',frequence,
1395 . ' MHz '
1396 END IF
1397 END IF
1398 END IF
1399C ecriture du complement en multiprocs
1400 IF(nspmd>1)
1401 . CALL spmd_printcpuinfo(hostname,lenh,cpunam, lenc, frequence,
1402 . mem,swap)
1403 IF(ispmd==0) THEN
1404 WRITE(iout,*)' '
1405 omp_stacksize_info_len=128
1406 stacksize_info_len=128
1407 CALL get_solver_stacksize(stacksize_info,stacksize_info_len,omp_stacksize_info,omp_stacksize_info_len)
1408 WRITE(iout,'(A,A)') ' STACKSIZE . . . . . . . . . . . . . . . . . . . . ',stacksize_info(1:stacksize_info_len)
1409 WRITE(iout,'(A,A)') ' THREAD STACKSIZE . . . . . . . . . . . . . . . . . ',omp_stacksize_info(1:omp_stacksize_info_len)
1410 WRITE(iout,'(A)') ' '
1411 ! Force write to output file
1412 CALL my_flush(iout)
1413 END IF
1414
1415 ENDIF
1416
1417 lmemv = mem
1418
1419 7000 FORMAT (' COMPUTATION HARDWARE DESCRIPTION')
1420 7400 FORMAT (' HOSTNAME CPU TYPE, FREQUENCY AND MEMORY')
1421 7450 FORMAT (' HOSTNAME CPU TYPE AND FREQUENCY')
1422 7500 FORMAT (' CPU# HOSTNAME CPU TYPE, FREQUENCY AND MEMORY')
1423 7550 FORMAT (' CPU# HOSTNAME CPU TYPE AND FREQUENCY ')
1424
1425 END
1426!||====================================================================
1427!|| initimeg ../engine/source/system/timer.F
1428!||--- called by ------------------------------------------------------
1429!|| resol_init ../engine/source/engine/resol_init.F
1430!||====================================================================
1431 SUBROUTINE initimeg(NG)
1432C initialisation des timers groupes elem.
1433C-----------------------------------------------
1434C I m p l i c i t T y p e s
1435C-----------------------------------------------
1436#include "implicit_f.inc"
1437C----------------------------------------------
1438C C o m m o n B l o c k s
1439C-----------------------------------------------
1440 COMMON /timerg/timerg(2,500000),cputimeg(500000)
1441 REAL TIMERG,CPUTIMEG
1442C-----------------------------------------------
1443C D u m m y A r g u m e n t s
1444C-----------------------------------------------
1445 INTEGER NG
1446C-----------------------------------------------
1447C L o c a l V a r i a b l e s
1448C-----------------------------------------------
1449 INTEGER J
1450C-----------------------------------------------
1451 DO j=1,ng
1452 cputimeg(j) = zero
1453 ENDDO
1454C
1455 RETURN
1456 END
1457!||====================================================================
1458!|| startimeg ../engine/source/system/timer.F
1459!||--- called by ------------------------------------------------------
1460!|| err_thk ../engine/source/elements/shell/err_thk.F
1461!|| forint ../engine/source/elements/forint.F
1462!|| forintc ../engine/source/elements/forintc.F
1463!|| forintp ../engine/source/elements/forintp.F
1464!|| forints ../engine/source/elements/forints.F
1465!|| imp_glob_k ../engine/source/implicit/imp_glob_k.F
1466!|| imp_glob_k0 ../engine/source/implicit/imp_glob_k.F
1467!|| inixfem ../engine/source/elements/xfem/inixfem.F
1468!|| prelecflow ../engine/source/elements/solid/solide/prelecflow.F
1469!|| sms_ini_kdi ../engine/source/ams/sms_init.F
1470!|| soltosph_on1 ../engine/source/elements/sph/soltosph_on1.F
1471!|| soltosph_on12 ../engine/source/elements/sph/soltosph_on1.F
1472!|| soltosph_on2 ../engine/source/elements/sph/soltosph_on2.F
1473!|| soltospha ../engine/source/elements/sph/soltospha.F
1474!|| soltosphf ../engine/source/elements/sph/soltosph.F
1475!|| soltosphp ../engine/source/elements/sph/soltosph.F
1476!|| splissv ../engine/source/elements/sph/splissv.F
1477!|| spstabs ../engine/source/elements/sph/spstab.F
1478!|| thickvar ../engine/source/elements/shell/coque/thickvar.F
1479!|| upxfem1 ../engine/source/elements/xfem/upxfem1.F
1480!|| upxfem2 ../engine/source/elements/xfem/upxfem2.F
1481!|| upxfem_tagxp ../engine/source/elements/xfem/upxfem_tagxp.F
1482!|| xfeoff ../engine/source/elements/xfem/xfeoff.F
1483!||--- calls -----------------------------------------------------
1484!|| my_etime ../engine/source/system/machine.F
1485!||====================================================================
1486 SUBROUTINE startimeg(NG)
1487C routine d incrementation des timers elem.
1488C-----------------------------------------------
1489C I m p l i c i t T y p e s
1490C-----------------------------------------------
1491#include "implicit_f.inc"
1492C-----------------------------------------------
1493C C o m m o n B l o c k s
1494C-----------------------------------------------
1495 COMMON /timerg/timerg(2,500000),cputimeg(500000)
1496 REAL TIMERG,CPUTIMEG
1497C-----------------------------------------------
1498C D u m m y A r g u m e n t s
1499C-----------------------------------------------
1500 INTEGER NG
1501C
1502 CALL my_etime(timerg(1,ng))
1503
1504 RETURN
1505 END
1506
1507!||====================================================================
1508!|| stoptimeg ../engine/source/system/timer.F
1509!||--- called by ------------------------------------------------------
1510!|| err_thk ../engine/source/elements/shell/err_thk.F
1511!|| forint ../engine/source/elements/forint.F
1512!|| forintc ../engine/source/elements/forintc.F
1513!|| forintp ../engine/source/elements/forintp.F
1514!|| forints ../engine/source/elements/forints.F
1515!|| inixfem ../engine/source/elements/xfem/inixfem.F
1516!|| prelecflow ../engine/source/elements/solid/solide/prelecflow.F
1517!|| sms_ini_kdi ../engine/source/ams/sms_init.F
1518!|| soltosph_on1 ../engine/source/elements/sph/soltosph_on1.F
1519!|| soltosph_on12 ../engine/source/elements/sph/soltosph_on1.F
1520!|| soltosph_on2 ../engine/source/elements/sph/soltosph_on2.F
1521!|| soltospha ../engine/source/elements/sph/soltospha.F
1522!|| soltosphf ../engine/source/elements/sph/soltosph.F
1523!|| soltosphp ../engine/source/elements/sph/soltosph.F
1524!|| splissv ../engine/source/elements/sph/splissv.F
1525!|| spstabs ../engine/source/elements/sph/spstab.F
1526!|| thickvar ../engine/source/elements/shell/coque/thickvar.F
1527!|| upxfem1 ../engine/source/elements/xfem/upxfem1.F
1528!|| upxfem2 ../engine/source/elements/xfem/upxfem2.F
1529!|| upxfem_tagxp ../engine/source/elements/xfem/upxfem_tagxp.f
1530!|| xfeoff ../engine/source/elements/xfem/xfeoff.F
1531!||--- calls -----------------------------------------------------
1532!|| my_etime ../engine/source/system/machine.F
1533!||====================================================================
1534 SUBROUTINE stoptimeg(NG)
1535C routine incrementation du timer event
1536C-----------------------------------------------
1537C I m p l i c i t T y p e s
1538C-----------------------------------------------
1539#include "implicit_f.inc"
1540C-----------------------------------------------
1541C C o m m o n B l o c k s
1542C-----------------------------------------------
1543 COMMON /timerg/timerg(2,500000),cputimeg(500000)
1544 REAL TIMERG,CPUTIMEG
1545C-----------------------------------------------
1546C D u m m y A r g u m e n t s
1547C-----------------------------------------------
1548 INTEGER NG
1549C
1550 CALL my_etime(timerg(2,ng))
1551 cputimeg(ng) = cputimeg(ng) +
1552 . timerg(2,ng)-timerg(1,ng)
1553 RETURN
1554 END
1555!||====================================================================
1556!|| printimeg ../engine/source/system/timer.f
1557!||--- called by ------------------------------------------------------
1558!|| resol ../engine/source/engine/resol.F
1559!||--- calls -----------------------------------------------------
1560!|| interlagran ../engine/source/system/timer.F
1561!|| printcoques ../engine/source/system/timer.F
1562!|| printsolides ../engine/source/system/timer.F
1563!|| printtet10 ../engine/source/system/timer.F
1564!|| printtet4 ../engine/source/system/timer.F
1565!|| printtriangles ../engine/source/system/timer.F
1566!||====================================================================
1567 SUBROUTINE printimeg(IPARG,PM,IPM,IXC,IXTG,IXS)
1568C routine d'affichage des timers
1569C-----------------------------------------------
1570C I m p l i c i t T y p e s
1571C-----------------------------------------------
1572#include "implicit_f.inc"
1573C-----------------------------------------------
1574C C o m m o n B l o c k s
1575C-----------------------------------------------
1576 COMMON /timerg/timerg(2,500000),cputimeg(500000)
1577 REAL TIMERG,CPUTIMEG
1578C-----------------------------------------------
1579#include "com01_c.inc"
1580#include "task_c.inc"
1581#include "units_c.inc"
1582#include "param_c.inc"
1583#include "chara_c.inc"
1584#include "scr19_c.inc"
1585#include "ddspmd_c.inc"
1586C-----------------------------------------------
1587C D u m m y A r g u m e n t s
1588C-----------------------------------------------
1589 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IXTG(NIXTG,*),
1590 . IPM(NPROPMI,*),IXS(NIXS,*)
1591 my_real
1592 . pm(npropm,*),cc
1593C-----------------------------------------------
1594C L o c a l V a r i a b l e s
1595C-----------------------------------------------
1596 INTEGER I, NPROC, MSGTAG, MSGTAG2, ISTART, NGROUP_R,
1597 . NEL,PROC,NGF, NGL,
1598 . J, NELT,
1599 . NG,IRSIZE, MSGTAG3 ,NES,NEQ,NEC,NETG,NET,NEP,NER,NEUR,
1600 . MPT,NPTS,NPTT,NPTOT,ISOLNOD
1601
1602 CHARACTER FILNAM*100,PROCNAM*4
1603 my_real
1604 . ts, tq, tc, ttg, tt, tp, tr, tur, dtu,mins,maxs,minq,
1605 . maxq,minc,maxc,mintg,maxtg,minp,maxp,mint,maxt,minr,
1606 . maxr,minur,maxur, cpug, cpuelem, t(8,2)
1607C
1608 INTEGER NUMSOLG,NUMSHG,NUMTRIG,NUMOTHER,ITY,MTN,NELEM,NPT,NSG,
1609 . NFT,IHBE,MMA,NFUNC,FILEN,NUMSOL4G,NUMSOL10G
1610
1611 real
1612 . theogp(ngroup),tabx(3),tabmat(3),nptr,timmat,telt,tpsthtot,
1613 . tpsreel,batozmult,tppond
1614
1615 tpsreel = 0.
1616 tpsthtot = 0.
1617 batozmult = 4
1618 timmat = 0.
1619C ouverture du fichier DDW
1620 WRITE(procnam,'(I4.4)')ispmd+1
1621 filnam=rootnam(1:rootlen)//'_'//chrun//'_'//procnam//'.ddw2'
1622 OPEN(unit=66,file=filnam,access='SEQUENTIAL',
1623 . form='FORMATTED',status='UNKNOWN')
1624 filen=rootlen+14
1625C
1626C preparation de la ponderation
1627C
1628 IF (tpseng==zero) THEN
1629 tppond = one
1630 ELSE
1631 tppond = tpseng/tpsref
1632 ENDIF
1633
1634 WRITE(66,'(A)') 'DOMAIN DECOMPOSITION ANALYSIS FILE '
1635 WRITE(66,'(A)') '---------------------------------- '
1636 WRITE(66,'(A)') ' '
1637 WRITE(66,'(A)') ' '
1638
1639 WRITE(66,1000) ispmd,ncycle
1640c WRITE(66,1100) NCYCLE
1641
1642
1643C Comptage des groupes
1644 numsolg = 0
1645 numshg = 0
1646 numtrig = 0
1647 numsol4g = 0
1648 numsol10g = 0
1649
1650 DO ng=1,ngroup
1651 ity = iparg(5,ng)
1652 IF (ity==1) THEN
1653 isolnod = iparg(28,ng)
1654 IF (isolnod==4) THEN
1655 numsol4g = numsol4g+1
1656 ELSEIF (isolnod==10) THEN
1657 numsol10g = numsol10g+1
1658 ELSE
1659 numsolg = numsolg + 1
1660 ENDIF
1661 ELSEIF (ity==3) THEN
1662 numshg = numshg + 1
1663 ELSEIF (ity==7) THEN
1664 numtrig = numtrig + 1
1665 ENDIF
1666 ENDDO
1667
1668C Calcul du temps theorique de chaque groupe
1669 DO ng=1,ngroup
1670 ity = iparg(5,ng)
1671 mtn = iparg(1,ng)
1672 nelem = iparg(2,ng)
1673 npt = iparg(6,ng)
1674 nsg = iparg(10,ng)
1675 nft = iparg(3,ng)+1
1676 ihbe = iparg(23,ng)
1677
1678 theogp(ng)=0.
1679C SOLIDES
1680 IF (ity==1) THEN
1681 isolnod=iparg(28,ng)
1682 IF (isolnod==4) THEN
1683 telt = tet4tnl(mtn,1) + tet4telt(1)
1684C TETRA10
1685 ELSEIF (isolnod==10) THEN
1686 mma = ixs(1,nft)
1687 nfunc = max(ipm(10,mma) - 3,1)
1688 IF (nfunc<=2) THEN
1689 telt = tet10tnl(mtn,1) + tet10telt(1)
1690 ELSEIF (nfunc>2.AND.nfunc<=7) THEN
1691 telt = tet10tnl(mtn,2) + tet10telt(1)
1692 ELSE
1693 telt = tet10tnl(mtn,3) + tet10telt(1)
1694 ENDIF
1695 ELSE
1696 IF (ihbe<=1.OR.ihbe==101) THEN
1697C Solides ISOLD1
1698 telt = sol1tnl(mtn,1) + soltelt(1)
1699 ELSEIF (ihbe==2.OR.ihbe==102) THEN
1700C Solides ISOLD2
1701 telt = sol1tnl(mtn,1) + soltelt(2)
1702C
1703 ELSEIF (ihbe==24.OR.ihbe==104) THEN
1704C Solides ISOLD24 - HEPH
1705 telt = sol1tnl(mtn,1) + soltelt(3)
1706C
1707 ELSEIF (ihbe==12.OR.ihbe==112) THEN
1708C Solides ISOLD12 - std 8 node integ point
1709 telt = sol8tnl(mtn,1) + soltelt(4)
1710C
1711 ELSEIF (ihbe==14.OR.ihbe>=222) THEN
1712C Solides HA8
1713 mpt = abs(npt)
1714 npts = mpt/100
1715 nptt = mod(mpt/10,10)
1716 nptr = mod(mpt,10)
1717 nptot = npts*nptt*int(nptr)
1718C
1719 telt = nptot*sol8tnl(mtn,1)+soltelt(5)+nptot*soltelt(6)
1720
1721 ELSEIF(ihbe==17)THEN
1722 telt = sol1tnl(mtn,1)*8+soltelt(7)
1723 ELSE
1724 telt = sol1tnl(mtn,1) + soltelt(1)
1725 ENDIF
1726 ENDIF
1727C
1728 theogp(ng)= telt*nelem*ncycle*tppond
1729C COQUES
1730 ELSEIF (ity==3) THEN
1731
1732 DO j=nft,nft+nelem-1
1733 mma = ixc(1,j)
1734 IF (npt>0) THEN
1735C traitement a part pour zero points d integration
1736 IF (mtn==2.OR.mtn==3) THEN
1737 cc = pm(43,mma)
1738 IF (cc/=0.0 )THEN
1739 tabmat(1) = shtnl(mtn,1,2)
1740 tabmat(2) = shtnl(mtn,2,2)
1741 tabmat(3) = shtnl(mtn,3,2)
1742 ELSE
1743 tabmat(1) = shtnl(mtn,1,1)
1744 tabmat(2) = shtnl(mtn,2,1)
1745 tabmat(3) = shtnl(mtn,3,1)
1746 ENDIF
1747
1748 ELSEIF (mtn==36) THEN
1749 nfunc = ipm(10,mma)
1750
1751 IF (nfunc<=2) THEN
1752 tabmat(1) = shtnl(mtn,1,1)
1753 tabmat(2) = shtnl(mtn,2,1)
1754 tabmat(3) = shtnl(mtn,3,1)
1755 ELSEIF (nfunc>2.AND.nfunc<=7) THEN
1756 tabmat(1) = shtnl(mtn,1,2)
1757 tabmat(2) = shtnl(mtn,2,2)
1758 tabmat(3) = shtnl(mtn,3,2)
1759 ELSEIF (nfunc>7) THEN
1760 tabmat(1) = shtnl(mtn,1,3)
1761 tabmat(2) = shtnl(mtn,2,3)
1762 tabmat(3) = shtnl(mtn,3,3)
1763 ENDIF
1764 ELSE
1765 tabmat(1) = shtnl(mtn,1,1)
1766 tabmat(2) = shtnl(mtn,2,1)
1767 tabmat(3) = shtnl(mtn,3,1)
1768 ENDIF
1769
1770 tabx(1) = 1.
1771 tabx(2) = 3.
1772 tabx(3) = 5.
1773
1774 nptr = npt
1775
1776 CALL interlagran(tabmat,tabx,3,nptr,timmat)
1777
1778 ELSE
1779C Cas Zero points d integration
1780 IF (mtn==2.OR.mtn==3) THEN
1781 cc = pm(43,mma)
1782 IF (cc/=0.0 )THEN
1783 timmat = shtnl(mtn,0,2)
1784 ELSE
1785 timmat = shtnl(mtn,0,1)
1786 ENDIF
1787
1788 ELSEIF (mtn==36) THEN
1789 nfunc = nint(pm(40,mma))
1790 IF (nfunc<=2) THEN
1791 timmat = shtnl(mtn,0,1)
1792 ELSEIF (nfunc>2.AND.nfunc<=7) THEN
1793 timmat = shtnl(mtn,0,2)
1794 ELSEIF (nfunc>7) THEN
1795 timmat = shtnl(mtn,0,3)
1796 ENDIF
1797 ELSE
1798 timmat = shtnl(mtn,0,1)
1799 ENDIF
1800
1801C fin cas zero point d integrations
1802 ENDIF
1803
1804C temps elementaire
1805 IF (ihbe>=11.AND.ihbe<=19) THEN
1806 telt = shtelt(3)+batozmult*timmat
1807 ELSEIF (ihbe>=21.AND.ihbe<=29) THEN
1808 telt = shtelt(2) + timmat
1809 ELSE
1810 telt = shtelt(1) + timmat
1811 ENDIF
1812C fin temps elementaire
1813 theogp(ng)= theogp(ng)+telt*ncycle*tppond
1814 ENDDO
1815C TRIANGLES
1816 ELSEIF (ity==7) THEN
1817
1818 DO j=nft,nft+nelem-1
1819 mma = ixtg(1,j)
1820 IF (npt>0) THEN
1821C traitement a part pour zero points d integration
1822 IF (mtn==2.OR.mtn==3) THEN
1823 cc = pm(43,mma)
1824 IF (cc/=0.0 )THEN
1825 tabmat(1) = tritnl(mtn,1,2)
1826 tabmat(2) = tritnl(mtn,2,2)
1827 tabmat(3) = tritnl(mtn,3,2)
1828 ELSE
1829 tabmat(1) = tritnl(mtn,1,1)
1830 tabmat(2) = tritnl(mtn,2,1)
1831 tabmat(3) = tritnl(mtn,3,1)
1832 ENDIF
1833
1834 ELSEIF (mtn==36) THEN
1835 nfunc = ipm(10,mma)
1836 IF (nfunc<=2) THEN
1837 tabmat(1) = tritnl(mtn,1,1)
1838 tabmat(2) = tritnl(mtn,2,1)
1839 tabmat(3) = tritnl(mtn,3,1)
1840 ELSEIF (nfunc>2.AND.nfunc<=7) THEN
1841 tabmat(1) = tritnl(mtn,1,2)
1842 tabmat(2) = tritnl(mtn,2,2)
1843 tabmat(3) = tritnl(mtn,3,2)
1844 ELSEIF (nfunc>7) THEN
1845 tabmat(1) = tritnl(mtn,1,3)
1846 tabmat(2) = tritnl(mtn,2,3)
1847 tabmat(3) = tritnl(mtn,3,3)
1848 ENDIF
1849 ELSE
1850 tabmat(1) = tritnl(mtn,1,1)
1851 tabmat(2) = tritnl(mtn,2,1)
1852 tabmat(3) = tritnl(mtn,3,1)
1853 ENDIF
1854
1855 tabx(1) = 1.
1856 tabx(2) = 3.
1857 tabx(3) = 5.
1858
1859 nptr = npt
1860
1861 CALL interlagran(tabmat,tabx,3,nptr,timmat)
1862
1863 ELSE
1864C Cas Zero points d integration
1865 IF (mtn==2.OR.mtn==3) THEN
1866 cc = pm(43,mma)
1867 IF (cc/=0.0 )THEN
1868 timmat = tritnl(mtn,0,2)
1869 ELSE
1870 timmat = tritnl(mtn,0,1)
1871 ENDIF
1872
1873 ELSEIF (mtn==36) THEN
1874 nfunc = nint(pm(40,mma))
1875 IF (nfunc<=2) THEN
1876 timmat = tritnl(mtn,0,1)
1877 ELSEIF (nfunc>2.AND.nfunc<=7) THEN
1878 timmat = tritnl(mtn,0,2)
1879 ELSEIF (nfunc>7) THEN
1880 timmat = tritnl(mtn,0,3)
1881 ENDIF
1882 ELSE
1883 timmat = tritnl(mtn,0,1)
1884 ENDIF
1885
1886C fin cas zero point d integrations
1887 ENDIF
1888
1889C temps elementaire
1890 IF (ihbe>=11.AND.ihbe<=19) THEN
1891 telt = tritelt(3)+batozmult*timmat
1892 ELSEIF (ihbe>=21.AND.ihbe<=29) THEN
1893 telt = tritelt(2) + timmat
1894 ELSE
1895 telt = tritelt(1) + timmat
1896 ENDIF
1897C fin temps elementaire
1898 theogp(ng)= theogp(ng)+telt*ncycle*tppond
1899 ENDDO
1900
1901 ENDIF
1902 tpsthtot = tpsthtot + theogp(ng)
1903 tpsreel = tpsreel + cputimeg(ng)
1904 ENDDO
1905
1906
1907C Maintenant qu on a tous les temps theoriques des groupes on
1908C peux passer au traitement et a l affichage.
1909
1910 numother = ngroup - numshg - numtrig - numsolg
1911 WRITE(66,'(A)') ' '
1912 WRITE(66,1100) numsolg,numshg,numtrig,numother
1913 WRITE(66,'(A)') ' '
1914 WRITE(66,1200) tpsreel,tpsthtot
1915 IF (numsolg>0)
1916 . CALL printsolides(iparg,theogp,numsolg,ipm,ixs)
1917
1918 IF (numsol4g>0)
1919 . CALL printtet4(iparg,theogp,numsol4g,ipm,ixs)
1920
1921 IF (numsol10g>0)
1922 . CALL printtet10(iparg,theogp,numsol10g)
1923 IF (numshg>0)
1924 . CALL printcoques(iparg,ixc,ipm,theogp,numshg)
1925
1926 IF (numtrig>0)
1927 . CALL printtriangles(iparg,theogp,numtrig)
1928
1929 CLOSE(unit=66)
1930
1931 WRITE (iout,1300) filnam(1:filen)
1932 WRITE (istdo,1300) filnam(1:filen)
1933
1934
1935 1000 FORMAT(
1936 & 4x,'SPMD PROCESSOR NUMBER . . . . . . . . . . . . . .',i10/
1937 & 4x,'TOTAL NUMBER OF CYCLES. . . . . . . . . . . . . .',i10)
1938
1939 1100 FORMAT(
1940 & 4x,'NUMBER OF SOLID ELEMENTS GROUPS . . . . . . . . .',i10/
1941 & 4x,'NUMBER OF SHELL ELEMENTS GROUPS . . . . . . . . .',i10/
1942 & 4x,'NUMBER OF TRIANGULAR ELEMENTS GROUPS. . . . . . .',i10/
1943 & 4x,'NUMBER OF OTHER ELEMENT GROUPS. . . . . . . . . .',i10)
1944
1945 1200 FORMAT(
1946 & 4x,'SOLID, SHELL, TRIANGULAR GROUP TIME'/,
1947 & 4x,'-----------------------------------'/,
1948 & 4x,'TOTAL GROUP TIME . . . . . . . . . . . . . . . .',1pg20.13/
1949 & 4x,'STARTER ESTIMATED GROUP TIME . . . . . . . . . .',1pg20.13)
1950
1951 1300 FORMAT (4x,' DD ANALYSIS FILE:',1x,a,' WRITTEN')
1952C
1953 RETURN
1954 END
1955
1956!||====================================================================
1957!|| printcoques ../engine/source/system/timer.F
1958!||--- called by ------------------------------------------------------
1959!|| printimeg ../engine/source/system/timer.F
1960!||--- calls -----------------------------------------------------
1961!|| my_fsort ../engine/source/system/timer.F
1962!||====================================================================
1963 SUBROUTINE printcoques(IPARG,IXC,IPM,THEOGP,NUMSHG)
1964C-----------------------------------------------
1965C I m p l i c i t T y p e s
1966C-----------------------------------------------
1967#include "implicit_f.inc"
1968C-----------------------------------------------
1969C C o m m o n B l o c k s
1970C-----------------------------------------------
1971#include "com01_c.inc"
1972#include "param_c.inc"
1973#include "scr19_c.inc"
1974C-----------------------------------------------
1975C G l o b a l P a r a m e t e r s
1976C-----------------------------------------------
1977 COMMON /timerg/timerg(2,500000),cputimeg(500000)
1978 REAL TIMERG,CPUTIMEG
1979C-----------------------------------------------
1980C D u m m y A r g u m e n t s
1981C-----------------------------------------------
1982 INTEGER NUMSHG
1983 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IPM(NPROPMI,*)
1984C
1985 REAL THEOGP(NGROUP)
1986C-----------------------------------------------
1987C L o c a l V a r i a b l e s
1988C-----------------------------------------------
1989 INTEGER NGL,NG,NUMGROUP(NUMSHG),INDEXSH(NUMSHG),
1990 . ITY,MTN,NELEM,NPT,NSG,MID,MUID,
1991 . NFT,IHBE,MMA,NFUNC,I,J
1992 REAL DIFFTT,DIFFTTSH(NUMSHG),TEMP(NUMSHG)
1993 REAL THEOTP(NUMSHG),REELTP(NUMSHG)
1994 REAL TABX(3),TABMAT(3),NPTR,TIMMAT,TELT
1995 REAL TPSTHTOT,TPSREEL,PCT
1996C-----------------------------------------------
1997C S o u r c e L i n e s
1998C-----------------------------------------------
1999
2000 ngl = 0
2001
2002 DO ng=1,ngroup
2003 ity = iparg(5,ng)
2004 mtn = iparg(1,ng)
2005 nelem = iparg(2,ng)
2006 npt = iparg(6,ng)
2007 nsg = iparg(10,ng)
2008 nft = iparg(3,ng)+1
2009 ihbe = iparg(23,ng)
2010
2011
2012 IF (ity==3) THEN
2013
2014 ngl = ngl + 1
2015
2016 numgroup(ngl) = ng
2017 diffttsh(ngl) = cputimeg(ng) - theogp(ng)
2018
2019 ENDIF
2020 ENDDO
2021
2022 DO i=1,ngl
2023 indexsh(i) = i
2024 ENDDO
2025
2026 CALL my_fsort(diffttsh,indexsh,numshg,temp)
2027
2028 WRITE(66,2000)
2029c WRITE(66,'(A)') ' '
2030c WRITE(66,'(A)') 'SHELL ELEMENT GROUPS'
2031c WRITE(66,'(A)') ' '
2032c WRITE(66,'(A,A,A)')
2033c . ' GRP_NB ELEM_TYP NUM_ELEM MAT_NUMB ',
2034c . ' NPT NSG CPUTIMEG',
2035c . ' TIMETHEO DIFF PCT'
2036
2037 DO i=1,numshg
2038 ngl = indexsh(i)
2039 ng = numgroup(ngl)
2040
2041 ity = iparg(5,ng)
2042 mtn = iparg(1,ng)
2043 nelem = iparg(2,ng)
2044 nft = iparg(3,ng)+1
2045 nsg = iparg(10,ng)
2046 npt = iparg(6,ng)
2047 ihbe = iparg(23,ng)
2048
2049 mid = ixc(1,nft)
2050 muid = ipm(1,mid)
2051
2052 difftt = cputimeg(ng) - theogp(ng)
2053
2054 pct = ((cputimeg(ng) - theogp(ng))/cputimeg(ng) )*100
2055
2056 WRITE(66,'(I10,A,I10,A,I10,A,I10,A,I10,A,I10,A,I10,A,I10,
2057 . A,E15.3,A,E15.3,A,E15.3,A,F8.3,A)')
2058 . ng,' ',ity,' ',ihbe,' ',nelem,' ',mtn,' ',muid,
2059 . ' ',npt,' ',nsg,' ',
2060 . cputimeg(ng),' ',theogp(ng),' ',difftt,' ',pct,'%'
2061
2062 ENDDO
2063
2064
2065 2000 FORMAT(
2066 & /' '/' '/10x,' SHELL ELEMENT GROUPS'/
2067 & 10x,' --------------------'/
2068 & ' '/
2069 & ' '/
2070 & ' GRP_NB ELEM_TYP IHBE ',
2071 & 'NUM_ELEM MAT_NUMB ',
2072 & ' MAT_USERN NPT NSG CPUTIMEG',
2073 & ' TIMETHEO DIFF PCT')
2074
2075 END
2076
2077!||====================================================================
2078!|| printsolides ../engine/source/system/timer.f
2079!||--- called by ------------------------------------------------------
2080!|| printimeg ../engine/source/system/timer.F
2081!||--- calls -----------------------------------------------------
2082!|| my_fsort ../engine/source/system/timer.F
2083!||====================================================================
2084 SUBROUTINE printsolides(IPARG,THEOGP,NUMSOLG,IPM,IXS)
2085C-----------------------------------------------
2086C I m p l i c i t T y p e s
2087C-----------------------------------------------
2088#include "implicit_f.inc"
2089C-----------------------------------------------
2090C C o m m o n B l o c k s
2091C-----------------------------------------------
2092#include "com01_c.inc"
2093#include "param_c.inc"
2094#include "scr19_c.inc"
2095C-----------------------------------------------
2096C G l o b a l P a r a m e t e r s
2097C-----------------------------------------------
2098 COMMON /timerg/timerg(2,500000),cputimeg(500000)
2099 REAL TIMERG,CPUTIMEG
2100C-----------------------------------------------
2101C D u m m y A r g u m e n t s
2102C-----------------------------------------------
2103 INTEGER NUMSOLG
2104 INTEGER IPARG(NPARG,*),IXS(NIXS,*),IPM(NPROPMI,*)
2105 REAL THEOGP(NGROUP)
2106C-----------------------------------------------
2107C L o c a l V a r i a b l e s
2108C-----------------------------------------------
2109 INTEGER NGL,NG,NUMGROUP(NUMSOLG),INDEXSH(NUMSOLG),
2110 . ITY,MTN,NELEM,NPT,NSG,
2111 . NFT,IHBE,MMA,NFUNC,I,J,ISOLNOD,
2112 . MID,MUID
2113 REAL DIFFTT,DIFFTTSH(NUMSOLG),TEMP(NUMSOLG)
2114 REAL THEOTP(NUMSOLG),REELTP(NUMSOLG)
2115 REAL TABX(3),TABMAT(3),NPTR,TIMMAT,TELT
2116 REAL TPSTHTOT,TPSREEL,PCT
2117C-----------------------------------------------
2118C S o u r c e L i n e s
2119C-----------------------------------------------
2120 ngl = 0
2121
2122 DO ng=1,ngroup
2123 ity = iparg(5,ng)
2124 mtn = iparg(1,ng)
2125 nelem = iparg(2,ng)
2126 npt = iparg(6,ng)
2127 nsg = iparg(10,ng)
2128 nft = iparg(3,ng)+1
2129 ihbe = iparg(23,ng)
2130
2131 IF (ity==1) THEN
2132 isolnod = iparg(28,ng)
2133 IF (isolnod/=4.AND.isolnod/=10) THEN
2134 ngl = ngl + 1
2135 numgroup(ngl) = ng
2136 diffttsh(ngl) = cputimeg(ng) - theogp(ng)
2137 ENDIF
2138 ENDIF
2139 ENDDO
2140
2141 DO i=1,ngl
2142 indexsh(i) = i
2143 ENDDO
2144
2145 CALL my_fsort(diffttsh,indexsh,numsolg,temp)
2146
2147 WRITE(66,3000)
2148
2149 DO i=1,numsolg
2150 ngl = indexsh(i)
2151 ng = numgroup(ngl)
2152
2153 ity = iparg(5,ng)
2154 mtn = iparg(1,ng)
2155 nelem = iparg(2,ng)
2156 nft = iparg(3,ng)+1
2157 nsg = iparg(10,ng)
2158 npt = iparg(6,ng)
2159
2160 mid = ixs(1,nft)
2161 muid = ipm(1,mid)
2162
2163 difftt = cputimeg(ng) - theogp(ng)
2164
2165 pct = ((cputimeg(ng) - theogp(ng))/cputimeg(ng) )*100
2166
2167 WRITE(66,'(I8,A,I8,A,I8,A,I8,A,I8,A,I8,A,I8,
2168 . A,E15.3,A,E15.3,A,E15.3,A,F8.3,A)')
2169 . ng,' ',ity,' ',nelem,' ',mtn,' ',muid,' ',npt,
2170 . ' ',nsg,' ',
2171 . cputimeg(ng),' ',theogp(ng),' ',difftt,' ',pct,'%'
2172
2173 ENDDO
2174
2175 3000 FORMAT(
2176 & /' '/' '/10x,' SOLID ELEMENT GROUPS'/
2177 & 10x,' --------------------'/
2178 & ' '/
2179 & ' '/
2180 & ' GRP_NB ELEM_TYP NUM_ELEM MAT_NUMB MAT_USERN',
2181 & ' NPT NSG CPUTIMEG',
2182 & ' TIMETHEO DIFF PCT')
2183
2184 END
2185!||====================================================================
2186!|| printtet4 ../engine/source/system/timer.F
2187!||--- called by ------------------------------------------------------
2188!|| printimeg ../engine/source/system/timer.F
2189!||--- calls -----------------------------------------------------
2190!|| my_fsort ../engine/source/system/timer.F
2191!||====================================================================
2192 SUBROUTINE printtet4(IPARG,THEOGP,NUMSOLG,IPM,IXS)
2193C-----------------------------------------------
2194C I m p l i c i t T y p e s
2195C-----------------------------------------------
2196#include "implicit_f.inc"
2197C-----------------------------------------------
2198C C o m m o n B l o c k s
2199C-----------------------------------------------
2200#include "com01_c.inc"
2201#include "param_c.inc"
2202#include "scr19_c.inc"
2203C-----------------------------------------------
2204C G l o b a l P a r a m e t e r s
2205C-----------------------------------------------
2206 COMMON /timerg/timerg(2,500000),cputimeg(500000)
2207 REAL TIMERG,CPUTIMEG
2208C-----------------------------------------------
2209C D u m m y A r g u m e n t s
2210C-----------------------------------------------
2211 INTEGER NUMSOLG
2212 INTEGER IPARG(NPARG,*),IXS(NIXS,*),IPM(NPROPMI,*)
2213 REAL THEOGP(NGROUP)
2214C-----------------------------------------------
2215C L o c a l V a r i a b l e s
2216C-----------------------------------------------
2217 INTEGER NGL,NG,NUMGROUP(NUMSOLG),INDEXSH(NUMSOLG),
2218 . ITY,MTN,NELEM,NPT,NSG,ISOLNOD,
2219 . NFT,IHBE,MMA,NFUNC,I,J,MID,MUID
2220 REAL DIFFTT,DIFFTTSH(NUMSOLG),TEMP(NUMSOLG)
2221 REAL THEOTP(NUMSOLG),REELTP(NUMSOLG)
2222 REAL TABX(3),TABMAT(3),NPTR,TIMMAT,TELT
2223 REAL TPSTHTOT,TPSREEL,PCT
2224C-----------------------------------------------
2225C S o u r c e L i n e s
2226C-----------------------------------------------
2227 ngl = 0
2228
2229 DO ng=1,ngroup
2230 ity = iparg(5,ng)
2231 mtn = iparg(1,ng)
2232 nelem = iparg(2,ng)
2233 npt = iparg(6,ng)
2234 nsg = iparg(10,ng)
2235 nft = iparg(3,ng)+1
2236 ihbe = iparg(23,ng)
2237
2238 IF (ity==1) THEN
2239 isolnod = iparg(28,ng)
2240 IF (isolnod==4) THEN
2241 ngl = ngl + 1
2242 numgroup(ngl) = ng
2243 diffttsh(ngl) = cputimeg(ng) - theogp(ng)
2244 ENDIF
2245 ENDIF
2246 ENDDO
2247
2248 DO i=1,ngl
2249 indexsh(i) = i
2250 ENDDO
2251
2252 CALL my_fsort(diffttsh,indexsh,numsolg,temp)
2253
2254 WRITE(66,3000)
2255
2256 DO i=1,numsolg
2257 ngl = indexsh(i)
2258 ng = numgroup(ngl)
2259 nft = iparg(3,ng)+1
2260
2261 ity = iparg(5,ng)
2262 mtn = iparg(1,ng)
2263 nelem = iparg(2,ng)
2264 nsg = iparg(10,ng)
2265 npt = iparg(6,ng)
2266
2267 mid = ixs(1,nft)
2268 muid = ipm(1,mid)
2269
2270 difftt = cputimeg(ng) - theogp(ng)
2271
2272 pct = ((cputimeg(ng) - theogp(ng))/cputimeg(ng) )*100
2273
2274 WRITE(66,'(I8,A,I8,A,I8,A,I8,A,I8,A,I8,A,I8,
2275 . A,E15.3,A,E15.3,A,E15.3,A,F8.3,A)')
2276 . ng,' ',ity,' ',nelem,' ',mtn,' ',muid,' ',npt,' ',
2277 . nsg,' ',
2278 . cputimeg(ng),' ',theogp(ng),' ',difftt,' ',pct,'%'
2279
2280 ENDDO
2281
2282 3000 FORMAT(
2283 & /' '/' '/10x,' TETRA 4 ELEMENT GROUPS'/
2284 & 10x,' --------------------'/
2285 & ' '/
2286 & ' '/
2287 & ' GRP_NB ELEM_TYP NUM_ELEM MAT_NUMB MAT_USERN',
2288 & ' NPT NSG CPUTIMEG',
2289 & ' TIMETHEO DIFF PCT')
2290
2291 END
2292!||====================================================================
2293!|| printtet10 ../engine/source/system/timer.F
2294!||--- called by ------------------------------------------------------
2295!|| printimeg ../engine/source/system/timer.F
2296!||--- calls -----------------------------------------------------
2297!|| my_fsort ../engine/source/system/timer.F
2298!||====================================================================
2299 SUBROUTINE printtet10(IPARG,THEOGP,NUMSOLG)
2300C-----------------------------------------------
2301C I m p l i c i t T y p e s
2302C-----------------------------------------------
2303#include "implicit_f.inc"
2304C-----------------------------------------------
2305C C o m m o n B l o c k s
2306C-----------------------------------------------
2307#include "com01_c.inc"
2308#include "param_c.inc"
2309#include "scr19_c.inc"
2310C-----------------------------------------------
2311C G l o b a l P a r a m e t e r s
2312C-----------------------------------------------
2313 COMMON /timerg/timerg(2,500000),cputimeg(500000)
2314 REAL TIMERG,CPUTIMEG
2315C-----------------------------------------------
2316C D u m m y A r g u m e n t s
2317C-----------------------------------------------
2318 INTEGER NUMSOLG
2319 INTEGER IPARG(NPARG,*)
2320 REAL THEOGP(NGROUP)
2321C-----------------------------------------------
2322C L o c a l V a r i a b l e s
2323C-----------------------------------------------
2324 INTEGER NGL,NG,NUMGROUP(NUMSOLG),INDEXSH(NUMSOLG),
2325 . ITY,MTN,NELEM,NPT,NSG,ISOLNOD,
2326 . NFT,IHBE,MMA,NFUNC,I,J
2327 REAL DIFFTT,DIFFTTSH(NUMSOLG),TEMP(NUMSOLG)
2328 REAL THEOTP(NUMSOLG),REELTP(NUMSOLG)
2329 REAL TABX(3),TABMAT(3),NPTR,TIMMAT,TELT
2330 REAL TPSTHTOT,TPSREEL,PCT
2331C-----------------------------------------------
2332C S o u r c e L i n e s
2333C-----------------------------------------------
2334 ngl = 0
2335
2336 DO ng=1,ngroup
2337 ity = iparg(5,ng)
2338 mtn = iparg(1,ng)
2339 nelem = iparg(2,ng)
2340 npt = iparg(6,ng)
2341 nsg = iparg(10,ng)
2342 nft = iparg(3,ng)+1
2343 ihbe = iparg(23,ng)
2344
2345 IF (ity==1) THEN
2346 isolnod = iparg(28,ng)
2347 IF (isolnod==10) THEN
2348 ngl = ngl + 1
2349 numgroup(ngl) = ng
2350 diffttsh(ngl) = cputimeg(ng) - theogp(ng)
2351 ENDIF
2352 ENDIF
2353 ENDDO
2354
2355 DO i=1,ngl
2356 indexsh(i) = i
2357 ENDDO
2358
2359 CALL my_fsort(diffttsh,indexsh,numsolg,temp)
2360
2361 WRITE(66,3000)
2362
2363 DO i=1,numsolg
2364 ngl = indexsh(i)
2365 ng = numgroup(ngl)
2366
2367 ity = iparg(5,ng)
2368 mtn = iparg(1,ng)
2369 nelem = iparg(2,ng)
2370 nsg = iparg(10,ng)
2371 npt = iparg(6,ng)
2372
2373 difftt = cputimeg(ng) - theogp(ng)
2374
2375 pct = ((cputimeg(ng) - theogp(ng))/cputimeg(ng) )*100
2376
2377 WRITE(66,'(I8,A,I8,A,I8,A,I8,A,I8,A,I8,A,E15.3,A,E15.3,A,
2378 . E15.3,A,F8.3,A)')
2379 . ng,' ',ity,' ',nelem,' ',mtn,' ',npt,' ',nsg,' ',
2380 . cputimeg(ng),' ',theogp(ng),' ',difftt,' ',pct,'%'
2381
2382 ENDDO
2383
2384 3000 FORMAT(
2385 & /' '/' '/10x,' TETRA 10 ELEMENT GROUPS'/
2386 & 10x,' ---------------------'/
2387 & ' '/
2388 & ' '/
2389 & ' GRP_NB ELEM_TYP NUM_ELEM MAT_NUMB ',
2390 & ' NPT NSG CPUTIMEG',
2391 & ' TIMETHEO DIFF PCT')
2392
2393 END
2394
2395!||====================================================================
2396!|| printtriangles ../engine/source/system/timer.F
2397!||--- called by ------------------------------------------------------
2398!|| printimeg ../engine/source/system/timer.F
2399!||--- calls -----------------------------------------------------
2400!|| my_fsort ../engine/source/system/timer.F
2401!||====================================================================
2402 SUBROUTINE printtriangles(IPARG,THEOGP,NUMTRIG)
2403C-----------------------------------------------
2404C I m p l i c i t T y p e s
2405C-----------------------------------------------
2406#include "implicit_f.inc"
2407C-----------------------------------------------
2408C C o m m o n B l o c k s
2409C-----------------------------------------------
2410#include "com01_c.inc"
2411#include "param_c.inc"
2412#include "scr19_c.inc"
2413C-----------------------------------------------
2414C G l o b a l P a r a m e t e r s
2415C-----------------------------------------------
2416 COMMON /timerg/timerg(2,500000),cputimeg(500000)
2417 REAL TIMERG,CPUTIMEG
2418C-----------------------------------------------
2419C D u m m y A r g u m e n t s
2420C-----------------------------------------------
2421 INTEGER NUMTRIG
2422 INTEGER IPARG(NPARG,*)
2423C
2424C-----------------------------------------------
2425C L o c a l V a r i a b l e s
2426C-----------------------------------------------
2427 INTEGER NGL,NG,NUMGROUP(NUMTRIG),INDEXSH(NUMTRIG),
2428 . ITY,MTN,NELEM,NPT,NSG,
2429 . NFT,IHBE,MMA,NFUNC,I,J
2430 REAL DIFFTT,DIFFTTSH(NUMTRIG),TEMP(NUMTRIG)
2431 REAL THEOTP(NUMTRIG),REELTP(NUMTRIG)
2432 REAL THEOGP(NGROUP),TABX(3),TABMAT(3),NPTR,TIMMAT,TELT
2433 REAL TPSTHTOT,TPSREEL,PCT
2434C-----------------------------------------------
2435C S o u r c e L i n e s
2436C-----------------------------------------------
2437
2438 ngl = 0
2439
2440
2441 DO ng=1,ngroup
2442 ity = iparg(5,ng)
2443 mtn = iparg(1,ng)
2444 nelem = iparg(2,ng)
2445 npt = iparg(6,ng)
2446 nsg = iparg(10,ng)
2447 nft = iparg(3,ng)+1
2448 ihbe = iparg(23,ng)
2449
2450 IF (ity==7) THEN
2451
2452 ngl = ngl + 1
2453
2454 numgroup(ngl) = ng
2455 diffttsh(ngl) = cputimeg(ng) - theogp(ng)
2456
2457 ENDIF
2458 ENDDO
2459
2460 DO i=1,ngl
2461 indexsh(i) = i
2462 ENDDO
2463
2464 CALL my_fsort(diffttsh,indexsh,numtrig,temp)
2465
2466 WRITE(66,3200)
2467
2468 DO i=1,numtrig
2469 ngl = indexsh(i)
2470 ng = numgroup(ngl)
2471
2472 ity = iparg(5,ng)
2473 mtn = iparg(1,ng)
2474 nelem = iparg(2,ng)
2475 nsg = iparg(10,ng)
2476 npt = iparg(6,ng)
2477
2478 difftt = cputimeg(ng) - theogp(ng)
2479
2480 pct = ((cputimeg(ng) - theogp(ng))/cputimeg(ng) )*100
2481
2482 WRITE(66,'(I8,A,I8,A,I8,A,I8,A,I8,A,I8,A,E15.3,A,E15.3,A,
2483 . E15.3,A,F8.3,A)')
2484 . ng,' ',ity,' ',nelem,' ',mtn,' ',npt,' ',nsg,' ',
2485 . cputimeg(ng),' ',theogp(ngl),' ',difftt,' ',pct,'%'
2486
2487 ENDDO
2488
2489 3200 FORMAT(
2490 & /' '/' '/10x,' TRIANGULAR ELEMENT GROUPS'/
2491 & 10x,' -------------------------'/
2492 & ' '/
2493 & ' '/
2494 & ' GRP_NB ELEM_TYP NUM_ELEM MAT_NUMB ',
2495 & ' NPT NSG CPUTIMEG',
2496 & ' TIMETHEO DIFF PCT')
2497
2498 END
2499
2500
2501
2502!||====================================================================
2503!|| interlagran ../engine/source/system/timer.F
2504!||--- called by ------------------------------------------------------
2505!|| printimeg ../engine/source/system/timer.F
2506!||====================================================================
2507 SUBROUTINE interlagran(TAB,LX,LTAB,X,Y)
2508
2509 REAL TAB(LTAB),LX(LTAB),X,Y,MUL
2510 INTEGER I,J,LTAB
2511
2512 y = 0.
2513
2514 DO i=1,ltab
2515
2516 mul = 1.
2517 DO j=1,ltab
2518 IF (i/=j) THEN
2519 mul= mul * (x-lx(j))/(lx(i)-lx(j))
2520 ENDIF
2521 ENDDO
2522
2523 y = y + tab(i)*mul
2524
2525 ENDDO
2526 END
2527
2528C mon tri flottant
2529!||====================================================================
2530!|| my_fsort ../engine/source/system/timer.F
2531!||--- called by ------------------------------------------------------
2532!|| printcoques ../engine/source/system/timer.F
2533!|| printsolides ../engine/source/system/timer.F
2534!|| printtet10 ../engine/source/system/timer.F
2535!|| printtet4 ../engine/source/system/timer.F
2536!|| printtriangles ../engine/source/system/timer.F
2537!||====================================================================
2538 SUBROUTINE my_fsort(ARRAY,INDEX,SIZE,WORK)
2539 INTEGER SIZE
2540 real
2541 . array(size),work(size),tmp
2542
2543 INTEGER INDEX(SIZE),I,J,ITMP
2544
2545 DO i=1,SIZE
2546 work(i) = array(i)
2547 ENDDO
2548
2549 DO i=1,SIZE
2550 DO j=1,size-i
2551 IF (work(j)<work(j+1)) THEN
2552 tmp = work(j)
2553 work(j) = work(j+1)
2554 work(j+1) = tmp
2555
2556 itmp = index(j)
2557 index(j) = index(j+1)
2558 index(j+1) = itmp
2559 ENDIF
2560 ENDDO
2561 ENDDO
2562 END
2563
2564!||====================================================================
2565!|| elapstime ../engine/source/system/timer.F
2566!||--- called by ------------------------------------------------------
2567!|| add_elapsed_time_mon_off ../engine/source/system/timer.F
2568!|| ecrit ../engine/source/output/ecrit.F
2569!|| printime ../engine/source/system/timer.F
2570!|| resol ../engine/source/engine/resol.F
2571!||--- calls -----------------------------------------------------
2572!||--- uses -----------------------------------------------------
2573!|| timer_mod ../engine/source/system/timer_mod.F90
2574!||====================================================================
2575 SUBROUTINE elapstime(T,ETIME)
2576 USE timer_mod
2577C reset timer elapsed time et calcul tu temps elapsed courant
2578C-----------------------------------------------
2579C I m p l i c i t T y p e s
2580C-----------------------------------------------
2581#include "implicit_f.inc"
2582C----------------------------------------------
2583C C o m m o n B l o c k s
2584C-----------------------------------------------
2585#include "task_c.inc"
2586!#include "timerr_c.inc"
2587 COMMON /iclock/clock0
2588 INTEGER CLOCK0
2589 COMMON /rclock/elapsed
2590 DOUBLE PRECISION ELAPSED
2591C-----------------------------------------------
2592C D u m m y A r g u m e n t s
2593C-----------------------------------------------
2594 TYPE(timer_), INTENT(INOUT) :: T
2595 DOUBLE PRECISION ETIME
2596C-----------------------------------------------
2597C L o c a l V a r i a b l e s
2598C-----------------------------------------------
2599 INTEGER CLOCK1, CLOCKRATE, NBMAX
2600 DOUBLE PRECISION SECS
2601#ifdef _OPENMP
2602 REAL(kind=8) :: omp_ending_time
2603 REAL(kind=8) omp_get_wtime
2604 external OMP_GET_WTIME
2605#endif
2606C-----------------------------------------------
2607 CALL system_clock(count=clock1, count_rate=clockrate,
2608 + count_max=nbmax )
2609
2610 IF(clock1 < 0 ) THEN
2611 CALL system_clock(count=clock1, count_rate=clockrate,
2612 + count_max=nbmax )
2613 ENDIF
2614#ifdef _OPENMP
2615 omp_ending_time = omp_get_wtime( )
2616 clock0 = clock1
2617 elapsed = omp_ending_time - t%OMP_STARTING_TIME
2618 etime = elapsed
2619#else
2620 IF(clock1 > 0 ) THEN
2621 secs = clock1-clock0 ! diff temps courant - temps initial (qui peut ne pas etre 0 !)
2622 IF(secs<zero) secs = secs + nbmax ! cas depassement nb de periode maximum
2623 secs = secs/clockrate
2624 clock0 = clock1 ! recuperation du temps courant dans clock0
2625 elapsed = elapsed + secs
2626 etime = elapsed
2627 ENDIF
2628#endif
2629C
2630 RETURN
2631 END
2632!||====================================================================
2633!|| startime_mp ../engine/source/system/timer.F
2634!||--- calls -----------------------------------------------------
2635!||====================================================================
2636 SUBROUTINE startime_mp(EVENT,NBR_GR,TIMER_MP)
2637C routine d'incrementation du timer event
2638C-----------------------------------------------
2639C I m p l i c i t T y p e s
2640C-----------------------------------------------
2641#include "implicit_f.inc"
2642C-----------------------------------------------
2643C C o m m o n B l o c k s
2644C-----------------------------------------------
2645#include "task_c.inc"
2646C-----------------------------------------------
2647C D u m m y A r g u m e n t s
2648C-----------------------------------------------
2649 INTEGER EVENT,NBR_GR
2650 my_real, DIMENSION(2,NBR_GR) :: timer_mp
2651C-----------------------------------------------
2652C L o c a l A r g u m e n t s
2653C-----------------------------------------------
2654 INTEGER I
2655
2656 CALL cpu_time(timer_mp(1,event))
2657
2658 RETURN
2659 END
2660
2661!||====================================================================
2662!|| stoptime_mp ../engine/source/system/timer.F
2663!||--- calls -----------------------------------------------------
2664!||====================================================================
2665 SUBROUTINE stoptime_mp(EVENT,NBR_GR,TIMER_MP,CPUTIME_MP)
2666C routine incrementation du timer event
2667C-----------------------------------------------
2668C I m p l i c i t T y p e s
2669C-----------------------------------------------
2670#include "implicit_f.inc"
2671C-----------------------------------------------
2672C C o m m o n B l o c k s
2673C-----------------------------------------------
2674#include "task_c.inc"
2675C-----------------------------------------------
2676C D u m m y A r g u m e n t s
2677C-----------------------------------------------
2678 INTEGER EVENT,NBR_GR
2679 my_real, DIMENSION(NBR_GR) :: cputime_mp
2680 my_real, DIMENSION(2,NBR_GR) :: timer_mp
2681C
2682 INTEGER CLOCK1, CLOCKRATE, NBMAX
2683 DOUBLE PRECISION SECS
2684 INTEGER NBR_ELEM,I
2685C **********************************
2686C
2687 CALL cpu_time(timer_mp(2,event))
2688 cputime_mp(event) = cputime_mp(event) +
2689 . (timer_mp(2,event)-timer_mp(1,event))
2690C
2691 RETURN
2692 END
2693
2694!||====================================================================
2695!|| cumultime_mp ../engine/source/system/timer.F
2696!||--- called by ------------------------------------------------------
2697!|| resol ../engine/source/engine/resol.F
2698!||--- calls -----------------------------------------------------
2699!|| printime_mp ../engine/source/system/timer.F
2700!|| spmd_ex_cputime ../engine/source/mpi/output/spmd_ex_cputime.F
2701!||====================================================================
2702 SUBROUTINE cumultime_mp(
2703 1 TAILLE,IPARG,
2704 2 IXC,IXQ,IXT,IXP,IXTG,
2705 3 IXR,IXS,KXIG3D,IPM,
2706 4 IGEO,GEO,POIN_UMP,CPUTIME_MP,
2707 5 NBR_GPMP,CPUTIME_MP_GLOB,TAB_UMP,PM,
2708 6 BUFMAT,TABMP_L,TAB_MAT )
2709C
2710C-----------------------------------------------
2711C I m p l i c i t T y p e s
2712C-----------------------------------------------
2713#include "implicit_f.inc"
2714C-----------------------------------------------
2715C G l o b a l P a r a m e t e r s
2716C-----------------------------------------------
2717 COMMON /timerg/timerg(2,500000),cputimeg(500000)
2718 REAL TIMERG,CPUTIMEG
2719C-----------------------------------------------
2720#include "com01_c.inc"
2721#include "com04_c.inc"
2722#include "task_c.inc"
2723#include "param_c.inc"
2724#include "scr19_c.inc"
2725C-----------------------------------------------
2726C D u m m y A r g u m e n t s
2727C-----------------------------------------------
2728 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IXS(NIXS,*),
2729 . IXQ(NIXQ,*),IXT(NIXT,*), IXP(NIXP,*),
2730 . IXR(NIXR,*),KXIG3D(*),IXTG(NIXTG,*),
2731 . IPM(NPROPMI,*),IGEO(NPROPGI,*),
2732 . TAILLE,NBR_GPMP,TABMP_L
2733
2734 my_real pm(npropm,*),geo(npropg,*),bufmat(*),tab_mat(ngroup)
2735c my_real, DIMENSION(NUMMAT,NUMGEO,TABMP_L), INTENT(IN) :: TAB_MAT_PROP
2736
2737C Mat + Prop timers
2738 INTEGER, DIMENSION(NUMMAT) :: POIN_UMP
2739 INTEGER, DIMENSION(7,TAILLE) :: TAB_UMP
2740 my_real, DIMENSION(TAILLE) :: cputime_mp
2741 my_real, DIMENSION(NBR_GPMP,NSPMD+1):: cputime_mp_glob
2742
2743
2744C-----------------------------------------------
2745C L o c a l V a r i a b l e s
2746C-----------------------------------------------
2747 INTEGER NG,ITY,MID,MUID,NFT,I,J,K,
2748 . PID,PUID,
2749 . ISOL,ISOL2,TEST,INDI3
2750 my_real, DIMENSION(NSPMD+1,TAILLE) :: CPUTIME_MP2
2751 INTEGER, DIMENSION(TAILLE) :: ELEM_MP
2752 my_real, DIMENSION(TAILLE) :: POIDS_REF
2753 my_real t1, t2
2754
2755
2756
2757 INTEGER NPROC, MSGTAG, MSGTAG2, ISTART, NGROUP_R,
2758 . nel,proc,ngf, ngl,
2759 . nelt,
2760 . irsize, msgtag3 ,nes,neq,nec,netg,net,nep,ner,neur,
2761 . mpt,npts,nptt,nptot,isolnod,jsrot
2762
2763 CHARACTER FILNAM*100,PROCNAM*4
2764 my_real
2765 . TS, TQ, TC, TTG, TT, TP, TR, TUR, DTU,MINS,MAXS,MINQ,
2766 . MAXQ,MINC,MAXC,MINTG,MAXTG,MINP,MAXP,MINT,MAXT,MINR,
2767 . MAXR,MINUR,MAXUR, CPUG, CPUELEM, T(8,2),CC
2768C
2769 INTEGER NUMSOLG,NUMSHG,NUMTRIG,NUMOTHER,MTN,NELEM,NPT,NSG,
2770 . ihbe,nfunc,filen,numsol4g,numsol10g,jhbe
2771
2772 real
2773 . theogp(ngroup),tabx(3),tabmat(3),nptr,timmat,telt,tpsthtot,
2774 . tpsreel,batozmult,tppond
2775 INTEGER RECHERCHE,OFF,NUMEL_RE
2776 my_real INVTREF
2777 my_real, DIMENSION(NUMMAT,NUMGEO) :: SOLTELT1_OLD,SOLTELT6_OLD,
2778 . soltelt8_old,soltelt16_old,soltelt20_old,tetra4_old,
2779 . tetra10_old,shtnl_old,tritnl_old
2780 REAL WD
2781C-----------------------------------------------
2782
2783 t1 = 0
2784 elem_mp = zero
2785 poids_ref = zero
2786 DO ng=1,ngroup
2787 ity = iparg(5,ng)
2788 nft = iparg(3,ng)+1
2789 k = 0
2790
2791 mtn = iparg(1,ng)
2792 nelem = iparg(2,ng)
2793 npt = iparg(6,ng)
2794 nsg = iparg(10,ng)
2795 ihbe = iparg(23,ng)
2796
2797
2798 IF(ity==1) THEN
2799 ! BRIC
2800 mid = ixs(1,nft)
2801 pid = ixs(10,nft)
2802 muid = ipm(1,mid)
2803 puid = igeo(1,pid)
2804 i = poin_ump(mid)
2805 k = i
2806 ELSEIF(ity==2) THEN
2807 ! QUAD
2808 mid = ixq(1,nft)
2809 pid = ixq(6,nft)
2810 muid = ipm(1,mid)
2811 puid = igeo(1,pid)
2812 i = poin_ump(mid)
2813 k = i
2814 ELSEIF(ity==3) THEN
2815 ! SHELL
2816 mid = ixc(1,nft)
2817 pid = ixc(6,nft)
2818 muid = ipm(1,mid)
2819 puid = igeo(1,pid)
2820 i = poin_ump(mid)
2821 k = i
2822 ELSEIF(ity==4) THEN
2823 ! TRUSS
2824 mid = ixt(1,nft)
2825 pid = ixt(4,nft)
2826 muid = ipm(1,mid)
2827 puid = igeo(1,pid)
2828 i = poin_ump(mid)
2829 k = i
2830 ELSEIF(ity==5) THEN
2831 ! BEAM
2832 mid = ixp(1,nft)
2833 pid = ixp(5,nft)
2834 muid = ipm(1,mid)
2835 puid = igeo(1,pid)
2836 i = poin_ump(mid)
2837 k = i
2838 ELSEIF(ity==6) THEN
2839 ! RESSORT MUID=0 --> 1er case de TAB_UMP
2840 mid = tab_ump(3,1)
2841 pid = ixr(1,nft)
2842 muid = 0
2843 puid = igeo(1,pid)
2844 i = 1
2845 k = 1
2846 ELSEIF(ity==7) THEN
2847 ! SHELL_3N
2848 mid = ixtg(1,nft)
2849 pid = ixtg(5,nft)
2850 muid = ipm(1,mid)
2851 puid = igeo(1,pid)
2852 i = poin_ump(mid)
2853 k = i
2854 ENDIF
2855
2856 IF(k /= 0) THEN
2857 test = 0
2858 DO WHILE((k<=taille).AND.(test==0))
2859 ! +-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+
2860 IF((tab_ump(1,k)==muid)) THEN
2861 ! *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
2862 IF(tab_ump(2,k)==puid) THEN
2863 ! -------------------------------
2864 IF(ity/=1) THEN
2865 IF (tab_ump(7,k)==ity) THEN
2866 cputime_mp(k) = cputime_mp(k) + cputimeg(ng)
2867 elem_mp(k) = elem_mp(k) + iparg(2,ng)
2868 test=1
2869 ! ---------------------
2870 IF(ity==3) THEN
2871c POIDS_REF(K)=TAB_MAT_PROP(MID,PID,1)
2872 poids_ref(k)=tab_mat(ng)
2873
2874 ELSEIF(ity==7) THEN
2875c POIDS_REF(K)=TAB_MAT_PROP(MID,PID,2)
2876 poids_ref(k)=tab_mat(ng)
2877 ENDIF ! <--- fin ITY==3 or 7
2878 ! ---------------------
2879 ELSE ! <--- fin TAB_UMP(7,K)==ITY
2880 k=k+1
2881 ENDIF
2882 ! -------------------------------
2883 ELSE ! <--- fin ITY/=1
2884 isol = iparg(28,ng)
2885 IF((isol==4).OR.(isol==6).OR.
2886 . (isol==8).OR.(isol==10).OR.
2887 . (isol==16).OR.(isol==20)) THEN
2888 isol=isol+1000
2889 ELSE
2890 isol = 1
2891 ENDIF
2892 IF(tab_ump(7,k)==isol) THEN
2893 cputime_mp(k) = cputime_mp(k) + cputimeg(ng)
2894 elem_mp(k) = elem_mp(k) + iparg(2,ng)
2895 test=1
2896 ! -----------------
2897 IF(isol==1008) THEN
2898 indi3 = 3
2899 ELSEIF(isol==1010) THEN
2900 indi3 = 4
2901 ELSEIF(isol==1016) THEN
2902 indi3 = 5
2903 ELSEIF(isol==1020) THEN
2904 indi3 = 6
2905 ELSEIF(isol==1006) THEN
2906 indi3 = 7
2907 ELSEIF(isol==1004) THEN
2908 indi3 = 8
2909 ELSE
2910 indi3 = 9
2911 ENDIF
2912 ! -----------------
2913c POIDS_REF(K)= TAB_MAT_PROP(MID,PID,INDI3)
2914 poids_ref(k)= tab_mat(ng)
2915 ELSE ! <--- fin TAB_UMP(7,K)==ISOL
2916 k=k+1
2917 ENDIF
2918 ENDIF
2919 ELSE ! <--- fin PUID
2920 k=k+1
2921 ENDIF
2922 ! *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
2923 ELSE ! <--- fin MUID
2924 test = 1
2925! PRINT*,ISPMD,NG,' ERRORRRRRRRRR ',ITY,MUID,PUID,MID,PID,MTN,CPUTIMEG(NG)
2926! T1=T1+CPUTIMEG(NG)
2927 ENDIF
2928 ! +-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+
2929 ENDDO
2930 ENDIF
2931 ENDDO
2932
2933 DO j=1,taille
2934 DO i=1,nspmd+1
2935 cputime_mp2(i,j) = zero
2936 ENDDO
2937 ENDDO
2938
2939 IF(nspmd > 1) THEN
2940 ! MPI Comm
2941 CALL spmd_ex_cputime(taille,cputime_mp,cputime_mp2)
2942 IF(ispmd==0) THEN
2943 t1 = zero
2944 t2 = zero
2945 DO i=1,taille
2946 DO j=1,nspmd
2947 t1 = t1 + cputime_mp2(j,i)
2948 cputime_mp2(nspmd+1,i) = cputime_mp2(nspmd+1,i) + cputime_mp2(j,i)/(ncycle)
2949 ENDDO
2950 IF((cputime_mp2(nspmd+1,i)>= zero).AND.(tab_ump(5,i)>0)) THEN
2951 cputime_mp2(nspmd+1,i) = cputime_mp2(nspmd+1,i)/(tab_ump(5,i))
2952 ELSE
2953 cputime_mp2(nspmd+1,i) = zero
2954 ENDIF
2955 ENDDO
2956 ENDIF ! <-- (ISPMD==0)
2957 ELSE
2958 DO i=1,taille
2959 cputime_mp2(1,i) = cputime_mp(i)
2960 cputime_mp2(2,i) = cputime_mp(i)/ncycle
2961 IF((cputime_mp2(2,i)>= zero).AND.(tab_ump(5,i)>0)) THEN
2962 cputime_mp2(2,i) = cputime_mp2(2,i)/(tab_ump(5,i))
2963 ELSE
2964 cputime_mp2(2,i) = zero
2965 ENDIF
2966 ENDDO
2967 ENDIF
2968
2969 DO i=1,taille
2970 IF((cputime_mp(i)>zero).AND.(elem_mp(i)>0)) THEN
2971 cputime_mp(i) = cputime_mp(i)/(elem_mp(i)*ncycle)
2972 ENDIF
2973 ENDDO
2974C
2975 CALL printime_mp(taille,tab_ump,cputime_mp2,poin_ump,t1,elem_mp,
2976 . cputime_mp,poids_ref)
2977
2978 RETURN
2979 END
2980
2981
2982!||====================================================================
2983!|| printime_mp ../engine/source/system/timer.F
2984!||--- called by ------------------------------------------------------
2985!|| cumultime_mp ../engine/source/system/timer.F
2986!||====================================================================
2987 SUBROUTINE printime_mp(TAILLE,TAB_UMP,CPUTIME_MP2,POIN_UMP,T1,
2988 . ELEM_MP,CPUTIME_MP,POIDS_REF)
2989C routine d'ecriture des timers
2990C-----------------------------------------------
2991C I m p l i c i t T y p e s
2992C-----------------------------------------------
2993#include "implicit_f.inc"
2994C-----------------------------------------------
2995C G l o b a l P a r a m e t e r s
2996C-----------------------------------------------
2997 COMMON /timerg/timerg(2,500000),cputimeg(500000)
2998 REAL TIMERG,CPUTIMEG
2999C-----------------------------------------------
3000#include "com01_c.inc"
3001#include "com04_c.inc"
3002#include "task_c.inc"
3003#include "units_c.inc"
3004#include "chara_c.inc"
3005#include "scr19_c.inc"
3006C-----------------------------------------------
3007C D u m m y A r g u m e n t s
3008C-----------------------------------------------
3009 INTEGER TAILLE
3010 INTEGER, DIMENSION(7,TAILLE) :: TAB_UMP
3011 my_real T1
3012 my_real, DIMENSION(NSPMD+1,TAILLE) :: CPUTIME_MP2
3013 INTEGER, DIMENSION(NUMMAT) :: POIN_UMP
3014 INTEGER, DIMENSION(TAILLE) :: ELEM_MP
3015 my_real, DIMENSION(TAILLE) :: POIDS_REF
3016 my_real, DIMENSION(TAILLE) :: cputime_mp
3017C-----------------------------------------------
3018C L o c a l V a r i a b l e s
3019C-----------------------------------------------
3020
3021 CHARACTER FILNAM*100,PROCNAM*4
3022C
3023 INTEGER ITY,MTN,NEL,MID,PID,MUID,PUID,FILEN,
3024 . J,I,PROC
3025 my_real TIME_MATPROP,POIN,TIME_REF!,TIME_ELE
3026C-----------------------------------------------
3027
3028 IF(ispmd==0) THEN
3029C ro ouverture du fichier DDW proc = 0
3030 filnam=rootnam(1:rootlen)//'_'//chrun//'.ddw'
3031 OPEN(unit=66,file=filnam,access='SEQUENTIAL',
3032 . form='FORMATTED',status='UNKNOWN')
3033 filen=rootlen+14
3034
3035 WRITE(66,'(A)') 'DOMAIN DECOMPOSITION ANALYSIS FILE '
3036 WRITE(66,'(A)') '---------------------------------- '
3037 WRITE(66,'(A)') ' '
3038 WRITE(66,'(A)') ' '
3039 WRITE(66,1000) ncycle, t1
3040 WRITE(66,3000)
3041
3042 DO i=1,taille
3043 time_matprop = cputime_mp2(nspmd+1,i)
3044 nel = tab_ump(5,i)
3045 muid = tab_ump(1,i)
3046 puid = tab_ump(2,i)
3047 mid = tab_ump(3,i)
3048 pid = tab_ump(4,i)
3049 mtn = tab_ump(6,i)
3050 ity = tab_ump(7,i)
3051
3052 WRITE(66,'(I12,A,I12,A,I12,A,I12,A,I12,A,I12,A,
3053 . I12,A,E15.5)')
3054 . mtn,' ',ity,' ',nel,' ',mid,' ',muid,' ',pid,
3055 . ' ',puid,' ', time_matprop
3056
3057 ENDDO
3058!
3059 WRITE(66,1100)
3060 WRITE(66,1400) nummat,numgeo
3061 DO i=1,(nummat)
3062 poin = poin_ump(i)
3063 WRITE(66,'(I8,A)') poin_ump(i)
3064 ENDDO
3065 WRITE(66,'(A)') '/END'
3066 CLOSE(unit=66)
3067 WRITE (iout,1300) filnam(1:filen)
3068 WRITE (istdo,1300) filnam(1:filen)
3069 ENDIF
3070
3071C ro ouverture du fichier DDW par proc
3072 IF(iddwstat/=0) THEN
3073 WRITE(procnam,'(I4.4)')ispmd+1
3074 filnam=rootnam(1:rootlen)//'_'//chrun//'_'//procnam//'.ddw'
3075 OPEN(unit=67,file=filnam,access='SEQUENTIAL',
3076 . form='FORMATTED',status='UNKNOWN')
3077 filen=rootlen+14
3078
3079 WRITE(67,'(A)') 'DOMAIN DECOMPOSITION ANALYSIS FILE '
3080 WRITE(67,'(A)') '---------------------------------- '
3081 WRITE(67,'(A)') ' '
3082 WRITE(67,'(a)') ' '
3083 WRITE(67,2000) NCYCLE
3084 PROC = ISPMD
3085 WRITE(67,1500) PROC
3086 WRITE(67,3101)
3087!
3088 DO I=1,TAILLE
3089 TIME_MATPROP = CPUTIME_MP(I)
3090 TIME_REF = POIDS_REF(I)
3091 IF(TIME_MATPROP>ZERO) THEN
3092 NEL = ELEM_MP(I)
3093 MUID = TAB_UMP(1,I)
3094 PUID = TAB_UMP(2,I)
3095 MID = TAB_UMP(3,I)
3096 PID = TAB_UMP(4,I)
3097 MTN = TAB_UMP(6,I)
3098 ITY = TAB_UMP(7,I)
3099
3100
3101 WRITE(67,'(i12,a,i12,a,i12,a,i12,a,i12,a,i12,a,
3102 . i12,a,e15.5,a,e15.5)')
3103 . MTN,' ',ITY,' ',NEL,' ',MID,' ',MUID,' ',PID,
3104 . ' ',PUID,' ', TIME_MATPROP,' ',TIME_REF
3105 ENDIF
3106
3107
3108
3109 ENDDO
3110 WRITE(67,'(a)') '/END'
3111 CLOSE(UNIT=67)
3112 ENDIF ! end IDDWSTAT/=0
3113
3114
3115 1000 FORMAT(
3116 & 4X,'TOTAL NUMBER OF CYCLES. . . . . . . . . . . . . .',I10/
3117 & 4X,'TOTAL ELEMENT FORCE TIME. . . . . . . . . . . . .',1PG20.13)
3118 2000 FORMAT(
3119 & 4X,'TOTAL NUMBER OF CYCLES. . . . . . . . . . . . . .',I10)
3120 1400 FORMAT(
3121 & 4X,'MATERIAL NUMBER . . . . . . . . . . . . . .',I10/
3122 & 4X,'PROPERTY NUMBER . . . . . . . . . . . . . .',I10)
3123
3124 1100 FORMAT(
3125 & /' '/' '/4X,' POINTER ')
3126
3127 1500 FORMAT(
3128 & /' '/' '/4X,'ISPMD. . . . . . . . . . . . . .',I10)
3129
3130 1200 FORMAT(
3131 & 4X,'SOLID, SHELL, TRIANGULAR GROUP TIME'/,
3132 & 4X,'-----------------------------------'/,
3133 & 4X,'TOTAL GROUP TIME . . . . . . . . . . . . . . . .',1PG20.13/
3134 & 4X,'STARTER ESTIMATED GROUP TIME . . . . . . . . . .',1PG20.13)
3135
3136 1300 FORMAT (4X,' DD ANALYSIS FILE:',1X,A,' WRITTEN')
3137
3138 3000 FORMAT(
3139 & /' '/' '/10X,' MATERIAL/PROPERTY TIMER'/
3140 & 10x,' --------------------'/
3141 & ' '/
3142 & ' '/
3143 & ' LAW_NUMB ELEM_TYP NUM_ELEM MAT_NUMB MAT_USER',
3144 & ' PROP_NUMB PROP_USER CPUTIME')
3145
3146 3100 FORMAT(
3147 & ' LAW_NUMB ELEM_TYP NUM_ELEM MAT_NUMB MAT_USER',
3148 & ' PROP_NUMB PROP_USER CPUTIME')
3149
3150 3101 FORMAT(
3151 & ' LAW_NUMB ELEM_TYP NUM_ELEM MAT_NUMB MAT_USER',
3152 & ' PROP_NUMB PROP_USER CPUTIME')
3153C
3154 RETURN
3155 END
3156
3157C workaround / one variable in commandline.inc conflicts with scr07.inc
3158!||====================================================================
3159!|| get_mem_map_var ../engine/source/system/timer.F
3160!||--- called by ------------------------------------------------------
3161!|| printime ../engine/source/system/timer.F
3162!||====================================================================
3163 SUBROUTINE get_mem_map_var(GOT_M_MAP)
3164C-----------------------------------------------
3165C I m p l i c i t T y p e s
3166C-----------------------------------------------
3167#include "implicit_f.inc"
3168C-----------------------------------------------
3169C C o m m o n B l o c k s
3170C-----------------------------------------------
3171#include "commandline.inc"
3172C-----------------------------------------------
3173C D u m m y A r g u m e n t s
3174C-----------------------------------------------
3175 INTEGER GOT_M_MAP
3176C-----------------------------------------------
3177 GOT_M_MAP = got_mem_map
3178
3179 END
3180
3181! ----------------------------------------
3182!||====================================================================
3183!|| add_elapsed_time_mon_off ../engine/source/system/timer.F
3184!||--- called by ------------------------------------------------------
3185!|| resol ../engine/source/engine/resol.F
3186!||--- calls -----------------------------------------------------
3187!|| close_c ../common_source/tools/input_output/write_routtines.c
3188!|| cur_fil_c ../common_source/tools/input_output/write_routtines.c
3189!|| elapstime ../engine/source/system/timer.F
3190!|| fseek_end_c ../common_source/tools/input_output/write_routtines.c
3191!|| open_c ../common_source/tools/input_output/write_routtines.c
3192!|| write_dpdb ../common_source/tools/input_output/write_db.F
3193!||--- uses -----------------------------------------------------
3194!|| inoutfile_mod ../common_source/modules/inoutfile_mod.F
3195!|| time_mod ../engine/share/modules/time_mod.F
3196!|| timer_mod ../engine/source/system/timer_mod.F90
3197!||====================================================================
3199! When /MON/OFF is used, main processor
3200! must write the elapsed time
3201C-----------------------------------------------
3202C M o d u l e s
3203C-----------------------------------------------
3204 USE timer_mod
3205 USE time_mod
3206 USE inoutfile_mod
3207C-----------------------------------------------
3208C I m p l i c i t T y p e s
3209C-----------------------------------------------
3210#include "implicit_f.inc"
3211C-----------------------------------------------
3212C C o m m o n B l o c k s
3213C-----------------------------------------------
3214#include "task_c.inc"
3215 COMMON /iclock/clock0
3216 INTEGER CLOCK0
3217 COMMON /RCLOCK/ELAPSED
3218 DOUBLE PRECISION ELAPSED
3219C-----------------------------------------------
3220C L o c a l V a r i a b l e s
3221C-----------------------------------------------
3222 TYPE(timer_), INTENT(INOUT) :: T
3223 INTEGER I, NPROC
3224 DOUBLE PRECISION SECS
3225 INTEGER :: LEN_RST_NAME
3226 LOGICAL :: BOOL_FILE
3227 INTEGER :: CURRENT_RUN,OFFSET
3228 INTEGER, DIMENSION(2148) :: RST_NAME
3229 INTEGER :: LEN_TMP_NAME
3230 CHARACTER(len=4096) :: TMP_NAME
3231
3232C---------------------------
3233C Elapsed time & Estimated Speedup
3234C---------------------------
3235 CALL elapstime(t,secs)
3236! ---------------------------
3237 IF(ispmd==0) THEN
3238 current_run = global_comp_time%RUN_NBR
3239 global_comp_time%ENGINE_TIME(current_run) = secs
3240 len_rst_name = len_trim(global_comp_time%RST_NAME)
3241 len_tmp_name = outfile_name_len +len_rst_name
3242 tmp_name=outfile_name(1:outfile_name_len)//global_comp_time%RST_NAME(1:len_rst_name)
3243
3244 DO i = 1, len_tmp_name
3245 rst_name(i) = ichar(tmp_name(i:i))
3246 END DO
3247 bool_file=.false.
3248 INQUIRE(file=tmp_name(1:len_tmp_name), exist=bool_file)
3249! check if *_0000.rst exists
3250 IF(bool_file) THEN
3251 CALL cur_fil_c(20)
3252 CALL open_c(rst_name,len_tmp_name,2)
3253! write the starter + engine elapsed time
3254 offset= - storage_size(global_comp_time%ENGINE_TIME(current_run))/8
3255 CALL fseek_end_c(offset)
3256 CALL write_dpdb(global_comp_time%ENGINE_TIME(current_run),1)
3257 CALL close_c
3258 ENDIF
3259 ENDIF
3260! ---------------------------
3261
3262 RETURN
3263 END SUBROUTINE add_elapsed_time_mon_off
3264! ----------------------------------------
#define my_real
Definition cppsort.cpp:32
norm(diag(diag(diag(inv(mat))) -id.SOL), 2) % destroy mumps instance id.JOB
subroutine printtriangles(iparg, theogp, numtrig)
Definition timer.F:2403
subroutine print_summary(flag, ntimax, tabtime, titles, out_id, itherm)
Definition timer.F:31
subroutine cumultime_mp(taille, iparg, ixc, ixq, ixt, ixp, ixtg, ixr, ixs, kxig3d, ipm, igeo, geo, poin_ump, cputime_mp, nbr_gpmp, cputime_mp_glob, tab_ump, pm, bufmat, tabmp_l, tab_mat)
Definition timer.F:2709
subroutine printsolides(iparg, theogp, numsolg, ipm, ixs)
Definition timer.F:2085
subroutine print_block(title_part, tabtime, ntimax, flag, out_id, nfields, fields, titles)
Definition timer.F:406
subroutine stoptime_mp(event, nbr_gr, timer_mp, cputime_mp)
Definition timer.F:2666
subroutine get_mem_map_var(got_m_map)
Definition timer.F:3164
subroutine startime_mp(event, nbr_gr, timer_mp)
Definition timer.F:2637
subroutine printtet4(iparg, theogp, numsolg, ipm, ixs)
Definition timer.F:2193
subroutine printime_mp(taille, tab_ump, cputime_mp2, poin_ump, t1, elem_mp, cputime_mp, poids_ref)
Definition timer.F:2989
subroutine printcpu(iflag)
Definition timer.F:1336
subroutine printimeg(iparg, pm, ipm, ixc, ixtg, ixs)
Definition timer.F:1568
subroutine my_fsort(array, index, size, work)
Definition timer.F:2539
subroutine initimeg(ng)
Definition timer.F:1432
subroutine add_elapsed_time_mon_off(t)
Definition timer.F:3199
subroutine interlagran(tab, lx, ltab, x, y)
Definition timer.F:2508
subroutine startimeg(ng)
Definition timer.F:1487
subroutine printcoques(iparg, ixc, ipm, theogp, numshg)
Definition timer.F:1964
subroutine elapstime(t, etime)
Definition timer.F:2576
subroutine stoptimeg(ng)
Definition timer.F:1535
subroutine printtet10(iparg, theogp, numsolg)
Definition timer.F:2300
subroutine print_runtime()
Definition timer.F:1266
subroutine fixvel(ibfv, a, v, npc, tf, vel, ms, x, skew, ar, vr, in, nsensor, sensor_tab, weight, depla, rby, iframe, xframe, dr, nodnx_sms, nodes, tt_double, depla_double, python, wfext)
Definition fixvel.F:42
subroutine forints(pm, geo, x, a, ar, v, vr, ms, in, w, elbuf, val2, veul, fv, stifn, stifr, fsky, tf, bufmat, partsav, fani, fsav, skew, dt2t, iads, iparg, npc, ixs, neltst, ityptst, ipart, iparts, itab, fskyi, bufgeo, kxx, ixx, isky, ipartx, gresav, grth, igrth, elbuf_tab)
Definition forints.F:48
subroutine imp_solv(timers, python, icode, iskew, iskwn, ipart, ixtg, ixs, ixq, ixc, ixt, ixp, ixr, ixtg1, itab, itabm1, npc, ibcl, ibfv, sensor_tab, nnlink, lnlink, iparg, igrv, ipari, intbuf_tab, nprw, iconx, npby, lpby, lrivet, nstrf, ljoint, icodt, icodr, isky, adsky, iads_f, ilink, llink, weight, itask, ibvel, lbvel, fbvel, x, d, v, vr, dr, thke, damp, ms, in, pm, skews, geo, eani, bufmat, bufgeo, bufsf, tf, forc, vel, fsav, agrv, fr_wave, parts0, elbuf, rby, rivet, fr_elem, iad_elem, wa, a, ar, stifn, stifr, partsav, fsky, fskyi, iframe, xframe, w16, iactiv, fskym, igeo, ipm, wfext, nodft, nodlt, nint7, num_imp, ns_imp, ne_imp, ind_imp, it, rwbuf, lprw, fr_wall, nbintc, intlist, fopt, rwsav, fsavd, graphe, fac_k, ipiv_k, nkcond, nsensor, monvol, igrsurf, fr_mv, volmon, dirul, nodglob, mumps_par, cddlp, isendto, irecvfrom, newfront, imsch, i2msch, isizxv, ilenxv, islen7, irlen7, islen11, irlen11, islen17, irlen17, irlen7t, islen7t, kinet, num_imp1, temp, dt2prev, waint, lgrav, sh4tree, sh3tree, irlen20, islen20, irlen20t, islen20t, irlen20e, islen20e, irbe3, lrbe3, frbe3, fr_i2m, iad_i2m, fr_rbe3m, iad_rbe3m, frwl6, irbe2, lrbe2, intbuf_tab_c, ikine, diag_sms, icfield, lcfield, cfield, count_remslv, count_remslve, elbuf_tab, elbuf_imp, xdp, weight_md, stack, dimfb, fbsav6, stabsen, tabsensor, drape_sh4n, drape_sh3n, h3d_data, multi_fvm, igrbric, igrsh4n, igrsh3n, igrbeam, forneqs, maxdgap, nddl0, nnzk0, it_t, impbuf_tab, cptreac, fthreac, nodreac, drapeg, interfaces, th_surf, dpl0cld, vel0cld, snpc, stf, glob_therm, wfext_md)
Definition imp_solv.F:173
#define max(a, b)
Definition macros.h:21
for(i8=*sizetab-1;i8 >=0;i8--)
character(len=outfile_char_len) outfile_name
integer outfile_name_len
type(time_type) global_comp_time
Definition time_mod.F:56
subroutine mam_nm(f_nd, l_nd, nd, md, a, b, c, wddl, itask)
Definition produt_v.F:2840
subroutine rbyfor(timers, rby, a, ar, x, vr, fsav, in, stifn, stifr, fani, lpby, npby, weight, ms, v, igrsurf, bufsf, icodr, iskew, skew, kind, iad_rby, fr_rby6, rby6, irbkin_l, nrbykin_l, nativ_sms, dimfb, fbsav6, stabsen, tabsensor, nodreac, fthreac, cptreac, dampr, sdamp, damp, ndamp_vrel, id_damp_vrel, igrnod, tagslv_rby, iparit, wfext, ndamp_vrel_rbyg, size_rby6_c, rby6_c)
Definition rbyfor.F:53
subroutine resol(timers, element, nodes, coupling, af, iaf, iskwn, neth, ipart, nom_opt, kxx, ixx, ixtg, ixs, ixq, ixt, ixp, ixr, ifill, mat_elem, ims, npc, ibcl, ibfv, idum, las, laccelm, nnlink, lnlink, iparg, dd_iad, igrv, iexlnk, kinet, ipari, nprw, iconx, npby, lpby, lrivet, nstrf, ljoint, nodpor, monvol, ilink, llink, linale, neflsw, nnflsw, icut, cluster, itask, inoise, thke, damp, pm, skews, geo, eani, bufmat, bufgeo, bufsf, w, veul, fill, dfill, alph, wb, dsave, asave, msnf, tf, forc, vel, fsav, fzero, xlas, accelm, agrv, fr_wave, failwave, parts0, elbuf, rwbuf, sensors, rwsav, rby, rivet, secbuf, volmon, lambda, wa, fv, partsav, uwa, val2, phi, segvar, r, crflsw, flsw, fani, xcut, anin, tani, secfcum, bufnois, idata, rdata, iframe, kxsp, ixsp, nod2sp, ispsym, ispcond, xframe, spbuf, xspsym, vspsym, pv, fsavd, ibvel, lbvel, wasph, w16, isphio, lprtsph, lonfsph, vsphio, fbvel, lagbuf, ibcslag, iactiv, dampr, gjbufi, gjbufr, rbmpc, ibmpc, sphveln, nbrcvois, nbsdvois, lnrcvois, lnsdvois, nercvois, nesdvois, lercvois, lesdvois, npsegcom, lsegcom, nporgeo, ixtg1, npbyl, lpbyl, rbyl, igeo, ipm, madprt, madsh4, madsh3, madsol, madnod, madfail, iad_rby, fr_rby, fr_wall, iad_rby2, fr_rby2, iad_i2m, fr_i2m, addcni2, procni2, iadi2, fr_mv, iadmv2, fr_ll, fr_rl, iadcj, fr_cj, fr_sec, iad_sec, iad_cut, fr_cut, rg_cut, newfront, fr_mad, fxbipm, fxbrpm, fxbnod, fxbmod, fxbglm, fxbcpm, fxbcps, fxblm, fxbfls, fxbdls, fxbdep, fxbvit, fxbacc, fxbelm, fxbsig, fxbgrvi, fxbgrvr, eigipm, eigibuf, eigrpm, lnodpor, fr_i18, graphe, iflow, rflow, lgrav, dd_r2r, fasolfr, fr_lagf, llagf, lprw, icontact, rcontact, sh4tree, sh3tree, ipadmesh, padmesh, msc, mstg, inc, intg, ptg, iskwp, nskwp, isensp, nsensp, iaccp, naccp, ipart_state, acontact, pcontact, factiv, sh4trim, sh3trim, mscnd, incnd, ibfflux, fbfflux, rbym, irbym, lnrbym, icodrbym, ibcv, fconv, ibftemp, fbftemp, iad_rbym, fr_rbym, weight_rm, ms_ply, zi_ply, inod_pxfem, iel_pxfem, iadc_pxfem, adsky_pxfem, icode_ply, icodt_ply, iskew_ply, admsms, madclnod, nom_sect, mcpc, mcptg, dmelc, dmeltg, mssa, dmels, mstr, dmeltr, msp, dmelp, msrt, dmelrt, ibcr, fradia, res_sms, table, irbe2, lrbe2, iad_rbe2, fr_rbe2, phie, msf, procne_pxfem, iadsdp_pxfem, iadrcp_pxfem, icfield, lcfield, cfield, msz2, diag_sms, iloadp, lloadp, loadp, inod_crk, iel_crk, iadc_crk, adsky_crk, cne_crk, procne_crk, iadsdp_crk, iadrcp_crk, ibufssg_io, ibc_ply, dmint2, ibordnode, elbuf_tab, por, nodedge, iad_edge, fr_edge, fr_nbedge, crknodiad, lgauge, gauge, igaup, ngaup, nodlevxf, dd_r2r_elem, nodglobxfe, sph2sol, sol2sph, irst, dmsph, wagap, xfem_tab, elcutc, nodenr, kxfenod2elc, enrtag, rthbu f, kxig3d, ixig3d, knot, wige, wsmcomp, stack, cputime_mp_glob, cputime_mp, tab_ump, poin_ump, sol2sph_typ, irunn_bis, addcsrect, iad_frnor, fr_nor, procnor, iad_fredg, fr_edg, drape_sh4n, drape_sh3n, tab_mat, nativ0_sms, multi_fvm, segquadfr, ms_2d, h3d_data, subsets, igrnod, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, igrpart, igrsurf, forneqs, nloc_dmg, iskwp_l, knotlocpc, knotlocel, pinch_data, tag_skins6, ale_connectivity, xcell, xface, ne_nercvois, ne_nesdvois, ne_lercvois, ne_lesdvois, ibcscyc, lbcscyc, t_monvol, id_global_vois, face_vois, dynain_data, fcont_max, ebcs_tab, diffusion, kloadpinter, loadpinter, dgaploadint, drapeg, user_windows, output, interfaces, dt, loads, python, dpl0cld, vel0cld, ndamp_vrel, id_damp_vrel, fr_damp_vrel, ndamp_vrel_rbyg, names_and_titles, unitab, liflow, lrflow, glob_therm, pblast, rbe3)
Definition resol.F:633
subroutine spmd_ex_cputime(dim_tab3, tab3, tab4)
subroutine spmd_printcpuinfo(hostname, lenh, cpunam, lenc, frequence, mem, swap)
void get_solver_stacksize(char *stsize, int *stsize_len, char *omp_stsize, int *omp_stsize_len)
subroutine my_etime(timer)
Definition machine.F:114
subroutine my_flush(iunit)
Definition machine.F:147
void cpuinfo(char *hostname, int *lenhost, char *cputype, int *lencputype, int *frequence, int *memory, int *swap)
Definition mon_c.c:671
subroutine upxfem_tagxp(xfem_tab, iparg, ixc, ngrouc, igrouc, ixtg, iadc_crk, iel_crk, inod_crk, elcutc, nodedge, enrtag, crkedge, xedge4n, xedge3n, itab)
subroutine write_dpdb(a, n)
Definition write_db.F:302
void close_c()
void fseek_end_c(int *lseek)
void cur_fil_c(int *nf)
void open_c(int *ifil, int *len, int *mod)