Ignore:
Timestamp:
Jul 14, 2017, 10:23:40 PM (7 years ago)
Author:
Laurent Fairhead
Message:

Parametrization of drag by copses
Need version 4465 of ORCHIDEE at least

  1. Cheruy
Location:
LMDZ5/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk

  • LMDZ5/trunk/libf/phylmd/pbl_surface_mod.F90

    r2898 r2952  
    3939  integer, save :: iflag_pbl_surface_t2m_bug
    4040  !$OMP THREADPRIVATE(iflag_pbl_surface_t2m_bug)
     41!FC
     42!  integer, save :: iflag_frein
     43!  !$OMP THREADPRIVATE(iflag_frein)
    4144
    4245CONTAINS
     
    138141    iflag_pbl_surface_t2m_bug=0
    139142    CALL getin_p('iflag_pbl_surface_t2m_bug',iflag_pbl_surface_t2m_bug)
    140 
     143!FC
     144!    iflag_frein = 0
     145!    CALL getin_p('iflag_frein',iflag_frein)
     146!
    141147  END SUBROUTINE pbl_surface_init
    142148
     
    196202!!        tke_x,     tke_w                              &
    197203       wake_dltke                                     &
     204        , treedrg                                   &
     205!FC
    198206!!!
    199207                        )
     
    281289    INCLUDE "compbl.h"
    282290    INCLUDE "flux_arp.h"
     291!FC
     292    INCLUDE "dimpft.h"
     293
    283294!****************************************************************************************
    284295    REAL,                         INTENT(IN)        :: dtime   ! time interval (s)
     
    447458    REAL, DIMENSION(klon, klev, nbsrf), INTENT(OUT) :: flux_u     ! u wind tension (kg m/s)/(m**2 s) or Pascal
    448459    REAL, DIMENSION(klon, klev, nbsrf), INTENT(OUT) :: flux_v     ! v wind tension (kg m/s)/(m**2 s) or Pascal
     460!FC
     461    REAL, DIMENSION(klon, klev, nbsrf), INTENT(INOUT)  :: treedrg      ! tree drag (m)               
     462
    449463
    450464! Output not needed
     
    548562    REAL, DIMENSION(klon,klev+1)       :: ytke
    549563    REAL, DIMENSION(klon,nsoilmx)      :: ytsoil
     564!FC
     565    REAL, DIMENSION(klon,nvm_lmdz)          :: yveget
     566    REAL, DIMENSION(klon,nvm_lmdz)          :: ylai
     567    REAL, DIMENSION(klon,nvm_lmdz)          :: yheight
     568    REAL, DIMENSION(klon,klev)              :: y_d_u_frein
     569    REAL, DIMENSION(klon,klev)              :: y_d_v_frein
     570    REAL, DIMENSION(klon,klev)              :: y_treedrg
     571!FC
     572
     573
    550574    CHARACTER(len=80)                  :: abort_message
    551575    CHARACTER(len=20)                  :: modname = 'pbl_surface'
     
    929953    yqsol = 0.0   
    930954    ytherm = 0.0  ; ytke=0.
     955!FC
     956    y_treedrg=0.
     957
    931958    ! Martin
    932959    ysnowhgt = 0.0; yqsnow = 0.0     ; yrunoff = 0.0   ; ytoice =0.0
     
    952979!!!
    953980    ytsoil = 999999.
     981!FC
     982    y_d_u_frein(:,:)=0.
     983    y_d_v_frein(:,:)=0.
     984!FC
     985
     986
    954987
    955988
     
    12401273             ytke(j,k)   = tke_x(i,k,nsrf)
    12411274!>jyg
     1275!FC
     1276             y_treedrg(j,k) =  treedrg(i,k,nsrf)
     1277!            print*,nsrf, "treedrg ",y_treedrg(j,k),j,k
     1278!FC
     1279
    12421280             yu(j,k) = u(i,k)
    12431281             yv(j,k) = v(i,k)
     
    14351473        CALL coef_diff_turb(dtime, nsrf, knon, ni,  &
    14361474            ypaprs, ypplay, yu, yv, yq, yt, yts, yqsurf, ycdragm, &
    1437             ycoefm, ycoefh, ytke)
     1475            ycoefm, ycoefh, ytke, y_treedrg)
     1476!            ycoefm, ycoefh, ytke)
     1477!FC y_treedrg ajouté
    14381478       IF (iflag_pbl>=20.AND.iflag_pbl<30) THEN
    14391479! In this case, coef_diff_turb is called for the Cd only
     
    14621502        CALL coef_diff_turb(dtime, nsrf, knon, ni,  &
    14631503            ypaprs, ypplay, yu_x, yv_x, yq_x, yt_x, yts_x, yqsurf, ycdragm_x, &
    1464             ycoefm_x, ycoefh_x, ytke_x)
     1504            ycoefm_x, ycoefh_x, ytke_x,y_treedrg)
     1505!            ycoefm_x, ycoefh_x, ytke_x)
     1506!FC doit on le mettre ( on ne l utilise pas si il y a du spliting)
    14651507       IF (iflag_pbl>=20.AND.iflag_pbl<30) THEN
    14661508! In this case, coef_diff_turb is called for the Cd only
     
    14881530        CALL coef_diff_turb(dtime, nsrf, knon, ni,  &
    14891531            ypaprs, ypplay, yu_w, yv_w, yq_w, yt_w, yts_w, yqsurf, ycdragm_w, &
    1490             ycoefm_w, ycoefh_w, ytke_w)
     1532            ycoefm_w, ycoefh_w, ytke_w,y_treedrg)
     1533!            ycoefm_w, ycoefh_w, ytke_w)
    14911534       IF (iflag_pbl>=20.AND.iflag_pbl<30) THEN
    14921535! In this case, coef_diff_turb is called for the Cd only
     
    17751818               yz0m, yz0h, SFRWL, yalb_dir_new, yalb_dif_new, yevap, yfluxsens,yfluxlat,&
    17761819               yqsurf, ytsurf_new, y_dflux_t, y_dflux_q, &
    1777                y_flux_u1, y_flux_v1 )
     1820               y_flux_u1, y_flux_v1, &
     1821               yveget,ylai,yheight )
     1822!FC quid qd yveget ylai yheight ne sont pas definit
     1823!FC  yveget,ylai,yheight, &
     1824            if (ifl_pbltree .ge. 1) then
     1825            CALL   freinage(knon, yu, yv, yt, &
     1826!              yveget,ylai, yheight,ypaprs,ypplay,y_d_u_frein,y_d_v_frein)
     1827              yveget,ylai, yheight,ypaprs,ypplay,y_treedrg, y_d_u_frein,y_d_v_frein)
     1828             endif
     1829
    17781830               
    17791831! Special DICE MPL 05082013 puis BOMEX
     
    21822234             y_d_u(j,k)  = y_d_u(j,k) * ypct(j)
    21832235             y_d_v(j,k)  = y_d_v(j,k) * ypct(j)
     2236!FC
     2237              if  (nsrf .EQ. is_ter .and. ifl_pbltree .ge. 1  ) then
     2238!            if (y_d_u_frein(j,k).ne.0. ) then
     2239!        print*, nsrf,'IS_TER ++', y_d_u_frein(j,k)*ypct(j),y_d_u(j,k),j,k
     2240!            endif
     2241             y_d_u(j,k) =y_d_u(j,k) + y_d_u_frein(j,k)*ypct(j)
     2242             y_d_v(j,k) =y_d_v(j,k) + y_d_v_frein(j,k)*ypct(j)
     2243             treedrg(i,k,nsrf)=y_treedrg(j,k)
     2244             else
     2245             treedrg(i,k,nsrf)=0.
     2246               endif
     2247!FC
    21842248
    21852249             flux_t(i,k,nsrf) = y_flux_t(j,k)
Note: See TracChangeset for help on using the changeset viewer.