Changeset 5149 for LMDZ6/trunk/libf
- Timestamp:
- Jul 31, 2024, 2:38:51 PM (4 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmdiso/reevap.F90
r4982 r5149 22 22 REAL, DIMENSION(klon,klev,nqtot), INTENT(in) :: qx 23 23 REAL, DIMENSION(klon,klev), INTENT(out) :: d_t_eva 24 REAL, DIMENSION(klon,klev,nqtot), INTENT(out) :: 24 REAL, DIMENSION(klon,klev,nqtot), INTENT(out) :: d_qx_eva 25 25 26 26 REAL za,zb,zdelta,zlvdcp,zlsdcp … … 35 35 !IM 100106 BEG : pouvoir sortir les ctes de la physique 36 36 ! 37 do ixt=1,1+ntiso37 DO ixt = 1, 1+ntiso 38 38 ! Re-evaporer l'eau liquide nuageuse 39 39 ! … … 43 43 !print *,'rrevap ; fl_cor_ebil:',fl_cor_ebil,' iflag_ice_thermo:',iflag_ice_thermo,' RVTMP2',RVTMP2 44 44 DO k = 1, klev ! re-evaporation de l'eau liquide nuageuse 45 45 DO i = 1, klon 46 46 47 if (ixt.eq.1) then 48 if (fl_cor_ebil .GT. 0) then 49 !zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*(q_seri(i,k)+ql_seri(i,k)+qs_seri(i,k))) 50 !zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*(q_seri(i,k)+ql_seri(i,k)+qs_seri(i,k))) 51 zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*(qx(i,k,ivapcur)+qx(i,k,iliqcur)+qx(i,k,isolcur))) 52 zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*(qx(i,k,ivapcur)+qx(i,k,iliqcur)+qx(i,k,isolcur))) 53 else 54 zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*qx(i,k,ivapcur)) 55 !jyg< 56 ! Attention : Arnaud a propose des formules completement differentes 57 ! A verifier !!! 58 zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*qx(i,k,ivapcur)) 59 end if 60 IF (iflag_ice_thermo .EQ. 0) THEN 61 zlsdcp=zlvdcp 47 IF (ixt == 1) THEN ! water 48 IF (fl_cor_ebil > 0) THEN 49 !zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*(q_seri(i,k)+ql_seri(i,k)+qs_seri(i,k))) 50 !zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*(q_seri(i,k)+ql_seri(i,k)+qs_seri(i,k))) 51 zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*(qx(i,k,ivapcur)+qx(i,k,iliqcur)+qx(i,k,isolcur))) 52 zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*(qx(i,k,ivapcur)+qx(i,k,iliqcur)+qx(i,k,isolcur))) 53 ELSE 54 zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*qx(i,k,ivapcur)) 55 !jyg< 56 ! Attention : Arnaud a propose des formules completement differentes 57 ! A verifier !!! 58 zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*qx(i,k,ivapcur)) 62 59 ENDIF 60 IF (iflag_ice_thermo == 0) THEN 61 zlsdcp=zlvdcp 62 ENDIF 63 63 !>jyg 64 ENDIF 65 IF (iflag_ice_thermo == 0) THEN 66 !pas necessaire a priori 67 68 zdelta = MAX(0.,SIGN(1.,RTT-t_seri(i,k))) 69 zdelta = 0. 70 zb = MAX(0.0,qx(i,k,iliqcur)) 71 IF (ixt == 1) THEN 72 za = - MAX(0.0,qx(i,k,iliqcur)) & 73 * (zlvdcp*(1.-zdelta)+zlsdcp*zdelta) 74 d_t_eva(i,k) = za 75 ENDIF 76 d_qx_eva(i,k,ivapcur) = zb 77 d_qx_eva(i,k,iliqcur) = -qx(i,k,iliqcur) 78 d_qx_eva(i,k,isolcur) = 0. 79 80 ELSE 81 64 82 !CR: on r\'e-\'evapore eau liquide et glace 65 83 … … 68 86 ! za = - MAX(0.0,ql_seri(i,k)) & 69 87 ! * (zlvdcp*(1.-zdelta)+zlsdcp*zdelta) 70 za = - MAX(0.0,qx(i,k,iliqcur))*zlvdcp & 71 - MAX(0.0,qx(i,k,iliqcur))*zlsdcp 72 d_t_eva(i,k) = za 73 74 endif !if (ixt.eq.1) then 75 88 IF (ixt == 1) THEN 89 za = - MAX(0.0,qx(i,k,iliqcur))*zlvdcp & 90 - MAX(0.0,qx(i,k,iliqcur))*zlsdcp 91 d_t_eva(i,k) = za 92 ENDIF 76 93 !zb = MAX(0.0,ql_seri(i,k)+qs_seri(i,k)) 77 94 !d_q_eva(i,k) = zb … … 83 100 d_qx_eva(i,k,iliqcur) = -qx(i,k,iliqcur) 84 101 d_qx_eva(i,k,isolcur) = -qx(i,k,isolcur) 102 ENDIF 85 103 86 104 87 105 ENDDO 88 106 ENDDO 89 107 90 enddo ! do ixt=1,1+niso*(nzone +1) 91 108 ENDDO ! DO ixt = 1, 1+niso*(nzone +1) 92 109 93 110 RETURN
Note: See TracChangeset
for help on using the changeset viewer.