Skip to content

Improving volcanic ash simulations #2168

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 32 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
45da0f2
fixed start and endtime of volcano
saneku Oct 5, 2024
e2df378
minor changes
saneku Oct 5, 2024
7ba860c
added map factors in calculation of grid-cell area
saneku Oct 5, 2024
85f69c8
corrected fractions for PM2.5 and PM10. In case of volcanic ash
saneku Oct 7, 2024
75acd2b
fixed grav. settling of ash
saneku Oct 13, 2024
947ae40
area calculation for volcano eruption uses map factors
saneku Oct 13, 2024
1b12af3
minor
saneku Oct 13, 2024
43bef17
added diagnostic for large and convective scale washout of volcanic ash
saneku Oct 28, 2024
27f398b
added calculation of optical properties of ash and sulfate aerosol
saneku Oct 28, 2024
1adce5c
minor
saneku Oct 28, 2024
0ff6374
Added mapfac_mx and mapfac_my for precise calculation of cell area. T…
saneku Jan 16, 2025
070ed0b
Added calculation of PM2.5 and PM10 for CHEM_VASH,CHEM_VOLC,CHEM_VOLC…
saneku Jan 16, 2025
cb1a3b9
added module_volc_chem.F for previous commit
saneku Jan 16, 2025
52e13dd
volcanic aerosols initialization in chemics_init.F
saneku Jan 16, 2025
e928aec
add oxidation of volcanic SO2 by OH and H2O2
saneku Jan 16, 2025
bf2e5f9
added dry deposition of volcanic SO2, sulf, and ash
saneku Jan 16, 2025
6ecec54
added large scale scavenging for Ash, SO2 and Sulf. code moved from m…
saneku Jan 17, 2025
fbbba32
added diagnostic variables into registry for dry deposited ash, sulf,…
saneku Jan 17, 2025
e095842
added diagnostic for convective scavenged ash
saneku Jan 17, 2025
b1b281e
minor changes in calculation of optical properties of volcanic aeroso…
saneku Jan 17, 2025
90508a8
Added correction of ash settling speed for particles with radii>20 mi…
saneku Jan 17, 2025
00b4235
added grav. settling of volcanic sulfate aerosol
saneku Jan 19, 2025
dbce695
minor renaming
saneku Feb 15, 2025
1d34c2c
added processing of the volcanic emission file. file is being read wh…
saneku Feb 15, 2025
067ed1f
minor renaming
saneku Feb 15, 2025
c3d82a2
cosmetic changes in module_volc_chem.F
saneku Feb 20, 2025
789377f
resolve conflict in optical_driver.F
saneku Feb 20, 2025
d95db77
fixing compilation issues
saneku Feb 26, 2025
d4c8092
variable nbin_o was not initialized for chem_opt=CHEM_VOLC, CHEM_VASH…
saneku Mar 3, 2025
66bbf24
code optimization. compute mass fractions of sulfate 2 modes only onc…
saneku Mar 3, 2025
fbdeec8
packaging diagnostic variables into volc_diags array
saneku Mar 26, 2025
4dd7192
Merge branch 'develop' into improving_volcanic_ash_simulations
weiwangncar Mar 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 21 additions & 5 deletions Registry/registry.chem
Original file line number Diff line number Diff line change
Expand Up @@ -334,8 +334,8 @@ state real eseasc i{dust}jf emis_seas2 1 Z -
# volcanic ash emissions
#
state real - ikjf emis_vol - - - - "Volcanic Emissions" ""
state real e_vash1 ikjf emis_vol 1 Z i{13}hr "E_VASH1" "Volcanic Emissions, bin1" "ug/m2/s"
state real e_vash2 ikjf emis_vol 1 Z i{13}hr "E_VASH2" "Volcanic Emissions, bin2" "ug/m2/s"
state real e_vash1 ikjf emis_vol 1 Z i{13}r "E_VASH1" "Volcanic Emissions, bin1" "ug/m2/s"
state real e_vash2 ikjf emis_vol 1 Z i{13}r "E_VASH2" "Volcanic Emissions, bin2" "ug/m2/s"
state real e_vash3 ikjf emis_vol 1 Z i{13}r "E_VASH3" "Volcanic Emissions, bin3" "ug/m2/s"
state real e_vash4 ikjf emis_vol 1 Z i{13}r "E_VASH4" "Volcanic Emissions, bin4" "ug/m2/s"
state real e_vash5 ikjf emis_vol 1 Z i{13}r "E_VASH5" "Volcanic Emissions, bin5" "ug/m2/s"
Expand All @@ -345,6 +345,9 @@ state real e_vash8 ikjf emis_vol 1 Z i{13}r
state real e_vash9 ikjf emis_vol 1 Z i{13}r "E_VASH9" "Volcanic Emissions, bin9" "ug/m2/s"
state real e_vash10 ikjf emis_vol 1 Z i{13}r "E_VASH10" "Volcanic Emissions, bin10" "ug/m2/s"
state real e_vso2 ikjf emis_vol 1 Z i{13}r "E_VSO2" "Volcanic Emissions, SO2" "mol/m2/h"
state real e_vsulf ikjf emis_vol 1 Z i{13}r "E_VSULF" "Volcanic Emissions, SULF" "mol/m2/h"
state real e_qv ikjf emis_vol 1 Z i{13}r "E_QV" "Volcanic Emissions, water vapor" "kg/m2/s"
state real e_start ikjf emis_vol 1 Z i{13}r "E_START" "Volcanic Emissions, start" ""
#
# biomassburning emission arrays (used by fire plume rise)
state real - ikjf ebu - - - - "Biomass burnung Emissions" ""
Expand Down Expand Up @@ -705,7 +708,6 @@ state real br_rto ikj misc 1 - r "BRN
#
# following used for volcanic eruptions only
#
state real ash_fall ij misc 1 - r "ASH_FALL" "VOLCANIC ASH FALL" "kg/m2"
state real erup_beg ij misc 1 - i{13} "ERUP_BEG" "START TIME OF ERUPTION" "?"
state real erup_end ij misc 1 - i{13} "ERUP_END" "END TIME OF ERUPTION" "?"
#
Expand Down Expand Up @@ -1100,8 +1102,21 @@ state integer num_vert_mix - misc - - r "n
#
# Wet deposition
#
state real wd_so4_sc ij misc 1 - rdu "wd_so4_sc" "SO4 surface wet deposition, accumulated (Sc)" "mmol/m2"
state real wd_no3_sc ij misc 1 - rdu "wd_no3_sc" "NO3 surface wet deposition, accumulated (Sc)" "mmol/m2"
state real wd_so4_sc ij misc 1 - rdu "wd_so4_sc" "SO4 surface wet deposition, accumulated (Sc)" "mmol/m2"
state real wd_no3_sc ij misc 1 - rdu "wd_no3_sc" "NO3 surface wet deposition, accumulated (Sc)" "mmol/m2"


