OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
timer.F File Reference
#include "implicit_f.inc"
#include "macro.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "impl1_c.inc"
#include "remesh_c.inc"
#include "sms_c.inc"
#include "sphcom.inc"
#include "task_c.inc"
#include "timeri_c.inc"
#include "scr05_c.inc"
#include "timerc_c.inc"
#include "units_c.inc"
#include "filescount_c.inc"
#include "param_c.inc"
#include "chara_c.inc"
#include "scr19_c.inc"
#include "ddspmd_c.inc"
#include "commandline.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine print_summary (flag, ntimax, tabtime, titles, out_id, itherm)
subroutine print_block (title_part, tabtime, ntimax, flag, out_id, nfields, fields, titles)
subroutine printime (t, itherm, output)
subroutine print_runtime ()
subroutine printcpu (iflag)
subroutine initimeg (ng)
subroutine startimeg (ng)
subroutine stoptimeg (ng)
subroutine printimeg (iparg, pm, ipm, ixc, ixtg, ixs)
subroutine printcoques (iparg, ixc, ipm, theogp, numshg)
subroutine printsolides (iparg, theogp, numsolg, ipm, ixs)
subroutine printtet4 (iparg, theogp, numsolg, ipm, ixs)
subroutine printtet10 (iparg, theogp, numsolg)
subroutine printtriangles (iparg, theogp, numtrig)
subroutine interlagran (tab, lx, ltab, x, y)
subroutine my_fsort (array, index, size, work)
subroutine elapstime (t, etime)
subroutine startime_mp (event, nbr_gr, timer_mp)
subroutine stoptime_mp (event, nbr_gr, timer_mp, cputime_mp)
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)
subroutine printime_mp (taille, tab_ump, cputime_mp2, poin_ump, t1, elem_mp, cputime_mp, poids_ref)
subroutine get_mem_map_var (got_m_map)
subroutine add_elapsed_time_mon_off (t)

Function/Subroutine Documentation

◆ add_elapsed_time_mon_off()

subroutine add_elapsed_time_mon_off ( type(timer_), intent(inout) t)

Definition at line 3101 of file timer.F.

3102! When /MON/OFF is used, main processor
3103! must write the elapsed time
3104C-----------------------------------------------
3105C M o d u l e s
3106C-----------------------------------------------
3107 USE timer_mod
3108 USE time_mod
3109 USE inoutfile_mod
3110C-----------------------------------------------
3111C I m p l i c i t T y p e s
3112C-----------------------------------------------
3113#include "implicit_f.inc"
3114C-----------------------------------------------
3115C C o m m o n B l o c k s
3116C-----------------------------------------------
3117#include "task_c.inc"
3118 COMMON /iclock/clock0
3119 INTEGER CLOCK0
3120 COMMON /rclock/elapsed
3121 DOUBLE PRECISION ELAPSED
3122C-----------------------------------------------
3123C L o c a l V a r i a b l e s
3124C-----------------------------------------------
3125 TYPE(TIMER_), INTENT(INOUT) :: T
3126 INTEGER I
3127 DOUBLE PRECISION SECS
3128 INTEGER :: LEN_RST_NAME
3129 LOGICAL :: BOOL_FILE
3130 INTEGER :: CURRENT_RUN,OFFSET
3131 INTEGER, DIMENSION(2148) :: RST_NAME
3132 INTEGER :: LEN_TMP_NAME
3133 CHARACTER(len=4096) :: TMP_NAME
3134
3135C---------------------------
3136C Elapsed time & Estimated Speedup
3137C---------------------------
3138 CALL elapstime(t,secs)
3139! ---------------------------
3140 IF(ispmd==0) THEN
3141 current_run = global_comp_time%RUN_NBR
3142 global_comp_time%ENGINE_TIME(current_run) = secs
3143 len_rst_name = len_trim(global_comp_time%RST_NAME)
3144 len_tmp_name = outfile_name_len +len_rst_name
3145 tmp_name=outfile_name(1:outfile_name_len)//global_comp_time%RST_NAME(1:len_rst_name)
3146
3147 DO i = 1, len_tmp_name
3148 rst_name(i) = ichar(tmp_name(i:i))
3149 END DO
3150 bool_file=.false.
3151 INQUIRE(file=tmp_name(1:len_tmp_name), exist=bool_file)
3152! check if *_0000.rst exists
3153 IF(bool_file) THEN
3154 CALL cur_fil_c(20)
3155 CALL open_c(rst_name,len_tmp_name,2)
3156! write the starter + engine elapsed time
3157 offset= - storage_size(global_comp_time%ENGINE_TIME(current_run))/8
3158 CALL fseek_end_c(offset)
3159 CALL write_dpdb(global_comp_time%ENGINE_TIME(current_run),1)
3160 CALL close_c
3161 ENDIF
3162 ENDIF
3163! ---------------------------
3164
3165 RETURN
subroutine elapstime(t, etime)
Definition timer.F:2484
character(len=outfile_char_len) outfile_name
integer outfile_name_len
type(time_type) global_comp_time
Definition time_mod.F:56
subroutine write_dpdb(a, n)
Definition write_db.F:304
void close_c()
void fseek_end_c(int *lseek)
void cur_fil_c(int *nf)
void open_c(int *ifil, int *len, int *mod)

◆ cumultime_mp()

subroutine cumultime_mp ( integer taille,
integer, dimension(nparg,*) iparg,
integer, dimension(nixc,*) ixc,
integer, dimension(nixq,*) ixq,
integer, dimension(nixt,*) ixt,
integer, dimension(nixp,*) ixp,
integer, dimension(nixtg,*) ixtg,
integer, dimension(nixr,*) ixr,
integer, dimension(nixs,*) ixs,
integer, dimension(*) kxig3d,
integer, dimension(npropmi,*) ipm,
integer, dimension(npropgi,*) igeo,
geo,
integer, dimension(nummat) poin_ump,
dimension(taille) cputime_mp,
integer nbr_gpmp,
dimension(nbr_gpmp,nspmd+1) cputime_mp_glob,
integer, dimension(7,taille) tab_ump,
pm,
bufmat,
integer tabmp_l,
tab_mat )

Definition at line 2612 of file timer.F.

