source: LMDZ6/trunk/libf/phylmd/reevap.f90 @ 5451

Last change on this file since 5451 was 5285, checked in by abarral, 2 months ago

As discussed internally, remove generic ONLY: ... for new _mod_h modules

File size: 2.7 KB
RevLine 
[2705]1  SUBROUTINE reevap (klon,klev,iflag_ice_thermo,t_seri,q_seri,ql_seri,qs_seri, &
2   &         d_t_eva,d_q_eva,d_ql_eva,d_qs_eva)
3
[2799]4    ! flag to include modifications to ensure energy conservation (if flag >0)
5    USE add_phys_tend_mod, only : fl_cor_ebil
6   
[5285]7    USE yomcst_mod_h
[5284]8    USE yoethf_mod_h
[5274]9IMPLICIT none
[2705]10    !>======================================================================
11
12    INTEGER klon,klev,iflag_ice_thermo
13    REAL, DIMENSION(klon,klev), INTENT(in) :: t_seri,q_seri,ql_seri,qs_seri
14    REAL, DIMENSION(klon,klev), INTENT(out) :: d_t_eva,d_q_eva,d_ql_eva,d_qs_eva
15
16    REAL za,zb,zdelta,zlvdcp,zlsdcp
17    INTEGER i,k
18
19    !--------Stochastic Boundary Layer Triggering: ALE_BL--------
[5274]20    !---Propri\'et\'es du thermiques au LCL
21
[2705]22    include "FCTTRE.h"
23    !IM 100106 BEG : pouvoir sortir les ctes de la physique
24    !
25    ! Re-evaporer l'eau liquide nuageuse
26    !
[2808]27!print *,'rrevap ; fl_cor_ebil:',fl_cor_ebil,' iflag_ice_thermo:',iflag_ice_thermo,' RVTMP2',RVTMP2
[2705]28    DO k = 1, klev  ! re-evaporation de l'eau liquide nuageuse
29       DO i = 1, klon
[2799]30        if (fl_cor_ebil .GT. 0) then
31          zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*(q_seri(i,k)+ql_seri(i,k)+qs_seri(i,k)))
32          zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*(q_seri(i,k)+ql_seri(i,k)+qs_seri(i,k)))
33        else
[2705]34          zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*q_seri(i,k))
35          !jyg<
36          !  Attention : Arnaud a propose des formules completement differentes
37          !                  A verifier !!!
38          zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*q_seri(i,k))
[2799]39        end if
[2705]40          IF (iflag_ice_thermo .EQ. 0) THEN
41             zlsdcp=zlvdcp
42          ENDIF
43          !>jyg
44
45          IF (iflag_ice_thermo.eq.0) THEN   
46             !pas necessaire a priori
47
48             zdelta = MAX(0.,SIGN(1.,RTT-t_seri(i,k)))
[2807]49  zdelta = 0.
[2705]50             zb = MAX(0.0,ql_seri(i,k))
51             za = - MAX(0.0,ql_seri(i,k)) &
52                  * (zlvdcp*(1.-zdelta)+zlsdcp*zdelta)
53             d_t_eva(i,k) = za
54             d_q_eva(i,k) = zb
55             d_ql_eva(i,k) = -ql_seri(i,k)
56             d_qs_eva(i,k) = 0.
57
58          ELSE
59
60             !CR: on r\'e-\'evapore eau liquide et glace
61
62             !        zdelta = MAX(0.,SIGN(1.,RTT-t_seri(i,k)))
63             !        zb = MAX(0.0,ql_seri(i,k))
64             !        za = - MAX(0.0,ql_seri(i,k)) &
65             !             * (zlvdcp*(1.-zdelta)+zlsdcp*zdelta)
66             zb = MAX(0.0,ql_seri(i,k)+qs_seri(i,k))
67             za = - MAX(0.0,ql_seri(i,k))*zlvdcp &
68                  - MAX(0.0,qs_seri(i,k))*zlsdcp
69             d_t_eva(i,k) = za
70             d_q_eva(i,k) = zb
71             d_ql_eva(i,k) = -ql_seri(i,k)
72             d_qs_eva(i,k) = -qs_seri(i,k)
73          ENDIF
74
75       ENDDO
76    ENDDO
77
78RETURN
79
80END SUBROUTINE reevap
Note: See TracBrowser for help on using the repository browser.