source: LMDZ6/branches/Amaury_dev/libf/phylmd/reevap.F90 @ 5151

Last change on this file since 5151 was 5144, checked in by abarral, 8 weeks ago

Put YOMCST.h into modules

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