Directory: | ./ |
---|---|
File: | phys/reevap.f90 |
Date: | 2022-01-11 19:19:34 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 15 | 24 | 62.5% |
Branches: | 7 | 10 | 70.0% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | 480 | 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 | ! flag to include modifications to ensure energy conservation (if flag >0) | ||
5 | USE add_phys_tend_mod, only : fl_cor_ebil | ||
6 | |||
7 | IMPLICIT none | ||
8 | !>====================================================================== | ||
9 | |||
10 | INTEGER klon,klev,iflag_ice_thermo | ||
11 | REAL, DIMENSION(klon,klev), INTENT(in) :: t_seri,q_seri,ql_seri,qs_seri | ||
12 | REAL, DIMENSION(klon,klev), INTENT(out) :: d_t_eva,d_q_eva,d_ql_eva,d_qs_eva | ||
13 | |||
14 | REAL za,zb,zdelta,zlvdcp,zlsdcp | ||
15 | INTEGER i,k | ||
16 | |||
17 | !--------Stochastic Boundary Layer Triggering: ALE_BL-------- | ||
18 | !---Propri\'et\'es du thermiques au LCL | ||
19 | include "YOMCST.h" | ||
20 | include "YOETHF.h" | ||
21 | include "FCTTRE.h" | ||
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 |
2/2✓ Branch 0 taken 18720 times.
✓ Branch 1 taken 480 times.
|
19200 | DO k = 1, klev ! re-evaporation de l'eau liquide nuageuse |
28 |
2/2✓ Branch 0 taken 18607680 times.
✓ Branch 1 taken 18720 times.
|
18626880 | DO i = 1, klon |
29 |
1/2✓ Branch 0 taken 18607680 times.
✗ Branch 1 not taken.
|
18607680 | if (fl_cor_ebil .GT. 0) then |
30 | 18607680 | zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*(q_seri(i,k)+ql_seri(i,k)+qs_seri(i,k))) | |
31 | 18607680 | 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 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 18607680 times.
|
18607680 | IF (iflag_ice_thermo .EQ. 0) THEN |
40 | zlsdcp=zlvdcp | ||
41 | ENDIF | ||
42 | !>jyg | ||
43 | |||
44 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 18607680 times.
|
18626400 | IF (iflag_ice_thermo.eq.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 | 18607680 | zb = MAX(0.0,ql_seri(i,k)+qs_seri(i,k)) | |
66 | za = - MAX(0.0,ql_seri(i,k))*zlvdcp & | ||
67 | 18607680 | - MAX(0.0,qs_seri(i,k))*zlsdcp | |
68 | 18607680 | d_t_eva(i,k) = za | |
69 | 18607680 | d_q_eva(i,k) = zb | |
70 | 18607680 | d_ql_eva(i,k) = -ql_seri(i,k) | |
71 | 18607680 | d_qs_eva(i,k) = -qs_seri(i,k) | |
72 | ENDIF | ||
73 | |||
74 | ENDDO | ||
75 | ENDDO | ||
76 | |||
77 | 480 | RETURN | |
78 | |||
79 | END SUBROUTINE reevap | ||
80 |