Version 3 (modified by westbrink, 6 years ago) (diff) |
---|
Chemistry model (CHEM)
Main page of the chemistry model under construction. Click here for first information about capabilities and model steering.
Chemistry model parameters
TracNav
Core Parameters
Module Parameters
- Agent system
- Aerosol (Salsa)
- Biometeorology
- Bulk cloud physics
- Chemistry
- FASTv8
- Indoor climate
- Land surface
- Nesting
- Nesting (offline)
- Ocean
- Particles
- Plant canopy
- Radiation
- Spectra
- Surface output
- Synthetic turbulence
- Turbulent inflow
- Urban surface
- User-defined
- Virtual flights
- Virtual measurements
- Wind turbine
- Alphabetical list (outdated!)
Overview
Since Version 5.0 a chemistry model is available in PALM which computes chemical conversion and tranport of reactive trace gases. In addition, this module permits also the simulation of passive compounds in the gas phase and particulate matter.
All parts of code that are related to chemistry start with chem_. The main routines and the driver of the chemistry module is included in chemistry_model_mod.f90, subroutines are in chem_gasphase_mod.f90, chem_photolysis_mod.f90, and chem_emissions.f90.
The module chem_gasphase_mod.f90, where the gas phase chemistry rate equations are solved within PALM-4U depends on the chosen chemical mechanism. chem_gasphase_mod.f90 is generated by a preprocessor that is based on the Kinetic Pre-Processor KPP (Damian et al. (2002), Sandu et al. (2006)), Release 2.2.3 from November 2012 (http://people.cs.vt.edu/asandu/Software/Kpp/, kpp-2.2.3.tar.gz) and an adapted version of the KPP postprocessor KP4 (Jöckel et al (2010)). This adapted Version of KP4 which converts the KPP-generated code to a PALM-4U module is named kpp4palm.
The chemical preprocessor is located in the subdirectory UTIL/chemistry/gasphase_preproc.
Currently PALM-4U includes the following sample of chemistry mechanisms:
- cbm4: Carbon Bond Mechanism (Gery et al. (1989), 32 compounds, 81 reactions)
- smog: Photochemical smog mechanism (13 compounds, 12 reactions)
- simple: Simplified version of SMOG (9 compounds, 7 reactions)
- simplep: 'simple' plus one tracer named PM10 (10 compounds, 7 real reactions plus one dummy 'reaction')
- phstat: Photo-stationary state (3 compounds, 2 reactions)
- phstatp: Photo-stationary state plus one passive tracer named PM10 (4 compounds, 2 real reactions plus one dummy 'reaction')
Additional 'mechanisms' are available that describe the transport of one or two passive tracers, i.e. no chemical reactions are necessary:
- passive1: Passive tracers (1 compound, 0 reactions)
- passive: Passive tracers (2 compounds, 0 reactions)
This list will be extended further in the future.
The standard mechanism which is in the SOURCE directory is 'phstatp'.
In order to select and apply a certain mechanism from this sample, please copy the respective ready-to-use chem_gasephase_mod.f90 from UTIL/chemistry/gasphase_preproc/mechanisms/def_MECH (where MECH stands for any of the available mechanisms) into the USER_CODE directory of the respective simulation Setup, i.e. .../JOBS/<run_identifier>/USER_CODE/chem_gasphase_mod.f90.
Alternatively, the chemistry preprocessor can be executed also for the available machanism in order to create chem_gasphase_mod.f90 (although for the available mechanisms this is not necessary because the chem_gasphase_mod.f90 files are already existing) instead of copying chem_gasphase_mod.f90: Enter the directory UTIL/chemistry/gasphase_preproc and apply the run script, i.e. run_kpp4palm.ksh -m MECH, where MECH stands for any of the mechanisms listed above. The resulting chem_gasphase_mod.f90 will be copied by the script directly into the SOURCE directory.
In order to find out which reactions and compounds are included in the different mechanisms, please have a look into the files MECH.eqn and MECH.spc in UTIL/chemistry/gasphase_preproc/mechanisms/def_MECH.
How to implement a new chemical mechanism or add further passive tracers see the Readme-File?. If more than two passive tracers or different names of the passive tracers are desired, a new 'mechanism' must be created as described in the Readme file. The Readme file is also available in the PALM-4U subdirectory UTIL/chemistry/gasphase_preproc.
Currently, areosol compounds can be considered either as passive compounds or the sectional aerosol module SALSA? (Kokkola et al. (2008)) can be used to simulate the aerosol particle concentrations, and size distributions.
Deposition processes are also taken into account in the chemistry model. The deposition of particles is derived following Zhang et al. (2001) while gases are deposited using the DEPAC model following van Zanten et al. (2010).
A main factor influencing atmospheric chemistry are the emissions of reactive compounds. In PALM-4U emissions can be applied in three different ways:
- PARAMETERIZED: Traffic emissions are parameterized depending on the the values of street_type in the static file. Emission values for each street type and chemical compound must be supplied in the namelist as described below. No other emissions are considered. street_type can be obtained from OpenStreetMap.
- DEFAULT: Gridded yearly emissions must be supplied by the user as specified in the PIDS document (see sample emissions file). Typical temporal variations are apllied by PALM4U.
- PRE-PROCESSED: Preprocessed hourly (other temporal intervals will be possible in later versions) 3-d emission fields must be supplied by the user.
Importantly, for the DEFAULT and the PRE-PROCESSED mode of the emissions, the exact date of the start of the simulation must be indicated through the namelist parameter date_init of the date_and_time_mod module.
IMPORTANT: In the PRE-PROCESSED mode the initial date of the simulation has to coincide with the first day for which emission values are available.
Find a more detailed description of the PALM-4U emission input in the corresponding attached document here?.
The chemistry model is automatically activated when a chemistry_parameters namelist is included in the parameter file (<run_identifier>_p3d).
Parameter list
NAMELIST group name: chemistry_parameters
Parameter Name | FORTRAN? Type? | Default Value | Explanation |
---|---|---|---|
bc_cs_b | C*20 | 'dirichlet' | Bottom boundary condition of the chemical species (cs) concentration. Allowed values are 'dirichlet' (cs(k=0) = const. = cs_surface + cs_surface_initial_change; When a constant surface concentration flux is used (surface_csflux) or emissions are applied (do_emis = .T.), bc_cs_b = 'neumann' must be used. |
bc_cs_t | C*20 | 'initial_gradient' | Top boundary condition of the scalar concentration. Allowed are the values 'dirichlet' (cs(k=nz+1) does not change during the run), 'neumann' (cs(k=nz+1) = cs(k=nz)), and 'initial_gradient' . With the 'initial_gradient' boundary condition the value of the scalar concentration gradient at the top is calculated from the initial scalar concentration profile (see cs_surface, cs_vertical_gradient) by: bc_cs_t_val = (cs_init(k=nz) - ss_init(k=nz-1)) / dzu(nz). Using this value (assumed constant during the run) the concentration boundary values are calculated as cs(k=nz+1) = cs(k=nz) + bc_cs_t_val * dzu(nz+1) (up to k=nz the prognostic equation for the chemical species concentration is solved). When a constant cs flux is used at the top boundary (top_csflux), bc_cs_t = 'neumann' must be used, because otherwise the resolved scale may contribute to the top flux so that a constant value cannot be guaranteed. |
call_chem_at_all_substeps | L | .FALSE. | Switch whether chemistry is called at each substep of the Runge-Kutta scheme or just at each full dynamical time step 'dt'. The latter will do since the chemistry solvers are using their own timestep steering. |
chem_debug0 | L | .FALSE. | Extra print output of chemistry variables. |
chem_gasphase_on | L | .TRUE. | Switch for switching off the chemical reactions but still doing the transport for all chemical compounds. Useful for test purposes. |
chem_mechanism | C*30 | 'phstatp' | Parameter for check of chemistry mechanism: The Setting in the namelist must match with the mechanism in the code, i.e. in chem_gasphase_mod.f90. chem_mechanism = 'phstatp' matches with the chemistry mechanism in chem_gasphase_mod.f90 that comes with PALM-4U when it is downloaded. |
cs_heights | R(99,100) | 9999999.9 |
Height levels above ground (in m) to go with cs_profile in order to define initial profiles of chemical species.
The first index refers to the chemical compound, the second to height level.
Example: |
cs_name | C*11(99) | 'novalue' |
Names of chemical species where surface concentrations or concentration profiles (cs_profile) are prescribed.
Example: |
cs_profile | R(99,100) | 9999999.9 |
Concentration values of chemical species (gases in ppm, particulate matter in kg m-3) at cs_heights. |
cs_surface | R | 0.0 | Concentration value for chemical species at the surface (gases in ppm, particulate matter in kg m-3). |
daytype_mdh | C*80 | Type of weekday required for the MDH (MonthDayHour) case of the DEFAULT mode of the emissions module. Possible values are: workday, weekend, holiday | |
decycle_chem_lr | L | .FALSE. | Cyclic boundary conditions for chemistry may result in accumluation of chemical compounds. If decycle_chem_lr is set to true, initial concentration values are fixed at the left or right inflow boundary. |
decycle_chem_ns | L | .FALSE. | Cyclic boundary conditions for chemistry may result in accumluation of chemical compounds. If decycle_chem_ns is set to true, initial concentration values are fixed at the southern or northern inflow boundary. |
decycle_method | C*20(4) | 'dirichlet' |
Decycling method at horizontal boundaries (1=left, 2=right, 3=south, 4=north)
|
do_depo | L | .FALSE. | Switches the deposition calculation for particles and gases ON (.TRUE.) or OFF (.FALSE.) |
do_emis | L | .FALSE. | Switches the chem_emission module ON (.TRUE.) or OFF (.FALSE.) |
emiss_factor_main | R(99) | -9999.0 | Constant emission scaling factor for MAIN street types, used in the PARAMETERIZED mode of chem_emission module. The number and the order of the values has to correspond to the names of the emission species provided for surface_csflux_name. |
emiss_factor_side | R(99) | -9999.0 | Constant emission scaling factor for SIDE (secondary) street types, used in the PARAMETERIZED mode of chem_emission module. The number and the order of the values has to correspond to the names of the emission species provided for surface_csflux_name. |
icntrl | I(20) | 0 | Selection and steering of the chemistry solver. In order to offer more control over the integrator, the KPP-generated Integrator subroutine (e.g. SUBROUTINE rosenbrock in chem_gasphase_mod.f90) provides the optional input parameters ICNTRL_U and RCNTRL_U. Each of them is an array of 20 elements that allow the fine-tuning of the integrator, e.g. by setting a particular Integrator method, tolerances, minimum and maximum step sizes, etc.
Note: For input parameters equal to zero the default values of the corresponding variables are used.
Example:
|
main_street_id | I(99) | 0 | Index for identifying MAIN streets following street type classes from OpenStreetMap. |
max_street_id | I(99) | 0 | Maximum index value for identifying ALL (MAIN and SIDE) streets following street type classes from OpenStreetMap. |
mode_emis | C*80 | 'PARAMETERIZED' |
Mode of chemistry emissions.
At the moment the values have to be in capital letters. |
my_steps | I(50) | 0 |
List of fixed timesteps: my_step(1) = 0.0 automatic stepping |
nest_chemistry | L | .TRUE. | Flag for nesting mode of chemical species, independent on parent or not. |
photolysis_scheme | C*10 | 'simple' | Currently two somple photolysis Options are available: 'constant' and 'simple'
|
rcntrl | R(20) | 0.0 and see below | Steering of the chemistry solver.
See http://people.cs.vt.edu/asandu/Software/Kpp/
Example:
|
side_street_id | I(99) | 0 | Index for identifying SIDE streets following street type classes from 'OpenStreetMap?'. |
surface_csflux | R(99) | 0.0 | Values of surface fluxes of chemistry emissions to be used in the PARAMETERIZED mode. The number and the order of the values has to correspond to the names of the emission species provided to surface_csflux_name. Units of the input values differ between gases and PMs. In the first case, emissions must be provided in micromole/m2*s, while for PMs, input emission values have to be in kg/m2*s. |
surface_csflux_name | C*11(99) | 'novalue' |
Names of chemical species which are emitted. Required only for mode_emis = 'PARAMETERIZED'. |
time_fac_type | C*80 | MDH | Type of time treatment for DEFAULT mode of the chem_emission module. Possible values are: HOUR or MDH |
Attachments (8)
- Readme_KPP4PALM.pdf (131.1 KB) - added by westbrink 6 years ago.
- chem_emissions_PALM4U.pdf (112.9 KB) - added by westbrink 6 years ago.
- Button_Emissions.png (58.9 KB) - added by westbrink 6 years ago.
- Button_InputPara.png (58.7 KB) - added by westbrink 6 years ago.
- Button_Overview.png (49.6 KB) - added by westbrink 6 years ago.
- Button_References.png (49.4 KB) - added by westbrink 6 years ago.
- Button_ExampleSetup.png (56.0 KB) - added by westbrink 6 years ago.
- Button_Chemistrymech.png (50.0 KB) - added by westbrink 6 years ago.
Download all attachments as: .zip