source: LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/bcscav_spl.f90 @ 5104

Last change on this file since 5104 was 5104, checked in by abarral, 3 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: 1.8 KB
Line 
1SUBROUTINE bcscav_spl(pdtime, flxr, flxs, alpha_r, alpha_s, x, dx)
2
3  USE dimphy
4  IMPLICIT NONE
5  !=====================================================================
6  ! Objet : below-cloud scavenging of tracers
7  ! Date : september 1999
8  ! Auteur: O. Boucher (LOA)
9  !=====================================================================
10  !
11  INCLUDE "dimensions.h"
12  INCLUDE "chem.h"
13  INCLUDE "YOMCST.h"
14  INCLUDE "YOECUMF.h"
15  !
16  REAL :: pdtime, alpha_r, alpha_s, R_r, R_s
17  PARAMETER (R_r = 0.001)          !--mean raindrop radius (m)
18  PARAMETER (R_s = 0.001)          !--mean snow crystal radius (m)
19  REAL :: flxr(klon, klev)         ! liquid precipitation rate (kg/m2/s)
20  REAL :: flxs(klon, klev)         ! solid  precipitation rate (kg/m2/s)
21  REAL :: flxr_aux(klon, klev + 1)
22  REAL :: flxs_aux(klon, klev + 1)
23  REAL :: x(klon, klev)              ! q de traceur
24  REAL :: dx(klon, klev)             ! tendance de traceur
25  !
26  !--variables locales
27  INTEGER :: i, k
28  REAL :: pr, ps, ice, water
29  !
30  !------------------------------------------
31  !
32  ! NHL
33  ! Auxiliary variables defined to deal with the fact that precipitation
34  ! fluxes are defined on klev levels only.
35  ! NHL
36
37  flxr_aux(:, klev + 1) = 0.0
38  flxs_aux(:, klev + 1) = 0.0
39  flxr_aux(:, 1:klev) = flxr(:, :)
40  flxs_aux(:, 1:klev) = flxs(:, :)
41
42  DO k = 1, klev
43    DO i = 1, klon
44      pr = 0.5 * (flxr_aux(i, k) + flxr_aux(i, k + 1))
45      ps = 0.5 * (flxs_aux(i, k) + flxs_aux(i, k + 1))
46      water = pr * alpha_r / R_r / rho_water
47      ice = ps * alpha_s / R_s / rho_ice
48      dx(i, k) = -3. / 4. * x(i, k) * pdtime * (water + ice)
49      !tmp       dx(i,k)=-3./4.*x(i,k)*pdtime*
50      !tmp     .         (pr*alpha_r/R_r/rho_water+ps*alpha_s/R_s/rho_ice)
51    ENDDO
52  ENDDO
53  !
54  RETURN
55END SUBROUTINE bcscav_spl
Note: See TracBrowser for help on using the repository browser.