Changeset 3408 for LMDZ6/branches/IPSLCM6.0.15/libf
- Timestamp:
- Oct 25, 2018, 5:23:18 PM (6 years ago)
- Location:
- LMDZ6/branches/IPSLCM6.0.15/libf
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/IPSLCM6.0.15/libf/dynphy_lonlat/phylmd/etat0phys_netcdf.F90
r3339 r3408 110 110 INTEGER :: iflag_radia, iflag_cldcon, iflag_ratqs 111 111 REAL :: ratqsbas, ratqshaut, tau_ratqs 112 LOGICAL :: ok_ade, ok_aie, ok_ alw, ok_cdnc, aerosol_couple, chemistry_couple112 LOGICAL :: ok_ade, ok_aie, ok_volcan, ok_alw, ok_cdnc, aerosol_couple, chemistry_couple 113 113 INTEGER :: flag_aerosol 114 114 INTEGER :: flag_aerosol_strat … … 126 126 ! Physics configuration 127 127 !******************************************************************************* 128 CALL conf_phys( ok_journe, ok_mensuel, ok_instan, ok_hf, ok_LES, &129 callstats, &130 solarlong0,seuil_inversion, &131 fact_cldcon, facttemps,ok_newmicro,iflag_radia, &132 iflag_cldcon, &133 iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, &134 ok_ade, ok_aie, ok_ alw, ok_cdnc, aerosol_couple,&135 chemistry_couple, flag_aerosol, flag_aerosol_strat,&136 new_aod, flag_bc_internal_mixture, bl95_b0, bl95_b1, &137 read_climoz, alp_offset)128 CALL conf_phys( ok_journe, ok_mensuel, ok_instan, ok_hf, ok_LES, & 129 callstats, & 130 solarlong0,seuil_inversion, & 131 fact_cldcon, facttemps,ok_newmicro,iflag_radia, & 132 iflag_cldcon, & 133 iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, & 134 ok_ade, ok_aie, ok_volcan, ok_alw, ok_cdnc, & 135 aerosol_couple, chemistry_couple, flag_aerosol, & 136 flag_aerosol_strat, new_aod, flag_bc_internal_mixture, & 137 bl95_b0, bl95_b1, read_climoz, alp_offset) 138 138 CALL phys_state_var_init(read_climoz) 139 139 -
LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/conf_phys_m.F90
r3339 r3408 17 17 iflag_cld_th, & 18 18 iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, & 19 ok_ade, ok_aie, ok_alw, ok_cdnc, aerosol_couple, chemistry_couple, &20 flag_aerosol, flag_aerosol_strat, new_aod, &19 ok_ade, ok_aie, ok_alw, ok_cdnc, ok_volcan, aerosol_couple, & 20 chemistry_couple, flag_aerosol, flag_aerosol_strat, new_aod, & 21 21 flag_bc_internal_mixture, bl95_b0, bl95_b1,& 22 22 read_climoz, & … … 66 66 ! flag_bc_internal_mixture : use BC internal mixture if true 67 67 ! bl95_b*: parameters in the formula to link CDNC to aerosol mass conc 68 ! ok_volcan: activate volcanic diags (SW heat & LW cool rate, SW & LW flux) 68 69 ! 69 70 … … 75 76 LOGICAL :: ok_LES 76 77 LOGICAL :: callstats 77 LOGICAL :: ok_ade, ok_aie, ok_alw, ok_cdnc 78 LOGICAL :: ok_ade, ok_aie, ok_alw, ok_cdnc, ok_volcan 78 79 LOGICAL :: aerosol_couple, chemistry_couple 79 80 INTEGER :: flag_aerosol … … 96 97 LOGICAL, SAVE :: ok_LES_omp 97 98 LOGICAL, SAVE :: callstats_omp 98 LOGICAL, SAVE :: ok_ade_omp, ok_aie_omp, ok_alw_omp, ok_cdnc_omp 99 LOGICAL, SAVE :: ok_ade_omp, ok_aie_omp, ok_alw_omp, ok_cdnc_omp, ok_volcan_omp 99 100 LOGICAL, SAVE :: aerosol_couple_omp, chemistry_couple_omp 100 101 INTEGER, SAVE :: flag_aerosol_omp … … 396 397 ok_cdnc_omp = .FALSE. 397 398 CALL getin('ok_cdnc', ok_cdnc_omp) 399 400 ! 401 !Config Key = ok_volcan 402 !Config Desc = ok to generate volcanic diags 403 !Config Def = .FALSE. 404 !Config Help = Used in radlwsw_m.F 405 ! 406 ok_volcan_omp = .FALSE. 407 CALL getin('ok_volcan', ok_volcan_omp) 408 398 409 ! 399 410 !Config Key = aerosol_couple … … 2282 2293 ok_alw = ok_alw_omp 2283 2294 ok_cdnc = ok_cdnc_omp 2295 ok_volcan = ok_volcan_omp 2284 2296 aerosol_couple = aerosol_couple_omp 2285 2297 chemistry_couple = chemistry_couple_omp … … 2613 2625 write(lunout,*)' pmagic = ',pmagic 2614 2626 write(lunout,*)' ok_ade = ',ok_ade 2627 write(lunout,*)' ok_volcan = ',ok_volcan 2615 2628 write(lunout,*)' ok_aie = ',ok_aie 2616 2629 write(lunout,*)' ok_alw = ',ok_alw -
LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/phys_output_ctrlout_mod.F90
r3284 r3408 1375 1375 TYPE(ctrl_out), SAVE :: o_temp = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11, 11/), & 1376 1376 'temp', 'Air temperature', 'K', (/ ('', i=1, 10) /)) 1377 TYPE(ctrl_out), SAVE :: o_heat_volc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11, 11/), & 1378 'heat_volc', 'SW heating rate due to volcano', 'K/s', (/ ('', i=1, 10) /)) 1379 TYPE(ctrl_out), SAVE :: o_cool_volc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11, 11/), & 1380 'cool_volc', 'LW cooling rate due to volcano', 'K/s', (/ ('', i=1, 10) /)) 1377 1381 TYPE(ctrl_out), SAVE :: o_theta = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11, 11/), & 1378 1382 'theta', 'Potential air temperature', 'K', (/ ('', i=1, 10) /)) -
LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/phys_output_write_mod.F90
r3400 r3408 17 17 SUBROUTINE phys_output_write(itap, pdtphys, paprs, pphis, & 18 18 pplay, lmax_th, aerosol_couple, & 19 ok_ade, ok_aie, ivap, iliq, isol, new_aod, ok_sync, &19 ok_ade, ok_aie, ok_volcan, ivap, iliq, isol, new_aod, ok_sync, & 20 20 ptconv, read_climoz, clevSTD, ptconvth, & 21 21 d_u, d_t, qx, d_qx, zmasse, flag_aerosol, flag_aerosol_strat, ok_cdnc) … … 214 214 o_vsed_aer, o_tau_strat_1020, o_ext_strat_1020, o_f_r_wet 215 215 #endif 216 217 USE phys_output_ctrlout_mod, ONLY: o_heat_volc, o_cool_volc !NL 218 USE phys_state_var_mod, ONLY: heat_volc, cool_volc !NL 216 219 217 220 USE phys_state_var_mod, ONLY: pctsrf, rain_fall, snow_fall, & … … 388 391 INTEGER, DIMENSION(klon) :: lmax_th 389 392 LOGICAL :: aerosol_couple, ok_sync 390 LOGICAL :: ok_ade, ok_aie, new_aod393 LOGICAL :: ok_ade, ok_aie, ok_volcan, new_aod 391 394 LOGICAL, DIMENSION(klon, klev) :: ptconv, ptconvth 392 395 REAL :: pdtphys … … 1378 1381 ENDIF 1379 1382 #endif 1383 !NL 1384 IF (ok_volcan .AND. ok_ade) THEN 1385 DO k=1, klev 1386 zx_tmp_fi3d(:,k)=heat_volc(:,k)*swradcorr(:) 1387 ENDDO 1388 CALL histwrite_phy(o_heat_volc, zx_tmp_fi3d) 1389 DO k=1, klev 1390 zx_tmp_fi3d(:,k)=cool_volc(:,k)*swradcorr(:) 1391 ENDDO 1392 CALL histwrite_phy(o_cool_volc, zx_tmp_fi3d) 1393 ENDIF 1380 1394 IF (ok_ade) THEN 1381 1395 CALL histwrite_phy(o_topswad, topswad_aero*swradcorr) -
LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/phys_state_var_mod.F90
r3150 r3408 311 311 ! toplwdown : downward CS LW flux at TOA 312 312 ! toplwdownclr : downward CS LW flux at TOA 313 ! heat_volc : chauffage solaire du au volcanisme 314 ! cool_volc : refroidissement infrarouge du au volcanisme 313 315 REAL,ALLOCATABLE,SAVE :: clwcon0(:,:),rnebcon0(:,:) 314 316 !$OMP THREADPRIVATE(clwcon0,rnebcon0) … … 321 323 REAL,ALLOCATABLE,SAVE :: cool0(:,:) 322 324 !$OMP THREADPRIVATE(cool0) 325 REAL,ALLOCATABLE,SAVE :: heat_volc(:,:) 326 !$OMP THREADPRIVATE(heat_volc) 327 REAL,ALLOCATABLE,SAVE :: cool_volc(:,:) 328 !$OMP THREADPRIVATE(cool_volc) 323 329 REAL,ALLOCATABLE,SAVE :: topsw(:), toplw(:) 324 330 !$OMP THREADPRIVATE(topsw,toplw) … … 563 569 ALLOCATE(heat(klon,klev), heat0(klon,klev)) 564 570 ALLOCATE(cool(klon,klev), cool0(klon,klev)) 571 ALLOCATE(heat_volc(klon,klev), cool_volc(klon,klev)) 565 572 ALLOCATE(topsw(klon), toplw(klon)) 566 573 ALLOCATE(sollwdown(klon), sollwdownclr(klon)) … … 698 705 deallocate(heat, heat0) 699 706 deallocate(cool, cool0) 707 deallocate(heat_volc, cool_volc) 700 708 deallocate(topsw, toplw) 701 709 deallocate(sollwdown, sollwdownclr) -
LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/physiq_mod.F90
r3400 r3408 327 327 include "dimpft.h" 328 328 !====================================================================== 329 LOGICAL, SAVE :: ok_volcan ! pour activer les diagnostics volcaniques 329 330 LOGICAL ok_cvl ! pour activer le nouveau driver pour convection KE 330 331 PARAMETER (ok_cvl=.TRUE.) … … 1219 1220 fact_cldcon, facttemps,ok_newmicro,iflag_radia, & 1220 1221 iflag_cld_th,iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, & 1221 ok_ade, ok_aie, ok_alw, ok_cdnc, aerosol_couple, chemistry_couple, &1222 flag_aerosol, flag_aerosol_strat, new_aod, &1222 ok_ade, ok_aie, ok_alw, ok_cdnc, ok_volcan, aerosol_couple, & 1223 chemistry_couple, flag_aerosol, flag_aerosol_strat, new_aod, & 1223 1224 flag_bc_internal_mixture, bl95_b0, bl95_b1, & 1224 1225 ! nv flags pour la convection et les … … 3879 3880 t_seri,q_seri,wo, & 3880 3881 cldfrarad, cldemirad, cldtaurad, & 3881 ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, flag_aerosol, &3882 flag_aerosol _strat, &3882 ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, ok_volcan, & 3883 flag_aerosol, flag_aerosol_strat, & 3883 3884 tau_aero, piz_aero, cg_aero, & 3884 3885 tau_aero_sw_rrtm, piz_aero_sw_rrtm, cg_aero_sw_rrtm, & … … 3890 3891 ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, & 3891 3892 heat,heat0,cool,cool0,albpla, & 3893 heat_volc,cool_volc, & 3892 3894 topsw,toplw,solsw,sollw, & 3893 3895 sollwdown, & … … 3964 3966 t_seri,q_seri,wo, & 3965 3967 cldfrarad, cldemirad, cldtaurad, & 3966 ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, flag_aerosol, &3967 flag_aerosol _strat, &3968 ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, ok_volcan, & 3969 flag_aerosol, flag_aerosol_strat, & 3968 3970 tau_aero, piz_aero, cg_aero, & 3969 3971 tau_aero_sw_rrtm, piz_aero_sw_rrtm, cg_aero_sw_rrtm, & … … 3975 3977 ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, & 3976 3978 heatp,heat0p,coolp,cool0p,albplap, & 3979 heat_volc,cool_volc, & 3977 3980 topswp,toplwp,solswp,sollwp, & 3978 3981 sollwdownp, & … … 4823 4826 CALL phys_output_write(itap, pdtphys, paprs, pphis, & 4824 4827 pplay, lmax_th, aerosol_couple, & 4825 ok_ade, ok_aie, ivap, iliq, isol, new_aod, &4828 ok_ade, ok_aie, ok_volcan, ivap, iliq, isol, new_aod, & 4826 4829 ok_sync, ptconv, read_climoz, clevSTD, & 4827 4830 ptconvth, d_u, d_t, qx, d_qx, zmasse, & -
LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/radlwsw_m.F90
r3117 r3408 16 16 t,q,wo,& 17 17 cldfra, cldemi, cldtaupd,& 18 ok_ade, ok_aie, flag_aerosol,&18 ok_ade, ok_aie, ok_volcan, flag_aerosol,& 19 19 flag_aerosol_strat,& 20 20 tau_aero, piz_aero, cg_aero,& … … 25 25 ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, & 26 26 heat,heat0,cool,cool0,albpla,& 27 heat_volc, cool_volc,& 27 28 topsw,toplw,solsw,sollw,& 28 29 sollwdown,& … … 100 101 ! ok_ade---input-L- apply the Aerosol Direct Effect or not? 101 102 ! ok_aie---input-L- apply the Aerosol Indirect Effect or not? 103 ! ok_volcan-input-L- activate volcanic diags (SW heat & LW cool rate, SW & LW flux) 102 104 ! flag_aerosol-input-I- aerosol flag from 0 to 6 103 105 ! flag_aerosol_strat-input-I- use stratospheric aerosols flag (0, 1, 2) … … 119 121 ! solswai---output-R- ray. solaire net absorbe a la surface (aerosol ind) 120 122 ! topswai---output-R- ray. solaire absorbe au sommet de l'atm. (aerosol ind) 123 ! 124 ! heat_volc-----output-R- echauffement atmospherique du au forcage volcanique (visible) (K/s) 125 ! cool_volc-----output-R- refroidissement dans l'IR du au forcage volcanique (K/s) 121 126 ! 122 127 ! ATTENTION: swai and swad have to be interpreted in the following manner: … … 192 197 193 198 LOGICAL, INTENT(in) :: ok_ade, ok_aie ! switches whether to use aerosol direct (indirect) effects or not 199 LOGICAL, INTENT(in) :: ok_volcan ! produce volcanic diags (SW/LW heat flux and rate) 194 200 LOGICAL :: lldebug 195 201 INTEGER, INTENT(in) :: flag_aerosol ! takes value 0 (no aerosol) or 1 to 6 (aerosols) … … 226 232 REAL, INTENT(out) :: heat(KLON,KLEV), cool(KLON,KLEV) 227 233 REAL, INTENT(out) :: heat0(KLON,KLEV), cool0(KLON,KLEV) 234 REAL, INTENT(out) :: heat_volc(KLON,KLEV), cool_volc(KLON,KLEV) !NL 228 235 REAL, INTENT(out) :: topsw(KLON), toplw(KLON) 229 236 REAL, INTENT(out) :: solsw(KLON), sollw(KLON), albpla(KLON) … … 292 299 REAL(KIND=8) zheat(kdlon,kflev), zcool(kdlon,kflev) 293 300 REAL(KIND=8) zheat0(kdlon,kflev), zcool0(kdlon,kflev) 301 REAL(KIND=8) zheat_volc(kdlon,kflev), zcool_volc(kdlon,kflev) !NL 294 302 REAL(KIND=8) ztopsw(kdlon), ztoplw(kdlon) 295 303 REAL(KIND=8) zsolsw(kdlon), zsollw(kdlon), zalbpla(kdlon) … … 306 314 REAL(KIND=8) ztopswad0aero(kdlon), zsolswad0aero(kdlon) ! Aerosol direct forcing at TOAand surface 307 315 REAL(KIND=8) ztopswaiaero(kdlon), zsolswaiaero(kdlon) ! dito, indirect 316 !--NL 317 REAL(KIND=8) zswadaero(kdlon,kflev+1) ! SW Aerosol direct forcing 318 REAL(KIND=8) zlwadaero(kdlon,kflev+1) ! LW Aerosol direct forcing 308 319 !-LW by CK 309 320 REAL(KIND=8) ztoplwadaero(kdlon), zsollwadaero(kdlon) ! LW Aerosol direct forcing at TOAand surface … … 413 424 heat(i,k)=0. 414 425 cool(i,k)=0. 426 heat_volc(i,k)=0. !NL 427 cool_volc(i,k)=0. !NL 415 428 heat0(i,k)=0. 416 429 cool0(i,k)=0. … … 544 557 !--- Mise a zero des tableaux output du rayonnement LW-AR4 ---------- 545 558 DO k = 1, kflev+1 559 DO i = 1, kdlon 560 ! print *,'RADLWSW: boucle mise a zero i k',i,k 561 ZFLUP(i,k)=0. 562 ZFLDN(i,k)=0. 563 ZFLUP0(i,k)=0. 564 ZFLDN0(i,k)=0. 565 ZLWFT0_i(i,k)=0. 566 ZFLUCUP_i(i,k)=0. 567 ZFLUCDWN_i(i,k)=0. 568 ENDDO 569 ENDDO 570 DO k = 1, kflev 571 DO i = 1, kdlon 572 zcool(i,k)=0. 573 zcool_volc(i,k)=0. !NL 574 zcool0(i,k)=0. 575 ENDDO 576 ENDDO 546 577 DO i = 1, kdlon 547 ! print *,'RADLWSW: boucle mise a zero i k',i,k 548 ZFLUP(i,k)=0. 549 ZFLDN(i,k)=0. 550 ZFLUP0(i,k)=0. 551 ZFLDN0(i,k)=0. 552 ZLWFT0_i(i,k)=0. 553 ZFLUCUP_i(i,k)=0. 554 ZFLUCDWN_i(i,k)=0. 555 ENDDO 556 ENDDO 557 DO k = 1, kflev 558 DO i = 1, kdlon 559 zcool(i,k)=0. 560 zcool0(i,k)=0. 561 ENDDO 562 ENDDO 563 DO i = 1, kdlon 564 ztoplw(i)=0. 565 zsollw(i)=0. 566 ztoplw0(i)=0. 567 zsollw0(i)=0. 568 zsollwdown(i)=0. 578 ztoplw(i)=0. 579 zsollw(i)=0. 580 ztoplw0(i)=0. 581 zsollw0(i)=0. 582 zsollwdown(i)=0. 569 583 ENDDO 570 584 ! Old radiation scheme, used for AR4 runs … … 582 596 !----- Mise a zero des tableaux output du rayonnement SW-AR4 583 597 DO k = 1, kflev+1 584 DO i = 1, kdlon 585 ZFSUP(i,k)=0. 586 ZFSDN(i,k)=0. 587 ZFSUP0(i,k)=0. 588 ZFSDN0(i,k)=0. 589 ZFSUPC0(i,k)=0. 590 ZFSDNC0(i,k)=0. 591 ZFLUPC0(i,k)=0. 592 ZFLDNC0(i,k)=0. 593 ZSWFT0_i(i,k)=0. 594 ZFCUP_i(i,k)=0. 595 ZFCDWN_i(i,k)=0. 596 ZFCCUP_i(i,k)=0. 597 ZFCCDWN_i(i,k)=0. 598 ZFLCCUP_i(i,k)=0. 599 ZFLCCDWN_i(i,k)=0. 600 ENDDO 598 DO i = 1, kdlon 599 ZFSUP(i,k)=0. 600 ZFSDN(i,k)=0. 601 ZFSUP0(i,k)=0. 602 ZFSDN0(i,k)=0. 603 ZFSUPC0(i,k)=0. 604 ZFSDNC0(i,k)=0. 605 ZFLUPC0(i,k)=0. 606 ZFLDNC0(i,k)=0. 607 ZSWFT0_i(i,k)=0. 608 ZFCUP_i(i,k)=0. 609 ZFCDWN_i(i,k)=0. 610 ZFCCUP_i(i,k)=0. 611 ZFCCDWN_i(i,k)=0. 612 ZFLCCUP_i(i,k)=0. 613 ZFLCCDWN_i(i,k)=0. 614 zswadaero(i,k)=0. !--NL 615 ENDDO 601 616 ENDDO 602 617 DO k = 1, kflev 603 DO i = 1, kdlon 604 zheat(i,k)=0. 605 zheat0(i,k)=0. 606 ENDDO 618 DO i = 1, kdlon 619 zheat(i,k)=0. 620 zheat_volc(i,k)=0. 621 zheat0(i,k)=0. 622 ENDDO 607 623 ENDDO 608 624 DO i = 1, kdlon … … 852 868 ZTOPSWAIAERO,ZSOLSWAIAERO, & 853 869 ZTOPSWCF_AERO,ZSOLSWCF_AERO, & 870 ZSWADAERO, & !--NL 854 871 ZTOPLWADAERO,ZSOLLWADAERO,& ! rajoute par C. Kleinscmitt pour LW diagnostics 855 872 ZTOPLWAD0AERO,ZSOLLWAD0AERO,& 856 873 ZTOPLWAIAERO,ZSOLLWAIAERO, & 857 ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat) ! flags aerosols 874 ZLWADAERO, & !--NL 875 ok_ade, ok_aie, ok_volcan, flag_aerosol,flag_aerosol_strat) ! flags aerosols 858 876 859 877 ! print *,'RADLWSW: apres RECMWF' … … 934 952 ZFLDNC0(i,k+1)= ZFLCCDWN_i(i,k+1) 935 953 ZFLUPC0(i,k+1)= ZFLCCUP_i(i,k+1) 954 IF(ok_volcan) THEN 955 ZSWADAERO(i,k+1)=ZSWADAERO(i,k+1)*fract(i) !--NL 956 ENDIF 957 936 958 ! Nouveau calcul car visiblement ZSWFT et ZSWFC sont nuls dans RRTM cy32 937 959 ! en sortie de radlsw.F90 - MPL 7.01.09 … … 1014 1036 zcool(i,k)=(ZLWFT(i,k)-ZLWFT(i,k+1))*RDAY*RG/RCPD/PDP(i,k) 1015 1037 zcool0(i,k)=(ZLWFT0_i(i,k)-ZLWFT0_i(i,k+1))*RDAY*RG/RCPD/PDP(i,k) 1038 IF(ok_volcan) THEN 1039 zheat_volc(i,k)=(ZSWADAERO(i,k+1)-ZSWADAERO(i,k))*RDAY*RG/RCPD/PDP(i,k) !NL 1040 zcool_volc(i,k)=(ZLWADAERO(i,k)-ZLWADAERO(i,k+1))*RDAY*RG/RCPD/PDP(i,k) !NL 1041 ENDIF 1016 1042 ! print *,'heat cool heat0 cool0 ',zheat(i,k),zcool(i,k),zheat0(i,k),zcool0(i,k) 1017 1043 ! ZFLUCUP_i(i,k)=ZFLUC_i(i,1,k) … … 1123 1149 heat0(iof+i,k) = zheat0(i,k)/zznormcp 1124 1150 cool0(iof+i,k) = zcool0(i,k)/zznormcp 1151 IF(ok_volcan) THEN !NL 1152 heat_volc(iof+i,k) = zheat_volc(i,k)/zznormcp 1153 cool_volc(iof+i,k) = zcool_volc(i,k)/zznormcp 1154 ENDIF 1125 1155 ENDDO 1126 1156 ENDDO -
LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90
r3318 r3408 794 794 cg_allaer(i,k,2,inu)=MIN(MAX(cg_allaer(i,k,2,inu),0.0),1.0) 795 795 796 ! NL VOLC 796 797 !--natural aerosol 797 ! --ASBCM aerosols take _pi value because of internal mixture option798 tau_allaer(i,k,1,inu)=tau_ae _pi(i,k,id_ASSO4M_phy,inu)+tau_ae_pi(i,k,id_CSSO4M_phy,inu)+ &799 tau_ae _pi(i,k,id_ASBCM_phy,inu)+tau_ae_pi(i,k,id_AIBCM_phy,inu)+ &800 tau_ae _pi(i,k,id_ASPOMM_phy,inu)+tau_ae_pi(i,k,id_AIPOMM_phy,inu)+ &801 tau_ae _pi(i,k,id_ASSSM_phy,inu)+tau_ae_pi(i,k,id_CSSSM_phy,inu)+ &802 tau_ae _pi(i,k,id_SSSSM_phy,inu)+ tau_ae_pi(i,k,id_CIDUSTM_phy,inu)798 ! (same as upper but no volc aer in strat) 799 tau_allaer(i,k,1,inu)=tau_ae(i,k,id_ASSO4M_phy,inu)+tau_ae(i,k,id_CSSO4M_phy,inu)+ & 800 tau_ae(i,k,id_ASBCM_phy,inu)+tau_ae(i,k,id_AIBCM_phy,inu)+ & 801 tau_ae(i,k,id_ASPOMM_phy,inu)+tau_ae(i,k,id_AIPOMM_phy,inu)+ & 802 tau_ae(i,k,id_ASSSM_phy,inu)+tau_ae(i,k,id_CSSSM_phy,inu)+ & 803 tau_ae(i,k,id_SSSSM_phy,inu)+ tau_ae(i,k,id_CIDUSTM_phy,inu) 803 804 tau_allaer(i,k,1,inu)=MAX(tau_allaer(i,k,1,inu),tau_min) 804 805 805 piz_allaer(i,k,1,inu)=(tau_ae _pi(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)+ &806 tau_ae _pi(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)+ &807 tau_ae _pi(i,k,id_ASBCM_phy,inu)*piz_ae_pi(i,k,id_ASBCM_phy,inu)+&808 tau_ae _pi(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)+ &809 tau_ae _pi(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)+ &810 tau_ae _pi(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)+ &811 tau_ae _pi(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)+ &812 tau_ae _pi(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)+ &813 tau_ae _pi(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)+ &814 tau_ae _pi(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)) &806 piz_allaer(i,k,1,inu)=(tau_ae(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)+ & 807 tau_ae(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)+ & 808 tau_ae(i,k,id_ASBCM_phy,inu)*piz_ae(i,k,id_ASBCM_phy,inu)+ & 809 tau_ae(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)+ & 810 tau_ae(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)+ & 811 tau_ae(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)+ & 812 tau_ae(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)+ & 813 tau_ae(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)+ & 814 tau_ae(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)+ & 815 tau_ae(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)) & 815 816 /tau_allaer(i,k,1,inu) 816 817 piz_allaer(i,k,1,inu)=MIN(MAX(piz_allaer(i,k,1,inu),0.01),1.0) 817 818 IF (tau_allaer(i,k,1,inu).LE.tau_min) piz_allaer(i,k,1,inu)=1.0 818 819 819 cg_allaer(i,k,1,inu)=(tau_ae _pi(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)*cg_ae(i,k,id_ASSO4M_phy,inu)+&820 tau_ae _pi(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)*cg_ae(i,k,id_CSSO4M_phy,inu)+&821 tau_ae _pi(i,k,id_ASBCM_phy,inu)*piz_ae_pi(i,k,id_ASBCM_phy,inu)*cg_ae_pi(i,k,id_ASBCM_phy,inu)+&822 tau_ae _pi(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)*cg_ae(i,k,id_AIBCM_phy,inu)+&823 tau_ae _pi(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)*cg_ae(i,k,id_ASPOMM_phy,inu)+&824 tau_ae _pi(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)*cg_ae(i,k,id_AIPOMM_phy,inu)+&825 tau_ae _pi(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)*cg_ae(i,k,id_ASSSM_phy,inu)+&826 tau_ae _pi(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)*cg_ae(i,k,id_CSSSM_phy,inu)+&827 tau_ae _pi(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)*cg_ae(i,k,id_SSSSM_phy,inu)+&828 tau_ae _pi(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)*cg_ae(i,k,id_CIDUSTM_phy,inu))/ &820 cg_allaer(i,k,1,inu)=(tau_ae(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)*cg_ae(i,k,id_ASSO4M_phy,inu)+ & 821 tau_ae(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)*cg_ae(i,k,id_CSSO4M_phy,inu)+ & 822 tau_ae(i,k,id_ASBCM_phy,inu)*piz_ae(i,k,id_ASBCM_phy,inu)*cg_ae(i,k,id_ASBCM_phy,inu)+ & 823 tau_ae(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)*cg_ae(i,k,id_AIBCM_phy,inu)+ & 824 tau_ae(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)*cg_ae(i,k,id_ASPOMM_phy,inu)+ & 825 tau_ae(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)*cg_ae(i,k,id_AIPOMM_phy,inu)+ & 826 tau_ae(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)*cg_ae(i,k,id_ASSSM_phy,inu)+ & 827 tau_ae(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)*cg_ae(i,k,id_CSSSM_phy,inu)+ & 828 tau_ae(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)*cg_ae(i,k,id_SSSSM_phy,inu)+ & 829 tau_ae(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)*cg_ae(i,k,id_CIDUSTM_phy,inu))/ & 829 830 (tau_allaer(i,k,1,inu)*piz_allaer(i,k,1,inu)) 830 831 cg_allaer(i,k,1,inu)=MIN(MAX(cg_allaer(i,k,1,inu),0.0),1.0) 831 832 833 !--ASBCM aerosols take _pi value because of internal mixture option 834 ! tau_allaer(i,k,1,inu)=tau_ae_pi(i,k,id_ASSO4M_phy,inu)+tau_ae_pi(i,k,id_CSSO4M_phy,inu)+ & 835 ! tau_ae_pi(i,k,id_ASBCM_phy,inu)+tau_ae_pi(i,k,id_AIBCM_phy,inu)+ & 836 ! tau_ae_pi(i,k,id_ASPOMM_phy,inu)+tau_ae_pi(i,k,id_AIPOMM_phy,inu)+ & 837 ! tau_ae_pi(i,k,id_ASSSM_phy,inu)+tau_ae_pi(i,k,id_CSSSM_phy,inu)+ & 838 ! tau_ae_pi(i,k,id_SSSSM_phy,inu)+ tau_ae_pi(i,k,id_CIDUSTM_phy,inu) 839 ! tau_allaer(i,k,1,inu)=MAX(tau_allaer(i,k,1,inu),tau_min) 840 ! 841 ! piz_allaer(i,k,1,inu)=(tau_ae_pi(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)+ & 842 ! tau_ae_pi(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)+ & 843 ! tau_ae_pi(i,k,id_ASBCM_phy,inu)*piz_ae_pi(i,k,id_ASBCM_phy,inu)+ & 844 ! tau_ae_pi(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)+ & 845 ! tau_ae_pi(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)+ & 846 ! tau_ae_pi(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)+ & 847 ! tau_ae_pi(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)+ & 848 ! tau_ae_pi(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)+ & 849 ! tau_ae_pi(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)+ & 850 ! tau_ae_pi(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)) & 851 ! /tau_allaer(i,k,1,inu) 852 ! piz_allaer(i,k,1,inu)=MIN(MAX(piz_allaer(i,k,1,inu),0.01),1.0) 853 ! IF (tau_allaer(i,k,1,inu).LE.tau_min) piz_allaer(i,k,1,inu)=1.0 854 ! 855 ! cg_allaer(i,k,1,inu)=(tau_ae_pi(i,k,id_ASSO4M_phy,inu)*piz_ae(i,k,id_ASSO4M_phy,inu)*cg_ae(i,k,id_ASSO4M_phy,inu)+ & 856 ! tau_ae_pi(i,k,id_CSSO4M_phy,inu)*piz_ae(i,k,id_CSSO4M_phy,inu)*cg_ae(i,k,id_CSSO4M_phy,inu)+ & 857 ! tau_ae_pi(i,k,id_ASBCM_phy,inu)*piz_ae_pi(i,k,id_ASBCM_phy,inu)*cg_ae_pi(i,k,id_ASBCM_phy,inu)+ & 858 ! tau_ae_pi(i,k,id_AIBCM_phy,inu)*piz_ae(i,k,id_AIBCM_phy,inu)*cg_ae(i,k,id_AIBCM_phy,inu)+ & 859 ! tau_ae_pi(i,k,id_ASPOMM_phy,inu)*piz_ae(i,k,id_ASPOMM_phy,inu)*cg_ae(i,k,id_ASPOMM_phy,inu)+ & 860 ! tau_ae_pi(i,k,id_AIPOMM_phy,inu)*piz_ae(i,k,id_AIPOMM_phy,inu)*cg_ae(i,k,id_AIPOMM_phy,inu)+ & 861 ! tau_ae_pi(i,k,id_ASSSM_phy,inu)*piz_ae(i,k,id_ASSSM_phy,inu)*cg_ae(i,k,id_ASSSM_phy,inu)+ & 862 ! tau_ae_pi(i,k,id_CSSSM_phy,inu)*piz_ae(i,k,id_CSSSM_phy,inu)*cg_ae(i,k,id_CSSSM_phy,inu)+ & 863 ! tau_ae_pi(i,k,id_SSSSM_phy,inu)*piz_ae(i,k,id_SSSSM_phy,inu)*cg_ae(i,k,id_SSSSM_phy,inu)+ & 864 ! tau_ae_pi(i,k,id_CIDUSTM_phy,inu)*piz_ae(i,k,id_CIDUSTM_phy,inu)*cg_ae(i,k,id_CIDUSTM_phy,inu))/ & 865 ! (tau_allaer(i,k,1,inu)*piz_allaer(i,k,1,inu)) 866 ! cg_allaer(i,k,1,inu)=MIN(MAX(cg_allaer(i,k,1,inu),0.0),1.0) 867 ! NL VOLC END 832 868 ENDDO 833 869 ENDDO -
LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/rrtm/readaerosolstrato2_rrtm.F90
r2744 r3408 303 303 tau_aero_sw_rrtm(:,:,2,band) = tau_aero_sw_rrtm(:,:,2,band) + tau_aer_strat(:,:,band) 304 304 !--natural aerosols bands 1 to NSW 305 cg_aero_sw_rrtm(:,:,1,band) = ( cg_aero_sw_rrtm(:,:,1,band)*piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + &306 cg_aer_strat(:,:,band)*piz_aer_strat(:,:,band)*tau_aer_strat(:,:,band) ) / &307 MAX( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + &308 piz_aer_strat(:,:,band)*tau_aer_strat(:,:,band), 1.e-15 )309 piz_aero_sw_rrtm(:,:,1,band) = ( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + &310 piz_aer_strat(:,:,band)*tau_aer_strat(:,:,band) ) / &311 MAX( tau_aero_sw_rrtm(:,:,1,band) + tau_aer_strat(:,:,band), 1.e-15 )312 tau_aero_sw_rrtm(:,:,1,band) = tau_aero_sw_rrtm(:,:,1,band) + tau_aer_strat(:,:,band)305 ! cg_aero_sw_rrtm(:,:,1,band) = ( cg_aero_sw_rrtm(:,:,1,band)*piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + & 306 ! cg_aer_strat(:,:,band)*piz_aer_strat(:,:,band)*tau_aer_strat(:,:,band) ) / & 307 ! MAX( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + & 308 ! piz_aer_strat(:,:,band)*tau_aer_strat(:,:,band), 1.e-15 ) 309 ! piz_aero_sw_rrtm(:,:,1,band) = ( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + & 310 ! piz_aer_strat(:,:,band)*tau_aer_strat(:,:,band) ) / & 311 ! MAX( tau_aero_sw_rrtm(:,:,1,band) + tau_aer_strat(:,:,band), 1.e-15 ) 312 ! tau_aero_sw_rrtm(:,:,1,band) = tau_aero_sw_rrtm(:,:,1,band) + tau_aer_strat(:,:,band) 313 313 !--no stratospheric aerosol in index 1 for these tests 314 !cg_aero_sw_rrtm(:,:,1,band) = cg_aero_sw_rrtm(:,:,1,band)315 !piz_aero_sw_rrtm(:,:,1,band) = piz_aero_sw_rrtm(:,:,1,band)316 !tau_aero_sw_rrtm(:,:,1,band) = tau_aero_sw_rrtm(:,:,1,band)314 cg_aero_sw_rrtm(:,:,1,band) = cg_aero_sw_rrtm(:,:,1,band) 315 piz_aero_sw_rrtm(:,:,1,band) = piz_aero_sw_rrtm(:,:,1,band) 316 tau_aero_sw_rrtm(:,:,1,band) = tau_aero_sw_rrtm(:,:,1,band) 317 317 ENDWHERE 318 318 ENDDO -
LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/rrtm/recmwf_aero.F90
r3337 r3408 30 30 & PTOPSWAIAERO,PSOLSWAIAERO,& 31 31 & PTOPSWCFAERO,PSOLSWCFAERO,& 32 & PSWADAERO,& !--NL 32 33 !--LW diagnostics CK 33 34 & PTOPLWADAERO,PSOLLWADAERO,& 34 35 & PTOPLWAD0AERO,PSOLLWAD0AERO,& 35 36 & PTOPLWAIAERO,PSOLLWAIAERO,& 37 & PLWADAERO,& !--NL 36 38 !..end 37 & ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat)39 & ok_ade, ok_aie, ok_volcan, flag_aerosol,flag_aerosol_strat) 38 40 !--fin 39 41 … … 82 84 ! ok_ade---input-L- apply the Aerosol Direct Effect or not? 83 85 ! ok_aie---input-L- apply the Aerosol Indirect Effect or not? 86 ! ok_volcan-input-L- activate volcanic diags (SW heat & LW cool rate, SW & LW flux) 84 87 ! flag_aerosol-input-I- aerosol flag from 0 to 7 85 88 ! flag_aerosol_strat-input-I- use stratospheric aerosols flag (T/F) … … 212 215 REAL(KIND=JPRB) ,INTENT(IN) :: PREF_ICE_PI(KPROMA,KLEV) 213 216 LOGICAL, INTENT(in) :: ok_ade, ok_aie ! switches whether to use aerosol direct (indirect) effects or not 217 LOGICAL, INTENT(in) :: ok_volcan ! produce volcanic diags (SW/LW heat flux and rate) 214 218 INTEGER, INTENT(in) :: flag_aerosol ! takes value 0 (no aerosol) or 1 to 6 (aerosols) 215 219 LOGICAL, INTENT(in) :: flag_aerosol_strat ! use stratospheric aerosols 216 REAL(KIND=JPRB) ,INTENT( out) :: PTOPSWADAERO(KPROMA), PSOLSWADAERO(KPROMA) ! Aerosol direct forcing at TOA and surface220 REAL(KIND=JPRB) ,INTENT(OUT) :: PTOPSWADAERO(KPROMA), PSOLSWADAERO(KPROMA) ! Aerosol direct forcing at TOA and surface 217 221 REAL(KIND=JPRB) ,INTENT(OUT) :: PTOPSWAD0AERO(KPROMA), PSOLSWAD0AERO(KPROMA) ! Aerosol direct forcing at TOA and surface 218 222 REAL(KIND=JPRB) ,INTENT(OUT) :: PTOPSWAIAERO(KPROMA), PSOLSWAIAERO(KPROMA) ! ditto, indirect 219 223 REAL(KIND=JPRB) ,INTENT(OUT) :: PTOPSWCFAERO(KPROMA,3), PSOLSWCFAERO(KPROMA,3) !--do we keep this ? 220 224 !--fin 225 !--NL 226 REAL(KIND=JPRB) ,INTENT(OUT) :: PSWADAERO(KPROMA, KLEV+1) ! SW Aerosol direct forcing 227 REAL(KIND=JPRB) ,INTENT(OUT) :: PLWADAERO(KPROMA, KLEV+1) ! LW Aerosol direct forcing 221 228 !--CK 222 229 REAL(KIND=JPRB) ,INTENT(out) :: PTOPLWADAERO(KPROMA), PSOLLWADAERO(KPROMA) ! LW Aerosol direct forcing at TOA + surface … … 806 813 PSOLSWAD0AERO(:) = (ZFSDN0_AERO(:,1,4) -ZFSUP0_AERO(:,1,4)) -(ZFSDN0_AERO(:,1,2) -ZFSUP0_AERO(:,1,2)) 807 814 PTOPSWAD0AERO(:) = (ZFSDN0_AERO(:,KLEV+1,4)-ZFSUP0_AERO(:,KLEV+1,4))-(ZFSDN0_AERO(:,KLEV+1,2)-ZFSUP0_AERO(:,KLEV+1,2)) 815 IF(ok_volcan) THEN 816 PSWADAERO(:,:) = (ZFSDN_AERO(:,:,4) -ZFSUP_AERO(:,:,4)) -(ZFSDN_AERO(:,:,2) -ZFSUP_AERO(:,:,2)) !--NL 817 ENDIF 808 818 809 819 ! indirect anthropogenic forcing … … 826 836 PSOLLWAD0AERO(:) = (-LWDN0_AERO(:,1,4) -LWUP0_AERO(:,1,4)) -(-LWDN0_AERO(:,1,2) -LWUP0_AERO(:,1,2)) 827 837 PTOPLWAD0AERO(:) = (-LWDN0_AERO(:,KLEV+1,4)-LWUP0_AERO(:,KLEV+1,4))-(-LWDN0_AERO(:,KLEV+1,2)-LWUP0_AERO(:,KLEV+1,2)) 838 IF(ok_volcan) THEN 839 PLWADAERO(:,:) = (-LWDN_AERO(:,:,4) -LWUP_AERO(:,:,4)) -(-LWDN_AERO(:,:,2) -LWUP_AERO(:,:,2)) !--NL 840 ENDIF 828 841 829 842 ! LW indirect anthropogenic forcing … … 840 853 PSOLSWAD0AERO(:) = (ZFSDN0_AERO(:,1,3) -ZFSUP0_AERO(:,1,3)) -(ZFSDN0_AERO(:,1,1) -ZFSUP0_AERO(:,1,1)) 841 854 PTOPSWAD0AERO(:) = (ZFSDN0_AERO(:,KLEV+1,3)-ZFSUP0_AERO(:,KLEV+1,3))-(ZFSDN0_AERO(:,KLEV+1,1)-ZFSUP0_AERO(:,KLEV+1,1)) 855 IF(ok_volcan) THEN 856 PSWADAERO(:,:) = (ZFSDN_AERO(:,:,3) -ZFSUP_AERO(:,:,3)) -(ZFSDN_AERO(:,:,1) -ZFSUP_AERO(:,:,1)) !--NL 857 ENDIF 842 858 843 859 ! indirect anthropogenic forcing … … 860 876 PSOLLWAD0AERO(:) = (-LWDN0_AERO(:,1,3) -LWUP0_AERO(:,1,3)) -(-LWDN0_AERO(:,1,1) -LWUP0_AERO(:,1,1)) 861 877 PTOPLWAD0AERO(:) = (-LWDN0_AERO(:,KLEV+1,3)-LWUP0_AERO(:,KLEV+1,3))-(-LWDN0_AERO(:,KLEV+1,1)-LWUP0_AERO(:,KLEV+1,1)) 862 878 IF(ok_volcan) THEN 879 PLWADAERO(:,:) = (-LWDN_AERO(:,:,3) -LWUP_AERO(:,:,3)) -(-LWDN_AERO(:,:,1) -LWUP_AERO(:,:,1)) !--NL 880 ENDIF 881 863 882 ! LW indirect anthropogenic forcing 864 883 PSOLLWAIAERO(:) = 0.0 … … 874 893 PSOLSWAD0AERO(:) = 0.0 875 894 PTOPSWAD0AERO(:) = 0.0 876 895 IF(ok_volcan) THEN 896 PSWADAERO(:,:) = 0.0 !--NL 897 ENDIF 898 877 899 ! indirect anthropogenic forcing 878 900 PSOLSWAIAERO(:) = (ZFSDN_AERO(:,1,2) -ZFSUP_AERO(:,1,2)) -(ZFSDN_AERO(:,1,1) -ZFSUP_AERO(:,1,1)) … … 894 916 PSOLLWAD0AERO(:) = 0.0 895 917 PTOPLWAD0AERO(:) = 0.0 896 918 IF(ok_volcan) THEN 919 PLWADAERO(:,:) = 0.0 !--NL 920 ENDIF 921 897 922 ! LW indirect anthropogenic forcing 898 923 PSOLLWAIAERO(:) = (-LWDN_AERO(:,1,2) -LWUP_AERO(:,1,2)) -(-LWDN_AERO(:,1,1) -LWUP_AERO(:,1,1)) … … 908 933 PSOLSWAD0AERO(:) = 0.0 909 934 PTOPSWAD0AERO(:) = 0.0 910 935 IF(ok_volcan) THEN 936 PSWADAERO(:,:) = 0.0 !--NL 937 ENDIF 938 911 939 ! indirect anthropogenic forcing 912 940 PSOLSWAIAERO(:) = 0.0 … … 928 956 PSOLLWAD0AERO(:) = 0.0 929 957 PTOPLWAD0AERO(:) = 0.0 930 958 IF(ok_volcan) THEN 959 PLWADAERO(:,:) = 0.0 !--NL 960 ENDIF 961 931 962 ! LW indirect anthropogenic forcing 932 963 PSOLLWAIAERO(:) = 0.0
Note: See TracChangeset
for help on using the changeset viewer.