4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE screenc(klon, knon, nsrf, zxli, speed, temp, q_zref, zref, ts, & |
SUBROUTINE screenc(klon, knon, nsrf, speed, temp, q_zref, zref, ts, & |
8 |
qsurf, rugos, psol, ustar, testar, qstar, okri, ri1, pref, delu, & |
qsurf, rugos, psol, ustar, testar, qstar, pref, delu, delte, delq) |
|
delte, delq) |
|
9 |
|
|
10 |
use coefcdrag_m, only: coefcdrag |
! From LMDZ4/libf/phylmd/screenc.F90, version 1.1.1.1, 2004/05/19 12:53:09 |
|
use SUPHEC_M |
|
|
|
|
|
! From LMDZ4/libf/phylmd/screenc.F90, version 1.1.1.1 2004/05/19 12:53:09 |
|
11 |
|
|
12 |
! Objet : calcul "correcteur" des anomalies du vent, de la |
! Objet : calcul "correcteur" des anomalies du vent, de la |
13 |
! temp\'erature potentielle et de l'humidit\'e relative au niveau |
! temp\'erature potentielle et de l'humidit\'e relative au niveau |
19 |
|
|
20 |
! I. Musat, 01.07.2002 |
! I. Musat, 01.07.2002 |
21 |
|
|
22 |
|
use coefcdrag_m, only: coefcdrag |
23 |
|
use SUPHEC_M, only: RG |
24 |
|
|
25 |
INTEGER, intent(in):: klon |
INTEGER, intent(in):: klon |
26 |
! klon----input-I- dimension de la grille physique (= |
! klon----input-I- dimension de la grille physique (= |
27 |
! nb_pts_latitude X nb_pts_longitude) |
! nb_pts_latitude X nb_pts_longitude) |
29 |
! knon----input-I- nombre de points pour un type de surface |
! knon----input-I- nombre de points pour un type de surface |
30 |
INTEGER, intent(in):: nsrf |
INTEGER, intent(in):: nsrf |
31 |
! nsrf----input-I- indice pour le type de surface; voir indicesol.inc |
! nsrf----input-I- indice pour le type de surface; voir indicesol.inc |
|
LOGICAL, intent(in):: zxli |
|
|
! zxli----input-L- TRUE si calcul des cdrags selon Laurent Li |
|
32 |
REAL, dimension(klon), intent(in):: speed, temp, q_zref |
REAL, dimension(klon), intent(in):: speed, temp, q_zref |
33 |
! speed---input-R- module du vent au 1er niveau du modele |
! speed---input-R- module du vent au 1er niveau du modele |
34 |
! temp----input-R- temperature de l'air au 1er niveau du modele |
! temp----input-R- temperature de l'air au 1er niveau du modele |
40 |
! qsurf---input-R- humidite relative a la surface |
! qsurf---input-R- humidite relative a la surface |
41 |
! rugos---input-R- rugosite |
! rugos---input-R- rugosite |
42 |
! psol----input-R- pression au sol |
! psol----input-R- pression au sol |
43 |
REAL, dimension(klon), intent(in):: ustar, testar, qstar |
REAL, intent(in):: ustar(:) ! (knon) facteur d'\'echelle pour le vent |
44 |
! ustar---input-R- facteur d'echelle pour le vent |
REAL, dimension(klon), intent(in):: testar |
45 |
! testar--input-R- facteur d'echelle pour la temperature potentielle |
! testar--input-R- facteur d'echelle pour la temperature potentielle |
46 |
|
REAL, dimension(klon), intent(in):: qstar |
47 |
! qstar---input-R- facteur d'echelle pour l'humidite relative |
! qstar---input-R- facteur d'echelle pour l'humidite relative |
|
LOGICAL, intent(in):: okri |
|
|
! okri----input-L- TRUE si on veut tester le nb. Richardson entre la sfce |
|
|
! et zref par rapport au Ri entre la sfce et la 1ere couche |
|
|
REAL, dimension(klon), intent(in):: ri1 |
|
|
! ri1-----input-R- nb. Richardson entre la surface et la 1ere couche |
|
48 |
|
|
49 |
REAL, dimension(klon), intent(out):: pref |
REAL, dimension(klon), intent(out):: pref |
50 |
! pref----input-R- pression au niveau de reference |
! pref----input-R- pression au niveau de reference |
68 |
|
|
69 |
! Richardson at reference level |
! Richardson at reference level |
70 |
|
|
71 |
CALL coefcdrag (klon, knon, nsrf, zxli, speed, temp, q_zref, gref, psol, & |
CALL coefcdrag(nsrf, speed(:knon), temp(:knon), q_zref(:knon), & |
72 |
ts, qsurf, rugos, okri, ri1, cdram, cdrah, cdran, zri1, pref) |
gref(:knon), psol(:knon), ts, qsurf, rugos, cdram, cdrah, cdran, & |
73 |
|
zri1, pref) |
74 |
|
|
75 |
DO i = 1, knon |
DO i = 1, knon |
76 |
delu(i) = ustar(i)/sqrt(cdram(i)) |
delu(i) = ustar(i) / sqrt(cdram(i)) |
77 |
delte(i)= (testar(i)* sqrt(cdram(i)))/ cdrah(i) |
delte(i) = testar(i) * sqrt(cdram(i)) / cdrah(i) |
78 |
delq(i)= (qstar(i)* sqrt(cdram(i)))/ cdrah(i) |
delq(i) = qstar(i) * sqrt(cdram(i)) / cdrah(i) |
79 |
ENDDO |
ENDDO |
80 |
|
|
81 |
END SUBROUTINE screenc |
END SUBROUTINE screenc |