- Timestamp:
- Jan 11, 2017, 12:39:50 PM (8 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/calwake.F90
r2671 r2761 26 26 27 27 USE dimphy 28 USE phys_state_var_mod, ONLY: pctsrf 29 USE indice_sol_mod, ONLY: is_oce 30 USE print_control_mod, ONLY: mydebug=>debug , lunout, prt_level 28 31 IMPLICIT NONE 29 32 ! ====================================================================== … … 51 54 ! ------ 52 55 REAL, DIMENSION(klon, klev), INTENT (OUT) :: dt_wake, dq_wake 53 INTEGER, DIMENSION(klon),INTENT (OUT) :: wake_k56 REAL, DIMENSION(klon), INTENT (OUT) :: wake_k 54 57 REAL, DIMENSION(klon, klev), INTENT (OUT) :: wake_d_deltat_gw 55 58 REAL, DIMENSION(klon), INTENT (OUT) :: wake_h … … 69 72 ! ----------------- 70 73 INTEGER :: i, l 74 INTEGER, DIMENSION(klon) :: znatsurf ! 0 if pctsrf(is_oce)>0.1; 1 else. 71 75 REAL :: aire 72 76 REAL, DIMENSION(klon, klev) :: p, pi … … 97 101 98 102 99 ! print *, '-> calwake, wake_s ', wake_s(1) 103 IF (prt_level >= 10) THEN 104 print *, '-> calwake, wake_s input ', wake_s(1) 105 ENDIF 100 106 101 107 rdcp = 1./3.5 108 109 znatsurf(:) = 0 110 DO i = 1,klon 111 IF (pctsrf(i,is_oce) < 0.1) znatsurf(i) = 1 112 ENDDO 102 113 103 114 … … 124 135 END DO 125 136 137 !---------------------------------------------------------------- 138 ! Initialize tendencies to zero 139 !---------------------------------------------------------------- 140 dtls(:,:) = 0. 141 dqls(:,:) = 0. 142 d_deltat_gw(:,:) = 0. 143 d_deltatw(:,:) = 0. 144 d_deltaqw(:,:) = 0. 145 d_sigmaw(:) = 0. 146 d_wdens(:) = 0. 147 ! 148 126 149 DO i = 1, klon 127 150 sigd0(i) = sigd(i) … … 132 155 END DO 133 156 134 DO i = 1, klon 135 ktopw(i) = wake_k(i) 136 END DO 157 !!jyg! DO i = 1, klon 158 !!jyg! ktopw(i) = NINT(wake_k(i)) 159 !!jyg! END DO 137 160 138 161 DO i = 1, klon … … 178 201 END DO 179 202 180 CALL wake( p, ph, pi, dtime, &203 CALL wake(znatsurf, p, ph, pi, dtime, & 181 204 te, qe, omgbe, & 182 205 dtdwn, dqdwn, amdwn, amup, dta, dqa, & … … 254 277 END IF 255 278 END DO 279 ! 256 280 257 281 !jyg< -
LMDZ5/trunk/libf/phylmd/cv3_routines.F90
r2759 r2761 85 85 cv_flag_feed=1 86 86 CALL getin_p('cv_flag_feed',cv_flag_feed) 87 T_top_max = 1000. 88 CALL getin_p('t_top_max',T_top_max) 87 89 dpbase=-40. 88 90 CALL getin_p('dpbase',dpbase) … … 119 121 CALL getin_p('tlcrit',tlcrit) 120 122 123 WRITE (*, *) 't_top_max=', t_top_max 121 124 WRITE (*, *) 'dpbase=', dpbase 122 125 WRITE (*, *) 'pbcrit=', pbcrit … … 1071 1074 END SUBROUTINE icefrac 1072 1075 1073 SUBROUTINE cv3_undilute2(nloc, ncum, nd, i cb, icbs, nk, &1076 SUBROUTINE cv3_undilute2(nloc, ncum, nd, iflag, icb, icbs, nk, & 1074 1077 tnk, qnk, gznk, hnk, t, q, qs, gz, & 1075 1078 p, ph, h, tv, lv, lf, pbase, buoybase, plcl, & … … 1116 1119 REAL, DIMENSION (nloc, nd), INTENT (INOUT) :: tp, tvp, clw ! Input for k = 1, icb+1 (computed in cv3_undilute1) 1117 1120 ! Output above 1121 INTEGER, DIMENSION (nloc), INTENT (INOUT) :: iflag 1118 1122 1119 1123 !outputs: … … 1594 1598 ! ori frac(i)=max(frac(i),0.0) 1595 1599 ! ori 540 continue 1600 1601 ! -------------------------------------------------------------------- 1602 ! Prevent convection when top is too hot 1603 ! -------------------------------------------------------------------- 1604 DO i = 1,ncum 1605 IF (t(i,inb(i)) > T_top_max) iflag(i) = 10 1606 ENDDO 1596 1607 1597 1608 ! ===================================================================== -
LMDZ5/trunk/libf/phylmd/cv3param.h
r2757 r2761 20 20 real dtovsh, dpbase, dttrig 21 21 real dtcrit, tau, beta, alpha, alpha1 22 real T_top_max 22 23 real tau_stop, noconv_stop 23 24 real wbmax … … 32 33 ,dtovsh, dpbase, dttrig & 33 34 ,dtcrit, tau, beta, alpha, alpha1 & 35 ,T_top_max & 34 36 ,tau_stop, noconv_stop & 35 37 ,wbmax & -
LMDZ5/trunk/libf/phylmd/cva_driver.F90
r2654 r2761 353 353 ! 9 No moist convection: cloud base is higher 354 354 ! then the level NL-1. 355 ! 10 No moist convection: cloud top is too warm. 356 ! 355 357 356 358 ! ft: Array of temperature tendency (K/s) of dimension ND, defined at same … … 907 909 if (prt_level >= 9) & 908 910 PRINT *, 'cva_driver -> cv3_undilute2' 909 CALL cv3_undilute2(nloc, ncum, nd, i cb, icbs, nk, &!na->nd911 CALL cv3_undilute2(nloc, ncum, nd, iflag, icb, icbs, nk, & !na->nd 910 912 tnk, qnk, gznk, hnk, t, q, qs, gz, & 911 913 p, ph, h, tv, lv, lf, pbase, buoybase, plcl, & -
LMDZ5/trunk/libf/phylmd/wake.F90
r2759 r2761 2 2 ! $Id$ 3 3 4 SUBROUTINE wake( p, ph, pi, dtime, &4 SUBROUTINE wake(znatsurf, p, ph, pi, dtime, & 5 5 te0, qe0, omgb, & 6 6 dtdwn, dqdwn, amdwn, amup, dta, dqa, & … … 124 124 ! -------------------- 125 125 126 INTEGER, DIMENSION (klon), INTENT(IN) :: znatsurf 126 127 REAL, DIMENSION (klon, klev), INTENT(IN) :: p, pi 127 128 REAL, DIMENSION (klon, klev+1), INTENT(IN) :: ph … … 167 168 LOGICAL, SAVE :: first = .TRUE. 168 169 !$OMP THREADPRIVATE(first) 169 REAL, SAVE :: stark, wdens_ref, coefgw, alpk 170 !jyg< 171 !! REAL, SAVE :: stark, wdens_ref, coefgw, alpk 172 REAL, SAVE, DIMENSION(2) :: wdens_ref 173 REAL, SAVE :: stark, coefgw, alpk 174 !>jyg 170 175 REAL, SAVE :: crep_upper, crep_sol 171 176 !$OMP THREADPRIVATE(stark, wdens_ref, coefgw, alpk, crep_upper, crep_sol) … … 319 324 alpk=0.25 320 325 CALL getin_p('alpk',alpk) 321 wdens_ref=8.E-12 322 CALL getin_p('wdens_ref',wdens_ref) 326 !jyg< 327 !! wdens_ref=8.E-12 328 !! CALL getin_p('wdens_ref',wdens_ref) 329 wdens_ref(1)=8.E-12 330 wdens_ref(2)=8.E-12 331 CALL getin_p('wdens_ref_o',wdens_ref(1)) !wake number per unit area ; ocean 332 CALL getin_p('wdens_ref_l',wdens_ref(2)) !wake number per unit area ; land 333 !>jyg 323 334 coefgw=4. 324 335 CALL getin_p('coefgw',coefgw) … … 326 337 WRITE(*,*) 'stark=', stark 327 338 WRITE(*,*) 'alpk=', alpk 328 WRITE(*,*) 'wdens_ref=', wdens_ref 339 !jyg< 340 !! WRITE(*,*) 'wdens_ref=', wdens_ref 341 WRITE(*,*) 'wdens_ref_o=', wdens_ref(1) 342 WRITE(*,*) 'wdens_ref_l=', wdens_ref(2) 343 !>jyg 329 344 WRITE(*,*) 'coefgw=', coefgw 330 345 … … 339 354 ! Les densites peuvent evoluer si les poches debordent 340 355 ! (voir au tout debut de la boucle sur les substeps) 341 wdens(:) = wdens_ref 356 !jyg< 357 !! wdens(:) = wdens_ref 358 DO i = 1,klon 359 wdens(i) = wdens_ref(znatsurf(i)+1) 360 ENDDO 361 !>jyg 342 362 343 363 ! print*,'stark',stark
Note: See TracChangeset
for help on using the changeset viewer.