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

Last change on this file since 86 was 3, checked in by slebonnois, 15 years ago

Creation de repertoires:

  • chantiers : pour communiquer sur nos projets de modifs
  • documentation : pour stocker les docs

Ajout de:

  • libf/phytitan : physique de Titan
  • libf/chimtitan: chimie de Titan
  • libf/phyvenus : physique de Venus
File size: 3.6 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.inc"
33#include "YOETHF.inc"
34#include "clesphys.inc"
35!
36! Quelques constantes et options:
37!     REAL, PARAMETER :: ckap=0.40, cb=5.0, cc=5.0, cd=5.0,cepdu2=(0.1)**2
38      REAL, PARAMETER :: ckap=0.40, cb=5.0, cc=5.0, cd=5.0
39!
40! Variables locales :
41      INTEGER :: i
42      REAL :: zdu2, ztsolv, ztvd, zscf
43      REAL :: zucf, zcr
44      REAL :: friv, frih
45      REAL, dimension(klon) :: zcfm1, zcfm2
46      REAL, dimension(klon) :: zcfh1, zcfh2
47      REAL, dimension(klon) :: zcdn
48!
49! Fonctions thermodynamiques et fonctions d'instabilite
50      REAL :: fsta, fins, x
51      fsta(x) = 1.0 / (1.0+10.0*x*(1+8.0*x))
52      fins(x) = SQRT(1.0-18.0*x)
53! ================================================================= c
54!
55! Calculer le frottement au sol (Cdrag)
56! ADAPTATION GCM POUR CP(T)
57!
58      DO i = 1, knon
59!
60! modif VENUS
61        zcdn(i) = (ckap/log(1.+zgeop(i)/(RG*z0)))**2
62!
63!!$        IF (zri(i) .ge. 0.) THEN      ! situation stable
64        IF (zri(i) .gt. 0.) THEN      ! situation stable
65          zri(i) = min(20.,zri(i))
66          IF (.NOT.zxli) THEN
67            zscf = SQRT(1.+cd*ABS(zri(i)))
68            FRIV = AMAX1(1. / (1.+2.*CB*zri(i)/ZSCF), 0.1)
69            zcfm1(i) = zcdn(i) * FRIV
70            FRIH = AMAX1(1./ (1.+3.*CB*zri(i)*ZSCF), 0.1 )
71!!$  PB          zcfh1(i) = zcdn(i) * FRIH
72            zcfh1(i) = 0.8 * zcdn(i) * FRIH
73            pcfm(i) = zcfm1(i)
74            pcfh(i) = zcfh1(i)
75          ELSE
76            pcfm(i) = zcdn(i)* fsta(zri(i))
77            pcfh(i) = zcdn(i)* fsta(zri(i))
78          ENDIF
79        ELSE                          ! situation instable
80          IF (.NOT.zxli) THEN
81!
82! modif VENUS.            zucf = 1./(1.+3.0*cb*cc*zcdn(i)*SQRT(ABS(zri(i)) &
83! modif VENUS.                 *(1.0+zgeop(i)/(RG*rugos(i)))))
84            zucf = 1./(1.+3.0*cb*cc*zcdn(i)*SQRT(ABS(zri(i)) &
85                 *(1.0+zgeop(i)/(RG*z0))))
86!
87            zcfm2(i) = zcdn(i)*amax1((1.-2.0*cb*zri(i)*zucf),0.1)
88!!$PB            zcfh2(i) = zcdn(i)*amax1((1.-3.0*cb*zri(i)*zucf),0.1)
89            zcfh2(i) = 0.8 * zcdn(i)*amax1((1.-3.0*cb*zri(i)*zucf),0.1)
90            pcfm(i) = zcfm2(i)
91            pcfh(i) = zcfh2(i)
92          ELSE
93            pcfm(i) = zcdn(i)* fins(zri(i))
94            pcfh(i) = zcdn(i)* fins(zri(i))
95          ENDIF
96          zcr = (0.0016/(zcdn(i)*SQRT(zdu2)))*ABS(ztvd-ztsolv)**(1./3.)
97        ENDIF
98      END DO
99      RETURN
100      END SUBROUTINE clcdrag
101
Note: See TracBrowser for help on using the repository browser.