GCC Code Coverage Report


Directory: ./
File: phys/cv3a_uncompress.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 77 138 55.8%
Branches: 15 222 6.8%

Line Branch Exec Source
1 127337 SUBROUTINE cv3a_uncompress(nloc, len, ncum, nd, ntra, idcum, compress, &
2 iflag, kbas, ktop, &
3 240 precip, cbmf, plcl, plfc, wbeff, sig, w0, ptop2, &
4 ft, fq, fu, fv, ftra, &
5 sigd, ma, mip, vprecip, vprecipi, upwd, dnwd, dnwd0, &
6 qcondc, wd, cape, cin, &
7 tvp, &
8 ftd, fqd, &
9 plim1, plim2, asupmax, supmax0, &
10 asupmaxmin, &
11 240 da, phi, mp, phi2, d1a, dam, sigij, & ! RomP+AC+jyg
12 qta, clw, elij, evap, ep, epmlmMm, eplaMm, & ! RomP+jyg
13 wdtrainA, wdtrainS, wdtrainM, & ! RomP
14 qtc, sigt, &
15 epmax_diag, & ! epmax_cape
16 iflag1, kbas1, ktop1, &
17 240 precip1, cbmf1, plcl1, plfc1, wbeff1, sig1, w01, ptop21, &
18 ft1, fq1, fu1, fv1, ftra1, &
19 sigd1, ma1, mip1, vprecip1, vprecipi1, upwd1, dnwd1, dnwd01, &
20 qcondc1, wd1, cape1, cin1, &
21 tvp1, &
22 ftd1, fqd1, &
23 plim11, plim21, asupmax1, supmax01, &
24 asupmaxmin1, &
25 240 da1, phi1, mp1, phi21, d1a1, dam1, sigij1, & ! RomP+AC+jyg
26 qta1, clw1, elij1, evap1, ep1, epmlmMm1, eplaMm1, & ! RomP+jyg
27 wdtrainA1, wdtrainS1, wdtrainM1, & ! RomP
28 qtc1, sigt1, &
29 epmax_diag1) ! epmax_cape
30
31 ! **************************************************************
32 ! *
33 ! CV3A_UNCOMPRESS *
34 ! *
35 ! *
36 ! written by : Sandrine Bony-Lena , 17/05/2003, 11.22.15 *
37 ! modified by : Jean-Yves Grandpeix, 23/06/2003, 10.36.17 *
38 ! **************************************************************
39
40 IMPLICIT NONE
41
42 include "cv3param.h"
43
44 ! inputs:
45 INTEGER, INTENT (IN) :: nloc, len, ncum, nd, ntra
46 INTEGER, DIMENSION (nloc), INTENT (IN) :: idcum(nloc)
47 !jyg<
48 LOGICAL, INTENT (IN) :: compress
49 !>jyg
50 INTEGER, DIMENSION (nloc), INTENT (IN) ::iflag, kbas, ktop
51 REAL, DIMENSION (nloc), INTENT (IN) :: precip, cbmf, plcl, plfc
52 REAL, DIMENSION (nloc), INTENT (IN) :: wbeff
53 REAL, DIMENSION (nloc, nd), INTENT (IN) :: sig, w0
54 REAL, DIMENSION (nloc), INTENT (IN) :: ptop2
55 REAL, DIMENSION (nloc), INTENT (IN) :: epmax_diag
56 REAL, DIMENSION (nloc, nd), INTENT (IN) :: ft, fq, fu, fv
57 REAL, DIMENSION (nloc, nd, ntra), INTENT (IN) :: ftra
58 REAL, DIMENSION (nloc), INTENT (IN) :: sigd
59 REAL, DIMENSION (nloc, nd), INTENT (IN) :: ma, mip
60 REAL, DIMENSION (nloc, nd+1), INTENT (IN) :: vprecip
61 REAL, DIMENSION (nloc, nd+1), INTENT (IN) :: vprecipi
62 REAL, DIMENSION (nloc, nd), INTENT (IN) :: upwd, dnwd, dnwd0
63 REAL, DIMENSION (nloc, nd), INTENT (IN) :: qcondc
64 REAL, DIMENSION (nloc), INTENT (IN) :: wd, cape, cin
65 REAL, DIMENSION (nloc, nd), INTENT (IN) :: tvp
66 REAL, DIMENSION (nloc, nd), INTENT (IN) :: ftd, fqd
67 REAL, DIMENSION (nloc), INTENT (IN) :: plim1, plim2
68 REAL, DIMENSION (nloc, nd), INTENT (IN) :: asupmax
69 REAL, DIMENSION (nloc), INTENT (IN) :: supmax0, asupmaxmin
70
71 REAL, DIMENSION (nloc, nd), INTENT (IN) :: da
72 REAL, DIMENSION (nloc, nd, nd), INTENT (IN) :: phi !AC!
73 REAL, DIMENSION (nloc, nd), INTENT (IN) :: mp !RomP
74 REAL, DIMENSION (nloc, nd, nd), INTENT (IN) :: phi2 !RomP
75 REAL, DIMENSION (nloc, nd), INTENT (IN) :: d1a, dam !RomP
76 REAL, DIMENSION (nloc, nd, nd), INTENT (IN) :: sigij !RomP
77 REAL, DIMENSION (nloc, nd), INTENT (IN) :: qta !jyg
78 REAL, DIMENSION (nloc, nd), INTENT (IN) :: clw !RomP
79 REAL, DIMENSION (nloc, nd, nd), INTENT (IN) :: elij !RomP
80 REAL, DIMENSION (nloc, nd), INTENT (IN) :: evap, ep !RomP
81 REAL, DIMENSION (nloc, nd, nd), INTENT (IN) :: epmlmMm !RomP+jyg
82 REAL, DIMENSION (nloc, nd), INTENT (IN) :: eplamM !RomP+jyg
83 REAL, DIMENSION (nloc, nd), INTENT (IN) :: qtc, sigt !RomP
84 REAL, DIMENSION (nloc, nd), INTENT (IN) :: wdtrainA, wdtrainS, wdtrainM !RomP
85
86 ! outputs:
87 INTEGER, DIMENSION (len), INTENT (OUT) :: iflag1, kbas1, ktop1
88 REAL, DIMENSION (len), INTENT (OUT) :: precip1, cbmf1, plcl1, plfc1
89 REAL, DIMENSION (len), INTENT (OUT) :: wbeff1
90 REAL, DIMENSION (len, nd), INTENT (OUT) :: sig1, w01
91 REAL, DIMENSION (len), INTENT (OUT) :: epmax_diag1 ! epmax_cape
92 REAL, DIMENSION (len), INTENT (OUT) :: ptop21
93 REAL, DIMENSION (len, nd), INTENT (OUT) :: ft1, fq1, fu1, fv1
94 REAL, DIMENSION (len, nd, ntra), INTENT (OUT) :: ftra1
95 REAL, DIMENSION (len), INTENT (OUT) :: sigd1
96 REAL, DIMENSION (len, nd), INTENT (OUT) :: ma1, mip1
97 REAL, DIMENSION (len, nd+1), INTENT (OUT) :: vprecip1
98 REAL, DIMENSION (len, nd+1), INTENT (OUT) :: vprecipi1
99 REAL, DIMENSION (len, nd), INTENT (OUT) :: upwd1, dnwd1, dnwd01
100 REAL, DIMENSION (len, nd), INTENT (OUT) :: qcondc1
101 REAL, DIMENSION (len), INTENT (OUT) :: wd1, cape1, cin1
102 REAL, DIMENSION (len, nd), INTENT (OUT) :: tvp1
103 REAL, DIMENSION (len, nd), INTENT (OUT) :: ftd1, fqd1
104 REAL, DIMENSION (len), INTENT (OUT) :: plim11, plim21
105 REAL, DIMENSION (len, nd), INTENT (OUT) :: asupmax1
106 REAL, DIMENSION (len), INTENT (OUT) :: supmax01, asupmaxmin1
107
108 REAL, DIMENSION (len, nd), INTENT (OUT) :: da1
109 REAL, DIMENSION (len, nd, nd), INTENT (OUT) :: phi1 !AC!
110 REAL, DIMENSION (len, nd), INTENT (OUT) :: mp1 !RomP
111 REAL, DIMENSION (len, nd, nd), INTENT (OUT) :: phi21 !RomP
112 REAL, DIMENSION (len, nd), INTENT (OUT) :: d1a1, dam1 !RomP !RomP
113 REAL, DIMENSION (len, nd, nd), INTENT (OUT) :: sigij1 !RomP
114 REAL, DIMENSION (len, nd), INTENT (OUT) :: qta1 !jyg
115 REAL, DIMENSION (len, nd), INTENT (OUT) :: clw1 !RomP
116 REAL, DIMENSION (len, nd, nd), INTENT (OUT) :: elij1 !RomP
117 REAL, DIMENSION (len, nd), INTENT (OUT) :: evap1, ep1 !RomP
118 REAL, DIMENSION (len, nd, nd), INTENT (OUT) :: epmlmMm1 !RomP+jyg
119 REAL, DIMENSION (len, nd), INTENT (OUT) :: eplamM1 !RomP+jyg
120 REAL, DIMENSION (len, nd), INTENT (OUT) :: qtc1, sigt1 !RomP
121 REAL, DIMENSION (len, nd), INTENT (OUT) :: wdtrainA1, wdtrainS1, wdtrainM1 !RomP
122
123
124 ! local variables:
125 INTEGER i, k, j
126 INTEGER jdcum
127 ! c integer k1,k2
128
129 !jyg<
130
1/2
✓ Branch 0 taken 240 times.
✗ Branch 1 not taken.
240 IF (compress) THEN
131 !>jyg
132
2/2
✓ Branch 0 taken 127097 times.
✓ Branch 1 taken 240 times.
127337 DO i = 1, ncum
133 127097 sig1(idcum(i), nd) = sig(i, nd)
134 127097 ptop21(idcum(i)) = ptop2(i)
135 127097 sigd1(idcum(i)) = sigd(i)
136 127097 precip1(idcum(i)) = precip(i)
137 127097 cbmf1(idcum(i)) = cbmf(i)
138 127097 plcl1(idcum(i)) = plcl(i)
139 127097 plfc1(idcum(i)) = plfc(i)
140 127097 wbeff1(idcum(i)) = wbeff(i)
141 127097 iflag1(idcum(i)) = iflag(i)
142 127097 kbas1(idcum(i)) = kbas(i)
143 127097 ktop1(idcum(i)) = ktop(i)
144 127097 wd1(idcum(i)) = wd(i)
145 127097 cape1(idcum(i)) = cape(i)
146 127097 cin1(idcum(i)) = cin(i)
147 127097 plim11(idcum(i)) = plim1(i)
148 127097 plim21(idcum(i)) = plim2(i)
149 127097 supmax01(idcum(i)) = supmax0(i)
150 127097 asupmaxmin1(idcum(i)) = asupmaxmin(i)
151 127337 epmax_diag1(idcum(i)) = epmax_diag(i)
152 END DO
153
154
2/2
✓ Branch 0 taken 6480 times.
✓ Branch 1 taken 240 times.
6720 DO k = 1, nl
155
2/2
✓ Branch 0 taken 3431619 times.
✓ Branch 1 taken 6480 times.
3438339 DO i = 1, ncum
156 3431619 sig1(idcum(i), k) = sig(i, k)
157 3431619 w01(idcum(i), k) = w0(i, k)
158 3431619 ft1(idcum(i), k) = ft(i, k)
159 3431619 fq1(idcum(i), k) = fq(i, k)
160 3431619 fu1(idcum(i), k) = fu(i, k)
161 3431619 fv1(idcum(i), k) = fv(i, k)
162 3431619 ma1(idcum(i), k) = ma(i, k)
163 3431619 mip1(idcum(i), k) = mip(i, k)
164 3431619 vprecip1(idcum(i), k) = vprecip(i, k)
165 3431619 vprecipi1(idcum(i), k) = vprecipi(i, k)
166 3431619 upwd1(idcum(i), k) = upwd(i, k)
167 3431619 dnwd1(idcum(i), k) = dnwd(i, k)
168 3431619 dnwd01(idcum(i), k) = dnwd0(i, k)
169 3431619 qcondc1(idcum(i), k) = qcondc(i, k)
170 3431619 tvp1(idcum(i), k) = tvp(i, k)
171 3431619 ftd1(idcum(i), k) = ftd(i, k)
172 3431619 fqd1(idcum(i), k) = fqd(i, k)
173 3431619 asupmax1(idcum(i), k) = asupmax(i, k)
174
175 3431619 da1(idcum(i), k) = da(i, k) !AC!
176 3431619 mp1(idcum(i), k) = mp(i, k) !RomP
177 3431619 d1a1(idcum(i), k) = d1a(i, k) !RomP
178 3431619 dam1(idcum(i), k) = dam(i, k) !RomP
179 3431619 qta1(idcum(i), k) = qta(i, k) !jyg
180 3431619 clw1(idcum(i), k) = clw(i, k) !RomP
181 3431619 evap1(idcum(i), k) = evap(i, k) !RomP
182 3431619 ep1(idcum(i), k) = ep(i, k) !RomP
183 3431619 eplamM1(idcum(i), k) = eplamM(i, k) !RomP+jyg
184 3431619 wdtrainA1(idcum(i), k) = wdtrainA(i, k) !RomP
185 3431619 wdtrainS1(idcum(i), k) = wdtrainS(i, k) !RomP
186 3431619 wdtrainM1(idcum(i), k) = wdtrainM(i, k) !RomP
187 3431619 qtc1(idcum(i), k) = qtc(i, k)
188 3438099 sigt1(idcum(i), k) = sigt(i, k)
189
190 END DO
191 END DO
192
193 ! Fluxes are defined on a staggered grid and extend up to nl+1
194
2/2
✓ Branch 0 taken 240 times.
✓ Branch 1 taken 127097 times.
127337 DO i = 1, ncum
195 127097 ma1(idcum(i), nlp) = 0.
196 127097 vprecip1(idcum(i), nlp) = 0.
197 127097 vprecipi1(idcum(i), nlp) = 0.
198 127097 upwd1(idcum(i), nlp) = 0.
199 127097 dnwd1(idcum(i), nlp) = 0.
200 127337 dnwd01(idcum(i), nlp) = 0.
201 END DO
202
203 ! AC! do 2100 j=1,ntra
204 ! AC!c oct3 do 2110 k=1,nl
205 ! AC! do 2110 k=1,nd ! oct3
206 ! AC! do 2120 i=1,ncum
207 ! AC! ftra1(idcum(i),k,j)=ftra(i,k,j)
208 ! AC! 2120 continue
209 ! AC! 2110 continue
210 ! AC! 2100 continue
211
212 ! AC!
213 !jyg<
214 ! Essais pour gagner du temps en diminuant l'adressage indirect
215 !! DO j = 1, nd
216 !! DO k = 1, nd
217 !! DO i = 1, ncum
218 !! phi1(idcum(i), k, j) = phi(i, k, j) !AC!
219 !! phi21(idcum(i), k, j) = phi2(i, k, j) !RomP
220 !! sigij1(idcum(i), k, j) = sigij(i, k, j) !RomP
221 !! elij1(idcum(i), k, j) = elij(i, k, j) !RomP
222 !! epmlmMm(idcum(i), k, j) = epmlmMm(i, k, j) !RomP+jyg
223 !! END DO
224 !! END DO
225 !! END DO
226
227 !! DO i = 1, ncum
228 !! jdcum=idcum(i)
229 !! phi1 (jdcum, 1:nl+1, 1:nl+1) = phi (i, 1:nl+1, 1:nl+1) !AC!
230 !! phi21 (jdcum, 1:nl+1, 1:nl+1) = phi2 (i, 1:nl+1, 1:nl+1) !RomP
231 !! sigij1 (jdcum, 1:nl+1, 1:nl+1) = sigij (i, 1:nl+1, 1:nl+1) !RomP
232 !! elij1 (jdcum, 1:nl+1, 1:nl+1) = elij (i, 1:nl+1, 1:nl+1) !RomP
233 !! epmlmMm1(jdcum, 1:nl+1, 1:nl+1) = epmlmMm(i, 1:nl+1, 1:nl+1) !RomP+jyg
234 !! END DO
235 ! These tracer associated arrays are defined up to nl, not nl+1
236
2/2
✓ Branch 0 taken 127097 times.
✓ Branch 1 taken 240 times.
127337 DO i = 1, ncum
237 127097 jdcum=idcum(i)
238
2/2
✓ Branch 0 taken 3431619 times.
✓ Branch 1 taken 127097 times.
3558956 DO k = 1,nl
239
2/2
✓ Branch 0 taken 92653713 times.
✓ Branch 1 taken 3431619 times.
96212429 DO j = 1,nl
240 92653713 phi1 (jdcum, j, k) = phi (i, j, k) !AC!
241 92653713 phi21 (jdcum, j, k) = phi2 (i, j, k) !RomP
242 92653713 sigij1 (jdcum, j, k) = sigij (i, j, k) !RomP
243 92653713 elij1 (jdcum, j, k) = elij (i, j, k) !RomP
244 96085332 epmlmMm1(jdcum, j, k) = epmlmMm(i, j, k) !RomP+jyg
245 END DO
246 ENDDO
247 ENDDO
248 !>jyg
249 ! AC!
250
251
252 ! do 2220 k2=1,nd
253 ! do 2210 k1=1,nd
254 ! do 2200 i=1,ncum
255 ! ment1(idcum(i),k1,k2) = ment(i,k1,k2)
256 ! sigij1(idcum(i),k1,k2) = sigij(i,k1,k2)
257 ! 2200 enddo
258 ! 2210 enddo
259 ! 2220 enddo
260 !
261 !jyg<
262 ELSE !(compress)
263 !
264 sig1(:,nd) = sig(:,nd)
265 ptop21(:) = ptop2(:)
266 sigd1(:) = sigd(:)
267 precip1(:) = precip(:)
268 cbmf1(:) = cbmf(:)
269 plcl1(:) = plcl(:)
270 plfc1(:) = plfc(:)
271 wbeff1(:) = wbeff(:)
272 iflag1(:) = iflag(:)
273 kbas1(:) = kbas(:)
274 ktop1(:) = ktop(:)
275 wd1(:) = wd(:)
276 cape1(:) = cape(:)
277 cin1(:) = cin(:)
278 plim11(:) = plim1(:)
279 plim21(:) = plim2(:)
280 supmax01(:) = supmax0(:)
281 asupmaxmin1(:) = asupmaxmin(:)
282 !
283 sig1(:, 1:nl) = sig(:, 1:nl)
284 w01(:, 1:nl) = w0(:, 1:nl)
285 ft1(:, 1:nl) = ft(:, 1:nl)
286 fq1(:, 1:nl) = fq(:, 1:nl)
287 fu1(:, 1:nl) = fu(:, 1:nl)
288 fv1(:, 1:nl) = fv(:, 1:nl)
289 ma1(:, 1:nl) = ma(:, 1:nl)
290 mip1(:, 1:nl) = mip(:, 1:nl)
291 vprecip1(:, 1:nl) = vprecip(:, 1:nl)
292 vprecipi1(:, 1:nl) = vprecipi(:, 1:nl)
293 upwd1(:, 1:nl) = upwd(:, 1:nl)
294 dnwd1(:, 1:nl) = dnwd(:, 1:nl)
295 dnwd01(:, 1:nl) = dnwd0(:, 1:nl)
296 qcondc1(:, 1:nl) = qcondc(:, 1:nl)
297 tvp1(:, 1:nl) = tvp(:, 1:nl)
298 ftd1(:, 1:nl) = ftd(:, 1:nl)
299 fqd1(:, 1:nl) = fqd(:, 1:nl)
300 asupmax1(:, 1:nl) = asupmax(:, 1:nl)
301
302 da1(:, 1:nl) = da(:, 1:nl) !AC!
303 mp1(:, 1:nl) = mp(:, 1:nl) !RomP
304 d1a1(:, 1:nl) = d1a(:, 1:nl) !RomP
305 dam1(:, 1:nl) = dam(:, 1:nl) !RomP
306 qta1(:, 1:nl) = qta(:, 1:nl) !jyg
307 clw1(:, 1:nl) = clw(:, 1:nl) !RomP
308 evap1(:, 1:nl) = evap(:, 1:nl) !RomP
309 ep1(:, 1:nl) = ep(:, 1:nl) !RomP
310 eplamM1(:, 1:nl) = eplamM(:, 1:nl) !RomP+jyg
311 wdtrainA1(:, 1:nl) = wdtrainA(:, 1:nl) !RomP
312 wdtrainS1(:, 1:nl) = wdtrainS(:, 1:nl) !RomP
313 wdtrainM1(:, 1:nl) = wdtrainM(:, 1:nl) !RomP
314 qtc1(:, 1:nl) = qtc(:, 1:nl)
315 sigt1(:, 1:nl) = sigt(:, 1:nl)
316 !
317 ma1(:, nlp) = 0.
318 vprecip1(:, nlp) = 0.
319 vprecipi1(:, nlp) = 0.
320 upwd1(:, nlp) = 0.
321 dnwd1(:, nlp) = 0.
322 dnwd01(:, nlp) = 0.
323
324 !
325 phi1 (:, 1:nl, 1:nl) = phi (:, 1:nl, 1:nl) !AC!
326 phi21 (:, 1:nl, 1:nl) = phi2 (:, 1:nl, 1:nl) !RomP
327 sigij1 (:, 1:nl, 1:nl) = sigij (:, 1:nl, 1:nl) !RomP
328 elij1 (:, 1:nl, 1:nl) = elij (:, 1:nl, 1:nl) !RomP
329 epmlmMm1(:, 1:nl, 1:nl) = epmlmMm(:, 1:nl, 1:nl) !RomP+jyg
330 ENDIF !(compress)
331 !>jyg
332
333 240 RETURN
334 END SUBROUTINE cv3a_uncompress
335
336