2619C-----------------------------------------------
2620C M o d u l e s
2621C-----------------------------------------------
2622 use element_mod , only : nixs,nixq,nixc,nixtg,nixq,nixp,nixr,nixt
2623C-----------------------------------------------
2624C I m p l i c i t T y p e s
2625C-----------------------------------------------
2626#include "implicit_f.inc"
2627C-----------------------------------------------
2628C G l o b a l P a r a m e t e r s
2629C-----------------------------------------------
2630 COMMON /timerg/timerg(2,500000),cputimeg(500000)
2631 REAL TIMERG,CPUTIMEG
2632C-----------------------------------------------
2633#include "com01_c.inc"
2634#include "com04_c.inc"
2635#include "task_c.inc"
2636#include "param_c.inc"
2637#include "scr19_c.inc"
2638C-----------------------------------------------
2639C D u m m y A r g u m e n t s
2640C-----------------------------------------------
2641 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IXS(NIXS,*),
2642 . IXQ(NIXQ,*),IXT(NIXT,*), IXP(NIXP,*),
2643 . IXR(NIXR,*),KXIG3D(*),IXTG(NIXTG,*),
2644 . IPM(NPROPMI,*),IGEO(NPROPGI,*),
2645 . TAILLE,NBR_GPMP,TABMP_L
2646
2647 my_real pm(npropm,*),geo(npropg,*),bufmat(*),tab_mat(ngroup)
2648c my_real, DIMENSION(NUMMAT,NUMGEO,TABMP_L), INTENT(IN) :: TAB_MAT_PROP
2649
2650C Mat + Prop timers
2651 INTEGER, DIMENSION(NUMMAT) :: POIN_UMP
2652 INTEGER, DIMENSION(7,TAILLE) :: TAB_UMP
2653 my_real, DIMENSION(TAILLE) :: cputime_mp
2654 my_real, DIMENSION(NBR_GPMP,NSPMD+1):: cputime_mp_glob
2655
2656
2657C-----------------------------------------------
2658C L o c a l V a r i a b l e s
2659C-----------------------------------------------
2660 INTEGER NG,ITY,MID,MUID,NFT,I,J,K,
2661 . PID,PUID,
2662 . ISOL,ISOL2,TEST,INDI3
2663 my_real, DIMENSION(NSPMD+1,TAILLE) :: cputime_mp2
2664 INTEGER, DIMENSION(TAILLE) :: ELEM_MP
2665 my_real, DIMENSION(TAILLE) :: poids_ref
2666 my_real t1, t2
2667
2668
2669
2670 INTEGER
2671 . NEL,PROC,NGF, NGL,
2672 . NELT,
2673 . IRSIZE, MSGTAG3 ,NES,NEQ,NEC,NETG,NET,NEP,NER,NEUR,
2674 . MPT,NPTS,NPTT,NPTOT,ISOLNOD,JSROT
2675
2676 CHARACTER FILNAM*100, PROCNAM*4
2677 my_real
2678 . ts, tq, tc, ttg, tt, tp, tr, tur, dtu,mins,maxs,minq,
2679 . maxq,minc,maxc,mintg,maxtg,minp,maxp,mint,maxt,minr,
2680 . maxr,minur,maxur, cpug, cpuelem, t(8,2),cc
2681C
2682 INTEGER MTN, NELEM, NPT, NSG,
2683 . IHBE,NFUNC,FILEN,NUMSOL4G,NUMSOL10G,JHBE
2684
2685 real
2686 . theogp(ngroup),tabx(3),tabmat(3),nptr,timmat,telt,tpsthtot,
2687 . tpsreel,batozmult,tppond
2688
2689 my_real invtref
2690 my_real, DIMENSION(NUMMAT,NUMGEO) ::
2691 . soltelt8_old,soltelt16_old,soltelt20_old,tetra4_old,
2692 . tetra10_old,shtnl_old,tritnl_old
2693
2694C-----------------------------------------------
2695
2696 t1 = 0
2697 elem_mp = zero
2698 poids_ref = zero
2699 DO ng=1,ngroup
2700 ity = iparg(5,ng)
2701 nft = iparg(3,ng)+1
2702 k = 0
2703
2704 mtn = iparg(1,ng)
2705 nelem = iparg(2,ng)
2706 npt = iparg(6,ng)
2707 nsg = iparg(10,ng)
2708 ihbe = iparg(23,ng)
2709
2710
2711 IF(ity==1) THEN
2712 ! BRIC
2713 mid = ixs(1,nft)
2714 pid = ixs(10,nft)
2715 muid = ipm(1,mid)
2716 puid = igeo(1,pid)
2717 i = poin_ump(mid)
2718 k = i
2719 ELSEIF(ity==2) THEN
2720 ! QUAD
2721 mid = ixq(1,nft)
2722 pid = ixq(6,nft)
2723 muid = ipm(1,mid)
2724 puid = igeo(1,pid)
2725 i = poin_ump(mid)
2726 k = i
2727 ELSEIF(ity==3) THEN
2728 ! SHELL
2729 mid = ixc(1,nft)
2730 pid = ixc(6,nft)
2731 muid = ipm(1,mid)
2732 puid = igeo(1,pid)
2733 i = poin_ump(mid)
2734 k = i
2735 ELSEIF(ity==4) THEN
2736 ! TRUSS
2737 mid = ixt(1,nft)
2738 pid = ixt(4,nft)
2739 muid = ipm(1,mid)
2740 puid = igeo(1,pid)
2741 i = poin_ump(mid)
2742 k = i
2743 ELSEIF(ity==5) THEN
2744 ! BEAM
2745 mid = ixp(1,nft)
2746 pid = ixp(5,nft)
2747 muid = ipm(1,mid)
2748 puid = igeo(1,pid)
2749 i = poin_ump(mid)
2750 k = i
2751 ELSEIF(ity==6) THEN
2752 ! RESSORT MUID=0 --> 1er case de TAB_UMP
2753 mid = tab_ump(3,1)
2754 pid = ixr(1,nft)
2755 muid = 0
2756 puid = igeo(1,pid)
2757 i = 1
2758 k = 1
2759 ELSEIF(ity==7) THEN
2760 ! SHELL_3N
2761 mid = ixtg(1,nft)
2762 pid = ixtg(5,nft)
2763 muid = ipm(1,mid)
2764 puid = igeo(1,pid)
2765 i = poin_ump(mid)
2766 k = i
2767 ENDIF
2768
2769 IF(k /= 0) THEN
2770 test = 0
2771 DO WHILE((k<=taille).AND.(test==0))
2772 ! +-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+
2773 IF((tab_ump(1,k)==muid)) THEN
2774 ! *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
2775 IF(tab_ump(2,k)==puid) THEN
2776 ! -------------------------------
2777 IF(ity/=1) THEN
2778 IF (tab_ump(7,k)==ity) THEN
2779 cputime_mp(k) = cputime_mp(k) + cputimeg(ng)
2780 elem_mp(k) = elem_mp(k) + iparg(2,ng)
2781 test=1
2782 ! ---------------------
2783 IF(ity==3) THEN
2784c POIDS_REF(K)=TAB_MAT_PROP(MID,PID,1)
2785 poids_ref(k)=tab_mat(ng)
2786
2787 ELSEIF(ity==7) THEN
2788c POIDS_REF(K)=TAB_MAT_PROP(MID,PID,2)
2789 poids_ref(k)=tab_mat(ng)
2790 ENDIF ! <--- fin ITY==3 or 7
2791 ! ---------------------
2792 ELSE ! <--- fin TAB_UMP(7,K)==ITY
2793 k=k+1
2794 ENDIF
2795 ! -------------------------------
2796 ELSE ! <--- fin ITY/=1
2797 isol = iparg(28,ng)
2798 IF((isol==4).OR.(isol==6).OR.
2799 . (isol==8).OR.(isol==10).OR.
2800 . (isol==16).OR.(isol==20)) THEN
2801 isol=isol+1000
2802 ELSE
2803 isol = 1
2804 ENDIF
2805 IF(tab_ump(7,k)==isol) THEN
2806 cputime_mp(k) = cputime_mp(k) + cputimeg(ng)
2807 elem_mp(k) = elem_mp(k) + iparg(2,ng)
2808 test=1
2809 ! -----------------
2810 IF(isol==1008) THEN
2811 indi3 = 3
2812 ELSEIF(isol==1010) THEN
2813 indi3 = 4
2814 ELSEIF(isol==1016) THEN
2815 indi3 = 5
2816 ELSEIF(isol==1020) THEN
2817 indi3 = 6
2818 ELSEIF(isol==1006) THEN
2819 indi3 = 7
2820 ELSEIF(isol==1004) THEN
2821 indi3 = 8
2822 ELSE
2823 indi3 = 9
2824 ENDIF
2825 ! -----------------
2826c POIDS_REF(K)= TAB_MAT_PROP(MID,PID,INDI3)
2827 poids_ref(k)= tab_mat(ng)
2828 ELSE ! <--- fin TAB_UMP(7,K)==ISOL
2829 k=k+1
2830 ENDIF
2831 ENDIF
2832 ELSE ! <--- fin PUID
2833 k=k+1
2834 ENDIF
2835 ! *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
2836 ELSE ! <--- fin MUID
2837 test = 1
2838! PRINT*,ISPMD,NG,' ERRORRRRRRRRR ',ITY,MUID,PUID,MID,PID,MTN,CPUTIMEG(NG)
2839! T1=T1+CPUTIMEG(NG)
2840 ENDIF
2841 ! +-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+-*+
2842 ENDDO
2843 ENDIF
2844 ENDDO
2845
2846 DO j=1,taille
2847 DO i=1,nspmd+1
2848 cputime_mp2(i,j) = zero
2849 ENDDO
2850 ENDDO
2851
2852 IF(nspmd > 1) THEN
2853 ! MPI Comm
2854 CALL spmd_ex_cputime(taille,cputime_mp,cputime_mp2)
2855 IF(ispmd==0) THEN
2856 t1 = zero
2857 t2 = zero
2858 DO i=1,taille
2859 DO j=1,nspmd
2860 t1 = t1 + cputime_mp2(j,i)
2861 cputime_mp2(nspmd+1,i) = cputime_mp2(nspmd+1,i) + cputime_mp2(j,i)/(ncycle)
2862 ENDDO
2863 IF((cputime_mp2(nspmd+1,i)>= zero).AND.(tab_ump(5,i)>0)) THEN
2864 cputime_mp2(nspmd+1,i) = cputime_mp2(nspmd+1,i)/(tab_ump(5,i))
2865 ELSE
2866 cputime_mp2(nspmd+1,i) = zero
2867 ENDIF
2868 ENDDO
2869 ENDIF ! <-- (ISPMD==0)
2870 ELSE
2871 DO i=1,taille
2872 cputime_mp2(1,i) = cputime_mp(i)
2873 cputime_mp2(2,i) = cputime_mp(i)/ncycle
2874 IF((cputime_mp2(2,i)>= zero).AND.(tab_ump(5,i)>0)) THEN
2875 cputime_mp2(2,i) = cputime_mp2(2,i)/(tab_ump(5,i))
2876 ELSE
2877 cputime_mp2(2,i) = zero
2878 ENDIF
2879 ENDDO
2880 ENDIF
2881
2882 DO i=1,taille
2883 IF((cputime_mp(i)>zero).AND.(elem_mp(i)>0)) THEN
2884 cputime_mp(i) = cputime_mp(i)/(elem_mp(i)*ncycle)
2885 ENDIF
2886 ENDDO
2887C
2888 CALL printime_mp(taille,tab_ump,cputime_mp2,poin_ump,t1,elem_mp,
2889 . cputime_mp,poids_ref)
2890
2891 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine printime_mp(taille, tab_ump, cputime_mp2, poin_ump, t1, elem_mp, cputime_mp, poids_ref)
Definition timer.F:2902
subroutine spmd_ex_cputime(dim_tab3, tab3, tab4)

◆ elapstime()

subroutine elapstime ( type(timer_), intent(inout) t,
double precision etime )

Definition at line 2483 of file timer.F.

2484 USE timer_mod
2485C reset timer elapsed time and calculate current elapsed time
2486C-----------------------------------------------
2487C I m p l i c i t T y p e s
2488C-----------------------------------------------
2489#include "implicit_f.inc"
2490C----------------------------------------------
2491C C o m m o n B l o c k s
2492C-----------------------------------------------
2493#include "task_c.inc"
2494!#include "timerr_c.inc"
2495 COMMON /iclock/clock0
2496 INTEGER CLOCK0
2497 COMMON /rclock/elapsed
2498 DOUBLE PRECISION ELAPSED
2499C-----------------------------------------------
2500C D u m m y A r g u m e n t s
2501C-----------------------------------------------
2502 TYPE(TIMER_), INTENT(INOUT) :: T
2503 DOUBLE PRECISION ETIME
2504C-----------------------------------------------
2505C L o c a l V a r i a b l e s
2506C-----------------------------------------------
2507 INTEGER CLOCK1, CLOCKRATE, NBMAX
2508 DOUBLE PRECISION SECS
2509#ifdef _OPENMP
2510 REAL(kind=8) :: omp_ending_time
2511 REAL(kind=8) omp_get_wtime
2512 external OMP_GET_WTIME
2513#endif
2514C-----------------------------------------------
2515 CALL system_clock(count=clock1, count_rate=clockrate,
2516 + count_max=nbmax )
2517
2518 IF(clock1 < 0 ) THEN
2519 CALL system_clock(count=clock1, count_rate=clockrate,
2520 + count_max=nbmax )
2521 ENDIF
2522#ifdef _OPENMP
2523 omp_ending_time = omp_get_wtime( )
2524 clock0 = clock1
2525 elapsed = omp_ending_time - t%OMP_STARTING_TIME
2526 etime = elapsed
2527#else
2528 IF(clock1 > 0 ) THEN
2529 secs = clock1-clock0 ! Different time common - Initial time (which may not be 0!)
2530 IF(secs<zero) secs = secs + nbmax ! case overflow of maximum period number
2531 secs = secs/clockrate
2532 clock0 = clock1 !retrieval of the current time in clock0
2533 elapsed = elapsed + secs
2534 etime = elapsed
2535 ENDIF
2536#endif
2537C
2538 RETURN

◆ get_mem_map_var()

subroutine get_mem_map_var ( integer got_m_map)

Definition at line 3066 of file timer.F.

3067C-----------------------------------------------
3068C I m p l i c i t T y p e s
3069C-----------------------------------------------
3070#include "implicit_f.inc"
3071C-----------------------------------------------
3072C C o m m o n B l o c k s
3073C-----------------------------------------------
3074#include "commandline.inc"
3075C-----------------------------------------------
3076C D u m m y A r g u m e n t s
3077C-----------------------------------------------
3078 INTEGER GOT_M_MAP
3079C-----------------------------------------------
3080 got_m_map = got_mem_map
3081

◆ initimeg()

subroutine initimeg ( integer ng)

Definition at line 1315 of file timer.F.

