Changeset 4910 for LMDZ6/trunk/libf/phylmd/lmdz_lscp.F90
- Timestamp:
- Apr 18, 2024, 6:16:25 PM (4 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/lmdz_lscp.F90
r4879 r4910 12 12 radocond, radicefrac, rain, snow, & 13 13 frac_impa, frac_nucl, beta, & 14 prfl, psfl, rhcl, zqta, fraca, &15 ztv, zpspsk, ztla, zthl, iflag_cld_th, &14 prfl, psfl, rhcl, qta, fraca, & 15 tv, pspsk, tla, thl, iflag_cld_th, & 16 16 iflag_ice_thermo, ok_ice_sursat, qsatl, qsats, & 17 17 distcltop,temp_cltop, & … … 104 104 USE lmdz_lscp_ini, ONLY : prt_level, lunout 105 105 USE lmdz_lscp_ini, ONLY : seuil_neb, niter_lscp, iflag_evap_prec, t_coup, DDT0, ztfondue, rain_int_min 106 USE lmdz_lscp_ini, ONLY : iflag_mpc_bl,ok_radocond_snow, a_tr_sca, cld_expo_con, cld_expo_lsc106 USE lmdz_lscp_ini, ONLY : ok_radocond_snow, a_tr_sca, cld_expo_con, cld_expo_lsc 107 107 USE lmdz_lscp_ini, ONLY : iflag_cloudth_vert, iflag_rain_incloud_vol, iflag_t_glace, t_glace_min 108 108 USE lmdz_lscp_ini, ONLY : coef_eva, coef_sub,cld_tau_lsc, cld_tau_con, cld_lc_lsc, cld_lc_con 109 109 USE lmdz_lscp_ini, ONLY : iflag_bergeron, iflag_fisrtilp_qsat, iflag_vice, cice_velo, dice_velo 110 USE lmdz_lscp_ini, ONLY : iflag_autoconversion, ffallv_con, ffallv_lsc 110 USE lmdz_lscp_ini, ONLY : iflag_autoconversion, ffallv_con, ffallv_lsc, min_frac_th_cld 111 111 USE lmdz_lscp_ini, ONLY : RCPD, RLSTT, RLVTT, RLMLT, RVTMP2, RTT, RD, RG 112 112 USE lmdz_lscp_ini, ONLY : ok_poprecip, ok_bug_fonte_lscp … … 138 138 !Inputs associated with thermal plumes 139 139 140 REAL, DIMENSION(klon,klev), INTENT(IN) :: ztv ! virtual potential temperature [K]141 REAL, DIMENSION(klon,klev), INTENT(IN) :: zqta ! specific humidity within thermals [kg/kg]142 REAL, DIMENSION(klon,klev), INTENT(IN) :: fraca 143 REAL, DIMENSION(klon,klev), INTENT(IN) :: zpspsk ! exner potential (p/100000)**(R/cp)144 REAL, DIMENSION(klon,klev), INTENT(IN) :: ztla ! liquid temperature within thermals [K]140 REAL, DIMENSION(klon,klev), INTENT(IN) :: tv ! virtual potential temperature [K] 141 REAL, DIMENSION(klon,klev), INTENT(IN) :: qta ! specific humidity within thermals [kg/kg] 142 REAL, DIMENSION(klon,klev), INTENT(IN) :: fraca ! fraction of thermals within the mesh [-] 143 REAL, DIMENSION(klon,klev), INTENT(IN) :: pspsk ! exner potential (p/100000)**(R/cp) 144 REAL, DIMENSION(klon,klev), INTENT(IN) :: tla ! liquid temperature within thermals [K] 145 145 146 146 ! INPUT/OUTPUT variables 147 147 !------------------------ 148 148 149 REAL, DIMENSION(klon,klev), INTENT(INOUT) :: zthl! liquid potential temperature [K]149 REAL, DIMENSION(klon,klev), INTENT(INOUT) :: thl ! liquid potential temperature [K] 150 150 REAL, DIMENSION(klon,klev), INTENT(INOUT) :: ratqs ! function of pressure that sets the large-scale 151 151 … … 236 236 REAL, DIMENSION(klon) :: Zpdf_a,zpdf_b,zpdf_e1,zpdf_e2 237 237 REAL :: erf 238 REAL, DIMENSION(klon ,klev) :: icefrac_mpc238 REAL, DIMENSION(klon) :: zfice_th 239 239 REAL, DIMENSION(klon) :: qcloud, qincloud_mpc 240 240 REAL, DIMENSION(klon) :: zrfl, zrfln … … 713 713 714 714 IF (iflag_cld_th.GE.5) THEN 715 716 IF (iflag_mpc_bl .LT. 1) THEN 717 718 IF (iflag_cloudth_vert.LE.2) THEN 719 720 CALL cloudth(klon,klev,k,ztv, & 721 zq,zqta,fraca, & 722 qcloud,ctot,zpspsk,paprs,pplay,ztla,zthl, & 715 ! Cloud cover and content in meshes affected by shallow convection, 716 ! are retrieved from a bi-gaussian distribution of the saturation deficit 717 ! following Jam et al. 2013 718 719 IF (iflag_cloudth_vert.LE.2) THEN 720 ! Old version of Arnaud Jam 721 722 CALL cloudth(klon,klev,k,tv, & 723 zq,qta,fraca, & 724 qcloud,ctot,pspsk,paprs,pplay,tla,thl, & 723 725 ratqs,zqs,temp, & 724 726 cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv) … … 726 728 727 729 ELSEIF (iflag_cloudth_vert.GE.3 .AND. iflag_cloudth_vert.LE.5) THEN 728 729 CALL cloudth_v3(klon,klev,k,ztv, & 730 zq,zqta,fraca, & 731 qcloud,ctot,ctot_vol,zpspsk,paprs,pplay,ztla,zthl, & 730 ! Default version of Arnaud Jam 731 732 CALL cloudth_v3(klon,klev,k,tv, & 733 zq,qta,fraca, & 734 qcloud,ctot,ctot_vol,pspsk,paprs,pplay,tla,thl, & 732 735 ratqs,zqs,temp, & 733 736 cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv) 734 737 735 !Jean Jouhaud's version, Decembre 2018736 !-------------------------------------737 738 738 739 ELSEIF (iflag_cloudth_vert.EQ.6) THEN 739 740 CALL cloudth_v6(klon,klev,k,ztv, & 741 zq,zqta,fraca, & 742 qcloud,ctot,ctot_vol,zpspsk,paprs,pplay,ztla,zthl, & 740 ! Jean Jouhaud's version, with specific separation between surface and volume 741 ! cloud fraction Decembre 2018 742 743 CALL cloudth_v6(klon,klev,k,tv, & 744 zq,qta,fraca, & 745 qcloud,ctot,ctot_vol,pspsk,paprs,pplay,tla,thl, & 743 746 ratqs,zqs,temp, & 744 747 cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv) 745 748 746 ENDIF 747 748 ELSE 749 ! cloudth_v3 + cold microphysical considerations 750 ! + stationary mixed-phase cloud model 751 752 CALL cloudth_mpc(klon,klev,k,iflag_mpc_bl,mpc_bl_points, & 753 temp,ztv,zq,zqta,fraca, zpspsk, & 754 paprs,pplay,ztla,zthl,ratqs,zqs,psfl, & 755 qcloud,qincloud_mpc,icefrac_mpc,ctot,ctot_vol, & 756 cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv) 757 758 ENDIF ! iflag_mpc_bl 749 ELSEIF (iflag_cloudth_vert .EQ. 7) THEN 750 ! Updated version of Arnaud Jam (correction by E. Vignon) + adapted treatment 751 ! for boundary-layer mixed phase clouds following Vignon et al. 752 CALL cloudth_mpc(klon,klev,k,mpc_bl_points,zt,zq,qta(:,k),fraca(:,k), & 753 pspsk(:,k),paprs(:,k+1),paprs(:,k),pplay(:,k), tla(:,k), & 754 ratqs(:,k),qcloud,qincloud_mpc,zfice_th,ctot(:,k),ctot_vol(:,k), & 755 cloudth_sth(:,k),cloudth_senv(:,k),cloudth_sigmath(:,k),cloudth_sigmaenv(:,k)) 756 757 ENDIF 758 759 759 760 760 DO i=1,klon … … 774 774 775 775 ! lognormal distribution when no thermals 776 lognormale = fraca(:,k) < 1e-10776 lognormale = fraca(:,k) < min_frac_th_cld 777 777 778 778 ELSE … … 934 934 temp_cltop(:,k)=temp_cltop1D(:) 935 935 ENDIF 936 937 936 ! Partition function in stratiform clouds (will be overwritten in boundary-layer MPCs) 938 CALL icefrac_lscp(klon,zt,iflag_ice_thermo,distcltop1D,temp_cltop1D,zfice, 937 CALL icefrac_lscp(klon,zt,iflag_ice_thermo,distcltop1D,temp_cltop1D,zfice,dzfice) 939 938 940 939 … … 943 942 944 943 IF (mpc_bl_points(i,k) .GT. 0) THEN 944 945 945 zcond(i) = MAX(0.0,qincloud_mpc(i))*rneb(i,k) 946 946 ! following line is very strange and probably wrong … … 948 948 ! water vapor update and partition function if thermals 949 949 zq(i) = zq(i) - zcond(i) 950 zfice(i)= icefrac_mpc(i,k)950 zfice(i)=zfice_th(i) 951 951 952 952 ELSE … … 1314 1314 ENDIF 1315 1315 1316 1316 1317 ENDIF ! ok_poprecip 1317 1318
Note: See TracChangeset
for help on using the changeset viewer.