- Timestamp:
- May 14, 2021, 7:12:13 PM (4 years ago)
- Location:
- LMDZ5/branches/Cold_pool_death
- Files:
-
- 5 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/Cold_pool_death/bld.cfg
r2787 r3899 37 37 src::cosp %COSP 38 38 src::ext_src %EXT_SRC 39 src::cold_pool_death %SRC_PATH/%PHYS/Cold_pool_death 39 40 40 41 bld::lib lmdz … … 98 99 bld::excl_dep use::ifile_attr 99 100 bld::excl_dep use::ixml_tree 101 bld::excl_dep use::numer_rec_95 100 102 101 103 # Don't generate interface files -
LMDZ5/branches/Cold_pool_death/libf/phylmd/calwake.F90
r2870 r3899 14 14 wake_omg, wake_dp_deltomg, & 15 15 wake_spread, wake_cstar, wake_d_deltat_gw, & 16 wake_ddeltat, wake_ddeltaq, wake_ds, wake_ddens )16 wake_ddeltat, wake_ddeltaq, wake_ds, wake_ddens, itap) 17 17 ! ************************************************************** 18 18 ! * … … 68 68 REAL, DIMENSION(klon, klev), INTENT (OUT) :: wake_ddeltat, wake_ddeltaq 69 69 REAL, DIMENSION(klon), INTENT (OUT) :: wake_ds, wake_ddens 70 integer, intent(in):: itap ! index of call to physiq 70 71 71 72 … … 211 212 dtke, dqke, omg, dp_deltomg, spread, cstar, & 212 213 d_deltat_gw, & 213 d_deltatw, d_deltaqw, d_sigmaw, d_wdens ) ! tendencies214 d_deltatw, d_deltaqw, d_sigmaw, d_wdens, itap) ! tendencies 214 215 215 216 ! -
LMDZ5/branches/Cold_pool_death/libf/phylmd/phys_output_ctrlout_mod.F90
r2886 r3899 1476 1476 TYPE(ctrl_out), SAVE :: o_wake_omg = ctrl_out((/ 4, 5, 10, 10, 10, 10, 11, 11, 11, 11/), & 1477 1477 'wake_omg', 'wake_omg', ' ', (/ ('', i=1, 10) /)) 1478 TYPE(ctrl_out), SAVE :: o_wake_lifetime = ctrl_out((/ 4, 5, 10, 10, 10, 10, & 1479 11, 11, 11, 11/), 'wake_lifetime', 'lifetime of wake', 's', & 1480 (/ ('', i=1, 10) /)) 1481 TYPE(ctrl_out), SAVE :: o_wake_final_radius = ctrl_out((/ 4, 5, 10, 10, 10, & 1482 10, 11, 11, 11, 11/), 'wake_final_radius', 'final radius of wake', 'm', & 1483 (/ ('', i=1, 10) /)) 1484 TYPE(ctrl_out), SAVE :: o_wake_final_height = ctrl_out((/ 4, 5, 10, 10, 10, & 1485 10, 11, 11, 11, 11/), 'wake_final_height', 'final height of wake', 'm', & 1486 (/ ('', i=1, 10) /)) 1478 1487 TYPE(ctrl_out), SAVE :: o_wdtrainA = ctrl_out((/ 4, 5, 10, 4, 10, 10, 11, 11, 11, 11 /), & 1479 1488 'wdtrainA', 'precipitation from AA', '-', (/ ('', i=1, 10) /)) -
LMDZ5/branches/Cold_pool_death/libf/phylmd/phys_output_var_mod.F90
r2870 r3899 114 114 !$OMP THREADPRIVATE(sens_prec_liq_o, sens_prec_sol_o,lat_prec_liq_o,lat_prec_sol_o) 115 115 116 REAL, allocatable:: wake_lifetime(:) ! (klon) in s 117 !$OMP THREADPRIVATE(wake_lifetime) 118 119 REAL, allocatable:: wake_final_radius(:), wake_final_height(:) ! (klon) in m 120 !$OMP THREADPRIVATE(wake_final_radius, wake_final_height) 121 116 122 CONTAINS 117 123 … … 123 129 124 130 include "clesphys.h" 131 132 include "thermcell.h" 133 ! (for iflag_wake) 125 134 126 135 !------------------------------------------------ … … 163 172 IF (ok_gwd_rando) allocate(zustr_gwd_rando(klon), zvstr_gwd_rando(klon)) 164 173 174 if (iflag_wake>=1) allocate(wake_lifetime(klon), wake_final_radius(klon), & 175 wake_final_height(klon)) 176 165 177 END SUBROUTINE phys_output_var_init 166 178 -
LMDZ5/branches/Cold_pool_death/libf/phylmd/phys_output_write_mod.F90
r2870 r3899 182 182 o_map_emis_Anv, o_map_pcld_Anv, o_map_tcld_Anv, & 183 183 o_map_ntot, o_map_hc,o_map_hist,o_map_Cb,o_map_ThCi,o_map_Anv, & 184 o_alt_tropo 184 o_alt_tropo, o_wake_lifetime, o_wake_final_radius, o_wake_final_height 185 185 186 186 #ifdef CPP_StratAer … … 317 317 map_emis_ThCi,map_pcld_ThCi,map_tcld_ThCi,& 318 318 map_emis_Anv,map_pcld_Anv,map_tcld_Anv, & 319 alt_tropo 319 alt_tropo, wake_lifetime, wake_final_radius, wake_final_height 320 320 321 321 USE ocean_slab_mod, ONLY: nslay, tslab, slab_bils, slab_bilg, tice, & … … 1057 1057 CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d) 1058 1058 CALL histwrite_phy(o_dqwak2d, zx_tmp_fi2d) 1059 CALL histwrite_phy(o_wake_lifetime, wake_lifetime) 1060 CALL histwrite_phy(o_wake_final_radius, wake_final_radius) 1061 CALL histwrite_phy(o_wake_final_height, wake_final_height) 1059 1062 ENDIF ! iflag_wake>=1 1060 1063 CALL histwrite_phy(o_ftd, ftd) -
LMDZ5/branches/Cold_pool_death/libf/phylmd/physiq_mod.F90
r2886 r3899 2772 2772 wake_omg, wake_dp_deltomg, & 2773 2773 wake_spread, wake_Cstar, d_deltat_wk_gw, & 2774 d_deltat_wk, d_deltaq_wk, d_s_wk, d_dens_wk )2774 d_deltat_wk, d_deltaq_wk, d_s_wk, d_dens_wk, itap) 2775 2775 ! 2776 2776 !jyg Reinitialize itapwk when wakes have been called -
LMDZ5/branches/Cold_pool_death/libf/phylmd/wake.F90
r2787 r3899 11 11 dtke, dqke, omg, dp_deltomg, spread, cstar, & 12 12 d_deltat_gw, & 13 d_deltatw2, d_deltaqw2, d_sigmaw2, d_wdens2 ) ! tendencies13 d_deltatw2, d_deltaqw2, d_sigmaw2, d_wdens2, itap) ! tendencies 14 14 15 15 … … 26 26 USE dimphy 27 27 use mod_phys_lmdz_para 28 use cold_pool_death_m, only: cold_pool_death 28 29 USE print_control_mod, ONLY: prt_level 30 use write_field_phy, only: WriteField_phy 31 use phys_local_var_mod, only: zxtsol, q_seri, sens_w 32 use phys_output_var_mod, only: wake_lifetime, wake_final_radius, & 33 wake_final_height 34 29 35 IMPLICIT NONE 30 36 ! ============================================================================ … … 158 164 REAL, DIMENSION (klon, klev), INTENT(OUT) :: d_deltatw2, d_deltaqw2 159 165 REAL, DIMENSION (klon), INTENT(OUT) :: d_sigmaw2, d_wdens2 166 integer, intent(in):: itap ! index of call to physiq 160 167 161 168 ! Variables internes … … 272 279 273 280 REAL, DIMENSION(klon) :: sigmaw_in ! pour les prints 281 282 real:: z_cp0 = 1000. ! initial height of cold pool, in m 283 !$omp THREADPRIVATE(z_cp0) 284 285 real:: r0 = 2000. ! initial radius of cold pool, in m 286 !$omp THREADPRIVATE(r0) 287 288 real:: h0 = 1000. ! initial height of environmental boundary layer, in m 289 !$omp THREADPRIVATE(h0) 290 291 real:: eps_cp = 0.06 ! entrainment coefficient at the border of the cold pool 292 !$omp THREADPRIVATE(eps_cp) 293 294 real:: beta = 0.2 ! entrainment at the top of the mixed layer 295 !$omp THREADPRIVATE(beta) 296 297 logical:: av_thvu_constant = .true. 298 !$omp THREADPRIVATE(av_thvu_constant) 299 300 real:: k_star = 0.68 301 !$omp THREADPRIVATE(k_star) 302 303 real rate_uns(klon) ! mass rate in one unsaturated downdraft, in kg s-1 304 real theta_vs(klon) ! virtual potential temperature at the surface, in K 305 306 real theta_v_uns(klon) 307 ! virtual potential temperature of the unsaturated downdraft, in K 308 309 integer return_code(klon) 274 310 275 311 ! ------------------------------------------------------------------------- … … 348 384 WRITE(*,*) 'flag_wk_check_trgl=', flag_wk_check_trgl 349 385 386 CALL getin_p('z_cp0', z_cp0) 387 CALL getin_p('r0', r0) 388 CALL getin_p('h0', h0) 389 CALL getin_p('eps_cp', eps_cp) 390 CALL getin_p('beta', beta) 391 CALL getin_p('av_thvu_constant', av_thvu_constant) 392 CALL getin_p('k_star', k_star) 350 393 first=.false. 351 394 endif … … 1970 2013 !>jyg 1971 2014 1972 2015 do i = 1, klon 2016 if (ktopw(i) /= 0) then 2017 rate_uns(i) = - amdwn(i, ktopw(i)) / wdens(i) 2018 else 2019 rate_uns(i) = -1. 2020 end if 2021 end do 2022 2023 theta_vs = zxtsol * (1e5 / ph(:, 1))**rkappa * (1 + epsim1 * q_seri(:, 1)) 2024 2025 forall (i = 1:klon, ktopw(i) /= 0 .and. theta_vs(i) >= av_thvu(i)) & 2026 theta_v_uns(i) = the(i, ktopw(i)) * (1. + epsim1 * qe(i, ktopw(i))) 2027 2028 call WriteField_phy("thu", thu, klev) 2029 call WriteField_phy("qu", qu, klev) 2030 call WriteField_phy("av_thvu", av_thvu, 1) 2031 call WriteField_phy("ktopw", real(ktopw), 1) 2032 call WriteField_phy("wdens", wdens, 1) 2033 call WriteField_phy("av_rho", av_rho, 1) 2034 call WriteField_phy("rate_uns", rate_uns, 1) 2035 call WriteField_phy("theta_vs", theta_vs, 1) 2036 call WriteField_phy("the", the, klev) 2037 call WriteField_phy("qe", qe, klev) 2038 2039 do i = 1, klon 2040 call cold_pool_death(z_cp0, r0, h0, eps_cp, beta, av_thvu_constant, & 2041 k_star, av_thvu(i), rate_uns(i), theta_vs(i), theta_v_uns(i), & 2042 sens_w(i) / (av_rho(i) * rcpd * (theta_vs(i) - theta_v_uns(i))), & 2043 av_rho(i), return_code(i), wake_lifetime(i), wake_final_radius(i), & 2044 wake_final_height(i)) 2045 end do 2046 if (any(return_code /= 0)) print *, & 2047 "cold_pool_death: return_code /= 0 somewhere, itap = ", itap 1973 2048 1974 2049 RETURN
Note: See TracChangeset
for help on using the changeset viewer.