Changeset 2056 for LMDZ5/branches/testing/libf/phylmd/fisrtilp.F90
- Timestamp:
- Jun 11, 2014, 3:46:46 PM (10 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 1998,2000-2023,2025-2029,2032,2034,2036-2049,2051-2055
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/phylmd/fisrtilp.F90
r1910 r2056 13 13 ! 14 14 USE dimphy 15 USE microphys_mod ! cloud microphysics (JBM 3/14) 15 16 IMPLICIT none 16 17 !====================================================================== … … 26 27 include "tracstoke.h" 27 28 include "fisrtilp.h" 29 include "nuage.h" ! JBM (3/14) 28 30 include "iniprint.h" 29 31 … … 111 113 REAL zoliq(klon), zcond(klon), zq(klon), zqn(klon), zdelq 112 114 REAL zoliqp(klon), zoliqi(klon) 113 REAL ztglace, zt(klon) 114 INTEGER nexpo ! exponentiel pour glace/eau 115 REAL zt(klon) 116 ! JBM (3/14) nexpo is replaced by exposant_glace 117 ! REAL nexpo ! exponentiel pour glace/eau 118 ! INTEGER, PARAMETER :: nexpo=6 119 INTEGER exposant_glace_old 120 REAL t_glace_min_old 115 121 REAL zdz(klon),zrho(klon),ztot , zrhol(klon) 116 122 REAL zchau ,zfroi ,zfice(klon),zneb(klon) … … 202 208 ! nexpo regle la raideur de la transition eau liquide / eau glace. 203 209 ! 204 ztglace = RTT - 15.0 205 !AJ< 206 IF (ice_thermo) THEN 207 nexpo = 2 208 ELSE 209 nexpo = 6 210 IF (iflag_t_glace.EQ.0) THEN 211 ! ztglace = RTT - 15.0 212 t_glace_min_old = RTT - 15.0 213 !AJ< 214 IF (ice_thermo) THEN 215 ! nexpo = 2 216 exposant_glace_old = 2 217 ELSE 218 ! nexpo = 6 219 exposant_glace_old = 6 220 ENDIF 210 221 ENDIF 222 211 223 !! RLVTT = 2.501e6 ! pas de redefinition des constantes physiques (jyg) 212 224 !! RLSTT = 2.834e6 ! pas de redefinition des constantes physiques (jyg) … … 710 722 endif 711 723 ELSE 724 IF (iflag_t_glace.EQ.0) THEN 712 725 if (iflag_fisrtilp_qsat.lt.1) then 713 726 DO i = 1, klon 714 zfice(i) = 1.0 - (zt(i)- ztglace) / (273.15-ztglace)727 zfice(i) = 1.0 - (zt(i)-t_glace_min_old) / (273.15-t_glace_min_old) 715 728 zfice(i) = MIN(MAX(zfice(i),0.0),1.0) 716 zfice(i) = zfice(i)**nexpo 729 zfice(i) = zfice(i)**exposant_glace_old 730 ! zfice(i) = zfice(i)**nexpo 717 731 zt(i) = zt(i) + (1.-zfice(i))*zcond(i) * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) & 718 732 +zfice(i)*zcond(i) * RLSTT/RCPD/(1.0+RVTMP2*zq(i)) … … 720 734 else 721 735 DO i=1, klon 722 zfice(i) = 1.0 - (zt(i)- ztglace) / (273.15-ztglace)736 zfice(i) = 1.0 - (zt(i)-t_glace_min_old) / (273.15-t_glace_min_old) 723 737 zfice(i) = MIN(MAX(zfice(i),0.0),1.0) 724 zfice(i) = zfice(i)**nexpo 738 zfice(i) = zfice(i)**exposant_glace_old 739 ! zfice(i) = zfice(i)**nexpo 725 740 !CR: ATTENTION zt different de Tbef: à corriger 726 741 zt(i) = zt(i) + (1.-zfice(i))*zcond(i) * RLVTT/RCPD/(1.0+RVTMP2*(zq(i)+zcond(i))) & … … 729 744 endif 730 745 ! print*,zt(i),zrfl(i),zifl(i),'temp1' 746 ELSE ! of IF (iflag_t_glace.EQ.0) 747 if (iflag_fisrtilp_qsat.lt.1) then 748 DO i = 1, klon 749 ! JBM: icefrac_lsc is now a function contained in microphys_mod 750 zfice(i) = icefrac_lsc(zt(i), t_glace_min, & 751 t_glace_max, exposant_glace) 752 zt(i) = zt(i) + (1.-zfice(i))*zcond(i) * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) & 753 +zfice(i)*zcond(i) * RLSTT/RCPD/(1.0+RVTMP2*zq(i)) 754 ENDDO 755 else 756 DO i=1, klon 757 ! JBM: icefrac_lsc is now a function contained in microphys_mod 758 zfice(i) = icefrac_lsc(zt(i), t_glace_min, & 759 t_glace_max, exposant_glace) 760 !CR: ATTENTION zt different de Tbef: à corriger 761 zt(i) = zt(i) + (1.-zfice(i))*zcond(i) * RLVTT/RCPD/(1.0+RVTMP2*(zq(i)+zcond(i))) & 762 +zfice(i)*zcond(i) * RLSTT/RCPD/(1.0+RVTMP2*(zq(i)+zcond(i))) 763 ENDDO 764 endif 765 ! print*,zt(i),zrfl(i),zifl(i),'temp1' 766 ENDIF 731 767 ENDIF 732 768 !>AJ … … 743 779 !AJ< 744 780 IF (.NOT. ice_thermo) THEN 745 DO i = 1, klon 746 IF (rneb(i,k).GT.0.0) THEN 747 zfice(i) = 1.0 - (zt(i)-ztglace) / (273.13-ztglace) 748 zfice(i) = MIN(MAX(zfice(i),0.0),1.0) 749 zfice(i) = zfice(i)**nexpo 750 !! zfice(i)=0. 751 ENDIF 752 ENDDO 781 IF (iflag_t_glace.EQ.0) THEN 782 DO i = 1, klon 783 IF (rneb(i,k).GT.0.0) THEN 784 zfice(i) = 1.0 - (zt(i)-t_glace_min_old) / (273.13-t_glace_min_old) 785 zfice(i) = MIN(MAX(zfice(i),0.0),1.0) 786 zfice(i) = zfice(i)**exposant_glace_old 787 ! zfice(i) = zfice(i)**nexpo 788 !! zfice(i)=0. 789 ENDIF 790 ENDDO 791 ELSE ! of IF (iflag_t_glace.EQ.0) 792 DO i = 1, klon 793 IF (rneb(i,k).GT.0.0) THEN 794 ! JBM: icefrac_lsc is now a function contained in microphys_mod 795 zfice(i) = icefrac_lsc(zt(i), t_glace_min, & 796 t_glace_max, exposant_glace) 797 ENDIF 798 ENDDO 799 ENDIF 753 800 ENDIF 754 801 DO i = 1, klon … … 895 942 IF (rneb(i,k).GT.0.0.and.zprec_cond(i).gt.0.) THEN 896 943 !AA lessivage nucleation LMD5 dans la couche elle-meme 897 if (t(i,k) .GE. ztglace) THEN 944 IF (iflag_t_glace.EQ.0) THEN 945 if (t(i,k) .GE. t_glace_min_old) THEN 898 946 zalpha_tr = a_tr_sca(3) 899 947 else 900 948 zalpha_tr = a_tr_sca(4) 901 949 endif 950 ELSE ! of IF (iflag_t_glace.EQ.0) 951 if (t(i,k) .GE. t_glace_min) THEN 952 zalpha_tr = a_tr_sca(3) 953 else 954 zalpha_tr = a_tr_sca(4) 955 endif 956 ENDIF 902 957 zfrac_lessi = 1. - EXP(zalpha_tr*zprec_cond(i)/zneb(i)) 903 958 pfrac_nucl(i,k)=pfrac_nucl(i,k)*(1.-zneb(i)*zfrac_lessi) … … 915 970 DO i = 1, klon 916 971 IF (rneb(i,k).GT.0.0.and.zprec_cond(i).gt.0.) THEN 917 if (t(i,kk) .GE. ztglace) THEN 972 IF (iflag_t_glace.EQ.0) THEN 973 if (t(i,kk) .GE. t_glace_min_old) THEN 918 974 zalpha_tr = a_tr_sca(1) 919 975 else 920 976 zalpha_tr = a_tr_sca(2) 921 977 endif 978 ELSE ! of IF (iflag_t_glace.EQ.0) 979 if (t(i,kk) .GE. t_glace_min) THEN 980 zalpha_tr = a_tr_sca(1) 981 else 982 zalpha_tr = a_tr_sca(2) 983 endif 984 ENDIF 922 985 zfrac_lessi = 1. - EXP(zalpha_tr*zprec_cond(i)/zneb(i)) 923 986 pfrac_impa(i,kk)=pfrac_impa(i,kk)*(1.-zneb(i)*zfrac_lessi)
Note: See TracChangeset
for help on using the changeset viewer.