1316C Initialization of Timers Groups Elem.
1317C-----------------------------------------------
1318C I m p l i c i t T y p e s
1319C-----------------------------------------------
1320#include "implicit_f.inc"
1321C----------------------------------------------
1322C C o m m o n B l o c k s
1323C-----------------------------------------------
1324 COMMON /timerg/timerg(2,500000),cputimeg(500000)
1325 REAL TIMERG,CPUTIMEG
1326C-----------------------------------------------
1327C D u m m y A r g u m e n t s
1328C-----------------------------------------------
1329 INTEGER NG
1330C-----------------------------------------------
1331C L o c a l V a r i a b l e s
1332C-----------------------------------------------
1333 INTEGER J
1334C-----------------------------------------------
1335 DO j=1,ng
1336 cputimeg(j) = zero
1337 ENDDO
1338C
1339 RETURN

◆ interlagran()

subroutine interlagran ( real, dimension(ltab) tab,
real, dimension(ltab) lx,
integer ltab,
real x,
real y )

Definition at line 2415 of file timer.F.

2416
2417 REAL TAB(LTAB),LX(LTAB),X,Y,MUL
2418 INTEGER I,J,LTAB
2419
2420 y = 0.
2421
2422 DO i=1,ltab
2423
2424 mul = 1.
2425 DO j=1,ltab
2426 IF (i/=j) THEN
2427 mul= mul * (x-lx(j))/(lx(i)-lx(j))
2428 ENDIF
2429 ENDDO
2430
2431 y = y + tab(i)*mul
2432
2433 ENDDO

◆ my_fsort()

subroutine my_fsort ( real, dimension(size) array,
integer, dimension(size) index,
integer size,
real, dimension(size) work )

Definition at line 2446 of file timer.F.

2447 INTEGER SIZE
2448 real
2449 . array(size),work(size),tmp
2450
2451 INTEGER INDEX(SIZE),I,J,ITMP
2452
2453 DO i=1,SIZE
2454 work(i) = array(i)
2455 ENDDO
2456
2457 DO i=1,SIZE
2458 DO j=1,size-i
2459 IF (work(j)<work(j+1)) THEN
2460 tmp = work(j)
2461 work(j) = work(j+1)
2462 work(j+1) = tmp
2463
2464 itmp = index(j)
2465 index(j) = index(j+1)
2466 index(j+1) = itmp
2467 ENDIF
2468 ENDDO
2469 ENDDO

◆ print_block()

subroutine print_block ( character(len=*), intent(in) title_part,
real, dimension(ntimax,parasiz), intent(inout) tabtime,
integer, intent(in) ntimax,
integer, intent(in) flag,
integer, intent(in) out_id,
integer, intent(in) nfields,
integer, dimension(nfields), intent(in) fields,
character(len=9), dimension(ntimax), intent(in) titles )

