- Timestamp:
- Oct 30, 2023, 5:37:00 PM (7 months ago)
- Location:
- LMDZ6/branches/Portage_acc
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Portage_acc
- Property svn:mergeinfo changed
-
LMDZ6/branches/Portage_acc/libf/phylmd/pbl_surface_mod.F90
r4584 r4743 24 24 USE climb_wind_mod, ONLY : climb_wind_down, climb_wind_up 25 25 USE coef_diff_turb_mod, ONLY : coef_diff_turb 26 USE call_atke_mod, ONLY :call_atke26 USE lmdz_call_atke, ONLY : call_atke 27 27 USE ioipsl_getin_p_mod, ONLY : getin_p 28 28 USE cdrag_mod … … 184 184 debut, lafin, & 185 185 rlon, rlat, rugoro, rmu0, & 186 lwdown_m, cldt, &186 lwdown_m, cldt, & 187 187 rain_f, snow_f, bs_f, solsw_m, solswfdiff_m, sollw_m, & 188 188 gustiness, & 189 t, q, qbs, u, v, 189 t, q, qbs, u, v, & 190 190 !!! nrlmd+jyg le 02/05/2011 et le 20/02/2012 191 191 !! t_x, q_x, t_w, q_w, & … … 199 199 beta, & 200 200 !>jyg 201 alb_dir_m, alb_dif_m, zxsens, zxevap, zxsnowerosion, &201 alb_dir_m, alb_dif_m, zxsens, zxevap, zxsnowerosion, & 202 202 alb3_lic, runoff, snowhgt, qsnow, to_ice, sissnow, & 203 zxtsol, zxfluxlat, zt2m, qsat2m, zn2mout, &204 d_t, d_q, d_qbs, d_u, d_v, d_t_diss, &203 zxtsol, zxfluxlat, zt2m, qsat2m, zn2mout, & 204 d_t, d_q, d_qbs, d_u, d_v, d_t_diss, & 205 205 !!! nrlmd+jyg le 02/05/2011 et le 20/02/2012 206 d_t_w, d_q_w, 207 d_t_x, d_q_x, 206 d_t_w, d_q_w, & 207 d_t_x, d_q_x, & 208 208 !! d_wake_dlt,d_wake_dlq, & 209 zxsens_x, zxfluxlat_x,zxsens_w,zxfluxlat_w, 209 zxsens_x, zxfluxlat_x,zxsens_w,zxfluxlat_w, & 210 210 !!! 211 211 !!! nrlmd le 13/06/2011 212 delta_tsurf,wake_dens,cdragh_x,cdragh_w, 213 cdragm_x,cdragm_w,kh,kh_x,kh_w, 214 !!! 215 zcoefh, zcoefm, slab_wfbils, 216 qsol, zq2m, s_pblh, s_plcl, &212 delta_tsurf,wake_dens,cdragh_x,cdragh_w, & 213 cdragm_x,cdragm_w,kh,kh_x,kh_w, & 214 !!! 215 zcoefh, zcoefm, slab_wfbils, & 216 qsol, zq2m, s_pblh, s_plcl, & 217 217 !!! 218 218 !!! jyg le 08/02/2012 219 s_pblh_x, s_plcl_x, s_pblh_w, s_plcl_w, 220 !!! 221 s_capCL, s_oliqCL, s_cteiCL, s_pblT, 222 s_therm, s_trmb1, s_trmb2, s_trmb3, 223 zustar,zu10m, zv10m, fder_print, &224 zxqsurf, delta_qsurf, &225 rh2m, zxfluxu, zxfluxv, &219 s_pblh_x, s_plcl_x, s_pblh_w, s_plcl_w, & 220 !!! 221 s_capCL, s_oliqCL, s_cteiCL, s_pblT, & 222 s_therm, s_trmb1, s_trmb2, s_trmb3, & 223 zustar,zu10m, zv10m, fder_print, & 224 zxqsurf, delta_qsurf, & 225 rh2m, zxfluxu, zxfluxv, & 226 226 z0m, z0h, agesno, sollw, solsw, & 227 227 d_ts, evap, fluxlat, t2m, & 228 wfbils, wf bilo, wfevap, wfrain, wfsnow,&229 flux_t, flux_u, flux_v, &230 dflux_t, dflux_q, zxsnow, 228 wfbils, wfevap, & 229 flux_t, flux_u, flux_v, & 230 dflux_t, dflux_q, zxsnow, & 231 231 !jyg< 232 232 !! zxfluxt, zxfluxq, q2m, flux_q, tke, & … … 235 235 !!! nrlmd+jyg le 02/05/2011 et le 20/02/2012 236 236 !! tke_x, tke_w & 237 wake_dltke, 238 treedrg &237 wake_dltke, & 238 treedrg & 239 239 !FC 240 240 !!! … … 318 318 dser, dt_ds, zsig, zmea 319 319 use phys_output_var_mod, only: tkt, tks, taur, sss 320 use blowing_snow_ini_mod, only : zeta_bs 321 #ifdef CPP_XIOS 322 USE wxios, ONLY: missing_val 323 #else 324 use netcdf, only: missing_val => nf90_fill_real 325 #endif 320 use lmdz_blowing_snow_ini, only : zeta_bs 321 USE wxios, ONLY: missing_val_xios => missing_val, using_xios 322 USE netcdf, only: missing_val_netcdf => nf90_fill_real 326 323 327 324 … … 506 503 REAL, DIMENSION(klon, nbsrf), INTENT(OUT) :: t2m ! temperature at 2 meter height 507 504 REAL, DIMENSION(klon, nbsrf), INTENT(OUT) :: wfbils ! heat balance at surface 508 REAL, DIMENSION(klon, nbsrf), INTENT(OUT) :: wfbilo ! water balance at surface weighted by srf509 505 REAL, DIMENSION(klon, nbsrf), INTENT(OUT) :: wfevap ! water balance (evap) at surface weighted by srf 510 REAL, DIMENSION(klon, nbsrf), INTENT(OUT) :: wfrain ! water balance (rain) at surface weighted by srf511 REAL, DIMENSION(klon, nbsrf), INTENT(OUT) :: wfsnow ! water balance (snow) at surface weighted by srf512 506 REAL, DIMENSION(klon, klev, nbsrf), INTENT(OUT) :: flux_t ! sensible heat flux (CpT) J/m**2/s (W/m**2) 513 507 ! positve orientation downwards … … 899 893 ! compression of delta_sst, delta_sal, ds_ns, dt_ns, dter, dser, 900 894 ! dt_ds, tkt, tks, taur, sss on ocean points 901 895 REAL :: missing_val 902 896 !**************************************************************************************** 903 897 ! End of declarations 904 898 !**************************************************************************************** 899 IF (using_xios) THEN 900 missing_val=missing_val_xios 901 ELSE 902 missing_val=missing_val_netcdf 903 ENDIF 905 904 906 905 IF (prt_level >=10) print *,' -> pbl_surface, itap ',itap … … 1025 1024 snowerosion(:,:)=0. 1026 1025 fluxlat(:,:)=0. 1027 wfbils(:,:)=0. ; wfbilo(:,:)=0. 1028 wfevap(:,:)=0. ; wfrain(:,:)=0. ; wfsnow(:,:)=0. 1026 wfbils(:,:)=0. ; wfevap(:,:)=0. ; 1029 1027 flux_t(:,:,:)=0. ; flux_q(:,:,:)=0. ; flux_u(:,:,:)=0. ; flux_v(:,:,:)=0. 1030 1028 flux_qbs(:,:,:)=0. … … 1069 1067 !albedo SB <<< 1070 1068 yrain_f = 0.0 ; ysnow_f = 0.0 ; ybs_f=0.0 ; yfder = 0.0 ; ysolsw = 0.0 1071 ysollw = 0.0 ; yz0m = 0.0 ; yz0h = 0.0 ; y u1 = 0.01069 ysollw = 0.0 ; yz0m = 0.0 ; yz0h = 0.0 ; yz0h_oupas = 0.0 ; yu1 = 0.0 1072 1070 yv1 = 0.0 ; ypaprs = 0.0 ; ypplay = 0.0 ; yqbs1 = 0.0 1073 1071 ydelp = 0.0 ; yu = 0.0 ; yv = 0.0 ; yt = 0.0 … … 1596 1594 ENDDO 1597 1595 CALL cdrag(knon, nsrf, & 1598 speed, yt(:,1), yq(:,1), zgeo1, ypaprs(:,1), &1596 speed, yt(:,1), yq(:,1), zgeo1, ypaprs(:,1), s_pblh, & 1599 1597 yts, yqsurf, yz0m, yz0h, yri0, 0, & 1600 ycdragm, ycdragh, zri1, pref 1598 ycdragm, ycdragh, zri1, pref, rain_f, zxtsol, ypplay(:,1)) 1601 1599 1602 1600 ! --- special Dice: on force cdragm ( a defaut de forcer ustar) MPL 05082013 … … 1630 1628 1631 1629 CALL cdrag(knon, nsrf, & 1632 speed_x, yt_x(:,1), yq_x(:,1), zgeo1_x, ypaprs(:,1), &1630 speed_x, yt_x(:,1), yq_x(:,1), zgeo1_x, ypaprs(:,1),s_pblh_x,& 1633 1631 yts_x, yqsurf_x, yz0m, yz0h, yri0, 0, & 1634 ycdragm_x, ycdragh_x, zri1_x, pref_x )1632 ycdragm_x, ycdragh_x, zri1_x, pref_x, rain_f, zxtsol, ypplay(:,1) ) 1635 1633 1636 1634 ! --- special Dice. JYG+MPL 25112013 … … 1657 1655 ENDDO 1658 1656 CALL cdrag(knon, nsrf, & 1659 speed_w, yt_w(:,1), yq_w(:,1), zgeo1_w, ypaprs(:,1), &1657 speed_w, yt_w(:,1), yq_w(:,1), zgeo1_w, ypaprs(:,1),s_pblh_w,& 1660 1658 yts_w, yqsurf_w, yz0m, yz0h, yri0, 0, & 1661 ycdragm_w, ycdragh_w, zri1_w, pref_w )1659 ycdragm_w, ycdragh_w, zri1_w, pref_w, rain_f, zxtsol, ypplay(:,1) ) 1662 1660 ! 1663 1661 !!!bug !! zgeo1(:) = wake_s(:)*zgeo1_w(:) + (1.-wake_s(:))*zgeo1_x(:) … … 1702 1700 IF (iflag_pbl>=50) THEN 1703 1701 1704 CALL call_atke(dtime,knon,klev,ycdragm, ycdragh,yus0,yvs0,yts,yu,yv,yt, &1702 CALL call_atke(dtime,knon,klev,ycdragm, ycdragh,yus0,yvs0,yts,yu,yv,yt,yq, & 1705 1703 ypplay,ypaprs,ytke,ycoefm, ycoefh) 1706 1704 … … 1746 1744 IF (iflag_pbl>=50) THEN 1747 1745 1748 CALL call_atke(dtime,knon,klev,ycdragm_x,ycdragh_x,yus0,yvs0,yts_x,yu_x,yv_x,yt_x, &1746 CALL call_atke(dtime,knon,klev,ycdragm_x,ycdragh_x,yus0,yvs0,yts_x,yu_x,yv_x,yt_x,yq_x, & 1749 1747 ypplay,ypaprs,ytke_x,ycoefm_x, ycoefh_x) 1750 1748 … … 1785 1783 IF (iflag_pbl>=50) THEN 1786 1784 1787 CALL call_atke(dtime,knon,klev,ycdragm_w,ycdragh_w,yus0,yvs0,yts_w,yu_w,yv_w,yt_w, &1785 CALL call_atke(dtime,knon,klev,ycdragm_w,ycdragh_w,yus0,yvs0,yts_w,yu_w,yv_w,yt_w,yq_w, & 1788 1786 ypplay,ypaprs,ytke_w,ycoefm_w, ycoefh_w) 1789 1787 … … 2084 2082 yu(:,1), yv(:,1), yt(:,1), yq(:,1), zgeo1, & 2085 2083 yts, yqsurf, yz0m, yz0h, ypaprs(:,1), ypplay(:,1), & 2086 yt2m, yq2m, yt10m, yq10m, yu10m, yustar )2084 yt2m, yq2m, yt10m, yq10m, yu10m, yustar, ypblh, rain_f, zxtsol) 2087 2085 ENDIF 2088 2086 … … 3070 3068 IF (iflag_split .eq.0) THEN 3071 3069 IF (iflag_new_t2mq2m==1) THEN 3072 CALL stdlevvarn(klon, knon, nsrf, zxli, &3070 CALL stdlevvarn(klon, knon, nsrf, zxli, & 3073 3071 uzon, vmer, tair1, qair1, zgeo1, & 3074 3072 tairsol, qairsol, yz0m, yz0h_oupas, psfce, patm, & … … 3079 3077 uzon, vmer, tair1, qair1, zgeo1, & 3080 3078 tairsol, qairsol, yz0m, yz0h_oupas, psfce, patm, & 3081 yt2m, yq2m, yt10m, yq10m, yu10m, yustar )3079 yt2m, yq2m, yt10m, yq10m, yu10m, yustar, ypblh, rain_f, zxtsol) 3082 3080 ENDIF 3083 3081 ELSE !(iflag_split .eq.0) … … 3097 3095 uzon_x, vmer_x, tair1_x, qair1_x, zgeo1_x, & 3098 3096 tairsol_x, qairsol, yz0m, yz0h_oupas, psfce, patm, & 3099 yt2m_x, yq2m_x, yt10m_x, yq10m_x, yu10m_x, yustar_x )3097 yt2m_x, yq2m_x, yt10m_x, yq10m_x, yu10m_x, yustar_x, ypblh_x, rain_f, zxtsol) 3100 3098 CALL stdlevvar(klon, knon, nsrf, zxli, & 3101 3099 uzon_w, vmer_w, tair1_w, qair1_w, zgeo1_w, & 3102 3100 tairsol_w, qairsol, yz0m, yz0h_oupas, psfce, patm, & 3103 yt2m_w, yq2m_w, yt10m_w, yq10m_w, yu10m_w, yustar_w )3101 yt2m_w, yq2m_w, yt10m_w, yq10m_w, yu10m_w, yustar_w, ypblh_w, rain_f, zxtsol) 3104 3102 ENDIF 3105 3103 !!! … … 3456 3454 wfbils(i,nsrf) = ( solsw(i,nsrf) + sollw(i,nsrf) & 3457 3455 + flux_t(i,1,nsrf) + fluxlat(i,nsrf) ) * pctsrf(i,nsrf) 3458 wfbilo(i,nsrf) = (evap(i,nsrf)-(rain_f(i)+snow_f(i)))*pctsrf(i,nsrf) 3456 3459 3457 wfevap(i,nsrf) = evap(i,nsrf)*pctsrf(i,nsrf) 3460 wfrain(i,nsrf) = rain_f(i)*pctsrf(i,nsrf)3461 wfsnow(i,nsrf) = snow_f(i)*pctsrf(i,nsrf)3462 3458 3463 3459 zxtsol(i) = zxtsol(i) + ts(i,nsrf) * pctsrf(i,nsrf)
Note: See TracChangeset
for help on using the changeset viewer.