source: LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/incloud_scav.f90 @ 5113

Last change on this file since 5113 was 5104, checked in by abarral, 4 months ago

Replace 1DUTILS.h by module lmdz_1dutils.f90
Replace 1DConv.h by module lmdz_old_1dconv.f90 (it's only used by old_* files)
Convert *.F in DUST to *.f90

File size: 3.4 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  IMPLICIT NONE
12
13  INCLUDE "dimensions.h"
14  INCLUDE "chem.h"
15  INCLUDE "YOMCST.h"
16  INCLUDE "paramet.h"
17
18  !============================= INPUT ===================================
19  REAL :: qmin, qmax
20  REAL :: masse(nbtr)
21  REAL :: henry(nbtr)         !--cste de Henry  mol/l/atm
22  REAL :: kk(nbtr)            !--coefficient de var avec T (K)
23  REAL :: prfl(klon, klev + 1), psfl(klon, klev + 1)     !--large-scale
24  ! REAL prfl(klon,klev),   psfl(klon,klev)     !--large-scale
25  REAL :: pmflxr(klon, klev + 1), pmflxs(klon, klev + 1)   !--convection
26  ! REAL pmflxr(klon,klev), pmflxs(klon,klev)   !--convection
27  REAL :: zrho(klon, klev), zdz(klon, klev)
28  REAL :: t_seri(klon, klev)
29  LOGICAL :: lminmax
30  REAL :: pdtphys
31  ! REAL prfl(klon,klev+1),   psfl(klon,klev+1)     !--large-scale  ! Titane
32  ! REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1)   !--convection   ! Titane
33  !============================= OUTPUT ==================================
34  REAL :: tr_seri(klon, klev, nbtr) ! traceur
35  REAL :: aux_var1(klon, klev) ! traceur
36  REAL :: aux_var2(klon) ! traceur
37  REAL :: aux_var3(klon) ! traceur
38  REAL :: his_dhlsc(klon, nbtr)        ! in-cloud scavenging lsc
39  REAL :: his_dhcon1(klon, nbtr)       ! in-cloud scavenging con
40  !========================= LOCAL VARIABLES =============================
41  INTEGER :: it, i, j
42
43  EXTERNAL minmaxqfi, inscav_spl
44
45  DO it = 1, nbtr
46    !
47    DO i = 1, klon
48      aux_var2(i) = his_dhlsc(i, it)
49      aux_var3(i) = his_dhcon1(i, it)
50    ENDDO
51    DO j = 1, klev
52      DO i = 1, klon
53        aux_var1(i, j) = tr_seri(i, j, it)
54      ENDDO
55    ENDDO
56    !
57    IF (lminmax) THEN
58      CALL minmaxqfi(aux_var1, qmin, qmax, 'avt inscav')
59      !nhl      CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'avt inscav')
60    ENDIF
61    !
62    !nhl      CALL inscav_spl(pdtphys,it,masse(it),henry(it),kk(it),0.5e-3,
63    !nhl     .             prfl,psfl,zrho,zdz,t_seri,tr_seri(1,1,it),
64    !nhl     .             his_dhlsc(1,it))
65    CALL inscav_spl(pdtphys, it, masse(it), henry(it), kk(it), 0.5e-3, &
66            prfl, psfl, zrho, zdz, t_seri, aux_var1, aux_var2)
67    !
68    IF (lminmax) THEN
69      CALL minmaxqfi(aux_var1, qmin, qmax, 'depot humide lsc')
70      !nhl      CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'depot humide lsc')
71    ENDIF
72    !
73    !
74    !-scheme for convective in-cloud scavenging
75    !
76    !nhl      CALL inscav_spl(pdtphys,it,masse(it),henry(it),kk(it),1.e-3,
77    !nhl     .             pmflxr,pmflxs,zrho,zdz,t_seri,tr_seri(1,1,it),
78    !nhl     .             his_dhcon1(1,it))
79    CALL inscav_spl(pdtphys, it, masse(it), henry(it), kk(it), 1.e-3, &
80            pmflxr, pmflxs, zrho, zdz, t_seri, aux_var1, aux_var3)
81    !
82    IF (lminmax) THEN
83      CALL minmaxqfi(aux_var1, qmin, qmax, 'depot humide con')
84      !nhl      CALL minmaxqfi(tr_seri(1,1,it),qmin,qmax,'depot humide con')
85    ENDIF
86    !
87    DO j = 1, klev
88      DO i = 1, klon
89        tr_seri(i, j, it) = aux_var1(i, j)
90      ENDDO
91    ENDDO
92    DO i = 1, klon
93      his_dhlsc(i, it) = aux_var2(i)
94      his_dhcon1(i, it) = aux_var3(i)
95    ENDDO
96
97    !
98  ENDDO !--boucle sur it
99
100END SUBROUTINE incloud_scav
Note: See TracBrowser for help on using the repository browser.