Definition at line 404 of file timer.F.

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 IF(flag==2 .AND. 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
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21

◆ print_runtime()

subroutine print_runtime

Definition at line 1149 of file timer.F.

1150C-----------------------------------------------
1151C M o d u l e s
1152C-----------------------------------------------
1153 USE time_mod
1154C-----------------------------------------------
1155C I m p l i c i t T y p e s
1156C-----------------------------------------------
1157#include "implicit_f.inc"
1158C-----------------------------------------------
1159C C o m m o n B l o c k s
1160C-----------------------------------------------
1161#include "units_c.inc"
1162C-----------------------------------------------
1163C L o c a l V a r i a b l e s
1164C-----------------------------------------------
1165 INTEGER :: I, IJK, IJKL
1166 REAL(kind=8) :: total_time
1167 INTEGER, DIMENSION(GLOBAL_COMP_TIME%RUN_NBR+2) :: IH_TAB,IM_TAB,IS_TAB
1168! ----------------------------------------
1169
1170 total_time = global_comp_time%STARTER_TIME
1171 DO i=1,global_comp_time%RUN_NBR
1172 total_time = total_time + global_comp_time%ENGINE_TIME(i)
1173 ih_tab(i)=int(global_comp_time%ENGINE_TIME(i)/3600.0d0)
1174 im_tab(i)=int((global_comp_time%ENGINE_TIME(i)-ih_tab(i)*3600.0d0)/60.0d0)
1175 is_tab(i)=int(global_comp_time%ENGINE_TIME(i)-ih_tab(i)*3600.0d0-im_tab(i)*60.0d0)
1176 ENDDO
1177 ijk = global_comp_time%RUN_NBR + 1
1178 ih_tab(ijk)=int(global_comp_time%STARTER_TIME/3600.0d0)
1179 im_tab(ijk)=int((global_comp_time%STARTER_TIME-ih_tab(ijk)*3600.0d0)/60.0d0)
1180 is_tab(ijk)=int(global_comp_time%STARTER_TIME-ih_tab(ijk)*3600.0d0-im_tab(ijk)*60.0d0)
1181
1182 ijkl = global_comp_time%RUN_NBR + 2
1183 ih_tab(ijkl)=int(total_time/3600.0d0)
1184 im_tab(ijkl)=int((total_time-ih_tab(ijkl)*3600.0d0)/60.0d0)
1185 is_tab(ijkl)=int(total_time-ih_tab(ijkl)*3600-im_tab(ijkl)*60.0d0)
1186
1187 WRITE(iout,*) ' '
1188 WRITE(iout,*)
1189 . ' ** COMPUTE RUNTIME INFORMATION SUMMARY **'
1190 WRITE(iout,*) ' '
1191 WRITE(iout,100) global_comp_time%STARTER_TIME,ih_tab(ijk),im_tab(ijk),is_tab(ijk)
1192 DO i=1,global_comp_time%RUN_NBR
1193 WRITE(iout,101) i,global_comp_time%ENGINE_TIME(i),ih_tab(i),im_tab(i),is_tab(i)
1194 ENDDO
1195 WRITE(iout,103)
1196 WRITE(iout,102)total_time,ih_tab(ijkl),im_tab(ijkl),is_tab(ijkl)
1197 WRITE(iout,*)' '
1198C
1199
1200C
1201 100 FORMAT(' STARTER RUNTIME =', (f14.2),'s',' (',i2.2,':',i2.2,':',i2.2,')')
1202 101 FORMAT(' #',(i4.3), ' ENGINE RUNTIME =',(f14.2),'s',' (',i2.2,':',i2.2,':',i2.2,')')
1203 102 FORMAT(' STARTER+ENGINE RUNTIME =',(f14.2),'s',' (',i2.2,':',i2.2,':',i2.2,')')
1204 103 FORMAT(' ------------------------------ ')
1205
1206 RETURN

◆ print_summary()

subroutine print_summary ( integer, intent(in) flag,
integer, intent(in) ntimax,
real, dimension(ntimax,parasiz), intent(inout) tabtime,
character(len=9), dimension(ntimax), intent(inout) titles,
integer, intent(in) out_id,
integer, intent(in) itherm )

Definition at line 30 of file timer.F.

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 IF(idtmins/=0.OR.idtmins_int/=0)THEN
135 fields(1) =61 ; titles(61) = 'PCG'
136 fields(2) =62 ; titles(62) = 'PARITF'
137 fields(3) =63 ; titles(63) = 'COMMR '
138 fields(4) =64 ; titles(64) = 'COMP_MV'
139 fields(5) =65 ; titles(65) = 'VFI'
140 fields(6) =80 ; titles(80) = 'COMM_MV'
141 fields(7) =70 ; titles(70) = 'TOT_PROJ '
142 fields(8) =71 ; titles(71) = 'MAT_LT2'
143 fields(9) =72 ; titles(72) = 'MAM_NM'
144 fields(10) =73 ; titles(73) = 'MAN_NNM'
145 fields(11) =74 ; titles(74) = 'COMP_MV_E '
146 fields(12) =75 ; titles(75) = 'BUILD_M'
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
subroutine print_block(title_part, tabtime, ntimax, flag, out_id, nfields, fields, titles)
Definition timer.F:406

◆ printcoques()

subroutine printcoques ( integer, dimension(nparg,*) iparg,
integer, dimension(nixc,*) ixc,
integer, dimension(npropmi,*) ipm,
real, dimension(ngroup) theogp,
integer numshg )

Definition at line 1855 of file timer.F.

1856C-----------------------------------------------
1857C M o d u l e s
1858C-----------------------------------------------
1859 use element_mod , only : nixc
1860C-----------------------------------------------
1861C I m p l i c i t T y p e s
1862C-----------------------------------------------
1863#include "implicit_f.inc"
1864C-----------------------------------------------
1865C C o m m o n B l o c k s
1866C-----------------------------------------------
1867#include "com01_c.inc"
1868#include "param_c.inc"
1869#include "scr19_c.inc"
1870C-----------------------------------------------
1871C G l o b a l P a r a m e t e r s
1872C-----------------------------------------------
1873 COMMON /timerg/timerg(2,500000),cputimeg(500000)
1874 REAL TIMERG,CPUTIMEG
1875C-----------------------------------------------
1876C D u m m y A r g u m e n t s
1877C-----------------------------------------------
1878 INTEGER NUMSHG
1879 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IPM(NPROPMI,*)
1880C
1881 REAL THEOGP(NGROUP)
1882C-----------------------------------------------
1883C L o c a l V a r i a b l e s
1884C-----------------------------------------------
1885 INTEGER NGL,NG,NUMGROUP(NUMSHG),INDEXSH(NUMSHG),
1886 . ITY,MTN,NELEM,NPT,NSG,MID,MUID,
1887 . NFT,IHBE,MMA,NFUNC,I,J
1888 REAL DIFFTT,DIFFTTSH(NUMSHG),TEMP(NUMSHG)
1889
1890
1891 REAL PCT
1892C-----------------------------------------------
1893C S o u r c e L i n e s
1894C-----------------------------------------------
1895
1896 ngl = 0
1897
1898 DO ng=1,ngroup
1899 ity = iparg(5,ng)
1900 mtn = iparg(1,ng)
1901 nelem = iparg(2,ng)
1902 npt = iparg(6,ng)
1903 nsg = iparg(10,ng)
1904 nft = iparg(3,ng)+1
1905 ihbe = iparg(23,ng)
1906
1907
1908 IF (ity==3) THEN
1909
1910 ngl = ngl + 1
1911
1912 numgroup(ngl) = ng
1913 diffttsh(ngl) = cputimeg(ng) - theogp(ng)
1914
1915 ENDIF
1916 ENDDO
1917
1918 DO i=1,ngl
1919 indexsh(i) = i
1920 ENDDO
1921
1922 CALL my_fsort(diffttsh,indexsh,numshg,temp)
1923
1924 WRITE(66,2000)
1925c WRITE(66,'(A)') ' '
1926c WRITE(66,'(A)') 'SHELL ELEMENT GROUPS'
1927c WRITE(66,'(A)') ' '
1928c WRITE(66,'(A,A,A)')
1929c . ' GRP_NB ELEM_TYP NUM_ELEM MAT_NUMB ',
1930c . ' NPT NSG CPUTIMEG',
1931c . ' TIMETHEO DIFF PCT'
1932
1933 DO i=1,numshg
1934 ngl = indexsh(i)
1935 ng = numgroup(ngl)
1936
1937 ity = iparg(5,ng)
1938 mtn = iparg(1,ng)
1939 nelem = iparg(2,ng)
1940 nft = iparg(3,ng)+1
1941 nsg = iparg(10,ng)
1942 npt = iparg(6,ng)
1943 ihbe = iparg(23,ng)
1944
1945 mid = ixc(1,nft)
1946 muid = ipm(1,mid)
1947
1948 difftt = cputimeg(ng) - theogp(ng)
1949
1950 pct = ((cputimeg(ng) - theogp(ng))/cputimeg(ng) )*100
1951
1952 WRITE(66,'(I10,A,I10,A,I10,A,I10,A,I10,A,I10,A,I10,A,I10,
1953 . A,E15.3,A,E15.3,A,E15.3,A,F8.3,A)')
1954 . ng,' ',ity,' ',ihbe,' ',nelem,' ',mtn,' ',muid,
1955 . ' ',npt,' ',nsg,' ',
1956 . cputimeg(ng),' ',theogp(ng),' ',difftt,' ',pct,'%'
1957
1958 ENDDO
1959
1960
1961 2000 FORMAT(
1962 & /' '/' '/10x,' SHELL ELEMENT GROUPS'/
1963 & 10x,' --------------------'/
1964 & ' '/
1965 & ' '/
1966 & ' GRP_NB ELEM_TYP IHBE ',
1967 & 'NUM_ELEM MAT_NUMB ',
1968 & ' MAT_USERN NPT NSG CPUTIMEG',
1969 & ' TIMETHEO DIFF PCT')
1970
subroutine my_fsort(array, index, size, work)
Definition timer.F:2447

◆ printcpu()

subroutine printcpu ( integer iflag)

Definition at line 1219 of file timer.F.

1220C-----------------------------------------------
1221C I m p l i c i t T y p e s
1222C-----------------------------------------------
1223#include "implicit_f.inc"
1224C-----------------------------------------------
1225C C o m m o n B l o c k s
1226C-----------------------------------------------
1227#include "com01_c.inc"
1228#include "task_c.inc"
1229#include "units_c.inc"
1230#include "impl1_c.inc"
1231C-----------------------------------------------
1232C D u m m y A r g u m e n t s
1233C-----------------------------------------------
1234 INTEGER IFLAG
1235
1236 CHARACTER*256 HOSTNAME, CPUNAM
1237 INTEGER FREQUENCE,LENH,LENC,I,MEM,SWAP
1238 SAVE hostname,cpunam,frequence,lenh,lenc,mem,swap
1239
1240 CHARACTER(len=129) :: STACKSIZE_INFO
1241 INTEGER :: STACKSIZE_INFO_LEN
1242
1243 CHARACTER(len=129) :: OMP_STACKSIZE_INFO
1244 INTEGER :: OMP_STACKSIZE_INFO_LEN
1245
1246 IF(iflag==1) THEN
1247
1248 CALL cpuinfo(hostname,lenh,cpunam, lenc, frequence,mem,swap)
1249
1250 ELSEIF(iflag==2) THEN
1251 ! 2nd call after parallel initialization & communication
1252 IF(ispmd==0) THEN
1253 WRITE(iout,*)' '
1254 WRITE(iout,7000)
1255 WRITE(iout,*)' '
1256 IF(nspmd==1) THEN
1257 IF(mem>-1)THEN
1258 WRITE(iout,7400)
1259 WRITE(iout,'(A,A,A,A,A,I4,A,I6,A,I6,A)') ' ',
1260 . hostname(1:lenh),' ',cpunam(1:lenc),', ',frequence,
1261 . ' MHz, ',mem,' MB RAM, ',swap,' MB swap'
1262 ELSE
1263 WRITE(iout,7450)
1264 WRITE(iout,'(A,A,A,A,A,I4,A)') ' ',
1265 . hostname(1:lenh),' ',cpunam(1:lenc),', ',frequence,
1266 . ' MHz '
1267 END IF
1268 ELSE
1269 i = 1
1270 IF(mem>-1)THEN
1271 WRITE(iout,7500)
1272 WRITE(iout,'(I4,A,A,A,A,A,I4,A,I6,A,I6,A)') i,' ',
1273 . hostname(1:lenh),' ',cpunam(1:lenc),', ',frequence,
1274 . ' MHz, ',mem,' MB RAM, ',swap,' MB swap'
1275 ELSE
1276 WRITE(iout,7550)
1277 WRITE(iout,'(I4,A,A,A,A,A,I4,A)') i,' ',
1278 . hostname(1:lenh),' ',cpunam(1:lenc),', ',frequence,
1279 . ' MHz '
1280 END IF
1281 END IF
1282 END IF
1283C Scripture of multi -procharous complement
1284 IF(nspmd>1)
1285 . CALL spmd_printcpuinfo(hostname,lenh,cpunam, lenc, frequence,
1286 . mem,swap)
1287 IF(ispmd==0) THEN
1288 WRITE(iout,*)' '
1289 omp_stacksize_info_len=128
1290 stacksize_info_len=128
1291 CALL get_solver_stacksize(stacksize_info,stacksize_info_len,omp_stacksize_info,omp_stacksize_info_len)
1292 WRITE(iout,'(A,A)') ' STACKSIZE . . . . . . . . . . . . . . . . . . . . ',stacksize_info(1:stacksize_info_len)
1293 WRITE(iout,'(A,A)') ' THREAD STACKSIZE . . . . . . . . . . . . . . . . . ',omp_stacksize_info(1:omp_stacksize_info_len)
1294 WRITE(iout,'(A)') ' '
1295 ! Force write to output file
1296 CALL my_flush(iout)
1297 END IF
1298
1299 ENDIF
1300
1301 lmemv = mem
1302
1303 7000 FORMAT (' COMPUTATION HARDWARE DESCRIPTION')
1304 7400 FORMAT (' HOSTNAME CPU TYPE, FREQUENCY AND MEMORY')
1305 7450 FORMAT (' HOSTNAME CPU TYPE AND FREQUENCY')
1306 7500 FORMAT (' CPU# HOSTNAME CPU TYPE, FREQUENCY AND MEMORY')
1307 7550 FORMAT (' CPU# HOSTNAME CPU TYPE AND FREQUENCY ')
1308
#define swap(a, b, tmp)
Definition macros.h:40
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_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

◆ printime()

subroutine printime ( type(timer_), intent(inout) t,
integer, intent(in) itherm,
type(output_), intent(inout) output )

Definition at line 509 of file timer.F.

510C timers display routine
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
559 REAL ZEROS
560 INTEGER :: 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 = number of domains, all SMP tasks count as one 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 cpu and sys time for 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 memory used
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 Management of used memory
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 the size of restart files
743 IF(NSPMD > 1)CALL SPMD_GLOB_ISUM9(RESTARTFILESIZE,1)
744C Gather Size of Multiple Restart files
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.OR. IF(GOT_MEM_MAP==1 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!Final time - Initial time (which may not be 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 3000 FORMAT(' #PROC ','FORCES ','RBY.FOR. ','RBY.VEL. ',
1128 . 'VELOCITIES',' TOTAL ','% CPU')
1129 5550 FORMAT(I4,3x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,
1130 + 1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,1x,E9.4,
1131 + 1x,E9.4,1x,E9.4)
1132 6000 FORMAT(' ELAPSED TIME =',F14.2,' s')
1133 6100 FORMAT(' ',I8,':',I2.2,':',I2.2)
1134 6200 FORMAT(' EXECUTION STARTED .........................: ',
1135 . A4,'/',A2,'/',A2,' ',A2,':',A2,':',A2)
1136 6300 FORMAT(' EXECUTION COMPLETED .......................: ',
1137 . A4,'/',A2,'/',A2,' ',A2,':',A2,':',A2)
1138 8000 FORMAT(' ESTIMATED SPEEDUP=',F14.2)
1139C
1140 RETURN

◆ printime_mp()

subroutine printime_mp ( integer taille,
integer, dimension(7,taille) tab_ump,
dimension(nspmd+1,taille) cputime_mp2,
integer, dimension(nummat) poin_ump,
t1,
integer, dimension(taille) elem_mp,
dimension(taille) cputime_mp,
dimension(taille) poids_ref )

Definition at line 2900 of file timer.F.

2902C Timer writing routine
2903C-----------------------------------------------
2904C I m p l i c i t T y p e s
2905C-----------------------------------------------
2906#include "implicit_f.inc"
2907C-----------------------------------------------
2908C G l o b a l P a r a m e t e r s
2909C-----------------------------------------------
2910 COMMON /timerg/timerg(2,500000),cputimeg(500000)
2911 REAL TIMERG,CPUTIMEG
2912C-----------------------------------------------
2913#include "com01_c.inc"
2914#include "com04_c.inc"
2915#include "task_c.inc"
2916#include "units_c.inc"
2917#include "chara_c.inc"
2918#include "scr19_c.inc"
2919C-----------------------------------------------
2920C D u m m y A r g u m e n t s
2921C-----------------------------------------------
2922 INTEGER TAILLE
2923 INTEGER, DIMENSION(7,TAILLE) :: TAB_UMP
2924 my_real t1
2925 my_real, DIMENSION(NSPMD+1,TAILLE) :: cputime_mp2
2926 INTEGER, DIMENSION(NUMMAT) :: POIN_UMP
2927 INTEGER, DIMENSION(TAILLE) :: ELEM_MP
2928 my_real, DIMENSION(TAILLE) :: poids_ref
2929 my_real, DIMENSION(TAILLE) :: cputime_mp
2930C-----------------------------------------------
2931C L o c a l V a r i a b l e s
2932C-----------------------------------------------
2933
2934 CHARACTER FILNAM*100,PROCNAM*4
2935C
2936 INTEGER ITY,MTN,NEL,MID,PID,MUID,PUID,FILEN,
2937 . J,I,PROC
2938 my_real time_matprop,poin,time_ref!,TIME_ELE
2939C-----------------------------------------------
2940
2941 IF(ispmd==0) THEN
2942C Ro opening the DDW PRO file = 0
2943 filnam=rootnam(1:rootlen)//'_'//chrun//'.ddw'
2944 OPEN(unit=66,file=filnam,access='SEQUENTIAL',
2945 . form='FORMATTED',status='UNKNOWN')
2946 filen=rootlen+14
2947
2948 WRITE(66,'(A)') 'DOMAIN DECOMPOSITION ANALYSIS FILE '
2949 WRITE(66,'(A)') '---------------------------------- '
2950 WRITE(66,'(A)') ' '
2951 WRITE(66,'(A)') ' '
2952 WRITE(66,1000) ncycle, t1
2953 WRITE(66,3000)
2954
2955 DO i=1,taille
2956 time_matprop = cputime_mp2(nspmd+1,i)
2957 nel = tab_ump(5,i)
2958 muid = tab_ump(1,i)
2959 puid = tab_ump(2,i)
2960 mid = tab_ump(3,i)
2961 pid = tab_ump(4,i)
2962 mtn = tab_ump(6,i)
2963 ity = tab_ump(7,i)
2964
2965 WRITE(66,'(I12,A,I12,A,I12,A,I12,A,I12,A,I12,A,
2966 . I12,A,E15.5)')
2967 . mtn,' ',ity,' ',nel,' ',mid,' ',muid,' ',pid,
2968 . ' ',puid,' ', time_matprop
2969
2970 ENDDO
2971!
2972 WRITE(66,1100)
2973 WRITE(66,1400) nummat,numgeo
2974 DO i=1,(nummat)
2975 poin = poin_ump(i)
2976 WRITE(66,'(I8,A)') poin_ump(i)
2977 ENDDO
2978 WRITE(66,'(A)') '/END'
2979 CLOSE(unit=66)
2980 WRITE (iout,1300) filnam(1:filen)
2981 WRITE (istdo,1300) filnam(1:filen)
2982 ENDIF
2983
2984C opening of the DDW file by proc
2985 IF(iddwstat/=0) THEN
2986 WRITE(procnam,'(I4.4)')ispmd+1
2987 filnam=rootnam(1:rootlen)//'_'//chrun//'_'//procnam//'.ddw'
2988 OPEN(unit=67,file=filnam,access='SEQUENTIAL',
2989 . form='FORMATTED',status='UNKNOWN')
2990 filen=rootlen+14
2991
2992 WRITE(67,'(A)') 'DOMAIN DECOMPOSITION ANALYSIS FILE '
2993 WRITE(67,'(A)') '---------------------------------- '
2994 WRITE(67,'(A)') ' '
2995 WRITE(67,'(A)') ' '
2996 WRITE(67,2000) ncycle
2997 proc = ispmd
2998 WRITE(67,1500) proc
2999 WRITE(67,3101)
3000!
3001 DO i=1,taille
3002 time_matprop = cputime_mp(i)
3003 time_ref = poids_ref(i)
3004 IF(time_matprop>zero) THEN
3005 nel = elem_mp(i)
3006 muid = tab_ump(1,i)
3007 puid = tab_ump(2,i)
3008 mid = tab_ump(3,i)
3009 pid = tab_ump(4,i)
3010 mtn = tab_ump(6,i)
3011 ity = tab_ump(7,i)
3012
3013
3014 WRITE(67,'(I12,A,I12,A,I12,A,I12,A,I12,A,I12,A,
3015 . I12,A,E15.5,A,E15.5)')
3016 . mtn,' ',ity,' ',nel,' ',mid,' ',muid,' ',pid,
3017 . ' ',puid,' ', time_matprop,' ',time_ref
3018 ENDIF
3019
3020
3021
3022 ENDDO
3023 WRITE(67,'(A)') '/END'
3024 CLOSE(unit=67)
3025 ENDIF ! end IDDWSTAT/=0
3026
3027
3028 1000 FORMAT(
3029 & 4x,'TOTAL NUMBER OF CYCLES. . . . . . . . . . . . . .',i10/
3030 & 4x,'TOTAL ELEMENT FORCE TIME. . . . . . . . . . . . .',1pg20.13)
3031 2000 FORMAT(
3032 & 4x,'TOTAL NUMBER OF CYCLES. . . . . . . . . . . . . .',i10)
3033 1400 FORMAT(
3034 & 4x,'MATERIAL NUMBER . . . . . . . . . . . . . .',i10/
3035 & 4x,'PROPERTY NUMBER . . . . . . . . . . . . . .',i10)
3036
3037 1100 FORMAT(
3038 & /' '/' '/4x,' POINTER ')
3039
3040 1500 FORMAT(
3041 & /' '/' '/4x,'ISPMD. . . . . . . . . . . . . .',i10)
3042
3043 1300 FORMAT (4x,' DD ANALYSIS FILE:',1x,a,' WRITTEN')
3044
3045 3000 FORMAT(
3046 & /' '/' '/10x,' material/property timer'/
3047 & 10X,' --------------------'/
3048 & ' '/
3049 & ' '/
3050 & ' law_numb elem_typ num_elem mat_numb mat_user',
3051 & ' prop_numb prop_user cputime')
3052
3053 3101 FORMAT(
3054 & ' law_numb elem_typ num_elem mat_numb mat_user',
3055 & ' prop_numb prop_user cputime')
3056C
3057 RETURN

◆ printimeg()

subroutine printimeg ( integer, dimension(nparg,*) iparg,
pm,
integer, dimension(npropmi,*) ipm,
integer, dimension(nixc,*) ixc,
integer, dimension(nixtg,*) ixtg,
integer, dimension(nixs,*) ixs )

Definition at line 1453 of file timer.F.

1454C timers display routine
1455C-----------------------------------------------
1456C M o d u l e s
1457C-----------------------------------------------
1458 use element_mod , only : nixs,nixc,nixtg
1459C-----------------------------------------------
1460C I m p l i c i t T y p e s
1461C-----------------------------------------------
1462#include "implicit_f.inc"
1463C-----------------------------------------------
1464C C o m m o n B l o c k s
1465C-----------------------------------------------
1466 COMMON /timerg/timerg(2,500000),cputimeg(500000)
1467 REAL TIMERG,CPUTIMEG
1468C-----------------------------------------------
1469#include "com01_c.inc"
1470#include "task_c.inc"
1471#include "units_c.inc"
1472#include "param_c.inc"
1473#include "chara_c.inc"
1474#include "scr19_c.inc"
1475#include "ddspmd_c.inc"
1476C-----------------------------------------------
1477C D u m m y A r g u m e n t s
1478C-----------------------------------------------
1479 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IXTG(NIXTG,*),
1480 . IPM(NPROPMI,*),IXS(NIXS,*)
1481 my_real
1482 . pm(npropm,*),cc
1483C-----------------------------------------------
1484C L o c a l V a r i a b l e s
1485C-----------------------------------------------
1486 INTEGER
1487 . NEL,PROC,NGF, NGL,
1488 . J, NELT,
1489 . NG,IRSIZE, MSGTAG3 ,NES,NEQ,NEC,NETG,NET,NEP,NER,NEUR,
1490 . MPT,NPTS,NPTT,NPTOT,ISOLNOD
1491
1492 CHARACTER FILNAM*100,PROCNAM*4
1493 my_real
1494 . ts, tq, tc, ttg, tt, tp, tr, tur, dtu,mins,maxs,minq,
1495 . maxq,minc,maxc,mintg,maxtg,minp,maxp,mint,maxt,minr,
1496 . maxr,minur,maxur, cpug, cpuelem, t(8,2)
1497C
1498 INTEGER NUMSOLG,NUMSHG,NUMTRIG,NUMOTHER,ITY,MTN,NELEM,NPT,NSG,
1499 . NFT,IHBE,MMA,NFUNC,FILEN,NUMSOL4G,NUMSOL10G
1500
1501 real
1502 . theogp(ngroup),tabx(3),tabmat(3),nptr,timmat,telt,tpsthtot,
1503 . tpsreel,batozmult,tppond
1504
1505 tpsreel = 0.
1506 tpsthtot = 0.
1507 batozmult = 4
1508 timmat = 0.
1509C opening of the DDW file
1510 WRITE(procnam,'(I4.4)')ispmd+1
1511 filnam=rootnam(1:rootlen)//'_'//chrun//'_'//procnam//'.ddw2'
1512 OPEN(unit=66,file=filnam,access='SEQUENTIAL',
1513 . form='FORMATTED',status='UNKNOWN')
1514 filen=rootlen+14
1515C
1516C preparation of the weighting
1517C
1518 IF (tpseng==zero) THEN
1519 tppond = one
1520 ELSE
1521 tppond = tpseng/tpsref
1522 ENDIF
1523
1524 WRITE(66,'(A)') 'DOMAIN DECOMPOSITION ANALYSIS FILE '
1525 WRITE(66,'(A)') '---------------------------------- '
1526 WRITE(66,'(A)') ' '
1527 WRITE(66,'(A)') ' '
1528
1529 WRITE(66,1000) ispmd,ncycle
1530c WRITE(66,1100) NCYCLE
1531
1532
1533C counting of groups
1534 numsolg = 0
1535 numshg = 0
1536 numtrig = 0
1537 numsol4g = 0
1538 numsol10g = 0
1539
1540 DO ng=1,ngroup
1541 ity = iparg(5,ng)
1542 IF (ity==1) THEN
1543 isolnod = iparg(28,ng)
1544 IF (isolnod==4) THEN
1545 numsol4g = numsol4g+1
1546 ELSEIF (isolnod==10) THEN
1547 numsol10g = numsol10g+1
1548 ELSE
1549 numsolg = numsolg + 1
1550 ENDIF
1551 ELSEIF (ity==3) THEN
1552 numshg = numshg + 1
1553 ELSEIF (ity==7) THEN
1554 numtrig = numtrig + 1
1555 ENDIF
1556 ENDDO
1557
1558C calculation of the theoretical time for each group
1559 DO ng=1,ngroup
1560 ity = iparg(5,ng)
1561 mtn = iparg(1,ng)
1562 nelem = iparg(2,ng)
1563 npt = iparg(6,ng)
1564 nsg = iparg(10,ng)
1565 nft = iparg(3,ng)+1
1566 ihbe = iparg(23,ng)
1567
1568 theogp(ng)=0.
1569C SOLIDES
1570 IF (ity==1) THEN
1571 isolnod=iparg(28,ng)
1572 IF (isolnod==4) THEN
1573 telt = tet4tnl(mtn,1) + tet4telt(1)
1574C TETRA10
1575 ELSEIF (isolnod==10) THEN
1576 mma = ixs(1,nft)
1577 nfunc = max(ipm(10,mma) - 3,1)
1578 IF (nfunc<=2) THEN
1579 telt = tet10tnl(mtn,1) + tet10telt(1)
1580 ELSEIF (nfunc>2.AND.nfunc<=7) THEN
1581 telt = tet10tnl(mtn,2) + tet10telt(1)
1582 ELSE
1583 telt = tet10tnl(mtn,3) + tet10telt(1)
1584 ENDIF
1585 ELSE
1586 IF (ihbe<=1.OR.ihbe==101) THEN
1587C Solides ISOLD1
1588 telt = sol1tnl(mtn,1) + soltelt(1)
1589 ELSEIF (ihbe==2.OR.ihbe==102) THEN
1590C Solides ISOLD2
1591 telt = sol1tnl(mtn,1) + soltelt(2)
1592C
1593 ELSEIF (ihbe==24.OR.ihbe==104) THEN
1594C Solides ISOLD24 - HEPH
1595 telt = sol1tnl(mtn,1) + soltelt(3)
1596C
1597 ELSEIF (ihbe==12.OR.ihbe==112) THEN
1598C Solids Insd12 - STD 8 NODE INTEG Point
1599 telt = sol8tnl(mtn,1) + soltelt(4)
1600C
1601 ELSEIF (ihbe==14.OR.ihbe>=222) THEN
1602C Solides HA8
1603 mpt = abs(npt)
1604 npts = mpt/100
1605 nptt = mod(mpt/10,10)
1606 nptr = mod(mpt,10)
1607 nptot = npts*nptt*int(nptr)
1608C
1609 telt = nptot*sol8tnl(mtn,1)+soltelt(5)+nptot*soltelt(6)
1610
1611 ELSEIF(ihbe==17)THEN
1612 telt = sol1tnl(mtn,1)*8+soltelt(7)
1613 ELSE
1614 telt = sol1tnl(mtn,1) + soltelt(1)
1615 ENDIF
1616 ENDIF
1617C
1618 theogp(ng)= telt*nelem*ncycle*tppond
1619C COQUES
1620 ELSEIF (ity==3) THEN
1621
1622 DO j=nft,nft+nelem-1
1623 mma = ixc(1,j)
1624 IF (npt>0) THEN
1625C traitement a part pour zero points d integration
1626 IF (mtn==2.OR.mtn==3) THEN
1627 cc = pm(43,mma)
1628 IF (cc/=0.0 )THEN
1629 tabmat(1) = shtnl(mtn,1,2)
1630 tabmat(2) = shtnl(mtn,2,2)
1631 tabmat(3) = shtnl(mtn,3,2)
1632 ELSE
1633 tabmat(1) = shtnl(mtn,1,1)
1634 tabmat(2) = shtnl(mtn,2,1)
1635 tabmat(3) = shtnl(mtn,3,1)
1636 ENDIF
1637
1638 ELSEIF (mtn==36) THEN
1639 nfunc = ipm(10,mma)
1640
1641 IF (nfunc<=2) THEN
1642 tabmat(1) = shtnl(mtn,1,1)
1643 tabmat(2) = shtnl(mtn,2,1)
1644 tabmat(3) = shtnl(mtn,3,1)
1645 ELSEIF (nfunc>2.AND.nfunc<=7) THEN
1646 tabmat(1) = shtnl(mtn,1,2)
1647 tabmat(2) = shtnl(mtn,2,2)
1648 tabmat(3) = shtnl(mtn,3,2)
1649 ELSEIF (nfunc>7) THEN
1650 tabmat(1) = shtnl(mtn,1,3)
1651 tabmat(2) = shtnl(mtn,2,3)
1652 tabmat(3) = shtnl(mtn,3,3)
1653 ENDIF
1654 ELSE
1655 tabmat(1) = shtnl(mtn,1,1)
1656 tabmat(2) = shtnl(mtn,2,1)
1657 tabmat(3) = shtnl(mtn,3,1)
1658 ENDIF
1659
1660 tabx(1) = 1.
1661 tabx(2) = 3.
1662 tabx(3) = 5.
1663
1664 nptr = npt
1665
1666 CALL interlagran(tabmat,tabx,3,nptr,timmat)
1667
1668 ELSE
1669C Cas Zero points d integration
1670 IF (mtn==2.OR.mtn==3) THEN
1671 cc = pm(43,mma)
1672 IF (cc/=0.0 )THEN
1673 timmat = shtnl(mtn,0,2)
1674 ELSE
1675 timmat = shtnl(mtn,0,1)
1676 ENDIF
1677
1678 ELSEIF (mtn==36) THEN
1679 nfunc = nint(pm(40,mma))
1680 IF (nfunc<=2) THEN
1681 timmat = shtnl(mtn,0,1)
1682 ELSEIF (nfunc>2.AND.nfunc<=7) THEN
1683 timmat = shtnl(mtn,0,2)
1684 ELSEIF (nfunc>7) THEN
1685 timmat = shtnl(mtn,0,3)
1686 ENDIF
1687 ELSE
1688 timmat = shtnl(mtn,0,1)
1689 ENDIF
1690
1691C fin cas zero point d integrations
1692 ENDIF
1693
1694C elementary time
1695 IF (ihbe>=11.AND.ihbe<=19) THEN
1696 telt = shtelt(3)+batozmult*timmat
1697 ELSEIF (ihbe>=21.AND.ihbe<=29) THEN
1698 telt = shtelt(2) + timmat
1699 ELSE
1700 telt = shtelt(1) + timmat
1701 ENDIF
1702C Elementary end
1703 theogp(ng)= theogp(ng)+telt*ncycle*tppond
1704 ENDDO
1705C TRIANGLES
1706 ELSEIF (ity==7) THEN
1707
1708 DO j=nft,nft+nelem-1
1709 mma = ixtg(1,j)
1710 IF (npt>0) THEN
1711C traitement a part pour zero points d integration
1712 IF (mtn==2.OR.mtn==3) THEN
1713 cc = pm(43,mma)
1714 IF (cc/=0.0 )THEN
1715 tabmat(1) = tritnl(mtn,1,2)
1716 tabmat(2) = tritnl(mtn,2,2)
1717 tabmat(3) = tritnl(mtn,3,2)
1718 ELSE
1719 tabmat(1) = tritnl(mtn,1,1)
1720 tabmat(2) = tritnl(mtn,2,1)
1721 tabmat(3) = tritnl(mtn,3,1)
1722 ENDIF
1723
1724 ELSEIF (mtn==36) THEN
1725 nfunc = ipm(10,mma)
1726 IF (nfunc<=2) THEN
1727 tabmat(1) = tritnl(mtn,1,1)
1728 tabmat(2) = tritnl(mtn,2,1)
1729 tabmat(3) = tritnl(mtn,3,1)
1730 ELSEIF (nfunc>2.AND.nfunc<=7) THEN
1731 tabmat(1) = tritnl(mtn,1,2)
1732 tabmat(2) = tritnl(mtn,2,2)
1733 tabmat(3) = tritnl(mtn,3,2)
1734 ELSEIF (nfunc>7) THEN
1735 tabmat(1) = tritnl(mtn,1,3)
1736 tabmat(2) = tritnl(mtn,2,3)
1737 tabmat(3) = tritnl(mtn,3,3)
1738 ENDIF
1739 ELSE
1740 tabmat(1) = tritnl(mtn,1,1)
1741 tabmat(2) = tritnl(mtn,2,1)
1742 tabmat(3) = tritnl(mtn,3,1)
1743 ENDIF
1744
1745 tabx(1) = 1.
1746 tabx(2) = 3.
1747 tabx(3) = 5.
1748
1749 nptr = npt
1750
1751 CALL interlagran(tabmat,tabx,3,nptr,timmat)
1752
1753 ELSE
1754C Cas Zero points d integration
1755 IF (mtn==2.OR.mtn==3) THEN
1756 cc = pm(43,mma)
1757 IF (cc/=0.0 )THEN
1758 timmat = tritnl(mtn,0,2)
1759 ELSE
1760 timmat = tritnl(mtn,0,1)
1761 ENDIF
1762
1763 ELSEIF (mtn==36) THEN
1764 nfunc = nint(pm(40,mma))
1765 IF (nfunc<=2) THEN
1766 timmat = tritnl(mtn,0,1)
1767 ELSEIF (nfunc>2.AND.nfunc<=7) THEN
1768 timmat = tritnl(mtn,0,2)
1769 ELSEIF (nfunc>7) THEN
1770 timmat = tritnl(mtn,0,3)
1771 ENDIF
1772 ELSE
1773 timmat = tritnl(mtn,0,1)
1774 ENDIF
1775
1776C fin cas zero point d integrations
1777 ENDIF
1778
1779C elementary time
1780 IF (ihbe>=11.AND.ihbe<=19) THEN
1781 telt = tritelt(3)+batozmult*timmat
1782 ELSEIF (ihbe>=21.AND.ihbe<=29) THEN
1783 telt = tritelt(2) + timmat
1784 ELSE
1785 telt = tritelt(1) + timmat
1786 ENDIF
1787C Elementary end
1788 theogp(ng)= theogp(ng)+telt*ncycle*tppond
1789 ENDDO
1790
1791 ENDIF
1792 tpsthtot = tpsthtot + theogp(ng)
1793 tpsreel = tpsreel + cputimeg(ng)
1794 ENDDO
1795
1796
1797C Now that we have all the theoretical times of groups we
1798C can go to treatment and display.
1799
1800 numother = ngroup - numshg - numtrig - numsolg
1801 WRITE(66,'(A)') ' '
1802 WRITE(66,1100) numsolg,numshg,numtrig,numother
1803 WRITE(66,'(A)') ' '
1804 WRITE(66,1200) TPSREEL,TPSTHTOT
1805 IF (NUMSOLG>0)
1806 . CALL PRINTSOLIDES(IPARG,THEOGP,NUMSOLG,IPM,IXS)
1807
1808 IF (NUMSOL4G>0)
1809 . CALL PRINTTET4(IPARG,THEOGP,NUMSOL4G,IPM,IXS)
1810
1811 IF (NUMSOL10G>0)
1812 . CALL PRINTTET10(IPARG,THEOGP,NUMSOL10G)
1813 IF (NUMSHG>0)
1814 . CALL PRINTCOQUES(IPARG,IXC,IPM,THEOGP,NUMSHG)
1815
1816 IF (NUMTRIG>0)
1817 . CALL PRINTTRIANGLES(IPARG,THEOGP,NUMTRIG)
1818
1819 CLOSE(UNIT=66)
1820
1821 WRITE (IOUT,1300) FILNAM(1:FILEN)
1822 WRITE (ISTDO,1300) FILNAM(1:FILEN)
1823
1824
1825 1000 FORMAT(
1826 & 4X,'spmd processor number . . . . . . . . . . . . . .',I10/
1827 & 4X,'total number of cycles. . . . . . . . . . . . . .',I10)
1828
1829 1100 FORMAT(
1830 & 4X,'number of solid elements groups . . . . . . . . .',I10/
1831 & 4X,'number of shell elements groups . . . . . . . . .',I10/
1832 & 4X,'number of triangular elements groups. . . . . . .',I10/
1833 & 4X,'number of other element groups. . . . . . . . . .',I10)
1834
1835 1200 FORMAT(
1836 & 4X,'solid, shell, triangular group time'/,
1837 & 4X,'-----------------------------------'/,
1838 & 4X,'total group time . . . . . . . . . . . . . . . .',1PG20.13/
1839 & 4X,'starter estimated group time . . . . . . . . . .',1PG20.13)
1840
1841 1300 FORMAT (4X,' dd analysis file:',1X,A,' written')
1842C
1843 RETURN
subroutine interlagran(tab, lx, ltab, x, y)
Definition timer.F:2416
program starter
Definition starter.F:39

◆ printsolides()

subroutine printsolides ( integer, dimension(nparg,*) iparg,
real, dimension(ngroup) theogp,
integer numsolg,
integer, dimension(npropmi,*) ipm,
integer, dimension(nixs,*) ixs )

Definition at line 1982 of file timer.F.

1983C-----------------------------------------------
1984C M o d u l e s
1985C-----------------------------------------------
1986 use element_mod , only : nixs
1987C-----------------------------------------------
1988C I m p l i c i t T y p e s
1989C-----------------------------------------------
1990#include "implicit_f.inc"
1991C-----------------------------------------------
1992C C o m m o n B l o c k s
1993C-----------------------------------------------
1994#include "com01_c.inc"
1995#include "param_c.inc"
1996#include "scr19_c.inc"
1997C-----------------------------------------------
1998C G l o b a l P a r a m e t e r s
1999C-----------------------------------------------
2000 COMMON /timerg/timerg(2,500000),cputimeg(500000)
2001 REAL TIMERG,CPUTIMEG
2002C-----------------------------------------------
2003C D u m m y A r g u m e n t s
2004C-----------------------------------------------
2005 INTEGER NUMSOLG
2006 INTEGER IPARG(NPARG,*),IXS(NIXS,*),IPM(NPROPMI,*)
2007 REAL THEOGP(NGROUP)
2008C-----------------------------------------------
2009C L o c a l V a r i a b l e s
2010C-----------------------------------------------
2011 INTEGER NGL,NG,NUMGROUP(NUMSOLG),INDEXSH(NUMSOLG),
2012 . ITY,MTN,NELEM,NPT,NSG,
2013 . NFT,IHBE,MMA,NFUNC,I,J,ISOLNOD,
2014 . MID,MUID
2015 REAL DIFFTT,DIFFTTSH(NUMSOLG),TEMP(NUMSOLG)
2016
2017
2018 REAL PCT
2019C-----------------------------------------------
2020C S o u r c e L i n e s
2021C-----------------------------------------------
2022 ngl = 0
2023
2024 DO ng=1,ngroup
2025 ity = iparg(5,ng)
2026 mtn = iparg(1,ng)
2027 nelem = iparg(2,ng)
2028 npt = iparg(6,ng)
2029 nsg = iparg(10,ng)
2030 nft = iparg(3,ng)+1
2031 ihbe = iparg(23,ng)
2032
2033 IF (ity==1) THEN
2034 isolnod = iparg(28,ng)
2035 IF (isolnod/=4.AND.isolnod/=10) THEN
2036 ngl = ngl + 1
2037 numgroup(ngl) = ng
2038 diffttsh(ngl) = cputimeg(ng) - theogp(ng)
2039 ENDIF
2040 ENDIF
2041 ENDDO
2042
2043 DO i=1,ngl
2044 indexsh(i) = i
2045 ENDDO
2046
2047 CALL my_fsort(diffttsh,indexsh,numsolg,temp)
2048
2049 WRITE(66,3000)
2050
2051 DO i=1,numsolg
2052 ngl = indexsh(i)
2053 ng = numgroup(ngl)
2054
2055 ity = iparg(5,ng)
2056 mtn = iparg(1,ng)
2057 nelem = iparg(2,ng)
2058 nft = iparg(3,ng)+1
2059 nsg = iparg(10,ng)
2060 npt = iparg(6,ng)
2061
2062 mid = ixs(1,nft)
2063 muid = ipm(1,mid)
2064
2065 difftt = cputimeg(ng) - theogp(ng)
2066
2067 pct = ((cputimeg(ng) - theogp(ng))/cputimeg(ng) )*100
2068
2069 WRITE(66,'(I8,A,I8,A,I8,A,I8,A,I8,A,I8,A,I8,
2070 . A,E15.3,A,E15.3,A,E15.3,A,F8.3,A)')
2071 . ng,' ',ity,' ',nelem,' ',mtn,' ',muid,' ',npt,
2072 . ' ',nsg,' ',
2073 . cputimeg(ng),' ',theogp(ng),' ',difftt,' ',pct,'%'
2074
2075 ENDDO
2076
2077 3000 FORMAT(
2078 & /' '/' '/10x,' SOLID ELEMENT GROUPS'/
2079 & 10x,' --------------------'/
2080 & ' '/
2081 & ' '/
2082 & ' GRP_NB ELEM_TYP NUM_ELEM MAT_NUMB MAT_USERN',
2083 & ' NPT NSG CPUTIMEG',
2084 & ' TIMETHEO DIFF PCT')
2085

◆ printtet10()

subroutine printtet10 ( integer, dimension(nparg,*) iparg,
real, dimension(ngroup) theogp,
integer numsolg )

Definition at line 2207 of file timer.F.

2208C-----------------------------------------------
2209C I m p l i c i t T y p e s
2210C-----------------------------------------------
2211#include "implicit_f.inc"
2212C-----------------------------------------------
2213C C o m m o n B l o c k s
2214C-----------------------------------------------
2215#include "com01_c.inc"
2216#include "param_c.inc"
2217#include "scr19_c.inc"
2218C-----------------------------------------------
2219C G l o b a l P a r a m e t e r s
2220C-----------------------------------------------
2221 COMMON /timerg/timerg(2,500000),cputimeg(500000)
2222 REAL TIMERG,CPUTIMEG
2223C-----------------------------------------------
2224C D u m m y A r g u m e n t s
2225C-----------------------------------------------
2226 INTEGER NUMSOLG
2227 INTEGER IPARG(NPARG,*)
2228 REAL THEOGP(NGROUP)
2229C-----------------------------------------------
2230C L o c a l V a r i a b l e s
2231C-----------------------------------------------
2232 INTEGER NGL,NG,NUMGROUP(NUMSOLG),INDEXSH(NUMSOLG),
2233 . ITY,MTN,NELEM,NPT,NSG,ISOLNOD,
2234 . NFT,IHBE,MMA,NFUNC,I,J
2235 REAL DIFFTT,DIFFTTSH(NUMSOLG),TEMP(NUMSOLG)
2236
2237
2238 REAL PCT
2239C-----------------------------------------------
2240C S o u r c e L i n e s
2241C-----------------------------------------------
2242 ngl = 0
2243
2244 DO ng=1,ngroup
2245 ity = iparg(5,ng)
2246 mtn = iparg(1,ng)
2247 nelem = iparg(2,ng)
2248 npt = iparg(6,ng)
2249 nsg = iparg(10,ng)
2250 nft = iparg(3,ng)+1
2251 ihbe = iparg(23,ng)
2252
2253 IF (ity==1) THEN
2254 isolnod = iparg(28,ng)
2255 IF (isolnod==10) THEN
2256 ngl = ngl + 1
2257 numgroup(ngl) = ng
2258 diffttsh(ngl) = cputimeg(ng) - theogp(ng)
2259 ENDIF
2260 ENDIF
2261 ENDDO
2262
2263 DO i=1,ngl
2264 indexsh(i) = i
2265 ENDDO
2266
2267 CALL my_fsort(diffttsh,indexsh,numsolg,temp)
2268
2269 WRITE(66,3000)
2270
2271 DO i=1,numsolg
2272 ngl = indexsh(i)
2273 ng = numgroup(ngl)
2274
2275 ity = iparg(5,ng)
2276 mtn = iparg(1,ng)
2277 nelem = iparg(2,ng)
2278 nsg = iparg(10,ng)
2279 npt = iparg(6,ng)
2280
2281 difftt = cputimeg(ng) - theogp(ng)
2282
2283 pct = ((cputimeg(ng) - theogp(ng))/cputimeg(ng) )*100
2284
2285 WRITE(66,'(I8,A,I8,A,I8,A,I8,A,I8,A,I8,A,E15.3,A,E15.3,A,
2286 . E15.3,A,F8.3,A)')
2287 . ng,' ',ity,' ',nelem,' ',mtn,' ',npt,' ',nsg,' ',
2288 . cputimeg(ng),' ',theogp(ng),' ',difftt,' ',pct,'%'
2289
2290 ENDDO
2291
2292 3000 FORMAT(
2293 & /' '/' '/10x,' TETRA 10 ELEMENT GROUPS'/
2294 & 10x,' ---------------------'/
2295 & ' '/
2296 & ' '/
2297 & ' GRP_NB ELEM_TYP NUM_ELEM MAT_NUMB ',
2298 & ' NPT NSG CPUTIMEG',
2299 & ' TIMETHEO DIFF PCT')
2300

◆ printtet4()

subroutine printtet4 ( integer, dimension(nparg,*) iparg,
real, dimension(ngroup) theogp,
integer numsolg,
integer, dimension(npropmi,*) ipm,
integer, dimension(nixs,*) ixs )

Definition at line 2096 of file timer.F.

2097C-----------------------------------------------
2098C M o d u l e s
2099C-----------------------------------------------
2100 use element_mod , only : nixs
2101C-----------------------------------------------
2102C I m p l i c i t T y p e s
2103C-----------------------------------------------
2104#include "implicit_f.inc"
2105C-----------------------------------------------
2106C C o m m o n B l o c k s
2107C-----------------------------------------------
2108#include "com01_c.inc"
2109#include "param_c.inc"
2110#include "scr19_c.inc"
2111C-----------------------------------------------
2112C G l o b a l P a r a m e t e r s
2113C-----------------------------------------------
2114 COMMON /timerg/timerg(2,500000),cputimeg(500000)
2115 REAL TIMERG,CPUTIMEG
2116C-----------------------------------------------
2117C D u m m y A r g u m e n t s
2118C-----------------------------------------------
2119 INTEGER NUMSOLG
2120 INTEGER IPARG(NPARG,*),IXS(NIXS,*),IPM(NPROPMI,*)
2121 REAL THEOGP(NGROUP)
2122C-----------------------------------------------
2123C L o c a l V a r i a b l e s
2124C-----------------------------------------------
2125 INTEGER NGL,NG,NUMGROUP(NUMSOLG),INDEXSH(NUMSOLG),
2126 . ITY,MTN,NELEM,NPT,NSG,ISOLNOD,
2127 . NFT,IHBE,MMA,NFUNC,I,J,MID,MUID
2128 REAL DIFFTT,DIFFTTSH(NUMSOLG),TEMP(NUMSOLG)
2129
2130
2131 REAL PCT
2132C-----------------------------------------------
2133C S o u r c e L i n e s
2134C-----------------------------------------------
2135 ngl = 0
2136
2137 DO ng=1,ngroup
2138 ity = iparg(5,ng)
2139 mtn = iparg(1,ng)
2140 nelem = iparg(2,ng)
2141 npt = iparg(6,ng)
2142 nsg = iparg(10,ng)
2143 nft = iparg(3,ng)+1
2144 ihbe = iparg(23,ng)
2145
2146 IF (ity==1) THEN
2147 isolnod = iparg(28,ng)
2148 IF (isolnod==4) THEN
2149 ngl = ngl + 1
2150 numgroup(ngl) = ng
2151 diffttsh(ngl) = cputimeg(ng) - theogp(ng)
2152 ENDIF
2153 ENDIF
2154 ENDDO
2155
2156 DO i=1,ngl
2157 indexsh(i) = i
2158 ENDDO
2159
2160 CALL my_fsort(diffttsh,indexsh,numsolg,temp)
2161
2162 WRITE(66,3000)
2163
2164 DO i=1,numsolg
2165 ngl = indexsh(i)
2166 ng = numgroup(ngl)
2167 nft = iparg(3,ng)+1
2168
2169 ity = iparg(5,ng)
2170 mtn = iparg(1,ng)
2171 nelem = iparg(2,ng)
2172 nsg = iparg(10,ng)
2173 npt = iparg(6,ng)
2174
2175 mid = ixs(1,nft)
2176 muid = ipm(1,mid)
2177
2178 difftt = cputimeg(ng) - theogp(ng)
2179
2180 pct = ((cputimeg(ng) - theogp(ng))/cputimeg(ng) )*100
2181
2182 WRITE(66,'(I8,A,I8,A,I8,A,I8,A,I8,A,I8,A,I8,
2183 . A,E15.3,A,E15.3,A,E15.3,A,F8.3,A)')
2184 . ng,' ',ity,' ',nelem,' ',mtn,' ',muid,' ',npt,' ',
2185 . nsg,' ',
2186 . cputimeg(ng),' ',theogp(ng),' ',difftt,' ',pct,'%'
2187
2188 ENDDO
2189
2190 3000 FORMAT(
2191 & /' '/' '/10x,' TETRA 4 ELEMENT GROUPS'/
2192 & 10x,' --------------------'/
2193 & ' '/
2194 & ' '/
2195 & ' GRP_NB ELEM_TYP NUM_ELEM MAT_NUMB MAT_USERN',
2196 & ' NPT NSG CPUTIMEG',
2197 & ' TIMETHEO DIFF PCT')
2198

◆ printtriangles()

subroutine printtriangles ( integer, dimension(nparg,*) iparg,
real, dimension(ngroup) theogp,
integer numtrig )

Definition at line 2310 of file timer.F.

2311C-----------------------------------------------
2312C I m p l i c i t T y p e s
2313C-----------------------------------------------
2314#include "implicit_f.inc"
2315C-----------------------------------------------
2316C C o m m o n B l o c k s
2317C-----------------------------------------------
2318#include "com01_c.inc"
2319#include "param_c.inc"
2320#include "scr19_c.inc"
2321C-----------------------------------------------
2322C G l o b a l P a r a m e t e r s
2323C-----------------------------------------------
2324 COMMON /timerg/timerg(2,500000),cputimeg(500000)
2325 REAL TIMERG,CPUTIMEG
2326C-----------------------------------------------
2327C D u m m y A r g u m e n t s
2328C-----------------------------------------------
2329 INTEGER NUMTRIG
2330 INTEGER IPARG(NPARG,*)
2331C
2332C-----------------------------------------------
2333C L o c a l V a r i a b l e s
2334C-----------------------------------------------
2335 INTEGER NGL,NG,NUMGROUP(NUMTRIG),INDEXSH(NUMTRIG),
2336 . ITY,MTN,NELEM,NPT,NSG,
2337 . NFT,IHBE,MMA,NFUNC,I,J
2338 REAL DIFFTT,DIFFTTSH(NUMTRIG),TEMP(NUMTRIG)
2339
2340 REAL THEOGP(NGROUP)
2341 REAL PCT
2342C-----------------------------------------------
2343C S o u r c e L i n e s
2344C-----------------------------------------------
2345
2346 ngl = 0
2347
2348
2349 DO ng=1,ngroup
2350 ity = iparg(5,ng)
2351 mtn = iparg(1,ng)
2352 nelem = iparg(2,ng)
2353 npt = iparg(6,ng)
2354 nsg = iparg(10,ng)
2355 nft = iparg(3,ng)+1
2356 ihbe = iparg(23,ng)
2357
2358 IF (ity==7) THEN
2359
2360 ngl = ngl + 1
2361
2362 numgroup(ngl) = ng
2363 diffttsh(ngl) = cputimeg(ng) - theogp(ng)
2364
2365 ENDIF
2366 ENDDO
2367
2368 DO i=1,ngl
2369 indexsh(i) = i
2370 ENDDO
2371
2372 CALL my_fsort(diffttsh,indexsh,numtrig,temp)
2373
2374 WRITE(66,3200)
2375
2376 DO i=1,numtrig
2377 ngl = indexsh(i)
2378 ng = numgroup(ngl)
2379
2380 ity = iparg(5,ng)
2381 mtn = iparg(1,ng)
2382 nelem = iparg(2,ng)
2383 nsg = iparg(10,ng)
2384 npt = iparg(6,ng)
2385
2386 difftt = cputimeg(ng) - theogp(ng)
2387
2388 pct = ((cputimeg(ng) - theogp(ng))/cputimeg(ng) )*100
2389
2390 WRITE(66,'(I8,A,I8,A,I8,A,I8,A,I8,A,I8,A,E15.3,A,E15.3,A,
2391 . E15.3,A,F8.3,A)')
2392 . ng,' ',ity,' ',nelem,' ',mtn,' ',npt,' ',nsg,' ',
2393 . cputimeg(ng),' ',theogp(ngl),' ',difftt,' ',pct,'%'
2394
2395 ENDDO
2396
2397 3200 FORMAT(
2398 & /' '/' '/10x,' TRIANGULAR ELEMENT GROUPS'/
2399 & 10x,' -------------------------'/
2400 & ' '/
2401 & ' '/
2402 & ' GRP_NB ELEM_TYP NUM_ELEM MAT_NUMB ',
2403 & ' NPT NSG CPUTIMEG',
2404 & ' TIMETHEO DIFF PCT')
2405

◆ startime_mp()

subroutine startime_mp ( integer event,
integer nbr_gr,
dimension(2,nbr_gr) timer_mp )

Definition at line 2544 of file timer.F.

2545C Timer Event Incormenting Routine
2546C-----------------------------------------------
2547C I m p l i c i t T y p e s
2548C-----------------------------------------------
2549#include "implicit_f.inc"
2550C-----------------------------------------------
2551C C o m m o n B l o c k s
2552C-----------------------------------------------
2553#include "task_c.inc"
2554C-----------------------------------------------
2555C D u m m y A r g u m e n t s
2556C-----------------------------------------------
2557 INTEGER EVENT,NBR_GR
2558 my_real, DIMENSION(2,NBR_GR) :: timer_mp
2559C-----------------------------------------------
2560C L o c a l A r g u m e n t s
2561C-----------------------------------------------
2562
2563
2564 CALL cpu_time(timer_mp(1,event))
2565
2566 RETURN

◆ startimeg()

subroutine startimeg ( integer ng)

Definition at line 1370 of file timer.F.

1371C Timer Elem Timer Incorsement Routine.
1372C-----------------------------------------------
1373C I m p l i c i t T y p e s
1374C-----------------------------------------------
1375#include "implicit_f.inc"
1376C-----------------------------------------------
1377C C o m m o n B l o c k s
1378C-----------------------------------------------
1379 COMMON /timerg/timerg(2,500000),cputimeg(500000)
1380 REAL TIMERG,CPUTIMEG
1381C-----------------------------------------------
1382C D u m m y A r g u m e n t s
1383C-----------------------------------------------
1384 INTEGER NG
1385C
1386 CALL my_etime(timerg(1,ng))
1387
1388 RETURN
subroutine my_etime(timer)
Definition machine.F:114

◆ stoptime_mp()

subroutine stoptime_mp ( integer event,
integer nbr_gr,
dimension(2,nbr_gr) timer_mp,
dimension(nbr_gr) cputime_mp )

Definition at line 2573 of file timer.F.

2574C Timer Event Incontation Routine
2575C-----------------------------------------------
2576C I m p l i c i t T y p e s
2577C-----------------------------------------------
2578#include "implicit_f.inc"
2579C-----------------------------------------------
2580C C o m m o n B l o c k s
2581C-----------------------------------------------
2582#include "task_c.inc"
2583C-----------------------------------------------
2584C D u m m y A r g u m e n t s
2585C-----------------------------------------------
2586 INTEGER EVENT,NBR_GR
2587 my_real, DIMENSION(NBR_GR) :: cputime_mp
2588 my_real, DIMENSION(2,NBR_GR) :: timer_mp
2589C
2590
2591 DOUBLE PRECISION SECS
2592
2593C **********************************
2594C
2595 CALL cpu_time(timer_mp(2,event))
2596 cputime_mp(event) = cputime_mp(event) +
2597 . (timer_mp(2,event)-timer_mp(1,event))
2598C
2599 RETURN

◆ stoptimeg()

subroutine stoptimeg ( integer ng)

Definition at line 1418 of file timer.F.

1419C Timer Event Incontation Routine
1420C-----------------------------------------------
1421C I m p l i c i t T y p e s
1422C-----------------------------------------------
1423#include "implicit_f.inc"
1424C-----------------------------------------------
1425C C o m m o n B l o c k s
1426C-----------------------------------------------
1427 COMMON /timerg/timerg(2,500000),cputimeg(500000)
1428 REAL TIMERG,CPUTIMEG
1429C-----------------------------------------------
1430C D u m m y A r g u m e n t s
1431C-----------------------------------------------
1432 INTEGER NG
1433C
1434 CALL my_etime(timerg(2,ng))
1435 cputimeg(ng) = cputimeg(ng) +
1436 . timerg(2,ng)-timerg(1,ng)
1437 RETURN