source: LMDZ6/branches/contrails/libf/phylmd/Dust/blcloud_scav.f90 @ 5428

Last change on this file since 5428 was 5337, checked in by Laurent Fairhead, 5 weeks ago

Getting rid of dependance to dynamics

File size: 3.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
7USE chem_mod_h
8    USE dimphy
9  USE indice_sol_mod
10  USE infotrac_phy, ONLY: nbtr
11!USE paramet_mod_h
12USE yomcst_mod_h
13IMPLICIT NONE
14
15
16
17
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
89  CALL bcscav_spl(pdtphys,pmflxr,pmflxs,alpha_r(it),alpha_s(it), &
90        aux_var1,aux_var2)
91
92
93  !
94  DO i=1,klon
95  DO j=1,klev
96    tr_seri(i,j,it)=aux_var1(i,j)
97    d_tr(i,j,it)=aux_var2(i,j)
98  ENDDO
99  ENDDO
100  !
101  DO k = 1, klev
102  DO i = 1, klon
103     tr_seri(i,k,it) = tr_seri(i,k,it) + d_tr(i,k,it)
104     his_dhbccon(i,it)=his_dhbccon(i,it)-d_tr(i,k,it)/RNAVO* &
105           masse(it)*1.e3*1.e6*zdz(i,k)/pdtphys    !--mgS/m2/s
106  ENDDO
107  ENDDO
108  !
109  IF (lminmax) THEN
110    DO j=1,klev
111    DO i=1,klon
112      aux_var1(i,j)=tr_seri(i,j,it)
113    ENDDO
114    ENDDO
115    CALL minmaxqfi(aux_var1,qmin,qmax,'depot humide bc con')
116  !nhl      CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'depot humide bc con')
117    DO j=1,klev
118    DO i=1,klon
119      tr_seri(i,j,it)=aux_var1(i,j)
120    ENDDO
121    ENDDO
122  ENDIF
123  !
124  !
125  ENDDO !--boucle sur it
126  !
127END SUBROUTINE blcloud_scav
Note: See TracBrowser for help on using the repository browser.