Changeset 3408
- Timestamp:
- Oct 25, 2018, 5:23:18 PM (6 years ago)
- Location:
- LMDZ6/branches/IPSLCM6.0.15
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/IPSLCM6.0.15/DefLists/CMIP6_ping_atmos.xml
r3353 r3408 155 155 <field id="CMIP6_loadss" field_ref="loadss" /> <!-- P1 (kg m-2) atmosphere_mass_content_of_seasalt_dry_aerosol : Load of Seasalt --> 156 156 <field id="CMIP6_longitude" field_ref="dummy_not_provided" /> <!-- P1 (degrees_east) longitude : Longitude --> 157 <field id="CMIP6_lwsffluxaero" field_ref=" dummy_not_provided" /> <!-- P2 (W m-2) longwave__flux__due_to_volcanic_aerosols_at_the_surface : downwelling longwave flux due to volcanic aerosols at the surface to be diagnosed through double radiation call -->157 <field id="CMIP6_lwsffluxaero" field_ref="toplwad" /> <!-- P2 (W m-2) longwave__flux__due_to_volcanic_aerosols_at_the_surface : downwelling longwave flux due to volcanic aerosols at the surface to be diagnosed through double radiation call --> 158 158 <field id="CMIP6_lwsrfasdust" field_ref="dummy_not_provided" /> <!-- P1 (W m-2) surface_instantaneous_longwave_forcing_due_to_dust : All-sky Surface Longwave radiative flux due to Dust --> 159 159 <field id="CMIP6_lwsrfcsdust" field_ref="dummy_not_provided" /> <!-- P1 (W m-2) surface_instantaneous_longwave_forcing_due_to_dust_in_clearsky : Clear-sky Surface Longwave radiative flux due to Dust --> … … 161 161 <field id="CMIP6_lwtoacsaer" field_ref="toplwad0" /> <!-- P1 (W m-2) toa_instantaneous_longwave_forcing : Clear-Sky LW-RF Aerosols at TOA --> 162 162 <field id="CMIP6_lwtoacsdust" field_ref="dummy_not_provided" /> <!-- P1 (W m-2) toa_instantaneous_longwave_forcing_due_to_dust_in_clearsky : Clear-sky TOA Longwave radiative flux due to Dust --> 163 <field id="CMIP6_lwtoafluxaerocs" field_ref=" dummy_not_provided" /> <!-- P1 (W m-2) longwave_flux_due_to_volcanic_aerosols_at_TOA_under_clear_sky : downwelling longwave flux due to volcanic aerosols at TOA under clear sky to be diagnosed through double radiation call -->163 <field id="CMIP6_lwtoafluxaerocs" field_ref="toplwad0" /> <!-- P1 (W m-2) longwave_flux_due_to_volcanic_aerosols_at_TOA_under_clear_sky : downwelling longwave flux due to volcanic aerosols at TOA under clear sky to be diagnosed through double radiation call --> 164 164 <field id="CMIP6_mc" field_ref="mc" /> <!-- P1 (kg m-2 s-1) atmosphere_net_upward_convective_mass_flux : The net mass flux should represent the difference between the updraft and downdraft components. The flux is computed as the mass divided by the area of the grid cell. --> 165 165 <field id="CMIP6_mcd" field_ref="dnwd" > (dnwd-dnwd0) > 0 ? (dnwd-dnwd0) : 0 </field> <!-- P2 (kg m-2 s-1) atmosphere_downdraft_convective_mass_flux : Calculated as the convective mass flux divided by the area of the whole grid cell (not just the area of the cloud). --> … … 281 281 <field id="CMIP6_snwc" field_ref="dummy_not_provided" /> <!-- P1 (kg m-2) canopy_snow_amount : canopy_snow_amount --> 282 282 <field id="CMIP6_solbnd" field_ref="solbnd" /> <!-- P1 (W m-2) solar_irradiance : Top-of-Atmosphere Solar Insolation for each band --> 283 <field id="CMIP6_swsffluxaero" field_ref=" dummy_not_provided" /> <!-- P2 (W m-2) shortwave__flux_due_to_volcanic_aerosols_at__the_surface : downwelling shortwave flux due to volcanic aerosols at the surface to be diagnosed through double radiation call -->283 <field id="CMIP6_swsffluxaero" field_ref="topswad" /> <!-- P2 (W m-2) shortwave__flux_due_to_volcanic_aerosols_at__the_surface : downwelling shortwave flux due to volcanic aerosols at the surface to be diagnosed through double radiation call --> 284 284 <field id="CMIP6_swsrfasdust" field_ref="dummy_not_provided" /> <!-- P1 (W m-2) tendency_of_all_sky_surface_shortwave_flux_due_to_dust_ambient_aerosol_particles : All-sky Surface Shortwave radiative flux due to Dust --> 285 285 <field id="CMIP6_swsrfcsdust" field_ref="dummy_not_provided" /> <!-- P1 (W m-2) tendency_of_clear_sky_surface_shortwave_flux_due_to_dust_ambient_aerosol_particles : Clear-sky Surface Shortwave radiative flux due to Dust --> 286 286 <field id="CMIP6_swtoaasdust" field_ref="dummy_not_provided" /> <!-- P1 (W m-2) toa_instantaneous_shortwave_forcing : all sky sw-rf dust at toa --> 287 287 <field id="CMIP6_swtoacsdust" field_ref="dummy_not_provided" /> <!-- P1 (W m-2) toa_instantaneous_shortwave_forcing : clear sky sw-rf dust at toa --> 288 <field id="CMIP6_swtoafluxaerocs" field_ref=" dummy_not_provided" /> <!-- P1 (W m-2) shortwave_flux_due_to_volcanic_aerosols_at_TOA_under_clear_sky : downwelling shortwave flux due to volcanic aerosols at TOA under clear sky to be diagnosed through double radiation call -->288 <field id="CMIP6_swtoafluxaerocs" field_ref="topswad0" /> <!-- P1 (W m-2) shortwave_flux_due_to_volcanic_aerosols_at_TOA_under_clear_sky : downwelling shortwave flux due to volcanic aerosols at TOA under clear sky to be diagnosed through double radiation call --> 289 289 <field id="CMIP6_sza" field_ref="sza" /> <!-- P1 (degree) solar_zenith_angle : solar zenith angle --> 290 290 <field id="CMIP6_t2" field_ref="temp"> temp*temp </field> <!-- P2 (K2) square_of_air_temperature : square_of_air_temperature --> … … 363 363 <field id="CMIP6_zhalf" field_ref="zhalf" /> <!-- P2 (m) height_above_reference_ellipsoid : This is actual height above mean sea level, not geopotential height. This is actual height above mean sea level, not geopotential height. Includes both the top of the model atmosphere and surface levels. --> 364 364 <field id="CMIP6_zmla" field_ref="s_pblh" /> <!-- P1 (m) atmosphere_boundary_layer_thickness : Height of Boundary Layer --> 365 <field id="CMIP6_zmlwaero" field_ref=" dummy_not_provided" /> <!-- P1 (K s-1) longwave_heating_rate_due_to_volcanic_aerosols : longwave heating rate due to volcanic aerosols to be diagnosed through double radiation call, zonal average values required -->366 <field id="CMIP6_zmswaero" field_ref=" dummy_not_provided" /> <!-- P1 (K s-1) shortwave_heating_rate_due_to_volcanic_aerosols : shortwave heating rate due to volcanic aerosols to be diagnosed through double radiation call, zonal average values required -->365 <field id="CMIP6_zmlwaero" field_ref="cool_volc" /> <!-- P1 (K s-1) longwave_heating_rate_due_to_volcanic_aerosols : longwave heating rate due to volcanic aerosols to be diagnosed through double radiation call, zonal average values required --> 366 <field id="CMIP6_zmswaero" field_ref="heat_volc" /> <!-- P1 (K s-1) shortwave_heating_rate_due_to_volcanic_aerosols : shortwave heating rate due to volcanic aerosols to be diagnosed through double radiation call, zonal average values required --> 367 367 <field id="CMIP6_zmtnt" field_ref="dtphy" /> <!-- P1 (K s-1) tendency_of_air_temperature_due_to_diabatic_processes : Zonal Mean Diabatic Heating Rates --> 368 368 <field id="CMIP6_ap" field_ref="Ahyb" /><!-- Ap hybrid coordinate array for level interfaces --> -
LMDZ6/branches/IPSLCM6.0.15/DefLists/field_def_lmdz.xml
r3313 r3408 702 702 <field id="rldcs4co2" long_name="Downwelling CS LW 4xCO2 atmosphere" unit="W/m2" /> 703 703 <field id="stratomask" long_name="Stratospheric fraction" unit="-" /> 704 <field id="heat_volc" long_name="SW heating rate from volcano" unit="K/s" /> 705 <field id="cool_volc" long_name="LW cooling rate from volcano" unit="K/s" /> 704 706 <field id="pvap" long_name="pvap intermediary variable" unit="-">pres*ovap*461.5 / (287.04*(1.+ (10.9491/18.0153)*ovap)) </field> 705 707 </field_group> -
LMDZ6/branches/IPSLCM6.0.15/DefLists/file_def_histday_lmdz.xml
r3315 r3408 337 337 <field field_ref="z0m" level="10" /> 338 338 <field field_ref="z0h" level="10" /> 339 <field field_ref="topswad" level="1 0" />340 <field field_ref="topswad0" level="1 0" />339 <field field_ref="topswad" level="1" /> 340 <field field_ref="topswad0" level="1" /> 341 341 <field field_ref="topswai" level="10" /> 342 342 <field field_ref="solswad" level="10" /> 343 343 <field field_ref="solswad0" level="10" /> 344 344 <field field_ref="solswai" level="10" /> 345 <field field_ref="toplwad" level="1 0" />346 <field field_ref="toplwad0" level="1 0" />345 <field field_ref="toplwad" level="1" /> 346 <field field_ref="toplwad0" level="1" /> 347 347 <field field_ref="toplwai" level="10" /> 348 348 <field field_ref="sollwad" level="10" /> … … 628 628 <field field_ref="rsdcs4co2" level="10" /> 629 629 <field field_ref="rldcs4co2" level="10" /> 630 <field field_ref="stratomask" level="1" /> 631 <field field_ref="cool_volc" level="1" /> 632 <field field_ref="heat_volc" level="1" /> 630 633 </field_group> 631 634 </file> -
LMDZ6/branches/IPSLCM6.0.15/DefLists/file_def_histmth_lmdz.xml
r3329 r3408 372 372 <field field_ref="z0m" level="10" /> 373 373 <field field_ref="z0h" level="10" /> 374 <field field_ref="topswad" level="1 0" />375 <field field_ref="topswad0" level="1 0" />374 <field field_ref="topswad" level="1" /> 375 <field field_ref="topswad0" level="1" /> 376 376 <field field_ref="topswai" level="10" /> 377 377 <field field_ref="solswad" level="10" /> 378 378 <field field_ref="solswad0" level="10" /> 379 379 <field field_ref="solswai" level="10" /> 380 <field field_ref="toplwad" level="1 0" />381 <field field_ref="toplwad0" level="1 0" />380 <field field_ref="toplwad" level="1" /> 381 <field field_ref="toplwad0" level="1" /> 382 382 <field field_ref="toplwai" level="10" /> 383 383 <field field_ref="sollwad" level="10" /> … … 677 677 <field field_ref="rsdcs4co2" level="10" /> 678 678 <field field_ref="rldcs4co2" level="10" /> 679 <field field_ref="stratomask" level="1" /> 680 <field field_ref="cool_volc" level="1" /> 681 <field field_ref="heat_volc" level="1" /> 679 682 </field_group> 680 683 -
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.