Changeset 2839 for LMDZ5/branches/testing/libf/phylmd/rrtm
- Timestamp:
- Mar 30, 2017, 4:16:38 PM (7 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 2786,2788-2790,2792-2814,2816-2838
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/phylmd/rrtm/aeropt_5wv_rrtm.F90
r2787 r2839 12 12 USE DIMPHY 13 13 USE aero_mod 14 USE phys_local_var_mod, ONLY: od 550aer,od865aer,ec550aer,od550lt1aer14 USE phys_local_var_mod, ONLY: od443aer,od550aer,od865aer,ec550aer,od550lt1aer 15 15 USE YOMCST, ONLY: RD,RG 16 16 … … 327 327 soluble=.TRUE. 328 328 spsol=4 329 fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD 329 !fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD 330 fac=0.0 !--6 March 2017 - OB as Didier H said CSSO4 should not be used 330 331 ELSEIF (aerosol_name(m).EQ.id_SSSSM_phy) THEN 331 332 soluble=.TRUE. … … 366 367 DO la=1,las 367 368 368 !--only 550, 670 and 865 nm are used 369 IF (la.NE.la550.AND.la.NE.la670.AND.la.NE.la865) CYCLE 369 !--only 443, 550, 670 and 865 nm are used 370 !--to save time 670 and AI are not computed for CMIP6 371 !IF (la.NE.la443.AND.la.NE.la550.AND.la.NE.la670.AND.la.NE.la865) CYCLE 372 IF (la.NE.la443.AND.la.NE.la550.AND.la.NE.la865) CYCLE 370 373 371 374 IF (soluble) THEN ! For soluble aerosol … … 433 436 434 437 !--AOD calculations for diagnostics 438 od443aer(:)=SUM(tausum(:,la443,:),dim=2) 435 439 od550aer(:)=SUM(tausum(:,la550,:),dim=2) 436 od670aer(:)=SUM(tausum(:,la670,:),dim=2)440 !od670aer(:)=SUM(tausum(:,la670,:),dim=2) 437 441 od865aer(:)=SUM(tausum(:,la865,:),dim=2) 438 442 … … 441 445 442 446 !--aerosol index 443 ai(:)=-LOG(MAX(od670aer(:),1.e-8)/MAX(od865aer(:),1.e-8))/LOG(670./865.) 447 ai(:)=0.0 448 !ai(:)=-LOG(MAX(od670aer(:),1.e-8)/MAX(od865aer(:),1.e-8))/LOG(670./865.) 444 449 445 450 od550lt1aer(:)=tausum(:,la550,id_ASSO4M_phy)+tausum(:,la550,id_ASBCM_phy) +tausum(:,la550,id_AIBCM_phy)+ & -
LMDZ5/branches/testing/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90
r2787 r2839 566 566 soluble=.TRUE. 567 567 spsol=3 568 fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD 568 !fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for AOD 569 fac=0.0 !--6 March 2017 - OB as Didier H said CSSO4 should not be used 569 570 ELSEIF (aerosol_name(m).EQ.id_ASSO4M_phy) THEN 570 571 soluble=.TRUE. -
LMDZ5/branches/testing/libf/phylmd/rrtm/read_rsun_rrtm.F90
r2787 r2839 10 10 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_nowrite 11 11 12 USE phys_cal_mod, ONLY : day _cur, year_len12 USE phys_cal_mod, ONLY : days_elapsed, year_len 13 13 14 14 USE mod_phys_lmdz_mpi_data, ONLY: is_mpi_root … … 23 23 24 24 ! Input arguments 25 LOGICAL, INTENT(IN) 25 LOGICAL, INTENT(IN) :: debut 26 26 27 27 ! Local variables 28 INTEGER 28 INTEGER :: ncid, dimid, varid, ncerr, nbday 29 29 REAL, POINTER :: wlen(:), time(:) 30 REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) 30 REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: SSI_FRAC 31 31 !$OMP THREADPRIVATE(SSI_FRAC) 32 32 REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: TSI(:) … … 90 90 ENDIF 91 91 92 !--only read at beginning of month 93 IF (debut.OR.day_cur.NE.day_pre) THEN 92 !--only read at beginning of day 93 !--day in year is provided as days_elapsed since the beginning of the year +1 94 IF (debut.OR.days_elapsed+1.NE.day_pre) THEN 94 95 95 !--keep memory of previous month96 day_pre=day _cur96 !--keep memory of previous day 97 day_pre=days_elapsed+1 97 98 98 99 !--copy 99 RSUN(1:NSW)=SSI_FRAC(:,day _cur)100 solaire=TSI(day _cur)100 RSUN(1:NSW)=SSI_FRAC(:,days_elapsed+1) 101 solaire=TSI(days_elapsed+1) 101 102 102 print *,'READ_RSUN_RRTM day=', day _cur,' solaire=', solaire, ' RSUN=', RSUN(1:NSW)103 print *,'READ_RSUN_RRTM day=', days_elapsed+1,' solaire=', solaire, ' RSUN=', RSUN(1:NSW) 103 104 104 105 ENDIF !--fin allocation -
LMDZ5/branches/testing/libf/phylmd/rrtm/readaerosol_optic_rrtm.F90
r2787 r2839 17 17 USE phys_local_var_mod, only: sconcso4,sconcno3,sconcoa,sconcbc,sconcss,sconcdust, & 18 18 concso4,concno3,concoa,concbc,concss,concdust,loadso4,loadoa,loadbc,loadss,loaddust, & 19 load _tmp1,load_tmp2,load_tmp3,load_tmp4,load_tmp5,load_tmp6,load_tmp719 loadno3, load_tmp1,load_tmp2,load_tmp3 20 20 21 21 USE infotrac_phy … … 195 195 IF ( flag_aerosol .EQ. 3 .OR. flag_aerosol .EQ. 6 ) THEN 196 196 197 CALL readaerosol_interp(id_ASPOMM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomsol, pomsol_pi, load_tmp 3)198 CALL readaerosol_interp(id_AIPOMM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomins, pomins_pi, load_tmp 4)199 loadoa(:)=load_tmp 3(:)+load_tmp4(:)197 CALL readaerosol_interp(id_ASPOMM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomsol, pomsol_pi, load_tmp1) 198 CALL readaerosol_interp(id_AIPOMM_phy, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomins, pomins_pi, load_tmp2) 199 loadoa(:)=load_tmp1(:)+load_tmp2(:) 200 200 ELSE 201 201 pomsol(:,:) = 0. ; pomsol_pi(:,:) = 0. … … 208 208 209 209 CALL readaerosol_interp(id_SSSSM_phy ,itap, pdtphys,rjourvrai, & 210 debut, pplay, paprs, t_seri, sssupco, sssupco_pi, load_tmp 5)210 debut, pplay, paprs, t_seri, sssupco, sssupco_pi, load_tmp1) 211 211 CALL readaerosol_interp(id_CSSSM_phy ,itap, pdtphys,rjourvrai, & 212 debut, pplay, paprs, t_seri, sscoarse,sscoarse_pi, load_tmp 6)213 CALL readaerosol_interp(id_ASSSM_phy ,itap, pdtphys, 214 debut, pplay, paprs, t_seri, ssacu, ssacu_pi, load_tmp 7)215 loadss(:)=load_tmp 5(:)+load_tmp6(:)+load_tmp7(:)212 debut, pplay, paprs, t_seri, sscoarse,sscoarse_pi, load_tmp2) 213 CALL readaerosol_interp(id_ASSSM_phy ,itap, pdtphys,rjourvrai, & 214 debut, pplay, paprs, t_seri, ssacu, ssacu_pi, load_tmp3) 215 loadss(:)=load_tmp1(:)+load_tmp2(:)+load_tmp3(:) 216 216 ELSE 217 217 sscoarse(:,:) = 0. ; sscoarse_pi(:,:) = 0. … … 231 231 ENDIF 232 232 ! 233 ! Read and interpolate cidustm 234 IF (flag_aerosol .EQ. 6) THEN 235 236 CALL readaerosol_interp(id_ASNO3M_phy, itap, pdtphys, rjourvrai, & 237 debut, pplay, paprs, t_seri, nitracc, nitracc_pi, load_tmp1) 238 CALL readaerosol_interp(id_CSNO3M_phy, itap, pdtphys, rjourvrai, & 239 debut, pplay, paprs, t_seri, nitrcoarse, nitrcoarse_pi, load_tmp2) 240 CALL readaerosol_interp(id_CINO3M_phy, itap, pdtphys, rjourvrai, & 241 debut, pplay, paprs, t_seri, nitrinscoarse, nitrinscoarse_pi, load_tmp3) 242 loadss(:)=load_tmp1(:)+load_tmp2(:)+load_tmp3(:) 243 244 ELSE 245 nitracc(:,:) = 0.0 ; nitracc_pi(:,:) = 0.0 246 nitrcoarse(:,:) = 0.0 ; nitrcoarse_pi(:,:) = 0.0 247 nitrinscoarse(:,:) = 0.0 ; nitrinscoarse_pi(:,:)= 0.0 248 loadno3(:)=0.0 249 ENDIF 250 ! 251 ! CSSO4M is set to 0 as not reliable 233 252 sulfcoarse(:,:) = 0.0 ! CSSO4M (=SO4) + CSMSAM (=MSA) 234 253 sulfcoarse_pi(:,:) = 0.0 ! CSSO4M (=SO4) + CSMSAM (=MSA) pre-ind 235 !236 !--placeholder for offline nitrate237 !238 nitracc(:,:) = 0.0239 nitracc_pi(:,:) = 0.0240 nitrcoarse(:,:) = 0.0241 nitrcoarse_pi(:,:) = 0.0242 nitrinscoarse(:,:) = 0.0243 nitrinscoarse_pi(:,:)= 0.0244 254 245 255 ENDIF !--not aerosol_couple -
LMDZ5/branches/testing/libf/phylmd/rrtm/suphec.F90
r2408 r2839 129 129 130 130 IF (LHOOK) CALL DR_HOOK('SUPHEC',0,ZHOOK_HANDLE) 131 !CALL GSTATS(1811,0) ! MPL 28.11.08 132 !RVTMP2=RCPV/RCPD-1.0_JPRB !use cp,moist 133 RVTMP2=0.0_JPRB !neglect cp,moist 134 RHOH2O=RATM/100._JPRB 135 R2ES=611.21_JPRB*RD/RV 136 R3LES=17.502_JPRB 137 R3IES=22.587_JPRB 138 R4LES=32.19_JPRB 139 R4IES=-0.7_JPRB 140 R5LES=R3LES*(RTT-R4LES) 141 R5IES=R3IES*(RTT-R4IES) 142 R5ALVCP=R5LES*RLVTT/RCPD 143 R5ALSCP=R5IES*RLSTT/RCPD 144 RALVDCP=RLVTT/RCPD 145 RALSDCP=RLSTT/RCPD 146 RALFDCP=RLMLT/RCPD 147 RTWAT=RTT 148 RTBER=RTT-5._JPRB 149 RTBERCU=RTT-5.0_JPRB 150 RTICE=RTT-23._JPRB 151 RTICECU=RTT-23._JPRB 152 153 RTWAT_RTICE_R=1.0_JPRB/(RTWAT-RTICE) 154 RTWAT_RTICECU_R=1.0_JPRB/(RTWAT-RTICECU) 155 IF(NPHYINT == 0) THEN 156 ISMAX=NSMAX 157 ELSE 158 ISMAX=PHYS_GRID%NSMAX 159 ENDIF 160 161 RKOOP1=2.583_JPRB 162 RKOOP2=0.48116E-2_JPRB 131 ! 132 IF (OK_BAD_ECMWF_THERMO) THEN 133 ! 134 ! Modify constants defined in suphel.F90 and set RVTMP2 to 0. 135 ! CALL GSTATS(1811,0) ! MPL 28.11.08 136 ! RVTMP2=RCPV/RCPD-1.0_JPRB !use cp,moist 137 RVTMP2=0.0_JPRB !neglect cp,moist 138 RHOH2O=RATM/100._JPRB 139 R2ES=611.21_JPRB*RD/RV 140 R3LES=17.502_JPRB 141 R3IES=22.587_JPRB 142 R4LES=32.19_JPRB 143 R4IES=-0.7_JPRB 144 R5LES=R3LES*(RTT-R4LES) 145 R5IES=R3IES*(RTT-R4IES) 146 R5ALVCP=R5LES*RLVTT/RCPD 147 R5ALSCP=R5IES*RLSTT/RCPD 148 RALVDCP=RLVTT/RCPD 149 RALSDCP=RLSTT/RCPD 150 RALFDCP=RLMLT/RCPD 151 RTWAT=RTT 152 RTBER=RTT-5._JPRB 153 RTBERCU=RTT-5.0_JPRB 154 RTICE=RTT-23._JPRB 155 RTICECU=RTT-23._JPRB 156 157 RTWAT_RTICE_R=1.0_JPRB/(RTWAT-RTICE) 158 RTWAT_RTICECU_R=1.0_JPRB/(RTWAT-RTICECU) 159 IF(NPHYINT == 0) THEN 160 ISMAX=NSMAX 161 ELSE 162 ISMAX=PHYS_GRID%NSMAX 163 ENDIF 164 165 RKOOP1=2.583_JPRB 166 RKOOP2=0.48116E-2_JPRB 167 168 ELSE 169 ! Keep constants defined in suphel.F90 170 RTICE=RTT-23._JPRB 171 ! 172 ENDIF ! (OK_BAD_ECMWF_THERMO) 163 173 164 174 ! ------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.