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

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

Replace yomcst.h by existing module

File size: 3.5 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   
[5274]7    USE yomcst_mod_h, ONLY: RPI, RCLUM, RHPLA, RKBOL, RNAVO                   &
8          , RDAY, REA, REPSM, RSIYEA, RSIDAY, ROMEGA                  &
9          , R_ecc, R_peri, R_incl                                      &
10          , RA, RG, R1SA                                         &
11          , RSIGMA                                                     &
12          , R, RMD, RMV, RD, RV, RCPD                    &
13          , RMO3, RMCO2, RMC, RMCH4, RMN2O, RMCFC11, RMCFC12        &
14          , RCPV, RCVD, RCVV, RKAPPA, RETV, eps_w                    &
15          , RCW, RCS                                                 &
16          , RLVTT, RLSTT, RLMLT, RTT, RATM                           &
17          , RESTT, RALPW, RBETW, RGAMW, RALPS, RBETS, RGAMS            &
18          , RALPD, RBETD, RGAMD
19IMPLICIT none
[2705]20    !>======================================================================
21
22    INTEGER klon,klev,iflag_ice_thermo
23    REAL, DIMENSION(klon,klev), INTENT(in) :: t_seri,q_seri,ql_seri,qs_seri
24    REAL, DIMENSION(klon,klev), INTENT(out) :: d_t_eva,d_q_eva,d_ql_eva,d_qs_eva
25
26    REAL za,zb,zdelta,zlvdcp,zlsdcp
27    INTEGER i,k
28
29    !--------Stochastic Boundary Layer Triggering: ALE_BL--------
[5274]30    !---Propri\'et\'es du thermiques au LCL
31
[2705]32    include "YOETHF.h"
33    include "FCTTRE.h"
34    !IM 100106 BEG : pouvoir sortir les ctes de la physique
35    !
36    ! Re-evaporer l'eau liquide nuageuse
37    !
[2808]38!print *,'rrevap ; fl_cor_ebil:',fl_cor_ebil,' iflag_ice_thermo:',iflag_ice_thermo,' RVTMP2',RVTMP2
[2705]39    DO k = 1, klev  ! re-evaporation de l'eau liquide nuageuse
40       DO i = 1, klon
[2799]41        if (fl_cor_ebil .GT. 0) then
42          zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*(q_seri(i,k)+ql_seri(i,k)+qs_seri(i,k)))
43          zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*(q_seri(i,k)+ql_seri(i,k)+qs_seri(i,k)))
44        else
[2705]45          zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*q_seri(i,k))
46          !jyg<
47          !  Attention : Arnaud a propose des formules completement differentes
48          !                  A verifier !!!
49          zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*q_seri(i,k))
[2799]50        end if
[2705]51          IF (iflag_ice_thermo .EQ. 0) THEN
52             zlsdcp=zlvdcp
53          ENDIF
54          !>jyg
55
56          IF (iflag_ice_thermo.eq.0) THEN   
57             !pas necessaire a priori
58
59             zdelta = MAX(0.,SIGN(1.,RTT-t_seri(i,k)))
[2807]60  zdelta = 0.
[2705]61             zb = MAX(0.0,ql_seri(i,k))
62             za = - MAX(0.0,ql_seri(i,k)) &
63                  * (zlvdcp*(1.-zdelta)+zlsdcp*zdelta)
64             d_t_eva(i,k) = za
65             d_q_eva(i,k) = zb
66             d_ql_eva(i,k) = -ql_seri(i,k)
67             d_qs_eva(i,k) = 0.
68
69          ELSE
70
71             !CR: on r\'e-\'evapore eau liquide et glace
72
73             !        zdelta = MAX(0.,SIGN(1.,RTT-t_seri(i,k)))
74             !        zb = MAX(0.0,ql_seri(i,k))
75             !        za = - MAX(0.0,ql_seri(i,k)) &
76             !             * (zlvdcp*(1.-zdelta)+zlsdcp*zdelta)
77             zb = MAX(0.0,ql_seri(i,k)+qs_seri(i,k))
78             za = - MAX(0.0,ql_seri(i,k))*zlvdcp &
79                  - MAX(0.0,qs_seri(i,k))*zlsdcp
80             d_t_eva(i,k) = za
81             d_q_eva(i,k) = zb
82             d_ql_eva(i,k) = -ql_seri(i,k)
83             d_qs_eva(i,k) = -qs_seri(i,k)
84          ENDIF
85
86       ENDDO
87    ENDDO
88
89RETURN
90
91END SUBROUTINE reevap
Note: See TracBrowser for help on using the repository browser.