state real - i%jf volc_diags - - - - "Volcanic ash, so2 and sulf diagstics" ""
state real wd_ash_sc i%jf volc_diags 1 Z - "wd_ash_sc" "ash surface large scale wet deposition, accumulated" "g/m2"
state real wd_ash_cu i%jf volc_diags 1 Z - "wd_ash_cu" "ash surface wet deposition, accumulated (Cumul)" "ug/m2"
state real ash_drydep i%jf volc_diags 1 Z - "ash_drydep" "Accumulated volcanic ash dry deposition" "kg/m2"
state real sulf_drydep i%jf volc_diags 1 Z - "sulf_drydep" "Accumulated volcanic sulfate dry deposition" "mol/m2"
state real so2_drydep i%jf volc_diags 1 Z - "so2_drydep" "Accumulated volcanic so2 dry deposition" "mol/m2"
state real sulf_grav_setl i%jf volc_diags 1 Z - "sulf_grav_setl" "Accumulated volcanic sulfate grav. settling" "kg/m2"
state real so2_oh_loss i%jf volc_diags 1 Z - "so2_oh_loss" "Accumulated volcanic so2 loss due to OH" "kgS"
state real so2_h2o2_loss i%jf volc_diags 1 Z - "so2_h2o2_loss" "Accumulated volcanic so2 loss due to H2O2" "kgS"
state real ash_fall i%jf volc_diags 1 Z - "ash_fall" "volcanic asg fall" "kg/m2"

