- Timestamp:
- Jan 23, 2026, 1:11:53 PM (2 months ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 15 edited
-
clesphys_mod_h.f90 (modified) (4 diffs)
-
conf_phys_m.f90 (modified) (7 diffs)
-
ocean_forced_mod.F90 (modified) (4 diffs)
-
pbl_surface_main_mod.F90 (modified) (4 diffs)
-
pbl_surface_subsrf_mod.F90 (modified) (7 diffs)
-
pbl_surface_uncompress_pre_mod.F90 (modified) (3 diffs)
-
phys_local_var_mod.F90 (modified) (3 diffs)
-
phys_output_ctrlout_mod.F90 (modified) (1 diff)
-
phys_output_write_mod.F90 (modified) (3 diffs)
-
physiq_mod.F90 (modified) (2 diffs)
-
simplehydrol_mod.F90 (modified) (8 diffs)
-
surf_land_bucket_hetero_mod.F90 (modified) (3 diffs)
-
surf_land_bucket_mod.F90 (modified) (2 diffs)
-
surf_landice_mod.F90 (modified) (3 diffs)
-
surf_seaice_mod.F90 (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/clesphys_mod_h.f90
r5977 r6053 43 43 , ip_ebil_phy & 44 44 , iflag_gusts, iflag_z0_oce & 45 , ok_lic_melt, ok_lic_cond, aer_type&45 , ok_lic_melt, ok_lic_cond, chasno_tun, forc_ts_melt, aer_type & 46 46 , iflag_rrtm, ok_strato, ok_hines, ok_qch4 & 47 47 , iflag_ice_thermo, ok_ice_supersat & … … 68 68 INTEGER iflag_physiq 69 69 REAL tau_thermals 70 REAL chasno_tun 70 71 71 72 !FC … … 86 87 !OM Fonte calotte dans bilan eau 87 88 LOGICAL ok_lic_melt 89 ! impose surface temperature during snow melting 90 LOGICAL forc_ts_melt 88 91 !OB Depot de vapeur d eau sur la calotte pour le bilan eau 89 92 LOGICAL ok_lic_cond … … 204 207 !$OMP , ip_ebil_phy & 205 208 !$OMP , iflag_gusts, iflag_z0_oce & 206 !$OMP , ok_lic_melt, ok_lic_cond, aer_type&209 !$OMP , ok_lic_melt, ok_lic_cond, chasno_tun, forc_ts_melt, aer_type & 207 210 !$OMP , iflag_rrtm, ok_strato, ok_hines, ok_qch4 & 208 211 !$OMP , iflag_ice_thermo, ok_ice_supersat & -
LMDZ6/trunk/libf/phylmd/conf_phys_m.f90
r6005 r6053 176 176 REAL,SAVE :: inertie_sol_omp,inertie_sno_omp,inertie_sic_omp 177 177 REAL,SAVE :: inertie_lic_omp 178 REAL,SAVE :: chasno_tun_omp 179 LOGICAL,SAVE :: forc_ts_melt_omp 178 180 REAL,SAVE :: qsol0_omp 179 181 REAL,SAVE :: evap0_omp … … 1623 1625 1624 1626 1627 !Config Key = forc_ts_melt 1628 !Config Desc = force surface temperature when snow melts 1629 !Config Def = .TRUE. 1630 !Config Help = set to .FALSE. to avoid unrealistically forcing ts=273.15 during snow melt 1631 forc_ts_melt = .TRUE. 1632 CALL getin('forc_ts_melt', forc_ts_melt) 1633 1634 1625 1635 !Config Key = ok_lic_cond 1626 1636 !Config Desc = Prise en compte depot de vapeur d'eau sur la calotte dans le bilan d'eau … … 2060 2070 z0min_omp = 0.000015 2061 2071 CALL getin('z0min',z0min_omp) 2062 2072 2073 ! PARAMETERS FOR SNOW AND ICE MELTING 2074 chasno_tun_omp=0.15 2075 CALL getin('chasno_tun',chasno_tun_omp) 2063 2076 2064 2077 ! PARAMETERS FOR CONVECTIVE INHIBITION BY TROPOS. DRYNESS … … 2640 2653 cvl_sig2feed = cvl_sig2feed_omp 2641 2654 cvl_corr = cvl_corr_omp 2655 forc_ts_melt = forc_ts_melt_omp 2642 2656 ok_lic_melt = ok_lic_melt_omp 2643 2657 ok_lic_cond = ok_lic_cond_omp … … 2658 2672 ratio_z0hz0m_landice=ratio_z0hz0m_landice_omp 2659 2673 2674 chasno_tun=chasno_tun_omp 2660 2675 f_rugoro=f_rugoro_omp 2661 2676 … … 2882 2897 WRITE(lunout,*) ' ok_lic_melt=', ok_lic_melt 2883 2898 WRITE(lunout,*) ' ok_lic_cond=', ok_lic_cond 2899 WRITE(lunout,*) ' forc_ts_melt=', forc_ts_melt 2884 2900 WRITE(lunout,*) ' iflag_cycle_diurne=',iflag_cycle_diurne 2885 2901 WRITE(lunout,*) ' soil_model=',soil_model … … 2978 2994 WRITE(lunout,*) ' iflag_sic = ', iflag_sic 2979 2995 WRITE(lunout,*) ' iflag_inertie = ', iflag_inertie 2996 WRITE(lunout,*) ' chasno_tun = ', chasno_tun 2980 2997 WRITE(lunout,*) ' inertie_sol = ', inertie_sol 2981 2998 WRITE(lunout,*) ' inertie_sic = ', inertie_sic -
LMDZ6/trunk/libf/phylmd/ocean_forced_mod.F90
r6033 r6053 299 299 AcoefH, AcoefQ, BcoefH, BcoefQ, & 300 300 AcoefU, AcoefV, BcoefU, BcoefV, & 301 !GG ps, u1, v1, gustiness, &302 301 ps, u1, v1, gustiness, pctsrf, & 303 !GG304 302 radsol, snow, qsol, agesno, tsoil, & 305 303 qsurf, alb1_new, alb2_new, evap, fluxsens, fluxlat, flux_u1, flux_v1, & 306 !GG tsurf_new, dflux_s, dflux_l, rhoa) 304 icesub, icemelt, & 307 305 tsurf_new, dflux_s, dflux_l, rhoa, swnet, hice, tice, bilg_cumul, & 308 306 fcds, fcdi, dh_basal_growth, dh_basal_melt, dh_top_melt, dh_snow2sic, & 309 307 dtice_melt, dtice_snow2sic & 310 !GG311 308 #ifdef ISO 312 309 ,xtprecip_rain, xtprecip_snow, xtspechum,Roce, & … … 413 410 REAL, DIMENSION(knon), INTENT(OUT) :: flux_u1, flux_v1 414 411 REAL, DIMENSION(knon), INTENT(OUT) :: tsurf_new 415 REAL, DIMENSION(knon), INTENT(OUT) :: dflux_s, dflux_l 412 REAL, DIMENSION(knon), INTENT(OUT) :: dflux_s, dflux_l 413 REAL, DIMENSION(knon), INTENT(OUT) :: icesub, icemelt 416 414 #ifdef ISO 417 415 REAL, DIMENSION(ntiso,knon), INTENT(OUT) :: xtevap … … 424 422 REAL :: zfra 425 423 REAL, PARAMETER :: t_grnd=271.35 426 REAL, DIMENSION(knon) :: cal, beta, dif_grnd, capsol , icesub424 REAL, DIMENSION(knon) :: cal, beta, dif_grnd, capsol 427 425 REAL, DIMENSION(knon) :: alb_neig, tsurf_tmp 428 426 REAL, DIMENSION(knon) :: soilcap, soilflux … … 678 676 CALL simplehydrol( knon, is_sic, knindex, dtime, & 679 677 tsurf_tmp, precip_rain, precip_snow, & 680 snow, qsol, tsurf_new, evap, icesub &678 snow, qsol, tsurf_new, evap, icesub, icemelt & 681 679 #ifdef ISO 682 680 & ,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag & -
LMDZ6/trunk/libf/phylmd/pbl_surface_main_mod.F90
r6014 r6053 584 584 beta, & 585 585 alb_dir_m, alb_dif_m, zxsens, zxevap, zxsnowerosion, & 586 icesub_ lic, alb3_lic, runoff, snowhgt, qsnow, to_ice, sissnow, &586 icesub_ice, icemelt_ice, alb3_lic, runoff, snowhgt, qsnow, to_ice, sissnow, & 587 587 zxtsol, zxfluxlat, zt2m, qsat2m, zn2mout, & 588 588 d_t, d_q, d_qbs, d_u, d_v, d_t_diss, & … … 791 791 REAL, DIMENSION(klon), INTENT(OUT) :: zxevap ! water vapour flux at surface, positiv upwards 792 792 REAL, DIMENSION(klon), INTENT(OUT) :: zxsnowerosion ! blowing snow flux at surface 793 REAL, DIMENSION(klon), INTENT(OUT) :: icesub_lic ! ice (no snow!) sublimation over ice sheet 793 REAL, DIMENSION(klon), INTENT(OUT) :: icesub_ice ! ice (no snow!) sublimation flux over iced surfaces [kg/m2/s] 794 REAL, DIMENSION(klon), INTENT(OUT) :: icemelt_ice ! ice (no snow!) meltin flux over iced surfaces [kg/m2/s] 794 795 REAL, DIMENSION(klon), INTENT(OUT) :: zxtsol ! temperature at surface, mean for each grid point 795 796 REAL, DIMENSION(klon,klev), INTENT(OUT) :: d_t_w ! ! … … 1012 1013 cdragh, cdragm, zu1, zv1, & 1013 1014 alb_dir_m, alb_dif_m, zxsens, zxevap, zxsnowerosion, & 1014 icesub_ lic, alb3_lic, runoff, snowhgt, qsnow, to_ice, sissnow, &1015 icesub_ice, icemelt_ice, alb3_lic, runoff, snowhgt, qsnow, to_ice, sissnow, & 1015 1016 zxtsol, zxfluxlat, zt2m, qsat2m, zn2mout, & 1016 1017 d_t, d_q, d_qbs, d_u, d_v, d_t_diss, & … … 1081 1082 cdragh, cdragm, & 1082 1083 beta, & 1083 icesub_ lic, alb3_lic, runoff, snowhgt, qsnow, to_ice, sissnow, &1084 icesub_ice, icemelt_ice, alb3_lic, runoff, snowhgt, qsnow, to_ice, sissnow, & 1084 1085 qsat2m, & 1085 1086 d_t, d_q, d_qbs, d_u, d_v, d_t_diss, & -
LMDZ6/trunk/libf/phylmd/pbl_surface_subsrf_mod.F90
r6028 r6053 54 54 cdragh, cdragm, & 55 55 beta, & 56 icesub_ lic, alb3_lic, runoff, snowhgt, qsnow, to_ice, sissnow, &56 icesub_ice, icemelt_ice, alb3_lic, runoff, snowhgt, qsnow, to_ice, sissnow, & 57 57 qsat2m, & 58 58 d_t, d_q, d_qbs, d_u, d_v, d_t_diss, & … … 277 277 REAL, DIMENSION(klon), INTENT(INOUT) :: cdragm ! drag coefficient for wind 278 278 REAL, DIMENSION(klon), INTENT(INOUT) :: alb3_lic 279 REAL, DIMENSION(klon), INTENT(INOUT) :: icesub_lic ! ice (no snow!) sublimation over ice sheet 279 REAL, DIMENSION(klon), INTENT(INOUT) :: icesub_ice ! ice (no snow!) sublimation flux over ice sheet and sea ice 280 REAL, DIMENSION(klon), INTENT(INOUT) :: icemelt_ice ! ice (no snow!) melting flux over ice sheet and sea ice 280 281 REAL, DIMENSION(klon,klev), INTENT(INOUT) :: d_t_w ! ! 281 282 REAL, DIMENSION(klon,klev), INTENT(INOUT) :: d_q_w ! ! Tendances dans les poches … … 529 530 REAL, DIMENSION(knon) :: AcoefQBS, BcoefQBS 530 531 REAL, DIMENSION(knon) :: ypsref 531 REAL, DIMENSION(knon) :: yevap, yevap_pot, ytsurf_new, yalb3_new, yicesub _lic532 REAL, DIMENSION(knon) :: yevap, yevap_pot, ytsurf_new, yalb3_new, yicesub, yicemelt 532 533 REAL, DIMENSION(knon,nsw) :: yalb_dir_new, yalb_dif_new 533 534 REAL, DIMENSION(knon,klev) :: y_d_t, y_d_q, y_d_t_diss, y_d_qbs … … 1637 1638 ypsref, yu1, yv1, ygustiness, yrugoro, pctsrf, & 1638 1639 ysnow, yqsurf, yqsol,yqbs1, yagesno, & 1639 ytsoil, yz0m, yz0h, SFRWL, yalb_dir_new, yalb_dif_new, yevap, yicesub _lic, yfluxsens,yfluxlat, &1640 ytsoil, yz0m, yz0h, SFRWL, yalb_dir_new, yalb_dif_new, yevap, yicesub, yicemelt, yfluxsens,yfluxlat, & 1640 1641 yfluxbs, ytsurf_new, y_dflux_t, y_dflux_q, & 1641 1642 yzmea, yzsig, ycldt, & … … 1657 1658 sissnow(i) = ysissnow(j) 1658 1659 runoff(i) = yrunoff(j) 1659 icesub_lic(i) = yicesub_lic(j)*ypct(j) 1660 icesub_ice(i) = icesub_ice(i) + yicesub(j)*ypct(j) 1661 icemelt_ice(i) = icemelt_ice(i) + yicemelt(j)*ypct(j) 1660 1662 ENDDO 1661 1663 ! Martin … … 1783 1785 ypsref, yu1, yv1, ygustiness, pctsrf, & 1784 1786 ysnow, yqsurf, yqsol, yagesno, ytsoil, & 1785 yz0m, yz0h, SFRWL, yalb_dir_new, yalb_dif_new, yevap, y fluxsens,yfluxlat,&1787 yz0m, yz0h, SFRWL, yalb_dir_new, yalb_dif_new, yevap, yicesub, yicemelt, yfluxsens,yfluxlat,& 1786 1788 ytsurf_new, y_dflux_t, y_dflux_q, & 1787 1789 y_flux_u1, y_flux_v1, & … … 1794 1796 #endif 1795 1797 & ) 1796 1798 1799 DO j = 1, knon 1800 i = ni(j) 1801 icesub_ice(i) = icesub_ice(i) + yicesub(j)*ypct(j) 1802 icemelt_ice(i) = icemelt_ice(i) + yicemelt(j)*ypct(j) 1803 ENDDO 1797 1804 ! Special DICE MPL 05082013 puis BOMEX MPL 20150410 1798 1805 IF (ok_prescr_ust) THEN -
LMDZ6/trunk/libf/phylmd/pbl_surface_uncompress_pre_mod.F90
r6014 r6053 48 48 cdragh, cdragm, zu1, zv1, & 49 49 alb_dir_m, alb_dif_m, zxsens, zxevap, zxsnowerosion, & 50 icesub_ lic, alb3_lic, runoff, snowhgt, qsnow, to_ice, sissnow, &50 icesub_ice, icemelt_ice, alb3_lic, runoff, snowhgt, qsnow, to_ice, sissnow, & 51 51 zxtsol, zxfluxlat, zt2m, qsat2m, zn2mout, & 52 52 d_t, d_q, d_qbs, d_u, d_v, d_t_diss, & … … 238 238 REAL, DIMENSION(klon), INTENT(OUT) :: zxevap ! water vapour flux at surface, positiv upwards 239 239 REAL, DIMENSION(klon), INTENT(OUT) :: zxsnowerosion ! blowing snow flux at surface 240 REAL, DIMENSION(klon), INTENT(OUT) :: icesub_lic ! ice (no snow!) sublimation over ice sheet 240 REAL, DIMENSION(klon), INTENT(OUT) :: icesub_ice ! ice (no snow!) sublimation flux over iced surfaces [kg/m2/s] 241 REAL, DIMENSION(klon), INTENT(OUT) :: icemelt_ice ! ice (no snow!) melting flux over iced surfaces [kg/m2/s] 241 242 REAL, DIMENSION(klon), INTENT(OUT) :: zxtsol ! temperature at surface, mean for each grid point 242 243 REAL, DIMENSION(klon,klev), INTENT(OUT) :: d_t_w ! ! … … 559 560 zxfluxt(:,:)=0. ; zxfluxq(:,:)=0.; zxfluxqbs(:,:)=0. 560 561 qsnow(:)=0. ; snowhgt(:)=0. ; to_ice(:)=0. ; sissnow(:)=0. 561 runoff(:)=0. ; icesub_ lic(:)=0.562 runoff(:)=0. ; icesub_ice(:)=0. ; icemelt_ice(:)=0. 562 563 l_mixmin(:,:,:)=0. 563 564 l_mix(:,:,:) = 0. -
LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90
r5927 r6053 414 414 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: dthmin, evap, snowerosion, fder, plcl, plfc, prw, prlw, prsw, prbsw, water_budget 415 415 !$OMP THREADPRIVATE(dthmin, evap, snowerosion, fder, plcl, plfc, prw, prlw, prsw, prbsw, water_budget) 416 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: icesub_ lic417 !$OMP THREADPRIVATE(icesub_ lic)416 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: icesub_ice, icemelt_ice 417 !$OMP THREADPRIVATE(icesub_ice, icemelt_ice) 418 418 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zustar, zu10m, zv10m, rh2m 419 419 !$OMP THREADPRIVATE(zustar, zu10m, zv10m, rh2m) … … 1095 1095 ALLOCATE(cldm(klon), cldq(klon), cldt(klon), qsat2m(klon)) 1096 1096 ALLOCATE(JrNt(klon)) 1097 ALLOCATE(dthmin(klon), evap(klon), snowerosion(klon), fder(klon), plcl(klon), plfc(klon), icesub_ lic(klon))1097 ALLOCATE(dthmin(klon), evap(klon), snowerosion(klon), fder(klon), plcl(klon), plfc(klon), icesub_ice(klon), icemelt_ice(klon)) 1098 1098 ALLOCATE(prw(klon), prlw(klon), prsw(klon), prbsw(klon), water_budget(klon), zustar(klon), zu10m(klon), zv10m(klon), rh2m(klon)) 1099 1099 ALLOCATE(s_lcl(klon)) … … 1564 1564 DEALLOCATE(cldm, cldq, cldt, qsat2m) 1565 1565 DEALLOCATE(JrNt) 1566 DEALLOCATE(dthmin, evap, snowerosion, icesub_ lic, fder, plcl, plfc)1566 DEALLOCATE(dthmin, evap, snowerosion, icesub_ice, icemelt_ice, fder, plcl, plfc) 1567 1567 DEALLOCATE(prw, prlw, prsw, prbsw, water_budget, zustar, zu10m, zv10m, rh2m, s_lcl) 1568 1568 DEALLOCATE(s_pblh, s_pblt, s_therm) -
LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90
r5927 r6053 384 384 TYPE(ctrl_out), SAVE :: o_snowerosion = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11, 11/), & 385 385 'snowerosion', 'blowing snow flux', 'kg/(s*m2)', (/ ('', i=1, 10) /)) 386 TYPE(ctrl_out), SAVE :: o_icesub_lic = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11, 11/), & 387 'icesub_lic', 'sublimation of ice over landice tiles, mesh-averaged', 'kg/(s*m2)', (/ ('', i=1, 10) /)) 386 TYPE(ctrl_out), SAVE :: o_icesub_ice = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11, 11/), & 387 'icesub_ice', 'sublimation flux of ice over iced surfaces, mesh-averaged', 'kg/(s*m2)', (/ ('', i=1, 10) /)) 388 TYPE(ctrl_out), SAVE :: o_icemelt_ice = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11, 11/), & 389 'icemelt_ice', 'melting flux of ice over iced surfaces, mesh-averaged', 'kg/(s*m2)', (/ ('', i=1, 10) /)) 388 390 TYPE(ctrl_out), SAVE :: o_ustart_lic = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 389 391 'ustart_lic', 'threshold velocity', 'm/s', (/ ('', i=1, 10) /)) -
LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90
r6048 r6053 51 51 o_precip, o_rain_fall, o_rain_con, o_ndayrain, o_plul, o_pluc, o_plun, & 52 52 o_snow, o_msnow, o_fsnow, o_evap, o_snowerosion, o_ustart_lic, o_qsalt_lic, o_rhosnow_lic, o_bsfall, & 53 o_icesub_ lic, &53 o_icesub_ice, o_icemelt_ice, & 54 54 o_ep,o_epmax_diag, & ! epmax_cape 55 55 o_tops, o_tops0, o_topl, o_topl0, & … … 360 360 USE phys_local_var_mod, ONLY: zxfluxlat, slp, ptstar, pt0, zxtsol, zt2m, & 361 361 zn2mout, t2m_min_mon, t2m_max_mon, evap, & 362 snowerosion, icesub_ lic, zxustartlic, zxrhoslic, zxqsaltlic, &362 snowerosion, icesub_ice, icemelt_ice, zxustartlic, zxrhoslic, zxqsaltlic, & 363 363 l_mixmin,l_mix, pbl_eps, tke_shear, tke_buoy, tke_trans, & 364 364 zu10m, zv10m, zq2m, zustar, zxqsurf, & … … 980 980 CALL histwrite_phy(o_fsnow, zfra_o) 981 981 CALL histwrite_phy(o_evap, evap) 982 CALL histwrite_phy(o_icesub_lic, icesub_lic) 982 CALL histwrite_phy(o_icesub_ice, icesub_ice) 983 CALL histwrite_phy(o_icemelt_ice, icemelt_ice) 983 984 984 985 IF (ok_bs) THEN -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r6048 r6053 275 275 cldh, cldl,cldm, cldq, cldt, & 276 276 JrNt, & 277 dthmin, evap, snowerosion, icesub_ lic, fder, plcl, plfc, &277 dthmin, evap, snowerosion, icesub_ice, icemelt_ice, fder, plcl, plfc, & 278 278 prw, prlw, prsw, prbsw, water_budget, & 279 279 s_lcl, s_pblh, s_pblt, s_therm, & … … 2950 2950 cdragh, cdragm, u1, v1, & 2951 2951 beta_aridity, & 2952 albsol_dir, albsol_dif, sens, evap, snowerosion, icesub_ lic, &2952 albsol_dir, albsol_dif, sens, evap, snowerosion, icesub_ice, icemelt_ice, & 2953 2953 albsol3_lic,runoff, snowhgt, qsnow, to_ice, sissnow, & 2954 2954 zxtsol, zxfluxlat, zt2m, qsat2m, zn2mout, & -
LMDZ6/trunk/libf/phylmd/simplehydrol_mod.F90
r6034 r6053 224 224 SUBROUTINE simplehydrol(knon, nisurf, knindex, dtime, & 225 225 tsurf, precip_rain, precip_snow, & 226 snow, qsol, tsurf_new, evap, ice_sub &226 snow, qsol, tsurf_new, evap, ice_sub, ice_melt & 227 227 #ifdef ISO 228 228 , fq_fonte_diag, fqfonte_diag, snow_sub_diag, fqcalving_diag & … … 280 280 !----------------- 281 281 282 REAL, DIMENSION(knon), INTENT(OUT) :: ice_sub ! sublimation flux from ice over landice surfaces [kg/m2/s] 282 REAL, DIMENSION(knon), INTENT(OUT) :: ice_sub ! sublimation flux from ice over iced surfaces [kg/m2/s] 283 REAL, DIMENSION(knon), INTENT(OUT) :: ice_melt ! melting flux from ice over iced surfaces [kg/m2/s] 284 283 285 #ifdef ISO 284 286 ! diagnostics for isotopes … … 298 300 INTEGER :: i, j 299 301 REAL :: fq_fonte ! quantify of snow that is melted [kg/m2] 300 REAL :: coeff_rel 302 REAL :: coeff_rel, chasno 301 303 REAL, PARAMETER :: snow_max = 3000. ! maximum snow amount over ice sheets [kg/m2] 302 304 REAL, PARAMETER :: max_eau_sol = 150.0 ! maximum water amount in the soil [kg/m2] 303 REAL, PARAMETER :: chasno = 3.334E+05/(2.3867E+06*0.15) ! Latent heat of ice melting / (cp water) / tuning param=0.15304 305 REAL, DIMENSION(knon) :: ffonte ! flux of energy associated with snow melting [W/m2] 305 306 REAL, DIMENSION(knon) :: fqcalving ! flux of water associated with calving [kg/m2] … … 319 320 coeff_rel = dtime/(tau_calv*rday) 320 321 bil_eau_s(:) = 0. 322 chasno = 3.334E+05/(2.3867E+06*chasno_tun) 321 323 322 324 ! Snow increment snow due to precipitation and sublimation … … 346 348 END IF 347 349 348 !---diagnostics of sublimation/condensation of ice over landice surfaces (when all the snow above has been sublimated)349 !---in principle it should be 0 when ok_lic_cond that is when surface water condensation over landice was not allowed350 IF (nisurf == is_lic) THEN350 !---diagnostics of sublimation/condensation of ice over ice surfaces (when all the snow above has been sublimated) 351 !---in principle it should be 0 when ok_lic_cond that is when surface water condensation over ice was not allowed 352 IF (nisurf .EQ. is_lic .OR. nisurf .EQ. is_sic) THEN 351 353 DO i = 1, knon 352 354 ice_sub(i) = evap(i) - snow_sub(i) … … 365 367 366 368 ! Snow melting and calving (we remove the excess of snow wrt snowmax over ice sheets) 367 ! + update surface temperature369 ! + update of surface temperature 368 370 !**************************************************************************************** 369 371 … … 371 373 fqcalving(:) = 0.0 372 374 fqfonte(:) = 0.0 375 ice_melt(:) = 0.0 373 376 374 377 ! snow melting … … 398 401 399 402 ! snow/ice melting over ice surfaces 400 IF (nisurf == is_sic .OR. nisurf == is_lic) THEN 401 ! pay attention, melting over sea ice and landice 402 ! is not bounded by the amount of available snow (no MIN) 403 ! so when snow has been completely melted, the ice below melts 403 IF ((nisurf == is_sic .OR. nisurf == is_lic) .AND. ok_lic_melt .AND. snow(i) .GT. 0.) THEN 404 ! when snow has been completely melted, the ice below can melt 404 405 ! which is an infinite source of water for the model 405 ! BUT:406 ! when snow has been fully melted, the flux due to ice melting should be explicitly computed407 ! why are we adding the flux to that previously computed (double counting).408 ! why ffonte and tsurf_new updates are not in ok_lic_melt?409 ! why over lic and sic we impose tsurf=RTT and not over lands when snow remains?410 ! now by default, ok_lic_melt = false which means ffonte and fqfonte are not consistent411 ! moreover, imposing tsurf_new=RTT means that the update in tsurf is not consistent412 ! with the quantity of melting snow.413 !414 ! Suggestion:415 ! - compute separately fq_fonte over lic/sic only if ok_lic_melt (lower-bound by 0 and not snow)416 ! - add an output variable ice_melt = max(0,fq_fonte - snow)/dtime to quantify the melt of ice (net water source)417 ! and update snow with the melt of snow only i.e. fq_fonte - ice_melt418 ! - remove the tsurf_new = RTT over lic and sic but implies a loss of convergence419 420 406 fq_fonte = MAX((tsurf_new(i) - RTT)/chasno, 0.0) 421 407 ffonte(i) = ffonte(i) + fq_fonte*RLMLT/dtime 422 423 IF (ok_lic_melt) THEN 424 fqfonte(i) = fqfonte(i) + fq_fonte/dtime 425 bil_eau_s(i) = bil_eau_s(i) + fq_fonte 426 END IF 408 fqfonte(i) = fqfonte(i) + fq_fonte/dtime 409 bil_eau_s(i) = bil_eau_s(i) + fq_fonte 410 tsurf_new(i) = tsurf_new(i) - fq_fonte*chasno 411 ice_melt(i) = fq_fonte/dtime 412 END IF 413 414 ! surface temperature tendency associated with snow and icemelting 415 IF (forc_ts_melt) THEN 427 416 tsurf_new(i) = RTT 428 END IF 417 ENDIF 418 429 419 d_ts(i) = tsurf_new(i) - tsurf(i) 430 END IF 420 421 END IF 431 422 432 423 ! so called 'calving', if there is an excess of snow wrt snowmax -
LMDZ6/trunk/libf/phylmd/surf_land_bucket_hetero_mod.F90
r6033 r6053 108 108 REAL, DIMENSION(knon) :: soilcap, soilflux 109 109 REAL, DIMENSION(knon) :: cal, beta, dif_grnd, capsol 110 REAL, DIMENSION(knon) :: alb_neig, alb_lim, icesub 110 REAL, DIMENSION(knon) :: alb_neig, alb_lim, icesub, icemelt 111 111 REAL, DIMENSION(knon) :: zfra 112 112 REAL, DIMENSION(knon) :: radsol … … 239 239 CALL simplehydrol( knon, is_ter, knindex, dtime, & 240 240 tsurf, precip_rain, precip_snow, & 241 snow, qsol, tsurf_new, evap, icesub &241 snow, qsol, tsurf_new, evap, icesub, icemelt & 242 242 #ifdef ISO 243 243 & ,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag & … … 363 363 CALL simplehydrol( knon, is_ter, knindex, dtime, & 364 364 tsurf_tersrf(:,j), precip_rain, precip_snow, & 365 snow, qsol, tsurf_new_tersrf(:,j), evap_tersrf(:,j), icesub &365 snow, qsol, tsurf_new_tersrf(:,j), evap_tersrf(:,j), icesub, icemelt & 366 366 #ifdef ISO 367 367 & ,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag & -
LMDZ6/trunk/libf/phylmd/surf_land_bucket_mod.F90
r6033 r6053 108 108 REAL, DIMENSION(knon) :: soilcap, soilflux 109 109 REAL, DIMENSION(knon) :: cal, beta, dif_grnd, capsol 110 REAL, DIMENSION(knon) :: alb_neig, alb_lim, icesub 110 REAL, DIMENSION(knon) :: alb_neig, alb_lim, icesub, icemelt 111 111 REAL, DIMENSION(knon) :: zfra 112 112 REAL, DIMENSION(knon) :: radsol ! total net radiance at surface … … 250 250 CALL simplehydrol( knon, is_ter, knindex, dtime, & 251 251 tsurf, precip_rain, precip_snow, & 252 snow, qsol, tsurf_new, evap, icesub &252 snow, qsol, tsurf_new, evap, icesub, icemelt & 253 253 #ifdef ISO 254 254 & ,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag & -
LMDZ6/trunk/libf/phylmd/surf_landice_mod.F90
r6034 r6053 57 57 ps, u1, v1, gustiness, rugoro, pctsrf, & 58 58 snow, qsurf, qsol, qbs1, agesno, & 59 tsoil, z0m, z0h, SFRWL, alb_dir, alb_dif, evap, icesub _lic, fluxsens, fluxlat, fluxbs, &59 tsoil, z0m, z0h, SFRWL, alb_dir, alb_dif, evap, icesub, icemelt, fluxsens, fluxlat, fluxbs, & 60 60 tsurf_new, dflux_s, dflux_l, & 61 61 alt, slope, cloudf, & … … 161 161 REAL, DIMENSION(knon,nsw), INTENT(OUT) :: alb_dir,alb_dif 162 162 !albedo SB <<< 163 REAL, DIMENSION(knon), INTENT(OUT) :: evap, fluxsens, fluxlat, icesub _lic163 REAL, DIMENSION(knon), INTENT(OUT) :: evap, fluxsens, fluxlat, icesub, icemelt 164 164 REAL, DIMENSION(knon), INTENT(OUT) :: fluxbs 165 165 REAL, DIMENSION(knon), INTENT(OUT) :: tsurf_new … … 644 644 CALL simplehydrol(knon, is_lic, knindex, dtime, & 645 645 tsurf, precip_rain, precip_totsnow, & 646 snow, qsol, tsurf_new, evap_totsnow, icesub _lic&646 snow, qsol, tsurf_new, evap_totsnow, icesub, icemelt & 647 647 #ifdef ISO 648 648 & ,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag & -
LMDZ6/trunk/libf/phylmd/surf_seaice_mod.F90
r5989 r6053 19 19 ps, u1, v1, gustiness, pctsrf, & 20 20 snow, qsurf, qsol, agesno, tsoil, & 21 z0m, z0h, SFRWL, alb_dir_new, alb_dif_new, evap, fluxsens, fluxlat, &21 z0m, z0h, SFRWL, alb_dir_new, alb_dif_new, evap, icesub, icemelt, fluxsens, fluxlat, & 22 22 tsurf_new, dflux_s, dflux_l, & 23 23 !GG flux_u1, flux_v1) … … 105 105 !albedo SB <<< 106 106 REAL, DIMENSION(knon), INTENT(OUT) :: evap, fluxsens, fluxlat 107 REAL, DIMENSION(knon), INTENT(OUT) :: icesub, icemelt ! sublimation and melting fluxes of ice over iced surfaces [kg/m2/s] 107 108 REAL, DIMENSION(knon), INTENT(OUT) :: tsurf_new 108 109 REAL, DIMENSION(knon), INTENT(OUT) :: dflux_s, dflux_l … … 184 185 AcoefH, AcoefQ, BcoefH, BcoefQ, & 185 186 AcoefU, AcoefV, BcoefU, BcoefV, & 186 !GG ps, u1, v1, gustiness, &187 187 ps, u1, v1, gustiness,pctsrf, & 188 !GG189 188 radsol, snow, qsol, agesno, tsoil, & 190 189 qsurf, alb1_new, alb2_new, evap, fluxsens, fluxlat, flux_u1, flux_v1, & 191 !GG tsurf_new, dflux_s, dflux_l, rhoa) 190 icesub, icemelt, & 192 191 tsurf_new, dflux_s, dflux_l,rhoa,swnet,hice, tice, bilg_cumul, & 193 192 fcds, fcdi, dh_basal_growth, dh_basal_melt, dh_top_melt, dh_snow2sic, &
Note: See TracChangeset
for help on using the changeset viewer.
