Branch data Line data Source code
1 : : !!****m* ABINIT/m_pretty_rec
2 : : !! NAME
3 : : !! m_pretty_rec
4 : : !!
5 : : !! FUNCTION
6 : : !! This module provides some minor functions applied in the
7 : : !! recursion
8 : : !!
9 : : !! COPYRIGHT
10 : : !! Copyright (C) 2002-2026 ABINIT group (XG)
11 : : !! This file is distributed under the terms of the
12 : : !! GNU General Public License, see ~abinit/COPYING
13 : : !! or http://www.gnu.org/copyleft/gpl.txt .
14 : : !! For the initials of contributors, see ~abinit/doc/developers/contributors.txt.
15 : : !!
16 : : !! NOTES
17 : : !!
18 : : !!
19 : : !! SOURCE
20 : :
21 : : #if defined HAVE_CONFIG_H
22 : : #include "config.h"
23 : : #endif
24 : :
25 : : #include "abi_common.h"
26 : :
27 : :
28 : : MODULE m_pretty_rec
29 : :
30 : : use defs_basis
31 : : use m_abicore
32 : :
33 : : implicit none
34 : :
35 : : private
36 : :
37 : : public :: prtwork ! calculate the work done during recursion
38 : :
39 : : interface prtwork
40 : : module procedure prtworksim
41 : : module procedure prtworksiRe
42 : : module procedure prtworkadv
43 : : end interface prtwork
44 : :
45 : : CONTAINS !===========================================================
46 : : !!***
47 : :
48 : : !!****f* m_pretty_rec/prtworksim
49 : : !! NAME
50 : : !! prtworksim
51 : : !!
52 : : !! FUNCTION
53 : : !! Calculate the work done during recursion
54 : : !!
55 : : !! INPUTS
56 : : !! counter
57 : : !!
58 : : !! SIDE EFFECTS
59 : : !!
60 : : !! OUTPUT
61 : : !! SOURCE
62 : :
63 : 17280 : subroutine prtworksim(work_now)
64 : :
65 : : !Arguments ------------------------------------
66 : : ! scalars
67 : : integer,intent(in) :: work_now
68 : : ! arrays
69 : : !Local ---------------------------
70 : : integer,save :: work_done=0
71 : : integer :: ii,pt
72 : : character(500) :: msg
73 : : ! *********************************************************************
74 [ + + + + : 17280 : if(mod(work_done-work_now,5)==0 .and. work_now/=work_done .and. work_now <105) then
+ - ]
75 : 646 : work_done = work_now
76 : 646 : pt = work_done/5
77 [ + - + + : 15504 : write(msg,'(a,23a,i3,a)')'work done:',('-',ii=1,pt),(' ',ii=1,23-pt),work_done,'%'
+ - + + ]
78 : 646 : call wrtout(std_out,msg,'COLL')
79 : : endif
80 : :
81 : 17280 : end subroutine prtworksim
82 : : !!***
83 : :
84 : : !!****f* m_pretty_rec/prtworksiRe
85 : : !! NAME
86 : : !! prtworksiRe
87 : : !!
88 : : !! FUNCTION
89 : : !! Calculate the work done during recursion
90 : : !!
91 : : !! INPUTS
92 : : !! counter
93 : : !!
94 : : !! SIDE EFFECTS
95 : : !!
96 : : !! OUTPUT
97 : : !! SOURCE
98 : :
99 : 189 : subroutine prtworksiRe(work_now)
100 : :
101 : : !Arguments ------------------------------------
102 : : ! scalars
103 : : real(dp),intent(in) :: work_now
104 : : ! arrays
105 : : !Local ---------------------------
106 : : integer,save :: work_done=0
107 : : integer :: ii,pt,work_now_int
108 : : character(500) :: msg
109 : : ! *********************************************************************
110 : 189 : work_now_int = int(work_now)
111 [ + + + - : 189 : if(mod(work_done-work_now_int,5)==0 .and. work_now_int/=work_done .and. work_now_int <105) then
+ - ]
112 : 42 : work_done = work_now_int
113 : 42 : pt = work_done/5
114 [ + - + + : 1008 : write(msg,'(a,23a,i3,a)')'work done:',('-',ii=1,pt),(' ',ii=1,23-pt),work_done,'%'
+ - + + ]
115 : 42 : call wrtout(std_out,msg,'COLL')
116 : : endif
117 : :
118 : 189 : end subroutine prtworksiRe
119 : : !!***
120 : :
121 : : !!****f* m_pretty_rec/prtworkadv
122 : : !! NAME
123 : : !! prtworkadv
124 : : !!
125 : : !! FUNCTION
126 : : !! Calculate the work done during recursion
127 : : !!
128 : : !! INPUTS
129 : : !! counter
130 : : !!
131 : : !! SIDE EFFECTS
132 : : !!
133 : : !! OUTPUT
134 : : !! SOURCE
135 : :
136 : 0 : subroutine prtworkadv(work_now,adv)
137 : :
138 : : !Arguments ------------------------------------
139 : : ! scalars
140 : : integer,intent(in) :: work_now
141 : : character(1),intent(in) ::adv
142 : : ! arrays
143 : : !Local ---------------------------
144 : : integer,save :: work_done=0, first_wk=0
145 : : ! *********************************************************************
146 : : if(adv /= 'no' .or. adv/='yes' ) then
147 : 0 : write(std_out, "(a,i3,i3)")'nn'
148 : : end if
149 [ # # # # ]: 0 : if(work_now >=100 .and. first_wk ==0) return
150 [ # # # # ]: 0 : if(work_now == 0 .and. first_wk==0) then
151 : 0 : write(std_out,"(a)")' work done: '
152 : 0 : first_wk=1
153 : : end if
154 [ # # # # ]: 0 : if(mod(work_done-work_now,10)==0 .and. work_now/=work_done) then
155 : 0 : work_done = work_now
156 : : !write(std_out, "(a,$)")'|'
157 : 0 : write(std_out, "(a,i3,i3)")'work_done',work_done,work_now
158 [ # # ]: 0 : if(work_done == 100) then
159 : 0 : write(std_out,"(a)")' '
160 : 0 : first_wk = 0
161 : 0 : work_done = 0
162 : : end if
163 : : endif
164 : :
165 : : end subroutine prtworkadv
166 : : !!***
167 : :
168 : : END MODULE m_pretty_rec
169 : : !!***
|