source: trunk/libf/phyvenus/clcdrag.F90 @ 97

Last change on this file since 97 was 97, checked in by slebonnois, 14 years ago

Serie de modifs SL pour homogeneisation des phytitan et phyvenus
Ca touche aussi aux liens phy/dyn (surtout a propos de clesphy0),
a verifier avec les autres, donc...

File size: 3.5 KB
Line 
1!
2! $Header: /home/cvsroot/LMDZ4/libf/phylmd/clcdrag.F90,v 1.1.1.1 2004/05/19 12:53:07 lmdzadmin Exp $
3!
4! ADAPTATION GCM POUR CP(T)
5      SUBROUTINE clcdrag(klon, knon, zxli, &
6                         zgeop, zri, &
7                         pcfm, pcfh)
8      IMPLICIT NONE
9! ================================================================= c
10!
11! Objet : calcul des cdrags pour le moment (pcfm) et
12!         les flux de chaleur sensible et latente (pcfh).   
13!
14! ================================================================= c
15!
16! klon----input-I- dimension de la grille physique (= nb_pts_latitude X nb_pts_longitude)
17! knon----input-I- nombre de points pour un type de surface
18! zxli----input-L- calcul des cdrags selon Laurent Li
19! zgeop---input-R- geopotentiel au 1er niveau du modele
20! zri-----input-R- Ridchardson number, premier niveau
21!
22! pcfm---output-R- cdrag pour le moment
23! pcfh---output-R- cdrag pour les flux de chaleur latente et sensible
24!
25      INTEGER, intent(in) :: klon, knon
26      LOGICAL, intent(in) :: zxli
27      REAL, intent(in), dimension(klon) :: zgeop
28      REAL, dimension(klon) :: zri
29      REAL, intent(out), dimension(klon) :: pcfm, pcfh
30! ================================================================= c
31!
32#include "YOMCST.h"
33#include "clesphys.h"
34!
35! Quelques constantes et options:
36!     REAL, PARAMETER :: ckap=0.40, cb=5.0, cc=5.0, cd=5.0,cepdu2=(0.1)**2
37      REAL, PARAMETER :: ckap=0.40, cb=5.0, cc=5.0, cd=5.0
38!
39! Variables locales :
40      INTEGER :: i
41      REAL :: zdu2, ztsolv, ztvd, zscf
42      REAL :: zucf, zcr
43      REAL :: friv, frih
44      REAL, dimension(klon) :: zcfm1, zcfm2
45      REAL, dimension(klon) :: zcfh1, zcfh2
46      REAL, dimension(klon) :: zcdn
47!
48! Fonctions thermodynamiques et fonctions d'instabilite
49      REAL :: fsta, fins, x
50      fsta(x) = 1.0 / (1.0+10.0*x*(1+8.0*x))
51      fins(x) = SQRT(1.0-18.0*x)
52! ================================================================= c
53!
54! Calculer le frottement au sol (Cdrag)
55! ADAPTATION GCM POUR CP(T)
56!
57      DO i = 1, knon
58!
59! modif VENUS
60        zcdn(i) = (ckap/log(1.+zgeop(i)/(RG*z0)))**2
61!
62!!$        IF (zri(i) .ge. 0.) THEN      ! situation stable
63        IF (zri(i) .gt. 0.) THEN      ! situation stable
64          zri(i) = min(20.,zri(i))
65          IF (.NOT.zxli) THEN
66            zscf = SQRT(1.+cd*ABS(zri(i)))
67            FRIV = AMAX1(1. / (1.+2.*CB*zri(i)/ZSCF), 0.1)
68            zcfm1(i) = zcdn(i) * FRIV
69            FRIH = AMAX1(1./ (1.+3.*CB*zri(i)*ZSCF), 0.1 )
70!!$  PB          zcfh1(i) = zcdn(i) * FRIH
71            zcfh1(i) = 0.8 * zcdn(i) * FRIH
72            pcfm(i) = zcfm1(i)
73            pcfh(i) = zcfh1(i)
74          ELSE
75            pcfm(i) = zcdn(i)* fsta(zri(i))
76            pcfh(i) = zcdn(i)* fsta(zri(i))
77          ENDIF
78        ELSE                          ! situation instable
79          IF (.NOT.zxli) THEN
80!
81! modif VENUS.            zucf = 1./(1.+3.0*cb*cc*zcdn(i)*SQRT(ABS(zri(i)) &
82! modif VENUS.                 *(1.0+zgeop(i)/(RG*rugos(i)))))
83            zucf = 1./(1.+3.0*cb*cc*zcdn(i)*SQRT(ABS(zri(i)) &
84                 *(1.0+zgeop(i)/(RG*z0))))
85!
86            zcfm2(i) = zcdn(i)*amax1((1.-2.0*cb*zri(i)*zucf),0.1)
87!!$PB            zcfh2(i) = zcdn(i)*amax1((1.-3.0*cb*zri(i)*zucf),0.1)
88            zcfh2(i) = 0.8 * zcdn(i)*amax1((1.-3.0*cb*zri(i)*zucf),0.1)
89            pcfm(i) = zcfm2(i)
90            pcfh(i) = zcfh2(i)
91          ELSE
92            pcfm(i) = zcdn(i)* fins(zri(i))
93            pcfh(i) = zcdn(i)* fins(zri(i))
94          ENDIF
95          zcr = (0.0016/(zcdn(i)*SQRT(zdu2)))*ABS(ztvd-ztsolv)**(1./3.)
96        ENDIF
97      END DO
98      RETURN
99      END SUBROUTINE clcdrag
100
Note: See TracBrowser for help on using the repository browser.