2 USE stel_kinds,
ONLY: dp
3 USE parallel_include_module
8 INTEGER,
PARAMETER :: tsum = 0, tvac = 1, tread = 2, twout= 3,
9 & teqf = 4, tfun = 5, trecon= 6, tfft = 7,
10 & tffi = 8, tfor = 9, tbcov =10, tres = 11,
11 & tprec2d = 12, tvac_2d = 13, tfun_2d = 14,
12 & tfact_2d=15, tio = 16
14 INTEGER,
PARAMETER :: tsurf=1, tscal=2, tbext=3, tsolver=4,
15 & tallg=5, tfouri=6, tgreenf=7, tfourp=8,
16 & tallr=9, tanal=10, tasum=11, tasum2=12,
19 REAL(dp) :: treadon, treadoff, tfunon, tfunoff,
20 & treconon, treconoff, tffton, tfftoff,
21 & tbcovon, tbcovoff, tvacon, tvacoff,
22 & tforon, tforoff, treson, tresoff,
23 & tprec2don, tprec2doff, twouton, twoutoff,
24 & teqfon, teqfoff, timeon, timeoff,
25 & timer_tsum, timer_tfun, timer_io
26 REAL(dp),
DIMENSION(0:15) :: timer=0
27 REAL(dp),
DIMENSION(15) :: timer_vac=0
31 SUBROUTINE write_times (nthreed, lscreen, lfreeb, lrecon, lprec2d)
33 INTEGER,
INTENT(in) :: nthreed
34 LOGICAL,
INTENT(in) :: lscreen, lfreeb, lrecon, lprec2d
36 CHARACTER(LEN=*),
DIMENSION(0:16),
PARAMETER :: form =
37 & (/
'TOTAL COMPUTATIONAL TIME (SEC) ',
38 &
' FREE BOUNDARY (VACUUM) ',
40 &
' WRITE OUT DATA TO WOUT ',
43 &
' PROFILE RECONSTRUCTION ',
44 &
' FOURIER TRANSFORM ',
45 &
' INVERSE FOURIER TRANSFORM ',
46 &
' FORCES AND SYMMETRIZE ',
49 &
'TIME IN PRECON2D SETUP ',
52 &
' FORWARD SOLVE (FACTOR BLKS) ',
53 &
'TIME TO INPUT/OUTPUT '
56 timer_tsum = timer(tsum) + timer(twout) + timer(teqf)
57 timer_tfun = timer(tfun)
58 timer_io = timer(tread) + timer(twout)
61 IF (i .eq. 1) nform = 6
62 IF (i .eq. 2) nform = nthreed
63 IF (.not.lscreen .and. i.eq.1) cycle
65 & form(tsum) ,timer_tsum, form(tio), timer_io,
66 & form(tread),timer(tread), form(twout),timer(twout),
67 & form(tfun) , timer(tfun), form(tbcov) ,timer(tbcov),
68 & form(tfft) , timer(tfft), form(tffi) ,timer(tffi),
69 & form(tfor) , timer(tfor), form(tres), timer(tres),
70 & form(teqf) ,timer(teqf)
71 IF (lrecon)
WRITE (nform, 20) form(trecon),timer(trecon)
73 WRITE (nform, 20) form(tvac) ,timer(tvac)
74 WRITE (nform, 24) timer_vac(tsurf), timer_vac(tbext),
75 & timer_vac(tscal), timer_vac(tanal), timer_vac(tasum),
76 & timer_vac(tasum2), timer_vac(tanar), timer_vac(tgreenf),
77 & timer_vac(tfourp), timer_vac(tallr), timer_vac(tallg),
78 & timer_vac(tfouri), timer_vac(tallgv),timer_vac(tsolver)
81 WRITE (nform, 20) form(tprec2d), timer(tprec2d),
82 & form(tfun_2d), timer(tfun_2d),
83 & form(tfact_2d), timer(tprec2d)-timer(tfun_2d)
84 IF (lfreeb)
WRITE (nform, 20) form(tvac_2d), timer(tvac_2d)
89 24
FORMAT( 10x,
'VACUUM SURFACE ',7x,f12.2,
90 & /,10x,
'VACUUM BEXTERN ',7x,f12.2,
91 & /,10x,
'VACUUM SCALPOT ',7x,f12.2,
92 & /,10x,
' ANALYT ',7x,f12.2,
93 & /,10x,
' ASUM ',7x,f12.2,
94 & /,10x,
' ASUM2 ',7x,f12.2,
95 & /,10x,
' ALLREDUCE ',7x,f12.2,
96 & /,10x,
' GREENF ',7x,f12.2,
97 & /,10x,
' FOURP ',7x,f12.2,
98 & /,10x,
' ALLREDUCE ',7x,f12.2,
99 & /,10x,
' ALLGATHER ',7x,f12.2,
100 & /,10x,
' FOURI ',7x,f12.2,
101 & /,10x,
'VACUUM ALLGATHER ',7x,f12.2,
102 & /,10x,
'VACUUM SOLVER ',7x,f12.2)
104 END SUBROUTINE write_times