# added wet deposition totals for NH4 and OA for MOZART coupled version
state real wd_nh4_sc ij misc 1 - rdu "wd_nh4_sc" "NH4 surface wet deposition, accumulated (Sc)" "mmol/m2"
state real wd_oa_sc ij misc 1 - rdu "wd_oa_sc" "Organics surface wet deposition, accumulated (Sc)" "mmol/m2"
Expand Down Expand Up @@ -4076,6 +4091,7 @@ package ecrimechtno emiss_opt==20 - emis_ant:
#
package vash emiss_opt_vol==1 - emis_vol:e_vash1,e_vash2,e_vash3,e_vash4,e_vash5,e_vash6,e_vash7,e_vash8,e_vash9,e_vash10
package vashso2 emiss_opt_vol==2 - emis_vol:e_vash1,e_vash2,e_vash3,e_vash4,e_vash5,e_vash6,e_vash7,e_vash8,e_vash9,e_vash10,e_vso2
package vashso2qv emiss_opt_vol==3 - emis_vol:e_vash1,e_vash2,e_vash3,e_vash4,e_vash5,e_vash6,e_vash7,e_vash8,e_vash9,e_vash10,e_vso2,e_qv,e_vsulf,e_start;volc_diags:wd_ash_sc,wd_ash_cu,ash_drydep,sulf_drydep,so2_drydep,sulf_grav_setl,so2_oh_loss,so2_h2o2_loss,ash_fall

#

Expand Down
232 changes: 232 additions & 0 deletions chem/Makefile_org
Original file line number Diff line number Diff line change
@@ -0,0 +1,232 @@
#
# Changing this file requires mods to
# WRFV3_top/chem/KPP/util/wkc/change_chem_Makefile.c
# Right now it looks at the line in MODULES with module_data_sorgam
# AND it cares about the word DEPENDENCIES. DO NOT EVEN CHANGE
# SPACING ON THESE TWO LINES.

LN = ln -sf
MAKE = make -i -r
RM = rm -f

