Changeset 3479


Ignore:
Timestamp:
Apr 17, 2019, 5:43:34 PM (6 years ago)
Author:
Laurent Fairhead
Message:

Integration of r3408 into the trunk
Modifications needed for VolMIP diagnostics

Location:
LMDZ6/trunk
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/DefLists/field_def_lmdz.xml

    • Property svn:keywords set to Id
    r3477 r3479  
    703703        <field id="rldcs4co2"    long_name="Downwelling CS LW 4xCO2 atmosphere"    unit="W/m2" />
    704704        <field id="stratomask"    long_name="Stratospheric fraction"    unit="-" />
     705        <field id="heat_volc"    long_name="SW heating rate from volcano"    unit="K/s" />
     706        <field id="cool_volc"    long_name="LW cooling rate from volcano"    unit="K/s" />
    705707        <field id="pvap"    long_name="pvap intermediary variable" unit="-">pres*ovap*461.5 / (287.04*(1.+ (10.9491/18.0153)*ovap)) </field>
    706708    </field_group>
  • LMDZ6/trunk/DefLists/file_def_histday_lmdz.xml

    • Property svn:keywords set to Id
    r3477 r3479  
     1<!-- $Id$ -->
    12<file_definition>
    23    <file_group id="defile">
     
    318319                <field field_ref="z0m" level="10" />
    319320                <field field_ref="z0h" level="10" />
    320                 <field field_ref="topswad" level="10" />
    321                 <field field_ref="topswad0" level="10" />
     321                <field field_ref="topswad" level="1" />
     322                <field field_ref="topswad0" level="1" />
    322323                <field field_ref="topswai" level="10" />
    323324                <field field_ref="solswad" level="10" />
    324325                <field field_ref="solswad0" level="10" />
    325326                <field field_ref="solswai" level="10" />
    326                 <field field_ref="toplwad" level="10" />
    327                 <field field_ref="toplwad0" level="10" />
     327                <field field_ref="toplwad" level="1" />
     328                <field field_ref="toplwad0" level="1" />
    328329                <field field_ref="toplwai" level="10" />
    329330                <field field_ref="sollwad" level="10" />
  • LMDZ6/trunk/DefLists/file_def_histmth_lmdz.xml

    • Property svn:keywords set to Id
    r3477 r3479  
     1<!-- $Id$ -->
    12<file_definition>
    23        <file_group id="defile">
     
    352353                <field field_ref="z0m" level="10" />
    353354                <field field_ref="z0h" level="10" />
    354                 <field field_ref="topswad" level="10" />
    355                 <field field_ref="topswad0" level="10" />
     355                <field field_ref="topswad" level="1" />
     356                <field field_ref="topswad0" level="1" />
    356357                <field field_ref="topswai" level="10" />
    357358                <field field_ref="solswad" level="10" />
    358359                <field field_ref="solswad0" level="10" />
    359360                <field field_ref="solswai" level="10" />
    360                 <field field_ref="toplwad" level="10" />
    361                 <field field_ref="toplwad0" level="10" />
     361                <field field_ref="toplwad" level="1" />
     362                <field field_ref="toplwad0" level="1" />
    362363                <field field_ref="toplwai" level="10" />
    363364                <field field_ref="sollwad" level="10" />
     
    656657                <field field_ref="rsdcs4co2" level="10" />
    657658                <field field_ref="rldcs4co2" level="10" />
     659                <field field_ref="stratomask" level="1" />
     660                <field field_ref="cool_volc" level="1" />
     661                <field field_ref="heat_volc" level="1" />
    658662            </field_group>
    659663
  • LMDZ6/trunk/libf/dynphy_lonlat/phylmd/etat0phys_netcdf.F90

    r3465 r3479  
     1!
     2! $Id$
     3!
    14MODULE etat0phys
    25!
     
    111114  INTEGER :: iflag_radia, iflag_cldcon, iflag_ratqs
    112115  REAL    :: ratqsbas, ratqshaut, tau_ratqs
    113   LOGICAL :: ok_ade, ok_aie, ok_alw, ok_cdnc, aerosol_couple, chemistry_couple
     116  LOGICAL :: ok_ade, ok_aie, ok_volcan, ok_alw, ok_cdnc, aerosol_couple, chemistry_couple
    114117  INTEGER :: flag_aerosol
    115118  INTEGER :: flag_aerosol_strat
     
    134137                   iflag_cldcon,                                        &
    135138                   iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs,            &
    136                    ok_ade, ok_aie, ok_alw, ok_cdnc, aerosol_couple,     &
     139                   ok_ade, ok_aie, ok_volcan, ok_alw, ok_cdnc,          &
     140                   aerosol_couple,                                      &
    137141                   chemistry_couple, flag_aerosol, flag_aerosol_strat,  &
    138142                   flag_aer_feedback,                                   &
  • LMDZ6/trunk/libf/phylmd/conf_phys_m.F90

    r3459 r3479  
    1717       iflag_cld_th, &
    1818       iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, &
    19        ok_ade, ok_aie, ok_alw, ok_cdnc, aerosol_couple, chemistry_couple, &
     19       ok_ade, ok_aie, ok_alw, ok_cdnc, ok_volcan, aerosol_couple, chemistry_couple, &
    2020       flag_aerosol, flag_aerosol_strat, flag_aer_feedback, new_aod, &
    2121       flag_bc_internal_mixture, bl95_b0, bl95_b1,&
     
    6363    ! flag_bc_internal_mixture : use BC internal mixture if true
    6464    ! bl95_b*: parameters in the formula to link CDNC to aerosol mass conc
     65    ! ok_volcan: activate volcanic diags (SW heat & LW cool rate, SW & LW flux)
    6566    !
    6667
     
    7172    LOGICAL              :: ok_LES
    7273    LOGICAL              :: callstats
    73     LOGICAL              :: ok_ade, ok_aie, ok_alw, ok_cdnc
     74    LOGICAL              :: ok_ade, ok_aie, ok_alw, ok_cdnc, ok_volcan
    7475    LOGICAL              :: aerosol_couple, chemistry_couple
    7576    INTEGER              :: flag_aerosol
     
    9394    LOGICAL, SAVE       :: ok_LES_omp   
    9495    LOGICAL, SAVE       :: callstats_omp
    95     LOGICAL, SAVE       :: ok_ade_omp, ok_aie_omp, ok_alw_omp, ok_cdnc_omp
     96    LOGICAL, SAVE       :: ok_ade_omp, ok_aie_omp, ok_alw_omp, ok_cdnc_omp, ok_volcan_omp
    9697    LOGICAL, SAVE       :: aerosol_couple_omp, chemistry_couple_omp
    9798    INTEGER, SAVE       :: flag_aerosol_omp
     
    396397    ok_cdnc_omp = .FALSE.
    397398    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
    398409    !
    399410    !Config Key  = aerosol_couple
     
    23102321    ok_alw = ok_alw_omp
    23112322    ok_cdnc = ok_cdnc_omp
     2323    ok_volcan = ok_volcan_omp
    23122324    aerosol_couple = aerosol_couple_omp
    23132325    chemistry_couple = chemistry_couple_omp
     
    26562668    WRITE(lunout,*) ' pmagic = ',pmagic
    26572669    WRITE(lunout,*) ' ok_ade = ',ok_ade
     2670    WRITE(lunout,*) ' ok_volcan = ',ok_volcan
    26582671    WRITE(lunout,*) ' ok_aie = ',ok_aie
    26592672    WRITE(lunout,*) ' ok_alw = ',ok_alw
  • LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r3474 r3479  
    13801380  TYPE(ctrl_out), SAVE :: o_temp = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11, 11/), &
    13811381    'temp', 'Air temperature', 'K', (/ ('', i=1, 10) /))
     1382  TYPE(ctrl_out), SAVE :: o_heat_volc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11, 11/), &
     1383    'heat_volc', 'SW heating rate due to volcano', 'K/s', (/ ('', i=1, 10) /))
     1384  TYPE(ctrl_out), SAVE :: o_cool_volc = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11, 11/), &
     1385    'cool_volc', 'LW cooling rate due to volcano', 'K/s', (/ ('', i=1, 10) /))
    13821386  TYPE(ctrl_out), SAVE :: o_theta = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11, 11/), &
    13831387    'theta', 'Potential air temperature', 'K', (/ ('', i=1, 10) /))
  • LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90

    r3474 r3479  
    1717  SUBROUTINE phys_output_write(itap, pdtphys, paprs, pphis, &
    1818       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, &
    2020       ptconv, read_climoz, clevSTD, ptconvth, &
    2121       d_u, d_t, qx, d_qx, zmasse, flag_aerosol, flag_aerosol_strat, ok_cdnc)
     
    216216         o_vsed_aer, o_tau_strat_1020, o_ext_strat_1020, o_f_r_wet
    217217#endif
     218   
     219    USE phys_output_ctrlout_mod, ONLY: o_heat_volc, o_cool_volc !NL
     220    USE phys_state_var_mod, ONLY: heat_volc, cool_volc !NL
    218221
    219222    USE phys_state_var_mod, ONLY: pctsrf, rain_fall, snow_fall, &
     
    392395    INTEGER, DIMENSION(klon) :: lmax_th
    393396    LOGICAL :: aerosol_couple, ok_sync
    394     LOGICAL :: ok_ade, ok_aie, new_aod
     397    LOGICAL :: ok_ade, ok_aie, ok_volcan, new_aod
    395398    LOGICAL, DIMENSION(klon, klev) :: ptconv, ptconvth
    396399    REAL :: pdtphys
     
    14451448       ENDIF
    14461449#endif
     1450       !NL
     1451       IF (ok_volcan .AND. ok_ade) THEN
     1452          DO k=1, klev
     1453             IF (vars_defined) zx_tmp_fi3d(:,k)=heat_volc(:,k)*swradcorr(:)
     1454          ENDDO
     1455          CALL histwrite_phy(o_heat_volc, zx_tmp_fi3d)
     1456          DO k=1, klev
     1457             IF (vars_defined) zx_tmp_fi3d(:,k)=cool_volc(:,k)*swradcorr(:)
     1458          ENDDO
     1459          CALL histwrite_phy(o_cool_volc, zx_tmp_fi3d)
     1460       ENDIF
    14471461       IF (ok_ade) THEN
    14481462          IF (vars_defined) zx_tmp_fi2d(:)=topswad_aero*swradcorr
  • LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90

    r3439 r3479  
    314314! toplwdown : downward CS LW flux at TOA
    315315! toplwdownclr : downward CS LW flux at TOA
     316! heat_volc : chauffage solaire du au volcanisme
     317! cool_volc : refroidissement infrarouge du au volcanisme
    316318      REAL,ALLOCATABLE,SAVE :: clwcon0(:,:),rnebcon0(:,:)
    317319!$OMP THREADPRIVATE(clwcon0,rnebcon0)
     
    324326      REAL,ALLOCATABLE,SAVE :: cool0(:,:)
    325327!$OMP THREADPRIVATE(cool0)
     328      REAL,ALLOCATABLE,SAVE :: heat_volc(:,:)   
     329!$OMP THREADPRIVATE(heat_volc)
     330      REAL,ALLOCATABLE,SAVE :: cool_volc(:,:)
     331!$OMP THREADPRIVATE(cool_volc)
    326332      REAL,ALLOCATABLE,SAVE :: topsw(:), toplw(:)
    327333!$OMP THREADPRIVATE(topsw,toplw)
     
    575581      ALLOCATE(heat(klon,klev), heat0(klon,klev))
    576582      ALLOCATE(cool(klon,klev), cool0(klon,klev))
     583      ALLOCATE(heat_volc(klon,klev), cool_volc(klon,klev))
    577584      ALLOCATE(topsw(klon), toplw(klon))
    578585      ALLOCATE(sollwdown(klon), sollwdownclr(klon))
     
    718725      deallocate(heat, heat0)
    719726      deallocate(cool, cool0)
     727      deallocate(heat_volc, cool_volc)
    720728      deallocate(topsw, toplw)
    721729      deallocate(sollwdown, sollwdownclr)
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r3472 r3479  
    331331    include "dimpft.h"
    332332    !======================================================================
     333    LOGICAL, SAVE :: ok_volcan ! pour activer les diagnostics volcaniques
    333334    LOGICAL ok_cvl  ! pour activer le nouveau driver pour convection KE
    334335    PARAMETER (ok_cvl=.TRUE.)
     
    12331234            fact_cldcon, facttemps,ok_newmicro,iflag_radia, &
    12341235            iflag_cld_th,iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, &
    1235             ok_ade, ok_aie, ok_alw, ok_cdnc, aerosol_couple,  chemistry_couple, &
     1236            ok_ade, ok_aie, ok_alw, ok_cdnc, ok_volcan, aerosol_couple, &
     1237            chemistry_couple, &
    12361238            flag_aerosol, flag_aerosol_strat, flag_aer_feedback, new_aod, &
    12371239            flag_bc_internal_mixture, bl95_b0, bl95_b1, &
     
    16121614       CALL phys_output_write(itap, pdtphys, paprs, pphis,                    &
    16131615                              pplay, lmax_th, aerosol_couple,                 &
    1614                               ok_ade, ok_aie, ivap, iliq, isol, new_aod, ok_sync,&
     1616                              ok_ade, ok_aie, ok_volcan, ivap, iliq, isol, new_aod, ok_sync,&
    16151617                              ptconv, read_climoz, clevSTD,                   &
    16161618                              ptconvth, d_u, d_t, qx, d_qx, zmasse,           &
     
    39843986               t_seri,q_seri,wo, &
    39853987               cldfrarad, cldemirad, cldtaurad, &
    3986                ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, flag_aerosol, &
     3988               ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie,  ok_volcan, &
     3989               flag_aerosol, &
    39873990               flag_aerosol_strat, flag_aer_feedback, &
    39883991               tau_aero, piz_aero, cg_aero, &
     
    39953998               ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, &
    39963999               heat,heat0,cool,cool0,albpla, &
     4000               heat_volc,cool_volc, &
    39974001               topsw,toplw,solsw,sollw, &
    39984002               sollwdown, &
     
    40694073                     t_seri,q_seri,wo, &
    40704074                     cldfrarad, cldemirad, cldtaurad, &
    4071                      ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie, flag_aerosol, &
     4075                     ok_ade.OR.flag_aerosol_strat.GT.0, ok_aie,  ok_volcan, &
     4076                     flag_aerosol, &
    40724077                     flag_aerosol_strat, flag_aer_feedback, &
    40734078                     tau_aero, piz_aero, cg_aero, &
     
    40804085                     ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, &
    40814086                     heatp,heat0p,coolp,cool0p,albplap, &
     4087                     heat_volc,cool_volc, &
    40824088                     topswp,toplwp,solswp,sollwp, &
    40834089                     sollwdownp, &
     
    49404946    CALL phys_output_write(itap, pdtphys, paprs, pphis,  &
    49414947         pplay, lmax_th, aerosol_couple,                 &
    4942          ok_ade, ok_aie, ivap, iliq, isol, new_aod,      &
     4948         ok_ade, ok_aie, ok_volcan, ivap, iliq, isol, new_aod,      &
    49434949         ok_sync, ptconv, read_climoz, clevSTD,          &
    49444950         ptconvth, d_u, d_t, qx, d_qx, zmasse,           &
  • LMDZ6/trunk/libf/phylmd/radlwsw_m.F90

    r3465 r3479  
    1616   t,q,wo,&
    1717   cldfra, cldemi, cldtaupd,&
    18    ok_ade, ok_aie, flag_aerosol,&
     18   ok_ade, ok_aie, ok_volcan, flag_aerosol,&
    1919   flag_aerosol_strat, flag_aer_feedback, &
    2020   tau_aero, piz_aero, cg_aero,&
     
    2525   ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, &
    2626   heat,heat0,cool,cool0,albpla,&
     27   heat_volc, cool_volc,&
    2728   topsw,toplw,solsw,sollw,&
    2829   sollwdown,&
     
    100101  ! ok_ade---input-L- apply the Aerosol Direct Effect or not?
    101102  ! 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)
    102104  ! flag_aerosol-input-I- aerosol flag from 0 to 6
    103105  ! flag_aerosol_strat-input-I- use stratospheric aerosols flag (0, 1, 2)
     
    120122  ! solswai---output-R- ray. solaire net absorbe a la surface (aerosol ind)
    121123  ! topswai---output-R- ray. solaire absorbe au sommet de l'atm. (aerosol ind)
     124  !
     125  ! heat_volc-----output-R- echauffement atmospherique  du au forcage volcanique (visible) (K/s)
     126  ! cool_volc-----output-R- refroidissement dans l'IR du au forcage volcanique (K/s)
    122127  !
    123128  ! ATTENTION: swai and swad have to be interpreted in the following manner:
     
    193198
    194199  LOGICAL, INTENT(in)  :: ok_ade, ok_aie                                 ! switches whether to use aerosol direct (indirect) effects or not
     200  LOGICAL, INTENT(in)  :: ok_volcan                                      ! produce volcanic diags (SW/LW heat flux and rate)
    195201  LOGICAL              :: lldebug
    196202  INTEGER, INTENT(in)  :: flag_aerosol                                   ! takes value 0 (no aerosol) or 1 to 6 (aerosols)
     
    228234  REAL,    INTENT(out) :: heat(KLON,KLEV), cool(KLON,KLEV)
    229235  REAL,    INTENT(out) :: heat0(KLON,KLEV), cool0(KLON,KLEV)
     236  REAL,    INTENT(out) :: heat_volc(KLON,KLEV), cool_volc(KLON,KLEV) !NL
    230237  REAL,    INTENT(out) :: topsw(KLON), toplw(KLON)
    231238  REAL,    INTENT(out) :: solsw(KLON), sollw(KLON), albpla(KLON)
     
    294301  REAL(KIND=8) zheat(kdlon,kflev), zcool(kdlon,kflev)
    295302  REAL(KIND=8) zheat0(kdlon,kflev), zcool0(kdlon,kflev)
     303  REAL(KIND=8) zheat_volc(kdlon,kflev), zcool_volc(kdlon,kflev) !NL
    296304  REAL(KIND=8) ztopsw(kdlon), ztoplw(kdlon)
    297305  REAL(KIND=8) zsolsw(kdlon), zsollw(kdlon), zalbpla(kdlon)
     
    308316  REAL(KIND=8) ztopswad0aero(kdlon), zsolswad0aero(kdlon)   ! Aerosol direct forcing at TOAand surface
    309317  REAL(KIND=8) ztopswaiaero(kdlon), zsolswaiaero(kdlon)     ! dito, indirect
     318!--NL
     319  REAL(KIND=8) zswadaero(kdlon,kflev+1)                       ! SW Aerosol direct forcing
     320  REAL(KIND=8) zlwadaero(kdlon,kflev+1)                       ! LW Aerosol direct forcing
    310321!-LW by CK
    311322  REAL(KIND=8) ztoplwadaero(kdlon), zsollwadaero(kdlon)     ! LW Aerosol direct forcing at TOAand surface
     
    430441      heat(i,k)=0.
    431442      cool(i,k)=0.
     443      heat_volc(i,k)=0. !NL
     444      cool_volc(i,k)=0. !NL
    432445      heat0(i,k)=0.
    433446      cool0(i,k)=0.
     
    573586      ENDDO
    574587      DO k = 1, kflev
    575       DO i = 1, kdlon
    576       zcool(i,k)=0.
    577       zcool0(i,k)=0.
    578       ENDDO
     588         DO i = 1, kdlon
     589            zcool(i,k)=0.
     590            zcool_volc(i,k)=0. !NL
     591            zcool0(i,k)=0.
     592         ENDDO
    579593      ENDDO
    580594      DO i = 1, kdlon
     
    599613!----- Mise a zero des tableaux output du rayonnement SW-AR4
    600614      DO k = 1, kflev+1
    601       DO i = 1, kdlon
    602       ZFSUP(i,k)=0.
    603       ZFSDN(i,k)=0.
    604       ZFSUP0(i,k)=0.
    605       ZFSDN0(i,k)=0.
    606       ZFSUPC0(i,k)=0.
    607       ZFSDNC0(i,k)=0.
    608       ZFLUPC0(i,k)=0.
    609       ZFLDNC0(i,k)=0.
    610       ZSWFT0_i(i,k)=0.
    611       ZFCUP_i(i,k)=0.
    612       ZFCDWN_i(i,k)=0.
    613       ZFCCUP_i(i,k)=0.
    614       ZFCCDWN_i(i,k)=0.
    615       ZFLCCUP_i(i,k)=0.
    616       ZFLCCDWN_i(i,k)=0.
    617       ENDDO
     615         DO i = 1, kdlon
     616            ZFSUP(i,k)=0.
     617            ZFSDN(i,k)=0.
     618            ZFSUP0(i,k)=0.
     619            ZFSDN0(i,k)=0.
     620            ZFSUPC0(i,k)=0.
     621            ZFSDNC0(i,k)=0.
     622            ZFLUPC0(i,k)=0.
     623            ZFLDNC0(i,k)=0.
     624            ZSWFT0_i(i,k)=0.
     625            ZFCUP_i(i,k)=0.
     626            ZFCDWN_i(i,k)=0.
     627            ZFCCUP_i(i,k)=0.
     628            ZFCCDWN_i(i,k)=0.
     629            ZFLCCUP_i(i,k)=0.
     630            ZFLCCDWN_i(i,k)=0.
     631            zswadaero(i,k)=0. !--NL
     632         ENDDO
    618633      ENDDO
    619634      DO k = 1, kflev
    620       DO i = 1, kdlon
    621       zheat(i,k)=0.
    622       zheat0(i,k)=0.
    623       ENDDO
     635         DO i = 1, kdlon
     636            zheat(i,k)=0.
     637            zheat_volc(i,k)=0.
     638            zheat0(i,k)=0.
     639         ENDDO
    624640      ENDDO
    625641      DO i = 1, kdlon
     
    869885         ZTOPSWAIAERO,ZSOLSWAIAERO, &
    870886         ZTOPSWCF_AERO,ZSOLSWCF_AERO, &
     887         ZSWADAERO, & !--NL
    871888         ZTOPLWADAERO,ZSOLLWADAERO,&  ! rajoute par C. Kleinscmitt pour LW diagnostics
    872889         ZTOPLWAD0AERO,ZSOLLWAD0AERO,&
    873890         ZTOPLWAIAERO,ZSOLLWAIAERO, &
    874          ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat, flag_aer_feedback) ! flags aerosols
     891         ZLWADAERO, & !--NL
     892         ok_ade, ok_aie, ok_volcan, flag_aerosol,flag_aerosol_strat, flag_aer_feedback) ! flags aerosols
    875893           
    876894!        print *,'RADLWSW: apres RECMWF'
     
    951969         ZFLDNC0(i,k+1)= ZFLCCDWN_i(i,k+1)
    952970         ZFLUPC0(i,k+1)= ZFLCCUP_i(i,k+1)
     971         IF(ok_volcan) THEN
     972            ZSWADAERO(i,k+1)=ZSWADAERO(i,k+1)*fract(i) !--NL
     973         ENDIF
     974         
    953975!   Nouveau calcul car visiblement ZSWFT et ZSWFC sont nuls dans RRTM cy32
    954976!   en sortie de radlsw.F90 - MPL 7.01.09
     
    10311053           zcool(i,k)=(ZLWFT(i,k)-ZLWFT(i,k+1))*RDAY*RG/RCPD/PDP(i,k)
    10321054           zcool0(i,k)=(ZLWFT0_i(i,k)-ZLWFT0_i(i,k+1))*RDAY*RG/RCPD/PDP(i,k)
     1055           IF(ok_volcan) THEN
     1056              zheat_volc(i,k)=(ZSWADAERO(i,k+1)-ZSWADAERO(i,k))*RDAY*RG/RCPD/PDP(i,k) !NL
     1057              zcool_volc(i,k)=(ZLWADAERO(i,k)-ZLWADAERO(i,k+1))*RDAY*RG/RCPD/PDP(i,k) !NL
     1058           ENDIF
    10331059!          print *,'heat cool heat0 cool0 ',zheat(i,k),zcool(i,k),zheat0(i,k),zcool0(i,k)
    10341060!          ZFLUCUP_i(i,k)=ZFLUC_i(i,1,k)
     
    11401166        heat0(iof+i,k) = zheat0(i,k)/zznormcp
    11411167        cool0(iof+i,k) = zcool0(i,k)/zznormcp
     1168        IF(ok_volcan) THEN !NL
     1169           heat_volc(iof+i,k) = zheat_volc(i,k)/zznormcp
     1170           cool_volc(iof+i,k) = zcool_volc(i,k)/zznormcp
     1171        ENDIF
    11421172      ENDDO
    11431173    ENDDO
  • LMDZ6/trunk/libf/phylmd/regr_pr_time_av_m.F90

    r3435 r3479  
    251251  END IF
    252252  !$OMP END MASTER
     253  !$OMP BARRIER
    253254  IF(lfirst) THEN
    254255    lfirst=.FALSE.;       CALL bcast(lfirst)
  • LMDZ6/trunk/libf/phylmd/rrtm/aeropt_6bands_rrtm.F90

    r3288 r3479  
    794794         cg_allaer(i,k,2,inu)=MIN(MAX(cg_allaer(i,k,2,inu),0.0),1.0)
    795795
     796! NL VOLC
    796797!--natural aerosol
    797 !--ASBCM aerosols take _pi value because of internal mixture option
    798          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)
    803804         tau_allaer(i,k,1,inu)=MAX(tau_allaer(i,k,1,inu),tau_min)
    804805
    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)) &
    815816                                /tau_allaer(i,k,1,inu)
    816817         piz_allaer(i,k,1,inu)=MIN(MAX(piz_allaer(i,k,1,inu),0.01),1.0)
    817818         IF (tau_allaer(i,k,1,inu).LE.tau_min) piz_allaer(i,k,1,inu)=1.0
    818819
    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))/ &
    829830                               (tau_allaer(i,k,1,inu)*piz_allaer(i,k,1,inu))
    830831         cg_allaer(i,k,1,inu)=MIN(MAX(cg_allaer(i,k,1,inu),0.0),1.0)
    831832
     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
    832868        ENDDO
    833869      ENDDO
  • LMDZ6/trunk/libf/phylmd/rrtm/readaerosolstrato2_rrtm.F90

    r3465 r3479  
    358358        tau_aero_sw_rrtm(:,:,2,band)  = tau_aero_sw_rrtm(:,:,2,band) + tau_aer_strat(:,:,band)
    359359!--natural aerosols bands 1 to NSW
    360         cg_aero_sw_rrtm(:,:,1,band)  = ( cg_aero_sw_rrtm(:,:,1,band)*piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + &
    361                                          cg_aer_strat(:,:,band)*piz_aer_strat(:,:,band)*tau_aer_strat(:,:,band) ) /              &
    362                                     MAX( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) +                             &
    363                                          piz_aer_strat(:,:,band)*tau_aer_strat(:,:,band), 1.e-15 )
    364         piz_aero_sw_rrtm(:,:,1,band) = ( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) +                             &
    365                                          piz_aer_strat(:,:,band)*tau_aer_strat(:,:,band) ) /                                     &
    366                                     MAX( tau_aero_sw_rrtm(:,:,1,band) + tau_aer_strat(:,:,band), 1.e-15 )
    367         tau_aero_sw_rrtm(:,:,1,band)  = tau_aero_sw_rrtm(:,:,1,band) + tau_aer_strat(:,:,band)
     360!        cg_aero_sw_rrtm(:,:,1,band)  = ( cg_aero_sw_rrtm(:,:,1,band)*piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) + &
     361!                                         cg_aer_strat(:,:,band)*piz_aer_strat(:,:,band)*tau_aer_strat(:,:,band) ) /              &
     362!                                    MAX( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) +                             &
     363!                                         piz_aer_strat(:,:,band)*tau_aer_strat(:,:,band), 1.e-15 )
     364!        piz_aero_sw_rrtm(:,:,1,band) = ( piz_aero_sw_rrtm(:,:,1,band)*tau_aero_sw_rrtm(:,:,1,band) +                             &
     365!                                         piz_aer_strat(:,:,band)*tau_aer_strat(:,:,band) ) /                                     &
     366!                                    MAX( tau_aero_sw_rrtm(:,:,1,band) + tau_aer_strat(:,:,band), 1.e-15 )
     367!        tau_aero_sw_rrtm(:,:,1,band)  = tau_aero_sw_rrtm(:,:,1,band) + tau_aer_strat(:,:,band)
    368368!--no stratospheric aerosol in index 1 for these tests
    369 !        cg_aero_sw_rrtm(:,:,1,band)  =  cg_aero_sw_rrtm(:,:,1,band)
    370 !        piz_aero_sw_rrtm(:,:,1,band)  = piz_aero_sw_rrtm(:,:,1,band)
    371 !        tau_aero_sw_rrtm(:,:,1,band)  = tau_aero_sw_rrtm(:,:,1,band)
     369        cg_aero_sw_rrtm(:,:,1,band)  =  cg_aero_sw_rrtm(:,:,1,band)
     370        piz_aero_sw_rrtm(:,:,1,band)  = piz_aero_sw_rrtm(:,:,1,band)
     371        tau_aero_sw_rrtm(:,:,1,band)  = tau_aero_sw_rrtm(:,:,1,band)
    372372    ENDWHERE
    373373    ENDDO
  • LMDZ6/trunk/libf/phylmd/rrtm/recmwf_aero.F90

    r3412 r3479  
    3030 & PTOPSWAIAERO,PSOLSWAIAERO,&
    3131 & PTOPSWCFAERO,PSOLSWCFAERO,&
     32 & PSWADAERO,& !--NL
    3233!--LW diagnostics CK
    3334 & PTOPLWADAERO,PSOLLWADAERO,&
    3435 & PTOPLWAD0AERO,PSOLLWAD0AERO,&
    3536 & PTOPLWAIAERO,PSOLLWAIAERO,&
     37 & PLWADAERO,& !--NL
    3638!..end
    37  & ok_ade, ok_aie, flag_aerosol,flag_aerosol_strat,flag_aer_feedback)
     39 & ok_ade, ok_aie, ok_volcan, flag_aerosol,flag_aerosol_strat,&
     40 & flag_aer_feedback)
    3841!--fin
    3942
     
    8285! ok_ade---input-L- apply the Aerosol Direct Effect or not?
    8386! ok_aie---input-L- apply the Aerosol Indirect Effect or not?
     87! ok_volcan-input-L- activate volcanic diags (SW heat & LW cool rate, SW & LW flux)
    8488! flag_aerosol-input-I- aerosol flag from 0 to 7
    8589! flag_aerosol_strat-input-I- use stratospheric aerosols flag (T/F)
     
    213217REAL(KIND=JPRB)   ,INTENT(IN)    :: PREF_ICE_PI(KPROMA,KLEV)
    214218LOGICAL, INTENT(in)  :: ok_ade, ok_aie         ! switches whether to use aerosol direct (indirect) effects or not
     219LOGICAL, INTENT(in)  :: ok_volcan              ! produce volcanic diags (SW/LW heat flux and rate)
    215220INTEGER, INTENT(in)  :: flag_aerosol           ! takes value 0 (no aerosol) or 1 to 6 (aerosols)
    216221LOGICAL, INTENT(in)  :: flag_aerosol_strat     ! use stratospheric aerosols
     
    221226REAL(KIND=JPRB)   ,INTENT(OUT)   :: PTOPSWCFAERO(KPROMA,3), PSOLSWCFAERO(KPROMA,3) !--do we keep this ?
    222227!--fin
     228!--NL
     229REAL(KIND=JPRB)   ,INTENT(OUT)   :: PSWADAERO(KPROMA, KLEV+1)                        ! SW Aerosol direct forcing
     230REAL(KIND=JPRB)   ,INTENT(OUT)   :: PLWADAERO(KPROMA, KLEV+1)                        ! LW Aerosol direct forcing
    223231!--CK
    224232REAL(KIND=JPRB)   ,INTENT(out)   :: PTOPLWADAERO(KPROMA), PSOLLWADAERO(KPROMA)       ! LW Aerosol direct forcing at TOA + surface
     
    811819     PSOLSWAD0AERO(:) = (ZFSDN0_AERO(:,1,4)     -ZFSUP0_AERO(:,1,4))     -(ZFSDN0_AERO(:,1,2)     -ZFSUP0_AERO(:,1,2))
    812820     PTOPSWAD0AERO(:) = (ZFSDN0_AERO(:,KLEV+1,4)-ZFSUP0_AERO(:,KLEV+1,4))-(ZFSDN0_AERO(:,KLEV+1,2)-ZFSUP0_AERO(:,KLEV+1,2))
     821     IF(ok_volcan) THEN
     822        PSWADAERO(:,:)  = (ZFSDN_AERO(:,:,4) -ZFSUP_AERO(:,:,4)) -(ZFSDN_AERO(:,:,2) -ZFSUP_AERO(:,:,2)) !--NL
     823     ENDIF
    813824
    814825! indirect anthropogenic forcing
     
    831842     PSOLLWAD0AERO(:) = (-LWDN0_AERO(:,1,4)     -LWUP0_AERO(:,1,4))     -(-LWDN0_AERO(:,1,2)     -LWUP0_AERO(:,1,2))
    832843     PTOPLWAD0AERO(:) = (-LWDN0_AERO(:,KLEV+1,4)-LWUP0_AERO(:,KLEV+1,4))-(-LWDN0_AERO(:,KLEV+1,2)-LWUP0_AERO(:,KLEV+1,2))
     844     IF(ok_volcan) THEN
     845        PLWADAERO(:,:)  = (-LWDN_AERO(:,:,4) -LWUP_AERO(:,:,4)) -(-LWDN_AERO(:,:,2) -LWUP_AERO(:,:,2)) !--NL
     846     ENDIF
    833847
    834848! LW indirect anthropogenic forcing
     
    845859     PSOLSWAD0AERO(:) = (ZFSDN0_AERO(:,1,3)     -ZFSUP0_AERO(:,1,3))     -(ZFSDN0_AERO(:,1,1)     -ZFSUP0_AERO(:,1,1))
    846860     PTOPSWAD0AERO(:) = (ZFSDN0_AERO(:,KLEV+1,3)-ZFSUP0_AERO(:,KLEV+1,3))-(ZFSDN0_AERO(:,KLEV+1,1)-ZFSUP0_AERO(:,KLEV+1,1))
     861     IF(ok_volcan) THEN
     862        PSWADAERO(:,:)  = (ZFSDN_AERO(:,:,3) -ZFSUP_AERO(:,:,3)) -(ZFSDN_AERO(:,:,1) -ZFSUP_AERO(:,:,1)) !--NL
     863     ENDIF
    847864
    848865! indirect anthropogenic forcing
     
    865882     PSOLLWAD0AERO(:) = (-LWDN0_AERO(:,1,3)     -LWUP0_AERO(:,1,3))     -(-LWDN0_AERO(:,1,1)     -LWUP0_AERO(:,1,1))
    866883     PTOPLWAD0AERO(:) = (-LWDN0_AERO(:,KLEV+1,3)-LWUP0_AERO(:,KLEV+1,3))-(-LWDN0_AERO(:,KLEV+1,1)-LWUP0_AERO(:,KLEV+1,1))
    867 
     884     IF(ok_volcan) THEN
     885        PLWADAERO(:,:)  = (-LWDN_AERO(:,:,3) -LWUP_AERO(:,:,3)) -(-LWDN_AERO(:,:,1) -LWUP_AERO(:,:,1)) !--NL
     886     ENDIF
     887     
    868888! LW indirect anthropogenic forcing
    869889     PSOLLWAIAERO(:) = 0.0
     
    879899     PSOLSWAD0AERO(:) = 0.0
    880900     PTOPSWAD0AERO(:) = 0.0
    881 
     901     IF(ok_volcan) THEN
     902        PSWADAERO(:,:)  = 0.0 !--NL
     903     ENDIF
     904     
    882905! indirect anthropogenic forcing
    883906     PSOLSWAIAERO(:) = (ZFSDN_AERO(:,1,2)     -ZFSUP_AERO(:,1,2))     -(ZFSDN_AERO(:,1,1)     -ZFSUP_AERO(:,1,1))
     
    899922     PSOLLWAD0AERO(:) = 0.0
    900923     PTOPLWAD0AERO(:) = 0.0
    901 
     924     IF(ok_volcan) THEN
     925        PLWADAERO(:,:)  = 0.0 !--NL
     926     ENDIF
     927     
    902928! LW indirect anthropogenic forcing
    903929     PSOLLWAIAERO(:) = (-LWDN_AERO(:,1,2)     -LWUP_AERO(:,1,2))     -(-LWDN_AERO(:,1,1)     -LWUP_AERO(:,1,1))
     
    913939     PSOLSWAD0AERO(:) = 0.0
    914940     PTOPSWAD0AERO(:) = 0.0
    915 
     941     IF(ok_volcan) THEN
     942        PSWADAERO(:,:)  = 0.0 !--NL
     943     ENDIF
     944     
    916945! indirect anthropogenic forcing
    917946     PSOLSWAIAERO(:) = 0.0
     
    933962     PSOLLWAD0AERO(:) = 0.0
    934963     PTOPLWAD0AERO(:) = 0.0
    935 
     964     IF(ok_volcan) THEN
     965        PLWADAERO(:,:)  = 0.0 !--NL
     966     ENDIF
     967     
    936968! LW indirect anthropogenic forcing
    937969     PSOLLWAIAERO(:) = 0.0
Note: See TracChangeset for help on using the changeset viewer.