GenChem v1.0 – a chemical pre-processing and testing system for atmospheric modelling

. This paper outlines the structure and usage of the GenChem system, which includes a chemical pre-processor (GenChem.py), and a simple box-model (boxChem). GenChem provides scripts and input ﬁ les for converting chemical equations into differential form for use in atmospheric chemical transport models (CTMs) and/or the boxChem system. Although GenChem is primarily intended for users of the EMEP MSC-W CTM and related systems, boxChem can be run as a stand-alone chemical solver, enabling for example easy testing of chemical mechanisms against each other. This paper presents an 5 outline of the usage of the GenChem system, explaining input and output ﬁ les, and presents some examples of usage. The code needed to run GenChem is released as open-source code under the GNU license.

The original GenChem system was written in perl in the 1990s for earlier EMEP CTM versions (e.g., Simpson 1995;Simpson et al. 2012), but was converted to a python (2.7) script in 2014. The current structure of the GenChem system, now based entirely on python3, including boxChem, improvements in GenChem.py, and various scripts, was developed between 55 2016 and 2020.
The numerical solver used for the chemical equations in the EMEP CTM is the so-called TWOSTEP scheme (Verwer, 1994;Verwer et al., 1996;Verwer and Simpson, 1995). Sandu et al. (1997) commented that TWOSTEP was an excellent candidate for very large tropospheric gas-phase problems with very small operator split steps. The main limitation noted by Sandu et al. (1997) was that TWOSTEP is not suitable for aqueous-phase problems, but those are not explicitly treated within the gas-  chemical mechanisms: detailing the input files which contain chemical species information and reaction mechanisms. Section 7 documents the output files of GenChem, which consist mainly of Fortran code needed for boxChem and EMEP CTM runs.
Finally, Section 8 (Conclusions) discusses some ideas for future development of the GenChem system.
2 Installation and code 80 The code needed to run the GenChem system is released as open-source code under the GNU license, (https://github.com/ metno/genchem), with the user-guide provided at https://genchem.readthedocs.io. GenChem has been developed and tested in a Linux environment, mainly XUbuntu 16.04-19.10, but has also been tested on Windows systems via a virtual environment. For those familiar with the Docker system (https://www.docker.com/products/docker-desktop), a Dockerfile and Dockerfile_README are provided to enable consistent installation on Windows PCs. See the user-guide for further details. BASE_BoundaryConditions.txt CMX_BoundaryConditions.txt Notes: (a) These GenIn files are generated from one or more equivalent files, see Sects.6.1-6.3 (b) For the input emiss-plit_defaults_voc.csv file and emep_extras the 'BASE' string is replaced by the name of the base chemical mechanism, e.g.
EmChem19a. (c) The files in emep_extras are for the EMEP CTM rather than boxChem usage. If intended for the EMEP CTM then appropriate Fortran code is required. If for boxChem, only dummy files are provided. These files are essential only for the base mechanisms. See the README_emep_extras.md files in the sub-directory. This will create the working directory, and copy all the files needed for boxChem into it. Once setup, the user is ready to build and run some chemical schemes. With the example of EmChem19a, and now from our tmp_work directory, the simplest next step is in principle to run: 110 Example 3.2.
./do.GenChem -b EmChem19a This will run the GenChem.py script on the base-mechanism (-b flag) EmChem19a, and generate CM and CMX files, but it will not attempt to compile or run boxChem. However, a far more useful approach is to run do.testChems, e.g.: Example 3.3.

./do.testChems EmChem19a
Running do.testChems will run GenChem.py on the EmChem19a scheme (also adding a few extra_mechanism files as 115 discussed in Sect. 5), copy all necessary CM-files and the configuration file config_box.nml to the user's work directory. The script compiles boxChem, and then runs the resulting box-model code. Input variables needed by boxChem (e.g. meteorology, emissions, boundary conditions) are set in config_box.nml (also copied by do.testChems). Results of the boxChem run will appear as three files in the outputs directory as given in

Plotting boxChem outputs
The python/matplotlib script boxplots.py (found in the box/scripts directory) can plot either individual or multiple species The do.testChems script described above is best for quickly testing and comparing different mechanisms. Usually these comparisons only involve gas-phase mechanisms such as EmChem19a or MCMv3.3Em. However, the EMEP CTM usually requires a host of extra species and reactions to accommodate secondary inorganic aerosol, sea-salt, dust, organic aerosols, and pollen, as discussed in Sect. 5. The EMEP CTM also requires files to specify how emissions and boundary conditions should be 165 distributed among specific species, e.g. how a VOC emission should be split into C2H6, C2H4, nC4H10 etc.
In fact, GenChem produces many Fortran files which need to be copied into the appropriate ZCM_ directories, e.g. ZCM_EmChem19a-vb for the scheme EmChem19a-vbs, as indicated in Table 1. The recommended way to get this directory is to use the script emep_setup.py from your temporary work directory within the box system. So, from e.g. box/tmp_work, do: Example 4.1. ./emep_setup.py EmChem19a-vbs normal (make clean, make). The emissplit_run files need to be sent to a location specified by the user (via the EMEP CTM's emep_config.nml namelist).

Chemical mechanisms in GenChem
We provide a number of chemical mechanisms which have been formatted for GenChem usage. These mechanisms are organ-180 ised into two types, with separate directory trees: -base_mechanisms These schemes are typically fairly complete sets of gas-phase photochemical mechanisms, and are designed to be the core for any boxChem, ESX or EMEP CTM runs. Apart from the EMEP-developed EmChem19a, the other base-schemes have been adapted from other sources for EMEP CTM usage, hence the 'Em' postfix. Details of these schemes and 185 adaptations can be found in Bergström et al. (2020a). The schemes provided with GenChem currently comprise (see also -EmChem19a -the base EMEP chemical scheme, which has 158 gas-phase reactions in the core mechanism, and in addition to these a number of heterogeneous reactions are also included, bring the total to 171 reactions for simple boxChem usage (c.f. Table 3). This scheme is a surrogate-species scheme that has evolved over many years 190 (Eliassen et al., 1982;Simpson et al., 1993Simpson et al., , 2012Bergström et al., 2020a), and has over the years been shown to compare well against other and more extensive chemical mechanisms (Kuhn et al., 1998;Andersson-Sköld and Simpson, 1999;Bergström et al., 2020a). The most recent changes have included a revised isoprene chemistry based on the CheT2 mechanism of Squire et al. (2015), and the addition of toluene and benzene as well as o-xylene to represent aromatics. A new feature of EmChem19a compared to earlier EMEP schemes is the addition of an 195 RO2POOL species, representing the total concentration of all peroxy radicals; RO2POOL is used for setting the rates of peroxy + peroxy radical reactions. A set of new nitrate radical reactions has also been added, and reaction rates have been revised to be in line recent IUPAC recommendations. For details see Bergström et al. (2020a). MCM mechanism is too large for the EMEP CTM, but can be run with boxChem or ESX, and serves as an important reference mechanism.
-CRIv2R5Em is an adaption of the 'Common Representative Intermediates' scheme, with a variant of the CRI v2.2 205 isoprene chemistry . In order to make the scheme manageable for 3D-modelling the full CRI scheme is reduced by only including emissions from a limited set of different VOCs (the so called CRI_R5 reduction subset from Watson et al. 2008 is used in the EMEP adaption of CRI). Even with this reduction the CRI scheme is substantially larger than our EmChem schemes, but still well suited to 3-D modelling (see e.g. -CB6r2Em -The 'carbon-bond' (CB) schemes have been developed over many years as an innovative solution for dealing with chemistry in 3-D CTMs (Gery et al., 1989;Yarwood et al., 2010a, b;Luecken et al., 2019). The CB6r2 chemical scheme has been implemented without any significant change in the GenChem, except that photolysis 215 rates have been adjusted to use MCM (for boxChem usage) or EMEP CTM surrogates. Also, the biogenic VOCs of CB6r2, ISOP (isoprene) and TERP (representing all monoterpenes, MT), have been renamed to the C5H8 and APINENE (also a surrogate for all MT in this case), since this allows the same emission reaction equation to be used for all four mechanisms if desired.

McFiggans
-extra_mechanisms 220 In this directory we store sets of reactions and sometimes species that can be appended to the base mechanisms. Many of these are essential for 3-D chemical transport modelling, whilst others are used for box model simulations. With this release we provide mechanisms for sea-salt, dust, emissions from ships (EMEP uses a special ShipNOx species, see Simpson et al. 2015), and several organic aerosol and BVOC emission options. Comments on each scheme can be found in the appropriate README files. The organic aerosol schemes will be further discussed and compared in Bergström Tables S1-S2 in the Supplementary information provide brief explanations of the many currently implemented extra_mechanism packages, but we can give three important extra mechanisms as examples: -BoxAero Provides SO 2 gas phase chemistry and some reactions for very simple gas to aerosol conversion for SO 3 , HNO 3 230 and N 2 O 5 . The reactions provide simplified chemical loss mechanisms for these species in the box model -they are calculated in a more complex way in the full EMEP CTM, which also includes NH 3 chemistry. This directory is intended only for boxChem usage, and is applied automatically when using the do.testChems script (see Sec.3).
-PM_WoodFFuelInert PM emissions (fine and coarse) in the EMEP CTM are typically split into EC (elemental carbon), POM (primary 235 particulate organic matter) and remaining PPM (remPPM) components. Different levels of detail are allowed, but this package enables the most common setup. POM and EC emissions are divided into those from biomass combustion ("wood-burning") and fossil-fuel. POM are assumed inert, consistent with the PM_VBS_EmChem19 scheme discussed below. EC emissions are further divided into 'new' and 'age' components, to reflect the level of hydrophobicity (Tsyro et al., 2007;Genberg et al., 2013) In some inventories primary sulphate is also provided, SOA species are tracked as a true aerosol -with one compound representing the sum of gas and particle-phase compounds. These semi-volatile species and reaction formats are discussed more in Sect. 6.1.1 and Sect. 6.3.
250 Table 3 summarise the number of species and reactions involved in typical boxChem or EMEP CTM usage, and Tables 4-5 give examples of the combinations of base_ and extra_mechanisms packages. When a script such as do.testChems or emep_setup.py is run (Sects. 3,4), these scripts collect or concatenate inputs from the base directory together with those from the extra directories, to produce the input files (see Table 1) needed by GenChem. For example, running 'emep_setup.py EmChem19a' would concatenate the file EmChem19a_Species.csv from the base directory with equivalent species files from PM_VBS_EmChem19,   Chemical mechanisms are defined in GenChem using three input files, which are themselves constructed from one or more files originating in the various sub-directories of the chem directory: GenIn_Species.csv, GenIn_Shorthands.txt and GenIn_Reactions.txt.
In addition, a mechanism-specific emissplit file is needed in order to tell models how VOC emissions are to be split into individual compounds. These files are discussed below in Sect.6.1-6.4.

265
The GenIn_Species.csv file is typically created by either do.testChems or emep_setup.py. As explained in Sect. 5 these scripts concatenate the Species.csv file from the 'base' mechanism with any 'Species' files found in the specified 'extra' mechanisms files. The resulting GenIn_Species.csv file is a spreadsheet-friendly comma-separated file where the characteristics of the chemical compounds are given. Table 6 gives some example entries, which we briefly discuss here. Referring to The 'DRY' and 'WET' deposition columns specify which compounds undergo such deposition, and which surrogate compounds are used, since the EMEP CTM calculates dry and wet deposition explicitly for only a limited number of compounds.
For example, for dry deposition of O3 we simply use O3 since this is one of the explicitly calulated compounds, but for C2H5OOH we use the MEOOH surrogate. Note that for the semivolatile SOA species, the EMEP CTM will use this rate for the gas-phase fraction of the SOA; deposition of the particle phase is treated using the EMEP standard parameters for fine 280 particles.
The 'Groups' column specifies which groups the species belongs to (e.g. OXN for oxidised nitrogen, RO2 for peroxy radicals) and allows surrogate species or factors to be assigned to these groups, e.g. Cstar:10.0;Extinc:0.4. It is important that these groups are separated by semi-colons, not commas. This rather powerful feature is discussed further in Sect. 6.1.2.
More detailed information on these entry types can be found in the readthedocs website (see Code Availabilty section at 285 end).
These are also subject to advection, but in addition they are semivolatile and exist in both gas and particulate phase. The EMEP CTM tracks such species by compound rather than phase, and calculates the partitioning between the phases dynamically, based GenChem will reorder different types of species to be consecutive, so despite the order of species in the GenIn_Species.csv file, all type-2 species will lie together in the index range FIRST_SEMIVOL=136:LAST_SEMIVOL=176.) Type 2 (SOA) species require specification of their effective saturation concentrations (C * ) and the enthalpies of vaporization (Δ H vap ), following normal VBS principles. These specifications are made using the 'Group' methods described next.

Defining Groups in GenIn_Species.csv 300
The 'Groups' mechanism plays an important role for feeding key information to the EMEP CTM or boxChem. Some groups are indeed essential -for example, in EmChem19a, CRIv2R5Em and MCMv3.3Em, the RO2_GROUP needs to be set correctly to get the correct concentrations of the special RO2POOL concentration, and the deposition of groups of compounds (e.g. oxidised nitrogen deposition) depends on those compounds being correctly identified by their groups. Groups have to be separated by a semicolon, and there are two types of group labels for a specific species: (i) simple name, e.g. OXN -indicates here that this species belongs to the group of oxidised nitrogen compounds. In the CTM code, the members of one group are easily accessible so they can be treated specially (see Sect. 7.3).
(ii) compound groups which specify numerical or character values to pass specific properties, e.g. the groups CSTAR:0.1 and DeltaH:30 for BSOC_ng100, or Extinc:ECn for EC_f_wood_new in Table 6.
If a species is both a member of a type (i) group and has a (wet or dry) deposition surrogate, additional WDEP or DDEP 310 groups will be automatically generated, e.g. DDEP_OXN_GROUP.
The specification of numerical or character values (group type (ii)) is indicated with a colon notation (as opposed to the semicolon used to separate groups). For example, SOA species which use the VBS system require specification of their effective saturation concentrations at 298K (C * , in µg m −3 ) and the vaporization enthalpies (Δ H vap , in kJ mol −1 ), or for aerosol optical absorption we need extinction coefficients. These specifications are simply set through the groupings Cstar, deltaH and Extinc, 315 with e.g. Cstar:1.0e-2;deltaH:30.0 for SOA, and Extinc:SO4 for sulphate. Sect. 7.3 provides further explanation of such groups.
These groupings are not hard-coded in GenChem, and may or may not be used by any CTM, so this system provides an easily extensible mechanism for introducing new characteristics into modelling systems.

Defining Chemical reactions, A) GenIn_Shorthands.txt
Firstly, we can note that in the EMEP CTM and boxChem systems, some key variables have special names, and can be used Other short-hand notation is often used in GenIn_Reactions.txt (Sect. 6.3), and this has to be defined first in the GenIn_Shorthands.txt file. For example, we might use KHO2RO2 as a generic rate coefficient for HO2 + RO2 reactions. The shorthand LogTdiv300 325 is also frequently used for the common expression log(TEMP/300). The GenIn_Shorthands.txt file is typically created by either do.testChems or emep_setup.py, and these scripts concatenate the file generic_Shorthands.txt from the chem directory and the chemistry-specific files, e.g. chem/base_mechanisms/EmChem19a_Shorthands.txt, to produce the needed GenChem input file.
The name and the expression for a shorthand have to be separated by whitespace for GenChem to process it. Names of 330 species can also be used in shorthands expressions. Figure 4 illustrates several examples, including how short-hands defined earlier can be re-used in the same system -as done for the MCM example in producing the KMT08 variable. The last example, for KMT3, also illustrates that the right-hand side can be a function, which of course needs to be compatible with the Fortran code of the calling code.  and with the reaction consisting of reactants and products, along with their stoichiometric factors as appropriate. The semicolon marks the end of the reactions, and whitespace is needed between all terms, e.g. between a stoichiometric factor and a species. Some typical lines are given in Fig. 5. The first line here is trivial, in the sense that OH, NO, and HONO are all normal 345 chemical species as defined in GenIn_Species.csv, and GenChem will add production and loss terms appropriately for each, with a reaction rate given by the TROE_OH_NO shorthand.
GenChem is flexible as to whether products are written explicitly or with stoichiometric coefficients (i.e. 2 OH is the same as OH + OH). Non integer stoichiometric coefficients are allowed, since we often condense multiple branches of a reaction into one equation for CTM use. and defined, as long as the emissplit system exists to convert these groups into model species (e.g. nox into NO and NO2, or voc into C2H6, NC4H10, etc.).
The next three lines in Fig. 6 are examples for emission reactions: the reaction rate is denoted as rcemis(SPECIES,KDIM) 385 and there is no reactant in the reaction. GenChem will replace KDIM with the vertical cordinate, assumed to be k, in the Fortran code, e.g. giving rcemis(NO,k).
Biogenic VOC (BVOC) emissions are special, in that specific functions exist in the EMEP model for dealing with the light, temperature, and other dependencies of these (see e.g. Simpson et al., 2012). In the extra_mechanisms files used for the EMEP CTM setup, we use the 'rcbio' functions as shown in Fig. 7.

390
When using boxChem, a very simplified system is used for BVOC emissions, illustrated also in Fig. 7. The 'SUN' variable (borrowed from the KPP system) allows for simple variation of emissions with zenith angle (and gives zero emissions at night, when SUN=0, and maximal emissions at noon, when SUN=1). The numerical coefficients (5.0e7 or 2.5e6) correspond to typical emission rates (units are molecules cm 3 s −1 , see the appropriate mechanism file for species), and the fIsop, fMTL and fMTP factors , which are set in config_box.nml, provide the possibility to scale these emissions. For example, light dependent 395 emissions for MT can be reduced by 50% set using fMTL=0.5, and light-independent ('pool') emissions set to zero by setting fMTP=0.0.

Adding photolysis reactions in GenIn_Reactions.txt
The reaction rates of photolysis reactions are denoted as rcphot(PHOT_ID). GenChem will automatically add the 'k' dependency on the vertical level to the photolysis rate (e.g. to give rcphot(IDH2O2,k)). The index variables (e.g. IDO3_O1D) refer 400 to photolysis rates as defined in the EMEP/boxChem codes.

Emissions speciation: emissplit files
Emissions are often provided to models for groups of compounds, e.g. NOx for NO & NO 2 , and NMVOC for non-methane volatile organic compounds. These emissions need to be assigned to individual chemical compounds, and converted from mass to number using the appropriate molecular weight. For GenChem we provide such NMVOC files for all supported chemical mechanisms, in the appropriate directory. Thus, for EmChem19a the file for NMVOC emissions would be named EmChem19a_emissplit_defaults_voc.csv. For boxChem testing the do.GenChem or do.testChems scripts will move this file to inputs/emissplit_run and also copied to ZCMBOX_EmChem19a/emissplit_run and rename to simple emissplit_defaults_voc.csv. If emep_setup.py is used, the emis-415 split_run dircetory is copied to ZCM_EmChem19a/emissplit_run.
In the EMEP CTM it is common for these default values to be overridden by 'emissplit_specials' files which can assign country and sector-specific NOx, NMVOC and PM profiles. Such profiles need to be generated by the EMEP CTM user, however, and are not part of GenChem. An example of this system, and such emission splits, is given in the Supplementary   Information, Table S5, of Simpson et al. (2012). Also in boxChem, users may of course modify any of these emissplit files -420 see Sect. S2.3 in Supplementary information.

GenChem outputs: Fortran modules and include files
The main purpose of the GenChem system is to convert chemical equations into Fortran code suitable for use in the boxChem and/or EMEP CTM systems. The output files, prefixed with CM_ to denote chemical mechanism, are summarised in Table 1, and discussed in the relevant section below. 425 7.1 CM_ChemDims_mod.f90 -the dimensions of the chemical system The CM_ChemDims module provides basic information (Fig. 8) about the dimensioning of the chemical system, giving for example the total number of species (NSPEC_TOT), photolysis rates (NPHOTOLRATES) or emission files (NEMIS_File).
! NSPEC f o r TOT : A l l r e a c t i n g s p e c i e s i n t e g e r , p u b l i c , parameter : : NSPEC TOT=120 i n t e g e r , p u b l i c , parameter : : NSPEC ADV=117 i n t e g e r , p u b l i c , parameter : : NSPEC SHL=3 i n t e g e r , p u b l i c , parameter : : NSPEC SEMIVOL=23 i n t e g e r , p u b l i c , parameter : : NDRYDEP ADV = 55 i n t e g e r , parameter , p u b l i c : : NPHOTOLRATES = 17 i n t e g e r , parameter , p u b l i c : : NEMIS File = 7 i n t e g e r , parameter , p u b l i c : : NEMIS Specs = 32

CM_ChemSpecs_mod.f90 -chemical compounds information
This file specifies basic information about the chemical compounds, in terms of number, indices and some chemical charac-430 teristics. Extracts of the file are shown in Fig. 9 and Fig. 10. As seen in Fig. 9, this module provides the simpe indices which represent the chemical compounds in the EMEP systems, e.g. OH = 3. Indices are additionally provided for the short-lived and advected species (IXSHL_ indices, and IXADV_ indices).
chemgroups (1)  The more complex type (ii) compound groups discussed in Sect. 6.1.2, in which numbers or character strings are associated with a group, result in further arrays in CM_ChemGroup_mod.f90 which provide access to these data. Fig. 12 illustrates some examples of this.  Fig. 13, where the first entry is the index of the species in the list of advected species, and the second entry is the surrogate species as discussed in Sect. 6.1. The last entry can be used to set fixed values of deposition velocity (although this 460 is not typically done for the EMEP CTM). This listing is then used by the EMEP CTM as part of the standard deposition calculations.
7.5 CM_Reactions1(2).inc. CM_Reactions.log -the chemical reactions code Sect. 1, Fig. 1, has already presented an example section from the file CM_Reactions1.inc. This file generally comprises such production and loss terms (P, L) for all, or the majority, of the model's chemically reacting species. The terms xold and xnew in 465 this example represent the original and updated concentrations arising from the TWOSTEP Gauss-Seidel calculations for the timestep dt2. For those slowly-reacting species such as CH4, a second file CM_Reactions2.inc is produced with the same type of equations, but which can lie outside of the iteration loop in the EMEP system, e.g. the EMEP CTM code can be summarised as: The file CM_Reactions.log is not needed by the EMEP CTM, but is output as a valuable help-file, containing a listing of all the chemical reactions, along with their index in the 'rct', 'rcphot' and 'rcemis' arrays as appropriate. Equations which were specified with simple constant values (e.g. 1.0e-5) are also reported here with the 'k' indicator and rate. 475 7.6 CM_ChemRates_mod.f90 -setting the reaction rates CM_ChemRates_mod.f90 is the module where all chemical rate-coefficients and photolysis rates are calculated (this is done every advection step in the EMEP CTM for example). The module is entirely written by GenChem, and produces two subrou-

CM_EmisFile.inc -listing emission files
The last file simply lists the names used for input emission files. By tradition the EMEP system has used lower case for these emission markers. The names used are triggered by the 'emisfiles:' line of GenIn_Reactions.txt as discussed in Sect. 6.3. Other typical emissions that might be used, depending on the application and available inventories are pm25 (fine particulate matter), 490 or ec, oc, or pom (elemental and organic carbon, or primary organic matter).

Conclusions
This paper outlines the structure and usage of the GenChem system, which includes a chemical pre-processor (GenChem.py) for converting chemical equations into differential form for use in atmospheric chemical transport models (CTMs). Although primarily intended for users of the EMEP CTM and related systems, GenChem also features a simple box-model testing 495 system (boxChem), which can run as a stand-alone chemical solver, enabling for example easy testing of chemical mechanisms against each other. GenChem has been developed and tested in a Linux environment, but can be run in virtual environments on Windows or other architectures.
The mechanisms included now reflect those used or made available for the EMEP CTM, as well as the MCM scheme which works in the boxChem mode. The EmChem19a-vbs scheme is the default mechanism used in the EMEP CTM, but we include 500 slightly adapted versions of CB6 which is used in the widely used CAMx model (http://www.camx.com) or CMAQ (Luecken et al., 2019), and CRIv2-R5 scheme which is used in STOCHEM (Archibald et al., 2010;Khan et al., 2015). It is hoped that some of the other widely-used mechanisms can be added in future, for example the MOZART scheme (Emmons et al., 2010;Surendran et al., 2015), the RACM scheme (Stockwell et al., 1997;Goliff et al., 2013), or SAPRC-07 (Carter, 2010 which is also used in CMAQ (https://www.airqualitymodeling.org/index.php/CMAQv5.1_Mechanisms).

505
As provided here, GenChem is already a useful tool to explore different chemical mechanisms, both for gas-phase and simple (EMEP-compatible) aerosol phase systems. For example, Fig. 3 showed one comparison between the EMEP CTM's EmChem19a scheme and the far more advanced CRIv2R5Em and MCMv3.3Em schemes, and Bergström et al. (2020a) provide many more. Such comparisons will greatly aid the development of new EMEP mechanisms, or indeed for comparison of any mechanisms of interest to users.

510
In future new and/or updated chemical mechanisms will be added as well as utility scripts to simplify result analysis, and to convert between GenChem and other formats, such as those used in KPP (Damian et al., 2002), the MCM website, FACSIMILE (Curtiss and Sweetenham, 1987) or more recently PyBox (Topping et al., 2018). HI, JJ worked with and improved many scripts from the GenChem system, including conversion of CRI and MCM codes to GenChem 520 format. MP added the Docker functionality and helped test the code on Windows. AMV added the Pollen module, and also contributed to some code developments. All authors contributed to the paper.