source: LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/blcloud_scav.f90 @ 5159

Last change on this file since 5159 was 5159, checked in by abarral, 7 weeks ago

Put dimensions.h and paramet.h into modules

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