GCC Code Coverage Report


Directory: ./
File: phys/screenc_mod.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 12 27 44.4%
Branches: 4 12 33.3%

Line Branch Exec Source
1 !
2 MODULE screenc_mod
3 !
4 ! This module contains some procedures for calculation of the correction
5 ! of temperature, specific humidity and wind at a reference level
6 !
7 USE cdrag_mod
8 IMPLICIT NONE
9
10 CONTAINS
11 !
12 !****************************************************************************************
13 !
14 !r original routine svn3623
15 !
16 6216792 SUBROUTINE screenc(klon, knon, nsrf, zxli, &
17 speed, temp, q_zref, zref, &
18 ts, qsurf, z0m, z0h, psol, &
19 ustar, testar, qstar, okri, ri1, &
20 pref, delu, delte, delq)
21 IMPLICIT NONE
22 !-----------------------------------------------------------------------
23 !
24 ! Objet : calcul "correcteur" des anomalies du vent, de la temperature
25 ! potentielle et de l'humidite relative au niveau de reference zref et
26 ! par rapport au 1er niveau (pour u) ou a la surface (pour theta et q)
27 ! a partir des equations de Louis.
28 !
29 ! Reference : Hess, Colman et McAvaney (1995)
30 !
31 ! I. Musat, 01.07.2002
32 !-----------------------------------------------------------------------
33 !
34 ! klon----input-I- dimension de la grille physique (= nb_pts_latitude X nb_pts_longitude)
35 ! knon----input-I- nombre de points pour un type de surface
36 ! nsrf----input-I- indice pour le type de surface; voir indice_sol_mod.F90
37 ! zxli----input-L- TRUE si calcul des cdrags selon Laurent Li
38 ! speed---input-R- module du vent au 1er niveau du modele
39 ! temp----input-R- temperature de l'air au 1er niveau du modele
40 ! q_zref--input-R- humidite relative au 1er niveau du modele
41 ! zref----input-R- altitude de reference
42 ! ts------input-R- temperature de l'air a la surface
43 ! qsurf---input-R- humidite relative a la surface
44 ! z0m, z0h---input-R- rugosite
45 ! psol----input-R- pression au sol
46 ! ustar---input-R- facteur d'echelle pour le vent
47 ! testar--input-R- facteur d'echelle pour la temperature potentielle
48 ! qstar---input-R- facteur d'echelle pour l'humidite relative
49 ! okri----input-L- TRUE si on veut tester le nb. Richardson entre la sfce
50 ! et zref par rapport au Ri entre la sfce et la 1ere couche
51 ! ri1-----input-R- nb. Richardson entre la surface et la 1ere couche
52 !
53 ! pref----input-R- pression au niveau de reference
54 ! delu----input-R- anomalie du vent par rapport au 1er niveau
55 ! delte---input-R- anomalie de la temperature potentielle par rapport a la surface
56 ! delq----input-R- anomalie de l'humidite relative par rapport a la surface
57 !
58 INTEGER, intent(in) :: klon, knon, nsrf
59 LOGICAL, intent(in) :: zxli, okri
60 REAL, dimension(klon), intent(in) :: speed, temp, q_zref
61 REAL, intent(in) :: zref
62 REAL, dimension(klon), intent(in) :: ts, qsurf, z0m, z0h, psol
63 REAL, dimension(klon), intent(in) :: ustar, testar, qstar, ri1
64 !
65 REAL, dimension(klon), intent(out) :: pref, delu, delte, delq
66 !-----------------------------------------------------------------------
67 include "YOMCST.h"
68 include "flux_arp.h"
69 !
70 ! Variables locales
71 INTEGER :: i
72 REAL, dimension(klon) :: cdram, cdrah, cdran, zri1, gref,ycdragm
73 !
74 !-------------------------------------------------------------------------
75 DO i=1, knon
76 gref(i) = zref*RG
77 ENDDO
78 !
79 ! Richardson at reference level
80 !
81 ! CALL coefcdrag (klon, knon, nsrf, zxli, &
82 ! speed, temp, q_zref, gref, &
83 ! psol, ts, qsurf, rugos, &
84 ! okri, ri1, &
85 ! cdram, cdrah, cdran, zri1, &
86 ! pref)
87 ! Fuxing WANG, 04/03/2015, replace the coefcdrag by the merged version: cdrag
88 CALL cdrag (knon, nsrf, &
89 speed, temp, q_zref, gref, &
90 psol, ts, qsurf, z0m, z0h, &
91 cdram, cdrah, zri1, pref)
92 DO i = 1, knon
93 IF(ok_prescr_ust) THEN
94 ! La aussi il faut forcer avec ust (FC + MPL 20160210)
95 ycdragm(i) = ust*ust/(1.+speed(i))/speed(i)
96 cdram=ycdragm
97 delu(i) = ust/sqrt(cdram(i))
98 ELSE
99 delu(i) = ustar(i)/sqrt(cdram(i))
100 ENDIF
101 delte(i)= (testar(i)* sqrt(cdram(i)))/ &
102 cdrah(i)
103 delq(i)= (qstar(i)* sqrt(cdram(i)))/ &
104 cdrah(i)
105 ENDDO
106 !
107 RETURN
108 END SUBROUTINE screenc
109 !
110 14400 SUBROUTINE screencn(klon, knon, nsrf, zxli, &
111 14400 speed, temp, q_zref, zref, &
112 ts, qsurf, z0m, z0h, psol, &
113 cdrm, cdrh, okri, &
114 ri1, iri1, &
115 pref, delm, delh, zri1)
116 IMPLICIT NONE
117 !-----------------------------------------------------------------------
118 !
119 ! Objet : calcul "correcteur" des anomalies du vent, de la temperature
120 ! potentielle et de l'humidite relative au niveau de reference zref et
121 ! par rapport au 1er niveau (pour u) ou a la surface (pour theta et q)
122 ! a partir des equations de Louis.
123 !
124 ! Reference : Hess, Colman et McAvaney (1995)
125 !
126 ! I. Musat, 01.07.2002
127 !-----------------------------------------------------------------------
128 !
129 ! klon----input-I- dimension de la grille physique (= nb_pts_latitude X nb_pts_longitude)
130 ! knon----input-I- nombre de points pour un type de surface
131 ! nsrf----input-I- indice pour le type de surface; voir indice_sol_mod.F90
132 ! zxli----input-L- TRUE si calcul des cdrags selon Laurent Li
133 ! speed---input-R- module du vent au 1er niveau du modele
134 ! temp----input-R- temperature de l'air au 1er niveau du modele
135 ! q_zref--input-R- humidite relative au 1er niveau du modele
136 ! zref----input-R- altitude de reference
137 ! ts------input-R- temperature de l'air a la surface
138 ! qsurf---input-R- humidite relative a la surface
139 ! z0m, z0h---input-R- rugosite
140 ! psol----input-R- pression au sol
141 ! ustar---input-R- facteur d'echelle pour le vent
142 ! testar--input-R- facteur d'echelle pour la temperature potentielle
143 ! qstar---input-R- facteur d'echelle pour l'humidite relative
144 ! okri----input-L- TRUE si on veut tester le nb. Richardson entre la sfce
145 ! et zref par rapport au Ri entre la sfce et la 1ere couche
146 ! ri1-----input-R- nb. Richardson entre la surface et la 1ere couche
147 !
148 ! pref----input-R- pression au niveau de reference
149 ! delu----input-R- anomalie du vent par rapport au 1er niveau
150 ! delte---input-R- anomalie de la temperature potentielle par rapport a la surface
151 ! delq----input-R- anomalie de l'humidite relative par rapport a la surface
152 !
153 INTEGER, intent(in) :: klon, knon, nsrf
154 LOGICAL, intent(in) :: zxli, okri
155 REAL, dimension(klon), intent(in) :: speed, temp, q_zref
156 REAL, intent(in) :: zref
157 REAL, dimension(klon), intent(in) :: ts, qsurf, z0m, z0h, psol
158 REAL, dimension(klon), intent(in) :: cdrm, cdrh, ri1
159 INTEGER, INTENT(IN) :: iri1 ! Richardson de la 1ere couche
160 !
161 REAL, dimension(klon), intent(out) :: pref, delm, delh, zri1
162 !171220 REAL, dimension(klon) :: cdram, cdrah, zri1
163 28800 REAL, dimension(klon) :: cdram, cdrah
164 !-----------------------------------------------------------------------
165 include "YOMCST.h"
166 include "flux_arp.h"
167 !
168 ! Variables locales
169 INTEGER :: i
170 28800 REAL, dimension(klon) :: cdran, gref,ycdragm
171 !
172 !-------------------------------------------------------------------------
173
2/2
✓ Branch 0 taken 6216792 times.
✓ Branch 1 taken 14400 times.
6231192 DO i=1, knon
174 6231192 gref(i) = zref*RG
175 ENDDO
176 !
177 ! Richardson at reference level
178 !
179 CALL cdragn_ri1 (knon, nsrf, &
180 speed, temp, q_zref, gref, &
181 psol, ts, qsurf, z0m, z0h, &
182 ri1, iri1, &
183 14400 cdram, cdrah, zri1, pref)
184
2/2
✓ Branch 0 taken 6216792 times.
✓ Branch 1 taken 14400 times.
6231192 DO i = 1, knon
185 6216792 delm(i) = sqrt(cdrm(i))/sqrt(cdram(i))
186 !verifier que temp est un temperat potentielle.
187 delh(i)= (cdrh(i)* sqrt(cdram(i)))/ &
188 6231192 (cdrah(i)*sqrt(cdrm(i)))
189 ENDDO
190 !
191 14400 RETURN
192 END SUBROUTINE screencn
193 END MODULE screenc_mod
194