/[lmdze]/trunk/libf/phylmd/diagcld1.f90
ViewVC logotype

Contents of /trunk/libf/phylmd/diagcld1.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 51 - (show annotations)
Tue Sep 20 09:14:34 2011 UTC (12 years, 7 months ago) by guez
File size: 2628 byte(s)
Split "getincom.f90" into "getincom.f90" and "getincom2.f90". Split
"nuage.f" into "nuage.f90", "diagcld1.f90" and "diagcld2.f90". Created
module "chem" from included file "chem.h". Moved "YOEGWD.f90" to
directory "Orography".

In "physiq", for evaporation of water, "zlsdcp" was equal to
"zlvdc". Removed useless variables.

1 SUBROUTINE diagcld1(paprs,pplay,rain,snow,kbot,ktop, &
2 diafra,dialiq)
3 use dimens_m
4 use dimphy
5 use SUPHEC_M
6 IMPLICIT none
7 !
8 ! Laurent Li (LMD/CNRS), le 12 octobre 1998
9 ! (adaptation du code ECMWF)
10 !
11 ! Dans certains cas, le schema pronostique des nuages n'est
12 ! pas suffisament performant. On a donc besoin de diagnostiquer
13 ! ces nuages. Je dois avouer que c'est une frustration.
14 !
15 !
16 ! Arguments d'entree:
17 REAL, intent(in):: paprs(klon,klev+1) ! pression (Pa) a inter-couche
18 REAL, intent(in):: pplay(klon,klev) ! pression (Pa) au milieu de couche
19 REAL t(klon,klev) ! temperature (K)
20 REAL q(klon,klev) ! humidite specifique (Kg/Kg)
21 REAL rain(klon) ! pluie convective (kg/m2/s)
22 REAL snow(klon) ! neige convective (kg/m2/s)
23 INTEGER ktop(klon) ! sommet de la convection
24 INTEGER kbot(klon) ! bas de la convection
25 !
26 ! Arguments de sortie:
27 REAL diafra(klon,klev) ! fraction nuageuse diagnostiquee
28 REAL dialiq(klon,klev) ! eau liquide nuageuse
29 !
30 ! Constantes ajustables:
31 REAL CANVA, CANVB, CANVH
32 PARAMETER (CANVA=2.0, CANVB=0.3, CANVH=0.4)
33 REAL CCA, CCB, CCC
34 PARAMETER (CCA=0.125, CCB=1.5, CCC=0.8)
35 REAL CCFCT, CCSCAL
36 PARAMETER (CCFCT=0.400)
37 PARAMETER (CCSCAL=1.0E+11)
38 REAL CETAHB, CETAMB
39 PARAMETER (CETAHB=0.45, CETAMB=0.80)
40 REAL CCLWMR
41 PARAMETER (CCLWMR=1.E-04)
42 REAL ZEPSCR
43 PARAMETER (ZEPSCR=1.0E-10)
44 !
45 ! Variables locales:
46 INTEGER i, k
47 REAL zcc(klon)
48 !
49 ! Initialisation:
50 !
51 DO k = 1, klev
52 DO i = 1, klon
53 diafra(i,k) = 0.0
54 dialiq(i,k) = 0.0
55 ENDDO
56 ENDDO
57 !
58 DO i = 1, klon ! Calculer la fraction nuageuse
59 zcc(i) = 0.0
60 IF((rain(i)+snow(i)).GT.0.) THEN
61 zcc(i)= CCA * LOG(MAX(ZEPSCR,(rain(i)+snow(i))*CCSCAL))-CCB
62 zcc(i)= MIN(CCC,MAX(0.0,zcc(i)))
63 ENDIF
64 ENDDO
65 !
66 DO i = 1, klon ! pour traiter les enclumes
67 diafra(i,ktop(i)) = MAX(diafra(i,ktop(i)),zcc(i)*CCFCT)
68 IF ((zcc(i).GE.CANVH) .AND. &
69 (pplay(i,ktop(i)).LE.CETAHB*paprs(i,1))) &
70 diafra(i,ktop(i)) = MAX(diafra(i,ktop(i)), &
71 MAX(zcc(i)*CCFCT,CANVA*(zcc(i)-CANVB)))
72 dialiq(i,ktop(i))=CCLWMR*diafra(i,ktop(i))
73 ENDDO
74 !
75 DO k = 1, klev ! nuages convectifs (sauf enclumes)
76 DO i = 1, klon
77 IF (k.LT.ktop(i) .AND. k.GE.kbot(i)) THEN
78 diafra(i,k)=MAX(diafra(i,k),zcc(i)*CCFCT)
79 dialiq(i,k)=CCLWMR*diafra(i,k)
80 ENDIF
81 ENDDO
82 ENDDO
83 !
84 RETURN
85 END

  ViewVC Help
Powered by ViewVC 1.1.21