Changeset 2006
- Timestamp:
- Apr 6, 2014, 1:31:28 PM (11 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/conf_phys_m.F90
r2000 r2006 146 146 INTEGER,SAVE :: iflag_pdf_omp 147 147 INTEGER,SAVE :: iflag_ice_thermo_omp 148 INTEGER,SAVE :: iflag_t_glace_omp 148 149 REAL,SAVE :: rad_froid_omp, rad_chau1_omp, rad_chau2_omp 149 150 REAL,SAVE :: t_glace_min_omp, t_glace_max_omp 151 REAL,SAVE :: exposant_glace_omp 150 152 REAL,SAVE :: rei_min_omp, rei_max_omp 151 153 REAL,SAVE :: inertie_sol_omp,inertie_sno_omp,inertie_ice_omp … … 1006 1008 1007 1009 ! 1010 !Config Key = exposant_glace 1011 !Config Desc = 1012 !Config Def = 2. 1013 !Config Help = 1014 ! 1015 exposant_glace_omp = 1. 1016 call getin('exposant_glace',exposant_glace_omp) 1017 1018 ! 1019 !Config Key = iflag_t_glace 1020 !Config Desc = 1021 !Config Def = 0 1022 !Config Help = 1023 ! 1024 iflag_t_glace_omp = 0 1025 call getin('iflag_t_glace',iflag_t_glace_omp) 1026 1027 ! 1008 1028 !Config Key = iflag_ice_thermo 1009 1029 !Config Desc = … … 1764 1784 t_glace_min = t_glace_min_omp 1765 1785 t_glace_max = t_glace_max_omp 1786 exposant_glace = exposant_glace_omp 1787 iflag_t_glace = iflag_t_glace_omp 1766 1788 iflag_ice_thermo = iflag_ice_thermo_omp 1767 1789 rei_min = rei_min_omp … … 1993 2015 write(lunout,*)' t_glace_min = ',t_glace_min 1994 2016 write(lunout,*)' t_glace_max = ',t_glace_max 2017 write(lunout,*)' exposant_glace = ',exposant_glace 2018 write(lunout,*)' iflag_t_glace = ',iflag_t_glace 1995 2019 write(lunout,*)' iflag_ice_thermo = ',iflag_ice_thermo 1996 2020 write(lunout,*)' rei_min = ',rei_min -
LMDZ5/trunk/libf/phylmd/fisrtilp.F90
r1907 r2006 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) -
LMDZ5/trunk/libf/phylmd/newmicro.F90
r1992 r2006 12 12 reffclwc, cldnvi, lcc3d, lcc3dcon, lcc3dstra 13 13 USE phys_state_var_mod, ONLY: rnebcon, clwcon 14 USE microphys_mod ! cloud microphysics (JBM 3/14) 14 15 IMPLICIT NONE 15 16 ! ====================================================================== … … 106 107 PARAMETER (seuil_neb=0.001) 107 108 108 INTEGER nexpo ! exponentiel pour glace/eau 109 PARAMETER (nexpo=6) 110 ! PARAMETER (nexpo=1) 109 ! JBM (3/14) nexpo is replaced by exposant_glace 110 ! INTEGER nexpo ! exponentiel pour glace/eau 111 ! PARAMETER (nexpo=6) 112 ! PARAMETER (nexpo=1) 113 ! if iflag_t_glace=0, the old values are used: 114 REAL, PARAMETER :: t_glace_min_old = 258. 115 REAL, PARAMETER :: t_glace_max_old = 273.13 111 116 112 117 REAL rel, tc, rei … … 180 185 reice_pi = 0. 181 186 182 DO k = 1, klev 183 DO i = 1, klon 184 ! -layer calculation 185 rhodz(i, k) = (paprs(i,k)-paprs(i,k+1))/rg ! kg/m2 186 zrho(i, k) = pplay(i, k)/t(i, k)/rd ! kg/m3 187 dh(i, k) = rhodz(i, k)/zrho(i, k) ! m 188 ! -Fraction of ice in cloud using a linear transition 189 zfice(i, k) = 1.0 - (t(i,k)-t_glace_min)/(t_glace_max-t_glace_min) 190 zfice(i, k) = min(max(zfice(i,k),0.0), 1.0) 191 ! -IM Total Liquid/Ice water content 192 xflwc(i, k) = (1.-zfice(i,k))*pqlwp(i, k) 193 xfiwc(i, k) = zfice(i, k)*pqlwp(i, k) 194 END DO 195 END DO 187 IF (iflag_t_glace.EQ.0) THEN 188 DO k = 1, klev 189 DO i = 1, klon 190 ! -layer calculation 191 rhodz(i, k) = (paprs(i,k)-paprs(i,k+1))/rg ! kg/m2 192 zrho(i, k) = pplay(i, k)/t(i, k)/rd ! kg/m3 193 dh(i, k) = rhodz(i, k)/zrho(i, k) ! m 194 ! -Fraction of ice in cloud using a linear transition 195 zfice(i, k) = 1.0 - (t(i,k)-t_glace_min_old)/(t_glace_max_old-t_glace_min_old) 196 zfice(i, k) = min(max(zfice(i,k),0.0), 1.0) 197 ! -IM Total Liquid/Ice water content 198 xflwc(i, k) = (1.-zfice(i,k))*pqlwp(i, k) 199 xfiwc(i, k) = zfice(i, k)*pqlwp(i, k) 200 END DO 201 END DO 202 ELSE ! of IF (iflag_t_glace.EQ.0) 203 DO k = 1, klev 204 DO i = 1, klon 205 ! -layer calculation 206 rhodz(i, k) = (paprs(i,k)-paprs(i,k+1))/rg ! kg/m2 207 zrho(i, k) = pplay(i, k)/t(i, k)/rd ! kg/m3 208 dh(i, k) = rhodz(i, k)/zrho(i, k) ! m 209 ! JBM: icefrac_lsc is now a function contained in microphys_mod 210 zfice(i, k) = icefrac_lsc(t(i,k), t_glace_min, & 211 t_glace_max, exposant_glace) 212 ! -IM Total Liquid/Ice water content 213 xflwc(i, k) = (1.-zfice(i,k))*pqlwp(i, k) 214 xfiwc(i, k) = zfice(i, k)*pqlwp(i, k) 215 END DO 216 END DO 217 ENDIF 196 218 197 219 IF (ok_cdnc) THEN -
LMDZ5/trunk/libf/phylmd/nuage.F90
r1992 r2006 5 5 cldtaupi, re, fl) 6 6 USE dimphy 7 USE microphys_mod ! cloud microphysics (JBM 3/14) 7 8 IMPLICIT NONE 8 9 ! ====================================================================== … … 34 35 35 36 include "YOMCST.h" 37 include "nuage.h" ! JBM 3/14 36 38 37 39 ! ym#include "dimensions.h" … … 54 56 REAL zflwp, zradef, zfice, zmsac 55 57 56 REAL radius, rad_froid, rad_chaud, rad_chau1, rad_chau2 57 PARAMETER (rad_chau1=13.0, rad_chau2=9.0, rad_froid=35.0) 58 REAL radius, rad_chaud 59 ! JBM (3/14) parameters already defined in nuage.h: 60 ! REAL rad_froid, rad_chau1, rad_chau2 61 ! PARAMETER (rad_chau1=13.0, rad_chau2=9.0, rad_froid=35.0) 58 62 ! cc PARAMETER (rad_chaud=15.0, rad_froid=35.0) 59 63 ! sintex initial PARAMETER (rad_chaud=10.0, rad_froid=30.0) 60 64 REAL coef, coef_froi, coef_chau 61 65 PARAMETER (coef_chau=0.13, coef_froi=0.09) 62 REAL seuil_neb, t_glace 63 PARAMETER (seuil_neb=0.001, t_glace=273.0-15.0) 64 INTEGER nexpo ! exponentiel pour glace/eau 65 PARAMETER (nexpo=6) 66 REAL seuil_neb 67 PARAMETER (seuil_neb=0.001) 68 ! JBM (3/14) nexpo is replaced by exposant_glace 69 ! REAL nexpo ! exponentiel pour glace/eau 70 ! PARAMETER (nexpo=6.) 71 REAL, PARAMETER :: t_glace_min_old = 258. 72 INTEGER, PARAMETER :: exposant_glace_old = 6 73 66 74 67 75 ! jq for the aerosol indirect effect … … 96 104 pclc(i, k) = max(pclc(i,k), seuil_neb) 97 105 zflwp = 1000.*pqlwp(i, k)/rg/pclc(i, k)*(paprs(i,k)-paprs(i,k+1)) 98 zfice = 1.0 - (t(i,k)-t_glace)/(273.13-t_glace) 99 zfice = min(max(zfice,0.0), 1.0) 100 zfice = zfice**nexpo 106 IF (iflag_t_glace.EQ.0) THEN 107 zfice = 1.0 - (t(i,k)-t_glace_min_old)/(273.13-t_glace_min_old) 108 zfice = min(max(zfice,0.0), 1.0) 109 zfice = zfice**exposant_glace_old 110 ELSE ! of IF (iflag_t_glace.EQ.0) 111 ! JBM: icefrac_lsc is now a function contained in microphys_mod 112 zfice = icefrac_lsc(t(i,k), t_glace_min, & 113 t_glace_max, exposant_glace) 114 ENDIF 101 115 102 116 IF (ok_aie) THEN -
LMDZ5/trunk/libf/phylmd/nuage.h
r1907 r2006 3 3 ! 4 4 REAL rad_froid, rad_chau1, rad_chau2, t_glace_max, t_glace_min 5 REAL exposant_glace 5 6 REAL rei_min,rei_max 6 7 8 INTEGER iflag_t_glace 9 7 10 common /nuagecom/ rad_froid,rad_chau1, rad_chau2,t_glace_max, & 8 & t_glace_min,rei_min,rei_max 11 & t_glace_min,exposant_glace,rei_min,rei_max, & 12 & iflag_t_glace 9 13 !$OMP THREADPRIVATE(/nuagecom/) -
LMDZ5/trunk/libf/phylmd/physiq.F90
r2003 r2006 512 512 EXTERNAL fisrtilp ! schema de condensation a grande echelle (pluie) 513 513 !AA 514 EXTERNAL fisrtilp_tr ! schema de condensation a grande echelle (pluie) 514 ! JBM (3/14) fisrtilp_tr not loaded 515 ! EXTERNAL fisrtilp_tr ! schema de condensation a grande echelle (pluie) 515 516 ! ! stockage des coefficients necessaires au 516 517 ! ! lessivage OFF-LINE et ON-LINE
Note: See TracChangeset
for help on using the changeset viewer.