/[lmdze]/trunk/Sources/phylmd/diagcld1.f
ViewVC logotype

Annotation of /trunk/Sources/phylmd/diagcld1.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 51 - (hide annotations)
Tue Sep 20 09:14:34 2011 UTC (12 years, 8 months ago) by guez
Original Path: trunk/libf/phylmd/diagcld1.f90
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 guez 51 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