Changeset 3179 for LMDZ6/trunk/libf
- Timestamp:
- Feb 3, 2018, 9:52:04 AM (7 years ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/pbl_surface_mod.F90
r3102 r3179 23 23 USE climb_wind_mod, ONLY : climb_wind_down, climb_wind_up 24 24 USE coef_diff_turb_mod, ONLY : coef_diff_turb 25 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 26 29 27 30 IMPLICIT NONE … … 145 148 ! CALL getin_p('iflag_frein',iflag_frein) 146 149 ! 150 !jyg< 151 !**************************************************************************************** 152 ! Allocate variables for pbl splitting 153 ! 154 !**************************************************************************************** 155 156 CALL wx_pbl_init 157 !>jyg 158 147 159 END SUBROUTINE pbl_surface_init 148 160 ! … … 201 213 !!! nrlmd+jyg le 02/05/2011 et le 20/02/2012 202 214 !! tke_x, tke_w & 203 wake_dltke &204 ,treedrg &215 wake_dltke, & 216 treedrg & 205 217 !FC 206 218 !!! … … 273 285 ! pblh-----output-R- HCL 274 286 ! pblT-----output-R- T au nveau HCL 275 ! 276 USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send 287 ! treedrg--output-R- tree drag (m) 288 ! 289 USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send 277 290 USE indice_sol_mod 278 USE time_phylmdz_mod, ONLY: day_ini,annee_ref,itau_phy 279 USE mod_grid_phy_lmdz, ONLY : nbp_lon, nbp_lat 280 USE print_control_mod, ONLY: prt_level,lunout 291 USE time_phylmdz_mod, ONLY : day_ini,annee_ref,itau_phy 292 USE mod_grid_phy_lmdz, ONLY : nbp_lon, nbp_lat 293 USE print_control_mod, ONLY : prt_level,lunout 294 USE ioipsl_getin_p_mod, ONLY : getin_p 281 295 282 296 IMPLICIT NONE … … 490 504 CHARACTER(len=8), DIMENSION(nbsrf), SAVE :: cl_surf 491 505 !$OMP THREADPRIVATE(cl_surf) 506 REAL, SAVE :: beta_land ! beta for wx_dts 507 !$OMP THREADPRIVATE(beta_land) 492 508 493 509 ! Other local variables … … 507 523 REAL, DIMENSION(klon) :: yalb,yalb_vis 508 524 !albedo SB <<< 509 REAL, DIMENSION(klon) :: y u1, yv1525 REAL, DIMENSION(klon) :: yt1, yq1, yu1, yv1 510 526 REAL, DIMENSION(klon) :: ysnow, yqsurf, yagesno, yqsol 511 527 REAL, DIMENSION(klon) :: yrain_f, ysnow_f … … 716 732 !!! jyg le 25/03/2013 717 733 !! Variables intermediaires pour le raccord des deux colonnes \`a la surface 718 REAL :: dd_Ch 719 REAL :: dd_Cm 720 REAL :: dd_Kh 721 REAL :: dd_Km 722 REAL :: dd_u 723 REAL :: dd_v 724 REAL :: dd_t 725 REAL :: dd_q 726 REAL :: dd_AH 727 REAL :: dd_AQ 728 REAL :: dd_AU 729 REAL :: dd_AV 730 REAL :: dd_BH 731 REAL :: dd_BQ 732 REAL :: dd_BU 733 REAL :: dd_BV 734 735 REAL :: dd_KHp 736 REAL :: dd_KQp 737 REAL :: dd_KUp 738 REAL :: dd_KVp 734 !jyg< 735 !! REAL :: dd_Ch 736 !! REAL :: dd_Cm 737 !! REAL :: dd_Kh 738 !! REAL :: dd_Km 739 !! REAL :: dd_u 740 !! REAL :: dd_v 741 !! REAL :: dd_t 742 !! REAL :: dd_q 743 !! REAL :: dd_AH 744 !! REAL :: dd_AQ 745 !! REAL :: dd_AU 746 !! REAL :: dd_AV 747 !! REAL :: dd_BH 748 !! REAL :: dd_BQ 749 !! REAL :: dd_BU 750 !! REAL :: dd_BV 751 !! 752 !! REAL :: dd_KHp 753 !! REAL :: dd_KQp 754 !! REAL :: dd_KUp 755 !! REAL :: dd_KVp 756 !>jyg 739 757 740 758 !!! … … 743 761 REAL, DIMENSION(klon) :: y_delta_tsurf,delta_coef,tau_eq 744 762 REAL, PARAMETER :: facteur=2./sqrt(3.14) 745 REAL, PARAMETER :: effusivity=2000.763 REAL, PARAMETER :: inertia=2000. 746 764 REAL, DIMENSION(klon) :: ytsurf_th_x,ytsurf_th_w,yqsatsurf_x,yqsatsurf_w 747 765 REAL, DIMENSION(klon) :: ydtsurf_th … … 755 773 REAL, DIMENSION(klon) :: Kech_m_x, Kech_m_w 756 774 REAL, DIMENSION(klon) :: yts_x,yts_w 757 REAL, DIMENSION(klon) :: Kech_Hp, Kech_H_xp, Kech_H_wp 758 REAL, DIMENSION(klon) :: Kech_Qp, Kech_Q_xp, Kech_Q_wp 759 REAL, DIMENSION(klon) :: Kech_Up, Kech_U_xp, Kech_U_wp 760 REAL, DIMENSION(klon) :: Kech_Vp, Kech_V_xp, Kech_V_wp 775 !jyg< 776 !! REAL, DIMENSION(klon) :: Kech_Hp, Kech_H_xp, Kech_H_wp 777 !! REAL, DIMENSION(klon) :: Kech_Qp, Kech_Q_xp, Kech_Q_wp 778 !! REAL, DIMENSION(klon) :: Kech_Up, Kech_U_xp, Kech_U_wp 779 !! REAL, DIMENSION(klon) :: Kech_Vp, Kech_V_xp, Kech_V_wp 780 !>jyg 781 !jyg< 782 REAL, DIMENSION(klon) :: ah, bh ! coefficients of the delta_Tsurf equation 783 !>jyg 761 784 762 785 REAL :: vent … … 824 847 ! Initialize ok_flux_surf (for 1D model) 825 848 if (klon_glo>1) ok_flux_surf=.FALSE. 849 850 ! intialize beta_land 851 beta_land = 0.5 852 call getin_p('beta_land', beta_land) 826 853 827 854 ! Initilize debug IO … … 881 908 zt2m(:)=0. ; zq2m(:)=0. ; qsat2m(:)=0. ; rh2m(:)=0. 882 909 d_t(:,:)=0. ; d_t_diss(:,:)=0. ; d_q(:,:)=0. ; d_u(:,:)=0. ; d_v(:,:)=0. 910 zcoefh(:,:,:)=0. ; zcoefm(:,:,:)=0. 883 911 zxsens_x(:)=0. ; zxsens_w(:)=0. ; zxfluxlat_x(:)=0. ; zxfluxlat_w(:)=0. 884 912 cdragh_x(:)=0. ; cdragh_w(:)=0. ; cdragm_x(:)=0. ; cdragm_w(:)=0. … … 1301 1329 ENDDO 1302 1330 ENDDO 1331 IF (prt_level .ge. 10) THEN 1332 print *,'pbl_surface, wake_s(1), wake_dlt(1,:) ', wake_s(1), wake_dlt(1,:) 1333 print *,'pbl_surface, wake_s(1), wake_dlq(1,:) ', wake_s(1), wake_dlq(1,:) 1334 ENDIF 1303 1335 !!! nrlmd le 02/05/2011 1304 1336 DO k = 1, klev+1 … … 1434 1466 yts_w, yqsurf, yz0m, yz0h, & 1435 1467 ycdragm_w, ycdragh_w, zri1_w, pref_w ) 1468 ! 1469 zgeo1(:) = wake_s(:)*zgeo1_w(:) + (1.-wake_s(:))*zgeo1_x(:) 1436 1470 1437 1471 ! --- special Dice. JYG+MPL 25112013 puis BOMEX … … 1475 1509 ycoefm, ycoefh, ytke, y_treedrg) 1476 1510 ! ycoefm, ycoefh, ytke) 1477 !FC y_treedrg ajout é1511 !FC y_treedrg ajoute 1478 1512 IF (iflag_pbl>=20.AND.iflag_pbl<30) THEN 1479 1513 ! In this case, coef_diff_turb is called for the Cd only … … 1587 1621 !!! 1588 1622 AcoefH_x, AcoefQ_x, BcoefH_x, BcoefQ_x) 1623 !!! 1624 IF (prt_level >=10) THEN 1625 PRINT *,'pbl_surface (climb_hq_down.x->) AcoefH_x ',AcoefH_x 1626 PRINT *,'pbl_surface (climb_hq_down.x->) AcoefQ_x ',AcoefQ_x 1627 PRINT *,'pbl_surface (climb_hq_down.x->) BcoefH_x ',BcoefH_x 1628 PRINT *,'pbl_surface (climb_hq_down.x->) BcoefQ_x ',BcoefQ_x 1629 ENDIF 1589 1630 ! 1590 1631 CALL climb_hq_down(knon, ycoefh_w, ypaprs, ypplay, & … … 1595 1636 !!! 1596 1637 AcoefH_w, AcoefQ_w, BcoefH_w, BcoefQ_w) 1638 !!! 1639 IF (prt_level >=10) THEN 1640 PRINT *,'pbl_surface (climb_hq_down.w->) AcoefH_w ',AcoefH_w 1641 PRINT *,'pbl_surface (climb_hq_down.w->) AcoefQ_w ',AcoefQ_w 1642 PRINT *,'pbl_surface (climb_hq_down.w->) BcoefH_w ',BcoefH_w 1643 PRINT *,'pbl_surface (climb_hq_down.w->) BcoefQ_w ',BcoefQ_w 1644 ENDIF 1597 1645 !!! 1598 1646 ENDIF ! (iflag_split .eq.0) … … 1645 1693 END IF 1646 1694 1647 !!! nrlmd le 13/06/20111648 !----- 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 couche1649 ! Kech_h_x(j) = ycdragh_x(j) * &1650 ! (1.0+SQRT(yu_x(j,1)**2+yv_x(j,1)**2)) * &1651 ! ypplay(j,1)/(RD*yt_x(j,1))1652 ! Kech_h_w(j) = ycdragh_w(j) * &1653 ! (1.0+SQRT(yu_w(j,1)**2+yv_w(j,1)**2)) * &1654 ! ypplay(j,1)/(RD*yt_w(j,1))1655 ! Kech_h(j) = (1.-ywake_s(j))*Kech_h_x(j)+ywake_s(j)*Kech_h_w(j)1656 !1657 ! Kech_m_x(j) = ycdragm_x(j) * &1658 ! (1.0+SQRT(yu_x(j,1)**2+yv_x(j,1)**2)) * &1659 ! ypplay(j,1)/(RD*yt_x(j,1))1660 ! Kech_m_w(j) = ycdragm_w(j) * &1661 ! (1.0+SQRT(yu_w(j,1)**2+yv_w(j,1)**2)) * &1662 ! ypplay(j,1)/(RD*yt_w(j,1))1663 ! Kech_m(j) = (1.-ywake_s(j))*Kech_m_x(j)+ywake_s(j)*Kech_m_w(j)1664 !!!1665 1695 1666 1696 !!! nrlmd le 02/05/2011 -----------------------On raccorde les 2 colonnes dans la couche 1 1667 1697 !---------------------------------------------------------------------------------------- 1668 1698 !!! jyg le 07/02/2012 1669 IF (iflag_split .eq.1) THEN 1670 !!! 1671 !!! jyg le 09/04/2013 ; passage aux nouvelles expressions en differences 1672 1673 DO j=1,knon 1674 ! 1675 ! Calcul des coefficients d echange 1676 mod_wind_x = 1.0+SQRT(yu_x(j,1)**2+yv_x(j,1)**2) 1677 mod_wind_w = 1.0+SQRT(yu_w(j,1)**2+yv_w(j,1)**2) 1678 rho1 = ypplay(j,1)/(RD*yt(j,1)) 1679 Kech_h_x(j) = ycdragh_x(j) * mod_wind_x * rho1 1680 Kech_h_w(j) = ycdragh_w(j) * mod_wind_w * rho1 1681 Kech_m_x(j) = ycdragm_x(j) * mod_wind_x * rho1 1682 Kech_m_w(j) = ycdragm_w(j) * mod_wind_w * rho1 1683 ! 1684 dd_Kh = Kech_h_w(j) - Kech_h_x(j) 1685 dd_Km = Kech_m_w(j) - Kech_m_x(j) 1686 IF (prt_level >=10) THEN 1687 print *,' mod_wind_x, mod_wind_w ', mod_wind_x, mod_wind_w 1688 print *,' rho1 ',rho1 1689 print *,' ycdragh_x(j),ycdragm_x(j) ',ycdragh_x(j),ycdragm_x(j) 1690 print *,' ycdragh_w(j),ycdragm_w(j) ',ycdragh_w(j),ycdragm_w(j) 1691 print *,' dd_Kh: ',dd_KH 1692 ENDIF 1693 ! 1694 Kech_h(j) = Kech_h_x(j) + ywake_s(j)*dd_Kh 1695 Kech_m(j) = Kech_m_x(j) + ywake_s(j)*dd_Km 1696 ! 1697 ! Calcul des coefficients d echange corriges des retroactions 1698 Kech_H_xp(j) = Kech_h_x(j)/(1.-BcoefH_x(j)*Kech_h_x(j)*dtime) 1699 Kech_H_wp(j) = Kech_h_w(j)/(1.-BcoefH_w(j)*Kech_h_w(j)*dtime) 1700 Kech_Q_xp(j) = Kech_h_x(j)/(1.-BcoefQ_x(j)*Kech_h_x(j)*dtime) 1701 Kech_Q_wp(j) = Kech_h_w(j)/(1.-BcoefQ_w(j)*Kech_h_w(j)*dtime) 1702 Kech_U_xp(j) = Kech_m_x(j)/(1.-BcoefU_x(j)*Kech_m_x(j)*dtime) 1703 Kech_U_wp(j) = Kech_m_w(j)/(1.-BcoefU_w(j)*Kech_m_w(j)*dtime) 1704 Kech_V_xp(j) = Kech_m_x(j)/(1.-BcoefV_x(j)*Kech_m_x(j)*dtime) 1705 Kech_V_wp(j) = Kech_m_w(j)/(1.-BcoefV_w(j)*Kech_m_w(j)*dtime) 1706 ! 1707 dd_KHp = Kech_H_wp(j) - Kech_H_xp(j) 1708 dd_KQp = Kech_Q_wp(j) - Kech_Q_xp(j) 1709 dd_KUp = Kech_U_wp(j) - Kech_U_xp(j) 1710 dd_KVp = Kech_V_wp(j) - Kech_V_xp(j) 1711 ! 1712 Kech_Hp(j) = Kech_H_xp(j) + ywake_s(j)*dd_KHp 1713 Kech_Qp(j) = Kech_Q_xp(j) + ywake_s(j)*dd_KQp 1714 Kech_Up(j) = Kech_U_xp(j) + ywake_s(j)*dd_KUp 1715 Kech_Vp(j) = Kech_V_xp(j) + ywake_s(j)*dd_KVp 1716 ! 1717 ! Calcul des differences w-x 1718 dd_CM = ycdragm_w(j) - ycdragm_x(j) 1719 dd_CH = ycdragh_w(j) - ycdragh_x(j) 1720 dd_u = yu_w(j,1) - yu_x(j,1) 1721 dd_v = yv_w(j,1) - yv_x(j,1) 1722 dd_t = yt_w(j,1) - yt_x(j,1) 1723 dd_q = yq_w(j,1) - yq_x(j,1) 1724 dd_AH = AcoefH_w(j) - AcoefH_x(j) 1725 dd_AQ = AcoefQ_w(j) - AcoefQ_x(j) 1726 dd_AU = AcoefU_w(j) - AcoefU_x(j) 1727 dd_AV = AcoefV_w(j) - AcoefV_x(j) 1728 dd_BH = BcoefH_w(j) - BcoefH_x(j) 1729 dd_BQ = BcoefQ_w(j) - BcoefQ_x(j) 1730 dd_BU = BcoefU_w(j) - BcoefU_x(j) 1731 dd_BV = BcoefV_w(j) - BcoefV_x(j) 1732 ! 1699 !!! jyg le 01/02/2017 1700 IF (iflag_split .eq. 0) THEN 1701 yt1(:) = yt(:,1) 1702 yq1(:) = yq(:,1) 1703 !! ELSE IF (iflag_split .eq. 1) THEN 1704 !!! 1705 !jyg< 1706 !! CALL wx_pbl_fuse_no_dts(knon, dtime, ypplay, ywake_s, & 1707 !! yt_x, yt_w, yq_x, yq_w, & 1708 !! yu_x, yu_w, yv_x, yv_w, & 1709 !! ycdragh_x, ycdragh_w, ycdragm_x, ycdragm_w, & 1710 !! AcoefH_x, AcoefH_w, AcoefQ_x, AcoefQ_w, & 1711 !! AcoefU_x, AcoefU_w, AcoefV_x, AcoefV_w, & 1712 !! BcoefH_x, BcoefH_w, BcoefQ_x, BcoefQ_w, & 1713 !! BcoefU_x, BcoefU_w, BcoefV_x, BcoefV_w, & 1714 !! AcoefH, AcoefQ, AcoefU, AcoefV, & 1715 !! BcoefH, BcoefQ, BcoefU, BcoefV, & 1716 !! ycdragh, ycdragm, & 1717 !! yt1, yq1, yu1, yv1 & 1718 !! ) 1719 ELSE IF (iflag_split .ge. 1) THEN 1720 CALL wx_pbl0_fuse(knon, dtime, ypplay, ywake_s, & 1721 yt_x, yt_w, yq_x, yq_w, & 1722 yu_x, yu_w, yv_x, yv_w, & 1723 ycdragh_x, ycdragh_w, ycdragm_x, ycdragm_w, & 1724 AcoefH_x, AcoefH_w, AcoefQ_x, AcoefQ_w, & 1725 AcoefU_x, AcoefU_w, AcoefV_x, AcoefV_w, & 1726 BcoefH_x, BcoefH_w, BcoefQ_x, BcoefQ_w, & 1727 BcoefU_x, BcoefU_w, BcoefV_x, BcoefV_w, & 1728 AcoefH, AcoefQ, AcoefU, AcoefV, & 1729 BcoefH, BcoefQ, BcoefU, BcoefV, & 1730 ycdragh, ycdragm, & 1731 yt1, yq1, yu1, yv1 & 1732 ) 1733 !! ELSE IF (iflag_split .ge.2) THEN 1734 !!! Provisoire 1735 !! ah(:) = 0. 1736 !! bh(:) = 0. 1737 !! IF (nsrf == is_oce) THEN 1738 !! ybeta(:) = 1. 1739 !! ELSE 1740 !! ybeta(:) = beta_land 1741 !! ENDIF 1742 !! ycdragh(:) = ywake_s(:)*ycdragh_w(:) + (1.-ywake_s(:))*ycdragh_x(:) 1743 !! CALL wx_dts(knon, nsrf, ywake_cstar, ywake_s, ywake_dens, & 1744 !! yts, ypplay(:,1), ybeta, ycdragh , ypaprs(:,1), & 1745 !! yq(:,1), yt(:,1), yu(:,1), yv(:,1), ygustiness, & 1746 !! ah, bh & 1747 !! ) 1748 !!! 1749 !! CALL wx_pbl_fuse(knon, dtime, ypplay, ywake_s, & 1750 !! yt_x, yt_w, yq_x, yq_w, & 1751 !! yu_x, yu_w, yv_x, yv_w, & 1752 !! ycdragh_x, ycdragh_w, ycdragm_x, ycdragm_w, & 1753 !! AcoefH_x, AcoefH_w, AcoefQ_x, AcoefQ_w, & 1754 !! AcoefU_x, AcoefU_w, AcoefV_x, AcoefV_w, & 1755 !! BcoefH_x, BcoefH_w, BcoefQ_x, BcoefQ_w, & 1756 !! BcoefU_x, BcoefU_w, BcoefV_x, BcoefV_w, & 1757 !! ah, bh, & 1758 !! AcoefH, AcoefQ, AcoefU, AcoefV, & 1759 !! BcoefH, BcoefQ, BcoefU, BcoefV, & 1760 !! ycdragh, ycdragm, & 1761 !! yt1, yq1, yu1, yv1 & 1762 !! ) 1763 !>jyg 1764 !!! 1765 ENDIF ! (iflag_split .eq.0) 1766 !!! 1733 1767 IF (prt_level >=10) THEN 1734 print *,'Variables pour la fusion : Kech_H_xp(j)' ,Kech_H_xp(j) 1735 print *,'Variables pour la fusion : Kech_H_wp(j)' ,Kech_H_wp(j) 1736 print *,'Variables pour la fusion : Kech_Hp(j)' ,Kech_Hp(j) 1737 print *,'Variables pour la fusion : Kech_h(j)' ,Kech_h(j) 1768 PRINT *,'pbl_surface (fuse->): yt(1,:) ',yt(1,:) 1769 PRINT *,'pbl_surface (fuse->): yq(1,:) ',yq(1,:) 1770 PRINT *,'pbl_surface (fuse->): yu(1,:) ',yu(1,:) 1771 PRINT *,'pbl_surface (fuse->): yv(1,:) ',yv(1,:) 1772 PRINT *,'pbl_surface (fuse->): AcoefH(1) ',AcoefH(1) 1773 PRINT *,'pbl_surface (fuse->): BcoefH(1) ',BcoefH(1) 1738 1774 ENDIF 1739 !1740 ! Calcul des coef A, B \'equivalents dans la couche 11741 !1742 AcoefH(j) = AcoefH_x(j) + ywake_s(j)*(Kech_H_wp(j)/Kech_Hp(j))*dd_AH1743 AcoefQ(j) = AcoefQ_x(j) + ywake_s(j)*(Kech_Q_wp(j)/Kech_Qp(j))*dd_AQ1744 AcoefU(j) = AcoefU_x(j) + ywake_s(j)*(Kech_U_wp(j)/Kech_Up(j))*dd_AU1745 AcoefV(j) = AcoefV_x(j) + ywake_s(j)*(Kech_V_wp(j)/Kech_Vp(j))*dd_AV1746 !1747 BcoefH(j) = BcoefH_x(j) + ywake_s(j)*BcoefH_x(j)*(dd_Kh/Kech_h(j))*(1.+Kech_H_wp(j)/Kech_Hp(j)) &1748 + ywake_s(j)*(Kech_H_wp(j)/Kech_Hp(j))*(Kech_h_w(j)/Kech_h(j))*dd_BH1749 1750 BcoefQ(j) = BcoefQ_x(j) + ywake_s(j)*BcoefQ_x(j)*(dd_Kh/Kech_h(j))*(1.+Kech_Q_wp(j)/Kech_Qp(j)) &1751 + ywake_s(j)*(Kech_Q_wp(j)/Kech_Qp(j))*(Kech_h_w(j)/Kech_h(j))*dd_BQ1752 1753 BcoefU(j) = BcoefU_x(j) + ywake_s(j)*BcoefU_x(j)*(dd_Km/Kech_h(j))*(1.+Kech_U_wp(j)/Kech_Up(j)) &1754 + ywake_s(j)*(Kech_U_wp(j)/Kech_Up(j))*(Kech_m_w(j)/Kech_m(j))*dd_BU1755 1756 BcoefV(j) = BcoefV_x(j) + ywake_s(j)*BcoefV_x(j)*(dd_Km/Kech_h(j))*(1.+Kech_V_wp(j)/Kech_Vp(j)) &1757 + ywake_s(j)*(Kech_V_wp(j)/Kech_Vp(j))*(Kech_m_w(j)/Kech_m(j))*dd_BV1758 1759 !1760 ! Calcul des cdrag \'equivalents dans la couche1761 !1762 ycdragm(j) = ycdragm_x(j) + ywake_s(j)*dd_CM1763 ycdragh(j) = ycdragh_x(j) + ywake_s(j)*dd_CH1764 !1765 ! Calcul de T, q, u et v \'equivalents dans la couche 11766 yt(j,1) = yt_x(j,1) + ywake_s(j)*(Kech_h_w(j)/Kech_h(j))*dd_t1767 yq(j,1) = yq_x(j,1) + ywake_s(j)*(Kech_h_w(j)/Kech_h(j))*dd_q1768 yu(j,1) = yu_x(j,1) + ywake_s(j)*(Kech_m_w(j)/Kech_m(j))*dd_u1769 yv(j,1) = yv_x(j,1) + ywake_s(j)*(Kech_m_w(j)/Kech_m(j))*dd_v1770 1771 1772 ENDDO1773 !!!1774 ENDIF ! (iflag_split .eq.1)1775 !!!1776 1775 1777 1776 !**************************************************************************************** … … 1810 1809 rlon, rlat, yrmu0, & 1811 1810 debut, lafin, ydelp(:,1), r_co2_ppm, ysolsw, ysollw, yalb, & 1812 yts, ypplay(:,1), ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),& 1811 !!jyg yts, ypplay(:,1), ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),& 1812 yts, ypplay(:,1), ycdragh, ycdragm, yrain_f, ysnow_f, yt1, yq1,& 1813 1813 AcoefH, AcoefQ, BcoefH, BcoefQ, & 1814 1814 AcoefU, AcoefV, BcoefU, BcoefV, & … … 1856 1856 yrmu0, ylwdown, yalb, ypphi(:,1), & 1857 1857 ysolsw, ysollw, yts, ypplay(:,1), & 1858 ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),& 1858 !!jyg ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),& 1859 ycdragh, ycdragm, yrain_f, ysnow_f, yt1, yq1,& 1859 1860 AcoefH, AcoefQ, BcoefH, BcoefQ, & 1860 1861 AcoefU, AcoefV, BcoefU, BcoefV, & … … 1893 1894 ywindsp, rmu0, yfder, yts, & 1894 1895 itap, dtime, jour, knon, ni, & 1895 ypplay(:,1), zgeo1/RG, ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),& 1896 !!jyg ypplay(:,1), zgeo1/RG, ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),& 1897 ypplay(:,1), zgeo1/RG, ycdragh, ycdragm, yrain_f, ysnow_f, yt1, yq1,& 1896 1898 AcoefH, AcoefQ, BcoefH, BcoefQ, & 1897 1899 AcoefU, AcoefV, BcoefU, BcoefV, & … … 1931 1933 itap, dtime, jour, knon, ni, & 1932 1934 lafin, & 1933 yts, ypplay(:,1), ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),& 1935 !!jyg yts, ypplay(:,1), ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),& 1936 yts, ypplay(:,1), ycdragh, ycdragm, yrain_f, ysnow_f, yt1, yq1,& 1934 1937 AcoefH, AcoefQ, BcoefH, BcoefQ, & 1935 1938 AcoefU, AcoefV, BcoefU, BcoefV, & … … 1990 1993 yfluxlat(:) = flat 1991 1994 ! 1992 IF (iflag_split .eq.0) THEN 1995 !! Test sur iflag_split retire le 2/02/2018, sans vraiment comprendre la raison de ce test. (jyg) 1996 !! IF (iflag_split .eq.0) THEN 1993 1997 do j=1,knon 1994 1998 Kech_h(j) = ycdragh(j) * (1.0+SQRT(yu(j,1)**2+yv(j,1)**2)) * & 1995 1999 ypplay(j,1)/(RD*yt(j,1)) 1996 2000 enddo 1997 ENDIF ! (iflag_split .eq.0)2001 !! ENDIF ! (iflag_split .eq.0) 1998 2002 1999 2003 DO j = 1, knon … … 2018 2022 & , y_flux_t1(j), yfluxlat(j), ywake_s(j) 2019 2023 print*,'beta,ytsurf_new', ybeta(j), ytsurf_new(j) 2020 print*,' effusivity,facteur,cstar', effusivity, facteur,wake_cstar(j)2024 print*,'inertia,facteur,cstar', inertia, facteur,wake_cstar(j) 2021 2025 ENDDO 2022 2026 ENDIF 2023 2027 2024 2028 !!! jyg le 07/02/2012 puis le 10/04/2013 2025 IF (iflag_split .eq.1) THEN 2026 !!! 2027 DO j=1,knon 2028 y_delta_flux_t1(j) = ( Kech_H_wp(j)*Kech_H_xp(j)*(AcoefH_w(j)-AcoefH_x(j)) + & 2029 y_flux_t1(j)*(Kech_H_wp(j)-Kech_H_xp(j)) ) / Kech_Hp(j) 2030 y_delta_flux_q1(j) = ( Kech_Q_wp(j)*Kech_Q_xp(j)*(AcoefQ_w(j)-AcoefQ_x(j)) + & 2031 y_flux_q1(j)*(Kech_Q_wp(j)-Kech_Q_xp(j)) ) / Kech_Qp(j) 2032 y_delta_flux_u1(j) = ( Kech_U_wp(j)*Kech_U_xp(j)*(AcoefU_w(j)-AcoefU_x(j)) + & 2033 y_flux_u1(j)*(Kech_U_wp(j)-Kech_U_xp(j)) ) / Kech_Up(j) 2034 y_delta_flux_v1(j) = ( Kech_V_wp(j)*Kech_V_xp(j)*(AcoefV_w(j)-AcoefV_x(j)) + & 2035 y_flux_v1(j)*(Kech_V_wp(j)-Kech_V_xp(j)) ) / Kech_Vp(j) 2036 ! 2037 y_flux_t1_x(j)=y_flux_t1(j) - ywake_s(j)*y_delta_flux_t1(j) 2038 y_flux_t1_w(j)=y_flux_t1(j) + (1.-ywake_s(j))*y_delta_flux_t1(j) 2039 y_flux_q1_x(j)=y_flux_q1(j) - ywake_s(j)*y_delta_flux_q1(j) 2040 y_flux_q1_w(j)=y_flux_q1(j) + (1.-ywake_s(j))*y_delta_flux_q1(j) 2041 y_flux_u1_x(j)=y_flux_u1(j) - ywake_s(j)*y_delta_flux_u1(j) 2042 y_flux_u1_w(j)=y_flux_u1(j) + (1.-ywake_s(j))*y_delta_flux_u1(j) 2043 y_flux_v1_x(j)=y_flux_v1(j) - ywake_s(j)*y_delta_flux_v1(j) 2044 y_flux_v1_w(j)=y_flux_v1(j) + (1.-ywake_s(j))*y_delta_flux_v1(j) 2045 ! 2046 yfluxlat_x(j)=y_flux_q1_x(j)*RLVTT 2047 yfluxlat_w(j)=y_flux_q1_w(j)*RLVTT 2048 2049 ENDDO 2029 !! IF (iflag_split .eq.1) THEN 2030 !!!!! 2031 !!!jyg< 2032 !! CALL wx_pbl_split_no_dts(knon, ywake_s, & 2033 !! AcoefH_x, AcoefH_w, & 2034 !! AcoefQ_x, AcoefQ_w, & 2035 !! AcoefU_x, AcoefU_w, & 2036 !! AcoefV_x, AcoefV_w, & 2037 !! y_flux_t1, y_flux_q1, y_flux_u1, y_flux_v1, & 2038 !! y_flux_t1_x, y_flux_t1_w, & 2039 !! y_flux_q1_x, y_flux_q1_w, & 2040 !! y_flux_u1_x, y_flux_u1_w, & 2041 !! y_flux_v1_x, y_flux_v1_w, & 2042 !! yfluxlat_x, yfluxlat_w & 2043 !! ) 2044 !! ELSE IF (iflag_split .ge. 2) THEN 2045 IF (iflag_split .GE. 1) THEN 2046 CALL wx_pbl0_split(knon, dtime, ywake_s, & 2047 y_flux_t1, y_flux_q1, y_flux_u1, y_flux_v1, & 2048 y_flux_t1_x, y_flux_t1_w, & 2049 y_flux_q1_x, y_flux_q1_w, & 2050 y_flux_u1_x, y_flux_u1_w, & 2051 y_flux_v1_x, y_flux_v1_w, & 2052 yfluxlat_x, yfluxlat_w, & 2053 y_delta_tsurf & 2054 ) 2055 ENDIF ! (iflag_split .ge. 1) 2056 !>jyg 2050 2057 ! 2051 2058 … … 2060 2067 !!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))) 2061 2068 !!jyg!! 2062 !!jyg!!! delta_coef(j)=dtime/( effusivity*sqrt(tau_eq(j)))2063 !!jyg!! delta_coef(j)=facteur*sqrt(tau_eq(j))/ effusivity2069 !!jyg!!! delta_coef(j)=dtime/(inertia*sqrt(tau_eq(j))) 2070 !!jyg!! delta_coef(j)=facteur*sqrt(tau_eq(j))/inertia 2064 2071 !!jyg!!! delta_coef(j)=0. 2065 2072 !!jyg!! ELSE … … 2090 2097 !!jyg!!!!! fin nrlmd le 13/06/2011 2091 2098 !!jyg!! 2099 IF (iflag_split .ge. 1) THEN 2092 2100 IF (prt_level >=10) THEN 2093 2101 DO j = 1, knon … … 2105 2113 & , 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) 2106 2114 print*,'beta,ytsurf_new,yqsatsurf', ybeta(j), ytsurf_new(j), yqsatsurf(j) 2107 print*,' effusivity,facteur,cstar', effusivity, facteur,wake_cstar(j)2115 print*,'inertia,facteur,cstar', inertia, facteur,wake_cstar(j) 2108 2116 ENDDO 2109 2117 ENDIF ! (prt_level >=10) 2110 2118 2111 2119 !!! jyg le 07/02/2012 2112 ENDIF ! (iflag_split . eq.1)2120 ENDIF ! (iflag_split .ge.1) 2113 2121 !!! 2114 2122 … … 2363 2371 !!! 2364 2372 !!! nrlmd le 13/06/2011 2365 delta_tsurf(i,nsrf)=y_delta_tsurf(j)*ypct(j) 2373 !!jyg20170131 delta_tsurf(i,nsrf)=y_delta_tsurf(j)*ypct(j) 2374 delta_tsurf(i,nsrf)=y_delta_tsurf(j) 2375 ! 2366 2376 cdragh_x(i) = cdragh_x(i) + ycdragh_x(j)*ypct(j) 2367 2377 cdragh_w(i) = cdragh_w(i) + ycdragh_w(j)*ypct(j) … … 2573 2583 ! print*, tair1,yt(:,1),y_d_t(:,1) 2574 2584 2575 ! Calculate the temperature flag_pbl_surface_t2m_bugiflag_pbl_surface_t2m_bug etrelative humidity at 2m and the wind at 10m2585 ! Calculate the temperature and relative humidity at 2m and the wind at 10m 2576 2586 !!! jyg le 07/02/2012 2577 2587 IF (iflag_split .eq.0) THEN … … 3089 3099 IF (ALLOCATED(qsurf)) DEALLOCATE(qsurf) 3090 3100 IF (ALLOCATED(ftsoil)) DEALLOCATE(ftsoil) 3101 3102 !jyg< 3103 !**************************************************************************************** 3104 ! Deallocate variables for pbl splitting 3105 ! 3106 !**************************************************************************************** 3107 3108 CALL wx_pbl_final 3109 !>jyg 3091 3110 3092 3111 END SUBROUTINE pbl_surface_final -
LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90
r3148 r3179 347 347 !!!$OMP THREADPRIVATE(q_x, q_w) 348 348 !>jyg 349 !!! Sorties ferret350 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dtvdf_x, dtvdf_w351 !$OMP THREADPRIVATE(dtvdf_x, dtvdf_w)352 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dqvdf_x, dqvdf_w353 !$OMP THREADPRIVATE(dqvdf_x, dqvdf_w)354 349 ! Variables suppl\E9mentaires dans physiq.F relative au splitting de la surface 355 350 REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: pbl_tke_input … … 579 574 ALLOCATE(plul_st(klon),plul_th(klon)) 580 575 ALLOCATE(d_t_vdf(klon,klev),d_q_vdf(klon,klev),d_t_diss(klon,klev)) 581 !nrlmd+jyg<582 ALLOCATE(d_t_vdf_w(klon,klev),d_q_vdf_w(klon,klev))583 ALLOCATE(d_t_vdf_x(klon,klev),d_q_vdf_x(klon,klev))584 !>nrlmd+jyg585 576 ALLOCATE(d_u_vdf(klon,klev),d_v_vdf(klon,klev)) 586 577 ALLOCATE(d_t_oli(klon,klev),d_t_oro(klon,klev)) … … 724 715 !! ALLOCATE(q_x(klon,klev), q_w(klon,klev)) 725 716 !>jyg 726 ALLOCATE(d tvdf_x(klon,klev), dtvdf_w(klon,klev))727 ALLOCATE(d qvdf_x(klon,klev), dqvdf_w(klon,klev))717 ALLOCATE(d_t_vdf_x(klon,klev), d_t_vdf_w(klon,klev)) 718 ALLOCATE(d_q_vdf_x(klon,klev), d_q_vdf_w(klon,klev)) 728 719 ALLOCATE(pbl_tke_input(klon,klev+1,nbsrf)) 729 720 ALLOCATE(t_therm(klon,klev), q_therm(klon,klev),u_therm(klon,klev), v_therm(klon,klev)) … … 881 872 DEALLOCATE(plul_st,plul_th) 882 873 DEALLOCATE(d_t_vdf,d_q_vdf,d_t_diss) 883 !nrlmd+jyg<884 DEALLOCATE(d_t_vdf_w,d_q_vdf_w)885 DEALLOCATE(d_t_vdf_x,d_q_vdf_x)886 !>nrlmd+jyg887 874 DEALLOCATE(d_u_vdf,d_v_vdf) 888 875 DEALLOCATE(d_t_oli,d_t_oro) … … 1016 1003 !! DEALLOCATE(q_x, q_w) 1017 1004 !>jyg 1018 DEALLOCATE(d tvdf_x, dtvdf_w)1019 DEALLOCATE(d qvdf_x, dqvdf_w)1005 DEALLOCATE(d_t_vdf_x, d_t_vdf_w) 1006 DEALLOCATE(d_q_vdf_x, d_q_vdf_w) 1020 1007 DEALLOCATE(pbl_tke_input) 1021 1008 DEALLOCATE(t_therm, q_therm, u_therm, v_therm) -
LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90
r3171 r3179 258 258 vwriteSTD, wwriteSTD, phiwriteSTD, qwriteSTD, & 259 259 twriteSTD, alp_wake, & 260 dtvdf_x ,dtvdf_w ,dqvdf_x ,dqvdf_w , & 260 !! dtvdf_x ,dtvdf_w ,dqvdf_x ,dqvdf_w , & 261 d_t_vdf_x ,d_t_vdf_w ,d_q_vdf_x ,d_q_vdf_w , & 261 262 sens_x ,sens_w ,zxfluxlat_x,zxfluxlat_w, & 262 263 cdragh_x ,cdragh_w ,cdragm_x ,cdragm_w , & … … 1102 1103 CALL histwrite_phy(o_alp_wk, alp_wake) 1103 1104 IF (iflag_pbl_split>=1) THEN 1104 IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_x(1:klon,1:klev)/pdtphys 1105 !! IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_x(1:klon,1:klev)/pdtphys 1106 !! CALL histwrite_phy(o_dtvdf_x ,zx_tmp_fi3d) 1107 !! IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_w(1:klon,1:klev)/pdtphys 1108 !! CALL histwrite_phy(o_dtvdf_w ,zx_tmp_fi3d) 1109 !! IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_x(1:klon,1:klev)/pdtphys 1110 !! CALL histwrite_phy(o_dqvdf_x ,zx_tmp_fi3d) 1111 !! IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_w(1:klon,1:klev)/pdtphys 1112 ! 1113 IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_x(1:klon,1:klev)/pdtphys 1105 1114 CALL histwrite_phy(o_dtvdf_x ,zx_tmp_fi3d) 1106 IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d tvdf_w(1:klon,1:klev)/pdtphys1115 IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_w(1:klon,1:klev)/pdtphys 1107 1116 CALL histwrite_phy(o_dtvdf_w ,zx_tmp_fi3d) 1108 IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d qvdf_x(1:klon,1:klev)/pdtphys1117 IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_x(1:klon,1:klev)/pdtphys 1109 1118 CALL histwrite_phy(o_dqvdf_x ,zx_tmp_fi3d) 1110 IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_w(1:klon,1:klev)/pdtphys 1119 IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_w(1:klon,1:klev)/pdtphys 1120 ! 1111 1121 CALL histwrite_phy(o_dqvdf_w ,zx_tmp_fi3d) 1112 1122 CALL histwrite_phy(o_sens_x ,sens_x ) -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r3178 r3179 63 63 ! 64 64 d_t_vdf,d_q_vdf,d_u_vdf,d_v_vdf,d_t_diss, & 65 d_t_vdf_w,d_q_vdf_w, &66 d_t_vdf_x,d_q_vdf_x, &67 65 d_ts, & 68 66 ! … … 135 133 zxfluxlat_x, zxfluxlat_w, & 136 134 ! 137 d tvdf_x, dtvdf_w, &138 d qvdf_x, dqvdf_w, &135 d_t_vdf_x, d_t_vdf_w, & 136 d_q_vdf_x, d_q_vdf_w, & 139 137 pbl_tke_input, & 140 138 t_therm, q_therm, u_therm, v_therm, & … … 2271 2269 !!jyg IF (prt_level .ge. 2 .and. mod(iflag_pbl_split,2) .eq. 1) THEN 2272 2270 IF (prt_level .ge. 2 .and. mod(iflag_pbl_split,10) .ge. 1) THEN 2273 print *,'debut du splitting de la PBL' 2271 print *,'debut du splitting de la PBL, wake_s = ', wake_s(:) 2272 print *,'debut du splitting de la PBL, wake_deltat = ', wake_deltat(:,1) 2273 print *,'debut du splitting de la PBL, wake_deltaq = ', wake_deltaq(:,1) 2274 2274 ENDIF 2275 2275 ! !! … … 2984 2984 call prt_enerbil('wake',itap) 2985 2985 ENDIF ! (iflag_wake_tend .GT. 0.) 2986 ! 2987 IF (prt_level .GE. 10) THEN 2988 print *,' physiq, after calwake, wake_s: ',wake_s(:) 2989 print *,' physiq, after calwake, wake_deltat: ',wake_deltat(:,1) 2990 print *,' physiq, after calwake, wake_deltaq: ',wake_deltaq(:,1) 2991 ENDIF 2986 2992 2987 2993 IF (iflag_alp_wk_cond .GT. 0.) THEN
Note: See TracChangeset
for help on using the changeset viewer.