Ignore:
Timestamp:
Oct 30, 2023, 5:37:00 PM (7 months ago)
Author:
Laurent Fairhead
Message:

Merge of ACC branch with 4740 revision from trunk

Location:
LMDZ6/branches/Portage_acc
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/Portage_acc

  • LMDZ6/branches/Portage_acc/libf/phylmd/pbl_surface_mod.F90

    r4584 r4743  
    2424  USE climb_wind_mod,      ONLY : climb_wind_down, climb_wind_up
    2525  USE coef_diff_turb_mod,  ONLY : coef_diff_turb
    26   USE call_atke_mod,       ONLY : call_atke
     26  USE lmdz_call_atke,      ONLY : call_atke
    2727  USE ioipsl_getin_p_mod,  ONLY : getin_p
    2828  USE cdrag_mod
     
    184184       debut,     lafin,                              &
    185185       rlon,      rlat,      rugoro,   rmu0,          &
    186        lwdown_m,  cldt,          &
     186       lwdown_m,  cldt,                               &
    187187       rain_f,    snow_f,    bs_f, solsw_m,  solswfdiff_m, sollw_m,       &
    188188       gustiness,                                     &
    189        t,         q,        qbs,  u,        v,             &
     189       t,         q,        qbs,  u,        v,        &
    190190!!! nrlmd+jyg le 02/05/2011 et le 20/02/2012
    191191!!       t_x,       q_x,       t_w,      q_w,           &
     
    199199       beta, &
    200200!>jyg
    201        alb_dir_m,    alb_dif_m,  zxsens,   zxevap,  zxsnowerosion,  &
     201       alb_dir_m,    alb_dif_m,  zxsens,   zxevap,  zxsnowerosion,      &
    202202       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,            &
    205205!!! 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,                             &
    208208!!       d_wake_dlt,d_wake_dlq,                         &
    209        zxsens_x,  zxfluxlat_x,zxsens_w,zxfluxlat_w,   &
     209       zxsens_x,  zxfluxlat_x,zxsens_w,zxfluxlat_w,  &
    210210!!!
    211211!!! 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,         &
    217217!!!
    218218!!! 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,                 &
    226226       z0m, z0h,   agesno,  sollw,    solsw,         &
    227227       d_ts,      evap,    fluxlat,   t2m,           &
    228        wfbils,    wfbilo, 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,                 &
    231231!jyg<
    232232!!       zxfluxt,   zxfluxq,   q2m,      flux_q, tke,   &
     
    235235!!! nrlmd+jyg le 02/05/2011 et le 20/02/2012
    236236!!        tke_x,     tke_w                              &
    237        wake_dltke,                                     &
    238         treedrg                                   &
     237       wake_dltke,                                   &
     238        treedrg                                      &
    239239!FC
    240240!!!
     
    318318         dser, dt_ds, zsig, zmea
    319319    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
    326323
    327324     
     
    506503    REAL, DIMENSION(klon, nbsrf), INTENT(OUT)       :: t2m        ! temperature at 2 meter height
    507504    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 srf
    509505    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 srf
    511     REAL, DIMENSION(klon, nbsrf), INTENT(OUT)       :: wfsnow     ! water balance (snow) at surface weighted by srf
    512506    REAL, DIMENSION(klon, klev, nbsrf), INTENT(OUT) :: flux_t     ! sensible heat flux (CpT) J/m**2/s (W/m**2)
    513507                                                                  ! positve orientation downwards
     
    899893    ! compression of delta_sst, delta_sal, ds_ns, dt_ns, dter, dser,
    900894    ! dt_ds, tkt, tks, taur, sss on ocean points
    901 
     895    REAL :: missing_val
    902896!****************************************************************************************
    903897! End of declarations
    904898!****************************************************************************************
     899      IF (using_xios) THEN
     900        missing_val=missing_val_xios
     901      ELSE
     902        missing_val=missing_val_netcdf
     903      ENDIF
    905904
    906905      IF (prt_level >=10) print *,' -> pbl_surface, itap ',itap
     
    10251024 snowerosion(:,:)=0.
    10261025 fluxlat(:,:)=0.
    1027  wfbils(:,:)=0. ; wfbilo(:,:)=0.
    1028  wfevap(:,:)=0. ; wfrain(:,:)=0. ; wfsnow(:,:)=0.
     1026 wfbils(:,:)=0. ; wfevap(:,:)=0. ;
    10291027 flux_t(:,:,:)=0. ; flux_q(:,:,:)=0. ; flux_u(:,:,:)=0. ; flux_v(:,:,:)=0.
    10301028 flux_qbs(:,:,:)=0.
     
    10691067!albedo SB <<<
    10701068    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    ; yu1 = 0.0   
     1069    ysollw = 0.0  ; yz0m = 0.0 ; yz0h = 0.0    ; yz0h_oupas = 0.0 ; yu1 = 0.0   
    10721070    yv1 = 0.0     ; ypaprs = 0.0     ; ypplay = 0.0     ; yqbs1 = 0.0
    10731071    ydelp = 0.0   ; yu = 0.0         ; yv = 0.0        ; yt = 0.0         
     
    15961594        ENDDO
    15971595        CALL cdrag(knon, nsrf, &
    1598             speed, yt(:,1), yq(:,1), zgeo1, ypaprs(:,1),&
     1596            speed, yt(:,1), yq(:,1), zgeo1, ypaprs(:,1), s_pblh, &
    15991597            yts, yqsurf, yz0m, yz0h, yri0, 0, &
    1600             ycdragm, ycdragh, zri1, pref )
     1598            ycdragm, ycdragh, zri1, pref, rain_f, zxtsol, ypplay(:,1))
    16011599
    16021600! --- special Dice: on force cdragm ( a defaut de forcer ustar) MPL 05082013
     
    16301628
    16311629            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,&
    16331631            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) )
    16351633
    16361634! --- special Dice. JYG+MPL 25112013
     
    16571655        ENDDO
    16581656        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,&
    16601658            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) )
    16621660!
    16631661!!!bug !!        zgeo1(:) = wake_s(:)*zgeo1_w(:) + (1.-wake_s(:))*zgeo1_x(:)
     
    17021700        IF (iflag_pbl>=50) THEN
    17031701
    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, &
    17051703             ypplay,ypaprs,ytke,ycoefm, ycoefh)
    17061704
     
    17461744        IF (iflag_pbl>=50) THEN
    17471745     
    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, &
    17491747             ypplay,ypaprs,ytke_x,ycoefm_x, ycoefh_x)
    17501748
     
    17851783        IF (iflag_pbl>=50) THEN
    17861784       
    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, &
    17881786             ypplay,ypaprs,ytke_w,ycoefm_w, ycoefh_w)
    17891787
     
    20842082               yu(:,1), yv(:,1), yt(:,1), yq(:,1), zgeo1, &
    20852083               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)
    20872085          ENDIF
    20882086         
     
    30703068       IF (iflag_split .eq.0) THEN
    30713069        IF (iflag_new_t2mq2m==1) THEN
    3072          CALL stdlevvarn(klon, knon, nsrf, zxli, &
     3070           CALL stdlevvarn(klon, knon, nsrf, zxli, &
    30733071            uzon, vmer, tair1, qair1, zgeo1, &
    30743072            tairsol, qairsol, yz0m, yz0h_oupas, psfce, patm, &
     
    30793077            uzon, vmer, tair1, qair1, zgeo1, &
    30803078            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)
    30823080        ENDIF
    30833081       ELSE  !(iflag_split .eq.0)
     
    30973095            uzon_x, vmer_x, tair1_x, qair1_x, zgeo1_x, &
    30983096            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)
    31003098        CALL stdlevvar(klon, knon, nsrf, zxli, &
    31013099            uzon_w, vmer_w, tair1_w, qair1_w, zgeo1_w, &
    31023100            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)
    31043102        ENDIF
    31053103!!!
     
    34563454          wfbils(i,nsrf) = ( solsw(i,nsrf) + sollw(i,nsrf) &
    34573455               + 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
    34593457          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)
    34623458
    34633459          zxtsol(i)    = zxtsol(i)    + ts(i,nsrf)      * pctsrf(i,nsrf)
Note: See TracChangeset for help on using the changeset viewer.