MODULES = \
module_data_isrpia_data.o \
module_data_ISRPIA.o \
module_data_isrpia_asrc.o \
module_data_isrpia_solut.o \
module_data_isrpia_kmc198.o \
module_data_isrpia_kmc223.o \
module_data_isrpia_kmc248.o \
module_data_isrpia_kmc273.o \
module_data_isrpia_kmc298.o \
module_data_isrpia_kmc323.o \
module_data_isrpia_expnc.o \
module_data_isrpia_caseg.o \
module_data_isrpia_casej.o \
isofwd.o \
isorev.o \
isocom.o \
moduleHETDATA.o \
moduleHETAERO.o \
moduleAERODATA.o \
aerorate_so2.o \
module_aer_opt_out.o \
module_add_emiss_burn.o \
module_add_emis_cptec.o \
module_bioemi_beis314.o \
module_chem_utilities.o \
module_cmu_dvode_solver.o \
module_data_cbmz.o \
module_data_cmu_bulkaqchem.o \
module_data_gocartchem.o \
module_data_gocart_seas.o \
module_data_mosaic_kind.o \
module_data_mosaic_constants.o \
module_data_mosaic_aero.o \
module_data_mosaic_main.o \
module_data_mosaic_asect.o \
module_data_mosaic_asecthp.o \
module_data_mosaic_boxmod.o \
module_data_mosaic_other.o \
module_data_mosaic_therm.o \
module_data_radm2.o \
module_data_rrtmgaeropt.o \
module_data_megan2.o \
module_data_soa_vbs.o \
module_data_soa_vbs_het.o \
module_data_sorgam.o \
module_data_sorgam_vbs.o \
module_ftuv_subs.o \
module_ghg_fluxes.o \
module_gocart_drydep.o \
module_gocart_settling.o \
module_gocart_so2so4.o \
module_input_tracer_data.o \
module_interpolate.o \
module_mosaic_csuesat.o \
module_mozcart_wetscav.o \
module_peg_util.o \
module_tropopause.o \
module_upper_bc_driver.o \
module_vertmx_wrf.o \
module_wave_data.o \
module_wetdep_ls.o \
module_zero_plumegen_coms.o \
module_vash_settling.o \
module_chem_plumerise_scalar.o \
module_dep_simple.o \
module_gocart_dmsemis.o \
module_gocart_aerosols.o \
module_gocart_dust.o \
module_gocart_dust_afwa.o \
module_gocart_seasalt.o \
module_uoc_dust.o \
module_qf03.o \
module_soilpsd.o \
module_dust_load.o \
module_uoc_dustwd.o \
module_data_uoc_wd.o \
module_mosaic_addemiss.o \
module_mosaic_initmixrats.o \
module_mosaic_support.o \
module_mosaic_init_aerpar.o \
module_mosaic_ext.o \
module_mosaic_astem.o \
module_mosaic_lsode.o \
module_mosaic_box_aerchem.o \
module_mosaic_aerchem_intr.o \
module_mosaic_coag1d.o \
module_mosaic_coag3d.o \
module_mosaic_movesect1d.o \
module_mosaic_movesect3d.o \
module_mosaic_newnucb.o \
module_mosaic_sect_intr.o \
module_mosaic_aerdynam_intr.o \
module_mosaic_movesect.o \
module_mosaic_newnuc.o \
module_mosaic_soa_vbs.o \
module_cbmz_lsodes_solver.o \
module_cbmz_rodas3_solver.o \
module_cmu_bulkaqchem.o \
module_data_mgn2mech.o \
module_ftuv_driver.o \
module_fastj_data.o \
module_fastj_mie.o \
module_input_chem_data.o \
module_mosaic_coag.o \
module_mosaic_gly.o \
module_mosaic_wetscav.o \
module_mosaic_therm.o \
module_phot_mad.o \
params.mod.o \
numer.o \
rdxs.o \
rxn.o \
params_mod.o \
module_phot_tuv.o \
module_subs_tuv.o \
rtrans.o \
la_srb.o \
module_radm.o \
module_sorgam_aqchem.o \
module_sorgam_vbs_aqchem.o \
module_aerosols_soa_vbs.o \
module_aerosols_soa_vbs_het.o \
module_aerosols_sorgam.o \
module_aerosols_sorgam_vbs.o \
module_bioemi_megan2.o \
module_bioemi_simple.o \
module_cbm4_initmixrats.o \
module_cb05_initmixrats.o \
module_cb05_vbs_initmixrats.o \
module_cbmz.o \
module_cbmz_initmixrats.o \
module_cbmz_rodas_prep.o \
module_ctrans_grell.o \
module_gocart_chem.o \
module_volc_chem.o \
module_input_tracer.o \
module_lightning_nox_driver.o \
module_lightning_nox_ott.o \
module_lightning_nox_decaria.o \
module_mixactivate_wrappers.o \
module_mosaic_init_aerpar.o \
module_mosaic2_driver.o \
module_mosaic_sumpm.o \
module_mosaic_driver.o \
module_optical_averaging.o \
module_plumerise1.o \
module_mosaic_drydep.o \
module_wetscav_driver.o \
module_prep_wetscav_sorgam.o \
module_input_chem_bioemiss.o \
module_input_dust_errosion.o \
module_input_gocart_dms.o \
module_cbmz_addemiss.o \
module_cbm4_addemiss.o \
module_cb05_addemiss.o \
module_emissions_anthropogenics.o \
module_aer_drydep.o \
module_cam_mam_calcsize.o \
module_cam_mam_dust_sediment.o \
module_cam_mam_drydep.o \
module_cam_mam_init.o \
module_cam_mam_initaerodata.o \
module_cam_mam_initmixrats.o \
module_cam_mam_rename.o \
module_cam_mam_wateruptake.o \
module_cam_mam_gasaerexch.o \
module_cam_mam_coag.o \
module_cam_mam_newnuc.o \
module_cam_mam_aerchem_driver.o \
module_cam_mam_addemiss.o \
module_cam_mam_wetscav.o \
module_cam_mam_mz_aerosols_intr.o \
module_cam_mam_wetdep.o \
module_cam_mam_cloudchem.o \
module_cam_mam_setsox.o \
module_cam_mam_mo_chem_utls.o \
module_mosaic_cloudchem.o \
module_sorgam_cloudchem.o \
module_sorgam_vbs_cloudchem.o \
module_cam_mam_gas_wetdep_driver.o \
module_cam_mam_mo_sethet.o \
module_phot_fastj.o \
module_chem_cup.o \
module_isocom.o \
module_isofwd.o \
module_isorev.o

