source: LMDZ5/trunk/libf/phylmd/reevap.F90 @ 2793

Last change on this file since 2793 was 2705, checked in by fhourdin, 8 years ago

Extraction du calcul de la reevaporation dans un sous programme.
Ajout des tendances par add_phys_tend.
Travail preparatoire a la conservation de l'energie.

File size: 2.2 KB
Line 
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
4
5    IMPLICIT none
6    !>======================================================================
7
8    INTEGER klon,klev,iflag_ice_thermo
9    REAL, DIMENSION(klon,klev), INTENT(in) :: t_seri,q_seri,ql_seri,qs_seri
10    REAL, DIMENSION(klon,klev), INTENT(out) :: d_t_eva,d_q_eva,d_ql_eva,d_qs_eva
11
12    REAL za,zb,zdelta,zlvdcp,zlsdcp
13    INTEGER i,k
14
15    !--------Stochastic Boundary Layer Triggering: ALE_BL--------
16    !---Propri\'et\'es du thermiques au LCL
17    include "YOMCST.h"
18    include "YOETHF.h"
19    include "FCTTRE.h"
20    !IM 100106 BEG : pouvoir sortir les ctes de la physique
21    !
22    ! Re-evaporer l'eau liquide nuageuse
23    !
24
25    DO k = 1, klev  ! re-evaporation de l'eau liquide nuageuse
26       DO i = 1, klon
27          zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*q_seri(i,k))
28          !jyg<
29          !  Attention : Arnaud a propose des formules completement differentes
30          !                  A verifier !!!
31          zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*q_seri(i,k))
32          IF (iflag_ice_thermo .EQ. 0) THEN
33             zlsdcp=zlvdcp
34          ENDIF
35          !>jyg
36
37          IF (iflag_ice_thermo.eq.0) THEN   
38             !pas necessaire a priori
39
40             zdelta = MAX(0.,SIGN(1.,RTT-t_seri(i,k)))
41             zb = MAX(0.0,ql_seri(i,k))
42             za = - MAX(0.0,ql_seri(i,k)) &
43                  * (zlvdcp*(1.-zdelta)+zlsdcp*zdelta)
44             d_t_eva(i,k) = za
45             d_q_eva(i,k) = zb
46             d_ql_eva(i,k) = -ql_seri(i,k)
47             d_qs_eva(i,k) = 0.
48
49          ELSE
50
51             !CR: on r\'e-\'evapore eau liquide et glace
52
53             !        zdelta = MAX(0.,SIGN(1.,RTT-t_seri(i,k)))
54             !        zb = MAX(0.0,ql_seri(i,k))
55             !        za = - MAX(0.0,ql_seri(i,k)) &
56             !             * (zlvdcp*(1.-zdelta)+zlsdcp*zdelta)
57             zb = MAX(0.0,ql_seri(i,k)+qs_seri(i,k))
58             za = - MAX(0.0,ql_seri(i,k))*zlvdcp &
59                  - MAX(0.0,qs_seri(i,k))*zlsdcp
60             d_t_eva(i,k) = za
61             d_q_eva(i,k) = zb
62             d_ql_eva(i,k) = -ql_seri(i,k)
63             d_qs_eva(i,k) = -qs_seri(i,k)
64          ENDIF
65
66       ENDDO
67    ENDDO
68
69RETURN
70
71END SUBROUTINE reevap
Note: See TracBrowser for help on using the repository browser.