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

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

Put YOEGWD.h, FCTTRE.h into modules

File size: 2.7 KB
RevLine 
[5143]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)
[2705]3
[5143]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
[2705]8
[5143]9  IMPLICIT NONE
10  !>======================================================================
[2705]11
[5143]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
[2705]15
[5143]16  REAL za, zb, zdelta, zlvdcp, zlsdcp
17  INTEGER i, k
[5099]18
[5143]19  !--------Stochastic Boundary Layer Triggering: ALE_BL--------
20  !---Propri\'et\'es du thermiques au LCL
21  include "YOMCST.h"
22  !IM 100106 BEG : pouvoir sortir les ctes de la physique
[5099]23
[5143]24  ! Re-evaporer l'eau liquide nuageuse
[2705]25
[5143]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
[2705]43
[5143]44      IF (iflag_ice_thermo==0) THEN
45        !pas necessaire a priori
[2705]46
[5143]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.
[2705]56
[5143]57      ELSE
[2705]58
[5143]59        !CR: on r\'e-\'evapore eau liquide et glace
[2705]60
[5143]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
[2705]74    ENDDO
[5143]75  ENDDO
[2705]76
77END SUBROUTINE reevap
Note: See TracBrowser for help on using the repository browser.