source: LMDZ6/trunk/libf/phylmd/lmdz_reevap.f90

Last change on this file was 6027, checked in by evignon, 7 weeks ago

replayisation de reevap

File size: 3.7 KB
Line 
1!$gpum horizontal klon
2MODULE lmdz_reevap
3
4CONTAINS
5
6   SUBROUTINE reevap(klon, klev, temp, qv, ql, qi, &
7      &         d_temp_eva, d_qv_eva, d_ql_eva, d_qi_eva)
8
9!=============================================================================
10! This routine evaporates (and sublimates) the condensed water at the
11! beginning of the physics in order to work with the total water
12! specific content of water which is a conserved variable
13! (one of the so-called Bett's variable)
14!
15! reference: Madeleine et al. 2020, doi:10.1029/2020MS002046
16! contact: C. Rio, catherine.rio@meteo.fr
17!=============================================================================
18
19      USE lmdz_reevap_ini, only: fl_cor_ebil, iflag_ice_thermo
20      USE lmdz_reevap_ini, only: RLVTT, RLSTT, RCPD, RVTMP2
21
22      IMPLICIT none
23
24!======================================================================
25! Declarations
26!======================================================================
27
28! Input variables:
29!-----------------
30      INTEGER, INTENT(IN) :: klon, klev  ! horizontal and vertical dimensions
31      REAL, DIMENSION(klon, klev), INTENT(IN) :: temp ! temperature [K]
32      REAL, DIMENSION(klon, klev), INTENT(IN) :: qv ! specific humidity (vapor) [kg/kg]
33      REAL, DIMENSION(klon, klev), INTENT(IN) :: ql ! specific liquid water [kg/kg]
34      REAL, DIMENSION(klon, klev), INTENT(IN) :: qi ! specific ice water [kg/kg]
35
36! Output variables:
37!-----------------
38      REAL, DIMENSION(klon, klev), INTENT(OUT) :: d_temp_eva ! temperature increment due to evap. [K]
39      REAL, DIMENSION(klon, klev), INTENT(OUT) :: d_qv_eva ! specific humidity increment due to evap [kg/kg]
40      REAL, DIMENSION(klon, klev), INTENT(OUT) :: d_ql_eva ! specific liquid water increment due to evap [kg/kg]
41      REAL, DIMENSION(klon, klev), INTENT(OUT) :: d_qi_eva ! specific ice water increment due to evap [kg/kg]
42
43! Local variables
44!-----------------
45      INTEGER :: i, k
46      REAL    :: za, zb, zlvdcp, zlsdcp, zdelta
47
48!======================================================================
49! Computation of evaporation and sublimation
50!======================================================================
51
52      DO k = 1, klev
53         DO i = 1, klon
54            IF (fl_cor_ebil .GT. 0) THEN
55               ! the mass of condensates is taken into account when applying enthalpy conservation
56               ! (first principle of thermodynamics)
57               zlvdcp = RLVTT/RCPD/(1.0 + RVTMP2*(qv(i, k) + ql(i, k) + qi(i, k)))
58               zlsdcp = RLSTT/RCPD/(1.0 + RVTMP2*(qv(i, k) + ql(i, k) + qi(i, k)))
59            ELSE
60               zlvdcp = RLVTT/RCPD/(1.0 + RVTMP2*qv(i, k))
61               zlsdcp = RLSTT/RCPD/(1.0 + RVTMP2*qv(i, k))
62            END IF
63
64            IF (iflag_ice_thermo .EQ. 0) THEN
65               ! if iflag_ice_thermo = 0, only the liquid phase is considered thermodynamically
66               ! active in LMDZ, no only liquid water is evaporated
67               zlsdcp=zlvdcp
68               zdelta = 0.0
69               zb = MAX(0.0, ql(i, k))
70               za = - MAX(0.0 , ql(i,k)) &
71                  * (zlvdcp*(1.-zdelta)+zlsdcp*zdelta)
72               d_temp_eva(i, k) = za
73               d_qv_eva(i, k) = zb
74               d_ql_eva(i, k) = -ql(i, k)
75               d_qi_eva(i, k) = 0.
76
77            ELSE
78               ! both liquid and ice are evaporated / sublimated
79               zb = MAX(0.0, ql(i, k) + qi(i, k))
80               za = -MAX(0.0, ql(i, k))*zlvdcp &
81                    - MAX(0.0, qi(i, k))*zlsdcp
82               d_temp_eva(i, k) = za
83               d_qv_eva(i, k) = zb
84               d_ql_eva(i, k) = -ql(i, k)
85               d_qi_eva(i, k) = -qi(i, k)
86            END IF
87
88         END DO
89      END DO
90
91      RETURN
92
93   END SUBROUTINE reevap
94
95END MODULE lmdz_reevap
Note: See TracBrowser for help on using the repository browser.