1 |
guez |
3 |
! |
2 |
|
|
! $Header: /home/cvsroot/LMDZ4/libf/phylmd/screenc.F90,v 1.1.1.1 2004/05/19 12:53:09 lmdzadmin Exp $ |
3 |
|
|
! |
4 |
|
|
SUBROUTINE screenc(klon, knon, nsrf, zxli, & |
5 |
|
|
speed, temp, q_zref, zref, & |
6 |
|
|
ts, qsurf, rugos, psol, & |
7 |
|
|
ustar, testar, qstar, okri, ri1, & |
8 |
|
|
pref, delu, delte, delq) |
9 |
|
|
use YOMCST |
10 |
|
|
IMPLICIT NONE |
11 |
|
|
!----------------------------------------------------------------------- |
12 |
|
|
! |
13 |
|
|
! Objet : calcul "correcteur" des anomalies du vent, de la temperature |
14 |
|
|
! potentielle et de l'humidite relative au niveau de reference zref et |
15 |
|
|
! par rapport au 1er niveau (pour u) ou a la surface (pour theta et q) |
16 |
|
|
! a partir des equations de Louis. |
17 |
|
|
! |
18 |
|
|
! Reference : Hess, Colman et McAvaney (1995) |
19 |
|
|
! |
20 |
|
|
! I. Musat, 01.07.2002 |
21 |
|
|
!----------------------------------------------------------------------- |
22 |
|
|
! |
23 |
|
|
! klon----input-I- dimension de la grille physique (= nb_pts_latitude X nb_pts_longitude) |
24 |
|
|
! knon----input-I- nombre de points pour un type de surface |
25 |
|
|
! nsrf----input-I- indice pour le type de surface; voir indicesol.inc |
26 |
|
|
! zxli----input-L- TRUE si calcul des cdrags selon Laurent Li |
27 |
|
|
! speed---input-R- module du vent au 1er niveau du modele |
28 |
|
|
! temp----input-R- temperature de l'air au 1er niveau du modele |
29 |
|
|
! q_zref--input-R- humidite relative au 1er niveau du modele |
30 |
|
|
! zref----input-R- altitude de reference |
31 |
|
|
! ts------input-R- temperature de l'air a la surface |
32 |
|
|
! qsurf---input-R- humidite relative a la surface |
33 |
|
|
! rugos---input-R- rugosite |
34 |
|
|
! psol----input-R- pression au sol |
35 |
|
|
! ustar---input-R- facteur d'echelle pour le vent |
36 |
|
|
! testar--input-R- facteur d'echelle pour la temperature potentielle |
37 |
|
|
! qstar---input-R- facteur d'echelle pour l'humidite relative |
38 |
|
|
! okri----input-L- TRUE si on veut tester le nb. Richardson entre la sfce |
39 |
|
|
! et zref par rapport au Ri entre la sfce et la 1ere couche |
40 |
|
|
! ri1-----input-R- nb. Richardson entre la surface et la 1ere couche |
41 |
|
|
! |
42 |
|
|
! pref----input-R- pression au niveau de reference |
43 |
|
|
! delu----input-R- anomalie du vent par rapport au 1er niveau |
44 |
|
|
! delte---input-R- anomalie de la temperature potentielle par rapport a la surface |
45 |
|
|
! delq----input-R- anomalie de l'humidite relative par rapport a la surface |
46 |
|
|
! |
47 |
|
|
INTEGER, intent(in) :: klon, knon, nsrf |
48 |
|
|
LOGICAL, intent(in) :: zxli, okri |
49 |
|
|
REAL, dimension(klon), intent(in) :: speed, temp, q_zref |
50 |
|
|
REAL, intent(in) :: zref |
51 |
|
|
REAL, dimension(klon), intent(in) :: ts, qsurf, rugos, psol |
52 |
|
|
REAL, dimension(klon), intent(in) :: ustar, testar, qstar, ri1 |
53 |
|
|
! |
54 |
|
|
REAL, dimension(klon), intent(out) :: pref, delu, delte, delq |
55 |
|
|
!----------------------------------------------------------------------- |
56 |
|
|
! |
57 |
|
|
! Variables locales |
58 |
|
|
INTEGER :: i |
59 |
|
|
REAL, dimension(klon) :: cdram, cdrah, cdran, zri1, gref |
60 |
|
|
! |
61 |
|
|
!------------------------------------------------------------------------- |
62 |
|
|
DO i=1, knon |
63 |
|
|
gref(i) = zref*RG |
64 |
|
|
ENDDO |
65 |
|
|
! |
66 |
|
|
! Richardson at reference level |
67 |
|
|
! |
68 |
|
|
CALL coefcdrag (klon, knon, nsrf, zxli, & |
69 |
|
|
speed, temp, q_zref, gref, & |
70 |
|
|
psol, ts, qsurf, rugos, & |
71 |
|
|
okri, ri1, & |
72 |
|
|
cdram, cdrah, cdran, zri1, & |
73 |
|
|
pref) |
74 |
|
|
! |
75 |
|
|
DO i = 1, knon |
76 |
|
|
delu(i) = ustar(i)/sqrt(cdram(i)) |
77 |
|
|
delte(i)= (testar(i)* sqrt(cdram(i)))/ & |
78 |
|
|
cdrah(i) |
79 |
|
|
delq(i)= (qstar(i)* sqrt(cdram(i)))/ & |
80 |
|
|
cdrah(i) |
81 |
|
|
ENDDO |
82 |
|
|
! |
83 |
|
|
RETURN |
84 |
|
|
END SUBROUTINE screenc |