source: LMDZ6/trunk/libf/phylmd/Dust/blcloud_scav.f90 @ 5277

Last change on this file since 5277 was 5274, checked in by abarral, 9 hours ago

Replace yomcst.h by existing module

File size: 4.4 KB
Line 
1! Subroutine that calculates the effect of precipitation in scavenging
2! BELOW the cloud, for large scale as well as convective precipitation
3SUBROUTINE blcloud_scav(lminmax,qmin,qmax,pdtphys,prfl,psfl, &
4        pmflxr,pmflxs,zdz,alpha_r,alpha_s,masse, &
5        his_dhbclsc,his_dhbccon,tr_seri)
6
7  USE dimphy
8  USE indice_sol_mod
9  USE infotrac
10  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
11USE paramet_mod_h, ONLY: iip1, iip2, iip3, jjp1, llmp1, llmp2, llmm1, kftd, ip1jm, ip1jmp1, &
12          ip1jmi1, ijp1llm, ijmllm, mvar, jcfil, jcfllm
13USE yomcst_mod_h, ONLY: RPI, RCLUM, RHPLA, RKBOL, RNAVO                   &
14          , RDAY, REA, REPSM, RSIYEA, RSIDAY, ROMEGA                  &
15          , R_ecc, R_peri, R_incl                                      &
16          , RA, RG, R1SA                                         &
17          , RSIGMA                                                     &
18          , R, RMD, RMV, RD, RV, RCPD                    &
19          , RMO3, RMCO2, RMC, RMCH4, RMN2O, RMCFC11, RMCFC12        &
20          , RCPV, RCVD, RCVV, RKAPPA, RETV, eps_w                    &
21          , RCW, RCS                                                 &
22          , RLVTT, RLSTT, RLMLT, RTT, RATM                           &
23          , RESTT, RALPW, RBETW, RGAMW, RALPS, RBETS, RGAMS            &
24          , RALPD, RBETD, RGAMD
25IMPLICIT NONE
26
27
28  INCLUDE "chem.h"
29
30
31
32  !============================= INPUT ===================================
33  REAL :: qmin,qmax
34  REAL :: pdtphys  ! pas d'integration pour la physique (seconde)
35   ! REAL prfl(klon,klev),   psfl(klon,klev)     !--large-scale
36   ! REAL pmflxr(klon,klev), pmflxs(klon,klev)   !--convection
37  REAL :: alpha_r(nbtr)!--coefficient d'impaction pour la pluie
38  REAL :: alpha_s(nbtr)!--coefficient d'impaction pour la neige
39  REAL :: masse(nbtr)
40  LOGICAL :: lminmax
41  REAL :: zdz(klon,klev)
42  REAL :: prfl(klon,klev+1),   psfl(klon,klev+1)     !--large-scale  ! Titane
43  REAL :: pmflxr(klon,klev+1), pmflxs(klon,klev+1)   !--convection   ! Titane
44  !============================= OUTPUT ==================================
45  REAL :: tr_seri(klon,klev,nbtr) ! traceur
46  REAL :: aux_var1(klon,klev) ! traceur
47  REAL :: aux_var2(klon,klev) ! traceur
48  REAL :: his_dhbclsc(klon,nbtr), his_dhbccon(klon,nbtr)
49  !========================= LOCAL VARIABLES =============================
50  INTEGER :: it, k, i, j
51  REAL :: d_tr(klon,klev,nbtr)
52
53  EXTERNAL minmaxqfi, bcscav_spl
54
55  DO it=1, nbtr
56  !
57  DO j=1,klev
58  DO i=1,klon
59    aux_var1(i,j)=tr_seri(i,j,it)
60    aux_var2(i,j)=d_tr(i,j,it)
61  ENDDO
62  ENDDO
63  !
64  !nhl      CALL bcscav_spl(pdtphys,prfl,psfl,alpha_r(it),alpha_s(it),
65  !nhl     .                tr_seri(1,1,it),d_tr(1,1,it))
66  CALL bcscav_spl(pdtphys,prfl,psfl,alpha_r(it),alpha_s(it), &
67        aux_var1,aux_var2)
68  !
69  DO j=1,klev
70  DO i=1,klon
71    tr_seri(i,j,it)=aux_var1(i,j)
72    d_tr(i,j,it)=aux_var2(i,j)
73  ENDDO
74  ENDDO
75  DO k = 1, klev
76  DO i = 1, klon
77     tr_seri(i,k,it) = tr_seri(i,k,it) + d_tr(i,k,it)
78     his_dhbclsc(i,it)=his_dhbclsc(i,it)-d_tr(i,k,it)/RNAVO* &
79           masse(it)*1.e3*1.e6*zdz(i,k)/pdtphys  !--mgS/m2/s
80
81  ENDDO
82  ENDDO
83  !
84  DO i=1,klon
85  DO j=1,klev
86    aux_var1(i,j)=tr_seri(i,j,it)
87    aux_var2(i,j)=d_tr(i,j,it)
88  ENDDO
89  ENDDO
90  !
91  IF (lminmax) THEN
92    CALL minmaxqfi(aux_var1,qmin,qmax,'depot humide bc lsc')
93  !nhl      CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'depot humide bc lsc')
94  ENDIF
95  !
96  !-scheme for convective scavenging
97  !
98  !nhl      CALL bcscav_spl(pdtphys,pmflxr,pmflxs,alpha_r(it),alpha_s(it),
99  !nhl     .                tr_seri(1,1,it),d_tr(1,1,it))
100
101
102  CALL bcscav_spl(pdtphys,pmflxr,pmflxs,alpha_r(it),alpha_s(it), &
103        aux_var1,aux_var2)
104
105
106  !
107  DO i=1,klon
108  DO j=1,klev
109    tr_seri(i,j,it)=aux_var1(i,j)
110    d_tr(i,j,it)=aux_var2(i,j)
111  ENDDO
112  ENDDO
113  !
114  DO k = 1, klev
115  DO i = 1, klon
116     tr_seri(i,k,it) = tr_seri(i,k,it) + d_tr(i,k,it)
117     his_dhbccon(i,it)=his_dhbccon(i,it)-d_tr(i,k,it)/RNAVO* &
118           masse(it)*1.e3*1.e6*zdz(i,k)/pdtphys    !--mgS/m2/s
119  ENDDO
120  ENDDO
121  !
122  IF (lminmax) THEN
123    DO j=1,klev
124    DO i=1,klon
125      aux_var1(i,j)=tr_seri(i,j,it)
126    ENDDO
127    ENDDO
128    CALL minmaxqfi(aux_var1,qmin,qmax,'depot humide bc con')
129  !nhl      CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'depot humide bc con')
130    DO j=1,klev
131    DO i=1,klon
132      tr_seri(i,j,it)=aux_var1(i,j)
133    ENDDO
134    ENDDO
135  ENDIF
136  !
137  !
138  ENDDO !--boucle sur it
139  !
140END SUBROUTINE blcloud_scav
Note: See TracBrowser for help on using the repository browser.