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

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

Turn paramet.h into a module

File size: 3.3 KB
Line 
1! Subroutine that calculates the effect of precipitation in scavenging
2! WITHIN the cloud, for large scale as well as convective precipitation
3SUBROUTINE incloud_scav(lminmax,qmin,qmax,masse,henry,kk,prfl, &
4        psfl,pmflxr,pmflxs,zrho,zdz,t_seri,pdtphys, &
5        his_dhlsc,his_dhcon1,tr_seri)
6
7  USE dimphy
8  USE infotrac
9  USE indice_sol_mod
10
11  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
12USE paramet_mod_h, ONLY: iip1, iip2, iip3, jjp1, llmp1, llmp2, llmm1, kftd, ip1jm, ip1jmp1, &
13          ip1jmi1, ijp1llm, ijmllm, mvar, jcfil, jcfllm
14IMPLICIT NONE
15
16
17  INCLUDE "chem.h"
18  INCLUDE "YOMCST.h"
19
20
21  !============================= INPUT ===================================
22  REAL :: qmin, qmax
23  REAL :: masse(nbtr)
24  REAL :: henry(nbtr)         !--cste de Henry  mol/l/atm
25  REAL :: kk(nbtr)            !--coefficient de var avec T (K)
26  REAL :: prfl(klon,klev+1),   psfl(klon,klev+1)     !--large-scale
27   ! REAL prfl(klon,klev),   psfl(klon,klev)     !--large-scale
28  REAL :: pmflxr(klon,klev+1), pmflxs(klon,klev+1)   !--convection
29   ! REAL pmflxr(klon,klev), pmflxs(klon,klev)   !--convection
30  REAL :: zrho(klon,klev), zdz(klon,klev)
31  REAL :: t_seri(klon,klev)
32  LOGICAL :: lminmax
33  REAL :: pdtphys
34   ! REAL prfl(klon,klev+1),   psfl(klon,klev+1)     !--large-scale  ! Titane
35   ! REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1)   !--convection   ! Titane
36  !============================= OUTPUT ==================================
37  REAL :: tr_seri(klon,klev,nbtr) ! traceur
38  REAL :: aux_var1(klon,klev) ! traceur
39  REAL :: aux_var2(klon) ! traceur
40  REAL :: aux_var3(klon) ! traceur
41  REAL :: his_dhlsc(klon,nbtr)        ! in-cloud scavenging lsc
42  REAL :: his_dhcon1(klon,nbtr)       ! in-cloud scavenging con
43  !========================= LOCAL VARIABLES =============================
44  INTEGER :: it, i, j
45
46  EXTERNAL minmaxqfi, inscav_spl
47
48  DO it=1, nbtr
49  !
50  DO i=1,klon
51    aux_var2(i)=his_dhlsc(i,it)
52    aux_var3(i)=his_dhcon1(i,it)
53  ENDDO
54  DO j=1,klev
55  DO i=1,klon
56    aux_var1(i,j)=tr_seri(i,j,it)
57  ENDDO
58  ENDDO
59  !
60  IF (lminmax) THEN
61    CALL minmaxqfi(aux_var1,qmin,qmax,'avt inscav')
62  !nhl      CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'avt inscav')
63  ENDIF
64  !
65  !nhl      CALL inscav_spl(pdtphys,it,masse(it),henry(it),kk(it),0.5e-3,
66  !nhl     .             prfl,psfl,zrho,zdz,t_seri,tr_seri(1,1,it),
67  !nhl     .             his_dhlsc(1,it))
68  CALL inscav_spl(pdtphys,it,masse(it),henry(it),kk(it),0.5e-3, &
69        prfl,psfl,zrho,zdz,t_seri,aux_var1,aux_var2)
70  !
71  IF (lminmax) THEN
72    CALL minmaxqfi(aux_var1,qmin,qmax,'depot humide lsc')
73  !nhl      CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'depot humide lsc')
74  ENDIF
75  !
76  !
77  !-scheme for convective in-cloud scavenging
78  !
79  !nhl      CALL inscav_spl(pdtphys,it,masse(it),henry(it),kk(it),1.e-3,
80  !nhl     .             pmflxr,pmflxs,zrho,zdz,t_seri,tr_seri(1,1,it),
81  !nhl     .             his_dhcon1(1,it))
82  CALL inscav_spl(pdtphys,it,masse(it),henry(it),kk(it),1.e-3, &
83        pmflxr,pmflxs,zrho,zdz,t_seri,aux_var1,aux_var3)
84  !
85  IF (lminmax) THEN
86    CALL minmaxqfi(aux_var1,qmin,qmax,'depot humide con')
87  !nhl      CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'depot humide con')
88  ENDIF
89  !
90  DO j=1,klev
91  DO i=1,klon
92    tr_seri(i,j,it)=aux_var1(i,j)
93  ENDDO
94  ENDDO
95  DO i=1,klon
96    his_dhlsc(i,it)=aux_var2(i)
97    his_dhcon1(i,it)=aux_var3(i)
98  ENDDO
99
100  !
101  ENDDO !--boucle sur it
102
103END SUBROUTINE incloud_scav
Note: See TracBrowser for help on using the repository browser.