source: LMDZ6/branches/Amaury_dev/libf/phylmdiso/reevap.F90 @ 5144

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

Put YOMCST.h into modules

File size: 3.2 KB
Line 
1  SUBROUTINE reevap(klon,klev,iflag_ice_thermo,t_seri,qx, &
2             d_t_eva,d_qx_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#ifdef ISO
7    USE infotrac_phy, ONLY: ntiso,nqtot,ivap,iliq,isol,iqWIsoPha
8#ifdef ISOVERIF
9    USE isotopes_verif_mod
10!, ONLY: errmax,errmaxrel, iso_verif_o18_aberrant_nostop,deltaD,deltaO
11    USE isotopes_mod, ONLY: iso_eau,iso_hdo,iso_o18,ridicule
12#ifdef ISOTRAC
13    USE isotrac_routines_mod, ONLY: iso_verif_traceur_pbidouille
14#endif
15#endif
16#endif
17
18    USE lmdz_yoethf
19    USE lmdz_fcttre, ONLY: foeew, foede, qsats, qsatl, dqsats, dqsatl, thermcep
20    USE lmdz_yomcst
21
22    IMPLICIT NONE
23    !>======================================================================
24
25    INTEGER klon,klev,iflag_ice_thermo
26    REAL, DIMENSION(klon,klev), INTENT(IN) :: t_seri
27    REAL, DIMENSION(klon,klev,nqtot), INTENT(IN) ::     qx
28    REAL, DIMENSION(klon,klev), INTENT(OUT) :: d_t_eva
29    REAL, DIMENSION(klon,klev,nqtot), INTENT(OUT) ::        d_qx_eva
30
31    REAL za,zb,zdelta,zlvdcp,zlsdcp
32    INTEGER i,k,ixt,ivapcur,iliqcur,isolcur
33
34    !--------Stochastic Boundary Layer Triggering: ALE_BL--------
35
36DO ixt=1,1+ntiso
37    ! Re-evaporer l'eau liquide nuageuse
38
39    iliqcur= iqWIsoPha(ixt,iliq)
40    ivapcur= iqWIsoPha(ixt,ivap)
41    isolcur= iqWIsoPha(ixt,isol)
42!print *,'rrevap ; fl_cor_ebil:',fl_cor_ebil,' iflag_ice_thermo:',iflag_ice_thermo,' RVTMP2',RVTMP2
43    DO k = 1, klev  ! re-evaporation de l'eau liquide nuageuse
44       DO i = 1, klon
45
46        IF (ixt==1) THEN
47         IF (fl_cor_ebil > 0) THEN
48          !zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*(q_seri(i,k)+ql_seri(i,k)+qs_seri(i,k)))
49          !zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*(q_seri(i,k)+ql_seri(i,k)+qs_seri(i,k)))
50          zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*(qx(i,k,ivapcur)+qx(i,k,iliqcur)+qx(i,k,isolcur)))
51          zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*(qx(i,k,ivapcur)+qx(i,k,iliqcur)+qx(i,k,isolcur)))
52         else
53           zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*qx(i,k,ivapcur))
54           !jyg<
55           !  Attention : Arnaud a propose des formules completement differentes
56           !                  A verifier !!!
57           zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*qx(i,k,ivapcur))
58         end if
59         IF (iflag_ice_thermo == 0) THEN
60             zlsdcp=zlvdcp
61         ENDIF
62          !>jyg
63             !CR: on r\'e-\'evapore eau liquide et glace
64
65             !        zdelta = MAX(0.,SIGN(1.,RTT-t_seri(i,k)))
66             !        zb = MAX(0.0,ql_seri(i,k))
67             !        za = - MAX(0.0,ql_seri(i,k)) &
68             !             * (zlvdcp*(1.-zdelta)+zlsdcp*zdelta)
69             za = - MAX(0.0,qx(i,k,iliqcur))*zlvdcp &
70                  - MAX(0.0,qx(i,k,iliqcur))*zlsdcp
71             d_t_eva(i,k) = za
72
73          endif !if (ixt.EQ.1) THEN
74            !zb = MAX(0.0,ql_seri(i,k)+qs_seri(i,k))
75            !d_q_eva(i,k) = zb
76            !d_ql_eva(i,k) = -ql_seri(i,k)
77            !d_qs_eva(i,k) = -qs_seri(i,k)
78
79            zb = MAX(0.0,qx(i,k,iliqcur)+qx(i,k,isolcur))
80            d_qx_eva(i,k,ivapcur) = zb
81            d_qx_eva(i,k,iliqcur) = -qx(i,k,iliqcur)
82            d_qx_eva(i,k,isolcur) = -qx(i,k,isolcur)
83
84
85       ENDDO
86    ENDDO
87
88    enddo ! do ixt=1,1+niso*(nzone +1)
89
90
91
92
93END SUBROUTINE reevap
Note: See TracBrowser for help on using the repository browser.