GCC Code Coverage Report


Directory: ./
File: phys/borne_var_surf.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 62 0.0%
Branches: 0 36 0.0%

Line Branch Exec Source
1 ✗ SUBROUTINE borne_var_surf(klon,klev,nbsrf, &
2 iflag_bug_t2m_stab_ipslcm61, &
3 t1,q1,u1,v1, &
4 ftsol, qsurf, pctsrf, paprs, &
5 ✗ t2m, q2m, u10m, v10m, &
6 zt2m_cor, zq2m_cor, zu10m_cor, zv10m_cor, &
7 ✗ zrh2m_cor, zqsat2m_cor)
8
9 IMPLICIT NONE
10
11 !==================================================================
12 ! Declarations
13 !==================================================================
14
15 ! arguments
16 INTEGER klon,klev,nbsrf,iflag_bug_t2m_stab_ipslcm61
17 REAL,DIMENSION(klon),INTENT(IN) :: t1, q1, u1, v1
18 REAL,DIMENSION(klon,nbsrf),INTENT(IN) :: t2m, q2m, u10m, v10m
19 REAL,DIMENSION(klon,nbsrf),INTENT(IN) :: ftsol, pctsrf
20 REAL,DIMENSION(klon,klev+1),INTENT(IN) :: paprs
21 REAL,DIMENSION(klon),INTENT(IN) :: qsurf
22 REAL,DIMENSION (klon),INTENT(OUT) :: zt2m_cor, zq2m_cor, zu10m_cor, zv10m_cor
23 REAL,DIMENSION (klon),INTENT(OUT) :: zrh2m_cor, zqsat2m_cor
24
25
26 ! local
27 INTEGER i,nsrf
28 ✗ REAL,DIMENSION (klon,nbsrf) :: t2m_cor, q2m_cor, u10m_cor, v10m_cor
29 REAL :: zx_qs1, zcor1, zdelta1
30 include "YOMCST.h"
31 include "YOETHF.h"
32 include "FCTTRE.h"
33 !==================================================================
34 ! Correction of sub surface variables
35 !==================================================================
36
37 ✗ zrh2m_cor=0.
38 ✗ zqsat2m_cor=0.
39
40 ✗ DO nsrf=1,nbsrf
41 ✗ DO i=1,klon
42 ✗ t2m_cor(i,nsrf)=t2m(i,nsrf)
43 ✗ q2m_cor(i,nsrf)=q2m(i,nsrf)
44 ✗ u10m_cor(i,nsrf)=u10m(i,nsrf)
45 ✗ v10m_cor(i,nsrf)=v10m(i,nsrf)
46 ✗ IF(iflag_bug_t2m_stab_ipslcm61.EQ.-2.AND.q2m(i,nsrf).LT.0.) THEN
47 ✗ t2m_cor(i,nsrf)=MIN(t2m(i,nsrf),MAX(t1(i),ftsol(i,nsrf)))
48 ✗ t2m_cor(i,nsrf)=MAX(t2m_cor(i,nsrf),MIN(t1(i),ftsol(i,nsrf)))
49 ✗ q2m_cor(i,nsrf)=MIN(q2m(i,nsrf),MAX(q1(i),qsurf(i)))
50 ✗ q2m_cor(i,nsrf)=MAX(q2m_cor(i,nsrf),MIN(q1(i),qsurf(i)))
51 ✗ q2m_cor(i,nsrf)=MAX(q2m_cor(i,nsrf),0.)
52 ✗ u10m_cor(i,nsrf)=SIGN(MIN(ABS(u1(i)),ABS(u10m(i,nsrf))),u1(i))
53 ✗ v10m_cor(i,nsrf)=SIGN(MIN(ABS(v1(i)),ABS(v10m(i,nsrf))),v1(i))
54 ✗ ELSEIF(iflag_bug_t2m_stab_ipslcm61.EQ.-1.AND.(ftsol(i,nsrf).LE.t1(i).OR.q2m(i,nsrf).LT.0.)) THEN
55 ✗ t2m_cor(i,nsrf)=MIN(t2m(i,nsrf),MAX(t1(i),ftsol(i,nsrf)))
56 ✗ t2m_cor(i,nsrf)=MAX(t2m_cor(i,nsrf),MIN(t1(i),ftsol(i,nsrf)))
57 ✗ q2m_cor(i,nsrf)=MIN(q2m(i,nsrf),MAX(q1(i),qsurf(i)))
58 ✗ q2m_cor(i,nsrf)=MAX(q2m_cor(i,nsrf),MIN(q1(i),qsurf(i)))
59 ✗ q2m_cor(i,nsrf)=MAX(q2m_cor(i,nsrf),0.)
60 ✗ u10m_cor(i,nsrf)=SIGN(MIN(ABS(u1(i)),ABS(u10m(i,nsrf))),u1(i))
61 ✗ v10m_cor(i,nsrf)=SIGN(MIN(ABS(v1(i)),ABS(v10m(i,nsrf))),v1(i))
62 ✗ ELSEIF(iflag_bug_t2m_stab_ipslcm61.EQ.1.AND.ftsol(i,nsrf).LE.t1(i)) THEN
63 ✗ t2m_cor(i,nsrf)=MIN(t2m(i,nsrf),MAX(t1(i),ftsol(i,nsrf)))
64 ✗ t2m_cor(i,nsrf)=MAX(t2m_cor(i,nsrf),MIN(t1(i),ftsol(i,nsrf)))
65 ✗ q2m_cor(i,nsrf)=MIN(q2m(i,nsrf),MAX(q1(i),qsurf(i)))
66 ✗ q2m_cor(i,nsrf)=MAX(q2m_cor(i,nsrf),MIN(q1(i),qsurf(i)))
67 ✗ q2m_cor(i,nsrf)=MAX(q2m_cor(i,nsrf),0.)
68 ✗ u10m_cor(i,nsrf)=SIGN(MIN(ABS(u1(i)),ABS(u10m(i,nsrf))),u1(i))
69 ✗ v10m_cor(i,nsrf)=SIGN(MIN(ABS(v1(i)),ABS(v10m(i,nsrf))),v1(i))
70 ✗ ELSEIF(iflag_bug_t2m_stab_ipslcm61.EQ.0) THEN
71 ✗ t2m_cor(i,nsrf)=MIN(t2m(i,nsrf),MAX(t1(i),ftsol(i,nsrf)))
72 ✗ t2m_cor(i,nsrf)=MAX(t2m_cor(i,nsrf),MIN(t1(i),ftsol(i,nsrf)))
73 ✗ q2m_cor(i,nsrf)=MIN(q2m(i,nsrf),MAX(q1(i),qsurf(i)))
74 ✗ q2m_cor(i,nsrf)=MAX(q2m_cor(i,nsrf),MIN(q1(i),qsurf(i)))
75 ✗ q2m_cor(i,nsrf)=MAX(q2m_cor(i,nsrf),0.)
76 ✗ u10m_cor(i,nsrf)=SIGN(MIN(ABS(u1(i)),ABS(u10m(i,nsrf))),u1(i))
77 ✗ v10m_cor(i,nsrf)=SIGN(MIN(ABS(v1(i)),ABS(v10m(i,nsrf))),v1(i))
78 ENDIF
79 !!!
80 ✗ zdelta1 = MAX(0.,SIGN(1., rtt-t2m_cor(i,nsrf) ))
81 ✗ zx_qs1 = r2es * FOEEW(t2m_cor(i,nsrf),zdelta1)/paprs(i,1)
82 ✗ zx_qs1 = MIN(0.5,zx_qs1)
83 ✗ zcor1 = 1./(1.-RETV*zx_qs1)
84 ✗ zx_qs1 = zx_qs1*zcor1
85 ✗ zrh2m_cor(i) = zrh2m_cor(i) + q2m_cor(i,nsrf)/zx_qs1 * pctsrf(i,nsrf)
86 ✗ zqsat2m_cor(i) = zqsat2m_cor(i) + zx_qs1 * pctsrf(i,nsrf)
87 !!!
88 ENDDO
89 ENDDO
90
91 !==================================================================
92 ! Agregation of sub surfaces
93 !==================================================================
94
95 ✗ zt2m_cor=0.
96 ✗ zq2m_cor=0.
97 ✗ zu10m_cor=0.
98 ✗ zv10m_cor=0.
99 ✗ DO nsrf = 1, nbsrf
100 ✗ DO i = 1, klon
101 ✗ zt2m_cor(i) = zt2m_cor(i) + t2m_cor(i,nsrf) * pctsrf(i,nsrf)
102 ✗ zq2m_cor(i) = zq2m_cor(i) + q2m_cor(i,nsrf) * pctsrf(i,nsrf)
103 ✗ zu10m_cor(i) = zu10m_cor(i) + u10m_cor(i,nsrf) * pctsrf(i,nsrf)
104 ✗ zv10m_cor(i) = zv10m_cor(i) + v10m_cor(i,nsrf) * pctsrf(i,nsrf)
105 ENDDO
106 ENDDO
107
108 ✗ RETURN
109 END
110
111
112