OBJS = \
chemics_init.o \
chem_driver.o \
cloudchem_driver.o \
photolysis_driver.o \
optical_driver.o \
mechanism_driver.o \
emissions_driver.o \
dry_dep_driver.o \
aerosol_driver.o

LIBTARGET = chemics
TARGETDIR = ./
$(LIBTARGET) : MODULE DRIVERS
$(AR) $(ARFLAGS) ../main/$(LIBWRFLIB) $(MODULES) $(OBJS)

MODULE : $(MODULES)

DRIVERS : $(OBJS)

include ../configure.wrf

convert_emiss : convert_emiss.o
$(RANLIB) ../main/$(LIBWRFLIB)
$(FC) -o convert_emiss.exe $(LDFLAGS) convert_emiss.o ../main/$(LIBWRFLIB) $(LIB)

clean:
@ echo 'use the clean script'

# DEPENDENCIES : only dependencies after this line (don't remove the word DEPENDENCIES)

include depend.chem

11 changes: 11 additions & 0 deletions chem/aerosol_driver.F
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
!
! 10/12/2011 - Ravan Ahmadov (NOAA) updated to include the RACM_SOA_VBS option
! 10/08/2014 - Kai Wang and Yang Zhang (NCSU) updated to include the CB05_MADE/SORGAM and CB05_MADE/VBS options
! 01/13/2025 - Alexander Ukhov (KAUST) added calculation of PM2.5 and PM10 for CHEM_VASH,CHEM_VOLC,CHEM_VOLC_4BIN
!
SUBROUTINE aerosols_driver (id,curr_secs,ktau,dtstep,ktauc, &
config_flags,dtstepc,dx, &
Expand Down Expand Up @@ -426,6 +427,7 @@ SUBROUTINE sum_pm_driver ( config_flags, &
USE module_gocart_aerosols, only: sum_pm_gocart
USE module_aerosols_soa_vbs, only: sum_pm_soa_vbs
USE module_aerosols_sorgam_vbs, only: sum_pm_sorgam_vbs
USE module_volc_chem, only: sum_pm_volc

IMPLICIT NONE

Expand Down Expand Up @@ -499,6 +501,15 @@ SUBROUTINE sum_pm_driver ( config_flags, &
!
sum_pm_select: SELECT CASE(config_flags%chem_opt)

! 01/13/2025 - A. Ukhov
case (chem_vash,chem_volc,chem_volc_4bin)
CALL wrf_debug(15,'sum_pm_driver: calling sum_pm_volc')
CALL sum_pm_volc ( &
alt, chem,pm2_5_dry, pm10, &
ids,ide, jds,jde, kds,kde, &
ims,ime, jms,jme, kms,kme, &
its,ite, jts,jte, kts,kte )

CASE (GOCART_SIMPLE,GOCARTRACM_KPP,GOCARTRADM2,MOZCART_KPP,T1_MOZCART_KPP)
CALL wrf_debug(15,'sum_pm_driver: calling sum_pm_gocart')
CALL sum_pm_gocart ( &
Expand Down
Loading