Ignore:
Timestamp:
Nov 5, 2018, 3:24:59 PM (6 years ago)
Author:
Laurent Fairhead
Message:

Undoing merge with trunk (r3356) to properly register Yann's latest modifications

Location:
LMDZ6/branches/DYNAMICO-conv
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/DYNAMICO-conv

  • LMDZ6/branches/DYNAMICO-conv/libf/phylmd/pbl_surface_mod.F90

    • Property svn:executable set to *
    r3356 r3411  
    2323  USE climb_wind_mod,      ONLY : climb_wind_down, climb_wind_up
    2424  USE coef_diff_turb_mod,  ONLY : coef_diff_turb
    25   USE wx_pbl_mod,          ONLY : wx_pbl_init, wx_pbl_final, &
    26 !!                                  wx_pbl_fuse_no_dts, wx_pbl_split_no_dts, &
    27 !!                                  wx_pbl_fuse, wx_pbl_split
    28                                   wx_pbl0_fuse, wx_pbl0_split
     25
    2926
    3027  IMPLICIT NONE
     
    149146!    CALL getin_p('iflag_frein',iflag_frein)
    150147!
    151 !jyg<
    152 !****************************************************************************************
    153 ! Allocate variables for pbl splitting
    154 !
    155 !****************************************************************************************
    156 
    157     CALL wx_pbl_init
    158 !>jyg
    159 
    160148  END SUBROUTINE pbl_surface_init
    161149
     
    214202!!! nrlmd+jyg le 02/05/2011 et le 20/02/2012
    215203!!        tke_x,     tke_w                              &
    216        wake_dltke,                                     &
    217         treedrg                                   &
     204       wake_dltke                                     &
     205        , treedrg                                   &
    218206!FC
    219207!!!
     
    286274! pblh-----output-R- HCL
    287275! pblT-----output-R- T au nveau HCL
    288 ! treedrg--output-R- tree drag (m)               
    289 !
    290     USE carbon_cycle_mod,   ONLY : carbon_cycle_cpl, co2_send
     276!
     277    USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send
    291278    USE indice_sol_mod
    292279    USE time_phylmdz_mod, ONLY: day_ini,annee_ref,itau_phy
    293280    USE mod_grid_phy_lmdz, ONLY : nbp_lon, nbp_lat, grid1dto2d_glo
    294     USE print_control_mod,  ONLY : prt_level,lunout
    295     USE ioipsl_getin_p_mod, ONLY : getin_p
     281    USE print_control_mod, ONLY: prt_level,lunout
    296282
    297283    IMPLICIT NONE
     
    505491    CHARACTER(len=8), DIMENSION(nbsrf), SAVE :: cl_surf
    506492!$OMP THREADPRIVATE(cl_surf)
    507     REAL, SAVE                               :: beta_land         ! beta for wx_dts
    508 !$OMP THREADPRIVATE(beta_land)
    509493
    510494! Other local variables
     
    524508    REAL, DIMENSION(klon)              :: yalb,yalb_vis
    525509!albedo SB <<<
    526     REAL, DIMENSION(klon)              :: yt1, yq1, yu1, yv1
     510    REAL, DIMENSION(klon)              :: yu1, yv1
    527511    REAL, DIMENSION(klon)              :: ysnow, yqsurf, yagesno, yqsol
    528512    REAL, DIMENSION(klon)              :: yrain_f, ysnow_f
     
    733717!!! jyg le 25/03/2013
    734718!!    Variables intermediaires pour le raccord des deux colonnes \`a la surface
    735 !jyg<
    736 !!    REAL   ::   dd_Ch
    737 !!    REAL   ::   dd_Cm
    738 !!    REAL   ::   dd_Kh
    739 !!    REAL   ::   dd_Km
    740 !!    REAL   ::   dd_u
    741 !!    REAL   ::   dd_v
    742 !!    REAL   ::   dd_t
    743 !!    REAL   ::   dd_q
    744 !!    REAL   ::   dd_AH
    745 !!    REAL   ::   dd_AQ
    746 !!    REAL   ::   dd_AU
    747 !!    REAL   ::   dd_AV
    748 !!    REAL   ::   dd_BH
    749 !!    REAL   ::   dd_BQ
    750 !!    REAL   ::   dd_BU
    751 !!    REAL   ::   dd_BV
    752 !!
    753 !!    REAL   ::   dd_KHp
    754 !!    REAL   ::   dd_KQp
    755 !!    REAL   ::   dd_KUp
    756 !!    REAL   ::   dd_KVp
    757 !>jyg
     719    REAL   ::   dd_Ch
     720    REAL   ::   dd_Cm
     721    REAL   ::   dd_Kh
     722    REAL   ::   dd_Km
     723    REAL   ::   dd_u
     724    REAL   ::   dd_v
     725    REAL   ::   dd_t
     726    REAL   ::   dd_q
     727    REAL   ::   dd_AH
     728    REAL   ::   dd_AQ
     729    REAL   ::   dd_AU
     730    REAL   ::   dd_AV
     731    REAL   ::   dd_BH
     732    REAL   ::   dd_BQ
     733    REAL   ::   dd_BU
     734    REAL   ::   dd_BV
     735
     736    REAL   ::   dd_KHp
     737    REAL   ::   dd_KQp
     738    REAL   ::   dd_KUp
     739    REAL   ::   dd_KVp
    758740
    759741!!!
     
    762744    REAL, DIMENSION(klon)              :: y_delta_tsurf,delta_coef,tau_eq
    763745    REAL, PARAMETER                    :: facteur=2./sqrt(3.14)
    764     REAL, PARAMETER                    :: inertia=2000.
     746    REAL, PARAMETER                    :: effusivity=2000.
    765747    REAL, DIMENSION(klon)              :: ytsurf_th_x,ytsurf_th_w,yqsatsurf_x,yqsatsurf_w
    766748    REAL, DIMENSION(klon)              :: ydtsurf_th
     
    774756    REAL, DIMENSION(klon)              :: Kech_m_x, Kech_m_w
    775757    REAL, DIMENSION(klon)              :: yts_x,yts_w
    776 !jyg<
    777 !!    REAL, DIMENSION(klon)              :: Kech_Hp, Kech_H_xp, Kech_H_wp
    778 !!    REAL, DIMENSION(klon)              :: Kech_Qp, Kech_Q_xp, Kech_Q_wp
    779 !!    REAL, DIMENSION(klon)              :: Kech_Up, Kech_U_xp, Kech_U_wp
    780 !!    REAL, DIMENSION(klon)              :: Kech_Vp, Kech_V_xp, Kech_V_wp
    781 !>jyg
    782 !jyg<
    783     REAL, DIMENSION(klon)              :: ah, bh     ! coefficients of the delta_Tsurf equation
    784 !>jyg
     758    REAL, DIMENSION(klon)              :: Kech_Hp, Kech_H_xp, Kech_H_wp
     759    REAL, DIMENSION(klon)              :: Kech_Qp, Kech_Q_xp, Kech_Q_wp
     760    REAL, DIMENSION(klon)              :: Kech_Up, Kech_U_xp, Kech_U_wp
     761    REAL, DIMENSION(klon)              :: Kech_Vp, Kech_V_xp, Kech_V_wp
    785762
    786763    REAL                               :: vent
     
    848825       ! Initialize ok_flux_surf (for 1D model)
    849826       if (klon_glo>1) ok_flux_surf=.FALSE.
    850 
    851        ! intialize beta_land
    852        beta_land = 0.5
    853        call getin_p('beta_land', beta_land)
    854827       
    855828       ! Initilize debug IO
     
    12951268       ENDDO
    12961269!!! jyg le 07/02/2012 et le 10/04/2013
    1297         DO k = 1, klev+1
     1270        DO k = 1, klev
    12981271          DO j = 1, knon
    12991272             i = ni(j)
     
    13011274!!             ytke(j,k)   = tke(i,k,nsrf)
    13021275             ytke(j,k)   = tke_x(i,k,nsrf)
    1303           ENDDO
    1304         ENDDO
    13051276!>jyg
    1306         DO k = 1, klev
    1307           DO j = 1, knon
    1308              i = ni(j)
    13091277!FC
    13101278             y_treedrg(j,k) =  treedrg(i,k,nsrf)
     
    13351303          ENDDO
    13361304        ENDDO
    1337         IF (prt_level .ge. 10) THEN
    1338           print *,'pbl_surface, wake_s(1), wake_dlt(1,:) ', wake_s(1), wake_dlt(1,:)
    1339           print *,'pbl_surface, wake_s(1), wake_dlq(1,:) ', wake_s(1), wake_dlq(1,:)
    1340         ENDIF
    13411305!!! nrlmd le 02/05/2011
    13421306        DO k = 1, klev+1
     
    14721436            yts_w, yqsurf, yz0m, yz0h, &
    14731437            ycdragm_w, ycdragh_w, zri1_w, pref_w )
    1474 !
    1475         zgeo1(:) = wake_s(:)*zgeo1_w(:) + (1.-wake_s(:))*zgeo1_x(:)
    14761438
    14771439! --- special Dice. JYG+MPL 25112013 puis BOMEX
     
    15151477            ycoefm, ycoefh, ytke, y_treedrg)
    15161478!            ycoefm, ycoefh, ytke)
    1517 !FC y_treedrg ajoute
     1479!FC y_treedrg ajouté
    15181480       IF (iflag_pbl>=20.AND.iflag_pbl<30) THEN
    15191481! In this case, coef_diff_turb is called for the Cd only
     
    16271589!!!
    16281590            AcoefH_x, AcoefQ_x, BcoefH_x, BcoefQ_x)
    1629 !!!
    1630        IF (prt_level >=10) THEN
    1631          PRINT *,'pbl_surface (climb_hq_down.x->) AcoefH_x ',AcoefH_x
    1632          PRINT *,'pbl_surface (climb_hq_down.x->) AcoefQ_x ',AcoefQ_x
    1633          PRINT *,'pbl_surface (climb_hq_down.x->) BcoefH_x ',BcoefH_x
    1634          PRINT *,'pbl_surface (climb_hq_down.x->) BcoefQ_x ',BcoefQ_x
    1635        ENDIF
    16361591!
    16371592        CALL climb_hq_down(knon, ycoefh_w, ypaprs, ypplay, &
     
    16421597!!!
    16431598            AcoefH_w, AcoefQ_w, BcoefH_w, BcoefQ_w)
    1644 !!!
    1645        IF (prt_level >=10) THEN
    1646          PRINT *,'pbl_surface (climb_hq_down.w->) AcoefH_w ',AcoefH_w
    1647          PRINT *,'pbl_surface (climb_hq_down.w->) AcoefQ_w ',AcoefQ_w
    1648          PRINT *,'pbl_surface (climb_hq_down.w->) BcoefH_w ',BcoefH_w
    1649          PRINT *,'pbl_surface (climb_hq_down.w->) BcoefQ_w ',BcoefQ_w
    1650        ENDIF
    16511599!!!
    16521600       ENDIF  ! (iflag_split .eq.0)
     
    16991647       END IF
    17001648
     1649!!! nrlmd le 13/06/2011
     1650!----- On finit le calcul des coefficients d'\'echange:on multiplie le cdrag par le module du vent et la densit\'e dans la premi\`ere couche
     1651!          Kech_h_x(j) = ycdragh_x(j) * &
     1652!             (1.0+SQRT(yu_x(j,1)**2+yv_x(j,1)**2)) * &
     1653!             ypplay(j,1)/(RD*yt_x(j,1))
     1654!          Kech_h_w(j) = ycdragh_w(j) * &
     1655!             (1.0+SQRT(yu_w(j,1)**2+yv_w(j,1)**2)) * &
     1656!             ypplay(j,1)/(RD*yt_w(j,1))
     1657!          Kech_h(j) = (1.-ywake_s(j))*Kech_h_x(j)+ywake_s(j)*Kech_h_w(j)
     1658!
     1659!          Kech_m_x(j) = ycdragm_x(j) * &
     1660!             (1.0+SQRT(yu_x(j,1)**2+yv_x(j,1)**2)) * &
     1661!             ypplay(j,1)/(RD*yt_x(j,1))
     1662!          Kech_m_w(j) = ycdragm_w(j) * &
     1663!             (1.0+SQRT(yu_w(j,1)**2+yv_w(j,1)**2)) * &
     1664!             ypplay(j,1)/(RD*yt_w(j,1))
     1665!          Kech_m(j) = (1.-ywake_s(j))*Kech_m_x(j)+ywake_s(j)*Kech_m_w(j)
     1666!!!
    17011667
    17021668!!! nrlmd le 02/05/2011  -----------------------On raccorde les 2 colonnes dans la couche 1
    17031669!----------------------------------------------------------------------------------------
    17041670!!! jyg le 07/02/2012
    1705 !!! jyg le 01/02/2017
    1706        IF (iflag_split .eq. 0) THEN
    1707          yt1(:) = yt(:,1)
    1708          yq1(:) = yq(:,1)
    1709 !!       ELSE IF (iflag_split .eq. 1) THEN
    1710 !!!
    1711 !jyg<
    1712 !!         CALL wx_pbl_fuse_no_dts(knon, dtime, ypplay, ywake_s, &
    1713 !!                                 yt_x, yt_w, yq_x, yq_w, &
    1714 !!                                 yu_x, yu_w, yv_x, yv_w, &
    1715 !!                                 ycdragh_x, ycdragh_w, ycdragm_x, ycdragm_w, &
    1716 !!                                 AcoefH_x, AcoefH_w, AcoefQ_x, AcoefQ_w, &
    1717 !!                                 AcoefU_x, AcoefU_w, AcoefV_x, AcoefV_w, &
    1718 !!                                 BcoefH_x, BcoefH_w, BcoefQ_x, BcoefQ_w, &
    1719 !!                                 BcoefU_x, BcoefU_w, BcoefV_x, BcoefV_w, &
    1720 !!                                 AcoefH, AcoefQ, AcoefU, AcoefV, &
    1721 !!                                 BcoefH, BcoefQ, BcoefU, BcoefV, &
    1722 !!                                 ycdragh, ycdragm, &
    1723 !!                                 yt1, yq1, yu1, yv1 &
    1724 !!                                 )
    1725        ELSE IF (iflag_split .ge. 1) THEN
    1726          CALL wx_pbl0_fuse(knon, dtime, ypplay, ywake_s, &
    1727                          yt_x, yt_w, yq_x, yq_w, &
    1728                          yu_x, yu_w, yv_x, yv_w, &
    1729                          ycdragh_x, ycdragh_w, ycdragm_x, ycdragm_w, &
    1730                          AcoefH_x, AcoefH_w, AcoefQ_x, AcoefQ_w, &
    1731                          AcoefU_x, AcoefU_w, AcoefV_x, AcoefV_w, &
    1732                          BcoefH_x, BcoefH_w, BcoefQ_x, BcoefQ_w, &
    1733                          BcoefU_x, BcoefU_w, BcoefV_x, BcoefV_w, &
    1734                          AcoefH, AcoefQ, AcoefU, AcoefV, &
    1735                          BcoefH, BcoefQ, BcoefU, BcoefV, &
    1736                          ycdragh, ycdragm, &
    1737                          yt1, yq1, yu1, yv1 &
    1738                          )
    1739 !!       ELSE IF (iflag_split .ge.2) THEN
    1740 !!!    Provisoire
    1741 !!         ah(:) = 0.
    1742 !!         bh(:) = 0.
    1743 !!         IF (nsrf == is_oce) THEN
    1744 !!           ybeta(:) = 1.
    1745 !!         ELSE
    1746 !!           ybeta(:) = beta_land
    1747 !!         ENDIF
    1748 !!         ycdragh(:) = ywake_s(:)*ycdragh_w(:) + (1.-ywake_s(:))*ycdragh_x(:)
    1749 !!         CALL wx_dts(knon, nsrf, ywake_cstar, ywake_s, ywake_dens, &
    1750 !!                     yts, ypplay(:,1), ybeta, ycdragh , ypaprs(:,1), &
    1751 !!                     yq(:,1), yt(:,1), yu(:,1), yv(:,1), ygustiness, &
    1752 !!                     ah, bh &
    1753 !!                     )
    1754 !!!
    1755 !!         CALL wx_pbl_fuse(knon, dtime, ypplay, ywake_s, &
    1756 !!                         yt_x, yt_w, yq_x, yq_w, &
    1757 !!                         yu_x, yu_w, yv_x, yv_w, &
    1758 !!                         ycdragh_x, ycdragh_w, ycdragm_x, ycdragm_w, &
    1759 !!                         AcoefH_x, AcoefH_w, AcoefQ_x, AcoefQ_w, &
    1760 !!                         AcoefU_x, AcoefU_w, AcoefV_x, AcoefV_w, &
    1761 !!                         BcoefH_x, BcoefH_w, BcoefQ_x, BcoefQ_w, &
    1762 !!                         BcoefU_x, BcoefU_w, BcoefV_x, BcoefV_w, &
    1763 !!                         ah, bh, &
    1764 !!                         AcoefH, AcoefQ, AcoefU, AcoefV, &
    1765 !!                         BcoefH, BcoefQ, BcoefU, BcoefV, &
    1766 !!                         ycdragh, ycdragm, &
    1767 !!                         yt1, yq1, yu1, yv1 &
    1768 !!                         )
    1769 !>jyg
    1770 !!!
    1771          ENDIF  ! (iflag_split .eq.0)
    1772 !!!
     1671       IF (iflag_split .eq.1) THEN
     1672!!!
     1673!!! jyg le 09/04/2013 ; passage aux nouvelles expressions en differences
     1674
     1675        DO j=1,knon
     1676!
     1677! Calcul des coefficients d echange
     1678         mod_wind_x = 1.0+SQRT(yu_x(j,1)**2+yv_x(j,1)**2)
     1679         mod_wind_w = 1.0+SQRT(yu_w(j,1)**2+yv_w(j,1)**2)
     1680         rho1 = ypplay(j,1)/(RD*yt(j,1))
     1681         Kech_h_x(j) = ycdragh_x(j) * mod_wind_x * rho1
     1682         Kech_h_w(j) = ycdragh_w(j) * mod_wind_w * rho1
     1683         Kech_m_x(j) = ycdragm_x(j) * mod_wind_x * rho1
     1684         Kech_m_w(j) = ycdragm_w(j) * mod_wind_w * rho1
     1685!
     1686         dd_Kh = Kech_h_w(j) - Kech_h_x(j)
     1687         dd_Km = Kech_m_w(j) - Kech_m_x(j)
     1688         IF (prt_level >=10) THEN
     1689          print *,' mod_wind_x, mod_wind_w ', mod_wind_x, mod_wind_w
     1690          print *,' rho1 ',rho1
     1691          print *,' ycdragh_x(j),ycdragm_x(j) ',ycdragh_x(j),ycdragm_x(j)
     1692          print *,' ycdragh_w(j),ycdragm_w(j) ',ycdragh_w(j),ycdragm_w(j)
     1693          print *,' dd_Kh: ',dd_KH
     1694         ENDIF
     1695!
     1696         Kech_h(j) = Kech_h_x(j) + ywake_s(j)*dd_Kh
     1697         Kech_m(j) = Kech_m_x(j) + ywake_s(j)*dd_Km
     1698!
     1699! Calcul des coefficients d echange corriges des retroactions
     1700        Kech_H_xp(j) = Kech_h_x(j)/(1.-BcoefH_x(j)*Kech_h_x(j)*dtime)
     1701        Kech_H_wp(j) = Kech_h_w(j)/(1.-BcoefH_w(j)*Kech_h_w(j)*dtime)
     1702        Kech_Q_xp(j) = Kech_h_x(j)/(1.-BcoefQ_x(j)*Kech_h_x(j)*dtime)
     1703        Kech_Q_wp(j) = Kech_h_w(j)/(1.-BcoefQ_w(j)*Kech_h_w(j)*dtime)
     1704        Kech_U_xp(j) = Kech_m_x(j)/(1.-BcoefU_x(j)*Kech_m_x(j)*dtime)
     1705        Kech_U_wp(j) = Kech_m_w(j)/(1.-BcoefU_w(j)*Kech_m_w(j)*dtime)
     1706        Kech_V_xp(j) = Kech_m_x(j)/(1.-BcoefV_x(j)*Kech_m_x(j)*dtime)
     1707        Kech_V_wp(j) = Kech_m_w(j)/(1.-BcoefV_w(j)*Kech_m_w(j)*dtime)
     1708!
     1709         dd_KHp = Kech_H_wp(j) - Kech_H_xp(j)
     1710         dd_KQp = Kech_Q_wp(j) - Kech_Q_xp(j)
     1711         dd_KUp = Kech_U_wp(j) - Kech_U_xp(j)
     1712         dd_KVp = Kech_V_wp(j) - Kech_V_xp(j)
     1713!
     1714        Kech_Hp(j) = Kech_H_xp(j) + ywake_s(j)*dd_KHp
     1715        Kech_Qp(j) = Kech_Q_xp(j) + ywake_s(j)*dd_KQp
     1716        Kech_Up(j) = Kech_U_xp(j) + ywake_s(j)*dd_KUp
     1717        Kech_Vp(j) = Kech_V_xp(j) + ywake_s(j)*dd_KVp
     1718!
     1719! Calcul des differences w-x
     1720       dd_CM = ycdragm_w(j) - ycdragm_x(j)
     1721       dd_CH = ycdragh_w(j) - ycdragh_x(j)
     1722       dd_u = yu_w(j,1) - yu_x(j,1)
     1723       dd_v = yv_w(j,1) - yv_x(j,1)
     1724       dd_t = yt_w(j,1) - yt_x(j,1)
     1725       dd_q = yq_w(j,1) - yq_x(j,1)
     1726       dd_AH = AcoefH_w(j) - AcoefH_x(j)
     1727       dd_AQ = AcoefQ_w(j) - AcoefQ_x(j)
     1728       dd_AU = AcoefU_w(j) - AcoefU_x(j)
     1729       dd_AV = AcoefV_w(j) - AcoefV_x(j)
     1730       dd_BH = BcoefH_w(j) - BcoefH_x(j)
     1731       dd_BQ = BcoefQ_w(j) - BcoefQ_x(j)
     1732       dd_BU = BcoefU_w(j) - BcoefU_x(j)
     1733       dd_BV = BcoefV_w(j) - BcoefV_x(j)
     1734!
    17731735       IF (prt_level >=10) THEN
    1774          PRINT *,'pbl_surface (fuse->): yt(1,:) ',yt(1,:)
    1775          PRINT *,'pbl_surface (fuse->): yq(1,:) ',yq(1,:)
    1776          PRINT *,'pbl_surface (fuse->): yu(1,:) ',yu(1,:)
    1777          PRINT *,'pbl_surface (fuse->): yv(1,:) ',yv(1,:)
    1778          PRINT *,'pbl_surface (fuse->): AcoefH(1) ',AcoefH(1)
    1779          PRINT *,'pbl_surface (fuse->): BcoefH(1) ',BcoefH(1)
     1736          print *,'Variables pour la fusion : Kech_H_xp(j)' ,Kech_H_xp(j)
     1737          print *,'Variables pour la fusion : Kech_H_wp(j)' ,Kech_H_wp(j)
     1738          print *,'Variables pour la fusion : Kech_Hp(j)' ,Kech_Hp(j)
     1739          print *,'Variables pour la fusion : Kech_h(j)' ,Kech_h(j)
    17801740       ENDIF
     1741!
     1742! Calcul des coef A, B \'equivalents dans la couche 1
     1743!
     1744       AcoefH(j) = AcoefH_x(j) + ywake_s(j)*(Kech_H_wp(j)/Kech_Hp(j))*dd_AH
     1745       AcoefQ(j) = AcoefQ_x(j) + ywake_s(j)*(Kech_Q_wp(j)/Kech_Qp(j))*dd_AQ
     1746       AcoefU(j) = AcoefU_x(j) + ywake_s(j)*(Kech_U_wp(j)/Kech_Up(j))*dd_AU
     1747       AcoefV(j) = AcoefV_x(j) + ywake_s(j)*(Kech_V_wp(j)/Kech_Vp(j))*dd_AV
     1748!
     1749       BcoefH(j) = BcoefH_x(j) + ywake_s(j)*BcoefH_x(j)*(dd_Kh/Kech_h(j))*(1.+Kech_H_wp(j)/Kech_Hp(j)) &
     1750                               + ywake_s(j)*(Kech_H_wp(j)/Kech_Hp(j))*(Kech_h_w(j)/Kech_h(j))*dd_BH
     1751
     1752       BcoefQ(j) = BcoefQ_x(j) + ywake_s(j)*BcoefQ_x(j)*(dd_Kh/Kech_h(j))*(1.+Kech_Q_wp(j)/Kech_Qp(j)) &
     1753                               + ywake_s(j)*(Kech_Q_wp(j)/Kech_Qp(j))*(Kech_h_w(j)/Kech_h(j))*dd_BQ
     1754
     1755       BcoefU(j) = BcoefU_x(j) + ywake_s(j)*BcoefU_x(j)*(dd_Km/Kech_h(j))*(1.+Kech_U_wp(j)/Kech_Up(j)) &
     1756                               + ywake_s(j)*(Kech_U_wp(j)/Kech_Up(j))*(Kech_m_w(j)/Kech_m(j))*dd_BU
     1757
     1758       BcoefV(j) = BcoefV_x(j) + ywake_s(j)*BcoefV_x(j)*(dd_Km/Kech_h(j))*(1.+Kech_V_wp(j)/Kech_Vp(j)) &
     1759                               + ywake_s(j)*(Kech_V_wp(j)/Kech_Vp(j))*(Kech_m_w(j)/Kech_m(j))*dd_BV
     1760
     1761!
     1762! Calcul des cdrag \'equivalents dans la couche
     1763!
     1764       ycdragm(j) = ycdragm_x(j) + ywake_s(j)*dd_CM
     1765       ycdragh(j) = ycdragh_x(j) + ywake_s(j)*dd_CH
     1766!
     1767! Calcul de T, q, u et v \'equivalents dans la couche 1
     1768       yt(j,1) = yt_x(j,1) + ywake_s(j)*(Kech_h_w(j)/Kech_h(j))*dd_t
     1769       yq(j,1) = yq_x(j,1) + ywake_s(j)*(Kech_h_w(j)/Kech_h(j))*dd_q
     1770       yu(j,1) = yu_x(j,1) + ywake_s(j)*(Kech_m_w(j)/Kech_m(j))*dd_u
     1771       yv(j,1) = yv_x(j,1) + ywake_s(j)*(Kech_m_w(j)/Kech_m(j))*dd_v
     1772
     1773
     1774        ENDDO
     1775!!!
     1776       ENDIF  ! (iflag_split .eq.1)
     1777!!!
    17811778
    17821779!****************************************************************************************
     
    18151812               rlon, rlat, yrmu0, &
    18161813               debut, lafin, ydelp(:,1), r_co2_ppm, ysolsw, ysollw, yalb, &
    1817 !!jyg               yts, ypplay(:,1), ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
    1818                yts, ypplay(:,1), ycdragh, ycdragm, yrain_f, ysnow_f, yt1, yq1,&
     1814               yts, ypplay(:,1), ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
    18191815               AcoefH, AcoefQ, BcoefH, BcoefQ, &
    18201816               AcoefU, AcoefV, BcoefU, BcoefV, &
     
    18621858               yrmu0, ylwdown, yalb, ypphi(:,1), &
    18631859               ysolsw, ysollw, yts, ypplay(:,1), &
    1864 !!jyg               ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
    1865                ycdragh, ycdragm, yrain_f, ysnow_f, yt1, yq1,&
     1860               ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
    18661861               AcoefH, AcoefQ, BcoefH, BcoefQ, &
    18671862               AcoefU, AcoefV, BcoefU, BcoefV, &
     
    19381933               itap, dtime, jour, knon, ni, &
    19391934               lafin, &
    1940 !!jyg               yts, ypplay(:,1), ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
    1941                yts, ypplay(:,1), ycdragh, ycdragm, yrain_f, ysnow_f, yt1, yq1,&
     1935               yts, ypplay(:,1), ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),&
    19421936               AcoefH, AcoefQ, BcoefH, BcoefQ, &
    19431937               AcoefU, AcoefV, BcoefU, BcoefV, &
     
    19981992          yfluxlat(:) =  flat
    19991993!
    2000 !!  Test sur iflag_split retire le 2/02/2018, sans vraiment comprendre la raison de ce test. (jyg)
    2001 !!          IF (iflag_split .eq.0) THEN
     1994          IF (iflag_split .eq.0) THEN
    20021995             do j=1,knon
    20031996             Kech_h(j) = ycdragh(j) * (1.0+SQRT(yu(j,1)**2+yv(j,1)**2)) * &
    20041997                  ypplay(j,1)/(RD*yt(j,1))
    20051998             enddo
    2006 !!          ENDIF ! (iflag_split .eq.0)
     1999          ENDIF ! (iflag_split .eq.0)
    20072000
    20082001          DO j = 1, knon
     
    20272020 &             ,  y_flux_t1(j), yfluxlat(j), ywake_s(j)
    20282021         print*,'beta,ytsurf_new', ybeta(j), ytsurf_new(j)
    2029          print*,'inertia,facteur,cstar', inertia, facteur,wake_cstar(j)
     2022         print*,'effusivity,facteur,cstar', effusivity, facteur,wake_cstar(j)
    20302023        ENDDO
    20312024       ENDIF
    20322025
    20332026!!! jyg le 07/02/2012 puis le 10/04/2013
    2034 !!       IF (iflag_split .eq.1) THEN
    2035 !!!!!
    2036 !!!jyg<
    2037 !!         CALL wx_pbl_split_no_dts(knon, ywake_s, &
    2038 !!                                AcoefH_x, AcoefH_w, &
    2039 !!                                AcoefQ_x, AcoefQ_w, &
    2040 !!                                AcoefU_x, AcoefU_w, &
    2041 !!                                AcoefV_x, AcoefV_w, &
    2042 !!                                y_flux_t1, y_flux_q1, y_flux_u1, y_flux_v1, &
    2043 !!                                y_flux_t1_x, y_flux_t1_w, &
    2044 !!                                y_flux_q1_x, y_flux_q1_w, &
    2045 !!                                y_flux_u1_x, y_flux_u1_w, &
    2046 !!                                y_flux_v1_x, y_flux_v1_w, &
    2047 !!                                yfluxlat_x, yfluxlat_w &
    2048 !!                                )
    2049 !!       ELSE IF (iflag_split .ge. 2) THEN
    2050        IF (iflag_split .GE. 1) THEN
    2051          CALL wx_pbl0_split(knon, dtime, ywake_s, &
    2052                        y_flux_t1, y_flux_q1, y_flux_u1, y_flux_v1, &
    2053                        y_flux_t1_x, y_flux_t1_w, &
    2054                        y_flux_q1_x, y_flux_q1_w, &
    2055                        y_flux_u1_x, y_flux_u1_w, &
    2056                        y_flux_v1_x, y_flux_v1_w, &
    2057                        yfluxlat_x, yfluxlat_w, &
    2058                        y_delta_tsurf &
    2059                        )
    2060        ENDIF  ! (iflag_split .ge. 1)
    2061 !>jyg
     2027       IF (iflag_split .eq.1) THEN
     2028!!!
     2029        DO j=1,knon
     2030         y_delta_flux_t1(j) = ( Kech_H_wp(j)*Kech_H_xp(j)*(AcoefH_w(j)-AcoefH_x(j)) + &
     2031                                y_flux_t1(j)*(Kech_H_wp(j)-Kech_H_xp(j)) ) / Kech_Hp(j)
     2032         y_delta_flux_q1(j) = ( Kech_Q_wp(j)*Kech_Q_xp(j)*(AcoefQ_w(j)-AcoefQ_x(j)) + &
     2033                                y_flux_q1(j)*(Kech_Q_wp(j)-Kech_Q_xp(j)) ) / Kech_Qp(j)
     2034         y_delta_flux_u1(j) = ( Kech_U_wp(j)*Kech_U_xp(j)*(AcoefU_w(j)-AcoefU_x(j)) + &
     2035                                y_flux_u1(j)*(Kech_U_wp(j)-Kech_U_xp(j)) ) / Kech_Up(j)
     2036         y_delta_flux_v1(j) = ( Kech_V_wp(j)*Kech_V_xp(j)*(AcoefV_w(j)-AcoefV_x(j)) + &
     2037                                y_flux_v1(j)*(Kech_V_wp(j)-Kech_V_xp(j)) ) / Kech_Vp(j)
     2038!
     2039         y_flux_t1_x(j)=y_flux_t1(j) - ywake_s(j)*y_delta_flux_t1(j)
     2040         y_flux_t1_w(j)=y_flux_t1(j) + (1.-ywake_s(j))*y_delta_flux_t1(j)
     2041         y_flux_q1_x(j)=y_flux_q1(j) - ywake_s(j)*y_delta_flux_q1(j)
     2042         y_flux_q1_w(j)=y_flux_q1(j) + (1.-ywake_s(j))*y_delta_flux_q1(j)
     2043         y_flux_u1_x(j)=y_flux_u1(j) - ywake_s(j)*y_delta_flux_u1(j)
     2044         y_flux_u1_w(j)=y_flux_u1(j) + (1.-ywake_s(j))*y_delta_flux_u1(j)
     2045         y_flux_v1_x(j)=y_flux_v1(j) - ywake_s(j)*y_delta_flux_v1(j)
     2046         y_flux_v1_w(j)=y_flux_v1(j) + (1.-ywake_s(j))*y_delta_flux_v1(j)
     2047!
     2048         yfluxlat_x(j)=y_flux_q1_x(j)*RLVTT
     2049         yfluxlat_w(j)=y_flux_q1_w(j)*RLVTT
     2050
     2051        ENDDO
    20622052!
    20632053 
     
    20722062!!jyg!!          tau_eq(j)=(ywake_s(j)/2.)*(1./max(wake_cstar(j),0.01))*sqrt(0.4/(3.14*max(wake_dens(j),8e-12)))
    20732063!!jyg!!
    2074 !!jyg!!!          delta_coef(j)=dtime/(inertia*sqrt(tau_eq(j)))
    2075 !!jyg!!          delta_coef(j)=facteur*sqrt(tau_eq(j))/inertia
     2064!!jyg!!!          delta_coef(j)=dtime/(effusivity*sqrt(tau_eq(j)))
     2065!!jyg!!          delta_coef(j)=facteur*sqrt(tau_eq(j))/effusivity
    20762066!!jyg!!!          delta_coef(j)=0.
    20772067!!jyg!!       ELSE
     
    21022092!!jyg!!!!! fin nrlmd le 13/06/2011
    21032093!!jyg!!
    2104        IF (iflag_split .ge. 1) THEN
    21052094       IF (prt_level >=10) THEN
    21062095        DO j = 1, knon
     
    21182107 &             , y_flux_t1_x(j), y_flux_t1_w(j), y_flux_t1(j), y_flux_q1_x(j)*RLVTT, y_flux_q1_w(j)*RLVTT, yfluxlat(j), ywake_s(j)
    21192108         print*,'beta,ytsurf_new,yqsatsurf', ybeta(j), ytsurf_new(j), yqsatsurf(j)
    2120          print*,'inertia,facteur,cstar', inertia, facteur,wake_cstar(j)
     2109         print*,'effusivity,facteur,cstar', effusivity, facteur,wake_cstar(j)
    21212110        ENDDO
    21222111       ENDIF  ! (prt_level >=10)
    21232112
    21242113!!! jyg le 07/02/2012
    2125        ENDIF  ! (iflag_split .ge.1)
     2114       ENDIF  ! (iflag_split .eq.1)
    21262115!!!
    21272116
     
    23762365!!!
    23772366!!! nrlmd le 13/06/2011
    2378 !!jyg20170131          delta_tsurf(i,nsrf)=y_delta_tsurf(j)*ypct(j)
    2379           delta_tsurf(i,nsrf)=y_delta_tsurf(j)
    2380 !
     2367          delta_tsurf(i,nsrf)=y_delta_tsurf(j)*ypct(j)
    23812368          cdragh_x(i) = cdragh_x(i) + ycdragh_x(j)*ypct(j)
    23822369          cdragh_w(i) = cdragh_w(i) + ycdragh_w(j)*ypct(j)
     
    24132400       IF (iflag_split .eq.0) THEN
    24142401        wake_dltke(:,:,nsrf) = 0.
    2415         DO k = 1, klev+1
     2402        DO k = 1, klev
    24162403           DO j = 1, knon
    24172404              i = ni(j)
     
    24262413
    24272414       ELSE  ! (iflag_split .eq.0)
    2428         DO k = 1, klev+1
     2415        DO k = 1, klev
    24292416          DO j = 1, knon
    24302417            i = ni(j)
     
    25882575!      print*, tair1,yt(:,1),y_d_t(:,1)
    25892576
    2590 ! Calculate the temperature and relative humidity at 2m and the wind at 10m
     2577! Calculate the temperatureflag_pbl_surface_t2m_bugiflag_pbl_surface_t2m_bug et relative humidity at 2m and the wind at 10m
    25912578!!! jyg le 07/02/2012
    25922579       IF (iflag_split .eq.0) THEN
     
    31043091    IF (ALLOCATED(qsurf)) DEALLOCATE(qsurf)
    31053092    IF (ALLOCATED(ftsoil)) DEALLOCATE(ftsoil)
    3106 
    3107 !jyg<
    3108 !****************************************************************************************
    3109 ! Deallocate variables for pbl splitting
    3110 !
    3111 !****************************************************************************************
    3112 
    3113     CALL wx_pbl_final
    3114 !>jyg
    31153093
    31163094  END SUBROUTINE pbl_surface_final
Note: See TracChangeset for help on using the changeset viewer.