Changeset 3817 for LMDZ6/trunk/libf/phylmd/pbl_surface_mod.F90
- Timestamp:
- Feb 3, 2021, 8:58:55 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/pbl_surface_mod.F90
r3815 r3817 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 USE ioipsl_getin_p_mod, ONLY : getin_p 26 USE stdlevvar_mod 25 27 USE wx_pbl_mod, ONLY : wx_pbl_init, wx_pbl_final, & 26 28 !! wx_pbl_fuse_no_dts, wx_pbl_split_no_dts, & … … 43 45 INTEGER, SAVE :: iflag_pbl_surface_t2m_bug 44 46 !$OMP THREADPRIVATE(iflag_pbl_surface_t2m_bug) 47 integer, save :: iflag_new_t2mq2m 48 !$OMP THREADPRIVATE(iflag_new_t2mq2m) 49 45 50 !FC 46 51 ! integer, save :: iflag_frein … … 178 183 alb_dir_m, alb_dif_m, zxsens, zxevap, & 179 184 alb3_lic, runoff, snowhgt, qsnow, to_ice, sissnow, & 180 zxtsol, zxfluxlat, zt2m, qsat2m, 185 zxtsol, zxfluxlat, zt2m, qsat2m, zn2mout, & 181 186 d_t, d_q, d_u, d_v, d_t_diss, & 182 187 !!! nrlmd+jyg le 02/05/2011 et le 20/02/2012 … … 404 409 REAL, DIMENSION(klon), INTENT(OUT) :: zxfluxlat ! latent flux, mean for each grid point 405 410 REAL, DIMENSION(klon), INTENT(OUT) :: zt2m ! temperature at 2m, mean for each grid point 411 INTEGER, DIMENSION(klon, 6), INTENT(OUT) :: zn2mout ! number of times the 2m temperature is out of the [tsol,temp] 406 412 REAL, DIMENSION(klon), INTENT(OUT) :: qsat2m 407 413 REAL, DIMENSION(klon, klev), INTENT(OUT) :: d_t ! change in temperature … … 547 553 REAL, DIMENSION(klon) :: y_flux_u1, y_flux_v1 548 554 REAL, DIMENSION(klon) :: yt2m, yq2m, yu10m 555 INTEGER, DIMENSION(klon, nbsrf, 6) :: yn2mout, yn2mout_x, yn2mout_w 556 INTEGER, DIMENSION(klon, nbsrf, 6) :: n2mout, n2mout_x, n2mout_w 549 557 REAL, DIMENSION(klon) :: yustar 550 558 REAL, DIMENSION(klon) :: ywstar … … 853 861 854 862 IF (first_call) THEN 863 864 iflag_new_t2mq2m=1 865 CALL getin_p('iflag_new_t2mq2m',iflag_new_t2mq2m) 866 print*,'pbl_iflag_new_t2mq2m=',iflag_new_t2mq2m 867 855 868 print*,'PBL SURFACE AVEC GUSTINESS' 856 869 first_call=.FALSE. … … 919 932 zxfluxlat(:)=0. 920 933 zt2m(:)=0. ; zq2m(:)=0. ; qsat2m(:)=0. ; rh2m(:)=0. 934 zn2mout(:,:)=0 ; 921 935 d_t(:,:)=0. ; d_t_diss(:,:)=0. ; d_q(:,:)=0. ; d_u(:,:)=0. ; d_v(:,:)=0. 922 936 zcoefh(:,:,:)=0. ; zcoefm(:,:,:)=0. … … 1857 1871 1858 1872 ! Calculate the temperature et relative humidity at 2m and the wind at 10m 1873 IF (iflag_new_t2mq2m==1) THEN 1874 CALL stdlevvarn(klon, knon, is_ter, zxli, & 1875 yu(:,1), yv(:,1), yt(:,1), yq(:,1), zgeo1, & 1876 yts, yqsurf, yz0m, yz0h, ypaprs(:,1), ypplay(:,1), & 1877 yt2m, yq2m, yt10m, yq10m, yu10m, yn2mout(:, nsrf, :)) 1878 ELSE 1859 1879 CALL stdlevvar(klon, knon, is_ter, zxli, & 1860 1880 yu(:,1), yv(:,1), yt(:,1), yq(:,1), zgeo1, & 1861 1881 yts, yqsurf, yz0m, yz0h, ypaprs(:,1), ypplay(:,1), & 1862 1882 yt2m, yq2m, yt10m, yq10m, yu10m, yustar) 1883 ENDIF 1863 1884 1864 1885 ENDIF … … 2686 2707 !!! jyg le 07/02/2012 2687 2708 IF (iflag_split .eq.0) THEN 2709 IF (iflag_new_t2mq2m==1) THEN 2710 CALL stdlevvarn(klon, knon, nsrf, zxli, & 2711 uzon, vmer, tair1, qair1, zgeo1, & 2712 tairsol, qairsol, yz0m, yz0h_oupas, psfce, patm, & 2713 yt2m, yq2m, yt10m, yq10m, yu10m, yn2mout(:, nsrf, :)) 2714 ELSE 2688 2715 CALL stdlevvar(klon, knon, nsrf, zxli, & 2689 2716 uzon, vmer, tair1, qair1, zgeo1, & 2690 2717 tairsol, qairsol, yz0m, yz0h_oupas, psfce, patm, & 2691 2718 yt2m, yq2m, yt10m, yq10m, yu10m, yustar) 2719 ENDIF 2692 2720 ELSE !(iflag_split .eq.0) 2721 IF (iflag_new_t2mq2m==1) THEN 2722 CALL stdlevvarn(klon, knon, nsrf, zxli, & 2723 uzon_x, vmer_x, tair1_x, qair1_x, zgeo1_x, & 2724 tairsol_x, qairsol, yz0m, yz0h_oupas, psfce, patm, & 2725 yt2m_x, yq2m_x, yt10m_x, yq10m_x, yu10m_x, yn2mout_x(:, nsrf, :)) 2726 CALL stdlevvarn(klon, knon, nsrf, zxli, & 2727 uzon_w, vmer_w, tair1_w, qair1_w, zgeo1_w, & 2728 tairsol_w, qairsol, yz0m, yz0h_oupas, psfce, patm, & 2729 yt2m_w, yq2m_w, yt10m_w, yq10m_w, yu10m_w, yn2mout_w(:, nsrf, :)) 2730 ELSE 2693 2731 CALL stdlevvar(klon, knon, nsrf, zxli, & 2694 2732 uzon_x, vmer_x, tair1_x, qair1_x, zgeo1_x, & … … 2699 2737 tairsol_w, qairsol, yz0m, yz0h_oupas, psfce, patm, & 2700 2738 yt2m_w, yq2m_w, yt10m_w, yq10m_w, yu10m_w, yustar_w) 2739 ENDIF 2701 2740 !!! 2702 2741 ENDIF ! (iflag_split .eq.0) … … 2712 2751 u10m(i,nsrf)=(yu10m(j) * uzon(j))/SQRT(uzon(j)**2+vmer(j)**2) 2713 2752 v10m(i,nsrf)=(yu10m(j) * vmer(j))/SQRT(uzon(j)**2+vmer(j)**2) 2753 ! 2754 DO k = 1, 6 2755 n2mout(i,nsrf,k) = yn2mout(j,nsrf,k) 2756 END DO 2757 ! 2714 2758 ENDDO 2715 2759 ELSE !(iflag_split .eq.0) … … 2722 2766 u10m_x(i,nsrf)=(yu10m_x(j) * uzon_x(j))/SQRT(uzon_x(j)**2+vmer_x(j)**2) 2723 2767 v10m_x(i,nsrf)=(yu10m_x(j) * vmer_x(j))/SQRT(uzon_x(j)**2+vmer_x(j)**2) 2768 ! 2769 DO k = 1, 6 2770 n2mout_x(i,nsrf,k) = yn2mout_x(j,nsrf,k) 2771 END DO 2772 ! 2724 2773 ENDDO 2725 2774 DO j=1, knon … … 2735 2784 u10m(i,nsrf) = u10m_x(i,nsrf) + wake_s(i)*(u10m_w(i,nsrf)-u10m_x(i,nsrf)) 2736 2785 v10m(i,nsrf) = v10m_x(i,nsrf) + wake_s(i)*(v10m_w(i,nsrf)-v10m_x(i,nsrf)) 2786 ! 2787 DO k = 1, 6 2788 n2mout_w(i,nsrf,k) = yn2mout_w(j,nsrf,k) 2789 END DO 2790 ! 2737 2791 ENDDO 2738 2792 !!! … … 2991 3045 ! 2992 3046 zxtsol(:) = 0.0 ; zxfluxlat(:) = 0.0 2993 zt2m(:) = 0.0 ; zq2m(:) = 0.0 3047 zt2m(:) = 0.0 ; zq2m(:) = 0.0 ; zn2mout(:,:) = 0 2994 3048 zustar(:)=0.0 ; zu10m(:) = 0.0 ; zv10m(:) = 0.0 2995 3049 s_pblh(:) = 0.0 ; s_plcl(:) = 0.0 … … 3044 3098 zt2m(i) = zt2m(i) + t2m(i,nsrf) * pctsrf(i,nsrf) 3045 3099 zq2m(i) = zq2m(i) + q2m(i,nsrf) * pctsrf(i,nsrf) 3100 ! 3101 DO k = 1, 6 3102 zn2mout(i,k) = zn2mout(i,k) + n2mout(i,nsrf,k) * pctsrf(i,nsrf) 3103 ENDDO 3104 ! 3046 3105 zustar(i) = zustar(i) + ustar(i,nsrf) * pctsrf(i,nsrf) 3047 3106 wstar(i,is_ave)=wstar(i,is_ave)+wstar(i,nsrf)*pctsrf(i,nsrf) … … 3075 3134 zt2m(i) = zt2m(i) + (t2m_x(i,nsrf)+wake_s(i)*(t2m_w(i,nsrf)-t2m_x(i,nsrf))) * pctsrf(i,nsrf) 3076 3135 zq2m(i) = zq2m(i) + q2m_x(i,nsrf) * pctsrf(i,nsrf) 3136 ! 3137 DO k = 1, 6 3138 zn2mout(i,k) = zn2mout(i,k) + n2mout_x(i,nsrf,k) * pctsrf(i,nsrf) 3139 ENDDO 3140 ! 3077 3141 zustar(i) = zustar(i) + ustar_x(i,nsrf) * pctsrf(i,nsrf) 3078 3142 wstar(i,is_ave)=wstar(i,is_ave)+wstar_x(i,nsrf)*pctsrf(i,nsrf) … … 3153 3217 DO nsrf = 1, nbsrf 3154 3218 DO i = 1, klon 3155 zxqsurf(i) = zxqsurf(i) + qsurf(i,nsrf) * pctsrf(i,nsrf)3219 zxqsurf(i) = zxqsurf(i) + MAX(qsurf(i,nsrf),0.0) * pctsrf(i,nsrf) 3156 3220 zxsnow(i) = zxsnow(i) + snow(i,nsrf) * pctsrf(i,nsrf) 3157 3221 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.