Changeset 2003
- Timestamp:
- Apr 4, 2014, 2:51:02 PM (11 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/aero_mod.F90
r1907 r2003 2 2 ! 3 3 MODULE aero_mod 4 4 ! Declaration des indices pour les aerosols 5 5 6 ! Total number of aerosols 7 ! INTEGER, PARAMETER :: naero_tot = 108 !--STRAT AER 6 ! 1/ Total number of aerosols for which an aerosol optical depth is provided 7 !--strat aerosols are only prescribed naero_tot = 10 ==> 11 8 9 9 INTEGER, PARAMETER :: naero_tot = 11 10 10 11 12 11 ! Identification number used in aeropt_2bands and aeropt_5wv 12 ! corresponding to naero_tot 13 13 INTEGER, PARAMETER :: id_ASBCM = 1 14 14 INTEGER, PARAMETER :: id_ASPOMM = 2 … … 21 21 INTEGER, PARAMETER :: id_AIBCM = 9 22 22 INTEGER, PARAMETER :: id_AIPOMM = 10 23 !--STRAT AER 24 INTEGER, PARAMETER :: id_strat = 11 23 INTEGER, PARAMETER :: id_STRAT = 11 25 24 25 ! Corresponding names for the aerosols 26 CHARACTER(len=7),DIMENSION(naero_tot), PARAMETER :: name_aero_tau=(/& 27 "ASBCM ", & 28 "ASPOMM ", & 29 "SO4 ", & 30 "CSSO4M ", & 31 "SSSSM ", & 32 "CSSSM ", & 33 "ASSSM ", & 34 "CIDUSTM", & 35 "AIBCM ", & 36 "AIPOMM ", & 37 "STRAT " /) 26 38 27 ! Total number of aerosols actually used in LMDZ 28 ! 1 = ASBCM 29 ! 2 = ASPOMM 30 ! 3 = ASSO4M ( = SO4) 31 ! 4 = CSSO4M 32 ! 5 = SSSSM 33 ! 6 = CSSSM 34 ! 7 = ASSSM 35 ! 8 = CIDUSTM 36 ! 9 = AIBCM 37 !10 = AIPOMM 38 !--STRAT AER 39 !11 = aerosols stratos 40 ! INTEGER, PARAMETER :: naero_spc = 10 41 INTEGER, PARAMETER :: naero_spc = 11 39 ! 2/ Total number of aerosols for which an aerosol mass is provided 42 40 43 ! Corresponding names for the aerosols 41 INTEGER, PARAMETER :: naero_spc = 10 42 43 ! Corresponding names for the aerosols 44 44 CHARACTER(len=7),DIMENSION(naero_spc), PARAMETER :: name_aero=(/& 45 45 "ASBCM ", & … … 52 52 "CIDUSTM", & 53 53 "AIBCM ", & 54 ! "AIPOMM " /) 55 "AIPOMM ", & 56 "STRAT " /) 54 "AIPOMM " /) 57 55 58 59 ! Number of aerosol groups56 ! 3/ Number of aerosol groups 57 INTEGER, PARAMETER :: naero_grp = 9 60 58 ! 1 = ZERO 61 59 ! 2 = AER total … … 67 65 ! 8 = SS 68 66 ! 9 = NO3 69 INTEGER, PARAMETER :: naero_grp = 970 67 71 68 ! Number of wavelengths 72 69 INTEGER, PARAMETER :: nwave = 5 73 70 74 71 ! Number of modes spectral bands 75 72 INTEGER, parameter :: nbands = 2 73 INTEGER, parameter :: nbands_rrtm = 6 76 74 77 75 END MODULE aero_mod -
LMDZ5/trunk/libf/phylmd/aeropt_2bands.F90
r1907 r2003 928 928 ENDDO ! nb_aer 929 929 930 DO m=1,nb_aer 930 !correction bug OB 931 ! DO m=1,nb_aer 932 DO m=1,naero_tot 931 933 IF (.NOT. used_aer(m)) THEN 932 934 tau_ae(:,:,m,:)=0. -
LMDZ5/trunk/libf/phylmd/clesphys.h
r1989 r2003 18 18 REAL(kind=8) CH4_ppb, N2O_ppb, CFC11_ppt, CFC12_ppt 19 19 !IM ajout CFMIP2/CMIP5 20 REAL co2_ppm_per 20 21 LOGICAL ok_4xCO2atm 21 22 REAL(kind=8) RCO2_per,RCH4_per,RN2O_per,RCFC11_per,RCFC12_per … … 79 80 COMMON/clesphys/ & 80 81 ! REAL FIRST 81 & co2_ppm, solaire&82 & co2_ppm, co2_ppm_per, solaire & 82 83 & , RCO2, RCH4, RN2O, RCFC11, RCFC12 & 83 84 & , RCO2_act, RCH4_act, RN2O_act, RCFC11_act, RCFC12_act & -
LMDZ5/trunk/libf/phylmd/phys_local_var_mod.F90
r1989 r2003 334 334 allocate(topswcf_aero(klon,3), solswcf_aero(klon,3)) 335 335 allocate(d_u_hin(klon,klev),d_v_hin(klon,klev),d_t_hin(klon,klev)) 336 allocate(tausum_aero(klon,nwave,naero_spc)) 337 allocate(tau3d_aero(klon,klev,nwave,naero_spc)) 336 ! allocate(tausum_aero(klon,nwave,naero_spc)) 337 ! allocate(tau3d_aero(klon,klev,nwave,naero_spc)) 338 !--correction mini bug OB 339 allocate(tausum_aero(klon,nwave,naero_tot)) 340 allocate(tau3d_aero(klon,klev,nwave,naero_tot)) 338 341 allocate(scdnc(klon, klev)) 339 342 allocate(cldncl(klon)) -
LMDZ5/trunk/libf/phylmd/phys_output_ctrlout_mod.F90
r1971 r2003 3 3 USE phys_output_var_mod 4 4 USE indice_sol_mod 5 USE aero_mod, only : naero_ spc,name_aero5 USE aero_mod, only : naero_tot,name_aero_tau 6 6 7 7 … … 723 723 'solswai', 'AIE at SFR', 'W/m2', (/ ('', i=1, 9) /)) 724 724 725 ! type(ctrl_out),save,dimension(10) :: o_tausumaero = (/ ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASBCM', & 726 ! (/ ('', i=1, 9) /)), & 727 type(ctrl_out),save,dimension(11) :: o_tausumaero = & 725 type(ctrl_out),save,dimension(naero_tot) :: o_tausumaero = & 728 726 (/ ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASBCM', & 729 "Aerosol Optical depth at 550 nm "//name_aero (1),"1", (/ ('', i=1, 9) /)), &727 "Aerosol Optical depth at 550 nm "//name_aero_tau(1),"1", (/ ('', i=1, 9) /)), & 730 728 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASPOMM', & 731 "Aerosol Optical depth at 550 nm "//name_aero (2),"1", (/ ('', i=1, 9) /)), &729 "Aerosol Optical depth at 550 nm "//name_aero_tau(2),"1", (/ ('', i=1, 9) /)), & 732 730 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASSO4M', & 733 "Aerosol Optical depth at 550 nm "//name_aero (3),"1", (/ ('', i=1, 9) /)), &731 "Aerosol Optical depth at 550 nm "//name_aero_tau(3),"1", (/ ('', i=1, 9) /)), & 734 732 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_CSSO4M', & 735 "Aerosol Optical depth at 550 nm "//name_aero (4),"1", (/ ('', i=1, 9) /)), &733 "Aerosol Optical depth at 550 nm "//name_aero_tau(4),"1", (/ ('', i=1, 9) /)), & 736 734 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_SSSSM', & 737 "Aerosol Optical depth at 550 nm "//name_aero (5),"1", (/ ('', i=1, 9) /)), &735 "Aerosol Optical depth at 550 nm "//name_aero_tau(5),"1", (/ ('', i=1, 9) /)), & 738 736 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_ASSSM', & 739 "Aerosol Optical depth at 550 nm "//name_aero (6),"1", (/ ('', i=1, 9) /)), &737 "Aerosol Optical depth at 550 nm "//name_aero_tau(6),"1", (/ ('', i=1, 9) /)), & 740 738 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_CSSSM', & 741 "Aerosol Optical depth at 550 nm "//name_aero (7),"1", (/ ('', i=1, 9) /)), &739 "Aerosol Optical depth at 550 nm "//name_aero_tau(7),"1", (/ ('', i=1, 9) /)), & 742 740 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_CIDUSTM', & 743 "Aerosol Optical depth at 550 nm "//name_aero (8),"1", (/ ('', i=1, 9) /)), &741 "Aerosol Optical depth at 550 nm "//name_aero_tau(8),"1", (/ ('', i=1, 9) /)), & 744 742 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_AIBCM', & 745 "Aerosol Optical depth at 550 nm "//name_aero (9),"1", (/ ('', i=1, 9) /)), &743 "Aerosol Optical depth at 550 nm "//name_aero_tau(9),"1", (/ ('', i=1, 9) /)), & 746 744 ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /),'OD550_AIPOMM', & 747 "Aerosol Optical depth at 550 nm "//name_aero (10),"1", (/ ('', i=1, 9) /)),&745 "Aerosol Optical depth at 550 nm "//name_aero_tau(10),"1", (/ ('', i=1, 9) /)),& 748 746 ctrl_out((/ 2, 2, 10, 10, 10, 10, 11, 11, 11 /),'OD550_STRAT', & 749 "Aerosol Optical depth at 550 nm "//name_aero(11),"1", (/ ('', i=1, 9) /)) /) 747 "Aerosol Optical depth at 550 nm "//name_aero_tau(11),"1", (/ ('', i=1, 9) /)) /) 748 ! 750 749 TYPE(ctrl_out), SAVE :: o_od550aer = ctrl_out((/ 2, 6, 10, 10, 10, 10, 11, 11, 11 /), & 751 750 'od550aer', 'Total aerosol optical depth at 550nm', '-', (/ ('', i=1, 9) /)) -
LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90
r2002 r2003 19 19 ok_ade, ok_aie, ivap, new_aod, ok_sync, & 20 20 ptconv, read_climoz, clevSTD, ptconvth, & 21 d_t, qx, d_qx, zmasse, flag_aerosol _strat)21 d_t, qx, d_qx, zmasse, flag_aerosol, flag_aerosol_strat, ok_cdnc) 22 22 23 23 ! This subroutine does the actual writing of diagnostics that were … … 223 223 USE comgeomphy, only: airephy 224 224 USE surface_data, only: type_ocean, ok_veget, ok_snow 225 USE aero_mod, only: naero_spc 225 ! USE aero_mod, only: naero_spc 226 USE aero_mod, only: naero_tot 226 227 USE ioipsl, only: histend, histsync 227 228 USE iophy, only: set_itau_iophy, histwrite_phy … … 260 261 REAL, DIMENSION(klon, llm) :: zmasse 261 262 LOGICAL :: flag_aerosol_strat 263 INTEGER :: flag_aerosol 264 LOGICAL :: ok_cdnc 262 265 REAL, DIMENSION(3) :: freq_moyNMC 263 266 … … 771 774 ! OD550 per species 772 775 IF (new_aod .and. (.not. aerosol_couple)) THEN 773 IF ( ok_ade.OR.ok_aie) THEN776 IF (flag_aerosol.GT.0) THEN 774 777 CALL histwrite_phy(o_od550aer, od550aer) 775 778 CALL histwrite_phy(o_od865aer, od865aer) … … 793 796 !--STRAT AER 794 797 ENDIF 795 IF (ok_ade.OR.ok_aie.OR.flag_aerosol_strat) THEN 796 DO naero = 1, naero_spc 798 IF (flag_aerosol.GT.0.OR.flag_aerosol_strat) THEN 799 ! DO naero = 1, naero_spc 800 !--correction mini bug OB 801 DO naero = 1, naero_tot 797 802 CALL histwrite_phy(o_tausumaero(naero), & 798 803 tausum_aero(:,2,naero) ) … … 831 836 CALL histwrite_phy(o_topswai, topswai_aero) 832 837 CALL histwrite_phy(o_solswai, solswai_aero) 838 ENDIF 839 IF (flag_aerosol.GT.0.AND.ok_cdnc) THEN 833 840 CALL histwrite_phy(o_scdnc, scdnc) 834 841 CALL histwrite_phy(o_cldncl, cldncl) -
LMDZ5/trunk/libf/phylmd/phys_state_var_mod.F90
r1938 r2003 349 349 REAL,SAVE,ALLOCATABLE :: tau_aero(:,:,:,:), piz_aero(:,:,:,:), cg_aero(:,:,:,:) 350 350 !$OMP THREADPRIVATE(tau_aero, piz_aero, cg_aero) 351 REAL,SAVE,ALLOCATABLE :: tau_aero_rrtm(:,:,:,:), piz_aero_rrtm(:,:,:,:), cg_aero_rrtm(:,:,:,:) 352 !$OMP THREADPRIVATE(tau_aero_rrtm, piz_aero_rrtm, cg_aero_rrtm) 351 353 REAL,SAVE,ALLOCATABLE :: ccm(:,:,:) 352 354 !$OMP THREADPRIVATE(ccm) … … 517 519 ALLOCATE(topswai(klon), solswai(klon)) 518 520 ALLOCATE(tau_aero(klon,klev,naero_grp,nbands),piz_aero(klon,klev,naero_grp,nbands),cg_aero(klon,klev,naero_grp,nbands)) 521 ALLOCATE(tau_aero_rrtm(klon,klev,2,nbands_rrtm),piz_aero_rrtm(klon,klev,2,nbands_rrtm)) 522 ALLOCATE(cg_aero_rrtm(klon,klev,2,nbands_rrtm)) 519 523 ALLOCATE(ccm(klon,klev,nbands)) 520 524 … … 631 635 deallocate(topswai, solswai) 632 636 deallocate(tau_aero,piz_aero,cg_aero) 637 deallocate(tau_aero_rrtm,piz_aero_rrtm,cg_aero_rrtm) 633 638 deallocate(ccm) 634 639 if (ok_gwd_rando) deallocate(du_gwd_rando, dv_gwd_rando) -
LMDZ5/trunk/libf/phylmd/physiq.F90
r1998 r2003 52 52 USE indice_sol_mod 53 53 USE phytrac_mod, ONLY : phytrac 54 55 USE YOERAD , ONLY : NRADLP 54 56 55 57 !IM stations CFMIP … … 2697 2699 !jq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr) 2698 2700 IF (flag_aerosol .gt. 0) THEN 2699 IF (.NOT. aerosol_couple) & 2701 IF (.NOT. aerosol_couple) THEN 2702 IF (iflag_rrtm .EQ. 0) THEN !--old radiation 2703 ! 2700 2704 CALL readaerosol_optic( & 2701 2705 debut, new_aod, flag_aerosol, itap, jD_cur-jD_ref, & … … 2704 2708 tau_aero, piz_aero, cg_aero, & 2705 2709 tausum_aero, tau3d_aero) 2710 ! 2711 ELSE ! RRTM radiation 2712 ! 2713 CALL readaerosol_optic_rrtm( & 2714 debut, new_aod, flag_aerosol, itap, jD_cur-jD_ref, & 2715 pdtphys, pplay, paprs, t_seri, rhcl, presnivs, & 2716 mass_solu_aero, mass_solu_aero_pi, & 2717 tau_aero_rrtm, piz_aero_rrtm, cg_aero_rrtm, & 2718 tausum_aero, tau3d_aero) 2719 ! 2720 ENDIF 2721 ENDIF 2706 2722 ELSE 2707 2723 tausum_aero(:,:,:) = 0. 2708 tau_aero(:,:,:,:) = 0. 2709 piz_aero(:,:,:,:) = 0. 2710 cg_aero(:,:,:,:) = 0. 2724 IF (iflag_rrtm .EQ. 0) THEN !--old radiation 2725 tau_aero(:,:,:,:) = 0. 2726 piz_aero(:,:,:,:) = 0. 2727 cg_aero(:,:,:,:) = 0. 2728 ELSE 2729 tau_aero_rrtm(:,:,:,:)=0.0 2730 piz_aero_rrtm(:,:,:,:)=0.0 2731 cg_aero_rrtm(:,:,:,:)=0.0 2732 ENDIF 2711 2733 ENDIF 2712 2734 ! … … 2715 2737 IF (flag_aerosol_strat) THEN 2716 2738 PRINT *,'appel a readaerosolstrat', mth_cur 2717 CALL readaerosolstrato(debut) 2739 IF (iflag_rrtm.EQ.0) THEN 2740 CALL readaerosolstrato(debut) 2741 ELSE 2742 CALL readaerosolstrato_rrtm(debut) 2743 ENDIF 2718 2744 ENDIF 2719 2745 !--fin STRAT AEROSOL … … 2934 2960 2935 2961 if (ok_newmicro) then 2962 IF (iflag_rrtm.NE.0.AND.ok_cdnc.AND.NRADLP.NE.3) THEN 2963 PRINT *,'RRTM choix incoherent NRADLP doit etre egal a 3 pour ok_cdnc' 2964 STOP 2965 ENDIF 2936 2966 CALL newmicro (ok_cdnc, bl95_b0, bl95_b1, & 2937 2967 paprs, pplay, t_seri, cldliq, cldfra, & … … 3075 3105 flag_aerosol_strat, & 3076 3106 tau_aero, piz_aero, cg_aero, & 3107 tau_aero_rrtm, piz_aero_rrtm, cg_aero_rrtm,& ! Rajoute par OB pour RRTM 3077 3108 cldtaupirad,new_aod, & 3078 3109 zqsat, flwc, fiwc, & … … 3121 3152 flag_aerosol_strat, & 3122 3153 tau_aero, piz_aero, cg_aero, & 3154 tau_aero_rrtm, piz_aero_rrtm, cg_aero_rrtm,& ! Rajoute par OB pour RRTM 3123 3155 cldtaupi,new_aod, & 3124 3156 zqsat, flwc, fiwc, & … … 3746 3778 ptconv, read_climoz, clevSTD, & 3747 3779 ptconvth, d_t, qx, d_qx, zmasse, & 3748 flag_aerosol _strat)3780 flag_aerosol, flag_aerosol_strat, ok_cdnc) 3749 3781 3750 3782 -
LMDZ5/trunk/libf/phylmd/radlwsw_m.F90
-
Property
svn:keywords
set to
Author Date Id Revi
r1991 r2003 1 ! 2 ! $Id$ 3 ! 1 4 module radlwsw_m 2 5 … … 13 16 flag_aerosol_strat,& 14 17 tau_aero, piz_aero, cg_aero,& 18 tau_aero_rrtm, piz_aero_rrtm, cg_aero_rrtm,& ! rajoute par OB pour RRTM 15 19 cldtaupi, new_aod, & 16 20 qsat, flwc, fiwc, & … … 177 181 REAL, INTENT(in) :: piz_aero(KLON,KLEV,9,2) ! aerosol optical properties (see aeropt.F) 178 182 REAL, INTENT(in) :: cg_aero(KLON,KLEV,9,2) ! aerosol optical properties (see aeropt.F) 183 !--OB 184 REAL, INTENT(in) :: tau_aero_rrtm(KLON,KLEV,2,NSW) ! aerosol optical properties RRTM 185 REAL, INTENT(in) :: piz_aero_rrtm(KLON,KLEV,2,NSW) ! aerosol optical properties RRTM 186 REAL, INTENT(in) :: cg_aero_rrtm(KLON,KLEV,2,NSW) ! aerosol optical properties RRTM 187 !--OB fin 179 188 REAL, INTENT(in) :: cldtaupi(KLON,KLEV) ! cloud optical thickness for pre-industrial aerosol concentrations 180 189 LOGICAL, INTENT(in) :: new_aod ! flag pour retrouver les resultats exacts de l'AR4 dans le cas ou l'on ne travaille qu'avec les sulfates … … 273 282 REAL(KIND=8) ref_liq_i(klon,klev) ! cloud droplet radius present-day from newmicro (inverted) 274 283 REAL(KIND=8) ref_ice_i(klon,klev) ! ice crystal radius present-day from newmicro (inverted) 284 !--OB 285 REAL(KIND=8) ref_liq_pi_i(klon,klev) ! cloud droplet radius pre-industrial from newmicro (inverted) 286 REAL(KIND=8) ref_ice_pi_i(klon,klev) ! ice crystal radius pre-industrial from newmicro (inverted) 287 !--end OB 275 288 REAL(KIND=8) paprs_i(klon,klev+1) 276 289 REAL(KIND=8) pplay_i(klon,klev) … … 297 310 REAL(KIND=8) ZSWFT (klon,klev+1),ZSWFT_i (klon,klev+1) 298 311 REAL(KIND=8) ZFLUCDWN_i(klon,klev+1),ZFLUCUP_i(klon,klev+1) 299 REAL(KIND=8) PPIZA_DST(klon,klev,NSW) 300 REAL(KIND=8) PCGA_DST(klon,klev,NSW) 301 REAL(KIND=8) PTAUREL_DST(klon,klev,NSW) 312 REAL(KIND=8) PPIZA_TOT(klon,klev,NSW) 313 REAL(KIND=8) PCGA_TOT(klon,klev,NSW) 314 REAL(KIND=8) PTAU_TOT(klon,klev,NSW) 315 REAL(KIND=8) PPIZA_NAT(klon,klev,NSW) 316 REAL(KIND=8) PCGA_NAT(klon,klev,NSW) 317 REAL(KIND=8) PTAU_NAT(klon,klev,NSW) 302 318 REAL(KIND=8) PSFSWDIR(klon,NSW) 303 319 REAL(KIND=8) PSFSWDIF(klon,NSW) … … 319 335 ! REAL(KIND=8) SUN_FRACT(2) 320 336 real, parameter:: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2 321 !--OB 322 REAL tau(6), alt, zdz, zrho 323 character (len=20) :: modname='radlwsw' 324 character (len=80) :: abort_message 337 CHARACTER (LEN=80) :: abort_message 338 CHARACTER (LEN=80) :: modname='radlwsw_m' 325 339 326 340 call assert(size(wo, 1) == klon, size(wo, 2) == klev, "radlwsw wo") … … 621 635 ENDDO 622 636 ENDDO 623 ! 624 !--OB Valeurs de tau(NSW) calculees par O.Boucher (MPL 20130417) 625 !-- voir aod_2bands.F90, aod_4bands.F90, aod_6bands.F90 dans BENCH48x36x19 626 SELECT CASE (NSW) 627 CASE (2) 628 tau(1)=0.22017828 629 tau(2)=0.110565394 630 CASE (4) 631 tau(1)=0.22017743 632 tau(2)=0.12738435 633 tau(3)=0.07157799 634 tau(4)=0.03301198 635 CASE (6) 636 tau(1)=0.49999997 637 tau(2)=0.28593913 638 tau(3)=0.20057647 639 tau(4)=0.12738435 640 tau(5)=0.07157799 641 tau(6)=0.03301198 642 END SELECT 643 ! tau1=0.2099 ! anciennes valeurs de Nicolas Huneeus (20130326) 644 ! tau2=0.1022 645 ! tau(1)=1.0e-15 646 ! tau(2)=1.0e-15 647 ! tau(3)=1.0e-15 648 ! tau(4)=1.0e-15 649 ! tau(5)=1.0e-15 650 ! tau(6)=1.0e-15 651 print *,'Radlwsw: NSW tau= ',NSW,tau(:) 652 DO i = 1, kdlon 653 alt=0.0 637 ! 638 !--OB 639 !--aerosol TOT - anthropogenic+natural 640 !--aerosol NAT - natural only 641 ! 642 DO i = 1, kdlon 654 643 DO k = 1, kflev 655 zrho=pplay(i,k)/t(i,k)/RD656 zdz=(paprs(i,k)-paprs(i,k+1))/zrho/RG657 644 DO kk=1, NSW 658 PTAUREL_DST(i,kflev+1-k,kk)=(tau(kk)/2000.0)*max(0.0,min(zdz,2000.0-alt)) 659 PTAUREL_DST(i,kflev+1-k,kk)=MAX(PTAUREL_DST(i,kflev+1-k,kk), 1e-15) 660 ENDDO 661 alt=alt+zdz 662 ENDDO 663 ENDDO 664 665 ! 666 DO k = 1, kflev 667 DO i = 1, kdlon 668 DO kk = 1, NSW 669 ! PPIZA_DST(i,k,kk)=1.0 670 PPIZA_DST(i,k,kk)=0.8 671 PCGA_DST(i,k,kk)=0.7 672 ENDDO 673 ENDDO 674 ENDDO 645 ! 646 PTAU_TOT(i,kflev+1-k,kk)=tau_aero_rrtm(i,k,2,kk) 647 PPIZA_TOT(i,kflev+1-k,kk)=piz_aero_rrtm(i,k,2,kk) 648 PCGA_TOT(i,kflev+1-k,kk)=cg_aero_rrtm(i,k,2,kk) 649 ! 650 PTAU_NAT(i,kflev+1-k,kk)=tau_aero_rrtm(i,k,1,kk) 651 PPIZA_NAT(i,kflev+1-k,kk)=piz_aero_rrtm(i,k,1,kk) 652 PCGA_NAT(i,kflev+1-k,kk)=cg_aero_rrtm(i,k,1,kk) 653 ! 654 ENDDO 655 ENDDO 656 ENDDO 657 !-end OB 658 ! 675 659 ! 676 660 DO i = 1, kdlon … … 707 691 ref_liq_i(1:klon,k) =ref_liq(1:klon,klev+1-k) 708 692 ref_ice_i(1:klon,k) =ref_ice(1:klon,klev+1-k) 693 !-OB 694 ref_liq_pi_i(1:klon,k) =ref_liq_pi(1:klon,klev+1-k) 695 ref_ice_pi_i(1:klon,k) =ref_ice_pi(1:klon,klev+1-k) 709 696 enddo 710 697 do k=1,kflev … … 762 749 763 750 ! Nouvel appel a RECMWF (celui du cy32t0) 764 CALL RECMWF (ist , iend, klon , ktdia , klev , kmode ,&751 CALL RECMWF_AERO (ist , iend, klon , ktdia , klev , kmode ,& 765 752 PALBD_NEW,PALBP_NEW, paprs_i , pplay_i , RCO2 , cldfra_i,& 766 753 POZON_i , PAER_i , PDP_i , PEMIS , rmu0 ,& 767 754 q_i , qsat_i , fiwc_i , flwc_i , zmasq , t_i ,tsol,& 768 755 ref_liq_i, ref_ice_i, & 756 ref_liq_pi_i, ref_ice_pi_i, & ! rajoute par OB pour diagnostiquer effet indirect 769 757 ZEMTD_i , ZEMTU_i , ZTRSO_i ,& 770 758 ZTH_i , ZCTRSO , ZCEMTR , ZTRSOD ,& 771 759 ZLWFC , ZLWFT_i , ZSWFC , ZSWFT_i ,& 772 760 PSFSWDIR , PSFSWDIF, PFSDNN , PFSDNV ,& 773 PPIZA_DST, PCGA_DST,PTAUREL_DST,ZFLUX_i , ZFLUC_i ,& 774 ZFSDWN_i , ZFSUP_i , ZFCDWN_i, ZFCUP_i) 761 PPIZA_TOT, PCGA_TOT,PTAU_TOT,& 762 PPIZA_NAT, PCGA_NAT,PTAU_NAT, & ! rajoute par OB pour diagnostiquer effet direct 763 ZFLUX_i , ZFLUC_i ,& 764 ZFSDWN_i , ZFSUP_i , ZFCDWN_i, ZFCUP_i,& 765 ZTOPSWADAERO,ZSOLSWADAERO,& ! rajoute par OB pour diagnostics 766 ZTOPSWAD0AERO,ZSOLSWAD0AERO,& 767 ZTOPSWAIAERO,ZSOLSWAIAERO, & 768 ZTOPSWCF_AERO,ZSOLSWCF_AERO, & 769 ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat) ! flags aerosols 775 770 776 771 print *,'RADLWSW: apres RECMWF' … … 791 786 CALL writefield_phy('pfsdnn',PFSDNN,1) 792 787 CALL writefield_phy('pfsdnv',PFSDNV,1) 793 CALL writefield_phy('ppiza_dst',PPIZA_ DST,klev)794 CALL writefield_phy('pcga_dst',PCGA_ DST,klev)795 CALL writefield_phy('ptaurel_dst',PTAU REL_DST,klev)788 CALL writefield_phy('ppiza_dst',PPIZA_TOT,klev) 789 CALL writefield_phy('pcga_dst',PCGA_TOT,klev) 790 CALL writefield_phy('ptaurel_dst',PTAU_TOT,klev) 796 791 CALL writefield_phy('zflux_i',ZFLUX_i,klev+1) 797 792 CALL writefield_phy('zfluc_i',ZFLUC_i,klev+1) … … 813 808 ! ZSWFC (KPROMA,2) ; CLEAR-SKY SHORTWAVE FLUXES 814 809 ! ZSWFT (KPROMA,KLEV+1) ; TOTAL-SKY SHORTWAVE FLUXES 815 ! PPIZA_DST (KPROMA,KLEV,NSW); Single scattering albedo of dust 816 ! PCGA_DST (KPROMA,KLEV,NSW); Assymetry factor for dust 817 ! PTAUREL_DST (KPROMA,KLEV,NSW); Optical depth of dust relative to at 550nm 810 ! PPIZA_TOT (KPROMA,KLEV,NSW); Single scattering albedo of total aerosols 811 ! PCGA_TOT (KPROMA,KLEV,NSW); Assymetry factor for total aerosols 812 ! PTAU_TOT (KPROMA,KLEV,NSW); Optical depth of total aerosols 813 ! PPIZA_NAT (KPROMA,KLEV,NSW); Single scattering albedo of natural aerosols 814 ! PCGA_NAT (KPROMA,KLEV,NSW); Assymetry factor for natural aerosols 815 ! PTAU_NAT (KPROMA,KLEV,NSW); Optical depth of natiral aerosols 818 816 ! PSFSWDIR (KPROMA,NSW) ; 819 817 ! PSFSWDIF (KPROMA,NSW) ; … … 854 852 ENDDO 855 853 ENDDO 854 855 !--ajout OB 856 ZTOPSWADAERO(:) =ZTOPSWADAERO(:) *fract(:) 857 ZSOLSWADAERO(:) =ZSOLSWADAERO(:) *fract(:) 858 ZTOPSWAD0AERO(:)=ZTOPSWAD0AERO(:)*fract(:) 859 ZSOLSWAD0AERO(:)=ZSOLSWAD0AERO(:)*fract(:) 860 ZTOPSWAIAERO(:) =ZTOPSWAIAERO(:) *fract(:) 861 ZSOLSWAIAERO(:) =ZSOLSWAIAERO(:) *fract(:) 862 ZTOPSWCF_AERO(:,1)=ZTOPSWCF_AERO(:,1)*fract(:) 863 ZTOPSWCF_AERO(:,2)=ZTOPSWCF_AERO(:,2)*fract(:) 864 ZTOPSWCF_AERO(:,3)=ZTOPSWCF_AERO(:,3)*fract(:) 865 ZSOLSWCF_AERO(:,1)=ZSOLSWCF_AERO(:,1)*fract(:) 866 ZSOLSWCF_AERO(:,2)=ZSOLSWCF_AERO(:,2)*fract(:) 867 ZSOLSWCF_AERO(:,3)=ZSOLSWCF_AERO(:,3)*fract(:) 856 868 857 869 ! print*,'SW_RRTM ZFSDN0 1 , klev:',ZFSDN0(1:klon,1),ZFSDN0(1:klon,klev) -
Property
svn:keywords
set to
-
LMDZ5/trunk/libf/phylmd/readaerosol_optic.F90
-
Property
svn:keywords
set to
Author Date Id Revision
r1907 r2003 40 40 REAL, DIMENSION(klon,klev,naero_grp,nbands), INTENT(OUT) :: piz_aero ! Single scattering albedo aerosol 41 41 REAL, DIMENSION(klon,klev,naero_grp,nbands), INTENT(OUT) :: cg_aero ! asymmetry parameter aerosol 42 REAL, DIMENSION(klon,nwave,naero_spc), INTENT(OUT) :: tausum_aero 43 REAL, DIMENSION(klon,klev,nwave,naero_spc), INTENT(OUT) :: tau3d_aero 42 ! REAL, DIMENSION(klon,nwave,naero_spc), INTENT(OUT) :: tausum_aero 43 ! REAL, DIMENSION(klon,klev,nwave,naero_spc), INTENT(OUT) :: tau3d_aero 44 !--correction mini bug OB 45 REAL, DIMENSION(klon,nwave,naero_tot), INTENT(OUT) :: tausum_aero 46 REAL, DIMENSION(klon,klev,nwave,naero_tot), INTENT(OUT) :: tau3d_aero 44 47 45 48 ! Local variables -
Property
svn:keywords
set to
-
LMDZ5/trunk/libf/phylmd/rrtm/rrtm_taumol1.F90
r1990 r2003 189 189 190 190 IF (LHOOK) CALL DR_HOOK('RRTM_TAUMOL1',0,ZHOOK_HANDLE) 191 !--ajout OB 192 IF (K_LAYTROP.GT.100) THEN 193 PRINT *,'ATTENTION KLAY_TROP > 100 PROBLEME ARRAY DANS RRTM ON ARRETE' 194 STOP 195 !--fin ajout OB 196 ENDIF 191 197 DO I_LAY = 1, K_LAYTROP 192 198 IND0(I_LAY) = ((K_JP(I_LAY)-1)*5+(K_JT(I_LAY)-1))*NSPA(1) + 1 -
LMDZ5/trunk/libf/phylmd/rrtm/swclr.F90
r1990 r2003 5 5 & PRK , PRMU0 , PTAUAZ, PTRA1 , PTRA2 , PTRCLR, & 6 6 !++MODIFCODE 7 & L RDUST,PPIZA_DST, PCGA_DST, PTAUREL_DST )7 & LDDUST,PPIZA_DST, PCGA_DST, PTAU_DST ) 8 8 !--MODIFCODE 9 9 … … 58 58 ! Y.Seity 05-10-10 : add add 3 optional arg. for dust SW properties 59 59 ! Y.Seity 06-09-09 : add modset from O.Thouron (MesoNH) under NOVLP tests 60 ! O.Boucher fev.2014: modification sur les aerosols pour utiliser les variables DST 60 61 ! ------------------------------------------------------------------ 61 62 … … 71 72 72 73 IMPLICIT NONE 73 74 include "clesphys.h" 74 INCLUDE "clesphys.h" 75 75 76 76 INTEGER(KIND=JPIM),INTENT(IN) :: KLON … … 86 86 REAL(KIND=JPRB) ,INTENT(IN) :: PSEC(KLON) 87 87 !++MODIFCODE 88 LOGICAL ,INTENT(IN) :: L RDUST ! flag for DUST88 LOGICAL ,INTENT(IN) :: LDDUST ! flag for DUST 89 89 REAL(KIND=JPRB) ,INTENT(IN) :: PPIZA_DST(KLON,KLEV) 90 90 REAL(KIND=JPRB) ,INTENT(IN) :: PCGA_DST(KLON,KLEV) 91 REAL(KIND=JPRB) ,INTENT(IN) :: PTAU REL_DST(KLON,KLEV)91 REAL(KIND=JPRB) ,INTENT(IN) :: PTAU_DST(KLON,KLEV) 92 92 !--MODIFCODE 93 93 REAL(KIND=JPRB) ,INTENT(OUT) :: PCGAZ(KLON,KLEV) … … 157 157 158 158 !++MODIFCODE 159 !--OB on fait passer les aerosols LMDZ dans la variable DST 159 160 IF(NOVLP < 5)THEN !ECMWF VERSION 160 DO JAE=1,6161 ! DO JAE=1,6 161 162 DO JL = KIDIA,KFDIA 162 PTAUAZ(JL,JK)=PTAUAZ(JL,JK)+PAER(JL,JAE,IKL)*RTAUA(KNU,JAE) 163 PPIZAZ(JL,JK)=PPIZAZ(JL,JK)+PAER(JL,JAE,IKL)& 164 & * RTAUA(KNU,JAE)*RPIZA(KNU,JAE) 165 PCGAZ(JL,JK) = PCGAZ(JL,JK) +PAER(JL,JAE,IKL)& 166 & * RTAUA(KNU,JAE)*RPIZA(KNU,JAE)*RCGA(KNU,JAE) 163 ! PTAUAZ(JL,JK)=PTAUAZ(JL,JK)+PAER(JL,JAE,IKL)*RTAUA(KNU,JAE) 164 PTAUAZ(JL,JK)=PTAU_DST(JL,IKL) 165 ! PPIZAZ(JL,JK)=PPIZAZ(JL,JK)+PAER(JL,JAE,IKL)& 166 ! & * RTAUA(KNU,JAE)*RPIZA(KNU,JAE) 167 PPIZAZ(JL,JK)=PTAU_DST(JL,IKL)*PPIZA_DST(JL,IKL) 168 ! PCGAZ(JL,JK) = PCGAZ(JL,JK) +PAER(JL,JAE,IKL)& 169 ! & * RTAUA(KNU,JAE)*RPIZA(KNU,JAE)*RCGA(KNU,JAE) 170 PCGAZ(JL,JK)=PTAU_DST(JL,IKL)*PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL) 167 171 ENDDO 168 ENDDO172 ! ENDDO 169 173 ELSE ! MESONH VERSION 170 DO JAE=1,6 174 !--OB on utilise directement les aerosols LMDZ 175 ! DO JAE=1,6 171 176 DO JL = KIDIA,KFDIA 172 177 !Special optical properties for dust 173 IF (LRDUST.AND.(JAE==3)) THEN178 ! IF (LDDUST.AND.(JAE==3)) THEN 174 179 !Ponderation of aerosol optical properties:first step 175 180 !ti 176 PTAUAZ(JL,JK)=PTAUAZ(JL,JK) + PAER(JL,JAE,IKL) * PTAUREL_DST(JL,IKL) 181 ! PTAUAZ(JL,JK)=PTAUAZ(JL,JK) + PAER(JL,JAE,IKL) * PTAUREL_DST(JL,IKL) 182 PTAUAZ(JL,JK)= PTAU_DST(JL,IKL) 177 183 !wi*ti 178 PPIZAZ(JL,JK)=PPIZAZ(JL,JK) + PAER(JL,JAE,IKL) & 179 & *PTAUREL_DST(JL,IKL)*PPIZA_DST(JL,IKL) 184 ! PPIZAZ(JL,JK)=PPIZAZ(JL,JK) + PAER(JL,JAE,IKL) & 185 ! & *PTAUREL_DST(JL,IKL)*PPIZA_DST(JL,IKL) 186 PPIZAZ(JL,JK)=PTAU_DST(JL,IKL)*PPIZA_DST(JL,IKL) 180 187 !wi*ti*gi 181 PCGAZ(JL,JK) = PCGAZ(JL,JK) + PAER(JL,JAE,IKL) & 182 & *PTAUREL_DST(JL,IKL)*PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL) 188 ! PCGAZ(JL,JK) = PCGAZ(JL,JK) + PAER(JL,JAE,IKL) & 189 ! & *PTAUREL_DST(JL,IKL)*PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL) 190 PCGAZ(JL,JK) = PTAU_DST(JL,IKL)*PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL) 183 191 !wi*ti*(gi**2) 184 ZFACOA_NEW(JL,JK)= ZFACOA_NEW(JL,JK)+PAER(JL, JAE, IKL)& 185 & *PTAUREL_DST(JL,IKL) *PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL)*& 192 ! ZFACOA_NEW(JL,JK)= ZFACOA_NEW(JL,JK)+PAER(JL, JAE, IKL)& 193 ! & *PTAUREL_DST(JL,IKL) *PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL)*& 194 ! & PCGA_DST(JL,IKL) 195 ZFACOA_NEW(JL,JK)= ZFACOA_NEW(JL,JK)+& 196 & PTAU_DST(JL,IKL) *PPIZA_DST(JL,IKL)*PCGA_DST(JL,IKL)*& 186 197 & PCGA_DST(JL,IKL) 187 ELSE198 ! ELSE 188 199 !Ponderation of aerosol optical properties:first step 189 200 !ti 190 PTAUAZ(JL,JK)=PTAUAZ(JL,JK)+PAER(JL, JAE, IKL)*RTAUA(KNU,JAE)201 ! PTAUAZ(JL,JK)=PTAUAZ(JL,JK)+PAER(JL, JAE, IKL)*RTAUA(KNU,JAE) 191 202 !wi*ti 192 PPIZAZ(JL,JK)=PPIZAZ(JL,JK)+PAER(JL, JAE, IKL)&193 &* RTAUA(KNU,JAE)*RPIZA(KNU,JAE)203 ! PPIZAZ(JL,JK)=PPIZAZ(JL,JK)+PAER(JL, JAE, IKL)& 204 ! &* RTAUA(KNU,JAE)*RPIZA(KNU,JAE) 194 205 !wi*ti*gi 195 PCGAZ(JL,JK) = PCGAZ(JL,JK) +PAER(JL, JAE, IKL)&196 &* RTAUA(KNU,JAE)*RPIZA(KNU,JAE)*RCGA(KNU,JAE)206 ! PCGAZ(JL,JK) = PCGAZ(JL,JK) +PAER(JL, JAE, IKL)& 207 ! &* RTAUA(KNU,JAE)*RPIZA(KNU,JAE)*RCGA(KNU,JAE) 197 208 !wi*ti*(gi**2) 198 ZFACOA_NEW(JL,JK)= ZFACOA_NEW(JL,JK)+PAER(JL, JAE, IKL)&199 &* RTAUA(KNU,JAE)*RPIZA(KNU,JAE)*RCGA(KNU,JAE)*RCGA(KNU,JAE)200 ENDIF209 ! ZFACOA_NEW(JL,JK)= ZFACOA_NEW(JL,JK)+PAER(JL, JAE, IKL)& 210 ! &* RTAUA(KNU,JAE)*RPIZA(KNU,JAE)*RCGA(KNU,JAE)*RCGA(KNU,JAE) 211 ! ENDIF 201 212 ENDDO 202 ENDDO213 ! ENDDO 203 214 ENDIF 204 215 !--MODIFCODE
Note: See TracChangeset
for help on using the changeset viewer.