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

Last change on this file since 5272 was 5272, checked in by abarral, 31 hours ago

Turn paramet.h into a module

File size: 3.6 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
13IMPLICIT NONE
14
15
16  INCLUDE "chem.h"
17  INCLUDE "YOMCST.h"
18
19
20  !============================= INPUT ===================================
21  REAL :: qmin,qmax
22  REAL :: pdtphys  ! pas d'integration pour la physique (seconde)
23   ! REAL prfl(klon,klev),   psfl(klon,klev)     !--large-scale
24   ! REAL pmflxr(klon,klev), pmflxs(klon,klev)   !--convection
25  REAL :: alpha_r(nbtr)!--coefficient d'impaction pour la pluie
26  REAL :: alpha_s(nbtr)!--coefficient d'impaction pour la neige
27  REAL :: masse(nbtr)
28  LOGICAL :: lminmax
29  REAL :: zdz(klon,klev)
30  REAL :: prfl(klon,klev+1),   psfl(klon,klev+1)     !--large-scale  ! Titane
31  REAL :: pmflxr(klon,klev+1), pmflxs(klon,klev+1)   !--convection   ! Titane
32  !============================= OUTPUT ==================================
33  REAL :: tr_seri(klon,klev,nbtr) ! traceur
34  REAL :: aux_var1(klon,klev) ! traceur
35  REAL :: aux_var2(klon,klev) ! traceur
36  REAL :: his_dhbclsc(klon,nbtr), his_dhbccon(klon,nbtr)
37  !========================= LOCAL VARIABLES =============================
38  INTEGER :: it, k, i, j
39  REAL :: d_tr(klon,klev,nbtr)
40
41  EXTERNAL minmaxqfi, bcscav_spl
42
43  DO it=1, nbtr
44  !
45  DO j=1,klev
46  DO i=1,klon
47    aux_var1(i,j)=tr_seri(i,j,it)
48    aux_var2(i,j)=d_tr(i,j,it)
49  ENDDO
50  ENDDO
51  !
52  !nhl      CALL bcscav_spl(pdtphys,prfl,psfl,alpha_r(it),alpha_s(it),
53  !nhl     .                tr_seri(1,1,it),d_tr(1,1,it))
54  CALL bcscav_spl(pdtphys,prfl,psfl,alpha_r(it),alpha_s(it), &
55        aux_var1,aux_var2)
56  !
57  DO j=1,klev
58  DO i=1,klon
59    tr_seri(i,j,it)=aux_var1(i,j)
60    d_tr(i,j,it)=aux_var2(i,j)
61  ENDDO
62  ENDDO
63  DO k = 1, klev
64  DO i = 1, klon
65     tr_seri(i,k,it) = tr_seri(i,k,it) + d_tr(i,k,it)
66     his_dhbclsc(i,it)=his_dhbclsc(i,it)-d_tr(i,k,it)/RNAVO* &
67           masse(it)*1.e3*1.e6*zdz(i,k)/pdtphys  !--mgS/m2/s
68
69  ENDDO
70  ENDDO
71  !
72  DO i=1,klon
73  DO j=1,klev
74    aux_var1(i,j)=tr_seri(i,j,it)
75    aux_var2(i,j)=d_tr(i,j,it)
76  ENDDO
77  ENDDO
78  !
79  IF (lminmax) THEN
80    CALL minmaxqfi(aux_var1,qmin,qmax,'depot humide bc lsc')
81  !nhl      CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'depot humide bc lsc')
82  ENDIF
83  !
84  !-scheme for convective scavenging
85  !
86  !nhl      CALL bcscav_spl(pdtphys,pmflxr,pmflxs,alpha_r(it),alpha_s(it),
87  !nhl     .                tr_seri(1,1,it),d_tr(1,1,it))
88
89
90  CALL bcscav_spl(pdtphys,pmflxr,pmflxs,alpha_r(it),alpha_s(it), &
91        aux_var1,aux_var2)
92
93
94  !
95  DO i=1,klon
96  DO j=1,klev
97    tr_seri(i,j,it)=aux_var1(i,j)
98    d_tr(i,j,it)=aux_var2(i,j)
99  ENDDO
100  ENDDO
101  !
102  DO k = 1, klev
103  DO i = 1, klon
104     tr_seri(i,k,it) = tr_seri(i,k,it) + d_tr(i,k,it)
105     his_dhbccon(i,it)=his_dhbccon(i,it)-d_tr(i,k,it)/RNAVO* &
106           masse(it)*1.e3*1.e6*zdz(i,k)/pdtphys    !--mgS/m2/s
107  ENDDO
108  ENDDO
109  !
110  IF (lminmax) THEN
111    DO j=1,klev
112    DO i=1,klon
113      aux_var1(i,j)=tr_seri(i,j,it)
114    ENDDO
115    ENDDO
116    CALL minmaxqfi(aux_var1,qmin,qmax,'depot humide bc con')
117  !nhl      CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'depot humide bc con')
118    DO j=1,klev
119    DO i=1,klon
120      tr_seri(i,j,it)=aux_var1(i,j)
121    ENDDO
122    ENDDO
123  ENDIF
124  !
125  !
126  ENDDO !--boucle sur it
127  !
128END SUBROUTINE blcloud_scav
Note: See TracBrowser for help on using the repository browser.