Changeset 2146 for LMDZ5/trunk/libf/phylmd/rrtm/aeropt_5wv_rrtm.F90
- Timestamp:
- Nov 14, 2014, 9:22:21 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/rrtm/aeropt_5wv_rrtm.F90
r2058 r2146 12 12 USE aero_mod 13 13 USE phys_local_var_mod, only: od550aer,od865aer,ec550aer,od550lt1aer 14 USE YOMCST , only : RD , RG15 14 16 15 ! … … 50 49 ! 51 50 IMPLICIT NONE 51 INCLUDE "YOMCST.h" 52 52 ! 53 53 ! Input arguments: … … 55 55 REAL, DIMENSION(klon,klev), INTENT(in) :: pdel 56 56 REAL, INTENT(in) :: delt 57 REAL, DIMENSION(klon,klev,naero_ spc), INTENT(in) :: m_allaer57 REAL, DIMENSION(klon,klev,naero_tot), INTENT(in) :: m_allaer 58 58 REAL, DIMENSION(klon,klev), INTENT(in) :: RHcl ! humidite relative ciel clair 59 59 INTEGER,INTENT(in) :: flag_aerosol … … 73 73 LOGICAL :: soluble 74 74 75 INTEGER :: i, k, m 75 INTEGER :: i, k, m, aerindex 76 76 INTEGER :: spsol, spinsol, la 77 77 INTEGER :: RH_num(klon,klev) … … 96 96 REAL :: zdp1(klon,klev) 97 97 INTEGER, ALLOCATABLE, DIMENSION(:) :: aerosol_name 98 INTEGER :: nb_aer 98 INTEGER :: nb_aer, itau 99 LOGICAL :: ok_itau 99 100 100 101 REAL :: dh(KLON,KLEV) … … 105 106 REAL :: alpha_aeri_5wv(las,naero_insoluble) ! Ext. coeff. ** m2/g 106 107 107 REAL, DIMENSION(klon,klev,naero_ spc) :: mass_temp108 REAL, DIMENSION(klon,klev,naero_tot) :: mass_temp 108 109 109 110 ! … … 113 114 LOGICAL :: used_tau(naero_tot) 114 115 INTEGER :: n 115 116 116 117 ! From here on we look at the optical parameters at 5 wavelengths: 117 118 ! 443nm, 550, 670, 765 and 865 nm … … 222 223 nb_aer = 2 223 224 ALLOCATE (aerosol_name(nb_aer)) 224 aerosol_name(1) = id_ASSO4M 225 aerosol_name(2) = id_CSSO4M 225 aerosol_name(1) = id_ASSO4M_phy 226 aerosol_name(2) = id_CSSO4M_phy 226 227 ELSEIF (flag_aerosol .EQ. 2) THEN 227 228 nb_aer = 2 228 229 ALLOCATE (aerosol_name(nb_aer)) 229 aerosol_name(1) = id_ASBCM 230 aerosol_name(2) = id_AIBCM 230 aerosol_name(1) = id_ASBCM_phy 231 aerosol_name(2) = id_AIBCM_phy 231 232 ELSEIF (flag_aerosol .EQ. 3) THEN 232 233 nb_aer = 2 233 234 ALLOCATE (aerosol_name(nb_aer)) 234 aerosol_name(1) = id_ASPOMM 235 aerosol_name(2) = id_AIPOMM 235 aerosol_name(1) = id_ASPOMM_phy 236 aerosol_name(2) = id_AIPOMM_phy 236 237 ELSEIF (flag_aerosol .EQ. 4) THEN 237 238 nb_aer = 3 238 239 ALLOCATE (aerosol_name(nb_aer)) 239 aerosol_name(1) = id_CSSSM 240 aerosol_name(2) = id_SSSSM 241 aerosol_name(3) = id_ASSSM 240 aerosol_name(1) = id_CSSSM_phy 241 aerosol_name(2) = id_SSSSM_phy 242 aerosol_name(3) = id_ASSSM_phy 242 243 ELSEIF (flag_aerosol .EQ. 5) THEN 243 244 nb_aer = 1 244 245 ALLOCATE (aerosol_name(nb_aer)) 245 aerosol_name(1) = id_CIDUSTM 246 aerosol_name(1) = id_CIDUSTM_phy 246 247 ELSEIF (flag_aerosol .EQ. 6) THEN 247 248 nb_aer = 10 248 249 ALLOCATE (aerosol_name(nb_aer)) 249 aerosol_name(1) = id_ASSO4M 250 aerosol_name(2) = id_ASBCM 251 aerosol_name(3) = id_AIBCM 252 aerosol_name(4) = id_ASPOMM 253 aerosol_name(5) = id_AIPOMM 254 aerosol_name(6) = id_CSSSM 255 aerosol_name(7) = id_SSSSM 256 aerosol_name(8) = id_ASSSM 257 aerosol_name(9) = id_CIDUSTM 258 aerosol_name(10) = id_CSSO4M 250 aerosol_name(1) = id_ASSO4M_phy 251 aerosol_name(2) = id_ASBCM_phy 252 aerosol_name(3) = id_AIBCM_phy 253 aerosol_name(4) = id_ASPOMM_phy 254 aerosol_name(5) = id_AIPOMM_phy 255 aerosol_name(6) = id_CSSSM_phy 256 aerosol_name(7) = id_SSSSM_phy 257 aerosol_name(8) = id_ASSSM_phy 258 aerosol_name(9) = id_CIDUSTM_phy 259 aerosol_name(10) = id_CSSO4M_phy 259 260 ENDIF 260 261 … … 293 294 DO m=1,nb_aer ! tau is only computed for each mass 294 295 fac=1.0 295 IF (aerosol_name(m).EQ.id_ASBCM ) THEN296 IF (aerosol_name(m).EQ.id_ASBCM_phy) THEN 296 297 soluble=.TRUE. 297 298 spsol=1 298 ELSEIF (aerosol_name(m).EQ.id_ASPOMM ) THEN299 ELSEIF (aerosol_name(m).EQ.id_ASPOMM_phy) THEN 299 300 soluble=.TRUE. 300 301 spsol=2 301 ELSEIF (aerosol_name(m).EQ.id_ASSO4M ) THEN302 ELSEIF (aerosol_name(m).EQ.id_ASSO4M_phy) THEN 302 303 soluble=.TRUE. 303 304 spsol=3 304 305 fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD 305 ELSEIF (aerosol_name(m).EQ.id_CSSO4M ) THEN306 ELSEIF (aerosol_name(m).EQ.id_CSSO4M_phy) THEN 306 307 soluble=.TRUE. 307 308 spsol=4 308 309 fac=1.375 ! (NH4)2-SO4/SO4 132/96 mass conversion factor for OD 309 ELSEIF (aerosol_name(m).EQ.id_SSSSM ) THEN310 ELSEIF (aerosol_name(m).EQ.id_SSSSM_phy) THEN 310 311 soluble=.TRUE. 311 312 spsol=5 312 ELSEIF (aerosol_name(m).EQ.id_CSSSM ) THEN313 ELSEIF (aerosol_name(m).EQ.id_CSSSM_phy) THEN 313 314 soluble=.TRUE. 314 315 spsol=6 315 ELSEIF (aerosol_name(m).EQ.id_ASSSM ) THEN316 ELSEIF (aerosol_name(m).EQ.id_ASSSM_phy) THEN 316 317 soluble=.TRUE. 317 318 spsol=7 318 ELSEIF (aerosol_name(m).EQ.id_CIDUSTM ) THEN319 ELSEIF (aerosol_name(m).EQ.id_CIDUSTM_phy) THEN 319 320 soluble=.FALSE. 320 321 spinsol=1 321 ELSEIF (aerosol_name(m).EQ.id_AIBCM ) THEN322 ELSEIF (aerosol_name(m).EQ.id_AIBCM_phy) THEN 322 323 soluble=.FALSE. 323 324 spinsol=2 324 ELSEIF (aerosol_name(m).EQ.id_AIPOMM ) THEN325 ELSEIF (aerosol_name(m).EQ.id_AIPOMM_phy) THEN 325 326 soluble=.FALSE. 326 327 spinsol=3 … … 335 336 ENDIF 336 337 338 aerindex=aerosol_name(m) 339 337 340 DO la=1,las 338 341 … … 344 347 (alpha_aers_5wv(RH_num(i,k)+1,la,spsol) - & 345 348 alpha_aers_5wv(RH_num(i,k),la,spsol)) 346 tau(i,k,la, spsol) = mass_temp(i,k,spsol)*1000.*zdp1(i,k)&347 *tau_ae5wv_int*delt*fac348 tausum(i,la, spsol)=tausum(i,la,spsol)+tau(i,k,la,spsol)349 tau(i,k,la,aerindex) = mass_temp(i,k,aerindex)*1000.*zdp1(i,k)* & 350 tau_ae5wv_int*delt*fac 351 tausum(i,la,aerindex)=tausum(i,la,aerindex)+tau(i,k,la,aerindex) 349 352 ENDDO 350 353 ENDDO 351 354 352 355 ELSE ! For insoluble aerosol 353 356 … … 355 358 DO i=1, KLON 356 359 tau_ae5wv_int = alpha_aeri_5wv(la,spinsol) 357 tau(i,k,la,naero_soluble+spinsol) = mass_temp(i,k,naero_soluble+spinsol)*1000.*zdp1(i,k)* & 358 tau_ae5wv_int*delt*fac 359 tausum(i,la,naero_soluble+spinsol)= tausum(i,la,naero_soluble+spinsol) & 360 +tau(i,k,la,naero_soluble+spinsol) 360 tau(i,k,la,aerindex) = mass_temp(i,k,aerindex)*1000.*zdp1(i,k)* & 361 tau_ae5wv_int*delt*fac 362 tausum(i,la,aerindex)= tausum(i,la,aerindex)+tau(i,k,la,aerindex) 361 363 ENDDO 362 364 ENDDO … … 405 407 ENDDO 406 408 407 od550lt1aer(:)=tausum(:,la550,id_ASSO4M )+tausum(:,la550,id_ASBCM) +tausum(:,la550,id_AIBCM)+ &408 tausum(:,la550,id_ASPOMM )+tausum(:,la550,id_AIPOMM)+tausum(:,la550,id_ASSSM)+ &409 0.03*tausum(:,la550,id_CSSSM )+0.4*tausum(:,la550,id_CIDUSTM)409 od550lt1aer(:)=tausum(:,la550,id_ASSO4M_phy)+tausum(:,la550,id_ASBCM_phy) +tausum(:,la550,id_AIBCM_phy)+ & 410 tausum(:,la550,id_ASPOMM_phy)+tausum(:,la550,id_AIPOMM_phy)+tausum(:,la550,id_ASSSM_phy)+ & 411 0.03*tausum(:,la550,id_CSSSM_phy)+0.4*tausum(:,la550,id_CIDUSTM_phy) 410 412 411 413 DEALLOCATE(aerosol_name)
Note: See TracChangeset
for help on using the changeset viewer.