From ef0064c8dd14a0c02cf4321bbc5edcd91bb27df1 Mon Sep 17 00:00:00 2001 From: Havala Pye Date: Thu, 30 May 2024 18:02:30 -0400 Subject: [PATCH 001/375] Update CMAQ_UG_tutorial_CRACMM.md Holding for link to CRACMM2 vs 1 emission mapping guidance. --- .../Tutorials/CMAQ_UG_tutorial_CRACMM.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_CRACMM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_CRACMM.md index 033add728..0a71de913 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_CRACMM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_CRACMM.md @@ -1,8 +1,9 @@ # Getting started with CRACMM -Author: Havala Pye (pye.havala@epa.gov) +Author: Havala Pye (pye.havala@epa.gov) | v5.4 +Update: Havala Pye (pye.havala@epa.gov) | 5.5 -CRACMM is new mechanism in CMAQv5.4 and comes in two versions: CRACMM1 and CRACMM1AMORE. For an introduction to CRACMM, see the [Release Notes](https://github.com/USEPA/CMAQ/tree/main/DOCS/Release_Notes). CRACMM has a separate supporting repository at https://www.github.com/USEPA/CRACMM which contains additional information to facilitate use of CRACMM in CMAQ. This tutorial provides an overview of how to get starting running CRACMM in CMAQ. +CRACMM was first introduced in CMAQv5.4 as two versions: CRACMM1 and CRACMM1AMORE. Those versions are retained in v5.5 and an updated version, CRACMM2, is released for the first time. CRACMM2 merges the CRACMM and CRACMM-AMORE lines of development into one path going forward. Thus, CRACMM2 is an update to both CRACMM1 and CRACMM1AMORE. CRACMM has a separate supporting repository at https://www.github.com/USEPA/CRACMM which contains additional information to facilitate use of CRACMM in CMAQ. This tutorial provides an overview of how to get starting running CRACMM in CMAQ. ## How is running CRACMM different than running other chemical mechanisms in CMAQ? @@ -10,9 +11,9 @@ Running CRACMM is just like running other mechanisms in CMAQ. No matter what mec ## How do I select CRACMM? -Once you have obtained CMAQv5.4 and set up your project directory, CRACMM1 or CRACMM1AMORE can be selected in the CCTM build script (CCTM/scripts/bldit_cctm.csh) by indicating "CRACMM1_aq" or "CRACMM1AMORE_aq" as the Mechanism. The "_aq" remains a part of the selection for legacy reasons. The selection of the corresponding aerosol module, cloud module, and default gas-phase chemical solver will occur automatically in the build script based on the mechanism name. +Once you have obtained CMAQv5.5 and set up your project directory, CRACMM2 can be selected in the CCTM build script (CCTM/scripts/bldit_cctm.csh) by indicating "CRACMM2" as the Mechanism. The "_aq" extension is no longer part of the mechanism name starting with CRACMM2. The selection of the corresponding aerosol module, cloud module, and default gas-phase chemical solver will occur automatically in the build script based on the mechanism name. -Currently, CRACMM cannot be built with the gfortran compiler version 9.1 and later since CMAQ-CRACMM has trailing comments in the gas, aerosol, and non-reactive species namelists. If you want to pursue that compiler, delete the comments (starting with "!" ) in the GC, AE, and NR namelists. +Currently, CRACMM cannot be built with the gfortran compiler version 9.1 and later since CMAQ-CRACMM has trailing comments in the gas, aerosol, and non-reactive species namelists. If you want to pursue that compiler now, delete the comments (starting with "!" ) in the GC, AE, and NR namelists. Look for an upcoming bug fix on the v5.5+ branch that will address this issue. ## What deposition and biogenic emission modules work with CRACMM? @@ -21,6 +22,7 @@ CRACMM is compatible and has been tested with both STAGE and M3DRY deposition mo ## How do I prepare emission inputs for CRACMM? CRACMM1 and CRACMM1AMORE use the same emissions since the two versions differ only in the representation of isoprene chemistry. +CRACMM2 emissions are slightly different than CRACMM1 as ethylbenzene and styrene are now explicit. CRACMM2 emissions may be used in CRACMM1/CRACMM1AMORE (and vice versa) using approximations (see the work of Skipper et al.). CRACMM includes a set of rules for how individual organic species map to the mechanism species. These rules are distributed in python code and a PDF flowchart in the supporting repository. In addition, the repository contains the mapping of individual organic species from the SPECIATE database, BEIS, and MEGAN to CRACMM species. @@ -39,15 +41,13 @@ https://doi.org/10.1016/j.atmosenv.2017.04.009) for the impact of initial condit Current EPA operational workflows with SPECIATE, Speciation Tool, and SMOKE assume POA is nonvolatile. A few volatility resolved profiles are in SPECIATE starting with v5.1, and work is underway to build volatility information for all relevant sources into future versions of SPECIATE. However, semivolatile profiles have never been propagated through SMOKE to CMAQ in EPA workflows. -Current EPA workflows implement semivolatile POA parameterizations in CMAQ-CRACMM at runtime. -The SMOKE input files available in the CRACMM supporting repository will generate CMAQ-CRACMM inputs with two POA species, both nonvolatile. -The gspro files in the supporting repository will label the total organic carbon in POA as 'PMOCN2' and non-carbon organic matter in POA as 'PMNCOMN2'. -The mapping of species on CMAQ-ready files to mechanisms in CMAQ is handled with mechanism specific namelists and the [DESID utility]( -https://doi.org/10.5194/gmd-14-3407-2021). The current DESID files for CRACMM in v5.4 add together PMOCN2 and PMNOCMN2 on the emission files to create a -total POA equivalent that is then distributed to different volatility species in the model based on the expected volatility of POA emissions. -By default, a conservative profile with limited evaporation should be applied but other example profiles for diesel vehicles and wood burning are provided. For emissions to be properly ingested by CMAQ, three files need to be customized and synchronized for your simulation: +[S2S-Tool](https://github.com/USEPA/S2S-Tool) EPA workflows in place for CRACMM implement semivolatile POA parameterizations in the emission files. +Prior to S2S-Tool, workflows in place for CRACMM in v5.4 implemented semivoltile POA in the DESID control files by adding together PMOCN2 and PMNOCMN2 on the emission files to create a +total POA equivalent that is then distributed to different volatility species in the model based on the expected volatility of POA emissions. Your specific configuration will depend on when and how your emissions were prepared. + +For emissions to be properly ingested by CMAQ, three files need to be customized and synchronized for your simulation: * The run script. This is where the model is told what files to read in and each file (stream) is given a string label. -* The DESID mechanism-specific namelist. This is where PMOCN2 and PMNCOMN2 can be mapped to species of different volatility. +* The DESID mechanism-specific namelist. This is where species on the emission files are mapped to model species. For older workflows, PMOCN2 and PMNCOMN2 can be mapped to species of different volatility. * The DESID mechanism-independent control file. This is where emission files can be grouped so that multiple sources can be treated the same (e.g., wildland fires, prescribed burning, and residential wood burning can have the same volatility profile). **The main CMAQ log file and the log file for at least one processor should be checked for any initial run.** Warnings about potential emission problems will be displayed in those logs. More guidance on using DESID is available in a [CMAQ tutorial](https://github.com/USEPA/CMAQ/tree/main/DOCS/Users_Guide/Tutorials). @@ -62,7 +62,7 @@ Future releases of CRACMM, CMAQ, and emission tools should be checked for cross [SPECIATE Database](https://www.epa.gov/air-emissions-modeling/speciate): A database of PM2.5 and VOC emissions composition by individual species. -[Speciation Tool](https://github.com/CMASCenter/Speciation-Tool): A tool to convert profiles with individual species (e.g., from SPECIATE) to profiles of mechanism species. +[S2S-Tool](https://github.com/USEPA/S2S-Tool): A tool to convert SPECIATE profiles with individual species to profiles of mechanism species for use in SMOKE. Replaces Speciation Tool. [SMOKE](https://github.com/CEMPD/SMOKE/): A tool that combines emission magnitudes with speciation profiles as well as temporal and spatial proxies to create CMAQ-ready emission files. From 965ff710bbc09bcb5a17f95fae42011461f112e1 Mon Sep 17 00:00:00 2001 From: Havala Pye Date: Thu, 30 May 2024 18:09:35 -0400 Subject: [PATCH 002/375] Update CMAQ_UG_tutorial_CRACMM.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_CRACMM.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_CRACMM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_CRACMM.md index 0a71de913..e3f512158 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_CRACMM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_CRACMM.md @@ -1,7 +1,8 @@ # Getting started with CRACMM Author: Havala Pye (pye.havala@epa.gov) | v5.4 -Update: Havala Pye (pye.havala@epa.gov) | 5.5 + +Update: Havala Pye (pye.havala@epa.gov) | v5.5 CRACMM was first introduced in CMAQv5.4 as two versions: CRACMM1 and CRACMM1AMORE. Those versions are retained in v5.5 and an updated version, CRACMM2, is released for the first time. CRACMM2 merges the CRACMM and CRACMM-AMORE lines of development into one path going forward. Thus, CRACMM2 is an update to both CRACMM1 and CRACMM1AMORE. CRACMM has a separate supporting repository at https://www.github.com/USEPA/CRACMM which contains additional information to facilitate use of CRACMM in CMAQ. This tutorial provides an overview of how to get starting running CRACMM in CMAQ. @@ -27,10 +28,6 @@ CRACMM includes a set of rules for how individual organic species map to the mec These rules are distributed in python code and a PDF flowchart in the supporting repository. In addition, the repository contains the mapping of individual organic species from the SPECIATE database, BEIS, and MEGAN to CRACMM species. CMAQ-ready emissions are generally prepared using the SMOKE model. -The CRACMM supporting repository contains inputs based on SPECIATE using EPA workflows for -Speciation Tool and SMOKE. - -We welcome feedback on the representativeness of mechanism species for emissions and the ease of mapping to the mechanism. ## How do I obtain initial and boundary conditions? @@ -39,9 +36,9 @@ https://doi.org/10.1016/j.atmosenv.2017.04.009) for the impact of initial condit ## What does CRACMM assume about the volatility of primary organic aerosol and how to I prepare those emissions? -Current EPA operational workflows with SPECIATE, Speciation Tool, and SMOKE assume POA is nonvolatile. A few volatility resolved profiles are in SPECIATE starting with v5.1, and work is underway to build volatility information for all relevant sources into future versions of SPECIATE. However, semivolatile profiles have never been propagated through SMOKE to CMAQ in EPA workflows. +The majority of speciation profiles in SPECIATE assume POA is nonvolatile. A few volatility resolved profiles are in SPECIATE starting with v5.1, and work is underway to build volatility information for all relevant sources into future versions of SPECIATE. -[S2S-Tool](https://github.com/USEPA/S2S-Tool) EPA workflows in place for CRACMM implement semivolatile POA parameterizations in the emission files. +[S2S-Tool](https://github.com/USEPA/S2S-Tool) workflows in place for CRACMM supplement the POA information in SPECIATE by implementing semivolatile POA profiles in the emission files. Prior to S2S-Tool, workflows in place for CRACMM in v5.4 implemented semivoltile POA in the DESID control files by adding together PMOCN2 and PMNOCMN2 on the emission files to create a total POA equivalent that is then distributed to different volatility species in the model based on the expected volatility of POA emissions. Your specific configuration will depend on when and how your emissions were prepared. From cfbf2d137b7145d71169155b859337400f7835d7 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 5 Jun 2024 13:09:47 -0400 Subject: [PATCH 003/375] Update version number --- README.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index bf3bea798..1607b4b36 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -CMAQv5.4 +CMAQv5.5 ========== US EPA Community Multiscale Air Quality Model (CMAQ) Website: https://www.epa.gov/cmaq @@ -13,12 +13,16 @@ computing techniques in an open-source framework to deliver fast, technically so particulates, toxics, and acid deposition. -## CMAQ version 5.4 Overview: +## CMAQ version 5.5 Overview: -* [Frequently asked questions for upgrading to the latest CMAQ version](https://github.com/USEPA/CMAQ/wiki/CMAQv5.4-Series-FAQ)) **- Updated for v5.4 release.** -* [CMAQv5.4 Release Notes](https://github.com/USEPA/CMAQ/wiki/CMAQ-Release-Notes) - Release Notes are available on the CMAQ GitHub wiki. +* [Frequently asked questions for upgrading to the latest CMAQ version](https://github.com/USEPA/CMAQ/wiki/CMAQv5.5-Series-FAQ)) **- Updated for v5.5 release.** +* [CMAQv5.5 Release Notes](https://github.com/USEPA/CMAQ/wiki/CMAQ-Release-Notes) - Release Notes are available on the CMAQ GitHub wiki. * [Tutorials for setting up and running CMAQ](DOCS/Users_Guide/Tutorials/README.md) **- Tutorials on running CMAQ, CMAQ-ISAM, CMAQ-DDM, and WRF-CMAQ test cases.** +## New features in CMAQ version 5.5 include: + +* + ## New features in CMAQ version 5.4 include: * Updated chemistry for ozone (O3) and particulate matter (PM) formation from global-to-local scales @@ -57,14 +61,14 @@ Source code and scripts are organized as follows: Code documentation is included within this repository (they are version-controlled along with the code itself). * [FAQ for upgrading to the latest CMAQ version](https://github.com/USEPA/CMAQ/wiki/CMAQv5.4-Series-FAQ) -* [CMAQv5.4 Release Notes](https://github.com/USEPA/CMAQ/wiki/CMAQ-Release-Notes) +* [CMAQv5.5 Release Notes](https://github.com/USEPA/CMAQ/wiki/CMAQ-Release-Notes) * [Tutorials](DOCS/Users_Guide/Tutorials/README.md) * [CMAQ User's Guide](DOCS/Users_Guide/README.md) * [Developers' Guide](DOCS/Developers_Guide/CMAQ_Dev_Guide.md) ## CMAQ Test Cases -Benchmark/tutorial data for the CMAQv5.4 release are available from the CMAS Data Warehouse. The input and output files are stored on Google Drive and on Amazon Web Services (AWS) Open Data Registry. CMAQv5.4 comes with new input and output benchmark data for July 1-2, 2018 over the Northeast US (links provided below). Tutorials are provided for using the benchmark data to test running of the base [CMAQ model](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md), [WRF-CMAQ](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md), [CMAQ-ISAM](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md), and [CMAQ-DDM-3D](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM.md). The input datasets include a grid mask file for the United States (GRIDMASK_STATES_12SE1.nc). The grid mask file is used for running the new ISAM and DDM-3D test cases, or to test out regional emissions scaling with [DESID](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md). The input datasets also include an ocean file with new variables needed to use the cb6r5_ae7 and cb6r5m_ae7 mechanisms. See the [Ocean File tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_oceanfile.md) for more information on changes to the required ocean file input in v5.4. +Benchmark/tutorial data for the CMAQv5.5 release are available from the CMAS Data Warehouse. The input and output files are stored on Google Drive and on Amazon Web Services (AWS) Open Data Registry. CMAQv5.5 comes with new input and output benchmark data for July 1-2, 2018 over the Northeast US (links provided below). Tutorials are provided for using the benchmark data to test running of the base [CMAQ model](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md), [WRF-CMAQ](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md), [CMAQ-ISAM](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md), and [CMAQ-DDM-3D](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM.md). The input datasets include a grid mask file for the United States (GRIDMASK_STATES_12SE1.nc). The grid mask file is used for running the new ISAM and DDM-3D test cases, or to test out regional emissions scaling with [DESID](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md). The input datasets also include an ocean file with new variables needed to use the cb6r5_ae7 and cb6r5m_ae7 mechanisms. See the [Ocean File tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_oceanfile.md) for more information on changes to the required ocean file input in v5.4. In addition, a full set of inputs for 2018 are provided for the 12US1 domain (299 column x 459 row x 35 layer, 12-km horizontal grid spacing) on AWS, including emissions compatible with both the CB6r5 and CRACMM chemical mechanisms. Note that the 12US1 inputs are netCDF-4/HDF5 compressed files to substantially reduce file sizes. Through testing at the EPA, we’ve noticed that certain domains encounter model crashes from reading in large amounts of compressed netCDF data. A work around for those cases is uncompressing the data manually via [nccopy 1](https://www.unidata.ucar.edu/software/netcdf/workshops/2011/utilities/Nccopy.html) or [m3cple](https://www.cmascenter.org/ioapi/documentation/all_versions/html/M3CPLE.html) (compiled with HDF5) before running the CMAQ simulation. From 526a9c4e246599bded56f2170bc40f70174033c0 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 5 Jun 2024 13:57:09 -0400 Subject: [PATCH 004/375] update version number --- CCTM/scripts/bldit_cctm.csh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/CCTM/scripts/bldit_cctm.csh b/CCTM/scripts/bldit_cctm.csh index 35996c74a..fabaea4a3 100755 --- a/CCTM/scripts/bldit_cctm.csh +++ b/CCTM/scripts/bldit_cctm.csh @@ -1,6 +1,6 @@ #!/bin/csh -f -# ======================= CCTMv5.4.X Build Script ========================= +# ======================= CCTMv5.5.X Build Script ========================= # Usage: bldit.cctm >&! bldit.cctm.log # Requirements: I/O API & netCDF libraries, a Fortran compiler, # and MPI for multiprocessor computing @@ -86,11 +86,11 @@ set make_options = "-j" #> additional options for make command if #> Working directory and Version IDs if ( $?ISAM_CCTM ) then - set VRSN = v54_ISAM #> model configuration ID for CMAQ_ISAM + set VRSN = v55_ISAM #> model configuration ID for CMAQ_ISAM else if ( $?DDM3D_CCTM ) then - set VRSN = v54_DDM3D #> model configuration ID for CMAQ_DDM + set VRSN = v55_DDM3D #> model configuration ID for CMAQ_DDM else - set VRSN = v54 #> model configuration ID for CMAQ + set VRSN = v55 #> model configuration ID for CMAQ endif set EXEC = CCTM_${VRSN}.exe #> executable name @@ -784,7 +784,7 @@ set Cfile = ${Bld}/${CFG}.bld # Config Filename cd $CMAQ_HOME/CCTM/scripts - # Downlad WRF repository from GitHub and put CMAQv5.4 into it + # Downlad WRF repository from GitHub and put CMAQv5.5 into it set WRF_BLD = BLD_WRF${WRF_VRSN}_CCTM_${VRSN}_${compilerString} setenv wrf_path ${CMAQ_HOME}/CCTM/scripts/${WRF_BLD} setenv WRF_CMAQ 1 From a024428d2723e3d82a5d31fdf06df9bdc400dc42 Mon Sep 17 00:00:00 2001 From: Havala Pye Date: Thu, 6 Jun 2024 16:15:44 -0400 Subject: [PATCH 005/375] Update CMAQ_UG_tutorial_CRACMM.md added link to CRACMM repo with aromatic emission mapping approximations --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_CRACMM.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_CRACMM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_CRACMM.md index e3f512158..5848d63ee 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_CRACMM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_CRACMM.md @@ -23,9 +23,9 @@ CRACMM is compatible and has been tested with both STAGE and M3DRY deposition mo ## How do I prepare emission inputs for CRACMM? CRACMM1 and CRACMM1AMORE use the same emissions since the two versions differ only in the representation of isoprene chemistry. -CRACMM2 emissions are slightly different than CRACMM1 as ethylbenzene and styrene are now explicit. CRACMM2 emissions may be used in CRACMM1/CRACMM1AMORE (and vice versa) using approximations (see the work of Skipper et al.). +CRACMM2 emissions are slightly different than CRACMM1 as ethylbenzene and styrene are now explicit. CRACMM2 emissions may be used in CRACMM1/CRACMM1AMORE (and vice versa) using approximations (see the work of Skipper et al. and https://github.com/USEPA/CRACMM/tree/main/emissions). CRACMM includes a set of rules for how individual organic species map to the mechanism species. -These rules are distributed in python code and a PDF flowchart in the supporting repository. +These rules are distributed in python code in the supporting repository. In addition, the repository contains the mapping of individual organic species from the SPECIATE database, BEIS, and MEGAN to CRACMM species. CMAQ-ready emissions are generally prepared using the SMOKE model. From d5e2a682df7d7473f406a867c3fcb90b4109dd5c Mon Sep 17 00:00:00 2001 From: chogrefe Date: Mon, 10 Jun 2024 11:55:16 -0400 Subject: [PATCH 006/375] typo fix (UG Section 6.9) Fixed typo (missing space) in the third paragraph of Section 6.9 --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 1885ff911..b54517467 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -300,7 +300,7 @@ CMAQ introduces emissions of trace gases and aerosols from a variety of importan Because CMAQ represents both primary and secondary pollutants, emissions are processed for a subset of the species CMAQ treats. The emissions chemical speciation must be compatible with the chemical mechanism chosen for CMAQ (e.g. cb6r5_ae7_aq) because different mechanisms represent large compounds like functionalized hydrocarbons with different surrogates. The emissions mapping is carried out via the Detailed Emission Scaling, Isolation, and Diagnostic (DESID) Module. [Figure 6-2](#Figure6-2) illustrates the combination of data flowing from multiple types of emission streams into the CMAQ model system through the DESID interface. Mapping rules are prescribed in the DESID Chemical Mapping Control File, and default versions of this namelist file are provided for every chemical mechanism. -If the user does not provide a Chemical Mapping Control File or the path to the file in the RunScript is incorrect, then zero emissions will be assumed for every stream. However, the configuration of various other scientific options in the RunScript (e.g. correcting for biderectional emission of fertilizer emissions)may conspire to create non-physical values for the emission rates. If the user would like all emissions set to 0, it is recommended that they use the syntax outlined in Appendix B and the DESID tutorial to do so. +If the user does not provide a Chemical Mapping Control File or the path to the file in the RunScript is incorrect, then zero emissions will be assumed for every stream. However, the configuration of various other scientific options in the RunScript (e.g. correcting for biderectional emission of fertilizer emissions) may conspire to create non-physical values for the emission rates. If the user would like all emissions set to 0, it is recommended that they use the syntax outlined in Appendix B and the DESID tutorial to do so. ![Figure 6-2](images/Figure6-1.png) From 83881db02a6fe19d8a60fdcbd55506f190bf4701 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 10 Jun 2024 12:13:47 -0400 Subject: [PATCH 007/375] Update CMAQ_UG_ch06_model_configuration_options.md --- .../Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index b54517467..690c1980e 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -28,7 +28,7 @@ * [6.9 Emissions](#6.9_Emissions) * [6.9.1 Emission Streams](#6.9.1_Emission_Streams) * [6.9.2 Online Emission Streams](#6.9.2_Online_Emission) - * [6.9.3 Emission Compatability](#6.9.3_Emission_Compatability) + * [6.9.3 Emission Compatibility](#6.9.3_Emission_Compatibility) * [6.10 Gas Phase Chemistry](#6.10_Gas_Phase_Chem) * [6.10.1 Gas Phase Chemical Mechanisms](#6.10.1_Gas_Phase_Mech) * [6.10.2 Solvers](#6.10.2_Solver) @@ -686,9 +686,9 @@ setenv USE_NLDN N setenv LTNGPARMS_FILE /home/user/path-to-file/LTNG_AllParms_12US1.nc ``` - + -### 6.9.3 Emission Compatability for CMAQv5.3+ +### 6.9.3 Emission Compatibility for CMAQv5.3+ From 7281a82176f5f3009f3fe982732ea0855d1e89f3 Mon Sep 17 00:00:00 2001 From: chogrefe Date: Mon, 10 Jun 2024 12:24:41 -0400 Subject: [PATCH 008/375] Updated BEIS Section of UG Chapter 6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made the following updates to the "BEIS" section of "6.9.2 Online Emission Streams": Updated links to the current SMOKE documentation (v5.0 instead of 4.6) and version of normbeis (v4 instead of v3) required for CMAQ Added link to release notes wiki to document that starting with v54, the switch between summer and winter emission factors is controlled by 1m soil temperature Removed the discussion of BIOSEASON file and BIOSW_YN and SUMMER_YN flags that are no longer used since v54   --- ...MAQ_UG_ch06_model_configuration_options.md | 25 ++----------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 690c1980e..89af76819 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -432,7 +432,7 @@ To calculate online biogenic emissions, CMAQ uses the [Biogenic Emission Invento #### BEIS -BEIS calculates emissions resulting from biological activity from land-based vegetative species as well as nitric oxide emissions produced by microbial activity from certain soil types. This biogenic model is based on the same model that is included in SMOKE. User documentation for BEIS can be found in [Chapter 6.17 of the SMOKE manual](https://www.cmascenter.org/help/documentation.cfm?model=smoke&version=4.6). +BEIS calculates emissions resulting from biological activity from land-based vegetative species as well as nitric oxide emissions produced by microbial activity from certain soil types. This biogenic model is based on the same model that is included in SMOKE. User documentation for BEIS can be found in [Chapter 4.19 of the SMOKE manual](https://www.cmascenter.org/smoke/documentation/5.0/html/). Speciation of biogenic emissions for BEIS is controlled by gspro_biogenics.txt under CCTM/src/biog/beis. @@ -443,33 +443,12 @@ Running CMAQ with BEIS is controlled by the following RunScript flag: setenv CTM_BIOGEMIS_BE Y ``` -Running CMAQ with online BEIS requires a user-supplied, gridded normalized biogenic emissions input netCDF file, B3GRD. This file is created with the [normbeis3](https://www.cmascenter.org/smoke/documentation/4.6/html/ch06s12.html) program in SMOKE prior to running the inline biogenic option in CMAQ and contains winter and summer normalized emissions and Leaf Area Indices. The location of the B3GRD file is set in the RunScript: +Running CMAQ with online BEIS requires a user-supplied, gridded normalized biogenic emissions input netCDF file, B3GRD. This file is created with the [normbeis4](https://www.cmascenter.org/smoke/documentation/5.0/html/ch04s13.html) program in SMOKE prior to running the inline biogenic option in CMAQ and contains winter and summer normalized emissions and Leaf Area Indices. [Starting with CMAQ v54](https://github.com/USEPA/CMAQ/wiki/CMAQ-Release-Notes:-Emissions-Updates:-BEIS-Biogenic-Emissions#beis-updates), the selection of summer vs. winter normalized emission factors when using the BEIS inline biogenic emission option in CMAQ is based on the 1 meter soil temperature following the WRF PX LSM representation of seasonality. The location of the B3GRD file is set in the RunScript: ``` setenv B3GRD /home/user/path-to-file/b3grd.nc ``` -For short simulations that span only summer months set the SUMMER_YN flag to Y and the BIOSW_YN flat to N in the RunScript so that biogenic emissions will be calculated using summer factors throughout the entire domain. -``` -setenv BIOSW_YN N -``` - -``` -setenv SUMMER_YN Y -``` - -For simulations that span only winter months, set the SUMMER_YN flag to N so that biogenic emissions will be calculated using winter factors throughout the entire domain. - -For simulations of spring or fall, or simulations covering multiple seasons, a user must set the BIOSW_YN to Y and provide a BIOSEASON file to enable an appropriate mixture of winter and summer emission values across the domain and simulation period. The BIOSEASON file is created with the [metscan](https://www.cmascenter.org/smoke/documentation/4.0/html/ch05s03s10.html) program in SMOKE using the MCIP data for the modeling domain prior to running the inline biogenic option in CMAQ. It provides daily gridded values of an indicator variable derived from MCIP temperature fields to determine whether winter or summer biogenic emission values should be used for a given grid cell and day. To use the BIOSEASON file set the following two environment variables in the RunScript: - -``` -setenv BIOSW_YN Y -``` - -``` -setenv BIOSEASON /home/user/path-to-file/bioseason.nc -``` - Additionally, when using the inline biogenic option, the user must point to the SOILOUT file from one day’s simulation as the SOILINP file for the next day. The user must also decide whether to write over SOILOUT files from previous days or create a uniquely named SOILOUT file for each day. The latter approach is recommended if the user wishes to retain the capability to restart simulations in the middle of a sequence of simulations. Set the NEW_START variable in the RunScript to TRUE if this is the first time that biogenic NO soil emissions will be calculated. If there is a previously created file, set to FALSE. When NEW_START is set to FALSE, the directory path and file name of biogenic NO soil emissions file must be set in the RunScript: From d5d89bf982fe887228f31b70230c3ac97e16fbd3 Mon Sep 17 00:00:00 2001 From: chogrefe Date: Mon, 10 Jun 2024 12:48:42 -0400 Subject: [PATCH 009/375] Updated CMAQ_UG_tutorial_HCMAQ_IC_BC.md Reviewed this tutorial and made the following minor updates: Added craccm2 to the list of supported target mechanisms in map2mech Changed the last year for which EQUATES daily average H-CMAQ outputs are available from 2017 to 2019 Did not run this tutorial Also verified that all links to input data still work. --- .../Users_Guide/Tutorials/CMAQ_UG_tutorial_HCMAQ_IC_BC.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_HCMAQ_IC_BC.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_HCMAQ_IC_BC.md index 8162a3cf8..82cbf79be 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_HCMAQ_IC_BC.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_HCMAQ_IC_BC.md @@ -29,7 +29,7 @@ https://drive.google.com/file/d/15Vt6f5WuyN8RiLRjTlKeQUHjYbZ6QCrA/view?usp=shari **Daily average hemispheric CMAQ output** -EPA distributes a series of monthly files containing daily average 3D species concentrations from a hemispheric CMAQ simulation performed for 2002 - 2017 over the northern hemisphere as part of the EPA's Air Quality Time Series (EQUATES) Project. These simulations were performed with a modified version of CMAQv5.3.2 using the following configuration: +EPA distributes a series of monthly files containing daily average 3D species concentrations from a hemispheric CMAQ simulation performed for 2002 - 2019 over the northern hemisphere as part of the EPA's Air Quality Time Series (EQUATES) Project. These simulations were performed with a modified version of CMAQv5.3.2 using the following configuration: - Model version: CMAQv5.3.2 with modifications to halogen chemistry and O3-PV scaling - Grid spacing: 108 x 108 km on a polar stereographic grid covering the northern hemisphere @@ -44,11 +44,11 @@ Metadata and DOI for EQUATES data: https://doi.org/10.15139/S3/F2KJSK ### STEP 2 (optional): Time shift the downloaded seasonal or daily average hemispheric CMAQ output files -If the time period for which initial and boundary conditions are to be generated does not fall between October 16, 2015 12:00 GMT and January 16, 2017 0:00 GMT when using the seasonal average file or between January 1, 2002 00:00 GMT and December 31, 2017 00:00 GMT when using the daily average files, the time stamps in the downloaded file(s) need to be adjusted to encompass the desired time period. This can be accomplished using a tool like `m3tshift` that is part of the `m3tools` utilities released with [I/O API](https://www.cmascenter.org/ioapi/). +If the time period for which initial and boundary conditions are to be generated does not fall between October 16, 2015 12:00 GMT and January 16, 2017 0:00 GMT when using the seasonal average file or between January 1, 2002 00:00 GMT and December 31, 2019 00:00 GMT when using the daily average files, the time stamps in the downloaded file(s) need to be adjusted to encompass the desired time period. This can be accomplished using a tool like `m3tshift` that is part of the `m3tools` utilities released with [I/O API](https://www.cmascenter.org/ioapi/). The seasonal average concentration file contains six-time stamps (10/16/2015 12:00, 1/16/2016 0:00, 4/16/2016 12:00, 7/17/2016 0:00, 10/16/2016 12:00, and 1/16/2017 0:00) that represent fall, winter, spring, summer, fall, and winter seasonal average values, respectively. Fall was defined as September 1 - November 30, 2016, winter was defined as January 1 - February 29 and December 1 - December 31, 2016, spring was defined as March 1 - May 31, 2016, and summer was defined as June 1- August 31, 2016. Note that the concentration values associated with the first-time stamp are identical to those associated with the fifth time stamp since both represent fall, and the concentration values associated with the second time stamp are identical to those associated with the sixth time stamp since both represent winter. -The monthly files with daily average concentrations contain daily (i.e. 24:00 hour) time stamps from 00:00 GMT on the first day of the month to 00:00 GMT on the first day of the following month. For example, the file `CCTM_CONC_v532_intel18.0_CMAQv53_TS_108NHEMI_201006_dailyav.nc` contains 31 time stamps from 6/1/2010 00:00 GMT to 7/1/2010 00:00 GMT with a time step of 24:00 hours. Note that the file for December 2017 only contains 31 time stamps, i.e. it does not contain values for 1/1/2018 00:00 GMT. +The monthly files with daily average concentrations contain daily (i.e. 24:00 hour) time stamps from 00:00 GMT on the first day of the month to 00:00 GMT on the first day of the following month. For example, the file `CCTM_CONC_v532_intel18.0_CMAQv53_TS_108NHEMI_201006_dailyav.nc` contains 31 time stamps from 6/1/2010 00:00 GMT to 7/1/2010 00:00 GMT with a time step of 24:00 hours. Note that the file for December 2019 only contains 31 time stamps, i.e. it does not contain values for 1/1/2020 00:00 GMT. A sample script using `m3tshift` to shift all of the six-time stamps from the seasonal average concentration file back by two years to support the generation of initial and boundary conditions with ICON and BCON for a modeling period between October 16, 2013 12:00 GMT and January 17, 2015 0:00 GMT is shown below. Analogous scripts could be created to shift the time stamps in one or more of the monthly files with daily average concentrations to the desired time period outside the range covered by these files. @@ -93,7 +93,7 @@ EOF ### STEP 3: (optional): Map to a different chemical mechanism -If a chemical mechanism other than cb6r3_ae7_aq, cb6r5_ae7_aq, cb6r5_ae7_aqkmt2, or cb6r5m_ae7_aq will be used for the regional-scale CMAQ simulations, the species in the downloaded file need to be mapped to that other chemical mechanism. An example script for using the `combine` program to map from cb6r3m_ae7_kmtbr to racm_ae6_aq, racm2_ae6_aq, saprc07tc_ae6_aq, saprc07tic_ae7i_aq, or craccm1_aq is provided in a directory alongside the BCON and ICON [source code](../../../PREP/bcon/map2mech). Species definition files used for the mechanism mapping are also provided in that directory. +If a chemical mechanism other than cb6r3_ae7_aq, cb6r5_ae7_aq, cb6r5_ae7_aqkmt2, or cb6r5m_ae7_aq will be used for the regional-scale CMAQ simulations, the species in the downloaded file need to be mapped to that other chemical mechanism. An example script for using the `combine` program to map from cb6r3m_ae7_kmtbr to racm_ae6_aq, racm2_ae6_aq, saprc07tc_ae6_aq, saprc07tic_ae7i_aq, craccm1_aq, or craccm2 is provided in a directory alongside the BCON and ICON [source code](../../../PREP/bcon/map2mech). Species definition files used for the mechanism mapping are also provided in that directory. ### STEP 4: Compile the ICON and BCON executables From db7e78883bb56a4a743a96197bd56af65fff7518 Mon Sep 17 00:00:00 2001 From: fisidi <47453034+fisidi@users.noreply.github.com> Date: Mon, 10 Jun 2024 14:55:01 -0400 Subject: [PATCH 010/375] Update CMAQ_UG_ch03_preparing_compute_environment.md Updates to chapter 3. --- ...AQ_UG_ch03_preparing_compute_environment.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch03_preparing_compute_environment.md b/DOCS/Users_Guide/CMAQ_UG_ch03_preparing_compute_environment.md index 4753505e5..f7ea66176 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch03_preparing_compute_environment.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch03_preparing_compute_environment.md @@ -13,7 +13,7 @@ In this chapter the user will learn basic hardware and software requirements to ## 3.2 Hardware Requirements -The suggested hardware requirements for running the CMAQ Southeast Benchmark case on a Linux workstation are: +The suggested hardware requirements for running the CMAQ Northeast Benchmark case on a Linux workstation are: - 8 processors - 4 GB RAM @@ -21,7 +21,7 @@ The suggested hardware requirements for running the CMAQ Southeast Benchmark cas However, to use CMAQ in a production environment where multiple iterations of the model will be executed for different spatial domains and/or emissions control strategies, either a cluster of multiprocessor PCs on a high-end network or an expandable rack-mounted Linux server is recommended. -For example, the CMAQ team at the EPA uses a Dell cluster. The cluster consists 128 nodes and each node contain two Intel Xeon E5-2697A v4 16-core processors (with a total of 4096 processors), 256 GB memory (8 GB/core), EDR InfiniBand interconnect and runs on Red Hat Enterprise Linux 7 operating system. +For example, the CMAQ team at the EPA uses a Dell cluster. The cluster consists 128 nodes and each node contain two Intel Xeon E5-2697A v4 16-core processors (with a total of 4096 processors), 256 GB memory (8 GB/core), EDR InfiniBand interconnect and runs on Red Hat Enterprise Linux 8 operating system. Table 3-1 provides a general snapshot of three different CMAQ setups for a day of simulation conducted at the EPA. The output only included: the concentration file (CONC), the average concentration file (ACONC), 3-D average concentration file (CGRID), hourly dry deposition file (DRYDEP), and wet deposition from the clouds file (WETDEP1). The run time and domain size are dictated by the system hardware. Furthermore, the run time may vary due to compiler choice and system load. @@ -48,14 +48,14 @@ To build the CMAQ program suite, users must install these libraries in the order |**Software**|**Versions**| |:--------------:|:----:| | Intel Compiler | 18.0, 21.4 | -| GNU Compiler | 6.1.0, 9.1 | -| PGI Compiler | 17.4, 21.9 | +| GNU Compiler | 6.1.0, 9.1, 12.2 | +| PGI Compiler | 17.4, 21.9, 22.11 | -**NOTE: The CMAQ team recommends using a single compiler suite when building these libraries. Mixing compiler suites when building these libraries can cause unexpected behavior (e.g., mixing intel 18.0 to build netCDF C libraries and gcc 6.1.0 to build netCDF fortran libraries is not going to work).** +**NOTE: The CMAQ team recommends using a single compiler suite when building these libraries. Mixing compiler suites when building these libraries can cause unexpected behavior (e.g., mixing intel 18.0 to build netCDF C libraries and gcc 6.1.0 to build netCDF fortran libraries may lead to compile time errors).** ### 3.3.1 Message Passing Interface (MPI) library -CMAQ is a MPI based program that runs on parallel programming platforms. Various flavour of MPI libraries are available for users to choose. CMAQ has been tested with the [OpenMPI](https://www.open-mpi.org), [MPICH](https://www.mpich.org/downloads), [MVAPICH2](http://mvapich.cse.ohio-state.edu), and the [Intel MPI](https://software.intel.com/en-us/intel-mpi-library) libraries. The choice of MPI library may affect model run time. For example, if you have the Intel compiler suite available on your system, choose Intel MPI or if your system is using InfiniBand (IB) interconnects, choose MVAPICH2 which is tailored for IB. +CMAQ is primarily a MPI based programming system that runs on parallel programming platforms. Many programs within the CMAQ system require a flavor of MPI installed on your machine. CMAQ has been tested with the [OpenMPI](https://www.open-mpi.org), [MPICH](https://www.mpich.org/downloads), [MVAPICH2](http://mvapich.cse.ohio-state.edu), and the [Intel MPI](https://software.intel.com/en-us/intel-mpi-library) libraries. The choice of MPI library may affect model run time. For example, if you have the Intel compiler suite available on your system, you may want to choose Intel MPI or if your system is using InfiniBand (IB) interconnects, choose MVAPICH2 which is tailored for IB. Users can download the MPI library source code from one of these sites and follow provided procedures for proper installation. **Versions Tested: IntelMPI 2017.0, 21.4 | MPICH 3.3.1 | MVAPICH2 2.3.1 | OpenMPI 2.1.0, 4.1.4** @@ -67,7 +67,7 @@ Most of the CMAQ input files and all output files are in netCDF format (the rest The I/O API library provides an interface between the netCDF libraries and CMAQ, as well as WRF-CMAQ, to handle input and output (I/O) calls throughout the CMAQ code. The version of the I/O API library supported with CMAQv5.3.2+ (version 3.2 tagged 20200828) is available for download at https://github.com/cjcoats/ioapi-3.2/releases/tag/20200828. Users should note that the I/O API library requires netCDF files to be adhere to a strict formatting guidelines that can be found in the I/O API documentation. For simplicity, files following the IOAPI-netCDF formatting guidelines will be called "IOAPI FILES" from now on. **Versions Tested: IOAPI 3.2 tagged 20200828** -The general steps for installation of I/O API libraries on a Linux system (with C-shell and GNU compilers) are below. These instructions are an example and we recommend using the latest release available at the time of your CMAQ installation. +The general steps for installation of I/O API libraries on a Linux system (with C-shell and GNU compilers) are below. These instructions are an example. The following is a procedure to install "basic" I/O API libraries (this is based on gfortran compiler, for other compilers, look for corresponding Linux2_x86_64*): @@ -84,6 +84,9 @@ cd ioapi-3.2-20200828 setenv BIN Linux2_x86_64gfort setenv BASEDIR $cwd setenv CPLMODE nocpl +cp Makefile.template Makefile +touch ioapi/Makefile +touch m3tools/Makefile ``` Edit the top level Makefile with the following steps: @@ -117,6 +120,7 @@ There is also an I/O API version 3.2 "large" that is designed for applications w cp -r ioapi-3.2-20200828 ioapi-3.2-20200828_large cd ioapi-3.2-20200828_large/ioapi/fixed_src cp ../PARMS3-LARGE.EXT ./PARMS3.EXT +mv ../PARMS3-LARGE.EXT ../PARMS3.EXT ``` This version is also available as a zip file from the following address: From 390f27d6ff87591a887b7d70035895f188a9c64b Mon Sep 17 00:00:00 2001 From: Chris Nolte Date: Mon, 10 Jun 2024 15:18:00 -0400 Subject: [PATCH 011/375] Update CMAQ_UG_tutorial_debug.md --- .../Tutorials/CMAQ_UG_tutorial_debug.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_debug.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_debug.md index 80f1760d7..8af7e5cca 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_debug.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_debug.md @@ -4,7 +4,7 @@ Purpose: This guide describes how to examine log files and debug issues encounte This guide helps you to find and report errors to the CMAS Center Forum and follows the [best practices for posting new issues to the forum](https://forum.cmascenter.org/t/please-read-before-posting/1321). ## Building CMAQ -### Prerequisite: Build Libraries and CMAQ using gcc and intel compilers +### Prerequisite: Build Libraries and CMAQ using gcc or intel compilers Follow the CMAQ Build Tutorials for the appropriate compiler: * [Building CMAQ for GNU](CMAQ_UG_tutorial_build_library_gcc.md) * [Building CMAQ for Intel](CMAQ_UG_tutorial_build_library_intel.md) @@ -15,7 +15,7 @@ cd $CMAQ_HOME/CCTM/scripts ls */*.exe ``` -### Inspecting CMAQ Build log files: +### Inspecting CMAQ Build log files ``` grep -i error bldit_cctm.log tail bldit_cctm.log @@ -26,17 +26,17 @@ tail bldit_cctm.log * [Review the CMAQ FAQ](https://www.epa.gov/cmaq/frequent-cmaq-questions) If you don’t find an answer that solves the issue that you are having, create a new topic on the CMAS Center Forum. -Submit a new topic issue, even if you are having an issue similar to another user. +Please create a new topic in describing your issue, even if your issue is similar to that of another user. **See the instructions at the bottom of this tutorial for creating a new topic on the CMAS User Forum.** -## Running CMAQ: +## Running CMAQ ### Prerequisite: Run the CMAQ Benchmark case [Follow Benchmark Tutorial instructions](https://github.com/USEPA/CMAQ/blob/main/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md) -(does not require running ICON/BCON as inputs are provided in the Benchmark Input Data): +(does not require running ICON/BCON as inputs are provided in the Benchmark Input Data). -### Inspect the CMAQ run log files: +### Inspect the CMAQ run log files Check the output log file in the run directory to see if it has completed successfully. ``` @@ -166,8 +166,8 @@ This stack trace indicates that the error occurred on line 503 of the file aero_ * Or choose the [parent CMAQ category](https://forum.cmascenter.org/c/cmaq/7) -* Click on + New Topic in the upper right corner -The Category will be pre-selected if you start a new topic request from within a category, if the category is “Uncategorized”, then use the pull-down menu to select the category for your topic. +* Click on + New Topic in the upper right corner. +The Category will be pre-selected if you start a new topic request from within a category. If the category is “Uncategorized”, then use the pull-down menu to select the category for your topic. ### Selecting a category for your issue @@ -196,9 +196,9 @@ ls */*.exe ``` cd $CMAQ_HOME/data/{YOUR_OUTPUT_DIR}/LOGS/ ``` -* The following grep command -B NUM, prints NUM lines before the error statement is found. +* The grep argument -B NUM prints NUM lines before the matching text is found. For example, this command will print out the 10 lines prior to each occurrence of the word "error" (case insensitive): ``` -grep -B +grep -B 10 -i error CTM_LOG_000* ``` #### Example of information to include in a new issue post: From b8731a8925ffa1c663dc085a025c9f0d72daeafe Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 15:37:42 -0400 Subject: [PATCH 012/375] Update CMAQ_UG_ch09_process_analysis.md --- DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md index 7d10400d1..72dc45fb3 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md @@ -8,7 +8,7 @@ # 9. Process Analysis and Budget ## 9.1 Introduction -Most applications of CMAQ, as well as other 3-D grid models, output concentration fields of chemical species of interest at selected time steps that reflect the cumulative effect of all processes (emissions, chemical reaction, transport, etc.) that act on the chemical species over the time period. While concentrations are useful per se, knowing only the net result of all processes can limit the understanding of *why* the concentrations are the levels that are calculated. For some applications, the user may want to unravel this net impact and examine the quantitative impact of the individual processes, to identify those which are most important or uncertain. Process Analysis (PA) is a technique for separating out and quantifying the contributions of individual physical and chemical processes to the changes in the predicted concentrations of a pollutant. PA does *not* have to be activated in a CMAQ simulation but including PA in a simulation during runtime provides additional information that can be useful in interpreting CMAQ results. PA has two components: Integrated Process Rate (IPR) analysis, and Integrated Reaction Rate (IRR) analysis. IPR analysis quantifies the net change in species through physical processes of advection, diffusion, emissions, dry deposition, aerosol processes, and cloud processes, and the overall impact of chemical processes. IRR analysis allows the output of individual chemical reaction rates or user-specified combinations of chemical reactions and species cycling. The Budget Tool (section 9.7) is an optional ascii output that summarizes the domain-wide process changes gathered by the IPR analysis. +Most applications of CMAQ, as well as other 3-D grid models, output concentration fields of chemical species of interest at selected time steps that reflect the cumulative effect of all processes (emissions, chemical reaction, transport, etc.) that act on the chemical species over the time period. Several features in CMAQ allow the user to better understand which processes impacted model predicted concentrations. These options provide information about specific chemical and physical processes to provide insight about contribution and uncertainty.Process Analysis (PA) is a technique for separating out and quantifying the contributions of individual physical and chemical processes to the changes in the predicted concentrations of a pollutant. PA does *not* have to be activated in a CMAQ simulation but including PA in a simulation during runtime provides additional information that can be useful in interpreting CMAQ results. PA has two components: Integrated Process Rate (IPR) analysis and Integrated Reaction Rate (IRR) analysis. IPR analysis quantifies the net change in species through physical processes of advection, diffusion, emissions, dry deposition, aerosol processes, and cloud processes. It also provides an estimate of the overall impact of chemical processes. IRR analysis allows the output of individual chemical reaction rates or user-specified combinations of chemical reactions and species cycling. The Budget Tool (section 9.7) is an optional ascii output that summarizes the domain-wide process changes gathered by the IPR analysis. As a tool for identifying the relative importance of individual chemical and physical processes, PA has many applications, including: From 12073c3b8cac1d1347c50272388b77675005882c Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 15:38:11 -0400 Subject: [PATCH 013/375] Update CMAQ_UG_ch09_process_analysis.md --- DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md index 72dc45fb3..1b895c00a 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md @@ -8,7 +8,7 @@ # 9. Process Analysis and Budget ## 9.1 Introduction -Most applications of CMAQ, as well as other 3-D grid models, output concentration fields of chemical species of interest at selected time steps that reflect the cumulative effect of all processes (emissions, chemical reaction, transport, etc.) that act on the chemical species over the time period. Several features in CMAQ allow the user to better understand which processes impacted model predicted concentrations. These options provide information about specific chemical and physical processes to provide insight about contribution and uncertainty.Process Analysis (PA) is a technique for separating out and quantifying the contributions of individual physical and chemical processes to the changes in the predicted concentrations of a pollutant. PA does *not* have to be activated in a CMAQ simulation but including PA in a simulation during runtime provides additional information that can be useful in interpreting CMAQ results. PA has two components: Integrated Process Rate (IPR) analysis and Integrated Reaction Rate (IRR) analysis. IPR analysis quantifies the net change in species through physical processes of advection, diffusion, emissions, dry deposition, aerosol processes, and cloud processes. It also provides an estimate of the overall impact of chemical processes. IRR analysis allows the output of individual chemical reaction rates or user-specified combinations of chemical reactions and species cycling. The Budget Tool (section 9.7) is an optional ascii output that summarizes the domain-wide process changes gathered by the IPR analysis. +Most applications of CMAQ, as well as other 3-D grid models, output concentration fields of chemical species of interest at selected time steps that reflect the cumulative effect of all processes (emissions, chemical reaction, transport, etc.) that act on the chemical species over the time period. Several features in CMAQ allow the user to better understand which processes impacted model predicted concentrations. These options provide information about specific chemical and physical processes to provide insight about contribution and uncertainty. Process Analysis (PA) is a technique for separating out and quantifying the contributions of individual physical and chemical processes to the changes in the predicted concentrations of a pollutant. PA does *not* have to be activated in a CMAQ simulation but including PA in a simulation during runtime provides additional information that can be useful in interpreting CMAQ results. PA has two components: Integrated Process Rate (IPR) analysis and Integrated Reaction Rate (IRR) analysis. IPR analysis quantifies the net change in species through physical processes of advection, diffusion, emissions, dry deposition, aerosol processes, and cloud processes. It also provides an estimate of the overall impact of chemical processes. IRR analysis allows the output of individual chemical reaction rates or user-specified combinations of chemical reactions and species cycling. The Budget Tool (section 9.7) is an optional ascii output that summarizes the domain-wide process changes gathered by the IPR analysis. As a tool for identifying the relative importance of individual chemical and physical processes, PA has many applications, including: From 1017c80d05c4faefd61f92bd7346cbdf2a0b2e10 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 10 Jun 2024 15:46:57 -0400 Subject: [PATCH 014/375] Update CMAQ_UG_ch02_program_structure.md Added mention of MPAS for global meteorology inputs. --- DOCS/Users_Guide/CMAQ_UG_ch02_program_structure.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch02_program_structure.md b/DOCS/Users_Guide/CMAQ_UG_ch02_program_structure.md index 21e995e2e..9d12c6b62 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch02_program_structure.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch02_program_structure.md @@ -10,7 +10,7 @@ The CMAQ system is a suite of software programs that work in concert to estimate ozone, particulate matter, toxic compounds, and acid deposition in addition to other atmospheric pollutants of interest. As a framework for simulating the interactions of multiple complex atmospheric processes, CMAQ requires many types of inputs including meteorological information, primary pollutant emission rates, chemical properties and reactions, and land properties that are influential for exchange of pollutants with the atmosphere. ## 2.2 CMAQ Core Programs -Weather conditions such as the changes in temperature, winds, cloud formation, and precipitation rates are the primary physical driving forces for transport in the atmosphere. These conditions are represented in air quality model simulations using output from regional-scale numerical meteorology models, such as the [Weather Research and Forecasting (WRF) Model](https://www.mmm.ucar.edu/weather-research-and-forecasting-model). To obtain inputs on emissions, CMAQ relies on the open-source Sparse Matrix Operator Kernel Emissions [(SMOKE)](http://www.smoke-model.org) model to estimate the magnitude and location of pollution sources. Another open-source system, the +Weather conditions such as the changes in temperature, winds, cloud formation, and precipitation rates are the primary physical driving forces for transport in the atmosphere. These conditions are represented in CMAQ using output from the [Weather Research and Forecasting (WRF) Model](https://www.mmm.ucar.edu/weather-research-and-forecasting-model) for regional- and hemispheric-scale simulations and from the [Model for Prediction Across Scales (MPAS)](https://www.mmm.ucar.edu/models/mpas) for global simulations. To obtain inputs on emissions, CMAQ relies on the open-source Sparse Matrix Operator Kernel Emissions [(SMOKE)](http://www.smoke-model.org) model to estimate the magnitude and location of pollution sources. Another open-source system, the [Fertilizer Emission Scenario Tool for CMAQ (FEST-C)](https://www.cmascenter.org/fest-c/) is used to run the Environmental Policy Integrated Climate (EPIC) model to generate agricultural land nitrogen and soil information needed for CMAQ bi-directional NH3 modeling. The structure of the CMAQ system is illustrated in Fig. 2-1. The main CMAQ program, the CMAQ Chemistry Transport Model (CCTM), which is often referred to simply as CMAQ, contains the principal equations used for predicting pollutant concentrations given the inputs discussed above. These partial differential equations are designed for mass conservation and consider a myriad of important processes such as emissions, chemical reaction, uptake to clouds and precipitation, and dry deposition. An overview of the science configuration options in CMAQ can be found in [Chapter 6](CMAQ_UG_ch06_model_configuration_options.md). Instructions for compiling and running the CCTM are covered in Chapters 3 ([Preparing Compute Environment](CMAQ_UG_ch03_preparing_compute_environment.md)), 4 ([Model Inputs](CMAQ_UG_ch04_model_inputs.md)) and 5 ([Running a CMAQ Simulation](CMAQ_UG_ch05_running_a_simulation.md)). @@ -19,7 +19,7 @@ The structure of the CMAQ system is illustrated in Fig. 2-1. The main CMAQ progr **Figure 2‑1. Overview of the CMAQ System** -Several important tools are provided with the CMAQ system to handle the preparation of important input data. The meteorology data provided by the upstream meteorological model (e.g. WRF) is prepared for input to the CCTM by the Meteorology-Chemistry Interface Processor (MCIP). The CCTM also requires inputs for specifying the initial and boundary conditions of each chemical species treated by the model. These data may be processed and prepared for use by the ICON and BCON tools, respectively. Documentation on compiling and running MCIP, ICON and BCON is available under the [PREP](../../PREP/README.md) folder. +Several important tools are provided with the CMAQ system to handle the preparation of important input data. The meteorology data provided by the upstream meteorological model (e.g., WRF) is prepared for input to the CCTM by the Meteorology-Chemistry Interface Processor (MCIP). The CCTM also requires inputs for specifying the initial and boundary conditions of each chemical species treated by the model. These data may be processed and prepared for use by the ICON and BCON tools, respectively. Documentation on compiling and running MCIP, ICON, and BCON is available under the [PREP](../../PREP/README.md) folder. ## 2.3 Online Emissions Options CMAQ includes several "online" emissions options to support coupling between meteorology and chemistry processes, and to facilitate operational air quality forecast modeling. The emissions streams available for running online in CMAQ are: biogenics, wind-blown dust, sea spray, marine gas emissions, and nitrogen oxides from lightning. One important advantage of incorporating these processes directly in a CCTM simulation is that emissions are meteorologically modulated at the synchronization (chemistry) time step rather than being linearly time-interpolated within each simulation hour. In addition, disk space may be saved, because a 3‑D emissions file is no longer needed for elevated point sources. From 1708c1395ca6b590c82e0783fa8cc8fffb00dac9 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 10 Jun 2024 15:48:56 -0400 Subject: [PATCH 015/375] Update README.md --- UTIL/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UTIL/README.md b/UTIL/README.md index 5aaa96dec..9f181c738 100644 --- a/UTIL/README.md +++ b/UTIL/README.md @@ -2,7 +2,7 @@ CMAQ Utilities ======== ## Overview -The CMAQ release includes several optional utilities for model developers. Chemical reaction data is processed by the Chemical Mechanism Compiler (chemmech) for all chemical reaction solver approaches. This tool needs chemical namelists (e.g. GC_NAMELIST, AE_NAMELIST, etc) in order to run, and these namelists can be modified directly with a text editor or converted to CSV with the namelist converter nml. After running chemmech, to then generate files specifically for the Euler Backward Iterative (EBI) solver approach, the create_ebi is provided. Finally the Inline Photolysis Preprocessor (inline_phot_preproc) provides support for generating photylisis rate input to custom chemical mechanisms. In addition, the CMAQ repository includes software for generating Makefiles necessary for compiling the CCTM and other components. This bldmake utility is designed to account for user options, diagnose dependencies in source code and produce a Makefile ready to build executable files. Documentaiton for each utilitiy programs is provided in the README files within each folder. +The CMAQ release includes several optional utilities for model developers. Chemical reaction data is processed by the Chemical Mechanism Compiler (*chemmech*) for all chemical reaction solver approaches. This tool needs chemical namelists (e.g. GC_NAMELIST, AE_NAMELIST, etc) in order to run, and these namelists can be modified directly with a text editor or converted to CSV with the namelist converter *nml*. After running chemmech, to then generate files specifically for the Euler Backward Iterative (EBI) solver approach, the *create_ebi* is provided. Finally the Inline Photolysis Preprocessor (*inline_phot_preproc*) provides support for generating photylisis rate input to custom chemical mechanisms. In addition, the CMAQ repository includes software for generating Makefiles necessary for compiling the CCTM and other components. This bldmake utility is designed to account for user options, diagnose dependencies in source code and produce a Makefile ready to build executable files. Documentaiton for each utilitiy programs is provided in the README files within each folder. ## Utility Programs From 09245aec5a5dca386ac533f81363cdac650c32df Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 15:51:47 -0400 Subject: [PATCH 016/375] Update CMAQ_UG_ch09_process_analysis.md --- DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md index 1b895c00a..2065478aa 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md @@ -22,7 +22,7 @@ As a tool for identifying the relative importance of individual chemical and phy PA variables are computed by saving the differential operators associated with each process or reaction, integrated over the model synchronization time step for the same variables that are used in solving the continuity equations within the model. For processes that are solved simultaneously in the same operator, PA uses mass balance to compute the contribution of each process. -A user activates PA during CMAQ runtime and includes a PA input file to specify whether IPR, IRR or both analyses are performed, and defining what variables are required for each analysis. The IRR parameters are highly customizable and can be easily modified but must be checked carefully before running the model to ensure that they correspond to the mechanism being used. In CMAQ v5.2 and earlier versions, IRR could only be run when CMAQ was compiled with the Rosenbrock (ros3) or Sparse-Matrix-Vectorized Gear (smvgear) solvers. However, in CMAQv5.3, the code was updated to enable use of IRR with the ebi solver, and to implement enhanced output of aerosol processes. The derivation of PA and format of input files specific to CMAQ incorporation is detailed in Gipson et al., (1999), and a further description of the science behind PA is provided in Tonnesen (1994) and Jeffries and Tonnesen (1994). +A user activates PA during CMAQ runtime and includes a PA input file to specify whether IPR, IRR or both analyses are performed, and defining what variables are required for each analysis. The IRR parameters are highly customizable and can be easily modified but must be checked carefully before running the model to ensure that they correspond to the mechanism being used. A control file is distributed with CMAQ that corresponds to each chemical mechanism supported by that version of the model. This file can be used as distributed or modified to meet program specific objectives. The derivation of PA and format of input files specific to CMAQ incorporation is detailed in Gipson et al., (1999), and a further description of the science behind PA is provided in Tonnesen (1994) and Jeffries and Tonnesen (1994). ## 9.2 Use of Process Analysis From 5bae3e10ce55ea6944414627e485cae9c908c052 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 15:53:40 -0400 Subject: [PATCH 017/375] Update CMAQ_UG_ch09_process_analysis.md --- DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md index 2065478aa..8e1e26c06 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md @@ -35,7 +35,7 @@ Set this variable to Y to indicate that you want process analysis to be activate - setenv PACM_INFILE [filename] - setenv PACM_REPORT [filename] -PACM_INFILE is the input file that specifies the desired output information (read by pa_read.F). Gipson et al., (1999), details the types of equations and operators that can be used, with a brief summary here in Table 1. PACM_REPORT is the output file that displays how CMAQ translates the variables listed in PACM_INFILE, and lists the reactions (including reactants, products and yields) that will be used in calculating the IPR and IRR values. Users should check this file on the first iteration of a new PA simulation to ensure that CMAQ is interpreting the variables as the user intended. +PACM_INFILE is the input file that specifies the desired output information (read by pa_read.F). Gipson et al., (1999), details the types of equations and operators that can be used, with a brief summary here in Table 1. A standard input file is distributed with CMAQ for each chemical mechanism supported by that version of the model. PACM_REPORT is the output file that displays how CMAQ translates the variables listed in PACM_INFILE, and lists the reactions (including reactants, products and yields) that will be used in calculating the IPR and IRR values. Users should check this file on the first iteration of a new PA simulation to ensure that CMAQ is interpreting the variables as the user intended. The user can also specify an optional subdomain for the IPR/IRR output. If these variables are not specified, the default domain is the entire CMAQ domain, however, the user may want to limit the portion of the domain where output is written because the files can get large. This is done using the variables: From 092c1a96fe388c53e88abc3c9a81ef61646753bd Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 15:55:34 -0400 Subject: [PATCH 018/375] Update CMAQ_UG_ch09_process_analysis.md --- DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md index 8e1e26c06..e403886a6 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md @@ -47,7 +47,7 @@ where integers [start] and [end] are the starting and ending grid columns, rows, **Step 2: Ensure that output files are being written and that the output variables have been correctly specified** -A PACM_REPORT file, with the name specified in Step 1, is output for every day of simulation, along with daily IRR or IPR files, depending on whether IRR or IPR was specified. If there is a formatting error in the PACM_INPUT file, CMAQ will not run and the CMAQ log files must be checked to determine where the error occurred. The PACM_REPORT file will list the reactions that are used to interpret each of the reactions/families/cycles/operators specified by the user in the PACM_INPUT file. For complex operations (such as those including families or cycles), the user must ensure that the output conveys the appropriate quantities. +A PACM_REPORT file, with the name specified in Step 1, is output for every day of simulation, along with daily IRR or IPR files, depending on whether IRR or IPR was specified. If there is a formatting error in the PACM_INPUT file, CMAQ will not run and the CMAQ log files must be checked to determine where the error occurred. The PACM_REPORT file will list the reactions that are used to interpret each of the reactions/families/cycles/operators specified by the user in the PACM_INPUT file. For complex operations (such as those including families or cycles), the user must ensure that the output appropriately reflects the information provided in the process analysis input control file. The output files are specified in the CMAQ runscript by: From 6bfe6d2ecb099df7af319c11429a371ef301b215 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 15:57:58 -0400 Subject: [PATCH 019/375] Update CMAQ_UG_ch09_process_analysis.md --- DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md index e403886a6..971fbae86 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md @@ -201,7 +201,7 @@ The existing Process Analysis module outputs process rates for variables or fami The Budget Tool outputs as a text file (CCTM_BUDGET_xxx.txt), the domain-wide process rates and total abundance change for every variable or family requested by the user in the CMAQ_Control_Misc.nml file. Output is produced for every output time step (generally hourly). Units for both gases and particles are in kilograms per output time step. -The output produced by the Budget Tool is quite powerful when applying or developing CMAQ. It can be used to better understand the large-scale source and loss pathways of individual trace species or families of species. For example, the fraction of a species that is transported out of the domain versus lost by dry or wet deposition is immediately accessible as a function of output time step. Additionally, one can use this output to diagnose potential errors if, for example, the Budget Tool reports emissions or chemical production of a species and the developer knows it should not be possible. Figure 9-3 illustrates process rates for O3<\sub> for an annual simulation of 2016. The top bar of each pair dileneates the rates by season of the year, while the bottom bar shows the contribution split between day and night. +The output produced by the Budget Tool is quite powerful when applying or developing CMAQ. It can be used to better understand the large-scale source and loss pathways of individual trace species or families of species. For example, the fraction of a species that is transported out of the domain versus lost by dry or wet deposition is immediately accessible as a function of output time step. Additionally, one can use this output to diagnose potential errors if, for example, the Budget Tool reports emissions or chemical production of a species and the developer knows it should not be possible. Figure 9-3 illustrates process rates for O3 for an annual simulation of 2016. The top bar of each pair dileneates the rates by season of the year, while the bottom bar shows the contribution split between day and night. To activate (or deactivate) the Budget Tool calculation and output, set the variable Budget_Diag to .TRUE. (or .FALSE.) in the &Budget_Options section of the CMAQ_Control_Misc.nml namelist. Here the user may also choose the variables they would like to output data for. The default is 'ALL' CMAQ species, including transported, non-transported, reactive, and non-reactive species. Alternatively or additionally, a list of species may be given, including names of chemical families, defined by the user in the &Chemical_FamVars section of the CMAQ_Control_Misc.nml file. From a9bf505aa13f89248848e558deafefd2e7e18921 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 10 Jun 2024 15:58:47 -0400 Subject: [PATCH 020/375] Update README.md --- PREP/mcip/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PREP/mcip/README.md b/PREP/mcip/README.md index fd2902dc3..125545cf4 100644 --- a/PREP/mcip/README.md +++ b/PREP/mcip/README.md @@ -160,7 +160,7 @@ The default location of the MCIP output files is the `$CMAQ_HOME/data/mcip/$Grid **Previous Versions of MCIP** MCIPv4.3 and MCIPv4.2 were released via the CMASCenter MCIP GitHub repository. Beginning with version 4.5, MCIP is released as part of the CMAQ repository. The MCIP version and CMAQ version are aligned beginning with version 5.3.3. -* [MCIPv5.4 (October 2022)](https://github.com/USEPA/CMAQ/blob/main/PREP/mcip/docs/ReleaseNotes) - bundled under CMAQv5.4 +* [MCIPv5.4 (October 2022)](https://github.com/USEPA/CMAQ/blob/5.4/PREP/mcip/docs/ReleaseNotes) - bundled under CMAQv5.4 * [MCIPv5.3.3 (August 2021)](https://github.com/USEPA/CMAQ/blob/5.3.3/PREP/mcip/docs/ReleaseNotes) - bundled under CMAQv5.3.3 * [MCIPv5.1 (December 2019)](https://github.com/USEPA/CMAQ/blob/5.3.1/PREP/mcip/docs/ReleaseNotes) - bundled under CMAQv5.3.1 * [MCIP v5.0 (August 2019)](https://github.com/USEPA/CMAQ/blob/5.3/PREP/mcip/docs/ReleaseNotes) - bundled under CMAQv5.3 From 0907e2794e0c54d91a8d8b871cf12adfd5f26e2f Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 15:59:24 -0400 Subject: [PATCH 021/375] Update CMAQ_UG_ch09_process_analysis.md --- DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md index 971fbae86..5768831dc 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md @@ -207,9 +207,9 @@ To activate (or deactivate) the Budget Tool calculation and output, set the vari Alternatively or additionally, a list of species may be given, including names of chemical families, defined by the user in the &Chemical_FamVars section of the CMAQ_Control_Misc.nml file. Lastly, if an aerosol species name is provided (e.g. 'ASO4', 'AEC') without the suffix denoting an aerosol mode, the Budget Tool will provide the sum of the process changes across all modes. -![Figure 9-3: Contribution of model processes to O3<\sub> production and loss during a CMAQ simulation of the U.S. for 2016](./images/Figure9-3.png) +![Figure 9-3: Contribution of model processes to O3 production and loss during a CMAQ simulation of the U.S. for 2016](./images/Figure9-3.png) -**Figure 9-3. Contribution of model processes to O3<\sub> production and loss during a CMAQ simulation of the U.S. for 2016** +**Figure 9-3. Contribution of model processes to O3 production and loss during a CMAQ simulation of the U.S. for 2016** ## 9.8 References From 24b01ffb9440ec592f3fcc927539871ed4084613 Mon Sep 17 00:00:00 2001 From: Chris Nolte Date: Mon, 10 Jun 2024 16:10:36 -0400 Subject: [PATCH 022/375] Update CMAQ_UG_ch13_WRF-CMAQ.md --- DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md | 27 ++++++++++------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md b/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md index 1b3eefaac..d702cc650 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md @@ -7,23 +7,23 @@ # 13. WRF-CMAQ Model ## 13.1 Introduction -Air Quality Models (AQMs) such as CMAQ are typically run in retrospective mode using archived meteorological data to drive the chemistry-transport calculations. Here the model producing the meteorological data is run first producing inputs that are synthesized into AQM model ready inputs via pre-processors, such as MCIP. +Air Quality Models (AQMs) such as CMAQ are typically run in retrospective mode using archived meteorological data to drive the chemistry-transport calculations. Here the model producing the meteorological data is run first producing inputs that are synthesized into AQM model-ready inputs via pre-processors, such as MCIP. -But this one-way coupling process, coarsely interpolates simulated dynamics and does not take into consideration important chemical effects on the energy budget of the atmosphere, both of which can drastically change the driving meteorology. For example, aerosols can affect the amount of sunlight that reaches the surface, thus impacting temperature (aerosol direct effect). +But this one-way coupling process interpolates simulated dynamics and does not consider the effects of atmospheric pollutants on the energy budget of the atmosphere, both of which can change the driving meteorology. For example, aerosols can affect the amount of sunlight that reaches the surface, thus impacting temperature (aerosol direct effect). -To address these short-comings, a coupled WRF-CMAQ model was developed (Wong et al., 2012). A single source code principle was used to construct this two-way coupling system so that CMAQ can be consistently executed either as a stand-alone model or part of the coupled system without any code changes, by treating CMAQ as a subroutine in the WRF structure; this approach eliminates maintenance of separate code versions for the coupled and uncoupled systems. +To address these shortcomings, a coupled WRF-CMAQ model was developed (Wong et al., 2012). A single source code principle was used to construct this two-way coupling system so that CMAQ can be executed either as a stand-alone model or part of the coupled system without any code changes, by treating CMAQ as a subroutine in the WRF structure; this approach eliminates maintenance of separate code versions for the coupled and uncoupled systems. The design also provides the flexibility to permit users: (1) to adjust the call frequency of WRF and CMAQ to balance the accuracy of the simulation versus computational intensity of the system, and (2) to execute the two-way coupling system with feedbacks to study the effect of gases and aerosols on short wave radiation and subsequent simulated dynamics. ## 13.2 Aerosol Direct Radiative Feedback Effects -The presence of aerosols impacts the amount of radiation reaching the surface, in turn altering the energy budget of the atmosphere (manifesting itself as changes to temperature and PBL). This is called the short-wave aerosol direct radiative effect. This has been implemented in the shortwave Rapid Radiative Transfer Model for General Circulation Models (RRTMG) radiation scheme in WRF, where aerosol optical properties such as extinction, single scattering albedo, and asymmetry factor, are calculated for 14 wavelength bands (Clough et al. 2005) using aerosol composiiton and size information simulated by CMAQ. Specifically, the aerosol information from CMAQ is transferred in form of seven variables representing: water soluble mass (mass_ws), water insoluble mass (mass_wi), elemental carbon (mass_ec), sea salt (mass_ss), water (mass_h2o), mode-mean diameters and standard deviations, for all three modes (aitken, accumulation, and coarse) to WRF. The implementation utilizes the core-shell model where black carbon is treated as the center and the other substances comprise the shell. The aerosol optics calculations are based on Bohren and Huffman (1983). +The presence of aerosols impacts the amount of radiation reaching the surface, in turn altering the energy budget of the atmosphere (manifesting itself as changes to temperature and the planetary boundary layer height). This is called the shortwave aerosol direct radiative effect. This has been implemented in the shortwave Rapid Radiative Transfer Model for General Circulation Models (RRTMG) radiation scheme in WRF, where aerosol optical properties such as extinction, single scattering albedo, and asymmetry factor are calculated for 14 wavelength bands (Clough et al. 2005) using aerosol composition and size information simulated by CMAQ. Specifically, data representing seven aerosol quantities (water soluble mass, water insoluble mass, elemental carbon, sea salt, water, geometric mean diameters, and standard deviations) for all three aerosol modes (Aitken, accumulation, and coarse) is transferred from CMAQ to WRF. The implementation utilizes the core-shell model where black carbon is treated as the center and the other substances comprise the shell. The aerosol optics calculations are based on Bohren and Huffman (1983). RRTMG is the only radiation scheme in WRF that is supported by the coupled WRF-CMAQ model. ## 13.3 Application and Evaluation The aerosol optics calculations in the WRF-CMAQ model were assessed through comparison to measured optical properties of ambient aerosols made during the Carbonaceous Aerosol and Radiation Effects Study (CARES) as detailed by Gan et al. (2015a). -The ability of the WRF-CMAQ system to reproduce historical trends in the tropospheric aerosol burden, aerosol optical depths, and clear-sky short wave radiation across the northern hemisphere and the U.S., has recently been assessed through extensive comparisons of long-term simulations of these quantities with observation-derived records from 1990 to 2010 (Xing et al. 2015a,b; Gan et al., 2015b). The model captured declining Aerosol Optical Depth (AOD) trends along with the corresponding decreased top-of-atmosphere (TOA) short-wave radiation (SWR), or upwelling, and increased surface SWR, or downwelling, in the eastern US, Europe and the northern Atlantic for the period of 2000–2010. Estimates of the aerosol direct radiative effects (ADE) at TOA were comparable with those derived from measurements and, compared to general circulation models, the model exhibited better estimates of surface-aerosol direct radiative efficiency (Eτ) (Xing et al., 2015b). +The ability of the WRF-CMAQ system to reproduce historical trends in the tropospheric aerosol burden, aerosol optical depth, and clear-sky short wave radiation across the northern hemisphere and the U.S., was assessed through extensive comparisons of long-term simulations of these quantities with observation-derived records from 1990 to 2010 (Xing et al. 2015a,b; Gan et al., 2015b). The model captured declining Aerosol Optical Depth (AOD) trends along with the corresponding decreased top-of-atmosphere (TOA) short-wave radiation (SWR), or upwelling, and increased surface SWR, or downwelling, in the eastern US, Europe and the northern Atlantic for the 2000–2010 period. Estimates of the aerosol direct radiative effects (ADE) at TOA were comparable with those derived from measurements and, compared to general circulation models, the model exhibited better estimates of surface-aerosol direct radiative efficiency (Eτ) (Xing et al., 2015b). -Additionally, top-of-atmosphere clear-sky shortwave radiation during 2000-2010, inferred from the NASA Cloud and Earth’s Radiant Energy System (CERES) satellite retrievals show decreasing trends in the eastern U.S. and increasing trends in eastern China. The inclusion of ADE in WRF-CMAQ yielded better agreement with these contrasting trends suggesting that the trends in clear-sky radiation are influenced by trends in the tropospheric aerosol burden (Xing et al., 2015; Mathur et al., 2017). +Additionally, top-of-atmosphere clear-sky shortwave radiation during 2000-2010, inferred from the NASA Cloud and Earth’s Radiant Energy System (CERES) satellite retrievals, showed decreasing trends in the eastern U.S. and increasing trends in eastern China. The inclusion of ADE in WRF-CMAQ yielded better agreement with these contrasting trends suggesting that the trends in clear-sky radiation are influenced by trends in the tropospheric aerosol burden (Xing et al., 2015ab; Mathur et al., 2017). Impacts of aerosol cooling are not limited to changes in surface temperature, since variation in atmospheric dynamics caused by the increased stability can worsen local air quality and impact human health (Xing et al., 2016). @@ -32,28 +32,26 @@ Hemispheric WRF-CMAQ model simulation over two decades (1990−2010) shows enhan ## 13.4 Latest WRF-CMAQ Release -The new WRF-CMAQ model is based on WRFv4.4 and CMAQv5.4. It supports only RRTMG radiation scheme for short wave aerosol direct effect. It uses core-shell model to perform aerosol optics calculations rather than volume mixing technique as in the previous version of the WRF-CMAQ model. - Starting from WRFv4.4 and CMAQv5.4, a user can construct the coupled model with any version of WRF (v4.4 or later) and any version of CMAQ (v5.4 or later). A complete step by step build process and run instructions are provided in the [WRF-CMAQ Tutorial](Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md). #### WRF-CMAQ bug in v5.3 series -A bug was identified within the CMAQ to WRF coupling routine (twoway_feedback.F90) where aerosol feedback information is transferred from CMAQ to WRF. In doing so, it was found that WRF was not receiving the correct aerosol feedback information due to a looping error relating to the number of layers set to 1 in some cases. The bug impacts the WRF-CMAQ coupled system in the CMAQv5.3 release series (v5.3, v5.3.1, v5.3.2, v5.3.3) when running with short wave radiative feedback. The bug was not present in prior WRF-CMAQ versions. The bugfix in CMAQv5.4 now correctly captures the variations in the aerosol optical properties and consequently the direct feedback effects through all layers. **Users of WRF-CMAQ are strongly encouraged to update to CMAQv5.4. See the [WRF-CMAQ Bugfix Release Note](https://github.com/kmfoley/CMAQ_Dev/wiki/CMAQv5.4-Release-Notes:-WRF-CMAQ-Coupled-Model#wrf-cmaq-model-aerosol-feedback-bugfix) for more information.** +A bug was identified within the CMAQ to WRF coupling routine (twoway_feedback.F90) where aerosol feedback information is transferred from CMAQ to WRF. In doing so, it was found that WRF was not receiving the correct aerosol feedback information in some cases due to a looping error relating to the number of layers. The bug impacts the WRF-CMAQ coupled system in the CMAQv5.3 release series (v5.3, v5.3.1, v5.3.2, v5.3.3) when running with short wave radiative feedback. The bug was not present in prior WRF-CMAQ versions. The bugfix in CMAQv5.4 now correctly captures the variations in the aerosol optical properties and consequently the direct feedback effects through all layers. **Users of WRF-CMAQv5.3 are strongly encouraged to update to CMAQv5.4 or later. See the [WRF-CMAQ Bugfix Release Note](https://github.com/kmfoley/CMAQ_Dev/wiki/CMAQv5.4-Release-Notes:-WRF-CMAQ-Coupled-Model#wrf-cmaq-model-aerosol-feedback-bugfix) for more information.** ## 13.5 WRF-CMAQ Benchmark Test Case See the [WRF-CMAQ Benchmark Tutorial](Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md) for step-by-step instructions for running the 2 day benchmark case. The input files for the WRF-CMAQ benchmark case are provided in the base model benchmark inputs .tar file. Output WRF-CMAQ files associated with the sample run script for the coupled WRF-CMAQ model in this release package are provided in the base model benchmark outputs .tar file. ## 13.6 WRF Namelist Options -New with this version of the coupled model (WRFv4.4-CMAQv5.4), all related runtime options are now controlled via the WRF namelist under the &wrf_cmaq section. For convenience these options are set as runscript variables (look for section labeled &wrf_cmaq in the [sample runscript](../../../CCTM/scripts/run_cctm_Bench_2016_12SE1.WRFCMAQ.csh)) and automatically duplicated when creating the WRF namelist. There are five parameters with varying options see below: +As with the previous version of the coupled model (WRFv4.4-CMAQv5.4), all related runtime options are controlled via the WRF namelist under the &wrf_cmaq section. For convenience these options are set as runscript variables (look for the section labeled &wrf_cmaq in the [sample runscript](../../../CCTM/scripts/run_cctm_Bench_2016_12SE1.WRFCMAQ.csh)) and automatically duplicated when creating the WRF namelist. There are five parameters with varying options (see below): | Name | Value | Description | |------|-------|-------------| -|wrf_cmaq_option| 2 |Dictates how the coupled model execute
0 = run WRF only
1 = run WRF only producing MCIP like GRID and MET files
2 = run WRF-CMAQ coupled model w/o producing MCIP like GRID and MET files
3 = run WRF-CMAQ coupled model producing MCIP like GRID and MET files | +|wrf_cmaq_option| 2 |Dictates how the coupled model should be executed
0 = run WRF only
1 = run WRF only producing MCIP like GRID and MET files
2 = run WRF-CMAQ coupled model w/o producing MCIP like GRID and MET files
3 = run WRF-CMAQ coupled model producing MCIP like GRID and MET files | |wrf_cmaq_freq| 5 |Indicates how often WRF and CMAQ interact;
For example if set to 5, this means for every 5 WRF steps there will be 1 CMAQ step| |met_file_tstep| 10000 |Time step size of MCIP like intermediate output files (HHMMSS)| -|direct_sw_feedback| .true. |Logical; whether to turn on/off aerosol short ware direct effects| -|feedback_restart| .false. |Logical; whether aerosol short wave direct effect information is available in the WRF restart file| +|direct_sw_feedback| .true. |Logical; whether to turn on/off aerosol shortwave direct effects| +|feedback_restart| .false. |Logical; whether aerosol shortwave direct effect information is available in the WRF restart file| If you have any questions, please contact David Wong at wong.david-c@epa.gov @@ -76,7 +74,7 @@ Wong, D.C., Pleim, J., Mathur, R., Binkowski, F., Otte, T., Gilliam, R., Pouliot Xing, J., Mathur, R., Pleim, J., Hogrefe, C., Gan, C.-M., Wong, D. C., Wei, C. (2015a). Can a coupled meteorology–chemistry model reproduce the historical trend in aerosol direct radiative effects over the Northern Hemisphere?, Atmos. Chem. Phys., 15, 9997–10018, https://doi.org/10.5194/acp-15-9997-2015 -Xing, J., Mathur, R., Pleim, J., Hogrefe, C., Gan, C.-M., Wong, D., Wei, C., Wang, J. (2015b). Air pollution and climate response to aerosol direct radiative effects: a modeling study of decadal rends across the Northern Hemisphere, J. Geophys. Res.-Atmos., 120, 12221–12236, https://doi.org/10.1002/2015JD023933 +Xing, J., Mathur, R., Pleim, J., Hogrefe, C., Gan, C.-M., Wong, D., Wei, C., Wang, J. (2015b). Air pollution and climate response to aerosol direct radiative effects: a modeling study of decadal trends across the Northern Hemisphere, J. Geophys. Res.-Atmos., 120, 12221–12236, https://doi.org/10.1002/2015JD023933 Xing, J., Wang, J., Mathur, R., Pleim, J., Wang, S., Hogrefe, C., Gan, C.-M., Wong, D., Hao, J. (2016). Unexpected benefits of reducing aerosol cooling effects, Environ. Sci. Technol., 50, 7527– 7534, https://doi.org/10.1021/acs.est.6b00767 @@ -87,6 +85,5 @@ and for more details on the 2-way Coupled WRF-CMAQ system see: http://www.cmasce [<< Previous Chapter](CMAQ_UG_ch12_sulfur_tracking.md) - [Home](README.md) - [Tables and Figures >>](CMAQ_UG_tables_figures.md)
-CMAQ User's Guide (c) 2022
From 28d8456c9d5e26c6f0f28290f97ccbfb5bf741a9 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 10 Jun 2024 17:02:39 -0400 Subject: [PATCH 023/375] Update README.md update link to AMET-ready obs data files --- POST/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/POST/README.md b/POST/README.md index b357ef17d..f37a181dc 100644 --- a/POST/README.md +++ b/POST/README.md @@ -16,7 +16,7 @@ The following utility programs are provided to process and prepare data for mode ## Observed data for model evaluation The formatted observation data files needed for running the sitecmp and sitecmp_dailyo3 utilities are available for 2000 through 2020 from the CMAS Center Data Warehouse Google Drive. * [Link to Google Drive folder with observation files](https://drive.google.com/drive/folders/1QUlUXnHXvXz9qwePi5APzzHkiH5GWACw?usp=sharing) -* [Link to README text file with metadata on observation files](https://drive.google.com/file/d/1zDbIMXGYnQzst2d1lLYOls-6gsxJ0RTg/view?usp=sharing) +* [Link to README text file with metadata on observation files](https://drive.google.com/file/d/1QVTDxGMXoNNnl8IXhz5pcIO0x45q2IS1/view?usp=drive_link) ## A note on model-observation pairing for model evaluation The task of matching model simulations to observations is performed by the sitecmp and sitecmp_dailyo3 utility programs. Documentation on how these programs handle matching model and observed species in space and time is provided in [Chapter 8 of the CMAQ User's Guide](../DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md). From 3ab2a567fb86bc1bdb6d2abc74646b503921bf4c Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 17:06:00 -0400 Subject: [PATCH 024/375] Update CMAQ_UG_tutorial_tracers.md From b15d7d2c7cc6ef62f5d754cd950785195d464be5 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 17:07:26 -0400 Subject: [PATCH 025/375] Update CMAQ_UG_tutorial_tracers.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md index 6b0e55a45..34b5ca04c 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md @@ -1,6 +1,6 @@ ## CMAQ Tutorial ## ### Add Chemically Inert Gas Phase Tracer Species to CMAQ ### -Purpose: This tutorial will step you through the process of adding chemically inert gas phase tracers to the CMAQ model. Inert tracers can be used as a development tool to test mass conservation when modifying processes in CMAQ. They can also be used for exploratory analysis such as studying the persistence or impact of initial and/or boundary conditions on air quality model estimates, e.g., [Hogrefe et al. (2017)](https://doi.org/10.1016/j.atmosenv.2017.04.009), [Liu et al. (2018)](https://doi.org/10.5194/acp-18-17157-2018). Note that inert tracers are not a replacement for source contribution analysis (e.g., [CMAQ ISAM](../CMAQ_UG_ch11_ISAM.md)) that provides an estimate of how much of a modeled pollutant came from specific sources or processes ([Baker et al. (2015)](https://doi.org/10.1016/j.atmosenv.2015.10.055)). +Purpose: This tutorial will step you through the process of adding chemically inert gas phase tracers to the CMAQ model. Inert tracers can be used as a development tool to test mass conservation when modifying processes in CMAQ. They can also be used for exploratory analysis such as studying the persistence or impact of initial and/or boundary conditions on air quality model estimates, e.g., [Hogrefe et al. (2017)](https://doi.org/10.1016/j.atmosenv.2017.04.009), [Liu et al. (2018)](https://doi.org/10.5194/acp-18-17157-2018). Note that inert tracers are not a replacement for source contribution analysis (e.g., [CMAQ ISAM](../CMAQ_UG_ch11_ISAM.md)) that provides an estimate of how much of a chemically reactive modeled pollutant came from specific sources or processes ([Baker et al. (2015)](https://doi.org/10.1016/j.atmosenv.2015.10.055)). ------------ From d2faa4be0317a565d2b5c0e4a1d1dace4f92edbb Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 17:08:14 -0400 Subject: [PATCH 026/375] Update CMAQ_UG_tutorial_tracers.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md index 34b5ca04c..a6b2b9b80 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md @@ -27,7 +27,7 @@ Create namelist according to Table 4-2 in the [CMAQ User's Guide](../CMAQ_UG_ch0 | |8| FAC | Integer |Scaling factor for the deposition velocity|{Any integer: default = -1 if SURR is not specified}| | |9| WET-SCAV SURR | String |Wet Deposition Scavenging surrogate species|-| | | 10 | FAC | Integer |Scaling factor for Scavenging|{Any integer: default = -1 if SURR is not specified}| -|| 11 | TR2AE SURR | String |Gas-to-aerosol transformation species|-| +|| 11 | TR2AE SURR | String |Gas-to-aerosol transformation species|Not currently functional in CMAQ| || 12 | TR2AQ SURR | String |Gas-to-aqueous transformation species|-| || 13 | TRNS | String |Transport Switch. *NOTE: Instead of using one column labeled "TRNS" to turn/off both advection and diffusion for a pollutant, two separate columns labeled "ADV" and "DIFF" can be used to switch on/off advection and diffusion separately.|{YES/NO}| || 14 | DDEP | String |Dry deposition output file switch|{YES/NO}| From 982d5a12834f2c89d9cf84625137890247b14430 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 17:09:21 -0400 Subject: [PATCH 027/375] Update CMAQ_UG_tutorial_tracers.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md index a6b2b9b80..0ecd2ca42 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md @@ -28,7 +28,7 @@ Create namelist according to Table 4-2 in the [CMAQ User's Guide](../CMAQ_UG_ch0 | |9| WET-SCAV SURR | String |Wet Deposition Scavenging surrogate species|-| | | 10 | FAC | Integer |Scaling factor for Scavenging|{Any integer: default = -1 if SURR is not specified}| || 11 | TR2AE SURR | String |Gas-to-aerosol transformation species|Not currently functional in CMAQ| -|| 12 | TR2AQ SURR | String |Gas-to-aqueous transformation species|-| +|| 12 | TR2AQ SURR | String |Gas-to-aqueous transformation species|Allows the tracer to participate in aqueous phase chemical reactions| || 13 | TRNS | String |Transport Switch. *NOTE: Instead of using one column labeled "TRNS" to turn/off both advection and diffusion for a pollutant, two separate columns labeled "ADV" and "DIFF" can be used to switch on/off advection and diffusion separately.|{YES/NO}| || 14 | DDEP | String |Dry deposition output file switch|{YES/NO}| || 15 | WDEP | Real |Wet deposition output file switch|{YES/NO}| From 10e33ef3718b12e1f2b49ec1f65562932cfdf2e8 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 17:10:52 -0400 Subject: [PATCH 028/375] Update CMAQ_UG_tutorial_tracers.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md index 0ecd2ca42..3e9932bac 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md @@ -19,7 +19,7 @@ Create namelist according to Table 4-2 in the [CMAQ User's Guide](../CMAQ_UG_ch0 | 3 || Header ID | String |String to define data structure relating to namelist|{TR_SPECIES_DATA = }| | 5 |1| SPECIES | String |CMAQ Species name, i.e. NO, HNO3, PAR; dependent on chemical mechanism|-| ||2| MOLWT| Integer |Species Molecular Weight|-| -| |3| IC | String |IC/ surrogate species name for the CMAQ Species|{'Species name', ' '}| +| |3| IC | String |Initial conditions surrogate species name for the CMAQ Species|{'Species name', ' '}| | |4| FAC | Integer |Scaling factor for the IC/BC concentration|{Any integer: default = -1 if IC is not specified}| | |5| BC | String |surrogate species name for the CMAQ Species|{'Species name', ' '}| | |6| FAC | Integer |Scaling factor for the IC/BC concentration|{Any integer: default = -1 if BC is not specified}| @@ -27,8 +27,8 @@ Create namelist according to Table 4-2 in the [CMAQ User's Guide](../CMAQ_UG_ch0 | |8| FAC | Integer |Scaling factor for the deposition velocity|{Any integer: default = -1 if SURR is not specified}| | |9| WET-SCAV SURR | String |Wet Deposition Scavenging surrogate species|-| | | 10 | FAC | Integer |Scaling factor for Scavenging|{Any integer: default = -1 if SURR is not specified}| -|| 11 | TR2AE SURR | String |Gas-to-aerosol transformation species|Not currently functional in CMAQ| -|| 12 | TR2AQ SURR | String |Gas-to-aqueous transformation species|Allows the tracer to participate in aqueous phase chemical reactions| +|| 11 | TR2AE SURR | String |Surrogate species name for gas-to-aerosol transformation species|Not currently functional in CMAQ| +|| 12 | TR2AQ SURR | String |Surrogate species name for aqueous phase reactions|Allows the tracer to participate in aqueous phase chemical reactions| || 13 | TRNS | String |Transport Switch. *NOTE: Instead of using one column labeled "TRNS" to turn/off both advection and diffusion for a pollutant, two separate columns labeled "ADV" and "DIFF" can be used to switch on/off advection and diffusion separately.|{YES/NO}| || 14 | DDEP | String |Dry deposition output file switch|{YES/NO}| || 15 | WDEP | Real |Wet deposition output file switch|{YES/NO}| From 9fe081b42bad471c6a19c146ae480d1b1f937b5e Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 17:12:43 -0400 Subject: [PATCH 029/375] Update CMAQ_UG_tutorial_tracers.md --- .../Tutorials/CMAQ_UG_tutorial_tracers.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md index 3e9932bac..38b7249e0 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md @@ -19,14 +19,14 @@ Create namelist according to Table 4-2 in the [CMAQ User's Guide](../CMAQ_UG_ch0 | 3 || Header ID | String |String to define data structure relating to namelist|{TR_SPECIES_DATA = }| | 5 |1| SPECIES | String |CMAQ Species name, i.e. NO, HNO3, PAR; dependent on chemical mechanism|-| ||2| MOLWT| Integer |Species Molecular Weight|-| -| |3| IC | String |Initial conditions surrogate species name for the CMAQ Species|{'Species name', ' '}| -| |4| FAC | Integer |Scaling factor for the IC/BC concentration|{Any integer: default = -1 if IC is not specified}| -| |5| BC | String |surrogate species name for the CMAQ Species|{'Species name', ' '}| -| |6| FAC | Integer |Scaling factor for the IC/BC concentration|{Any integer: default = -1 if BC is not specified}| -| |7| DRYDEP SURR | String |Deposition velocity variable name for the CMAQ Species|-| +| |3| IC | String |Initial conditions surrogate species name|{'Species name', ' '}| +| |4| FAC | Integer |Scaling factor for the inital conditions concentration|{Any integer: default = -1 if IC is not specified}| +| |5| BC | String |Boundary conditions surrogate species name|{'Species name', ' '}| +| |6| FAC | Integer |Scaling factor for the boundary concentration|{Any integer: default = -1 if BC is not specified}| +| |7| DRYDEP SURR | String |Surrogate specie name for dry deposition|-| | |8| FAC | Integer |Scaling factor for the deposition velocity|{Any integer: default = -1 if SURR is not specified}| -| |9| WET-SCAV SURR | String |Wet Deposition Scavenging surrogate species|-| -| | 10 | FAC | Integer |Scaling factor for Scavenging|{Any integer: default = -1 if SURR is not specified}| +| |9| WET-SCAV SURR | String |Surrograte specie name for wet deposition|-| +| | 10 | FAC | Integer |Scaling factor for wet scavenging|{Any integer: default = -1 if SURR is not specified}| || 11 | TR2AE SURR | String |Surrogate species name for gas-to-aerosol transformation species|Not currently functional in CMAQ| || 12 | TR2AQ SURR | String |Surrogate species name for aqueous phase reactions|Allows the tracer to participate in aqueous phase chemical reactions| || 13 | TRNS | String |Transport Switch. *NOTE: Instead of using one column labeled "TRNS" to turn/off both advection and diffusion for a pollutant, two separate columns labeled "ADV" and "DIFF" can be used to switch on/off advection and diffusion separately.|{YES/NO}| From 2bb304b5dd92d840fb09edfc046d0768be55240c Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 17:19:04 -0400 Subject: [PATCH 030/375] Update CMAQ_UG_tutorial_tracers.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md index 38b7249e0..914777be1 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md @@ -15,7 +15,7 @@ Create namelist according to Table 4-2 in the [CMAQ User's Guide](../CMAQ_UG_ch0 | **Line**| **Column** |**Name** | **Type**| **Description** |**Options for Syntax**:| |-----|-----|----------------------|----------|--------------------------------------------|----------------------------| -| 1 || File Type |String|String to delineate Gas Phase (GC), Aerosol (AE), Non-reactive (NR) and Tracer (TR) species namelist|{TR_nml}| +| 1 || File Type |String|String to delineate Gas Phase (GC), Aerosol (AE), Non-reactive (NR) and Tracer (TR) species namelist. This section is only applicable for "TR" format files.|{TR_nml}| | 3 || Header ID | String |String to define data structure relating to namelist|{TR_SPECIES_DATA = }| | 5 |1| SPECIES | String |CMAQ Species name, i.e. NO, HNO3, PAR; dependent on chemical mechanism|-| ||2| MOLWT| Integer |Species Molecular Weight|-| From 8c4ea85997e1145bfe147243909406bf802d0dac Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 19:42:10 -0400 Subject: [PATCH 031/375] Update CMAQ_UG_tutorial_tracers.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md index 914777be1..540efec4f 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md @@ -24,7 +24,7 @@ Create namelist according to Table 4-2 in the [CMAQ User's Guide](../CMAQ_UG_ch0 | |5| BC | String |Boundary conditions surrogate species name|{'Species name', ' '}| | |6| FAC | Integer |Scaling factor for the boundary concentration|{Any integer: default = -1 if BC is not specified}| | |7| DRYDEP SURR | String |Surrogate specie name for dry deposition|-| -| |8| FAC | Integer |Scaling factor for the deposition velocity|{Any integer: default = -1 if SURR is not specified}| +| |8| FAC | Integer |Scaling factor for dry deposition velocity|{Any integer: default = -1 if SURR is not specified}| | |9| WET-SCAV SURR | String |Surrograte specie name for wet deposition|-| | | 10 | FAC | Integer |Scaling factor for wet scavenging|{Any integer: default = -1 if SURR is not specified}| || 11 | TR2AE SURR | String |Surrogate species name for gas-to-aerosol transformation species|Not currently functional in CMAQ| From a9ca72e03583057e51708c43ff3e2e905c5b2798 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 19:42:58 -0400 Subject: [PATCH 032/375] Update CMAQ_UG_tutorial_tracers.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md index 540efec4f..917b7d0cd 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md @@ -13,7 +13,7 @@ Create namelist according to Table 4-2 in the [CMAQ User's Guide](../CMAQ_UG_ch0 **Amended from Table 4-2 in the CMAQ User's Guide** -| **Line**| **Column** |**Name** | **Type**| **Description** |**Options for Syntax**:| +| **Line**| **Column** |**Name** | **Type**| **Description** |**Comments/Options for Syntax**:| |-----|-----|----------------------|----------|--------------------------------------------|----------------------------| | 1 || File Type |String|String to delineate Gas Phase (GC), Aerosol (AE), Non-reactive (NR) and Tracer (TR) species namelist. This section is only applicable for "TR" format files.|{TR_nml}| | 3 || Header ID | String |String to define data structure relating to namelist|{TR_SPECIES_DATA = }| From 4bd7f626ba682aa0f3bfe511c8e946a0937716e8 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 20:18:40 -0400 Subject: [PATCH 033/375] Update CMAQ_UG_tutorial_tracers.md --- .../Tutorials/CMAQ_UG_tutorial_tracers.md | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md index 917b7d0cd..1b9adba7e 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md @@ -114,7 +114,20 @@ TR_SPECIES_DATA = * will not be written to the DDEP and WDEP output files * will be written to the CONC output file -### STEP 2: Add tracers to initial condition, boundary condition, and/or emission files +### STEP 2: Add tracers to DESID configuration files + +If the tracer has emissions then it must be included as part of the DESID configuration for CMAQ. If the tracers are only being added to the initial or boundary conditions file then this step is not necessary. + +The CO_EMIS tracer is designed to track the fate of CO emissions without any influence from initial or boundary conditions and therefore no IC/BC surrogate was specified and no additional species needs to be added to the initial condition file for this tracer. However, it must be specified in the mechanism-specific CMAQ_Control_DESID file found under CCTM/src/MECHS/*{mechanism name}* in the CMAQ repository. For example if running the cb6r3_ae7_aq mechanism, edit the CMAQ_Control_DESID_cb6r3_ae7_aq.nml file to include the following line after the Custom Mapping Examples in the Emissions Scaling Rules section: + +``` + ! Region | Stream Label |Emission | CMAQ- |Phase/|Scale |Basis |Op + ! Label | |Species | Species |Mode |Factor| | + !Tracer + 'EVERYWHERE' , 'ALL' ,'CO' ,'CO_EMIS' ,'GAS',1. ,'UNIT','a', +``` + +### STEP 3: Add tracers to initial condition, boundary condition, and/or emission files Depending on the desired application, the emission surrogate and IC/BC surrogate defined in the tracer namelist for each tracer need to be added to the corresponding CMAQ input files, i.e. the emissions, initial condition, and/or boundary condition files. @@ -125,7 +138,7 @@ Note that adding species (if any) to the initial condition file is only necessar #### Script to add O3_IC and ICT_50PPB to an existing initial condition file #### -The run script below uses the [`combine`](../../../POST/combine) program to add species ICT_50PB to an existing initial condition file. . ICT_50PPB is set to a constant mixing ratio of 0.05 ppm for all grid cells. From the CMAQ Home directory run the following commands to build the combine executable: +The run script below uses the [`combine`](../../../POST/combine) program to add species ICT_50PB to an existing initial condition file. The ICT_50PPB specie is set to a constant mixing ratio of 0.05 ppm for all grid cells. From the CMAQ Home directory run the following commands to build the combine executable: ``` cd $CMAQ_HOME/POST/combine/scripts @@ -224,18 +237,9 @@ Once the script is made, execute the run script with the following commands: ./run.{script_name}.csh |& tee run.combine.log ``` -The CO_EMIS tracer is designed to track the fate of CO emissions without any influence from initial or boundary conditions and therefore no IC/BC surrogate was specified and no additional species needs to be added to the initial condition file for this tracer. However, it must be specified in the mechanism-specific CMAQ_Control_DESID file found under CCTM/src/MECHS/*{mechanism name}* in the CMAQ repository. For example if running the cb6r3_ae7_aq mechanism, edit the CMAQ_Control_DESID_cb6r3_ae7_aq.nml file to include the following line after the Custom Mapping Examples in the Emissions Scaling Rules section: - -``` - ! Region | Stream Label |Emission | CMAQ- |Phase/|Scale |Basis |Op - ! Label | |Species | Species |Mode |Factor| | - !Tracer - 'EVERYWHERE' , 'ALL' ,'CO' ,'CO_EMIS' ,'GAS',1. ,'UNIT','a', -``` - Further details on how to change and customize the emissions control file to the users specification outside the scope of this tutorial can be found in the [emissions tutorial](CMAQ_UG_tutorial_emissions.md). -### STEP 3: Modify CMAQ run script +### STEP 4: Modify CMAQ run script -In the CMAQ run script, replace the default tracer namelist file `Species_Table_TR_0.nml` with the custom tracer namelist file created in STEP 1. Also replace the original input files (initial conditions, boundary conditions, and/or emissions) with the modified input files created in Step 2. +In the CMAQ run script, replace the default tracer namelist file `Species_Table_TR_0.nml` with the custom tracer namelist file created in STEP 1 and new DESID namelist file created in STEP 2 (if needed). Also replace the original input files (initial conditions, boundary conditions, and/or emissions) with the modified input files created in Step 3. From ba11f55cd030c2bb33493399a37330d4e94ca84c Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Mon, 10 Jun 2024 20:21:38 -0400 Subject: [PATCH 034/375] Update CMAQ_UG_tutorial_tracers.md --- .../Tutorials/CMAQ_UG_tutorial_tracers.md | 102 +++++++++--------- 1 file changed, 52 insertions(+), 50 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md index 1b9adba7e..0a61322f0 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_tracers.md @@ -3,55 +3,7 @@ Purpose: This tutorial will step you through the process of adding chemically inert gas phase tracers to the CMAQ model. Inert tracers can be used as a development tool to test mass conservation when modifying processes in CMAQ. They can also be used for exploratory analysis such as studying the persistence or impact of initial and/or boundary conditions on air quality model estimates, e.g., [Hogrefe et al. (2017)](https://doi.org/10.1016/j.atmosenv.2017.04.009), [Liu et al. (2018)](https://doi.org/10.5194/acp-18-17157-2018). Note that inert tracers are not a replacement for source contribution analysis (e.g., [CMAQ ISAM](../CMAQ_UG_ch11_ISAM.md)) that provides an estimate of how much of a chemically reactive modeled pollutant came from specific sources or processes ([Baker et al. (2015)](https://doi.org/10.1016/j.atmosenv.2015.10.055)). ------------ - - -### STEP 1: Create tracer namelist - -Create namelist according to Table 4-2 in the [CMAQ User's Guide](../CMAQ_UG_ch04_model_inputs.md#Table4-2). Include one line for each tracer species with the following format (refer to the table below for more information on the abbreviations): - - - -**Amended from Table 4-2 in the CMAQ User's Guide** - -| **Line**| **Column** |**Name** | **Type**| **Description** |**Comments/Options for Syntax**:| -|-----|-----|----------------------|----------|--------------------------------------------|----------------------------| -| 1 || File Type |String|String to delineate Gas Phase (GC), Aerosol (AE), Non-reactive (NR) and Tracer (TR) species namelist. This section is only applicable for "TR" format files.|{TR_nml}| -| 3 || Header ID | String |String to define data structure relating to namelist|{TR_SPECIES_DATA = }| -| 5 |1| SPECIES | String |CMAQ Species name, i.e. NO, HNO3, PAR; dependent on chemical mechanism|-| -||2| MOLWT| Integer |Species Molecular Weight|-| -| |3| IC | String |Initial conditions surrogate species name|{'Species name', ' '}| -| |4| FAC | Integer |Scaling factor for the inital conditions concentration|{Any integer: default = -1 if IC is not specified}| -| |5| BC | String |Boundary conditions surrogate species name|{'Species name', ' '}| -| |6| FAC | Integer |Scaling factor for the boundary concentration|{Any integer: default = -1 if BC is not specified}| -| |7| DRYDEP SURR | String |Surrogate specie name for dry deposition|-| -| |8| FAC | Integer |Scaling factor for dry deposition velocity|{Any integer: default = -1 if SURR is not specified}| -| |9| WET-SCAV SURR | String |Surrograte specie name for wet deposition|-| -| | 10 | FAC | Integer |Scaling factor for wet scavenging|{Any integer: default = -1 if SURR is not specified}| -|| 11 | TR2AE SURR | String |Surrogate species name for gas-to-aerosol transformation species|Not currently functional in CMAQ| -|| 12 | TR2AQ SURR | String |Surrogate species name for aqueous phase reactions|Allows the tracer to participate in aqueous phase chemical reactions| -|| 13 | TRNS | String |Transport Switch. *NOTE: Instead of using one column labeled "TRNS" to turn/off both advection and diffusion for a pollutant, two separate columns labeled "ADV" and "DIFF" can be used to switch on/off advection and diffusion separately.|{YES/NO}| -|| 14 | DDEP | String |Dry deposition output file switch|{YES/NO}| -|| 15 | WDEP | Real |Wet deposition output file switch|{YES/NO}| -|| 16 | CONC | String |Concentration output file switch|{YES/NO}| - -The example namelist file shown below defines six tracer species. - - -``` -&TR_nml - -TR_SPECIES_DATA = - -!SPECIES ,MOLWT ,IC ,IC_FAC ,BC ,BC_FAC ,DEPV ,DEPV_FAC ,SCAV ,SCAV_FAC ,TR2AE ,TR2AQ ,ADVC ,DIFF ,DDEP ,WDEP ,CONC -'O3_BC' ,48.0 ,'' ,-1 ,'O3' , 1 ,'VD_O3' ,1 ,'O3' , 1 ,'' ,'' ,'YES' ,'YES' ,'YES' ,'YES' ,'YES', -'CO_BC' ,28.0 ,'' ,-1 ,'CO' , 1 ,'VD_CO' ,1 ,'CO' , 1 ,'' ,'' ,'YES' ,'YES' ,'YES' ,'YES' ,'YES', -'O3_IC' ,48.0 ,'O3' , 1 ,'' ,-1 ,'VD_O3' ,1 ,'O3' , 1 ,'' ,'' ,'YES' ,'YES' ,'YES' ,'YES' ,'YES', -'O3_BC_50PC' ,48.0 ,'' ,-1 ,'O3' ,0.5 ,'VD_O3' ,1 ,'O3' , 1 ,'' ,'' ,'YES' ,'YES' ,'YES' ,'YES' ,'YES', -'CO_EMIS' ,28.0 ,'' ,-1 ,'' ,-1 ,'VD_CO' ,1 ,'CO' , 1 ,'' ,'' ,'YES' ,'YES' ,'YES' ,'YES' ,'YES', -'ICT_50PPB' , 1.0 ,'ICT_50PPB' , 1 ,'' ,-1 ,'' ,-1 , ,-1 ,'' ,'' ,'YES' ,'YES' ,'' ,'' ,'YES' -/ - -``` +This tutorial will cover 5 different examples to illustrate how adding tracers to the ICBC and emissions input files are similar and highlight important differences to consider when developing a new application. **The first tracer species O3_BC** * is defined to have the same molecular weight as ozone @@ -112,7 +64,57 @@ TR_SPECIES_DATA = * does not participate in gas-to-aerosol or gas-to-aqueous transformations * will undergo advection and diffusion * will not be written to the DDEP and WDEP output files - * will be written to the CONC output file + * will be written to the CONC output file + +------------ + +### STEP 1: Create tracer namelist + +Create namelist according to Table 4-2 in the [CMAQ User's Guide](../CMAQ_UG_ch04_model_inputs.md#Table4-2). Include one line for each tracer species with the following format (refer to the table below for more information on the abbreviations): + + + +**Amended from Table 4-2 in the CMAQ User's Guide** + +| **Line**| **Column** |**Name** | **Type**| **Description** |**Comments/Options for Syntax**:| +|-----|-----|----------------------|----------|--------------------------------------------|----------------------------| +| 1 || File Type |String|String to delineate Gas Phase (GC), Aerosol (AE), Non-reactive (NR) and Tracer (TR) species namelist. This section is only applicable for "TR" format files.|{TR_nml}| +| 3 || Header ID | String |String to define data structure relating to namelist|{TR_SPECIES_DATA = }| +| 5 |1| SPECIES | String |CMAQ Species name, i.e. NO, HNO3, PAR; dependent on chemical mechanism|-| +||2| MOLWT| Integer |Species Molecular Weight|-| +| |3| IC | String |Initial conditions surrogate species name|{'Species name', ' '}| +| |4| FAC | Integer |Scaling factor for the inital conditions concentration|{Any integer: default = -1 if IC is not specified}| +| |5| BC | String |Boundary conditions surrogate species name|{'Species name', ' '}| +| |6| FAC | Integer |Scaling factor for the boundary concentration|{Any integer: default = -1 if BC is not specified}| +| |7| DRYDEP SURR | String |Surrogate specie name for dry deposition|-| +| |8| FAC | Integer |Scaling factor for dry deposition velocity|{Any integer: default = -1 if SURR is not specified}| +| |9| WET-SCAV SURR | String |Surrograte specie name for wet deposition|-| +| | 10 | FAC | Integer |Scaling factor for wet scavenging|{Any integer: default = -1 if SURR is not specified}| +|| 11 | TR2AE SURR | String |Surrogate species name for gas-to-aerosol transformation species|Not currently functional in CMAQ| +|| 12 | TR2AQ SURR | String |Surrogate species name for aqueous phase reactions|Allows the tracer to participate in aqueous phase chemical reactions| +|| 13 | TRNS | String |Transport Switch. *NOTE: Instead of using one column labeled "TRNS" to turn/off both advection and diffusion for a pollutant, two separate columns labeled "ADV" and "DIFF" can be used to switch on/off advection and diffusion separately.|{YES/NO}| +|| 14 | DDEP | String |Dry deposition output file switch|{YES/NO}| +|| 15 | WDEP | Real |Wet deposition output file switch|{YES/NO}| +|| 16 | CONC | String |Concentration output file switch|{YES/NO}| + +The example namelist file shown below defines six tracer species. + + +``` +&TR_nml + +TR_SPECIES_DATA = + +!SPECIES ,MOLWT ,IC ,IC_FAC ,BC ,BC_FAC ,DEPV ,DEPV_FAC ,SCAV ,SCAV_FAC ,TR2AE ,TR2AQ ,ADVC ,DIFF ,DDEP ,WDEP ,CONC +'O3_BC' ,48.0 ,'' ,-1 ,'O3' , 1 ,'VD_O3' ,1 ,'O3' , 1 ,'' ,'' ,'YES' ,'YES' ,'YES' ,'YES' ,'YES', +'CO_BC' ,28.0 ,'' ,-1 ,'CO' , 1 ,'VD_CO' ,1 ,'CO' , 1 ,'' ,'' ,'YES' ,'YES' ,'YES' ,'YES' ,'YES', +'O3_IC' ,48.0 ,'O3' , 1 ,'' ,-1 ,'VD_O3' ,1 ,'O3' , 1 ,'' ,'' ,'YES' ,'YES' ,'YES' ,'YES' ,'YES', +'O3_BC_50PC' ,48.0 ,'' ,-1 ,'O3' ,0.5 ,'VD_O3' ,1 ,'O3' , 1 ,'' ,'' ,'YES' ,'YES' ,'YES' ,'YES' ,'YES', +'CO_EMIS' ,28.0 ,'' ,-1 ,'' ,-1 ,'VD_CO' ,1 ,'CO' , 1 ,'' ,'' ,'YES' ,'YES' ,'YES' ,'YES' ,'YES', +'ICT_50PPB' , 1.0 ,'ICT_50PPB' , 1 ,'' ,-1 ,'' ,-1 , ,-1 ,'' ,'' ,'YES' ,'YES' ,'' ,'' ,'YES' +/ + +``` ### STEP 2: Add tracers to DESID configuration files From 1f10ddafc5f7341b0938933c4cfb7477afc18128 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 10 Jun 2024 22:23:44 -0400 Subject: [PATCH 035/375] Update CMAQ_UG_ch13_WRF-CMAQ.md --- DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md b/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md index d702cc650..21f798e08 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md @@ -35,7 +35,7 @@ Hemispheric WRF-CMAQ model simulation over two decades (1990−2010) shows enhan Starting from WRFv4.4 and CMAQv5.4, a user can construct the coupled model with any version of WRF (v4.4 or later) and any version of CMAQ (v5.4 or later). A complete step by step build process and run instructions are provided in the [WRF-CMAQ Tutorial](Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md). #### WRF-CMAQ bug in v5.3 series -A bug was identified within the CMAQ to WRF coupling routine (twoway_feedback.F90) where aerosol feedback information is transferred from CMAQ to WRF. In doing so, it was found that WRF was not receiving the correct aerosol feedback information in some cases due to a looping error relating to the number of layers. The bug impacts the WRF-CMAQ coupled system in the CMAQv5.3 release series (v5.3, v5.3.1, v5.3.2, v5.3.3) when running with short wave radiative feedback. The bug was not present in prior WRF-CMAQ versions. The bugfix in CMAQv5.4 now correctly captures the variations in the aerosol optical properties and consequently the direct feedback effects through all layers. **Users of WRF-CMAQv5.3 are strongly encouraged to update to CMAQv5.4 or later. See the [WRF-CMAQ Bugfix Release Note](https://github.com/kmfoley/CMAQ_Dev/wiki/CMAQv5.4-Release-Notes:-WRF-CMAQ-Coupled-Model#wrf-cmaq-model-aerosol-feedback-bugfix) for more information.** +A bug was identified within the CMAQ to WRF coupling routine (twoway_feedback.F90) where aerosol feedback information is transferred from CMAQ to WRF. In doing so, it was found that WRF was not receiving the correct aerosol feedback information in some cases due to a looping error relating to the number of layers. The bug impacts the WRF-CMAQ coupled system in the CMAQv5.3 release series (v5.3, v5.3.1, v5.3.2, v5.3.3) when running with short wave radiative feedback. The bug was not present in prior WRF-CMAQ versions. The bugfix in CMAQv5.4 (and all subsequent versions) correctly captures the variations in the aerosol optical properties and consequently the direct feedback effects through all layers. **Users of WRF-CMAQv5.3 are strongly encouraged to update to CMAQv5.4 or later. See the [WRF-CMAQ Bugfix Release Note](https://github.com/kmfoley/CMAQ_Dev/wiki/CMAQv5.4-Release-Notes:-WRF-CMAQ-Coupled-Model#wrf-cmaq-model-aerosol-feedback-bugfix) for more information.** ## 13.5 WRF-CMAQ Benchmark Test Case See the [WRF-CMAQ Benchmark Tutorial](Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md) for step-by-step instructions for running the 2 day benchmark case. The input files for the WRF-CMAQ benchmark case are provided in the base model benchmark inputs .tar file. Output WRF-CMAQ files associated with the sample run script for the coupled WRF-CMAQ model in this release package are provided in the base model benchmark outputs .tar file. From 43b9c7d87da13814f6bad18cdcea344b5edbc831 Mon Sep 17 00:00:00 2001 From: chogrefe Date: Tue, 11 Jun 2024 07:49:52 -0400 Subject: [PATCH 036/375] UG_ch07 MEDIA_CONC clean-up Changed "CCTM_MEDIA" to "CCTM_MEDIA_CONC" for consistency with the run scripts. Clarified that for the M3Dry ABFLUX == T case, this file is purely diagnostic and not used for any restart since M3Dry relies only on input files generated by EPIC to calculate the soil compensation point. --- DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md index e2a83bcf4..2be29f937 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md @@ -27,7 +27,7 @@ In this section, details on the routine CCTM output files are provided. All CMAQ |[CCTM_WETDEP1](#wetdep) |GRDDED3|Hourly Cumulative|XY |**Restart**| | | | |[CCTM_CGRID](#cgrid) |GRDDED3|Hourly Instantaneous|XYZ -|[CCTM_MEDIA](#media)|GRDDED3|Hourly Instantaneous|XY +|[CCTM_MEDIA_CONC](#media)|GRDDED3|Hourly Instantaneous|XY |[CCTM_BSOILOUT](#soilout) |GRDDED3|n/a (see detailed file description below)|XY |[CCTM_MSOILOUT](#soilout) |GRDDED3|n/a (see detailed file description below)|XY |[CCTM_BDSNPOUT](#bdsnpout) |GRDDED3|n/a (see detailed file description below)|XY @@ -181,12 +181,12 @@ The 3-D CCTM ending concentration file contains gas-phase species mixing ratios -**CCTM_MEDIA: Bidirectional modeling media concentration file** +**CCTM_MEDIA_CONC: Bidirectional modeling media concentration file** -[Return to Table 7-1](#media_t) +[Return to Table 7-1](#media_conc_t) -This 2-D CCTM file contains the soil NH4+ and pH concentrations and/or the soil, vegetation and water Hg concentrations. This file is only created when the CTM_ABFLUX environment variable or the CTM_HGBIDI variable in the RunScript is set to Y (Default is N) and is used to initialize the next day of the model simulation. +This 2-D CCTM file contains the soil NH4+ and pH concentrations and/or the soil, vegetation and water Hg concentrations. This file is only created when the CTM_ABFLUX environment variable or the CTM_HGBIDI variable in the RunScript is set to Y (Default is N) for either the M3Dry or STAGE dry deposition option. For STAGE, it is used to initialize the next day of the model simulation for either the CTM_ABFLUX == Y or CTM_HGBIDI == Y case. For M3Dry, it is only used to initialize the next day of the model simulation for the CTM_HGBDIDI == Y case while the the soil NH4+ and pH concentrations written to this file for the CTM_ABFLUX == Y case are purely diagnostic. As described in [Chapter 6](https://github.com/kmfoley/CMAQ_Dev/blob/5.5_docs/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.8.1_Dry_Depm3dry), M3Dry relies exclusively on input files generated by EPIC to derive the soil compensation concentration for the bidirectional NH3+ flux calculation. From 3bbbe168314abeca2fc615db97bb9f769c5b18b4 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Tue, 11 Jun 2024 08:53:57 -0400 Subject: [PATCH 037/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index 3b303298f..cfef9685f 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -17,7 +17,7 @@ Full input datasets for 2016 over two domains are publically available to downlo |**Domain**|**Simulation Dates**|**Dataverse DOI**| |:--------------:|:----:|:--------:| | Southeast US | July 1 - 14, 2016| https://doi.org/10.15139/S3/IQVABD | -| CONUS | Jan 1 - Dec 31, 2016 | https://doi.org/10.15139/S3/MHNUNE | +| Conterminous U.S. (CONUS) | Jan 1 - Dec 31, 2016 | https://doi.org/10.15139/S3/MHNUNE | ## 4.2 CMAQ Pre-processors From 8b1a82cad6541705811f615f8efe35abde242390 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Tue, 11 Jun 2024 09:00:33 -0400 Subject: [PATCH 038/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index cfef9685f..3e7ce171b 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -21,14 +21,13 @@ Full input datasets for 2016 over two domains are publically available to downlo ## 4.2 CMAQ Pre-processors -[Figure 2-1](./images/Figure2-1.jpg) shows the relationship between CMAQ pre-processors and the main CMAQ program, the CMAQ Chemistry Transport Model (CCTM). MCIP, ICON and BCON are included in the CMAQ repository and are used to create meteorological, initial conditions and boundary conditions inputs. SMOKE, FEST-C and Spatial Allocator Tools are external software packages required for creating emissions inputs for CMAQ. The following subsections provide more information on these software and point the user to additional sources of documentation. +[Figure 2-1](./images/Figure2-1.jpg) shows the relationship between CMAQ pre-processors and the main CMAQ program, the CMAQ Chemistry Transport Model (CCTM). MCIP, ICON and BCON are included in the CMAQ repository and are used to create meteorological, initial conditions and boundary conditions inputs. SMOKE, FEST-C and Spatial Allocator Tools are external software packages used for creating emissions inputs for CMAQ. The following subsections provide more information on these tools and point the user to additional sources of documentation. ### 4.2.1 Meteorology-Chemistry Interface Processor (MCIP) -MCIP processes meteorological fields output by the WRF model into files that are compatible with the CCTM and SMOKE (an emissions processor that computes emissions inputs for CMAQ). The output files generated by MCIP are used by ICON and BCON and various other programs in CMAQ, so MCIP must be the first program run after installing the CMAQ source codes and initializing CMAQ environment variables. Configuration options for MCIP include the time periods over which to extract data from the meteorological model output files, horizontal grid definitions for output, and control for optional 3D output variables. MCIP can either process the full horizontal domain from WRF or a user-defined subset of that domain (that is, a "window"). Unlike many of the programs in the CMAQ program suite MCIP is compiled with a Makefile and then run with a run script. Instructions on how to compile and run MCIP are provided in the [README.md](../../PREP/mcip/README.md) file in the PREP/mcip folder. - -Most of the fields that are simulated by WRF are not modified by MCIP for the CCTM and the emissions model, and they are "passed through" to the output. In additions, fields that are required to transform to CMAQ’s generalized coordinate system are calculated within MCIP. The dry deposition velocities are now calculated in the CCTM; MCIPv3.4 was the last version to calculate those velocities internally. +MCIP processes meteorological fields output by the WRF model into files that are compatible with the CCTM and SMOKE (an emissions processor that computes emissions inputs for CMAQ). The output files generated by MCIP are used by ICON and BCON and various other programs in CMAQ, so MCIP must be the first program run after installing the CMAQ source codes and initializing CMAQ environment variables. Configuration options for MCIP include the time periods over which to extract data from the meteorological model output files, horizontal grid definitions for output, and control for optional 3D output variables. MCIP can either process the full horizontal domain from WRF or a user-defined subset of that domain (that is, a "window"). Most of the fields that are simulated by WRF are not modified by MCIP for the CCTM or emissions model and are simply "passed through" to the output. Where needed, MCIP transforms data from the WRF projection and coordinate system to be consistent with that being used for CMAQ simulations. +Unlike many of the tools distributed with CMAQ, MCIP is compiled with a Makefile and then run with a run script. Instructions on how to compile and run MCIP are provided in the [README.md](../../PREP/mcip/README.md) file in the PREP/mcip folder. ### 4.2.2 Initial Conditions Processor (ICON) From 3b439c0ea04a25f7443dd0d6e1b21cb4228cd120 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Tue, 11 Jun 2024 09:09:09 -0400 Subject: [PATCH 039/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index 3e7ce171b..c1e2e2e8f 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -55,7 +55,7 @@ The configuration options for BCON include choosing whether the boundary conditi The SMOKE and FEST-C modeling systems and the Spatial Allocator tools are used to create CMAQ emissions and land surface inputs. These systems are maintained by EPA and CMAS developers and are hosted and supported by the CMAS Center. Links to documentation and software download for each system are provided below. **Emissions Processor (SMOKE)** -[Sparse Matrix Operator Kerner Emissions (SMOKE) Modeling System](https://www.cmascenter.org/smoke/) is designed to create gridded, speciated, hourly emissions for input into CMAQ and other air quality models. SMOKE supports area, biogenic, mobile (both onroad and nonroad), and point source emissions processing for criteria, particulate, and toxic pollutants. For biogenic emissions modeling, SMOKE uses the Biogenic Emission Inventory System. SMOKE is also integrated with the on-road emissions model MOBILE6 and MOVES. +[Sparse Matrix Operator Kerner Emissions (SMOKE) Modeling System](https://www.cmascenter.org/smoke/) is designed to create gridded, speciated, hourly emissions for input into CMAQ and other air quality models. SMOKE supports area, biogenic, mobile (both onroad and nonroad), and point source emissions processing for criteria, particulate, and toxic pollutants. For biogenic emissions modeling, SMOKE uses the Biogenic Emission Inventory System. **Fertilizer Emissions Processor (FEST-C)** The [Fertilizer Emission Scenario Tool for CMAQ (FEST-C)](https://www.cmascenter.org/fest-c/) system is used to generate agricultural-land nitrogen and soil information for CMAQ bi-directional NH3 modeling. FEST-C contains three main components: Java interface, Environmental Policy Integrated Climate (EPIC) model, and SA Raster Tools. The interface guides users through generating required land use and crop data and EPIC input files and simulating EPIC, and extracting EPIC output for CMAQ. From 7b14e2709973273bbeb362051d68b990b3bf8c26 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Tue, 11 Jun 2024 09:14:01 -0400 Subject: [PATCH 040/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index c1e2e2e8f..1f9ac7867 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -68,7 +68,7 @@ The [Spatial Allocator](https://www.cmascenter.org/sa-tools/) is a set of tools SA is used to generate the surf zone and open ocean file that is a required input for utilizing marine emissions and chemistry in CMAQ. Some chemical mechanisms require the presence of additional variables in the ocean file which can be added by using a Python based tool. This file is discussed later in this chapter under the [OCEAN_1: Sea spray mask](#ocean_1) section. **Python tool for adding DMS and CHLO in the OCEAN file** -An ocean mask file (OCEAN) containing OPEN (open ocean) and SURF (surf zone) is needed for sea spray emissions module in CMAQ. CB6r5m_ae7_aq includes halogen and DMS chemistry which requires two additional parameters in the OCEAN file: DMS (DMS concentrations in seawater) and CHLO (monthly climatological chl-a concentration from MODIS). A Python based tool has been developed for adding DMS and CHLO to the OCEAN file (PYTOOLS/dmschlo/CMAQ_DMS_ChlorA_Plot.ipynb). CB6r5_ae7_aq includes DMS chemistry and also needs DMS in the OCEAN file. Other chemical mechanisms do not need DMS or CHLO. +An ocean mask file (OCEAN) containing OPEN (open ocean) and SURF (surf zone) is needed for sea spray emissions module in CMAQ. Some chemical mechanisms (e.g., CB6r5m_ae7_aq) in CMAQ include halogen and DMS chemistry which requires additional parameters in the OCEAN file: DMS (DMS concentrations in seawater) and CHLO (monthly climatological chl-a concentration from MODIS). A Python based tool has been developed for adding DMS and CHLO to the OCEAN file (PYTOOLS/dmschlo/CMAQ_DMS_ChlorA_Plot.ipynb). Not all chemical mechanisms need DMS and CHLO and some (CB6r5_ae7_aq) only need DMS. Additional information on processing data for CMAQ inputs is provided in [Appendix C](Appendix/CMAQ_UG_appendixC_spatial_data.md). From a67179cc5e468675d25e9c91cb8b3dde995479e3 Mon Sep 17 00:00:00 2001 From: chogrefe Date: Tue, 11 Jun 2024 10:07:54 -0400 Subject: [PATCH 041/375] UG_ch07 fixed link to chapter 6 In my previous commit, I inadvertently introduced an absolute rather than relative path for a link to Chapter 6 documentation. This is fixed in this commit. --- DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md index 2be29f937..728de9c09 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md @@ -186,7 +186,7 @@ The 3-D CCTM ending concentration file contains gas-phase species mixing ratios [Return to Table 7-1](#media_conc_t) -This 2-D CCTM file contains the soil NH4+ and pH concentrations and/or the soil, vegetation and water Hg concentrations. This file is only created when the CTM_ABFLUX environment variable or the CTM_HGBIDI variable in the RunScript is set to Y (Default is N) for either the M3Dry or STAGE dry deposition option. For STAGE, it is used to initialize the next day of the model simulation for either the CTM_ABFLUX == Y or CTM_HGBIDI == Y case. For M3Dry, it is only used to initialize the next day of the model simulation for the CTM_HGBDIDI == Y case while the the soil NH4+ and pH concentrations written to this file for the CTM_ABFLUX == Y case are purely diagnostic. As described in [Chapter 6](https://github.com/kmfoley/CMAQ_Dev/blob/5.5_docs/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.8.1_Dry_Depm3dry), M3Dry relies exclusively on input files generated by EPIC to derive the soil compensation concentration for the bidirectional NH3+ flux calculation. +This 2-D CCTM file contains the soil NH4+ and pH concentrations and/or the soil, vegetation and water Hg concentrations. This file is only created when the CTM_ABFLUX environment variable or the CTM_HGBIDI variable in the RunScript is set to Y (Default is N) for either the M3Dry or STAGE dry deposition option. For STAGE, it is used to initialize the next day of the model simulation for either the CTM_ABFLUX == Y or CTM_HGBIDI == Y case. For M3Dry, it is only used to initialize the next day of the model simulation for the CTM_HGBDIDI == Y case while the the soil NH4+ and pH concentrations written to this file for the CTM_ABFLUX == Y case are purely diagnostic. As described in [Chapter 6](CMAQ_UG_ch06_model_configuration_options.md#6.8.1_Dry_Depm3dry), M3Dry relies exclusively on input files generated by EPIC to derive the soil compensation concentration for the bidirectional NH3+ flux calculation. From f4e2554110078f14069bfa887d98314318cbc852 Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Tue, 11 Jun 2024 11:10:54 -0400 Subject: [PATCH 042/375] Update CMAQ_UG_ch07_model_outputs.md Christian pointed out that some variables have been removed from this output file. --- DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md index 728de9c09..351becb86 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md @@ -148,12 +148,7 @@ When the model is run with CTM_ABFLUX set to Y, the CCTM_DRYDEP file will contai |NH3|Downward Deposition Flux (always positive) | |NH3_Emis|Upward Emissions Flux (always positive) | |NH3_Flux|Net Flux (positive if downward and negative if upward) | -|NH3_Stom*|NH3 flux from leaf stomatal pathways (positive values are emissions and negative values are deposition) | -|NH3_Cut*|NH3 flux from leaf cuticular pathways (positive values are emissions and negative values are deposition) | -|NH3_Soil*|NH3 flux from soil pathways (positive values are emissions and negative values are deposition) | -|NH3_Ag*|NH3 flux over agriculture land use (positive values are emissions and negative values are deposition)| -|NH3_Nat*|NH3 flux over non-agriculture land use (positive values are emissions and negative values are deposition) | -|NH3_Wat*|NH3 flux over water bodies (positive values are emissions and negative values are deposition) | + \*Additional diagnostic deposition values available when using the STAGE dry deposition option with bi-directional ammonia flux enabled. From a7127eb6a1ace3c31f923eefe69224eaa14df565 Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Tue, 11 Jun 2024 11:11:30 -0400 Subject: [PATCH 043/375] Update CMAQ_UG_ch07_model_outputs.md --- DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md index 351becb86..238cdf5ca 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md @@ -150,8 +150,6 @@ When the model is run with CTM_ABFLUX set to Y, the CCTM_DRYDEP file will contai |NH3_Flux|Net Flux (positive if downward and negative if upward) | -\*Additional diagnostic deposition values available when using the STAGE dry deposition option with bi-directional ammonia flux enabled. - **CCTM_WETDEP1: hourly cumulative wet deposition file** From e30ff4f278e91774a81549624a368669a8ae11ce Mon Sep 17 00:00:00 2001 From: mathurrohit Date: Tue, 11 Jun 2024 12:08:54 -0400 Subject: [PATCH 044/375] Update CMAQ_UG_ch01_overview.md --- DOCS/Users_Guide/CMAQ_UG_ch01_overview.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md b/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md index 185c6d030..a20ce0a17 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md @@ -15,7 +15,7 @@ The information in this operational guidance document has been funded wholly or Under the authority of the Clean Air Act, the U.S. Environmental Protection Agency (EPA) has established National Ambient Air Quality Standards (NAAQS). These standards are designed to protect human health and the environment from high levels of criteria pollutants, such as ozone and particulate matter. Meeting the NAAQS often requires the use of controls on sources of air pollutants. The complex nature of air pollution scenarios requires control strategies to be effective for a variety of air pollutants, geographic regions, and scales. The design of these control strategies is guided by comprehensive air pollution modeling systems which are applied to assess the ability of various control strategies to improve air quality in a cost-effective manner. -Because some emission sources contribute to the ambient levels of more than one pollutant and can affect an entire region on various time scales, an integrated modeling approach capable of handling multiple air pollutants and spatiotemporal scales is needed to identify cost-effective control strategies that improve overall air quality. The [EPA Community Multiscale Air Quality (CMAQ) modeling system](http://www.epa.gov/cmaq) was formulated and designed to facilitate extensions needed to examine emerging linked multi-pollutants air pollution issues. The source code for CMAQ is available through a publicly-accessible, version-controlled git repository on [GitHub](www.github.com/usepa/cmaq) where interested parties may obtain the open-source software and contribute to enhancements of the model. CMAQ is designed for applications ranging from regulatory and policy analysis to probing and understanding the complex interactions of atmospheric chemistry and physics. It is a three\-dimensional Eulerian (i.e., gridded) atmospheric chemistry and transport modeling system that simulates ozone, particulate matter (PM), toxic airborne pollutants, visibility, and acidic and nutrient pollutant species throughout the troposphere. Designed as a “one-atmosphere” model, CMAQ can address the complex couplings among several air quality issues simultaneously across spatial scales ranging from urban to hemispheric. +Because some emission sources contribute to the ambient levels of more than one pollutant and can affect an entire region on various time scales, an integrated modeling approach capable of handling multiple air pollutants and spatiotemporal scales is needed to identify cost-effective control strategies that improve overall air quality. The [EPA Community Multiscale Air Quality (CMAQ) modeling system](http://www.epa.gov/cmaq) was formulated and designed to facilitate extensions needed to examine emerging linked multi-pollutants air pollution issues. The source code for CMAQ is available through a publicly-accessible, version-controlled repository on [GitHub](www.github.com/usepa/cmaq) where interested parties may obtain the open-source software and contribute to enhancements of the model. CMAQ is designed for applications ranging from regulatory and policy analysis to probing and understanding the complex interactions of atmospheric chemistry and physics. It is a three\-dimensional Eulerian (i.e., gridded) atmospheric chemistry and transport modeling system that simulates ozone, particulate matter (PM), toxic airborne pollutants, visibility, and acidic and nutrient pollutant species throughout the troposphere. Designed as a “one-atmosphere” model, CMAQ can address the complex couplings among several air quality issues simultaneously across spatial scales ranging from urban to hemispheric. Air quality models integrate our understandings of the complex processes that affect the concentrations of pollutants in the atmosphere. Establishing the relationships among meteorology, emissions of chemical species, chemical transformations, and removal processes in the context of atmospheric pollutants is the fundamental goal of an air quality model (Seinfeld and Pandis, 1998). CMAQ uses detailed mathematical representations of coupled atmospheric dynamical, chemical, and physical processes to describe the fate of airborne pollutants. The model is formulated to conserve mass in the 3-D atmosphere within the modeled domain. The resultant partial differential governing equations are numerically solved over a 3-D grid discretizing the geographic domain of interest. A model grid is an *x\-y\-z* array that is fixed in space and covers a prescribed domain (i.e., a geographic area of interest). CMAQ therefore belongs to the Eulerian class of mathematical models that calculate a mass balance over each discrete grid volume by accounting for transport across the boundaries of the grid volume and relevant source and sink terms within the grid volume over a given time period. As a mathematical framework for simulating the interactions of multiple complex atmospheric processes, CMAQ thus requires two primary types of inputs: meteorological information, and rates of emissions from a variety of anthropogenic and natural sources of primary pollutant species of interest or those that serve as precursors for formation of other pollutants of interest. @@ -27,7 +27,7 @@ With weather conditions contributing the primary physical driving forces in the - Maximum vertical extends (model top) and vertical grid resolution - Temporal extent (the starting and ending dates and times, and the meteorology update frequency) -To obtain inputs on emissions, CMAQ relies on an emissions processor to estimate the magnitude, location, and temporal variability of pollution sources. Open\-source processors such as the Sparse Matrix Operator Kernel Emissions ([SMOKE](https://www.cmascenter.org/smoke/)) processor (IE, 2008) are available for computing emissions inputs to CMAQ from emissions inventories. These emissions inputs must be specified on CMAQ's horizontal and vertical grid structure and cover at least the time period of the air quality model simulation. The emission inputs must also represent chemical species that conform with the gas and aerosol chemical mechanism employed in the CMAQ configuration; currently supported gas-phase mechanisms include recent versions of the Carbon Bond mechanism, the Statewide Air Pollution Research Center (SAPRC) mechanism, and the Regional Atmospheric Chemistry Mechanism (RACM). Additional details about the gas- and aerosol-phase chemistry in CMAQ are provided in [Chapter 6](CMAQ_UG_ch06_model_configuration_options.md). +To obtain inputs on emissions, CMAQ relies on an emissions processor to estimate the magnitude, location, and temporal variability of pollution sources. Open\-source processors such as the Sparse Matrix Operator Kernel Emissions ([SMOKE](https://www.cmascenter.org/smoke/)) processor (IE, 2008) are available for computing emissions inputs to CMAQ from emissions inventories. These emissions inputs must be specified on CMAQ's horizontal and vertical grid structure and cover at least the time period of the air quality model simulation. The emission inputs must also represent chemical species that conform with the gas and aerosol chemical mechanism employed in the CMAQ configuration; currently supported gas-phase mechanisms include recent versions of the Carbon Bond mechanism, the Statewide Air Pollution Research Center (SAPRC) mechanism, the Regional Atmospheric Chemistry Mechanism (RACM), and the Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMM). Additional details about the gas- and aerosol-phase chemistry in CMAQ are provided in [Chapter 6](CMAQ_UG_ch06_model_configuration_options.md). ## 1.2 Features From 42b3006f0cd9698218d5e75c7c45e381315557f4 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Tue, 11 Jun 2024 12:19:34 -0400 Subject: [PATCH 045/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index 1f9ac7867..27b557b11 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -143,6 +143,7 @@ This section describes each of the input files required by the various CMAQ prog |[STAGECTRL_NML](#stagectrl_nml) |ASCII|n/a|n/a|CMAQ repo|required| |**Photolysis** | | | ||| |[OMI](#omi) | ASCII | Daily | n/a |CMAQ repo or create_omi|required| +|[OPT](#optics) | ASCII | n/a | n/a |CMAQ repo|required| *XXX - three-digit variable indicating emission stream number. Gridded and Inline Point emissions are numbered independently. From c2425d77ea2d5f0be1d810bafae2fef476202171 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Tue, 11 Jun 2024 12:20:52 -0400 Subject: [PATCH 046/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index 27b557b11..b2049583a 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -143,7 +143,7 @@ This section describes each of the input files required by the various CMAQ prog |[STAGECTRL_NML](#stagectrl_nml) |ASCII|n/a|n/a|CMAQ repo|required| |**Photolysis** | | | ||| |[OMI](#omi) | ASCII | Daily | n/a |CMAQ repo or create_omi|required| -|[OPT](#optics) | ASCII | n/a | n/a |CMAQ repo|required| +|[OPTICS_DATA](#optics) | ASCII | n/a | n/a |CMAQ repo|required| *XXX - three-digit variable indicating emission stream number. Gridded and Inline Point emissions are numbered independently. From c8c6ce6765f6d44eafe277d021d3b471706a8b1e Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Tue, 11 Jun 2024 12:39:28 -0400 Subject: [PATCH 047/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index b2049583a..2181c5c35 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -144,6 +144,7 @@ This section describes each of the input files required by the various CMAQ prog |**Photolysis** | | | ||| |[OMI](#omi) | ASCII | Daily | n/a |CMAQ repo or create_omi|required| |[OPTICS_DATA](#optics) | ASCII | n/a | n/a |CMAQ repo|required| +|[CSQY_DATA](#csqy) | ASCII | n/a | n/a |CMAQ repo|required| *XXX - three-digit variable indicating emission stream number. Gridded and Inline Point emissions are numbered independently. From 1302081a3f887f086a4be91658290be880974070 Mon Sep 17 00:00:00 2001 From: James Beidler <35079372+jlbeidler@users.noreply.github.com> Date: Tue, 11 Jun 2024 12:57:48 -0400 Subject: [PATCH 048/375] Update CMAQ_UG_ch06_model_configuration_options.md 6.9.1 Update the SMOKE links for 6.9.1, differentiate stack and wild plume rise parameters. --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 89af76819..4f9708b13 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -326,7 +326,7 @@ Depending on the nature of any stream and the information used to quantify its e CMAQ will calculate the emission rates from this source using information about local meteorology, land characteristics, etc. The streams that can be run online in CMAQ are: [biogenics (BEIS/MEGAN)](#BEIS/MEGAN),[ wind-blown dust](#Wind_Blown_Dust), [sea spray](#Sea_Spray), and [lightning NO](#Lightning_NO). #### Gridded Stream (offline): -CMAQ will read emission rates from an input file, which is organized into an array that is identical in shape to the CMAQ model grid. Typically, these rates are stored at hourly time points and are then interpolated within CMAQ to each time step. These files may be 2D to represent just the surface layer emissions or they may be 3D. If 3D, the file may have the same number or fewer number of layers as the CMAQ grid. Some common examples of Gridded emissions include: +CMAQ will read emission rates from an input file, which is organized into an array that is identical in shape to the CMAQ model grid. Typically, these rates are stored at hourly time points and are then interpolated within CMAQ to each time step. These files may be 2D to represent just the surface layer emissions or they may be 3D. If 3D, the file may have the same number or fewer number of layers as the CMAQ grid. Gridded emissions may be merged into a single stream or kept as separate types. Some common examples of Gridded emissions include: - Mobile sources such as passenger vehicles, trains, ships, scooters, etc. - Low-level point source emissions that are not large enough to be treated individually @@ -414,7 +414,7 @@ Users should be careful with this variable, as it changes the default value for If N_EMIS_PT is set 0, then CMAQ will run with no Inline emissions even if the values for STK_EMIS_XXX, STK_GRPS_XXX and STK_EMIS_LAB_XXX are all set. -*Plume Rise* - Plume rise can be calculated inline within CMAQ using the Briggs solution as it is implemented in SMOKE and documented in the SMOKE user guide (https://www.cmascenter.org/smoke/documentation/4.6/html/ch06s03.html). It is required that emission files have been processed to include the necessary stack parameters (e.g. exit velocity, diameter, stack gas temperature, stack height, etc.). +*Plume Rise* - Plume rise can be calculated inline within CMAQ using the Briggs solution as it is implemented in SMOKE and documented in the SMOKE user guide (https://www.cmascenter.org/smoke/documentation/5.0/html/ch04s03.html#sect_programs_elevpoint_briggs). It is required that emission files have been processed to include the necessary stack parameters (e.g. exit velocity, diameter, stack gas temperature, stack height, etc.) for anthropogenic point sources. Wildland fires require heat flux and are to estimate plume rise (https://www.cmascenter.org/smoke/documentation/5.0/html/ch04s06.html#sect_programs_laypoint_plume_rise_fires). From 410ee5911f6550b75f1b108adabc2985b6879656 Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Tue, 11 Jun 2024 13:04:29 -0400 Subject: [PATCH 049/375] Update CMAQ_UG_ch07_model_outputs.md Fix typo <\sub> to
for escaping subscript. --- DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md index 238cdf5ca..a36429e75 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md @@ -99,7 +99,7 @@ The 2-D or 3-D CCTM integral average concentration file contains average model s [Return to Table 7-1](#ELMO_t) -This optional 2-D or 3-D CCTM output file contains instantaneous information at the end of the output time step for user-specified variables including concentrations that would appear on CONC and ACONC files as well as aggregate variables like total mass of PM2.5 and PM10<\sub>. +This optional 2-D or 3-D CCTM output file contains instantaneous information at the end of the output time step for user-specified variables including concentrations that would appear on CONC and ACONC files as well as aggregate variables like total mass of PM2.5 and PM10. Diagnostic parameters that were found on the PMDIAG file in previous CMAQ versions are also available for output on the ELMO file. Thease include particle geometric mean diameters, geometric standard deviations, bulk densities, 2nd moments and 3rd moments for the lognormal modes. It also includes the fraction of each mode that contributes to PM1, PM2.5, and PM10 and the AMS transmission factor for each mode. From e861ba53e34f8e30d91d611af15af6e692929945 Mon Sep 17 00:00:00 2001 From: fisidi <47453034+fisidi@users.noreply.github.com> Date: Tue, 11 Jun 2024 13:09:39 -0400 Subject: [PATCH 050/375] Update CMAQ_UG_ch06_model_configuration_options.md Re-word sentences in 6.2. --- .../Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 89af76819..30d795c9b 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -64,11 +64,11 @@ As discussed in [Chapter 1](CMAQ_UG_ch01_overview.md), CMAQ is a multipollutant, -The theoretical basis for CMAQ’s formulation is the conservation of mass for atmospheric trace species emissions, transport, chemistry, and removal in the atmosphere. The general form of a chemical species equation derives from this conservation, so that changes in atmospheric concentrations of a species, Ci, can mathematically be represented as +The theoretical basis for CMAQ’s formulation is the conservation of mass for atmospheric trace species. The general form of a chemical species equation derives from this conservation, so that changes in atmospheric concentrations of a species, Ci, can mathematically be represented as ![Equation 6-1](images/Figure6-1.JPG) -where the terms on the right-hand side of the equation represent the rate of change in Ci due to advection, diffusion, cloud processes (mixing, scavenging, and aqueous-phase chemistry), dry deposition, and aerosol processes (phase partitioning, and aerosol dynamics). Rgi represents the rate of change due to gas and heterogeneous chemical reactions, while Ei is the emission rate for that species. The mass conservation for trace species and the moment dynamic equations for the various modes of the particulate size distribution in CMAQ are further formulated in generalized coordinates, where in the same formulation allows the model to accommodate the commonly used horizontal map projections (i.e., Lambert Conformal, Polar Stereographic, and Mercator) as well as different vertical coordinates (see Chapters 5 and 6 in Byun and Ching, 1999). The governing equation for CMAQ is numerically solved using the time-splitting or process splitting approach wherein each process equation is solved sequentially, typically with the process with the largest time-scale solved first. +where the terms on the right-hand side of the equation represent the rate of change in Ci due to advection, diffusion, cloud processes (mixing, scavenging, and aqueous-phase chemistry), dry deposition, and aerosol processes (phase partitioning, and aerosol dynamics). Rgi represents the rate of change due to gas and heterogeneous chemical reactions, while Ei is the emission rate for that species. The mass conservation for trace species and the aerosol dynamic equations for the various modes of the particulate size distribution in CMAQ are further formulated in generalized coordinates, where in the same formulation allows the model to accommodate the commonly used horizontal map projections (i.e., Lambert Conformal, Polar Stereographic, and Mercator) as well as different vertical coordinates (see Chapters 5 and 6 in Byun and Ching, 1999). The governing equation for CMAQ is numerically solved using the time-splitting or process splitting approach wherein each process equation is solved sequentially, typically with the process with the largest time-scale solved first. @@ -82,7 +82,7 @@ where the terms on the right-hand side of the equation represent the rate of cha CMAQ is a three-dimensional Eulerian air quality model. To solve the governing partial differential equations, the modeling domain (that is, the volume of the atmosphere over a geographic region of interest) is discretized with three-dimensional cells. The grid cells and lateral boundaries of the domain must be rigorously and consistently defined across the scientific components of the model, including chemistry, emissions, meteorology, and other peripheral scientific processors. In other words, all components of the CMAQ system must use the same map projections and horizontal grid spacing to maintain scientific consistency across the modeling domain. The number of grid cells in the west-east dimension is typically counted in "columns" or "NCOLS", and the number of grid cells in the south-north dimension is typically counted in "rows" or "NROWS". The vertical discretization is typically counted in "layers" or "NLAYS". -CMAQ uses a generalized coordinate system to map the physical space to the computational space; see Chapter 6 of Byun and Ching (1999). The generalized coordinates enable CMAQ to maintain mass consistency under different horizontal map projections (such as Lambert Conformal, Polar Stereographic, and Mercator) and under different vertical coordinate systems (such as terrain-following "sigma", height, and hybrid sigma-pressure). CMAQv5.4 supports modeling domains comprised of rectilinear cells, where the length of each _side_ of the cells in projected space is the same (such as Δx = Δy = 12 km). By contrast, the vertical grid is generally irregular, such that the modeling layers are thinnest near the ground. The absolute dimensions of the horizontal grid (that is, the west-east and south-north extents of the computational domain) can differ. +CMAQ uses a generalized coordinate system to map the physical space to the computational space; see Chapter 6 of Byun and Ching (1999). The generalized coordinates enable CMAQ to maintain mass consistency under different horizontal map projections (such as Lambert Conformal, Polar Stereographic, and Mercator) and under different vertical coordinate systems (such as terrain-following "sigma", height, and hybrid sigma-pressure). CMAQ supports modeling domains comprised of rectilinear cells, where the length of each _side_ of the cells in projected space is the same (such as Δx = Δy = 12 km). By contrast, the vertical grid is generally irregular, such that the modeling layers are thinnest near the ground. The absolute dimensions of the horizontal grid (that is, the west-east and south-north extents of the computational domain) can differ. In general, the characteristics of the CMAQ modeling domain (including the map projection, horizontal grid spacing, vertical grid type, and maximum areal coverage) are inherited from the meteorological model. Beginning with CMAQv5.3 and MCIPv5.0, the public release of CMAQ is only configured for meteorological data from the Weather Research and Forecasting (WRF) model. However, MCIP (which translates and prepares meteorological model data for CMAQ) can be expanded to process data from other meteorological models to be used within the CCTM. From cf43eea135960534d0ff49f20deddb4d1aa568fc Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Tue, 11 Jun 2024 13:11:18 -0400 Subject: [PATCH 051/375] Update CMAQ_UG_ch07_model_outputs.md --- DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md index a36429e75..6da8dd8fe 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md @@ -116,7 +116,7 @@ See [Appendix F (ELMO Output):](Appendix/CMAQ_UG_appendixF_elmo_output.md) for m [Return to Table 7-1](#aELMO_t) -This optional 2-D or 3-D CCTM output file contains average information integrated from the previous output time step for user-specified variables including concentrations that would appear on CONC and ACONC files as well as aggregate variables like total mass of PM2.5 and PM10<\sub>. +This optional 2-D or 3-D CCTM output file contains average information integrated from the previous output time step for user-specified variables including concentrations that would appear on CONC and ACONC files as well as aggregate variables like total mass of PM2.5 and PM10. Diagnostic parameters that were found on the PMDIAG file in previous CMAQ versions are also available for output on the ELMO file. Thease include particle geometric mean diameters, geometric standard deviations, bulk densities, 2nd moments and 3rd moments for the lognormal modes. It also includes the fraction of each mode that contributes to PM1, PM2.5, and PM10 and the AMS transmission factor for each mode. From a2447b173f9fae84b84eb911a9c47efeba9d435b Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Tue, 11 Jun 2024 13:12:09 -0400 Subject: [PATCH 052/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index 2181c5c35..16862828a 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -143,8 +143,8 @@ This section describes each of the input files required by the various CMAQ prog |[STAGECTRL_NML](#stagectrl_nml) |ASCII|n/a|n/a|CMAQ repo|required| |**Photolysis** | | | ||| |[OMI](#omi) | ASCII | Daily | n/a |CMAQ repo or create_omi|required| -|[OPTICS_DATA](#optics) | ASCII | n/a | n/a |CMAQ repo|required| -|[CSQY_DATA](#csqy) | ASCII | n/a | n/a |CMAQ repo|required| +|[OPTICS_DATA](#omi) | ASCII | n/a | n/a |CMAQ repo|required| +|[CSQY_DATA](#omi) | ASCII | n/a | n/a |CMAQ repo|required| *XXX - three-digit variable indicating emission stream number. Gridded and Inline Point emissions are numbered independently. @@ -859,6 +859,14 @@ Used by: CCTM OMI ozone column data by latitude and longitude for use in the photolysis calculations. CMAQ is distributed with ozone columns from 1978 to 2019 (CCTM/src/phot/inline/OMI_1979_to_2019.dat). The data are 22.5°x10° gridded ozone columns in Dobson units. The [create_omi](../../PREP/create_omi/README.md) tool under the PREP folder can be used to create a data file to support simulations after 2019 or a data file with a finer spatial resolution. +**: PHOT_OPTICS: Optical and related parameters + +Wavelength, optical and surface albedo parameters for CMAQ in-line photolysis calculation. The values are determined by averaging technique over the above number of wavelength bins. This file is distributed with the CMAQ code. + +**: CSQY: Absorption cross sections & quantum yields + +Wavelength and photolysis rate parameters for CMAQ in-line photolysis calculation. This file is distributed with the CMAQ code and is chemical mechanism specific. + [<< Previous Chapter](CMAQ_UG_ch03_preparing_compute_environment.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch05_running_a_simulation.md) From 1996ad70480dac8693d46fbb23ea69bd2906fe3b Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Tue, 11 Jun 2024 13:13:25 -0400 Subject: [PATCH 053/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index 16862828a..7de952718 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -859,14 +859,15 @@ Used by: CCTM OMI ozone column data by latitude and longitude for use in the photolysis calculations. CMAQ is distributed with ozone columns from 1978 to 2019 (CCTM/src/phot/inline/OMI_1979_to_2019.dat). The data are 22.5°x10° gridded ozone columns in Dobson units. The [create_omi](../../PREP/create_omi/README.md) tool under the PREP folder can be used to create a data file to support simulations after 2019 or a data file with a finer spatial resolution. -**: PHOT_OPTICS: Optical and related parameters +**PHOT_OPTICS: Optical and related parameters** Wavelength, optical and surface albedo parameters for CMAQ in-line photolysis calculation. The values are determined by averaging technique over the above number of wavelength bins. This file is distributed with the CMAQ code. -**: CSQY: Absorption cross sections & quantum yields +**CSQY: Absorption cross sections & quantum yields** Wavelength and photolysis rate parameters for CMAQ in-line photolysis calculation. This file is distributed with the CMAQ code and is chemical mechanism specific. + [<< Previous Chapter](CMAQ_UG_ch03_preparing_compute_environment.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch05_running_a_simulation.md) From 172142dab51ec35d6fc2b94b9fbffdba891eb15d Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Tue, 11 Jun 2024 13:13:28 -0400 Subject: [PATCH 054/375] Update CMAQ_UG_ch07_model_outputs.md --- DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md index 6da8dd8fe..c22854556 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md @@ -119,7 +119,7 @@ See [Appendix F (ELMO Output):](Appendix/CMAQ_UG_appendixF_elmo_output.md) for m This optional 2-D or 3-D CCTM output file contains average information integrated from the previous output time step for user-specified variables including concentrations that would appear on CONC and ACONC files as well as aggregate variables like total mass of PM2.5 and PM10. Diagnostic parameters that were found on the PMDIAG file in previous CMAQ versions are also available for output on the ELMO file. Thease include particle geometric mean diameters, geometric standard deviations, bulk densities, 2nd moments and 3rd moments for the lognormal modes. -It also includes the fraction of each mode that contributes to PM1, PM2.5, and PM10 and the AMS transmission factor for each mode. +It also includes the fraction of each mode that contributes to PM1, PM2.5, and PM10 and the AMS transmission factor for each mode. Many diagnostics relating to heterogenous chemistry are provided including the N2O5 reaction probability, the ClNO2 reaction yield, and the IEPOX uptake coefficient. Units for all variables are specified in the output file. From dea8e708c2633c80ecfe65d223ddb6a1cba8cac1 Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Tue, 11 Jun 2024 13:14:37 -0400 Subject: [PATCH 055/375] Update CMAQ_UG_ch07_model_outputs.md --- DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md index c22854556..b6bf22c68 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md @@ -102,7 +102,7 @@ The 2-D or 3-D CCTM integral average concentration file contains average model s This optional 2-D or 3-D CCTM output file contains instantaneous information at the end of the output time step for user-specified variables including concentrations that would appear on CONC and ACONC files as well as aggregate variables like total mass of PM2.5 and PM10. Diagnostic parameters that were found on the PMDIAG file in previous CMAQ versions are also available for output on the ELMO file. Thease include particle geometric mean diameters, geometric standard deviations, bulk densities, 2nd moments and 3rd moments for the lognormal modes. -It also includes the fraction of each mode that contributes to PM1, PM2.5, and PM10 and the AMS transmission factor for each mode. +It also includes the fraction of each mode that contributes to PM1, PM2.5, and PM10 and the AMS transmission factor for each mode. Many diagnostics relating to heterogenous chemistry are provided including the N2O5 reaction probability, the ClNO2 reaction yield, and the IEPOX uptake coefficient. Units for all variables are specified in the output file. From 32c2ac2af655997eda1204062d34d5828f55460e Mon Sep 17 00:00:00 2001 From: James Beidler <35079372+jlbeidler@users.noreply.github.com> Date: Tue, 11 Jun 2024 13:16:15 -0400 Subject: [PATCH 056/375] Update CMAQ_UG_ch06_model_configuration_options.md 6.9 Add names to links, fix typos throughout emissions section 6.9 --- .../Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 4f9708b13..3acffff4a 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -414,7 +414,7 @@ Users should be careful with this variable, as it changes the default value for If N_EMIS_PT is set 0, then CMAQ will run with no Inline emissions even if the values for STK_EMIS_XXX, STK_GRPS_XXX and STK_EMIS_LAB_XXX are all set. -*Plume Rise* - Plume rise can be calculated inline within CMAQ using the Briggs solution as it is implemented in SMOKE and documented in the SMOKE user guide (https://www.cmascenter.org/smoke/documentation/5.0/html/ch04s03.html#sect_programs_elevpoint_briggs). It is required that emission files have been processed to include the necessary stack parameters (e.g. exit velocity, diameter, stack gas temperature, stack height, etc.) for anthropogenic point sources. Wildland fires require heat flux and are to estimate plume rise (https://www.cmascenter.org/smoke/documentation/5.0/html/ch04s06.html#sect_programs_laypoint_plume_rise_fires). +*Plume Rise* - Plume rise can be calculated inline within CMAQ using the Briggs solution as it is implemented in SMOKE and documented in the SMOKE user guide [Chapter 4.3](https://www.cmascenter.org/smoke/documentation/5.0/html/ch04s03.html#sect_programs_elevpoint_briggs). It is required that emission files have been processed to include the necessary stack parameters (e.g. exit velocity, diameter, stack gas temperature, stack height, etc.) for anthropogenic point sources. Wildland fires require heat flux and are to estimate plume rise with Briggs using [the Pouliot-Godowitch method](https://www.cmascenter.org/smoke/documentation/5.0/html/ch04s06.html#sect_programs_laypoint_plume_rise_fires). @@ -615,7 +615,7 @@ Alternatively, users can also edit the emission control file by commenting out t #### Dimethyl sulfide (DMS) and Halocarbon emissions -DMS and hlocarbon emissions are needed for cb6r5m_ae7_aq. DMS emissions are also needed for cb6r5_ae7_aq and. DMS emissions are calculated using the monthly mean climatological DMS concentrations in seawater and halocarbon emissions are calculated using the monthly-average climatological chl-a concentrations derived from the Moderate Resolution Imaging Spectroradiometer (MODIS). Ocean file needs to include DMS and CHLO concentrations in seawater for cb6r5m_ae7_aq and DMS for cb6r5_ae7_aq. CTM_OCEAN_CHEM should be set to Y to include DMS and halocarbon emissions; otherwise CMAQ will not include any DMS or halocarbon emissions. The details of DMS emissions estimations method in CMAQ are described in Zhao et al. (2021) while the details of halocarbon emissions are described in Sarwar et al. (2015) and Sarwar et al. (2019). +DMS and halocarbon emissions are needed for cb6r5m_ae7_aq. DMS emissions are also needed for cb6r5_ae7_aq and. DMS emissions are calculated using the monthly mean climatological DMS concentrations in seawater and halocarbon emissions are calculated using the monthly-average climatological chl-a concentrations derived from the Moderate Resolution Imaging Spectroradiometer (MODIS). Ocean file needs to include DMS and CHLO concentrations in seawater for cb6r5m_ae7_aq and DMS for cb6r5_ae7_aq. CTM_OCEAN_CHEM should be set to Y to include DMS and halocarbon emissions; otherwise CMAQ will not include any DMS or halocarbon emissions. The details of DMS emissions estimations method in CMAQ are described in Zhao et al. (2021) while the details of halocarbon emissions are described in Sarwar et al. (2015) and Sarwar et al. (2019). @@ -677,7 +677,7 @@ setenv LTNGPARMS_FILE /home/user/path-to-file/LTNG_AllParms_12US1.nc #### Potential Combustion SOA -Potential Combustion SOA (PCSOA) was added to CMAQv5.2 to account for missing PM2.5 from fossil-fuel combustion sources (Murphy et al., 2017). PCSOA is not intended to be applied to non-fossil-fuel combustion sources such as residential wood combustion (RWC). The new DECID option introduced in CMAQv5.3 introduces the ability to read multiple gridd emissions files, allowing RWC to be treated as an entirely separate emissions source from the rest of the gridded emissions. Using DESID, PCSOA can be applied to the other gridded combustion sources, but should not be used for RWC. The CRACMM mechanism does not use PCSOA. +Potential Combustion SOA (PCSOA) was added to CMAQv5.2 to account for missing PM2.5 from fossil-fuel combustion sources (Murphy et al., 2017). PCSOA is not intended to be applied to non-fossil-fuel combustion sources such as residential wood combustion (RWC). The new DESID option introduced in CMAQv5.3 introduces the ability to read multiple gridded emissions files, allowing RWC to be treated as an entirely separate emissions source from the rest of the gridded emissions. Using DESID, PCSOA can be applied to the other gridded combustion sources, but should not be used for RWC. The CRACMM mechanism does not use PCSOA. [Jump to DESID Appendix](Appendix/CMAQ_UG_appendixB_emissions_control.md) for an introduction to using the Emissions Control Namelist for customization of emissions processing. From 331ddd85f0fe091392ab8f77fe607f40f836edf1 Mon Sep 17 00:00:00 2001 From: fisidi <47453034+fisidi@users.noreply.github.com> Date: Tue, 11 Jun 2024 13:19:23 -0400 Subject: [PATCH 057/375] Update CMAQ_UG_appendixA_model_options.md Edits to vertical extent section. --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index c43dcb7ae..03588af62 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -339,7 +339,7 @@ Sets if the CCTM will run in multi-processor or serial mode. - `NZ [default: 35]` - Set the number of vertical layers. + Set the number of vertical layers. Script variable only, variable not used by CCTM model. Vertical extent inherited from MCIP model inputs. From ced89996d5456beae767621a5659e6c9aa8ca489 Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Tue, 11 Jun 2024 13:25:11 -0400 Subject: [PATCH 058/375] Update CMAQ_UG_ch07_model_outputs.md flus -> flux typo --- DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md index b6bf22c68..ba4f1920e 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md @@ -141,7 +141,7 @@ CMAQ v5.3 and later contains two build-time options for calculating dry depositi When the model is run with CTM_ABFLUX set to Y, the CCTM_DRYDEP file will contain additional NH3 flux components. The variable names and definitions are defined in Table 7-2. Note that these variables definitions may not agree with the definitions used in CMAQ versions prior to version 5.3.2. -**Table 7-2. NH3 Flux components in CCTM_DRYDEP Output files when ammonia bidirectional surface flus is enabled** +**Table 7-2. NH3 Flux components in CCTM_DRYDEP Output files when ammonia bidirectional surface flux is enabled** |**Variable Name**|**Variable Description**| |:----:|:----------------------------:| From 3bce7eb7ba85a7d3504b7087a908d93fca74c232 Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Tue, 11 Jun 2024 13:34:29 -0400 Subject: [PATCH 059/375] Update CMAQ_UG_ch07_model_outputs.md superscript -> subscript typo --- DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md index ba4f1920e..b4c2cbaa0 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md @@ -229,7 +229,7 @@ This optional ASCII file contains specific gridcells/timesteps in which species [Return to Table 7-1](#budget_t) -This optional ascii file outputs domain-wide changes for user-specified species every output time step in units of kg for gases and aerosols, number for particle number, and m2 for particle surface area. See [Chapter 9 (Process Analysis and Budget):](CMAQ_UG_ch09_process_analysis.md) for a description of the Budget Tool methods, interface, and potential applications. +This optional ascii file outputs domain-wide changes for user-specified species every output time step in units of kg for gases and aerosols, number for particle number, and m2 for particle surface area. See [Chapter 9 (Process Analysis and Budget):](CMAQ_UG_ch09_process_analysis.md) for a description of the Budget Tool methods, interface, and potential applications. In CMAQv5.4, the destination folder of this output file must be specified with the $OUTDIR environment variable in the RunScript. If this variable is not specified, the destination will be the root directory. From d321a395e592eba22f477989b79f2f0dc23c47aa Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Tue, 11 Jun 2024 13:35:56 -0400 Subject: [PATCH 060/375] Update CMAQ_UG_ch07_model_outputs.md --- DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md index b4c2cbaa0..ba4f1920e 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md @@ -229,7 +229,7 @@ This optional ASCII file contains specific gridcells/timesteps in which species [Return to Table 7-1](#budget_t) -This optional ascii file outputs domain-wide changes for user-specified species every output time step in units of kg for gases and aerosols, number for particle number, and m2 for particle surface area. See [Chapter 9 (Process Analysis and Budget):](CMAQ_UG_ch09_process_analysis.md) for a description of the Budget Tool methods, interface, and potential applications. +This optional ascii file outputs domain-wide changes for user-specified species every output time step in units of kg for gases and aerosols, number for particle number, and m2 for particle surface area. See [Chapter 9 (Process Analysis and Budget):](CMAQ_UG_ch09_process_analysis.md) for a description of the Budget Tool methods, interface, and potential applications. In CMAQv5.4, the destination folder of this output file must be specified with the $OUTDIR environment variable in the RunScript. If this variable is not specified, the destination will be the root directory. From e26c6dbd1d467f8d56d108314728f6b6cf08d96b Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Tue, 11 Jun 2024 13:37:50 -0400 Subject: [PATCH 061/375] Update CMAQ_UG_ch07_model_outputs.md clarify biogenic mass file option is for BEIS only --- DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md index ba4f1920e..3582ec3d0 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md @@ -240,7 +240,7 @@ In CMAQv5.4, the destination folder of this output file must be specified with t [Return to Table 7-1](#b3gts_t) -This optional 2-D CCTM hourly output file contains total hourly biogenic emissions in mass units calculated in-line by the CCTM when the CTM_BIOGEMIS environment variable is set to Y. This file is only created if the B3GTS_DIAG environment variable in the RunScript is set to Y (Default is Y). +This optional 2-D CCTM hourly output file contains total hourly biogenic emissions in mass units calculated in-line by the CCTM when the CTM_BIOGEMIS environment variable is set to Y. This file is only created if the B3GTS_DIAG environment variable in the RunScript is set to Y (Default is Y) and only if BEIS is the selected biogenic emisisons model. From e549633ac217f4adf0365021650cdd4cf9fe93e0 Mon Sep 17 00:00:00 2001 From: Emma D'Ambro <48480570+edambro@users.noreply.github.com> Date: Tue, 11 Jun 2024 13:49:44 -0400 Subject: [PATCH 062/375] Update CMAQ_UG_tutorial_emissions.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md index e711436c5..8d35d2164 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md @@ -22,7 +22,7 @@ residential heating, etc. - [4. Scale emissions for one species on all streams](#scale_species) - [5. Scale all gas phase emissions but leave aerosols alone](#scale_gases) - [6. Scale all aerosols](#scale_aerosols) -- [7. Add or subtract emissions from one surrogate to existing emissions]([#add_surrogate) +- [7. Add or subtract emissions from one surrogate to existing emissions]([#scale_surrogate) - [8. Overwrite the scale factor for a single stream or species](#overwrite) - [9. Scale all species except one by a common factor](#scale_all_but_one) - [10. Apply scaling while conserving moles or mass](#scale_moles_mass) @@ -30,7 +30,8 @@ residential heating, etc. - [12. Define families of streams, regions, or chemical species](#define_families) - [13. Use a family of streams to scale emissions for a group of sources](#fam_stream) - [14. Use a family of regions to scale emissions in a new location](#fam_region) -- [15. Use a family of species to scale emissions for a custom group of pollutants](#fam_chem) +- [15. Use a family of species to scale emissions for a custom group of pollutants](#fam_chem) +- [16. Miscellaneous Notes](#misc_notes) - [A1. Appendix: Example Emission Control File](#appendix1) - [A2. Appendix: Example Emissions Section of CCTM RunScript File](#appendix2) @@ -254,7 +255,7 @@ Chemical families are defined by prescribing, via the [CMAQ Miscellaneous Contro ChemFamilyMembers(2,:)= 'POC','PNCOM' / ``` -In this example, 2 chemical families, "NOX" and "POA", are defined with 2 members, "NO" and "NO2", and "POC" and "PNCOM". Note that CMAQv5.3 required the variable ChemFamilyNum to be specified and this is value is internally calculated in CMAQv5.4. If the variable is provided, the model will crash. Also, it is required to ensure that no Chemical Family Name is identical to any emission species or CMAQ species. Currently, CMAQ will not detect a name conflict but results will be compromised. A future version of CMAQ will check for duplicative names, trigger an error, and stop the model. +In this example, 2 chemical families, "NOX" and "POA", are defined with 2 members, "NO" and "NO2", and "POC" and "PNCOM". Note that CMAQv5.3 required the variable ChemFamilyNum to be specified and this value is internally calculated in CMAQv5.4. If the variable is provided, the model will crash. Also, it is required to ensure that no Chemical Family Name is identical to any emission species or CMAQ species. Currently, CMAQ will not detect a name conflict but results will be compromised. A future version of CMAQ will check for duplicative names, trigger an error, and stop the model. Stream families are defined analogously in the DESID Control File: ``` @@ -351,5 +352,6 @@ The way CMAQ uses chemical families for adding relationships with the 'a' is nua - If both columns include chemical families or the 'ALL' keyword, then each pair of members will be compared. If the names match exactly or a relationship already exists, then the 'a' operation will be applied. If not, then the pair will be ignored. This precaution is in place to protect against the case where a user prescribes an addition (i.e. 'a') rule with the keyword 'ALL' or very large chemical families in both the emission variable and CMAQ-Species columns. Without the precaution in place, adding relationships for ALL surrogates to ALL model species would be an extremely large data structure and almost certainly not an intended use of CMAQ. + ### 16. Miscellaneous Notes In the default emissions mapping configuration, sulfuric acid (SULF) mass is mapped to ASO4 (particulate sulfate). If these emissions are perturbed directly or as part of a broader sector- or region-wide scaling, it is recommended to confirm specifically that these emissions have been scaled as desired. For example, if a family named 'SOX' is defined that includes 'SO2' and 'SULF' and then 'SOX' is specified as the CMAQ species in a scaling rule, then the 'SULF' to 'ASO4' mapping would not be detected. From f45bc4a09dc7056fdd0e2846488b9c4cf4d82d01 Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Tue, 11 Jun 2024 13:55:08 -0400 Subject: [PATCH 063/375] Update run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh Remove CTM_FST from CRACMM run script --- CCTM/scripts/run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh | 2 -- 1 file changed, 2 deletions(-) diff --git a/CCTM/scripts/run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh b/CCTM/scripts/run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh index 1af895b79..f12719abb 100755 --- a/CCTM/scripts/run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh +++ b/CCTM/scripts/run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh @@ -157,8 +157,6 @@ setenv CTM_WB_DUST N #> use inline windblown dust emissions [ default: Y setenv CTM_LTNG_NO Y #> turn on lightning NOx [ default: N ] setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], #> otherwise revert to Kz0UT -setenv CTM_FST N #> mosaic method to get land-use specific stomatal flux - #> [ default: N ] setenv PX_VERSION Y #> WRF PX LSM setenv CLM_VERSION N #> WRF CLM LSM setenv NOAH_VERSION N #> WRF NOAH LSM From f0623932f0f54f55c767c5c4f0239139a9508fbc Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Tue, 11 Jun 2024 13:58:25 -0400 Subject: [PATCH 064/375] Update Code_Management.md --- DOCS/Developers_Guide/Code_Management.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/DOCS/Developers_Guide/Code_Management.md b/DOCS/Developers_Guide/Code_Management.md index a2d12a850..ff8ecd098 100644 --- a/DOCS/Developers_Guide/Code_Management.md +++ b/DOCS/Developers_Guide/Code_Management.md @@ -912,8 +912,6 @@ setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], #> otherwise revert to Kz0UT setenv CTM_ILDEPV Y #> calculate in-line deposition velocities [ default: Y ] setenv CTM_MOSAIC N #> landuse specific deposition velocities [ default: N ] -setenv CTM_FST N #> mosaic method to get land-use specific stomatal flux - #> [ default: N ] setenv CTM_ABFLUX Y #> ammonia bi-directional flux for in-line deposition #> velocities [ default: N ]; ignore if CTM_ILDEPV = N setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition From 2c47f441d5da82ba60ecb9910559251e09c9e3a3 Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Tue, 11 Jun 2024 14:01:37 -0400 Subject: [PATCH 065/375] Update CMAQ_UG_ch07_model_outputs.md Remove deprecated FST output file. --- .../Users_Guide/CMAQ_UG_ch07_model_outputs.md | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md index 3582ec3d0..3cef1c541 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md @@ -38,9 +38,7 @@ In this section, details on the routine CCTM output files are provided. All CMAQ |[CCTM_DUSTEMIS](#dust) |GRDDED3|Hourly Instantaneous|XY |[CCTM_DESIDX](#desid) |GRDDED3|Hourly Instantaneous|XYZ |[CCTM_DEPVMOS](#depv_mos) |GRDDED3|Hourly Instantaneous|XYW -|[CCTM_DEPVFST](#depv_fst) |GRDDED3|Hourly Instantaneous|XYW |[CCTM_DDEP_MOS](#dry_dep_mos) |GRDDED3|Hourly Cumulative|XYW -|[CCTM_DDEP_FST](#dry_dep_fst) |GRDDED3|Hourly Cumulative|XYW |[CCTM_LTNGHRLY](#ltngdiag1) |GRDDED3|Hourly Instantaneous|XYZ |[CCTM_LTNGCOL](#ltngdiag2) |GRDDED3|Hourly Instantaneous|XY |[CCTM_PHOTDIAG1](#ctm_rj_1) |GRDDED3|Hourly Instantaneous|XY @@ -292,25 +290,6 @@ This optional 3-D CCTM file contains the deposition velocity (m s-1) This optional 3-D CCTM file contains the total deposition (kg hectare-1) for the hour for each land use type within each grid cell. This output file is structured with the land use category being the 3rd dimension (i.e. equivalent to the layers in a concentration file). So, for model runs using the NLCD land use category system, the files will have 40 "layers". This file is only created if the ModDepv environment variable in the BuildScript is set to stage (rather than m3dry) and if the CTM_MOSAIC environment variable in the RunScript is set to Y (Default is N). - - - -**CCTM_DEPVFST: stomatal deposition velocity file** - -[Return to Table 7-1](#depv_fst_t) - - -This optional 3-D CCTM file contains the deposition velocity (m s-1) through the stomatal pathway for the final time step of the hour for each land use type within a grid cell. This output file is structured with the land use category being the 3rd dimension (i.e. equivalent to the layers in a concentration file). So, for model runs using the NLCD land use category system, the files will have 40 "layers". This file is only created if the ModDepv environment variable in the BuildScript is set to stage (rather than m3dry) and if the CTM_FST environment variable in the RunScript is set to Y (Default is N). - - - -**CCTM_DDFST: stomatal flux file** - -[Return to Table 7-1](#dry_dep_fst_t) - - -This optional 3-D CCTM file contains the total deposition (kg hectare-1) through the stomatal pathway for the hour for each land use type within each grid cell. This output file is structured with the land use category being the 3rd dimension (i.e. equivalent to the layers in a concentration file). So, for model runs using the NLCD land use category system, the files will have 40 "layers". This file is only created if the ModDepv environment variable in the BuildScript is set to stage (rather than m3dry) and if the CTM_FST environment variable in the RunScript is set to Y (Default is N). - **CCTM_LTNGHRLY: hourly lightning emissions file** From 385fe9bb344b70fc6e1ada1861889694f769de36 Mon Sep 17 00:00:00 2001 From: Chris Nolte Date: Tue, 11 Jun 2024 14:23:20 -0400 Subject: [PATCH 066/375] Update CMAQ_UG_tutorial_debug.md --- .../Tutorials/CMAQ_UG_tutorial_debug.md | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_debug.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_debug.md index 8af7e5cca..fa9c7154c 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_debug.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_debug.md @@ -67,25 +67,18 @@ grep -i 'error' slurm-*.out error while loading shared libraries … cannot open shared object file … ``` -Set the $LD_LIBRARY_PATH in your .cshrc to include the location of your netCDF and netCDFF library shared object files. -Note: your .cshrc file should be located in your home directory. - -Change directories to your home directory. -``` -cd ~ +This error indicates that the `LD_LIBRARY_PATH` environment variable is not properly set to include the path to all the required shared library object files. If this occurs, one solution is to edit the CCTM run script to add the path to the netCDF C (libnetcdf.so) and Fortran (libnetcdff.so) libraries to the `LD_LIBRARY_PATH` variable. For example: ``` -View the contents of your .cshrc. -``` -more .cshrc +setenv NCDIR ${CMAQ_HOME}/lib/x86_64/intel/netcdf +setenv NCFDIR ${CMAQ_HOME}/lib/x86_64/intel/netcdff +setenv LD_LIBRARY_PATH ${NCDIR}/lib:${NCFDIR}/lib:${LD_LIBRARY_PATH} ``` - -Edit your .cshrc to set the LD_LIBRARY_PATH to include the location of the netcdf libraries. Note this path is dependent on what compiler you used, replace intel with gcc if you used gnu rather than the intel compiler. +If this does not work, then cd to the build directory and use the command: ``` -setenv NCDIR ${CMAQ_HOME}/lib/x86_64/intel/netcdf -setenv NCFDIR ${CMAQ_HOME}/lib/x86_64/intel/netcdff -setenv LD_LIBRARY_PATH ${NCDIR}/lib:$NCFDIR/lib:${LD_LIBRARY_PATH} +ldd CCTM*.exe ``` +This will show the absolute path to the libraries used in compiling the model. Edit the `LD_LIBRARY_PATH` environment variable to include the *directories* where the libnetcdf.so and libnetcdff.so files are located. ### If the program did not complete successfully for another reason If the program did not complete successfully for another reason, you will need to check the per processor log files which begin with the name: CTM_LOG_\*. From 712bbdf2dcdcdec41e43819fa730f6a85d2caf00 Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Tue, 11 Jun 2024 14:50:06 -0400 Subject: [PATCH 067/375] Update CMAQ_UG_ch05_running_a_simulation.md --- DOCS/Users_Guide/CMAQ_UG_ch05_running_a_simulation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch05_running_a_simulation.md b/DOCS/Users_Guide/CMAQ_UG_ch05_running_a_simulation.md index 29d3f356b..d5edafcb6 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch05_running_a_simulation.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch05_running_a_simulation.md @@ -35,7 +35,7 @@ CMAQ_REPO/DOCS ### 5.2.2 Zip file Installation -Zip files of the CMAQ source code are available from the public GitHub repository. Click the button "Clone or download" from https://github.com/USEPA/CMAQ and select "Download ZIP" to download a Zip file of the CMAQv5.3 repository. Alternatively, you may download the Zip file from the [EPA CMAQ website](https://www.epa.gov/cmaq/access-cmaq-source-code). +Zip files of the CMAQ source code are available from the public GitHub repository. Click the button "Clone or download" from https://github.com/USEPA/CMAQ and select "Download ZIP" to download a Zip file of the CMAQ repository. Alternatively, you may download the Zip file from the [EPA CMAQ website](https://www.epa.gov/cmaq/access-cmaq-source-code). Reference input/output data for testing the installation of the software are available from the CMAS Center; *data are not available through GitHub*. You must register/login to access the source codes and data from the CMAS Center. From 886ff200921aa1a0dd5f3d96767fab5b36aeeaee Mon Sep 17 00:00:00 2001 From: chogrefe Date: Tue, 11 Jun 2024 15:30:13 -0400 Subject: [PATCH 068/375] Revised and expanded WBD description in UG_ch06 Added some additional context on the use of vegetation fraction and land use in the WBD module and its linkage to WRF configuration options. Noted results from recent tests that these WRF configuration options can change 12US1 domain-total WBD estimates by a factor of 4-5 Removed link to Appendix A since no "additional details" on WBD are provided there. Also changed all occurrences of "wind-blown" to "windblown" for consistency. --- ...MAQ_UG_ch06_model_configuration_options.md | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 38308b7d8..14ae091de 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -270,7 +270,7 @@ setenv PX_VERSION Y setenv CLM_VERSION Y setenv NOAH_VERSION Y ``` -Sets the correct soil hydrological properties and soil layer information needed to calculate soil NO emissions, NH3 bidirectional exchange and O3 deposition. These options are currently based on WRF 3.8.1 and earlier values for PX and CLM and WRF 4.0 for NOAH. If the land surface model is run with another look up table or parameterization, soil moisture will be constrained between saturation and residual water content from the parameterization in CMAQ. This is also the case for the m3dry deposition option, soil NO emissions, and wind-blown dust. +Sets the correct soil hydrological properties and soil layer information needed to calculate soil NO emissions, NH3 bidirectional exchange and O3 deposition. These options are currently based on WRF 3.8.1 and earlier values for PX and CLM and WRF 4.0 for NOAH. If the land surface model is run with another look up table or parameterization, soil moisture will be constrained between saturation and residual water content from the parameterization in CMAQ. This is also the case for the m3dry deposition option, soil NO emissions, and windblown dust. In CMAQ v5.4, the user can select one of three different aerosol deposition parameters within the STAGE deposition option. @@ -323,7 +323,7 @@ CMAQv5.3 introduced DESID so that the process of mapping emissions species to CM Depending on the nature of any stream and the information used to quantify its emissions, it may be treated as one of three types: #### Online Stream: -CMAQ will calculate the emission rates from this source using information about local meteorology, land characteristics, etc. The streams that can be run online in CMAQ are: [biogenics (BEIS/MEGAN)](#BEIS/MEGAN),[ wind-blown dust](#Wind_Blown_Dust), [sea spray](#Sea_Spray), and [lightning NO](#Lightning_NO). +CMAQ will calculate the emission rates from this source using information about local meteorology, land characteristics, etc. The streams that can be run online in CMAQ are: [biogenics (BEIS/MEGAN)](#BEIS/MEGAN),[ windblown dust](#Wind_Blown_Dust), [sea spray](#Sea_Spray), and [lightning NO](#Lightning_NO). #### Gridded Stream (offline): CMAQ will read emission rates from an input file, which is organized into an array that is identical in shape to the CMAQ model grid. Typically, these rates are stored at hourly time points and are then interpolated within CMAQ to each time step. These files may be 2D to represent just the surface layer emissions or they may be 3D. If 3D, the file may have the same number or fewer number of layers as the CMAQ grid. Gridded emissions may be merged into a single stream or kept as separate types. Some common examples of Gridded emissions include: @@ -497,12 +497,16 @@ The MEGAN_SOILINP and MEGAN_SOILOUT functionality is the same as for BEIS (see a -#### Wind-Blown Dust -The actual amount of dust emitted from an arid surface depends on wind speed, surface roughness, moisture content of the soil, vegetation coverage, soil type and texture, and air density. The main mechanism behind strong dust storms is called “saltation bombardment” or “sandblasting.” The physics of saltation include the movement of sand particles due to wind, the impact of these particles to the surface that removes part of the soil volume, and the release of smaller dust particles. CMAQ first calculates friction velocity at the surface of the Earth. Once this friction velocity exceeds a threshold value, saltation, or horizontal movement, flux is obtained. Finally, the vertical flux of the dust is calculated based on a sandblasting efficiency formulation - a vertical-to-horizontal dust flux ratio. +#### Windblown Dust +The amount of dust emitted from an arid surface depends on wind speed, surface roughness, moisture content of the soil, vegetation coverage, soil type and texture, and air density. The main mechanism behind strong dust storms is called “saltation bombardment” or “sandblasting.” The physics of saltation include the movement of sand particles due to wind, the impact of these particles to the surface that removes part of the soil volume, and the release of smaller dust particles. Following the approach described in Foroutan et al. (2017) to represent these processes, CMAQ first calculates friction velocity at the surface of the Earth. Once this friction velocity exceeds a threshold value, saltation, or horizontal movement, flux is obtained. Finally, the vertical flux of the dust is calculated based on a sandblasting efficiency formulation - a vertical-to-horizontal dust flux ratio. -CMAQ uses time-varying vegetation coverage, soil moisture and wind speed from the meteorological model, WRF. The vegetation coverage in WRF can vary depending on the configuration. In WRFv4.1+, the Pleim-Xiu land-surface model (PX LSM) was modified to provide CMAQ vegetation fraction (VEGF_PX in WRF renamed VEG in MCIP) from either the old fractional land use weighting table lookup method (pxlsm_modis_veg = 0), or a new option where vegetation fraction is directly read from the monthly MODIS derived vegetation coverage (pxlsm_modis_veg = 1) found in the wrflowinp_d0* file(s). This was done because in recent years WRF has provided high resolution (~1 km) monthly vegetation coverage that is more accurate than tables. Updates are backward compatible with older version of MCIP or WRF as long as VEG and VEGF_PX/VEGFRA are in those files. Using the MODIS data in WRF via the new PX vegetation option provides the dust model a more accurate representation of vegetation in regions where windblown dust most occurs. +In its windblown dust emission calculations, CMAQ uses time-varying vegetation coverage, soil moisture and wind speed from the meteorological model, WRF. The vegetation coverage is used to adjust the erodible portion of “desert land” grid cells (discussed in the next paragraph) and its representation in WRF can vary depending on the configuration. In WRFv4.1+, the Pleim-Xiu land-surface model (PX LSM) was modified to provide CMAQ vegetation fraction (VEGF_PX in WRF renamed VEG in MCIP) from either the old fractional land use weighting table lookup method (pxlsm_modis_veg = 0), or a new option where vegetation fraction is directly read from monthly MODIS satellite-derived vegetation coverage found in the wrflowinp_d0* file(s) (pxlsm_modis_veg = 1). This was done because in recent years WRF has provided high resolution (~1 km) monthly vegetation coverage that is more accurate than tables. Updates are backward compatible with older version of MCIP or WRF as long as VEG and VEGF_PX/VEGFRA are in those files. Using the MODIS data in WRF via the new PX vegetation option provides the dust model a more accurate representation of vegetation in regions where windblown dust most occurs. -As of version CMAQ version 5.4 the windblown dust module no longer accepts additional land use information beyond the land use information contained in the MCIP files. Users are strongly encouraged to enable the windblown dust module only for configurations using WRF version 4+. Windblown dust may only be enabled when using PX LSM input (setenv PX_VERSION Y), since other LSMs calculate soil properties at depths that are not consistent with assumptions in the windblown dust module. See [Appendix A](Appendix/CMAQ_UG_appendixA_model_options.md) for additional information about the windblown dust module. +CMAQ windblown dust emissions are only computed for certain land use types defined as “desert” land, i.e. erodible, arid land. During the initial development of the CMAQ windblown dust module, three such “desert” land use types were defined and information about their fractional coverage was based on the Biogenic Emissions Landuse Database (BELD) and was provided to CMAQ through a separate input file. Later developments added the option to alternatively obtain land use information directly from MCIP (which in turn reflects the land use option selected for the WRF LSM, such as NCLD40 or MODIS), internally mapping “desert” types defined for the different WRF land use options to the three different BELD “desert” categories used in the CMAQ windblown dust algorithm. This supported the calculation of windblown dust emissions for areas outside North America where BELD is not available. As of version CMAQ version 5.4, the windblown dust module no longer supports reading a separate file with BELD land use data and always uses land use information contained in the MCIP files. + +The WRF configuration choices discussed above, i.e. land use and vegetation fraction, can have a pronounced impact on CMAQ windblown dust calculations. Recent tests with MODIS vs. NLCD40 land use and lookup table vs. satellite-derived vegetation fraction found that the lowest (MODIS land use with lookup table vegetation fraction) and highest (NLCD40 land use with satellite-derived vegetation fraction) estimates of US annual total windblow dust emissions differed by a factor of 4-5. The estimates from the tests with MODIS land use were closer to estimates using the BELD land use configuration (used in Foroutan et al., 2017) than those from the tests with NLCD40 land use. + +Users are strongly encouraged to enable the windblown dust module only for configurations using WRF version 4+. Windblown dust may only be enabled when using PX LSM input (setenv PX_VERSION Y), since other LSMs calculate soil properties at depths that are not consistent with assumptions in the windblown dust module. The CMAQ windblown dust module is controlled by the following RunScript flag: @@ -511,12 +515,12 @@ setenv PX_VERSION Y setenv CTM_WB_DUST Y ``` -Note that if this flag is set to N to indicate zero wind-blown dust emissions, users should set the CTM_EMISCHK variable in the RunScript to FALSE to avoid crashing CMAQ when it cannot find species it is looking for from dust emissions. +Note that if this flag is set to N to indicate zero windblown dust emissions, users should set the CTM_EMISCHK variable in the RunScript to FALSE to avoid crashing CMAQ when it cannot find species it is looking for from dust emissions. -Alternatively, users can also edit the emission control file by commenting out the coarse and fine species expected for the wind-blown dust module. The following species are emitted by the Dust module and may be referenced in the emission control file [Table 6-1](#Table6-1): +Alternatively, users can also edit the emission control file by commenting out the coarse and fine species expected for the windblown dust module. The following species are emitted by the Dust module and may be referenced in the emission control file [Table 6-1](#Table6-1): -**Table 6-1. Aerosol Species Predicted by the Wind-Blown Dust Module** +**Table 6-1. Aerosol Species Predicted by the Windblown Dust Module** |**Dust Surrogate Name** | **Default CMAQ Species** | **Description** | | --------------- | ---------|--------------------------------------- | From d550083ad3c9b1304a4b5451927b7b6621deb024 Mon Sep 17 00:00:00 2001 From: James Beidler <35079372+jlbeidler@users.noreply.github.com> Date: Tue, 11 Jun 2024 15:31:28 -0400 Subject: [PATCH 069/375] Update CMAQ_UG_appendixC_spatial_data.md Remove fire section as it didn't contain information from spatial data. Added reference to shp2cmaq for creating regional masks for ISAM and DESID. Various other clean-ups. --- .../CMAQ_UG_appendixC_spatial_data.md | 62 +++---------------- 1 file changed, 10 insertions(+), 52 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md index 7f7a83760..4fc0f41f2 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md @@ -12,17 +12,11 @@ Air quality modeling requires many spatial data to generate anthropogenic, biogenic, fire, sea salt, dust, and NH3 emissions. In addition, land surface characteristics such as land cover types with vegetation leaf area index (LAI) and fraction, albedo, and soil types are required in modeling the exchanges of heat, moisture, and momentum between the land and atmosphere and dry deposition -of trace chemicals (e.g. O3 and NH3). It is important to use a consistent coordinate system for all the -geospatial data used in emission, meteorology, and air quality modeling. Most of the geospatial data -required for the Sparse Matrix Operator Kernel Emissions (SMOKE)/Weather Research and Forecasting -(WRF)/CMAQ modeling can be generated using the Spatial Allocator (SA) that includes three components -developed for specific applications: Vector, Raster, and Surrogate Tools. - -In using the spatial data, it is important to know the datum, which is a spheroidal (either spherical - or ellipsoidal) surface that represents the surface of the earth, and the projection, which is a - mathematic transformation that converts a location on the datum to the location on a flat plane. - The following sections briefly describe the appropriate datum and projections to use with the CMAQ system - and the methods for generating the needed spatial data in the correct form. +of trace chemicals (e.g. O3 and NH3). It is important to use a consistent coordinate system for all the geospatial data used in emission, meteorology, and air quality modeling. Most of the geospatial data +required for the Sparse Matrix Operator Kernel Emissions (SMOKE), Weather Research and Forecasting +(WRF), and CMAQ modeling can be generated using the [Spatial Allocator (SA)](https://www.cmascenter.org/sa-tools/) or the [Surrogate Tool](https://github.com/CEMPD/SurrogateToolsDB). + +In using the spatial data, it is important to know the datum, which is a spheroidal surface that represents the surface of the earth, and the projection, which is a mathematic transformation that converts a location on the datum to the location on a flat plane. The following sections briefly describe the appropriate datum and projections to use with the CMAQ system and the methods for generating the needed spatial data in the correct form. ## C.2 Geodetic datum @@ -60,46 +54,11 @@ Geographic: "+proj=latlong +a=6370000.0 +b=6370000.0" Emission spatial allocation surrogates are required for generating anthropogenic emissions by SMOKE to spatially allocate county-based emission inventories to model grid cells. Emission surrogates can be based -on population, roads, airports, railroads, and land use spatial data sets. The SA Vector and Surrogate -Tools can be used to generate all needed emission surrogates for SMOKE. - -- [SA Vector and Surrogate Tools](https://www.cmascenter.org/sa-tools/) - -**Biogenic emissions** require land use input including different tree species. There are two ways to -compute the required input for the domain covering the continental U.S. (CONUS). - -1. The original method—re-grid Biogenic Emissions Landuse Database, Version 3 (BELD3) using a SA Vector -allocation tool. The BELD3 data is generated from the early 1990s AVHRR land cover data and FIA tree -species at the county level. -2. The second method—use the SA Raster BELD4 land cover generation tool to generate model domain land use - data with tree species. Then, a provided utility is used to convert the generated land cover data into - an I/O API format for CMAQ input. The limitation for this tool is that the early 1990s county-level FIA tree species - table is still used in allocating FIA tree species (this is also the case for the 1st approach). - -- [SA Vector and Surrogate Tools](https://www.cmascenter.org/sa-tools/) -- [SA Raster BELD4 land cover generation tool](https://www.cmascenter.org/sa-tools/documentation/4.2/Raster_Users_Guide_4_2.pdf) - -**Fire emissions** require fire location, burned areas, and detailed fuel load information. -Fire locations are available via satellite detections from the Hazard Mapping System (HMS) or ground -level reports from the National Fire and Aviation Management web application. Burn Area estimates can -be obtained from GIS based sources such as the Geospatial Multi-Agency Coordination (GeoMac) website or -the U.S. National Historical Fire Perimeters Data Basin Dataset. Fuel loading is estimated using a -geospatial dataset such as the US Forest Service Fuel Characteristic Classification System (FCCS). -All these information sources can be used to estimate fire emissions. An example of a tool that can -be used to generate fire emissions is the BlueSky modeling framework. BlueSky modularly links a variety -of independent models of fire information, fuel loading, fire consumption, fire emissions, and smoke -dispersion. Using these tools and estimating fire emissions can be quite complex so datasets of fire -emissions have been created for the community. Examples of such datasets are the Fire INventory from -the National Center for Atmospheric Research (FINN) or the Global Fire Emissions Database (GFED). - -- [Hazard Mapping System Fire and Smoke Product](https://www.ospo.noaa.gov/Products/land/hms.html) -- [National Fire and Aviation Management Web Application](https://fam.nwcg.gov/fam-web/) -- [Geospatial Multi-Agency Coordination website](https://www.geomac.gov/) -- [U.S. National Historical Fire Perimeters Data Basin Dataset](https://www.arcgis.com/home/item.html?id=6b68271ebee147d99525e0b914823155) -- [US Forest Service Fuel Characteristic Classification System](https://www.fs.fed.us/pnw/fera/fft/fccsmodule.shtml) -- [US Forest Service BlueSky Modeling Framework](https://sites.google.com/firenet.gov/wfaqrp-airfire-info/playground) -- [Fire INventory from the National Center for Atmospheric Research](https://www2.acom.ucar.edu/modeling/finn-fire-inventory-ncar) -- [Global Fire Emissions Database](http://www.globalfiredata.org/) +on population, roads, airports, railroads, and land use spatial data sets. The [Surrogate Tool](https://github.com/CEMPD/SurrogateToolsDB) can be used for to generate spatial surrogates for SMOKE. + +**Regional masks** are used to specify regions such as states, counties, or countries within a gridded spatial domain. These regions are applied to regionally scale emissions as specified in section B.3.4 of the [DESID Appendix](CMAQ_UG_appendixB_emissions_control.md) and to track emissions by region in [ISAM](../Users_Guide/CMAQ_UG_ch11_ISAM.md) Masks can be created from a geospatial file of regions, such as county shapefile, with the [shp2cmaq](../../../PREP/shp2cmaq/README.md) tool or the Spatial Allocator. + +**Biogenic emissions** requires land use input including coverage of different tree species. The landcover for BELD3 and BELD4 may be generated using the Spatial Allocator's [BELD4 land cover tools](https://github.com/CMASCenter/Spatial-Allocator/blob/master/docs/User_Manual/SA_ch03_vector.md#processing-biogenic-emissions-land-use-data). **Sea spray emissions** require open ocean and surf zone (50m) buffer fractions for the modeling grid cells in an I/O API file. For most of North American domain, a SA Vector allocation tool can be used @@ -121,7 +80,6 @@ using a utility program in FEST-C for CMAQ input. Note that the BELD4 data used - [Fertilizer Emission Scenario Tool for CMAQ (FEST-C)](https://www.cmascenter.org/fest-c/) - FEST-C reference: Ran, L., Yuan, Y., Cooter, E., Benson, V., Yang, D., Pleim, J., Wang, R. and Williams, J. (2019). An integrated agriculture, atmosphere, and hydrology modeling system for ecosystem assessments. Journal of Advances in Modeling Earth Systems, 11(12), 4645-4668. DOI: [https://doi.org/10.1029/2019MS001708](https://doi.org/10.1029/2019MS00170) - **Land use and land cover data for surface flux modeling** in meteorology and air quality can be generated using WPS or the SA Raster Tools. It is important to use consistent land use data in both meteorology and air quality modeling. For the U.S., WPS contains re-gridded 9-arc From 9cb139a6c80396ba10e3a6b469f3052bc6d6b571 Mon Sep 17 00:00:00 2001 From: chogrefe Date: Tue, 11 Jun 2024 15:35:46 -0400 Subject: [PATCH 070/375] Added Foroutan et al. (2017) reference --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 14ae091de..ae0c65efd 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -1018,6 +1018,8 @@ Donahue, N.M., et al. (2012). A two-dimensional volatility basis set – Part 2: Fahey, K.M., Carlton, A.G., Pye, H.O.T., Baek, J., Hutzell, W.T., Stanier, C.O., Baker, K.R., Appel, K.W., Jaoui, M., & Offenberg, J.H. (2017). A framework for expanding aqueous chemistry in the Community Multiscale Air Quality (CMAQ) model version 5.1. Geosci. Model Dev., 10, 1587-1605. +Foroutan, H., J. Young, S. Napelenok, L. Ran, K. W. Appel, R. C. Gilliam, and J. E. Pleim (2017), Development and evaluation of a physics-based windblown dust emission scheme implemented in the CMAQ modeling system, J. Adv. Model. Earth Syst., 9, 585–608, doi:10.1002/2016MS000823 + Gantt, B., Kelly, J.T., & Bash, J.O. (2015). Updating sea spray aerosol emissions in the Community Multiscale Air Quality (CMAQ) model version 5.0.2. Geosci. Model Dev., 8, 3733-3746. [doi:10.5194/gmd-8-3733-201](https://doi.org/10.5194/gmd-8-3733-201). Giorgi, F. (1986). A particle dry-deposition parameterization scheme for use in tracer transport models. J. Geophys. Res., 91(D9), 9794-9806. From 66788be75749145e27a265fd5644799cf8ba4f58 Mon Sep 17 00:00:00 2001 From: SfarrellCMAQ <139152912+SfarrellCMAQ@users.noreply.github.com> Date: Tue, 11 Jun 2024 16:54:12 -0400 Subject: [PATCH 071/375] Update CMAQ_UG_tutorial_oceanfile.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_oceanfile.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_oceanfile.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_oceanfile.md index a83f73534..8a1055294 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_oceanfile.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_oceanfile.md @@ -43,7 +43,7 @@ The default alloc_srf_zone_to_oceanfile.csh script is shown below. To customize setenv DEBUG_OUTPUT Y # Set executable -setenv EXE "$SA_HOME/bin/32bits/allocator.exe" +setenv EXE "$SA_HOME/bin/32bits/allocator.exe" #change this to 64bits instead of 32bits if you have a 64bit machine # Set Input Directory setenv DATADIR $SA_HOME/data @@ -86,7 +86,7 @@ Run the script and check the output directory designated in the run script for t This section uses a Jupyter Notebook. Jupyter Notebooks can be run on cloud-based systems like SageMaker, Binder, Google Colab, or any linux system with Jupyter installed (https://jupyter.org/install). -The Jupyter notebook CMAQ_DMS_ChlorA.ipynb (located in the [PREP](../../../PREP) directory) can be used to add DMS and CHLO to the existing OCEAN file. See the tool’s [README](../../../PREP/PYTOOLS/dmschlo/README.md) for instructions on how to configure an environment for this notebook. The notebook requires setting the following 6 variables: dom, ocnintmpl, ocnouttmpl, gdpath, overwrite, getlatestchlo. +The Jupyter notebook CMAQ_DMS_ChlorA.ipynb (located in the [PYTOOLS](../../../PYTOOLS) directory) can be used to add DMS and CHLO to the existing OCEAN file. See the tool’s [README](../../../PYTOOLS/dmschlo/README.md) for instructions on how to configure an environment for this notebook. The notebook requires setting the following 6 variables: dom, ocnintmpl, ocnouttmpl, gdpath, overwrite, getlatestchlo. Variable “dom” is the output domain which can be defined as follows (12US1 is the output domain name): dom = '12US1' From d025ec7df088a0594026b52d82187b94e10ab0f2 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Tue, 11 Jun 2024 17:05:07 -0400 Subject: [PATCH 072/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index 7de952718..61d2fcb51 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -861,10 +861,14 @@ OMI ozone column data by latitude and longitude for use in the photolysis calcul **PHOT_OPTICS: Optical and related parameters** +Used by: CCTM + Wavelength, optical and surface albedo parameters for CMAQ in-line photolysis calculation. The values are determined by averaging technique over the above number of wavelength bins. This file is distributed with the CMAQ code. **CSQY: Absorption cross sections & quantum yields** +Used by: CCTM + Wavelength and photolysis rate parameters for CMAQ in-line photolysis calculation. This file is distributed with the CMAQ code and is chemical mechanism specific. From 8a195cb194f1c559f83551453fb0e34908d941d8 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Tue, 11 Jun 2024 17:28:51 -0400 Subject: [PATCH 073/375] Update CMAQ_UG_ch08_analysis_tools.md --- .../Users_Guide/CMAQ_UG_ch08_analysis_tools.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md index 5ad037344..0f9b69802 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md @@ -8,7 +8,7 @@ # 8. Analysis Tools for CMAQ output ## 8.1 Introduction -Many software programs are freely available for pre- and post-processing, evaluating and visualizing CMAQ outputs. Examples of such freeware are provided in [Table 8-1](#Analysis_Software_Table). Several other commercial packages, including MATLAB and IDL, also support the analysis and visualization of CMAQ inputs and outputs. Most visualization and analysis software that support netCDF file formats will work with CMAQ outputs. +Many software programs are freely available for pre- and post-processing, evaluating and visualizing CMAQ outputs. Examples of such freeware are provided in [Table 8-1](#Analysis_Software_Table). Several other commercial packages, including MATLAB and IDL, also support the analysis and visualization of CMAQ inputs and outputs. Most visualization and analysis software that support netCDF file formats, such as R and Python, will work with CMAQ outputs. @@ -32,16 +32,20 @@ Many software programs are freely available for pre- and post-processing, evalua This chapter briefly describes how to use some of the software tools supported by the EPA and CMAS to aggregate CMAQ output, pair aggregated CMAQ output in space and time to air quality observations, create various evaluation plots, and visualize model fields. ## 8.2 Aggregating and Transforming Model Species Concentrations -CMAQ now has two options for outputting pollutant concentrations. -1) As in previous CMAQ versions, the CCTM_ACONC and CCTM_CONC files give access to raw species concentrations that typically need to be postprocessed to allow comparisons to measurements. -For example, the CMAQ aerosol module explicitly represents a number of individual PM2.5 species that need to be combined for comparisons to measured total PM2.5 mass, and the daily model output files typically need to be concatenated for comparisons to observations often organized as annual files. Since the number and definition of model output species differs between chemical mechanisms, the combine utility relies on a mechanism-specific "Species Definition" file that prescribes how ELMO-processed output variables should be mapped and/or combined to become comparable to different measured gas, particle and deposition species. -2) The ELMO capability introduced in CMAQv5.4 in conjunction with the combine utility released as part of the CMAQ POST tools can be used to accomplish aggregation tasks. (See [Apendix F](Appendix/CMAQ_UG_appendixF_elmo_output.md) for an introduction to ELMO). + +The *combine* Fortran program, released as part of the CMAQ POST tools, can combine species from raw CMAQ output files or wrfout input files into a new I/O API file. Model species can be aggregated or transformed into variables of interest, e.g., to match observed quantities from a specific monitoring network. Output files can be concatenated to create files for longer time periods (e.g., files with hourly data for individual days into a single file for an entire month) and model variables from different output files (e.g., chemical species from CCTM files and meteorlogical variables from MCIP files). + +The combine utility relies on a mechanism-specific "Species Definition" files that prescribe how CMAQ variables should be mapped and/or combined to become comparable to different measured gas, particle and deposition species. When you download the CMAQ code, the Species Definition files corresponding to default model output variables are automatically included under the subdirectory "CCTM/src/MECHS". Within each of the listed mechanism folders, you will find files "SpecDef_MECH_NAME.txt" (for gas and aerosol species) and "SpecDef_dep_MECH_NAME.txt" (for deposition species) that contain a long list of species definitions and corresponding documentation. For example, to find how to calculate PM2.5 using the cb6r5_ae7_aq mechanism, open the file "SpecDef_cb6r5_ae7_aq.txt" and read the documentation on PM2.5 calculations to see how it relates to model species in the CCTM_AELMO output files. These species definition files are designed to be used with the combine utility to extract model variables that match observed quantities from specific monitoring networks. More information on the combine utility and its use can be found in this [README file.]( ../../POST/combine/README.md) + +[edits in progress] +Some species aggregation is also happening within the CMAQ model. For example CMAQ aerosol module explicitly represents a number of individual PM2.5 species that need to be combined for comparisons to measured total PM2.5 mass. +The Explicit and Lumped Model Output (ELMO) capability introduced in CMAQv5.4 in conjunction with the combine utility released as part of the CMAQ POST tools can be used to accomplish aggregation tasks. (See [Apendix F](Appendix/CMAQ_UG_appendixF_elmo_output.md) for an introduction to ELMO). When you download the CMAQ code for version 5.4 or later, the Species Definition files corresponding to default ELMO output variables are automatically included under the subdirectory "CCTM/src/MECHS". -Within each of the listed mechanism folders, you will find files "SpecDef_MECH_NAME.txt" and "SpecDef_dep_MECH_NAME.txt" that contain a long list of species definitions and corresponding documentation. For example, to find how to calculate PM2.5 using the cb6r5_ae7_aq mechanism, open the file "SpecDef_cb6r5_ae7_aq.txt" and read the documentation on PM2.5 calculations to see how it relates to the ELMO-processed species in the CCTM_AELMO output files. These species definition files are designed to be used with the combine utility to extract model variables that match observed quantities from specific monitoring networks. More information on the combine utility and its use can be found in this [README file.]( ../../POST/combine/README.md) See Appendix F and the [ELMO source code](../../CCTM/src/driver/ELMO_PROC.F) for details about the calculation of each ELMO output variable. Each variable is also given [metadata](../../CCTM/src/driver/ELMO_DATA.F) to describe its purpose. +See Appendix F and the [ELMO source code](../../CCTM/src/driver/ELMO_PROC.F) for details about the calculation of each ELMO output variable. Each variable is also given [metadata](../../CCTM/src/driver/ELMO_DATA.F) to describe its purpose. ## 8.3 Model-Observation Pairing for Model Evaluation - Once model output has been processed using *combine*, the *sitecmp* and *sitecmp_dailyo3* utilities can be used to match air pollutant measurements with the appropriate model predicted variables. This pairing of model and observed variables is specified in the run scripts for *sitecmp* and *sitecmp_dailyo3*. In *sitecmp_dailyo3* this step is controlled by the definition of environment variables OBS_SPECIES and OZONE. See the [README.md](../../POST/sitecmp_dailyo3/README.md) and the sample run script in the [*sitecmp_dailyo3* scripts](../../POST/sitecmp_dailyo3/scripts) folder for more information on setting these environment variables. The run script for the *sitecmp* utility can be customized for many different types of chemical and meteorological quantities as described in the [README.md](../../POST/sitecmp/README.md) for sitecmp. Sample run scripts for the AQS, CSN, IMPROVE, NADP and SEARCH networks based on the 2016 CMAQ test case are provided in the [*sitecmp* scripts](../../POST/sitecmp/scripts) folder. In addition, the [README.txt](../../POST/sitecmp/scripts/README.txt) file within the *sitecmp* scripts folder provides the configuration options for monitoring networks. Note that there are multiple formats for CSN and SEARCH observed data files depending on the year. The README.txt file is broken into different sections to reflect the change in species names in the observation files for these two networks. (For example, elemental carbon measurements from the CSN network are labeled as “ec_niosh” in 2009 and earlier, “ec_tor” in 2010, and “88380_val” starting in 2011.) + Once model output has been processed using *combine*, the *sitecmp* and *sitecmp_dailyo3* utilities can be used to match air pollutant measurements with the appropriate model predicted variables. This pairing of model and observed variables is specified in the run scripts for *sitecmp* and *sitecmp_dailyo3*. In *sitecmp_dailyo3* this step is controlled by the definition of environment variables OBS_SPECIES and OZONE. See the [README.md](../../POST/sitecmp_dailyo3/README.md) and the sample run script in the [*sitecmp_dailyo3* scripts](../../POST/sitecmp_dailyo3/scripts) folder for more information on setting these environment variables. The run script for the *sitecmp* utility can be customized for many different types of chemical and meteorological quantities as described in the [README.md](../../POST/sitecmp/README.md) for sitecmp. Sample run scripts for the AQS, CSN, IMPROVE, NADP and SEARCH networks based on the 2016 CMAQ test case are provided in the [*sitecmp* scripts](../../POST/sitecmp/scripts) folder. In addition, the [README.md](../../POST/sitecmp/scripts/README.md) file within the *sitecmp* scripts folder provides the configuration options for monitoring networks. Note that there are multiple formats for CSN and SEARCH observed data files depending on the year. The README.txt file is broken into different sections to reflect the change in species names in the observation files for these two networks. (For example, elemental carbon measurements from the CSN network are labeled as “ec_niosh” in 2009 and earlier, “ec_tor” in 2010, and “88380_val” starting in 2011.) ### 8.3.1 Spatial matching in sitecmp and sitecmp_dailyo3 In *sitecmp*, model values are extracted for the grid cell containing the monitor location. In *sitecmp_dailyo3* the model value of the grid cell containing the observation is provided, as well as the maximum model value of the 9 grid cells centered on the monitor location. These variables in the output file contain the character string "9cell" in the variable name. From caf527882b9e57f953a63252411d509d525bcbff Mon Sep 17 00:00:00 2001 From: coastwx Date: Wed, 12 Jun 2024 06:18:20 -0400 Subject: [PATCH 074/375] Update CMAQ_UG_appendixE_configuring_WRF.md --- .../CMAQ_UG_appendixE_configuring_WRF.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md index 896b21c93..e7e034e15 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md @@ -6,7 +6,12 @@ # Appendix E: Configuring the Weather Research and Forecasting Model (WRF) for Use with Air Quality Models -## E.1 WRF version 4.3+ +## E.1 WRF version 4.6 + +* Placeholder +* Placeholder + +## E.2 WRF version 4.3+ * **[WRF configuration guide for CMAQ applications](http://www2.mmm.ucar.edu/wrf/users/docs/PX-ACM.pdf)** * UPDATE: Modified the ACM2 PBL height algorithm for stable conditions so that the Richardson number is computed using windspeed @@ -15,7 +20,7 @@ in layer k rather than wind speed difference between layer k and ksrc. * UPDATE: Consolidated WRF PX LSM code with MPAS versions. The PX LSM code in WRFv4.3 is the exact same code as that for MPASv7.2+ -## E.2 WRF version 4.0 +## E.3 WRF version 4.0 * WRF4.0 has updates to the ACM2 PBL model to account for the new default hybrid coordinate system. Our internal model runs suggest that the hybrid option (hybrid_opt =2) improves the model in areas where topographical variations are more extreme like the Rocky Mountains. As such, it is suggested, but not a requirement, to use this option in WRF that became the default in WRF4.0. @@ -23,10 +28,10 @@ in layer k rather than wind speed difference between layer k and ksrc. * UPDATE: Also, the soil calculation in the PX LSM were modified to use analytical functions from Noilhan and Mahfouf (1996) for field capacity, saturation and wilting point based on fractional soil data. Also, variables for fractional clay, fine and coarse sand were added in PX for output to the CMAQ air quality model. This is an important update because these data are used for dust emissions in the air quality model along with the new soil properties (wilting, saturation and field capacity). SOILTYP was also updated in PX LSM so soil classes are consistent with the standard 16 soil types in the WRF system. Prior, PX only had 12 classes and classes 4-12 were not the same as those classes used by other LSMs. -## E.3 WRF version 3.7 +## E.4 WRF version 3.7 * **[Section from WRFv3.7 Technical Documentation related to air quality modeling](http://www2.mmm.ucar.edu/wrf/users/docs/PX-ACM.pdf):** This 8 page pdf provides description and procedures for using the Pleim-Xiu LSM, ACM2 PBL and Pleim Surface Layer Scheme in WRF including best practices and namelist options. -## E.4 WRF with lightning assimilation +## E.5 WRF with lightning assimilation * **[WRF with Lightning Assimilation User's Guide](https://wcms.epa.gov/sites/production/files/2017-02/documents/wrf_with_ltga_userguide.pdf):** This 3 page pdf describes how to run WRF with the lightning assimilation technique described in Heath et al. (2016). The assimilation method uses gridded lightning data to trigger and suppress sub-grid deep convection in Kain-Fritsch. The gridded lightning data (variable name is ‘LNT’) is read in through auxinput8. The lightning data is grouped into @@ -35,7 +40,7 @@ All of the necessary code modifications and data are described in the document. * **[WRF with Lightning Assimilation Code](https://wcms.epa.gov/sites/production/files/2017-02/ltgda_wrf_16feb2017.zip):** This .zip file (ltgda_wrf_16feb2017.zip; 220K) contains the registry and FORTRAN files with the updates needed to run WRF with lightning assimilation, as well as a generic Python script to grid lightning data to your WRF domain. -## E.5 Reference: +## E.6 Reference: Noilhan, J., & Mahfouf, J. F. (1996). The ISBA land surface parameterization scheme. Global and planetary Change, 13(1-4), 145-159. @@ -59,7 +64,7 @@ Heath, N. K., J. E. Pleim, R. C. Gilliam, & D. Kang (2016). A simple lightning a Gilliam, R. C., Herwehe, J. A., Bullock, Jr, O. R., Pleim, J. E., Ran, L., Campbell, P. C., & Foroutan, H. (2021). Establishing the suitability of the model for prediction across scales for global retrospective air quality modeling. Journal of Geophysical Research: Atmospheres, 126, e2020JD033588. https://doi.org/10.1029/2020JD033588 - +Kang, D., Heath, N., Gilliam, R., Spero, T., and Pleim, J.: Lightning Assimilation in the Weather Research and Forecasting (WRF) Model Version 4.1.1: Technique Updates and Assessment of the Applications from Regional to Hemispheric Scales, EGUsphere [preprint], https://doi.org/10.5194/egusphere-2022-348, 2022. From e076f018fc31d5c78381387a8a5a6eb51300e528 Mon Sep 17 00:00:00 2001 From: coastwx Date: Wed, 12 Jun 2024 07:00:54 -0400 Subject: [PATCH 075/375] Update CMAQ_UG_appendixE_configuring_WRF.md --- .../CMAQ_UG_appendixE_configuring_WRF.md | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md index e7e034e15..b0a6d15b9 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md @@ -1,4 +1,4 @@ - +![image](https://github.com/kmfoley/CMAQ_Dev/assets/15362904/ee418b62-60ef-4f41-b7ec-0553e135c744) [<< Previous Appendix](CMAQ_UG_appendixD_parallel_implementation.md) - [Home](../README.md) - [Next Appendix >>](CMAQ_UG_appendixF_elmo_output.md) @@ -6,32 +6,40 @@ # Appendix E: Configuring the Weather Research and Forecasting Model (WRF) for Use with Air Quality Models -## E.1 WRF version 4.6 +## E.1 WRF for CMAQ & Output -* Placeholder -* Placeholder +* **[WRF configuration guide for CMAQ applications](http://www2.mmm.ucar.edu/wrf/users/docs/PX-ACM.pdf)** +* CMAQ is best connected to WRF that uses the P-X LSM with key variables in the output. Users can either forces these in the WRF output by modifying the Registry or use a run-time option. +* WRF output variables can be specified in simple text file this single line "+:h:0:,RS,RA,ZNT_PX,VEGF_PX,LAI_PX,LANDUSEF,WFC_PX,WSAT_PX,WWLT_PX,CSAND_PX,FMSAND_PX,CLAY_PX" +* P-X LSM variables (same as above) can be specified in output using Registry file $WRFDIR/Registry/Registry.EM_COMMON by adding "h" to the section of each P-X LSM variable entry -## E.2 WRF version 4.3+ -* **[WRF configuration guide for CMAQ applications](http://www2.mmm.ucar.edu/wrf/users/docs/PX-ACM.pdf)** +## E.2 WRF version 4.6 + +* UPDATE: P-X LSM compatible with 61 class MODIS Local Climate Zone (LCZ) landuse option +* UPDATE: Latent heat effect on ground temperature from the vegetated fraction of the grid cell and from wet canopy was added to P-X LSM. +* UPDATE: NaN fix from a divide by zero because of a zero-value soil parameter when a water cell turns to sea ice. + +## E.3 WRF version 4.3+ + * UPDATE: Modified the ACM2 PBL height algorithm for stable conditions so that the Richardson number is computed using windspeed in layer k rather than wind speed difference between layer k and ksrc. -* UPDATE: Added new pathway for evaporation from the ground in the vegetated fraction of the grid cell in PX LSM module. -* UPDATE: Consolidated WRF PX LSM code with MPAS versions. The PX LSM code in WRFv4.3 is the exact same code as that for MPASv7.2+ +* UPDATE: Added new pathway for evaporation from the ground in the vegetated fraction of the grid cell in P-X LSM module. +* UPDATE: Consolidated WRF P-X LSM code with MPAS versions. The P-X LSM code in WRFv4.3 is the exact same code as that for MPASv7.2+ -## E.3 WRF version 4.0 +## E.4 WRF version 4.0 * WRF4.0 has updates to the ACM2 PBL model to account for the new default hybrid coordinate system. Our internal model runs suggest that the hybrid option (hybrid_opt =2) improves the model in areas where topographical variations are more extreme like the Rocky Mountains. As such, it is suggested, but not a requirement, to use this option in WRF that became the default in WRF4.0. -* UPDATE: Added vegetation and leaf-area index option for Pleim-Xiu land-surface runs. Until this version, the PX LSM uses VEGFRA and LAI computed from the module_sf_pxlsm_data.F PX data table. This uses fractional landuse and these lookup values to compute the LAI and VEGFRA for each grid cell. The new option (pxlsm_modis_veg = 1) is activated using this option in the physics section of the namelist.input file. It uses the time-varying VEGFRA and LAI from the wrflowinp_d01 file instead of the look-up values in the PX data table. This allows use of more accurate high resolution MODIS that is now available in WPS in WRFv4+. Alternatively, users can process their own MODIS data for specific years and put in this same input file. -* UPDATE: Also, the soil calculation in the PX LSM were modified to use analytical functions from Noilhan and Mahfouf (1996) for field capacity, saturation and wilting point based on fractional soil data. Also, variables for fractional clay, fine and coarse sand were added in PX for output to the CMAQ air quality model. This is an important update because these data are used for dust emissions in the air quality model along with the new soil properties (wilting, saturation and field capacity). SOILTYP was also updated in PX LSM so soil classes are consistent with the standard 16 soil types in the WRF system. Prior, PX only had 12 classes and classes 4-12 were not the same as those classes used by other LSMs. +* UPDATE: Added vegetation and leaf-area index option for Pleim-Xiu land-surface runs. Until this version, the P-X LSM uses VEGFRA and LAI computed from the module_sf_pxlsm_data.F PX data table. This uses fractional landuse and these lookup values to compute the LAI and VEGFRA for each grid cell. The new option (pxlsm_modis_veg = 1) is activated using this option in the physics section of the namelist.input file. It uses the time-varying VEGFRA and LAI from the wrflowinp_d01 file instead of the look-up values in the P-X data table. This allows use of more accurate high resolution MODIS that is now available in WPS in WRFv4+. Alternatively, users can process their own MODIS data for specific years and put in this same input file. +* UPDATE: Also, the soil calculation in the P-X LSM were modified to use analytical functions from Noilhan and Mahfouf (1996) for field capacity, saturation and wilting point based on fractional soil data. Also, variables for fractional clay, fine and coarse sand were added in P-X for output to the CMAQ air quality model. This is an important update because these data are used for dust emissions in the air quality model along with the new soil properties (wilting, saturation and field capacity). SOILTYP was also updated in P-X LSM so soil classes are consistent with the standard 16 soil types in the WRF system. Prior, P-X only had 12 classes and classes 4-12 were not the same as those classes used by other LSMs. -## E.4 WRF version 3.7 +## E.5 WRF version 3.7 * **[Section from WRFv3.7 Technical Documentation related to air quality modeling](http://www2.mmm.ucar.edu/wrf/users/docs/PX-ACM.pdf):** This 8 page pdf provides description and procedures for using the Pleim-Xiu LSM, ACM2 PBL and Pleim Surface Layer Scheme in WRF including best practices and namelist options. -## E.5 WRF with lightning assimilation +## E.6 WRF with lightning assimilation * **[WRF with Lightning Assimilation User's Guide](https://wcms.epa.gov/sites/production/files/2017-02/documents/wrf_with_ltga_userguide.pdf):** This 3 page pdf describes how to run WRF with the lightning assimilation technique described in Heath et al. (2016). The assimilation method uses gridded lightning data to trigger and suppress sub-grid deep convection in Kain-Fritsch. The gridded lightning data (variable name is ‘LNT’) is read in through auxinput8. The lightning data is grouped into From 63ec5d44df7a9583770aa68ffd18259ed9f9830c Mon Sep 17 00:00:00 2001 From: kfahey92 Date: Wed, 12 Jun 2024 10:28:00 -0400 Subject: [PATCH 076/375] Update CMAQ_UG_ch06_model_configuration_options.md Added another reference for 6.12 --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 38308b7d8..9113917f7 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -937,7 +937,7 @@ Clouds are an important component of air quality modeling and play a key role in When liquid water content (LWC), represented as the sum of cloud water, rain water, and graupel, in a cell (or column average in the case of sub-grid clouds) exceeds a critical threshold of 0.01 gm-3, a call is made to the cloud chemistry module where in-cloud scavenging and wet deposition are calculated in addition to aqueous phase chemistry. Accumulation and coarse mode aerosols are assumed to be instantaneously activated (i.e., nucleation scavenging), and Aitken mode particles (i.e., interstitial aerosol) are scavenged by the cloud droplets for the duration of cloud processing (Binkowski and Roselle, 2003). Gas phase species that participate in aqueous chemistry are taken up into the cloud water according to their Henry’s Law coefficient, dissociation constants, and droplet pH. For each cloud chemistry time step, dissolved gas and aerosol species and associated ions are deposited out of the system according to a scavenging rate that is based on precipitation rate, cloud/layer thickness, and total water content (i.e., the sum of cloud water, rain water, graupel, ice, and snow). When the liquid water content does not exceed the threshold to call the cloud chemistry module (or for all species that do not participate in cloud chemistry), the wet deposition is calculated in a similar way in the “scavwdep” subroutine. Using the same expression for the washout coefficient as in the aqueous chemistry module, aerosol species are subject to wet removal assuming they are incorporated into cloud/rain water as above; while the fraction of gas phase species’ concentrations subject to wet removal is a function of their effective Henry’s Law coefficients at a prescribed droplet pH of 4. Essentially what is represented in CMAQ is in-cloud scavenging (or “rainout”); though arguably some effects of below-cloud scavenging (or “washout”) may also be represented by including rain water in the LWC considered in calling/calculating cloud chemistry, as well as calculating aqueous chemistry and scavenging for the column (extending from the cloud top to the ground) in the case of sub-grid raining clouds. Explicit treatment of below-cloud scavenging (e.g., impaction scavenging of below-cloud aerosols by rain drops and snow) is not implemented at this time. -CMAQ’s standard cloud chemistry treatment (AQCHEM) estimates sulfate production from five sulfur oxidation pathways and also includes a simple parameterization to estimate secondary organic aerosol formation from the reactions of glyoxal and methylglyoxal with the hydroxyl radical. The distribution between gas and aqueous phases is determined by instantaneous Henry’s law equilibrium, and the bisection method is used to estimate pH (and the distribution of ionic species) assuming electroneutrality. Beginning with CMAQv5.1 a new set of options for cloud chemistry (currently, KMT version 2 or "KMT2") was introduced that relies on the Kinetic PreProcessor (KPP), version 2.2.3 (Damian et al., 2002) to generate a Rosenbrock integrator to solve the chemical kinetics, ionic dissociation, wet deposition, and kinetic mass transfer (Schwartz, 1986) between the gas and aqueous phases in CMAQ clouds (Fahey et al., 2017; 2022 (in preparation)). In addition to the five sulfur reactions in the standard cloud chemistry module, KMT2 replaces the simple in-cloud yield parameterization of SOA from glyoxal and methylglyoxal with a more mechanistic representation of the multi-step formation of oxalic acid/oxalate and other organic acids (assumed here to remain in the aerosol phase after cloud droplet evaporation) from the reactions of hydroxyl radical with glyoxal, methylglyoxal, glycolaldehyde, and acetic acid (Lim et al., 2005; Tan et al., 2009). KMT2 also includes in-cloud SOA formation from biogenic-derived epoxides (Pye et al., 2013) as well additional reactions for S, N, O-H, and C species (Leriche et al., 2013; Warneck, 1999; Lee and Schwartz, 1983). +CMAQ’s standard cloud chemistry treatment (AQCHEM) estimates sulfate production from five sulfur oxidation pathways and also includes a simple parameterization to estimate secondary organic aerosol formation from the reactions of glyoxal and methylglyoxal with the hydroxyl radical. The distribution between gas and aqueous phases is determined by instantaneous Henry’s law equilibrium, and the bisection method is used to estimate pH (and the distribution of ionic species) assuming electroneutrality. Beginning with CMAQv5.1 a new set of options for cloud chemistry (currently, KMT version 2 or "KMT2") was introduced that relies on the Kinetic PreProcessor (KPP), version 2.2.3 (Damian et al., 2002) to generate a Rosenbrock integrator to solve the chemical kinetics, ionic dissociation, wet deposition, and kinetic mass transfer (Schwartz, 1986) between the gas and aqueous phases in CMAQ clouds (Fahey et al., 2017). In addition to the five sulfur reactions in the standard cloud chemistry module, KMT2 replaces the simple in-cloud yield parameterization of SOA from glyoxal and methylglyoxal with a more mechanistic representation of the multi-step formation of oxalic acid/oxalate and other organic acids (assumed here to remain in the aerosol phase after cloud droplet evaporation) from the reactions of hydroxyl radical with glyoxal, methylglyoxal, glycolaldehyde, and acetic acid (Lim et al., 2005; Tan et al., 2009; Lim et al., 2013). KMT2 also includes in-cloud SOA formation from biogenic-derived epoxides (Pye et al., 2013) as well additional reactions for S, N, O-H, and C species (Leriche et al., 2013; Warneck, 1999; Lee and Schwartz, 1983). KMT2 can be significantly more computationally demanding than standard AQCHEM and may be thus better suited for research applications, particularly those investigating cloud/fog events or the evolution of species whose concentrations are potentially heavily influenced by cloud processing and not explicitly represented in the standard AQCHEM mechanism (e.g., oxalate). For simulations where the primary focus is on simulating ozone or total PM2.5 concentrations, especially for longer-term averages, standard AQCHEM would likely capture the most important cloud chemistry impacts (i.e., sulfate formation from the main aqueous oxidation pathways) and is significantly more computationally efficient. @@ -1038,6 +1038,8 @@ Leriche, M., Pinty, J.P., Mari, C., & Gazen, D. (2013). A cloud chemistry module Lim, H., Carlton, A.G., & Turpin, B.J. (2005). Isoprene forms secondary organic aerosol through cloud processing: model simulations. Environ. Sci. Technol., 39, 4441–4446. +Lim, Y.B., Tan, Y., & Turpin, B.J. (2013). Chemical insights, explicit chemistry, and yields of secondary organic aerosol from OH radical oxidation of methylglyoxal and glyoxal in the aqueous phase, Atmos. Chem. Phys., 13, 8651–8667. + Massad, R.S., Nemitz, E., Sutton, M.A. (2010). Review and parameterization of bi-directional ammonia exchange between vegetation and the atmosphere. Atmos. Chem. Phys., 10, 10359-10386. Mathur, R. & Peters, L.K. (1990). Adjustment of wind fields for application in air pollution modeling, Atmos. Environ., 24(5), 1095-1106. From 9da78cfac6ec1f87b0c2371dbd4d4d9ebfc37b7d Mon Sep 17 00:00:00 2001 From: kfahey92 Date: Wed, 12 Jun 2024 10:43:49 -0400 Subject: [PATCH 077/375] Update CMAQ_UG_appendixA_model_options.md Updated the available cloud modules in CMAQv5.5 --- .../Appendix/CMAQ_UG_appendixA_model_options.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index 03588af62..31e488e9b 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -261,13 +261,15 @@ Calculate inline plume rise for large point sources using the Briggs algorithm a - `ModCloud: [default: cloud/acm_ae6]` CMAQ cloud module for modeling the impacts of clouds on deposition, mixing, photolysis, and aqueous chemistry. See [Chapter 6](../CMAQ_UG_ch06_model_configuration_options.md#612-aqueous-chemistry-scavenging-and-wet-deposition) for further information. - `cloud/acm_ae6` - ACM cloud processor that uses the ACM methodology to compute convective mixing with heterogeneous chemistry for AERO6 + ACM cloud processor that uses the ACM methodology to compute convective mixing with aqueous chemistry for AERO6 - `cloud/acm_ae6_mp` - ACM cloud processor that uses the ACM methodology to compute convective mixing with heterogeneous chemistry for AERO6 and air toxics; this is the multipollutant mechanism in CMAQv5 - - `cloud/acm_ae6_kmt` - ACM cloud processor that uses the ACM methodology to compute convective mixing with heterogeneous chemistry for AERO6 and aqueous chemistry with kinetic mass transfer and Rosenbrock solver - - `cloud/acm_ae6i_kmti` - ACM cloud processor that uses the ACM methodology to compute convective mixing with heterogeneous chemistry for AERO6 and aqueous chemistry with kinetic mass transfer and Rosenbrock solver with an extension to simulate the aqueous phase formation of SOA in cloud droplets, see: [CMAQv5.1 Aqueous Chemistry](https://www.airqualitymodeling.org/index.php/CMAQv5.1_Aqueous_Chemistry) + ACM cloud processor that uses the ACM methodology to compute convective mixing with aqueous chemistry for AERO6 and air toxics; this is the multipollutant mechanism in CMAQv5 + - `cloud/acm_ae7` + ACM cloud processor that uses the ACM methodology to compute convective mixing with aqueous chemistry for AERO7 + - `cloud/acm_ae7_kmt2` + ACM cloud processor that uses the ACM methodology to compute convective mixing with aqueous chemistry for AERO7. This cloud mechanism considers kinetic mass transfer and uses a Rosenbrock solver to simulate extended aqueous chemistry in cloud droplets + - `cloud/acm_cracmm` + ACM cloud processor that uses the ACM methodology to compute convective mixing with aqueous chemistry for CRACMM - `ModUtil: [default: util]` CMAQ utility modules. Do not change this module setting. From f500b547cc2c730186118accacf9217508c9e8b1 Mon Sep 17 00:00:00 2001 From: Sergey Napelenok Date: Wed, 12 Jun 2024 10:46:26 -0400 Subject: [PATCH 078/375] Update CMAQ_UG_ch10_HDDM-3D.md --- DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md b/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md index c8a57c702..874cca258 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md @@ -26,7 +26,7 @@ Starting from CMAQv5.4, DDM-3D has been fully integrated into the base model and To use CMAQ-DDM-3D, follow the normal build process for CMAQ described in [Chapter 5](CMAQ_UG_ch05_running_a_simulation.md), but make sure to uncomment the following line in bldit_cctm.csh: ``` - set DDM3D_CCTM #> uncomment to compile CCTM with DD3D activated + set DDM3D_CCTM #> uncomment to compile CCTM with DDM-3D activated ``` **A note about I/O API installation for DDM applications** From df444fe62d0e6d31ec92436121ce4d912be87c05 Mon Sep 17 00:00:00 2001 From: Sergey Napelenok Date: Wed, 12 Jun 2024 10:56:01 -0400 Subject: [PATCH 079/375] Update bldit_cctm.csh --- CCTM/scripts/bldit_cctm.csh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CCTM/scripts/bldit_cctm.csh b/CCTM/scripts/bldit_cctm.csh index 35996c74a..245dab20f 100755 --- a/CCTM/scripts/bldit_cctm.csh +++ b/CCTM/scripts/bldit_cctm.csh @@ -78,7 +78,7 @@ set make_options = "-j" #> additional options for make command if #set ISAM_CCTM #> uncomment to compile CCTM with ISAM activated #> comment out to use standard process -#set DDM3D_CCTM #> uncomment to compile CCTM with DD3D activated +#set DDM3D_CCTM #> uncomment to compile CCTM with DDM-3D activated #> comment out to use standard process #> Two-way WRF-CMAQ #set build_twoway #> uncomment to build WRF-CMAQ twoway; From 5ced0a444e918858cd8738999b1be512b18a19a0 Mon Sep 17 00:00:00 2001 From: SfarrellCMAQ <139152912+SfarrellCMAQ@users.noreply.github.com> Date: Wed, 12 Jun 2024 11:17:51 -0400 Subject: [PATCH 080/375] Update CMAQ_DMS_ChlorA.ipynb --- PYTOOLS/dmschlo/CMAQ_DMS_ChlorA.ipynb | 248 ++++++-------------------- 1 file changed, 56 insertions(+), 192 deletions(-) diff --git a/PYTOOLS/dmschlo/CMAQ_DMS_ChlorA.ipynb b/PYTOOLS/dmschlo/CMAQ_DMS_ChlorA.ipynb index 1e75f36f8..88a1e294d 100644 --- a/PYTOOLS/dmschlo/CMAQ_DMS_ChlorA.ipynb +++ b/PYTOOLS/dmschlo/CMAQ_DMS_ChlorA.ipynb @@ -10,9 +10,9 @@ "\n", "---\n", " author: Barron H. Henderson\n", - " contributors: Brett Gantt, Jeff Willison, and Golam Sarwar\n", + " contributors: Brett Gantt, Jeff Willison, Golam Sarwar, and Sara Farrell\n", " date: 2021-03-23\n", - " last updated: 2022-04-29\n", + " last updated: 2024-06-12\n", "---\n", "\n", "This notebook creates CMAQ-Ready input files necessary for CMAQ halogen and DMS. DMS chemistry requires DMS concentrations and halogen chemistry relies on chlorophyll concentrations. The Chlorophyll is extracted from NASA MODIS-Aqua level-3 data prodcuts. The DMS is created from monthly climatologies from the Surface Ocean and Lower Atmosphere (SOLAS) project.\n", @@ -31,7 +31,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -88,14 +88,14 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { "id": "kEMW45MRTS2b" }, "outputs": [], "source": [ "installprereq = True\n", - "installcdo = True\n", + "installcdo = False\n", "# Use a preinstalled version of cdo in the user path\n", "cdopath = 'cdo'\n", "# Or specify a specific path. For example, at EPA use :\n", @@ -121,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "id": "_Rj0_8nn93gD" }, @@ -150,7 +150,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -203,7 +203,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "id": "1Za8quom-Jw5" }, @@ -246,25 +246,16 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "id": "48wbKUlv_p-Q" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Automatic pdb calling has been turned OFF\n", - "CDI version 1.9.10\n" - ] - } - ], + "outputs": [], "source": [ "%pdb off\n", "cdoo = cdo.Cdo(cdopath)\n", "cdoo.setCdo(cdopath)\n", - "print('CDI version', cdoo.version())\n" + "print('CDI version', cdoo.version())" ] }, { @@ -280,7 +271,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "id": "PNJHfh9F_lqN" }, @@ -294,7 +285,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { "id": "MNbuxMR53G41" }, @@ -308,7 +299,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": { "id": "weQTj7odsz43" }, @@ -370,19 +361,11 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": { "id": "Dsxsj5-zliXT" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 100.0%" - ] - } - ], + "outputs": [], "source": [ "dmsurl = 'https://www.bodc.ac.uk/solas_integration/implementation_products/group1/dms/documents/dmsclimatology.zip'\n", "dmsdest = 'dmsclimatology/dmsclimatology.zip'\n", @@ -401,7 +384,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": { "id": "1KUkmDBclsOt" }, @@ -422,7 +405,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": { "id": "rbf5_7XOlwi9" }, @@ -490,14 +473,14 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": { "id": "t0AxBqGyuPBk" }, "outputs": [], "source": [ "# Choose one or neither\n", - "usesetmisstonn = True\n", + "usesetmisstonn = False\n", "usefillmiss = False\n", "\n", "dmsoutpath = f'dmsclimatology/{dom}/dmsconcentration.{dom}.nc'\n", @@ -544,20 +527,18 @@ " * Copy the urls from the webpage list and paste over the results below.\n", " * Replace the cgi url with the opendap url\n", " * replace \"https://oceandata.sci.gsfc.nasa.gov/cgi/getfile/\"\n", - " * with \"https://oceandata.sci.gsfc.nasa.gov:443/opendap/MODISA/L3SMI/%Y/%j/\n", - " * where %Y and %j are the first year and julian day in the file names. (e.g., 2003191)\n", - " * A%Y%j%Y%j.L3m_MO_CHL_chlor_a_9km.nc\n", - " * For example, the original URL https://oceandata.sci.gsfc.nasa.gov/cgi/getfile/A20202752020305.L3m_MO_CHL_chlor_a_9km.nc becomes https://oceandata.sci.gsfc.nasa.gov:443/opendap/MODISA/L3SMI/2020/275/A20202752020305.L3m_MO_CHL_chlor_a_9km.nc\n", + " * with \"https://oceandata.sci.gsfc.nasa.gov:443/opendap/MODISA/L3SMI/%Y/%m%d/\n", + " * where %Y, %m, and %d are the year, month and day in the file names. (e.g., 20020701)\n", + " * AQUA_MODIS.%Y%m%d_%Y%m%d.L3m.MO.CHL.chlor_a.9km.nc\n", + " * For example, the original URL https://oceandata.sci.gsfc.nasa.gov/cgi/getfile/AQUA_MODIS.20020701_20020731.L3m.MO.CHL.chlor_a.9km.nc becomes https://oceandata.sci.gsfc.nasa.gov:443/opendap/MODISA/L3SMI/2002/0701/AQUA_MODIS.20020701_20020731.L3m.MO.CHL.chlor_a.9km.nc\n", "\n", "* You can also use files that you have already downloaded, by setting urls to point to those files.\n" ] }, { "cell_type": "code", - "execution_count": 14, - "metadata": { - "id": "MrzsXHqg1_My" - }, + "execution_count": null, + "metadata": {}, "outputs": [], "source": [ "if getlatestchlo:\n", @@ -566,7 +547,7 @@ "\n", " urls = []\n", " webroot = 'https://oceandata.sci.gsfc.nasa.gov:443/opendap/MODISA/L3SMI/'\n", - " for prefix in ['2003/213', '2003/244', '2003/274', '2003/305', '2003/335', '2004/001', '2004/032', '2004/061', '2004/092', '2004/122', '2004/153', '2004/183']:\n", + " for prefix in ['2002/0701', '2002/0801', '2002/0901', '2002/1001', '2002/1101', '2002/1201', '2003/0101', '2003/0201', '2003/0301', '2003/0401', '2003/0501', '2003/0601']:\n", " htmlout = urlopen(webroot + prefix)\n", " htmltxt = htmlout.read().decode()\n", " mostrecent = sorted(re.compile('(?<=>).+L3m_MC_CHL_chlor_a_9km.nc(?= Date: Wed, 12 Jun 2024 11:35:00 -0400 Subject: [PATCH 081/375] Update CMAQ_UG_ch10_HDDM-3D.md --- DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md b/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md index 874cca258..d542c0169 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md @@ -31,7 +31,7 @@ To use CMAQ-DDM-3D, follow the normal build process for CMAQ described in [Chapt **A note about I/O API installation for DDM applications** -I/O APIv3.2 supports up to MXFILE3=64 open files, each with up to MXVARS3=2048. DDM applications configured to calculate sensitivity to a large number of parameters may exceed this upper limit of model variables, leading to a model crash. To avoid this issue, users may use I/O API version 3.2 "large" that increases MXFILE3 to 512 and MXVARS3 to 16384. Instructions to build this version are found in [Chapter 3](https://github.com/USEPA/CMAQ/blob/main/DOCS/Users_Guide/CMAQ_UG_ch03_preparing_compute_environment.md#333-io-api-library). +I/O APIv3.2 supports up to MXFILE3=64 open files, each with up to MXVARS3=2048. DDM-3D applications configured to calculate sensitivity to a large number of parameters may exceed this upper limit of model variables, leading to a model crash. To avoid this issue, users may use I/O API version 3.2 "large" that increases MXFILE3 to 512 and MXVARS3 to 16384. Instructions to build this version are found in [Chapter 3](https://github.com/USEPA/CMAQ/blob/main/DOCS/Users_Guide/CMAQ_UG_ch03_preparing_compute_environment.md#333-io-api-library). # 10.3 CMAQ-DDM-3D Run Instructions From c40b8feb5f929bad325b89844ad487cd91127ca8 Mon Sep 17 00:00:00 2001 From: Sergey Napelenok Date: Wed, 12 Jun 2024 11:54:18 -0400 Subject: [PATCH 082/375] Update CMAQ_UG_ch11_ISAM.md --- DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md | 36 ++++++++++++++++++--------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md b/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md index e45add5cd..13cc7ba9e 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md @@ -17,18 +17,30 @@ Answering this type of question often requires running an air quality model twic Alternatively, running CMAQ with ISAM enabled allows the user the ability to calculate source attribution of a large number of sources directly by the model in one simulation. -Note: While full model species list apportionment is in development, currently ISAM is limited to the following species classes in CMAQ: - -``` -SULFATE - ASO4J, ASO4I, SO2, SULF, SULRXN -NITRATE - ANO3J, ANO3I, HNO3, ANO3J, ANO3I, HNO3, NO, NO2, NO3, HONO, N2O5, PNA, PAN, PANX, NTR1, NTR2, INTR -AMMONIUM - ANH4J, ANH4I, NH3 -EC - AECJ, AECI -OC - APOCI, APOCJ, APNCOMI, APNCOMJ -VOC - Various species depending on mechanism. Now includes CO. (see CCTM/src/isam/SA_DEFN.F for complete list) -PM25_IONS - ANAI, ANAJ, AMGJ, AKJ, ACAJ, AFEJ, AALJ, ASIJ, ATIJ, AMNJ, AOTHRI, AOTHRJ -OZONE - all NITRATE species + all VOC species -CHLORINE - ACLI, ACLJ, HCL +Full model species list apportionment is currently availabe in CMAQ-ISAM, but can be specified the following Tag Classes (depending on base model configuration): + +``` +SULFATE - ASO4J, ASO4I, SO2, SULF, SULRXN +NITRATE - ANO3J, ANO3I, HNO3, ANO3J, ANO3I, HNO3, NO, NO2, NO3, HONO, N2O5, PNA, PAN, PANX, NTR1, NTR2, INTR +AMMONIUM - ANH4J, ANH4I, NH3 +EC - AECJ, AECI +OC - APOCI, APOCJ, APNCOMI, APNCOMJ +VOC - Various species depending on mechanism. Now includes CO. (see CCTM/src/isam/SA_DEFN.F for complete list) +PM_IONS - ANAI, ANAJ, AMGJ, AKJ, ACAJ, AFEJ, AALJ, ASIJ, ATIJ, AMNJ, AOTHRI, AOTHRJ +OZONE - all NITRATE species + all VOC species +CHLORINE - ACLI, ACLJ, HCL +NVPOA - Non-Volatile Primary Organic Aerosol (APOC, APNCOM) +PM_TOT - all PM species +HAP_GAS - Gaseous Hazardous Air Pollutants +HAP_AERO - Aerosol Hazardous Air Pollutants +HAP_TOT - HAP_GAS and HAP_AERO +URBAN_TOXICS - Classic Urban Air Toxics +PAH_TEQ - NonReactive PAH tracers +BENAPYRENE - Gaseous and aerosol Benzo[a]Pyrene +MERCURY - Gaseous and aeroosl Mercury species +ALL - All model species + + ``` ## 11.2 Build Instructions From 09d44e3ff7a5877f06fbc8e2158a8df0477928a5 Mon Sep 17 00:00:00 2001 From: Ben_Murphy Date: Wed, 12 Jun 2024 11:56:13 -0400 Subject: [PATCH 083/375] Update CMAQ_UG_tutorial_emissions.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md index e711436c5..46c8f605a 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md @@ -31,8 +31,9 @@ residential heating, etc. - [13. Use a family of streams to scale emissions for a group of sources](#fam_stream) - [14. Use a family of regions to scale emissions in a new location](#fam_region) - [15. Use a family of species to scale emissions for a custom group of pollutants](#fam_chem) -- [A1. Appendix: Example Emission Control File](#appendix1) -- [A2. Appendix: Example Emissions Section of CCTM RunScript File](#appendix2) +- [Example DESID Control File](../../../CCTM/src/emis/emis/CMAQ_Control_DESID.nml) +- [Example DESID Scaling Rules File](../../../CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2.nml) +- [Example Emissions Section of CCTM RunScript File](../../../CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh#L100) From b1c189d796a648c5d77e0be0f5725260887f7b67 Mon Sep 17 00:00:00 2001 From: Ben_Murphy Date: Wed, 12 Jun 2024 11:57:15 -0400 Subject: [PATCH 084/375] Update CMAQ_UG_tutorial_emissions.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md index 46c8f605a..76fe9e9e0 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md @@ -33,7 +33,7 @@ residential heating, etc. - [15. Use a family of species to scale emissions for a custom group of pollutants](#fam_chem) - [Example DESID Control File](../../../CCTM/src/emis/emis/CMAQ_Control_DESID.nml) - [Example DESID Scaling Rules File](../../../CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2.nml) -- [Example Emissions Section of CCTM RunScript File](../../../CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh#L100) +- [Example Emissions Section of CCTM RunScript File](../../../CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh#L420) From cd304a5473834f014455bb2688d03102f4d27b50 Mon Sep 17 00:00:00 2001 From: chogrefe Date: Wed, 12 Jun 2024 12:03:45 -0400 Subject: [PATCH 085/375] combine README update part 1 added some notes on the combine run script and the example SpecDef files. --- POST/combine/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/POST/combine/README.md b/POST/combine/README.md index 67d47a2dc..61394b2bc 100644 --- a/POST/combine/README.md +++ b/POST/combine/README.md @@ -79,7 +79,7 @@ Table 2. Functions over all Input Files per Output Time Step Variables from input files are defined by their name followed by its file number enclosed in brackets. Once defined in a species definition file, variables can subsequently be referred to by their name and the number zero enclosed in brackets. Adding a + or - sign before the file number within the bracket instructs combine to use the variable value for the next or previous timestep instead of the current time step when evaluating the expression. This can be used to define variables that are computed as difference between the current and previous time step, for example to compute hourly precipitation as the difference in WRF cumulative precipitation values between successive timesteps. -Examples of possible post-processing expressions are shown in the sample SPECIES_DEF files under the scripts/spec_def_files folder in this directory. Species definitions are used to specify how the concentrations of raw output species from CMAQ should be aggregated or transformed into variables of interest. For example, the concentrations of NO and NO2 from CMAQ can be added together to yield the concentration of NOx. Because each chemical mechanism being used in CMAQ differs in the number and kind of species it treats, each example file is specific to a certain chemical mechanism. The sample spec_def files provided have been labeled according to the mechanism each corresponds to. In addition to each spec_def file, a spec_dep file exists for each chemical mechanism that demonstrates how deposition rates can be aggregated to useful quantities (these are indicated with the "Dep" label in the file name). +Examples of possible post-processing expressions are shown in the sample SPECIES_DEF files under the scripts/spec_def_files folder in this directory. Species definitions are used to specify how the concentrations of raw output species from CMAQ should be aggregated or transformed into variables of interest. For example, the concentrations of NO and NO2 from CMAQ can be added together to yield the concentration of NOx. Because each chemical mechanism being used in CMAQ differs in the number and kind of species it treats, each example file is specific to a certain chemical mechanism. The sample spec_def files provided have been labeled according to the mechanism each corresponds to. In addition to each spec_def file, a spec_dep file exists for each chemical mechanism that demonstrates how deposition rates can be aggregated to useful quantities (these are indicated with the "Dep" label in the file name). Users wanting to apply `combine` to other post-processing tasks (e.g. aggregating raw DDM3D or ISAM output species, aggregating individual aerosol species from DESID diagnostic emission files into total PM emissions) can use these sample files as a starting point for creating their own SPECIES_DEF files supporting such applications. **If you have questions about the sample species definition files or find something that does not seem correct please discuss it with us by creating an "Issue" through GitHub or contacting the CMAS Help Desk: http://www.cmascenter.org.** @@ -97,7 +97,7 @@ Edit the sample run script (run.combine.aconc), then run: ``` ./run.combine |& tee combine.aconc.log ``` -A sample run script for creating a combine file for evaluating deposition and average concentration is also provided (run_combine.csh). +A sample run script for creating combine files for evaluating deposition and hourly average concentrations is also provided (run_combine.csh). In addition to aggregating CCTM output variables, this script also illustrates the use of looping to combine day-specific CCTM files with hourly values into a single output file with hourly values that spans the entire analysis period. Note that this sample run script contains two time loops over days, one for creating the combine file for hourly average concentrations (using inputs from CCTM_ACONC, CCTM_AELMO, METCRO2D, and METCRO3D) and a second one for creating the combine file for deposition (using inputs from CCTM_DRYDEP, CCTM_WETDEP1, and METCRO2D). Within each time loop, specific definitions of SPECIES_DEF, INFILEx and OUTFILE are being set up before calling the `combine` executable for each day. If users wish to adapt this run script for their own application (e.g. for aggregating diagnostic emission files), only a single time loop may be required. Check the log file to ensure complete and correct execution without errors. From 63d4feb6ea9c39459f104818c3ca7b024c6c965f Mon Sep 17 00:00:00 2001 From: coastwx Date: Wed, 12 Jun 2024 12:25:35 -0400 Subject: [PATCH 086/375] Add files via upload --- DOCS/Users_Guide/PDF/PX-ACM-WRFV4.6-MPAS.pdf | Bin 0 -> 165038 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 DOCS/Users_Guide/PDF/PX-ACM-WRFV4.6-MPAS.pdf diff --git a/DOCS/Users_Guide/PDF/PX-ACM-WRFV4.6-MPAS.pdf b/DOCS/Users_Guide/PDF/PX-ACM-WRFV4.6-MPAS.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0e537acbbc29a216c0dc45aa1279cfbd222824cf GIT binary patch literal 165038 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 ua&i9oP6v*Q^Z!fhBs3i8&O*O8N`m#On Date: Wed, 12 Jun 2024 12:37:35 -0400 Subject: [PATCH 087/375] Update CMAQ_UG_ch06_model_configuration_options.md Add information about phot options. --- ...MAQ_UG_ch06_model_configuration_options.md | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 9113917f7..3ea1e047c 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -784,9 +784,20 @@ or set ModPhot = phot/table ``` -The in-line method (Binkowski et al., 2007) is the preferred option because it includes feedbacks from meteorology in addition to predicted ozone and aerosol concentrations. Three ASCII files support the in-line method. **PHOT_OPTICS** describes the optical properties of clouds, aerosols, and the earth’s surface. The **OMI** file is used to determine how much light is absorbed by ozone above the model domain. Both files are included in the released version of CMAQ. Calculating photolysis rates uses one more file, the -`**CSQY_DATA_${Mechanism}**` -file, that depends on the mechanism used. It contains the cross sections and quantum yields of photolysis rates used by the mechanism. The files are provided for each mechanism in a released version of CMAQ. If a user creates a mechanism using new or additional photolysis rates, they have to create a new `**CSQY_DATA_${Mechanism}**` file. The [inline_phot_preproc utility](../../UTIL/inline_phot_preproc/README.md) produces this file based on the Fortran modules describing the mechanism and data files describing the absorption cross-section and quantum yields described for each photolysis reaction. The CCTM RunScript sets values for each file's path through the environment variables OPTICS_DATA, OMI, and CSQY_DATA. +The in-line method (Binkowski et al., 2007) is the preferred option because it includes feedbacks from meteorology in addition to predicted ozone and aerosol concentrations. Starting CMAQv5.5, there are several in-line options toggled by the environmental variable "AEROSOL_OPTICS". The table below summarizes the in-line options: + +| **Environmental Variable**|**In-line Photolysis Method**|**Description**| +|:--------------:|:----:|:--------:| +| setenv AEROSOL_OPTICS 1 | Tabular Mie | This option adapts a look-up table and interpolation method for aerosol optical properteis described by Fast et al. (2005). Wavelength and aerosol refractive index are the independent variables of the table. The dependent variable is coefficients from curving fitting on Mie Scattering Solutions over aerosol radius for a fixed wavelength and refractive index. A bilinear interpolation estimates the fitting functions' coefficients at the aerosol refractive index during a model timestep and specified wavelength. The aforementioned look-up table is created in-line and saved to an ASCII file when NEW_START equals true or when the ASCII file is missing. The location of where this table lives can be controlled by "setenv MIE_TABLE ${SOMELOCATION}. | +| setenv AEROSOL_OPTICS 2 | MieCalc | Mie Solution for a uniformly mixed sphere. | +| setenv AEROSOL_OPTICS 3 | Fast Optics | The fastest and default option, uses case approximation of Mie Scattering theory for a uniformly mixed sphere whose refractive index is a volume weighted average of the aerosol modal component's refractive indicies. | +| setenv AEROSOL_OPTICS 4 | Coreshell + Tabular Mie | Option where the internal structure of an aerosol is represented as a uniformly mixed shell surrounded by a black carbon core. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by Tabular Mie. | +| setenv AEROSOL_OPTICS 5 | Coreshell + MieCalc | Option where the internal structure of an aerosol is represented as a uniformly mixed shell surrounded by a black carbon core. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by MieCalc.| +| setenv AEROSOL_OPTICS 6 | Coreshell + Fast Optics | Option where the internal structure of an aerosol is represented as a uniformly mixed shell surrounded by a black carbon core. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by Fast Optics. | + +Three ASCII files support the in-line methods. **PHOT_OPTICS** describes the optical properties of clouds, aerosols, and the earth’s surface. The **OMI** file is used to determine how much light is absorbed by ozone above the model domain. Both files are included in the released version of CMAQ. Calculating photolysis rates uses one more file, the +**CSQY_DATA_${Mechanism}** +file, that depends on the mechanism used. It contains the cross sections and quantum yields of photolysis rates used by the mechanism. The files are provided for each mechanism in a released version of CMAQ. If a user creates a mechanism using new or additional photolysis rates, they have to create a new **CSQY_DATA_${Mechanism}** file. The [inline_phot_preproc utility](../../UTIL/inline_phot_preproc/README.md) produces this file based on the Fortran modules describing the mechanism and data files describing the absorption cross-section and quantum yields described for each photolysis reaction. The CCTM RunScript sets values for each file's path through the environment variables OPTICS_DATA, OMI, and CSQY_DATA. The other option uses look-up tables that contain photolysis rates under cloud free conditions based on a fixed meridional cross-section of atmospheric composition, temperature, density and aerosols. The values represent rates as a function of altitude, latitude and the hour angle of the sun on a specified Julian date. In model simulations, the method interpolates rates in the table for the date and corrects them to account for clouds described by the meteorology. Tables are dependent on the photochemical mechanism used. The [jproc utility](../../UTIL/jproc/README.md) creates them based on the photochemical mechanism's FORTRAN modules. The CCTM RunScript sets the value for a table's path with the environment variable XJ_DATA. @@ -1014,6 +1025,9 @@ Donahue, N.M., et al. (2012). A two-dimensional volatility basis set – Part 2: Fahey, K.M., Carlton, A.G., Pye, H.O.T., Baek, J., Hutzell, W.T., Stanier, C.O., Baker, K.R., Appel, K.W., Jaoui, M., & Offenberg, J.H. (2017). A framework for expanding aqueous chemistry in the Community Multiscale Air Quality (CMAQ) model version 5.1. Geosci. Model Dev., 10, 1587-1605. +Fast, J. D., W. I. Gustafson Jr., R. C. Easter, R. A. Zaveri, J. C. Barnard, E. G. Chapman, G. A. Grell, and S. E. Peckham(2006), Evolution of ozone, particulates, and aerosol direct radiative forcing in the vicinity of Houston using a fully coupledmeteorology-chemistry-aerosol model,J. Geophys. Res.,111, D21305, doi:10.1029/2005JD006721 + + Gantt, B., Kelly, J.T., & Bash, J.O. (2015). Updating sea spray aerosol emissions in the Community Multiscale Air Quality (CMAQ) model version 5.0.2. Geosci. Model Dev., 8, 3733-3746. [doi:10.5194/gmd-8-3733-201](https://doi.org/10.5194/gmd-8-3733-201). Giorgi, F. (1986). A particle dry-deposition parameterization scheme for use in tracer transport models. J. Geophys. Res., 91(D9), 9794-9806. From 26d87f22af26b589dc23c3d600873021ed3802d7 Mon Sep 17 00:00:00 2001 From: fisidi <47453034+fisidi@users.noreply.github.com> Date: Wed, 12 Jun 2024 12:38:36 -0400 Subject: [PATCH 088/375] Update CMAQ_UG_ch06_model_configuration_options.md Add missing quotation mark. --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 3ea1e047c..c6b8f0023 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -788,7 +788,7 @@ The in-line method (Binkowski et al., 2007) is the preferred option because it i | **Environmental Variable**|**In-line Photolysis Method**|**Description**| |:--------------:|:----:|:--------:| -| setenv AEROSOL_OPTICS 1 | Tabular Mie | This option adapts a look-up table and interpolation method for aerosol optical properteis described by Fast et al. (2005). Wavelength and aerosol refractive index are the independent variables of the table. The dependent variable is coefficients from curving fitting on Mie Scattering Solutions over aerosol radius for a fixed wavelength and refractive index. A bilinear interpolation estimates the fitting functions' coefficients at the aerosol refractive index during a model timestep and specified wavelength. The aforementioned look-up table is created in-line and saved to an ASCII file when NEW_START equals true or when the ASCII file is missing. The location of where this table lives can be controlled by "setenv MIE_TABLE ${SOMELOCATION}. | +| setenv AEROSOL_OPTICS 1 | Tabular Mie | This option adapts a look-up table and interpolation method for aerosol optical properteis described by Fast et al. (2005). Wavelength and aerosol refractive index are the independent variables of the table. The dependent variable is coefficients from curving fitting on Mie Scattering Solutions over aerosol radius for a fixed wavelength and refractive index. A bilinear interpolation estimates the fitting functions' coefficients at the aerosol refractive index during a model timestep and specified wavelength. The aforementioned look-up table is created in-line and saved to an ASCII file when NEW_START equals true or when the ASCII file is missing. The location of where this table lives can be controlled by "setenv MIE_TABLE ${SOMELOCATION}". | | setenv AEROSOL_OPTICS 2 | MieCalc | Mie Solution for a uniformly mixed sphere. | | setenv AEROSOL_OPTICS 3 | Fast Optics | The fastest and default option, uses case approximation of Mie Scattering theory for a uniformly mixed sphere whose refractive index is a volume weighted average of the aerosol modal component's refractive indicies. | | setenv AEROSOL_OPTICS 4 | Coreshell + Tabular Mie | Option where the internal structure of an aerosol is represented as a uniformly mixed shell surrounded by a black carbon core. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by Tabular Mie. | From cd9d4ded93bdbb74c700ea2b0fd770dab27af59b Mon Sep 17 00:00:00 2001 From: Ben_Murphy Date: Wed, 12 Jun 2024 12:39:35 -0400 Subject: [PATCH 089/375] Update CMAQ_UG_tutorial_emissions.md --- .../Tutorials/CMAQ_UG_tutorial_emissions.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md index 76fe9e9e0..9bffc38a4 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md @@ -71,7 +71,7 @@ All streams can be zeroed by creating a rule that refers to 'All' streams. For e ! Label | |Surrogate| Species |Mode |Factor| | 'EVERYWHERE' , 'All' ,'All' ,'All' ,'All' ,0. ,'UNIT','o', ``` -Alternatively, individual streams can be zeroed by creating rules that refer to specific streams. +Here, the 'o' operator regers to *overwrite* and will instruct DESID to change existing instructions that emission variables and CMAQ-species to the new Scale Factor. Additionally, individual streams can be zeroed by creating rules that refer to specific streams. ``` ! Region | Stream Label |Emission | CMAQ- |Phase/|Scale |Basis |Op ! Label | |Surrogate| Species |Mode |Factor| | @@ -146,13 +146,13 @@ If instead, the user is interested in scaling all aerosol species by a factor of ### 7. Add or subtract emissions from one surrogate to existing emissions -If the following rule is already present on the default emission control namelist, +If the following rule is already present on the default emission control namelist. It maps, for all streams, the emission variable TOL (for toluene and possibly toluene-like compounds) to the CMAQ Species TOL. ``` ! Region | Stream Label |Emission | CMAQ- |Phase/|Scale |Basis |Op ! Label | |Surrogate| Species |Mode |Factor| | 'EVERYWHERE' , 'All' ,'TOL' ,'TOL' ,'GAS' ,1.0 ,'UNIT','a', ``` -and the user wants to add or subtract toluene emissions based on the value of a different emission surrogate, CO for example, then this rule could be used: +The user wants to add or subtract toluene emissions based on the value of a different emission surrogate, CO for example, then this rule could be used: ``` ! Region | Stream Label |Emission | CMAQ- |Phase/|Scale |Basis |Op ! Label | |Surrogate| Species |Mode |Factor| | @@ -168,13 +168,13 @@ Note it is important to use the 'a' operator for these rules since the effects o ### 8. Overwrite the scale factor for a single stream or species -If the following rule is already present on the default emission control namelist, +If the following rule is already present on the default emission control namelist. It maps, for all streams, the emission variable TOL (for toluene and possibly toluene-like compounds) to the CMAQ Species TOL. ``` ! Region | Stream Label |Emission | CMAQ- |Phase/|Scale |Basis |Op ! Label | |Surrogate| Species |Mode |Factor| | 'EVERYWHERE' , 'All' ,'TOL' ,'TOL' ,'GAS' ,1.0 ,'UNIT','a', ``` -and the user wants to overwrite the scale factor with a different one, 30% for example, use a rule of this form: +The user wants to overwrite the scale factor with a different one, 30% for example, use a rule of this form: ``` ! Region | Stream Label |Emission | CMAQ- |Phase/|Scale |Basis |Op ! Label | |Surrogate| Species |Mode |Factor| | @@ -201,9 +201,9 @@ The user may elect to conserve moles or mass instead of applying factors directl ``` will add 15% of CO emissions to the emissions of fine-mode particulate nitrate, but the scale factor will also be adjusted by multiplying by the molecular weight of CO to conserve mass. -Reminder: gas-phase emission rates are usually provided to CMAQ in molar units while particle emissions are usually provided in mass. Note that if the user scales a particle species to a gas surrogate, or vice-versa, it is important in most cases to choose either "MASS" or "MOLE" appropriately for the Basis to ensure proper unit conversions. +Reminder: gas-phase emission rates are usually provided to CMAQ in molar units while particle emissions are usually provided in mass. Note that if the user scales a particle species to a gas emission variable, or vice-versa, then there will likely be a mass to mole unit conversion necessary. It is important in most cases to choose either "MASS" or "MOLE" for the Basis to ensure that conservation of mass or conservation of moles is preserved, depending on user preference. -If the user is scaling one gas species to another gas surrogate, both will likely have molar emissions units. In this case, selecting "MOLE" as the basis will be equivalent to selecting "UNIT". In other words, there will be no modification of the user-defined scale factor due to unit conversion concerns. If, however, "MASS" is selected, then the scale factor will be modified by first multiplying by the molecular weight of the surrogate and then dividing by the molecular weight of the CMAQ species. +If the user is scaling one gas species to another gas emission variable, both will likely have molar emissions units. In this case, selecting "MOLE" as the basis will be equivalent to selecting "UNIT". In other words, there will be no modification of the user-defined scale factor due to unit conversion concerns. If, however, "MASS" is selected, then DESID will adjust the scale factor by first multiplying by the molecular weight of the emission variable and then dividing by the molecular weight of the CMAQ species. These tasks do not need to be completed by the user. ``` ! Region | Stream Label |Emission | CMAQ- |Phase/|Scale |Basis |Op ! Label | |Surrogate| Species |Mode |Factor| | @@ -340,7 +340,7 @@ Because the 'm' operator is used, CMAQ will look for pre-existing relationships ``` In this case, CMAQ is adding a relationship between NO and NO2 surrogates and model species. Thus families are most useful when using the 'm' or 'o' operators. -However, sometimes the 'a' operator is useful with chemical families. In the example below, a relationship is added between POA surrogates (defined in example 12 above) and CMAQ model species: +However, sometimes the 'a' operator is useful with chemical families. In the example below, a relationship is added between POA surrogates (defined in section 12 above) and CMAQ model species: ``` ! Region | Stream Label |Emission | CMAQ- |Phase/|Scale |Basis |Op ! Label | |Surrogate| Species |Mode |Factor| | From aaf222cb5c00e649681ebcdf6476eb19cbd6763d Mon Sep 17 00:00:00 2001 From: fisidi <47453034+fisidi@users.noreply.github.com> Date: Wed, 12 Jun 2024 12:39:50 -0400 Subject: [PATCH 090/375] Update CMAQ_UG_ch06_model_configuration_options.md --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index c6b8f0023..af18982f0 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -784,7 +784,7 @@ or set ModPhot = phot/table ``` -The in-line method (Binkowski et al., 2007) is the preferred option because it includes feedbacks from meteorology in addition to predicted ozone and aerosol concentrations. Starting CMAQv5.5, there are several in-line options toggled by the environmental variable "AEROSOL_OPTICS". The table below summarizes the in-line options: +The in-line method (Binkowski et al., 2007) is the preferred option because it includes feedbacks from meteorology in addition to predicted ozone and aerosol concentrations. Starting CMAQv5.5, all in-line photolysis options are toggled by the environmental variable "AEROSOL_OPTICS". The table below summarizes the in-line options: | **Environmental Variable**|**In-line Photolysis Method**|**Description**| |:--------------:|:----:|:--------:| From d60f2f04904c4f3ab57f6532ccfa33bc5690fec7 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 12 Jun 2024 12:41:08 -0400 Subject: [PATCH 091/375] Update CMAQ_UG_ch08_analysis_tools.md Updated section on combine and ELMO --- DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md index 0f9b69802..63543dfe0 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md @@ -33,16 +33,15 @@ This chapter briefly describes how to use some of the software tools supported b ## 8.2 Aggregating and Transforming Model Species Concentrations -The *combine* Fortran program, released as part of the CMAQ POST tools, can combine species from raw CMAQ output files or wrfout input files into a new I/O API file. Model species can be aggregated or transformed into variables of interest, e.g., to match observed quantities from a specific monitoring network. Output files can be concatenated to create files for longer time periods (e.g., files with hourly data for individual days into a single file for an entire month) and model variables from different output files (e.g., chemical species from CCTM files and meteorlogical variables from MCIP files). +The *combine* Fortran program, released as part of the CMAQ POST tools, can combine variables from CMAQ, emissions, or meteorology files into a new I/O API file. Model species can be aggregated or transformed into variables of interest, e.g., to change units from ppmV to ppbV or match observed quantities from a specific monitoring network. Model output files can be concatenated to create files for longer time periods (e.g., files with hourly data for individual days can be combined into a single file for an entire month). More information on the combine utility and its use can be found in this [README file.]( ../../POST/combine/README.md) -The combine utility relies on a mechanism-specific "Species Definition" files that prescribe how CMAQ variables should be mapped and/or combined to become comparable to different measured gas, particle and deposition species. When you download the CMAQ code, the Species Definition files corresponding to default model output variables are automatically included under the subdirectory "CCTM/src/MECHS". Within each of the listed mechanism folders, you will find files "SpecDef_MECH_NAME.txt" (for gas and aerosol species) and "SpecDef_dep_MECH_NAME.txt" (for deposition species) that contain a long list of species definitions and corresponding documentation. For example, to find how to calculate PM2.5 using the cb6r5_ae7_aq mechanism, open the file "SpecDef_cb6r5_ae7_aq.txt" and read the documentation on PM2.5 calculations to see how it relates to model species in the CCTM_AELMO output files. These species definition files are designed to be used with the combine utility to extract model variables that match observed quantities from specific monitoring networks. More information on the combine utility and its use can be found in this [README file.]( ../../POST/combine/README.md) +The combine utility relies on a chemical mechanism-specific "Species Definition" files that prescribe how CMAQ output variables should be mapped and/or combined to become comparable to different measured gas, particle and deposition species. When you download the CMAQ code, the Species Definition files corresponding to default model output variables are automatically included under the subdirectory "CCTM/src/MECHS". Within each of the listed mechanism folders, you will find files "SpecDef_MECH_NAME.txt" (for gas and aerosol species) and "SpecDef_dep_MECH_NAME.txt" (for deposition species) that contain a long list of species definitions and corresponding documentation. For example, the calculation of NOX in ppbV is given as +``` +NOX ,ppbV ,1000.0*(NO[1] + NO2[1]) +``` +where NO and NO2 are pulled from the CCTM_ACONC model output file in units of ppmV. -[edits in progress] -Some species aggregation is also happening within the CMAQ model. For example CMAQ aerosol module explicitly represents a number of individual PM2.5 species that need to be combined for comparisons to measured total PM2.5 mass. -The Explicit and Lumped Model Output (ELMO) capability introduced in CMAQv5.4 in conjunction with the combine utility released as part of the CMAQ POST tools can be used to accomplish aggregation tasks. (See [Apendix F](Appendix/CMAQ_UG_appendixF_elmo_output.md) for an introduction to ELMO). -When you download the CMAQ code for version 5.4 or later, the Species Definition files corresponding to default ELMO output variables are automatically included under the subdirectory "CCTM/src/MECHS". - -See Appendix F and the [ELMO source code](../../CCTM/src/driver/ELMO_PROC.F) for details about the calculation of each ELMO output variable. Each variable is also given [metadata](../../CCTM/src/driver/ELMO_DATA.F) to describe its purpose. +Note that some species aggregation is already happening within the CMAQ model. The CMAQ aerosol module explicitly represents a number of individual PM2.5 species that need to be combined for comparisons to measured total PM2.5 mass. The Explicit and Lumped Model Output (ELMO) capability introduced in CMAQv5.4 presribes the calculation of aggregated aerosol species (e.g., PM1, PM2.5, and PM10), as well as diagnostic values (e.g., aerosol surface area and number) and CMAQ calculates them online. See [Apendix F](Appendix/CMAQ_UG_appendixF_elmo_output.md) for more information about the calculation of each ELMO output variable and how this relates to use of the *combine* tool. ## 8.3 Model-Observation Pairing for Model Evaluation Once model output has been processed using *combine*, the *sitecmp* and *sitecmp_dailyo3* utilities can be used to match air pollutant measurements with the appropriate model predicted variables. This pairing of model and observed variables is specified in the run scripts for *sitecmp* and *sitecmp_dailyo3*. In *sitecmp_dailyo3* this step is controlled by the definition of environment variables OBS_SPECIES and OZONE. See the [README.md](../../POST/sitecmp_dailyo3/README.md) and the sample run script in the [*sitecmp_dailyo3* scripts](../../POST/sitecmp_dailyo3/scripts) folder for more information on setting these environment variables. The run script for the *sitecmp* utility can be customized for many different types of chemical and meteorological quantities as described in the [README.md](../../POST/sitecmp/README.md) for sitecmp. Sample run scripts for the AQS, CSN, IMPROVE, NADP and SEARCH networks based on the 2016 CMAQ test case are provided in the [*sitecmp* scripts](../../POST/sitecmp/scripts) folder. In addition, the [README.md](../../POST/sitecmp/scripts/README.md) file within the *sitecmp* scripts folder provides the configuration options for monitoring networks. Note that there are multiple formats for CSN and SEARCH observed data files depending on the year. The README.txt file is broken into different sections to reflect the change in species names in the observation files for these two networks. (For example, elemental carbon measurements from the CSN network are labeled as “ec_niosh” in 2009 and earlier, “ec_tor” in 2010, and “88380_val” starting in 2011.) From fd334c9701bc43152ff37a99bd91633880a0df46 Mon Sep 17 00:00:00 2001 From: coastwx Date: Wed, 12 Jun 2024 12:46:50 -0400 Subject: [PATCH 092/375] Update CMAQ_UG_appendixE_configuring_WRF.md --- .../Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md index b0a6d15b9..8b38ffab1 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md @@ -1,4 +1,4 @@ -![image](https://github.com/kmfoley/CMAQ_Dev/assets/15362904/ee418b62-60ef-4f41-b7ec-0553e135c744) + [<< Previous Appendix](CMAQ_UG_appendixD_parallel_implementation.md) - [Home](../README.md) - [Next Appendix >>](CMAQ_UG_appendixF_elmo_output.md) @@ -8,7 +8,7 @@ ## E.1 WRF for CMAQ & Output -* **[WRF configuration guide for CMAQ applications](http://www2.mmm.ucar.edu/wrf/users/docs/PX-ACM.pdf)** +* **[WRF configuration guide for CMAQ applications](../PDF/PX-ACM-WRFV4.6-MPAS.pdf)** * CMAQ is best connected to WRF that uses the P-X LSM with key variables in the output. Users can either forces these in the WRF output by modifying the Registry or use a run-time option. * WRF output variables can be specified in simple text file this single line "+:h:0:,RS,RA,ZNT_PX,VEGF_PX,LAI_PX,LANDUSEF,WFC_PX,WSAT_PX,WWLT_PX,CSAND_PX,FMSAND_PX,CLAY_PX" * P-X LSM variables (same as above) can be specified in output using Registry file $WRFDIR/Registry/Registry.EM_COMMON by adding "h" to the section of each P-X LSM variable entry From 915bb6037574bd5bd7259b146bf52b90a599ce80 Mon Sep 17 00:00:00 2001 From: coastwx Date: Wed, 12 Jun 2024 12:49:16 -0400 Subject: [PATCH 093/375] Add files via upload --- DOCS/Users_Guide/PDF/PX-ACM-WRFV4.6-MPAS.pdf | Bin 165038 -> 164298 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/DOCS/Users_Guide/PDF/PX-ACM-WRFV4.6-MPAS.pdf b/DOCS/Users_Guide/PDF/PX-ACM-WRFV4.6-MPAS.pdf index 0e537acbbc29a216c0dc45aa1279cfbd222824cf..d067b8625cf067c8a5dd1107dc97d7908f04dc3e 100644 GIT binary patch delta 69082 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

CF^em2s2`aA&ab8*9c0NXG1_$Y!#FRbu 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≫|1N7&-A#vcjgCG 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 From 620e1f6fffa28c99a4c45f23eb95e1d2bcbf24e9 Mon Sep 17 00:00:00 2001 From: fisidi <47453034+fisidi@users.noreply.github.com> Date: Wed, 12 Jun 2024 12:59:24 -0400 Subject: [PATCH 094/375] Update CMAQ_UG_ch06_model_configuration_options.md --- .../CMAQ_UG_ch06_model_configuration_options.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index af18982f0..84deb8347 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -788,12 +788,12 @@ The in-line method (Binkowski et al., 2007) is the preferred option because it i | **Environmental Variable**|**In-line Photolysis Method**|**Description**| |:--------------:|:----:|:--------:| -| setenv AEROSOL_OPTICS 1 | Tabular Mie | This option adapts a look-up table and interpolation method for aerosol optical properteis described by Fast et al. (2005). Wavelength and aerosol refractive index are the independent variables of the table. The dependent variable is coefficients from curving fitting on Mie Scattering Solutions over aerosol radius for a fixed wavelength and refractive index. A bilinear interpolation estimates the fitting functions' coefficients at the aerosol refractive index during a model timestep and specified wavelength. The aforementioned look-up table is created in-line and saved to an ASCII file when NEW_START equals true or when the ASCII file is missing. The location of where this table lives can be controlled by "setenv MIE_TABLE ${SOMELOCATION}". | -| setenv AEROSOL_OPTICS 2 | MieCalc | Mie Solution for a uniformly mixed sphere. | -| setenv AEROSOL_OPTICS 3 | Fast Optics | The fastest and default option, uses case approximation of Mie Scattering theory for a uniformly mixed sphere whose refractive index is a volume weighted average of the aerosol modal component's refractive indicies. | -| setenv AEROSOL_OPTICS 4 | Coreshell + Tabular Mie | Option where the internal structure of an aerosol is represented as a uniformly mixed shell surrounded by a black carbon core. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by Tabular Mie. | -| setenv AEROSOL_OPTICS 5 | Coreshell + MieCalc | Option where the internal structure of an aerosol is represented as a uniformly mixed shell surrounded by a black carbon core. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by MieCalc.| -| setenv AEROSOL_OPTICS 6 | Coreshell + Fast Optics | Option where the internal structure of an aerosol is represented as a uniformly mixed shell surrounded by a black carbon core. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by Fast Optics. | +| setenv AEROSOL_OPTICS 1 | Tabular Mie | This option adapts a look-up table and interpolation method for aerosol optical properteis described by Fast et al. (2005). Wavelength and aerosol refractive index are the independent variables of the table. The dependent variable is coefficients from curving fitting on Mie Theory Solutions over aerosol radius for a fixed wavelength and refractive index. A bilinear interpolation estimates the fitting functions' coefficients at the aerosol refractive index during a model timestep and specified wavelength. The aforementioned look-up table is created in-line and saved to an ASCII file when NEW_START equals true or when the ASCII file is missing. The location of where this table lives can be controlled by "setenv MIE_TABLE ${SOMELOCATION}". | +| setenv AEROSOL_OPTICS 2 | MieCalc | Solution to Mie Theory for a uniformly mixed sphere. | +| setenv AEROSOL_OPTICS 3 | Fast Optics | The fastest and default option, uses case approximation of Mie Theory for a uniformly mixed sphere whose refractive index is a volume weighted average of the aerosol modal component's refractive indicies. | +| setenv AEROSOL_OPTICS 4 | Core-shell + Tabular Mie | Option where the internal structure of an aerosol is represented as a by a black carbon core surrounded by a shell with a volume-averaged refractive index. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by Tabular Mie. | +| setenv AEROSOL_OPTICS 5 | Core-shell + MieCalc | Option where the internal structure of an aerosol is represented as a by a black carbon core surrounded by a shell with a volume-averaged refractive index. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by MieCalc.| +| setenv AEROSOL_OPTICS 6 | Core-shell + Fast Optics | Option where the internal structure of an aerosol is represented as a by a black carbon core surrounded by a shell with a volume-averaged refractive index. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by Fast Optics. | Three ASCII files support the in-line methods. **PHOT_OPTICS** describes the optical properties of clouds, aerosols, and the earth’s surface. The **OMI** file is used to determine how much light is absorbed by ozone above the model domain. Both files are included in the released version of CMAQ. Calculating photolysis rates uses one more file, the **CSQY_DATA_${Mechanism}** From c5583e4975a2d70b3c6a239cdf1cde22ba04412c Mon Sep 17 00:00:00 2001 From: Ben_Murphy Date: Wed, 12 Jun 2024 13:27:37 -0400 Subject: [PATCH 095/375] Update CMAQ_UG_appendixB_emissions_control.md --- .../CMAQ_UG_appendixB_emissions_control.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md index 0ce6a5929..e9274a8c0 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md @@ -13,11 +13,11 @@ ## B.1 Emissions Control with the Detailed Emissions Scaling, Isolation and Diagnostics Module (DESID) -The Detailed Emissions Scaling, Isolation and Diagnostics (DESID) module included with CMAQv5.3+ provides comprehensive customization and transparency of emissions manipulation to the user. The customization of emissions is accomplished via ia series of Control Namelists, which contain sections of variables that modify the behavior of the emissions module. These include ***Emission Scaling Rules***, ***Size Distributions***, ***Regions Registry***, ***Chemical Families***, ***Region Families***, and ***Area Adjustments***. +The Detailed Emissions Scaling, Isolation and Diagnostics (DESID) module included with CMAQv5.3+ provides comprehensive customization and transparency of emissions manipulation to the user. The customization of emissions is accomplished via a series of Control Namelists, which contain variables that modify the behavior of the emissions module. These include ***Emission Scaling Rules***, ***Size Distributions***, ***Regions Registry***, ***Chemical Families***, ***Region Families***, and ***Area Adjustments***. -To determine its configuration, DESID makes use of input from primarily three files, the CMAQ runscript, the DESID Control file ([CMAQ_Control_DESID.nml](../../../CCTM/src/emis/emis/CMAQ_Control_DESID.nml)), and the DESID Chemical Mapping Control File (e.g. [CMAQ_Control_DESID_cb6r5_ae7_aq.nml](../../../CCTM/src/MECHS/cb6r5_ae7_aq/CMAQ_Control_DESID_cb6r5_ae7_aq.nml)). +To determine its configuration, DESID makes use of input primarily from four files: the CMAQ runscript, the CMAQ Miscellaneous Control File ([CMAQ_Control_Misc.nml](../../../CCTM/src/util/util/CMAQ_Control_Misc.nml)), the DESID Control file ([CMAQ_Control_DESID.nml](../../../CCTM/src/emis/emis/CMAQ_Control_DESID.nml)), and the DESID Chemical Mapping File (e.g. [CMAQ_Control_DESID_cb6r5_ae7_aq.nml](../../../CCTM/src/MECHS/cb6r5_ae7_aq/CMAQ_Control_DESID_cb6r5_ae7_aq.nml)). A separate version of the chemical mapping control file exists for every mechanism because these namelists are preloaded with likely rules linking emissions of important CMAQ primary species to their typical emission species names as output by SMOKE. -By default, this namelist is stored in each chemical mechanism folder (e.g. MECHS/cb6r5_ae7_aq) and is copied into the user's build directory when bldit_cctm.csh is executed. If the user modifies the name or location of the DESID control or chemical mapping control files, then the following commands in the RunScript should be updated as well: +By default, this namelist is stored in each chemical mechanism folder (e.g. MECHS/cb6r5_ae7_aq) and is copied into the user's build directory when bldit_cctm.csh is executed and a chemical mechanism is chosen. If the user modifies the name or location of the DESID control file or chemical mapping file, then the following commands in the RunScript should be updated as well: ``` setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml @@ -27,11 +27,11 @@ If the user does not provide a DESID Control Files or the path to the files in t ## B.2 Chemical Mapping Control -The chemical mapping control namelist files contain emission scaling rules that allow the user to exert sophisticated, precise control over the emissions from specific streams, in specific geographic areas, and/or for specific compounds. -The set of rules used by CMAQ to interpret emissions shall be provided in one array called DESID_Rules_nml. It is necessary that every field (i.e. column) be populated for every rule. The fields are given and defined here and in the comment section of the Emission Control Namelist: +The chemical mapping file contains emission scaling rules that allow the user to exert sophisticated, precise control over the emissions from specific streams, in specific geographic areas, and/or for specific compounds. +The set of rules used by CMAQ to interpret emissions shall be provided in one array called DESID_Rules_nml. It is necessary that every field (i.e. column) be populated for every rule. The fields are given and defined here: ``` ! Region | Stream Label |Emission | CMAQ- |Phase/|Scale |Basis |Op -! Label | |Species | Species |Mode |Factor| | +! Label | |Surrogate| Species |Mode |Factor| | ``` - 'Region Label' - Apply scaling for specific regions of the domain. Set this field to "EVERYWHERE" to apply the rule to the entire domain. - 'Stream Label' - Short Name from Run Script (e.g. the value of GR_EMIS_01_LAB or STK_EMIS_01_LAB). There are a few reserved names that apply to online emissions streams. These are: @@ -380,7 +380,7 @@ The keyword TOTAL may be used in place of ALL in the Streams variable to indicat ``` &Desid_Diag EmissDiagStreams(1,:)= 'ALL' - EmissDiagFmt(1) = 'COLSUM' ! Options: 2D, 2DCOL, 3D + EmissDiagFmt(1) = 'COLSUM' ! Options: LAYER1, COLSUM, 3D EmissDiagSpec(1,:) = 'NO','NO2','NOX','ASO4','CO' EmissDiagStreams(2,:)= 'TOTAL' From 4929f937fa6d16f183a1a4cb114f4632d02ff2c7 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Wed, 12 Jun 2024 13:43:39 -0400 Subject: [PATCH 096/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index 61d2fcb51..b4d7ddfe2 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -175,19 +175,13 @@ The grid description section consists of text records that indicate the grid nam An example of a GRIDDESC file is shown below: -` ' '` - -` 'LAM_40N100W'` - -` 2 30.0 60.0 -100.0 -100.0 40.0` - -` ' '` - -` 'M_32_99TUT02'` - +` ' ' ` +` 'LAM_40N100W' ` +` 2 30.0 60.0 -100.0 -100.0 40.0 ` +` ' ' ` +` 'M_32_99TUT02' ` ` 'LAM_40N100W' 544000.0 -992000.0 32000.0 32000.0 38 38 1` - -` ' '` +` ' ' ` The horizontal coordinate section (first section) in this example GRIDDESC file defines a horizontal coordinate named “LAM_40N100W”. The coordinate definition is for a Lambert conformal grid, keyed by the first column of the coordinate description line, which corresponds to the numeric code for the various I/O API-supported grid types (2 = Lambert). The next three parameters (P_ALP, P_BET, and P_GAM) have different definitions for different map projections. For Lambert conformal, P_ALP and P_BET are the true latitudes of the projection cone (30°N and 60°N in the example), and P_GAM (100°W in the example) is the central meridian of the projection. The last two parameters, XCENT and YCENT, are the reference longitude and latitude for the domain, which are 100°W and 40°N in the example. @@ -500,7 +494,7 @@ The Detailed Emissions Scaling, Isolation and Diagnostics (DESID) module include The second namelist used for specifying DESID operations is the DESID Chemical Mapping Control namelist, named "CMAQ_Control_DESID_[mech]". By default, every mechanism has its own version of this namelist because each is preloaded with likely rules linking emissions of important CMAQ primary species to their typical surrogate names as output by SMOKE. By default, this namelist is stored in each chemical mechanism folder (e.g. MECHS/cb6r3_ae7_aq) and is copied into the user's build directory when bldit_cctm.csh is executed. If the user modifies the name or location of this namelist, then the following command in the RunScript should be updated as well: ``` -setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID_[mech].nml +setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_[mech].nml ``` This file contains only one section, the chemical mapping table, which link chemical variables on the emissions streams (external files or online processes) to CMAQ species, and offers scaling capabilities, geographic specicficity with the regions functionalities, size distribution customization, and the use of chemical families. From a163858bce8b1ce61cb7fa73aa44256d809943a5 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Wed, 12 Jun 2024 13:44:13 -0400 Subject: [PATCH 097/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index b4d7ddfe2..59a492372 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -176,11 +176,17 @@ The grid description section consists of text records that indicate the grid nam An example of a GRIDDESC file is shown below: ` ' ' ` + ` 'LAM_40N100W' ` + ` 2 30.0 60.0 -100.0 -100.0 40.0 ` + ` ' ' ` + ` 'M_32_99TUT02' ` + ` 'LAM_40N100W' 544000.0 -992000.0 32000.0 32000.0 38 38 1` + ` ' ' ` The horizontal coordinate section (first section) in this example GRIDDESC file defines a horizontal coordinate named “LAM_40N100W”. The coordinate definition is for a Lambert conformal grid, keyed by the first column of the coordinate description line, which corresponds to the numeric code for the various I/O API-supported grid types (2 = Lambert). The next three parameters (P_ALP, P_BET, and P_GAM) have different definitions for different map projections. For Lambert conformal, P_ALP and P_BET are the true latitudes of the projection cone (30°N and 60°N in the example), and P_GAM (100°W in the example) is the central meridian of the projection. The last two parameters, XCENT and YCENT, are the reference longitude and latitude for the domain, which are 100°W and 40°N in the example. From 214bdbc07f360a57f3a4c483044a425cefc84861 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Wed, 12 Jun 2024 13:47:20 -0400 Subject: [PATCH 098/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index 59a492372..fe0c810e2 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -175,19 +175,13 @@ The grid description section consists of text records that indicate the grid nam An example of a GRIDDESC file is shown below: -` ' ' ` - -` 'LAM_40N100W' ` - -` 2 30.0 60.0 -100.0 -100.0 40.0 ` - -` ' ' ` - -` 'M_32_99TUT02' ` - -` 'LAM_40N100W' 544000.0 -992000.0 32000.0 32000.0 38 38 1` - -` ' ' ` +`' ' +'LAM_40N100W' +2 30.0 60.0 -100.0 -100.0 40.0 +' ' +'M_32_99TUT02' +'LAM_40N100W' 544000.0 -992000.0 32000.0 32000.0 38 38 1 +' '` The horizontal coordinate section (first section) in this example GRIDDESC file defines a horizontal coordinate named “LAM_40N100W”. The coordinate definition is for a Lambert conformal grid, keyed by the first column of the coordinate description line, which corresponds to the numeric code for the various I/O API-supported grid types (2 = Lambert). The next three parameters (P_ALP, P_BET, and P_GAM) have different definitions for different map projections. For Lambert conformal, P_ALP and P_BET are the true latitudes of the projection cone (30°N and 60°N in the example), and P_GAM (100°W in the example) is the central meridian of the projection. The last two parameters, XCENT and YCENT, are the reference longitude and latitude for the domain, which are 100°W and 40°N in the example. From 5cc3480c85627ddbebd6c726abd7e1aacc6be94c Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Wed, 12 Jun 2024 13:48:17 -0400 Subject: [PATCH 099/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index fe0c810e2..d4f363182 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -175,13 +175,13 @@ The grid description section consists of text records that indicate the grid nam An example of a GRIDDESC file is shown below: -`' ' -'LAM_40N100W' -2 30.0 60.0 -100.0 -100.0 40.0 -' ' -'M_32_99TUT02' +' ' +'LAM_40N100W' +2 30.0 60.0 -100.0 -100.0 40.0 +' ' +'M_32_99TUT02' 'LAM_40N100W' 544000.0 -992000.0 32000.0 32000.0 38 38 1 -' '` +' ' The horizontal coordinate section (first section) in this example GRIDDESC file defines a horizontal coordinate named “LAM_40N100W”. The coordinate definition is for a Lambert conformal grid, keyed by the first column of the coordinate description line, which corresponds to the numeric code for the various I/O API-supported grid types (2 = Lambert). The next three parameters (P_ALP, P_BET, and P_GAM) have different definitions for different map projections. For Lambert conformal, P_ALP and P_BET are the true latitudes of the projection cone (30°N and 60°N in the example), and P_GAM (100°W in the example) is the central meridian of the projection. The last two parameters, XCENT and YCENT, are the reference longitude and latitude for the domain, which are 100°W and 40°N in the example. From 984b68965f270562b5bf1279201194e21efddc5a Mon Sep 17 00:00:00 2001 From: chogrefe Date: Wed, 12 Jun 2024 13:49:38 -0400 Subject: [PATCH 100/375] Update comments in run_combine.csh Added some comments to the example run_combine.csh script to better document its intent and structure. --- POST/combine/scripts/run_combine.csh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/POST/combine/scripts/run_combine.csh b/POST/combine/scripts/run_combine.csh index 71755493a..475edcca4 100755 --- a/POST/combine/scripts/run_combine.csh +++ b/POST/combine/scripts/run_combine.csh @@ -56,6 +56,11 @@ # ===================================================================== #> COMBINE Configuration Options +#> The purpose of this example run script is to create two output files +#> (COMBINE_ACONC and COMBINE_DEP) often used for model evaluation +#> purposes. This is accomplished by setting up two loops, each with +#> its own definitions of SPECIES_DEF and day-specific input files before +#> calling the COMBINE executable. # ===================================================================== #> Set Start and End Days for looping @@ -71,7 +76,9 @@ # ===================================================================== -#> Begin Loop Through Simulation Days to Create ACONC File +#> Begin First Loop Through Simulation Days to Create COMBINE_ACONC File +#> Set up the SPECIES_DEF, INFILEx, and OUTFILE environment variables +#> for COMBINE_ACONC processing # ===================================================================== #> Set the species definition file for concentration species. @@ -117,7 +124,9 @@ # ===================================================================== -#> Begin Loop Through Simulation Days to Create DEP File +#> Begin Second Loop Through Simulation Days to Create COMBINE_DEP File +#> Set up the SPECIES_DEF, INFILEx, and OUTFILE environment variables +#> for COMBINE_DEP processing # ===================================================================== #> Set the species definition file for concentration species. From 145ffd3a8e7a3d5af961f3fe23d0c82e6fd57e92 Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Wed, 12 Jun 2024 13:50:02 -0400 Subject: [PATCH 101/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index d4f363182..fba326ab5 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -175,6 +175,7 @@ The grid description section consists of text records that indicate the grid nam An example of a GRIDDESC file is shown below: +``` ' ' 'LAM_40N100W' 2 30.0 60.0 -100.0 -100.0 40.0 @@ -182,6 +183,7 @@ An example of a GRIDDESC file is shown below: 'M_32_99TUT02' 'LAM_40N100W' 544000.0 -992000.0 32000.0 32000.0 38 38 1 ' ' +``` The horizontal coordinate section (first section) in this example GRIDDESC file defines a horizontal coordinate named “LAM_40N100W”. The coordinate definition is for a Lambert conformal grid, keyed by the first column of the coordinate description line, which corresponds to the numeric code for the various I/O API-supported grid types (2 = Lambert). The next three parameters (P_ALP, P_BET, and P_GAM) have different definitions for different map projections. For Lambert conformal, P_ALP and P_BET are the true latitudes of the projection cone (30°N and 60°N in the example), and P_GAM (100°W in the example) is the central meridian of the projection. The last two parameters, XCENT and YCENT, are the reference longitude and latitude for the domain, which are 100°W and 40°N in the example. From e7f8cd6cd57b9a9d4eab1e14005bb806f46f6db7 Mon Sep 17 00:00:00 2001 From: Sergey Napelenok Date: Wed, 12 Jun 2024 13:50:36 -0400 Subject: [PATCH 102/375] Update CMAQ_UG_ch11_ISAM.md --- DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md b/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md index 13cc7ba9e..64c48fd3a 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md @@ -24,7 +24,7 @@ SULFATE - ASO4J, ASO4I, SO2, SULF, SULRXN NITRATE - ANO3J, ANO3I, HNO3, ANO3J, ANO3I, HNO3, NO, NO2, NO3, HONO, N2O5, PNA, PAN, PANX, NTR1, NTR2, INTR AMMONIUM - ANH4J, ANH4I, NH3 EC - AECJ, AECI -OC - APOCI, APOCJ, APNCOMI, APNCOMJ +OA_TOT - Organic aerosol species VOC - Various species depending on mechanism. Now includes CO. (see CCTM/src/isam/SA_DEFN.F for complete list) PM_IONS - ANAI, ANAJ, AMGJ, AKJ, ACAJ, AFEJ, AALJ, ASIJ, ATIJ, AMNJ, AOTHRI, AOTHRJ OZONE - all NITRATE species + all VOC species From c4065c6ca76f63c708aef996be19e9cf1ed9e77c Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Wed, 12 Jun 2024 13:51:30 -0400 Subject: [PATCH 103/375] Update CMAQ_UG_ch04_model_inputs.md --- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index fba326ab5..67d26cb7d 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -264,7 +264,8 @@ This control file provides an interface to activate/deactivate and set parameter The final sections (&Chemical_FamVars and &ChemicalFamilies) allow users to define chemical families for output that can be referred to by ELMO, The Budget Tool or DESID. For example, 'NOX' may be defined as a chemical family containing 'NO' and 'NO2'. The &Chemical_FamVars section should be used to define the total number of chemical families that will be specified (N_Chem_Fams) and the maximum number of chemical species among all defined chemical families (Max_Chem_Fam_Members). For example, if a user defined three chemical families including 'NOX','AROMATICS', and 'BSOA', then a chemical family entry could be written as follows: -`&Chem_FamVars +``` +&Chem_FamVars N_Chem_Fams = 3 Max_Chem_Fam_Members = 10 / @@ -277,7 +278,8 @@ The &Chemical_FamVars section should be used to define the total number of chemi ChemFamilyName(3) = 'DUST' ChemFamilyMembers(3,:) = 'ACORS','ASOIL','AECI','AECJ','AFEJ','AALJ','ATIJ','ASIJ','ACAJ','AMGJ','AKJ','AMNJ' - / ` + / +``` From 45bc18a9aa28de01d750bbc4ef9b28e523e9a4ea Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Wed, 12 Jun 2024 14:25:45 -0400 Subject: [PATCH 104/375] Update CMAQ_UG_appendixA_model_options.md --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index 31e488e9b..6466bb1e8 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -499,7 +499,7 @@ Sets if the CCTM will run in multi-processor or serial mode. - `CTM_PROCAN [default: N]` - Activate process analysis in the CCTM. Set this to Y and use $CMAQ_DATA/pacp/pacp.inp to configure the integrated process rate and integrated reaction rate settings for the CCTM. Additional process analysis output files will be created when this setting is activated. + Activate process analysis in the CCTM. Set the environment variable, PACM_FILE (Read below for more information), that defines the integrated process rate and integrated reaction rate outputs from CCTM. Additional process analysis output files will be created when this setting is activated. - `PA_BCOL_ECOL [default: 0]` Modeling grid domain column range for the process analysis calculations. Set to the two digits representing the beginning and ending column number bounding the process analysis domain. - `PA_BROW_EROW [default: 0]` From f1e8a9cd8653e202eeb16b1a5573eb515fd00cbc Mon Sep 17 00:00:00 2001 From: epa-kpc <31039750+epa-kpc@users.noreply.github.com> Date: Wed, 12 Jun 2024 14:26:31 -0400 Subject: [PATCH 105/375] Update CMAQ_UG_appendixA_model_options.md --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index 6466bb1e8..f8eb20d92 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -499,7 +499,7 @@ Sets if the CCTM will run in multi-processor or serial mode. - `CTM_PROCAN [default: N]` - Activate process analysis in the CCTM. Set the environment variable, PACM_FILE (Read below for more information), that defines the integrated process rate and integrated reaction rate outputs from CCTM. Additional process analysis output files will be created when this setting is activated. + Activate process analysis in the CCTM. Set the environment variable, PACM_INFILE (Read below for more information), that defines the integrated process rate and integrated reaction rate outputs from CCTM. Additional process analysis output files will be created when this setting is activated. - `PA_BCOL_ECOL [default: 0]` Modeling grid domain column range for the process analysis calculations. Set to the two digits representing the beginning and ending column number bounding the process analysis domain. - `PA_BROW_EROW [default: 0]` From ab264fb2e14cb7935a2a5ec008be673160e7ee9c Mon Sep 17 00:00:00 2001 From: chogrefe Date: Wed, 12 Jun 2024 14:44:18 -0400 Subject: [PATCH 106/375] combine README update part 2 Updated the "note on the use of wrfout" section of the combine README to reflect updated requirements when using wrfout files as input to combine, following PR1090 code changes. Added link to the MCIP section of the release notes wiki where the new requirements will be documented. --- POST/combine/README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/POST/combine/README.md b/POST/combine/README.md index 61394b2bc..4f4757ee1 100644 --- a/POST/combine/README.md +++ b/POST/combine/README.md @@ -102,7 +102,14 @@ A sample run script for creating combine files for evaluating deposition and hou Check the log file to ensure complete and correct execution without errors. ## Note on the use of wrfout files as input to combine: -In previous releases of combine, meteorological variables used as part of the SPECIES_DEF file needed to be in IOAPI files, typically these files would have been generated by MCIP. The ability to use wrfout files as input to combine was added in this release to support post-processing of outputs from the two-way model when MCIP files may not be available. While combine allows a combination of IOAPI and (netcdf) wrfout files as input files, the first input file (i.e. INFILE1) must be an IOAPI file and its grid description information will be used to define the grid for OUTFILE. Only wrfout variables defined with dimensions "west_east", "south_north", and optionally "bottom_top" can be utilized by combine and referenced in the SPECIES_DEF file. It is assumed that the projection used in the WRF simulation that generated the wrfout files is the same as the projection defined in the IOAPI files, specifically INFILE1. If necessary, combine will window the variables from the wrfout file to the domain specified in INFILE1, this often is the case when the CMAQ domain was a subset of the WRF domain. +Meteorological variables used as part of the SPECIES_DEF file typically are obtained from wrfout files that have been processed through MCIP and follow IOAPI-netCDF formatting guidelines. However, `combine` also allows reading variables directly from wrfout files to support post-processing of outputs from the two-way model when MCIP files may not be available. To make use of this capability, several requirements need to be met: + * When using a combination of IOAPI and (netcdf) wrfout files as input files, the first input file (i.e. INFILE1) **must** be an IOAPI file and its grid description information will be used to define the grid for OUTFILE. + * Only wrfout variables defined with dimensions "west_east", "south_north", and optionally "bottom_top" can be utilized by `combine` and referenced in the SPECIES_DEF file. + * The projection used in the WRF simulation that generated the wrfout files must be the same as the projection defined in the IOAPI files, specifically INFILE1. + +If necessary, combine will window the variables from the wrfout file to the domain specified in INFILE1, this often is the case when the CMAQ domain was a subset of the WRF domain. To support such windowing, the following conditions need to be met [(also see the MCIP release notes for CMAQv5.5)](https://github.com/USEPA/CMAQ/wiki/CMAQ-Release-Notes:-Preprocessors#mcip): + * The domains defined in the wrfout and INFILE1 files need to be concentric. + * The horizontal grid spacing defined in the wrfout and INFILE1 files needs to be greater than 400 meters because the rigor of the windowing algorithm has not been tested below that scale. ## Note on time steps: Unless "start" and "end" are defined in the SPECIES_DEF file, combine will determine the longest time period that is common to all input files and will produce outputs for that time period. From 2c64afd372f271c9ae7ba8118c3af7fba3c55c51 Mon Sep 17 00:00:00 2001 From: coastwx Date: Wed, 12 Jun 2024 15:23:31 -0400 Subject: [PATCH 107/375] Update CMAQ_UG_appendixE_configuring_WRF.md --- .../Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md index 8b38ffab1..ce098d808 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md @@ -10,8 +10,8 @@ * **[WRF configuration guide for CMAQ applications](../PDF/PX-ACM-WRFV4.6-MPAS.pdf)** * CMAQ is best connected to WRF that uses the P-X LSM with key variables in the output. Users can either forces these in the WRF output by modifying the Registry or use a run-time option. -* WRF output variables can be specified in simple text file this single line "+:h:0:,RS,RA,ZNT_PX,VEGF_PX,LAI_PX,LANDUSEF,WFC_PX,WSAT_PX,WWLT_PX,CSAND_PX,FMSAND_PX,CLAY_PX" -* P-X LSM variables (same as above) can be specified in output using Registry file $WRFDIR/Registry/Registry.EM_COMMON by adding "h" to the section of each P-X LSM variable entry +* WRF output variables can be specified using a simple text file (see WRF configuration guide using link above). +* P-X LSM variables can be forced in WRF outputs by compiling directives via Registry file (see WRF configuration guide above). ## E.2 WRF version 4.6 From 612c192f68b39c8dccd8d020f3f3f125e139d595 Mon Sep 17 00:00:00 2001 From: coastwx Date: Wed, 12 Jun 2024 15:29:43 -0400 Subject: [PATCH 108/375] Update CMAQ_UG_appendixE_configuring_WRF.md --- .../Appendix/CMAQ_UG_appendixE_configuring_WRF.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md index ce098d808..ccda6873c 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md @@ -9,9 +9,9 @@ ## E.1 WRF for CMAQ & Output * **[WRF configuration guide for CMAQ applications](../PDF/PX-ACM-WRFV4.6-MPAS.pdf)** -* CMAQ is best connected to WRF that uses the P-X LSM with key variables in the output. Users can either forces these in the WRF output by modifying the Registry or use a run-time option. -* WRF output variables can be specified using a simple text file (see WRF configuration guide using link above). -* P-X LSM variables can be forced in WRF outputs by compiling directives via Registry file (see WRF configuration guide above). +* CMAQ is best connected to WRF that uses the P-X LSM with key variables in the output (see WRF configuration guide above). +* Method 1: Compiled into executable with directives in the Registry file. +* Method 2: At run-time using a simple text file and namelist option. ## E.2 WRF version 4.6 From 0ec89f82b4846468b4c63031edb181d6c5b8750c Mon Sep 17 00:00:00 2001 From: coastwx Date: Wed, 12 Jun 2024 15:31:38 -0400 Subject: [PATCH 109/375] Update CMAQ_UG_appendixE_configuring_WRF.md --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md index ccda6873c..ae9593efa 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md @@ -9,7 +9,8 @@ ## E.1 WRF for CMAQ & Output * **[WRF configuration guide for CMAQ applications](../PDF/PX-ACM-WRFV4.6-MPAS.pdf)** -* CMAQ is best connected to WRF that uses the P-X LSM with key variables in the output (see WRF configuration guide above). +* CMAQ is best connected to WRF that uses the P-X LSM with key variables in the output (see WRF configuration guide above). +* Variable names: RS, RA, ZNT_PX, VEGF_PX, LAI_PX, LANDUSEF, WFC_PX, WSAT_PX, WWLT_PX, CSAND_PX, FMSAND_PX, CLAY_PX * Method 1: Compiled into executable with directives in the Registry file. * Method 2: At run-time using a simple text file and namelist option. From 2f3609869f9e7ad5615b2be1fb1c843e64d70958 Mon Sep 17 00:00:00 2001 From: kfahey92 Date: Wed, 12 Jun 2024 15:52:33 -0400 Subject: [PATCH 110/375] Update CMAQ_UG_ch12_sulfur_tracking.md Fixed a small typo --- DOCS/Users_Guide/CMAQ_UG_ch12_sulfur_tracking.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch12_sulfur_tracking.md b/DOCS/Users_Guide/CMAQ_UG_ch12_sulfur_tracking.md index 5bf4da077..44695a9d0 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch12_sulfur_tracking.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch12_sulfur_tracking.md @@ -14,7 +14,7 @@ Starting with CMAQv5.3, a runtime diagnostic model option that provides detailed ## 12.2 Usage -To activate the STM option, edit the CTM runscript and set the following environment variable to "Y" (the default is "N"): +To activate the STM option, edit the CCTM runscript and set the following environment variable to "Y" (the default is "N"): - setenv STM_SO4TRACK Y From cf6ef9130c8a3e69b09401772843316610b0188d Mon Sep 17 00:00:00 2001 From: SfarrellCMAQ <139152912+SfarrellCMAQ@users.noreply.github.com> Date: Wed, 12 Jun 2024 16:03:16 -0400 Subject: [PATCH 111/375] Update CMAQ_UG_tutorial_chemicalmechanism.md --- .../CMAQ_UG_tutorial_chemicalmechanism.md | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_chemicalmechanism.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_chemicalmechanism.md index b5a16a584..6562b4ba4 100755 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_chemicalmechanism.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_chemicalmechanism.md @@ -34,12 +34,12 @@ Goal: Modify the gas- and aerosol-phase chemical mechanisms in CMAQ, create new ### 1.2 Edit mech_*.def. -The mech_*.def file lists all of CMAQ chemical reactions and is located at /$CMAQ_REPO/CCTM/src/MECHS//${mechanism}/mech_/${mechanism}.def. The [chemmech documentation](../../../UTIL/chemmech/README.md) describes formats for reaction rate constants dependent on temperature, atmospheric number density, water vapor, sunlight, model species and constants such as oxygen and methane mixing ratios. The documentation also gives a more detailed explanation of the mech.def (mechanism definitions) sections and formatting rules. +The mech_*.def file lists all of CMAQ chemical reactions and is located at /$CMAQ_REPO/CCTM/src/MECHS/${mechanism}/mech_/${mechanism}.def. The [chemmech documentation](../../../UTIL/chemmech/README.md) describes formats for reaction rate constants dependent on temperature, atmospheric number density, water vapor, sunlight, model species and constants such as oxygen and methane mixing ratios. The documentation also gives a more detailed explanation of the mech.def (mechanism definitions) sections and formatting rules. - All reactions must begin with a name in < > brackets. - All reactions must end with # followed by a reaction rate constant with units of cm3/(molecules s) - In this tutorial, all reactions regenerate the oxidant. -In this example, we add an Odum 2-product model by reacting a gas-phase precursor (TPROD) with OH to form two semivolatile gas-phase species (SVTPROD1, SVTPROD2) with alpha values of 0.15 and 0.8 by mole and a rate constant of 4.5 x 10^-11 cm3/(molecules s): +In this example, we add an Odum 2-product model to the **cb6r5_ae7_aq** chemical mechanism by reacting a gas-phase precursor (TPROD) with OH to form two semivolatile gas-phase species (SVTPROD1, SVTPROD2) with alpha values of 0.15 and 0.8 by mole and a rate constant of 4.5 x 10^-11 cm3/(molecules s): ``` TPROD + OH = OH + 0.15 * SVTPROD1 + 0.80 * SVTPROD2 #4.50E-11; ``` @@ -51,7 +51,7 @@ To form a nonvolatile, accumulation mode SOA species (ANONVJ) from a gas-phase I ### 1.3 Edit GC namelist. -The GC namelist defines gas-phase species and their physical and chemical properties. It is located at /$CMAQ_REPO/CCTM/src/MECHS//${mechanism}/GC_/${mechanism}.nml. +The GC namelist defines gas-phase species and their physical and chemical properties. It is located at /$CMAQ_REPO/CCTM/src/MECHS/${mechanism}/GC_${mechanism}.nml. You must add a new row for every gas-phase species that was added to [mech.def](#mech_def). See [Chapter 4](../CMAQ_UG_ch04_model_inputs.md) for more information. TPROD, SVTPROD1, SVTPROD2, and NONVG from the examples above must be added to the GC namelist because they are gas-phase species. Column descriptions can be found in [Chapter 4](../CMAQ_UG_ch04_model_inputs.md). In this example, TPROD does not participate in dry deposition - similar to many other VOCs in CMAQ - so 'DRYDEP SURR' and 'DDEP' are empty and FAC is -1. NONVG (an IVOC as defined above), SVTPROD1, and SVTPROD2 do participate in dry deposition because of their low volatilities. This tutorial does not explain the process of creating new dry deposition surrogates, but it is possible to do so and replace 'VD_GEN_ALD'. The WET-SCAV SURR are described in the [hlconst.F](#hlconst) section below. 'GC2AE SURR' lists the species that partition between gas and aerosol phases in [SOA_DEFN.F](#SOA_DEFN). ``` @@ -66,7 +66,7 @@ TPROD, SVTPROD1, SVTPROD2, and NONVG from the examples above must be added to th ### 1.4 Edit AE namelist. -The AE namelist defines all aerosol-phase species and their physical and chemical properties and is located at /$CMAQ_REPO/CCTM/src/MECHS//${mechanism}/AE_/${mechanism}.nml +The AE namelist defines all aerosol-phase species and their physical and chemical properties and is located at /$CMAQ_REPO/CCTM/src/MECHS/${mechanism}/AE_${mechanism}.nml You must add a new row for every aerosol-phase species added to [AERO_DATA.F](#AERO_DATA). See [Chapter 4](../CMAQ_UG_ch04_model_inputs.md) for more information. ANONV and the aerosol products from the Odum 2-product model must be added to the AE namelist. The semivolatile Odum 2-product species (SVTPROD1 and SVTPROD2) partition between the gas and accumulation mode aerosol phase with ATPROD1 and ATPROD2. Column descriptions can be found in [Chapter 4](../CMAQ_UG_ch04_model_inputs.md). The aerosol species names should omit any suffix indicating the particle mode of the species (e.g. i, j, or k). Instead, users should indicate which modes the species is in using the 'Aitken', 'Accum', and 'Coarse' columns. ``` @@ -78,21 +78,21 @@ ANONV and the aerosol products from the Odum 2-product model must be added to th ### 1.5 Edit NR namelist. -The NR namelist defines gas-phase species that are not in the mech.def file, and their physical and chemical properties. Species in this file are typically the semivolatile gases that partition between the gas- and aerosol-phases. It is located at /$CMAQ_REPO/CCTM/src/MECHS//${mechanism}/NR_/${mechanism}.nml. +The NR namelist defines gas-phase species that are not in the mech.def file, and their physical and chemical properties. Species in this file are typically the semivolatile gases that partition between the gas- and aerosol-phases. It is located at /$CMAQ_REPO/CCTM/src/MECHS/${mechanism}/NR_${mechanism}.nml. You must add a new row for every nonreactive species, if any, added to the chemical mechanism that is not explicitly modeled in [mech.def](#mech_def). See [Chapter 4](../CMAQ_UG_ch04_model_inputs.md) for descriptions of the information in each column. -The examples used in this tutorial do not include species that need to be added to the NR namelist. Follow the sesquiterpene SOA formation mechanism as an example of NR species (e.g. follow SESQRXN, SVSQT, and ASQTJ in /$CMAQ_REPO/CCTM/src/MECHS//${mechanism}/ and /$CMAQ_REPO/CCTM/src/aero/aero6/). If an aerosol species is added via the NR namelist, its name must (for now) include the suffix denoting the size of the mode the species is active in (i.e. i, j, or k). +The examples used in this tutorial do not include species that need to be added to the NR namelist. Follow the sesquiterpene SOA formation mechanism as an example of NR species (e.g. follow SESQRXN, SVSQT, and ASQTJ in /$CMAQ_REPO/CCTM/src/MECHS/${mechanism}/ and /$CMAQ_REPO/CCTM/src/aero/aero6/). If an aerosol species is added via the NR namelist, its name must (for now) include the suffix denoting the size of the mode the species is active in (i.e. i, j, or k). ### 1.6 Edit DESID Chemical Mapping Control file. -The DESID Chemical Mapping Control file describes how to input emissions and is located at /$CMAQ_REPO/CCTM/src/MECHS//${mechanism}/CMAQ_Control_DESID_/${mechanism}.nml. Any new species included in the mech_*.def or GC, AE, and NR namelists that is directly emitted should be included in this file. Examples of adding new species are given in the [DESID tutorial](CMAQ_UG_tutorial_emissions.md). +The DESID Chemical Mapping Control file describes how to input emissions and is located at /$CMAQ_REPO/CCTM/src/MECHS/${mechanism}/CMAQ_Control_DESID_${mechanism}.nml. Any new species included in the mech_*.def or GC, AE, and NR namelists that is directly emitted should be included in this file. Examples of adding new species are given in the [DESID tutorial](CMAQ_UG_tutorial_emissions.md). ### 1.7 Edit SpecDef file. -The SpecDef file is used to aggregate CMAQ output species (e.g. into PM2.5) and convert units. It is used to run the post-processing tool [combine](../../../POST/combine/README.md) and is located at /$CMAQ_REPO/CCTM/src/MECHS//${mechanism}/SpecDef_{mechanism}.txt. +The SpecDef file is used to aggregate CMAQ output species (e.g. into PM2.5) and convert units. It is used to run the post-processing tool [combine](../../../POST/combine/README.md) and is located at /$CMAQ_REPO/CCTM/src/MECHS/${mechanism}/SpecDef_{mechanism}.txt. To convert the units of a gas-phase species to ppb, add the following line: ``` NEWGAS ,ppbV ,1000.*NEWGAS[1] @@ -111,15 +111,15 @@ PM1_TOT_MP ,ug m-3 ,ATOTI[0]*PM1AT[3]+ATOTJ_MP[0]*PM1AC[3]+ATOTK[0]*PM1C ``` To update the OC variables or the deposition of OC variables in the SpecDef_Dep_{mechanism}.txt file, you must know the OM:OC ratios of the new organic aerosol species. -In CMAQv5.4, the new Explicit and Lumped CMAQ Model Output (ELMO) module performs all of the aerosol processing online in CMAQ, so that variables like organic aerosol mass and PM2.5 mass are output directly from the model to files with prefixes CCTM_ELMO_ and CCTM_AELMO_, for instantaneous and averaged values respectively. FOr more information, see the [ELMO documentation](../Appendix/CMAQ_UG_appendixG_elmo_output.md). +In CMAQv5.5, the new Explicit and Lumped CMAQ Model Output (ELMO) module performs all of the aerosol processing online in CMAQ, so that variables like organic aerosol mass and PM2.5 mass are output directly from the model to files with prefixes CCTM_ELMO_ and CCTM_AELMO_, for instantaneous and averaged values respectively. FOr more information, see the [ELMO documentation](../Appendix/CMAQ_UG_appendixG_elmo_output.md). ### 1.8 Edit SOA_DEFN.F -SOA_DEFN.F describes SOA precursors, SOA species and their properties dealing with gas to particle partitioning. It is located at /$CMAQ_REPO/CCTM/src/aero/aero6/SOA_DEFN.F. Note that the aero7 directory is linked to the aero6 directory. +SOA_DEFN.F describes SOA precursors, SOA species and their properties dealing with gas to particle partitioning. It is located at /$CMAQ_REPO/CCTM/src/aero/aero6/SOA_DEFN.F. Note that the aero7 and cracmm directories are linked to the aero6 directory. -You must add a row for every new SOA species and increase n_oa_list by the number of species added to the list. +You must add a row for every new SOA species and increase **n_oa_list** by the number of species added to the list (in this tutorial you would add 3). To add semivolatile species that partition between the gas and aerosol phases (with a gas-phase species defined in the [GC namelist](#GCnml)), include their effective saturation concentrations (C*) and enthalpies of vaporization. In this example, ATPROD1 (nominally biogenic) has the corresponding gas-phase species SVTPROD1 and has C* = 0.95 ug/m3 and enthalpy of vaporization = 131 J/mol. ATPROD2 has the corresponding gas-phase species SVTPROD2 and has C* = 485 ug/m3 and enthalpy of vaporization = 101 J/mol: ``` @@ -130,15 +130,15 @@ To add a nonvolatile aerosol species (assumed anthropogenic): ``` & oa_type('ANONV ', ' ', ' ', 0.0000, 1.E-10, 1.0E0, 0.667, 2.00, F, F, F, T ) ``` -Note that these aerosol definitions do not include a specification of the size bin they fall into. That is added automatically within CMAQ. The last four true/false fields identify the species as POA, anthrpogenic, biogenic, and nonvolatile. These fields are used in ELMO calculations of aggregate values like BSOA and ASOA. +Note that these aerosol definitions do not include a specification of the size bin they fall into. That is added automatically within CMAQ. The last four true/false fields identify the species as POA, anthropogenic, biogenic, and nonvolatile. These fields are used in ELMO calculations of aggregate values like BSOA and ASOA. ### 1.9 Edit AERO_DATA.F -AERO_DATA.F defines all aerosol species and some of their properties. It is located at /$CMAQ_REPO/CCTM/src/aero/aero6/AERO_DATA.F. Note that the aero7 directory is linked to the aero6 directory. +AERO_DATA.F defines all aerosol species and some of their properties. It is located at /$CMAQ_REPO/CCTM/src/aero/aero6/AERO_DATA.F. Note that the aero7 and cracmm directories are linked to the aero6 directory. -You must add a row for every new aerosol species and increase n_aerolist be the number of species added to the list. For all species except particulate water and hydronium ion (a tracer), CMAQ now sets no_M2Wet to F. +You must add a row for every new aerosol species and increase **n_aerolist** to reflect additional species added to the list (in this tutorial add 3). For all species except particulate water and hydronium ion (a tracer), CMAQ now sets no_M2Wet to F. To add a semivolatile (Vol=REV) organic aerosol species in the Accumulation mode (T,A,C=F,T,F), set OM to T, calculate korg from e.g. Pye et al. (ACP, 2017) or another source, and use properties that match other organic species: ``` @@ -149,7 +149,7 @@ To add a nonvolatile (Vol=NVL) organic aerosol species, set no_M2Wet to F: ``` & spcs_list_type('ANONV ', T,T,F, cm_set, 1400.0, ' ',' ',0.00,'NVL',F,F, 0, 2.8, 6.1,T, 'DUST ', 0.07), ``` -Note that these aerosol names do not include a specification of the size bin they fall into. That is instead indicated by the first three T/F fields (i.e. Aitken, Accumulation and Coarse). When CMAQ expands the vaiables from the AE namelist to the aerosol modes, it checks this table to make sure that mode is allowed for the species being considered. The condensable vapor in equilribium with the aerosol species should also be specified (e.g. VTRPOD1), as well as the reaction counter (e.g. ALKRXN), if it exists , and the kind of mass-transfer category the species fits (e.g. REV = reversible; IRV = Irreversible; NVL = nonvolatile; H2O = water). +Note that these aerosol names do not include a specification of the size bin they fall into. That is instead indicated by the first three T/F fields (i.e. Aitken, Accumulation and Coarse). When CMAQ expands the variables from the AE namelist to the aerosol modes, it checks this table to make sure that mode is allowed for the species being considered. The condensable vapor in equilribium with the aerosol species should also be specified (e.g. VTRPOD1), as well as the reaction counter (e.g. ALKRXN), if it exists , and the kind of mass-transfer category the species fits (e.g. REV = reversible; IRV = Irreversible; NVL = nonvolatile; H2O = water). After this category, the user must choose whether the species is to be treated as wet (almost none are now except water species). @@ -159,7 +159,7 @@ After this category, the user must choose whether the species is to be treated a ### 1.10 Edit hlconst.F hlconst.F calculates Henry's Law constants for species that participate in wet deposition. It's located in the relevant cloud directory at /$CMAQ_REPO/CCTM/src/cloud/*/hlconst.F. -Each new row corresponds to a name used in the 'WET-SCAV SURR' column of the [GC namelist](#GCnml). Increase MXSPCS by the number of species added to the list. +Each new row corresponds to a name used in the 'WET-SCAV SURR' column of the [GC namelist](#GCnml). Increase **MXSPCS** by the number of species added to the list. Based on the additions to the [GC namelist](#GCnml) in these examples, wet deposition surrogates must be added for TPROD, SVTPROD1, SVTPROD2, and NONVG. The first 3 columns are row numbers in the data matrix. Column 4 is the name of the wet deposition surrogate used in the [GC namelist](#GCnml) and will often be the same as the species name. Column 5 is the Henry's law constant at 298.15 K (M/atm). Column 6 is the enthalpy; for organic semivolatile species with unknown enthalpy, 6.0E+03 may be used. See references listed in hlconst.F for models to calculate Henry's Law constants where experimental data is unavailable. ``` @@ -184,7 +184,7 @@ See [Chapter 5](../CMAQ_UG_ch05_running_a_simulation.md) or the [Tutorials](READ ### 2.2 Build New Mechanism -Two options are possible for this step. There are several utilities that must be executed to translate the mechanism inputs into CMAQ souce code. The user may run these manually, or utilize features in the bldit_cctm.csh build script that automatically executes each step without detailed work by the user. Theis automated workflow is called CMAQ Autochem. +Two options are possible for this step. There are several utilities that must be executed to translate the mechanism inputs into CMAQ souce code. The user may run these manually, or utilize features in the bldit_cctm.csh build script that automatically executes each step without detailed work by the user. This automated workflow is called CMAQ Autochem. @@ -205,10 +205,10 @@ Edit /$CMAQ_PROJECT/UTIL/chemmech/scripts/bldit_chemmech.csh to make sure the co Edit run_chemmech.csh - COMPILER - Update correct Mechanism -- Set Mpath to the location of the [mech.def](#mech_def) file you modified above. +- Set CHEMMECH_INPUT to the location of the [mech.def](#mech_def) file you modified above. - Change the location of the tracer namelist file ``` -set TR_NML = /$CMAQ_REPO/CCTM/src/MECHS/trac0/Species_Table_TR_0.nml +set TRAC_NML = /$CMAQ_REPO/CCTM/src/MECHS/trac0/Species_Table_TR_0.nml ``` Run: ``` @@ -218,9 +218,9 @@ If successful, it will output, for example: ``` Normal Completion of CHEMMECH Author is NAME -output written to ../output/saprc07tic_ae7i_aq-Sep-02-2020 +output written to ../output/cb6r5_ae7_aq ``` -and will write RXNS_DATA_MODULE.F90 and RXNS_FUNC_MODULE.F90 to the output path. Check the output mechanism csv, html, and markdown files to confirm that chemmech ran correctly. Copy the two Fortran files to /$CMAQ_REPO/CCTM/src/MECHS//${Mechanism}/. +and will write RXNS_DATA_MODULE.F90 and RXNS_FUNC_MODULE.F90 to the output path. Check the output mechanism csv, html, and markdown files to confirm that chemmech ran correctly. Copy the two Fortran files to /$CMAQ_REPO/CCTM/src/MECHS/${Mechanism}/. @@ -232,12 +232,12 @@ cp -r /$CMAQ_REPO/UTIL/create_ebi/ /$CMAQ_PROJECT/UTIL/ Move bldrun_create_ebi.csh up one directory (from /$CMAQ_PROJECT/UTIL/create_ebi/scripts/ to /$CMAQ_PROJECT/UTIL/create_ebi/). Edit bldrun_create_ebi.csh: - COMPILER - Update MECH for your mechanism. -- Set RXNS_DATA to the location of your chemmech output files. -- Set PAR_NEG_FLAG, DEGRADE_SUBS, SOLVER_DELT, and all MECH_*(species) variables to the setting that matches your mechanism. E.g. for saprc07tic_ae7i_aq: +- Set RXNS_DATA_SRC to the location of your chemmech output files. +- Set PAR_NEG_FLAG, DEGRADE_SUBS, SOLVER_DELT, and all MECH_*(species) variables to the setting that matches your mechanism. E.g. for cb6r5_ae7_aq: ``` - setenv PAR_NEG_FLAG F + setenv PAR_NEG_FLAG T setenv DEGRADE_SUBS F - setenv SOLVER_DELT 1.25 + setenv SOLVER_DELT 2.5 ``` The reactions added in this tutorial do not affect radical species in ozone chemistry. If it did, we recommend checking predictions using the EBI solver against an alternative gas solver listed in the cctm build script such as ros3 and smvgear. Check Table 1 in the [create_ebi documentation](../../../UTIL/create_ebi/README.md) as an initial list of radical species that may require such benchmarking. The list grows if new radical cycles are added to a mechanism such as radicals from halogen compounds. Run: @@ -261,7 +261,7 @@ Program CR_EBI_SOLVER completed successfully if ( F == T ) then exit ( ) ``` -and will write the hr*.F files to /${CMAQ_HOME}/CMAQv533/UTIL/create_ebi/output/ebi_/${Mechanism}-/$DATE-/${COMPILER}/. Copy the hr*.F files to /${CMAQ_REPO}/CCTM/src/gas/ebi_/${Mechanism}/. +and will write the hr*.F files to /${CMAQ_HOME}/CMAQv533/UTIL/create_ebi/output/ebi_${Mechanism}/. Copy the hr*.F files to /${CMAQ_REPO}/CCTM/src/gas/ebi_${Mechanism}/. From d3439d8bc9ca70f766dca2ced668288c62f35b82 Mon Sep 17 00:00:00 2001 From: Ben_Murphy Date: Wed, 12 Jun 2024 16:12:28 -0400 Subject: [PATCH 112/375] Update CMAQ_UG_ch06_model_configuration_options.md --- ...MAQ_UG_ch06_model_configuration_options.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index ae0c65efd..e8ea8d9fa 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -322,8 +322,8 @@ CMAQv5.3 introduced DESID so that the process of mapping emissions species to CM Depending on the nature of any stream and the information used to quantify its emissions, it may be treated as one of three types: -#### Online Stream: -CMAQ will calculate the emission rates from this source using information about local meteorology, land characteristics, etc. The streams that can be run online in CMAQ are: [biogenics (BEIS/MEGAN)](#BEIS/MEGAN),[ windblown dust](#Wind_Blown_Dust), [sea spray](#Sea_Spray), and [lightning NO](#Lightning_NO). +#### Online Streams: +CMAQ will calculate the emission rates from this source using information about local meteorology, land characteristics, etc. The streams that can be run online in CMAQ are: [biogenics (BEIS/MEGAN)](#BEIS/MEGAN),[ windblown dust](#Wind_Blown_Dust), [sea spray](#Sea_Spray), marine gas, and [lightning NO](#Lightning_NO). #### Gridded Stream (offline): CMAQ will read emission rates from an input file, which is organized into an array that is identical in shape to the CMAQ model grid. Typically, these rates are stored at hourly time points and are then interpolated within CMAQ to each time step. These files may be 2D to represent just the surface layer emissions or they may be 3D. If 3D, the file may have the same number or fewer number of layers as the CMAQ grid. Gridded emissions may be merged into a single stream or kept as separate types. Some common examples of Gridded emissions include: @@ -369,14 +369,14 @@ Users should be careful with this variable, as it changes the default value for If N_EMIS_GR is set 0, then CMAQ will run with no Gridded emissions even if the values for GR_EMIS_XXX and GR_EMIS_LAB_XXX are all set. -#### Inline Stream (offline): -For these streams, emission rates and stack characteristics are provided for many individual sources on the same file. CMAQ uses the stack information to calculate important quantities online like the injection height which is influenced by local meteorology. A specific latitude/longitude pair is given for each source to locate it in the CMAQ grid. Sources outside the CMAQ grid domain are ignored by CMAQ; thus the same files may be used for a large domain and a nest within that domain. Some common examples of Inline emissions include: +#### Point Stream (offline): +For these streams, emission rates and stack characteristics are provided for many individual sources on the same offline file. CMAQ uses the stack information to calculate important quantities online like the injection height which is influenced by local meteorology. A specific latitude/longitude pair is given for each source to locate it in the CMAQ grid. Sources outside the CMAQ grid domain are ignored by CMAQ; thus the same files may be used for a large domain and a nest within that domain. Some common examples of Point emissions include: - Stacks (electric generation units, industrial sources, manufacturing, etc.) - Forest fires - Large prescribed fire events -Users add Inline emissions to a simulation via the RunScript. First the variable N_EMIS_PT must be set to the number of Inline Streams to be used: +Users add Point emission streams to a simulation via the RunScript. First the variable N_EMIS_PT must be set to the number of Point Streams to be used: ``` setenv N_EMIS_PT 3 @@ -384,13 +384,13 @@ setenv N_EMIS_PT 3 The RunScript must also specify the location of the input files using three-digit suffixes for the stream number: ``` -setenv STK_EMIS_002 /home/user/path-to-file/inline_emiss_stream_2_${DATE}.nc +setenv STK_EMIS_002 /home/user/path-to-file/point_emiss_stream_2_${DATE}.nc ``` The location to the "stack file" with static information about the properties of each source on the stream: ``` -setenv STK_GRPS_002 /home/user/path-to-file/inline_stack_groups_2.nc +setenv STK_GRPS_002 /home/user/path-to-file/point_stack_groups_2.nc ``` @@ -412,9 +412,9 @@ setenv EM_SYM_DATE T #This changes the internal default of STK_EM_SYM_DATE, if n ``` Users should be careful with this variable, as it changes the default value for all stack streams. If both EM_SYM_DATE and STK_EM_SYM_DATE_XXX are present, STK_EM_SYM_DATE_XXX takes precedent for that individual stream. Example: if STK_EM_SYM_DATE_001 is F and EM_SYM_DATE is T, the emissions module will see that stream 001 is not a symbolic data type, however, stream 002, if not set, will indicate that stream 002 is of symblic data type. -If N_EMIS_PT is set 0, then CMAQ will run with no Inline emissions even if the values for STK_EMIS_XXX, STK_GRPS_XXX and STK_EMIS_LAB_XXX are all set. +If N_EMIS_PT is set 0, then CMAQ will run with no Point emission streams even if the values for STK_EMIS_XXX, STK_GRPS_XXX and STK_EMIS_LAB_XXX are all set. -*Plume Rise* - Plume rise can be calculated inline within CMAQ using the Briggs solution as it is implemented in SMOKE and documented in the SMOKE user guide [Chapter 4.3](https://www.cmascenter.org/smoke/documentation/5.0/html/ch04s03.html#sect_programs_elevpoint_briggs). It is required that emission files have been processed to include the necessary stack parameters (e.g. exit velocity, diameter, stack gas temperature, stack height, etc.) for anthropogenic point sources. Wildland fires require heat flux and are to estimate plume rise with Briggs using [the Pouliot-Godowitch method](https://www.cmascenter.org/smoke/documentation/5.0/html/ch04s06.html#sect_programs_laypoint_plume_rise_fires). +*Plume Rise* - Plume rise can be calculated online within CMAQ using the Briggs solution as it is implemented in SMOKE and documented in the SMOKE user guide [Chapter 4.3](https://www.cmascenter.org/smoke/documentation/5.0/html/ch04s03.html#sect_programs_elevpoint_briggs). It is required that emission files have been processed to include the necessary stack parameters (e.g. exit velocity, diameter, stack gas temperature, stack height, etc.) for anthropogenic point sources. Wildland fires require heat flux and are to estimate plume rise with Briggs using [the Pouliot-Godowitch method](https://www.cmascenter.org/smoke/documentation/5.0/html/ch04s06.html#sect_programs_laypoint_plume_rise_fires). @@ -443,13 +443,13 @@ Running CMAQ with BEIS is controlled by the following RunScript flag: setenv CTM_BIOGEMIS_BE Y ``` -Running CMAQ with online BEIS requires a user-supplied, gridded normalized biogenic emissions input netCDF file, B3GRD. This file is created with the [normbeis4](https://www.cmascenter.org/smoke/documentation/5.0/html/ch04s13.html) program in SMOKE prior to running the inline biogenic option in CMAQ and contains winter and summer normalized emissions and Leaf Area Indices. [Starting with CMAQ v54](https://github.com/USEPA/CMAQ/wiki/CMAQ-Release-Notes:-Emissions-Updates:-BEIS-Biogenic-Emissions#beis-updates), the selection of summer vs. winter normalized emission factors when using the BEIS inline biogenic emission option in CMAQ is based on the 1 meter soil temperature following the WRF PX LSM representation of seasonality. The location of the B3GRD file is set in the RunScript: +Running CMAQ with online BEIS requires a user-supplied, gridded normalized biogenic emissions input netCDF file, B3GRD. This file is created with the [normbeis4](https://www.cmascenter.org/smoke/documentation/5.0/html/ch04s13.html) program in SMOKE prior to running the online biogenic option in CMAQ and contains winter and summer normalized emissions and Leaf Area Indices. [Starting with CMAQ v54](https://github.com/USEPA/CMAQ/wiki/CMAQ-Release-Notes:-Emissions-Updates:-BEIS-Biogenic-Emissions#beis-updates), the selection of summer vs. winter normalized emission factors when using the BEIS online biogenic emission option in CMAQ is based on the 1 meter soil temperature following the WRF PX LSM representation of seasonality. The location of the B3GRD file is set in the RunScript: ``` setenv B3GRD /home/user/path-to-file/b3grd.nc ``` -Additionally, when using the inline biogenic option, the user must point to the SOILOUT file from one day’s simulation as the SOILINP file for the next day. The user must also decide whether to write over SOILOUT files from previous days or create a uniquely named SOILOUT file for each day. The latter approach is recommended if the user wishes to retain the capability to restart simulations in the middle of a sequence of simulations. +Additionally, when using the online biogenic option, the user must point to the SOILOUT file from one day’s simulation as the SOILINP file for the next day. The user must also decide whether to write over SOILOUT files from previous days or create a uniquely named SOILOUT file for each day. The latter approach is recommended if the user wishes to retain the capability to restart simulations in the middle of a sequence of simulations. Set the NEW_START variable in the RunScript to TRUE if this is the first time that biogenic NO soil emissions will be calculated. If there is a previously created file, set to FALSE. When NEW_START is set to FALSE, the directory path and file name of biogenic NO soil emissions file must be set in the RunScript: @@ -632,7 +632,7 @@ setenv CTM_LTNG_NO Y ``` -##### Option 1 - Inline NO with NLDN Data -- user uses hourly NLDN lightning strike netCDF file. +##### Option 1 - Online NO with NLDN Data -- user uses hourly NLDN lightning strike netCDF file. Hourly NLDN lightning strike data can be purchased. In addition to the hourly lightning strike netCDF file, this option requires a lightning parameters netCDF file. This file contains the intercloud to cloud-to-ground flash ratios, which are the scaling factors for calculating flashes using the convective precipitation rate, land-ocean masks, and the moles of NO per flash (cloud-to-ground and intercloud). The lightning parameters file for a domain over the continental US at 12km horizontal resolution (12US1) can be downloaded from the [CMAS Data Warehouse](https://drive.google.com/drive/folders/1R8ENVSpQiv4Bt4S0LFuUZWFzr3-jPEeY). This file can be regridded to support other domains within the continental US. @@ -653,7 +653,7 @@ setenv NLDN_STRIKES /home/user/path-to-file/nldn_hourly_ltng_strikes.nc setenv LTNGPARMS_FILE /home/user/path-to-file/LTNG_AllParms_12US1.nc ``` -##### Option 2 - Inline NO without NLDN Data -- lightning NO is calculated within CCTM based on statistical relationships with the simulated convective rainfall rate. +##### Option 2 - Online NO without NLDN Data -- lightning NO is calculated within CCTM based on statistical relationships with the simulated convective rainfall rate. This option also requires a lightning parameters netCDF file which contains the linear regression parameters for generating lightning NO. The lightning parameters file for the continental US at 12km horizontal resolution can be downloaded from the [CMAS Data Warehouse](https://drive.google.com/drive/folders/1R8ENVSpQiv4Bt4S0LFuUZWFzr3-jPEeY). This file can be regridded to support other domains within the continental US. From 0a76ea2bf3202e7314a92307a70e4542eb164094 Mon Sep 17 00:00:00 2001 From: Ben_Murphy Date: Wed, 12 Jun 2024 16:19:25 -0400 Subject: [PATCH 113/375] Update CMAQ_UG_appendixA_model_options.md --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index f8eb20d92..f7f024d31 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -596,6 +596,9 @@ Aerosol Diagnostics are now handled by the Explicit and Lumped Model Output modu - `GR_EM_SYM_DATE_### [default: False]` Switch to indicate whether gridded emission is of representative day type for stream ###, where ### = 01, 02,…,N_EMIS_GR. See [Chapter 6](../CMAQ_UG_ch06_model_configuration_options.md#inline-stream-offline) for further information. +- `N_EMIS_PT ` + The number of offline Point emission streams to be used by the model. See [Chapter 6](../CMAQ_UG_ch06_model_configuration_options.md#inline-stream-offline) for further information. + - `STK_GRPS_### ` Directory path and file name of the stack groups file for sector ###, where ### = 001, 002,…,N_EMIS_PT. Each ### refers to one of the inline plume rise point-source sectors. See [Chapter 6](../CMAQ_UG_ch06_model_configuration_options.md#inline-stream-offline) for further information. From 5d6af9677e5bc91df88cdbf6834b145675e830a9 Mon Sep 17 00:00:00 2001 From: Ben_Murphy Date: Wed, 12 Jun 2024 16:26:54 -0400 Subject: [PATCH 114/375] Update CMAQ_UG_ch06_model_configuration_options.md --- .../CMAQ_UG_ch06_model_configuration_options.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 9113917f7..77c7f522d 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -714,10 +714,10 @@ To select a predefined mechanism configuration in CMAQ, set the *Mechanism* vari Refer to the [README.md](../../CCTM/src/MECHS/README.md) under CCTM/src/MECHS for detailed information reactions and on model species names for each mechanism. -Chemical mechanisms available with CMAQv5.4 can be found in [Table 6-3](#Table6-3). Atmospheric chemistry mechanisms of varying complexity are available to support diverse applications across scales and explore extensions for emerging problems and contaminants. +Chemical mechanisms available with CMAQv5.5 can be found in [Table 6-3](#Table6-3). Atmospheric chemistry mechanisms of varying complexity are available to support diverse applications across scales and explore extensions for emerging problems and contaminants. -**Table 6-3. Chemical Mechanisms Available with CMAQv5.4** +**Table 6-3. Chemical Mechanisms Available with CMAQv5.5** |**Mechanism Name** | **Comment** | | ----------------- | ---------------------------------------------------- | @@ -732,6 +732,7 @@ Chemical mechanisms available with CMAQv5.4 can be found in [Table 6-3](#Table6- | saprc07tc_ae6_aq | State Air Pollution Research Center version 07tc with aero6 treatment of SOA set up for with standard cloud chemistry | | cracmm1_aq | Community Regional Atmospheric Chemistry Multiphase Mechanism version 1.0 | | cracmm1amore_aq | Community Regional Atmospheric Chemistry Multiphase Mechanism version 1.0 with AMORE isoprene chemistry | +| cracmm2 | Community Regional Atmospheric Chemistry Multiphase Mechanism version 2.0 | | 2DVBS | The 2D-VBS mechanism is contributed by collaborators at Tsinghua University. It is built on top of SAPRC07 mechanism. This mechanism is available in a separate research branch of the CMAQ repo. Please contact Professor Bin Zhao (bzhao@mail.tsinghua.edu.cn) for more details. | @@ -911,11 +912,11 @@ The CRACMM aerosol module is introduced in CMAQv5.4. Since CRACMM is a fully cou Selection of the aerosol module (CRACMM, AERO7, or AERO6) is accomplished through selection of the chemical mechanism in the build script as described in section 6.10 and [Table 6-3](#Table6-3). Starting in CMAQv5.4, the bldit script will select the aerosol module by parsing the gas-phase mechanism string name. The aerosol microphysics (i.e. coagulation, condensation, new particle formation, deposition, etc.) are consistent for the three modules. The modules differ by the chemical species used to treat the PM constituents. -All aerosol mechanisms available in CMAQv5.4 are compatible with semivolatile primary organic aerosol (POA). For the nonvolatile POA configuration, mass is tracked separately in terms of its carbon (OC) and non-carbon (NCOM) content. With this approach in AERO6 and AERO7, mass can be added to the non-carbon species to simulate the aging of POA in response to atmospheric oxidants. Simon and Bhave (2012) document the implementation of the second-order reaction between primary organic carbon and OH radicals. The semivolatile POA configuration segregates POA into several model species based on a combination of volatility and oxidation state. In AERO6/7, there are five POA species at low oxidation state representing low volatility, semivolatile and intermediate volatility compounds (LVPO1, SVPO1, SVPO2, SVPO3, IVPO1). As the gas-phase species (e.g. VLVPO1) oxidize with OH they form species with higher oxidation state (i.e. LVOO1, LVOO2, SVOO1, SVOO2, SVOO3). The multigenerational aging chemistry for the semivolatile POA configuration is derived from the approach of Donahue et al. (2012) which takes into account the functionalization and fragmentation of organic vapors upon oxidation. The semivolatile POA configuration also includes the option (on by default) of potential secondary organic aerosol from combustion sources (pcSOA). This species is emitted as a VOC (pcVOC) and forms SOA after reaction with OH. The emissions of pcVOC may be zeroed out by the user for specific sources using the DESID emissions control file; zeroing out pcVOC emissions is recommended for biomass and wood burning sources. +All aerosol mechanisms available in CMAQv5.5 are compatible with semivolatile primary organic aerosol (POA). For the nonvolatile POA configuration, mass is tracked separately in terms of its carbon (OC) and non-carbon (NCOM) content. With this approach in AERO6 and AERO7, mass can be added to the non-carbon species to simulate the aging of POA in response to atmospheric oxidants. Simon and Bhave (2012) document the implementation of the second-order reaction between primary organic carbon and OH radicals. The semivolatile POA configuration segregates POA into several model species based on a combination of volatility and oxidation state. In AERO6/7, there are five POA species at low oxidation state representing low volatility, semivolatile and intermediate volatility compounds (LVPO1, SVPO1, SVPO2, SVPO3, IVPO1). As the gas-phase species (e.g. VLVPO1) oxidize with OH they form species with higher oxidation state (i.e. LVOO1, LVOO2, SVOO1, SVOO2, SVOO3). The multigenerational aging chemistry for the semivolatile POA configuration is derived from the approach of Donahue et al. (2012) which takes into account the functionalization and fragmentation of organic vapors upon oxidation. The semivolatile POA configuration also includes the option (on by default) of potential secondary organic aerosol from combustion sources (pcSOA). This species is emitted as a VOC (pcVOC) and forms SOA after reaction with OH. The emissions of pcVOC may be zeroed out by the user for specific sources using the DESID emissions control file; zeroing out pcVOC emissions is recommended for biomass and wood burning sources. CRACMM includes a series of semivolate and intermediate volatility compounds with alkane-like and oxygenated functionality that can represent semivolatile POA emissions as well as oxidation products (ROCALK and ROCOXY species). By default, volatility profiles are applied to POA emissions in CRACMM using the DESID module as in AERO6/7. In the future, semivolatile emissions will be directly propagated to the mechanism via the emissions processing infrastructure. CRACMM does not include heterogenous aging of nonvolatile POA, but POC and NCOM are available as tracer species that can be advected. pcSOA is not available in CRACMM and has been replaced by other SOA systems. -All aerosol modules uses ISORROPIA v2.2 in the reverse mode to calculate the condensation/evaporation of volatile inorganic gases to/from the gas-phase concentrations of known coarse particle surfaces. ISORROPIA is also used in the forward mode to calculate instantaneous thermodynamic equilibrium between the gas and fine-particle modes. The mass transfer of all semivolatile organic species is calculated assuming equilibrium absorptive partitioning, although some nonvolatile species do exist (e.g. cloud-processed organic aerosol, oligomers, nonvolatile POA (if selected)). +All aerosol modules use ISORROPIA v2.2 in the reverse mode to calculate the condensation/evaporation of volatile inorganic gases to/from the gas-phase concentrations of known coarse particle surfaces. ISORROPIA is also used in the forward mode to calculate instantaneous thermodynamic equilibrium between the gas and fine-particle modes. The mass transfer of all semivolatile organic species is calculated assuming equilibrium absorptive partitioning, although some nonvolatile species do exist (e.g. cloud-processed organic aerosol, oligomers, nonvolatile POA (if selected)). CMAQ can output the reduction in visual range caused by the presence of PM, perceived as haze. CCTM integrates Mie scattering (a generalized particulate light-scattering mechanism that follows from the laws of electromagnetism applied to particulate matter) over the entire range of particle sizes to obtain a single visibility value for each model grid cell at each time step. More detailed descriptions of the PM calculation techniques used in CCTM can be found in Binkowski and Shankar (1995), Binkowski and Roselle (2003), and Byun and Schere (2006). From 5f5a04f377d1aa78f880df7dfb6fc51365fa66b9 Mon Sep 17 00:00:00 2001 From: Ben_Murphy Date: Wed, 12 Jun 2024 16:28:43 -0400 Subject: [PATCH 115/375] Update CMAQ_UG_appendixF_elmo_output.md --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md index 87a832215..4e97a6a91 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md @@ -131,7 +131,7 @@ Before ELMO maps output variables to internal model species or meteorological in ### F.5 ELMO Implementation in CMAQ -ELMO works by putting all of the diagnostic parameters first on the ELMO_LIST table in ELMO_DATA.F. There is also a list of ID numbers (integers) above that table which allow for a master order to be preserved while the order of the parameters in the table and their calculations in ELMO_PROC.F are allowed to move in sequence. The subroutine LOAD_ELMO (ELMO_PROC.F) is called from DRIVER and cycles through the list of selected variables as defined by the interface in the CMAQ Miscellaneous Control file. +ELMO works by putting all of the diagnostic parameters first on the ELMO_LIST table in ELMO_DATA.F. There is also a list of ID numbers (integers) above that table which allow for a comprehensive order to be preserved while the order of the parameters in the table and their calculations in ELMO_PROC.F are allowed to move in sequence. The subroutine LOAD_ELMO (ELMO_PROC.F) is called from DRIVER and cycles through the list of selected variables as defined by the interface in the CMAQ Miscellaneous Control file. For each variable, the recursive subroutine CALC_ELMO is called to execute the calculation. For many of the calculations, all that is required is an assignment from an already existing diagnostic variable (e.g. RH, STDEV_ACC). For the parameters which are linear combinations of CMAQ species or other parameters (e.g. fine-mode nitrate PMF_NO3 = ANO3I + ANO3J), they may be defined in the subroutine MAP_ELMO_COEFFS (in ELMO_PROC.F). From 9baed1c6796925280846073867e62c477c0cc710 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 12 Jun 2024 17:11:35 -0400 Subject: [PATCH 116/375] Update CMAQ_UG_ch08_analysis_tools.md Added links for CCTM_ACONC, CCTM_CONC, CCTM_AELMO, CCTM_ELMO --- DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md index 63543dfe0..0d08ad620 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md @@ -35,13 +35,13 @@ This chapter briefly describes how to use some of the software tools supported b The *combine* Fortran program, released as part of the CMAQ POST tools, can combine variables from CMAQ, emissions, or meteorology files into a new I/O API file. Model species can be aggregated or transformed into variables of interest, e.g., to change units from ppmV to ppbV or match observed quantities from a specific monitoring network. Model output files can be concatenated to create files for longer time periods (e.g., files with hourly data for individual days can be combined into a single file for an entire month). More information on the combine utility and its use can be found in this [README file.]( ../../POST/combine/README.md) -The combine utility relies on a chemical mechanism-specific "Species Definition" files that prescribe how CMAQ output variables should be mapped and/or combined to become comparable to different measured gas, particle and deposition species. When you download the CMAQ code, the Species Definition files corresponding to default model output variables are automatically included under the subdirectory "CCTM/src/MECHS". Within each of the listed mechanism folders, you will find files "SpecDef_MECH_NAME.txt" (for gas and aerosol species) and "SpecDef_dep_MECH_NAME.txt" (for deposition species) that contain a long list of species definitions and corresponding documentation. For example, the calculation of NOX in ppbV is given as +The combine utility relies on a chemical mechanism-specific "Species Definition" files that prescribe how CMAQ output variables should be mapped and/or combined to become comparable to different measured gas, particle, and deposition species. When you download the CMAQ code, the Species Definition files corresponding to default model output variables are automatically included under the subdirectory "CCTM/src/MECHS". Within each of the listed mechanism folders, you will find files "SpecDef_MECH_NAME.txt" (for gas and aerosol species) and "SpecDef_dep_MECH_NAME.txt" (for deposition species) that contain a long list of species definitions and corresponding documentation. For example, the calculation of NOX in ppbV is given as ``` NOX ,ppbV ,1000.0*(NO[1] + NO2[1]) ``` -where NO and NO2 are pulled from the CCTM_ACONC model output file in units of ppmV. +where NO and NO2 are pulled from the [CCTM_ACONC](CMAQ_UG_ch07_model_outputs.md#aconc) model output file in units of ppmV. -Note that some species aggregation is already happening within the CMAQ model. The CMAQ aerosol module explicitly represents a number of individual PM2.5 species that need to be combined for comparisons to measured total PM2.5 mass. The Explicit and Lumped Model Output (ELMO) capability introduced in CMAQv5.4 presribes the calculation of aggregated aerosol species (e.g., PM1, PM2.5, and PM10), as well as diagnostic values (e.g., aerosol surface area and number) and CMAQ calculates them online. See [Apendix F](Appendix/CMAQ_UG_appendixF_elmo_output.md) for more information about the calculation of each ELMO output variable and how this relates to use of the *combine* tool. +Note that some species aggregation is already happening within the CMAQ model. The CMAQ aerosol module explicitly represents a number of individual PM2.5 species that need to be combined for comparisons to measured total PM2.5 mass. The Explicit and Lumped Model Output (ELMO) capability introduced in CMAQv5.4 presribes the calculation of aggregated aerosol species (e.g., PM1, PM2.5, and PM10), as well as diagnostic values (e.g., aerosol surface area and number) and CMAQ calculates them online. The species are then written to the [CCTM_ELMO](CMAQ_UG_ch07_model_outputs.md#ELMO) or [CCTM_AELMO](CMAQ_UG_ch07_model_outputs.md#AELMO) output files. See [Apendix F](Appendix/CMAQ_UG_appendixF_elmo_output.md) for more information about the calculation of ELMO output variables and how this relates to use of the *combine* tool. ## 8.3 Model-Observation Pairing for Model Evaluation Once model output has been processed using *combine*, the *sitecmp* and *sitecmp_dailyo3* utilities can be used to match air pollutant measurements with the appropriate model predicted variables. This pairing of model and observed variables is specified in the run scripts for *sitecmp* and *sitecmp_dailyo3*. In *sitecmp_dailyo3* this step is controlled by the definition of environment variables OBS_SPECIES and OZONE. See the [README.md](../../POST/sitecmp_dailyo3/README.md) and the sample run script in the [*sitecmp_dailyo3* scripts](../../POST/sitecmp_dailyo3/scripts) folder for more information on setting these environment variables. The run script for the *sitecmp* utility can be customized for many different types of chemical and meteorological quantities as described in the [README.md](../../POST/sitecmp/README.md) for sitecmp. Sample run scripts for the AQS, CSN, IMPROVE, NADP and SEARCH networks based on the 2016 CMAQ test case are provided in the [*sitecmp* scripts](../../POST/sitecmp/scripts) folder. In addition, the [README.md](../../POST/sitecmp/scripts/README.md) file within the *sitecmp* scripts folder provides the configuration options for monitoring networks. Note that there are multiple formats for CSN and SEARCH observed data files depending on the year. The README.txt file is broken into different sections to reflect the change in species names in the observation files for these two networks. (For example, elemental carbon measurements from the CSN network are labeled as “ec_niosh” in 2009 and earlier, “ec_tor” in 2010, and “88380_val” starting in 2011.) @@ -50,11 +50,11 @@ Note that some species aggregation is already happening within the CMAQ model. T In *sitecmp*, model values are extracted for the grid cell containing the monitor location. In *sitecmp_dailyo3* the model value of the grid cell containing the observation is provided, as well as the maximum model value of the 9 grid cells centered on the monitor location. These variables in the output file contain the character string "9cell" in the variable name. ### 8.3.2 Temporal matching in sitecmp and sitecmp_dailyo3 -* **AQS_HOURLY, CASTNET_HOURLY, SEARCH_HOURLY, NAPS_HOURLY, AERONET**: Air quality observations are assumed to be hourly averages time stamped at the beginning of the hour with local standard time (LST). The *sitecmp* utility will use the time stamp from the observations to determine the matching model time step, accounting for the time zone of the monitor. Therefore, best practice would be for the model time step to also represent hourly average time stamped at the beginning of the hour. This can be accomplished by running the *combine* utility on the CMAQ "ACONC" output files which follow this convention. These networks also include meteorological measurements. Since meteorological observations are near instantaneous measurements (e.g. 1- or 5-minute averages), using meteorological fields from MCIP or wrfout in *combine* results in the correct matching since these fields are also instantaneous. One exception is the calculation of modeled relative humidity (RH). This variable is not available from MCIP or wrfout files but is stored in the CMAQ "AELMO" output file which represents hourly average values. This creates a slight inconsistency between observed and modeled values for this variable in the sitecmp output files. Note that modeled and observed precipitation for a given hour represents the hourly total rather than the hourly average. -* **AQS_DAILY_O3, CASTNET_DAILY_O3, NAPS_DAILY_O3**: *sitecmp_dailyo3* computes various daily metrics from observed and modeled hourly ozone values. The temporal matching of the hourly observed and modeled values used in these computations follows the same approach described above for AQS_HOURLY. Therefore, it is best practice to use output from CMAQ "ACONC" files for modeled ozone predictions. Details on the computation of the various daily metrics is provided in the *sitecmp_dailyo3* documentation. -* **AQS_DAILY, CSN, IMPROVE, SEARCH_DAILY**: Air quality observations are daily averages time stamped with the date in local standard time. The *sitecmp* utility will use the date from the observations to compute daily averages using 24 hourly modeled values, accounting for the time zone of the monitor. Therefore, it is best practice to use output from CMAQ "ACONC" files for modeled air quality predictions which represent hourly average concentrations. -* **CASTNET**: Air quality observations are weekly averages time stamped with beginning and end date and time of the weekly interval in local standard time. The *sitecmp* utility will use the start and end date and time from the observations to compute weekly averages using hourly modeled values, accounting for the time zone of the monitor. Therefore, it is best practice to use output from CMAQ "ACONC" files for modeled air quality predictions which represent hourly average concentrations. -* **NADP**: Air quality observations are weekly sums time stamped with beginning and end date of the weekly interval in local standard time. The *sitecmp* utility will use the start and end date from the observations to compute weekly sums using hourly modeled values, accounting for the time zone of the monitor. Observations are matched to output from CMAQ "DEP" files which represent hourly totals. +* **AQS_HOURLY, CASTNET_HOURLY, SEARCH_HOURLY, NAPS_HOURLY, AERONET**: Air quality observations are assumed to be hourly averages time stamped at the beginning of the hour with local standard time (LST). The *sitecmp* utility will use the time stamp from the observations to determine the matching model time step, accounting for the time zone of the monitor. Therefore, best practice would be for the model time step to also represent hourly average time stamped at the beginning of the hour. This can be accomplished by running the *combine* utility on the CMAQ [CCTM_ACONC](CMAQ_UG_ch07_model_outputs.md#ACONC) or [CCTM_AELMO](CMAQ_UG_ch07_model_outputs.md#AELMO) output files which follow this convention (rather than the instantaneous model ouput files [CCTM_CONC](CMAQ_UG_ch07_model_outputs.md#CONC) and [CCTM_ELMO](CMAQ_UG_ch07_model_outputs.md#AELMO)). These networks also include meteorological measurements. Since meteorological observations are near instantaneous measurements (e.g. 1- or 5-minute averages), using meteorological fields from MCIP or wrfout in *combine* results in the correct matching since these fields are also instantaneous. One exception is the calculation of modeled relative humidity (RH). This variable is not available from MCIP or wrfout files but is stored in the CMAQ CCTM_AELMO output file which represents hourly average values. This creates a slight inconsistency between observed and modeled values for this variable in the sitecmp output files. Note that modeled and observed precipitation for a given hour represents the hourly total rather than the hourly average. +* **AQS_DAILY_O3, CASTNET_DAILY_O3, NAPS_DAILY_O3**: *sitecmp_dailyo3* computes various daily metrics from observed and modeled hourly ozone values. The temporal matching of the hourly observed and modeled values used in these computations follows the same approach described above for AQS_HOURLY. Therefore, it is best practice to use output from CMAQ CCTM_ACONC files for modeled ozone predictions (rather than CCTM_CONC). Details on the computation of the various daily metrics is provided in the *sitecmp_dailyo3* documentation. +* **AQS_DAILY, CSN, IMPROVE, SEARCH_DAILY**: Air quality observations are daily averages time stamped with the date in local standard time. The *sitecmp* utility will use the date from the observations to compute daily averages using 24 hourly modeled values, accounting for the time zone of the monitor. Therefore, it is best practice to use output from CMAQ CCTM_ACONC and CCTM_AELMO files for modeled air quality predictions which represent hourly average concentrations (rather than CCTM_CONC and CCTM_ELMO). +* **CASTNET**: Air quality observations are weekly averages time stamped with beginning and end date and time of the weekly interval in local standard time. The *sitecmp* utility will use the start and end date and time from the observations to compute weekly averages using hourly modeled values, accounting for the time zone of the monitor. Therefore, it is best practice to use output from CMAQ CMAQ CCTM_ACONC and CCTM_AELMO files for modeled air quality predictions which represent hourly average concentrations (rather than CCTM_CONC and CCTM_ELMO). +* **NADP**: Air quality observations are weekly sums time stamped with beginning and end date of the weekly interval in local standard time. The *sitecmp* utility will use the start and end date from the observations to compute weekly sums using hourly modeled values, accounting for the time zone of the monitor. Observations are matched to output from CMAQ [CCTM_WETDEP1](CMAQ_UG_ch07_model_outputs.md#wetdep) files which represent hourly totals. * **TOAR**: Air quality observations are daily average values of O3, MDA8 O3, O3 daytime average and O3 nighttime average. The *sitecmp* utility must be given daily average values computed from hourly values using the *hr2day* utility. ## 8.4 The Atmospheric Model Evaluation Tool (AMET) From 7ceed608582020e48026af766a0aa10940f93b02 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 12 Jun 2024 17:13:14 -0400 Subject: [PATCH 117/375] Update CMAQ_UG_ch08_analysis_tools.md --- DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md index 0d08ad620..fad848101 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md @@ -39,7 +39,7 @@ The combine utility relies on a chemical mechanism-specific "Species Definition" ``` NOX ,ppbV ,1000.0*(NO[1] + NO2[1]) ``` -where NO and NO2 are pulled from the [CCTM_ACONC](CMAQ_UG_ch07_model_outputs.md#aconc) model output file in units of ppmV. +where NO and NO2 are pulled from an hourly instantaneous [CCTM_CONC](CMAQ_UG_ch07_model_outputs.md#conc) or hourly average [CCTM_ACONC](CMAQ_UG_ch07_model_outputs.md#aconc) model output file in units of ppmV. Note that some species aggregation is already happening within the CMAQ model. The CMAQ aerosol module explicitly represents a number of individual PM2.5 species that need to be combined for comparisons to measured total PM2.5 mass. The Explicit and Lumped Model Output (ELMO) capability introduced in CMAQv5.4 presribes the calculation of aggregated aerosol species (e.g., PM1, PM2.5, and PM10), as well as diagnostic values (e.g., aerosol surface area and number) and CMAQ calculates them online. The species are then written to the [CCTM_ELMO](CMAQ_UG_ch07_model_outputs.md#ELMO) or [CCTM_AELMO](CMAQ_UG_ch07_model_outputs.md#AELMO) output files. See [Apendix F](Appendix/CMAQ_UG_appendixF_elmo_output.md) for more information about the calculation of ELMO output variables and how this relates to use of the *combine* tool. From 52f23ee6f08f4f58ab7bdc25bf50a9ce006440e2 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 12 Jun 2024 17:14:11 -0400 Subject: [PATCH 118/375] Update CMAQ_UG_ch08_analysis_tools.md --- DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md index fad848101..8f9737e17 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md @@ -41,7 +41,7 @@ NOX ,ppbV ,1000.0*(NO[1] + NO2[1]) ``` where NO and NO2 are pulled from an hourly instantaneous [CCTM_CONC](CMAQ_UG_ch07_model_outputs.md#conc) or hourly average [CCTM_ACONC](CMAQ_UG_ch07_model_outputs.md#aconc) model output file in units of ppmV. -Note that some species aggregation is already happening within the CMAQ model. The CMAQ aerosol module explicitly represents a number of individual PM2.5 species that need to be combined for comparisons to measured total PM2.5 mass. The Explicit and Lumped Model Output (ELMO) capability introduced in CMAQv5.4 presribes the calculation of aggregated aerosol species (e.g., PM1, PM2.5, and PM10), as well as diagnostic values (e.g., aerosol surface area and number) and CMAQ calculates them online. The species are then written to the [CCTM_ELMO](CMAQ_UG_ch07_model_outputs.md#ELMO) or [CCTM_AELMO](CMAQ_UG_ch07_model_outputs.md#AELMO) output files. See [Apendix F](Appendix/CMAQ_UG_appendixF_elmo_output.md) for more information about the calculation of ELMO output variables and how this relates to use of the *combine* tool. +Note that some species aggregation is already happening within the CMAQ model. The CMAQ aerosol module explicitly represents a number of individual aerosol species that need to be combined for comparisons to measured total PM2.5 mass. The Explicit and Lumped Model Output (ELMO) capability introduced in CMAQv5.4 presribes the calculation of aggregated aerosol species (e.g., PM1, PM2.5, and PM10), as well as diagnostic values (e.g., aerosol surface area and number) and CMAQ calculates them online. The species are then written to the [CCTM_ELMO](CMAQ_UG_ch07_model_outputs.md#ELMO) or [CCTM_AELMO](CMAQ_UG_ch07_model_outputs.md#AELMO) output files. See [Apendix F](Appendix/CMAQ_UG_appendixF_elmo_output.md) for more information about the calculation of ELMO output variables and how this relates to use of the *combine* tool. ## 8.3 Model-Observation Pairing for Model Evaluation Once model output has been processed using *combine*, the *sitecmp* and *sitecmp_dailyo3* utilities can be used to match air pollutant measurements with the appropriate model predicted variables. This pairing of model and observed variables is specified in the run scripts for *sitecmp* and *sitecmp_dailyo3*. In *sitecmp_dailyo3* this step is controlled by the definition of environment variables OBS_SPECIES and OZONE. See the [README.md](../../POST/sitecmp_dailyo3/README.md) and the sample run script in the [*sitecmp_dailyo3* scripts](../../POST/sitecmp_dailyo3/scripts) folder for more information on setting these environment variables. The run script for the *sitecmp* utility can be customized for many different types of chemical and meteorological quantities as described in the [README.md](../../POST/sitecmp/README.md) for sitecmp. Sample run scripts for the AQS, CSN, IMPROVE, NADP and SEARCH networks based on the 2016 CMAQ test case are provided in the [*sitecmp* scripts](../../POST/sitecmp/scripts) folder. In addition, the [README.md](../../POST/sitecmp/scripts/README.md) file within the *sitecmp* scripts folder provides the configuration options for monitoring networks. Note that there are multiple formats for CSN and SEARCH observed data files depending on the year. The README.txt file is broken into different sections to reflect the change in species names in the observation files for these two networks. (For example, elemental carbon measurements from the CSN network are labeled as “ec_niosh” in 2009 and earlier, “ec_tor” in 2010, and “88380_val” starting in 2011.) From 71e0d9181f0abff9a08d50115413f018de9dc5a7 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 12 Jun 2024 17:17:56 -0400 Subject: [PATCH 119/375] Update CMAQ_UG_ch08_analysis_tools.md --- DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md index 8f9737e17..8693bc504 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md @@ -33,7 +33,7 @@ This chapter briefly describes how to use some of the software tools supported b ## 8.2 Aggregating and Transforming Model Species Concentrations -The *combine* Fortran program, released as part of the CMAQ POST tools, can combine variables from CMAQ, emissions, or meteorology files into a new I/O API file. Model species can be aggregated or transformed into variables of interest, e.g., to change units from ppmV to ppbV or match observed quantities from a specific monitoring network. Model output files can be concatenated to create files for longer time periods (e.g., files with hourly data for individual days can be combined into a single file for an entire month). More information on the combine utility and its use can be found in this [README file.]( ../../POST/combine/README.md) +The *combine* Fortran program, released as part of the CMAQ POST tools, can combine variables from CMAQ, emissions, or meteorology files into a new I/O API file. Model species can be aggregated or transformed into variables of interest, e.g., to change units from ppmV to ppbV or match observed quantities from a specific monitoring network. Model output files can be concatenated to create files for longer time periods, e.g., files with hourly data for individual days can be combined into a single file for an entire month. More information on the combine utility and its use can be found in this [README file.]( ../../POST/combine/README.md) The combine utility relies on a chemical mechanism-specific "Species Definition" files that prescribe how CMAQ output variables should be mapped and/or combined to become comparable to different measured gas, particle, and deposition species. When you download the CMAQ code, the Species Definition files corresponding to default model output variables are automatically included under the subdirectory "CCTM/src/MECHS". Within each of the listed mechanism folders, you will find files "SpecDef_MECH_NAME.txt" (for gas and aerosol species) and "SpecDef_dep_MECH_NAME.txt" (for deposition species) that contain a long list of species definitions and corresponding documentation. For example, the calculation of NOX in ppbV is given as ``` From 4e0b41e9681db9fe0206b131f8fc6b1d05c7b641 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 12 Jun 2024 18:27:12 -0400 Subject: [PATCH 120/375] Update CMAQ_UG_ch08_analysis_tools.md --- DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md index 8693bc504..b2b9a1e3b 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md @@ -72,7 +72,11 @@ The AMET repository includes a script to set up and execute multiple post-proces The Visualization Environment for Rich Data Interpretation (VERDI) is a visual analysis tool for evaluating and plotting multivariate gridded results from meteorological and air quality models. VERDI is written in Java, so it can be run on a variety of computer operating systems; VERDI packages are currently released for Linux, Windows, and Mac. In addition to supporting the CMAQ modeling system, VERDI also currently supports analysis and visualization of model results from the regional [Weather Research and Forecasting (WRF) model](https://ncar.ucar.edu/what-we-offer/models/weather-research-and-forecasting-model-wrf), the global [Model for Prediction Across Scales (MPAS)](https://ncar.ucar.edu/what-we-offer/models/model-prediction-across-scales-mpas), the [Meteorology-Chemistry Interface Processor (MCIP)](../../PREP/mcip/README.md), and the [Comprehensive Air Quality Model with Extensions (CAMx)](http://www.camx.com). In addition, VERDI can read and overlay observational data at monitoring site locations to visually compare model results to observations, both spatially and temporally. -VERDI’s interactive graphical user interface (GUI) allows for quick examination of model results, while the command line scripting capability in VERDI can be used for more routine analysis and plot production. Supported input data formats include I/O API, netCDF, and UAM-IV from models and ASCII text, I/O API, and netCDF for observational data sets. Supported map projections include Lambert conformal conic, Mercator, Universal Transverse Mercator, and polar stereographic. Once data are loaded into VERDI, individual selected variables can be plotted or utilized as inputs to mathematical formulas which can then be plotted. Available plot types include spatial tile, areal interpolation based on shapefiles, vertical cross section, times series, time series bar, scatter, and 3-D contour plots. Plots can then be enhanced with overlays of observations from monitoring sites, wind vectors, grid lines/cell boundaries, and additional GIS layers, such as boundaries for states, counties, HUCs (hydrologic unit codes), rivers, roads, and user-defined shapefiles. Plotting of variables can be limited to specified spatial and/or temporal ranges, with minimum/maximum values for the variable for the displayed area and time automatically shown at the bottom of each plot frame. Plots can be saved as raster images (BMP, JPEG, PNG, TIFF) of a chosen pixel size, vector images (EPS), or animated GIF “movies.” Areal ESRI-compatible shapefiles and ASCII text or comma-separated-values can also be exported. Interactive analysis is aided with the ability to quickly zoom into areas of interest and to probe data values within a grid cell. To facilitate plot reproducibility, VERDI can save the session as a project file and the customization of each plot (e.g., data range, color palette, font characteristics, titles, and labels) as a plot configuration file. Plus, quick statistical analysis of the displayed data is easily accomplished by using VERDI’s built-in algorithms for minimum/maximum, mean, geometric mean, median, first and third quartiles, variance, standard deviation, coefficient of variance, range, interquartile range, sum, timesteps of minimum and maximum, hours of non-compliance, maximum 8-h mean, count, fourth max, and custom percentiles. +VERDI’s interactive graphical user interface (GUI) allows for quick examination of model results, while the command line scripting capability in VERDI can be used for more routine analysis and plot production. Supported input data formats include I/O API, netCDF, and UAM-IV from models and ASCII text, I/O API, and netCDF for observational data sets. Supported map projections include Lambert conformal conic, Mercator, Universal Transverse Mercator, and polar stereographic. + +Once data are loaded into VERDI, individual selected variables can be plotted or utilized as inputs to mathematical formulas which can then be plotted. Available plot types include spatial tile, areal interpolation based on shapefiles, vertical cross section, times series, time series bar, scatter, and 3-D contour plots. Plots can then be enhanced with overlays of observations from monitoring sites, wind vectors, grid lines/cell boundaries, and additional GIS layers, such as boundaries for states, counties, HUCs (hydrologic unit codes), rivers, roads, and user-defined shapefiles. Plotting of variables can be limited to specified spatial and/or temporal ranges, with minimum/maximum values for the variable for the displayed area and time automatically shown at the bottom of each plot frame. + +Plots can be saved as raster images (BMP, JPEG, PNG, TIFF) of a chosen pixel size, vector images (EPS), or animated GIF “movies.” Areal ESRI-compatible shapefiles and ASCII text or comma-separated-values can also be exported. Interactive analysis is aided with the ability to quickly zoom into areas of interest and to probe data values within a grid cell. To facilitate plot reproducibility, VERDI can save the session as a project file and the customization of each plot (e.g., data range, color palette, font characteristics, titles, and labels) as a plot configuration file. Plus, quick statistical analysis of the displayed data is easily accomplished by using VERDI’s built-in algorithms for minimum/maximum, mean, geometric mean, median, first and third quartiles, variance, standard deviation, coefficient of variance, range, interquartile range, sum, timesteps of minimum and maximum, hours of non-compliance, maximum 8-h mean, count, fourth max, and custom percentiles. The CMAS Center currently hosts VERDI at https://www.cmascenter.org/verdi, providing a brief description with links to download VERDI and its documentation. The main code repository for VERDI resides at https://github.com/CEMPD/VERDI where users can download the latest release, peruse the documentation, and note the latest known issues and bugs. From e319b40ee07e52196148bfb6fa192388fa2ff987 Mon Sep 17 00:00:00 2001 From: dkang2 Date: Thu, 13 Jun 2024 10:49:08 -0400 Subject: [PATCH 121/375] Update CMAQ_UG_ch06_model_configuration_options.md For lightning NO production, the alternative WWLLNs lightning data is available and the reference is added for using WWLLNs data versus NLDN data. --- .../CMAQ_UG_ch06_model_configuration_options.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index b8c30aea1..067f92d28 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -624,7 +624,7 @@ DMS and halocarbon emissions are needed for cb6r5m_ae7_aq. DMS emissions are als #### Lightning NO -In retrospective applications over the continental U.S., National Lightning Detection Network (NLDN) lightning data can be used directly to generate NO produced by lightning in CMAQ. For real-time forecasts or other applications where lightning data are not available, lightning NO is produced based on statistical relationships with the simulated convective rainfall rate (Kang et al., 2019). +In retrospective applications over the continental U.S., National Lightning Detection Network (NLDN) lightning data or the scaled World Wide Lightning Location Network (WWLLNs) lightning data (Kang et al., 2022) can be used directly to generate NO produced by lightning in CMAQ. For real-time forecasts or other applications where lightning data are not available, lightning NO is produced based on statistical relationships with the simulated convective rainfall rate (Kang et al., 2019). There are two options for including NO from lighting. Both options require setting the CTM_LTNG_NO flag to Y in the RunScript. ``` @@ -632,9 +632,10 @@ setenv CTM_LTNG_NO Y ``` -##### Option 1 - Inline NO with NLDN Data -- user uses hourly NLDN lightning strike netCDF file. +##### Option 1 - Inline NO with NLDN or WWLLNs Data -- user uses hourly NLDN or WWLLNs lightning strike netCDF file. + +Hourly NLDN lightning strike data can be purchased, and WWLLNs data is available at (https://dataverse.unc.edu/dataset.xhtml?persistentId=doi:10.15139/S3/NK3NCM (instructions and metadata) and https://cmas-wwlln-lightning.s3.amazonaws.com/index.html#cmas-wwlln-lightning/ (Data folders)). -Hourly NLDN lightning strike data can be purchased. In addition to the hourly lightning strike netCDF file, this option requires a lightning parameters netCDF file. This file contains the intercloud to cloud-to-ground flash ratios, which are the scaling factors for calculating flashes using the convective precipitation rate, land-ocean masks, and the moles of NO per flash (cloud-to-ground and intercloud). The lightning parameters file for a domain over the continental US at 12km horizontal resolution (12US1) can be downloaded from the [CMAS Data Warehouse](https://drive.google.com/drive/folders/1R8ENVSpQiv4Bt4S0LFuUZWFzr3-jPEeY). This file can be regridded to support other domains within the continental US. @@ -647,7 +648,7 @@ setenv LTNGNO INLINE setenv USE_NLDN Y ``` ``` -setenv NLDN_STRIKES /home/user/path-to-file/nldn_hourly_ltng_strikes.nc +setenv NLDN_STRIKES /home/user/path-to-file/nldn(or WWLLNs)_hourly_ltng_strikes.nc ``` ``` setenv LTNGPARMS_FILE /home/user/path-to-file/LTNG_AllParms_12US1.nc @@ -1035,6 +1036,9 @@ Jaeglé, L., Quinn, P.K., Bates, T.S., Alexander, B., & Lin, J.T. (2011). Global Jiang, W., Smyth, S., Giroux, É., Roth, H., & Yin, D. (2006). Differences between CMAQ fine mode particle and PM2.5concentrations and their impact on model performance evaluation in the lower Fraser valley. Atmos. Environ., 40, 4973–4985. +Kang, D., Hogrefe, C., Sarwar, G., East, J.D., Madden, J.M., Mathur, R., & Henderson, B.H. (2022). Assessing the Impact of Lightning NOx Emissions in CMAQ +Using Lightning Flash Data from WWLLN over the Contiguous United States. Atmosphere 2022, 13, 1248. [doi:10.3390/atmos13081248](https://doi.org/10.3390/atmos13081248). + Kang, D., Pickering, K., Allen, D., Foley, K., Wong, D., Mathur, R., & Roselle, S. (2019). Simulating lightning NOX production in CMAQv5.2: Evolution of scientific updates. Geosci. Model Dev. Discuss.,1-23. [doi:10.5194/gmd-2019-33](https://doi.org/10.5194/gmd-2019-33). Kelly, J.T., Bhave, P.V., Nolte, C.G., Shankar, U., & Foley, K.M. (2010).Simulating emission and chemical evolution of coarse sea-salt particles in the Community Multiscale Air Quality (CMAQ) model. Geosci. Model Dev., 3, 257-273. [doi: 10.5194/gmd-3-257-2010](https://doi.org/10.5194/gmd-3-257-2010). From e7fe893b670330cead3b71f9cda9de3dafd9dff4 Mon Sep 17 00:00:00 2001 From: dkang2 Date: Thu, 13 Jun 2024 10:58:15 -0400 Subject: [PATCH 122/375] Update CMAQ_UG_appendixA_model_options.md For lightning NOx production, added the alternative WWLLNs data entry besides NLDN data. --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index f7f024d31..46583cd70 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -631,7 +631,7 @@ Aerosol Diagnostics are now handled by the Explicit and Lumped Model Output modu Setting to define whether the lightning emissions calculation will be inline or off-line. This variable can be set to a gridded netCDF file of lightning NO emissions to use emissions calculated with a preprocessor outside of CCTM. Setting this variable to “inline” activates the inline emissions calculation in CCTM and requires the LTNGPARMS_FILE variable (see below) to provide parameters for generating inline lightning NO emissions. See [Chapter 6](../CMAQ_UG_ch06_model_configuration_options.md#lightning-no) for further information. - `USE_NLDN [default: False]` - Use hourly NLDN strikes file to compute inline lightning NO emissions. Activating this setting requires the NLDN_STRIKES input file. If USE_NLDN is set to N and LTNGNO set to "InLine", lightning NO emissions will be generated using parameters provided in the LTNGPARMS_FILE. + Use hourly NLDN or WWLLNs strikes data to compute inline lightning NO emissions. Activating this setting requires the NLDN_STRIKES input files (the files can be either NLDN hourly data or WWLLNs hourly data). If USE_NLDN is set to N and LTNGNO set to "InLine", lightning NO emissions will be generated using parameters provided in the LTNGPARMS_FILE. Lightning parameters netCDF file, which contains the linear regression parameters for generating lightning NO using the parameterization scheme when LTNGNO set to "InLine" and USE_NLDN set to N. In addition, it also contains the intercloud to cloud-to-ground flash ratios, scaling factors for calculating flashes using the convective precipitation rate, land-ocean masks, and the moles of NO per flash (cloud-to-ground and intercloud) which are used by both lightning production schemes (NLDN and parameterization). Ingore if LTINGNO set to an external input file. See [Chapter 6](../CMAQ_UG_ch06_model_configuration_options.md#lightning-no) for further information. - `CTM_LTNGDIAG_1` From 10545c86e681e27ade09cd719063aad7342a1a6e Mon Sep 17 00:00:00 2001 From: dkang2 Date: Thu, 13 Jun 2024 11:15:34 -0400 Subject: [PATCH 123/375] Update CMAQ_UG_ch08_analysis_tools.md: VERDI Corrected a few typos. --- DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md index b2b9a1e3b..406fc3510 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md @@ -72,9 +72,9 @@ The AMET repository includes a script to set up and execute multiple post-proces The Visualization Environment for Rich Data Interpretation (VERDI) is a visual analysis tool for evaluating and plotting multivariate gridded results from meteorological and air quality models. VERDI is written in Java, so it can be run on a variety of computer operating systems; VERDI packages are currently released for Linux, Windows, and Mac. In addition to supporting the CMAQ modeling system, VERDI also currently supports analysis and visualization of model results from the regional [Weather Research and Forecasting (WRF) model](https://ncar.ucar.edu/what-we-offer/models/weather-research-and-forecasting-model-wrf), the global [Model for Prediction Across Scales (MPAS)](https://ncar.ucar.edu/what-we-offer/models/model-prediction-across-scales-mpas), the [Meteorology-Chemistry Interface Processor (MCIP)](../../PREP/mcip/README.md), and the [Comprehensive Air Quality Model with Extensions (CAMx)](http://www.camx.com). In addition, VERDI can read and overlay observational data at monitoring site locations to visually compare model results to observations, both spatially and temporally. -VERDI’s interactive graphical user interface (GUI) allows for quick examination of model results, while the command line scripting capability in VERDI can be used for more routine analysis and plot production. Supported input data formats include I/O API, netCDF, and UAM-IV from models and ASCII text, I/O API, and netCDF for observational data sets. Supported map projections include Lambert conformal conic, Mercator, Universal Transverse Mercator, and polar stereographic. +VERDI’s interactive graphical user interface (GUI) allows for quick examination of model results, while the command line scripting capability in VERDI can be used for more routine analysis and plot production. Supported input data formats include I/O API, netCDF (both WRF-style and MPAS-style), and UAM-IV from models and ASCII text, and netCDF for observational data sets. Supported map projections include Lambert conformal conic, Mercator, Universal Transverse Mercator, and polar stereographic. -Once data are loaded into VERDI, individual selected variables can be plotted or utilized as inputs to mathematical formulas which can then be plotted. Available plot types include spatial tile, areal interpolation based on shapefiles, vertical cross section, times series, time series bar, scatter, and 3-D contour plots. Plots can then be enhanced with overlays of observations from monitoring sites, wind vectors, grid lines/cell boundaries, and additional GIS layers, such as boundaries for states, counties, HUCs (hydrologic unit codes), rivers, roads, and user-defined shapefiles. Plotting of variables can be limited to specified spatial and/or temporal ranges, with minimum/maximum values for the variable for the displayed area and time automatically shown at the bottom of each plot frame. +Once data are loaded into VERDI, individual selected variables can be plotted or utilized as inputs to mathematical formulas which can then be plotted. Available plot types include spatial tile, areal interpolation based on shapefiles, vertical cross section, time series, time series bar, scatter, and 3-D contour plots. Plots can then be enhanced with overlays of observations from monitoring sites, wind vectors, grid lines/cell boundaries, and additional GIS layers, such as boundaries for states, counties, HUCs (hydrologic unit codes), rivers, roads, and user-defined shapefiles. Plotting of variables can be limited to specified spatial and/or temporal ranges, with minimum/maximum values for the variable for the displayed area and time automatically shown at the bottom of each plot frame. Plots can be saved as raster images (BMP, JPEG, PNG, TIFF) of a chosen pixel size, vector images (EPS), or animated GIF “movies.” Areal ESRI-compatible shapefiles and ASCII text or comma-separated-values can also be exported. Interactive analysis is aided with the ability to quickly zoom into areas of interest and to probe data values within a grid cell. To facilitate plot reproducibility, VERDI can save the session as a project file and the customization of each plot (e.g., data range, color palette, font characteristics, titles, and labels) as a plot configuration file. Plus, quick statistical analysis of the displayed data is easily accomplished by using VERDI’s built-in algorithms for minimum/maximum, mean, geometric mean, median, first and third quartiles, variance, standard deviation, coefficient of variance, range, interquartile range, sum, timesteps of minimum and maximum, hours of non-compliance, maximum 8-h mean, count, fourth max, and custom percentiles. From 6c24c02b113352c220486464d09296fe59e967d0 Mon Sep 17 00:00:00 2001 From: gxsarwar Date: Thu, 13 Jun 2024 13:17:03 -0400 Subject: [PATCH 124/375] Update CMAQ_UG_ch06_model_configuration_options.md Added a sentence in 6.10.2: To examine if the newly created EBI solver is working properly, CMAQ results with the EBI solver can be compared to those obtained with the SMVGEAR or ROS3 solver for a few days. --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 067f92d28..d136cf0fa 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -756,7 +756,7 @@ To solve the photochemistry, the model uses one of three numerical methods or so set ModGas = gas/ebi_${Mechanism} ``` -If a user creates new FORTRAN modules representing the photochemical mechanism or modifies the existing modules, they must create a new EBI solver by using the create_ebi utility. Documentation on compiling and running create_ebi is available under the [UTIL/create_ebi](../../UTIL/create_ebi/README.md) folder. The remaining two solvers, SMVGEAR and ROS3, are more accurate and less prone to convergence errors. Both methods are labeled as “generalized” because they only require the mechanism’s namelist and FORTRAN modules representing the photochemical mechanism. Rosenbrock is preferred over SMVGEAR because it several times faster. To use either SMVGEAR and ROS3, the BuildScript defines ModGas as below. +If a user creates new FORTRAN modules representing the photochemical mechanism or modifies the existing modules, they must create a new EBI solver by using the create_ebi utility. Documentation on compiling and running create_ebi is available under the [UTIL/create_ebi](../../UTIL/create_ebi/README.md) folder. To examine if the newly created EBI solver is working properly, CMAQ results with the EBI solver can be compared to those obtained with the SMVGEAR or ROS3 solver for a few days. The remaining two solvers, SMVGEAR and ROS3, are more accurate and less prone to convergence errors. Both methods are labeled as “generalized” because they only require the mechanism’s namelist and FORTRAN modules representing the photochemical mechanism. Rosenbrock is preferred over SMVGEAR because it several times fasterr. To use either SMVGEAR and ROS3, the BuildScript defines ModGas as below. ``` set ModGas = gas/smvgear From 70b918b4588a0914bd66fc00a61c594bd9ba830b Mon Sep 17 00:00:00 2001 From: gxsarwar Date: Thu, 13 Jun 2024 13:27:33 -0400 Subject: [PATCH 125/375] Update CMAQ_UG_ch06_model_configuration_options.md Updated the following reference: Place et al. (2023). --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index d136cf0fa..3b6c4d811 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -822,7 +822,7 @@ The user can set it to N to exclude the heterogeneous production from the reacti The Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMM) builds on the history of the Regional Atmospheric Chemistry Mechanism, Version 2 (RACM2) and aims to couple gas- and particle-phase chemistry by treating the entire pool of atmospheric reactive organic carbon (ROC) relevant to present-day emissions. CRACMM species were developed to represent the total emissions of ROC, considering the OH reactivity, ability to form ozone and secondary organic aerosol (SOA), and other properties of individual emitted compounds. The chemistry of CRACMM, which includes autoxidation, multigenerational oxidation, and the treatment of semivolatile and intermediate volatility compounds, was built using a variety of sources including literature and other mechanisms (RACM2, MCM, GECKO, and SAPRC18/mechgen). -CRACMMv1 is available in two versions: base CRACMMv1 and CRACMMv1AMORE. The development of base CRACMMv1 is described by Pye et al. (2022) and the application of CRACMMv1 within CMAQ to the northeast U.S. in summer 2018 as well as comparison with other mechanisms is presented by Place et al. (in prep.). CRACMMv1AMORE replaces the base isoprene chemistry of CRACMMv1 (which was ported from RACM2) with a graph theory-based condensation of a detailed isoprene mechanism developed by Prof. Faye McNeill's team at Columbia University. The AMORE version is documented in work by Wiser et al. (2022). +CRACMMv1 is available in two versions: base CRACMMv1 and CRACMMv1AMORE. The development of base CRACMMv1 is described by Pye et al. (2022) and the application of CRACMMv1 within CMAQ to the northeast U.S. in summer 2018 as well as comparison with other mechanisms is presented by Place et al. (2023). CRACMMv1AMORE replaces the base isoprene chemistry of CRACMMv1 (which was ported from RACM2) with a graph theory-based condensation of a detailed isoprene mechanism developed by Prof. Faye McNeill's team at Columbia University. The AMORE version is documented in work by Wiser et al. (2022). When selected as the gas-phase mechanism, use of CRACMM1 (and CRACMM1AMORE) fully specifies CMAQ's aerosol treatment. CRACMM was designed as a multiphase mechanism and thus includes pathways to SOA and precursors to inorganic aerosol. The aero versioned by number no longer applies, and potential combustion SOA (pcSOA) is deprecated in CRACMM. Methane reaction with OH is considered and methane is set to a fixed concentration of 1.85 ppm by default, roughly mathching global conditions in the later part of the 2010s. Year or location specific [methane concentrations](https://gml.noaa.gov/ccgg/trends_ch4/) could be used (see the end of the mechanism definition file to make the update). @@ -1065,7 +1065,7 @@ Odman, M.T., & Russell, A.G. (2000). Mass conservative coupling of non-hydrostat Ovadnevaite, J., Manders, A., de Leeuw, G., Ceburnis, D., Monahan, C., Partanen, A.I., Korhonen, H., & O'Dowd, C. D. (2014). A sea spray aerosol flux parameterization encapsulating wave state. Atmos. Chem. Phys., 14, 1837-1852. [doi: 10.5194/acp-14-1837-2014](https://doi.org/10.5194/acp-14-1837-2014). -Place, B. K., Hutzell, W. T., Appel, K. W., Farrell, S., Valin, L., Murphy, B. N., Seltzer, K. M., Sarwar, G., Allen, C., Piletic, I., D'Ambro, E., Saunders, E., Simon, H., Torres-Vasquez, A., Pleim, J., Schwantes, R., Coggon, M., Xu, L., Stockwell, W. R., & Pye, H. O. T.. Initial evaluation of the CRACMMv1.0 chemical mechanism: Surface ozone predictions across the Northeast US summer 2018 in CMAQ, in preparation for Atmospheric Chemistry and Physics. +Place, B. K., Hutzell, W. T., Appel, K. W., Farrell, S., Valin, L., Murphy, B. N., Seltzer, K. M., Sarwar, G., Allen, C., Piletic, I. R., D'Ambro, E. L., Saunders, E., Simon, H., Torres-Vasquez, A., Pleim, J., Schwantes, R. H., Coggon, M. M., Xu, L., Stockwell, W. R., and Pye, H. O. T.: Sensitivity of northeastern US surface ozone predictions to the representation of atmospheric chemistry in the Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMMv1.0), Atmos. Chem. Phys., 23, 9173–9190, https://doi.org/10.5194/acp-23-9173-2023, 2023. Pleim, J., Venkatram, A., Yamartino, R. (1984). ADOM/TADAP Model development program: The dry deposition module. Ontario Ministry of the Environment, 4. From aa34270b2030839e9c89d2ba1a57de4883fea211 Mon Sep 17 00:00:00 2001 From: Bill Hutzell Date: Thu, 13 Jun 2024 14:11:29 -0400 Subject: [PATCH 126/375] Suggested change photolysis section in UG Chapter 6 --- ...MAQ_UG_ch06_model_configuration_options.md | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 84deb8347..498760599 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -784,22 +784,25 @@ or set ModPhot = phot/table ``` -The in-line method (Binkowski et al., 2007) is the preferred option because it includes feedbacks from meteorology in addition to predicted ozone and aerosol concentrations. Starting CMAQv5.5, all in-line photolysis options are toggled by the environmental variable "AEROSOL_OPTICS". The table below summarizes the in-line options: +The in-line method (Binkowski et al., 2007) is the preferred option because it includes feedbacks from meteorology in addition to predicted ozone and aerosol concentrations. Starting CMAQv5.5, the in-line include options for calculating the aerosol optical properties used to calculated photolysis frequencies. The model run-script toggles by the environmental variable "AEROSOL_OPTICS". The table below summarizes these options: -| **Environmental Variable**|**In-line Photolysis Method**|**Description**| +| **AEROSOL_OPTICS value**|**In-line Photolysis Method**|**Description**| |:--------------:|:----:|:--------:| -| setenv AEROSOL_OPTICS 1 | Tabular Mie | This option adapts a look-up table and interpolation method for aerosol optical properteis described by Fast et al. (2005). Wavelength and aerosol refractive index are the independent variables of the table. The dependent variable is coefficients from curving fitting on Mie Theory Solutions over aerosol radius for a fixed wavelength and refractive index. A bilinear interpolation estimates the fitting functions' coefficients at the aerosol refractive index during a model timestep and specified wavelength. The aforementioned look-up table is created in-line and saved to an ASCII file when NEW_START equals true or when the ASCII file is missing. The location of where this table lives can be controlled by "setenv MIE_TABLE ${SOMELOCATION}". | -| setenv AEROSOL_OPTICS 2 | MieCalc | Solution to Mie Theory for a uniformly mixed sphere. | -| setenv AEROSOL_OPTICS 3 | Fast Optics | The fastest and default option, uses case approximation of Mie Theory for a uniformly mixed sphere whose refractive index is a volume weighted average of the aerosol modal component's refractive indicies. | -| setenv AEROSOL_OPTICS 4 | Core-shell + Tabular Mie | Option where the internal structure of an aerosol is represented as a by a black carbon core surrounded by a shell with a volume-averaged refractive index. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by Tabular Mie. | -| setenv AEROSOL_OPTICS 5 | Core-shell + MieCalc | Option where the internal structure of an aerosol is represented as a by a black carbon core surrounded by a shell with a volume-averaged refractive index. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by MieCalc.| -| setenv AEROSOL_OPTICS 6 | Core-shell + Fast Optics | Option where the internal structure of an aerosol is represented as a by a black carbon core surrounded by a shell with a volume-averaged refractive index. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by Fast Optics. | - -Three ASCII files support the in-line methods. **PHOT_OPTICS** describes the optical properties of clouds, aerosols, and the earth’s surface. The **OMI** file is used to determine how much light is absorbed by ozone above the model domain. Both files are included in the released version of CMAQ. Calculating photolysis rates uses one more file, the +| 1 | Tabular Mie | Adapts a look-up table and interpolation method for aerosol optical properteis described by Fast et al. (2006). The table is created in-line and saved to an ASCII file when NEW_START equals true or when the ASCII file is missing. The model run-script controls the location of the table by the line, "setenv MIE_TABLE ${SOMELOCATION}". | +| 2 | MieCalc | Solution to Mie Scattering Theory for a uniformly mixed sphere whose refractive index is a volume weighted average of the aerosol modal component's refractive indicies (Bohren et al., 1998). | +| 3 | Fast Optics | The default option employed in Binkowski et al. (2007) uses case approximations of Mie Scattering Theory for a uniformly mixed sphere. | +| 4 | Core-shell + Tabular Mie | Option where the internal structure of an aerosol is represented as a by a black carbon core surrounded by a shell with a volume-averaged refractive index. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by Tabular Mie. | +| 5 | Core-shell + MieCalc | Option where the internal structure of an aerosol is represented as a by a black carbon core surrounded by a shell with a volume-averaged refractive index. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by MieCalc.| +| 6 | Core-shell + Fast Optics | Option where the internal structure of an aerosol is represented as a by a black carbon core surrounded by a shell with a volume-averaged refractive index. If the black carbon component of the aerosol modal volume makes up more than one billionth of the modal volume the Coreshell method is used, otherwise an aerosol mode's optical properties are determined by Fast Optics. | + +**Selecting the value of AEROSOL_OPTICS is based on several factors**. _How important is light extinction by aerosols in determining photolysis frequencies_ and _how should the model represent the internal structure of aerosols for computing optical properties of aerosol?_ Aerosol concentrations may have large effects on photolysis where they are expected to be high such as fire episodes or polluted urban areas with large emissions of elemental carbon. To compute aerosol optical properties, the model may use an internal aerosol structure assuming a sphere with carbon core surrounded by a uniformly mixed shell. AEROSOL_OPTICS then has a value set to 4 through 6 where Core-shell (Bohren at al., 1998) is used. If such scenarios lack high emissions of elemental carbon, AEROSOL_OPTICS can equal 1 or 2 for more accurately calculating light absorption and scattering by aerosols. Tabular Mie and MieCalc options assume a uniformly mixed sphere to calculate aerosol optical properties. _How accurate do the computed properties need to be?_ If predicted optical properties are going to be compared to observations with large variability or small values such as aerosol scattering coefficient, asymmetry parameter, and absorption aerosol optical depth, the AEROSOL_OPTICS value should equal 2 or 4 that use exact solutions to Mie Scattering Theory. _What is the acceptable run-time of daily simulations?_ Exact solutions of Mie Scattering Theory increase model run-time. Option 2, MieCalc, can increase run-time between 50% to 100% while Core-shell options, 4 through 6, can increase run-time between 100% to 400%. The increase is measured against the oldest and default option, the Fast Optics. Tests indicate that the newest option, Tabular Mie, has similar run-times to Fast Optics but produces results closer to MieCal. + + +Two other ASCII files support the in-line method. **PHOT_OPTICS** describes the optical properties of clouds, aerosols, and the earth’s surface. The **OMI** file is used to determine how much light is absorbed by ozone above the model domain. Both files are included in the released version of CMAQ. Calculating photolysis rates uses one more file, the **CSQY_DATA_${Mechanism}** file, that depends on the mechanism used. It contains the cross sections and quantum yields of photolysis rates used by the mechanism. The files are provided for each mechanism in a released version of CMAQ. If a user creates a mechanism using new or additional photolysis rates, they have to create a new **CSQY_DATA_${Mechanism}** file. The [inline_phot_preproc utility](../../UTIL/inline_phot_preproc/README.md) produces this file based on the Fortran modules describing the mechanism and data files describing the absorption cross-section and quantum yields described for each photolysis reaction. The CCTM RunScript sets values for each file's path through the environment variables OPTICS_DATA, OMI, and CSQY_DATA. -The other option uses look-up tables that contain photolysis rates under cloud free conditions based on a fixed meridional cross-section of atmospheric composition, temperature, density and aerosols. The values represent rates as a function of altitude, latitude and the hour angle of the sun on a specified Julian date. In model simulations, the method interpolates rates in the table for the date and corrects them to account for clouds described by the meteorology. Tables are dependent on the photochemical mechanism used. The [jproc utility](../../UTIL/jproc/README.md) creates them based on the photochemical mechanism's FORTRAN modules. The CCTM RunScript sets the value for a table's path with the environment variable XJ_DATA. +The phot/table build option uses look-up tables that contain photolysis rates under cloud free conditions based on a fixed meridional cross-section of atmospheric composition, temperature, density and aerosols. The values represent rates as a function of altitude, latitude and the hour angle of the sun on a specified Julian date. In model simulations, the method interpolates rates in the table for the date and corrects them to account for clouds described by the meteorology. Tables are dependent on the photochemical mechanism used. The [jproc utility](../../UTIL/jproc/README.md) creates them based on the photochemical mechanism's FORTRAN modules. The CCTM RunScript sets the value for a table's path with the environment variable XJ_DATA. @@ -1009,6 +1012,8 @@ Binkowski, F.S., & Roselle, S.J. (2003). Models-3 Community Multiscale Air Quali Binkowski, F.S., & Shankar, U. (1995). The regional particulate model: Part I. Model description and preliminary results. J. Geophys. Res., 100, 26 191–26 209. +C.F. Bohren, D.R. Huffman, Absorption and Scattering of Light by Small Particles (second ed.), Wiley, New York (1998), p. 530. ISBN 0-471-29340-7, ISBN 978-0-471-29340-8. + Byun, D.W., & Ching, J.K.S. (1999). Science algorithms of the EPA models-3 Community Multiscale Air Quality (CMAQ) Modeling system. U. S. Environmental Protection Agency Rep. EPA 600/R 99/030, 727 pp. Byun, D., & Schere, K.L. (2006). Review of the governing equations, computational algorithms, and other components of the Models-3 Community Multiscale Air Quality (CMAQ) modeling system. Appl. Mech. Rev., 59, 51–77. [doi:10.1115/1.212863](https://doi.org/10.1115/1.2128636). @@ -1025,8 +1030,7 @@ Donahue, N.M., et al. (2012). A two-dimensional volatility basis set – Part 2: Fahey, K.M., Carlton, A.G., Pye, H.O.T., Baek, J., Hutzell, W.T., Stanier, C.O., Baker, K.R., Appel, K.W., Jaoui, M., & Offenberg, J.H. (2017). A framework for expanding aqueous chemistry in the Community Multiscale Air Quality (CMAQ) model version 5.1. Geosci. Model Dev., 10, 1587-1605. -Fast, J. D., W. I. Gustafson Jr., R. C. Easter, R. A. Zaveri, J. C. Barnard, E. G. Chapman, G. A. Grell, and S. E. Peckham(2006), Evolution of ozone, particulates, and aerosol direct radiative forcing in the vicinity of Houston using a fully coupledmeteorology-chemistry-aerosol model,J. Geophys. Res.,111, D21305, doi:10.1029/2005JD006721 - +Fast, J. D., W. I. Gustafson Jr., R. C. Easter, R. A. Zaveri, J. C. Barnard, E. G. Chapman, G. A. Grell, and S. E. Peckham (2006), Evolution of ozone, particulates, and aerosol direct radiative forcing in the vicinity of Houston using a fully coupledmeteorology-chemistry-aerosol model,J. Geophys. Res.,111, D21305, doi:10.1029/2005JD006721 Gantt, B., Kelly, J.T., & Bash, J.O. (2015). Updating sea spray aerosol emissions in the Community Multiscale Air Quality (CMAQ) model version 5.0.2. Geosci. Model Dev., 8, 3733-3746. [doi:10.5194/gmd-8-3733-201](https://doi.org/10.5194/gmd-8-3733-201). From ba3ee7482e873a3284c28a21dbb3c95fd7acc6e1 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Thu, 13 Jun 2024 14:20:37 -0400 Subject: [PATCH 127/375] Update CMAQ_UG_ch08_analysis_tools.md added link to AMET-ready obs files. Removed link to eval script guide in the AMET repo since it is currently out of date (i.e., based on APMDIAG rather than AELMO files) --- DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md index 406fc3510..1d2bddb16 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md @@ -63,10 +63,13 @@ The Atmospheric Model Evaluation Tool (AMET) was developed to aid in the evaluat There are separate modules in AMET for evaluating meteorological and air quality model output. This separation is necessary because both the observed and predicted meteorological and air quality data are quite different, utilizing different file formats for both the observed and model data. In addition, the observed meteorological and air quality data are often obtained from networks that use different sampling protocols, which can make pairing meteorological and air quality data together difficult. One advantage of separate meteorological and air quality modules in AMET is that the modules can be installed individually, allowing a user to reduce installation time and complexity if only meteorological or air quality analysis is required. -A more detailed description of AMET can be found at https://www.epa.gov/cmaq/atmospheric-model-evaluation-tool, including a flow diagram of the AMET system and example output plots from the tool. The AMET github repository resides at https://github.com/USEPA/AMET. The repository includes the latest version of AMET, along with a complete description of the tool, a comprehensive User's Guide, an Installation Guide, and a Quick Start Guide. Finally, additional information regarding AMET (including how to download AMET-ready observation data files) can be found on the CMAS Center website: https://www.cmascenter.org/amet/. +A more detailed description of AMET can be found at https://www.epa.gov/cmaq/atmospheric-model-evaluation-tool, including a flow diagram of the AMET system and example output plots from the tool. The AMET github repository resides at https://github.com/USEPA/AMET. The repository includes the latest version of AMET, along with a complete description of the tool, a User's Guide, an Installation Guide, and a Quick Start Guide. -The AMET repository includes a script to set up and execute multiple post-processing steps from a single file, including running *combine*, *sitecmp*, *sitecmp_dailyo3*, and "batch" AMET evaluation plots. After installing AMET, users can find this script under scripts_db/aqExample/aqProject_pre_and_post.csh. Documenation for configuring this main evaluation script are provided in the AMET docs folder: [AMET aqProject Pre- and Post- Analysis Script Guide v1.5](https://github.com/USEPA/AMET/blob/1.5/docs/AMET_aqProject_Pre_and_Post_Analysis_Script_Guide_v15.md) +#### Observation data for model evaluation +AMET requires observation data to be in a specific format. AMET-ready observation data files going back to 2000 are available on the CMAS Data Warehouse Google Drive: +[North America Air Quaility Observation Files](https://drive.google.com/drive/folders/1QUlUXnHXvXz9qwePi5APzzHkiH5GWACw?usp=drive_link) +The network data available include: AERONET, AMON, AQS, CASTNET, CSN, FLUXNET, IMPROVE, NADP, NAPS, NOAA ESRL, SEARCH, and TOAR. ## 8.5 Visualization Environment for Rich Data Interpretation (VERDI) From 5ce7851b2b24a052d1da27377aa58ac5f192ca34 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Thu, 13 Jun 2024 14:51:00 -0400 Subject: [PATCH 128/375] Update README.md update link to AMET-ready obs files --- POST/sitecmp_dailyo3/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/POST/sitecmp_dailyo3/README.md b/POST/sitecmp_dailyo3/README.md index 05b5ddae9..1ac3418c2 100644 --- a/POST/sitecmp_dailyo3/README.md +++ b/POST/sitecmp_dailyo3/README.md @@ -103,5 +103,5 @@ Edit the sample run script (run.sitecmp_dailyo3), then run: ``` Check the log file to ensure complete and correct execution without errors. -Sample run scripts has been provided for matching model data to ozone observations from AQS and CASTNET. The formatted observation data files needed for running the sitecmp_dailyo3 utility are available for 2000 through 2014 from the CMAS Center Data Clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": https://www.cmascenter.org/download/data.cfm. +Sample run scripts has been provided for matching model data to ozone observations from AQS and CASTNET. The formatted observation data files needed for running the sitecmp_dailyo3 utility are available starting in 2000 from the CMAS Data Warehouse Google Drive: [North America Air Quaility Observation Files](https://drive.google.com/drive/folders/1QUlUXnHXvXz9qwePi5APzzHkiH5GWACw?usp=drive_link) From 1a35164328108db4e4b813e0586045cee0f76ec2 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Thu, 13 Jun 2024 14:51:42 -0400 Subject: [PATCH 129/375] Update README.md update link to AMET-ready input files --- POST/sitecmp/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/POST/sitecmp/README.md b/POST/sitecmp/README.md index 91d893c3d..771becd4a 100644 --- a/POST/sitecmp/README.md +++ b/POST/sitecmp/README.md @@ -173,6 +173,6 @@ Edit the sample run script (run_sitecmp_AQS_Hourly.csh*), then run: Check the log file to ensure complete and correct execution without errors. -*A sample run scripts has been provided for matching model data to hourly observations from AQS. The README.txt file in the scripts folder shows the changes need to adapt this run script to one of the following networks: AERONET, AMON, CASTNET (hourly and weekly data), CSN, IMPROVE, NADP, and SEARCH (hourly and daily data). The formatted observation data files needed for running the sitecmp utility are available for 2000 through 2014 from the CMAS Center Data Clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": https://www.cmascenter.org/download/data.cfm. +*A sample run scripts has been provided for matching model data to hourly observations from AQS. The README.txt file in the scripts folder shows the changes need to adapt this run script to one of the following networks: AERONET, AMON, CASTNET (hourly and weekly data), CSN, IMPROVE, NADP, and SEARCH (hourly and daily data). The formatted observation data files needed for running the sitecmp utility are available starting in 2000 from the CMAS Data Warehouse Google Drive: [North America Air Quaility Observation Files](https://drive.google.com/drive/folders/1QUlUXnHXvXz9qwePi5APzzHkiH5GWACw?usp=drive_link) Note that the run scripts rely on model output that has already been processed using the combine utility. The user should first run combine on ACONC and DEP output files to create the necessary COMBINE_ACONC and COMBINE_DEP files that contain the model species that can be matched to available observations. See the sample run scripts for the combine utility for examples on creating COMBINE_ACONC and COMBINE_DEP. From f0cf911b7e193b49f7463fc3e6cae4cbb8349249 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Thu, 13 Jun 2024 14:53:48 -0400 Subject: [PATCH 130/375] Update run_sitecmp_dailyo3_AQS.csh Update link to AMET-ready obs data --- POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_AQS.csh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_AQS.csh b/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_AQS.csh index 476dd447d..762790994 100755 --- a/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_AQS.csh +++ b/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_AQS.csh @@ -121,10 +121,10 @@ # setenv SITE_FILE /work/MOD3EVAL/aq_obs/routine/site_metadata_files/AQS_full_site_list.csv #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp_dailyo3 are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. +#> AQS obs data in the format needed for sitecmp_dailyo3 are +#> available starting in 2000 from the CMAS Data Warehouse Google Drive: +#> https://drive.google.com/drive/folders/1QUlUXnHXvXz9qwePi5APzzHkiH5GWACw?usp=drive_link +#> Hourly AQS observations are located in AMET_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE AQS_hourly_data_2016.csv #> One EPA system: # setenv IN_TABLE /work/MOD3EVAL/aq_obs/routine/2016/AQS_hourly_data_2016.csv From fc8042bb898c7be463cf12ab5623e50120c7f9e1 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Thu, 13 Jun 2024 14:54:21 -0400 Subject: [PATCH 131/375] Update run_sitecmp_dailyo3_CASTNET.csh updated link to AMET-ready obs files --- .../scripts/run_sitecmp_dailyo3_CASTNET.csh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_CASTNET.csh b/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_CASTNET.csh index 066a2d878..6ae88ee31 100755 --- a/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_CASTNET.csh +++ b/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_CASTNET.csh @@ -123,10 +123,10 @@ # setenv SITE_FILE /work/MOD3EVAL/aq_obs/routine/site_metadata_files/CASTNET_full_site_list.csv #> input table containing site-id, time-period, and data fields -#> CASTNET obs data in the format needed for sitecmp_dailyo3 are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly CASTNET observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. +#> CASTNET obs data in the format needed for sitecmp_dailyo3 are +#> available starting in 2000 from the CMAS Data Warehouse Google Drive: +#> https://drive.google.com/drive/folders/1QUlUXnHXvXz9qwePi5APzzHkiH5GWACw?usp=drive_link +#> Hourly CASTNET observations are located in AMET_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE CASTNET_hourly_data_2016.csv #> One EPA system: # setenv IN_TABLE /work/MOD3EVAL/aq_obs/routine/2016/CASTNET_hourly_data_2016.csv From a4d16ff1eee0909e01aace3c36a86efa4c50ddd0 Mon Sep 17 00:00:00 2001 From: Bill Hutzell Date: Thu, 13 Jun 2024 16:01:42 -0400 Subject: [PATCH 132/375] corrections made based on Fahim's comments --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 498760599..60688cf5a 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -784,7 +784,7 @@ or set ModPhot = phot/table ``` -The in-line method (Binkowski et al., 2007) is the preferred option because it includes feedbacks from meteorology in addition to predicted ozone and aerosol concentrations. Starting CMAQv5.5, the in-line include options for calculating the aerosol optical properties used to calculated photolysis frequencies. The model run-script toggles by the environmental variable "AEROSOL_OPTICS". The table below summarizes these options: +The in-line method (Binkowski et al., 2007) is the preferred option because it includes feedbacks from meteorology in addition to predicted ozone and aerosol concentrations. Starting CMAQv5.5, the in-line methods includes options for calculating the aerosol optical properties used to calculated photolysis frequencies. The model run-script toggles by the environmental variable "AEROSOL_OPTICS". The table below summarizes these options: | **AEROSOL_OPTICS value**|**In-line Photolysis Method**|**Description**| |:--------------:|:----:|:--------:| @@ -798,7 +798,7 @@ The in-line method (Binkowski et al., 2007) is the preferred option because it i **Selecting the value of AEROSOL_OPTICS is based on several factors**. _How important is light extinction by aerosols in determining photolysis frequencies_ and _how should the model represent the internal structure of aerosols for computing optical properties of aerosol?_ Aerosol concentrations may have large effects on photolysis where they are expected to be high such as fire episodes or polluted urban areas with large emissions of elemental carbon. To compute aerosol optical properties, the model may use an internal aerosol structure assuming a sphere with carbon core surrounded by a uniformly mixed shell. AEROSOL_OPTICS then has a value set to 4 through 6 where Core-shell (Bohren at al., 1998) is used. If such scenarios lack high emissions of elemental carbon, AEROSOL_OPTICS can equal 1 or 2 for more accurately calculating light absorption and scattering by aerosols. Tabular Mie and MieCalc options assume a uniformly mixed sphere to calculate aerosol optical properties. _How accurate do the computed properties need to be?_ If predicted optical properties are going to be compared to observations with large variability or small values such as aerosol scattering coefficient, asymmetry parameter, and absorption aerosol optical depth, the AEROSOL_OPTICS value should equal 2 or 4 that use exact solutions to Mie Scattering Theory. _What is the acceptable run-time of daily simulations?_ Exact solutions of Mie Scattering Theory increase model run-time. Option 2, MieCalc, can increase run-time between 50% to 100% while Core-shell options, 4 through 6, can increase run-time between 100% to 400%. The increase is measured against the oldest and default option, the Fast Optics. Tests indicate that the newest option, Tabular Mie, has similar run-times to Fast Optics but produces results closer to MieCal. -Two other ASCII files support the in-line method. **PHOT_OPTICS** describes the optical properties of clouds, aerosols, and the earth’s surface. The **OMI** file is used to determine how much light is absorbed by ozone above the model domain. Both files are included in the released version of CMAQ. Calculating photolysis rates uses one more file, the +Three other ASCII files support the in-line method. **PHOT_OPTICS** describes the optical properties of clouds, aerosols, and the earth’s surface. The **OMI** file is used to determine how much light is absorbed by ozone above the model domain. Both files are included in the released version of CMAQ. Calculating photolysis rates uses one more file, the **CSQY_DATA_${Mechanism}** file, that depends on the mechanism used. It contains the cross sections and quantum yields of photolysis rates used by the mechanism. The files are provided for each mechanism in a released version of CMAQ. If a user creates a mechanism using new or additional photolysis rates, they have to create a new **CSQY_DATA_${Mechanism}** file. The [inline_phot_preproc utility](../../UTIL/inline_phot_preproc/README.md) produces this file based on the Fortran modules describing the mechanism and data files describing the absorption cross-section and quantum yields described for each photolysis reaction. The CCTM RunScript sets values for each file's path through the environment variables OPTICS_DATA, OMI, and CSQY_DATA. From 26e624fbd4474186584a120b6ce1022d1d632f5d Mon Sep 17 00:00:00 2001 From: Ben_Murphy Date: Thu, 13 Jun 2024 16:22:31 -0400 Subject: [PATCH 133/375] Update CMAQ_UG_tutorial_emissions.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md index 15363294f..c7a88577d 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md @@ -220,7 +220,7 @@ The user may apply a scale factor to a specific area of the domain by identifyin ! Label | |Surrogate| Species |Mode |Factor| | 'KENTUCKY' , 'All' ,'All' ,'All' ,'All' ,1.50 ,'UNIT','m', ``` -The label for "KENTUCKY" should be linked to a specific gridded variable mask (of real numbers) using the "Desid_RegionDef" section on the [DESID Control Namelist](../../../CCTM/src/emis/emis/CMAQ_Control_DESID.nml). +The label for "KENTUCKY" should be linked to a specific gridded variable mask (of real numbers) using the "Desid_RegionDef" section on the [DESID Control Namelist](../../../CCTM/src/emis/emis/CMAQ_Control_DESID.nml#L137). ``` &Desid_RegionDef RGN_NML = @@ -238,6 +238,7 @@ Two example mask files are available on the CMAS Data Warehouse: US states grid * [Link to grid mask files on CMAS Data Warehouse Google Drive](https://drive.google.com/drive/folders/1x9mJUbKjJaMDFawgy2PUbETwEUopAQDl) * [Link to metadata for the grid mask files is posted on the CMAS Center Dataverse site](https://doi.org/10.15139/S3/XDYYB9) +Custom mask files may also be made using the [shp2cmaq](../../../PREP/shp2cmaq/README.md) tool, which provides instructions for obtaining geospatial data via shape files and converting them to CMAQ gridded input files. One may also populate a CMAQ gridded input file with arbitrary geometric shapes (e.g. squares, diamonds, or other polygons) using the IOAPI library of tools and any common coding language (e.g. Fortran, R, or Python) ### 12. Define families of streams, regions, or chemical species From 119944368d3c0c2719c342259cc0b7646e4f0639 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Thu, 13 Jun 2024 17:33:07 -0400 Subject: [PATCH 134/375] Update README.md updated information about AMET-ready obs files and meta data files --- POST/sitecmp/scripts/README.md | 155 ++++----------------------------- 1 file changed, 19 insertions(+), 136 deletions(-) diff --git a/POST/sitecmp/scripts/README.md b/POST/sitecmp/scripts/README.md index 435694b59..d1dfe6f29 100644 --- a/POST/sitecmp/scripts/README.md +++ b/POST/sitecmp/scripts/README.md @@ -1,6 +1,8 @@ # Species List for sitecmp: Matching model and observed variables -The environment variables that control how CMAQ and observed values are matched using sitecmp will change depending on the observation network. Sitecmp-ready observation files are available from the CMAS Center Data clearinghouse under the heading ["2000-2014 North American Air Quality Observation Data"](https://www.cmascenter.org/download/data.cfm). The variable names in these observation files can change over time. This README file provides the environment variables needed for the species list in the sitecmp run script for different networks and years. +The environment variables that control how CMAQ and observed values are matched using sitecmp will change depending on the observation network. Sitecmp requires observation data to be in a specific format. Sitecmp-ready observation data files going back to 2000 are available on the CMAS Data Warehouse Google Drive: [North America Air Quaility Observation Files](https://drive.google.com/drive/folders/1QUlUXnHXvXz9qwePi5APzzHkiH5GWACw?usp=drive_link). Data files are provided in AMET_OBSDATA_YYYY.tar.gz for year YYYY. These should be used when setting environment variable IN_TABLE. A site meta data file (SITE_FILE) is also needed for sitecmp. These can be found within the .tar.gz files under the *site_metadata_files* folder. + +The variable names in these observation files can change over time. This README file provides the environment variables needed for the species list in the sitecmp run script for different networks and years. This species information was generated using the [Atmospheric Model Evaluation Tool (AMET)](https://github.com/USEPA/AMET) which is also available github.com/USEPA. For further information on the mapping of observation species from each network to CMAQ model species, please see the section **AQ Species List Input File** of the [AMETv1.4 User's Guide](https://github.com/USEPA/AMET/blob/1.4b/docs/AMET_Users_Guide_v14.md). @@ -36,18 +38,10 @@ Note that the configuration options below are just for the species definition pa #>> End Species List <<# -#> SITE FILE containing site-id, longitude, latitude, time zone (tab delimited) -#> This file can be downloaded from the CMAS Center Data clearinghouse -#> under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> AQS site file is located in AMET12_SITE_FILES.tar.gz +#> file containing meta data (e.g., site-id, longitude, latitude, time zone) about each site. setenv SITE_FILE AERONET_sites.txt #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE AERONET_hourly_data_2011.csv # ===================================================================== @@ -76,18 +70,10 @@ Note that the configuration options below are just for the species definition pa #>> End Species List <<# -#> SITE FILE containing site-id, longitude, latitude, time zone (tab delimited) -#> This file can be downloaded from the CMAS Center Data clearinghouse -#> under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> AQS site file is located in AMET12_SITE_FILES.tar.gz +#> file containing site-id, longitude, latitude, time zone (tab delimited) setenv SITE_FILE AMON_sites.txt #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE AMON_data.csv # ===================================================================== @@ -121,18 +107,10 @@ Note that the configuration options below are just for the species definition pa # setenv GAS_7 "wind_direction,deg,WDIR10,deg,WDIR10" #>> End Species List <<# -#> SITE FILE containing site-id, longitude, latitude, time zone (tab delimited) -#> This file can be downloaded from the CMAS Center Data clearinghouse -#> under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> AQS site file is located in AMET12_SITE_FILES.tar.gz +#> file containing site-id, longitude, latitude, time zone (tab delimited) setenv SITE_FILE CASTNET_sites.txt #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE CASTNET_hourly_data_2011.csv # ===================================================================== @@ -186,18 +164,10 @@ Note that the configuration options below are just for the species definition pa #>> End Species List <<# -#> SITE FILE containing site-id, longitude, latitude, time zone (tab delimited) -#> This file can be downloaded from the CMAS Center Data clearinghouse -#> under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> AQS site file is located in AMET12_SITE_FILES.tar.gz +#> file containing site-id, longitude, latitude, time zone (tab delimited) setenv SITE_FILE CASTNET_sites.txt #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE CASTNET_weekly_data_2011.csv # ===================================================================== @@ -274,18 +244,10 @@ Note that the configuration options below are just for the species definition pa #>> End Species List <<# -#> SITE FILE containing site-id, longitude, latitude, time zone (tab delimited) -#> This file can be downloaded from the CMAS Center Data clearinghouse -#> under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> AQS site file is located in AMET12_SITE_FILES.tar.gz +#> file containing site-id, longitude, latitude, time zone (tab delimited) setenv SITE_FILE AQS_sites.txt #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE CSN_hourly_data_2009.csv ``` @@ -357,18 +319,10 @@ Note that the configuration options below are just for the species definition pa #>> End Species List <<# -#> SITE FILE containing site-id, longitude, latitude, time zone (tab delimited) -#> This file can be downloaded from the CMAS Center Data clearinghouse -#> under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> AQS site file is located in AMET12_SITE_FILES.tar.gz +#> file containing site-id, longitude, latitude, time zone (tab delimited) setenv SITE_FILE AQS_sites.txt #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE CSN_hourly_data_2010.csv ``` @@ -440,18 +394,10 @@ Note that the configuration options below are just for the species definition pa #>> End Species List <<# -#> SITE FILE containing site-id, longitude, latitude, time zone (tab delimited) -#> This file can be downloaded from the CMAS Center Data clearinghouse -#> under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> AQS site file is located in AMET12_SITE_FILES.tar.gz +#> file containing site-id, longitude, latitude, time zone (tab delimited) setenv SITE_FILE AQS_sites.txt #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE CSN_data_2011_VIEWS.csv ``` @@ -523,18 +469,10 @@ Note that the configuration options below are just for the species definition pa #>> End Species List <<# -#> SITE FILE containing site-id, longitude, latitude, time zone (tab delimited) -#> This file can be downloaded from the CMAS Center Data clearinghouse -#> under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> AQS site file is located in AMET12_SITE_FILES.tar.gz +#> file containing site-id, longitude, latitude, time zone (tab delimited) setenv SITE_FILE AQS_sites.txt #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE CSN_data_2011_VIEWS.csv # ===================================================================== @@ -601,18 +539,10 @@ Note that the configuration options below are just for the species definition pa #>> End Species List <<# -#> SITE FILE containing site-id, longitude, latitude, time zone (tab delimited) -#> This file can be downloaded from the CMAS Center Data clearinghouse -#> under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> AQS site file is located in AMET12_SITE_FILES.tar.gz +#> file containing site-id, longitude, latitude, time zone (tab delimited) setenv SITE_FILE IMPROVE_sites.txt #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE IMPROVE_data_2011.csv # ===================================================================== @@ -682,18 +612,10 @@ Note that the configuration options below are just for the species definition pa #>> End Species List <<# -#> SITE FILE containing site-id, longitude, latitude, time zone (tab delimited) -#> This file can be downloaded from the CMAS Center Data clearinghouse -#> under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> AQS site file is located in AMET12_SITE_FILES.tar.gz +#> site containing site-id, longitude, latitude, time zone (tab delimited) setenv SITE_FILE NADP_sites.txt #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE NADP_data_2011.csv @@ -742,18 +664,11 @@ Note that the configuration options below are just for the species definition pa setenv AERO_12 "sr,w/m2,SOL_RAD,watts/m2,Solar_Rad" #>> End Species List <<# -#> SITE FILE containing site-id, longitude, latitude, time zone (tab delimited) -#> This file can be downloaded from the CMAS Center Data clearinghouse -#> under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> AQS site file is located in AMET12_SITE_FILES.tar.gz + +#> file containing site-id, longitude, latitude, time zone (tab delimited) setenv SITE_FILE SEARCH_sites.txt #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE SEARCH_hourly_data_2004.csv ``` @@ -799,18 +714,10 @@ Note that the configuration options below are just for the species definition pa #>> End Species List <<# -#> SITE FILE containing site-id, longitude, latitude, time zone (tab delimited) -#> This file can be downloaded from the CMAS Center Data clearinghouse -#> under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> AQS site file is located in AMET12_SITE_FILES.tar.gz +#> file containing site-id, longitude, latitude, time zone (tab delimited) setenv SITE_FILE SEARCH_sites.txt #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE SEARCH_hourly_data_2005.csv ``` @@ -880,10 +787,6 @@ Note that the configuration options below are just for the species definition pa setenv SITE_FILE SEARCH_sites.txt #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE SEARCH_hourly_data_2011.csv ``` @@ -932,18 +835,10 @@ Note that the configuration options below are just for the species definition pa #>> End Species List <<# -#> SITE FILE containing site-id, longitude, latitude, time zone (tab delimited) -#> This file can be downloaded from the CMAS Center Data clearinghouse -#> under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> AQS site file is located in AMET12_SITE_FILES.tar.gz +#> site file containing site-id, longitude, latitude, time zone (tab delimited) setenv SITE_FILE SEARCH_sites.txt #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE SEARCH_hourly_data_2013.csv @@ -989,11 +884,7 @@ Note that the configuration options below are just for the species definition pa #>> End Species List <<# -#> SITE FILE containing site-id, longitude, latitude, time zone (tab delimited) -#> This file can be downloaded from the CMAS Center Data clearinghouse -#> under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> AQS site file is located in AMET12_SITE_FILES.tar.gz +#> file containing site-id, longitude, latitude, time zone (tab delimited) setenv SITE_FILE SEARCH_sites.txt #> input table containing site-id, time-period, and data fields @@ -1051,18 +942,10 @@ Note that the configuration options below are just for the species definition pa #>> End Species List <<# -#> SITE FILE containing site-id, longitude, latitude, time zone (tab delimited) -#> This file can be downloaded from the CMAS Center Data clearinghouse -#> under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> AQS site file is located in AMET12_SITE_FILES.tar.gz +#> file containing site-id, longitude, latitude, time zone (tab delimited) setenv SITE_FILE SEARCH_sites.txt #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE SEARCH_daily_data_2011.csv From da577d5f0d39dcc79f2398cc9a839b2494ad1152 Mon Sep 17 00:00:00 2001 From: fisidi <47453034+fisidi@users.noreply.github.com> Date: Thu, 13 Jun 2024 18:23:41 -0400 Subject: [PATCH 135/375] Update CMAQ_UG_ch06_model_configuration_options.md Minor grammatical edits to phot section. --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 60688cf5a..79b92fdfb 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -784,7 +784,7 @@ or set ModPhot = phot/table ``` -The in-line method (Binkowski et al., 2007) is the preferred option because it includes feedbacks from meteorology in addition to predicted ozone and aerosol concentrations. Starting CMAQv5.5, the in-line methods includes options for calculating the aerosol optical properties used to calculated photolysis frequencies. The model run-script toggles by the environmental variable "AEROSOL_OPTICS". The table below summarizes these options: +The in-line method (Binkowski et al., 2007) is the preferred option because it includes feedbacks from meteorology in addition to predicted ozone and aerosol concentrations. Starting CMAQv5.5, the in-line methods includes options for calculating the aerosol optical properties used to calculated photolysis frequencies. The model RunScript toggles the environmental variable "AEROSOL_OPTICS". The table below summarizes these options: | **AEROSOL_OPTICS value**|**In-line Photolysis Method**|**Description**| |:--------------:|:----:|:--------:| From 3f744b672e9bb5c470fa00c3a54759427b64f35d Mon Sep 17 00:00:00 2001 From: Ben_Murphy Date: Fri, 14 Jun 2024 10:10:12 -0400 Subject: [PATCH 136/375] Update CMAQ_UG_appendixB_emissions_control.md --- .../CMAQ_UG_appendixB_emissions_control.md | 43 +++++++++++++------ 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md index e9274a8c0..b8f6a36e6 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md @@ -251,14 +251,7 @@ Gridded masks are used to apply rules to specific areas of the domain. For examp ``` will scale emissions of all species from all streams by +50% but only in grid cells in the state of Kentucky. One or more I/O API formatted input files containing geographic region definitions are required to take advantage of this option. Such files should contain a separate variable for each spatial region of interest. Each variable is a gridded field of real numbers from 0.0 to 1.0, with 0.0 outside of the region of interest and 1.0 completely inside the region. Region border grid cells should have the geographic fraction attributed to the region (for example, a grid cell that 35% in Kentucky and 65% in Tennessee would have have the number 0.35 for the variable representing the Kentucky mask. -#### B.3.4.2 Defining Regions -These mask files are read by CMAQ through environmental variables, which are identified in the RunScript. For example: - -``` -setenv US_STATES /home/${CMAQ_HOME}/CCTM/scripts/us_states.nc -``` - -If variables from multiple mask files are used, each of these mask files needs to be defined in the RunScript. +#### B.3.4.2 Defining Regions The Desid_RegionDef section of the DESID Control Namelist maps each "Region Label" to specific variables on specific files. Here is the Desid_RegionDef section in the default namelist: ``` @@ -267,8 +260,6 @@ The Desid_RegionDef section of the DESID Control Namelist maps each "Region Labe ! | Region Label | File_Label | Variable on File ! 'EVERYWHERE' ,'N/A' ,'N/A', 'WATER' ,'CMAQ_MASKS' ,'OPEN', - 'ALL' ,'CMAQ_MASKS' ,'ALL', - 'ALL' ,'ISAM_REGIONS' ,'ALL', / ``` As indicated, the Region Label "EVERYWHERE" is active by default and returns a mask that operates uniformly across the entire domain. @@ -278,16 +269,40 @@ The "Variable on File" field identifies the variable on the input file that stor Examples are provided for two cases. The variable Desid_Max_Reg in the Desid_RegionDefVars section must be greater than the number of regions that will be defined. -In the first case, a region with label "WATER" is defined and referenced to the variable "OPEN" (which is short for *open water*) in the file 'CMAQ_MASKS' which needs to be defined in the RunScript. -Using this "WATER" region will apply a scaling rule only for open water grid cells and fractionally along coastlines. -The second example demonstrates a shortcut for files with many variables that are all desired (e.g. states of the Unites States). -Rather than listing out all variables on the file and explicitly linking them to "Region Labels", the user can invoke the "ALL" keyword and all variables will be read and stored with "Region Labels" that equal the names of the variables on the file. +In this case, a region with label "WATER" is defined and referenced to the variable "OPEN" (which is short for *open water*) in the file 'CMAQ_MASKS' which needs to be defined in the RunScript. Using this "WATER" region will apply a scaling rule only for open water grid cells and fractionally along coastlines. + +As an additional example, let's assume file us_states.nc is defined in the runscript as US_STATES as follows: +``` +setenv US_STATES /home/${CMAQ_HOME}/CCTM/scripts/us_states.nc +``` +and contains two variables called NC and SC, representing the fraction of each grid cell that is located in North Carolina and South Carolina, respectively." These two variables in the file can be assigned to region labels NC and SC using either of the following methods: +``` +&Desid_RegionDef + Desid_Reg_nml = + ! | Region Label | File_Label | Variable on File + ! 'EVERYWHERE' ,'N/A' ,'N/A', + 'NC' ,'US_STATES' ,'NC', + 'SC' ,'US_STATES' ,'SC', +/ +``` + +Alternatively, all the variables on the US_STATES file may be enabled at once: +``` +&Desid_RegionDef + Desid_Reg_nml = + ! | Region Label | File_Label | Variable on File + ! 'EVERYWHERE' ,'N/A' ,'N/A', + 'ALL' ,'US_STATES' ,'ALL', +/ +``` +Rather than listing out all variables on the file and explicitly linking them to "Region Labels", the user can invoke the "ALL" keyword in both the 'Region Label' and 'Variable on File' fields and all variables will be read and stored. These gridded mask files are read by CMAQ through environmental variables, which are identified in the RunScript. If variables from multiple mask files are used, each of these mask files needs to be defined in the RunScript. Two example mask files are available on the CMAS Data Warehouse: US states grid mask file and NOAA climate regions grid mask file. These mask files can be used with the 12US1 modeling grid domain (grid origin x = -2556000 m, y = -1728000 m; N columns = 459, N rows = 299). * [Link to grid mask files on CMAS Data Warehouse Google Drive](https://drive.google.com/drive/folders/1x9mJUbKjJaMDFawgy2PUbETwEUopAQDl) * [Link to metadata for the grid mask files is posted on the CMAS Center Dataverse site](https://doi.org/10.15139/S3/XDYYB9) +Custom mask files may also be made using the [shp2cmaq](../../../PREP/shp2cmaq/README.md) tool, which provides instructions for obtaining geospatial data via shape files and converting them to CMAQ gridded input files. One may also populate a CMAQ gridded input file with arbitrary geometric shapes (e.g. squares, diamonds, or other polygons) using the IOAPI library of tools and any common coding language (e.g. Fortran, R, or Python). #### B.3.4.3 Region Families Users can define families of regions to reduce the number emission rules needed to operate on a group of regions. From c6afacfdd7209dc5ecf8f759e3c30630510fa160 Mon Sep 17 00:00:00 2001 From: Ben_Murphy Date: Fri, 14 Jun 2024 10:11:00 -0400 Subject: [PATCH 137/375] Update CMAQ_UG_appendixB_emissions_control.md --- .../Appendix/CMAQ_UG_appendixB_emissions_control.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md index b8f6a36e6..4d080b41c 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md @@ -295,9 +295,9 @@ Alternatively, all the variables on the US_STATES file may be enabled at once: 'ALL' ,'US_STATES' ,'ALL', / ``` -Rather than listing out all variables on the file and explicitly linking them to "Region Labels", the user can invoke the "ALL" keyword in both the 'Region Label' and 'Variable on File' fields and all variables will be read and stored. These gridded mask files are read by CMAQ through environmental variables, which are identified in the RunScript. If variables from multiple mask files are used, each of these mask files needs to be defined in the RunScript. +Rather than listing out all variables on the file and explicitly linking them to "Region Labels", the user can invoke the "ALL" keyword in both the 'Region Label' and 'Variable on File' fields and all variables will be read and stored. Once either of these definitions are included in the &Desid_RegionDef section, region labels NC and SC can be used in emission scaling instructions as in the Kentucky example above. -Two example mask files are available on the CMAS Data Warehouse: US states grid mask file and NOAA climate regions grid mask file. These mask files can be used with the 12US1 modeling grid domain (grid origin x = -2556000 m, y = -1728000 m; N columns = 459, N rows = 299). +These gridded mask files are read by CMAQ through environmental variables, which are identified in the RunScript. If variables from multiple mask files are used, each of these mask files needs to be defined in the RunScript. Two example mask files are available on the CMAS Data Warehouse: US states grid mask file and NOAA climate regions grid mask file. These mask files can be used with the 12US1 modeling grid domain (grid origin x = -2556000 m, y = -1728000 m; N columns = 459, N rows = 299). * [Link to grid mask files on CMAS Data Warehouse Google Drive](https://drive.google.com/drive/folders/1x9mJUbKjJaMDFawgy2PUbETwEUopAQDl) * [Link to metadata for the grid mask files is posted on the CMAS Center Dataverse site](https://doi.org/10.15139/S3/XDYYB9) From 29f93a6c5555a12cf0c0a741700a9c326dddd344 Mon Sep 17 00:00:00 2001 From: Ben_Murphy Date: Fri, 14 Jun 2024 10:22:26 -0400 Subject: [PATCH 138/375] Update CMAQ_UG_ch06_model_configuration_options.md --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index fd160f315..cf310cf0e 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -656,7 +656,7 @@ setenv NLDN_STRIKES /home/user/path-to-file/nldn(or WWLLNs)_hourly_ltng_strikes. setenv LTNGPARMS_FILE /home/user/path-to-file/LTNG_AllParms_12US1.nc ``` -##### Option 2 - Online NO without NLDN Data -- lightning NO is calculated within CCTM based on statistical relationships with the simulated convective rainfall rate. +##### Option 2 - Inline NO without NLDN Data -- lightning NO is calculated within CCTM based on statistical relationships with the simulated convective rainfall rate. This option also requires a lightning parameters netCDF file which contains the linear regression parameters for generating lightning NO. The lightning parameters file for the continental US at 12km horizontal resolution can be downloaded from the [CMAS Data Warehouse](https://drive.google.com/drive/folders/1R8ENVSpQiv4Bt4S0LFuUZWFzr3-jPEeY). This file can be regridded to support other domains within the continental US. From cd1cd0b5e82d4cfb1197a12f004378826a08edce Mon Sep 17 00:00:00 2001 From: fisidi <47453034+fisidi@users.noreply.github.com> Date: Fri, 14 Jun 2024 10:47:16 -0400 Subject: [PATCH 139/375] Update CMAQ_UG_ch06_model_configuration_options.md Add Bill's suggestion to PR. --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 619b0fd8c..ddd631ca2 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -790,7 +790,7 @@ or set ModPhot = phot/table ``` -The in-line method (Binkowski et al., 2007) is the preferred option because it includes feedbacks from meteorology in addition to predicted ozone and aerosol concentrations. Starting CMAQv5.5, the in-line methods includes options for calculating the aerosol optical properties used to calculated photolysis frequencies. The model RunScript toggles the environmental variable "AEROSOL_OPTICS". The table below summarizes these options: +The in-line method (Binkowski et al., 2007) is the preferred option because it includes feedbacks from meteorology in addition to predicted ozone and aerosol concentrations. Starting CMAQv5.5, the in-line methods includes options for calculating the aerosol optical properties used to calculated photolysis frequencies. The model RunScript toggles between the options using the environmental variable "AEROSOL_OPTICS". The table below summarizes these options: | **AEROSOL_OPTICS value**|**In-line Photolysis Method**|**Description**| |:--------------:|:----:|:--------:| From 33f8ca3f0715c94852c7b3384f19a0d34511a355 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 17 Jun 2024 21:37:28 -0400 Subject: [PATCH 140/375] Update run_sitecmp_AQS_Daily.csh Update header to v5.5.X and add update information on obs data files. --- POST/sitecmp/scripts/run_sitecmp_AQS_Daily.csh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/POST/sitecmp/scripts/run_sitecmp_AQS_Daily.csh b/POST/sitecmp/scripts/run_sitecmp_AQS_Daily.csh index 9c2440902..c6d5a699d 100755 --- a/POST/sitecmp/scripts/run_sitecmp_AQS_Daily.csh +++ b/POST/sitecmp/scripts/run_sitecmp_AQS_Daily.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ===================== SITECMP_v5.4.X Run Script ===================== +# ===================== SITECMP_v5.5.X Run Script ===================== # Usage: run.sitecmp.csh >&! sitecmp.log & # # To report problems or request help with this script/program: @@ -159,16 +159,16 @@ #> stat_id, lon, and lat (case insensitive) #> The column headings for the optional variables need to be #> gmt_offset, state, county, and elevation (case insensitive) -#> This file can be downloaded from -#> https://github.com/USEPA/AMET/tree/master/obs/AQ/site_metadata_files +#> See the README.md file in this folder for the information on +#> where to download this file. setenv SITE_FILE AQS_full_site_list.csv #> On EPA system: # setenv SITE_FILE /work/MOD3EVAL/aq_obs/routine/site_metadata_files/AQS_full_site_list.csv #> input table containing site-id, time-period, and data fields #> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2017 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm +#> See the README.md file in this folder for the information on +#> where to download this file. #> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE AQS_daily_data_2016.csv #> One EPA system: From 307b3c0b6ba34738c8a9239e769b65f6c0823ccc Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 17 Jun 2024 21:38:38 -0400 Subject: [PATCH 141/375] Update run_sitecmp_AQS_Hourly.csh Update header to v5.5.X and add update information on obs data files. --- POST/sitecmp/scripts/run_sitecmp_AQS_Hourly.csh | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/POST/sitecmp/scripts/run_sitecmp_AQS_Hourly.csh b/POST/sitecmp/scripts/run_sitecmp_AQS_Hourly.csh index 98ee0cf15..261dedb19 100755 --- a/POST/sitecmp/scripts/run_sitecmp_AQS_Hourly.csh +++ b/POST/sitecmp/scripts/run_sitecmp_AQS_Hourly.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ===================== SITECMP_v5.4.X Run Script ===================== +# ===================== SITECMP_v5.5.X Run Script ===================== # Usage: run.sitecmp.csh >&! sitecmp.log & # # To report problems or request help with this script/program: @@ -139,17 +139,16 @@ #> stat_id, lon, and lat (case insensitive) #> The column headings for the optional variables need to be #> gmt_offset, state, county, and elevation (case insensitive) -#> This file can be downloaded from -#> https://github.com/USEPA/AMET/tree/master/obs/AQ/site_metadata_files +#> See the README.md file in this folder for the information on +#> where to download this file. setenv SITE_FILE AQS_full_site_list.csv #> On EPA system: # setenv SITE_FILE /work/MOD3EVAL/aq_obs/routine/site_metadata_files/AQS_full_site_list.csv #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2017 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. +#> AQS obs data in the format needed for sitecmp are available. +#> See the README.md file in this folder for the information on +#> where to download this file. setenv IN_TABLE AQS_hourly_data_2016.csv #> One EPA system: # setenv IN_TABLE /work/MOD3EVAL/aq_obs/routine/2016/AQS_hourly_data_2016.csv From f21531b186ca73e64448a5827d0705ab307b676e Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 17 Jun 2024 21:40:20 -0400 Subject: [PATCH 142/375] Update run_sitecmp_CSN.csh Update header to v5.5.X and add update information on obs data files. --- POST/sitecmp/scripts/run_sitecmp_CSN.csh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/POST/sitecmp/scripts/run_sitecmp_CSN.csh b/POST/sitecmp/scripts/run_sitecmp_CSN.csh index 525bb8eba..9dd635eb7 100755 --- a/POST/sitecmp/scripts/run_sitecmp_CSN.csh +++ b/POST/sitecmp/scripts/run_sitecmp_CSN.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ===================== SITECMP_v5.4.X Run Script ===================== +# ===================== SITECMP_v5.5.X Run Script ===================== # Usage: run.sitecmp.csh >&! sitecmp.log & # # To report problems or request help with this script/program: @@ -152,17 +152,17 @@ #> stat_id, lon, and lat (case insensitive) #> The column headings for the optional variables need to be #> gmt_offset, state, county, and elevation (case insensitive) -#> This file can be downloaded from -#> https://github.com/USEPA/AMET/tree/master/obs/AQ/site_metadata_files +#> See the README.md file in this folder for the information on +#> where to download this file. setenv SITE_FILE AQS_full_site_list.csv #> On EPA system: # setenv SITE_FILE /work/MOD3EVAL/aq_obs/routine/site_metadata_files/AQS_full_site_list.csv #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. +#> AQS obs data in the format needed for sitecmp are available. +#> See the README.md file in this folder for the information on +#> where to download this file. +#> Hourly AQS observations are located in AMET_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE AQS_CSN_data_2016.csv #> One EPA system: # setenv IN_TABLE /work/MOD3EVAL/aq_obs/routine/2016/AQS_CSN_data_2016.csv From 6b12bdd038220fa27c15d5873252b5a894671348 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 17 Jun 2024 21:40:54 -0400 Subject: [PATCH 143/375] Update run_sitecmp_CSN.csh --- POST/sitecmp/scripts/run_sitecmp_CSN.csh | 1 - 1 file changed, 1 deletion(-) diff --git a/POST/sitecmp/scripts/run_sitecmp_CSN.csh b/POST/sitecmp/scripts/run_sitecmp_CSN.csh index 9dd635eb7..ab5273dd5 100755 --- a/POST/sitecmp/scripts/run_sitecmp_CSN.csh +++ b/POST/sitecmp/scripts/run_sitecmp_CSN.csh @@ -162,7 +162,6 @@ #> AQS obs data in the format needed for sitecmp are available. #> See the README.md file in this folder for the information on #> where to download this file. -#> Hourly AQS observations are located in AMET_OBSDATA_YYYY.tar.gz for year YYYY. setenv IN_TABLE AQS_CSN_data_2016.csv #> One EPA system: # setenv IN_TABLE /work/MOD3EVAL/aq_obs/routine/2016/AQS_CSN_data_2016.csv From 57f979be6fed54ee78e152d0e5e9d196cc6b1e97 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 17 Jun 2024 21:41:48 -0400 Subject: [PATCH 144/375] Update run_sitecmp_IMPROVE.csh --- POST/sitecmp/scripts/run_sitecmp_IMPROVE.csh | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/POST/sitecmp/scripts/run_sitecmp_IMPROVE.csh b/POST/sitecmp/scripts/run_sitecmp_IMPROVE.csh index 44fa788fe..0249488c4 100755 --- a/POST/sitecmp/scripts/run_sitecmp_IMPROVE.csh +++ b/POST/sitecmp/scripts/run_sitecmp_IMPROVE.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ===================== SITECMP_v5.4.X Run Script ===================== +# ===================== SITECMP_v5.5.X Run Script ===================== # Usage: run.sitecmp.csh >&! sitecmp.log & # # To report problems or request help with this script/program: @@ -154,18 +154,17 @@ #> stat_id, lon, and lat (case insensitive) #> The column headings for the optional variables need to be #> gmt_offset, state, county, and elevation (case insensitive) -#> This file can be downloaded from -#> https://github.com/USEPA/AMET/tree/master/obs/AQ/site_metadata_files +#> See the README.md file in this folder for the information on +#> where to download this file. setenv SITE_FILE IMPROVE_full_site_list.csv #> On EPA system: # setenv SITE_FILE /work/MOD3EVAL/aq_obs/routine/site_metadata_files/IMPROVE_full_site_list.csv #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. +#> AQS obs data in the format needed for sitecmp are available online. +#> See the README.md file in this folder for the information on +#> where to download this file. setenv IN_TABLE IMPROVE_data_2016.csv #> One EPA system: # setenv IN_TABLE /work/MOD3EVAL/aq_obs/routine/2016/IMPROVE_data_2016.csv From 88384b7cb32e2226982b8707d3f83ab8ee7360a7 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 17 Jun 2024 21:42:15 -0400 Subject: [PATCH 145/375] Update run_sitecmp_CSN.csh --- POST/sitecmp/scripts/run_sitecmp_CSN.csh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/POST/sitecmp/scripts/run_sitecmp_CSN.csh b/POST/sitecmp/scripts/run_sitecmp_CSN.csh index ab5273dd5..1b667bed2 100755 --- a/POST/sitecmp/scripts/run_sitecmp_CSN.csh +++ b/POST/sitecmp/scripts/run_sitecmp_CSN.csh @@ -159,7 +159,7 @@ # setenv SITE_FILE /work/MOD3EVAL/aq_obs/routine/site_metadata_files/AQS_full_site_list.csv #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available. +#> AQS obs data in the format needed for sitecmp are available online. #> See the README.md file in this folder for the information on #> where to download this file. setenv IN_TABLE AQS_CSN_data_2016.csv From 00da5d78cfe4295d98b8181355ebacd7bb2c54ed Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 17 Jun 2024 21:42:34 -0400 Subject: [PATCH 146/375] Update run_sitecmp_AQS_Hourly.csh --- POST/sitecmp/scripts/run_sitecmp_AQS_Hourly.csh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/POST/sitecmp/scripts/run_sitecmp_AQS_Hourly.csh b/POST/sitecmp/scripts/run_sitecmp_AQS_Hourly.csh index 261dedb19..76840fc54 100755 --- a/POST/sitecmp/scripts/run_sitecmp_AQS_Hourly.csh +++ b/POST/sitecmp/scripts/run_sitecmp_AQS_Hourly.csh @@ -146,7 +146,7 @@ # setenv SITE_FILE /work/MOD3EVAL/aq_obs/routine/site_metadata_files/AQS_full_site_list.csv #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available. +#> AQS obs data in the format needed for sitecmp are available online. #> See the README.md file in this folder for the information on #> where to download this file. setenv IN_TABLE AQS_hourly_data_2016.csv From 6338ef3965ceda439741d5642261e982dddaefa9 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 17 Jun 2024 21:42:56 -0400 Subject: [PATCH 147/375] Update run_sitecmp_AQS_Daily.csh --- POST/sitecmp/scripts/run_sitecmp_AQS_Daily.csh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/POST/sitecmp/scripts/run_sitecmp_AQS_Daily.csh b/POST/sitecmp/scripts/run_sitecmp_AQS_Daily.csh index c6d5a699d..2055f2f6f 100755 --- a/POST/sitecmp/scripts/run_sitecmp_AQS_Daily.csh +++ b/POST/sitecmp/scripts/run_sitecmp_AQS_Daily.csh @@ -166,7 +166,7 @@ # setenv SITE_FILE /work/MOD3EVAL/aq_obs/routine/site_metadata_files/AQS_full_site_list.csv #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available +#> AQS obs data in the format needed for sitecmp are available online. #> See the README.md file in this folder for the information on #> where to download this file. #> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. From 13bbe070639e4764c6a3d5381b015327344d3238 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 17 Jun 2024 21:43:52 -0400 Subject: [PATCH 148/375] Update run_sitecmp_NADP.csh Update header to v5.5.X and add update information on obs data files. --- POST/sitecmp/scripts/run_sitecmp_NADP.csh | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/POST/sitecmp/scripts/run_sitecmp_NADP.csh b/POST/sitecmp/scripts/run_sitecmp_NADP.csh index cc441a96b..80de61841 100755 --- a/POST/sitecmp/scripts/run_sitecmp_NADP.csh +++ b/POST/sitecmp/scripts/run_sitecmp_NADP.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ===================== SITECMP_v5.4.X Run Script =================== +# ===================== SITECMP_v5.5.X Run Script =================== # Usage: run.sitecmp.csh >&! sitecmp.log & # # To report problems or request help with this script/program: @@ -155,17 +155,16 @@ #> stat_id, lon, and lat (case insensitive) #> The column headings for the optional variables need to be #> gmt_offset, state, county, and elevation (case insensitive) -#> This file can be downloaded from -#> https://github.com/USEPA/AMET/tree/master/obs/AQ/site_metadata_files +#> See the README.md file in this folder for the information on +#> where to download this file. setenv SITE_FILE NADP_full_site_list.csv #> On EPA system: # setenv SITE_FILE /work/MOD3EVAL/aq_obs/routine/site_metadata_files/NADP_full_site_list.csv #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. +#> AQS obs data in the format needed for sitecmp are available online. +#> See the README.md file in this folder for the information on +#> where to download this file. setenv IN_TABLE NADP_data_2016.csv #> One EPA system: # setenv IN_TABLE /work/MOD3EVAL/aq_obs/routine/2016/NADP_data_2016.csv From f6d2d430858b0477bbec8cd31721667d915c4b9c Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 17 Jun 2024 21:44:35 -0400 Subject: [PATCH 149/375] Update run_sitecmp_SEARCH_Hourly.csh --- POST/sitecmp/scripts/run_sitecmp_SEARCH_Hourly.csh | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/POST/sitecmp/scripts/run_sitecmp_SEARCH_Hourly.csh b/POST/sitecmp/scripts/run_sitecmp_SEARCH_Hourly.csh index 468f5a575..6ca3ca9bc 100755 --- a/POST/sitecmp/scripts/run_sitecmp_SEARCH_Hourly.csh +++ b/POST/sitecmp/scripts/run_sitecmp_SEARCH_Hourly.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ===================== SITECMP_v5.4.X Run Script ================== +# ===================== SITECMP_v5.5.X Run Script ================== # Usage: run.sitecmp.csh >&! sitecmp.log & # # To report problems or request help with this script/program: @@ -135,18 +135,17 @@ #> stat_id, lon, and lat (case insensitive) #> The column headings for the optional variables need to be #> gmt_offset, state, county, and elevation (case insensitive) -#> This file can be downloaded from -#> https://github.com/USEPA/AMET/tree/master/obs/AQ/site_metadata_files +#> See the README.md file in this folder for the information on +#> where to download this file. setenv SITE_FILE SEARCH_full_site_list.csv #> On EPA system: # setenv SITE_FILE /work/MOD3EVAL/aq_obs/routine/site_metadata_files/SEARCH_full_site_list.csv #> input table containing site-id, time-period, and data fields -#> AQS obs data in the format needed for sitecmp are available -#> from the CMAS Center Data clearinghouse under the heading "2000-2014 North American Air Quality Observation Data": -#> https://www.cmascenter.org/download/data.cfm -#> Hourly AQS observations are located in AMET12_OBSDATA_YYYY.tar.gz for year YYYY. +#> AQS obs data in the format needed for sitecmp are available online. +#> See the README.md file in this folder for the information on +#> where to download this file. setenv IN_TABLE SEARCH_hourly_data_2016.csv #> One EPA system: # setenv IN_TABLE /work/MOD3EVAL/aq_obs/routine/2016/SEARCH_hourly_data_2016.csv From f39acb457fd7f12cf5b89993a4148a8a1fad399c Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Tue, 25 Jun 2024 10:44:29 -0400 Subject: [PATCH 150/375] Update CMAQ_UG_ch08_analysis_tools.md --- DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md index 1d2bddb16..4d0a10c48 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md @@ -33,9 +33,9 @@ This chapter briefly describes how to use some of the software tools supported b ## 8.2 Aggregating and Transforming Model Species Concentrations -The *combine* Fortran program, released as part of the CMAQ POST tools, can combine variables from CMAQ, emissions, or meteorology files into a new I/O API file. Model species can be aggregated or transformed into variables of interest, e.g., to change units from ppmV to ppbV or match observed quantities from a specific monitoring network. Model output files can be concatenated to create files for longer time periods, e.g., files with hourly data for individual days can be combined into a single file for an entire month. More information on the combine utility and its use can be found in this [README file.]( ../../POST/combine/README.md) +The *combine* Fortran program, released as part of the CMAQ POST tools, can combine variables from CMAQ, emissions, or meteorology files into a new I/O API file. Model species can be aggregated or transformed into variables of interest, e.g., to change units from ppmV to ppbV or match observed quantities from a specific monitoring network. Model output files can be concatenated to create files for longer time periods, e.g., files with hourly data for individual days can be combined into a single file for an entire month. More information on the *combine* utility and its use can be found in this [README file.]( ../../POST/combine/README.md) -The combine utility relies on a chemical mechanism-specific "Species Definition" files that prescribe how CMAQ output variables should be mapped and/or combined to become comparable to different measured gas, particle, and deposition species. When you download the CMAQ code, the Species Definition files corresponding to default model output variables are automatically included under the subdirectory "CCTM/src/MECHS". Within each of the listed mechanism folders, you will find files "SpecDef_MECH_NAME.txt" (for gas and aerosol species) and "SpecDef_dep_MECH_NAME.txt" (for deposition species) that contain a long list of species definitions and corresponding documentation. For example, the calculation of NOX in ppbV is given as +The *combine* utility relies on a chemical mechanism-specific "Species Definition" files that prescribe how CMAQ output variables should be mapped and/or combined to become comparable to different measured gas, particle, and deposition species. When you download the CMAQ code, the Species Definition files corresponding to default model output variables are automatically included under the subdirectory "CCTM/src/MECHS". Within each of the listed mechanism folders, you will find files "SpecDef_MECH_NAME.txt" (for gas and aerosol species) and "SpecDef_dep_MECH_NAME.txt" (for deposition species) that contain a long list of species definitions and corresponding documentation. For example, the calculation of NOX in ppbV is given as ``` NOX ,ppbV ,1000.0*(NO[1] + NO2[1]) ``` From a7bcabaa5baeeb2facc8acc5abb49c6556170994 Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Mon, 22 Jul 2024 16:44:37 -0400 Subject: [PATCH 151/375] Update CMAQ_UG_tutorial_DDM3D.md need to update path to the benchmark data on s3 bucket after it is uploaded --- .../Tutorials/CMAQ_UG_tutorial_DDM3D.md | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md index d0205c0b2..3c8fb0809 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md @@ -2,7 +2,7 @@ ### Procedure to build and run the CMAQ-DDM3D model using gnu compiler: ### -### Step 1: Download and run the CMAQv5.4 benchmark case (without DDM3D) to confirm that your model run is consistent with the provided benchmark output. +### Step 1: Download and run the CMAQv5.5 benchmark case (without DDM3D) to confirm that your model run is consistent with the provided benchmark output. - [CMAQ Benchmark Tutorial](CMAQ_UG_tutorial_benchmark.md) If you encounter any errors, try running the model in debug mode and refer to the CMAS User Forum to determine if any issues have been reported. @@ -14,7 +14,7 @@ https://forum.cmascenter.org/ Note: This benchmark is intended to demonstrate how to build and run CMAQ-DDM-3D with the provided input files: -The following control file is provided in the CCTM/scripts directory when you obtain the CMAQv5.4 code from github (step 5 below): +The following control file is provided in the CCTM/scripts directory when you obtain the CMAQv5.5 code from github (step 5 below): ``` sensinput.2018_12NE3.dat @@ -65,7 +65,7 @@ In the top level of CMAQ_REPO, the bldit_project.csh script will automatically r Edit bldit_project.csh, to modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: ``` -set CMAQ_HOME = [your_install_path]/CMAQ_v5.4 +set CMAQ_HOME = [your_install_path]/CMAQ_v5.5 ``` Now execute the script. @@ -77,7 +77,7 @@ Now execute the script. Change directories to the CMAQ_HOME directory ``` -cd [your_install_path]/CMAQ_v5.4 +cd [your_install_path]/CMAQ_v5.5 ``` @@ -106,7 +106,7 @@ set DDM3D_CCTM #> uncomment to compile CCTM with DD3D act Change directories to the build directory ``` -cd BLD_CCTM_v54_DDM3D_gcc +cd BLD_CCTM_v55_DDM3D_gcc ``` edit the Control_DESID namelist file @@ -128,7 +128,7 @@ Add the Regions to the &Desid_RegionDef section of the control DESID namelist. ### Step 10: Install the CMAQ-DDM-3D reference input and output benchmark data -Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. +Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S that uses the CRACMM2 mechanism and the STAGE dry deposition scheme. - Use the gdrive command to download the dataset. - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions @@ -150,8 +150,8 @@ The input files for the CMAQv5.4 DDM-3D benchmark case are the same as the bench ### Step 11: Edit the CMAQ-DDM3D runscript ``` -cp run_cctm_Bench_2018_12NE3.csh run_cctm_Bench_2018_12NE3_DDM3D.csh -gedit run_cctm_Bench_2018_12NE3_DDM3D.csh +cp run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_DDM3D.csh +gedit run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_DDM3D.csh ``` Set General Parameters for Configuring the Simulation @@ -172,29 +172,29 @@ Turn on DDM3D and uncomment SEN_INPUT file Run or Submit the script to the batch queueing system ``` -./run_cctm_Bench_2018_12NE3_DDM3D.csh +./run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_DDM3D.csh ``` OR (If using SLRUM) ``` -sbatch run_cctm_Bench_2018_12NE3_DDM3D.csh +sbatch run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_DDM3D.csh ``` ### Step 12: Verify that the run was successful - look for the output directory ``` - cd ../../data/2018_12NE3_BENCH/output_CCTM_v54_DDM3D_gcc_Bench_2018_12NE3_2day + cd ../../data/2018_12NE3_BENCH/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cracmm2 ``` If the run was successful you will see the following output ``` - tail ./LOGS/CTM_LOG_000.v54_DDM3D_gcc_Bench_2018_12NE3_2day_20180702 + tail ./LOGS/CTM_LOG_000.v55_DDM3D_gcc_Bench_2018_12NE3_cracmm2_20180702 ``` |>--- PROGRAM COMPLETED SUCCESSFULLY ---<| -### Step 13: Compare output with the 2 day benchmark outputs provided on the google drive +### Step 13: Compare output with the 2 day benchmark outputs provided on the CMAS Center AWS Open Data Program https://drive.google.com/drive/u/1/folders/ @@ -202,8 +202,8 @@ sbatch run_cctm_Bench_2018_12NE3_DDM3D.csh Note, the following DDM-3D output files are generated in addition to the standard CMAQ output files. ``` -CCTM_SENDDEP_v54_DDM3D_gcc_Bench_2018_12NE3_2day_20180702.nc -CCTM_SENWDEP_v54_DDM3D_gcc_Bench_2018_12NE3_2day_20180702.nc -CCTM_SENGRID_v54_DDM3D_gcc_Bench_2018_12NE3_2day_20180702.nc +CCTM_SENDDEP_v55_DDM3D_gcc_Bench_2018_12NE3_cracmm2_20180702.nc +CCTM_SENWDEP_v55_DDM3D_gcc_Bench_2018_12NE3_cracmm2_20180702.nc +CCTM_SENGRID_v55_DDM3D_gcc_Bench_2018_12NE3_cracmm2_20180702.nc ``` From 766aa2796cf4d48fe60ae9508cae72ef559b9d85 Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Tue, 23 Jul 2024 11:46:40 -0400 Subject: [PATCH 152/375] Update CMAQ_UG_tutorial_DDM3D.md --- .../Tutorials/CMAQ_UG_tutorial_DDM3D.md | 53 +++++++++++++++++-- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md index 3c8fb0809..85808c560 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md @@ -20,16 +20,39 @@ The following control file is provided in the CCTM/scripts directory when you o sensinput.2018_12NE3.dat ``` +The above file contains the following sensitivity definition block: + +``` +PPA + EMIS + PT_EGU + SPECIES + SO2 + REGION + PA + +GNJ + EMIS + GRIDDED_EMIS + SPECIES + NO2, NO + REGION + NJ + +END +``` + The following gridmask file is provided with the benchmark inputs in the 2018_12NE3_BENCH/2018_12NE3 directory (see step 10 below) ``` GRIDMASK_STATES_12NE3.nc ``` -The instructions require the user to edit the DESID emissions control namelist file in the BLD directory (see step 9 below). +The instructions require the user to edit the DESID emissions control namelist file and the DESID chemical control namelist file in the BLD directory. If you want to use emission scaling (independently from ISAM or DDM3D) you will also need to edit these files. ``` CMAQ_Control_DESID.nml +CMAQ_Control_DESID_${MECH}.nml ``` @@ -126,7 +149,24 @@ Add the Regions to the &Desid_RegionDef section of the control DESID namelist. 'NJ' ,'CMAQ_MASKS' , 'NJ', ``` -### Step 10: Install the CMAQ-DDM-3D reference input and output benchmark data +### Step 10: Example of emissions scaling (Reduce the PT_EGU emissions in PA by 25%) (Optional step) + +edit the DESID chemical control namelist file, note please specify the mechanism or define the MECH environment variable. + +``` +gedit CMAQ_Control_DESID_${MECH}.nml +``` + +Add the following line at the bottom of the the namelist file (before the /) + +``` + ! PT_EGU Emissions Scaling reduce PT_EGU emissions in Pennsylvania by 25%. Note, to reduce the emissions by 25% we use DESID to multiply what had been 100% emissions by .75, so that the resulting emissions is reduced by 25%. + 'PA' , 'PT_EGU' ,'All' ,'All' ,'All' ,.75 ,'UNIT','o', + +``` + + +### Step 11: Install the CMAQ-DDM-3D reference input and output benchmark data Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S that uses the CRACMM2 mechanism and the STAGE dry deposition scheme. @@ -147,7 +187,7 @@ tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz The input files for the CMAQv5.4 DDM-3D benchmark case are the same as the benchmark inputs for the base model. Output DDM files associated with the sample DDM control file sensinput.2018_12NE3.dat provided in this release package are included in the benchmark outputs for the base model. -### Step 11: Edit the CMAQ-DDM3D runscript +### Step 12: Edit the CMAQ-DDM3D runscript ``` cp run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_DDM3D.csh @@ -181,7 +221,7 @@ OR (If using SLRUM) sbatch run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_DDM3D.csh ``` -### Step 12: Verify that the run was successful +### Step 13: Verify that the run was successful - look for the output directory ``` @@ -194,7 +234,7 @@ sbatch run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_DDM3D.csh ``` |>--- PROGRAM COMPLETED SUCCESSFULLY ---<| -### Step 13: Compare output with the 2 day benchmark outputs provided on the CMAS Center AWS Open Data Program +### Step 14: Compare output with the 2 day benchmark outputs provided on the CMAS Center AWS Open Data Program https://drive.google.com/drive/u/1/folders/ @@ -207,3 +247,6 @@ CCTM_SENWDEP_v55_DDM3D_gcc_Bench_2018_12NE3_cracmm2_20180702.nc CCTM_SENGRID_v55_DDM3D_gcc_Bench_2018_12NE3_cracmm2_20180702.nc ``` +### Step 15: Compare sensitivities + +First order sensitivities should not be larger than bulk, second order should not be larger than first order. From 727760ef276b16eb100a8e551b0ddcc1cddaf58a Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Tue, 23 Jul 2024 11:52:32 -0400 Subject: [PATCH 153/375] Update CMAQ_UG_tutorial_ISAM.md --- .../Tutorials/CMAQ_UG_tutorial_ISAM.md | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 67bc14d4c..79efcb7e5 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -2,7 +2,7 @@ ### Procedure to build and run the CMAQ-ISAM model using gnu compiler: ### -### Step 1: Download and run the CMAQv5.4 benchmark case (without ISAM) to confirm that your model run is consistent with the provided benchmark output. +### Step 1: Download and run the CMAQv5.5 benchmark case (without ISAM) to confirm that your model run is consistent with the provided benchmark output. - [CMAQ Benchmark Tutorial](CMAQ_UG_tutorial_benchmark.md) If you encounter any errors, try running the model in debug mode and refer to the CMAS User Forum to determine if any issues have been reported. @@ -14,7 +14,7 @@ https://forum.cmascenter.org/ Note: This benchmark is intended to demonstrate how to build and run CMAQ-ISAM with the provided input files: -The following isam control file is provided in the CCTM/scripts directory when you obtain the CMAQv5.4 code from github (step 5 below): +The following isam control file is provided in the CCTM/scripts directory when you obtain the CMAQv5.5 code from github (step 5 below): ``` isam_control.txt @@ -26,10 +26,11 @@ The following gridmask file is provided with the benchmark inputs in the 2018_12 GRIDMASK_STATES_12NE3.nc ``` -The instructions require the user to edit the DESID emissions control namelist file in the BLD directory (see step 9 below). +The instructions require the user to edit the DESID emissions control namelist file and the DESID chemical control namelist file in the BLD directory. If you want to use emission scaling (independently from ISAM or DDM3D) you will also need to edit these files. (see step 9 below). ``` CMAQ_Control_DESID.nml +CMAQ_Control_DESID_${MECH}.nml ``` @@ -65,7 +66,7 @@ In the top level of CMAQ_REPO, the bldit_project.csh script will automatically r Edit bldit_project.csh, to modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: ``` -set CMAQ_HOME = [your_install_path]/CMAQ_v5.4 +set CMAQ_HOME = [your_install_path]/CMAQ_v5.5 ``` Now execute the script. @@ -77,7 +78,7 @@ Now execute the script. Change directories to the CMAQ_HOME directory ``` -cd [your_install_path]/CMAQ_v5.4 +cd [your_install_path]/CMAQ_v5.5 ``` @@ -107,7 +108,7 @@ set ISAM_CCTM #> uncomment to compile CCTM with ISAM act Change directories to the build directory ``` -cd BLD_CCTM_v54_ISAM_gcc +cd BLD_CCTM_v55_ISAM_gcc ``` edit the DESID emissions namelist file @@ -127,9 +128,26 @@ Uncomment the line that contains ISAM_REGIONS as the File Label ! 'WATER' ,'CMAQ_MASKS' ,'OPEN', ! 'ALL' ,'CMAQ_MASKS' ,'ALL', ! 'ALL' ,'ISAM_REGIONS','ALL', +/ ``` -### Step 10: Install the CMAQ-ISAM reference input and output benchmark data +### Step 10: Example of emissions scaling (Reduce the PT_EGU emissions in PA by 25%) (Optional step) + +edit the DESID chemical control namelist file, note please specify the mechanism or define the MECH environment variable. + +``` +gedit CMAQ_Control_DESID_${MECH}.nml +``` + +Add the following line at the bottom of the the namelist file (before the /) + +``` + ! PT_EGU Emissions Scaling reduce PT_EGU emissions in NY by 25%. Note, to reduce the emissions by 25% we use DESID to multiply what had been 100% emissions by .75, so that the resulting emissions is reduced by 25%. + 'NY' , 'PT_EGU' ,'All' ,'All' ,'All' ,.75 ,'UNIT','o', + +``` + +### Step 11: Install the CMAQ-ISAM reference input and output benchmark data Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. @@ -150,7 +168,7 @@ tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz The input files for the CMAQv5.4 ISAM benchmark case are the same as the benchmark inputs for the base model. Output source apportionment files associated with the sample isam_control.txt provided in this release package are included in the benchmark outputs for the base model. -### Step 11: Edit the CMAQ-ISAM runscript +### Step 12: Edit the CMAQ-ISAM runscript ``` cp run_cctm_Bench_2018_12NE3.csh run_cctm_Bench_2018_12NE3.ISAM.csh @@ -184,7 +202,7 @@ OR (If using SLRUM) sbatch run_cctm_Bench_2018_12NE3.ISAM.csh ``` -### Step 12: Verify that the run was successful +### Step 13: Verify that the run was successful - look for the output directory ``` @@ -197,7 +215,7 @@ sbatch run_cctm_Bench_2018_12NE3.ISAM.csh ``` |>--- PROGRAM COMPLETED SUCCESSFULLY ---<| -### Step 13: Compare output with the 2 day benchmark outputs provided on the google drive +### Step 14: Compare output with the 2 day benchmark outputs provided on the google drive The following ISAM output files are generated in addition to the standard CMAQ output files. From 969518f3739664ec45292c0aaaa70607053744f9 Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Tue, 23 Jul 2024 12:15:59 -0400 Subject: [PATCH 154/375] Update CMAQ_UG_tutorial_ISAM.md --- .../Tutorials/CMAQ_UG_tutorial_ISAM.md | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 79efcb7e5..09992543f 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -20,6 +20,18 @@ The following isam control file is provided in the CCTM/scripts directory when y isam_control.txt ``` +This file contains the following tag classes + +``` +TAG NAME |EGU +REGION(S) |EVERYWHERE +EMIS STREAM(S) |PT_EGU + +TAG NAME |BIO +REGION(S) |NY +EMIS STREAM(S) |BIOG +``` + The following gridmask file is provided with the benchmark inputs in the 2018_12NE3_BENCH/2018_12NE3 directory (see step 10 below) ``` @@ -227,3 +239,40 @@ CCTM_SA_ACONC_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc CCTM_SA_CGRID_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc ``` +### Step 15: Compare the tagged species in `CCTM_SA_CONC` output file to the full species in `CCTM_CONC` output file + +``` +ncdump -h CCTM_SA_CONC_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_4x8_all_CONC_20180701.nc | grep SO2_ +``` + +The following tagged species should add up to the total SO2 in the CONC file. + + float SO2_EGU(TSTEP, LAY, ROW, COL) ; + SO2_EGU:long_name = "SO2_EGU " ; + SO2_EGU:units = "ppmV " ; + SO2_EGU:var_desc = "tracer conc. " ; + float SO2_BIO(TSTEP, LAY, ROW, COL) ; + SO2_BIO:long_name = "SO2_BIO " ; + SO2_BIO:units = "ppmV " ; + SO2_BIO:var_desc = "tracer conc. " ; + float SO2_BCO(TSTEP, LAY, ROW, COL) ; + SO2_BCO:long_name = "SO2_BCO " ; + SO2_BCO:units = "ppmV " ; + SO2_BCO:var_desc = "tracer conc. " ; + float SO2_OTH(TSTEP, LAY, ROW, COL) ; + SO2_OTH:long_name = "SO2_OTH " ; + SO2_OTH:units = "ppmV " ; + SO2_OTH:var_desc = "tracer conc. " ; + float SO2_ICO(TSTEP, LAY, ROW, COL) ; + SO2_ICO:long_name = "SO2_ICO " ; + SO2_ICO:units = "ppmV " ; + SO2_ICO:var_desc = "tracer conc. + +[1] = CONC +[2] = SA_CONC + +``` +SO2_EGU[1] + SO2_BIO[1] + SO2_BCO[1] + SO2_OTH[1] + SO2_ICO[1] = SO2[2] +``` + +Both tagged species EGU and BIO contribute to the bulk concentration, therefore the sum of all tagged species including boundary conditions (BCO) and initial conditions (ICO) and other (all untagged emissions) (OTH) From 77623c6911e1b22569953516a51dff8b36caafb8 Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Tue, 23 Jul 2024 12:17:11 -0400 Subject: [PATCH 155/375] Update CMAQ_UG_tutorial_ISAM.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 09992543f..919e52543 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -229,7 +229,7 @@ sbatch run_cctm_Bench_2018_12NE3.ISAM.csh ### Step 14: Compare output with the 2 day benchmark outputs provided on the google drive -The following ISAM output files are generated in addition to the standard CMAQ output files. +The following ISAM output files are generated in addition to the standard CMAQ output files. Note, the answers will not be comparible if emission scaling is used (Step 10 - optional) ``` CCTM_SA_DRYDEP_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc From 8f8b16898a164fc3fa164a033604f81e7c8cb71f Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Tue, 23 Jul 2024 12:19:47 -0400 Subject: [PATCH 156/375] Update CMAQ_UG_tutorial_emissions.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md index c7a88577d..6a27cd788 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md @@ -66,7 +66,7 @@ To zero Lightning NO emissions, setenv CTM_LTNG_NO N ``` -##### b. Creating Rules in the Chemical Mapping Control Namelist +##### b. Creating Rules in the Chemical Mapping Control Namelist (CMAQ_Control_DESID_${MECH}.nml) All streams can be zeroed by creating a rule that refers to 'All' streams. For example, ``` ! Region | Stream Label |Emission | CMAQ- |Phase/|Scale |Basis |Op @@ -260,7 +260,7 @@ Chemical families are defined by prescribing, via the [CMAQ Miscellaneous Contro ``` In this example, 2 chemical families, "NOX" and "POA", are defined with 2 members, "NO" and "NO2", and "POC" and "PNCOM". Note that CMAQv5.3 required the variable ChemFamilyNum to be specified and this value is internally calculated in CMAQv5.4. If the variable is provided, the model will crash. Also, it is required to ensure that no Chemical Family Name is identical to any emission species or CMAQ species. Currently, CMAQ will not detect a name conflict but results will be compromised. A future version of CMAQ will check for duplicative names, trigger an error, and stop the model. -Stream families are defined analogously in the DESID Control File: +Stream families are defined analogously in the DESID Control File (CMAQ_Control_DESID.nml): ``` &Desid_StreamFamVars Desid_N_Stream_Fams = 3 From b96bb4874d12a991d08d5541abb6da9f0dc60cb7 Mon Sep 17 00:00:00 2001 From: Havala Pye Date: Tue, 23 Jul 2024 18:05:14 -0400 Subject: [PATCH 157/375] Update User Guide CRACMM section 6.10.5 --- ...MAQ_UG_ch06_model_configuration_options.md | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index f1b564970..398ae69e1 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -34,7 +34,7 @@ * [6.10.2 Solvers](#6.10.2_Solver) * [6.10.3 Photolysis](#6.10.3_Photolysis) * [6.10.4 Nitrous Acid (HONO)](#6.10.4_HONO) - * [6.10.5 CRACMM v1](#6.10.5_CRACMM) + * [6.10.5 CRACMM](#6.10.5_CRACMM) * [6.11 Aerosol Dynamics and Chemistry](#6.11_Aerosol_Dynamics) * [6.12 Aqueous Chemistry, Scavenging and Wet Deposition](#6.12_Aqueous_Chemistry) * [6.13 Potential Vorticity Scaling](#6.13_Potential_Vort) @@ -834,18 +834,18 @@ CMAQ uses a default setting of Y to include the production of HONO from the hete The user can set it to N to exclude the heterogeneous production from the reaction. Note that the default setting for the inline deposition calculation (CTM_ILDEPV) flag is Y. If the flag is changed to N, then the production of HONO from the heterogeneous reaction on ground surface will not work properly. Additional description of the HONO chemistry in CMAQ can be found in Sarwar et al. (2008). -### 6.10.5 CRACMM Version 1.0 +### 6.10.5 CRACMM Version 1.0-2.0 The Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMM) builds on the history of the Regional Atmospheric Chemistry Mechanism, Version 2 (RACM2) and aims to couple gas- and particle-phase chemistry by treating the entire pool of atmospheric reactive organic carbon (ROC) relevant to present-day emissions. CRACMM species were developed to represent the total emissions of ROC, considering the OH reactivity, ability to form ozone and secondary organic aerosol (SOA), and other properties of individual emitted compounds. The chemistry of CRACMM, which includes autoxidation, multigenerational oxidation, and the treatment of semivolatile and intermediate volatility compounds, was built using a variety of sources including literature and other mechanisms (RACM2, MCM, GECKO, and SAPRC18/mechgen). -CRACMMv1 is available in two versions: base CRACMMv1 and CRACMMv1AMORE. The development of base CRACMMv1 is described by Pye et al. (2022) and the application of CRACMMv1 within CMAQ to the northeast U.S. in summer 2018 as well as comparison with other mechanisms is presented by Place et al. (2023). CRACMMv1AMORE replaces the base isoprene chemistry of CRACMMv1 (which was ported from RACM2) with a graph theory-based condensation of a detailed isoprene mechanism developed by Prof. Faye McNeill's team at Columbia University. The AMORE version is documented in work by Wiser et al. (2022). +CRACMM is available in three versions: CRACMMv1 and CRACMMv1AMORE originally implemented in CMAQv5.4 and CRACMMv2 introduced in CMAQv5.5. The development of CRACMMv1 is described by Pye et al. (2023) and the application of CRACMMv1 within CMAQ to the northeast U.S. in summer 2018 as well as comparison with other mechanisms is presented by Place et al. (2023). CRACMMv1AMORE replaces the base isoprene chemistry of CRACMMv1 (which was ported from RACM2) with a graph theory-based condensation of a detailed isoprene mechanism developed by Prof. Faye McNeill's team at Columbia University (Wiser et al., 2023). CRACMMv2 is an update to both CRACMMv1 and CRACMMv1AMORE. Developments in CRACMMv2 targeted improvements to formaldehyde and resulted in updates in other systems as well (Skipper et al., 2024). -When selected as the gas-phase mechanism, use of CRACMM1 (and CRACMM1AMORE) fully specifies CMAQ's aerosol treatment. CRACMM was designed as a multiphase mechanism and thus includes pathways to SOA and precursors to inorganic aerosol. The aero versioned by number no longer applies, and potential combustion SOA (pcSOA) is deprecated in CRACMM. Methane reaction with OH is considered and methane is set to a fixed concentration of 1.85 ppm by default, roughly mathching global conditions in the later part of the 2010s. Year or location specific [methane concentrations](https://gml.noaa.gov/ccgg/trends_ch4/) could be used (see the end of the mechanism definition file to make the update). +When selected as the gas-phase mechanism, use of CRACMM fully specifies CMAQ's aerosol treatment. CRACMM was designed as a multiphase mechanism and thus includes pathways to SOA and precursors to inorganic aerosol. The aero versioned by number no longer applies, and potential combustion SOA (pcSOA) is deprecated in CRACMM. Methane reaction with OH is considered and background methane is set to a fixed concentration of 1.85 ppm by default, roughly mathching global conditions in the later part of the 2010s. Year or location specific [methane concentrations](https://gml.noaa.gov/ccgg/trends_ch4/) could be used (see the end of the mechanism definition file to make the update). Emissions of methane on top of background levels can also be considered in CRACMMv2. One feature of CRACMM is the specification of representative structures for all species in the mechanism. This information is available as metadata describing all gas, particulate, and nonreactive species. Metadata exists in (csv-separated) columns appended to the species namelist files and in a new species description file. The information is not used at runtime by the CMAQ simulation, but should be updated if CRACMM species are updated to facilitate communication of how mechanism species are conceptualized. The metadata is leveraged to determine conservation of mass across chemical reactions (see the CHEMMECH README in the UTIL directory), determination of species properties such as solubility, and to communicate how species are conceptualized. Supplemental code automatically processes the metadata into markdown files for the CMAQ code repository. #### CRACMM Species Description File -Both cracmm1 mechanisms (cracmm1_aq and cracmm1amore_aq) share one species description file (located in MECHS/cracmm1_aq/cracmm1_speciesdescription.csv and linked for cracmm1amore) where the species in the mechanism are described. This file is a simple csv file with two values per line: +CRACMM mechanisms have a species description file (located in MECHS/cracmm1_aq/cracmm1_speciesdescription.csv and MECHS/cracmm2/cracmm2_speciesdescription.csv) where the species in the mechanism are described. This file is a simple csv file with two values per line: - Species name (string): All the GC.nml, AE.nml, and NR.nml species excluding phase (V,A) and particle size mode (I,J,K) identifiers - Description (string): string describing the species @@ -854,9 +854,9 @@ The description should reflect the lumped nature of the category if the species - HC10,Alkanes and other species with HO rate constant greater than 6.8x10-12 cm3 s-1 -In the case of emitted species, the actual emitted individual species mapped to a mechanism species is based on a hierarchy of rules as described by Pye et al. (2022) with supporting code available on github at [USEPA/CRACMM](https://github.com/USEPA/CRACMM). For example, HC10 is one of the last species to be mapped to in the hierarchy and all semi and intermediate volatility compounds (S/IVOCs) as well as those with aromaticity or double bonds have already been mapped to other mechanism species. Consult the official hierarchy of emission mapping to get the full definition for emitted species. +In the case of emitted species, the actual emitted individual species mapped to a mechanism species is based on a hierarchy of rules as described by Pye et al. (2023) with supporting code available on github at [USEPA/CRACMM](https://github.com/USEPA/CRACMM). For example, HC10 is one of the last species to be mapped to in the hierarchy and all semi and intermediate volatility compounds (S/IVOCs) as well as those with aromaticity or double bonds have already been mapped to other mechanism species. Consult the official hierarchy of emission mapping to get the full definition for emitted species. -Note that CRACMM (both versions) include some species that can partition between the gas and aerosol phase and thus have both a gas-phase component (in the GC.nml) and particulate component (in the AE.nml). Rather than entering the same description for each phase, species that have multiphase components should be entered once and the phase identifier (V prepended on a gas species in GC.nml (if used) or A prepended on a particulate species in AE.nml) should not be included. In addition, separate entries are not needed for a species existing in multiple size modes. For example, this is the entry describing the species OP3 which exists in the GC.nml as OP3 and in the particle as AOP3J: +Note that CRACMM mechanisms include some species that can partition between the gas and aerosol phase and thus have both a gas-phase component (in the GC.nml) and particulate component (in the AE.nml). Rather than entering the same description for each phase, species that have multiphase components should be entered once and the phase identifier (V prepended on a gas species in GC.nml (if used) or A prepended on a particulate species in AE.nml) should not be included. In addition, separate entries are not needed for a species existing in multiple size modes. For example, this is the entry describing the species OP3 which exists in the GC.nml as OP3 and in the particle as AOP3J: - OP3,Semivolatile organic peroxide @@ -883,7 +883,7 @@ In general, molecular weights (MOLWT) in the namelists should match the represen For species that exist in multiple phases, the metadata should only be specified in the GC.nml. #### CRACMM supporting code archive -A supporting code archive will be distributed at [USEPA/CRACMM](https://github.com/USEPA/CRACMM) to provide information that can be used by other models to implement CRACMM. This information includes documentation on how individual species map to the mechanism (available schematically and in python code), inputs to models such as Speciation Tool and SMOKE, and mapping of the SPECIATE database to CRACMM. +A supporting code archive is distributed at [USEPA/CRACMM](https://github.com/USEPA/CRACMM) to provide information that can be used by other models to implement CRACMM. This information includes documentation on how individual species map to the mechanism (available schematically and in python code), inputs to models such as Speciation Tool and SMOKE, and mapping of the SPECIATE database to CRACMM. One of the python routines available in the archive combines the CRACMM species information from the CMAQ namelists and species description file to create the species markdown files in (MECHS/mechanism_information). The processor will automatically format the following strings in markdown if used in the species description file: @@ -1077,7 +1077,7 @@ Mathur, R. & Peters, L.K. (1990). Adjustment of wind fields for application in a Mathur, R., Xing, J., Gilliam, R., Sarwar, G., Hogrefe, C., Pleim, J., Pouliot, G., Roselle, S., Spero, T. L., Wong, D. C., and Young, J. (2017) Extending the Community Multiscale Air Quality (CMAQ) modeling system to hemispheric scales: overview of process considerations and initial applications, Atmos. Chem. Phys., 17, 12449-12474, [doi: 10.5194/acp-17-12449-2017](https://doi.org/10.5194/acp-17-12449-2017). -Murphy, B.N., Woody, M.C., Jimenez, J.L., Carlton, A.M.G., Hayes, P.L., Liu, S., Ng, N.L., Russell, L.M., Setyan, A., Xu, L., Young, J., Zaveri, R.A., Zhang, Q., & Pye, H.O.T. (2017). Semivolatile POA and parameterized total combustion SOA in CMAQv5.2: impacts on source strength and partitioning. Atmospheric Chemistry and Physics Discussions, 1-44. +Murphy, B.N., Woody, M.C., Jimenez, J.L., Carlton, A.M.G., Hayes, P.L., Liu, S., Ng, N.L., Russell, L.M., Setyan, A., Xu, L., Young, J., Zaveri, R.A., Zhang, Q., & Pye, H.O.T. (2017). Semivolatile POA and parameterized total combustion SOA in CMAQv5.2: impacts on source strength and partitioning. Atmospheric Chemistry and Physics, 17 (18), 11107-11133, [doi:10.5194/acp-17-11107-2017](https://doi.org/10.5194/acp-17-11107-2017). Nemitz, E., Milford, C., Sutton, M.A. (2001). A two-layer canopy compensation point model for describing bi-directional biosphere-atmosphere exchange of ammonia. Q. J. Roy. Meteor. Soc.,127, 815-833. @@ -1085,7 +1085,7 @@ Odman, M.T., & Russell, A.G. (2000). Mass conservative coupling of non-hydrostat Ovadnevaite, J., Manders, A., de Leeuw, G., Ceburnis, D., Monahan, C., Partanen, A.I., Korhonen, H., & O'Dowd, C. D. (2014). A sea spray aerosol flux parameterization encapsulating wave state. Atmos. Chem. Phys., 14, 1837-1852. [doi: 10.5194/acp-14-1837-2014](https://doi.org/10.5194/acp-14-1837-2014). -Place, B. K., Hutzell, W. T., Appel, K. W., Farrell, S., Valin, L., Murphy, B. N., Seltzer, K. M., Sarwar, G., Allen, C., Piletic, I. R., D'Ambro, E. L., Saunders, E., Simon, H., Torres-Vasquez, A., Pleim, J., Schwantes, R. H., Coggon, M. M., Xu, L., Stockwell, W. R., and Pye, H. O. T.: Sensitivity of northeastern US surface ozone predictions to the representation of atmospheric chemistry in the Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMMv1.0), Atmos. Chem. Phys., 23, 9173–9190, https://doi.org/10.5194/acp-23-9173-2023, 2023. +Place, B. K., Hutzell, W. T., Appel, K. W., Farrell, S., Valin, L., Murphy, B. N., Seltzer, K. M., Sarwar, G., Allen, C., Piletic, I. R., D'Ambro, E. L., Saunders, E., Simon, H., Torres-Vasquez, A., Pleim, J., Schwantes, R. H., Coggon, M. M., Xu, L., Stockwell, W. R., and Pye, H. O. T. (2023). Sensitivity of northeastern US surface ozone predictions to the representation of atmospheric chemistry in the Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMMv1.0), Atmospheric Chemistry and Physics, 23, 9173-9190, [doi:10.5194/acp-23-9173-2023](https://doi.org/10.5194/acp-23-9173-2023). Pleim, J., Venkatram, A., Yamartino, R. (1984). ADOM/TADAP Model development program: The dry deposition module. Ontario Ministry of the Environment, 4. @@ -1099,7 +1099,7 @@ Pleim, J. E., Ran, L., Appel, W., Shephard, M.W., & Cady-Pereira K. (2019). New Pye, H.O.T., Pinder, R.W., Piletic, I.R., Xie, Y., Capps, S.L., Lin, Y.H., Surratt, J.D., Zhang, Z.F., Gold, A., Luecken, D.J., Hutzell W.T., Jaoui, M., Offenberg, J.H., Kleindienst, T.E., Lewandowski, M., & Edney, E.O. (2013). Epoxide pathways improve model predictions of isoprene markers and reveal key role of acidity in aerosol formation. Environ. Sci. Technol., 47(19), 11056-11064. -Pye, H. O. T., Place, B. K., Murphy, B. N., Seltzer, K. M., D'Ambro, E. L., Allen, C., Piletic, I. R., Farrell, S., Schwantes, R. H., Coggon, M. M., Saunders, E., Xu, L., Sarwar, G., Hutzell, W. T., Foley, K. M., Pouliot, G., Bash, J., & Stockwell, W. R. (2022). Linking gas, particulate, and toxic endpoints to air emissions in the Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMM) version 1.0, Atmos. Chem. Phys. Discuss. [preprint], https://doi.org/10.5194/acp-2022-695, in review. +Pye, H. O. T., Place, B. K., Murphy, B. N., Seltzer, K. M., D'Ambro, E. L., Allen, C., Piletic, I. R., Farrell, S., Schwantes, R. H., Coggon, M. M., Saunders, E., Xu, L., Sarwar, G., Hutzell, W. T., Foley, K. M., Pouliot, G., Bash, J., & Stockwell, W. R. (2023). Linking gas, particulate, and toxic endpoints to air emissions in the Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMM), Atmospheric Chemistry and Physics, 23, 5043-5099, [doi:10.5194/acp-23-5043-2023](https://doi.org/10.5194/acp-23-5043-2023). Ran, L., Cooter, E., Benson, V., & He, Q. (2011). Chapter 36: Development of an agricultural fertilizer modeling system for bi-directional ammonia fluxes in the CMAQ model. In D. G. Steyn, & S. Trini Castelli (Eds.), air pollution modeling and its application XXI. Springer, 213-219. @@ -1119,6 +1119,8 @@ Simon, H., & Bhave, P.V. (2012). Simulating the degree of oxidation in atmospher Skamarock, W.C., Klemp, J.B., Dudhia, J., Gill, D.O., Liu, Z., Berner, J., Wang, W., Powers, J.G., Duda, M.G., Barker, D.M., & Huang, X.Y. (2019). A description of the advanced research WRF version 4. NCAR Technical Note, NCAR/TN–556+STR. +Skipper, T. N., D’Ambro, E. L., Wiser, F. C., McNeill, V. F., Schwantes, R. H., Henderson, B. H., Piletic, I. R., Baublitz, C. B., Bash, J. O., Whitehill, A. R., Valin, L. C., Mouat, A. P., Kaiser, J., Wolfe, G. M., St. Clair, J. M., Hanisco, T. F., Fried, A., Place, B. K., and Pye, H. O. T. (2024). Role of chemical production and depositional losses on formaldehyde in the Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMM), EGUsphere [preprint], [doi:10.5194/egusphere-2024-1680](https://doi.org/10.5194/egusphere-2024-1680). + Slinn, W.G.N. (1982). Predictions for particle deposition to vegetative canopies, Atmos. Environ., 16, 1785-1794. Smagorinsky, J. (1963). General circulation experiments with the primitive equations. Mon. Wea. Rev., 91/3, 99-164. @@ -1127,7 +1129,7 @@ Tan, Y., Perri, M.J., Seitzinger, S.P., & Turpin, B.J. (2009). Effects of precur Warneck, P. (1999). The relative importance of various pathways for the oxidation of sulfur dioxide and nitrogen dioxide in sunlit continental fair weather clouds. Phys. Chem. Chem. Phys., 1, 5471-5483. -Wiser, F., Place, B., Sen, S., Pye, H. O. T., Yang, B., Westervelt, D. M., Henze, D. K., Fiore, A. M., & McNeill, V. F. (2022). AMORE-Isoprene v1.0: A new reduced mechanism for gas-phase isoprene oxidation, Geosci. Model Dev. Discuss. [preprint], https://doi.org/10.5194/gmd-2022-240, in review. +Wiser, F., Place, B. K., Sen, S., Pye, H. O. T., Yang, B., Westervelt, D. M., Henze, D. K., Fiore, A. M., and McNeill, V. F. (2023). AMORE-Isoprene v1.0: a new reduced mechanism for gas-phase isoprene oxidation, Geosci. Model Dev., 16, 1801-1821, [doi:https://doi.org/10.5194/gmd-16-1801-2023](https://doi.org/10.5194/gmd-16-1801-2023). Xing, J., Mathur, R., Pleim, J., Hogrefe, C., Wang, J., Gan, C.M., Sarwar, G., Wong, D., & McKeen, S. (2016). Representing the effects of stratosphere-troposphere exchange on 3D O3 distributions in chemistry transport models using a potential vorticity based parameterization, Atmos. Chem. Phys., 16, 10865-10877, [doi:10.5194/acp-16-10865-2016](https://doi.org/10.5194/acp-16-10865-2016). From 16a8a7e191093dd21422a445668cec0fc0c375d3 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Tue, 13 Aug 2024 10:29:56 -0400 Subject: [PATCH 158/375] Move sh2cmaq from PREP to PYTOOLS On branch 5.5_docs Changes to be committed: modified: PREP/README.md modified: PYTOOLS/README.md renamed: PREP/shp2cmaq/README.md -> PYTOOLS/shp2cmaq/README.md renamed: PREP/shp2cmaq/requirements.txt -> PYTOOLS/shp2cmaq/requirements.txt renamed: PREP/shp2cmaq/shapefile2cmaq.ipynb -> PYTOOLS/shp2cmaq/shapefile2cmaq.ipynb renamed: PREP/shp2cmaq/shp2cmaq.py -> PYTOOLS/shp2cmaq/shp2cmaq.py --- PREP/README.md | 10 +++++----- PYTOOLS/README.md | 3 ++- {PREP => PYTOOLS}/shp2cmaq/README.md | 0 {PREP => PYTOOLS}/shp2cmaq/requirements.txt | 0 {PREP => PYTOOLS}/shp2cmaq/shapefile2cmaq.ipynb | 0 {PREP => PYTOOLS}/shp2cmaq/shp2cmaq.py | 0 6 files changed, 7 insertions(+), 6 deletions(-) rename {PREP => PYTOOLS}/shp2cmaq/README.md (100%) rename {PREP => PYTOOLS}/shp2cmaq/requirements.txt (100%) rename {PREP => PYTOOLS}/shp2cmaq/shapefile2cmaq.ipynb (100%) rename {PREP => PYTOOLS}/shp2cmaq/shp2cmaq.py (100%) diff --git a/PREP/README.md b/PREP/README.md index 8d9b81387..b8f575ebb 100644 --- a/PREP/README.md +++ b/PREP/README.md @@ -5,10 +5,10 @@ Pre-processing Tools The following programs are provided to process and prepare input data for the CMAQ Chemistry Transport Model. Documentation for these programs is provided in README files within each foler. ## Pre-processing Programs -* **[bcon](bcon/README.md)**: prepares lateral chemical boundary conditions (BCs) for CCTM from either ASCII vertical profiles or from an existing CCTM output concentration (CONC) file -* **[icon](icon/README.md)**: prepares chemical initial conditions (ICs) for CCTM from either ASCII vertical profiles or from an existing CCTM output concentration (CONC) file +* **[bcon](bcon/README.md)**: Prepares lateral chemical boundary conditions (BCs) for CCTM from either ASCII vertical profiles or from an existing CCTM output concentration (CONC) file +* **[icon](icon/README.md)**: Prepares chemical initial conditions (ICs) for CCTM from either ASCII vertical profiles or from an existing CCTM output concentration (CONC) file data -* **[mcip](mcip/README.md)**: processes meteorological model output from either MM5 or WRF-ARW model into I/O API-formatted files that are compatible with CMAQ and SMOKE -* **[create_omi](create_omi/README.md)**: produces an OMI input file that supports CMAQ CCTM's in-line calculation of photolysis rates. +* **[mcip](mcip/README.md)**: Processes meteorological model output from either MM5 or WRF-ARW model into I/O API-formatted files that are compatible with CMAQ and SMOKE +* **[create_omi](create_omi/README.md)**: Produces an OMI input file that supports CMAQ CCTM's in-line calculation of photolysis rates. * **[dmschlo](../PYTOOLS/dmschlo/README.md)**: Prepares OCEAN file with DMS and CHLO variables required by DMS and halogen chemistry. -* **[shp2cmaq](shp2cmaq/README.md)**: produces a CMAQ-ready file with grid cell coverage by shapes in a shapefile. +* **[shp2cmaq](../PYTOOLS/shp2cmaq/README.md)**: Creates a CMAQ-ready grid mask from a shape file that can be used for defining regions and region families with DESID and using geographic source regions when running CMAQ-ISAM. diff --git a/PYTOOLS/README.md b/PYTOOLS/README.md index 5f917068f..aa419a0f8 100644 --- a/PYTOOLS/README.md +++ b/PYTOOLS/README.md @@ -17,5 +17,6 @@ For information about how to install, see the install folder. Tool Listing ============ -* [install](install/README.md) Describes preparing an environment for CMAQ/PYTOOLS +* [install](install/README.md) Describes preparing an environment for CMAQ/PYTOOLS. * [dmschlo](dmschlo/README.md) Prepares DMS and Chlorophyll-A concentrations for CMAQ. +* [shp2cmaq](../PYTOOLS/shp2cmaq/README.md) Creates a CMAQ-ready grid mask from a shape file that can be used for defining regions and region families with DESID and using geographic source regions when running CMAQ-ISAM. diff --git a/PREP/shp2cmaq/README.md b/PYTOOLS/shp2cmaq/README.md similarity index 100% rename from PREP/shp2cmaq/README.md rename to PYTOOLS/shp2cmaq/README.md diff --git a/PREP/shp2cmaq/requirements.txt b/PYTOOLS/shp2cmaq/requirements.txt similarity index 100% rename from PREP/shp2cmaq/requirements.txt rename to PYTOOLS/shp2cmaq/requirements.txt diff --git a/PREP/shp2cmaq/shapefile2cmaq.ipynb b/PYTOOLS/shp2cmaq/shapefile2cmaq.ipynb similarity index 100% rename from PREP/shp2cmaq/shapefile2cmaq.ipynb rename to PYTOOLS/shp2cmaq/shapefile2cmaq.ipynb diff --git a/PREP/shp2cmaq/shp2cmaq.py b/PYTOOLS/shp2cmaq/shp2cmaq.py similarity index 100% rename from PREP/shp2cmaq/shp2cmaq.py rename to PYTOOLS/shp2cmaq/shp2cmaq.py From 56d623ca33e90156cf4f60eb9d6ec0f98fa17ba1 Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Mon, 19 Aug 2024 15:10:26 -0400 Subject: [PATCH 159/375] Update CMAQ_UG_tutorial_benchmark.md update for v55 and cracmm mechanism --- .../Tutorials/CMAQ_UG_tutorial_benchmark.md | 44 ++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index a5bd80728..c091898d1 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -1,6 +1,6 @@ # CMAQ Installation & Benchmarking Tutorial -Purpose: This guide describes how to install and run the CMAQ test case, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. +Purpose: This guide describes how to install and run the CMAQ test case for the CRACMM2 mechanism, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. Benchmarking refers to a simulation that is used to verify that the software is installed correctly. Benchmarking CMAQ is recommended in the following circumstances: - Installation by a new user @@ -16,7 +16,7 @@ The following support software are required for compiling and running CMAQ. 1. Fortran and C compilers, e.g., [Intel](https://software.intel.com/en-us/fortran-compilers), [Portland Group](http://www.pgroup.com), [Gnu](https://gcc.gnu.org/wiki/GFortran) 2. [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) 2. Message Passing Interface (MPI), e.g., [OpenMPI](https://www.open-mpi.org) or [MVAPICH2](http://www.mcs.anl.gov/research/projects/mpich2). -3. Latest release of [netCDF-C](https://www.unidata.ucar.edu/software/netcdf/docs/getting_and_building_netcdf.html) and [netCDF-Fortran](https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html) **built without netCDF4, HDF5, HDF4, DAP client, PnetCDF, or zlib support** +3. Latest release of [netCDF-C](https://www.unidata.ucar.edu/software/netcdf/docs/getting_and_building_netcdf.html) and [netCDF-Fortran](https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html) **built with netCDF4, HDF5, HDF4, DAP client, PnetCDF, or zlib support** 4. [I/O API](https://www.cmascenter.org/download/software/ioapi/ioapi_3-2.cfm?DB=TRUE) version 3.2 **tagged 20200828** (note: if you have not installed the above libraries, please see the CMAQ_UG_tutorial_build_[gcc/intel/pgi].md tutorials available here: https://github.com/USEPA/CMAQ/tree/main/DOCS/Users_Guide/Tutorials @@ -29,7 +29,7 @@ The suggested hardware requirements for running the CMAQ Southeast Benchmark cas ## Install CMAQ and Required Libraries -In the directory where you would like to install CMAQ, create the directory issue the following command to clone the EPA GitHub repository for CMAQv5.4: +In the directory where you would like to install CMAQ, create the directory issue the following command to clone the EPA GitHub repository for CMAQv5.5: ``` git clone -b main https://github.com/USEPA/CMAQ.git CMAQ_REPO @@ -54,8 +54,9 @@ In the top level of CMAQ_REPO, the bldit_project.csh script will automatically r In bldit_project.csh, modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: ``` -set CMAQ_HOME = [your_install_path]/CMAQ_v5.4 +set CMAQ_HOME = [your_install_path]/CMAQ_v5.5 ``` + Now execute the script. ``` ./bldit_project.csh @@ -91,12 +92,12 @@ source config_cmaq.csh [compiler] ``` You may also identify the version of the compiler if you wish it to be identified in build directory and executable names. This is optional. For example: ``` -source config_cmaq.csh gcc 9.1 +source config_cmaq.csh gcc 9.5 ``` ## Install the CMAQ reference input and output benchmark data -Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. +Download the CMAQ two day reference input and output data for the CRACMM2 mechanism from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. - Use the gdrive command to download the dataset. - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions @@ -109,8 +110,8 @@ Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and ``` cd $CMAQ_DATA -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz +tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input_CRACCM2.tar.gz +tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output_CRACMM2.tar.gz ``` ## Compiling CMAQ @@ -143,20 +144,31 @@ The build directory parameters for the benchmark test case include the following - Vertical diffusion: ACM2_M3Dry - Deposition: M3Dry - Chemistry solver: EBI -- Aerosol module: AERO7 -- Cloud module: ACM_AE7 -- Mechanism: cb6r3_ae7_aq -- Online biogenic emissions +- Aerosol module: cracmm +- Cloud module: acm_craccm +- Mechanism: cracmm2 +- Inline biogenic emissions - Inline plume rise To configure these parameters, the CCTM Science Modules within the bldit_cctm.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in [Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). +To keep the BLD directory name unique for each mechansim, modify the bldit_cctm script to use + +``` +#> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. + if ( $?Debug_CCTM ) then + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_debug + else + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism} + endif +``` + Following the requisite changes to the CCTM build script, use the following command to create the CCTM executable: ``` cd $CMAQ_HOME/CCTM/scripts -./bldit_cctm.csh [compiler] [version] |& tee bldit.cctm.log +./bldit_cctm_craccm.csh [compiler] [version] |& tee bldit_cctm_craccm.log ``` ## Configure the CCTM script @@ -171,7 +183,7 @@ Edit the CCTM run script (run_cctm_Bench_2018_12NE3.csh) for the MPI configurati ``` setenv compiler gcc -setenv compilerVrsn 9.1 +setenv compilerVrsn 9.5 setenv INPDIR ${CMAQ_DATA}/2018_12NE3 @ NPCOL 8 ; @ NPROW = 4 ``` @@ -195,13 +207,13 @@ CCTM Science Configuration Options set to **Y** in the RunScript for the benchma - ```CTM_GRAV_SETL``` - vdiff aerosol gravitational sedmentation - ```CTM_BIOGEMIS``` - online biogenic emissions -To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in +To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in [Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). After configuring the MPI settings for your Linux system, check the rest of the script to ensure the correct path, date and names are used for the input data files. Per the note above, different Linux systems have different requirements for submitting MPI jobs. The command below is an example of how to submit the CCTM run script and may differ depending on the MPI requirements of your Linux system. ``` -./run_cctm_Bench_2018_12NE3.csh |& tee cctm.log +./run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh |& tee cctm.log ``` ## Confirm that the Benchmark Simulation Completed From 8bb1e81b01f0e2558f6da0f7a14354459dc86d82 Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Tue, 20 Aug 2024 01:07:47 -0400 Subject: [PATCH 160/375] Update CMAQ_UG_tutorial_benchmark.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index c091898d1..8276ce135 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -1,6 +1,6 @@ # CMAQ Installation & Benchmarking Tutorial -Purpose: This guide describes how to install and run the CMAQ test case for the CRACMM2 mechanism, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. +Purpose: This guide describes how to install and run the CMAQ test case for the CRACMM2 mechanism with the STAGE dry deposition scheme, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. Benchmarking refers to a simulation that is used to verify that the software is installed correctly. Benchmarking CMAQ is recommended in the following circumstances: - Installation by a new user @@ -142,7 +142,7 @@ The build directory parameters for the benchmark test case include the following - 3-D Advection Scheme: wrf_cons - Horizontal diffusion: Multiscale - Vertical diffusion: ACM2_M3Dry -- Deposition: M3Dry +- Deposition: STAGE - Chemistry solver: EBI - Aerosol module: cracmm - Cloud module: acm_craccm @@ -164,6 +164,11 @@ To keep the BLD directory name unique for each mechansim, modify the bldit_cctm endif ``` +#> Set Dry Deposition Scheme to Stage + + set DepMod = stage + + Following the requisite changes to the CCTM build script, use the following command to create the CCTM executable: ``` From 3882c4b1bc3251f536d65177cc7160406691671e Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Tue, 20 Aug 2024 01:56:18 -0400 Subject: [PATCH 161/375] Update CMAQ_UG_tutorial_benchmark.md --- .../Tutorials/CMAQ_UG_tutorial_benchmark.md | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index 8276ce135..1e59fae05 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -164,10 +164,12 @@ To keep the BLD directory name unique for each mechansim, modify the bldit_cctm endif ``` +Change the dry deposition scheme to use STAGE instead of M3DRY +``` #> Set Dry Deposition Scheme to Stage set DepMod = stage - +``` Following the requisite changes to the CCTM build script, use the following command to create the CCTM executable: @@ -176,6 +178,27 @@ cd $CMAQ_HOME/CCTM/scripts ./bldit_cctm_craccm.csh [compiler] [version] |& tee bldit_cctm_craccm.log ``` +Verify that the BLD directory contains a namelist called + +``` +CMAQ_Control_STAGE.nml +``` + +Change to the BLD directory and add the following lines to the bottom of the CMAQ_Control_DESID_cracmm2.nml + +``` + ! Re-Map CRACMM1 Aromatics to CRACMM2 + ! EBZ and XYE remapping, STY and XYM remapping + ! Generic scaling if not scaling by sector: 70% XYL; 30% EBZ + ! EBZ = FAC1 * XYE; STY = FAC2 * XYM ; XYL = (1-FAC1)*XYE + (1-FAC2)*XYM + 'EVERYWHERE', 'ALL' ,'XYE' ,'EBZ' ,'GAS' ,0.30,'UNIT','a', + 'EVERYWHERE', 'ALL' ,'XYE' ,'XYL' ,'GAS' ,0.70,'UNIT','a', + + ! Generic scaling if not scaling by sector: 93% XYL; 7% STY + 'EVERYWHERE', 'ALL' ,'XYM' ,'STY' ,'GAS' ,0.07,'UNIT','a', + 'EVERYWHERE', 'ALL' ,'XYM' ,'XYL' ,'GAS' ,0.93,'UNIT','a', +``` + ## Configure the CCTM script For an MPI configuration with 16 processors, From 5921c947735887d22720e893748e6e4dd69973e7 Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Tue, 20 Aug 2024 01:57:59 -0400 Subject: [PATCH 162/375] Update CMAQ_UG_tutorial_benchmark.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index 1e59fae05..9f57e73c6 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -158,9 +158,9 @@ To keep the BLD directory name unique for each mechansim, modify the bldit_cctm ``` #> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. if ( $?Debug_CCTM ) then - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_debug + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug else - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism} + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} endif ``` From 1b97dc09c4e1f3c83032892ceb3a3aff9c344f97 Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Tue, 20 Aug 2024 12:46:07 -0400 Subject: [PATCH 163/375] Update CMAQ_UG_tutorial_ISAM.md Update to use cracmm2 and stage --- .../Tutorials/CMAQ_UG_tutorial_ISAM.md | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 919e52543..3bcd61c23 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -1,6 +1,6 @@ ## CMAQ-ISAM Benchmark Tutorial ## -### Procedure to build and run the CMAQ-ISAM model using gnu compiler: ### +### Procedure to build and run the CMAQ-ISAM model using gnu compiler for the CRACMM2 mechanism with the STAGE dry deposition scheme: ### ### Step 1: Download and run the CMAQv5.5 benchmark case (without ISAM) to confirm that your model run is consistent with the provided benchmark output. - [CMAQ Benchmark Tutorial](CMAQ_UG_tutorial_benchmark.md) @@ -96,7 +96,7 @@ cd [your_install_path]/CMAQ_v5.5 ### Step 6. Edit the config_cmaq.csh to specify the paths of the ioapi and netCDF libraries -### Step 7: Modify the bldit_cctm.csh +### Step 7: Modify the bldit_cctm.csh to activate ISAM Change directory to CCTM/scripts @@ -110,13 +110,27 @@ Comment out the following option to compile CCTM with ISAM: #> Integrated Source Apportionment Method (ISAM) set ISAM_CCTM #> uncomment to compile CCTM with ISAM activated ``` +### Step 8: Modify the bldit_cctm.csh to specify the CRACMM2 mechanism and the stage dry deposition scheme and update the BLD directory name. -### Step 8: Run the bldit_cctm.csh script +``` +set DepMod = stage #> dry deposition scheme (m3dry or stage) +setenv Mechanism cracmm2 #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) + +#> Set and create the "BLD" directory for checking out and compiling +#> source code. Move current directory to that build directory. + if ( $?Debug_CCTM ) then + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug + else + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} + endif +``` + +### Step 9: Run the bldit_cctm.csh script ``` ./bldit_cctm.csh gcc |& tee bldit_cctm_isam.log ``` -### Step 9: Edit the Emission Control Namelist to recognize the CMAQ_REGIONS file +### Step 10: Edit the Emission Control Namelist to recognize the CMAQ_REGIONS file Change directories to the build directory ``` @@ -143,7 +157,7 @@ Uncomment the line that contains ISAM_REGIONS as the File Label / ``` -### Step 10: Example of emissions scaling (Reduce the PT_EGU emissions in PA by 25%) (Optional step) +### Step 11: Example of emissions scaling (Reduce the PT_EGU emissions in PA by 25%) (Optional step) edit the DESID chemical control namelist file, note please specify the mechanism or define the MECH environment variable. @@ -159,7 +173,7 @@ Add the following line at the bottom of the the namelist file (before the /) ``` -### Step 11: Install the CMAQ-ISAM reference input and output benchmark data +### Step 12: Install the CMAQ-ISAM reference input and output benchmark data Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. @@ -180,7 +194,7 @@ tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz The input files for the CMAQv5.4 ISAM benchmark case are the same as the benchmark inputs for the base model. Output source apportionment files associated with the sample isam_control.txt provided in this release package are included in the benchmark outputs for the base model. -### Step 12: Edit the CMAQ-ISAM runscript +### Step 13: Edit the CMAQ-ISAM runscript ``` cp run_cctm_Bench_2018_12NE3.csh run_cctm_Bench_2018_12NE3.ISAM.csh @@ -214,7 +228,7 @@ OR (If using SLRUM) sbatch run_cctm_Bench_2018_12NE3.ISAM.csh ``` -### Step 13: Verify that the run was successful +### Step 14: Verify that the run was successful - look for the output directory ``` @@ -227,7 +241,7 @@ sbatch run_cctm_Bench_2018_12NE3.ISAM.csh ``` |>--- PROGRAM COMPLETED SUCCESSFULLY ---<| -### Step 14: Compare output with the 2 day benchmark outputs provided on the google drive +### Step 15: Compare output with the 2 day benchmark outputs provided on the google drive The following ISAM output files are generated in addition to the standard CMAQ output files. Note, the answers will not be comparible if emission scaling is used (Step 10 - optional) @@ -239,7 +253,7 @@ CCTM_SA_ACONC_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc CCTM_SA_CGRID_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc ``` -### Step 15: Compare the tagged species in `CCTM_SA_CONC` output file to the full species in `CCTM_CONC` output file +### Step 16: Compare the tagged species in `CCTM_SA_CONC` output file to the full species in `CCTM_CONC` output file ``` ncdump -h CCTM_SA_CONC_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_4x8_all_CONC_20180701.nc | grep SO2_ From 20946fc971997549f145c94773184398c84f131f Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Tue, 20 Aug 2024 12:48:12 -0400 Subject: [PATCH 164/375] Update CMAQ_UG_tutorial_ISAM.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 3bcd61c23..08064e805 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -104,7 +104,7 @@ Change directory to CCTM/scripts cd CCTM/scripts ``` -Comment out the following option to compile CCTM with ISAM: +Uncomment the following option to compile CCTM with ISAM (remove the # before set ISAM_CCTM): ``` #> Integrated Source Apportionment Method (ISAM) From 7224ea8d3e56a5418407ba8976f7cfca080c066f Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Tue, 20 Aug 2024 12:49:21 -0400 Subject: [PATCH 165/375] Update CMAQ_UG_tutorial_ISAM.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 08064e805..5a6fb5bf4 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -134,7 +134,7 @@ setenv Mechanism cracmm2 #> chemical mechanism (see $CMAQ_MODEL/CCT Change directories to the build directory ``` -cd BLD_CCTM_v55_ISAM_gcc +cd BLD_CCTM_v55_ISAM_gcc_cracmm2_stage ``` edit the DESID emissions namelist file From 96b4e9214c255445ddb1743394416b3a9bf948ba Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Tue, 20 Aug 2024 12:50:38 -0400 Subject: [PATCH 166/375] Update CMAQ_UG_tutorial_ISAM.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 5a6fb5bf4..d320ff503 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -32,13 +32,13 @@ REGION(S) |NY EMIS STREAM(S) |BIOG ``` -The following gridmask file is provided with the benchmark inputs in the 2018_12NE3_BENCH/2018_12NE3 directory (see step 10 below) +The following gridmask file is provided with the benchmark inputs in the 2018_12NE3_BENCH/2018_12NE3 directory (see step 11 below) ``` GRIDMASK_STATES_12NE3.nc ``` -The instructions require the user to edit the DESID emissions control namelist file and the DESID chemical control namelist file in the BLD directory. If you want to use emission scaling (independently from ISAM or DDM3D) you will also need to edit these files. (see step 9 below). +The instructions require the user to edit the DESID emissions control namelist file and the DESID chemical control namelist file in the BLD directory. If you want to use emission scaling (independently from ISAM or DDM3D) you will also need to edit these files. (see step 10 below). ``` CMAQ_Control_DESID.nml From b06fa6ad407fa44de638e00149598a45557bb626 Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Tue, 20 Aug 2024 12:59:01 -0400 Subject: [PATCH 167/375] Update CMAQ_UG_tutorial_ISAM.md --- .../Tutorials/CMAQ_UG_tutorial_ISAM.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index d320ff503..27c7c7cd1 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -157,6 +157,23 @@ Uncomment the line that contains ISAM_REGIONS as the File Label / ``` +### Step 10a: Edit the DESID chmeical control namelist file. + +Change to the BLD directory and add the following lines to the bottom of the CMAQ_Control_DESID_cracmm2.nml + +``` +! Re-Map CRACMM1 Aromatics to CRACMM2 + ! EBZ and XYE remapping, STY and XYM remapping + ! Generic scaling if not scaling by sector: 70% XYL; 30% EBZ + ! EBZ = FAC1 * XYE; STY = FAC2 * XYM ; XYL = (1-FAC1)*XYE + (1-FAC2)*XYM + 'EVERYWHERE', 'ALL' ,'XYE' ,'EBZ' ,'GAS' ,0.30,'UNIT','a', + 'EVERYWHERE', 'ALL' ,'XYE' ,'XYL' ,'GAS' ,0.70,'UNIT','a', + + ! Generic scaling if not scaling by sector: 93% XYL; 7% STY + 'EVERYWHERE', 'ALL' ,'XYM' ,'STY' ,'GAS' ,0.07,'UNIT','a', + 'EVERYWHERE', 'ALL' ,'XYM' ,'XYL' ,'GAS' ,0.93,'UNIT','a', +``` + ### Step 11: Example of emissions scaling (Reduce the PT_EGU emissions in PA by 25%) (Optional step) edit the DESID chemical control namelist file, note please specify the mechanism or define the MECH environment variable. From 8128490287aa8c4b12cfc90d769a967081ef0c3c Mon Sep 17 00:00:00 2001 From: Liz Adams Date: Wed, 21 Aug 2024 13:42:11 -0400 Subject: [PATCH 168/375] Update CMAQ_UG_tutorial_ISAM.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 27c7c7cd1..3ea2387b9 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -221,7 +221,7 @@ gedit run_cctm_Bench_2018_12NE3.ISAM.csh Set General Parameters for Configuring the Simulation ``` -set VRSN = v54_ISAM +set VRSN = v55_ISAM ``` From 979826d8e3aae6ec72f05ea7a3b45e2f1807edc5 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 28 Aug 2024 15:30:10 -0400 Subject: [PATCH 169/375] abort if DDM and STAGE are specified DDM does not currently support the STAGE deposition model. If the user attempts to build with both options, the code will not compile. This can be confusing and time-wasting. This PR puts in a check and aborts with a message if the user selects these incompatible options. Also, I noticed that our script usage instructions at the top are wrong and fixed them. --- CCTM/scripts/bldit_cctm.csh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CCTM/scripts/bldit_cctm.csh b/CCTM/scripts/bldit_cctm.csh index 7e5c63be3..e6a36af14 100755 --- a/CCTM/scripts/bldit_cctm.csh +++ b/CCTM/scripts/bldit_cctm.csh @@ -1,13 +1,13 @@ #!/bin/csh -f # ======================= CCTMv5.5.X Build Script ========================= -# Usage: bldit.cctm >&! bldit.cctm.log +# Usage: bldit.cctm.csh >&! bldit.cctm.log # Requirements: I/O API & netCDF libraries, a Fortran compiler, # and MPI for multiprocessor computing # # To report problems or request help with this script/program: # http://www.cmascenter.org -# ======================================================================= +# ========================================================================= #> Set Compiler Identity by User Input: Options -> intel | pgi | gcc if ( $#argv == 1 ) then @@ -252,6 +252,10 @@ set make_options = "-j" #> additional options for make command if set cpp_depmod = '-Dm3dry_opt' else if ($DepMod == stage) then set cpp_depmod = '-Dstage_opt' + if ( $?DDM3D_CCTM ) then + echo "*** DDM3D is not compatible with the STAGE deposition model" + exit 1 + endif endif #> Set variables needed for multiprocessor and serial builds From 4bceb00686d75759500027d78ac1feda31a8adc6 Mon Sep 17 00:00:00 2001 From: Ben_Murphy Date: Thu, 29 Aug 2024 11:41:31 -0400 Subject: [PATCH 170/375] Add aero icbc options to explanation --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index 46583cd70..ac3d4116b 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -487,6 +487,10 @@ Sets if the CCTM will run in multi-processor or serial mode. --- 6-Approximations to Mie Theory - `CTM_PVO3 [default: N]` Y/N determines whether to scale ozone in free-troposphere to potential vorticity. Option requires that METCRO3D file has PV, potential vorticity. See [User Guide 6.13](../CMAQ_UG_ch06_model_configuration_options.md#613-potential-vorticity-scaling) for more information. +- `IC_AERO_M2USE [default: T]` Instructs CMAQ whether or not to use aerosol surface area from the Initial Condition file. If this option is set to false, then uniform diameter and standard deviation will be applied to each aerosol mode. If a particular simulation is a restart from a simulation preceeding in time (i.e. if this is any day after the first simulation day), then IC_AERO_M2USE is automatically set to True inside CMAQ. +- `IC_AERO_M2WET [default: F=dry]` Instructs CMAQ whether or not to assume the initial condition surface area is consistent with dry or wet diameter. Note that most air quality models assume mode parameters are dry, and then will calculate wet diameter when needed (e.g. for deposition). +- `BC_AERO_M2USE [default: T]` Instructs CMAQ whether or not to use aerosol surface area from the Boundary Condition file. If this option is set to false, then uniform diameter and standard deviation will be applied to each aerosol mode from the boundaries. +- `BC_AERO_M2WET [default: F=dry]` Instructs CMAQ whether or not to assume the boundary condition surface area is consistent with dry or wet diameter. Note that most air quality models assume mode parameters are dry, and then will calculate wet diameter when needed (e.g. for deposition). From 9c38c8e9db65bb67f322a06d1f7a631c2136f4dd Mon Sep 17 00:00:00 2001 From: Emma D'Ambro <48480570+edambro@users.noreply.github.com> Date: Tue, 3 Sep 2024 11:29:32 -0400 Subject: [PATCH 171/375] Update run_bcon.csh Change references to mcip folder to mcipv4.5, and update the name of the conc file --- PREP/bcon/scripts/run_bcon.csh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/PREP/bcon/scripts/run_bcon.csh b/PREP/bcon/scripts/run_bcon.csh index 3adbb06d7..3e3f6151d 100755 --- a/PREP/bcon/scripts/run_bcon.csh +++ b/PREP/bcon/scripts/run_bcon.csh @@ -40,7 +40,7 @@ #> Horizontal grid definition setenv GRID_NAME SE53BENCH #> check GRIDDESC file for GRID_NAME options #setenv GRIDDESC $CMAQ_DATA/$APPL/met/mcip/GRIDDESC #> grid description file - setenv GRIDDESC /work/MOD3DATA/SE53BENCH/met/mcip/GRIDDESC + setenv GRIDDESC /work/MOD3DATA/SE53BENCH/met/mcipv4.5/GRIDDESC setenv IOAPI_ISPH 20 #> GCTP spheroid, use 20 for WRF-based modeling #> I/O Controls @@ -94,15 +94,15 @@ # setenv RUNLEN 240000 if ( $BCON_TYPE == regrid ) then - setenv CTM_CONC_1 /work/MOD3EVAL/sjr/CCTM_CONC_v53_intel18.0_2016_CONUS_test_${YYYYMMDD}.nc + setenv CTM_CONC_1 /work/MOD3EVAL/sjr/CCTM_CONC_v53beta2_intel17.0_HEMIS_cb6r3m_ae7_kmtbr_m3dry_2016_quarterly_av.nc setenv MET_CRO_3D_CRS /work/MOD3DATA/2016_12US1/met/mcip_v43_wrf_v381_ltng/METCRO3D.12US1.35L.${YYMMDD} - setenv MET_BDY_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcip/METBDY3D_${YYMMDD}.nc + setenv MET_BDY_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcipv4.5/METBDY3D_${YYMMDD}.nc setenv BNDY_CONC_1 "$OUTDIR/BCON_${VRSN}_${APPL}_${BCON_TYPE}_${YYYYMMDD} -v" endif if ( $BCON_TYPE == profile ) then setenv BC_PROFILE $BLD/avprofile_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv - setenv MET_BDY_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcip/METBDY3D_${YYMMDD}.nc + setenv MET_BDY_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcipv4.5/METBDY3D_${YYMMDD}.nc setenv BNDY_CONC_1 "$OUTDIR/BCON_${VRSN}_${APPL}_${BCON_TYPE}_${YYYYMMDD} -v" endif From 625d4556b8058f42b3e9eee1559fb1754090d7c6 Mon Sep 17 00:00:00 2001 From: Emma D'Ambro <48480570+edambro@users.noreply.github.com> Date: Tue, 3 Sep 2024 11:31:44 -0400 Subject: [PATCH 172/375] Update run_icon.csh Update mcip folder to mcipv4.5, and update the conc file name --- PREP/icon/scripts/run_icon.csh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/PREP/icon/scripts/run_icon.csh b/PREP/icon/scripts/run_icon.csh index 351b0d600..cf12767e4 100755 --- a/PREP/icon/scripts/run_icon.csh +++ b/PREP/icon/scripts/run_icon.csh @@ -40,7 +40,7 @@ #> Horizontal grid definition setenv GRID_NAME SE53BENCH #> check GRIDDESC file for GRID_NAME options #setenv GRIDDESC $CMAQ_DATA/$APPL/met/mcip/GRIDDESC #> grid description file - setenv GRIDDESC /work/MOD3DATA/SE53BENCH/met/mcip/GRIDDESC + setenv GRIDDESC /work/MOD3DATA/SE53BENCH/met/mcipv4.5/GRIDDESC setenv IOAPI_ISPH 20 #> GCTP spheroid, use 20 for WRF-based modeling #> I/O Controls @@ -93,15 +93,15 @@ # setenv STIME 000000 if ( $ICON_TYPE == regrid ) then - setenv CTM_CONC_1 /work/MOD3EVAL/sjr/CCTM_CONC_v53_intel18.0_2016_CONUS_test_${YYYYMMDD}.nc + setenv CTM_CONC_1 /work/MOD3EVAL/sjr/CCTM_CONC_v53beta2_intel17.0_HEMIS_cb6r3m_ae7_kmtbr_m3dry_2016_quarterly_av.nc setenv MET_CRO_3D_CRS /work/MOD3DATA/2016_12US1/met/mcip_v43_wrf_v381_ltng/METCRO3D.12US1.35L.${YYMMDD} - setenv MET_CRO_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcip/METCRO3D_${YYMMDD}.nc + setenv MET_CRO_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcipv4.5/METCRO3D_${YYMMDD}.nc setenv INIT_CONC_1 "$OUTDIR/ICON_${VRSN}_${APPL}_${ICON_TYPE}_${YYYYMMDD} -v" endif if ( $ICON_TYPE == profile ) then setenv IC_PROFILE $BLD/avprofile_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv - setenv MET_CRO_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcip/METCRO3D_${YYMMDD}.nc + setenv MET_CRO_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcipv4.5/METCRO3D_${YYMMDD}.nc setenv INIT_CONC_1 "$OUTDIR/ICON_${VRSN}_${APPL}_${ICON_TYPE}_${YYYYMMDD} -v" endif From 7b4e21bd9665b284227fddbbc0f66f8b343e9412 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Tue, 3 Sep 2024 11:37:23 -0400 Subject: [PATCH 173/375] Ensure CLNO2 is output to WETDEP1 and DRYDEP for cb6r5 and saprc mechanisms PR #1063 from last fall made several updates to v5.5 SpecDef_Dep files to make them more consistent with new NADP wet deposition and field scale dry deposition measurements. Updates included adding CLNO2 to the calculation of WD_OXN_OTHR and DD_OXN_OTHR. Inadvertently the GC namelist files for cb6r3_ae7_aq, cb6r5_ae7_aq, cb6r5_ae7_aqkmt2, cb6r5m_ae7_aq were not updated to output CLNO2 to the WETDEP1 file. Also the GC namelist files for saprc07tc_ae6, saprc07tic_ae7i, saprc07tic_ae7i_aqkmt2 were not set up to output CLNO2 to the DRYDEP file. This PR updates all of the cb6r3, cb6r5, and saprc GC namelist files so that CLNO2 is written to both DRYDEP and WETDEP1 output files so that this species is available when using our default deposition specdef files with the combine utility. This change ensures that CLNO2 is written to the WETDEP1 and DRYDEP output files for cb6r3, cb6r5, and saprc mechanisms. There are no other changes to model output. Without this change, running our default combine scripts for cb6r3, cb6r5, and saprc will produce COMBINE_DEP files with missing time steps for all but the first hour of each day. Changes to be committed: modified: cb6r3_ae7_aq/GC_cb6r3_ae7_aq.nml modified: cb6r5_ae7_aq/GC_cb6r5_ae7_aq.nml modified: cb6r5_ae7_aqkmt2/GC_cb6r5_ae7_aq.nml modified: cb6r5m_ae7_aq/GC_cb6r5m_ae7_aq.nml modified: saprc07tc_ae6_aq/GC_saprc07tc_ae6_aq.nml modified: saprc07tic_ae7i_aq/GC_saprc07tic_ae7i_aq.nml modified: saprc07tic_ae7i_aqkmt2/GC_saprc07tic_ae7i_aq.nml --- CCTM/src/MECHS/cb6r3_ae7_aq/GC_cb6r3_ae7_aq.nml | 2 +- CCTM/src/MECHS/cb6r5_ae7_aq/GC_cb6r5_ae7_aq.nml | 2 +- CCTM/src/MECHS/cb6r5_ae7_aqkmt2/GC_cb6r5_ae7_aq.nml | 2 +- CCTM/src/MECHS/cb6r5m_ae7_aq/GC_cb6r5m_ae7_aq.nml | 2 +- CCTM/src/MECHS/saprc07tc_ae6_aq/GC_saprc07tc_ae6_aq.nml | 2 +- CCTM/src/MECHS/saprc07tic_ae7i_aq/GC_saprc07tic_ae7i_aq.nml | 2 +- CCTM/src/MECHS/saprc07tic_ae7i_aqkmt2/GC_saprc07tic_ae7i_aq.nml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CCTM/src/MECHS/cb6r3_ae7_aq/GC_cb6r3_ae7_aq.nml b/CCTM/src/MECHS/cb6r3_ae7_aq/GC_cb6r3_ae7_aq.nml index ed587edc8..41f5f0232 100644 --- a/CCTM/src/MECHS/cb6r3_ae7_aq/GC_cb6r3_ae7_aq.nml +++ b/CCTM/src/MECHS/cb6r3_ae7_aq/GC_cb6r3_ae7_aq.nml @@ -98,7 +98,7 @@ GC_SPECIES_DATA = 'CLO' , 51.5 ,'' ,-1 ,'' ,-1 ,'VD_CLO' , 1 ,'CLO' , 1 ,'' ,'' ,'YES' ,'' ,'' ,'Yes', 'FMCL' , 64.5 ,'' ,-1 ,'' ,-1 ,'VD_FMCL' , 1 ,'FMCL' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'HCL' , 36.5 ,'' ,-1 ,'' ,-1 ,'VD_HCL' , 1 ,'HCL' , 1 ,'HCL' ,'HCL' ,'Yes' ,'Yes' ,'Yes' ,'Yes', -'CLNO2' , 81.5 ,'' ,-1 ,'' ,-1 ,'VD_CLNO2' , 1 ,'NITRYL_CHLORIDE' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'' ,'Yes', +'CLNO2' , 81.5 ,'' ,-1 ,'' ,-1 ,'VD_CLNO2' , 1 ,'NITRYL_CHLORIDE' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'CLNO3' , 97.5 ,'' ,-1 ,'' ,-1 ,'VD_CLNO3' , 1 ,'CLNO3' , 1 ,'CLNO3' ,'' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'SESQ' ,204.0 ,'' ,-1 ,'' ,-1 ,'VD_SESQ' , 1 ,'PINENE' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'' ,'Yes', 'SESQRXN' ,204.0 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'SESQRXN' ,'' ,'' ,'' ,'' ,'' , diff --git a/CCTM/src/MECHS/cb6r5_ae7_aq/GC_cb6r5_ae7_aq.nml b/CCTM/src/MECHS/cb6r5_ae7_aq/GC_cb6r5_ae7_aq.nml index 82dc43739..f11012abc 100644 --- a/CCTM/src/MECHS/cb6r5_ae7_aq/GC_cb6r5_ae7_aq.nml +++ b/CCTM/src/MECHS/cb6r5_ae7_aq/GC_cb6r5_ae7_aq.nml @@ -98,7 +98,7 @@ GC_SPECIES_DATA = 'CLO' , 51.5 ,'' ,-1 ,'' ,-1 ,'VD_CLO' , 1 ,'CLO' , 1 ,'' ,'' ,'YES' ,'' ,'' ,'Yes', 'FMCL' , 64.5 ,'' ,-1 ,'' ,-1 ,'VD_FMCL' , 1 ,'FMCL' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'HCL' , 36.5 ,'' ,-1 ,'' ,-1 ,'VD_HCL' , 1 ,'HCL' , 1 ,'HCL' ,'HCL' ,'Yes' ,'Yes' ,'Yes' ,'Yes', -'CLNO2' , 81.5 ,'' ,-1 ,'' ,-1 ,'VD_CLNO2' , 1 ,'NITRYL_CHLORIDE' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'' ,'Yes', +'CLNO2' , 81.5 ,'' ,-1 ,'' ,-1 ,'VD_CLNO2' , 1 ,'NITRYL_CHLORIDE' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'CLNO3' , 97.5 ,'' ,-1 ,'' ,-1 ,'VD_CLNO3' , 1 ,'CLNO3' , 1 ,'CLNO3' ,'' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'SESQ' ,204.0 ,'' ,-1 ,'' ,-1 ,'VD_SESQ' , 1 ,'PINENE' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'' ,'Yes', 'SESQRXN' ,204.0 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'SESQRXN' ,'' ,'' ,'' ,'' ,'' , diff --git a/CCTM/src/MECHS/cb6r5_ae7_aqkmt2/GC_cb6r5_ae7_aq.nml b/CCTM/src/MECHS/cb6r5_ae7_aqkmt2/GC_cb6r5_ae7_aq.nml index fe809821f..2e64b42c2 100644 --- a/CCTM/src/MECHS/cb6r5_ae7_aqkmt2/GC_cb6r5_ae7_aq.nml +++ b/CCTM/src/MECHS/cb6r5_ae7_aqkmt2/GC_cb6r5_ae7_aq.nml @@ -98,7 +98,7 @@ GC_SPECIES_DATA = 'CLO' , 51.5 ,'' ,-1 ,'' ,-1 ,'VD_CLO' , 1 ,'CLO' , 1 ,'' ,'' ,'YES' ,'' ,'' ,'Yes', 'FMCL' , 64.5 ,'' ,-1 ,'' ,-1 ,'VD_FMCL' , 1 ,'FMCL' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'HCL' , 36.5 ,'' ,-1 ,'' ,-1 ,'VD_HCL' , 1 ,'HCL' , 1 ,'HCL' ,'HCL' ,'Yes' ,'Yes' ,'Yes' ,'Yes', -'CLNO2' , 81.5 ,'' ,-1 ,'' ,-1 ,'VD_CLNO2' , 1 ,'NITRYL_CHLORIDE' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'' ,'Yes', +'CLNO2' , 81.5 ,'' ,-1 ,'' ,-1 ,'VD_CLNO2' , 1 ,'NITRYL_CHLORIDE' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'CLNO3' , 97.5 ,'' ,-1 ,'' ,-1 ,'VD_CLNO3' , 1 ,'CLNO3' , 1 ,'CLNO3' ,'' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'SESQ' ,204.0 ,'' ,-1 ,'' ,-1 ,'VD_SESQ' , 1 ,'PINENE' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'' ,'Yes', 'SESQRXN' ,204.0 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'SESQRXN' ,'' ,'' ,'' ,'' ,'' , diff --git a/CCTM/src/MECHS/cb6r5m_ae7_aq/GC_cb6r5m_ae7_aq.nml b/CCTM/src/MECHS/cb6r5m_ae7_aq/GC_cb6r5m_ae7_aq.nml index 95883d579..3662e09a7 100644 --- a/CCTM/src/MECHS/cb6r5m_ae7_aq/GC_cb6r5m_ae7_aq.nml +++ b/CCTM/src/MECHS/cb6r5m_ae7_aq/GC_cb6r5m_ae7_aq.nml @@ -98,7 +98,7 @@ GC_SPECIES_DATA = 'CLO' , 51.5 ,'' ,-1 ,'' ,-1 ,'VD_CLO' , 1 ,'CLO' , 1 ,'' ,'' ,'Yes' ,'' ,'' ,'Yes', 'FMCL' , 64.5 ,'' ,-1 ,'' ,-1 ,'VD_FMCL' , 1 ,'FMCL' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'HCL' , 36.5 ,'' ,-1 ,'' ,-1 ,'VD_HCL' , 1 ,'HCL' , 1 ,'HCL' ,'HCL' ,'Yes' ,'Yes' ,'Yes' ,'Yes', -'CLNO2' , 81.5 ,'' ,-1 ,'' ,-1 ,'VD_CLNO2' , 1 ,'NITRYL_CHLORIDE' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'' ,'Yes', +'CLNO2' , 81.5 ,'' ,-1 ,'' ,-1 ,'VD_CLNO2' , 1 ,'NITRYL_CHLORIDE' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'CLNO3' , 97.5 ,'' ,-1 ,'' ,-1 ,'VD_CLNO3' , 1 ,'CLNO3' , 1 ,'CLNO3' ,'' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'SESQ' ,204.0 ,'' ,-1 ,'' ,-1 ,'VD_SESQ' , 1 ,'PINENE' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'' ,'Yes', 'SESQRXN' ,204.0 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'SESQRXN' ,'' ,'' ,'' ,'' ,'' , diff --git a/CCTM/src/MECHS/saprc07tc_ae6_aq/GC_saprc07tc_ae6_aq.nml b/CCTM/src/MECHS/saprc07tc_ae6_aq/GC_saprc07tc_ae6_aq.nml index dd3e6b867..0e4679c07 100644 --- a/CCTM/src/MECHS/saprc07tc_ae6_aq/GC_saprc07tc_ae6_aq.nml +++ b/CCTM/src/MECHS/saprc07tc_ae6_aq/GC_saprc07tc_ae6_aq.nml @@ -140,7 +140,7 @@ GC_SPECIES_DATA = 'CL' , 35.5 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,'' ,'' ,'' ,'' ,'Yes', 'CLNO' , 65.5 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'NITROSYL_CHLORID', 1 ,'' ,'' ,'Yes' ,'' ,'Yes' ,'Yes', 'CLONO' , 81.5 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,'' ,'Yes' ,'' ,'' ,'Yes', -'CLNO2' , 81.5 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'NITRYL_CHLORIDE' , 1 ,'' ,'' ,'Yes' ,'' ,'Yes' ,'Yes', +'CLNO2' , 81.5 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'NITRYL_CHLORIDE' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'HCL' , 36.5 ,'' ,-1 ,'' ,-1 ,'VD_HCL' , 1 ,'HCL' , 1 ,'HCL' ,'HCL' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'CLO' , 51.5 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,'' ,'' ,'' ,'' ,'Yes', 'CLONO2' , 97.5 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,'' ,'Yes' ,'' ,'' ,'Yes', diff --git a/CCTM/src/MECHS/saprc07tic_ae7i_aq/GC_saprc07tic_ae7i_aq.nml b/CCTM/src/MECHS/saprc07tic_ae7i_aq/GC_saprc07tic_ae7i_aq.nml index eadabcbab..516d64c14 100644 --- a/CCTM/src/MECHS/saprc07tic_ae7i_aq/GC_saprc07tic_ae7i_aq.nml +++ b/CCTM/src/MECHS/saprc07tic_ae7i_aq/GC_saprc07tic_ae7i_aq.nml @@ -138,7 +138,7 @@ GC_SPECIES_DATA = 'CL' , 35.50 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,'' ,'' ,'' ,'' ,'Yes', 'CLNO' , 65.50 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'NITROSYL_CHLORID', 1 ,'' ,'' ,'Yes' ,'' ,'Yes' ,'Yes', 'CLONO' , 81.50 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,'' ,'Yes' ,'' ,'' ,'Yes', -'CLNO2' , 81.50 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'NITRYL_CHLORIDE' , 1 ,'' ,'' ,'Yes' ,'' ,'Yes' ,'Yes', +'CLNO2' , 81.50 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'NITRYL_CHLORIDE' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'HCL' , 36.50 ,'' ,-1 ,'' ,-1 ,'VD_HCL' , 1 ,'HCL' , 1 ,'HCL' ,'HCL' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'CLO' , 51.50 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,'' ,'' ,'' ,'' ,'Yes', 'CLONO2' , 97.45 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,'' ,'Yes' ,'' ,'' ,'Yes', diff --git a/CCTM/src/MECHS/saprc07tic_ae7i_aqkmt2/GC_saprc07tic_ae7i_aq.nml b/CCTM/src/MECHS/saprc07tic_ae7i_aqkmt2/GC_saprc07tic_ae7i_aq.nml index b5cf820a8..14388665e 100644 --- a/CCTM/src/MECHS/saprc07tic_ae7i_aqkmt2/GC_saprc07tic_ae7i_aq.nml +++ b/CCTM/src/MECHS/saprc07tic_ae7i_aqkmt2/GC_saprc07tic_ae7i_aq.nml @@ -138,7 +138,7 @@ GC_SPECIES_DATA = 'CL' , 35.50 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,'' ,'' ,'' ,'' ,'Yes', 'CLNO' , 65.50 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'NITROSYL_CHLORID', 1 ,'' ,'' ,'Yes' ,'' ,'Yes' ,'Yes', 'CLONO' , 81.50 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,'' ,'Yes' ,'' ,'' ,'Yes', -'CLNO2' , 81.50 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'NITRYL_CHLORIDE' , 1 ,'' ,'' ,'Yes' ,'' ,'Yes' ,'Yes', +'CLNO2' , 81.50 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'NITRYL_CHLORIDE' , 1 ,'' ,'' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'HCL' , 36.50 ,'' ,-1 ,'' ,-1 ,'VD_HCL' , 1 ,'HCL' , 1 ,'HCL' ,'HCL' ,'Yes' ,'Yes' ,'Yes' ,'Yes', 'CLO' , 51.50 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,'' ,'' ,'' ,'' ,'Yes', 'CLONO2' , 97.45 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,-1 ,'' ,'' ,'Yes' ,'' ,'' ,'Yes', From 98b8bd7391dcbb45aa373713cde3c38bbabfa2c9 Mon Sep 17 00:00:00 2001 From: fisidi <47453034+fisidi@users.noreply.github.com> Date: Tue, 3 Sep 2024 12:04:12 -0400 Subject: [PATCH 174/375] Update CMAQ_UG_appendixA_model_options.md Copysrc update --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index 46583cd70..36537954f 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -154,7 +154,7 @@ The following options are invoked by uncommenting the line in the CCTM build scr Uncomment to use an existing BLDMAKE executable to build CCTM executable. If commented out, recompile BLDMAKE utility from the source. - `CopySrc` - Uncomment to copy the source code into a working build (BLD) directory. If commented, only the compiled object and executable files will be placed in the BLD directory. + Uncomment to copy the source code into a working build (BLD) directory. Currently, this option cannot be commented out to successfully compile the model. - `MakeFileOnly` Uncomment to build a Makefile but to not compile the executable. The Makefile will be located in the BLD directory and can subsequently be used to manually compile the executable by typing 'make' in the BLD direcotry. Comment out to both create a Makefile and compile the executable when invoking the bldit_cctm.csh script. From a00506568b44016e21f2615fb2f408b90ccabce2 Mon Sep 17 00:00:00 2001 From: fisidi <47453034+fisidi@users.noreply.github.com> Date: Tue, 3 Sep 2024 12:07:25 -0400 Subject: [PATCH 175/375] Update CMAQ_UG_appendixA_model_options.md Remove potvortO3 build time option --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index 36537954f..8c60f908b 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -174,8 +174,6 @@ The following options are invoked by uncommenting the line in the CCTM build scr - `build_twoway` Uncomment to build WRF-CMAQ two way model with explicit meteorological-chemical feedbacks - to build a stand-alone CMAQ, comment this option out. During run time, if you encounter any problem, please contact David Wong (wong.david@epa.gov) for specific instructions for building WRF-CMAQ. -- `potvortO3` - Uncomment to build CMAQ with potential vorticity free-troposphere O3 scaling. See [Chapter 6](../CMAQ_UG_ch06_model_configuration_options.md#613-potential-vorticity-scaling) for futher information before invoking this option. The following configuration settings may have multiple options. Select one option in the CCTM build script. From ca1ec5b75568804b77271f8b0baa1b774ae2629f Mon Sep 17 00:00:00 2001 From: fisidi <47453034+fisidi@users.noreply.github.com> Date: Tue, 3 Sep 2024 12:09:43 -0400 Subject: [PATCH 176/375] Update CMAQ_UG_appendixA_model_options.md Fix Mechanism default and pvO3. --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index 8c60f908b..10f94567e 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -233,7 +233,7 @@ Calculate inline plume rise for large point sources using the Briggs algorithm a - `phot/table` calculate clear-sky photolysis rates off-line using the CMAQ program JPROC; provide daily photolysis rate look-up tables to CCTM -- `Mechanism: [default: cb05e51_ae6_aq`] +- `Mechanism: [default: cb6r5_ae7_aq`] Chemistry mechanism for gas, aerosol, and aqueous chemistry. See the [CMAQv5.3 Chemical Mechanisms Table](../../../CCTM/src/MECHS/README.md) for a listing of the mechanism choices that are available in CMAQv5.3. See [Chapter 6](../CMAQ_UG_ch06_model_configuration_options.md#610-gas-phase-chemistry) for further information. - `Tracer [default trac0] ` Specifies tracer species. Invoking inert tracer species in CMAQ requires defining the tracers using namelist files and compiling the CMAQ programs with these files. The setting for this module corresponds to the directory name in the ``$CMAQ_HOME/CCTM/src/MECHS`` directory that contains the namelist files for the tracer configuration. The default setting does not use any tracers. @@ -278,7 +278,7 @@ Calculate inline plume rise for large point sources using the Briggs algorithm a - `procan/pa` - `ModPvO3: [default: pv_o3]` - Potential vorticity parameterization for free-troposphere exchange of ozone. This option is configured using the potvorO3 variable in the CCTM build script. Do not change this module setting. See [Chapter 6](../CMAQ_UG_ch06_model_configuration_options.md#613-potential-vorticity-scaling) for further information. + Potential vorticity parameterization for free-troposphere exchange of ozone. Do not change this module setting. See [Chapter 6](../CMAQ_UG_ch06_model_configuration_options.md#613-potential-vorticity-scaling) for further information. - `pv_o3` From ae7f3753a5b068a67fe35c8f72990b23f6fe0656 Mon Sep 17 00:00:00 2001 From: fisidi <47453034+fisidi@users.noreply.github.com> Date: Tue, 3 Sep 2024 12:11:11 -0400 Subject: [PATCH 177/375] Update CMAQ_UG_appendixA_model_options.md --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index 10f94567e..144e888d2 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -272,8 +272,7 @@ Calculate inline plume rise for large point sources using the Briggs algorithm a - `ModUtil: [default: util]` CMAQ utility modules. Do not change this module setting. - `util/util` -- -`ModPa: [default: procan/pa]` +-`ModPa: [default: procan/pa]` Process analysis is controlled in the CCTM run script. Do not change this module setting. - `procan/pa` From ba751b1a2dfbacadc503449a5c3cdb6eb3fb6ef0 Mon Sep 17 00:00:00 2001 From: fisidi <47453034+fisidi@users.noreply.github.com> Date: Tue, 3 Sep 2024 12:12:48 -0400 Subject: [PATCH 178/375] Update CMAQ_UG_appendixA_model_options.md --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index 144e888d2..06c97d68b 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -272,7 +272,8 @@ Calculate inline plume rise for large point sources using the Briggs algorithm a - `ModUtil: [default: util]` CMAQ utility modules. Do not change this module setting. - `util/util` --`ModPa: [default: procan/pa]` + +- `ModPa: [default: procan/pa]` Process analysis is controlled in the CCTM run script. Do not change this module setting. - `procan/pa` From 06bfd9b429a9c7cc64ddde73e5edae4430e5d232 Mon Sep 17 00:00:00 2001 From: Chris Nolte Date: Tue, 3 Sep 2024 12:04:37 -0400 Subject: [PATCH 179/375] update scripts from v54 to v55 --- CCTM/scripts/bldit_cctm.csh | 12 ++++++------ CCTM/scripts/bldit_mech.csh | 2 +- CCTM/scripts/isam_control.2016_12SE1.txt | 4 ++-- CCTM/scripts/isam_control.2018_12NE3.txt | 4 ++-- CCTM/scripts/run_cctm_2010_4CALIF1.csh | 7 ++++--- CCTM/scripts/run_cctm_2015_HEMI.csh | 7 ++++--- CCTM/scripts/run_cctm_2016_12US1.csh | 7 ++++--- .../run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh | 6 +++--- CCTM/scripts/run_cctm_Bench_2016_12SE1.csh | 7 ++++--- CCTM/scripts/run_cctm_Bench_2018_12NE3.WRFCMAQ.csh | 8 ++++---- CCTM/scripts/run_cctm_Bench_2018_12NE3.csh | 11 ++++++----- CCTM/scripts/run_cctm_cracmm_2018_4LISTOS1.csh | 7 ++++--- .../run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh | 7 ++++--- POST/calc_tmetric/scripts/bldit_calc_tmetric.csh | 4 ++-- POST/calc_tmetric/scripts/run_calc_tmetric.csh | 6 +++--- POST/combine/scripts/bldit_combine.csh | 4 ++-- POST/combine/scripts/run_combine.csh | 6 +++--- POST/hr2day/scripts/bldit_hr2day.csh | 4 ++-- POST/hr2day/scripts/run_hr2day.csh | 4 ++-- POST/sitecmp/scripts/bldit_sitecmp.csh | 4 ++-- POST/sitecmp/scripts/run_sitecmp_AQS_Daily.csh | 6 +++--- POST/sitecmp/scripts/run_sitecmp_AQS_Hourly.csh | 6 +++--- POST/sitecmp/scripts/run_sitecmp_CSN.csh | 6 +++--- POST/sitecmp/scripts/run_sitecmp_IMPROVE.csh | 6 +++--- POST/sitecmp/scripts/run_sitecmp_NADP.csh | 6 +++--- POST/sitecmp/scripts/run_sitecmp_SEARCH_Hourly.csh | 6 +++--- .../scripts/bldit_sitecmp_dailyo3.csh | 4 ++-- .../scripts/run_sitecmp_dailyo3_AQS.csh | 6 +++--- .../scripts/run_sitecmp_dailyo3_CASTNET.csh | 6 +++--- POST/writesite/scripts/bldit_writesite.csh | 4 ++-- POST/writesite/scripts/run_writesite.csh | 6 +++--- PREP/bcon/scripts/bldit_bcon.csh | 6 +++--- PREP/bcon/scripts/run_bcon.csh | 10 +++++----- PREP/create_omi/scripts/bldit_create_omi.csh | 6 +++--- PREP/create_omi/scripts/run_create_omi.csh | 4 ++-- PREP/icon/scripts/bldit_icon.csh | 4 ++-- PREP/icon/scripts/run_icon.csh | 6 +++--- UTIL/chemmech/scripts/bldit_chemmech.csh | 4 ++-- UTIL/chemmech/scripts/run_chemmech.csh | 2 +- UTIL/create_ebi/scripts/bldrun_create_ebi.csh | 4 ++-- .../scripts/bldrun.inline_phot_preproc.csh | 4 ++-- UTIL/jproc/scripts/bldit_jproc.csh | 6 +++--- UTIL/jproc/scripts/run_jproc.csh | 8 ++++---- config_cmaq.csh | 6 +++--- 44 files changed, 130 insertions(+), 123 deletions(-) diff --git a/CCTM/scripts/bldit_cctm.csh b/CCTM/scripts/bldit_cctm.csh index 7f4059b65..ad0cc0ca9 100755 --- a/CCTM/scripts/bldit_cctm.csh +++ b/CCTM/scripts/bldit_cctm.csh @@ -1,7 +1,7 @@ #!/bin/csh -f -# ======================= CCTMv5.4.X Build Script ========================= -# Usage: bldit.cctm >&! bldit.cctm.log +# ======================= CCTMv5.5.X Build Script ========================= +# Usage: bldit_cctm.csh >&! bldit.cctm.log # Requirements: I/O API & netCDF libraries, a Fortran compiler, # and MPI for multiprocessor computing # @@ -86,11 +86,11 @@ set make_options = "-j" #> additional options for make command if #> Working directory and Version IDs if ( $?ISAM_CCTM ) then - set VRSN = v54_ISAM #> model configuration ID for CMAQ_ISAM + set VRSN = v55_ISAM #> model configuration ID for CMAQ_ISAM else if ( $?DDM3D_CCTM ) then - set VRSN = v54_DDM3D #> model configuration ID for CMAQ_DDM + set VRSN = v55_DDM3D #> model configuration ID for CMAQ_DDM else - set VRSN = v54 #> model configuration ID for CMAQ + set VRSN = v55 #> model configuration ID for CMAQ endif set EXEC = CCTM_${VRSN}.exe #> executable name @@ -793,7 +793,7 @@ set Cfile = ${Bld}/${CFG}.bld # Config Filename cd $CMAQ_HOME/CCTM/scripts - # Downlad WRF repository from GitHub and put CMAQv5.4 into it + # Downlad WRF repository from GitHub and put CMAQv5.5 into it set WRF_BLD = BLD_WRF${WRF_VRSN}_CCTM_${VRSN}_${compilerString} setenv wrf_path ${CMAQ_HOME}/CCTM/scripts/${WRF_BLD} setenv WRF_CMAQ 1 diff --git a/CCTM/scripts/bldit_mech.csh b/CCTM/scripts/bldit_mech.csh index 673fc8d71..2adcb19c0 100755 --- a/CCTM/scripts/bldit_mech.csh +++ b/CCTM/scripts/bldit_mech.csh @@ -1,6 +1,6 @@ #!/bin/csh -f -# ================ CCTMv5.4 Mechanism Build Script ==================== +# ================ CCTMv5.5 Mechanism Build Script ==================== # Usage: bldit_mech.csh >&! bldit_mech.log # Requirements: I/O API & netCDF libraries, a Fortran compiler, # and MPI for multiprocessor computing diff --git a/CCTM/scripts/isam_control.2016_12SE1.txt b/CCTM/scripts/isam_control.2016_12SE1.txt index 2c22c0d17..496c0dba5 100644 --- a/CCTM/scripts/isam_control.2016_12SE1.txt +++ b/CCTM/scripts/isam_control.2016_12SE1.txt @@ -1,13 +1,13 @@ !!! CMAQ-ISAM tag definition control file !!! (lines begining with !!! - three exclamation marks - are ignored by the text parser)!!! !!! -!!! Example file provided with CMAQ v5.4 release +!!! Example file provided with CMAQ v5.5 release !!! 26 July 2020: Sergey L. Napelenok !!! !!! !!! The "TAG CLASSES" line defines the tag classes to track for the simulation. Species in NITRATE and VOC classes depend on the !!! the chemical mechanism used. The below definitions apply for the cb6r3_ae7_aq mechanism. These species will be tracked for -!!! each user-defiend source. +!!! each user-defined source. !!! Choose any/all from the list: !!! SULFATE - ASO4, SO2, SULF, SULRXN !!! NITRATE - ANO3, HNO3, NO, NO2, NO3, HONO, N2O5, PNA, PAN, PANX, NTR1, NTR2, INTR, CLNO2, CLNO3 diff --git a/CCTM/scripts/isam_control.2018_12NE3.txt b/CCTM/scripts/isam_control.2018_12NE3.txt index 2d9fa5442..1f17f0097 100644 --- a/CCTM/scripts/isam_control.2018_12NE3.txt +++ b/CCTM/scripts/isam_control.2018_12NE3.txt @@ -1,12 +1,12 @@ !!! CMAQ-ISAM tag definition control file !!! (lines begining with !!! - three exclamation marks - are ignored by the text parser)!!! !!! -!!! Example file provided with CMAQ v5.4 release +!!! Example file provided with CMAQ v5.5 release !!! 14 September 2022: Sergey L. Napelenok !!! !!! The "TAG CLASSES" line defines the tag classes to track for the simulation. Species in NITRATE and VOC classes depend on the !!! the chemical mechanism used. The below definitions apply for the cb6r3_ae7_aq mechanism. These species will be tracked for -!!! each user-defiend source. +!!! each user-defined source. !!! Choose any/all from the list: !!! SULFATE - ASO4, SO2, SULF, SULRXN !!! NITRATE - ANO3, HNO3, NO, NO2, NO3, HONO, N2O5, PNA, PAN, PANX, NTR1, NTR2, INTR, CLNO2, CLNO3 diff --git a/CCTM/scripts/run_cctm_2010_4CALIF1.csh b/CCTM/scripts/run_cctm_2010_4CALIF1.csh index 94819787e..090892802 100755 --- a/CCTM/scripts/run_cctm_2010_4CALIF1.csh +++ b/CCTM/scripts/run_cctm_2010_4CALIF1.csh @@ -1,7 +1,8 @@ #!/bin/csh -f -# ===================== CCTMv5.4.X Run Script ========================= -# Usage: run.cctm.csh >&! cctm_2010_4CALIF1.log & +# =================== CCTMv5.5.X Run Script ========================= +# Usage: run_cctm_2010_4CALIF1.csh >&! run_cctm_2010_4CALIF1.log & +# Slurm Usage: sbatch run_cctm_2010_4CALIF1.csh # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -33,7 +34,7 @@ echo 'Start Model Run At ' `date` cd CCTM/scripts #> Set General Parameters and Labels for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = saprc07tic_ae7i_aq #> Mechanism ID set EMIS = 2011eh_saprc_10g #> Emission Inventory Details diff --git a/CCTM/scripts/run_cctm_2015_HEMI.csh b/CCTM/scripts/run_cctm_2015_HEMI.csh index cd9fa4ff2..e08be52d5 100755 --- a/CCTM/scripts/run_cctm_2015_HEMI.csh +++ b/CCTM/scripts/run_cctm_2015_HEMI.csh @@ -1,7 +1,8 @@ #!/bin/csh -f -# ===================== CCTMv5.4.X Run Script ========================= -# Usage: run.cctm >&! cctm_2015_HEMI.log & +# ==================== CCTMv5.5.X Run Script ======================== +# Usage: run_cctm_2015_HEMI.csh >&! run_cctm_2015_HEMI.log & +# Slurm Usage: sbatch run_cctm_2015_HEMI.csh # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -33,7 +34,7 @@ echo 'Start Model Run At ' `date` cd CCTM/scripts #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r5m_ae7_aq #> Mechanism ID set APPL = 2015_HEMI #> Application Name (e.g. Gridname) diff --git a/CCTM/scripts/run_cctm_2016_12US1.csh b/CCTM/scripts/run_cctm_2016_12US1.csh index d589cc70d..e46a1e439 100755 --- a/CCTM/scripts/run_cctm_2016_12US1.csh +++ b/CCTM/scripts/run_cctm_2016_12US1.csh @@ -1,7 +1,8 @@ #!/bin/csh -f -# ===================== CCTMv5.4.X Run Script ========================= -# Usage: run.cctm >&! cctm_2016_12US1.log & +# ===================== CCTMv5.5.X Run Script ======================= +# Usage: run_cctm_2016_12US1.csh >&! run_cctm_2016_12US1.log & +# Slurm Usage: sbatch run_cctm_2016_12US1.csh # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -33,7 +34,7 @@ echo 'Start Model Run At ' `date` cd CCTM/scripts #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r5_ae7_aq #> Mechanism ID set EMIS = 2016fh #> Emission Inventory Details diff --git a/CCTM/scripts/run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh b/CCTM/scripts/run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh index 1af895b79..00106b855 100755 --- a/CCTM/scripts/run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh +++ b/CCTM/scripts/run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh @@ -1,7 +1,7 @@ #!/bin/csh -f -# ============== CCTMv5.4.X STAGE EM CRACMM 12US1 Run Script ================ -# Usage: run.cctm >&! cctm_2018_12US1_CRACMM.log & +# ============== CCTMv5.5.X STAGE EM CRACMM 12US1 Run Script ================ +# Usage: run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh >&! cctm_2018_12US1_CRACMM.log & # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -34,7 +34,7 @@ source ./config_cmaq.csh $compiler $compilerVrsn cd CCTM/scripts #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cracmm2 #> Mechanism ID set EMIS = WR705_2018gc2 #> Emission Inventory Details diff --git a/CCTM/scripts/run_cctm_Bench_2016_12SE1.csh b/CCTM/scripts/run_cctm_Bench_2016_12SE1.csh index cf0a48a6a..d7ceaaf7e 100755 --- a/CCTM/scripts/run_cctm_Bench_2016_12SE1.csh +++ b/CCTM/scripts/run_cctm_Bench_2016_12SE1.csh @@ -1,7 +1,8 @@ #!/bin/csh -f -# ===================== CCTMv5.4.X Run Script ========================= -# Usage: run.cctm >&! cctm_Bench_2016_12SE1.log & +# ===================== CCTMv5.5.X Run Script ========================= +# Usage: run_cctm_Bench_2016_12SE1.csh >&! run_cctm_Bench_2016_12SE1.log & +# Slurm Usage: sbatch run_cctm_Bench_2016_12SE1.csh # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -33,7 +34,7 @@ echo 'Start Model Run At ' `date` cd CCTM/scripts #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r5_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3.WRFCMAQ.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3.WRFCMAQ.csh index 483cb2f94..9e8932c2f 100755 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3.WRFCMAQ.csh +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3.WRFCMAQ.csh @@ -40,7 +40,7 @@ echo 'Start Model Run At ' `date` setenv CTM_DIAG_LVL 0 #> Set General Parameters and Labels for Configuring the Simulation -set VRSN = ${wrfv}54 #> Code Version +set VRSN = ${wrfv}55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r5_ae7_aq #> Mechanism ID set APPL = Bench_2018_12NE3 #> Application Name (e.g. Domain) @@ -57,7 +57,7 @@ set EXEC = wrf.exe # Set Working, Input, and Output Directories set WORKDIR = ${PWD} # Pathname of current Working Directory -set WRF_DIR = $WORKDIR/BLD_WRFv4.4_CCTM_v54_intel18.0 # Location of WRF-CMAQ Install +set WRF_DIR = $WORKDIR/BLD_WRFv4.4_CCTM_v55_intel18.0 # Location of WRF-CMAQ Install set INPDIR = ${CMAQ_DATA}/2018_12NE3 # Input directory for WRF & CMAQ set OUTPUT_ROOT = $WORKDIR # output root directory set output_direct_name = WRFCMAQ-output-${version} # Output Directory Name @@ -330,7 +330,7 @@ while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ #> Initial conditions if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ICFILE CCTM_ICON_v54_${MECH}_12NE3_20180701.nc + setenv ICFILE CCTM_ICON_${MECH}_12NE3_20180701.nc setenv INIT_MEDC_1 notused #> WRF-CMAQ Configuration @@ -354,7 +354,7 @@ while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ endif #> Boundary conditions - set BCFILE = CCTM_BCON_v54_${MECH}_12NE3_${YYYYMMDD}.nc + set BCFILE = CCTM_BCON_${MECH}_12NE3_${YYYYMMDD}.nc #> Off-line photolysis rates #set JVALfile = JTABLE_${YYYYJJJ} diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh index 6e81f58c7..2f8566224 100755 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh @@ -1,7 +1,8 @@ #!/bin/csh -f -# ===================== CCTMv5.4.X Run Script ========================= -# Usage: run.cctm >&! cctm_Bench_2018_12SE1.log & +# ===================== CCTMv5.5.X Run Script ========================= +# Usage: run_cctm_Bench_2018_12NE3.csh >&! cctm_Bench_2018_12SE1.log & +# Slurm Usage: sbatch run_cctm_Bench_2018_12NE3.csh # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -33,7 +34,7 @@ echo 'Start Model Run At ' `date` cd CCTM/scripts #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r5_ae7_aq #> Mechanism ID set APPL = Bench_2018_12NE3 #> Application Name (e.g. Gridname) @@ -291,7 +292,7 @@ while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ #> Initial conditions if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ICFILE CCTM_ICON_v54_${MECH}_12NE3_20180701.nc + setenv ICFILE CCTM_ICON_${MECH}_12NE3_20180701.nc setenv INIT_MEDC_1 notused else set ICpath = $OUTDIR @@ -300,7 +301,7 @@ while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ endif #> Boundary conditions - set BCFILE = CCTM_BCON_v54_${MECH}_12NE3_${YYYYMMDD}.nc + set BCFILE = CCTM_BCON_${MECH}_12NE3_${YYYYMMDD}.nc #> Off-line photolysis rates #set JVALfile = JTABLE_${YYYYJJJ} diff --git a/CCTM/scripts/run_cctm_cracmm_2018_4LISTOS1.csh b/CCTM/scripts/run_cctm_cracmm_2018_4LISTOS1.csh index 991adcf0d..7e5a1119d 100755 --- a/CCTM/scripts/run_cctm_cracmm_2018_4LISTOS1.csh +++ b/CCTM/scripts/run_cctm_cracmm_2018_4LISTOS1.csh @@ -1,7 +1,8 @@ #!/bin/csh -f -# ===================== CCTMv5.4.X Run Script ========================= -# Usage: run.cctm >&! cctm_v54X.log & +# ===================== CCTMv5.5.X Run Script ========================= +# Usage: run_cctm_cracmm_2018_4LISTOS1.csh >&! run_cctm_cracmm_2018_4LISTOS1.log & +# Slurm Usage: sbatch run_cctm_cracmm_2018_4LISTOS1.csh # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -33,7 +34,7 @@ echo 'Start Model Run At ' `date` cd CCTM/scripts #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cracmm2 #> Mechanism ID set EMIS = 2018ff #> Emission Inventory Details diff --git a/CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh b/CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh index 281faec0d..03ff3ce9f 100755 --- a/CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh +++ b/CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh @@ -1,7 +1,8 @@ #!/bin/csh -f -# ===================== CCTMv5.4.X Run Script ========================= -# Usage: run.cctm >&! cctm_2016_12US1.log & +# ===================== CCTMv5.5.X Run Script ========================= +# Usage: run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh !>& run_cctm_cracmm_2019_12US1_CRACMM2.log & +# Slurm Usage: sbatch run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -61,7 +62,7 @@ echo 'Start Model Run At ' `date` cd CCTM/scripts #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cracmm2 #> Mechanism ID # set EMIS = 2016fh #> Emission Inventory Details diff --git a/POST/calc_tmetric/scripts/bldit_calc_tmetric.csh b/POST/calc_tmetric/scripts/bldit_calc_tmetric.csh index 6dceafe70..6193fed63 100755 --- a/POST/calc_tmetric/scripts/bldit_calc_tmetric.csh +++ b/POST/calc_tmetric/scripts/bldit_calc_tmetric.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ==================== CALC_TMETRICv5.4.X Build Script ============== # +# ==================== CALC_TMETRICv5.5.X Build Script ============== # # Usage: bldit_calc_tmetric.csh >&! bldit_calc_tmetric.log # # Requirements: I/O API & netCDF libraries; a Fortran compiler # # # @@ -45,7 +45,7 @@ #=============================================================================== #> User choices: working directory and application ID - set VRSN = v54 #> model version + set VRSN = v55 #> model version set EXEC = calc_tmetric_${VRSN}.exe #> executable name for this application set CFG = calc_tmetric_${VRSN}.cfg #> BLDMAKE configuration file name setenv BLDER ${CMAQ_HOME}/UTIL/bldmake/bldmake_${compilerString}.exe #> location of makefile builder executable diff --git a/POST/calc_tmetric/scripts/run_calc_tmetric.csh b/POST/calc_tmetric/scripts/run_calc_tmetric.csh index 00bca12f5..577da9f49 100755 --- a/POST/calc_tmetric/scripts/run_calc_tmetric.csh +++ b/POST/calc_tmetric/scripts/run_calc_tmetric.csh @@ -1,7 +1,7 @@ #! /bin/csh -f -# ===================== CALC_TMETRIC_v5.4.X Run Script ============= -# Usage: run.calc_tmetric.csh >&! calc_tmetric.log & +# ===================== CALC_TMETRIC_v5.5.X Run Script ============= +# Usage: run_calc_tmetric.csh >&! calc_tmetric.log & # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -20,7 +20,7 @@ source ./config_cmaq.csh #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r3_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) diff --git a/POST/combine/scripts/bldit_combine.csh b/POST/combine/scripts/bldit_combine.csh index 3e9df0da5..491665721 100755 --- a/POST/combine/scripts/bldit_combine.csh +++ b/POST/combine/scripts/bldit_combine.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ==================== COMBINEv5.4.X Build Script ===================== # +# ==================== COMBINEv5.5.X Build Script ===================== # # Usage: bldit_combine.csh >&! bldit_combine.log # # Requirements: I/O API & netCDF libraries; a Fortran compiler # # # @@ -45,7 +45,7 @@ #=============================================================================== #> User choices: working directory and application ID - set VRSN = v54 #> model version + set VRSN = v55 #> model version set EXEC = combine_${VRSN}.exe #> executable name for this application set CFG = combine_${VRSN}.cfg #> BLDMAKE configuration file name setenv BLDER ${CMAQ_HOME}/UTIL/bldmake/bldmake_${compilerString}.exe #> location of makefile builder executable diff --git a/POST/combine/scripts/run_combine.csh b/POST/combine/scripts/run_combine.csh index 71755493a..c8cf92aaf 100755 --- a/POST/combine/scripts/run_combine.csh +++ b/POST/combine/scripts/run_combine.csh @@ -1,7 +1,7 @@ #! /bin/csh -f -# ====================== COMBINE_v5.4.X Run Script =================== -# Usage: run.combine.uncoupled.csh >&! combine.log & +# ====================== COMBINE_v5.5.X Run Script =================== +# Usage: run_combine.csh >&! combine.log & # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -21,7 +21,7 @@ source ./config_cmaq.csh #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r3_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) diff --git a/POST/hr2day/scripts/bldit_hr2day.csh b/POST/hr2day/scripts/bldit_hr2day.csh index 5eab99f24..bd83ede13 100755 --- a/POST/hr2day/scripts/bldit_hr2day.csh +++ b/POST/hr2day/scripts/bldit_hr2day.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ==================== HR2DAYv5.4.X Build Script =====================# +# ==================== HR2DAYv5.5.X Build Script =====================# # Usage: bldit_hr2day.csh >&! bldit_hr2day.log # # Requirements: I/O API & netCDF libraries; a Fortran compiler # # # @@ -45,7 +45,7 @@ #=============================================================================== #> User choices: working directory and application ID - set VRSN = v54 #> model version + set VRSN = v55 #> model version set EXEC = hr2day_${VRSN}.exe #> executable name for this application set CFG = hr2day_${VRSN}.cfg #> BLDMAKE configuration file name setenv BLDER ${CMAQ_HOME}/UTIL/bldmake/bldmake_${compilerString}.exe #> location of makefile builder executable diff --git a/POST/hr2day/scripts/run_hr2day.csh b/POST/hr2day/scripts/run_hr2day.csh index 096bd2eb2..6a6c4f40d 100755 --- a/POST/hr2day/scripts/run_hr2day.csh +++ b/POST/hr2day/scripts/run_hr2day.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ====================== HR2DAYv5.4.X Run Script ====================== +# ====================== HR2DAYv5.5.X Run Script ====================== # Usage: run.hr2day.csh >&! hr2day.log & # # To report problems or request help with this script/program: @@ -20,7 +20,7 @@ source ./config_cmaq.csh #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r3_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) diff --git a/POST/sitecmp/scripts/bldit_sitecmp.csh b/POST/sitecmp/scripts/bldit_sitecmp.csh index a276de249..268544f11 100755 --- a/POST/sitecmp/scripts/bldit_sitecmp.csh +++ b/POST/sitecmp/scripts/bldit_sitecmp.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ==================== SITECMPv5.4.X Build Script ===================== # +# ==================== SITECMPv5.5.X Build Script ===================== # # Usage: bldit_sitecmp.csh >&! bldit_sitecmp.log # # Requirements: I/O API & netCDF libraries; a Fortran compiler # # # @@ -46,7 +46,7 @@ #=============================================================================== #> User choices: working directory and application ID - set VRSN = v54 #> model version + set VRSN = v55 #> model version set EXEC = sitecmp_${VRSN}.exe #> executable name for this application set CFG = sitecmp_${VRSN}.cfg #> BLDMAKE configuration file name setenv BLDER ${CMAQ_HOME}/UTIL/bldmake/bldmake_${compilerString}.exe #> location of makefile builder executable diff --git a/POST/sitecmp/scripts/run_sitecmp_AQS_Daily.csh b/POST/sitecmp/scripts/run_sitecmp_AQS_Daily.csh index 9c2440902..9a9012fb5 100755 --- a/POST/sitecmp/scripts/run_sitecmp_AQS_Daily.csh +++ b/POST/sitecmp/scripts/run_sitecmp_AQS_Daily.csh @@ -1,7 +1,7 @@ #! /bin/csh -f -# ===================== SITECMP_v5.4.X Run Script ===================== -# Usage: run.sitecmp.csh >&! sitecmp.log & +# ===================== SITECMP_v5.5.X Run Script ===================== +# Usage: run_sitecmp_AQS_Daily.csh >&! sitecmp_AQS_Daily.log & # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -20,7 +20,7 @@ source ./config_cmaq.csh #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r3_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) diff --git a/POST/sitecmp/scripts/run_sitecmp_AQS_Hourly.csh b/POST/sitecmp/scripts/run_sitecmp_AQS_Hourly.csh index 98ee0cf15..50710ffd0 100755 --- a/POST/sitecmp/scripts/run_sitecmp_AQS_Hourly.csh +++ b/POST/sitecmp/scripts/run_sitecmp_AQS_Hourly.csh @@ -1,7 +1,7 @@ #! /bin/csh -f -# ===================== SITECMP_v5.4.X Run Script ===================== -# Usage: run.sitecmp.csh >&! sitecmp.log & +# ===================== SITECMP_v5.5.X Run Script ===================== +# Usage: run_sitecmp_AQS_Hourly.csh >&! sitecmp_AQS_Hourly.log & # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -20,7 +20,7 @@ source ./config_cmaq.csh #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r3_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) diff --git a/POST/sitecmp/scripts/run_sitecmp_CSN.csh b/POST/sitecmp/scripts/run_sitecmp_CSN.csh index 525bb8eba..0ef6ef40c 100755 --- a/POST/sitecmp/scripts/run_sitecmp_CSN.csh +++ b/POST/sitecmp/scripts/run_sitecmp_CSN.csh @@ -1,7 +1,7 @@ #! /bin/csh -f -# ===================== SITECMP_v5.4.X Run Script ===================== -# Usage: run.sitecmp.csh >&! sitecmp.log & +# ===================== SITECMP_v5.5.X Run Script ===================== +# Usage: run_sitecmp_CSN.csh >&! sitecmp_CSN.log & # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -20,7 +20,7 @@ source ./config_cmaq.csh #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r3_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) diff --git a/POST/sitecmp/scripts/run_sitecmp_IMPROVE.csh b/POST/sitecmp/scripts/run_sitecmp_IMPROVE.csh index 44fa788fe..4e16ba71e 100755 --- a/POST/sitecmp/scripts/run_sitecmp_IMPROVE.csh +++ b/POST/sitecmp/scripts/run_sitecmp_IMPROVE.csh @@ -1,7 +1,7 @@ #! /bin/csh -f -# ===================== SITECMP_v5.4.X Run Script ===================== -# Usage: run.sitecmp.csh >&! sitecmp.log & +# ===================== SITECMP_v5.5.X Run Script ===================== +# Usage: run_sitecmp_IMPROVED.csh >&! sitecmp_IMPROVE.log & # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -20,7 +20,7 @@ source ./config_cmaq.csh #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r3_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) diff --git a/POST/sitecmp/scripts/run_sitecmp_NADP.csh b/POST/sitecmp/scripts/run_sitecmp_NADP.csh index cc441a96b..1d5028c5b 100755 --- a/POST/sitecmp/scripts/run_sitecmp_NADP.csh +++ b/POST/sitecmp/scripts/run_sitecmp_NADP.csh @@ -1,7 +1,7 @@ #! /bin/csh -f -# ===================== SITECMP_v5.4.X Run Script =================== -# Usage: run.sitecmp.csh >&! sitecmp.log & +# ===================== SITECMP_v5.5.X Run Script =================== +# Usage: run_sitecmp_NADP.csh >&! sitecmp_NADP.log & # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -20,7 +20,7 @@ source ./config_cmaq.csh #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r3_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) diff --git a/POST/sitecmp/scripts/run_sitecmp_SEARCH_Hourly.csh b/POST/sitecmp/scripts/run_sitecmp_SEARCH_Hourly.csh index 468f5a575..03a469133 100755 --- a/POST/sitecmp/scripts/run_sitecmp_SEARCH_Hourly.csh +++ b/POST/sitecmp/scripts/run_sitecmp_SEARCH_Hourly.csh @@ -1,7 +1,7 @@ #! /bin/csh -f -# ===================== SITECMP_v5.4.X Run Script ================== -# Usage: run.sitecmp.csh >&! sitecmp.log & +# ===================== SITECMP_v5.5.X Run Script ================== +# Usage: run_sitecmp_SEARCH.csh >&! sitecmp_SEARCH.log & # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -20,7 +20,7 @@ source ./config_cmaq.csh #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r3_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) diff --git a/POST/sitecmp_dailyo3/scripts/bldit_sitecmp_dailyo3.csh b/POST/sitecmp_dailyo3/scripts/bldit_sitecmp_dailyo3.csh index eeb85dedb..f4c485816 100755 --- a/POST/sitecmp_dailyo3/scripts/bldit_sitecmp_dailyo3.csh +++ b/POST/sitecmp_dailyo3/scripts/bldit_sitecmp_dailyo3.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ==================== SITECMP_DAILYO3v5.4.X Build Script ============# +# ==================== SITECMP_DAILYO3v5.5.X Build Script ============# # Usage: bldit_sitecmp_dailyo3.csh >&! bldit_sitecmp_dailyo3.log # # Requirements: I/O API & netCDF libraries; a Fortran compiler # # # @@ -45,7 +45,7 @@ #=============================================================================== #> User choices: working directory and application ID - set VRSN = v54 #> model version + set VRSN = v55 #> model version set EXEC = sitecmp_dailyo3_${VRSN}.exe #> executable name for this application set CFG = sitecmp_dailyo3_${VRSN}.cfg #> BLDMAKE configuration file name setenv BLDER ${CMAQ_HOME}/UTIL/bldmake/bldmake_${compilerString}.exe #> location of makefile builder executable diff --git a/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_AQS.csh b/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_AQS.csh index 476dd447d..32d7385b4 100755 --- a/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_AQS.csh +++ b/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_AQS.csh @@ -1,7 +1,7 @@ #! /bin/csh -f -# ===================== SITECMP_DAILYO3_v5.4.X Run Script =========== -# Usage: run.sitecmp_dailyo3_AQS.csh >&! sitecmp_dailyo3.log & +# ===================== SITECMP_DAILYO3_v5.5.X Run Script =========== +# Usage: run_sitecmp_dailyo3_AQS.csh >&! sitecmp_dailyo3_AQS.log & # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -20,7 +20,7 @@ source ./config_cmaq.csh #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r3_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) diff --git a/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_CASTNET.csh b/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_CASTNET.csh index 066a2d878..aa10befe9 100755 --- a/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_CASTNET.csh +++ b/POST/sitecmp_dailyo3/scripts/run_sitecmp_dailyo3_CASTNET.csh @@ -1,7 +1,7 @@ #! /bin/csh -f -# ===================== SITECMP_DAILYO3_v5.4.X Run Script =========== -# Usage: run.sitecmp_dailyo3_CASTNET.csh >&! sitecmp_dailyo3.log & +# ===================== SITECMP_DAILYO3_v5.5.X Run Script =========== +# Usage: run_sitecmp_dailyo3_CASTNET.csh >&! sitecmp_dailyo3_CASTNET.log & # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -20,7 +20,7 @@ source ./config_cmaq.csh #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r3_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) diff --git a/POST/writesite/scripts/bldit_writesite.csh b/POST/writesite/scripts/bldit_writesite.csh index df40f775c..e5af26c8a 100755 --- a/POST/writesite/scripts/bldit_writesite.csh +++ b/POST/writesite/scripts/bldit_writesite.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ==================== WRITESITEv5.4.X Build Script ================= # +# ==================== WRITESITEv5.5.X Build Script ================= # # Usage: bldit_writesite.csh >&! bldit_writesite.log # # Requirements: I/O API & netCDF libraries; a Fortran compiler # # # @@ -45,7 +45,7 @@ #=============================================================================== #> User choices: working directory and application ID - set VRSN = v54 #> model version + set VRSN = v55 #> model version set EXEC = writesite_${VRSN}.exe #> executable name for this application set CFG = writesite_${VRSN}.cfg #> BLDMAKE configuration file name setenv BLDER ${CMAQ_HOME}/UTIL/bldmake/bldmake_${compilerString}.exe #> location of makefile builder executable diff --git a/POST/writesite/scripts/run_writesite.csh b/POST/writesite/scripts/run_writesite.csh index 6389a8c1a..a2d8a57ae 100755 --- a/POST/writesite/scripts/run_writesite.csh +++ b/POST/writesite/scripts/run_writesite.csh @@ -1,7 +1,7 @@ #! /bin/csh -f -# ==================== WRITESITE_v5.4.X Run Script ==================== -# Usage: run.writesite.csh >&! writesite.log & +# ==================== WRITESITE_v5.5.X Run Script ==================== +# Usage: run_writesite.csh >&! writesite.log & # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -20,7 +20,7 @@ source ./config_cmaq.csh #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r3_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) diff --git a/PREP/bcon/scripts/bldit_bcon.csh b/PREP/bcon/scripts/bldit_bcon.csh index cd87cd0a4..e58d6247b 100755 --- a/PREP/bcon/scripts/bldit_bcon.csh +++ b/PREP/bcon/scripts/bldit_bcon.csh @@ -1,7 +1,7 @@ #!/bin/csh -f -# ====================== BCONv5.4.X Build Script ====================== -# Usage: bldit_bcon.csh >&! bldit.bcon.log +# ====================== BCONv5.5.X Build Script ====================== +# Usage: bldit_bcon.csh >&! bldit_bcon.log # Requirements: I/O API & netCDF libs and a Fortran compiler # Note that this script is configured/tested for Red Hat Linux O/S # @@ -38,7 +38,7 @@ setenv REPOROOT $BCON_SRC #> Working directory and Version IDs - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set EXEC = BCON_${VRSN}.exe #> executable name for this application set CFG = BCON_${VRSN}.cfg #> BLDMAKE configuration file name diff --git a/PREP/bcon/scripts/run_bcon.csh b/PREP/bcon/scripts/run_bcon.csh index 3adbb06d7..b7c6e7788 100755 --- a/PREP/bcon/scripts/run_bcon.csh +++ b/PREP/bcon/scripts/run_bcon.csh @@ -1,7 +1,7 @@ #!/bin/csh -f -# ======================= BCONv5.4.X Run Script ======================== -# Usage: run.bcon.csh >&! bcon.log & +# ======================= BCONv5.5.X Run Script ======================== +# Usage: run_bcon.csh >&! bcon.log & # # To report problems or request help with this script/program: # http://www.cmascenter.org @@ -28,7 +28,7 @@ echo " "; echo " Input data path, CMAQ_DATA set to $CMAQ_DATA"; echo " " #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set APPL = 2016_12SE1 #> Application Name set BCTYPE = regrid #> Boundary condition type [profile|regrid] @@ -97,13 +97,13 @@ setenv CTM_CONC_1 /work/MOD3EVAL/sjr/CCTM_CONC_v53_intel18.0_2016_CONUS_test_${YYYYMMDD}.nc setenv MET_CRO_3D_CRS /work/MOD3DATA/2016_12US1/met/mcip_v43_wrf_v381_ltng/METCRO3D.12US1.35L.${YYMMDD} setenv MET_BDY_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcip/METBDY3D_${YYMMDD}.nc - setenv BNDY_CONC_1 "$OUTDIR/BCON_${VRSN}_${APPL}_${BCON_TYPE}_${YYYYMMDD} -v" + setenv BNDY_CONC_1 "$OUTDIR/BCON_${APPL}_${BCON_TYPE}_${YYYYMMDD} -v" endif if ( $BCON_TYPE == profile ) then setenv BC_PROFILE $BLD/avprofile_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv setenv MET_BDY_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcip/METBDY3D_${YYMMDD}.nc - setenv BNDY_CONC_1 "$OUTDIR/BCON_${VRSN}_${APPL}_${BCON_TYPE}_${YYYYMMDD} -v" + setenv BNDY_CONC_1 "$OUTDIR/BCON_${APPL}_${BCON_TYPE}_${YYYYMMDD} -v" endif # ===================================================================== diff --git a/PREP/create_omi/scripts/bldit_create_omi.csh b/PREP/create_omi/scripts/bldit_create_omi.csh index 4f3c84db6..51ee834cd 100755 --- a/PREP/create_omi/scripts/bldit_create_omi.csh +++ b/PREP/create_omi/scripts/bldit_create_omi.csh @@ -1,7 +1,7 @@ #! /bin/csh -f -# ==================== COMBINEv5.4.X Build Script ===================== # -# Usage: bldit_combine.csh >&! bldit_combine.log # +# ================== CREATE_OMIv5.5.X Build Script ================== # +# Usage: bldit_create_omi.csh >&! bldit_create_omi.log # # Requirements: I/O API & netCDF libraries; a Fortran compiler # # # # To report problems or request help with this script/program: # @@ -51,7 +51,7 @@ #=============================================================================== #> User choices: working directory and application ID - set VRSN = v54 #> version + set VRSN = v55 #> version set EXEC = create_omi_${VRSN}.exe #> executable name for this application set CFG = create_omi.cfg #> bldmake configuration file name diff --git a/PREP/create_omi/scripts/run_create_omi.csh b/PREP/create_omi/scripts/run_create_omi.csh index 6a0b17b49..8c51c4615 100755 --- a/PREP/create_omi/scripts/run_create_omi.csh +++ b/PREP/create_omi/scripts/run_create_omi.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ======================= CREATE_OMI 5.4.X Run Script ======================== +# ======================= CREATE_OMI 5.5.X Run Script ======================== # Usage: run_create_omi.csh >&! create_omi.log & # # To report problems or request help with this script/program: @@ -38,7 +38,7 @@ set echo echo $compilerString #define executable and its path - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set EXEC = create_omi_${VRSN}.exe # uncomment if using executable compiled with debugging flags diff --git a/PREP/icon/scripts/bldit_icon.csh b/PREP/icon/scripts/bldit_icon.csh index d6b4c88b1..b71a1dffa 100755 --- a/PREP/icon/scripts/bldit_icon.csh +++ b/PREP/icon/scripts/bldit_icon.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ====================== ICONv5.4.X Build Script ==================== +# ====================== ICONv5.5.X Build Script ==================== # Usage: bldit_icon.csh >&! bldit.icon.log # Requirements: I/O API & netCDF libs, and a Fortran compiler # Note that this script is configured/tested for Red Hat Linux O/S @@ -38,7 +38,7 @@ setenv REPOROOT $ICON_SRC #> Working directory and Version IDs - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set EXEC = ICON_${VRSN}.exe #> executable name for this application set CFG = ICON_${VRSN}.cfg #> BLDMAKE configuration file name diff --git a/PREP/icon/scripts/run_icon.csh b/PREP/icon/scripts/run_icon.csh index 351b0d600..36660b475 100755 --- a/PREP/icon/scripts/run_icon.csh +++ b/PREP/icon/scripts/run_icon.csh @@ -1,7 +1,7 @@ #!/bin/csh -f -# ======================= ICONv5.4.X Run Script ======================== -# Usage: run.icon.csh >&! icon.log & +# ======================= ICONv5.5.X Run Script ======================== +# Usage: run_icon.csh >&! icon.log & # # To report problems or request help with this script/program: # http://www.cmascenter.org @@ -28,7 +28,7 @@ echo " "; echo " Input data path, CMAQ_DATA set to $CMAQ_DATA"; echo " " #> Set General Parameters for Configuring the Simulation - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version set APPL = 2016_12SE1 #> Application Name set ICTYPE = regrid #> Initial conditions type [profile|regrid] diff --git a/UTIL/chemmech/scripts/bldit_chemmech.csh b/UTIL/chemmech/scripts/bldit_chemmech.csh index a99b75249..db7410f5a 100755 --- a/UTIL/chemmech/scripts/bldit_chemmech.csh +++ b/UTIL/chemmech/scripts/bldit_chemmech.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ================== CHEMMECHv5.4.x Build Script ==================== # +# ================== CHEMMECHv5.5.x Build Script ==================== # # Usage: bldit_chemmech.csh >&! bldit_chemmech.log # # Requirements: None # # # @@ -57,7 +57,7 @@ #=============================================================================== #> User choices: working directory and application ID - set VRSN = v54 #> model version + set VRSN = v55 #> model version setenv CFG CHEMMECH_${VRSN}.cfg #> BLDMAKE configuration file name! setenv CLEAR "TRUE" #> delete build directory if exists diff --git a/UTIL/chemmech/scripts/run_chemmech.csh b/UTIL/chemmech/scripts/run_chemmech.csh index 3ddfed264..d9724a37f 100755 --- a/UTIL/chemmech/scripts/run_chemmech.csh +++ b/UTIL/chemmech/scripts/run_chemmech.csh @@ -45,7 +45,7 @@ set echo setenv CMAQ_HOME $cwd/.. setenv CMAQ_REPO ${CMAQ_HOME} endif - set VRSN = v54 #> Code Version + set VRSN = v55 #> Code Version #> Check CCTM/src/MECHS for other values available for setting MECH if ( ! $?MECH ) then diff --git a/UTIL/create_ebi/scripts/bldrun_create_ebi.csh b/UTIL/create_ebi/scripts/bldrun_create_ebi.csh index 456d18b5a..615304544 100755 --- a/UTIL/create_ebi/scripts/bldrun_create_ebi.csh +++ b/UTIL/create_ebi/scripts/bldrun_create_ebi.csh @@ -1,6 +1,6 @@ #! /bin/csh -f -# ============ CREATE_EBI_SOLVERv5.4.x Build Script ================= # +# ============ CREATE_EBI_SOLVERv5.5.x Build Script ================= # # Usage: bldrun_create_ebi.csh [compiler] >&! bldrun_create_ebi.log # # Options for [compiler]: intel | gcc | pgi # # # @@ -78,7 +78,7 @@ setenv OUTDIR ${WORKDIR}/output/ebi_${MECH} endif - set VRSN = v54 #> model version + set VRSN = v55 #> model version setenv EXEC CREATE_EBI_${VRSN}.exe #> executable name for this application setenv BLDIR ${WORKDIR}/scripts/BLD_create_ebi_${VRSN}_${compilerString} diff --git a/UTIL/inline_phot_preproc/scripts/bldrun.inline_phot_preproc.csh b/UTIL/inline_phot_preproc/scripts/bldrun.inline_phot_preproc.csh index 70830910e..f71c552d7 100755 --- a/UTIL/inline_phot_preproc/scripts/bldrun.inline_phot_preproc.csh +++ b/UTIL/inline_phot_preproc/scripts/bldrun.inline_phot_preproc.csh @@ -1,6 +1,6 @@ #!/bin/csh -fx -# ============ CSQY_TABLE_PROCESSOR_v5.4.x Build Script ================= # +# ============ CSQY_TABLE_PROCESSOR_v5.5.x Build Script ================= # # Usage: bldrun_create_ebi.csh [compiler] >&! bldrun_create_ebi.log # # Options for [compiler]: intel | gcc | pgi # # # @@ -78,7 +78,7 @@ unset echo setenv OUTDIR ${WORKDIR}/output/${MECH} endif - set VRSN = v54 #> model version + set VRSN = v55 #> model version setenv EXEC CSQY_TABLE_PROCESSOR_${VRSN}.exe #> executable name for this application setenv WORKREPO ${REPOROOT} setenv BLDIR ${WORKDIR}/scripts/BLD_CSQY_TABLE_${VRSN}_${compilerString} diff --git a/UTIL/jproc/scripts/bldit_jproc.csh b/UTIL/jproc/scripts/bldit_jproc.csh index f46892221..2f53066ac 100755 --- a/UTIL/jproc/scripts/bldit_jproc.csh +++ b/UTIL/jproc/scripts/bldit_jproc.csh @@ -1,7 +1,7 @@ #!/bin/csh -f -# ====================== JPROCv5.4 Build Script ===================== -# Usage: bldit.jproc >&! bldit.jproc.log +# ====================== JPROCv5.5 Build Script ===================== +# Usage: bldit_jproc.csh >&! bldit.jproc.log # Requirements: I/O API & netCDF libraries; a Fortran compiler # # To report problems or request help with this script/program: @@ -35,7 +35,7 @@ set Mechs = $CMAQ_REPO/CCTM/src/MECHS #> location of the chemistry mechanism include files #> Working directory and application IDs - set VSRN = v54 #> model configuration ID + set VSRN = v55 #> model configuration ID setenv Vrsn ${VSRN} #> Controls for managing the source code compilation diff --git a/UTIL/jproc/scripts/run_jproc.csh b/UTIL/jproc/scripts/run_jproc.csh index 3bc411b31..34bd555b5 100755 --- a/UTIL/jproc/scripts/run_jproc.csh +++ b/UTIL/jproc/scripts/run_jproc.csh @@ -1,7 +1,7 @@ #!/bin/csh -f -# ====================== JPROCv5.4 Run Script ======================= -# Usage: run.jproc >&! jproc_V5.log & +# ====================== JPROCv5.5 Run Script ======================= +# Usage: run_jproc.csh >&! jproc_V5.log & # # To report problems or request help with this script/program: # http://www.cmascenter.org @@ -31,8 +31,8 @@ endif echo " "; echo " Input data path, CMAQ_REPO set to $CMAQ_REPO"; echo " " - set VRSN = v54 - set MECH = cb6r3_ae7_aq + set VRSN = v55 + set MECH = cb6r5_ae7_aq #set MECH = saprc07tic_ae7i_aq set APPL = ${VRSN}_${MECH} set EXEC = JPROC_${APPL}_${compiler}${compilerVrsn} #> executable name diff --git a/config_cmaq.csh b/config_cmaq.csh index 8fa182f69..159d0e7d3 100755 --- a/config_cmaq.csh +++ b/config_cmaq.csh @@ -1,6 +1,6 @@ #!/bin/csh -f -# ================= CMAQv5.4.X Configuration Script ================= # +# ================= CMAQv5.5.X Configuration Script ================= # # Requirements: I/O API & netCDF libraries # # PGI, Intel, or Gnu Fortran compiler # # MPICH for multiprocessor computing # @@ -22,7 +22,7 @@ setenv CMAQ_HOME $cwd # CMAQ_REPO - this is always the location of the CMAQ repository that - # the user will pull from to create exectuables. If the user is building + # the user will pull from to create executables. If the user is building # CMAQ inside the repository then it will be equal to CMAQ_HOME. If not, # the user must supply an alternative folder locaiton. setenv CMAQ_REPO $CMAQ_HOME @@ -181,7 +181,7 @@ #> Apply Specific Module and Library Location Settings for those working inside EPA # source /work/MOD3DEV/cmaq_common/cmaq_env.csh #>>> UNCOMMENT if at EPA -#> Add The Complier Version Number to the Compiler String if it's not empty +#> Add the Compiler Version Number to the Compiler String if it's not empty setenv compilerString ${compiler} if ( $compilerVrsn != "Empty" ) then setenv compilerString ${compiler}${compilerVrsn} From 32cacb8a3b15e8b6cb815c07748c9222209bea5c Mon Sep 17 00:00:00 2001 From: fisidi <47453034+fisidi@users.noreply.github.com> Date: Tue, 3 Sep 2024 13:44:17 -0400 Subject: [PATCH 180/375] Update CMAQ_UG_appendixA_model_options.md --- .../Appendix/CMAQ_UG_appendixA_model_options.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index 06c97d68b..760018853 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -294,8 +294,8 @@ Calculate inline plume rise for large point sources using the Briggs algorithm a The environment variables listed below are invoked during execution of the CCTM and are set in the CCTM run script, run_cctm.csh located under the CCTM/scripts folder. - `compiler [default: intel]` -- `compilerVrsn [default: 13.1]` -- `VRSN [default: v53]` +- `compilerVrsn [default: Empty]` +- `VRSN [default: v55]` - `PROC [default: mpi]` Sets if the CCTM will run in multi-processor or serial mode. - `mpi` @@ -304,13 +304,13 @@ Sets if the CCTM will run in multi-processor or serial mode. Run the CCTM in serial, single-processor mode. - `MECH [default: None]` CMAQ chemical mechanism. Must match `Mechanism` variable setting in the CCTM build script. See [Chapter 6](../CMAQ_UG_ch06_model_configuration_options.md#using-predefined-chemical-mechanisms) for further information. -- `APPL [default: SE53BENCH]` +- `APPL [default: none]` Application name used to label output binaries and log files. - `RUNID [default: $VRSN_compiler_APPL]` Run ID used to track version number, compiler, and application case name. - `BLD` Directory path of the built CCTM executable -- `EXEC [default: CCTM_$APPL_$EXECID]` +- `EXEC [default: CCTM_$VRSN]` The name of the CCTM executable. @@ -364,7 +364,7 @@ Sets if the CCTM will run in multi-processor or serial mode. - `TSTEP [default: 010000]` Simulation output time step interval (HHMMSS). Must be a mutiple of the run length. - `MET_TSTEP [default: time step of METCRO3D file]` - Meteorology input time step interval (HHMMSS). Users who wish to specify temporally coarser meteorology then their input meteorology may do so using this environment variable. The default value of MET_TSTEP is the time-step of the METCRO3D file (input meteorology data step). Users may however specify MET_TSTEP to be multiples of the input meterology time-step as long as they add up to the output time step (define as environmental variable TSTEP). Ex. If the meteorology files have data available at 10 minute intervals and a desired 1-hour output frequency, valid MET_STEPS are {10,20,30,30,60...} minutes. + Meteorology input time step interval (HHMMSS). Users who wish to specify temporally coarser meteorology then their input meteorology may do so using this environment variable; this environmental variable is not included in our default runscripts. The default value of MET_TSTEP is the time-step of the METCRO3D file (input meteorology data step). Users may however specify MET_TSTEP to be multiples of the input meterology time-step as long as they add up to the output time step (define as environmental variable TSTEP). Ex. If the meteorology files have data available at 10 minute intervals and a desired 1-hour output frequency, valid MET_STEPS are {10,20,30,30,60...} minutes. From 66cbe5533c57e4efd2c6c8cabf963095692e9af4 Mon Sep 17 00:00:00 2001 From: fisidi <47453034+fisidi@users.noreply.github.com> Date: Tue, 3 Sep 2024 13:46:11 -0400 Subject: [PATCH 181/375] Update CMAQ_UG_appendixA_model_options.md --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index 760018853..9c1bfb433 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -449,7 +449,7 @@ Sets if the CCTM will run in multi-processor or serial mode. - `CTM_MOSAIC [default N]` Y/N setting to ouput land use specific deposition velocities and fluxes. This option is only available when using the STAGE deposition module. See [Chapter 6](../CMAQ_UG_ch06_model_configuration_options.md#682-dry-depostion---stage) for further information. - `CTM_STAGE_P22 [default: N]` - Y/N setting to select the land use specific implementation of the Pleim et al. 2022 and v5.4 M3Dry aerosol deposition parameterization in the STAGE deposition option. See [Chapter 6](../CMAQ_UG_ch06_model_configuration_options.md#682-dry-depostion---stage) for further information. + Y/N setting to select the land use specific implementation of the Pleim et al. 2022 aerosol deposition parameterization in the STAGE deposition option. See [Chapter 6](../CMAQ_UG_ch06_model_configuration_options.md#682-dry-depostion---stage) for further information. - `CTM_STAGE_E20 [default: Y]` Y/N setting to select the land use specific and modal implementation of the Emerson et al. 2020 aerosol deposition parameterization in the STAGE deposition option. See [Chapter 6](../CMAQ_UG_ch06_model_configuration_options.md#682-dry-depostion---stage) for further information. - `CTM_STAGE_S22 [default: N]` From e1960015c87e30770afedc6bac796e32b00328c3 Mon Sep 17 00:00:00 2001 From: chogrefe Date: Tue, 3 Sep 2024 14:48:08 -0400 Subject: [PATCH 182/375] Update CMAQ_UG_ch11_ISAM.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updated CMAQv5.5 chapter 11 User’s Guide documentation to reflect that ISAM now supports apportionment of all species (depending on base model configuration) and that O3-PV is now a runtime rather than compilation option. Additional updates are still needed to discuss ISAM post-processing. --- DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md b/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md index 64c48fd3a..3b72ea5b7 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md @@ -17,7 +17,7 @@ Answering this type of question often requires running an air quality model twic Alternatively, running CMAQ with ISAM enabled allows the user the ability to calculate source attribution of a large number of sources directly by the model in one simulation. -Full model species list apportionment is currently availabe in CMAQ-ISAM, but can be specified the following Tag Classes (depending on base model configuration): +CMAQ-ISAM supports source apportionment for all modeled gas and aerosol species (depending on base model configuration). The selection of species for which source apportionment should be performed in a given simulation can be controlled through the following `TAG CLASSES`: ``` SULFATE - ASO4J, ASO4I, SO2, SULF, SULRXN @@ -158,7 +158,7 @@ The runtime options, ISAM_NOX_CASE and ISAM_VOC_CASE, determine the two settings The ISAM `SA_IOLIST` is a text file used to configure which tag classes, emissions streams, and source regions the model will track. An example of this file, `isam_control.txt`, is provided in $CMAQ_HOME/CCTM/scripts. The order and formating of this file must be kept intact, but it does allow for insertion of comment lines. -Each ISAM simulation requires the specification of the `TAG CLASSES` that the user desires to apportion. The current list includes the following choices `SULFATE, NITRATE, AMMONIUM, EC, OC, VOC, PM25_IONS, OZONE`. Species associated with each of these are provided in section 11.1. One or more of these tag classes must be specified in `SA_IOLIST`. Multiple tag classes are comma delimited. Incorrectly specified choices for this field will cause a model crash. +Each ISAM simulation requires the specification of the `TAG CLASSES` that the user desires to apportion. The full list of available tag classes (e.g. `SULFATE`, `NITRATE`, `AMMONIUM`, `EC`, `OC`, `VOC`, `PM25_IONS`, `OZONE`, `OA_TOT`, or `PM_TOT`) and the species associated with each of these are provided in section 11.1. One or more of these tag classes must be specified in `SA_IOLIST`. Multiple tag classes are comma delimited. Incorrectly specified choices for this field will cause a model crash. ``` TAG CLASSES |OZONE, SULFATE @@ -184,7 +184,7 @@ or REGION(S) |NC, SC, GA ``` -Finally, the emissions streams labels are required as the third option in the control file. Labels correspond to emissions and other input streams set in build and run scripts for the base CMAQ simulation. Additionally, it is possible to specify 'PVO3' as a stream label in order to track contribution to concentrations from upper layer injections due to potential vorticity calculations. This option also requires model compilation with the appropriate options to support these calculations. +Finally, the emissions streams labels are required as the third option in the control file. Labels correspond to emissions and other input streams set in build and run scripts for the base CMAQ simulation. Additionally, it is possible to specify 'PVO3' as a stream label in order to track contribution to concentrations from upper layer injections due to potential vorticity calculations. This option also requires enabling the corresponding run script variable to support these calculations. ``` EMIS STREAM(S) |PT_EGU, PT_NONEGU @@ -196,7 +196,7 @@ The final line in the control file needs to be kept unchanged in order to aid th ENDLIST eof ``` -In addition to the user-specified list, ISAM will alway track and output three additional default tags with every simulation and the BID tag if the simultion includes both bidirectional NH3 and the 'AMMONIUM' species class (note, that at least one valid user-specified tag must be defined, so a minimum of 4 tags are required): +In addition to the user-specified list, ISAM will alway track and output three additional default tags with every simulation and the BID tag if the simulation includes both bidirectional NH3 and the 'AMMONIUM' species class (note, that at least one valid user-specified tag must be defined, so a minimum of 4 tags are required): ``` ICO - contribution from initial conditions specified for the first day of the simulation @@ -209,7 +209,7 @@ Please, note that, currently, ISAM results for the same user defined tag may dif #### Defining ISAM Tags for In-line Sources. -The CMAQ model allows several types of emissions that are calculated in-line or during a model simulation instead of provided by the user as inputs. A simulations can use all of these inline emissions and ISAM can calculate apportionment from these sources. The former is done by setting appropriate emissions options in the CMAQ runscript. For ISAM to calculate apportionment for an in-line source, the isam control file needs to define a tagname using the correct stream name. The below table lists currently supported inline emissions streams in CMAQ: +The CMAQ model allows several types of emissions that are calculated in-line or during a model simulation instead of provided by the user as inputs. A simulation can use all of these inline emissions and ISAM can calculate apportionment from these sources. The former is done by setting appropriate emissions options in the CMAQ runscript. For ISAM to calculate apportionment for an in-line source, the isam control file needs to define a tagname using the correct stream name. The below table lists currently supported inline emissions streams in CMAQ: |**Emission Stream Name**|**Inline Emissions Source**| |-----------|------------------------| @@ -221,21 +221,21 @@ The CMAQ model allows several types of emissions that are calculated in-line or | DUST | Wind-Blown Dust Emissions | | PVO3 | Potential Vorticity Incursion* | -*Although it is not an emission stream, it is possible to tag the ozone incursions at the top of the simulated volume if the base model is compiled with potential vorticity module enabled. +*Although it is not an emission stream, it is possible to tag the ozone incursions at the top of the simulated volume if the potential vorticity option `CTM_PVO3` is activated in the run script. #### Interpretation of 'OTH' tag The OTH tag (e.g.“O3_OTH” in the ISAM benchmark) represents concentrations for that species attributed to 1) all other emissions streams, 2) precursor species not included in the specified tag class(es), and 3) other processes in the model. For item 1), this includes internally calculated emissions that a user decides to exclude from the control file (perhaps to reduce computational cost of running with tags that are not of interest to a particular application). These are things like online biogenics, online lightning, dust, etc. -For item 2), these are some secondarily produced intermidiate species that have minor impact on ozone production. +For item 2), these are some secondarily produced intermediate species that have minor impact on ozone production. For item 3), these are processes in the model that create a given species but not from the emissions streams that can be specified with the control file. For example, 'O3_OTH' includes ozone that is produced from background methane that is specified in the model as a constant. Finally, ISAM is an approximation for attribution. In the formulation, assumptions are made about which species are most important in the chemical formuation of the species being studied. For example in cb6r3 based mechanisms, peroxyl radicals from aromatic compounds affect ozone production by a small amount so ISAM neglects their contribution. The contribution to ozone from species not included in the ISAM formulation will go into 'O3_OTH', even if the emission source of these species is included in the control file. ## 11.4 ISAM Benchmark -See the [CMAQ-ISAM Benchmark Tutorial](Tutorials/CMAQ_UG_tutorial_ISAM.md) for step-by-step instructions for running the 2 day benchmark case. The input files for the CMAQv5.4 ISAM benchmark case are the same as the benchmark inputs for the base model. Output source apportionment files associated with the sample `isam_control.txt` provided in this release package are included in the benchmark outputs for the base model. +See the [CMAQ-ISAM Benchmark Tutorial](Tutorials/CMAQ_UG_tutorial_ISAM.md) for step-by-step instructions for running the 2 day benchmark case. The input files for the CMAQv5.5 ISAM benchmark case are the same as the benchmark inputs for the base model. Output source apportionment files associated with the sample `isam_control.txt` provided in this release package are included in the benchmark outputs for the base model. ## 11.5 References From ae2df13c74b2f00ace5d078317bd2875c4bc0d3a Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Tue, 3 Sep 2024 14:50:26 -0400 Subject: [PATCH 183/375] Update README.md --- README.md | 50 ++++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 1607b4b36..b6ff6f8f3 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,6 @@ CMAQv5.5 US EPA Community Multiscale Air Quality Model (CMAQ) Website: https://www.epa.gov/cmaq -[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7218076.svg)](https://doi.org/10.5281/zenodo.7218076) - CMAQ is an active open-source development project of the U.S. EPA's Office of Research and Development that consists of a suite of programs for conducting air quality model simulations. CMAQ is supported by the CMAS Center: http://www.cmascenter.org @@ -21,24 +19,22 @@ particulates, toxics, and acid deposition. ## New features in CMAQ version 5.5 include: -* - -## New features in CMAQ version 5.4 include: +* Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMM) version 2 including updated formaldehyde chemistry impacting ozone and secondary organic aerosol formation +* New support for running pre-configured global CMAQ simulations coupled with meteorology from the Model for Prediction Across Scales – Atmosphere (MPAS-A) +* Updates to source attribution estimates with the Integrated Source Apportionment Method (ISAM) model, mainly impacting coarse particles and secondary organic aerosols formed through cloud processes +* Updates to the Decoupled Direct Method (DDM) to improve second order ozone sensitivities +* Updated chemistry to properly capture photolysis effects from sub-grid clouds +* Revised algorithms for modeling dry deposition (M3DRY and STAGE updates) +* Improved accuracy and error checking for BDSNP soil NO in the MEGAN biogenic emissions algorithm +* MCIP (meteorology pre-preprocessor) updates to grid origin definition for fine scale Lambert Conformal Grids (i.e., < 4km ) +* Updates to Sulfur Tracking Model (STM) to properly attribute sulfate from gas phase chemistry +* Updates to the Explicit and Lumped Model Output (ELMO) synthesizer to fix erroneous output for several PM aggregates including PMF_OC, PMF_NCOM, TNO3 +* New shp2cmaq python tool to convert GIS shapefiles into gridded netCDF mask files that can be used for defining regions and region families with DESID and using geographic source regions when running CMAQ-ISAM -* Updated chemistry for ozone (O3) and particulate matter (PM) formation from global-to-local scales -* Introduction of the Community Regional Atmospheric Chemistry Multiphase Model (CRACMM) -* Biogenic emissions algorithm options have been expanded -* Revised algorithms for modeling the dry deposition of particles from the atmosphere (M3DRY and STAGE updates) -* Streamlined building of the coupled WRF-CMAQ system compatible with WRFv4.4+ -* Improved efficiency, accuracy, and user experience for CMAQ instrumented model extensions CMAQ-DDM-3D and CMAQ-ISAM -* Expansion of emissions diagnostic output features -* Introduction of a domain-wide Budget Reporting tool -* Online integration of common pollutant post-processing tasks (i.e. output total PM2.5 mass and more directly!) -* Community Contribution: Incorporation of the Two-Dimensional Volatility Bases Set [(2D-VBS)](https://github.com/USEPA/CMAQ/tree/2DVBS) chemical mechanism -* **See the full list of CMAQv5.4 updates on our new CMAQ Wiki page. [**CMAQv5.4 Updates**](https://github.com/USEPA/CMAQ/wiki/CMAQv5.4-Series-FAQ#do-i-need-to-update-from-v533-to-v54)** +* **See the full list of CMAQv5.5 updates on our new CMAQ Wiki page. [**CMAQv5.5 Updates**](https://github.com/USEPA/CMAQ/wiki/CMAQv5.5-Series-FAQ#do-i-need-to-update-from-v54-to-v55)** -## Important update for WRF-CMAQ users -A bug was identified within the CMAQ to WRF coupling routine (twoway_feedback.F90) where aerosol feedback information is transferred from CMAQ to WRF. In doing so, it was found that WRF was not receiving the correct aerosol feedback information due to a looping error relating to the number of layers set to 1 in some cases. The bug impacts the WRF-CMAQ coupled system in the CMAQv5.3 release series (v5.3, v5.3.1, v5.3.2, v5.3.3) when running with short wave radiative feedback. The bug was not present in prior WRF-CMAQ versions. The bugfix in CMAQv5.4 now correctly captures the variations in the aerosol optical properties and consequently the direct feedback effects through all layers. **Users of WRF-CMAQ are strongly encouraged to update to CMAQv5.4.** +## Important note for WRF-CMAQ users +Coupled WRF-CMAQv5.5 [(Wong et al., 2010)](https://doi.org/10.5194/gmd-5-299-2012) is compatible with WRF versions 4.4 to 4.5.1. EPA's testing of WRF-CMAQ has included chemical mechanisms CB6r5 and CRACMMv1 with the M3DRY dry deposition scheme. Other model options can be used with the WRF-CMAQ model but will have limited user support for issues that are encountered. ## Getting the CMAQ Repository This CMAQ Git archive is organized with each official public release stored as a branch on the main USEPA/CMAQ repository. The most recently released version of the the model will always be on the branch called 'main'. To clone code from the CMAQ Git archive, specify the branch (i.e. version number) and issue the following command from within @@ -60,17 +56,16 @@ Source code and scripts are organized as follows: ## Documentation Code documentation is included within this repository (they are version-controlled along with the code itself). -* [FAQ for upgrading to the latest CMAQ version](https://github.com/USEPA/CMAQ/wiki/CMAQv5.4-Series-FAQ) +* [FAQ for upgrading to the latest CMAQ version](https://github.com/USEPA/CMAQ/wiki/CMAQv5.5-Series-FAQ) * [CMAQv5.5 Release Notes](https://github.com/USEPA/CMAQ/wiki/CMAQ-Release-Notes) * [Tutorials](DOCS/Users_Guide/Tutorials/README.md) * [CMAQ User's Guide](DOCS/Users_Guide/README.md) -* [Developers' Guide](DOCS/Developers_Guide/CMAQ_Dev_Guide.md) - +* [Developers' Guide](DOCS/Developers_Guide/CMAQ_Dev_Guide.md) ## CMAQ Test Cases -Benchmark/tutorial data for the CMAQv5.5 release are available from the CMAS Data Warehouse. The input and output files are stored on Google Drive and on Amazon Web Services (AWS) Open Data Registry. CMAQv5.5 comes with new input and output benchmark data for July 1-2, 2018 over the Northeast US (links provided below). Tutorials are provided for using the benchmark data to test running of the base [CMAQ model](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md), [WRF-CMAQ](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md), [CMAQ-ISAM](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md), and [CMAQ-DDM-3D](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM.md). The input datasets include a grid mask file for the United States (GRIDMASK_STATES_12SE1.nc). The grid mask file is used for running the new ISAM and DDM-3D test cases, or to test out regional emissions scaling with [DESID](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md). The input datasets also include an ocean file with new variables needed to use the cb6r5_ae7 and cb6r5m_ae7 mechanisms. See the [Ocean File tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_oceanfile.md) for more information on changes to the required ocean file input in v5.4. +Benchmark/tutorial data for the CMAQv5.5 release are available from the CMAS Data Warehouse. The input and output files are stored on Google Drive and on Amazon Web Services (AWS) Open Data Registry. CMAQv5.5 comes with new input and output benchmark data for July 1-2, 2018 over the Northeast US (links provided below). Tutorials are provided for using the benchmark data to test running of the base [CMAQ model](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md) (with either the CB6r5 or CRACMMv2 mechanisms), [WRF-CMAQ](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md), and [CMAQ-ISAM](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md). The input datasets include a grid mask file for the United States (GRIDMASK_STATES_12SE1.nc). The grid mask file is used for running the new ISAM test case, or to test out regional emissions scaling with [DESID](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md). The input datasets also include an ocean file with variables needed to use the cb6r5_ae7 and cb6r5m_ae7 mechanisms. See the [Ocean File tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_oceanfile.md) for more information on changes to the required ocean file input beginning in v5.4. -In addition, a full set of inputs for 2018 are provided for the 12US1 domain (299 column x 459 row x 35 layer, 12-km horizontal grid spacing) on AWS, including emissions compatible with both the CB6r5 and CRACMM chemical mechanisms. Note that the 12US1 inputs are netCDF-4/HDF5 compressed files to substantially reduce file sizes. Through testing at the EPA, we’ve noticed that certain domains encounter model crashes from reading in large amounts of compressed netCDF data. A work around for those cases is uncompressing the data manually via [nccopy 1](https://www.unidata.ucar.edu/software/netcdf/workshops/2011/utilities/Nccopy.html) or [m3cple](https://www.cmascenter.org/ioapi/documentation/all_versions/html/M3CPLE.html) (compiled with HDF5) before running the CMAQ simulation. +In addition, a full set of inputs for 2018 are provided for the 12US1 domain (299 column x 459 row x 35 layer, 12-km horizontal grid spacing) on AWS, including emissions compatible with both the CB6r5 and CRACMMv1.0 chemical mechanisms. Note that the 12US1 inputs are netCDF-4/HDF5 compressed files to substantially reduce file sizes. Through testing at the EPA, we’ve noticed that certain domains encounter model crashes from reading in large amounts of compressed netCDF data. A work around for those cases is uncompressing the data manually via [nccopy 1](https://www.unidata.ucar.edu/software/netcdf/workshops/2011/utilities/Nccopy.html) or [m3cple](https://www.cmascenter.org/ioapi/documentation/all_versions/html/M3CPLE.html) (compiled with HDF5) before running the CMAQ simulation. |**CMAQ Version**|**Data Type (Size)**|**Domain**|**Simulation Dates**|**Data Access**| |:----:|:----:|:--------------:|:----:|:--------:| @@ -79,8 +74,15 @@ In addition, a full set of inputs for 2018 are provided for the 12US1 domain (29 |v5.4 CB6 | Input | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/LDTWKH) | |v5.4 CRACMM | Input | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/9AV907) | +## Other Online Resources +* [Resources for Running CMAQ on Amazon Web Services](https://www.epa.gov/cmaq/cmaq-resourcesutilities-model-users#cmaq-on-the-cloud) +* [Software Programs for Preparing CMAQ Inputs](https://www.epa.gov/cmaq/cmaq-resourcesutilities-model-users#prepare_cmaq_inputs) +* [Software Programs for Evaluating and Visualizing CMAQ Outputs](https://www.epa.gov/cmaq/cmaq-resourcesutilities-model-users#evaluate_visualize_cmaq) +* [2000 - 2023 air quality observation data from the CMAS Center Data Warehouse](https://drive.google.com/drive/u/1/folders/1QUlUXnHXvXz9qwePi5APzzHkiH5GWACw) - These files are formatted to be compatible with the [Atmospheric Model Evaluation Tool](https://www.epa.gov/cmaq/atmospheric-model-evaluation-tool). + ## User Support -* [Frequent CMAQ Questions](https://www.epa.gov/cmaq/frequent-cmaq-questions) are available on our website. +* [Frequent CMAQ Questions](https://www.epa.gov/cmaq/frequent-cmaq-questions) are available on our website. +* [Debugging tips](https://github.com/USEPA/CMAQ/blob/main/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_debug.md) are included with the CMAQ tutorials. * [The CMAS User Forum](https://forum.cmascenter.org/) is available for users and developers to discuss issues related to using the CMAQ system. [**Please read and follow these steps**](https://forum.cmascenter.org/t/please-read-before-posting/1321) prior to submitting new questions to the User Forum. From fc3bca567cabd39d7503bec1c60cc021d38b9391 Mon Sep 17 00:00:00 2001 From: Chris Nolte Date: Tue, 3 Sep 2024 15:17:31 -0400 Subject: [PATCH 184/375] address comments --- CCTM/scripts/run_cctm_Bench_2018_12NE3.WRFCMAQ.csh | 4 ++-- CCTM/src/util/util/log_header.F | 2 +- POST/calc_tmetric/scripts/run_calc_tmetric.csh | 2 +- POST/combine/scripts/run_combine.csh | 2 +- POST/hr2day/scripts/run_hr2day.csh | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3.WRFCMAQ.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3.WRFCMAQ.csh index 9e8932c2f..4c413f345 100755 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3.WRFCMAQ.csh +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3.WRFCMAQ.csh @@ -330,7 +330,7 @@ while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ #> Initial conditions if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ICFILE CCTM_ICON_${MECH}_12NE3_20180701.nc + setenv ICFILE CCTM_ICON_v54_${MECH}_12NE3_20180701.nc setenv INIT_MEDC_1 notused #> WRF-CMAQ Configuration @@ -354,7 +354,7 @@ while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ endif #> Boundary conditions - set BCFILE = CCTM_BCON_${MECH}_12NE3_${YYYYMMDD}.nc + set BCFILE = CCTM_BCON_v54_${MECH}_12NE3_${YYYYMMDD}.nc #> Off-line photolysis rates #set JVALfile = JTABLE_${YYYYJJJ} diff --git a/CCTM/src/util/util/log_header.F b/CCTM/src/util/util/log_header.F index e953f6b4d..74e0d1062 100644 --- a/CCTM/src/util/util/log_header.F +++ b/CCTM/src/util/util/log_header.F @@ -13,7 +13,7 @@ subroutine LOAD_HEADER( HEADER_TXT, N_TXT ) & '#================================================================================#', & '#| |#', & '#| The Community Multiscale Air Quality (CMAQ) Model |#', - & '#| Version 5.4 |#', + & '#| Version 5.5 |#', & '#| |#', & '#| Built and Maintained by the |#', & '#| Office of Research and Development |#', diff --git a/POST/calc_tmetric/scripts/run_calc_tmetric.csh b/POST/calc_tmetric/scripts/run_calc_tmetric.csh index 577da9f49..7d85e86be 100755 --- a/POST/calc_tmetric/scripts/run_calc_tmetric.csh +++ b/POST/calc_tmetric/scripts/run_calc_tmetric.csh @@ -22,7 +22,7 @@ #> Set General Parameters for Configuring the Simulation set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi - set MECH = cb6r3_ae7_aq #> Mechanism ID + set MECH = cb6r5_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) #> Define RUNID as any combination of parameters above or others. By default, diff --git a/POST/combine/scripts/run_combine.csh b/POST/combine/scripts/run_combine.csh index 08cd4a2bb..73abd13b2 100755 --- a/POST/combine/scripts/run_combine.csh +++ b/POST/combine/scripts/run_combine.csh @@ -23,7 +23,7 @@ #> Set General Parameters for Configuring the Simulation set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi - set MECH = cb6r3_ae7_aq #> Mechanism ID + set MECH = cb6r5_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) #> Define RUNID as any combination of parameters above or others. By default, diff --git a/POST/hr2day/scripts/run_hr2day.csh b/POST/hr2day/scripts/run_hr2day.csh index 6a6c4f40d..d796c8d35 100755 --- a/POST/hr2day/scripts/run_hr2day.csh +++ b/POST/hr2day/scripts/run_hr2day.csh @@ -22,7 +22,7 @@ #> Set General Parameters for Configuring the Simulation set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi - set MECH = cb6r3_ae7_aq #> Mechanism ID + set MECH = cb6r5_ae7_aq #> Mechanism ID set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) #> Define RUNID as any combination of parameters above or others. By default, From b81bdde62dd578983c340ec738658b1685f6af42 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Tue, 3 Sep 2024 16:22:48 -0400 Subject: [PATCH 185/375] Update CMAQ_UG_appendixF_elmo_output.md Updates related to references to CMAQ version 5.4. --- .../Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md index 4e97a6a91..5ce051800 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md @@ -19,16 +19,16 @@ Post-processing is still needed to concatenate days of output together onto mont ![Figure F-1](../images/FigureF-1.png) **Figure F-1. Comprehensive list of diagnostic and aggregate variables currently available in ELMO. The table headings are just for presentation. They are not equivalent to ELMO Keywords, which are discussed in section F.4** -Concentrations of scalar variables like NO, NO2, O3, ASO4J, and others are available for output to ELMO files as well. An aggregate variable for total VOC has not been provided for CMAQv5.4 because differences among chemical mechanisms are so significant. This capabality will be added in a future CMAQ version. +Concentrations of scalar variables like NO, NO2, O3, ASO4J, and others are available for output to ELMO files as well. An aggregate variable for total VOC has not been provided for CMAQv5.4 or v5.5 because differences among chemical mechanisms are so significant. This capabality will be added in a future CMAQ version. ### F.2 Relationship to previous CMAQ versions Previously, aggregate parameters like PM2.5 and Fine-mode Sulfate (ASO4I + ASO4J) were calculated offline through the COMBINE post-processing utility and documented via the species definition (SpecDef) input file for COMBINE, as depcited in Fig. F-2. -CMAQv5.4 maintains the CONC and ACONC files - they are available for use identically to CMAQv5.3.3. However, PMDIAG and APMDIAG files have been eliminated. +CMAQ versions 5.4 and later, maintain the CONC and ACONC files - they are available for use identically to CMAQv5.3.3. However, PMDIAG and APMDIAG files have been eliminated. If a user would like to continue using the COMBINE workflow to aggregate PM variables, they may output necessary variables like FPM25ACC to ELMO files and use those with CONC output. Alternatively, a user may elect to rely exclusively on ELMO output files alone and set the CONC_SPCS and AVG_CONC_SPCS variables in the CMAQ runscript to just one variable (e.g. O3) to minimize their I/O time and storage space footprint. ![Figure F-2](../images/FigureF-2b.png) -**Figure F-2. Schematic of data workflow in v5.3 and v5.4 with ELMO** +**Figure F-2. Schematic of data workflow in v5.3 and v5.4 with ELMO. (Note that v5.5 workflow is idential to v5.4.)** There are several distinct advantages to using ELMO over post-processing CONC and ACONC output with COMBINE: @@ -42,8 +42,6 @@ This resolves a potential vulnerability where, for example, the OM:OC of organic - If a user is only interested in aggregate parameters like PM25 mass, they can avoid the I/O time and storage required saving the raw output of every PM variable and then post-processing with COMBINE. This can be particularly helpful when processing 3D data. -- ELMO functionality will be critical in the future for applications like ISAM where there is a large runtime and storage penalty for outputting raw species concentrations for every emission source. This capacity is under development for CMAQv5.4.1. - - New parameters are available that were not before like N10, N20, N40 and N100, the number of particles above 10, 20, 40 and 100 nm in diameter. AOD and extinction at 550 nm have also been supported as options; these were previously only available on the photolysis diagnostic file. - Keywords are available (see section F.4) to select groups of variables of interest. From d0739dd8566f91268da78a817fdfd5bcfb5a48bd Mon Sep 17 00:00:00 2001 From: Emma DAmbro Date: Tue, 3 Sep 2024 17:12:07 -0400 Subject: [PATCH 186/375] updating references from v5.4 to v5.5 Committer: Emma DAmbro On branch v5.4_DOCS Changes to be committed: modified: ../Appendix/CMAQ_UG_appendixF_elmo_output.md modified: ../CMAQ_UG_ch04_model_inputs.md modified: ../CMAQ_UG_ch05_running_a_simulation.md modified: ../CMAQ_UG_ch06_model_configuration_options.md modified: ../CMAQ_UG_ch07_model_outputs.md modified: ../CMAQ_UG_ch10_HDDM-3D.md modified: CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md modified: CMAQ_UG_tutorial_benchmark.md --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md | 4 ++-- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 2 +- DOCS/Users_Guide/CMAQ_UG_ch05_running_a_simulation.md | 6 +++--- .../Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 2 +- DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md | 2 +- DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md | 2 +- .../Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md | 4 ++-- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md | 4 ++-- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md index 4e97a6a91..6d4831e54 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md @@ -19,11 +19,11 @@ Post-processing is still needed to concatenate days of output together onto mont ![Figure F-1](../images/FigureF-1.png) **Figure F-1. Comprehensive list of diagnostic and aggregate variables currently available in ELMO. The table headings are just for presentation. They are not equivalent to ELMO Keywords, which are discussed in section F.4** -Concentrations of scalar variables like NO, NO2, O3, ASO4J, and others are available for output to ELMO files as well. An aggregate variable for total VOC has not been provided for CMAQv5.4 because differences among chemical mechanisms are so significant. This capabality will be added in a future CMAQ version. +Concentrations of scalar variables like NO, NO2, O3, ASO4J, and others are available for output to ELMO files as well. An aggregate variable for total VOC has not been provided because differences among chemical mechanisms are so significant. This capabality will be added in a future CMAQ version. ### F.2 Relationship to previous CMAQ versions Previously, aggregate parameters like PM2.5 and Fine-mode Sulfate (ASO4I + ASO4J) were calculated offline through the COMBINE post-processing utility and documented via the species definition (SpecDef) input file for COMBINE, as depcited in Fig. F-2. -CMAQv5.4 maintains the CONC and ACONC files - they are available for use identically to CMAQv5.3.3. However, PMDIAG and APMDIAG files have been eliminated. +CMAQv5.5 maintains the CONC and ACONC files - they are available for use identically to CMAQv5.4. However, PMDIAG and APMDIAG files have been eliminated. If a user would like to continue using the COMBINE workflow to aggregate PM variables, they may output necessary variables like FPM25ACC to ELMO files and use those with CONC output. Alternatively, a user may elect to rely exclusively on ELMO output files alone and set the CONC_SPCS and AVG_CONC_SPCS variables in the CMAQ runscript to just one variable (e.g. O3) to minimize their I/O time and storage space footprint. diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index 67d26cb7d..ed91c0060 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -829,7 +829,7 @@ The STAGE_DATA section allows for the user to add species that exist in GC,TR, o 3 Used in NH3 the bidirectional exchange option. 4 Used in Hg the bidirectional exchange option. -STAGE is a tiled surface exchange option that estimates deposition and emissions by land use and area weights them to the grid cell. New in v5.4, is the option to develop custom land use mappings to reduce the redundancy in model calculations and allow the user to customize land use specific deposition for their specific ecosystem exposure or deposition needs. The MET_TO_STAGE_LU section of CMAQ_Control_STAGE namelist allows for the mapping of the meteorological model’s land use data to the user defined STAGE land use categories. These tables have been populated for WRF implimentations of MODIS, NLCD and USGS land use types and require no further modification for the default land use mapping. +STAGE is a tiled surface exchange option that estimates deposition and emissions by land use and area weights them to the grid cell. There is the option to develop custom land use mappings to reduce the redundancy in model calculations and allow the user to customize land use specific deposition for their specific ecosystem exposure or deposition needs. The MET_TO_STAGE_LU section of CMAQ_Control_STAGE namelist allows for the mapping of the meteorological model’s land use data to the user defined STAGE land use categories. These tables have been populated for WRF implimentations of MODIS, NLCD and USGS land use types and require no further modification for the default land use mapping. **Table 4-8** Variables in the MET_TO_STAGE_LU section of STAGECTRL_NML. |**Variable Name**|**Description**| diff --git a/DOCS/Users_Guide/CMAQ_UG_ch05_running_a_simulation.md b/DOCS/Users_Guide/CMAQ_UG_ch05_running_a_simulation.md index d5edafcb6..bc71c411d 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch05_running_a_simulation.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch05_running_a_simulation.md @@ -17,7 +17,7 @@ CMAQ source code can be installed either using git or from tarballs downloaded f ### 5.2.1 Git Installation -In the directory where you would like to install CMAQ, issue the following command to clone the official EPA GitHub repository for CMAQv5.4: +In the directory where you would like to install CMAQ, issue the following command to clone the official EPA GitHub repository for CMAQv5.5: `git clone -b main https://github.com/USEPA/CMAQ CMAQ_REPO` @@ -74,7 +74,7 @@ The third folder in the repository is the POST folder which contains several ver The fourth folder in the repository is the PREP folder which contains several pre-processing programs that can be run before the CCTM to prepare meteorology, initial conditions and boundary conditions inputs. Similar to the POST tools, documentation on compiling and running the programs is provided within each subfolder under PREP. -The fifth folder in the repository is the PYTOOLS folder, newly released in CMAQv5.4. This folder holds python tools relating to OCEAN file augmentation and tools relating to PREP and POST processing of inputs for CMAQ. Similar to the PREP and POST tools, documentation on how to run these tools is provided within each subfolder under PYTOOLS. +The fifth folder in the repository is the PYTOOLS folder. This folder holds python tools relating to OCEAN file augmentation and tools relating to PREP and POST processing of inputs for CMAQ. Similar to the PREP and POST tools, documentation on how to run these tools is provided within each subfolder under PYTOOLS. The last folder within the repository is the UTIL folder which contains useful utilities relating to the CMAQ program suite. An example is the bldmake utility which is used to compile the source code into executables when you use any of the build scripts in the CMAQ repository. Also included in this repository is a top-level README file with an overview of the contents of the release and two additional C-Shell scripts, `bldit_project.csh` and `config_cmaq.csh`. `bldit_project.csh` allows the user to extract the build and run scripts and compile the model outside of the repository, while `config_cmaq.csh` helps enforce consistent environment setting for the CMAQ project. Both these scripts will be discussed in the following sections. @@ -83,7 +83,7 @@ The last folder within the repository is the UTIL folder which contains useful u When cloning the repository or unpacking the tar file of the CMAQ distribution, the top-level directory is recognized by the default build and run scripts as `CMAQ_HOME` (formerly M3HOME prior to CMAQv5.2). This directory is an arbitrary base location of the CMAQ installation on your Linux system for a specific application. If the user will build and run CMAQ within the repository folder structure, then `CMAQ_HOME` does not need to be set explicitly in the `bldit_project.csh` script. If, on the other hand, the user wishes to extract the build and run scripts and compile the model outside of the repository, then `CMAQ_HOME` will need to be specified in `bldit_project.csh`. Executing `bldit_project.csh` will automatically perform this extraction and create a CMAQ folder structure under the location now specified by `CMAQ_HOME`. To perform this operation, modify the variable `CMAQ_HOME` in the `bldit_project.csh ` script to identify the folder that you would like to install the CMAQ package under. For example: ``` -set CMAQ_HOME = /home/username/CMAQ_v5.4 +set CMAQ_HOME = /home/username/CMAQ_v5.5 ``` Now execute the script: diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 398ae69e1..67bb58965 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -272,7 +272,7 @@ setenv NOAH_VERSION Y ``` Sets the correct soil hydrological properties and soil layer information needed to calculate soil NO emissions, NH3 bidirectional exchange and O3 deposition. These options are currently based on WRF 3.8.1 and earlier values for PX and CLM and WRF 4.0 for NOAH. If the land surface model is run with another look up table or parameterization, soil moisture will be constrained between saturation and residual water content from the parameterization in CMAQ. This is also the case for the m3dry deposition option, soil NO emissions, and windblown dust. -In CMAQ v5.4, the user can select one of three different aerosol deposition parameters within the STAGE deposition option. +In CMAQ v5.4 and beyond, the user can select one of three different aerosol deposition parameters within the STAGE deposition option. ``` setenv CTM_STAGE_P22 N diff --git a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md index 3cef1c541..0b57e220a 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md @@ -229,7 +229,7 @@ This optional ASCII file contains specific gridcells/timesteps in which species This optional ascii file outputs domain-wide changes for user-specified species every output time step in units of kg for gases and aerosols, number for particle number, and m2 for particle surface area. See [Chapter 9 (Process Analysis and Budget):](CMAQ_UG_ch09_process_analysis.md) for a description of the Budget Tool methods, interface, and potential applications. -In CMAQv5.4, the destination folder of this output file must be specified with the $OUTDIR environment variable in the RunScript. If this variable is not specified, the destination will be the root directory. +The destination folder of this output file must be specified with the $OUTDIR environment variable in the RunScript. If this variable is not specified, the destination will be the root directory. diff --git a/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md b/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md index d542c0169..ea443c649 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md @@ -182,7 +182,7 @@ Output Files Specific to DDM-3D Simulations ## 11.5 DDM-3D Benchmark Test Case -See the [CMAQ-DDM-3D Benchmark Tutorial](Tutorials/CMAQ_UG_tutorial_DDM3D.md) for step-by-step instructions for running the 2 day benchmark case. The input files for the CMAQv5.4 DDM-3D benchmark case are the same as the benchmark inputs for the base model. Output DDM files associated with the sample DDM control file `sensinput.2018_12NE3.dat` provided in this release package are included in the benchmark outputs for the base model. +See the [CMAQ-DDM-3D Benchmark Tutorial](Tutorials/CMAQ_UG_tutorial_DDM3D.md) for step-by-step instructions for running the 2 day benchmark case. The input files for the DDM-3D benchmark case are the same as the benchmark inputs for the base model. Output DDM files associated with the sample DDM control file `sensinput.2018_12NE3.dat` provided in this release package are included in the benchmark outputs for the base model. # 10.6 Summary diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md index 2bb1c70c4..09a52633a 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md @@ -25,7 +25,7 @@ The suggested hardware requirements for running the CMAQ Northeast Benchmark cas ## Installing WRF-CMAQ ## -In the directory where you would like to install WRF-CMAQ, create the directory issue the following command to clone the EPA GitHub repository for CMAQv5.4: +In the directory where you would like to install WRF-CMAQ, create the directory issuing the following command to clone the EPA GitHub repository for CMAQv5.5: ``` git clone -b main https://github.com/USEPA/CMAQ.git CMAQ_REPO @@ -45,7 +45,7 @@ In the top level of CMAQ_REPO, the bldit_project.csh script will automatically r In bldit_project.csh, modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: ``` -set CMAQ_HOME = [your_install_path]/CMAQv5.4 +set CMAQ_HOME = [your_install_path]/CMAQv5.5 ``` Now execute the script. ``` diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index a5bd80728..e271dc044 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -29,7 +29,7 @@ The suggested hardware requirements for running the CMAQ Southeast Benchmark cas ## Install CMAQ and Required Libraries -In the directory where you would like to install CMAQ, create the directory issue the following command to clone the EPA GitHub repository for CMAQv5.4: +In the directory where you would like to install CMAQ, create the directory issue the following command to clone the EPA GitHub repository for CMAQv5.5: ``` git clone -b main https://github.com/USEPA/CMAQ.git CMAQ_REPO @@ -54,7 +54,7 @@ In the top level of CMAQ_REPO, the bldit_project.csh script will automatically r In bldit_project.csh, modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: ``` -set CMAQ_HOME = [your_install_path]/CMAQ_v5.4 +set CMAQ_HOME = [your_install_path]/CMAQ_v5.5 ``` Now execute the script. ``` From 91d50f095164abb85d55bc04aa79171dd38e40a4 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 4 Sep 2024 10:27:38 -0400 Subject: [PATCH 187/375] Update CMAQ_UG_ch06_model_configuration_options.md --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 398ae69e1..6f121de60 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -303,7 +303,7 @@ Mapping rules are prescribed in the DESID Chemical Mapping Control File, and def If the user does not provide a Chemical Mapping Control File or the path to the file in the RunScript is incorrect, then zero emissions will be assumed for every stream. However, the configuration of various other scientific options in the RunScript (e.g. correcting for biderectional emission of fertilizer emissions) may conspire to create non-physical values for the emission rates. If the user would like all emissions set to 0, it is recommended that they use the syntax outlined in Appendix B and the DESID tutorial to do so. -![Figure 6-2](images/Figure6-1.png) +![Figure 6-2](images/Figure6-2.png) **Figure 6-2. Offline and online emission streams pass pollutant emission rates to the core CMAQ model through the DESID interface.** CMAQv5.3 introduced DESID so that the process of mapping emissions species to CMAQ species would be more transparent and flexible (see [Appendix B: Emission Control with DESID](Appendix/CMAQ_UG_appendixB_emissions_control.md)). In fact, users can now toggle, modify, and augment emissions from all available streams in order to confidently customize their simulations to the science or policy questions they are asking CMAQ to help answer. For tutorials covering specific tasks, please see the [DESID tutorial page](Tutorials/CMAQ_UG_tutorial_emissions.md). From 4ed900e9bc9987f8efa96e85ea79f35bc3b41e87 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 4 Sep 2024 10:27:57 -0400 Subject: [PATCH 188/375] Rename Figure6-1.png to Figure6-2.png --- .../images/{Figure6-1.png => Figure6-2.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename DOCS/Users_Guide/images/{Figure6-1.png => Figure6-2.png} (100%) diff --git a/DOCS/Users_Guide/images/Figure6-1.png b/DOCS/Users_Guide/images/Figure6-2.png similarity index 100% rename from DOCS/Users_Guide/images/Figure6-1.png rename to DOCS/Users_Guide/images/Figure6-2.png From 9650f1c764a10718fb7b7a3ee8ed59266427f53a Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 4 Sep 2024 10:31:26 -0400 Subject: [PATCH 189/375] Update CMAQ_UG_ch06_model_configuration_options.md --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 6f121de60..636983b0d 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -287,6 +287,7 @@ CTM_STAGE_P22 is a tiled/land use specific [Pleim et al. (2022)](https://doi.org The interaction of iodide in seawater with atmospheric ozone can enhance ozone deposition over seawater. CMAQ contains a scheme for enhanced ozone deposition over seawater ([Sarwar et al,. 2016](https://doi.org/10.1016/j.atmosenv.2016.06.072)). If the CTM_OCEAN_CHEM flag is set to N, then the model will not calculate the enhanced ozone deposition over seawater. + ## 6.9 Emissions From 99262804dd5ff2de8a48d401fdf8e57211277df8 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 4 Sep 2024 10:34:07 -0400 Subject: [PATCH 190/375] Update CMAQ_UG_ch06_model_configuration_options.md --- .../Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 636983b0d..988d4e046 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -837,6 +837,12 @@ The user can set it to N to exclude the heterogeneous production from the reacti ### 6.10.5 CRACMM Version 1.0-2.0 + + +[Return to Top](#Return_to_Top) + + + The Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMM) builds on the history of the Regional Atmospheric Chemistry Mechanism, Version 2 (RACM2) and aims to couple gas- and particle-phase chemistry by treating the entire pool of atmospheric reactive organic carbon (ROC) relevant to present-day emissions. CRACMM species were developed to represent the total emissions of ROC, considering the OH reactivity, ability to form ozone and secondary organic aerosol (SOA), and other properties of individual emitted compounds. The chemistry of CRACMM, which includes autoxidation, multigenerational oxidation, and the treatment of semivolatile and intermediate volatility compounds, was built using a variety of sources including literature and other mechanisms (RACM2, MCM, GECKO, and SAPRC18/mechgen). CRACMM is available in three versions: CRACMMv1 and CRACMMv1AMORE originally implemented in CMAQv5.4 and CRACMMv2 introduced in CMAQv5.5. The development of CRACMMv1 is described by Pye et al. (2023) and the application of CRACMMv1 within CMAQ to the northeast U.S. in summer 2018 as well as comparison with other mechanisms is presented by Place et al. (2023). CRACMMv1AMORE replaces the base isoprene chemistry of CRACMMv1 (which was ported from RACM2) with a graph theory-based condensation of a detailed isoprene mechanism developed by Prof. Faye McNeill's team at Columbia University (Wiser et al., 2023). CRACMMv2 is an update to both CRACMMv1 and CRACMMv1AMORE. Developments in CRACMMv2 targeted improvements to formaldehyde and resulted in updates in other systems as well (Skipper et al., 2024). From d2960551012f366fad7f5656f4a77985ab9a8d72 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 4 Sep 2024 10:48:41 -0400 Subject: [PATCH 191/375] Update run_bcon.csh Bringing back some updates from @edambro which were overwritten by another PR. --- PREP/bcon/scripts/run_bcon.csh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PREP/bcon/scripts/run_bcon.csh b/PREP/bcon/scripts/run_bcon.csh index c97402db5..8e023472b 100755 --- a/PREP/bcon/scripts/run_bcon.csh +++ b/PREP/bcon/scripts/run_bcon.csh @@ -96,13 +96,13 @@ if ( $BCON_TYPE == regrid ) then setenv CTM_CONC_1 /work/MOD3EVAL/sjr/CCTM_CONC_v53beta2_intel17.0_HEMIS_cb6r3m_ae7_kmtbr_m3dry_2016_quarterly_av.nc setenv MET_CRO_3D_CRS /work/MOD3DATA/2016_12US1/met/mcip_v43_wrf_v381_ltng/METCRO3D.12US1.35L.${YYMMDD} - setenv MET_BDY_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcip/METBDY3D_${YYMMDD}.nc + setenv MET_BDY_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcipv4.5/METBDY3D_${YYMMDD}.nc setenv BNDY_CONC_1 "$OUTDIR/BCON_${APPL}_${BCON_TYPE}_${YYYYMMDD} -v" endif if ( $BCON_TYPE == profile ) then setenv BC_PROFILE $BLD/avprofile_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv - setenv MET_BDY_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcip/METBDY3D_${YYMMDD}.nc + setenv MET_BDY_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcipv4.5/METBDY3D_${YYMMDD}.nc setenv BNDY_CONC_1 "$OUTDIR/BCON_${APPL}_${BCON_TYPE}_${YYYYMMDD} -v" endif From 184c76fe526e1e7ea5281565e3f16cb4920b5675 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 4 Sep 2024 10:54:23 -0400 Subject: [PATCH 192/375] Update CMAQ_UG_ch13_WRF-CMAQ.md --- DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md b/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md index 21f798e08..521f7c967 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md @@ -32,7 +32,9 @@ Hemispheric WRF-CMAQ model simulation over two decades (1990−2010) shows enhan ## 13.4 Latest WRF-CMAQ Release -Starting from WRFv4.4 and CMAQv5.4, a user can construct the coupled model with any version of WRF (v4.4 or later) and any version of CMAQ (v5.4 or later). A complete step by step build process and run instructions are provided in the [WRF-CMAQ Tutorial](Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md). +Coupled WRF-CMAQv5.5 is compatible with WRF versions 4.4 to 4.5.1. EPA's testing of WRF-CMAQ has included chemical mechanisms CB6r5 and CRACMMv1 with the M3DRY dry deposition scheme. Other model options can be used with the WRF-CMAQ model but will have limited user support for issues that are encountered. + +A complete step by step build process and run instructions are provided in the [WRF-CMAQ Tutorial](Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md). #### WRF-CMAQ bug in v5.3 series A bug was identified within the CMAQ to WRF coupling routine (twoway_feedback.F90) where aerosol feedback information is transferred from CMAQ to WRF. In doing so, it was found that WRF was not receiving the correct aerosol feedback information in some cases due to a looping error relating to the number of layers. The bug impacts the WRF-CMAQ coupled system in the CMAQv5.3 release series (v5.3, v5.3.1, v5.3.2, v5.3.3) when running with short wave radiative feedback. The bug was not present in prior WRF-CMAQ versions. The bugfix in CMAQv5.4 (and all subsequent versions) correctly captures the variations in the aerosol optical properties and consequently the direct feedback effects through all layers. **Users of WRF-CMAQv5.3 are strongly encouraged to update to CMAQv5.4 or later. See the [WRF-CMAQ Bugfix Release Note](https://github.com/kmfoley/CMAQ_Dev/wiki/CMAQv5.4-Release-Notes:-WRF-CMAQ-Coupled-Model#wrf-cmaq-model-aerosol-feedback-bugfix) for more information.** From 15ad95e3531402041d96775fc58bd4a839720b4d Mon Sep 17 00:00:00 2001 From: chogrefe Date: Wed, 4 Sep 2024 12:50:11 -0400 Subject: [PATCH 193/375] Corrected typo in Sea Spray section The sentence immediately above Table 6-2 erroneously referred to the species listed in that table as being emitted by the Dust rather than the Sea Spray module. --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 3937e5fb1..afac80961 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -581,7 +581,7 @@ Note that CMAQ employing Carbon Bond 6 version r5 with DMS and marine halogen ch Note that if the CTM_OCEAN_CHEM flag is set to N to indicate zero sea spray emissions, users should set the CTM_EMISCHK variable in the RunScript to FALSE to avoid crashing CMAQ when it cannot find species it is looking for from sea spray. -Alternatively, users can also edit the emission control file by commenting out the coarse and fine species expected for the sea spray module. The following species are emitted by the Dust module and may be referenced in the emission control file [Table 6-2](#Table6-2): +Alternatively, users can also edit the emission control file by commenting out the coarse and fine species expected for the sea spray module. The following species are emitted by the Sea Spray module and may be referenced in the emission control file [Table 6-2](#Table6-2): **Table 6-2. Aerosol Species Predicted by the Sea-Spray Aerosol Module** From 6b59332155457f6ac310a3ea7c71518d5d7b1088 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 4 Sep 2024 12:58:56 -0400 Subject: [PATCH 194/375] add MECH and DRYDEP to BLD directory name --- CCTM/scripts/bldit_cctm.csh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CCTM/scripts/bldit_cctm.csh b/CCTM/scripts/bldit_cctm.csh index 702b36ebb..46a90c86a 100755 --- a/CCTM/scripts/bldit_cctm.csh +++ b/CCTM/scripts/bldit_cctm.csh @@ -346,9 +346,9 @@ set make_options = "-j" #> additional options for make command if #> Set and create the "BLD" directory for checking out and compiling #> source code. Move current directory to that build directory. if ( $?Debug_CCTM ) then - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_debug + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug else - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString} + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} endif From 94accb9d94ee7fdf3da8e0fea98d32752eee01d4 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 4 Sep 2024 13:17:55 -0400 Subject: [PATCH 195/375] benchmark run script for CMAQv55 cb6r5 stage note: uses CMAQv54 benchmark inputs --- .../run_cctm_Bench_2018_12NE3_cb6r5_stage.csh | 818 ++++++++++++++++++ 1 file changed, 818 insertions(+) create mode 100755 CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_stage.csh diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_stage.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_stage.csh new file mode 100755 index 000000000..cc7ae7618 --- /dev/null +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_stage.csh @@ -0,0 +1,818 @@ +#!/bin/csh -f + +# ===================== CCTMv5.5.X Run Script ========================= +# Usage: run.cctm >&! cctm_Bench_2018_12SE1.log & +# +# To report problems or request help with this script/program: +# http://www.epa.gov/cmaq (EPA CMAQ Website) +# http://www.cmascenter.org (CMAS Website) +# =================================================================== + +# =================================================================== +#> Runtime Environment Options +# =================================================================== + +echo 'Start Model Run At ' `date` + +#> Toggle Diagnostic Mode which will print verbose information to +#> standard output + setenv CTM_DIAG_LVL 0 + +#> Choose compiler and set up CMAQ environment with correct +#> libraries using config.cmaq. Options: intel | gcc | pgi + if ( ! $?compiler ) then + setenv compiler intel + endif + if ( ! $?compilerVrsn ) then + setenv compilerVrsn Empty + endif + +#> Source the config.cmaq file to set the build environment + cd ../.. + source ./config_cmaq.csh $compiler $compilerVrsn + cd CCTM/scripts + +#> Set General Parameters for Configuring the Simulation + set VRSN = v55 #> Code Version + set PROC = mpi #> serial or mpi + set MECH = cb6r5_ae7_aq #> Mechanism ID + set APPL = Bench_2018_12NE3_${MECH}_stage #> Application Name (e.g. Gridname) + +#> Define RUNID as any combination of parameters above or others. By default, +#> this information will be collected into this one string, $RUNID, for easy +#> referencing in output binaries and log files as well as in other scripts. + setenv RUNID ${VRSN}_${compilerString}_${APPL} + +#> Set the build directory (this is where the CMAQ executable +#> is located by default). + set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${MECH}_stage + set EXEC = CCTM_${VRSN}.exe + +#> Output Each line of Runscript to Log File + if ( $CTM_DIAG_LVL != 0 ) set echo + +#> Set Working, Input, and Output Directories + setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. + setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory + setenv INPDIR ${CMAQ_DATA}/2018_12NE3 #> Input Directory + setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location + setenv NMLpath ${BLD} #> Location of Namelists. Common places are: + #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} + + echo "" + echo "Working Directory is $WORKDIR" + echo "Build Directory is $BLD" + echo "Output Directory is $OUTDIR" + echo "Log Directory is $LOGDIR" + echo "Executable Name is $EXEC" + +# ===================================================================== +#> CCTM Configuration Options +# ===================================================================== + +#> Set Start and End Days for looping + setenv NEW_START TRUE #> Set to FALSE for model restart + set START_DATE = "2018-07-01" #> beginning date (July 1, 2016) + set END_DATE = "2018-07-02" #> ending date (July 1, 2016) + +#> Set Timestepping Parameters +set STTIME = 000000 #> beginning GMT time (HHMMSS) +set NSTEPS = 240000 #> time duration (HHMMSS) for this run +set TSTEP = 010000 #> output time step interval (HHMMSS) + +#> Horizontal domain decomposition +if ( $PROC == serial ) then + setenv NPCOL_NPROW "1 1"; set NPROCS = 1 # single processor setting +else + @ NPCOL = 8; @ NPROW = 4 + @ NPROCS = $NPCOL * $NPROW + setenv NPCOL_NPROW "$NPCOL $NPROW"; +endif + +#> Define Execution ID: e.g. [CMAQ-Version-Info]_[User]_[Date]_[Time] +if ( ! -e ${BLD}/CCTM_${VRSN}.cfg ) then + set SHAID = "" +else + set SHAID = `grep "sha_ID" ${BLD}/CCTM_${VRSN}.cfg | cut -c 13-22` + if ( $SHAID == not_a_repo ) then + set SHAID = "" + else + set SHAID = "_sha="$SHAID + endif +endif +setenv EXECUTION_ID "CMAQ_CCTM${VRSN}${SHAID}_`id -u -n`_`date -u +%Y%m%d_%H%M%S_%N`" #> Inform IO/API of the Execution ID +echo "" +echo "---CMAQ EXECUTION ID: $EXECUTION_ID ---" + +#> Keep or Delete Existing Output Files +set CLOBBER_DATA = TRUE + +#> Logfile Options +#> Master Log File Name; uncomment to write standard output to a log, otherwise write to screen +#setenv LOGFILE $CMAQ_HOME/$RUNID.log +if (! -e $LOGDIR ) then + mkdir -p $LOGDIR +endif +setenv PRINT_PROC_TIME Y #> Print timing for all science subprocesses to Logfile + #> [ default: TRUE or Y ] +setenv STDOUT T #> Override I/O-API trying to write information to both the processor + #> logs and STDOUT [ options: T | F ] + +setenv GRID_NAME 2018_12NE3 #> check GRIDDESC file for GRID_NAME options +setenv GRIDDESC $INPDIR/GRIDDESC #> grid description file + +#> Retrieve the number of columns, rows, and layers in this simulation +set NZ = 35 +set NX = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f6` +set NY = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f7` +set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` + +#> Output Species and Layer Options + #> CONC file species; comment or set to "ALL" to write all species to CONC + # setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 FORM ISOP NH3 ANH4I ANH4J ASO4I ASO4J" + #setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC + + #> ACONC file species; comment or set to "ALL" to write all species to ACONC + #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" + setenv AVG_CONC_SPCS "ALL" + setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC + setenv AVG_FILE_ENDTIME N #> override default beginning ACONC timestamp [ default: N ] + +#> Synchronization Time Step and Tolerance Options +setenv CTM_MAXSYNC 300 #> max sync time step (sec) [ default: 720 ] +setenv CTM_MINSYNC 60 #> min sync time step (sec) [ default: 60 ] +setenv SIGMA_SYNC_TOP 0.7 #> top sigma level thru which sync step determined [ default: 0.7 ] +#setenv ADV_HDIV_LIM 0.95 #> maximum horiz. div. limit for adv step adjust [ default: 0.9 ] +setenv CTM_ADV_CFL 0.95 #> max CFL [ default: 0.75] +#setenv RB_ATOL 1.0E-09 #> global ROS3 solver absolute tolerance [ default: 1.0E-07 ] + +#> Science Options +setenv CTM_OCEAN_CHEM Y #> Flag for ocean halogen chemistry, sea spray aerosol emissions, + #> and enhanced ozone deposition over ocean waters [ default: Y ] +setenv CTM_WB_DUST N #> use inline windblown dust emissions (only for use with PX) [ default: N ] +setenv CTM_LTNG_NO N #> turn on lightning NOx [ default: N ] +setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], + #> otherwise revert to Kz0UT +setenv PX_VERSION Y #> WRF PX LSM +setenv CLM_VERSION N #> WRF CLM LSM +setenv NOAH_VERSION N #> WRF NOAH LSM +setenv CTM_ABFLUX Y #> ammonia bi-directional flux for in-line deposition + #> velocities [ default: N ] +setenv CTM_BIDI_FERT_NH3 T #> subtract fertilizer NH3 from emissions because it will be handled + #> by the BiDi calculation [ default: Y ] +setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition + #> velocities [ default: N ] +setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ] + #> please see user guide (6.10.4 Nitrous Acid (HONO)) + #> for dependency on percent urban fraction dataset +setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ] +setenv CTM_PVO3 N #> consider potential vorticity module for O3 transport from the stratosphere + #> [default: N] + +setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions with BEIS [ default: N ] +setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ] +setenv BDSNP_MEGAN N #> turns on BDSNP soil NO emissions [ default: N ] + +setenv AEROSOL_OPTICS 3 #> sets method for determining aerosol optics affecting photolysis + #> frequencies ( 3 is the default value ) + #> VALUES 1 thru 3 determined Uniformly Volume Mixed spherical + #> (1-Tabular Mie; 2-Mie Calculation; 3-Case Approx to Mie Theory) + #> VALUES 4 thru 6 attempts to use core-shell mixing model when the + #> aerosol mode has signficant black carbon core otherwise use Volume Mixed + #> model where optics determined by + #> (4-Tabular Mie; 5-Mie Calculation; 6-Case Approx to Mie Theory) + +#> Surface Tiled Aerosol and Gaseous Exchange Options +#> Only active if DepMod=stage at compile time +setenv CTM_MOSAIC N #> Output landuse specific deposition velocities [ default: N ] +setenv CTM_STAGE_P22 N #> Pleim et al. 2022 Aerosol deposition model [default: N] +setenv CTM_STAGE_E20 Y #> Emerson et al. 2020 Aerosol deposition model [default: Y] +setenv CTM_STAGE_S22 N #> Shu et al. 2022 (CMAQ v5.3) Aerosol deposition model [default: N] + +setenv IC_AERO_M2WET F #> Specify whether or not initial condition aerosol size distribution + #> is wet or dry [ default: F = dry ] +setenv BC_AERO_M2WET F #> Specify whether or not boundary condition aerosol size distribution + #> is wet or dry [ default: F = dry ] +setenv IC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from initial + #> conditions [ default: T = use aerosol surface area ] +setenv BC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from boundary + #> conditions [ default: T = use aerosol surface area ] + + +#> Vertical Extraction Options +setenv VERTEXT N +setenv VERTEXT_COORD_PATH ${WORKDIR}/lonlat.csv + +#> I/O Controls +setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ] +setenv FL_ERR_STOP N #> stop on inconsistent input files +setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ] +setenv IOAPI_OFFSET_64 YES #> support large timestep records (>2GB/timestep record) [ options: YES | NO ] +setenv IOAPI_CHECK_HEADERS N #> check file headers [ options: Y | N ] +setenv CTM_EMISCHK N #> Abort CMAQ if missing surrogates from emissions Input files + +#> Diagnostic Output Flags +setenv CTM_CKSUM Y #> checksum report [ default: Y ] +setenv CLD_DIAG N #> cloud diagnostic file [ default: N ] + +setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ] +setenv NLAYS_PHOTDIAG "1" #> Number of layers for PHOTDIAG2 and PHOTDIAG3 from + #> Layer 1 to NLAYS_PHOTDIAG [ default: all layers ] +#setenv NWAVE_PHOTDIAG "294 303 310 316 333 381 607" #> Wavelengths written for variables + #> in PHOTDIAG2 and PHOTDIAG3 + #> [ default: all wavelengths ] + +setenv CTM_SSEMDIAG N #> sea-spray emissions diagnostic file [ default: N ] +setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; + #> Ignore if CTM_WB_DUST = N +setenv CTM_DEPV_FILE N #> deposition velocities diagnostic file [ default: N ] +setenv VDIFF_DIAG_FILE N #> vdiff & possibly aero grav. sedimentation diagnostic file [ default: N ] +setenv LTNGDIAG N #> lightning diagnostic file [ default: N ] +setenv B3GTS_DIAG N #> BEIS mass emissions diagnostic file [ default: N ] +setenv CTM_WVEL Y #> save derived vertical velocity component to conc + #> file [ default: Y ] + +# ===================================================================== +#> Input Directories and Filenames +# ===================================================================== + +set ICpath = $INPDIR/icbc #> initial conditions input directory +set BCpath = $INPDIR/icbc #> boundary conditions input directory +set EMISpath = $INPDIR/emis #> gridded emissions input directory +set IN_PTpath = $INPDIR/emis #> point source emissions input directory +set IN_LTpath = $INPDIR/lightning #> lightning NOx input directory +set METpath = $INPDIR/met/mcipv5.4 #> meteorology input directory +#set JVALpath = $INPDIR/jproc #> offline photolysis rate table directory +set OMIpath = $BLD #> ozone column data for the photolysis model +set EPICpath = $INPDIR/epic #> EPIC putput for bidirectional NH3 +set SZpath = $INPDIR/surface #> surf zone file for in-line seaspray emissions + +# ===================================================================== +#> Begin Loop Through Simulation Days +# ===================================================================== +set rtarray = "" + +set TODAYG = ${START_DATE} +set TODAYJ = `date -ud "${START_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ +set START_DAY = ${TODAYJ} +set STOP_DAY = `date -ud "${END_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ +set NDAYS = 0 + +while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ + + set NDAYS = `echo "${NDAYS} + 1" | bc -l` + + #> Retrieve Calendar day Information + set YYYYMMDD = `date -ud "${TODAYG}" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD + set YYYYMM = `date -ud "${TODAYG}" +%Y%m` #> Convert YYYY-MM-DD to YYYYMM + set YYMMDD = `date -ud "${TODAYG}" +%y%m%d` #> Convert YYYY-MM-DD to YYMMDD + set MM = `date -ud "${TODAYG}" +%m` #> Convert YYYY-MM-DD to MM + set YYYYJJJ = $TODAYJ + + #> Calculate Yesterday's Date + set YESTERDAY = `date -ud "${TODAYG}-1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYJJJ + +# ===================================================================== +#> Set Output String and Propagate Model Configuration Documentation +# ===================================================================== + echo "" + echo "Set up input and output files for Day ${TODAYG}." + + #> set output file name extensions + setenv CTM_APPL ${RUNID}_${YYYYMMDD} + + #> Copy Model Configuration To Output Folder + if ( ! -d "$OUTDIR" ) mkdir -p $OUTDIR + cp $BLD/CCTM_${VRSN}.cfg $OUTDIR/CCTM_${CTM_APPL}.cfg + +# ===================================================================== +#> Input Files (Some are Day-Dependent) +# ===================================================================== + + #> Initial conditions + if ($NEW_START == true || $NEW_START == TRUE ) then + setenv ICFILE CCTM_ICON_v54_${MECH}_12NE3_20180701.nc + setenv INIT_MEDC_1 notused + else + set ICpath = $OUTDIR + setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc + setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc + endif + + #> Boundary conditions + set BCFILE = CCTM_BCON_v54_${MECH}_12NE3_${YYYYMMDD}.nc + + #> Off-line photolysis rates + #set JVALfile = JTABLE_${YYYYJJJ} + + #> Ozone column data + set OMIfile = OMI_1979_to_2019.dat + + #> Optics file + set OPTfile = PHOT_OPTICS.dat + + #> MCIP meteorology files + setenv GRID_BDY_2D $METpath/GRIDBDY2D_12NE3_${YYYYMMDD}.nc # GRID files are static, not day-specific + setenv GRID_CRO_2D $METpath/GRIDCRO2D_12NE3_${YYYYMMDD}.nc + setenv GRID_CRO_3D $METpath/GRIDCRO3D_12NE3_${YYYYMMDD}.nc + setenv GRID_DOT_2D $METpath/GRIDDOT2D_12NE3_${YYYYMMDD}.nc + setenv MET_CRO_2D $METpath/METCRO2D_12NE3_${YYYYMMDD}.nc + setenv MET_CRO_3D $METpath/METCRO3D_12NE3_${YYYYMMDD}.nc + setenv MET_DOT_3D $METpath/METDOT3D_12NE3_${YYYYMMDD}.nc + setenv MET_BDY_3D $METpath/METBDY3D_12NE3_${YYYYMMDD}.nc + setenv LUFRAC_CRO $METpath/LUFRAC_CRO_12NE3_${YYYYMMDD}.nc + + #> Control Files + #> + #> IMPORTANT NOTE + #> + #> The DESID control files defined below are an integral part of controlling the behavior of the model simulation. + #> Among other things, they control the mapping of species in the emission files to chemical species in the model and + #> several aspects related to the simulation of organic aerosols. + #> Please carefully review the DESID control files to ensure that they are configured to be consistent with the assumptions + #> made when creating the emission files defined below and the desired representation of organic aerosols. + #> For further information, please see: + #> + AERO7 Release Notes section on 'Required emission updates': + #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Release_Notes/aero7_overview.md + #> + CMAQ User's Guide section 6.9.3 on 'Emission Compatability': + #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.9.3_Emission_Compatability + #> + Emission Control (DESID) Documentation in the CMAQ User's Guide: + #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md + #> + setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml + setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml + + #> The following namelist configures aggregated output (via the Explicit and Lumped + #> Air Quality Model Output (ELMO) Module), domain-wide budget output, and chemical + #> family output. + setenv MISC_CTRL_NML ${BLD}/CMAQ_Control_Misc.nml + + #> The following namelist controls the mapping of meteorological land use types and the NH3 and Hg emission + #> potentials + setenv STAGECTRL_NML ${BLD}/CMAQ_Control_STAGE.nml + + #> Spatial Masks For Emissions Scaling + #setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file + setenv CMAQ_MASKS $INPDIR/GRIDMASK_STATES_12NE3.nc + + #> Gridded Emissions Files + setenv N_EMIS_GR 2 + set EMISfile = emis_mole_all_${YYYYMMDD}_12NE3_nobeis_norwc_2018gc_cb6_18j.ncf + setenv GR_EMIS_001 ${EMISpath}/merged_nobeis_norwc/${EMISfile} + setenv GR_EMIS_LAB_001 GRIDDED_EMIS + setenv GR_EM_SYM_DATE_001 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE + + set EMISfile = emis_mole_rwc_${YYYYMMDD}_12NE3_cmaq_cb6ae7_2018gc_cb6_18j.ncf + setenv GR_EMIS_002 ${EMISpath}/rwc/${EMISfile} + setenv GR_EMIS_LAB_002 GR_RES_FIRES + setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE + + #> In-line point emissions configuration + setenv N_EMIS_PT 10 #> Number of elevated source groups + + set STKCASEG = 12US1_2018gc_cb6_18j # Stack Group Version Label + set STKCASEE = 12US1_cmaq_cb6ae7_2018gc_cb6_18j # Stack Emission Version Label + + # Time-Independent Stack Parameters for Inline Point Sources + setenv STK_GRPS_001 $IN_PTpath/ptnonipm/stack_groups_ptnonipm_${STKCASEG}.ncf + setenv STK_GRPS_002 $IN_PTpath/ptegu/stack_groups_ptegu_${STKCASEG}.ncf + setenv STK_GRPS_003 $IN_PTpath/othpt/stack_groups_othpt_${STKCASEG}.ncf + setenv STK_GRPS_004 $IN_PTpath/ptagfire/stack_groups_ptagfire_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_005 $IN_PTpath/ptfire-rx/stack_groups_ptfire-rx_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_006 $IN_PTpath/ptfire-wild/stack_groups_ptfire-wild_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_007 $IN_PTpath/ptfire_othna/stack_groups_ptfire_othna_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_008 $IN_PTpath/pt_oilgas/stack_groups_pt_oilgas_${STKCASEG}.ncf + setenv STK_GRPS_009 $IN_PTpath/cmv_c3_12/stack_groups_cmv_c3_12_${STKCASEG}.ncf + setenv STK_GRPS_010 $IN_PTpath/cmv_c1c2_12/stack_groups_cmv_c1c2_12_${STKCASEG}.ncf + + # Emission Rates for Inline Point Sources + setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_004 $IN_PTpath/ptagfire/inln_mole_ptagfire_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_005 $IN_PTpath/ptfire-rx/inln_mole_ptfire-rx_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_006 $IN_PTpath/ptfire-wild/inln_mole_ptfire-wild_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_007 $IN_PTpath/ptfire_othna/inln_mole_ptfire_othna_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_008 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_009 $IN_PTpath/cmv_c3_12/inln_mole_cmv_c3_12_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_010 $IN_PTpath/cmv_c1c2_12/inln_mole_cmv_c1c2_12_${YYYYMMDD}_${STKCASEE}.ncf + + # Label Each Emissions Stream + setenv STK_EMIS_LAB_001 PT_NONEGU + setenv STK_EMIS_LAB_002 PT_EGU + setenv STK_EMIS_LAB_003 PT_OTHER + setenv STK_EMIS_LAB_004 PT_AGFIRES + setenv STK_EMIS_LAB_005 PT_RXFIRES + setenv STK_EMIS_LAB_006 PT_WILDFIRES + setenv STK_EMIS_LAB_007 PT_OTHFIRES + setenv STK_EMIS_LAB_008 PT_OILGAS + setenv STK_EMIS_LAB_009 PT_CMV_C3 + setenv STK_EMIS_LAB_010 PT_CMV_C1C2 + + # Allow CMAQ to Use Point Source files with dates that do not + # match the internal model date + # To change default behaviour please see Users Guide for EMIS_SYM_DATE + setenv STK_EM_SYM_DATE_001 F + setenv STK_EM_SYM_DATE_002 F + setenv STK_EM_SYM_DATE_003 F + setenv STK_EM_SYM_DATE_004 F + setenv STK_EM_SYM_DATE_005 F + setenv STK_EM_SYM_DATE_006 F + setenv STK_EM_SYM_DATE_007 F + setenv STK_EM_SYM_DATE_008 F + + #> Lightning NOx configuration + if ( $CTM_LTNG_NO == 'Y' ) then + setenv LTNGNO "InLine" #> set LTNGNO to "Inline" to activate in-line calculation + + #> In-line lightning NOx options + setenv USE_NLDN Y #> use hourly NLDN strike file [ default: Y ] + if ( $USE_NLDN == Y ) then + setenv NLDN_STRIKES ${IN_LTpath}/NLDN_12km_60min_${YYYYMMDD}.ioapi + endif + setenv LTNGPARMS_FILE ${IN_LTpath}/LTNG_AllParms_12NE3.nc #> lightning parameter file + endif + + #> In-line biogenic emissions configuration + if ( $CTM_BIOGEMIS_BE == 'Y' ) then + set IN_BEISpath = ${INPDIR}/surface + setenv GSPRO $BLD/gspro_biogenics.txt + setenv BEIS_NORM_EMIS $IN_BEISpath/beis4_beld6_norm_emis.12NE3.nc + setenv BEIS_SOILINP $OUTDIR/CCTM_BSOILOUT_${RUNID}_${YESTERDAY}.nc + #> Biogenic NO soil input file; ignore if NEW_START = TRUE + endif + if ( $CTM_BIOGEMIS_MG == 'Y' ) then + setenv MEGAN_SOILINP $OUTDIR/CCTM_MSOILOUT_${RUNID}_${YESTERDAY}.nc + #> Biogenic NO soil input file; ignore if INITIAL_RUN = Y + #> ; ignore if IGNORE_SOILINP = Y + setenv MEGAN_CTS $SZpath/megan3.2/CT3_CONUS.ncf + setenv MEGAN_EFS $SZpath/megan3.2/EFMAPS_CONUS.ncf + setenv MEGAN_LDF $SZpath/megan3.2/LDF_CONUS.ncf + if ($BDSNP_MEGAN == 'Y') then + setenv BDSNPINP $OUTDIR/CCTM_BDSNPOUT_${RUNID}_${YESTERDAY}.nc + setenv BDSNP_FFILE $SZpath/megan3.2/FERT_tceq_12km.ncf + setenv BDSNP_NFILE $SZpath/megan3.2/NDEP_tceq_12km.ncf + setenv BDSNP_LFILE $SZpath/megan3.2/LANDTYPE_tceq_12km.ncf + setenv BDSNP_AFILE $SZpath/megan3.2/ARID_tceq_12km.ncf + setenv BDSNP_NAFILE $SZpath/megan3.2/NONARID_tceq_12km.ncf + endif + endif + + #> In-line sea spray emissions configuration + setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file + + #> Bidirectional ammonia configuration + if ( $CTM_ABFLUX == 'Y' ) then + setenv E2C_SOIL ${EPICpath}/2018r1_EPIC0509_12NE3_soil.nc + setenv E2C_CHEM ${EPICpath}/2018r1_EPIC0509_12NE3_time${YYYYMMDD}.nc + setenv E2C_CHEM_YEST ${EPICpath}/2018r1_EPIC0509_12NE3_time${YESTERDAY}.nc + setenv E2C_LU ${EPICpath}/beld4_12NE3_2011.nc + endif + +#> Inline Process Analysis + setenv CTM_PROCAN N #> use process analysis [ default: N] + if ( $?CTM_PROCAN ) then # $CTM_PROCAN is defined + if ( $CTM_PROCAN == 'Y' || $CTM_PROCAN == 'T' ) then +#> process analysis global column, row and layer ranges +# setenv PA_BCOL_ECOL "10 90" # default: all columns +# setenv PA_BROW_EROW "10 80" # default: all rows +# setenv PA_BLEV_ELEV "1 4" # default: all levels + setenv PACM_INFILE ${NMLpath}/pa_${MECH}.ctl + setenv PACM_REPORT $OUTDIR/"PA_REPORT".${YYYYMMDD} + endif + endif + +#> Integrated Source Apportionment Method (ISAM) Options + setenv CTM_ISAM N + if ( $?CTM_ISAM ) then + if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then + setenv SA_IOLIST ${WORKDIR}/isam_control.2018_12NE3.txt + setenv ISAM_BLEV_ELEV " 1 1" + setenv AISAM_BLEV_ELEV " 1 1" + + #> Set Up ISAM Initial Condition Flags + if ($NEW_START == true || $NEW_START == TRUE ) then + setenv ISAM_NEW_START Y + setenv ISAM_PREVDAY + else + setenv ISAM_NEW_START N + setenv ISAM_PREVDAY "$OUTDIR/CCTM_SA_CGRID_${RUNID}_${YESTERDAY}.nc" + endif + + #> Set Up ISAM Output Filenames + setenv SA_ACONC_1 "$OUTDIR/CCTM_SA_ACONC_${CTM_APPL}.nc -v" + setenv SA_CONC_1 "$OUTDIR/CCTM_SA_CONC_${CTM_APPL}.nc -v" + setenv SA_DD_1 "$OUTDIR/CCTM_SA_DRYDEP_${CTM_APPL}.nc -v" + setenv SA_WD_1 "$OUTDIR/CCTM_SA_WETDEP_${CTM_APPL}.nc -v" + setenv SA_CGRID_1 "$OUTDIR/CCTM_SA_CGRID_${CTM_APPL}.nc -v" + + #> Set optional ISAM regions files + setenv ISAM_REGIONS $INPDIR/GRIDMASK_STATES_12NE3.nc + + #> Options used to favor tracked species in reaction for Ozone-NOx chemistry + setenv ISAM_O3_WEIGHTS 5 # weights for tracked species Default is 5 + # OPTIONS + # 1 does not weight any species + # 2 weights NOx and subset of NOz species + # 3 uses with from option 2 plus weight OVOC species, organic radicals and operators + # 4 weight OVOC species, organic radicals and operators + # 5 toggles between two weighting set based on VOC and NOx limited ozone production + # Below options only used if ISAM_O3_WEIGHTS set to 5 + setenv ISAM_NOX_CASE 2 # weights for tracked species when ozone production is NOx limited. Default is 2 + setenv ISAM_VOC_CASE 4 # weights for tracked species when ozone production is VOC limited. Default is 4 + setenv VOC_NOX_TRANS 0.35 # value of Prod H2O2 over Prod HNO3 less than where + # ISAM_VOC_CASE weights are used. Otherwise, ISAM_NOX_CASE + # weights are used. Default is 0.35 + + endif + endif + + +#> Sulfur Tracking Model (STM) + setenv STM_SO4TRACK N #> sulfur tracking [ default: N ] + if ( $?STM_SO4TRACK ) then + if ( $STM_SO4TRACK == 'Y' || $STM_SO4TRACK == 'T' ) then + + #> option to normalize sulfate tracers [ default: Y ] + setenv STM_ADJSO4 Y + + endif + endif + +#> Decoupled Direct Method in 3D (DDM-3D) Options + setenv CTM_DDM3D N # Sets up requisite script settings for DDM-3D (default is N/F) + # Additionally requires for CCTM to be compiled for DDM-3D simulations + + set NPMAX = 1 # Number of sensitivity parameters defined in SEN_INPUT + setenv SEN_INPUT ${WORKDIR}/sensinput.2018_12NE3.dat + + setenv DDM3D_HIGH N # allow higher-order sensitivity parameters in SEN_INPUT [ T | Y | F | N ] (default is N/F) + + if ($NEW_START == true || $NEW_START == TRUE ) then + setenv DDM3D_RST N # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) + set S_ICpath = # sensitivity fields are initialized to 0.0 on the first hour of the first day + set S_ICfile = + else + setenv DDM3D_RST Y # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) + set S_ICpath = $OUTDIR + set S_ICfile = CCTM_SENGRID_${RUNID}_${YESTERDAY}.nc + endif + + setenv CTM_NPMAX $NPMAX + setenv CTM_SENS_1 "$OUTDIR/CCTM_SENGRID_${CTM_APPL}.nc -v" + setenv A_SENS_1 "$OUTDIR/CCTM_ASENS_${CTM_APPL}.nc -v" + setenv CTM_SWETDEP_1 "$OUTDIR/CCTM_SENWDEP_${CTM_APPL}.nc -v" + setenv CTM_SDRYDEP_1 "$OUTDIR/CCTM_SENDDEP_${CTM_APPL}.nc -v" + setenv INIT_SENS_1 $S_ICpath/$S_ICfile + + +# ===================================================================== +#> Output Files +# ===================================================================== + + #> set output file names + setenv S_CGRID "$OUTDIR/CCTM_CGRID_${CTM_APPL}.nc" #> 3D Inst. Concentrations + setenv CTM_CONC_1 "$OUTDIR/CCTM_CONC_${CTM_APPL}.nc -v" #> On-Hour Concentrations + setenv A_CONC_1 "$OUTDIR/CCTM_ACONC_${CTM_APPL}.nc -v" #> Hourly Avg. Concentrations + setenv MEDIA_CONC "$OUTDIR/CCTM_MEDIA_CONC_${CTM_APPL}.nc -v" #> NH3 Conc. in Media + setenv CTM_DRY_DEP_1 "$OUTDIR/CCTM_DRYDEP_${CTM_APPL}.nc -v" #> Hourly Dry Deposition + setenv CTM_DEPV_DIAG "$OUTDIR/CCTM_DEPV_${CTM_APPL}.nc -v" #> Dry Deposition Velocities + setenv B3GTS_S "$OUTDIR/CCTM_B3GTS_S_${CTM_APPL}.nc -v" #> Biogenic Emissions + setenv BEIS_SOILOUT "$OUTDIR/CCTM_BSOILOUT_${CTM_APPL}.nc" #> Soil Emissions + setenv MEGAN_SOILOUT "$OUTDIR/CCTM_MSOILOUT_${CTM_APPL}.nc" #> Soil Emissions + setenv BDSNPOUT "$OUTDIR/CCTM_BDSNPOUT_${CTM_APPL}.nc" #> Soil Emissions + setenv CTM_WET_DEP_1 "$OUTDIR/CCTM_WETDEP1_${CTM_APPL}.nc -v" #> Wet Dep From All Clouds + setenv CTM_WET_DEP_2 "$OUTDIR/CCTM_WETDEP2_${CTM_APPL}.nc -v" #> Wet Dep From SubGrid Clouds + setenv CTM_ELMO_1 "$OUTDIR/CCTM_ELMO_${CTM_APPL}.nc -v" #> On-Hour Particle Diagnostics + setenv CTM_AELMO_1 "$OUTDIR/CCTM_AELMO_${CTM_APPL}.nc -v" #> Hourly Avg. Particle Diagnostics + setenv CTM_RJ_1 "$OUTDIR/CCTM_PHOTDIAG1_${CTM_APPL}.nc -v" #> 2D Surface Summary from Inline Photolysis + setenv CTM_RJ_2 "$OUTDIR/CCTM_PHOTDIAG2_${CTM_APPL}.nc -v" #> 3D Photolysis Rates + setenv CTM_RJ_3 "$OUTDIR/CCTM_PHOTDIAG3_${CTM_APPL}.nc -v" #> 3D Optical and Radiative Results from Photolysis + setenv CTM_SSEMIS_1 "$OUTDIR/CCTM_SSEMIS_${CTM_APPL}.nc -v" #> Sea Spray Emissions + setenv CTM_DUST_EMIS_1 "$OUTDIR/CCTM_DUSTEMIS_${CTM_APPL}.nc -v" #> Dust Emissions + setenv CTM_BUDGET "$OUTDIR/CCTM_BUDGET_${CTM_APPL}.txt -v" #> Budget [Default Off] + setenv CTM_IPR_1 "$OUTDIR/CCTM_PA_1_${CTM_APPL}.nc -v" #> Process Analysis + setenv CTM_IPR_2 "$OUTDIR/CCTM_PA_2_${CTM_APPL}.nc -v" #> Process Analysis + setenv CTM_IPR_3 "$OUTDIR/CCTM_PA_3_${CTM_APPL}.nc -v" #> Process Analysis + setenv CTM_IRR_1 "$OUTDIR/CCTM_IRR_1_${CTM_APPL}.nc -v" #> Chem Process Analysis + setenv CTM_IRR_2 "$OUTDIR/CCTM_IRR_2_${CTM_APPL}.nc -v" #> Chem Process Analysis + setenv CTM_IRR_3 "$OUTDIR/CCTM_IRR_3_${CTM_APPL}.nc -v" #> Chem Process Analysis + setenv CTM_DRY_DEP_MOS "$OUTDIR/CCTM_DDMOS_${CTM_APPL}.nc -v" #> Dry Dep + setenv CTM_DEPV_MOS "$OUTDIR/CCTM_DEPVMOS_${CTM_APPL}.nc -v" #> Dry Dep Velocity + setenv CTM_VDIFF_DIAG "$OUTDIR/CCTM_VDIFF_DIAG_${CTM_APPL}.nc -v" #> Vertical Dispersion Diagnostic + setenv CTM_VSED_DIAG "$OUTDIR/CCTM_VSED_DIAG_${CTM_APPL}.nc -v" #> Particle Grav. Settling Velocity + setenv CTM_LTNGDIAG_1 "$OUTDIR/CCTM_LTNGHRLY_${CTM_APPL}.nc -v" #> Hourly Avg Lightning NO + setenv CTM_LTNGDIAG_2 "$OUTDIR/CCTM_LTNGCOL_${CTM_APPL}.nc -v" #> Column Total Lightning NO + setenv CTM_VEXT_1 "$OUTDIR/CCTM_VEXT_${CTM_APPL}.nc -v" #> On-Hour 3D Concs at select sites + + #> set floor file (neg concs) + setenv FLOOR_FILE ${OUTDIR}/FLOOR_${CTM_APPL}.txt + + #> look for existing log files and output files + ( ls CTM_LOG_???.${CTM_APPL} > buff.txt ) >& /dev/null + ( ls ${LOGDIR}/CTM_LOG_???.${CTM_APPL} >> buff.txt ) >& /dev/null + set log_test = `cat buff.txt`; rm -f buff.txt + + set OUT_FILES = (${FLOOR_FILE} ${S_CGRID} ${CTM_CONC_1} ${A_CONC_1} ${MEDIA_CONC} \ + ${CTM_DRY_DEP_1} $CTM_DEPV_DIAG $B3GTS_S $MEGAN_SOILOUT $BEIS_SOILOUT $BDSNPOUT \ + $CTM_WET_DEP_1 $CTM_WET_DEP_2 $CTM_ELMO_1 $CTM_AELMO_1 \ + $CTM_RJ_1 $CTM_RJ_2 $CTM_RJ_3 $CTM_SSEMIS_1 $CTM_DUST_EMIS_1 $CTM_IPR_1 $CTM_IPR_2 \ + $CTM_IPR_3 $CTM_BUDGET $CTM_IRR_1 $CTM_IRR_2 $CTM_IRR_3 $CTM_DRY_DEP_MOS \ + $CTM_DEPV_MOS $CTM_VDIFF_DIAG $CTM_VSED_DIAG $CTM_LTNGDIAG_1 $CTM_LTNGDIAG_2 $CTM_VEXT_1 ) + if ( $?CTM_ISAM ) then + if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then + set OUT_FILES = (${OUT_FILES} ${SA_ACONC_1} ${SA_CONC_1} ${SA_DD_1} ${SA_WD_1} \ + ${SA_CGRID_1} ) + endif + endif + if ( $?CTM_DDM3D ) then + if ( $CTM_DDM3D == 'Y' || $CTM_DDM3D == 'T' ) then + set OUT_FILES = (${OUT_FILES} ${CTM_SENS_1} ${A_SENS_1} ${CTM_SWETDEP_1} ${CTM_SDRYDEP_1} ) + endif + endif + set OUT_FILES = `echo $OUT_FILES | sed "s; -v;;g" | sed "s;MPI:;;g" ` + ( ls $OUT_FILES > buff.txt ) >& /dev/null + set out_test = `cat buff.txt`; rm -f buff.txt + + #> delete previous output if requested + if ( $CLOBBER_DATA == true || $CLOBBER_DATA == TRUE ) then + echo + echo "Existing Logs and Output Files for Day ${TODAYG} Will Be Deleted" + + #> remove previous log files + foreach file ( ${log_test} ) + #echo "Deleting log file: $file" + /bin/rm -f $file + end + + #> remove previous output files + foreach file ( ${out_test} ) + #echo "Deleting output file: $file" + /bin/rm -f $file + end + /bin/rm -f ${OUTDIR}/CCTM_DESID*${CTM_APPL}.nc + + else + #> error if previous log files exist + if ( "$log_test" != "" ) then + echo "*** Logs exist - run ABORTED ***" + echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" + echo "*** and these files will be automatically deleted. ***" + exit 1 + endif + + #> error if previous output files exist + if ( "$out_test" != "" ) then + echo "*** Output Files Exist - run will be ABORTED ***" + foreach file ( $out_test ) + echo " cannot delete $file" + end + echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" + echo "*** and these files will be automatically deleted. ***" + exit 1 + endif + endif + + #> for the run control ... + setenv CTM_STDATE $YYYYJJJ + setenv CTM_STTIME $STTIME + setenv CTM_RUNLEN $NSTEPS + setenv CTM_TSTEP $TSTEP + setenv INIT_CONC_1 $ICpath/$ICFILE + setenv BNDY_CONC_1 $BCpath/$BCFILE + setenv OMI $OMIpath/$OMIfile + setenv MIE_TABLE $OUTDIR/mie_table_coeffs_${compilerString}.txt + setenv OPTICS_DATA $OMIpath/$OPTfile + #setenv XJ_DATA $JVALpath/$JVALfile + + #> species defn & photolysis + setenv gc_matrix_nml ${NMLpath}/GC_$MECH.nml + setenv ae_matrix_nml ${NMLpath}/AE_$MECH.nml + setenv nr_matrix_nml ${NMLpath}/NR_$MECH.nml + setenv tr_matrix_nml ${NMLpath}/Species_Table_TR_0.nml + + #> check for photolysis input data + setenv CSQY_DATA ${NMLpath}/CSQY_DATA_$MECH + + if (! (-e $CSQY_DATA ) ) then + echo " $CSQY_DATA not found " + exit 1 + endif + if (! (-e $OPTICS_DATA ) ) then + echo " $OPTICS_DATA not found " + exit 1 + endif + +# =================================================================== +#> Execution Portion +# =================================================================== + + #> Print attributes of the executable + if ( $CTM_DIAG_LVL != 0 ) then + ls -l $BLD/$EXEC + size $BLD/$EXEC + unlimit + limit + endif + + #> Print Startup Dialogue Information to Standard Out + echo + echo "CMAQ Processing of Day $YYYYMMDD Began at `date`" + echo + + #> Executable call for single PE, uncomment to invoke + #( /usr/bin/time -p $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt + + #> Executable call for multi PE, configure for your system + # set MPI = /usr/local/intel/impi/3.2.2.006/bin64 + # set MPIRUN = $MPI/mpirun + ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt + + #> Harvest Timing Output so that it may be reported below + set rtarray = "${rtarray} `tail -3 buff_${EXECUTION_ID}.txt | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | head -1` " + rm -rf buff_${EXECUTION_ID}.txt + + #> Abort script if abnormal termination + if ( ! -e $OUTDIR/CCTM_CGRID_${CTM_APPL}.nc ) then + echo "" + echo "**************************************************************" + echo "** Runscript Detected an Error: CGRID file was not written. **" + echo "** This indicates that CMAQ was interrupted or an issue **" + echo "** exists with writing output. The runscript will now **" + echo "** abort rather than proceeding to subsequent days. **" + echo "**************************************************************" + break + endif + + #> Print Concluding Text + echo + echo "CMAQ Processing of Day $YYYYMMDD Finished at `date`" + echo + echo "\\\\\=====\\\\\=====\\\\\=====\\\\\=====/////=====/////=====/////=====/////" + echo + +# =================================================================== +#> Finalize Run for This Day and Loop to Next Day +# =================================================================== + + #> Save Log Files and Move on to Next Simulation Day + mv CTM_LOG_???.${CTM_APPL} $LOGDIR + if ( $CTM_DIAG_LVL != 0 ) then + mv CTM_DIAG_???.${CTM_APPL} $LOGDIR + endif + + #> The next simulation day will, by definition, be a restart + setenv NEW_START false + + #> Increment both Gregorian and Julian Days + set TODAYG = `date -ud "${TODAYG}+1days" +%Y-%m-%d` #> Add a day for tomorrow + set TODAYJ = `date -ud "${TODAYG}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ + +end #Loop to the next Simulation Day + +# =================================================================== +#> Generate Timing Report +# =================================================================== +set RTMTOT = 0 +foreach it ( `seq ${NDAYS}` ) + set rt = `echo ${rtarray} | cut -d' ' -f${it}` + set RTMTOT = `echo "${RTMTOT} + ${rt}" | bc -l` +end + +set RTMAVG = `echo "scale=2; ${RTMTOT} / ${NDAYS}" | bc -l` +set RTMTOT = `echo "scale=2; ${RTMTOT} / 1" | bc -l` + +echo +echo "==================================" +echo " ***** CMAQ TIMING REPORT *****" +echo "==================================" +echo "Start Day: ${START_DATE}" +echo "End Day: ${END_DATE}" +echo "Number of Simulation Days: ${NDAYS}" +echo "Domain Name: ${GRID_NAME}" +echo "Number of Grid Cells: ${NCELLS} (ROW x COL x LAY)" +echo "Number of Layers: ${NZ}" +echo "Number of Processes: ${NPROCS}" +echo " All times are in seconds." +echo +echo "Num Day Wall Time" +set d = 0 +set day = ${START_DATE} +foreach it ( `seq ${NDAYS}` ) + # Set the right day and format it + set d = `echo "${d} + 1" | bc -l` + set n = `printf "%02d" ${d}` + + # Choose the correct time variables + set rt = `echo ${rtarray} | cut -d' ' -f${it}` + + # Write out row of timing data + echo "${n} ${day} ${rt}" + + # Increment day for next loop + set day = `date -ud "${day}+1days" +%Y-%m-%d` +end +echo " Total Time = ${RTMTOT}" +echo " Avg. Time = ${RTMAVG}" + +exit From 0d594f73fdc4e909fb1f64c37a73256cecaffe75 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 4 Sep 2024 13:29:03 -0400 Subject: [PATCH 196/375] add runscript for cb6r5 stage --- .../CMAQ_UG_tutorial_benchmark_cb6r5_stage.md | 327 ++++++++++++++++++ 1 file changed, 327 insertions(+) create mode 100644 DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md new file mode 100644 index 000000000..0c1af8230 --- /dev/null +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md @@ -0,0 +1,327 @@ +# CMAQ Installation & Benchmarking Tutorial for cb6r5 and stage + +Purpose: This guide describes how to install and run the CMAQ test case for the CB6R5 mechanism with the STAGE dry deposition scheme, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. + +Benchmarking refers to a simulation that is used to verify that the software is installed correctly. Benchmarking CMAQ is recommended in the following circumstances: +- Installation by a new user +- Installation on a new server +- Following kernel upgrades +- Following Fortran/C compiler upgrades +- Following netCDF or I/O API library upgrades + +## System Checks + +The following support software are required for compiling and running CMAQ. + +1. Fortran and C compilers, e.g., [Intel](https://software.intel.com/en-us/fortran-compilers), [Portland Group](http://www.pgroup.com), [Gnu](https://gcc.gnu.org/wiki/GFortran) +2. [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) +2. Message Passing Interface (MPI), e.g., [OpenMPI](https://www.open-mpi.org) or [MVAPICH2](http://www.mcs.anl.gov/research/projects/mpich2). +3. Latest release of [netCDF-C](https://www.unidata.ucar.edu/software/netcdf/docs/getting_and_building_netcdf.html) and [netCDF-Fortran](https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html) **built with netCDF4, HDF5, HDF4, DAP client, PnetCDF, or zlib support** +4. [I/O API](https://www.cmascenter.org/download/software/ioapi/ioapi_3-2.cfm?DB=TRUE) version 3.2 **tagged 20200828** +(note: if you have not installed the above libraries, please see the CMAQ_UG_tutorial_build_[gcc/intel/pgi].md tutorials available here: +https://github.com/USEPA/CMAQ/tree/main/DOCS/Users_Guide/Tutorials + +The suggested hardware requirements for running the CMAQ Southeast Benchmark case on a Linux workstation are: + +1. Linux environment with a 16 processors +2. 16 GB RAM +3. 400 GB hard drive storage + +## Install CMAQ and Required Libraries + +In the directory where you would like to install CMAQ, create the directory issue the following command to clone the EPA GitHub repository for CMAQv5.5: + +``` +git clone -b main https://github.com/USEPA/CMAQ.git CMAQ_REPO +``` + +For instructions on installing CMAQ from Zip files, see [Chapter 5](../CMAQ_UG_ch05_running_a_simulation.md). + +## Check Out a new Branch in the CMAQ Repository + +Checking out a new branch is a good idea even if you are not doing code development, per se. It is likely that you will want to retrieve new updates in the future, and an easy way to do this is through the main branch in the git repo. Thus, it is beneficial to leave it unperturbed if possible. +``` +cd CMAQ_REPO +git checkout -b my_branch +``` + +## Configure the CMAQ build environment + +The user has two options for building an environment. She or he may build and run CMAQ components directly in the repository structure (object files and executables will be ignored with .gitignore), or they may extract the build and run scripts out of the repository and work in a separate location. If you would like to build directly in the repository, skip to "Link the CMAQ Libraries" below. + +### Build and run in a user-specified directory outside of the repository +In the top level of CMAQ_REPO, the bldit_project.csh script will automatically replicate the CMAQ folder structure and copy every build and run script out of the repository so that you may modify them freely without version control. + +In bldit_project.csh, modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: +``` +set CMAQ_HOME = [your_install_path]/CMAQ_v5.5 +``` + +Now execute the script. +``` +./bldit_project.csh +``` + +## Link the CMAQ Libraries +The CMAQ build scripts require the following libraries and INCLUDE files to be available in the CMAQ_LIB directory (Note: the CMAQ_LIB gets set automatically by the config_cmaq.csh script, where `CMAQ_LIB = $CMAQ_HOME/lib`): + +- netCDF C library files are located in the `$CMAQ_LIB/netcdf/lib` directory +- netCDF Fortran library files are located in the `$CMAQ_LIB/netcdff/lib` directory +- I/O API library, include files and module files are located in the `$CMAQ_LIB/ioapi` directory +- MPI library and INCLUDE files are located in the `$CMAQ_LIB/mpi` directory + +The config_cmaq.csh script will automatically link the required libraries into the CMAQ_LIB directory. Set the locations of the netCDF, I/O API, and MPI installations on your Linux system with the following config_cmaq.csh environment variables: + +- `setenv IOAPI_INCL_DIR`: the location of the I/O API include header files on your system. +- `setenv IOAPI_LIB_DIR`: the location of compiled I/O API libraries on your system. +- `setenv NETCDF_LIB_DIR`: the location of the netCDF C library installation on your system. +- `setenv NETCDF_INCL_DIR`: the location of the netCDF C include files on your system. +- `setenv NETCDFF_LIB_DIR`: the location of the netCDF Fortran library installation on your system. +- `setenv NETCDFF_INCL_DIR`: the location of the netCDF Fortran include files on your system. +- `setenv MPI_LIB_DIR`: the location of the MPI (OpenMPI or MVAPICH) on your system. + +For example, if your netCDF C libraries are installed in /usr/local/netcdf/lib, set `NETCDF_LIB_DIR` to /usr/local/netcdf/lib. Similarly, if your I/O API library is installed in /home/cmaq/ioapi/Linux2_x86_64gfort, set `IOAPI_LIB_DIR` to /home/cmaq/ioapi/Linux2_x86_64gfort. + +*1.* Check the names of the I/O API and netCDF libraries using the `ioapi_lib` and `netcdf_lib` script variables. + +*2.* Check the name of the MPI library using the `mpi_lib` script variable. For MVAPICH use `-lmpich`; for openMPI use `-lmpi`. + +Links to these libraries will automatically be created when you run any of the build or run scripts. To manually create these libraries (this is optional), execute the config_cmaq.csh script, identifying the compiler in the command line [intel | gcc | pgi]: +``` +source config_cmaq.csh [compiler] +``` +You may also identify the version of the compiler if you wish it to be identified in build directory and executable names. This is optional. For example: +``` +source config_cmaq.csh gcc 9.5 +``` + +## Install the CMAQ reference input and output benchmark data + +Download the CMAQ two day reference input and output data for the cb6r5 mechanism from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. + + - Use the gdrive command to download the dataset. + - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions + - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) + - Text files are included that provide a list of the files in the benchmark input and output datasets. + +The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmas-cmaq.s3.amazonaws.com/index.html). + +Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: + +``` +cd $CMAQ_DATA +tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz +tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz +``` + +## Compiling CMAQ + +*Before proceeding, it should be noted that building the ICON and BCON executables are optional steps when working specifically with the benchmark data. This is because the initial condition and boundary condition files have been provided for you within the benchmark data set. For further information on these preprocessors please reference [Chapter 4](../CMAQ_UG_ch04_model_inputs.md).* + +Create the model executables for CCTM using the steps shown below. + +##### Configuration for multi-processor runs (default): + +``` +set ParOpt #> Option for MPI Runs +```` + +##### Configuration for single-processor runs (optional): + +For single-processor computing, edit the CCTM build script (bldit_cctm.csh) to indicate a single-processor run by commenting out set ParOpt as shown below. + +``` +#set ParOpt #> Option for Single Processor Runs +```` + +#### Configure CMAQ benchmark Science Modules: + +The build directory parameters for the benchmark test case include the following: + +- Multiprocessor simulation +- 3-D Advection Scheme: wrf_cons +- Horizontal diffusion: Multiscale +- Vertical diffusion: ACM2_M3Dry +- Deposition: M3Dry +- Chemistry solver: EBI +- Aerosol module: AERO7 +- Cloud module: ACM_AE7 +- Mechanism: cb6r5_ae7_aq +- Inline biogenic emissions +- Inline plume rise + +To configure these parameters, the CCTM Science Modules within the bldit_cctm.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in +[Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). + +Use the bldit_cctm script that is set up to use the cb6r5 mechanism and the stage dry deposition scheme. + +Review the bldit script + +``` +more bldit_cctm_cb6r5_stage.csh +``` + + +Verify the dry deposition scheme uses STAGE instead of M3DRY + +``` + # set DepMod = m3dry #> m3dry + set DepMod = stage +``` + +Verify the Mechanism is set to cb6r5_ae7_aq + +``` + setenv Mechanism cb6r5_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) +``` + + +Verify that a unique BLD directory name for each combination of mechansim and dry deposition scheme. + +#> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. + if ( $?Debug_CCTM ) then + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug + else + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} + endif +``` + + +Following the requisite changes to the CCTM build script, use the following command to create the CCTM executable: + +``` +cd $CMAQ_HOME/CCTM/scripts +./bldit_cctm_cb6r5_stage.csh [compiler] [version] |& tee bldit_cctm_cb6r5_stage.log +``` + +Verify that the BLD directory contains a namelist called CMAQ_Control_STAGE.nml and that the executable was created + +``` +cd BLD_CCTM_v55_gcc_cb6r5_ae7_aq_stage +ls -lrt CMAQ_Control_STAGE.nml +ls -lrt CCTM_v55.exe +``` + + +## Use the CCTM run script that is configured for cb6r5 and the stage dry deposition scheme + +For an MPI configuration with 16 processors, +` +``` +cd $CMAQ_HOME/CCTM/scripts +``` + +Review the script + +``` +more run_cctm_Bench_2018_12NE3_cb6r5_stage.csh +``` + + +Verify that the Mechanism is set to cb6r5_ae7_aq. + +``` +set MECH = cb6r5_ae7_aq #> Mechanism ID +``` + +Verify the APPL name specifies both the mechanism and the dry deposition scheme + +``` + set APPL = Bench_2018_12NE3_${MECH}_stage #> Application Name (e.g. Gridname) +``` + + +Verify that the BLD directory name specifies both the mechanism and the dry deposition scheme + +``` + set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${MECH}_stage +``` + + + +Specify the MPI configuration and compiler and input directory that you will use: + + +``` +setenv compiler gcc +setenv compilerVrsn 9.5 +setenv INPDIR ${CMAQ_DATA}/2018_12NE3 +@ NPCOL 8 ; @ NPROW = 4 +``` + +Most clustered multiprocessor systems require a command to start the MPI run-time environment. The default CCTM run script uses the *mpirun* command. Consult your system administrator to find out how to invoke MPI when running multiprocessor applications. +` +For single-processor computing, set PROC to serial: + +``` +set PROC = serial +``` + +CCTM Science Configuration Options set to **Y** in the RunScript for the benchmark case include the following: + +- ```CTM_OCEAN_CHEM``` - use ocean halgoen chemistry and sea spray aerosol emissions +- ```KZMIN``` - minimum eddy diffusivity in each grid cell determined by land use fraction +-` ```PX_VERSION``` - WRF PX land surface model +- ```CTM_ABFLUX``` - bidirectional ammonia flux for online deposition velocities +- ```CTM_BIDI_FERT_NH3``` - subtract fertilizer NH3 from emissions because it will be handled by the BiDi calculation +- ```CTM_SFC_HONO``` - surface HONO interaction +- ```CTM_GRAV_SETL``` - vdiff aerosol gravitational sedmentation +- ```CTM_BIOGEMIS``` - online biogenic emissions + +To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_stage.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in +[Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). + +After configuring the MPI settings for your Linux system, check the rest of the script to ensure the correct path, date and names are used for the input data files. Per the note above, different Linux systems have different requirements for submitting MPI jobs. The command below is an example of how to submit the CCTM run script and may differ depending on the MPI requirements of your Linux system. + +``` +./run_cctm_Bench_2018_12NE3_cb6r5_stage.csh |& tee cctm.log +``` + +## Confirm that the Benchmark Simulation Completed + +`To confirm that the benchmark case ran to completion view the run.benchmark.log file. For MPI runs, check each of the CTM_LOG_[ProcessorID]*.log files. A successful run will contain the following line at the bottom of the log(s): + +``>>----> Program completed successfully <----<<`` +` +Note: If you are running on multiple processors the log file for each processor is also moved from the $CMAQ_HOME/CCTM/scripts directory to the benchmark output directory: + +``` +$CMAQ_DATA/output_CCTM_v55_[compiler]_Bench_2018_12NE3_cb6r5_ae7_aq_stage +``` +and these log files have the name convention: + +``` +CTM_LOG_[ProcessorID].v55_[compiler]_[APPL]_[YYYYMMDD] +CTM_LOG_[ProcessorID].v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage_20180702 +``` + +The benchmark output results will have been placed in the directory: + +``` +$CMAQ_DATA/output_CCTM_v55_[compiler]_Bench_2018_12NE3_cb6r5_ae7_aq_stage +``` + +and can include upto 23 netCDF-type files: ACONC, AOD_DIAG, AELMO, APMVIS, B3GTS_S, BSOILOUT, BUDGET, CGRID, CONC, DEPV, DRYDEP, DUSTEMIS, LTNGCOL, LTNGHRLY, MEDIA_CONC, PHOTDIAG1, PHOTDIAG2, ELMO, PMVIS, SOILOUT, SSEMIS, VDIFF, VSED, WETDEP1, and WETDEP2. + + +Common errors in a CCTM simulation include the following: +- Incorrect paths to input files. Look in the CCTM screen output (capture in your log file) for an Error message about an input file not being found. +- Incorrect MPI implementation. A series of MPI errors at the end of the log file often indicate that the MPI job was not submitted correctly. + +Check the last few lines of the CCTM output log for messages to help diagnose why the simulation did not complete. + +## Check the CMAQ Benchmark Results + +To determine if CMAQ is correctly installed on your Linux system compare the results from your benchmark simulation to the reference output data downloaded from the CMAS Center. This data was generated on a Linux system with the following specifications: +- Linux Kernel 3.10.0-514.el7.x86_64 +- Red Hat Enterprise Linux Server 7.3 (Maipo) (use command: cat /etc/os-release) +- GNU GCC compiler version 9.1.0, 16 processors with OpenMPIv4.0.1 and I/O APIv3.2 tagged version 20200828 +- Debug mode turned off (```set Debug_CCTM``` commented out in $CMAQ_HOME/CCTM/scripts/bldit_cctm.csh) +- CMAQv5.5 + +The CMAQv5.5 reference output data includes a set of CCTM_ACONC_\*.nc files with layer 1 average model species concentrations for each model hour for 222 variables and a set of CCTM_WETDEP1_\*.nc files with cumulative hourly wet deposition fluxes for an additional 139 variables. The CCTM_SA_ACONC_\*.nc, CCTM_SA_CGRID_\*.nc, CCTM_SA_CONC_\*.nc, CCTM_SA_WETDEP_\*.nc and CCTM_SA_DRYDEP_\*.nc are generated when you run the CMAQ-ISAM benchmark. See the [CMAQ-ISAM Tutorial](../Tutorials/CMAQ_UG_tutorial_ISAM.md) for more information. + +Use your netCDF evaluation tool of choice to evaluate your benchmark results. For example, [VERDI](https://www.verdi-tool.org/) is a visualization tool to view CCTM results as tile plots. Statistical comparison of the results can be made with the I/O API Tools or R. + +Note, even with a successful installation and run of the benchmark case, some differences between your simulation and the reference data can occur due to differences in domain decomposition for multi-processor simulations as well as differences in compiler. These differences tend to manifest in upper layers of the model and are mostly found in predicting aerosol water (AH2O) and aerosol acidity (AH3OP), while differences are smaller for other key species like ASO4, ANO3, ACL, ALOO1, etc. These species have short atmospheric lifetimes with large changes in time and space derivatives or have model physics sensitive to small changes in concentration. Predicting these species is more sensitive to small changes in machine precision and accuracy. + From 03f6499c49494ba8b29d8ad6cb6c2b24d14aba99 Mon Sep 17 00:00:00 2001 From: chogrefe Date: Wed, 4 Sep 2024 13:59:25 -0400 Subject: [PATCH 197/375] Update UG11 to refer ISAM post-processing to tutorial Added a few sentences at the end of section 11.4 to state that the tutorial covers example ISAM post-processing instructions using combine and a custom SPECIES_DEF file. The tutorial will need to be updated (by CMAS?) to provide these instructions. --- DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md b/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md index 3b72ea5b7..a8da7636b 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md @@ -235,7 +235,7 @@ For item 3), these are processes in the model that create a given species but no Finally, ISAM is an approximation for attribution. In the formulation, assumptions are made about which species are most important in the chemical formuation of the species being studied. For example in cb6r3 based mechanisms, peroxyl radicals from aromatic compounds affect ozone production by a small amount so ISAM neglects their contribution. The contribution to ozone from species not included in the ISAM formulation will go into 'O3_OTH', even if the emission source of these species is included in the control file. ## 11.4 ISAM Benchmark -See the [CMAQ-ISAM Benchmark Tutorial](Tutorials/CMAQ_UG_tutorial_ISAM.md) for step-by-step instructions for running the 2 day benchmark case. The input files for the CMAQv5.5 ISAM benchmark case are the same as the benchmark inputs for the base model. Output source apportionment files associated with the sample `isam_control.txt` provided in this release package are included in the benchmark outputs for the base model. +See the [CMAQ-ISAM Benchmark Tutorial](Tutorials/CMAQ_UG_tutorial_ISAM.md) for step-by-step instructions for running the 2 day benchmark case. The input files for the CMAQv5.5 ISAM benchmark case are the same as the benchmark inputs for the base model. Output source apportionment files associated with the sample `isam_control.txt` provided in this release package are included in the benchmark outputs for the base model. The tutorial also provides example instructions for post-processing ISAM output for individual species contained in the SA_ACONC_1 output file into aggregate species like NOx or PM2.5 using the [`combine`](../../POST/combine/README.md) utility and customized `SPECIES_DEF` species definition files. Note that the [Explicit and Lumped Model Output (ELMO) module](./Appendix/CMAQ_UG_appendixF_elmo_output.md) available for aggregating base model concentrations does not currently support the aggregation of ISAM species within CMAQ, necessitating a customized post-processing workflow. ## 11.5 References From 853def9b126ff9f2b8aa19bb6b3769739835cc8d Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 4 Sep 2024 14:43:26 -0400 Subject: [PATCH 198/375] update input data location on aws --- .../Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md index 0c1af8230..c8a83ad96 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md @@ -104,7 +104,7 @@ Download the CMAQ two day reference input and output data for the cb6r5 mechanis - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) - Text files are included that provide a list of the files in the benchmark input and output datasets. -The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmas-cmaq.s3.amazonaws.com/index.html). +The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz). Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: From ce981f8021280f10e940f54e0689577fb6c71818 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 4 Sep 2024 16:22:30 -0400 Subject: [PATCH 199/375] add buildit script for ddm case --- CCTM/scripts/bldit_cctm_cb6r5_m3dry_ddm.csh | 831 ++++++++++++++++++++ 1 file changed, 831 insertions(+) create mode 100755 CCTM/scripts/bldit_cctm_cb6r5_m3dry_ddm.csh diff --git a/CCTM/scripts/bldit_cctm_cb6r5_m3dry_ddm.csh b/CCTM/scripts/bldit_cctm_cb6r5_m3dry_ddm.csh new file mode 100755 index 000000000..9958b09fc --- /dev/null +++ b/CCTM/scripts/bldit_cctm_cb6r5_m3dry_ddm.csh @@ -0,0 +1,831 @@ +#!/bin/csh -f + +# ======================= CCTMv5.5.X Build Script ========================= +# Usage: bldit_cctm.csh >&! bldit.cctm.log +# Requirements: I/O API & netCDF libraries, a Fortran compiler, +# and MPI for multiprocessor computing +# +# To report problems or request help with this script/program: +# http://www.cmascenter.org +# ========================================================================= + +#> Set Compiler Identity by User Input: Options -> intel | pgi | gcc + if ( $#argv == 1 ) then + setenv compiler $argv[1] + setenv compilerVrsn Empty + else if ( $#argv == 2 ) then + #> Compiler Name and Version have been provided + setenv compiler $1 + setenv compilerVrsn $2 + else + echo "usage: $0 " + echo " where is intel, pgi or gcc" + exit(2) + endif + +#> Source the config.cmaq file to set the build environment + cd ../.. + source ./config_cmaq.csh + + set echo + +# ======================================================================= +#> Begin User Input Section +# ======================================================================= + +#> Source Code Locations + setenv CCTM_SRC ${CMAQ_REPO}/CCTM/src #> location of the CCTM source code + set GlobInc = $CCTM_SRC/ICL #> location of the global include files + set Mechs = $CCTM_SRC/MECHS #> location of the chemistry mechanism include files + setenv REPOROOT $CCTM_SRC + +#> Controls for managing the source code and MPI compilation +set CompileBLDMAKE #> Recompile the BLDMAKE utility from source + #> comment out to use an existing BLDMAKE executable +set CopySrc #> copy the source files into the build directory +#set CopySrcTree #> copy the source files and directory tree into the build directory +#set MakeFileOnly #> uncomment to build a Makefile, but do not compile; + #> comment out to compile the model (default if not set) +#set build_mech #> uncomment to build mechanism source code files using the + #> chemmech utility. + +#> Below are chemmech options for revising the mechanism definitions file. The option needs information on the +#> composition of each chemistry. See UTIL/chemmech/README.md for more information. +#> Uncomment to use. +#> Rewrite reactions by appending them with changes in tracked atoms or elements from reactants to products + #setenv COMPUTE_DELTA_ATOMS F +#> The species namelist contains the composition information as comments at the end of lines defining species. +#> Note that if a defining line does not have an ending comment, the species is taken to have none of the tacked atoms. +#> If NAMELISTS_LIST_ATOMS equals F, an additional ASCII file contains the information. + #setenv NAMELISTS_LIST_ATOMS T + +#set clobber_mech #> when commented, the bldit_mech.csh script will halt if + #> newly created mechanism files are attempting replace + #> existing ones. When uncommented, the existing files + #> will be overwritten. +set ParOpt #> uncomment to build a multiple processor (MPI) executable; + #> comment out for a single processor (serial) executable +#set DistrEnv #> uncomment to distribute environmental variables to multiple machines + #> comment out for a single processor (serial) executable (MPI only) +#set build_parallel_io #> uncomment to build with parallel I/O (pnetcdf); + #> comment out to use standard netCDF I/O +#set Debug_CCTM #> uncomment to compile CCTM with debug option equal to TRUE + #> comment out to use standard, optimized compile process +set make_options = "-j" #> additional options for make command if MakeFileOnly is not set + #> comment out if no additional options are wanted. + +#> Integrated Source Apportionment Method (ISAM) +#set ISAM_CCTM #> uncomment to compile CCTM with ISAM activated + #> comment out to use standard process + +set DDM3D_CCTM #> uncomment to compile CCTM with DDM-3D activated + #> comment out to use standard process +#> Two-way WRF-CMAQ +#set build_twoway #> uncomment to build WRF-CMAQ twoway; + #> comment out for off-line chemistry + +#> Working directory and Version IDs + if ( $?ISAM_CCTM ) then + set VRSN = v55_ISAM #> model configuration ID for CMAQ_ISAM + else if ( $?DDM3D_CCTM ) then + set VRSN = v55_DDM3D #> model configuration ID for CMAQ_DDM + else + set VRSN = v55 #> model configuration ID for CMAQ + endif + + set EXEC = CCTM_${VRSN}.exe #> executable name + set CFG = CCTM_${VRSN}.cfg #> configuration file name + + if ( $?build_twoway ) then # WRF Version used for WRF-CMAQ Model (must be v4.4+) + set WRF_VRSN = v4.4 + endif + +#======================================================================== +#> CCTM Science Modules +#======================================================================== +#> NOTE: For the modules with multiple options, a note is +#> provided on where to look in the CCTM source code +#> archive for a list of the possible settings. Users +#> may also refer to the CMAQ documentation. + + set ModGrid = grid/cartesian #> grid configuration module + + set DepMod = m3dry #> m3dry or stage + #set DepMod = stage + set ModAdv = wrf_cons #> 3-D Advection Scheme [Options: wrf_cons (default), local_cons] + set ModHdiff = hdiff/multiscale #> horizontal diffusion module + set ModVdiff = vdiff/acm2_${DepMod} #> vertical diffusion module (see $CMAQ_MODEL/CCTM/src/vdiff) + set ModDepv = depv/${DepMod} #> deposition velocity calculation module + #> (see $CMAQ_MODEL/CCTM/src/depv) + set ModEmis = emis/emis #> in-line emissions module + set ModBiog = biog/beis4 #> BEIS4 in-line emissions module + + set ModMegBiog = biog/megan3 #> MEGAN3 in-line emissions module + + set ModPlmrs = plrise/smoke #> in-line emissions plume rise + set ModCgrds = spcs/cgrid_spcs_nml #> chemistry species configuration module + #> (see $CMAQ_MODEL/CCTM/src/spcs) + set ModPhot = phot/inline #> photolysis calculation module + #> (see $CMAQ_MODEL/CCTM/src/phot) + + setenv Mechanism cb6r5_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) + set ModMech = MECHS/${Mechanism} + + if ( ${Mechanism} =~ *ae7* ) then #> ae7 family of aero and cloud chem + set ModAero = aero/aero7 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) + set ModCloud = cloud/acm_ae7 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) + else if ( ${Mechanism} =~ *ae6* ) then #> ae6 family of aero and cloud chem + set ModAero = aero/aero6 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) + set ModCloud = cloud/acm_ae6 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) + else if ( ${Mechanism} =~ *cracmm* ) then #> CRACMM family of aero and cloud chem + set ModAero = aero/cracmm # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) + set ModCloud = cloud/acm_cracmm # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) + endif + + # Special cloud modules for kmt versions + if( ${Mechanism} == cb6r5_ae7_aqkmt2 ) then + set ModCloud = cloud/acm_ae7_kmt2 + else if( ${Mechanism} == saprc07tic_ae7i_aqkmt2 ) then + set ModCloud = cloud/acm_ae7_kmt2 + endif + + # Gas chem solver + if ( ${Mechanism} == cb6r5m_ae7_aq ) then #> Gas-phase chemistry solver options ($CMAQ_MODEL/CCTM/src/gas) + setenv ChemSolver ros3 #> ros3 (or smvgear) are system independent + else + setenv ChemSolver ebi #> [ default for most mechanisms: ebi ] + endif + + if ( $ChemSolver == ebi ) then + set ModGas = gas/${ChemSolver}_${Mechanism} + + else + set ModGas = gas/${ChemSolver} + endif + + set ModUtil = util/util #> CCTM utility modules + set ModDiag = diag #> CCTM diagnostic modules + set Tracer = trac0 #> tracer configuration directory under + #> $CMAQ_MODEL/CCTM/src/MECHS [ default: no tracer species ] + set ModPa = procan/pa #> CCTM process analysis + set ModPvO3 = pv_o3 #> potential vorticity from the free troposphere + set ModISAM = isam #> CCTM Integrated Source Apportionment Method + set ModDDM3D = ddm3d #> Decoupled Direct Method in 3D + set ModDegrade = reactive_tracers #> Linear Chemical Loss for a fixed set of species treated as reactive tracers + +#============================================================================================ +#> Computing System Configuration: +#> Most of these settings are done in config.cmaq +#============================================================================================ + + setenv FC ${myFC} #> path of Fortan compiler; set in config.cmaq + set FP = $FC #> path of Fortan preprocessor; set in config.cmaq + set CC = ${myCC} #> path of C compiler; set in config.cmaq + setenv BLDER ${CMAQ_HOME}/UTIL/bldmake/bldmake_${compilerString}.exe #> name of model builder executable + +#> Libraries/include files +#set LIOAPI = "${IOAPI_DIR}/lib ${ioapi_lib}" #> I/O API library directory +#set IOAPIMOD = "${IOAPI_DIR}/include" #> I/O API module directory + set NETCDF = "${NETCDF_DIR}/lib ${netcdf_lib}" #> netCDF C library directory + set NETCDFF = "${NETCDFF_DIR}/lib ${netcdff_lib}" #> netCDF Fortran library directory + set PNETCDF = "${PNETCDF_DIR}/lib ${pnetcdf_lib}" #> Parallel netCDF library directory +#set PIO_INC = "${IOAPI_DIR}/src" + +#> Compiler flags set in config.cmaq + set FSTD = "${myFSTD}" + set DBG = "${myDBG}" + setenv F_FLAGS "${myFFLAGS}" #> F77 flags + set F90_FLAGS = "${myFRFLAGS}" #> F90 flags + set CPP_FLAGS = "" #> Fortran preprocessor flags + set C_FLAGS = "${myCFLAGS} -DFLDMN -I" #> C flags + set LINK_FLAGS = "${myLINK_FLAG}" # Link flags + + +#============================================================================================ +#> Implement User Input +#============================================================================================ + +#> Check for CMAQ_REPO and CMAQ_LIB settings: + if ( ! -e $CMAQ_REPO || ! -e $CMAQ_LIB ) then + echo " $CMAQ_REPO or $CMAQ_LIB directory not found" + exit 1 + endif + echo " Model repository base path: $CMAQ_REPO" + echo " library path: $CMAQ_LIB" + +#> If $CMAQ_MODEL is not set, default to $CMAQ_REPO + if ( $?CMAQ_MODEL ) then + echo " Model repository path: $CMAQ_MODEL" + else + setenv CMAQ_MODEL $CMAQ_REPO + echo " default Model repository path: $CMAQ_MODEL" + endif + +#> This script was written for Linux hosts only. If +#> the host system is not Linux, produce an error and stop + set BLD_OS = `uname -s` + if ($BLD_OS != 'Linux') then + echo " $BLD_OS -> wrong bldit script for host!" + exit 1 + endif + +#> If the two-way, coupled WRF-CMAQ model is being built, +#> then just generate the Makefile. Don't compile. + if ( $?build_twoway ) then + set MakeFileOnly + set ModTwoway = twoway + endif + +#> If parallel-io is selected, then make sure the multiprocessor +#> option is also set. + if ( $?build_parallel_io ) then + if ( ! $?ParOpt ) then + echo "*** ParOpt is not set: required for the build_parallel_io option" + exit 1 + endif + set PIO = ( -Dparallel_io ) + else + set PIO = "" + endif + + if ($DepMod == m3dry) then + set cpp_depmod = '-Dm3dry_opt' + else if ($DepMod == stage) then + set cpp_depmod = '-Dstage_opt' + if ( $?DDM3D_CCTM ) then + echo "*** DDM3D is not compatible with the STAGE deposition model" + exit 1 + endif + endif + +#> Set variables needed for multiprocessor and serial builds + if ( $?ParOpt ) then + #Multiprocessor system configuration + echo " Parallel; set MPI flags" + set ModStenex = STENEX/se + set ModPario = PARIO + set ModPar = par/mpi + set PARIO = ${CMAQ_MODEL}/PARIO + set STENEX = ${CMAQ_MODEL}/STENEX + # MPI_INC is set in config.cmaq + # set PIO_INC = "${IOAPI_DIR}/src/fixed_src" + set PAR = ( -Dparallel ) + set Popt = SE + set seL = se_snl + set LIB2 = "${ioapi_lib}" + set LIB3 = "${mpi_lib} ${extra_lib}" + set Str1 = (// Parallel / Include message passing definitions) + set Str2 = (include SUBST_MPI mpif.h;) + # Distribute Environment to different machines if not done automatically + if ( $?DistrEnv ) then + set PAR = ($PAR -Dcluster) + endif + else + #Serial system configuration + echo " Not Parallel; set Serial (no-op) flags" + set ModStenex = STENEX/noop + set ModPar = par/par_noop + set PARIO = "." + set STENEX = ${CMAQ_MODEL}/STENEX/noop + set MPI_INC = "." + # set PIO_INC = "." + set PAR = "" + set Popt = NOOP + set seL = sef90_noop + set LIB2 = "${ioapi_lib} ${extra_lib}" + set Str1 = + set Str2 = + endif + +#> if DDM-3D is set, add the pre-processor flag for it. + if ( $?DDM3D_CCTM ) then + set SENS = ( -Dsens ) + else + set SENS = "" + endif + +#> Build Mechanism Files and instruct build-make to look +#> in the CHEMMECH output folder for the files + if ( $?build_mech ) then + + # Note: modifying existing or creating new chemical mechanisms + # can lead to unstable or highly inaccurate representations of + # atmospheric chemical predictions when applying the EBI solvers. + # EBI solvers are highly characterized and tested before + # application. The CMAQ development team recommends using the + # generalized solvers, Rosenbrock or Gear, with user-defined + # mechanisms. + + # Because the bldit_cctm script is executing the bldit_mech + # processor, we will assume that the source location for the new + # mechanism files is in the CMAQ repo. There will also be an + # error check for overwriting an existing mechanism that can be + # disabled using the mech_clobber variable above. + setenv MECH_SRC ${CMAQ_REPO}/CCTM/src/${ModMech} + setenv TRAC_NML ${CMAQ_REPO}/CCTM/src/MECHS/trac0/Species_Table_TR_0.nml + setenv MECH_OUT ${CMAQ_REPO}/CCTM/src/${ModMech} + setenv EBI_SOLVER_OUT ${CMAQ_REPO}/CCTM/src/${ModGas} + if ( $?clobber_mech ) then + setenv CLOBBER_MECH TRUE + else + setenv CLOBBER_MECH FALSE + endif + + cd ${CMAQ_HOME}/CCTM/scripts + ./bldit_mech.csh ${compiler} ${compilerVrsn} + if ( $? != 0 ) then + echo "" + echo "bldit_mech did not finish correctly --> Build Process Halted" + exit 1 + endif + endif + +#> Tracer configuration files + set ModTrac = MECHS/$Tracer + +#> Set and create the "BLD" directory for checking out and compiling +#> source code. Move current directory to that build directory. + if ( $?Debug_CCTM ) then + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug + else + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} + endif + + + if ( ! -e "$Bld" ) then + mkdir $Bld + else + if ( ! -d "$Bld" ) then + echo " *** target exists, but not a directory ***" + exit 1 + endif + endif + cd $Bld + +#> Set locations for the include files of various modules + set ICL_PAR = $GlobInc/fixed/mpi + set ICL_CONST = $GlobInc/fixed/const + set ICL_FILES = $GlobInc/fixed/filenames + set ICL_EMCTL = $GlobInc/fixed/emctrl +#set ICL_PA = $GlobInc/procan/$PAOpt + + #Test with xlib commented out + if ( $?ParOpt ) then + set ICL_MPI = . #$xLib_Base/$xLib_3 + endif + + +#> If the source code is being copied to the build directory, +#> then move the include files as well and direct the Makefile +#> to the current directory. + if ( $?CopySrc ) then + /bin/cp -fp ${ICL_PAR}/* ${Bld} + /bin/cp -fp ${ICL_CONST}/* ${Bld} + /bin/cp -fp ${ICL_FILES}/* ${Bld} + /bin/cp -fp ${ICL_EMCTL}/* ${Bld} + #/bin/cp -fp ${ICL_PA}/* ${Bld} + if ( $?ParOpt ) then + /bin/cp -fp ${ICL_MPI}/mpif.h ${Bld} + endif + + set ICL_PAR = . + set ICL_CONST = . + set ICL_FILES = . + set ICL_EMCTL = . + #set ICL_PA = . + if ( $?ParOpt ) then + set ICL_MPI = . + endif + endif + + + set STX1 = ( -DSUBST_BARRIER=${Popt}_BARRIER\ + -DSUBST_GLOBAL_MAX=${Popt}_GLOBAL_MAX\ + -DSUBST_GLOBAL_MIN=${Popt}_GLOBAL_MIN\ + -DSUBST_GLOBAL_MIN_DATA=${Popt}_GLOBAL_MIN_DATA\ + -DSUBST_GLOBAL_TO_LOCAL_COORD=${Popt}_GLOBAL_TO_LOCAL_COORD\ + -DSUBST_GLOBAL_SUM=${Popt}_GLOBAL_SUM\ + -DSUBST_GLOBAL_LOGICAL=${Popt}_GLOBAL_LOGICAL\ + -DSUBST_GLOBAL_GATHER=${Popt}_GLOBAL_GATHER\ + -DSUBST_GLOBAL_BCAST=${Popt}_GLOBAL_BCAST\ + -DSUBST_LOOP_INDEX=${Popt}_LOOP_INDEX\ + -DSUBST_SUBGRID_INDEX=${Popt}_SUBGRID_INDEX ) + set STX2 = ( -DSUBST_HI_LO_BND_PE=${Popt}_HI_LO_BND_PE\ + -DSUBST_SUM_CHK=${Popt}_SUM_CHK\ + -DSUBST_SE_INIT=${Popt}_INIT\ + -DSUBST_INIT_ARRAY=${Popt}_INIT_ARRAY\ + -DSUBST_COMM=${Popt}_COMM\ + -DSUBST_MY_REGION=${Popt}_MY_REGION\ + -DSUBST_SLICE=${Popt}_SLICE\ + -DSUBST_GATHER=${Popt}_GATHER\ + -DSUBST_DATA_COPY=${Popt}_DATA_COPY\ + -DSUBST_IN_SYN=${Popt}_IN_SYN ) + + +#> 3-D Advection Options + if ( $ModAdv == wrf_cons ) then + set ModCpl = couple/gencoor_wrf_cons #> unit conversion and concentration coupling module + #> (see $CMAQ_MODEL/CCTM/src/couple) + set ModHadv = hadv/ppm #> horizontal advection module + set ModVadv = vadv/wrf_cons #> Vertical advection module + else if ($ModAdv == local_cons) then + set ModCpl = couple/gencoor_local_cons #> unit conversion and concentration coupling module + #> (see $CMAQ_MODEL/CCTM/src/couple) + set ModHadv = hadv/ppm #> horizontal advection module + set ModVadv = vadv/local_cons #> Vertical advection module + endif + + # Retrieve git repository sha ID for this source code version + set shaID = `git --git-dir=${CMAQ_REPO}/.git rev-parse --short=10 HEAD` + if ( $? != 0 ) then + set shaID = "not_a_repo" + endif + +# ============================================================================ +#> Create Config File +# ============================================================================ + +set Cfile = ${Bld}/${CFG}.bld # Config Filename + set quote = '"' + + echo > $Cfile + if ( $?make_options ) then + echo "make_options $quote$make_options$quote;" >> $Cfile + echo >> $Cfile + endif + echo "model $EXEC;" >> $Cfile + echo >> $Cfile + echo "repo $CCTM_SRC;" >> $Cfile + echo >> $Cfile + echo "sha_ID $shaID;" >> $Cfile + echo >> $Cfile + echo "mechanism $Mechanism;" >> $Cfile + echo >> $Cfile + echo "lib_base $CMAQ_LIB;" >> $Cfile + echo >> $Cfile + echo "lib_1 ioapi/lib;" >> $Cfile + echo >> $Cfile + echo "lib_2 ioapi/include_files;" >> $Cfile + echo >> $Cfile + if ( $?ParOpt ) then + echo "lib_3 ${quote}mpi -I.$quote;" >> $Cfile + echo >> $Cfile + endif + echo >> $Cfile + echo "lib_4 ioapi/lib;" >> $Cfile + echo >> $Cfile + set text = "$quote$CPP_FLAGS $PAR $SENS $PIO $cpp_depmod $STX1 $STX2$quote;" + echo "cpp_flags $text" >> $Cfile + echo >> $Cfile + echo "f_compiler $FC;" >> $Cfile + echo >> $Cfile + echo "fstd $quote$FSTD$quote;" >> $Cfile + echo >> $Cfile + echo "dbg $quote$DBG$quote;" >> $Cfile + echo >> $Cfile + echo "f_flags $quote$F_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "f90_flags $quote$F90_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "c_compiler $CC;" >> $Cfile + echo >> $Cfile + echo "c_flags $quote$C_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "link_flags $quote$LINK_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "ioapi $quote$LIB2$quote; " >> $Cfile + echo >> $Cfile + echo "netcdf $quote$netcdf_lib$quote;" >> $Cfile + echo >> $Cfile + echo "netcdff $quote$netcdff_lib$quote;" >> $Cfile + echo >> $Cfile + if ( $?ParOpt ) then + echo "mpich $quote$LIB3$quote;" >> $Cfile + echo >> $Cfile + endif + echo "include SUBST_PE_COMM $ICL_PAR/PE_COMM.EXT;" >> $Cfile + echo "include SUBST_CONST $ICL_CONST/CONST.EXT;" >> $Cfile + echo "include SUBST_FILES_ID $ICL_FILES/FILES_CTM.EXT;" >> $Cfile + echo "include SUBST_EMISPRM $ICL_EMCTL/EMISPRM.EXT;" >> $Cfile + echo >> $Cfile + + if ( $?ParOpt ) then + echo "$Str1" >> $Cfile + echo "include SUBST_MPI ./mpif.h;" >> $Cfile + endif + echo >> $Cfile + + set text = "stenex or se_noop" + echo "// options are" $text >> $Cfile + echo "Module ${ModStenex};" >> $Cfile + if ( $?ParOpt ) then + set text = "// parallel executable; stenex and pario included" + echo $text >> $Cfile + echo "Module ${ModPario};" >> $Cfile + else + set text = "serial executable; noop stenex" + echo $text >> $Cfile + endif + echo >> $Cfile + + set text = "par, par_nodistr and par_noop" + echo "// options are" $text >> $Cfile + if ( $?ParOpt ) then + echo "Module ${ModPar};" >> $Cfile + endif + echo >> $Cfile + + if ( $?build_twoway ) then + echo "// option set for WRF-CMAQ twoway" >> $Cfile + echo "Module ${ModTwoway};" >> $Cfile + echo >> $Cfile + endif + + set text = "driver" + echo "// options are" $text >> $Cfile + echo "Module driver;" >> $Cfile + echo >> $Cfile + + set text = "cartesian" + echo "// options are" $text >> $Cfile + echo "Module ${ModGrid};" >> $Cfile + echo >> $Cfile + + set text = "Init" + echo "// options are" $text >> $Cfile + echo "Module init;" >> $Cfile + echo >> $Cfile + + set text = "gencoor_wrf_cons and gencoor_local_cons" + echo "// options are" $text >> $Cfile + echo "Module ${ModCpl};" >> $Cfile + echo >> $Cfile + + set text = "ppm" + echo "// options are" $text >> $Cfile + echo "Module ${ModHadv};" >> $Cfile + echo >> $Cfile + + set text = "wrf_cons and local_cons" + echo "// options are" $text >> $Cfile + echo "Module ${ModVadv};" >> $Cfile + echo >> $Cfile + + set text = "multiscale" + echo "// options are" $text >> $Cfile + echo "Module ${ModHdiff};" >> $Cfile + echo >> $Cfile + + set text = "acm2_m3dry or acm2_stage" + echo "// options are" $text >> $Cfile + echo "Module ${ModVdiff};" >> $Cfile + echo >> $Cfile + + set text = "m3dry or stage" + echo "// options are" $text >> $Cfile + echo "Module ${ModDepv};" >> $Cfile + echo >> $Cfile + + set text = "emis" + echo "// options are" $text >> $Cfile + echo "Module ${ModEmis};" >> $Cfile + echo >> $Cfile + + set text = "beis4" + echo "// options are" $text >> $Cfile + echo "Module ${ModBiog};" >> $Cfile + echo >> $Cfile + + set text = "megan3" + echo "// options are" $text >> $Cfile + echo "Module ${ModMegBiog};" >> $Cfile + echo + + set text = "smoke" + echo "// options are" $text >> $Cfile + echo "Module ${ModPlmrs};" >> $Cfile + echo >> $Cfile + + set text = "cgrid_spcs_nml and cgrid_spcs_icl" + echo "// options are" $text >> $Cfile + echo "Module ${ModCgrds};" >> $Cfile + echo >> $Cfile + + set text = "inline and table" + echo "// options are" $text >> $Cfile + echo "Module ${ModPhot};" >> $Cfile + echo >> $Cfile + + set text = "degrade" + echo "// reactive_tracer options are" $text >> $Cfile + echo "Module ${ModDegrade};" >> $Cfile + echo >> $Cfile + + set text = "gas chemistry solvers" + echo "// " $text >> $Cfile + set text = "smvgear, ros3, and ebi; see 'gas chemistry mechanisms' for " + echo "// options are" $text >> $Cfile + echo "Module ${ModGas};" >> $Cfile + echo >> $Cfile + + set MechList = "cb6r5hap_ae7_aq, cb6r3_ae7_aq, cb6r5_ae7_aq, cb6r5_ae7_aqkmt2, cb6r5m_ae7_aq, racm2_ae6_aq, saprc07tc_ae6_aq, saprc07tic_ae7i_aq, saprc07tic_ae7i_aqkmt2" + + set text = "gas chemistry mechanisms" + echo "// " $text >> $Cfile + set text = "$MechList" + echo "// options are" $text >> $Cfile + echo "Module ${ModMech};" >> $Cfile + echo >> $Cfile + + set text = "tracer modules" + echo "// " $text >> $Cfile + echo "// options are trac0, trac1" >> $Cfile + echo "Module ${ModTrac};" >> $Cfile + echo + + set text = "use potential vorticity free-troposphere O3 scaling" + echo "// options are" $text >> $Cfile + echo "Module ${ModPvO3};" >> $Cfile + echo >> $Cfile + + set text = "aero6" + echo "// options are" $text >> $Cfile + echo "Module ${ModAero};" >> $Cfile + echo >> $Cfile + + set text = "acm_ae6, acm_ae6_kmt, acm_ae7_kmt2, acm_ae6_mp, acm_ae7" + echo "// options are" $text >> $Cfile + echo "Module ${ModCloud};" >> $Cfile + echo >> $Cfile + + set text = "// compile for inline process analysis" + echo $text >> $Cfile + echo "Module ${ModPa};" >> $Cfile + echo >> $Cfile + + set text = "// compile for integrated source apportionment method" + echo $text >> $Cfile + echo "Module ${ModISAM};" >> $Cfile + echo >> $Cfile + + if ( $?DDM3D_CCTM ) then + set text = "// compile for decoupled direct method in 3d" + echo $text >> $Cfile + echo "Module ${ModDDM3D};" >> $Cfile + echo >> $Cfile + endif + + set text = "util" + echo "// options are" $text >> $Cfile + echo "Module ${ModUtil};" >> $Cfile + echo >> $Cfile + + set text = "diag" + echo "// options are" $text >> $Cfile + echo "Module ${ModDiag};" >> $Cfile + echo >> $Cfile + + set text = "stm" + echo "// options are" $text >> $Cfile + echo "Module stm;" >> $Cfile + echo >> $Cfile + + set text = "cio" + echo "// options are" $text >> $Cfile + echo "Module cio;" >> $Cfile + echo >> $Cfile + + if ( $?ModMisc ) then + echo "Module ${ModMisc};" >> $Cfile + echo >> $Cfile + endif + +# ============================================================================ +#> Create Makefile and Model Executable +# ============================================================================ + unalias mv rm + +#> Recompile BLDMAKE from source if requested or if it does not exist + if ( $?CompileBLDMAKE || ! -f $BLDER ) then + cd ${CMAQ_REPO}/UTIL/bldmake/scripts + ./bldit_bldmake.csh + endif + +#> Relocate to the BLD_* directory + cd $Bld + +#> Set multiprocessor/serial options for BLDMAKE execution + if ( $?ParOpt ) then + set Blder = "$BLDER -verbose" + else + set Blder = "$BLDER -serial -verbose" + endif + +#> Run BLDMAKE Utility + set bld_flags = "" + if ( $?MakeFileOnly ) then # Do not compile the Model + set bld_flags = "${bld_flags} -makefo" + endif + + if ( $?CopySrc ) then + set bld_flags = "${bld_flags}" + else if ( $?CopySrcTree ) then + set bld_flags = "${bld_flags} -co" + else + set bld_flags = "{bld_flags} -git_local" # Run BLDMAKE with source code in + # version-controlled git repo + # $Cfile = ${CFG}.bld + endif + + if ( $?Debug_CCTM ) then + set bld_flags = "${bld_flags} -debug_cctm" + endif + + if ( $?ISAM_CCTM ) then + set bld_flags = "${bld_flags} -isam_cctm" + endif + + if ( $?build_twoway ) then + set bld_flags = "${bld_flags} -twoway" + endif + +#> Run BLDMAKE with source code in build directory + $Blder $bld_flags $Cfile + +#> Rename Makefile to specify compiler option and link back to Makefile + if ( ! $?build_twoway ) then + mv Makefile Makefile.$compilerString + if ( -e Makefile.$compilerString && -e Makefile ) rm Makefile + ln -s Makefile.$compilerString Makefile + endif + +#> Alert user of error in BLDMAKE if it ocurred + if ( $status != 0 ) then + echo " *** failure in $Blder ***" + exit 1 + endif + +#> Preserve old Config file, if it exists, before moving new one to +#> build directory. + if ( -e "$Bld/${CFG}" ) then + echo " >>> previous ${CFG} exists, re-naming to ${CFG}.old <<<" + mv $Bld/${CFG} $Bld/${CFG}.old + endif + mv ${CFG}.bld $Bld/${CFG} + +#> If a CRACMM mechanism is used and the compiler is gcc, remove trailing +#> comments in species namelist files (or else model will not run) + if ( ${Mechanism} =~ *cracmm* && ${compiler} == gcc ) then + echo " >>> removing trailing comments from species namelists <<<" + sed -i 's/,\!.*/,/' $Bld/GC_${Mechanism}.nml + sed -i 's/,\!.*/,/' $Bld/AE_${Mechanism}.nml + sed -i 's/,\!.*/,/' $Bld/NR_${Mechanism}.nml + endif + +#> If Building WRF-CMAQ, download WRF, download auxillary files and build +#> model + if ( $?build_twoway ) then + +#> Check if the user has git installed on their system + git --version >& /dev/null + + if ($? == 0) then + set git_check + endif + + if ($?git_check) then + + cd $CMAQ_HOME/CCTM/scripts + + # Downlad WRF repository from GitHub and put CMAQv5.5 into it + set WRF_BLD = BLD_WRF${WRF_VRSN}_CCTM_${VRSN}_${compilerString} + setenv wrf_path ${CMAQ_HOME}/CCTM/scripts/${WRF_BLD} + setenv WRF_CMAQ 1 + + if ( ! -d $WRF_BLD ) then + git clone --branch ${WRF_VRSN} https://github.com/wrf-model/WRF.git ./$WRF_BLD >& /dev/null + cd $wrf_path + mv $Bld ./cmaq + + # Configure WRF + ./configure < Date: Wed, 4 Sep 2024 17:28:46 -0400 Subject: [PATCH 200/375] update --- CCTM/scripts/bldit_cctm_cb6r5_stage.csh | 831 ++++++++++++++++++ ..._cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh | 818 +++++++++++++++++ .../CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md | 294 +++++++ ...MAQ_UG_tutorial_benchmark_cracmm2_stage.md | 294 +++++++ 4 files changed, 2237 insertions(+) create mode 100755 CCTM/scripts/bldit_cctm_cb6r5_stage.csh create mode 100755 CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh create mode 100644 DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md create mode 100644 DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md diff --git a/CCTM/scripts/bldit_cctm_cb6r5_stage.csh b/CCTM/scripts/bldit_cctm_cb6r5_stage.csh new file mode 100755 index 000000000..42b8b437e --- /dev/null +++ b/CCTM/scripts/bldit_cctm_cb6r5_stage.csh @@ -0,0 +1,831 @@ +#!/bin/csh -f + +# ======================= CCTMv5.5.X Build Script ========================= +# Usage: bldit_cctm.csh >&! bldit.cctm.log +# Requirements: I/O API & netCDF libraries, a Fortran compiler, +# and MPI for multiprocessor computing +# +# To report problems or request help with this script/program: +# http://www.cmascenter.org +# ========================================================================= + +#> Set Compiler Identity by User Input: Options -> intel | pgi | gcc + if ( $#argv == 1 ) then + setenv compiler $argv[1] + setenv compilerVrsn Empty + else if ( $#argv == 2 ) then + #> Compiler Name and Version have been provided + setenv compiler $1 + setenv compilerVrsn $2 + else + echo "usage: $0 " + echo " where is intel, pgi or gcc" + exit(2) + endif + +#> Source the config.cmaq file to set the build environment + cd ../.. + source ./config_cmaq.csh + + set echo + +# ======================================================================= +#> Begin User Input Section +# ======================================================================= + +#> Source Code Locations + setenv CCTM_SRC ${CMAQ_REPO}/CCTM/src #> location of the CCTM source code + set GlobInc = $CCTM_SRC/ICL #> location of the global include files + set Mechs = $CCTM_SRC/MECHS #> location of the chemistry mechanism include files + setenv REPOROOT $CCTM_SRC + +#> Controls for managing the source code and MPI compilation +set CompileBLDMAKE #> Recompile the BLDMAKE utility from source + #> comment out to use an existing BLDMAKE executable +set CopySrc #> copy the source files into the build directory +#set CopySrcTree #> copy the source files and directory tree into the build directory +#set MakeFileOnly #> uncomment to build a Makefile, but do not compile; + #> comment out to compile the model (default if not set) +#set build_mech #> uncomment to build mechanism source code files using the + #> chemmech utility. + +#> Below are chemmech options for revising the mechanism definitions file. The option needs information on the +#> composition of each chemistry. See UTIL/chemmech/README.md for more information. +#> Uncomment to use. +#> Rewrite reactions by appending them with changes in tracked atoms or elements from reactants to products + #setenv COMPUTE_DELTA_ATOMS F +#> The species namelist contains the composition information as comments at the end of lines defining species. +#> Note that if a defining line does not have an ending comment, the species is taken to have none of the tacked atoms. +#> If NAMELISTS_LIST_ATOMS equals F, an additional ASCII file contains the information. + #setenv NAMELISTS_LIST_ATOMS T + +#set clobber_mech #> when commented, the bldit_mech.csh script will halt if + #> newly created mechanism files are attempting replace + #> existing ones. When uncommented, the existing files + #> will be overwritten. +set ParOpt #> uncomment to build a multiple processor (MPI) executable; + #> comment out for a single processor (serial) executable +#set DistrEnv #> uncomment to distribute environmental variables to multiple machines + #> comment out for a single processor (serial) executable (MPI only) +#set build_parallel_io #> uncomment to build with parallel I/O (pnetcdf); + #> comment out to use standard netCDF I/O +#set Debug_CCTM #> uncomment to compile CCTM with debug option equal to TRUE + #> comment out to use standard, optimized compile process +set make_options = "-j" #> additional options for make command if MakeFileOnly is not set + #> comment out if no additional options are wanted. + +#> Integrated Source Apportionment Method (ISAM) +#set ISAM_CCTM #> uncomment to compile CCTM with ISAM activated + #> comment out to use standard process + +#set DDM3D_CCTM #> uncomment to compile CCTM with DDM-3D activated + #> comment out to use standard process +#> Two-way WRF-CMAQ +#set build_twoway #> uncomment to build WRF-CMAQ twoway; + #> comment out for off-line chemistry + +#> Working directory and Version IDs + if ( $?ISAM_CCTM ) then + set VRSN = v55_ISAM #> model configuration ID for CMAQ_ISAM + else if ( $?DDM3D_CCTM ) then + set VRSN = v55_DDM3D #> model configuration ID for CMAQ_DDM + else + set VRSN = v55 #> model configuration ID for CMAQ + endif + + set EXEC = CCTM_${VRSN}.exe #> executable name + set CFG = CCTM_${VRSN}.cfg #> configuration file name + + if ( $?build_twoway ) then # WRF Version used for WRF-CMAQ Model (must be v4.4+) + set WRF_VRSN = v4.4 + endif + +#======================================================================== +#> CCTM Science Modules +#======================================================================== +#> NOTE: For the modules with multiple options, a note is +#> provided on where to look in the CCTM source code +#> archive for a list of the possible settings. Users +#> may also refer to the CMAQ documentation. + + set ModGrid = grid/cartesian #> grid configuration module + +#set DepMod = m3dry #> m3dry or stage +set DepMod = stage + set ModAdv = wrf_cons #> 3-D Advection Scheme [Options: wrf_cons (default), local_cons] + set ModHdiff = hdiff/multiscale #> horizontal diffusion module + set ModVdiff = vdiff/acm2_${DepMod} #> vertical diffusion module (see $CMAQ_MODEL/CCTM/src/vdiff) + set ModDepv = depv/${DepMod} #> deposition velocity calculation module + #> (see $CMAQ_MODEL/CCTM/src/depv) + set ModEmis = emis/emis #> in-line emissions module + set ModBiog = biog/beis4 #> BEIS4 in-line emissions module + + set ModMegBiog = biog/megan3 #> MEGAN3 in-line emissions module + + set ModPlmrs = plrise/smoke #> in-line emissions plume rise + set ModCgrds = spcs/cgrid_spcs_nml #> chemistry species configuration module + #> (see $CMAQ_MODEL/CCTM/src/spcs) + set ModPhot = phot/inline #> photolysis calculation module + #> (see $CMAQ_MODEL/CCTM/src/phot) + + setenv Mechanism cb6r5_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) + set ModMech = MECHS/${Mechanism} + + if ( ${Mechanism} =~ *ae7* ) then #> ae7 family of aero and cloud chem + set ModAero = aero/aero7 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) + set ModCloud = cloud/acm_ae7 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) + else if ( ${Mechanism} =~ *ae6* ) then #> ae6 family of aero and cloud chem + set ModAero = aero/aero6 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) + set ModCloud = cloud/acm_ae6 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) + else if ( ${Mechanism} =~ *cracmm* ) then #> CRACMM family of aero and cloud chem + set ModAero = aero/cracmm # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) + set ModCloud = cloud/acm_cracmm # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) + endif + + # Special cloud modules for kmt versions + if( ${Mechanism} == cb6r5_ae7_aqkmt2 ) then + set ModCloud = cloud/acm_ae7_kmt2 + else if( ${Mechanism} == saprc07tic_ae7i_aqkmt2 ) then + set ModCloud = cloud/acm_ae7_kmt2 + endif + + # Gas chem solver + if ( ${Mechanism} == cb6r5m_ae7_aq ) then #> Gas-phase chemistry solver options ($CMAQ_MODEL/CCTM/src/gas) + setenv ChemSolver ros3 #> ros3 (or smvgear) are system independent + else + setenv ChemSolver ebi #> [ default for most mechanisms: ebi ] + endif + + if ( $ChemSolver == ebi ) then + set ModGas = gas/${ChemSolver}_${Mechanism} + + else + set ModGas = gas/${ChemSolver} + endif + + set ModUtil = util/util #> CCTM utility modules + set ModDiag = diag #> CCTM diagnostic modules + set Tracer = trac0 #> tracer configuration directory under + #> $CMAQ_MODEL/CCTM/src/MECHS [ default: no tracer species ] + set ModPa = procan/pa #> CCTM process analysis + set ModPvO3 = pv_o3 #> potential vorticity from the free troposphere + set ModISAM = isam #> CCTM Integrated Source Apportionment Method + set ModDDM3D = ddm3d #> Decoupled Direct Method in 3D + set ModDegrade = reactive_tracers #> Linear Chemical Loss for a fixed set of species treated as reactive tracers + +#============================================================================================ +#> Computing System Configuration: +#> Most of these settings are done in config.cmaq +#============================================================================================ + + setenv FC ${myFC} #> path of Fortan compiler; set in config.cmaq + set FP = $FC #> path of Fortan preprocessor; set in config.cmaq + set CC = ${myCC} #> path of C compiler; set in config.cmaq + setenv BLDER ${CMAQ_HOME}/UTIL/bldmake/bldmake_${compilerString}.exe #> name of model builder executable + +#> Libraries/include files +#set LIOAPI = "${IOAPI_DIR}/lib ${ioapi_lib}" #> I/O API library directory +#set IOAPIMOD = "${IOAPI_DIR}/include" #> I/O API module directory + set NETCDF = "${NETCDF_DIR}/lib ${netcdf_lib}" #> netCDF C library directory + set NETCDFF = "${NETCDFF_DIR}/lib ${netcdff_lib}" #> netCDF Fortran library directory + set PNETCDF = "${PNETCDF_DIR}/lib ${pnetcdf_lib}" #> Parallel netCDF library directory +#set PIO_INC = "${IOAPI_DIR}/src" + +#> Compiler flags set in config.cmaq + set FSTD = "${myFSTD}" + set DBG = "${myDBG}" + setenv F_FLAGS "${myFFLAGS}" #> F77 flags + set F90_FLAGS = "${myFRFLAGS}" #> F90 flags + set CPP_FLAGS = "" #> Fortran preprocessor flags + set C_FLAGS = "${myCFLAGS} -DFLDMN -I" #> C flags + set LINK_FLAGS = "${myLINK_FLAG}" # Link flags + + +#============================================================================================ +#> Implement User Input +#============================================================================================ + +#> Check for CMAQ_REPO and CMAQ_LIB settings: + if ( ! -e $CMAQ_REPO || ! -e $CMAQ_LIB ) then + echo " $CMAQ_REPO or $CMAQ_LIB directory not found" + exit 1 + endif + echo " Model repository base path: $CMAQ_REPO" + echo " library path: $CMAQ_LIB" + +#> If $CMAQ_MODEL is not set, default to $CMAQ_REPO + if ( $?CMAQ_MODEL ) then + echo " Model repository path: $CMAQ_MODEL" + else + setenv CMAQ_MODEL $CMAQ_REPO + echo " default Model repository path: $CMAQ_MODEL" + endif + +#> This script was written for Linux hosts only. If +#> the host system is not Linux, produce an error and stop + set BLD_OS = `uname -s` + if ($BLD_OS != 'Linux') then + echo " $BLD_OS -> wrong bldit script for host!" + exit 1 + endif + +#> If the two-way, coupled WRF-CMAQ model is being built, +#> then just generate the Makefile. Don't compile. + if ( $?build_twoway ) then + set MakeFileOnly + set ModTwoway = twoway + endif + +#> If parallel-io is selected, then make sure the multiprocessor +#> option is also set. + if ( $?build_parallel_io ) then + if ( ! $?ParOpt ) then + echo "*** ParOpt is not set: required for the build_parallel_io option" + exit 1 + endif + set PIO = ( -Dparallel_io ) + else + set PIO = "" + endif + + if ($DepMod == m3dry) then + set cpp_depmod = '-Dm3dry_opt' + else if ($DepMod == stage) then + set cpp_depmod = '-Dstage_opt' + if ( $?DDM3D_CCTM ) then + echo "*** DDM3D is not compatible with the STAGE deposition model" + exit 1 + endif + endif + +#> Set variables needed for multiprocessor and serial builds + if ( $?ParOpt ) then + #Multiprocessor system configuration + echo " Parallel; set MPI flags" + set ModStenex = STENEX/se + set ModPario = PARIO + set ModPar = par/mpi + set PARIO = ${CMAQ_MODEL}/PARIO + set STENEX = ${CMAQ_MODEL}/STENEX + # MPI_INC is set in config.cmaq + # set PIO_INC = "${IOAPI_DIR}/src/fixed_src" + set PAR = ( -Dparallel ) + set Popt = SE + set seL = se_snl + set LIB2 = "${ioapi_lib}" + set LIB3 = "${mpi_lib} ${extra_lib}" + set Str1 = (// Parallel / Include message passing definitions) + set Str2 = (include SUBST_MPI mpif.h;) + # Distribute Environment to different machines if not done automatically + if ( $?DistrEnv ) then + set PAR = ($PAR -Dcluster) + endif + else + #Serial system configuration + echo " Not Parallel; set Serial (no-op) flags" + set ModStenex = STENEX/noop + set ModPar = par/par_noop + set PARIO = "." + set STENEX = ${CMAQ_MODEL}/STENEX/noop + set MPI_INC = "." + # set PIO_INC = "." + set PAR = "" + set Popt = NOOP + set seL = sef90_noop + set LIB2 = "${ioapi_lib} ${extra_lib}" + set Str1 = + set Str2 = + endif + +#> if DDM-3D is set, add the pre-processor flag for it. + if ( $?DDM3D_CCTM ) then + set SENS = ( -Dsens ) + else + set SENS = "" + endif + +#> Build Mechanism Files and instruct build-make to look +#> in the CHEMMECH output folder for the files + if ( $?build_mech ) then + + # Note: modifying existing or creating new chemical mechanisms + # can lead to unstable or highly inaccurate representations of + # atmospheric chemical predictions when applying the EBI solvers. + # EBI solvers are highly characterized and tested before + # application. The CMAQ development team recommends using the + # generalized solvers, Rosenbrock or Gear, with user-defined + # mechanisms. + + # Because the bldit_cctm script is executing the bldit_mech + # processor, we will assume that the source location for the new + # mechanism files is in the CMAQ repo. There will also be an + # error check for overwriting an existing mechanism that can be + # disabled using the mech_clobber variable above. + setenv MECH_SRC ${CMAQ_REPO}/CCTM/src/${ModMech} + setenv TRAC_NML ${CMAQ_REPO}/CCTM/src/MECHS/trac0/Species_Table_TR_0.nml + setenv MECH_OUT ${CMAQ_REPO}/CCTM/src/${ModMech} + setenv EBI_SOLVER_OUT ${CMAQ_REPO}/CCTM/src/${ModGas} + if ( $?clobber_mech ) then + setenv CLOBBER_MECH TRUE + else + setenv CLOBBER_MECH FALSE + endif + + cd ${CMAQ_HOME}/CCTM/scripts + ./bldit_mech.csh ${compiler} ${compilerVrsn} + if ( $? != 0 ) then + echo "" + echo "bldit_mech did not finish correctly --> Build Process Halted" + exit 1 + endif + endif + +#> Tracer configuration files + set ModTrac = MECHS/$Tracer + +#> Set and create the "BLD" directory for checking out and compiling +#> source code. Move current directory to that build directory. + if ( $?Debug_CCTM ) then + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug + else + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} + endif + + + if ( ! -e "$Bld" ) then + mkdir $Bld + else + if ( ! -d "$Bld" ) then + echo " *** target exists, but not a directory ***" + exit 1 + endif + endif + cd $Bld + +#> Set locations for the include files of various modules + set ICL_PAR = $GlobInc/fixed/mpi + set ICL_CONST = $GlobInc/fixed/const + set ICL_FILES = $GlobInc/fixed/filenames + set ICL_EMCTL = $GlobInc/fixed/emctrl +#set ICL_PA = $GlobInc/procan/$PAOpt + + #Test with xlib commented out + if ( $?ParOpt ) then + set ICL_MPI = . #$xLib_Base/$xLib_3 + endif + + +#> If the source code is being copied to the build directory, +#> then move the include files as well and direct the Makefile +#> to the current directory. + if ( $?CopySrc ) then + /bin/cp -fp ${ICL_PAR}/* ${Bld} + /bin/cp -fp ${ICL_CONST}/* ${Bld} + /bin/cp -fp ${ICL_FILES}/* ${Bld} + /bin/cp -fp ${ICL_EMCTL}/* ${Bld} + #/bin/cp -fp ${ICL_PA}/* ${Bld} + if ( $?ParOpt ) then + /bin/cp -fp ${ICL_MPI}/mpif.h ${Bld} + endif + + set ICL_PAR = . + set ICL_CONST = . + set ICL_FILES = . + set ICL_EMCTL = . + #set ICL_PA = . + if ( $?ParOpt ) then + set ICL_MPI = . + endif + endif + + + set STX1 = ( -DSUBST_BARRIER=${Popt}_BARRIER\ + -DSUBST_GLOBAL_MAX=${Popt}_GLOBAL_MAX\ + -DSUBST_GLOBAL_MIN=${Popt}_GLOBAL_MIN\ + -DSUBST_GLOBAL_MIN_DATA=${Popt}_GLOBAL_MIN_DATA\ + -DSUBST_GLOBAL_TO_LOCAL_COORD=${Popt}_GLOBAL_TO_LOCAL_COORD\ + -DSUBST_GLOBAL_SUM=${Popt}_GLOBAL_SUM\ + -DSUBST_GLOBAL_LOGICAL=${Popt}_GLOBAL_LOGICAL\ + -DSUBST_GLOBAL_GATHER=${Popt}_GLOBAL_GATHER\ + -DSUBST_GLOBAL_BCAST=${Popt}_GLOBAL_BCAST\ + -DSUBST_LOOP_INDEX=${Popt}_LOOP_INDEX\ + -DSUBST_SUBGRID_INDEX=${Popt}_SUBGRID_INDEX ) + set STX2 = ( -DSUBST_HI_LO_BND_PE=${Popt}_HI_LO_BND_PE\ + -DSUBST_SUM_CHK=${Popt}_SUM_CHK\ + -DSUBST_SE_INIT=${Popt}_INIT\ + -DSUBST_INIT_ARRAY=${Popt}_INIT_ARRAY\ + -DSUBST_COMM=${Popt}_COMM\ + -DSUBST_MY_REGION=${Popt}_MY_REGION\ + -DSUBST_SLICE=${Popt}_SLICE\ + -DSUBST_GATHER=${Popt}_GATHER\ + -DSUBST_DATA_COPY=${Popt}_DATA_COPY\ + -DSUBST_IN_SYN=${Popt}_IN_SYN ) + + +#> 3-D Advection Options + if ( $ModAdv == wrf_cons ) then + set ModCpl = couple/gencoor_wrf_cons #> unit conversion and concentration coupling module + #> (see $CMAQ_MODEL/CCTM/src/couple) + set ModHadv = hadv/ppm #> horizontal advection module + set ModVadv = vadv/wrf_cons #> Vertical advection module + else if ($ModAdv == local_cons) then + set ModCpl = couple/gencoor_local_cons #> unit conversion and concentration coupling module + #> (see $CMAQ_MODEL/CCTM/src/couple) + set ModHadv = hadv/ppm #> horizontal advection module + set ModVadv = vadv/local_cons #> Vertical advection module + endif + + # Retrieve git repository sha ID for this source code version + set shaID = `git --git-dir=${CMAQ_REPO}/.git rev-parse --short=10 HEAD` + if ( $? != 0 ) then + set shaID = "not_a_repo" + endif + +# ============================================================================ +#> Create Config File +# ============================================================================ + +set Cfile = ${Bld}/${CFG}.bld # Config Filename + set quote = '"' + + echo > $Cfile + if ( $?make_options ) then + echo "make_options $quote$make_options$quote;" >> $Cfile + echo >> $Cfile + endif + echo "model $EXEC;" >> $Cfile + echo >> $Cfile + echo "repo $CCTM_SRC;" >> $Cfile + echo >> $Cfile + echo "sha_ID $shaID;" >> $Cfile + echo >> $Cfile + echo "mechanism $Mechanism;" >> $Cfile + echo >> $Cfile + echo "lib_base $CMAQ_LIB;" >> $Cfile + echo >> $Cfile + echo "lib_1 ioapi/lib;" >> $Cfile + echo >> $Cfile + echo "lib_2 ioapi/include_files;" >> $Cfile + echo >> $Cfile + if ( $?ParOpt ) then + echo "lib_3 ${quote}mpi -I.$quote;" >> $Cfile + echo >> $Cfile + endif + echo >> $Cfile + echo "lib_4 ioapi/lib;" >> $Cfile + echo >> $Cfile + set text = "$quote$CPP_FLAGS $PAR $SENS $PIO $cpp_depmod $STX1 $STX2$quote;" + echo "cpp_flags $text" >> $Cfile + echo >> $Cfile + echo "f_compiler $FC;" >> $Cfile + echo >> $Cfile + echo "fstd $quote$FSTD$quote;" >> $Cfile + echo >> $Cfile + echo "dbg $quote$DBG$quote;" >> $Cfile + echo >> $Cfile + echo "f_flags $quote$F_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "f90_flags $quote$F90_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "c_compiler $CC;" >> $Cfile + echo >> $Cfile + echo "c_flags $quote$C_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "link_flags $quote$LINK_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "ioapi $quote$LIB2$quote; " >> $Cfile + echo >> $Cfile + echo "netcdf $quote$netcdf_lib$quote;" >> $Cfile + echo >> $Cfile + echo "netcdff $quote$netcdff_lib$quote;" >> $Cfile + echo >> $Cfile + if ( $?ParOpt ) then + echo "mpich $quote$LIB3$quote;" >> $Cfile + echo >> $Cfile + endif + echo "include SUBST_PE_COMM $ICL_PAR/PE_COMM.EXT;" >> $Cfile + echo "include SUBST_CONST $ICL_CONST/CONST.EXT;" >> $Cfile + echo "include SUBST_FILES_ID $ICL_FILES/FILES_CTM.EXT;" >> $Cfile + echo "include SUBST_EMISPRM $ICL_EMCTL/EMISPRM.EXT;" >> $Cfile + echo >> $Cfile + + if ( $?ParOpt ) then + echo "$Str1" >> $Cfile + echo "include SUBST_MPI ./mpif.h;" >> $Cfile + endif + echo >> $Cfile + + set text = "stenex or se_noop" + echo "// options are" $text >> $Cfile + echo "Module ${ModStenex};" >> $Cfile + if ( $?ParOpt ) then + set text = "// parallel executable; stenex and pario included" + echo $text >> $Cfile + echo "Module ${ModPario};" >> $Cfile + else + set text = "serial executable; noop stenex" + echo $text >> $Cfile + endif + echo >> $Cfile + + set text = "par, par_nodistr and par_noop" + echo "// options are" $text >> $Cfile + if ( $?ParOpt ) then + echo "Module ${ModPar};" >> $Cfile + endif + echo >> $Cfile + + if ( $?build_twoway ) then + echo "// option set for WRF-CMAQ twoway" >> $Cfile + echo "Module ${ModTwoway};" >> $Cfile + echo >> $Cfile + endif + + set text = "driver" + echo "// options are" $text >> $Cfile + echo "Module driver;" >> $Cfile + echo >> $Cfile + + set text = "cartesian" + echo "// options are" $text >> $Cfile + echo "Module ${ModGrid};" >> $Cfile + echo >> $Cfile + + set text = "Init" + echo "// options are" $text >> $Cfile + echo "Module init;" >> $Cfile + echo >> $Cfile + + set text = "gencoor_wrf_cons and gencoor_local_cons" + echo "// options are" $text >> $Cfile + echo "Module ${ModCpl};" >> $Cfile + echo >> $Cfile + + set text = "ppm" + echo "// options are" $text >> $Cfile + echo "Module ${ModHadv};" >> $Cfile + echo >> $Cfile + + set text = "wrf_cons and local_cons" + echo "// options are" $text >> $Cfile + echo "Module ${ModVadv};" >> $Cfile + echo >> $Cfile + + set text = "multiscale" + echo "// options are" $text >> $Cfile + echo "Module ${ModHdiff};" >> $Cfile + echo >> $Cfile + + set text = "acm2_m3dry or acm2_stage" + echo "// options are" $text >> $Cfile + echo "Module ${ModVdiff};" >> $Cfile + echo >> $Cfile + + set text = "m3dry or stage" + echo "// options are" $text >> $Cfile + echo "Module ${ModDepv};" >> $Cfile + echo >> $Cfile + + set text = "emis" + echo "// options are" $text >> $Cfile + echo "Module ${ModEmis};" >> $Cfile + echo >> $Cfile + + set text = "beis4" + echo "// options are" $text >> $Cfile + echo "Module ${ModBiog};" >> $Cfile + echo >> $Cfile + + set text = "megan3" + echo "// options are" $text >> $Cfile + echo "Module ${ModMegBiog};" >> $Cfile + echo + + set text = "smoke" + echo "// options are" $text >> $Cfile + echo "Module ${ModPlmrs};" >> $Cfile + echo >> $Cfile + + set text = "cgrid_spcs_nml and cgrid_spcs_icl" + echo "// options are" $text >> $Cfile + echo "Module ${ModCgrds};" >> $Cfile + echo >> $Cfile + + set text = "inline and table" + echo "// options are" $text >> $Cfile + echo "Module ${ModPhot};" >> $Cfile + echo >> $Cfile + + set text = "degrade" + echo "// reactive_tracer options are" $text >> $Cfile + echo "Module ${ModDegrade};" >> $Cfile + echo >> $Cfile + + set text = "gas chemistry solvers" + echo "// " $text >> $Cfile + set text = "smvgear, ros3, and ebi; see 'gas chemistry mechanisms' for " + echo "// options are" $text >> $Cfile + echo "Module ${ModGas};" >> $Cfile + echo >> $Cfile + + set MechList = "cb6r5hap_ae7_aq, cb6r3_ae7_aq, cb6r5_ae7_aq, cb6r5_ae7_aqkmt2, cb6r5m_ae7_aq, racm2_ae6_aq, saprc07tc_ae6_aq, saprc07tic_ae7i_aq, saprc07tic_ae7i_aqkmt2" + + set text = "gas chemistry mechanisms" + echo "// " $text >> $Cfile + set text = "$MechList" + echo "// options are" $text >> $Cfile + echo "Module ${ModMech};" >> $Cfile + echo >> $Cfile + + set text = "tracer modules" + echo "// " $text >> $Cfile + echo "// options are trac0, trac1" >> $Cfile + echo "Module ${ModTrac};" >> $Cfile + echo + + set text = "use potential vorticity free-troposphere O3 scaling" + echo "// options are" $text >> $Cfile + echo "Module ${ModPvO3};" >> $Cfile + echo >> $Cfile + + set text = "aero6" + echo "// options are" $text >> $Cfile + echo "Module ${ModAero};" >> $Cfile + echo >> $Cfile + + set text = "acm_ae6, acm_ae6_kmt, acm_ae7_kmt2, acm_ae6_mp, acm_ae7" + echo "// options are" $text >> $Cfile + echo "Module ${ModCloud};" >> $Cfile + echo >> $Cfile + + set text = "// compile for inline process analysis" + echo $text >> $Cfile + echo "Module ${ModPa};" >> $Cfile + echo >> $Cfile + + set text = "// compile for integrated source apportionment method" + echo $text >> $Cfile + echo "Module ${ModISAM};" >> $Cfile + echo >> $Cfile + + if ( $?DDM3D_CCTM ) then + set text = "// compile for decoupled direct method in 3d" + echo $text >> $Cfile + echo "Module ${ModDDM3D};" >> $Cfile + echo >> $Cfile + endif + + set text = "util" + echo "// options are" $text >> $Cfile + echo "Module ${ModUtil};" >> $Cfile + echo >> $Cfile + + set text = "diag" + echo "// options are" $text >> $Cfile + echo "Module ${ModDiag};" >> $Cfile + echo >> $Cfile + + set text = "stm" + echo "// options are" $text >> $Cfile + echo "Module stm;" >> $Cfile + echo >> $Cfile + + set text = "cio" + echo "// options are" $text >> $Cfile + echo "Module cio;" >> $Cfile + echo >> $Cfile + + if ( $?ModMisc ) then + echo "Module ${ModMisc};" >> $Cfile + echo >> $Cfile + endif + +# ============================================================================ +#> Create Makefile and Model Executable +# ============================================================================ + unalias mv rm + +#> Recompile BLDMAKE from source if requested or if it does not exist + if ( $?CompileBLDMAKE || ! -f $BLDER ) then + cd ${CMAQ_REPO}/UTIL/bldmake/scripts + ./bldit_bldmake.csh + endif + +#> Relocate to the BLD_* directory + cd $Bld + +#> Set multiprocessor/serial options for BLDMAKE execution + if ( $?ParOpt ) then + set Blder = "$BLDER -verbose" + else + set Blder = "$BLDER -serial -verbose" + endif + +#> Run BLDMAKE Utility + set bld_flags = "" + if ( $?MakeFileOnly ) then # Do not compile the Model + set bld_flags = "${bld_flags} -makefo" + endif + + if ( $?CopySrc ) then + set bld_flags = "${bld_flags}" + else if ( $?CopySrcTree ) then + set bld_flags = "${bld_flags} -co" + else + set bld_flags = "{bld_flags} -git_local" # Run BLDMAKE with source code in + # version-controlled git repo + # $Cfile = ${CFG}.bld + endif + + if ( $?Debug_CCTM ) then + set bld_flags = "${bld_flags} -debug_cctm" + endif + + if ( $?ISAM_CCTM ) then + set bld_flags = "${bld_flags} -isam_cctm" + endif + + if ( $?build_twoway ) then + set bld_flags = "${bld_flags} -twoway" + endif + +#> Run BLDMAKE with source code in build directory + $Blder $bld_flags $Cfile + +#> Rename Makefile to specify compiler option and link back to Makefile + if ( ! $?build_twoway ) then + mv Makefile Makefile.$compilerString + if ( -e Makefile.$compilerString && -e Makefile ) rm Makefile + ln -s Makefile.$compilerString Makefile + endif + +#> Alert user of error in BLDMAKE if it ocurred + if ( $status != 0 ) then + echo " *** failure in $Blder ***" + exit 1 + endif + +#> Preserve old Config file, if it exists, before moving new one to +#> build directory. + if ( -e "$Bld/${CFG}" ) then + echo " >>> previous ${CFG} exists, re-naming to ${CFG}.old <<<" + mv $Bld/${CFG} $Bld/${CFG}.old + endif + mv ${CFG}.bld $Bld/${CFG} + +#> If a CRACMM mechanism is used and the compiler is gcc, remove trailing +#> comments in species namelist files (or else model will not run) + if ( ${Mechanism} =~ *cracmm* && ${compiler} == gcc ) then + echo " >>> removing trailing comments from species namelists <<<" + sed -i 's/,\!.*/,/' $Bld/GC_${Mechanism}.nml + sed -i 's/,\!.*/,/' $Bld/AE_${Mechanism}.nml + sed -i 's/,\!.*/,/' $Bld/NR_${Mechanism}.nml + endif + +#> If Building WRF-CMAQ, download WRF, download auxillary files and build +#> model + if ( $?build_twoway ) then + +#> Check if the user has git installed on their system + git --version >& /dev/null + + if ($? == 0) then + set git_check + endif + + if ($?git_check) then + + cd $CMAQ_HOME/CCTM/scripts + + # Downlad WRF repository from GitHub and put CMAQv5.5 into it + set WRF_BLD = BLD_WRF${WRF_VRSN}_CCTM_${VRSN}_${compilerString} + setenv wrf_path ${CMAQ_HOME}/CCTM/scripts/${WRF_BLD} + setenv WRF_CMAQ 1 + + if ( ! -d $WRF_BLD ) then + git clone --branch ${WRF_VRSN} https://github.com/wrf-model/WRF.git ./$WRF_BLD >& /dev/null + cd $wrf_path + mv $Bld ./cmaq + + # Configure WRF + ./configure <&! cctm_Bench_2018_12SE1.log & +# +# To report problems or request help with this script/program: +# http://www.epa.gov/cmaq (EPA CMAQ Website) +# http://www.cmascenter.org (CMAS Website) +# =================================================================== + +# =================================================================== +#> Runtime Environment Options +# =================================================================== + +echo 'Start Model Run At ' `date` + +#> Toggle Diagnostic Mode which will print verbose information to +#> standard output + setenv CTM_DIAG_LVL 0 + +#> Choose compiler and set up CMAQ environment with correct +#> libraries using config.cmaq. Options: intel | gcc | pgi + if ( ! $?compiler ) then + setenv compiler intel + endif + if ( ! $?compilerVrsn ) then + setenv compilerVrsn Empty + endif + +#> Source the config.cmaq file to set the build environment + cd ../.. + source ./config_cmaq.csh $compiler $compilerVrsn + cd CCTM/scripts + +#> Set General Parameters for Configuring the Simulation + set VRSN = v55_DDM3D #> Code Version + set PROC = mpi #> serial or mpi + set MECH = cb6r5_ae7_aq #> Mechanism ID + set APPL = Bench_2018_12NE3_${MECH}_m3dry #> Application Name (e.g. Gridname) + +#> Define RUNID as any combination of parameters above or others. By default, +#> this information will be collected into this one string, $RUNID, for easy +#> referencing in output binaries and log files as well as in other scripts. + setenv RUNID ${VRSN}_${compilerString}_${APPL} + +#> Set the build directory (this is where the CMAQ executable +#> is located by default). + set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${MECH}_m3dry + set EXEC = CCTM_${VRSN}.exe + +#> Output Each line of Runscript to Log File + if ( $CTM_DIAG_LVL != 0 ) set echo + +#> Set Working, Input, and Output Directories + setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. + setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory + setenv INPDIR ${CMAQ_DATA}/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input/2018_12NE3 #> Input Directory + setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location + setenv NMLpath ${BLD} #> Location of Namelists. Common places are: + #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} + + echo "" + echo "Working Directory is $WORKDIR" + echo "Build Directory is $BLD" + echo "Output Directory is $OUTDIR" + echo "Log Directory is $LOGDIR" + echo "Executable Name is $EXEC" + +# ===================================================================== +#> CCTM Configuration Options +# ===================================================================== + +#> Set Start and End Days for looping + setenv NEW_START TRUE #> Set to FALSE for model restart + set START_DATE = "2018-07-01" #> beginning date (July 1, 2016) + set END_DATE = "2018-07-02" #> ending date (July 1, 2016) + +#> Set Timestepping Parameters +set STTIME = 000000 #> beginning GMT time (HHMMSS) +set NSTEPS = 240000 #> time duration (HHMMSS) for this run +set TSTEP = 010000 #> output time step interval (HHMMSS) + +#> Horizontal domain decomposition +if ( $PROC == serial ) then + setenv NPCOL_NPROW "1 1"; set NPROCS = 1 # single processor setting +else + @ NPCOL = 8; @ NPROW = 4 + @ NPROCS = $NPCOL * $NPROW + setenv NPCOL_NPROW "$NPCOL $NPROW"; +endif + +#> Define Execution ID: e.g. [CMAQ-Version-Info]_[User]_[Date]_[Time] +if ( ! -e ${BLD}/CCTM_${VRSN}.cfg ) then + set SHAID = "" +else + set SHAID = `grep "sha_ID" ${BLD}/CCTM_${VRSN}.cfg | cut -c 13-22` + if ( $SHAID == not_a_repo ) then + set SHAID = "" + else + set SHAID = "_sha="$SHAID + endif +endif +setenv EXECUTION_ID "CMAQ_CCTM${VRSN}${SHAID}_`id -u -n`_`date -u +%Y%m%d_%H%M%S_%N`" #> Inform IO/API of the Execution ID +echo "" +echo "---CMAQ EXECUTION ID: $EXECUTION_ID ---" + +#> Keep or Delete Existing Output Files +set CLOBBER_DATA = TRUE + +#> Logfile Options +#> Master Log File Name; uncomment to write standard output to a log, otherwise write to screen +#setenv LOGFILE $CMAQ_HOME/$RUNID.log +if (! -e $LOGDIR ) then + mkdir -p $LOGDIR +endif +setenv PRINT_PROC_TIME Y #> Print timing for all science subprocesses to Logfile + #> [ default: TRUE or Y ] +setenv STDOUT T #> Override I/O-API trying to write information to both the processor + #> logs and STDOUT [ options: T | F ] + +setenv GRID_NAME 2018_12NE3 #> check GRIDDESC file for GRID_NAME options +setenv GRIDDESC $INPDIR/GRIDDESC #> grid description file + +#> Retrieve the number of columns, rows, and layers in this simulation +set NZ = 35 +set NX = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f6` +set NY = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f7` +set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` + +#> Output Species and Layer Options + #> CONC file species; comment or set to "ALL" to write all species to CONC + # setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 FORM ISOP NH3 ANH4I ANH4J ASO4I ASO4J" + #setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC + + #> ACONC file species; comment or set to "ALL" to write all species to ACONC + #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" + setenv AVG_CONC_SPCS "ALL" + setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC + setenv AVG_FILE_ENDTIME N #> override default beginning ACONC timestamp [ default: N ] + +#> Synchronization Time Step and Tolerance Options +setenv CTM_MAXSYNC 300 #> max sync time step (sec) [ default: 720 ] +setenv CTM_MINSYNC 60 #> min sync time step (sec) [ default: 60 ] +setenv SIGMA_SYNC_TOP 0.7 #> top sigma level thru which sync step determined [ default: 0.7 ] +#setenv ADV_HDIV_LIM 0.95 #> maximum horiz. div. limit for adv step adjust [ default: 0.9 ] +setenv CTM_ADV_CFL 0.95 #> max CFL [ default: 0.75] +#setenv RB_ATOL 1.0E-09 #> global ROS3 solver absolute tolerance [ default: 1.0E-07 ] + +#> Science Options +setenv CTM_OCEAN_CHEM Y #> Flag for ocean halogen chemistry, sea spray aerosol emissions, + #> and enhanced ozone deposition over ocean waters [ default: Y ] +setenv CTM_WB_DUST N #> use inline windblown dust emissions (only for use with PX) [ default: N ] +setenv CTM_LTNG_NO N #> turn on lightning NOx [ default: N ] +setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], + #> otherwise revert to Kz0UT +setenv PX_VERSION Y #> WRF PX LSM +setenv CLM_VERSION N #> WRF CLM LSM +setenv NOAH_VERSION N #> WRF NOAH LSM +setenv CTM_ABFLUX Y #> ammonia bi-directional flux for in-line deposition + #> velocities [ default: N ] +setenv CTM_BIDI_FERT_NH3 T #> subtract fertilizer NH3 from emissions because it will be handled + #> by the BiDi calculation [ default: Y ] +setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition + #> velocities [ default: N ] +setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ] + #> please see user guide (6.10.4 Nitrous Acid (HONO)) + #> for dependency on percent urban fraction dataset +setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ] +setenv CTM_PVO3 N #> consider potential vorticity module for O3 transport from the stratosphere + #> [default: N] + +setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions with BEIS [ default: N ] +setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ] +setenv BDSNP_MEGAN N #> turns on BDSNP soil NO emissions [ default: N ] + +setenv AEROSOL_OPTICS 3 #> sets method for determining aerosol optics affecting photolysis + #> frequencies ( 3 is the default value ) + #> VALUES 1 thru 3 determined Uniformly Volume Mixed spherical + #> (1-Tabular Mie; 2-Mie Calculation; 3-Case Approx to Mie Theory) + #> VALUES 4 thru 6 attempts to use core-shell mixing model when the + #> aerosol mode has signficant black carbon core otherwise use Volume Mixed + #> model where optics determined by + #> (4-Tabular Mie; 5-Mie Calculation; 6-Case Approx to Mie Theory) + +#> Surface Tiled Aerosol and Gaseous Exchange Options +#> Only active if DepMod=stage at compile time +setenv CTM_MOSAIC N #> Output landuse specific deposition velocities [ default: N ] +setenv CTM_STAGE_P22 N #> Pleim et al. 2022 Aerosol deposition model [default: N] +setenv CTM_STAGE_E20 Y #> Emerson et al. 2020 Aerosol deposition model [default: Y] +setenv CTM_STAGE_S22 N #> Shu et al. 2022 (CMAQ v5.3) Aerosol deposition model [default: N] + +setenv IC_AERO_M2WET F #> Specify whether or not initial condition aerosol size distribution + #> is wet or dry [ default: F = dry ] +setenv BC_AERO_M2WET F #> Specify whether or not boundary condition aerosol size distribution + #> is wet or dry [ default: F = dry ] +setenv IC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from initial + #> conditions [ default: T = use aerosol surface area ] +setenv BC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from boundary + #> conditions [ default: T = use aerosol surface area ] + + +#> Vertical Extraction Options +setenv VERTEXT N +setenv VERTEXT_COORD_PATH ${WORKDIR}/lonlat.csv + +#> I/O Controls +setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ] +setenv FL_ERR_STOP N #> stop on inconsistent input files +setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ] +setenv IOAPI_OFFSET_64 YES #> support large timestep records (>2GB/timestep record) [ options: YES | NO ] +setenv IOAPI_CHECK_HEADERS N #> check file headers [ options: Y | N ] +setenv CTM_EMISCHK N #> Abort CMAQ if missing surrogates from emissions Input files + +#> Diagnostic Output Flags +setenv CTM_CKSUM Y #> checksum report [ default: Y ] +setenv CLD_DIAG N #> cloud diagnostic file [ default: N ] + +setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ] +setenv NLAYS_PHOTDIAG "1" #> Number of layers for PHOTDIAG2 and PHOTDIAG3 from + #> Layer 1 to NLAYS_PHOTDIAG [ default: all layers ] +#setenv NWAVE_PHOTDIAG "294 303 310 316 333 381 607" #> Wavelengths written for variables + #> in PHOTDIAG2 and PHOTDIAG3 + #> [ default: all wavelengths ] + +setenv CTM_SSEMDIAG N #> sea-spray emissions diagnostic file [ default: N ] +setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; + #> Ignore if CTM_WB_DUST = N +setenv CTM_DEPV_FILE N #> deposition velocities diagnostic file [ default: N ] +setenv VDIFF_DIAG_FILE N #> vdiff & possibly aero grav. sedimentation diagnostic file [ default: N ] +setenv LTNGDIAG N #> lightning diagnostic file [ default: N ] +setenv B3GTS_DIAG N #> BEIS mass emissions diagnostic file [ default: N ] +setenv CTM_WVEL Y #> save derived vertical velocity component to conc + #> file [ default: Y ] + +# ===================================================================== +#> Input Directories and Filenames +# ===================================================================== + +set ICpath = $INPDIR/icbc #> initial conditions input directory +set BCpath = $INPDIR/icbc #> boundary conditions input directory +set EMISpath = $INPDIR/emis #> gridded emissions input directory +set IN_PTpath = $INPDIR/emis #> point source emissions input directory +set IN_LTpath = $INPDIR/lightning #> lightning NOx input directory +set METpath = $INPDIR/met/mcipv5.4 #> meteorology input directory +#set JVALpath = $INPDIR/jproc #> offline photolysis rate table directory +set OMIpath = $BLD #> ozone column data for the photolysis model +set EPICpath = $INPDIR/epic #> EPIC putput for bidirectional NH3 +set SZpath = $INPDIR/surface #> surf zone file for in-line seaspray emissions + +# ===================================================================== +#> Begin Loop Through Simulation Days +# ===================================================================== +set rtarray = "" + +set TODAYG = ${START_DATE} +set TODAYJ = `date -ud "${START_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ +set START_DAY = ${TODAYJ} +set STOP_DAY = `date -ud "${END_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ +set NDAYS = 0 + +while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ + + set NDAYS = `echo "${NDAYS} + 1" | bc -l` + + #> Retrieve Calendar day Information + set YYYYMMDD = `date -ud "${TODAYG}" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD + set YYYYMM = `date -ud "${TODAYG}" +%Y%m` #> Convert YYYY-MM-DD to YYYYMM + set YYMMDD = `date -ud "${TODAYG}" +%y%m%d` #> Convert YYYY-MM-DD to YYMMDD + set MM = `date -ud "${TODAYG}" +%m` #> Convert YYYY-MM-DD to MM + set YYYYJJJ = $TODAYJ + + #> Calculate Yesterday's Date + set YESTERDAY = `date -ud "${TODAYG}-1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYJJJ + +# ===================================================================== +#> Set Output String and Propagate Model Configuration Documentation +# ===================================================================== + echo "" + echo "Set up input and output files for Day ${TODAYG}." + + #> set output file name extensions + setenv CTM_APPL ${RUNID}_${YYYYMMDD} + + #> Copy Model Configuration To Output Folder + if ( ! -d "$OUTDIR" ) mkdir -p $OUTDIR + cp $BLD/CCTM_${VRSN}.cfg $OUTDIR/CCTM_${CTM_APPL}.cfg + +# ===================================================================== +#> Input Files (Some are Day-Dependent) +# ===================================================================== + + #> Initial conditions + if ($NEW_START == true || $NEW_START == TRUE ) then + setenv ICFILE CCTM_ICON_v54_${MECH}_12NE3_20180701.nc + setenv INIT_MEDC_1 notused + else + set ICpath = $OUTDIR + setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc + setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc + endif + + #> Boundary conditions + set BCFILE = CCTM_BCON_v54_${MECH}_12NE3_${YYYYMMDD}.nc + + #> Off-line photolysis rates + #set JVALfile = JTABLE_${YYYYJJJ} + + #> Ozone column data + set OMIfile = OMI_1979_to_2019.dat + + #> Optics file + set OPTfile = PHOT_OPTICS.dat + + #> MCIP meteorology files + setenv GRID_BDY_2D $METpath/GRIDBDY2D_12NE3_${YYYYMMDD}.nc # GRID files are static, not day-specific + setenv GRID_CRO_2D $METpath/GRIDCRO2D_12NE3_${YYYYMMDD}.nc + setenv GRID_CRO_3D $METpath/GRIDCRO3D_12NE3_${YYYYMMDD}.nc + setenv GRID_DOT_2D $METpath/GRIDDOT2D_12NE3_${YYYYMMDD}.nc + setenv MET_CRO_2D $METpath/METCRO2D_12NE3_${YYYYMMDD}.nc + setenv MET_CRO_3D $METpath/METCRO3D_12NE3_${YYYYMMDD}.nc + setenv MET_DOT_3D $METpath/METDOT3D_12NE3_${YYYYMMDD}.nc + setenv MET_BDY_3D $METpath/METBDY3D_12NE3_${YYYYMMDD}.nc + setenv LUFRAC_CRO $METpath/LUFRAC_CRO_12NE3_${YYYYMMDD}.nc + + #> Control Files + #> + #> IMPORTANT NOTE + #> + #> The DESID control files defined below are an integral part of controlling the behavior of the model simulation. + #> Among other things, they control the mapping of species in the emission files to chemical species in the model and + #> several aspects related to the simulation of organic aerosols. + #> Please carefully review the DESID control files to ensure that they are configured to be consistent with the assumptions + #> made when creating the emission files defined below and the desired representation of organic aerosols. + #> For further information, please see: + #> + AERO7 Release Notes section on 'Required emission updates': + #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Release_Notes/aero7_overview.md + #> + CMAQ User's Guide section 6.9.3 on 'Emission Compatability': + #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.9.3_Emission_Compatability + #> + Emission Control (DESID) Documentation in the CMAQ User's Guide: + #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md + #> + setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml + setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml + + #> The following namelist configures aggregated output (via the Explicit and Lumped + #> Air Quality Model Output (ELMO) Module), domain-wide budget output, and chemical + #> family output. + setenv MISC_CTRL_NML ${BLD}/CMAQ_Control_Misc.nml + + #> The following namelist controls the mapping of meteorological land use types and the NH3 and Hg emission + #> potentials + setenv STAGECTRL_NML ${BLD}/CMAQ_Control_STAGE.nml + + #> Spatial Masks For Emissions Scaling + #setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file + setenv CMAQ_MASKS $INPDIR/GRIDMASK_STATES_12NE3.nc + + #> Gridded Emissions Files + setenv N_EMIS_GR 2 + set EMISfile = emis_mole_all_${YYYYMMDD}_12NE3_nobeis_norwc_2018gc_cb6_18j.ncf + setenv GR_EMIS_001 ${EMISpath}/merged_nobeis_norwc/${EMISfile} + setenv GR_EMIS_LAB_001 GRIDDED_EMIS + setenv GR_EM_SYM_DATE_001 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE + + set EMISfile = emis_mole_rwc_${YYYYMMDD}_12NE3_cmaq_cb6ae7_2018gc_cb6_18j.ncf + setenv GR_EMIS_002 ${EMISpath}/rwc/${EMISfile} + setenv GR_EMIS_LAB_002 GR_RES_FIRES + setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE + + #> In-line point emissions configuration + setenv N_EMIS_PT 10 #> Number of elevated source groups + + set STKCASEG = 12US1_2018gc_cb6_18j # Stack Group Version Label + set STKCASEE = 12US1_cmaq_cb6ae7_2018gc_cb6_18j # Stack Emission Version Label + + # Time-Independent Stack Parameters for Inline Point Sources + setenv STK_GRPS_001 $IN_PTpath/ptnonipm/stack_groups_ptnonipm_${STKCASEG}.ncf + setenv STK_GRPS_002 $IN_PTpath/ptegu/stack_groups_ptegu_${STKCASEG}.ncf + setenv STK_GRPS_003 $IN_PTpath/othpt/stack_groups_othpt_${STKCASEG}.ncf + setenv STK_GRPS_004 $IN_PTpath/ptagfire/stack_groups_ptagfire_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_005 $IN_PTpath/ptfire-rx/stack_groups_ptfire-rx_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_006 $IN_PTpath/ptfire-wild/stack_groups_ptfire-wild_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_007 $IN_PTpath/ptfire_othna/stack_groups_ptfire_othna_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_008 $IN_PTpath/pt_oilgas/stack_groups_pt_oilgas_${STKCASEG}.ncf + setenv STK_GRPS_009 $IN_PTpath/cmv_c3_12/stack_groups_cmv_c3_12_${STKCASEG}.ncf + setenv STK_GRPS_010 $IN_PTpath/cmv_c1c2_12/stack_groups_cmv_c1c2_12_${STKCASEG}.ncf + + # Emission Rates for Inline Point Sources + setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_004 $IN_PTpath/ptagfire/inln_mole_ptagfire_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_005 $IN_PTpath/ptfire-rx/inln_mole_ptfire-rx_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_006 $IN_PTpath/ptfire-wild/inln_mole_ptfire-wild_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_007 $IN_PTpath/ptfire_othna/inln_mole_ptfire_othna_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_008 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_009 $IN_PTpath/cmv_c3_12/inln_mole_cmv_c3_12_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_010 $IN_PTpath/cmv_c1c2_12/inln_mole_cmv_c1c2_12_${YYYYMMDD}_${STKCASEE}.ncf + + # Label Each Emissions Stream + setenv STK_EMIS_LAB_001 PT_NONEGU + setenv STK_EMIS_LAB_002 PT_EGU + setenv STK_EMIS_LAB_003 PT_OTHER + setenv STK_EMIS_LAB_004 PT_AGFIRES + setenv STK_EMIS_LAB_005 PT_RXFIRES + setenv STK_EMIS_LAB_006 PT_WILDFIRES + setenv STK_EMIS_LAB_007 PT_OTHFIRES + setenv STK_EMIS_LAB_008 PT_OILGAS + setenv STK_EMIS_LAB_009 PT_CMV_C3 + setenv STK_EMIS_LAB_010 PT_CMV_C1C2 + + # Allow CMAQ to Use Point Source files with dates that do not + # match the internal model date + # To change default behaviour please see Users Guide for EMIS_SYM_DATE + setenv STK_EM_SYM_DATE_001 F + setenv STK_EM_SYM_DATE_002 F + setenv STK_EM_SYM_DATE_003 F + setenv STK_EM_SYM_DATE_004 F + setenv STK_EM_SYM_DATE_005 F + setenv STK_EM_SYM_DATE_006 F + setenv STK_EM_SYM_DATE_007 F + setenv STK_EM_SYM_DATE_008 F + + #> Lightning NOx configuration + if ( $CTM_LTNG_NO == 'Y' ) then + setenv LTNGNO "InLine" #> set LTNGNO to "Inline" to activate in-line calculation + + #> In-line lightning NOx options + setenv USE_NLDN Y #> use hourly NLDN strike file [ default: Y ] + if ( $USE_NLDN == Y ) then + setenv NLDN_STRIKES ${IN_LTpath}/NLDN_12km_60min_${YYYYMMDD}.ioapi + endif + setenv LTNGPARMS_FILE ${IN_LTpath}/LTNG_AllParms_12NE3.nc #> lightning parameter file + endif + + #> In-line biogenic emissions configuration + if ( $CTM_BIOGEMIS_BE == 'Y' ) then + set IN_BEISpath = ${INPDIR}/surface + setenv GSPRO $BLD/gspro_biogenics.txt + setenv BEIS_NORM_EMIS $IN_BEISpath/beis4_beld6_norm_emis.12NE3.nc + setenv BEIS_SOILINP $OUTDIR/CCTM_BSOILOUT_${RUNID}_${YESTERDAY}.nc + #> Biogenic NO soil input file; ignore if NEW_START = TRUE + endif + if ( $CTM_BIOGEMIS_MG == 'Y' ) then + setenv MEGAN_SOILINP $OUTDIR/CCTM_MSOILOUT_${RUNID}_${YESTERDAY}.nc + #> Biogenic NO soil input file; ignore if INITIAL_RUN = Y + #> ; ignore if IGNORE_SOILINP = Y + setenv MEGAN_CTS $SZpath/megan3.2/CT3_CONUS.ncf + setenv MEGAN_EFS $SZpath/megan3.2/EFMAPS_CONUS.ncf + setenv MEGAN_LDF $SZpath/megan3.2/LDF_CONUS.ncf + if ($BDSNP_MEGAN == 'Y') then + setenv BDSNPINP $OUTDIR/CCTM_BDSNPOUT_${RUNID}_${YESTERDAY}.nc + setenv BDSNP_FFILE $SZpath/megan3.2/FERT_tceq_12km.ncf + setenv BDSNP_NFILE $SZpath/megan3.2/NDEP_tceq_12km.ncf + setenv BDSNP_LFILE $SZpath/megan3.2/LANDTYPE_tceq_12km.ncf + setenv BDSNP_AFILE $SZpath/megan3.2/ARID_tceq_12km.ncf + setenv BDSNP_NAFILE $SZpath/megan3.2/NONARID_tceq_12km.ncf + endif + endif + + #> In-line sea spray emissions configuration + setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file + + #> Bidirectional ammonia configuration + if ( $CTM_ABFLUX == 'Y' ) then + setenv E2C_SOIL ${EPICpath}/2018r1_EPIC0509_12NE3_soil.nc + setenv E2C_CHEM ${EPICpath}/2018r1_EPIC0509_12NE3_time${YYYYMMDD}.nc + setenv E2C_CHEM_YEST ${EPICpath}/2018r1_EPIC0509_12NE3_time${YESTERDAY}.nc + setenv E2C_LU ${EPICpath}/beld4_12NE3_2011.nc + endif + +#> Inline Process Analysis + setenv CTM_PROCAN N #> use process analysis [ default: N] + if ( $?CTM_PROCAN ) then # $CTM_PROCAN is defined + if ( $CTM_PROCAN == 'Y' || $CTM_PROCAN == 'T' ) then +#> process analysis global column, row and layer ranges +# setenv PA_BCOL_ECOL "10 90" # default: all columns +# setenv PA_BROW_EROW "10 80" # default: all rows +# setenv PA_BLEV_ELEV "1 4" # default: all levels + setenv PACM_INFILE ${NMLpath}/pa_${MECH}.ctl + setenv PACM_REPORT $OUTDIR/"PA_REPORT".${YYYYMMDD} + endif + endif + +#> Integrated Source Apportionment Method (ISAM) Options + setenv CTM_ISAM N + if ( $?CTM_ISAM ) then + if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then + setenv SA_IOLIST ${WORKDIR}/isam_control.2018_12NE3.txt + setenv ISAM_BLEV_ELEV " 1 1" + setenv AISAM_BLEV_ELEV " 1 1" + + #> Set Up ISAM Initial Condition Flags + if ($NEW_START == true || $NEW_START == TRUE ) then + setenv ISAM_NEW_START Y + setenv ISAM_PREVDAY + else + setenv ISAM_NEW_START N + setenv ISAM_PREVDAY "$OUTDIR/CCTM_SA_CGRID_${RUNID}_${YESTERDAY}.nc" + endif + + #> Set Up ISAM Output Filenames + setenv SA_ACONC_1 "$OUTDIR/CCTM_SA_ACONC_${CTM_APPL}.nc -v" + setenv SA_CONC_1 "$OUTDIR/CCTM_SA_CONC_${CTM_APPL}.nc -v" + setenv SA_DD_1 "$OUTDIR/CCTM_SA_DRYDEP_${CTM_APPL}.nc -v" + setenv SA_WD_1 "$OUTDIR/CCTM_SA_WETDEP_${CTM_APPL}.nc -v" + setenv SA_CGRID_1 "$OUTDIR/CCTM_SA_CGRID_${CTM_APPL}.nc -v" + + #> Set optional ISAM regions files + setenv ISAM_REGIONS $INPDIR/GRIDMASK_STATES_12NE3.nc + + #> Options used to favor tracked species in reaction for Ozone-NOx chemistry + setenv ISAM_O3_WEIGHTS 5 # weights for tracked species Default is 5 + # OPTIONS + # 1 does not weight any species + # 2 weights NOx and subset of NOz species + # 3 uses with from option 2 plus weight OVOC species, organic radicals and operators + # 4 weight OVOC species, organic radicals and operators + # 5 toggles between two weighting set based on VOC and NOx limited ozone production + # Below options only used if ISAM_O3_WEIGHTS set to 5 + setenv ISAM_NOX_CASE 2 # weights for tracked species when ozone production is NOx limited. Default is 2 + setenv ISAM_VOC_CASE 4 # weights for tracked species when ozone production is VOC limited. Default is 4 + setenv VOC_NOX_TRANS 0.35 # value of Prod H2O2 over Prod HNO3 less than where + # ISAM_VOC_CASE weights are used. Otherwise, ISAM_NOX_CASE + # weights are used. Default is 0.35 + + endif + endif + + +#> Sulfur Tracking Model (STM) + setenv STM_SO4TRACK N #> sulfur tracking [ default: N ] + if ( $?STM_SO4TRACK ) then + if ( $STM_SO4TRACK == 'Y' || $STM_SO4TRACK == 'T' ) then + + #> option to normalize sulfate tracers [ default: Y ] + setenv STM_ADJSO4 Y + + endif + endif + +#> Decoupled Direct Method in 3D (DDM-3D) Options + setenv CTM_DDM3D Y # Sets up requisite script settings for DDM-3D (default is N/F) + # Additionally requires for CCTM to be compiled for DDM-3D simulations + + set NPMAX = 2 # Number of sensitivity parameters defined in SEN_INPUT + setenv SEN_INPUT ${WORKDIR}/sensinput.2018_12NE3.dat + + setenv DDM3D_HIGH N # allow higher-order sensitivity parameters in SEN_INPUT [ T | Y | F | N ] (default is N/F) + + if ($NEW_START == true || $NEW_START == TRUE ) then + setenv DDM3D_RST N # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) + set S_ICpath = # sensitivity fields are initialized to 0.0 on the first hour of the first day + set S_ICfile = + else + setenv DDM3D_RST Y # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) + set S_ICpath = $OUTDIR + set S_ICfile = CCTM_SENGRID_${RUNID}_${YESTERDAY}.nc + endif + + setenv CTM_NPMAX $NPMAX + setenv CTM_SENS_1 "$OUTDIR/CCTM_SENGRID_${CTM_APPL}.nc -v" + setenv A_SENS_1 "$OUTDIR/CCTM_ASENS_${CTM_APPL}.nc -v" + setenv CTM_SWETDEP_1 "$OUTDIR/CCTM_SENWDEP_${CTM_APPL}.nc -v" + setenv CTM_SDRYDEP_1 "$OUTDIR/CCTM_SENDDEP_${CTM_APPL}.nc -v" + setenv INIT_SENS_1 $S_ICpath/$S_ICfile + + +# ===================================================================== +#> Output Files +# ===================================================================== + + #> set output file names + setenv S_CGRID "$OUTDIR/CCTM_CGRID_${CTM_APPL}.nc" #> 3D Inst. Concentrations + setenv CTM_CONC_1 "$OUTDIR/CCTM_CONC_${CTM_APPL}.nc -v" #> On-Hour Concentrations + setenv A_CONC_1 "$OUTDIR/CCTM_ACONC_${CTM_APPL}.nc -v" #> Hourly Avg. Concentrations + setenv MEDIA_CONC "$OUTDIR/CCTM_MEDIA_CONC_${CTM_APPL}.nc -v" #> NH3 Conc. in Media + setenv CTM_DRY_DEP_1 "$OUTDIR/CCTM_DRYDEP_${CTM_APPL}.nc -v" #> Hourly Dry Deposition + setenv CTM_DEPV_DIAG "$OUTDIR/CCTM_DEPV_${CTM_APPL}.nc -v" #> Dry Deposition Velocities + setenv B3GTS_S "$OUTDIR/CCTM_B3GTS_S_${CTM_APPL}.nc -v" #> Biogenic Emissions + setenv BEIS_SOILOUT "$OUTDIR/CCTM_BSOILOUT_${CTM_APPL}.nc" #> Soil Emissions + setenv MEGAN_SOILOUT "$OUTDIR/CCTM_MSOILOUT_${CTM_APPL}.nc" #> Soil Emissions + setenv BDSNPOUT "$OUTDIR/CCTM_BDSNPOUT_${CTM_APPL}.nc" #> Soil Emissions + setenv CTM_WET_DEP_1 "$OUTDIR/CCTM_WETDEP1_${CTM_APPL}.nc -v" #> Wet Dep From All Clouds + setenv CTM_WET_DEP_2 "$OUTDIR/CCTM_WETDEP2_${CTM_APPL}.nc -v" #> Wet Dep From SubGrid Clouds + setenv CTM_ELMO_1 "$OUTDIR/CCTM_ELMO_${CTM_APPL}.nc -v" #> On-Hour Particle Diagnostics + setenv CTM_AELMO_1 "$OUTDIR/CCTM_AELMO_${CTM_APPL}.nc -v" #> Hourly Avg. Particle Diagnostics + setenv CTM_RJ_1 "$OUTDIR/CCTM_PHOTDIAG1_${CTM_APPL}.nc -v" #> 2D Surface Summary from Inline Photolysis + setenv CTM_RJ_2 "$OUTDIR/CCTM_PHOTDIAG2_${CTM_APPL}.nc -v" #> 3D Photolysis Rates + setenv CTM_RJ_3 "$OUTDIR/CCTM_PHOTDIAG3_${CTM_APPL}.nc -v" #> 3D Optical and Radiative Results from Photolysis + setenv CTM_SSEMIS_1 "$OUTDIR/CCTM_SSEMIS_${CTM_APPL}.nc -v" #> Sea Spray Emissions + setenv CTM_DUST_EMIS_1 "$OUTDIR/CCTM_DUSTEMIS_${CTM_APPL}.nc -v" #> Dust Emissions + setenv CTM_BUDGET "$OUTDIR/CCTM_BUDGET_${CTM_APPL}.txt -v" #> Budget [Default Off] + setenv CTM_IPR_1 "$OUTDIR/CCTM_PA_1_${CTM_APPL}.nc -v" #> Process Analysis + setenv CTM_IPR_2 "$OUTDIR/CCTM_PA_2_${CTM_APPL}.nc -v" #> Process Analysis + setenv CTM_IPR_3 "$OUTDIR/CCTM_PA_3_${CTM_APPL}.nc -v" #> Process Analysis + setenv CTM_IRR_1 "$OUTDIR/CCTM_IRR_1_${CTM_APPL}.nc -v" #> Chem Process Analysis + setenv CTM_IRR_2 "$OUTDIR/CCTM_IRR_2_${CTM_APPL}.nc -v" #> Chem Process Analysis + setenv CTM_IRR_3 "$OUTDIR/CCTM_IRR_3_${CTM_APPL}.nc -v" #> Chem Process Analysis + setenv CTM_DRY_DEP_MOS "$OUTDIR/CCTM_DDMOS_${CTM_APPL}.nc -v" #> Dry Dep + setenv CTM_DEPV_MOS "$OUTDIR/CCTM_DEPVMOS_${CTM_APPL}.nc -v" #> Dry Dep Velocity + setenv CTM_VDIFF_DIAG "$OUTDIR/CCTM_VDIFF_DIAG_${CTM_APPL}.nc -v" #> Vertical Dispersion Diagnostic + setenv CTM_VSED_DIAG "$OUTDIR/CCTM_VSED_DIAG_${CTM_APPL}.nc -v" #> Particle Grav. Settling Velocity + setenv CTM_LTNGDIAG_1 "$OUTDIR/CCTM_LTNGHRLY_${CTM_APPL}.nc -v" #> Hourly Avg Lightning NO + setenv CTM_LTNGDIAG_2 "$OUTDIR/CCTM_LTNGCOL_${CTM_APPL}.nc -v" #> Column Total Lightning NO + setenv CTM_VEXT_1 "$OUTDIR/CCTM_VEXT_${CTM_APPL}.nc -v" #> On-Hour 3D Concs at select sites + + #> set floor file (neg concs) + setenv FLOOR_FILE ${OUTDIR}/FLOOR_${CTM_APPL}.txt + + #> look for existing log files and output files + ( ls CTM_LOG_???.${CTM_APPL} > buff.txt ) >& /dev/null + ( ls ${LOGDIR}/CTM_LOG_???.${CTM_APPL} >> buff.txt ) >& /dev/null + set log_test = `cat buff.txt`; rm -f buff.txt + + set OUT_FILES = (${FLOOR_FILE} ${S_CGRID} ${CTM_CONC_1} ${A_CONC_1} ${MEDIA_CONC} \ + ${CTM_DRY_DEP_1} $CTM_DEPV_DIAG $B3GTS_S $MEGAN_SOILOUT $BEIS_SOILOUT $BDSNPOUT \ + $CTM_WET_DEP_1 $CTM_WET_DEP_2 $CTM_ELMO_1 $CTM_AELMO_1 \ + $CTM_RJ_1 $CTM_RJ_2 $CTM_RJ_3 $CTM_SSEMIS_1 $CTM_DUST_EMIS_1 $CTM_IPR_1 $CTM_IPR_2 \ + $CTM_IPR_3 $CTM_BUDGET $CTM_IRR_1 $CTM_IRR_2 $CTM_IRR_3 $CTM_DRY_DEP_MOS \ + $CTM_DEPV_MOS $CTM_VDIFF_DIAG $CTM_VSED_DIAG $CTM_LTNGDIAG_1 $CTM_LTNGDIAG_2 $CTM_VEXT_1 ) + if ( $?CTM_ISAM ) then + if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then + set OUT_FILES = (${OUT_FILES} ${SA_ACONC_1} ${SA_CONC_1} ${SA_DD_1} ${SA_WD_1} \ + ${SA_CGRID_1} ) + endif + endif + if ( $?CTM_DDM3D ) then + if ( $CTM_DDM3D == 'Y' || $CTM_DDM3D == 'T' ) then + set OUT_FILES = (${OUT_FILES} ${CTM_SENS_1} ${A_SENS_1} ${CTM_SWETDEP_1} ${CTM_SDRYDEP_1} ) + endif + endif + set OUT_FILES = `echo $OUT_FILES | sed "s; -v;;g" | sed "s;MPI:;;g" ` + ( ls $OUT_FILES > buff.txt ) >& /dev/null + set out_test = `cat buff.txt`; rm -f buff.txt + + #> delete previous output if requested + if ( $CLOBBER_DATA == true || $CLOBBER_DATA == TRUE ) then + echo + echo "Existing Logs and Output Files for Day ${TODAYG} Will Be Deleted" + + #> remove previous log files + foreach file ( ${log_test} ) + #echo "Deleting log file: $file" + /bin/rm -f $file + end + + #> remove previous output files + foreach file ( ${out_test} ) + #echo "Deleting output file: $file" + /bin/rm -f $file + end + /bin/rm -f ${OUTDIR}/CCTM_DESID*${CTM_APPL}.nc + + else + #> error if previous log files exist + if ( "$log_test" != "" ) then + echo "*** Logs exist - run ABORTED ***" + echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" + echo "*** and these files will be automatically deleted. ***" + exit 1 + endif + + #> error if previous output files exist + if ( "$out_test" != "" ) then + echo "*** Output Files Exist - run will be ABORTED ***" + foreach file ( $out_test ) + echo " cannot delete $file" + end + echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" + echo "*** and these files will be automatically deleted. ***" + exit 1 + endif + endif + + #> for the run control ... + setenv CTM_STDATE $YYYYJJJ + setenv CTM_STTIME $STTIME + setenv CTM_RUNLEN $NSTEPS + setenv CTM_TSTEP $TSTEP + setenv INIT_CONC_1 $ICpath/$ICFILE + setenv BNDY_CONC_1 $BCpath/$BCFILE + setenv OMI $OMIpath/$OMIfile + setenv MIE_TABLE $OUTDIR/mie_table_coeffs_${compilerString}.txt + setenv OPTICS_DATA $OMIpath/$OPTfile + #setenv XJ_DATA $JVALpath/$JVALfile + + #> species defn & photolysis + setenv gc_matrix_nml ${NMLpath}/GC_$MECH.nml + setenv ae_matrix_nml ${NMLpath}/AE_$MECH.nml + setenv nr_matrix_nml ${NMLpath}/NR_$MECH.nml + setenv tr_matrix_nml ${NMLpath}/Species_Table_TR_0.nml + + #> check for photolysis input data + setenv CSQY_DATA ${NMLpath}/CSQY_DATA_$MECH + + if (! (-e $CSQY_DATA ) ) then + echo " $CSQY_DATA not found " + exit 1 + endif + if (! (-e $OPTICS_DATA ) ) then + echo " $OPTICS_DATA not found " + exit 1 + endif + +# =================================================================== +#> Execution Portion +# =================================================================== + + #> Print attributes of the executable + if ( $CTM_DIAG_LVL != 0 ) then + ls -l $BLD/$EXEC + size $BLD/$EXEC + unlimit + limit + endif + + #> Print Startup Dialogue Information to Standard Out + echo + echo "CMAQ Processing of Day $YYYYMMDD Began at `date`" + echo + + #> Executable call for single PE, uncomment to invoke + #( /usr/bin/time -p $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt + + #> Executable call for multi PE, configure for your system + # set MPI = /usr/local/intel/impi/3.2.2.006/bin64 + # set MPIRUN = $MPI/mpirun + ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt + + #> Harvest Timing Output so that it may be reported below + set rtarray = "${rtarray} `tail -3 buff_${EXECUTION_ID}.txt | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | head -1` " + rm -rf buff_${EXECUTION_ID}.txt + + #> Abort script if abnormal termination + if ( ! -e $OUTDIR/CCTM_CGRID_${CTM_APPL}.nc ) then + echo "" + echo "**************************************************************" + echo "** Runscript Detected an Error: CGRID file was not written. **" + echo "** This indicates that CMAQ was interrupted or an issue **" + echo "** exists with writing output. The runscript will now **" + echo "** abort rather than proceeding to subsequent days. **" + echo "**************************************************************" + break + endif + + #> Print Concluding Text + echo + echo "CMAQ Processing of Day $YYYYMMDD Finished at `date`" + echo + echo "\\\\\=====\\\\\=====\\\\\=====\\\\\=====/////=====/////=====/////=====/////" + echo + +# =================================================================== +#> Finalize Run for This Day and Loop to Next Day +# =================================================================== + + #> Save Log Files and Move on to Next Simulation Day + mv CTM_LOG_???.${CTM_APPL} $LOGDIR + if ( $CTM_DIAG_LVL != 0 ) then + mv CTM_DIAG_???.${CTM_APPL} $LOGDIR + endif + + #> The next simulation day will, by definition, be a restart + setenv NEW_START false + + #> Increment both Gregorian and Julian Days + set TODAYG = `date -ud "${TODAYG}+1days" +%Y-%m-%d` #> Add a day for tomorrow + set TODAYJ = `date -ud "${TODAYG}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ + +end #Loop to the next Simulation Day + +# =================================================================== +#> Generate Timing Report +# =================================================================== +set RTMTOT = 0 +foreach it ( `seq ${NDAYS}` ) + set rt = `echo ${rtarray} | cut -d' ' -f${it}` + set RTMTOT = `echo "${RTMTOT} + ${rt}" | bc -l` +end + +set RTMAVG = `echo "scale=2; ${RTMTOT} / ${NDAYS}" | bc -l` +set RTMTOT = `echo "scale=2; ${RTMTOT} / 1" | bc -l` + +echo +echo "==================================" +echo " ***** CMAQ TIMING REPORT *****" +echo "==================================" +echo "Start Day: ${START_DATE}" +echo "End Day: ${END_DATE}" +echo "Number of Simulation Days: ${NDAYS}" +echo "Domain Name: ${GRID_NAME}" +echo "Number of Grid Cells: ${NCELLS} (ROW x COL x LAY)" +echo "Number of Layers: ${NZ}" +echo "Number of Processes: ${NPROCS}" +echo " All times are in seconds." +echo +echo "Num Day Wall Time" +set d = 0 +set day = ${START_DATE} +foreach it ( `seq ${NDAYS}` ) + # Set the right day and format it + set d = `echo "${d} + 1" | bc -l` + set n = `printf "%02d" ${d}` + + # Choose the correct time variables + set rt = `echo ${rtarray} | cut -d' ' -f${it}` + + # Write out row of timing data + echo "${n} ${day} ${rt}" + + # Increment day for next loop + set day = `date -ud "${day}+1days" +%Y-%m-%d` +end +echo " Total Time = ${RTMTOT}" +echo " Avg. Time = ${RTMAVG}" + +exit diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md new file mode 100644 index 000000000..9612486cc --- /dev/null +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md @@ -0,0 +1,294 @@ +# CMAQ Installation & Benchmarking Tutorial for CB6R5 and M3DRY + +Purpose: This guide describes how to install and run the CMAQ test case for the CB6R5 mechanism with the M3DRY dry deposition scheme, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. + +Benchmarking refers to a simulation that is used to verify that the software is installed correctly. Benchmarking CMAQ is recommended in the following circumstances: +- Installation by a new user +- Installation on a new server +- Following kernel upgrades +- Following Fortran/C compiler upgrades +- Following netCDF or I/O API library upgrades + +## System Checks + +The following support software are required for compiling and running CMAQ. + +1. Fortran and C compilers, e.g., [Intel](https://software.intel.com/en-us/fortran-compilers), [Portland Group](http://www.pgroup.com), [Gnu](https://gcc.gnu.org/wiki/GFortran) +2. [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) +2. Message Passing Interface (MPI), e.g., [OpenMPI](https://www.open-mpi.org) or [MVAPICH2](http://www.mcs.anl.gov/research/projects/mpich2). +3. Latest release of [netCDF-C](https://www.unidata.ucar.edu/software/netcdf/docs/getting_and_building_netcdf.html) and [netCDF-Fortran](https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html) **built with netCDF4, HDF5, HDF4, DAP client, PnetCDF, or zlib support** +4. [I/O API](https://www.cmascenter.org/download/software/ioapi/ioapi_3-2.cfm?DB=TRUE) version 3.2 **tagged 20200828** +(note: if you have not installed the above libraries, please see the CMAQ_UG_tutorial_build_[gcc/intel/pgi].md tutorials available here: +https://github.com/USEPA/CMAQ/tree/main/DOCS/Users_Guide/Tutorials + +The suggested hardware requirements for running the CMAQ Southeast Benchmark case on a Linux workstation are: + +1. Linux environment with a 16 processors +2. 16 GB RAM +3. 400 GB hard drive storage + +## Install CMAQ and Required Libraries + +In the directory where you would like to install CMAQ, create the directory issue the following command to clone the EPA GitHub repository for CMAQv5.5: + +``` +git clone -b main https://github.com/USEPA/CMAQ.git CMAQ_REPO +``` + +For instructions on installing CMAQ from Zip files, see [Chapter 5](../CMAQ_UG_ch05_running_a_simulation.md). + +## Check Out a new Branch in the CMAQ Repository + +Checking out a new branch is a good idea even if you are not doing code development, per se. It is likely that you will want to retrieve new updates in the future, and an easy way to do this is through the main branch in the git repo. Thus, it is beneficial to leave it unperturbed if possible. +``` +cd CMAQ_REPO +git checkout -b my_branch +``` + +## Configure the CMAQ build environment + +The user has two options for building an environment. She or he may build and run CMAQ components directly in the repository structure (object files and executables will be ignored with .gitignore), or they may extract the build and run scripts out of the repository and work in a separate location. If you would like to build directly in the repository, skip to "Link the CMAQ Libraries" below. + +### Build and run in a user-specified directory outside of the repository +In the top level of CMAQ_REPO, the bldit_project.csh script will automatically replicate the CMAQ folder structure and copy every build and run script out of the repository so that you may modify them freely without version control. + +In bldit_project.csh, modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: +``` +set CMAQ_HOME = [your_install_path]/CMAQ_v5.5 +``` + +Now execute the script. +``` +./bldit_project.csh +``` + +## Link the CMAQ Libraries +The CMAQ build scripts require the following libraries and INCLUDE files to be available in the CMAQ_LIB directory (Note: the CMAQ_LIB gets set automatically by the config_cmaq.csh script, where `CMAQ_LIB = $CMAQ_HOME/lib`): + +- netCDF C library files are located in the `$CMAQ_LIB/netcdf/lib` directory +- netCDF Fortran library files are located in the `$CMAQ_LIB/netcdff/lib` directory +- I/O API library, include files and module files are located in the `$CMAQ_LIB/ioapi` directory +- MPI library and INCLUDE files are located in the `$CMAQ_LIB/mpi` directory + +The config_cmaq.csh script will automatically link the required libraries into the CMAQ_LIB directory. Set the locations of the netCDF, I/O API, and MPI installations on your Linux system with the following config_cmaq.csh environment variables: + +- `setenv IOAPI_INCL_DIR`: the location of the I/O API include header files on your system. +- `setenv IOAPI_LIB_DIR`: the location of compiled I/O API libraries on your system. +- `setenv NETCDF_LIB_DIR`: the location of the netCDF C library installation on your system. +- `setenv NETCDF_INCL_DIR`: the location of the netCDF C include files on your system. +- `setenv NETCDFF_LIB_DIR`: the location of the netCDF Fortran library installation on your system. +- `setenv NETCDFF_INCL_DIR`: the location of the netCDF Fortran include files on your system. +- `setenv MPI_LIB_DIR`: the location of the MPI (OpenMPI or MVAPICH) on your system. + +For example, if your netCDF C libraries are installed in /usr/local/netcdf/lib, set `NETCDF_LIB_DIR` to /usr/local/netcdf/lib. Similarly, if your I/O API library is installed in /home/cmaq/ioapi/Linux2_x86_64gfort, set `IOAPI_LIB_DIR` to /home/cmaq/ioapi/Linux2_x86_64gfort. + +*1.* Check the names of the I/O API and netCDF libraries using the `ioapi_lib` and `netcdf_lib` script variables. + +*2.* Check the name of the MPI library using the `mpi_lib` script variable. For MVAPICH use `-lmpich`; for openMPI use `-lmpi`. + +Links to these libraries will automatically be created when you run any of the build or run scripts. To manually create these libraries (this is optional), execute the config_cmaq.csh script, identifying the compiler in the command line [intel | gcc | pgi]: +``` +source config_cmaq.csh [compiler] +``` +You may also identify the version of the compiler if you wish it to be identified in build directory and executable names. This is optional. For example: +``` +source config_cmaq.csh gcc 9.5 +``` + +## Install the CMAQ reference input and output benchmark data + +Download the CMAQ two day reference input and output data for the CRACMM2 mechanism from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. + + - Use the gdrive command to download the dataset. + - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions + - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) + - Text files are included that provide a list of the files in the benchmark input and output datasets. + +The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmas-cmaq.s3.amazonaws.com/index.html). + +Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: + +``` +cd $CMAQ_DATA +tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input_CRACCM2.tar.gz +tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output_CRACMM2.tar.gz +``` + +## Compiling CMAQ + +*Before proceeding, it should be noted that building the ICON and BCON executables are optional steps when working specifically with the benchmark data. This is because the initial condition and boundary condition files have been provided for you within the benchmark data set. For further information on these preprocessors please reference [Chapter 4](../CMAQ_UG_ch04_model_inputs.md).* + +Create the model executables for CCTM using the steps shown below. + +##### Configuration for multi-processor runs (default): + +``` +set ParOpt #> Option for MPI Runs +```` + +##### Configuration for single-processor runs (optional): + +For single-processor computing, edit the CCTM build script (bldit_cctm.csh) to indicate a single-processor run by commenting out set ParOpt as shown below. + +``` +#set ParOpt #> Option for Single Processor Runs +```` + +#### Configure CMAQ benchmark Science Modules: + +The build directory parameters for the benchmark test case include the following: + +- Multiprocessor simulation +- 3-D Advection Scheme: wrf_cons +- Horizontal diffusion: Multiscale +- Vertical diffusion: ACM2_M3Dry +- Deposition: M3Dry +- Chemistry solver: EBI +- Aerosol module: AERO7 +- Cloud module: ACM_AE7 +- Mechanism: cb6r5_ae7_aq +- Inline biogenic emissions +- Inline plume rise + +To configure these parameters, the CCTM Science Modules within the bldit_cctm.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in +[Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). + +To keep the BLD directory name unique for each mechansim, modify the bldit_cctm script to use + +``` +#> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. + if ( $?Debug_CCTM ) then + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug + else + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} + endif +``` + +Change the dry deposition scheme to use STAGE instead of M3DRY +``` +#> Set Dry Deposition Scheme to Stage + + set DepMod = stage +``` + +Following the requisite changes to the CCTM build script, use the following command to create the CCTM executable: + +``` +cd $CMAQ_HOME/CCTM/scripts +./bldit_cctm_craccm.csh [compiler] [version] |& tee bldit_cctm_craccm.log +``` + +Verify that the BLD directory contains a namelist called + +``` +CMAQ_Control_STAGE.nml +``` + +Change to the BLD directory and add the following lines to the bottom of the CMAQ_Control_DESID_cracmm2.nml + +``` + ! Re-Map CRACMM1 Aromatics to CRACMM2 + ! EBZ and XYE remapping, STY and XYM remapping + ! Generic scaling if not scaling by sector: 70% XYL; 30% EBZ + ! EBZ = FAC1 * XYE; STY = FAC2 * XYM ; XYL = (1-FAC1)*XYE + (1-FAC2)*XYM + 'EVERYWHERE', 'ALL' ,'XYE' ,'EBZ' ,'GAS' ,0.30,'UNIT','a', + 'EVERYWHERE', 'ALL' ,'XYE' ,'XYL' ,'GAS' ,0.70,'UNIT','a', + + ! Generic scaling if not scaling by sector: 93% XYL; 7% STY + 'EVERYWHERE', 'ALL' ,'XYM' ,'STY' ,'GAS' ,0.07,'UNIT','a', + 'EVERYWHERE', 'ALL' ,'XYM' ,'XYL' ,'GAS' ,0.93,'UNIT','a', +``` + +## Configure the CCTM script + +For an MPI configuration with 16 processors, + +``` +cd $CMAQ_HOME/CCTM/scripts +``` + +Edit the CCTM run script (run_cctm_Bench_2018_12NE3.csh) for the MPI configuration and compiler that you will use: + +``` +setenv compiler gcc +setenv compilerVrsn 9.5 +setenv INPDIR ${CMAQ_DATA}/2018_12NE3 +@ NPCOL 8 ; @ NPROW = 4 +``` + +Most clustered multiprocessor systems require a command to start the MPI run-time environment. The default CCTM run script uses the *mpirun* command. Consult your system administrator to find out how to invoke MPI when running multiprocessor applications. + +For single-processor computing, set PROC to serial: + +``` +set PROC = serial +``` + +CCTM Science Configuration Options set to **Y** in the RunScript for the benchmark case include the following: + +- ```CTM_OCEAN_CHEM``` - use ocean halgoen chemistry and sea spray aerosol emissions +- ```KZMIN``` - minimum eddy diffusivity in each grid cell determined by land use fraction +- ```PX_VERSION``` - WRF PX land surface model +- ```CTM_ABFLUX``` - bidirectional ammonia flux for online deposition velocities +- ```CTM_BIDI_FERT_NH3``` - subtract fertilizer NH3 from emissions because it will be handled by the BiDi calculation +- ```CTM_SFC_HONO``` - surface HONO interaction +- ```CTM_GRAV_SETL``` - vdiff aerosol gravitational sedmentation +- ```CTM_BIOGEMIS``` - online biogenic emissions + +To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in +[Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). + +After configuring the MPI settings for your Linux system, check the rest of the script to ensure the correct path, date and names are used for the input data files. Per the note above, different Linux systems have different requirements for submitting MPI jobs. The command below is an example of how to submit the CCTM run script and may differ depending on the MPI requirements of your Linux system. + +``` +./run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh |& tee cctm.log +``` + +## Confirm that the Benchmark Simulation Completed + +To confirm that the benchmark case ran to completion view the run.benchmark.log file. For MPI runs, check each of the CTM_LOG_[ProcessorID]*.log files. A successful run will contain the following line at the bottom of the log(s): + +``>>----> Program completed successfully <----<<`` + +Note: If you are running on multiple processors the log file for each processor is also moved from the $CMAQ_HOME/CCTM/scripts directory to the benchmark output directory: + +``` +$CMAQ_DATA/output_CCTM_v54_[compiler]_Bench_2018_12NE3_2day +``` +and these log files have the name convention: + +``` +CTM_LOG_[ProcessorID].v54_[compiler]_[APPL]_[YYYYMMDD] +CTM_LOG_[ProcessorID].v54_gcc_Bench_2018_12NE3_2day_20180702 +``` + +The benchmark output results will have been placed in the directory: + +``` +$CMAQ_DATA/output_CCTM_v54_[compiler]_Bench_2018_12NE3_2day +``` + +and can include upto 23 netCDF-type files: ACONC, AOD_DIAG, AELMO, APMVIS, B3GTS_S, BSOILOUT, BUDGET, CGRID, CONC, DEPV, DRYDEP, DUSTEMIS, LTNGCOL, LTNGHRLY, MEDIA_CONC, PHOTDIAG1, PHOTDIAG2, ELMO, PMVIS, SOILOUT, SSEMIS, VDIFF, VSED, WETDEP1, and WETDEP2. + + +Common errors in a CCTM simulation include the following: +- Incorrect paths to input files. Look in the CCTM screen output (capture in your log file) for an Error message about an input file not being found. +- Incorrect MPI implementation. A series of MPI errors at the end of the log file often indicate that the MPI job was not submitted correctly. + +Check the last few lines of the CCTM output log for messages to help diagnose why the simulation did not complete. + +## Check the CMAQ Benchmark Results + +To determine if CMAQ is correctly installed on your Linux system compare the results from your benchmark simulation to the reference output data downloaded from the CMAS Center. This data was generated on a Linux system with the following specifications: +- Linux Kernel 3.10.0-514.el7.x86_64 +- Red Hat Enterprise Linux Server 7.3 (Maipo) (use command: cat /etc/os-release) +- GNU GCC compiler version 9.1.0, 16 processors with OpenMPIv4.0.1 and I/O APIv3.2 tagged version 20200828 +- Debug mode turned off (```set Debug_CCTM``` commented out in $CMAQ_HOME/CCTM/scripts/bldit_cctm.csh) +- CMAQv5.4 + +The CMAQv5.4 reference output data includes a set of CCTM_ACONC_\*.nc files with layer 1 average model species concentrations for each model hour for 226 variables and a set of CCTM_WETDEP1_\*.nc files with cumulative hourly wet deposition fluxes for an additional 136 variables. The CCTM_SA_ACONC_\*.nc, CCTM_SA_CGRID_\*.nc, CCTM_SA_CONC_\*.nc, CCTM_SA_WETDEP_\*.nc and CCTM_SA_DRYDEP_\*.nc are generated when you run the CMAQ-ISAM benchmark. See the [CMAQ-ISAM Tutorial](../Tutorials/CMAQ_UG_tutorial_ISAM.md) for more information. + +Use your netCDF evaluation tool of choice to evaluate your benchmark results. For example, [VERDI](https://www.verdi-tool.org/) is a visualization tool to view CCTM results as tile plots. Statistical comparison of the results can be made with the I/O API Tools or R. + +Note, even with a successful installation and run of the benchmark case, some differences between your simulation and the reference data can occur due to differences in domain decomposition for multi-processor simulations as well as differences in compiler. These differences tend to manifest in upper layers of the model and are mostly found in predicting aerosol water (AH2O) and aerosol acidity (AH3OP), while differences are smaller for other key species like ASO4, ANO3, ACL, ALOO1, etc. These species have short atmospheric lifetimes with large changes in time and space derivatives or have model physics sensitive to small changes in concentration. Predicting these species is more sensitive to small changes in machine precision and accuracy. + diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md new file mode 100644 index 000000000..d28044cff --- /dev/null +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md @@ -0,0 +1,294 @@ +# CMAQ Installation & Benchmarking Tutorial for CRACMM2 and STAGE + +Purpose: This guide describes how to install and run the CMAQ test case for the CRACMM2 mechanism with the STAGE dry deposition scheme, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. + +Benchmarking refers to a simulation that is used to verify that the software is installed correctly. Benchmarking CMAQ is recommended in the following circumstances: +- Installation by a new user +- Installation on a new server +- Following kernel upgrades +- Following Fortran/C compiler upgrades +- Following netCDF or I/O API library upgrades + +## System Checks + +The following support software are required for compiling and running CMAQ. + +1. Fortran and C compilers, e.g., [Intel](https://software.intel.com/en-us/fortran-compilers), [Portland Group](http://www.pgroup.com), [Gnu](https://gcc.gnu.org/wiki/GFortran) +2. [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) +2. Message Passing Interface (MPI), e.g., [OpenMPI](https://www.open-mpi.org) or [MVAPICH2](http://www.mcs.anl.gov/research/projects/mpich2). +3. Latest release of [netCDF-C](https://www.unidata.ucar.edu/software/netcdf/docs/getting_and_building_netcdf.html) and [netCDF-Fortran](https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html) **built with netCDF4, HDF5, HDF4, DAP client, PnetCDF, or zlib support** +4. [I/O API](https://www.cmascenter.org/download/software/ioapi/ioapi_3-2.cfm?DB=TRUE) version 3.2 **tagged 20200828** +(note: if you have not installed the above libraries, please see the CMAQ_UG_tutorial_build_[gcc/intel/pgi].md tutorials available here: +https://github.com/USEPA/CMAQ/tree/main/DOCS/Users_Guide/Tutorials + +The suggested hardware requirements for running the CMAQ Southeast Benchmark case on a Linux workstation are: + +1. Linux environment with a 16 processors +2. 16 GB RAM +3. 400 GB hard drive storage + +## Install CMAQ and Required Libraries + +In the directory where you would like to install CMAQ, create the directory issue the following command to clone the EPA GitHub repository for CMAQv5.5: + +``` +git clone -b main https://github.com/USEPA/CMAQ.git CMAQ_REPO +``` + +For instructions on installing CMAQ from Zip files, see [Chapter 5](../CMAQ_UG_ch05_running_a_simulation.md). + +## Check Out a new Branch in the CMAQ Repository + +Checking out a new branch is a good idea even if you are not doing code development, per se. It is likely that you will want to retrieve new updates in the future, and an easy way to do this is through the main branch in the git repo. Thus, it is beneficial to leave it unperturbed if possible. +``` +cd CMAQ_REPO +git checkout -b my_branch +``` + +## Configure the CMAQ build environment + +The user has two options for building an environment. She or he may build and run CMAQ components directly in the repository structure (object files and executables will be ignored with .gitignore), or they may extract the build and run scripts out of the repository and work in a separate location. If you would like to build directly in the repository, skip to "Link the CMAQ Libraries" below. + +### Build and run in a user-specified directory outside of the repository +In the top level of CMAQ_REPO, the bldit_project.csh script will automatically replicate the CMAQ folder structure and copy every build and run script out of the repository so that you may modify them freely without version control. + +In bldit_project.csh, modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: +``` +set CMAQ_HOME = [your_install_path]/CMAQ_v5.5 +``` + +Now execute the script. +``` +./bldit_project.csh +``` + +## Link the CMAQ Libraries +The CMAQ build scripts require the following libraries and INCLUDE files to be available in the CMAQ_LIB directory (Note: the CMAQ_LIB gets set automatically by the config_cmaq.csh script, where `CMAQ_LIB = $CMAQ_HOME/lib`): + +- netCDF C library files are located in the `$CMAQ_LIB/netcdf/lib` directory +- netCDF Fortran library files are located in the `$CMAQ_LIB/netcdff/lib` directory +- I/O API library, include files and module files are located in the `$CMAQ_LIB/ioapi` directory +- MPI library and INCLUDE files are located in the `$CMAQ_LIB/mpi` directory + +The config_cmaq.csh script will automatically link the required libraries into the CMAQ_LIB directory. Set the locations of the netCDF, I/O API, and MPI installations on your Linux system with the following config_cmaq.csh environment variables: + +- `setenv IOAPI_INCL_DIR`: the location of the I/O API include header files on your system. +- `setenv IOAPI_LIB_DIR`: the location of compiled I/O API libraries on your system. +- `setenv NETCDF_LIB_DIR`: the location of the netCDF C library installation on your system. +- `setenv NETCDF_INCL_DIR`: the location of the netCDF C include files on your system. +- `setenv NETCDFF_LIB_DIR`: the location of the netCDF Fortran library installation on your system. +- `setenv NETCDFF_INCL_DIR`: the location of the netCDF Fortran include files on your system. +- `setenv MPI_LIB_DIR`: the location of the MPI (OpenMPI or MVAPICH) on your system. + +For example, if your netCDF C libraries are installed in /usr/local/netcdf/lib, set `NETCDF_LIB_DIR` to /usr/local/netcdf/lib. Similarly, if your I/O API library is installed in /home/cmaq/ioapi/Linux2_x86_64gfort, set `IOAPI_LIB_DIR` to /home/cmaq/ioapi/Linux2_x86_64gfort. + +*1.* Check the names of the I/O API and netCDF libraries using the `ioapi_lib` and `netcdf_lib` script variables. + +*2.* Check the name of the MPI library using the `mpi_lib` script variable. For MVAPICH use `-lmpich`; for openMPI use `-lmpi`. + +Links to these libraries will automatically be created when you run any of the build or run scripts. To manually create these libraries (this is optional), execute the config_cmaq.csh script, identifying the compiler in the command line [intel | gcc | pgi]: +``` +source config_cmaq.csh [compiler] +``` +You may also identify the version of the compiler if you wish it to be identified in build directory and executable names. This is optional. For example: +``` +source config_cmaq.csh gcc 9.5 +``` + +## Install the CMAQ reference input and output benchmark data + +Download the CMAQ two day reference input and output data for the CRACMM2 mechanism from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. + + - Use the gdrive command to download the dataset. + - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions + - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) + - Text files are included that provide a list of the files in the benchmark input and output datasets. + +The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmas-cmaq.s3.amazonaws.com/index.html). + +Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: + +``` +cd $CMAQ_DATA +tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input_CRACCM2.tar.gz +tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output_CRACMM2.tar.gz +``` + +## Compiling CMAQ + +*Before proceeding, it should be noted that building the ICON and BCON executables are optional steps when working specifically with the benchmark data. This is because the initial condition and boundary condition files have been provided for you within the benchmark data set. For further information on these preprocessors please reference [Chapter 4](../CMAQ_UG_ch04_model_inputs.md).* + +Create the model executables for CCTM using the steps shown below. + +##### Configuration for multi-processor runs (default): + +``` +set ParOpt #> Option for MPI Runs +```` + +##### Configuration for single-processor runs (optional): + +For single-processor computing, edit the CCTM build script (bldit_cctm.csh) to indicate a single-processor run by commenting out set ParOpt as shown below. + +``` +#set ParOpt #> Option for Single Processor Runs +```` + +#### Configure CMAQ benchmark Science Modules: + +The build directory parameters for the benchmark test case include the following: + +- Multiprocessor simulation +- 3-D Advection Scheme: wrf_cons +- Horizontal diffusion: Multiscale +- Vertical diffusion: ACM2_M3Dry +- Deposition: STAGE +- Chemistry solver: EBI +- Aerosol module: cracmm +- Cloud module: acm_craccm +- Mechanism: cracmm2 +- Inline biogenic emissions +- Inline plume rise + +To configure these parameters, the CCTM Science Modules within the bldit_cctm.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in +[Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). + +To keep the BLD directory name unique for each mechansim, modify the bldit_cctm script to use + +``` +#> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. + if ( $?Debug_CCTM ) then + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug + else + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} + endif +``` + +Change the dry deposition scheme to use STAGE instead of M3DRY +``` +#> Set Dry Deposition Scheme to Stage + + set DepMod = stage +``` + +Following the requisite changes to the CCTM build script, use the following command to create the CCTM executable: + +``` +cd $CMAQ_HOME/CCTM/scripts +./bldit_cctm_craccm.csh [compiler] [version] |& tee bldit_cctm_craccm.log +``` + +Verify that the BLD directory contains a namelist called + +``` +CMAQ_Control_STAGE.nml +``` + +Change to the BLD directory and add the following lines to the bottom of the CMAQ_Control_DESID_cracmm2.nml + +``` + ! Re-Map CRACMM1 Aromatics to CRACMM2 + ! EBZ and XYE remapping, STY and XYM remapping + ! Generic scaling if not scaling by sector: 70% XYL; 30% EBZ + ! EBZ = FAC1 * XYE; STY = FAC2 * XYM ; XYL = (1-FAC1)*XYE + (1-FAC2)*XYM + 'EVERYWHERE', 'ALL' ,'XYE' ,'EBZ' ,'GAS' ,0.30,'UNIT','a', + 'EVERYWHERE', 'ALL' ,'XYE' ,'XYL' ,'GAS' ,0.70,'UNIT','a', + + ! Generic scaling if not scaling by sector: 93% XYL; 7% STY + 'EVERYWHERE', 'ALL' ,'XYM' ,'STY' ,'GAS' ,0.07,'UNIT','a', + 'EVERYWHERE', 'ALL' ,'XYM' ,'XYL' ,'GAS' ,0.93,'UNIT','a', +``` + +## Configure the CCTM script + +For an MPI configuration with 16 processors, + +``` +cd $CMAQ_HOME/CCTM/scripts +``` + +Edit the CCTM run script (run_cctm_Bench_2018_12NE3.csh) for the MPI configuration and compiler that you will use: + +``` +setenv compiler gcc +setenv compilerVrsn 9.5 +setenv INPDIR ${CMAQ_DATA}/2018_12NE3 +@ NPCOL 8 ; @ NPROW = 4 +``` + +Most clustered multiprocessor systems require a command to start the MPI run-time environment. The default CCTM run script uses the *mpirun* command. Consult your system administrator to find out how to invoke MPI when running multiprocessor applications. + +For single-processor computing, set PROC to serial: + +``` +set PROC = serial +``` + +CCTM Science Configuration Options set to **Y** in the RunScript for the benchmark case include the following: + +- ```CTM_OCEAN_CHEM``` - use ocean halgoen chemistry and sea spray aerosol emissions +- ```KZMIN``` - minimum eddy diffusivity in each grid cell determined by land use fraction +- ```PX_VERSION``` - WRF PX land surface model +- ```CTM_ABFLUX``` - bidirectional ammonia flux for online deposition velocities +- ```CTM_BIDI_FERT_NH3``` - subtract fertilizer NH3 from emissions because it will be handled by the BiDi calculation +- ```CTM_SFC_HONO``` - surface HONO interaction +- ```CTM_GRAV_SETL``` - vdiff aerosol gravitational sedmentation +- ```CTM_BIOGEMIS``` - online biogenic emissions + +To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in +[Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). + +After configuring the MPI settings for your Linux system, check the rest of the script to ensure the correct path, date and names are used for the input data files. Per the note above, different Linux systems have different requirements for submitting MPI jobs. The command below is an example of how to submit the CCTM run script and may differ depending on the MPI requirements of your Linux system. + +``` +./run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh |& tee cctm.log +``` + +## Confirm that the Benchmark Simulation Completed + +To confirm that the benchmark case ran to completion view the run.benchmark.log file. For MPI runs, check each of the CTM_LOG_[ProcessorID]*.log files. A successful run will contain the following line at the bottom of the log(s): + +``>>----> Program completed successfully <----<<`` + +Note: If you are running on multiple processors the log file for each processor is also moved from the $CMAQ_HOME/CCTM/scripts directory to the benchmark output directory: + +``` +$CMAQ_DATA/output_CCTM_v54_[compiler]_Bench_2018_12NE3_2day +``` +and these log files have the name convention: + +``` +CTM_LOG_[ProcessorID].v54_[compiler]_[APPL]_[YYYYMMDD] +CTM_LOG_[ProcessorID].v54_gcc_Bench_2018_12NE3_2day_20180702 +``` + +The benchmark output results will have been placed in the directory: + +``` +$CMAQ_DATA/output_CCTM_v54_[compiler]_Bench_2018_12NE3_2day +``` + +and can include upto 23 netCDF-type files: ACONC, AOD_DIAG, AELMO, APMVIS, B3GTS_S, BSOILOUT, BUDGET, CGRID, CONC, DEPV, DRYDEP, DUSTEMIS, LTNGCOL, LTNGHRLY, MEDIA_CONC, PHOTDIAG1, PHOTDIAG2, ELMO, PMVIS, SOILOUT, SSEMIS, VDIFF, VSED, WETDEP1, and WETDEP2. + + +Common errors in a CCTM simulation include the following: +- Incorrect paths to input files. Look in the CCTM screen output (capture in your log file) for an Error message about an input file not being found. +- Incorrect MPI implementation. A series of MPI errors at the end of the log file often indicate that the MPI job was not submitted correctly. + +Check the last few lines of the CCTM output log for messages to help diagnose why the simulation did not complete. + +## Check the CMAQ Benchmark Results + +To determine if CMAQ is correctly installed on your Linux system compare the results from your benchmark simulation to the reference output data downloaded from the CMAS Center. This data was generated on a Linux system with the following specifications: +- Linux Kernel 3.10.0-514.el7.x86_64 +- Red Hat Enterprise Linux Server 7.3 (Maipo) (use command: cat /etc/os-release) +- GNU GCC compiler version 9.1.0, 16 processors with OpenMPIv4.0.1 and I/O APIv3.2 tagged version 20200828 +- Debug mode turned off (```set Debug_CCTM``` commented out in $CMAQ_HOME/CCTM/scripts/bldit_cctm.csh) +- CMAQv5.4 + +The CMAQv5.4 reference output data includes a set of CCTM_ACONC_\*.nc files with layer 1 average model species concentrations for each model hour for 226 variables and a set of CCTM_WETDEP1_\*.nc files with cumulative hourly wet deposition fluxes for an additional 136 variables. The CCTM_SA_ACONC_\*.nc, CCTM_SA_CGRID_\*.nc, CCTM_SA_CONC_\*.nc, CCTM_SA_WETDEP_\*.nc and CCTM_SA_DRYDEP_\*.nc are generated when you run the CMAQ-ISAM benchmark. See the [CMAQ-ISAM Tutorial](../Tutorials/CMAQ_UG_tutorial_ISAM.md) for more information. + +Use your netCDF evaluation tool of choice to evaluate your benchmark results. For example, [VERDI](https://www.verdi-tool.org/) is a visualization tool to view CCTM results as tile plots. Statistical comparison of the results can be made with the I/O API Tools or R. + +Note, even with a successful installation and run of the benchmark case, some differences between your simulation and the reference data can occur due to differences in domain decomposition for multi-processor simulations as well as differences in compiler. These differences tend to manifest in upper layers of the model and are mostly found in predicting aerosol water (AH2O) and aerosol acidity (AH3OP), while differences are smaller for other key species like ASO4, ANO3, ACL, ALOO1, etc. These species have short atmospheric lifetimes with large changes in time and space derivatives or have model physics sensitive to small changes in concentration. Predicting these species is more sensitive to small changes in machine precision and accuracy. + From 1e6ee25428ca07c67df6a6f41ace431a76aadbd3 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Thu, 5 Sep 2024 11:45:58 -0400 Subject: [PATCH 201/375] Update CMAQ_UG_ch06_model_configuration_options.md updates to M3DRY section from J. Pleim. --- .../CMAQ_UG_ch06_model_configuration_options.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index afac80961..8117fb34b 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -234,11 +234,12 @@ Deetails of each module are provided in the sections below. -The M3Dry option for dry deposition and ammonia bidirectional surface flux in CMAQv5.4 is the next evolution of the dry deposition model that has been in CMAQ since its initial release and was originally based on the dry deposition model developed for the Acid Deposition and Oxidant Model (ADOM) (Pleim et al., 1984). Dry deposition is computed by electrical resistance analogy where concentration gradients are analogous to voltage, flux is analogous to current, and deposition resistance is analogous to electrical resistance (Pleim and Ran, 2011). In M3Dry, several key resistances, such as aerodynamic resistance and bulk stomatal resistance, and other related parameters, such as LAI, vegetation fraction, roughness length, friction velocity etc., are expected to be provided from the meteorological inputs. Use of common model elements and parameters with the land surface model in the meteorology model ensures consistency between chemical surface fluxes and meteorological surface fluxes (moisture, heat, momentum). While the M3Dry dry deposition model was designed to be used with the PX LSM option in WRF, any LSM can be used if the necessary parameters are output and then provided for input into CMAQ. It features consideration of subgrid land-use fractions through aggregation of key model parameters, such as LAI, veg fraction, roughness length and minimum stomatal conductance, to the grid cell level. +The M3Dry option for dry deposition and ammonia bidirectional surface flux in CMAQv5.5 is the latest update of the dry deposition model that has been in CMAQ since its initial release and was originally based on the dry deposition model developed for the Acid Deposition and Oxidant Model (ADOM) (Pleim et al., 1984). Changes from CMAQv5.4 involve only minor bug fixes. Dry deposition is computed by electrical resistance analogy where concentration gradients are analogous to voltage, flux is analogous to current, and deposition resistance is analogous to electrical resistance (Pleim and Ran, 2011). In M3Dry, several key resistances, such as aerodynamic resistance and bulk stomatal resistance, and other related parameters, such as LAI, vegetation fraction, roughness length, friction velocity etc., are expected to be provided from the meteorological inputs. Use of common model elements and parameters with the land surface model in the meteorology model ensures consistency between chemical surface fluxes and meteorological surface fluxes (moisture, heat, momentum). While the M3Dry dry deposition model was designed to be used with the PX LSM option in WRF, any LSM can be used if the necessary parameters are output and then provided for input into CMAQ. It features consideration of subgrid land-use fractions through aggregation of key model parameters, such as LAI, veg fraction, roughness length and minimum stomatal conductance, to the grid cell level. Dry deposition velocities and fluxes by landuse category for each grid cell can be computed and output for 13 major gas phase species by a postprocessor available on request. -Upgrades for version 5.3 include larger surface resistances for deposition to snow and ice and reduced resistance for deposition to bare ground for ozone with dependence on surface soil moisture content. The aerosol deposition has also been revised including a new dependence on LAI. The ammonia bidirectional surface flux from croplands has been substantially revised from earlier versions. The new version has close linkages with the EPIC agricultural ecosystem model. Daily values of all soil parameters needed to compute the available soil ammonia concentrations (soil ammonia content, soil moisture, soil texture parameters, soil pH, and Cation Exchange Capacity (CEC)) for each of 21 agricultural production types that are either rainfed or irrigated (42 types total) are input to CMAQ. Soil ammonia concentrations and soil pH are combined to derive the soil compensation concentration for the bidirectional flux calculation (Pleim et al., 2019). +Upgrades for version 5.3 include larger surface resistances for deposition to snow and ice and reduced resistance for deposition to bare ground for ozone with dependence on surface soil moisture content. The aerosol deposition has also been revised including a new dependence on LAI. The ammonia bidirectional surface flux from croplands has been substantially revised from earlier versions. The new version has close linkages with the EPIC agricultural ecosystem model. Daily values of all soil parameters needed to compute the available soil ammonia concentrations (soil ammonia content, soil moisture, soil texture parameters, soil pH, and Cation Exchange Capacity (CEC)) for each of 21 agricultural production types that are either rainfed or irrigated (42 types total) are input to CMAQ. Soil ammonia concentrations and soil pH are combined to derive the soil compensation concentration for the bidirectional flux calculation (Pleim et al., 2019). + +The main upgrade for version 5.4 is the replacement of the aerosol dry deposition model with a new version that compares better to size-resolved observations, especially in forests, than the previous version and other models used in AQ modeling (Pleim et al 2022). The key innovations are dependence on leaf area index (LAI) for the vegetated part of the grid cell and two terms for inertial impaction for both macroscale obstacles (e.g., leaves and needles) and microscale obstacles (e.g., leaf hairs and microscale ridges). When the modally integrated form is applied in CMAQ, the accumulation mode deposition velocities increase by more than an order of magnitude in highly forested areas resulting in lower concentrations of PM2.5. -The main upgrade for version 5.4 is the replacement of the aerosol dry deposition model with a new version that compares better to size-resolved observations, especially in forests, than the previous version and other models used in AQ modeling (Pleim et al 2022). The key innovations are dependence on leaf area index (LAI) for the vegetated part of the grid cell and two terms for inertial impaction for both macroscale obstacles (e.g., leaves and needles) and microscale obstacles (e.g., leaf hairs and microscale ridges). When the modally integrated form is applied in CMAQ, the accumulation mode deposition velocities increase by more than an order of magnitude in highly forested areas resulting in lower concentrations of PM2.5. From 355032d68fce53b652ae27edd150cb6090a1f43a Mon Sep 17 00:00:00 2001 From: Ben Murphy Date: Thu, 5 Sep 2024 14:43:52 -0400 Subject: [PATCH 202/375] Reintroduce specdef files for cb6 and cracmm. Adds documentation On branch 5.5_specdef Changes to be committed: new file: CCTM/src/MECHS/cb6r3_ae7_aq/SpecDef_Conc_cb6r3_ae7_aq.txt modified: CCTM/src/MECHS/cb6r3_ae7_aq/SpecDef_cb6r3_ae7_aq.txt new file: CCTM/src/MECHS/cb6r5_ae7_aq/SpecDef_Conc_cb6r5_ae7_aq.txt modified: CCTM/src/MECHS/cb6r5_ae7_aq/SpecDef_cb6r5_ae7_aq.txt new file: CCTM/src/MECHS/cb6r5hap_ae7_aq/SpecDef_Conc_cb6r5hap_ae7_aq.txt modified: CCTM/src/MECHS/cb6r5hap_ae7_aq/SpecDef_cb6r5hap_ae7_aq.txt new file: CCTM/src/MECHS/cb6r5m_ae7_aq/SpecDef_Conc_cb6r5m_ae7_aq.txt modified: CCTM/src/MECHS/cb6r5m_ae7_aq/SpecDef_cb6r5m_ae7_aq.txt new file: CCTM/src/MECHS/cracmm1_aq/SpecDef_Conc_cracmm1_aq.txt modified: CCTM/src/MECHS/cracmm1_aq/SpecDef_cracmm1_aq.txt new file: CCTM/src/MECHS/cracmm1amore_aq/SpecDef_Conc_cracmm1amore_aq.txt modified: CCTM/src/MECHS/cracmm1amore_aq/SpecDef_cracmm1amore_aq.txt new file: CCTM/src/MECHS/cracmm2/SpecDef_Conc_cracmm2.txt modified: CCTM/src/MECHS/cracmm2/SpecDef_cracmm2.txt modified: DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md modified: POST/combine/README.md --- .../SpecDef_Conc_cb6r3_ae7_aq.txt | 342 ++++++++++++++ .../cb6r3_ae7_aq/SpecDef_cb6r3_ae7_aq.txt | 4 +- .../SpecDef_Conc_cb6r5_ae7_aq.txt | 346 ++++++++++++++ .../cb6r5_ae7_aq/SpecDef_cb6r5_ae7_aq.txt | 8 +- .../SpecDef_Conc_cb6r5hap_ae7_aq.txt | 436 ++++++++++++++++++ .../SpecDef_cb6r5hap_ae7_aq.txt | 4 +- .../SpecDef_Conc_cb6r5m_ae7_aq.txt | 347 ++++++++++++++ .../cb6r5m_ae7_aq/SpecDef_cb6r5m_ae7_aq.txt | 8 +- .../cracmm1_aq/SpecDef_Conc_cracmm1_aq.txt | 382 +++++++++++++++ .../MECHS/cracmm1_aq/SpecDef_cracmm1_aq.txt | 4 +- .../SpecDef_Conc_cracmm1amore_aq.txt | 384 +++++++++++++++ .../SpecDef_cracmm1amore_aq.txt | 4 +- .../MECHS/cracmm2/SpecDef_Conc_cracmm2.txt | 387 ++++++++++++++++ CCTM/src/MECHS/cracmm2/SpecDef_cracmm2.txt | 11 +- .../CMAQ_UG_ch08_analysis_tools.md | 10 +- POST/combine/README.md | 4 +- 16 files changed, 2658 insertions(+), 23 deletions(-) create mode 100644 CCTM/src/MECHS/cb6r3_ae7_aq/SpecDef_Conc_cb6r3_ae7_aq.txt create mode 100644 CCTM/src/MECHS/cb6r5_ae7_aq/SpecDef_Conc_cb6r5_ae7_aq.txt create mode 100644 CCTM/src/MECHS/cb6r5hap_ae7_aq/SpecDef_Conc_cb6r5hap_ae7_aq.txt create mode 100644 CCTM/src/MECHS/cb6r5m_ae7_aq/SpecDef_Conc_cb6r5m_ae7_aq.txt create mode 100644 CCTM/src/MECHS/cracmm1_aq/SpecDef_Conc_cracmm1_aq.txt create mode 100644 CCTM/src/MECHS/cracmm1amore_aq/SpecDef_Conc_cracmm1amore_aq.txt create mode 100644 CCTM/src/MECHS/cracmm2/SpecDef_Conc_cracmm2.txt diff --git a/CCTM/src/MECHS/cb6r3_ae7_aq/SpecDef_Conc_cb6r3_ae7_aq.txt b/CCTM/src/MECHS/cb6r3_ae7_aq/SpecDef_Conc_cb6r3_ae7_aq.txt new file mode 100644 index 000000000..94c4c7f51 --- /dev/null +++ b/CCTM/src/MECHS/cb6r3_ae7_aq/SpecDef_Conc_cb6r3_ae7_aq.txt @@ -0,0 +1,342 @@ +!#start YYYYJJJ 010000 +!#end YYYYJJJ 000000 +#layer 1 + +/ +! This Species Definition File is for Use with the COMBINE tool built for +! post-processing CMAQ output. It is compatible with CMAQv5.4. +! Date: May 12 2017 + +! Output variables that begin with 'PM' represent those in which a size cut was +! applied based on modeled aerosol mode parameters. For example, PM25_NA is all +! sodium that falls below 2.5 um diameter. These 'PM' variables are used for +! comparisons at IMPROVE and CSN sites. + +! Output variables that begin with 'PMAMS' represent the mass that would have +! been detected by an Aerosol Mass Spectrometer. + +! Output variables beginning with 'A' (aside from AIR_DENS) represent a +! combination of aerosol species in which no size cut was applied. For example, +! ASO4IJ is the sum of i-mode and j-mode sulfate. These 'A' variables are used +! for comparisons at CASTNet sites. + +! Output variables beginning with 'PMC' refer to the coarse fraction of total PM, +! computed by summing all modes and subtracting the PM2.5 fraction. These 'PMC' +! variables are used for comparisons at SEARCH sites. + +! This Species Definition File is just for use with the uncoupled, offline CMAQ, +! model. If you are processing WRF-CMAQ results, a different Species Definition +! file is required. + +/ File [1]: CMAQ conc/aconc file +/ File [2]: METCRO3D file +/ File [3]: ELMO/AELMO file +/ File [4]: METCRO2D file +/ +/new species ,units ,expression + +!-------------------------------------------! +!------------- Meteorology -----------------! +!-------------------------------------------! +AIR_DENS ,kg m-3 ,DENS[2] +RH ,% ,100.00*RH[3] +SFC_TMP ,C ,(TEMP2[4]-273.15) +PBLH ,m ,PBL[4] +SOL_RAD ,W m-2 ,RGRND[4] +precip ,cm ,RC[4]>=0 ? RN[4]+RC[4] : RN[4] +WSPD10 ,m s-1 ,WSPD10[4] +WDIR10 ,deg ,WDIR10[4] + +!-------------------------------------------! +!--------------- Gases ---------------------! +!-------------------------------------------! +ALD2 ,ppbV ,1000.0*ALD2[1] +BENZENE ,ppbV ,1000.0*BENZENE[1] +CO ,ppbV ,1000.0*CO[1] +ETH ,ppbV ,1000.0*ETH[1] +ETHA ,ppbV ,1000.0*ETHA[1] +FORM ,ppbV ,1000.0*FORM[1] +H2O2 ,ppbV ,1000.0*H2O2[1] +HNO3 ,ppbV ,1000.0*HNO3[1] +HNO3_UGM3 ,ug m-3 ,1000.0*(HNO3[1]*2.1756*DENS[2]) +HONO ,ppbV ,1000.0*HONO[1] +HOX ,ppbV ,1000.0*(OH[1]+HO2[1]) +OH ,ppbV ,1000.0*(OH[1]) +ISOP ,ppbV ,1000.0*ISOP[1] +N2O5 ,ppbV ,1000.0*N2O5[1] +NH3 ,ppbV ,1000.0*NH3[1] +NH3_UGM3 ,ug m-3 ,1000.0*(NH3[1]*0.5880*DENS[2]) +NHX ,ug m-3 ,1000.0*(NH3[1]*0.5880*DENS[2])+ANH4I[1]+ANH4J[1]+ANH4K[1] +NO ,ppbV ,1000.0*NO[1] +NO2 ,ppbV ,1000.0*NO2[1] +NOX ,ppbV ,1000.0*(NO[1] + NO2[1]) +ANO3_PPB ,ppbV ,(ANO3I[1]+ANO3J[1]+ANO3K[1])/(DENS[2]*(62.0/28.97)) +NTR ,ppbV ,1000.0*(NTR1[1]+NTR2[1]+INTR[1]) +PANS ,ppbV ,1000.0*(PAN[1]+PANX[1]+OPAN[1]) +NOY ,ppbV ,1000.0* (NO[1]+NO2[1]+NO3[1]+2*N2O5[1]+HONO[1]+HNO3[1]+PNA[1] \ + +CRON[1]+CLNO2[1]+CLNO3[1]) \ + +PANS[0]+NTR[0]+ANO3_PPB[0] +O3 ,ppbV ,1000.0*O3[1] +SO2 ,ppbV ,1000.0*SO2[1] +SO2_UGM3 ,ug m-3 ,1000.0*(SO2[1]*2.2118*DENS[2]) +TERP ,ppbV ,1000.0*TERP[1] +TOL ,ppbV ,1000.0*TOL[1] +XYL ,ppbV ,1000.0*XYLMN[1] + +!Additional Toxic gases +!ACROLEIN ,ug m-3 ,1000.0*(ACROLEIN[1]*1.9365*DENS[2]) +!ACRO_PRIMARY ,ug m-3 ,1000.0*(ACRO_PRIMARY*1.9365*DENS[2]) +!ALD2_PRIMARY ,ug m-3 ,1000.0*(ALD2_PRIMARY[1]*1.5188*DENS[2]) +!FORM_PRIMARY ,ug m-3 ,1000.0*(FORM_PRIMARY[1]*1.0356*DENS[2]) +!BUTADIENE13 ,ug m-3 ,1000.0*(BUTADIENE13[1]*1.8674*DENS[2]) +!HCL ,ppbV ,1000.0*HCL[1] +!TOLUENE ,ppbV ,1000.0*TOLU[1] + +!Mercuric gas species +!HG_0 ,ng/m3 ,1000.0*(HG[1]*8.3330*DENS[2]*1000.0) +!HG_II ,ng/m3 ,1000.0*(HGIIGAS[1]*8.3330*DENS[2]*1000.0) + +!! Unused Gases. Presented Here for illustration. Users can uncomment +!! them if they choose. +!ALDX ,ppbV ,1000.0*ALDX[1] +!IOLE ,ppbV ,1000.0*IOLE[1] +!OLE ,ppbV ,1000.0*OLE[1] +!PAR ,ppbV ,1000.0*PAR[1] +!PAN ,ppbV ,1000.0*PAN[1] +!SULF ,ppbV ,1000.0*SULF[1] +! emitted VOCs +!VOC ,ppbC ,1000.0* (PAR[1] +2.0*ETHA[1] +3.0*PRPA[1] +MEOH[1]\ +! +2.0*ETH[1] +2.0*ETOH[1] +2.0*OLE[1] +3.0*ACET[1] \ +! +7.0*TOL[1] +8.0*XYLMN[1] +6.0*BENZENE[1] \ +! +FORM[1] +3.0*GLY[1] +4.0*KET[1] +2.0*ETHY[1] \ +! +2.0*ALD2[1] + 4.0*IOLE[1] + 2.0*ALDX[1] \ +! +5.0*ISOP[1] + 10.0*TERP[1]+ 10.0*NAPH[1] +10.*APIN[1]) + +!-------------------------------------------! +!--------------- Particles -----------------! +!-------------------------------------------! +!! Crustal Elements +AFEJ ,ug m-3 ,AFEJ[1] +AALJ ,ug m-3 ,AALJ[1] +ASIJ ,ug m-3 ,ASIJ[1] +ATIJ ,ug m-3 ,ATIJ[1] +ACAJ ,ug m-3 ,ACAJ[1] +AMGJ ,ug m-3 ,AMGJ[1] +AKJ ,ug m-3 ,AKJ[1] +AMNJ ,ug m-3 ,AMNJ[1] +ASOILJ ,ug m-3 ,2.20*AALJ[1]+2.49*ASIJ[1]+1.63*ACAJ[1]+2.42*AFEJ[1]+1.94*ATIJ[1] + +!! Non-Crustal Inorganic Particle Species +AHPLUSIJ ,umol m-3 ,(AH3OPI[1]+AH3OPJ[1])*1.0/19.0 +ANAK ,ug m-3 ,0.8373*ASEACAT[1]+0.0626*ASOIL[1]+0.0023*ACORS[1] +AMGK ,ug m-3 ,0.0997*ASEACAT[1]+0.0170*ASOIL[1]+0.0032*ACORS[1] +AKK ,ug m-3 ,0.0310*ASEACAT[1]+0.0242*ASOIL[1]+0.0176*ACORS[1] +ACAK ,ug m-3 ,0.0320*ASEACAT[1]+0.0838*ASOIL[1]+0.0562*ACORS[1] +ACLIJ ,ug m-3 ,ACLI[1]+ACLJ[1] +AECIJ ,ug m-3 ,AECI[1]+AECJ[1] +ANAIJ ,ug m-3 ,ANAJ[1]+ANAI[1] +ANO3IJ ,ug m-3 ,ANO3I[1]+ANO3J[1] +ANO3K ,ug m-3 ,ANO3K[1] +TNO3 ,ug m-3 ,2175.6*(HNO3[1]*DENS[2])+ANO3I[1]+ANO3J[1]+ANO3K[1] +ANH4IJ ,ug m-3 ,ANH4I[1]+ANH4J[1] +ANH4K ,ug m-3 ,ANH4K[1] +ASO4IJ ,ug m-3 ,ASO4I[1]+ASO4J[1] +ASO4K ,ug m-3 ,ASO4K[1] + +!! Organic Particle Species +APOCI ,ugC m-3 ,ALVPO1I[1]/1.39 + ASVPO1I[1]/1.32 + ASVPO2I[1]/1.26 \ + +APOCI[1] +APOCJ ,ugC m-3 ,ALVPO1J[1]/1.39 + ASVPO1J[1]/1.32 + ASVPO2J[1]/1.26 \ + +ASVPO3J[1]/1.21 + AIVPO1J[1]/1.17 + APOCJ[1] +APOCIJ ,ugC m-3 ,APOCI[0] + APOCJ[0] + +APOMI ,ug m-3 ,ALVPO1I[1] + ASVPO1I[1] + ASVPO2I[1] + APOCI[1] \ + +APNCOMI[1] +APOMJ ,ug m-3 ,ALVPO1J[1] + ASVPO1J[1] + ASVPO2J[1] + APOCJ[1] \ + +ASVPO3J[1] + AIVPO1J[1] + APNCOMJ[1] +APOMIJ ,ug m-3 ,APOMI[0] + APOMJ[0] + +ASOCI ,ugC m-3 ,ALVOO1I[1]/2.27 + ALVOO2I[1]/2.06 \ + +ASVOO1I[1]/1.88 + ASVOO2I[1]/1.73 +ASOCJ ,ugC m-3 ,AISO1J[1]/2.20 + AISO2J[1]/2.23 + AISO3J[1]/2.80 \ + +AMT1J[1]/1.67 + AMT2J[1]/1.67 + AMT3J[1]/1.72 \ + +AMT4J[1]/1.53 + AMT5J[1]/1.57 + AMT6J[1]/1.40 \ + +AMTNO3J[1]/1.90 + AMTHYDJ[1]/1.54 \ + +AGLYJ[1]/2.13 + ASQTJ[1]/1.52 \ + +AORGCJ[1]/2.00 + AOLGBJ[1]/2.10 + AOLGAJ[1]/2.50 \ + +ALVOO1J[1]/2.27 + ALVOO2J[1]/2.06 + ASVOO1J[1]/1.88 \ + +ASVOO2J[1]/1.73 + ASVOO3J[1]/1.60 \ + +AAVB1J[1]/2.70 + AAVB2J[1]/2.35 + AAVB3J[1]/2.17 \ + +AAVB4J[1]/1.99 + APCSOJ[1]/2.00 +ASOCIJ ,ugC m-3 ,ASOCI[0] + ASOCJ[0] + +ASOMI ,ug m-3 ,ALVOO1I[1] + ALVOO2I[1] + ASVOO1I[1] + ASVOO2I[1] +ASOMJ ,ug m-3 ,+AISO1J[1]+ AISO2J[1] + AISO3J[1] \ + +AMT1J[1] + AMT2J[1] + AMT3J[1] \ + +AMT4J[1] + AMT5J[1] + AMT6J[1] \ + +AMTNO3J[1] + AMTHYDJ[1] \ + +AGLYJ[1] + ASQTJ[1] \ + +AORGCJ[1] + AOLGBJ[1] + AOLGAJ[1] \ + +ALVOO1J[1] + ALVOO2J[1] + ASVOO1J[1] \ + +ASVOO2J[1] + ASVOO3J[1] + APCSOJ[1] \ + +AAVB1J[1] + AAVB2J[1] + AAVB3J[1] \ + +AAVB4J[1] +ASOMIJ ,ug m-3 ,ASOMI[0] + ASOMJ[0] + +AOCI ,ugC m-3 ,APOCI[0] + ASOCI[0] +AOCJ ,ugC m-3 ,APOCJ[0] + ASOCJ[0] + +AOCIJ ,ugC m-3 ,APOCIJ[0] + ASOCIJ[0] + + +AOMI ,ug m-3 ,APOMI[0] + ASOMI[0] +AOMJ ,ug m-3 ,APOMJ[0] + ASOMJ[0] + +AOMIJ ,ug m-3 ,APOMIJ[0] + ASOMIJ[0] + +!!! Anthropogenic-VOC Derived Organic Aerosol +AORGAI ,ug m-3 ,ALVOO1I[1] + ALVOO2I[1] + ASVOO1I[1] \ + +ASVOO2I[1] +AORGAJ ,ug m-3 ,ALVOO1J[1] + ALVOO2J[1] \ + +ASVOO1J[1] + ASVOO2J[1] + ASVOO3J[1] \ + +AAVB1J[1] + AAVB2J[1] + AAVB3J[1] \ + +AAVB4J[1] + AOLGAJ[1] + APCSOJ[1] +AORGAIJ ,ug m-3 ,AORGAI[0] + AORGAJ[0] + +!!! Biogenic-VOC Derived Organic Aerosol +AORGBIJ ,ug m-3 ,AMT1J[1] + AMT2J[1] + AMT3J[1] + AMT4J[1] \ + +AMT5J[1] + AMT6J[1] + AMTNO3J[1] \ + +AMTHYDJ[1] + AISO1J[1] + AISO2J[1] \ + +AISO3J[1] + ASQTJ[1] + AOLGBJ[1] + +!!! Cloud-Processed SOA +AORGCJ ,ug m-3 ,AORGCJ[1] +!!! Remaining SOA +AGLYJ ,ug m-3 ,AGLYJ[1] + +!!! OM/OC ratios +AOMOCRAT_TOT , ,AOMIJ[0]/AOCIJ[0] + +!! Total PM Aggregates +ATOTI ,ug m-3 ,ASO4I[1] + ANH4I[1] + ANO3I[1] + ANAI[1] \ + +ACLI[1] + AECI[1] + AOMI[0] + AOTHRI[1] +ATOTJ ,ug m-3 ,ASO4J[1] + ANH4J[1] + ANO3J[1] + ANAJ[1] \ + +ACLJ[1] + AECJ[1] + AOMJ[0] + AOTHRJ[1] \ + +AFEJ[1] + AALJ[1] + ASIJ[1] + ATIJ[1] \ + +ACAJ[1] + AMGJ[1] + AKJ[1] + AMNJ[1] + +ATOTK ,ug m-3 ,ASO4K[1] + ANH4K[1] + ANO3K[1] + ACLK[1] \ + +ACORS[1] + ASOIL[1] + ASEACAT[1] +ATOTIJ ,ug m-3 ,ATOTI[0] + ATOTJ[0] +ATOTIJK ,ug m-3 ,ATOTI[0] + ATOTJ[0] + ATOTK[0] + +!! Unspeciated PM including non-carbon organic mass +AUNSPEC1IJ ,ug m-3 ,ATOTIJ[0] - (ASO4IJ[0] + ANO3IJ[0] \ + +ANH4IJ[0] + ACLIJ[0] \ + +ANAIJ[0] + AECIJ[0] \ + +AOCIJ[0] + ASOILJ[0]) +!! Non-Carbon Organic Mass +ANCOMIJ ,ug m-3 ,AOMIJ[0] - AOCIJ[0] + +!! Unspeciated PM excluding non-carbon organic mass +AUNSPEC2IJ ,ug m-3 ,AUNSPEC1IJ[0] - ANCOMIJ[0] + +!! AMS Projection of Output Concentrations +PMAMS_CL ,ug m-3 ,ACLI[1] *FAMSAIT[3] +ACLJ[1]*FAMSACC[3]+ACLK[1] *FAMSCOR[3] +PMAMS_NH4 ,ug m-3 ,ANH4I[1]*FAMSAIT[3]+ANH4J[1]*FAMSACC[3]+ANH4K[1]*FAMSCOR[3] +PMAMS_NO3 ,ug m-3 ,ANO3I[1]*FAMSAIT[3]+ANO3J[1]*FAMSACC[3]+ANO3K[1]*FAMSCOR[3] +PMAMS_OA ,ug m-3 ,AOMI[0] *FAMSAIT[3]+AOMJ[0] *FAMSACC[3] +PMAMS_SO4 ,ug m-3 ,ASO4I[1]*FAMSAIT[3]+ASO4J[1]*FAMSACC[3]+ASO4K[1]*FAMSCOR[3] + +!! PM1 Cutoff Output +PM1_TOT ,ug m-3 ,ATOTI[0]*FPM1AIT[3]+ATOTJ[0]*FPM1ACC[3]+ATOTK[0]*FPM1COR[3] + +!! Unused PM1 Species. Included Here for demonstration +!PM1_EC ,ug m-3 ,AECI[1] *FPM1AIT[3] +AECJ[1] *FPM1ACC[3] +!PM1_OC ,ugC m-3 ,AOCI[0] *FPM1AIT[3] +AOCJ[0] *FPM1ACC[3] +!PM1_OM ,ug m-3 ,AOMI[0] *FPM1AIT[3] +AOMJ[0] *FPM1ACC[3] +!PM1_SO4 ,ug m-3 ,ASO4I[1]*FPM1AIT[3] +ASO4J[1]*FPM1ACC[3] +ASO4K[1]*FPM1COR[3] +!PM1_CL ,ug m-3 ,ACLI[1] *FPM1AIT[3] +ACLJ[1] *FPM1ACC[3] +ACLK[1] *FPM1COR[3] +!PM1_NA ,ug m-3 ,ANAI[1] *FPM1AIT[3] +ANAJ[1] *FPM1ACC[3] +ANAK[0] *FPM1COR[3] +!PM1_MG ,ug m-3 , AMGJ[1] *FPM1ACC[3] +AMGK[0] *FPM1COR[3] +!PM1_K ,ug m-3 , AKJ[1] *FPM1ACC[3] +AKK[0] *FPM1COR[3] +!PM1_CA ,ug m-3 , ACAJ[1] *FPM1ACC[3] +ACAK[0] *FPM1COR[3] +!PM1_NH4 ,ug m-3 ,ANH4I[1] *FPM1AIT[3]+ANH4J[1]*FPM1ACC[3] +ANH4K[1]*FPM1COR[3] +!PM1_NO3 ,ug m-3 ,ANO3I[1] *FPM1AIT[3]+ANO3J[1]*FPM1ACC[3] +ANO3K[1]*FPM1COR[3] +!PM1_SOIL ,ug m-3 ,ASOILJ[0]*FPM1ACC[3]+(ASOIL[1]+ACORS[1])*FPM1COR[3] +!PM1_UNSPEC1 ,ug m-3 ,PM1_TOT[0] - (PM1_CL[0] + PM1_EC[0]+ PM1_NA[0] + PM1_NH4[0] + \ +! PM1_NO3[0]+ PM1_OC[0]+ PM1_SOIL[0]+ PM1_SO4[0] ) +!PM1_UNSPCRS ,ug m-3 ,ATOTK[0] *FPM1COR[3] - (ASO4K[1]*FPM1COR[3] \ +! +ACLK[1]*FPM1COR[3] \ +! +ANAK[0]*FPM1COR[3] \ +! +AMGK[0]*FPM1COR[3] \ +! +AKK[0]*FPM1COR[3] \ +! +ACAK[0]*FPM1COR[3] \ +! +ANH4K[1]*FPM1COR[3] \ +! +ANO3K[1]*FPM1COR[3]) + +!! PM2.5 species computed using modeled size distribution +PM25_HP ,ug m-3 ,(AH3OPI[1]*FPM25AIT[3]+AH3OPJ[1]*FPM25ACC[3]+AH3OPK[1]*FPM25COR[3])*1.0/19.0 +PM25_CL ,ug m-3 ,ACLI[1]*FPM25AIT[3]+ACLJ[1]*FPM25ACC[3]+ACLK[1]*FPM25COR[3] +PM25_EC ,ug m-3 ,AECI[1]*FPM25AIT[3]+AECJ[1]*FPM25ACC[3] +PM25_NA ,ug m-3 ,ANAI[1]*FPM25AIT[3]+ANAJ[1]*FPM25ACC[3]+ANAK[0]*FPM25COR[3] +PM25_MG ,ug m-3 , AMGJ[1]*FPM25ACC[3]+AMGK[0]*FPM25COR[3] +PM25_K ,ug m-3 , AKJ[1] *FPM25ACC[3]+AKK[0] *FPM25COR[3] +PM25_CA ,ug m-3 , ACAJ[1]*FPM25ACC[3]+ACAK[0]*FPM25COR[3] +PM25_NH4 ,ug m-3 ,ANH4I[1]*FPM25AIT[3]+ANH4J[1]*FPM25ACC[3]+ANH4K[1]*FPM25COR[3] +PM25_NO3 ,ug m-3 ,ANO3I[1]*FPM25AIT[3]+ANO3J[1]*FPM25ACC[3]+ANO3K[1]*FPM25COR[3] +PM25_OC ,ugC m-3 ,AOCI[0] *FPM25AIT[3]+AOCJ[0]*FPM25ACC[3] +PM25_OM ,ug m-3 ,AOMI[0] *FPM25AIT[3]+AOMJ[0]*FPM25ACC[3] +PM25_SOIL ,ug m-3 ,ASOILJ[0]*FPM25ACC[3]+ASOIL[1]*FPM25COR[3] +PM25_SO4 ,ug m-3 ,ASO4I[1]*FPM25AIT[3]+ASO4J[1]*FPM25ACC[3]+ASO4K[1]*FPM25COR[3] +PM25_TOT ,ug m-3 ,ATOTI[0]*FPM25AIT[3]+ATOTJ[0]*FPM25ACC[3]+ATOTK[0]*FPM25COR[3] +PM25_UNSPEC1 ,ug m-3 ,PM25_TOT[0]-(PM25_CL[0]+PM25_EC[0]+PM25_NA[0]+PM25_NH4[0] \ + +PM25_NO3[0]+PM25_OC[0]+PM25_SOIL[0]+PM25_SO4[0]) +PM25_UNSPCRS ,ug m-3 ,ATOTK[0]*FPM25COR[3] - (ASO4K[1]*FPM25COR[3] \ + +ACLK[1]*FPM25COR[3] \ + +ANAK[0]*FPM25COR[3] \ + +AMGK[0]*FPM25COR[3] \ + +AKK[0]*FPM25COR[3] \ + +ACAK[0]*FPM25COR[3] \ + +ANH4K[1]*FPM25COR[3] \ + +ANO3K[1]*FPM25COR[3]) + + +!! Fine particle acidity (pH). pH is undefined if there is no aerosol water. +!Do not trust predictions when hourly water is <0.01 ug m-3. FINEPHF will +!have large negative value (-9.999E36) when pH is not to be trusted. +!AH2OIJ ,ug m-3 ,AH2OI[1]+AH2OJ[1] +!HPMOLAL ,mol kg-1 ,AHPLUSIJ[0]/AH2OIJ[0]*1000.0 +!ACIDITYTEMP , ,-1*LOG10(HPMOLAL[0]) +!FINEPHF , ,AH2OIJ[0]>0.01 ? ACIDITYTEMP[0] : -9.999E36 + +!! PM10.0 and Coarse-Sized Species +PM10 ,ug m-3 ,ATOTI[0]*FPM10AIT[3]+ATOTJ[0]*FPM10ACC[3]+ATOTK[0]*FPM10COR[3] + +PMC_CL ,ug m-3 ,ACLI[1]*FPM10AIT[3] +ACLJ[1]*FPM10ACC[3] +ACLK[1]*FPM10COR[3] -PM25_CL[0] +PMC_NA ,ug m-3 ,ANAI[1]*FPM10AIT[3] +ANAJ[1]*FPM10ACC[3] +ANAK[0]*FPM10COR[3] -PM25_NA[0] +PMC_NH4 ,ug m-3 ,ANH4I[1]*FPM10AIT[3]+ANH4J[1]*FPM10ACC[3]+ANH4K[1]*FPM10COR[3]-PM25_NH4[0] +PMC_NO3 ,ug m-3 ,ANO3I[1]*FPM10AIT[3]+ANO3J[1]*FPM10ACC[3]+ANO3K[1]*FPM10COR[3]-PM25_NO3[0] +PMC_SO4 ,ug m-3 ,ASO4I[1]*FPM10AIT[3]+ASO4J[1]*FPM10ACC[3]+ASO4K[1]*FPM10COR[3]-PM25_SO4[0] +PMC_TOT ,ug m-3 ,PM10[0]-PM25_TOT[0] + +!! FRM PM Equivalent Calculation +!! This section calculates the FRM applicable PM species, PMIJ_FRM and +!! PM25_FRM. The intermediate variablse K...ANH4IJ_loss are needed to +!! calculate the final quantities. +K ,ppb2 ,exp(118.87-24084/TEMP2[4]-6.025*log(TEMP2[4])) +P1 , ,exp(8763/TEMP2[4]+19.12*log(TEMP2[4])-135.94) +P2 , ,exp(9969/TEMP2[4]+16.22*log(TEMP2[4])-122.65) +P3 , ,exp(13875/TEMP2[4]+24.46*log(TEMP2[4])-182.61) +a , ,1-RH[0]/100 +K_prime ,ppb2 ,(P1[0]-P2[0]*a[0]+(P3[0]*a[0]*a[0]))*(a[0]^1.75)*K[0] +sqrt_Ki ,ppb ,sqrt(RH[0]<=61 ? K[0] : K_prime[0]) +max_NO3_loss ,ug m-3 ,745.7/TEMP2[4]*sqrt_Ki[0] +PM25_NO3_loss ,ug m-3 ,max_NO3_loss[0]<=PM25_NO3[0] ? max_NO3_loss[0] : PM25_NO3[0] +ANO3IJ_loss ,ug m-3 ,max_NO3_loss[0]<=ANO3IJ[0] ? max_NO3_loss[0] : ANO3IJ[0] +PM25_NH4_loss ,ug m-3 ,PM25_NO3_loss[0]*(18/62) +ANH4IJ_loss ,ug m-3 ,ANO3IJ_loss[0]*(18/62) +PMIJ_FRM ,ug m-3 ,ATOTIJ[0]-(ANO3IJ_loss[0]+ANH4IJ_loss[0]) \ + +0.24*(ASO4IJ[0]+ANH4IJ[0]-ANH4IJ_loss[0])+0.5 +PM25_FRM ,ug m-3 ,PM25_TOT[0]-(PM25_NO3_loss[0]+PM25_NH4_loss[0]) \ + +0.24*(PM25_SO4[0]+PM25_NH4[0]-PM25_NH4_loss[0])+0.5 diff --git a/CCTM/src/MECHS/cb6r3_ae7_aq/SpecDef_cb6r3_ae7_aq.txt b/CCTM/src/MECHS/cb6r3_ae7_aq/SpecDef_cb6r3_ae7_aq.txt index 93c331fa3..aaf8dcba9 100644 --- a/CCTM/src/MECHS/cb6r3_ae7_aq/SpecDef_cb6r3_ae7_aq.txt +++ b/CCTM/src/MECHS/cb6r3_ae7_aq/SpecDef_cb6r3_ae7_aq.txt @@ -154,10 +154,10 @@ AOCIJ ,ugC m-3 ,PMF_OC[3] AOMIJ ,ug m-3 ,PMF_OA[3] !!! Anthropogenic-VOC Derived Organic Aerosol -AORGAJ ,ug m-3 ,PMF_ASOA[3] +AORGAIJ ,ug m-3 ,PMF_ASOA[3] !!! Biogenic-VOC Derived Organic Aerosol -AORGBJ ,ug m-3 ,PMF_BSOA[3] +AORGBIJ ,ug m-3 ,PMF_BSOA[3] !!! Cloud-Processed SOA AORGCJ ,ug m-3 ,AORGCJ[1] diff --git a/CCTM/src/MECHS/cb6r5_ae7_aq/SpecDef_Conc_cb6r5_ae7_aq.txt b/CCTM/src/MECHS/cb6r5_ae7_aq/SpecDef_Conc_cb6r5_ae7_aq.txt new file mode 100644 index 000000000..256778402 --- /dev/null +++ b/CCTM/src/MECHS/cb6r5_ae7_aq/SpecDef_Conc_cb6r5_ae7_aq.txt @@ -0,0 +1,346 @@ +!#start YYYYJJJ 010000 +!#end YYYYJJJ 000000 +#layer 1 + +/ +! This Species Definition File is for Use with the COMBINE tool built for +! post-processing CMAQ output. It is compatible with CMAQv5.4. +! Date: May 12 2017 + +! Output variables that begin with 'PM' represent those in which a size cut was +! applied based on modeled aerosol mode parameters. For example, PM25_NA is all +! sodium that falls below 2.5 um diameter. These 'PM' variables are used for +! comparisons at IMPROVE and CSN sites. + +! Output variables that begin with 'PMAMS' represent the mass that would have +! been detected by an Aerosol Mass Spectrometer. + +! Output variables beginning with 'A' (aside from AIR_DENS) represent a +! combination of aerosol species in which no size cut was applied. For example, +! ASO4IJ is the sum of i-mode and j-mode sulfate. These 'A' variables are used +! for comparisons at CASTNet sites. + +! Output variables beginning with 'PMC' refer to the coarse fraction of total PM, +! computed by summing all modes and subtracting the PM2.5 fraction. These 'PMC' +! variables are used for comparisons at SEARCH sites. + +! This Species Definition File is just for use with the uncoupled, offline CMAQ, +! model. If you are processing WRF-CMAQ results, a different Species Definition +! file is required. + +/ File [1]: CMAQ conc/aconc file +/ File [2]: METCRO3D file +/ File [3]: ELMO/AELMO file +/ File [4]: METCRO2D file +/ +/new species ,units ,expression + +!-------------------------------------------! +!------------- Meteorology -----------------! +!-------------------------------------------! +AIR_DENS ,kg m-3 ,DENS[2] +RH ,% ,100.00*RH[3] +SFC_TMP ,C ,(TEMP2[4]-273.15) +PBLH ,m ,PBL[4] +SOL_RAD ,W m-2 ,RGRND[4] +precip ,cm ,RC[4]>=0 ? RN[4]+RC[4] : RN[4] +WSPD10 ,m s-1 ,WSPD10[4] +WDIR10 ,deg ,WDIR10[4] + +!-------------------------------------------! +!--------------- Gases ---------------------! +!-------------------------------------------! +ALD2 ,ppbV ,1000.0*ALD2[1] +BENZENE ,ppbV ,1000.0*BENZENE[1] +CO ,ppbV ,1000.0*CO[1] +ETH ,ppbV ,1000.0*ETH[1] +ETHA ,ppbV ,1000.0*ETHA[1] +FORM ,ppbV ,1000.0*FORM[1] +H2O2 ,ppbV ,1000.0*H2O2[1] +HNO3 ,ppbV ,1000.0*HNO3[1] +HNO3_UGM3 ,ug m-3 ,1000.0*(HNO3[1]*2.1756*DENS[2]) +HONO ,ppbV ,1000.0*HONO[1] +HOX ,ppbV ,1000.0*(OH[1]+HO2[1]) +OH ,ppbV ,1000.0*(OH[1]) +ISOP ,ppbV ,1000.0*ISOP[1] +N2O5 ,ppbV ,1000.0*N2O5[1] +NH3 ,ppbV ,1000.0*NH3[1] +NH3_UGM3 ,ug m-3 ,1000.0*(NH3[1]*0.5880*DENS[2]) +NHX ,ug m-3 ,1000.0*(NH3[1]*0.5880*DENS[2])+ANH4I[1]+ANH4J[1]+ANH4K[1] +NO ,ppbV ,1000.0*NO[1] +NO2 ,ppbV ,1000.0*NO2[1] +NOX ,ppbV ,1000.0*(NO[1] + NO2[1]) +ANO3_PPB ,ppbV ,(ANO3I[1]+ANO3J[1]+ANO3K[1])/(DENS[2]*(62.0/28.97)) +NTR ,ppbV ,1000.0*(NTR1[1]+NTR2[1]+INTR[1]) +PANS ,ppbV ,1000.0*(PAN[1]+PANX[1]+OPAN[1]) +NOY ,ppbV ,1000.0* (NO[1]+NO2[1]+NO3[1]+2*N2O5[1]+HONO[1]+HNO3[1]+PNA[1] \ + +CRON[1]+CLNO2[1]+CLNO3[1]) \ + +PANS[0]+NTR[0]+ANO3_PPB[0] +O3 ,ppbV ,1000.0*O3[1] +SO2 ,ppbV ,1000.0*SO2[1] +SO2_UGM3 ,ug m-3 ,1000.0*(SO2[1]*2.2118*DENS[2]) +TERP ,ppbV ,1000.0*TERP[1] +TOL ,ppbV ,1000.0*TOL[1] +XYL ,ppbV ,1000.0*XYLMN[1] + +!Additional Toxic gases +!ACROLEIN ,ug m-3 ,1000.0*(ACROLEIN[1]*1.9365*DENS[2]) +!ACRO_PRIMARY ,ug m-3 ,1000.0*(ACRO_PRIMARY*1.9365*DENS[2]) +!ALD2_PRIMARY ,ug m-3 ,1000.0*(ALD2_PRIMARY[1]*1.5188*DENS[2]) +!FORM_PRIMARY ,ug m-3 ,1000.0*(FORM_PRIMARY[1]*1.0356*DENS[2]) +!BUTADIENE13 ,ug m-3 ,1000.0*(BUTADIENE13[1]*1.8674*DENS[2]) +!HCL ,ppbV ,1000.0*HCL[1] +!TOLUENE ,ppbV ,1000.0*TOLU[1] + +!Mercuric gas species +!HG_0 ,ng/m3 ,1000.0*(HG[1]*8.3330*DENS[2]*1000.0) +!HG_II ,ng/m3 ,1000.0*(HGIIGAS[1]*8.3330*DENS[2]*1000.0) + +!! Unused Gases. Presented Here for illustration. Users can uncomment +!! them if they choose. +!ALDX ,ppbV ,1000.0*ALDX[1] +!IOLE ,ppbV ,1000.0*IOLE[1] +!OLE ,ppbV ,1000.0*OLE[1] +!PAR ,ppbV ,1000.0*PAR[1] +!PAN ,ppbV ,1000.0*PAN[1] +!SULF ,ppbV ,1000.0*SULF[1] +! emitted VOCs +!VOC ,ppbC ,1000.0* (PAR[1] +2.0*ETHA[1] +3.0*PRPA[1] +MEOH[1]\ +! +2.0*ETH[1] +2.0*ETOH[1] +2.0*OLE[1] +3.0*ACET[1] \ +! +7.0*TOL[1] +8.0*XYLMN[1] +6.0*BENZENE[1] \ +! +FORM[1] +3.0*GLY[1] +4.0*KET[1] +2.0*ETHY[1] \ +! +2.0*ALD2[1] + 4.0*IOLE[1] + 2.0*ALDX[1] \ +! +5.0*ISOP[1] + 10.0*TERP[1]+ 10.0*NAPH[1] +10.*APIN[1]) + +!! DMS and MSA. Users can uncomment them if they choose. +DMS ,ppbV ,1000.0*DMS[1] +MSA ,ppbV ,1000.0*MSA[1] + +!-------------------------------------------! +!--------------- Particles -----------------! +!-------------------------------------------! +!! Crustal Elements +AFEJ ,ug m-3 ,AFEJ[1] +AALJ ,ug m-3 ,AALJ[1] +ASIJ ,ug m-3 ,ASIJ[1] +ATIJ ,ug m-3 ,ATIJ[1] +ACAJ ,ug m-3 ,ACAJ[1] +AMGJ ,ug m-3 ,AMGJ[1] +AKJ ,ug m-3 ,AKJ[1] +AMNJ ,ug m-3 ,AMNJ[1] +ASOILJ ,ug m-3 ,2.20*AALJ[1]+2.49*ASIJ[1]+1.63*ACAJ[1]+2.42*AFEJ[1]+1.94*ATIJ[1] + +!! Non-Crustal Inorganic Particle Species +AHPLUSIJ ,umol m-3 ,(AH3OPI[1]+AH3OPJ[1])*1.0/19.0 +ANAK ,ug m-3 ,0.8373*ASEACAT[1]+0.0626*ASOIL[1]+0.0023*ACORS[1] +AMGK ,ug m-3 ,0.0997*ASEACAT[1]+0.0170*ASOIL[1]+0.0032*ACORS[1] +AKK ,ug m-3 ,0.0310*ASEACAT[1]+0.0242*ASOIL[1]+0.0176*ACORS[1] +ACAK ,ug m-3 ,0.0320*ASEACAT[1]+0.0838*ASOIL[1]+0.0562*ACORS[1] +ACLIJ ,ug m-3 ,ACLI[1]+ACLJ[1] +AECIJ ,ug m-3 ,AECI[1]+AECJ[1] +ANAIJ ,ug m-3 ,ANAJ[1]+ANAI[1] +ANO3IJ ,ug m-3 ,ANO3I[1]+ANO3J[1] +ANO3K ,ug m-3 ,ANO3K[1] +TNO3 ,ug m-3 ,2175.6*(HNO3[1]*DENS[2])+ANO3I[1]+ANO3J[1]+ANO3K[1] +ANH4IJ ,ug m-3 ,ANH4I[1]+ANH4J[1] +ANH4K ,ug m-3 ,ANH4K[1] +ASO4IJ ,ug m-3 ,ASO4I[1]+ASO4J[1] +ASO4K ,ug m-3 ,ASO4K[1] + +!! Organic Particle Species +APOCI ,ugC m-3 ,ALVPO1I[1]/1.39 + ASVPO1I[1]/1.32 + ASVPO2I[1]/1.26 \ + +APOCI[1] +APOCJ ,ugC m-3 ,ALVPO1J[1]/1.39 + ASVPO1J[1]/1.32 + ASVPO2J[1]/1.26 \ + +ASVPO3J[1]/1.21 + AIVPO1J[1]/1.17 + APOCJ[1] +APOCIJ ,ugC m-3 ,APOCI[0] + APOCJ[0] + +APOMI ,ug m-3 ,ALVPO1I[1] + ASVPO1I[1] + ASVPO2I[1] + APOCI[1] \ + +APNCOMI[1] +APOMJ ,ug m-3 ,ALVPO1J[1] + ASVPO1J[1] + ASVPO2J[1] + APOCJ[1] \ + +ASVPO3J[1] + AIVPO1J[1] + APNCOMJ[1] +APOMIJ ,ug m-3 ,APOMI[0] + APOMJ[0] + +ASOCI ,ugC m-3 ,ALVOO1I[1]/2.27 + ALVOO2I[1]/2.06 \ + +ASVOO1I[1]/1.88 + ASVOO2I[1]/1.73 +ASOCJ ,ugC m-3 ,AISO1J[1]/2.20 + AISO2J[1]/2.23 + AISO3J[1]/2.80 \ + +AMT1J[1]/1.67 + AMT2J[1]/1.67 + AMT3J[1]/1.72 \ + +AMT4J[1]/1.53 + AMT5J[1]/1.57 + AMT6J[1]/1.40 \ + +AMTNO3J[1]/1.90 + AMTHYDJ[1]/1.54 \ + +AGLYJ[1]/2.13 + ASQTJ[1]/1.52 \ + +AORGCJ[1]/2.00 + AOLGBJ[1]/2.10 + AOLGAJ[1]/2.50 \ + +ALVOO1J[1]/2.27 + ALVOO2J[1]/2.06 + ASVOO1J[1]/1.88 \ + +ASVOO2J[1]/1.73 + ASVOO3J[1]/1.60 \ + +AAVB1J[1]/2.70 + AAVB2J[1]/2.35 + AAVB3J[1]/2.17 \ + +AAVB4J[1]/1.99 + APCSOJ[1]/2.00 +ASOCIJ ,ugC m-3 ,ASOCI[0] + ASOCJ[0] + +ASOMI ,ug m-3 ,ALVOO1I[1] + ALVOO2I[1] + ASVOO1I[1] + ASVOO2I[1] +ASOMJ ,ug m-3 ,+AISO1J[1]+ AISO2J[1] + AISO3J[1] \ + +AMT1J[1] + AMT2J[1] + AMT3J[1] \ + +AMT4J[1] + AMT5J[1] + AMT6J[1] \ + +AMTNO3J[1] + AMTHYDJ[1] \ + +AGLYJ[1] + ASQTJ[1] \ + +AORGCJ[1] + AOLGBJ[1] + AOLGAJ[1] \ + +ALVOO1J[1] + ALVOO2J[1] + ASVOO1J[1] \ + +ASVOO2J[1] + ASVOO3J[1] + APCSOJ[1] \ + +AAVB1J[1] + AAVB2J[1] + AAVB3J[1] \ + +AAVB4J[1] +ASOMIJ ,ug m-3 ,ASOMI[0] + ASOMJ[0] + +AOCI ,ugC m-3 ,APOCI[0] + ASOCI[0] +AOCJ ,ugC m-3 ,APOCJ[0] + ASOCJ[0] + +AOCIJ ,ugC m-3 ,APOCIJ[0] + ASOCIJ[0] + + +AOMI ,ug m-3 ,APOMI[0] + ASOMI[0] +AOMJ ,ug m-3 ,APOMJ[0] + ASOMJ[0] + +AOMIJ ,ug m-3 ,APOMIJ[0] + ASOMIJ[0] + +!!! Anthropogenic-VOC Derived Organic Aerosol +AORGAI ,ug m-3 ,ALVOO1I[1] + ALVOO2I[1] + ASVOO1I[1] \ + +ASVOO2I[1] +AORGAJ ,ug m-3 ,ALVOO1J[1] + ALVOO2J[1] \ + +ASVOO1J[1] + ASVOO2J[1] + ASVOO3J[1] \ + +AAVB1J[1] + AAVB2J[1] + AAVB3J[1] \ + +AAVB4J[1] + AOLGAJ[1] + APCSOJ[1] +AORGAIJ ,ug m-3 ,AORGAI[0] + AORGAJ[0] + +!!! Biogenic-VOC Derived Organic Aerosol +AORGBIJ ,ug m-3 ,AMT1J[1] + AMT2J[1] + AMT3J[1] + AMT4J[1] \ + +AMT5J[1] + AMT6J[1] + AMTNO3J[1] \ + +AMTHYDJ[1] + AISO1J[1] + AISO2J[1] \ + +AISO3J[1] + ASQTJ[1] + AOLGBJ[1] + +!!! Cloud-Processed SOA +AORGCJ ,ug m-3 ,AORGCJ[1] +!!! Remaining SOA +AGLYJ ,ug m-3 ,AGLYJ[1] + +!!! OM/OC ratios +AOMOCRAT_TOT , ,AOMIJ[0]/AOCIJ[0] + +!! Total PM Aggregates +ATOTI ,ug m-3 ,ASO4I[1] + ANH4I[1] + ANO3I[1] + ANAI[1] \ + +ACLI[1] + AECI[1] + AOMI[0] + AOTHRI[1] +ATOTJ ,ug m-3 ,ASO4J[1] + ANH4J[1] + ANO3J[1] + ANAJ[1] \ + +ACLJ[1] + AECJ[1] + AOMJ[0] + AOTHRJ[1] \ + +AFEJ[1] + AALJ[1] + ASIJ[1] + ATIJ[1] \ + +ACAJ[1] + AMGJ[1] + AKJ[1] + AMNJ[1] + +ATOTK ,ug m-3 ,ASO4K[1] + ANH4K[1] + ANO3K[1] + ACLK[1] \ + +ACORS[1] + ASOIL[1] + ASEACAT[1] +ATOTIJ ,ug m-3 ,ATOTI[0] + ATOTJ[0] +ATOTIJK ,ug m-3 ,ATOTI[0] + ATOTJ[0] + ATOTK[0] + +!! Unspeciated PM including non-carbon organic mass +AUNSPEC1IJ ,ug m-3 ,ATOTIJ[0] - (ASO4IJ[0] + ANO3IJ[0] \ + +ANH4IJ[0] + ACLIJ[0] \ + +ANAIJ[0] + AECIJ[0] \ + +AOCIJ[0] + ASOILJ[0]) +!! Non-Carbon Organic Mass +ANCOMIJ ,ug m-3 ,AOMIJ[0] - AOCIJ[0] + +!! Unspeciated PM excluding non-carbon organic mass +AUNSPEC2IJ ,ug m-3 ,AUNSPEC1IJ[0] - ANCOMIJ[0] + +!! AMS Projection of Output Concentrations +PMAMS_CL ,ug m-3 ,ACLI[1] *FAMSAIT[3] +ACLJ[1]*FAMSACC[3]+ACLK[1] *FAMSCOR[3] +PMAMS_NH4 ,ug m-3 ,ANH4I[1]*FAMSAIT[3]+ANH4J[1]*FAMSACC[3]+ANH4K[1]*FAMSCOR[3] +PMAMS_NO3 ,ug m-3 ,ANO3I[1]*FAMSAIT[3]+ANO3J[1]*FAMSACC[3]+ANO3K[1]*FAMSCOR[3] +PMAMS_OA ,ug m-3 ,AOMI[0] *FAMSAIT[3]+AOMJ[0] *FAMSACC[3] +PMAMS_SO4 ,ug m-3 ,ASO4I[1]*FAMSAIT[3]+ASO4J[1]*FAMSACC[3]+ASO4K[1]*FAMSCOR[3] + +!! PM1 Cutoff Output +PM1_TOT ,ug m-3 ,ATOTI[0]*FPM1AIT[3]+ATOTJ[0]*FPM1ACC[3]+ATOTK[0]*FPM1COR[3] + +!! Unused PM1 Species. Included Here for demonstration +!PM1_EC ,ug m-3 ,AECI[1] *FPM1AIT[3] +AECJ[1] *FPM1ACC[3] +!PM1_OC ,ugC m-3 ,AOCI[0] *FPM1AIT[3] +AOCJ[0] *FPM1ACC[3] +!PM1_OM ,ug m-3 ,AOMI[0] *FPM1AIT[3] +AOMJ[0] *FPM1ACC[3] +!PM1_SO4 ,ug m-3 ,ASO4I[1]*FPM1AIT[3] +ASO4J[1]*FPM1ACC[3] +ASO4K[1]*FPM1COR[3] +!PM1_CL ,ug m-3 ,ACLI[1] *FPM1AIT[3] +ACLJ[1] *FPM1ACC[3] +ACLK[1] *FPM1COR[3] +!PM1_NA ,ug m-3 ,ANAI[1] *FPM1AIT[3] +ANAJ[1] *FPM1ACC[3] +ANAK[0] *FPM1COR[3] +!PM1_MG ,ug m-3 , AMGJ[1] *FPM1ACC[3] +AMGK[0] *FPM1COR[3] +!PM1_K ,ug m-3 , AKJ[1] *FPM1ACC[3] +AKK[0] *FPM1COR[3] +!PM1_CA ,ug m-3 , ACAJ[1] *FPM1ACC[3] +ACAK[0] *FPM1COR[3] +!PM1_NH4 ,ug m-3 ,ANH4I[1] *FPM1AIT[3]+ANH4J[1]*FPM1ACC[3] +ANH4K[1]*FPM1COR[3] +!PM1_NO3 ,ug m-3 ,ANO3I[1] *FPM1AIT[3]+ANO3J[1]*FPM1ACC[3] +ANO3K[1]*FPM1COR[3] +!PM1_SOIL ,ug m-3 ,ASOILJ[0]*FPM1ACC[3]+(ASOIL[1]+ACORS[1])*FPM1COR[3] +!PM1_UNSPEC1 ,ug m-3 ,PM1_TOT[0] - (PM1_CL[0] + PM1_EC[0]+ PM1_NA[0] + PM1_NH4[0] + \ +! PM1_NO3[0]+ PM1_OC[0]+ PM1_SOIL[0]+ PM1_SO4[0] ) +!PM1_UNSPCRS ,ug m-3 ,ATOTK[0] *FPM1COR[3] - (ASO4K[1]*FPM1COR[3] \ +! +ACLK[1]*FPM1COR[3] \ +! +ANAK[0]*FPM1COR[3] \ +! +AMGK[0]*FPM1COR[3] \ +! +AKK[0]*FPM1COR[3] \ +! +ACAK[0]*FPM1COR[3] \ +! +ANH4K[1]*FPM1COR[3] \ +! +ANO3K[1]*FPM1COR[3]) + +!! PM2.5 species computed using modeled size distribution +PM25_HP ,ug m-3 ,(AH3OPI[1]*FPM25AIT[3]+AH3OPJ[1]*FPM25ACC[3]+AH3OPK[1]*FPM25COR[3])*1.0/19.0 +PM25_CL ,ug m-3 ,ACLI[1]*FPM25AIT[3]+ACLJ[1]*FPM25ACC[3]+ACLK[1]*FPM25COR[3] +PM25_EC ,ug m-3 ,AECI[1]*FPM25AIT[3]+AECJ[1]*FPM25ACC[3] +PM25_NA ,ug m-3 ,ANAI[1]*FPM25AIT[3]+ANAJ[1]*FPM25ACC[3]+ANAK[0]*FPM25COR[3] +PM25_MG ,ug m-3 , AMGJ[1]*FPM25ACC[3]+AMGK[0]*FPM25COR[3] +PM25_K ,ug m-3 , AKJ[1] *FPM25ACC[3]+AKK[0] *FPM25COR[3] +PM25_CA ,ug m-3 , ACAJ[1]*FPM25ACC[3]+ACAK[0]*FPM25COR[3] +PM25_NH4 ,ug m-3 ,ANH4I[1]*FPM25AIT[3]+ANH4J[1]*FPM25ACC[3]+ANH4K[1]*FPM25COR[3] +PM25_NO3 ,ug m-3 ,ANO3I[1]*FPM25AIT[3]+ANO3J[1]*FPM25ACC[3]+ANO3K[1]*FPM25COR[3] +PM25_OC ,ugC m-3 ,AOCI[0] *FPM25AIT[3]+AOCJ[0]*FPM25ACC[3] +PM25_OM ,ug m-3 ,AOMI[0] *FPM25AIT[3]+AOMJ[0]*FPM25ACC[3] +PM25_SOIL ,ug m-3 ,ASOILJ[0]*FPM25ACC[3]+ASOIL[1]*FPM25COR[3] +PM25_SO4 ,ug m-3 ,ASO4I[1]*FPM25AIT[3]+ASO4J[1]*FPM25ACC[3]+ASO4K[1]*FPM25COR[3] +PM25_TOT ,ug m-3 ,ATOTI[0]*FPM25AIT[3]+ATOTJ[0]*FPM25ACC[3]+ATOTK[0]*FPM25COR[3] +PM25_UNSPEC1 ,ug m-3 ,PM25_TOT[0]-(PM25_CL[0]+PM25_EC[0]+PM25_NA[0]+PM25_NH4[0] \ + +PM25_NO3[0]+PM25_OC[0]+PM25_SOIL[0]+PM25_SO4[0]) +PM25_UNSPCRS ,ug m-3 ,ATOTK[0]*FPM25COR[3] - (ASO4K[1]*FPM25COR[3] \ + +ACLK[1]*FPM25COR[3] \ + +ANAK[0]*FPM25COR[3] \ + +AMGK[0]*FPM25COR[3] \ + +AKK[0]*FPM25COR[3] \ + +ACAK[0]*FPM25COR[3] \ + +ANH4K[1]*FPM25COR[3] \ + +ANO3K[1]*FPM25COR[3]) + + +!! Fine particle acidity (pH). pH is undefined if there is no aerosol water. +!Do not trust predictions when hourly water is <0.01 ug m-3. FINEPHF will +!have large negative value (-9.999E36) when pH is not to be trusted. +!AH2OIJ ,ug m-3 ,AH2OI[1]+AH2OJ[1] +!HPMOLAL ,mol kg-1 ,AHPLUSIJ[0]/AH2OIJ[0]*1000.0 +!ACIDITYTEMP , ,-1*LOG10(HPMOLAL[0]) +!FINEPHF , ,AH2OIJ[0]>0.01 ? ACIDITYTEMP[0] : -9.999E36 + +!! PM10.0 and Coarse-Sized Species +PM10 ,ug m-3 ,ATOTI[0]*FPM10AIT[3]+ATOTJ[0]*FPM10ACC[3]+ATOTK[0]*FPM10COR[3] + +PMC_CL ,ug m-3 ,ACLI[1]*FPM10AIT[3] +ACLJ[1]*FPM10ACC[3] +ACLK[1]*FPM10COR[3] -PM25_CL[0] +PMC_NA ,ug m-3 ,ANAI[1]*FPM10AIT[3] +ANAJ[1]*FPM10ACC[3] +ANAK[0]*FPM10COR[3] -PM25_NA[0] +PMC_NH4 ,ug m-3 ,ANH4I[1]*FPM10AIT[3]+ANH4J[1]*FPM10ACC[3]+ANH4K[1]*FPM10COR[3]-PM25_NH4[0] +PMC_NO3 ,ug m-3 ,ANO3I[1]*FPM10AIT[3]+ANO3J[1]*FPM10ACC[3]+ANO3K[1]*FPM10COR[3]-PM25_NO3[0] +PMC_SO4 ,ug m-3 ,ASO4I[1]*FPM10AIT[3]+ASO4J[1]*FPM10ACC[3]+ASO4K[1]*FPM10COR[3]-PM25_SO4[0] +PMC_TOT ,ug m-3 ,PM10[0]-PM25_TOT[0] + +!! FRM PM Equivalent Calculation +!! This section calculates the FRM applicable PM species, PMIJ_FRM and +!! PM25_FRM. The intermediate variablse K...ANH4IJ_loss are needed to +!! calculate the final quantities. +K ,ppb2 ,exp(118.87-24084/TEMP2[4]-6.025*log(TEMP2[4])) +P1 , ,exp(8763/TEMP2[4]+19.12*log(TEMP2[4])-135.94) +P2 , ,exp(9969/TEMP2[4]+16.22*log(TEMP2[4])-122.65) +P3 , ,exp(13875/TEMP2[4]+24.46*log(TEMP2[4])-182.61) +a , ,1-RH[0]/100 +K_prime ,ppb2 ,(P1[0]-P2[0]*a[0]+(P3[0]*a[0]*a[0]))*(a[0]^1.75)*K[0] +sqrt_Ki ,ppb ,sqrt(RH[0]<=61 ? K[0] : K_prime[0]) +max_NO3_loss ,ug m-3 ,745.7/TEMP2[4]*sqrt_Ki[0] +PM25_NO3_loss ,ug m-3 ,max_NO3_loss[0]<=PM25_NO3[0] ? max_NO3_loss[0] : PM25_NO3[0] +ANO3IJ_loss ,ug m-3 ,max_NO3_loss[0]<=ANO3IJ[0] ? max_NO3_loss[0] : ANO3IJ[0] +PM25_NH4_loss ,ug m-3 ,PM25_NO3_loss[0]*(18/62) +ANH4IJ_loss ,ug m-3 ,ANO3IJ_loss[0]*(18/62) +PMIJ_FRM ,ug m-3 ,ATOTIJ[0]-(ANO3IJ_loss[0]+ANH4IJ_loss[0]) \ + +0.24*(ASO4IJ[0]+ANH4IJ[0]-ANH4IJ_loss[0])+0.5 +PM25_FRM ,ug m-3 ,PM25_TOT[0]-(PM25_NO3_loss[0]+PM25_NH4_loss[0]) \ + +0.24*(PM25_SO4[0]+PM25_NH4[0]-PM25_NH4_loss[0])+0.5 diff --git a/CCTM/src/MECHS/cb6r5_ae7_aq/SpecDef_cb6r5_ae7_aq.txt b/CCTM/src/MECHS/cb6r5_ae7_aq/SpecDef_cb6r5_ae7_aq.txt index 7f05451c6..fc281652d 100644 --- a/CCTM/src/MECHS/cb6r5_ae7_aq/SpecDef_cb6r5_ae7_aq.txt +++ b/CCTM/src/MECHS/cb6r5_ae7_aq/SpecDef_cb6r5_ae7_aq.txt @@ -113,8 +113,8 @@ XYL ,ppbV ,1000.0*XYLMN[1] ! +5.0*ISOP[1] + 10.0*TERP[1]+ 10.0*NAPH[1] +10.*APIN[1]) !! DMS and MSA. Users can uncomment them if they choose. -!DMS ,ppbV ,1000.0*DMS[1] -!MSA ,ppbV ,1000.0*MSA[1] +DMS ,ppbV ,1000.0*DMS[1] +MSA ,ppbV ,1000.0*MSA[1] !-------------------------------------------! !--------------- Particles -----------------! @@ -156,10 +156,10 @@ AOCIJ ,ugC m-3 ,PMF_OC[3] AOMIJ ,ug m-3 ,PMF_OA[3] !!! Anthropogenic-VOC Derived Organic Aerosol -AORGAJ ,ug m-3 ,PMF_ASOA[3] +AORGAIJ ,ug m-3 ,PMF_ASOA[3] !!! Biogenic-VOC Derived Organic Aerosol -AORGBJ ,ug m-3 ,PMF_BSOA[3] +AORGBIJ ,ug m-3 ,PMF_BSOA[3] !!! Cloud-Processed SOA AORGCJ ,ug m-3 ,AORGCJ[1] diff --git a/CCTM/src/MECHS/cb6r5hap_ae7_aq/SpecDef_Conc_cb6r5hap_ae7_aq.txt b/CCTM/src/MECHS/cb6r5hap_ae7_aq/SpecDef_Conc_cb6r5hap_ae7_aq.txt new file mode 100644 index 000000000..21fce5f7f --- /dev/null +++ b/CCTM/src/MECHS/cb6r5hap_ae7_aq/SpecDef_Conc_cb6r5hap_ae7_aq.txt @@ -0,0 +1,436 @@ +!#start YYYYJJJ 010000 +!#end YYYYJJJ 000000 +#layer 1 + +/ +! This Species Definition File is for Use with the COMBINE tool built for +! post-processing CMAQ output. It is compatible with CMAQv5.4. +! Date: May 12 2017 + +! Output variables that begin with 'PM' represent those in which a size cut was +! applied based on modeled aerosol mode parameters. For example, PM25_NA is all +! sodium that falls below 2.5 um diameter. These 'PM' variables are used for +! comparisons at IMPROVE and CSN sites. + +! Output variables that begin with 'PMAMS' represent the mass that would have +! been detected by an Aerosol Mass Spectrometer. + +! Output variables beginning with 'A' (aside from AIR_DENS) represent a +! combination of aerosol species in which no size cut was applied. For example, +! ASO4IJ is the sum of i-mode and j-mode sulfate. These 'A' variables are used +! for comparisons at CASTNet sites. + +! Output variables beginning with 'PMC' refer to the coarse fraction of total PM, +! computed by summing all modes and subtracting the PM2.5 fraction. These 'PMC' +! variables are used for comparisons at SEARCH sites. + +! This Species Definition File is just for use with the uncoupled, offline CMAQ, +! model. If you are processing WRF-CMAQ results, a different Species Definition +! file is required. + +/ File [1]: CMAQ conc/aconc file +/ File [2]: METCRO3D file +/ File [3]: ELMO/AELMO file +/ File [4]: METCRO2D file +/ +/new species ,units ,expression + +!-------------------------------------------! +!------------- Meteorology -----------------! +!-------------------------------------------! +AIR_DENS ,kg m-3 ,DENS[2] +RH ,% ,100.00*RH[3] +SFC_TMP ,C ,(TEMP2[4]-273.15) +PBLH ,m ,PBL[4] +SOL_RAD ,W m-2 ,RGRND[4] +precip ,cm ,RC[4]>=0 ? RN[4]+RC[4] : RN[4] +WSPD10 ,m s-1 ,WSPD10[4] +WDIR10 ,deg ,WDIR10[4] + +!-------------------------------------------! +!--------------- Gases ---------------------! +!-------------------------------------------! +ALD2 ,ppbV ,1000.0*ALD2[1] +BENZENE ,ppbV ,1000.0*BENZENE[1] +CO ,ppbV ,1000.0*CO[1] +ETH ,ppbV ,1000.0*ETH[1] +ETHA ,ppbV ,1000.0*ETHA[1] +FORM ,ppbV ,1000.0*FORM[1] +H2O2 ,ppbV ,1000.0*H2O2[1] +HNO3 ,ppbV ,1000.0*HNO3[1] +HNO3_UGM3 ,ug m-3 ,1000.0*(HNO3[1]*2.1756*DENS[2]) +HONO ,ppbV ,1000.0*HONO[1] +HOX ,ppbV ,1000.0*(OH[1]+HO2[1]) +OH ,ppbV ,1000.0*(OH[1]) +ISOP ,ppbV ,1000.0*ISOP[1] +N2O5 ,ppbV ,1000.0*N2O5[1] +NH3 ,ppbV ,1000.0*NH3[1] +NH3_UGM3 ,ug m-3 ,1000.0*(NH3[1]*0.5880*DENS[2]) +NHX ,ug m-3 ,1000.0*(NH3[1]*0.5880*DENS[2])+ANH4I[1]+ANH4J[1]+ANH4K[1] +NO ,ppbV ,1000.0*NO[1] +NO2 ,ppbV ,1000.0*NO2[1] +NOX ,ppbV ,1000.0*(NO[1] + NO2[1]) +ANO3_PPB ,ppbV ,(ANO3I[1]+ANO3J[1]+ANO3K[1])/(DENS[2]*(62.0/28.97)) +NTR ,ppbV ,1000.0*(NTR1[1]+NTR2[1]+INTR[1]) +PANS ,ppbV ,1000.0*(PAN[1]+PANX[1]+OPAN[1]) +NOY ,ppbV ,1000.0* (NO[1]+NO2[1]+NO3[1]+2*N2O5[1]+HONO[1]+HNO3[1]+PNA[1] \ + +CRON[1]+CLNO2[1]+CLNO3[1]) \ + +PANS[0]+NTR[0]+ANO3_PPB[0] +O3 ,ppbV ,1000.0*O3[1] +SO2 ,ppbV ,1000.0*SO2[1] +SO2_UGM3 ,ug m-3 ,1000.0*(SO2[1]*2.2118*DENS[2]) +TERP ,ppbV ,1000.0*TERP[1] +TOL ,ppbV ,1000.0*TOL[1] +XYL ,ppbV ,1000.0*XYLMN[1] + +!! Additional Global, Regional and Urban Toxic gases +ACROLEIN ,ug/m3 ,1000.0*(ACROLEIN[1]*1.9365*DENS[2]) +ACRY_NITRILE ,ug/m3 ,1000.0*(ACRY_NITRILE[1]*1.8329*DENS[2]) +ALD2_UGM3 ,ug/m3 ,1000.0*(ALD2[1]*1.5188*DENS[2]) +ALD2_PRIMARY ,ug/m3 ,1000.0*(ALD2_PRIMARY[1]*1.5188*DENS[2]) +BENZENE_UGM3 ,ug/m3 ,1000.0*(BENZENE[1]*2.6959*DENS[2]) +BR2_C2_12 ,ug/m3 ,1000.0*(BR2_C2_12[1]*6.4860*DENS[2]) +BUTADIENE13 ,ug/m3 ,1000.0*(BUTADIENE13[1]*1.8674*DENS[2]) +CHCL3 ,ug/m3 ,1000.0*(CHCL3[1]*4.1215*DENS[2]) +CL_ETHE ,ug/m3 ,1000.0*(CL_ETHE[1]*2.1574*DENS[2]) +CL2 ,ppbV ,1000.0*CL2[1] +CL2_C2_12 ,ug/m3 ,1000.0*(CL2_C2_12[1]*3.4173*DENS[2]) +CL2_ME ,ug/m3 ,1000.0*(CL2_ME[1]*2.9306*DENS[2]) +CL3_ETHE ,ug/m3 ,1000.0*(CL3_ETHE[1]*4.5357*DENS[2]) +CL4_ETHE ,ug/m3 ,1000.0*(CL4_ETHE[1]*5.7232*DENS[2]) +CL4_ETHANE ,ug/m3 ,1000.0*(CL4_ETHANE[1]*5.7956*DENS[2]) +CARBONTET ,ug/m3 ,1000.0*(CARBONTET[1]*5.3089*DENS[2]) +DICL_BENZENE ,ug/m3 ,1000.0*(DICL_BENZENE[1]*5.069*DENS[2]) +DICL_PROPENE ,ug/m3 ,1000.0*(DICL_PROPENE[1]*3.8316*DENS[2]) +ETOH ,ppbV ,1000.0*ETOH[1] +ETOX ,ug/m3 ,1000.0*(ETOX[1]*1.5223*DENS[2]) +FORM_UGM3 ,ug/m3 ,1000.0*(FORM[1]*1.0356*DENS[2]) +FORM_PRIMARY ,ug/m3 ,1000.0*(FORM_PRIMARY[1]*1.0356*DENS[2]) +HCL ,ppbV ,1000.0*HCL[1] +HEXMETH_DIS ,ug/m3 ,1000.0*(HEXMETH_DIS[1]*5.8000*DENS[2]) +HYDRAZINE ,ug/m3 ,1000.0*(HYDRAZINE[1]*3.3793*DENS[2]) +MEOH ,ppbV ,1000.0*MEOH[1] +XYLENE ,ppbV ,1000.0*XYLENE[1] +MAL_ANHYDRID ,ug/m3 ,1000.0*(MAL_ANHYDRID[1]*3.3843*DENS[2]) +NAPHTHALENE ,ug/m3 ,1000.0*(NAPHTHALENE[1]*4.4253*DENS[2]) +PROPY_DICL ,ug/m3 ,1000.0*(PROPYL_DICL[1]*3.9006*DENS[2]) +QUINOLINE ,ug/m3 ,1000.0*(QUINOLINE[1]*4.4598*DENS[2]) +TOLU ,ppbV ,1000.0*TOLU[1] +TOL_DIIS ,ug/m3 ,1000.0*(TOL_DIIS[1]*6.0069*DENS[2]) +TRIETHYLAMIN ,ug/m3 ,1000.0*(TRIETHYLAMIN[1]*3.4986*DENS[2]) +ACET_NITRILE ,ug/m3 ,1000.0*(ACET_NITRILE[1]*1.4155*DENS[2]) +STYRENE ,ug/m3 ,1000.0*(STYRENE[1]*3.5914*DENS[2]) +ACRYACID ,ug/m3 ,1000.0*(ACRYACID[1]*2.4849*DENS[2]) +HEXANE ,ug/m3 ,1000.0*(HEXANE[1]*2.9717*DENS[2]) +METHCHLORIDE ,ug/m3 ,1000.0*(METHCHLORIDE[1]*1.7410*DENS[2]) +CARBSULFIDE ,ug/m3 ,1000.0*(CARBSULFIDE[1]*2.0714*DENS[2]) +CHLOROPRENE ,ug/m3 ,1000.0*(CHLOROPRENE[1]*3.0530*DENS[2]) +ETHYLBENZENE ,ug/m3 ,1000.0*(ETHYLBENZENE[1]*3.6610*DENS[2]) + +!! Inert PAH tracers +PAH_000E0 ,ug/m3 ,1000.0*(PAH_000E0[1]*6.4340*DENS[2]) +PAH_176E5 ,ug/m3 ,1000.0*(PAH_176E5[1]*6.8314*DENS[2]) +PAH_880E5 ,ug/m3 ,1000.0*(PAH_880E5[1]*6.8383*DENS[2]) +PAH_176E4 ,ug/m3 ,1000.0*(PAH_176E4[1]*8.7907*DENS[2]) +PAH_176E3 ,ug/m3 ,1000.0*(PAH_176E3[1]*9.6166*DENS[2]) +PAH_192E3 ,ug/m3 ,1000.0*(PAH_192E3[1]*9.2745*DENS[2]) +PAH_101E2 ,ug/m3 ,1000.0*(PAH_101E2[1]*10.4493*DENS[2]) +PAH_176E2 ,ug/m3 ,1000.0*(PAH_176E2[1]*8.8556*DENS[2]) +PAH_114E1 ,ug/m3 ,1000.0*(PAH_114E1[1]*3.3793*DENS[2]) + +!Mercuric gas species +HG_0 ,ng/m3 ,1000.0*(HG[1]*8.3330*DENS[2]*1000.0) +HG_II ,ng/m3 ,1000.0*(HGIIGAS[1]*8.3330*DENS[2]*1000.0) + +!! Unused Gases. Presented Here for illustration. Users can uncomment +!! them if they choose. +!ALDX ,ppbV ,1000.0*ALDX[1] +!CLNO2 ,ppbV ,1000.0*CLNO2[1] +!IOLE ,ppbV ,1000.0*IOLE[1] +!OLE ,ppbV ,1000.0*OLE[1] +!PAR ,ppbV ,1000.0*PAR[1] +!PAN ,ppbV ,1000.0*PAN[1] +!PANX ,ppbV ,1000.0*PANX[1] +!SULF ,ppbV ,1000.0*SULF[1] +!VOC ,ppbC ,1000.0* ( PAR[1] + 2.0*ETH[1] + MEOH[1] + 2.0*ETOH[1] \ +! +2.0*OLE[1] + 7.0*TOL[1] + 8.0*XYLMN[1]+ FORM[1] \ +! +2.0*ALD2[1] + 2.0*ETHA[1] + 4.0*IOLE[1] + 2.0*ALDX[1] \ +! +5.0*ISOP[1] + 10.0*TERP[1]+ 10.0*NAPH[1]) + +!! DMS and MSA. Users can uncomment them if they choose. +DMS ,ppbV ,1000.0*DMS[1] +MSA ,ppbV ,1000.0*MSA[1] + +!-------------------------------------------! +!--------------- Particles -----------------! +!-------------------------------------------! +!! Crustal Elements +AFEJ ,ug m-3 ,AFEJ[1] +AALJ ,ug m-3 ,AALJ[1] +ASIJ ,ug m-3 ,ASIJ[1] +ATIJ ,ug m-3 ,ATIJ[1] +ACAJ ,ug m-3 ,ACAJ[1] +AMGJ ,ug m-3 ,AMGJ[1] +AKJ ,ug m-3 ,AKJ[1] +AMNJ ,ug m-3 ,AMNJ[1] +ASOILJ ,ug m-3 ,2.20*AALJ[1]+2.49*ASIJ[1]+1.63*ACAJ[1]+2.42*AFEJ[1]+1.94*ATIJ[1] + +!! Non-Crustal Inorganic Particle Species +AHPLUSIJ ,umol m-3 ,(AH3OPI[1]+AH3OPJ[1])*1.0/19.0 +ANAK ,ug m-3 ,0.8373*ASEACAT[1]+0.0626*ASOIL[1]+0.0023*ACORS[1] +AMGK ,ug m-3 ,0.0997*ASEACAT[1]+0.0170*ASOIL[1]+0.0032*ACORS[1] +AKK ,ug m-3 ,0.0310*ASEACAT[1]+0.0242*ASOIL[1]+0.0176*ACORS[1] +ACAK ,ug m-3 ,0.0320*ASEACAT[1]+0.0838*ASOIL[1]+0.0562*ACORS[1] +ACLIJ ,ug m-3 ,ACLI[1]+ACLJ[1] +AECIJ ,ug m-3 ,AECI[1]+AECJ[1] +ANAIJ ,ug m-3 ,ANAJ[1]+ANAI[1] +ANO3IJ ,ug m-3 ,ANO3I[1]+ANO3J[1] +ANO3K ,ug m-3 ,ANO3K[1] +TNO3 ,ug m-3 ,2175.6*(HNO3[1]*DENS[2])+ANO3I[1]+ANO3J[1]+ANO3K[1] +ANH4IJ ,ug m-3 ,ANH4I[1]+ANH4J[1] +ANH4K ,ug m-3 ,ANH4K[1] +ASO4IJ ,ug m-3 ,ASO4I[1]+ASO4J[1] +ASO4K ,ug m-3 ,ASO4K[1] + +!! Organic Particle Species +APOCI ,ugC m-3 ,ALVPO1I[1]/1.39 + ASVPO1I[1]/1.32 + ASVPO2I[1]/1.26 \ + +APOCI[1] +APOCJ ,ugC m-3 ,ALVPO1J[1]/1.39 + ASVPO1J[1]/1.32 + ASVPO2J[1]/1.26 \ + +ASVPO3J[1]/1.21 + AIVPO1J[1]/1.17 + APOCJ[1] +APOCIJ ,ugC m-3 ,APOCI[0] + APOCJ[0] + +APOMI ,ug m-3 ,ALVPO1I[1] + ASVPO1I[1] + ASVPO2I[1] + APOCI[1] \ + +APNCOMI[1] +APOMJ ,ug m-3 ,ALVPO1J[1] + ASVPO1J[1] + ASVPO2J[1] + APOCJ[1] \ + +ASVPO3J[1] + AIVPO1J[1] + APNCOMJ[1] +APOMIJ ,ug m-3 ,APOMI[0] + APOMJ[0] + +ASOCI ,ugC m-3 ,ALVOO1I[1]/2.27 + ALVOO2I[1]/2.06 \ + +ASVOO1I[1]/1.88 + ASVOO2I[1]/1.73 +ASOCJ ,ugC m-3 ,AISO1J[1]/2.20 + AISO2J[1]/2.23 + AISO3J[1]/2.80 \ + +AMT1J[1]/1.67 + AMT2J[1]/1.67 + AMT3J[1]/1.72 \ + +AMT4J[1]/1.53 + AMT5J[1]/1.57 + AMT6J[1]/1.40 \ + +AMTNO3J[1]/1.90 + AMTHYDJ[1]/1.54 \ + +AGLYJ[1]/2.13 + ASQTJ[1]/1.52 \ + +AORGCJ[1]/2.00 + AOLGBJ[1]/2.10 + AOLGAJ[1]/2.50 \ + +ALVOO1J[1]/2.27 + ALVOO2J[1]/2.06 + ASVOO1J[1]/1.88 \ + +ASVOO2J[1]/1.73 + ASVOO3J[1]/1.60 \ + +AAVB1J[1]/2.70 + AAVB2J[1]/2.35 + AAVB3J[1]/2.17 \ + +AAVB4J[1]/1.99 + APCSOJ[1]/2.00 +ASOCIJ ,ugC m-3 ,ASOCI[0] + ASOCJ[0] + +ASOMI ,ug m-3 ,ALVOO1I[1] + ALVOO2I[1] + ASVOO1I[1] + ASVOO2I[1] +ASOMJ ,ug m-3 ,+AISO1J[1]+ AISO2J[1] + AISO3J[1] \ + +AMT1J[1] + AMT2J[1] + AMT3J[1] \ + +AMT4J[1] + AMT5J[1] + AMT6J[1] \ + +AMTNO3J[1] + AMTHYDJ[1] \ + +AGLYJ[1] + ASQTJ[1] \ + +AORGCJ[1] + AOLGBJ[1] + AOLGAJ[1] \ + +ALVOO1J[1] + ALVOO2J[1] + ASVOO1J[1] \ + +ASVOO2J[1] + ASVOO3J[1] + APCSOJ[1] \ + +AAVB1J[1] + AAVB2J[1] + AAVB3J[1] \ + +AAVB4J[1] +ASOMIJ ,ug m-3 ,ASOMI[0] + ASOMJ[0] + +AOCI ,ugC m-3 ,APOCI[0] + ASOCI[0] +AOCJ ,ugC m-3 ,APOCJ[0] + ASOCJ[0] + +AOCIJ ,ugC m-3 ,APOCIJ[0] + ASOCIJ[0] + + +AOMI ,ug m-3 ,APOMI[0] + ASOMI[0] +AOMJ ,ug m-3 ,APOMJ[0] + ASOMJ[0] + +AOMIJ ,ug m-3 ,APOMIJ[0] + ASOMIJ[0] + +!!! Anthropogenic-VOC Derived Organic Aerosol +AORGAI ,ug m-3 ,ALVOO1I[1] + ALVOO2I[1] + ASVOO1I[1] \ + +ASVOO2I[1] +AORGAJ ,ug m-3 ,ALVOO1J[1] + ALVOO2J[1] \ + +ASVOO1J[1] + ASVOO2J[1] + ASVOO3J[1] \ + +AAVB1J[1] + AAVB2J[1] + AAVB3J[1] \ + +AAVB4J[1] + AOLGAJ[1] + APCSOJ[1] +AORGAIJ ,ug m-3 ,AORGAI[0] + AORGAJ[0] + +!!! Biogenic-VOC Derived Organic Aerosol +AORGBIJ ,ug m-3 ,AMT1J[1] + AMT2J[1] + AMT3J[1] + AMT4J[1] \ + +AMT5J[1] + AMT6J[1] + AMTNO3J[1] \ + +AMTHYDJ[1] + AISO1J[1] + AISO2J[1] \ + +AISO3J[1] + ASQTJ[1] + AOLGBJ[1] + +!!! Cloud-Processed SOA +AORGCJ ,ug m-3 ,AORGCJ[1] +!!! Remaining SOA +AGLYJ ,ug m-3 ,AGLYJ[1] + +!!! OM/OC ratios +AOMOCRAT_TOT , ,AOMIJ[0]/AOCIJ[0] + +!! Total PM Aggregates +ATOTI ,ug m-3 ,ASO4I[1] + ANH4I[1] + ANO3I[1] + ANAI[1] \ + +ACLI[1] + AECI[1] + AOMI[0] + AOTHRI[1] +ATOTJ ,ug m-3 ,ASO4J[1] + ANH4J[1] + ANO3J[1] + ANAJ[1] \ + +ACLJ[1] + AECJ[1] + AOMJ[0] + AOTHRJ[1] \ + +AFEJ[1] + AALJ[1] + ASIJ[1] + ATIJ[1] \ + +ACAJ[1] + AMGJ[1] + AKJ[1] + AMNJ[1] + +ATOTK ,ug m-3 ,ASO4K[1] + ANH4K[1] + ANO3K[1] + ACLK[1] \ + +ACORS[1] + ASOIL[1] + ASEACAT[1] +ATOTIJ ,ug m-3 ,ATOTI[0] + ATOTJ[0] +ATOTIJK ,ug m-3 ,ATOTI[0] + ATOTJ[0] + ATOTK[0] + +!! Unspeciated PM including non-carbon organic mass +AUNSPEC1IJ ,ug m-3 ,ATOTIJ[0] - (ASO4IJ[0] + ANO3IJ[0] \ + +ANH4IJ[0] + ACLIJ[0] \ + +ANAIJ[0] + AECIJ[0] \ + +AOCIJ[0] + ASOILJ[0]) +!! Non-Carbon Organic Mass +ANCOMIJ ,ug m-3 ,AOMIJ[0] - AOCIJ[0] + +!! Unspeciated PM excluding non-carbon organic mass +AUNSPEC2IJ ,ug m-3 ,AUNSPEC1IJ[0] - ANCOMIJ[0] + +!! AMS Projection of Output Concentrations +PMAMS_CL ,ug m-3 ,ACLI[1] *FAMSAIT[3] +ACLJ[1]*FAMSACC[3]+ACLK[1] *FAMSCOR[3] +PMAMS_NH4 ,ug m-3 ,ANH4I[1]*FAMSAIT[3]+ANH4J[1]*FAMSACC[3]+ANH4K[1]*FAMSCOR[3] +PMAMS_NO3 ,ug m-3 ,ANO3I[1]*FAMSAIT[3]+ANO3J[1]*FAMSACC[3]+ANO3K[1]*FAMSCOR[3] +PMAMS_OA ,ug m-3 ,AOMI[0] *FAMSAIT[3]+AOMJ[0] *FAMSACC[3] +PMAMS_SO4 ,ug m-3 ,ASO4I[1]*FAMSAIT[3]+ASO4J[1]*FAMSACC[3]+ASO4K[1]*FAMSCOR[3] + +!! PM1 Cutoff Output +PM1_TOT ,ug m-3 ,ATOTI[0]*FPM1AIT[3]+ATOTJ[0]*FPM1ACC[3]+ATOTK[0]*FPM1COR[3] + +!! Unused PM1 Species. Included Here for demonstration +!PM1_EC ,ug m-3 ,AECI[1] *FPM1AIT[3] +AECJ[1] *FPM1ACC[3] +!PM1_OC ,ugC m-3 ,AOCI[0] *FPM1AIT[3] +AOCJ[0] *FPM1ACC[3] +!PM1_OM ,ug m-3 ,AOMI[0] *FPM1AIT[3] +AOMJ[0] *FPM1ACC[3] +!PM1_SO4 ,ug m-3 ,ASO4I[1]*FPM1AIT[3] +ASO4J[1]*FPM1ACC[3] +ASO4K[1]*FPM1COR[3] +!PM1_CL ,ug m-3 ,ACLI[1] *FPM1AIT[3] +ACLJ[1] *FPM1ACC[3] +ACLK[1] *FPM1COR[3] +!PM1_NA ,ug m-3 ,ANAI[1] *FPM1AIT[3] +ANAJ[1] *FPM1ACC[3] +ANAK[0] *FPM1COR[3] +!PM1_MG ,ug m-3 , AMGJ[1] *FPM1ACC[3] +AMGK[0] *FPM1COR[3] +!PM1_K ,ug m-3 , AKJ[1] *FPM1ACC[3] +AKK[0] *FPM1COR[3] +!PM1_CA ,ug m-3 , ACAJ[1] *FPM1ACC[3] +ACAK[0] *FPM1COR[3] +!PM1_NH4 ,ug m-3 ,ANH4I[1] *FPM1AIT[3]+ANH4J[1]*FPM1ACC[3] +ANH4K[1]*FPM1COR[3] +!PM1_NO3 ,ug m-3 ,ANO3I[1] *FPM1AIT[3]+ANO3J[1]*FPM1ACC[3] +ANO3K[1]*FPM1COR[3] +!PM1_SOIL ,ug m-3 ,ASOILJ[0]*FPM1ACC[3]+(ASOIL[1]+ACORS[1])*FPM1COR[3] +!PM1_UNSPEC1 ,ug m-3 ,PM1_TOT[0] - (PM1_CL[0] + PM1_EC[0]+ PM1_NA[0] + PM1_NH4[0] + \ +! PM1_NO3[0]+ PM1_OC[0]+ PM1_SOIL[0]+ PM1_SO4[0] ) +!PM1_UNSPCRS ,ug m-3 ,ATOTK[0] *FPM1COR[3] - (ASO4K[1]*FPM1COR[3] \ +! +ACLK[1]*FPM1COR[3] \ +! +ANAK[0]*FPM1COR[3] \ +! +AMGK[0]*FPM1COR[3] \ +! +AKK[0]*FPM1COR[3] \ +! +ACAK[0]*FPM1COR[3] \ +! +ANH4K[1]*FPM1COR[3] \ +! +ANO3K[1]*FPM1COR[3]) + +!! PM2.5 species computed using modeled size distribution +PM25_HP ,ug m-3 ,(AH3OPI[1]*FPM25AIT[3]+AH3OPJ[1]*FPM25ACC[3]+AH3OPK[1]*FPM25COR[3])*1.0/19.0 +PM25_CL ,ug m-3 ,ACLI[1]*FPM25AIT[3]+ACLJ[1]*FPM25ACC[3]+ACLK[1]*FPM25COR[3] +PM25_EC ,ug m-3 ,AECI[1]*FPM25AIT[3]+AECJ[1]*FPM25ACC[3] +PM25_NA ,ug m-3 ,ANAI[1]*FPM25AIT[3]+ANAJ[1]*FPM25ACC[3]+ANAK[0]*FPM25COR[3] +PM25_MG ,ug m-3 , AMGJ[1]*FPM25ACC[3]+AMGK[0]*FPM25COR[3] +PM25_K ,ug m-3 , AKJ[1] *FPM25ACC[3]+AKK[0] *FPM25COR[3] +PM25_CA ,ug m-3 , ACAJ[1]*FPM25ACC[3]+ACAK[0]*FPM25COR[3] +PM25_NH4 ,ug m-3 ,ANH4I[1]*FPM25AIT[3]+ANH4J[1]*FPM25ACC[3]+ANH4K[1]*FPM25COR[3] +PM25_NO3 ,ug m-3 ,ANO3I[1]*FPM25AIT[3]+ANO3J[1]*FPM25ACC[3]+ANO3K[1]*FPM25COR[3] +PM25_OC ,ugC m-3 ,AOCI[0] *FPM25AIT[3]+AOCJ[0]*FPM25ACC[3] +PM25_OM ,ug m-3 ,AOMI[0] *FPM25AIT[3]+AOMJ[0]*FPM25ACC[3] +PM25_SOIL ,ug m-3 ,ASOILJ[0]*FPM25ACC[3]+ASOIL[1]*FPM25COR[3] +PM25_SO4 ,ug m-3 ,ASO4I[1]*FPM25AIT[3]+ASO4J[1]*FPM25ACC[3]+ASO4K[1]*FPM25COR[3] +PM25_TOT ,ug m-3 ,ATOTI[0]*FPM25AIT[3]+ATOTJ[0]*FPM25ACC[3]+ATOTK[0]*FPM25COR[3] +PM25_UNSPEC1 ,ug m-3 ,PM25_TOT[0]-(PM25_CL[0]+PM25_EC[0]+PM25_NA[0]+PM25_NH4[0] \ + +PM25_NO3[0]+PM25_OC[0]+PM25_SOIL[0]+PM25_SO4[0]) +PM25_UNSPCRS ,ug m-3 ,ATOTK[0]*FPM25COR[3] - (ASO4K[1]*FPM25COR[3] \ + +ACLK[1]*FPM25COR[3] \ + +ANAK[0]*FPM25COR[3] \ + +AMGK[0]*FPM25COR[3] \ + +AKK[0]*FPM25COR[3] \ + +ACAK[0]*FPM25COR[3] \ + +ANH4K[1]*FPM25COR[3] \ + +ANO3K[1]*FPM25COR[3]) + + +!! Fine particle acidity (pH). pH is undefined if there is no aerosol water. +!Do not trust predictions when hourly water is <0.01 ug m-3. FINEPHF will +!have large negative value (-9.999E36) when pH is not to be trusted. +!AH2OIJ ,ug m-3 ,AH2OI[1]+AH2OJ[1] +!HPMOLAL ,mol kg-1 ,AHPLUSIJ[0]/AH2OIJ[0]*1000.0 +!ACIDITYTEMP , ,-1*LOG10(HPMOLAL[0]) +!FINEPHF , ,AH2OIJ[0]>0.01 ? ACIDITYTEMP[0] : -9.999E36 + +!! PM10.0 and Coarse-Sized Species +PM10 ,ug m-3 ,ATOTI[0]*FPM10AIT[3]+ATOTJ[0]*FPM10ACC[3]+ATOTK[0]*FPM10COR[3] + +PMC_CL ,ug m-3 ,ACLI[1]*FPM10AIT[3] +ACLJ[1]*FPM10ACC[3] +ACLK[1]*FPM10COR[3] -PM25_CL[0] +PMC_NA ,ug m-3 ,ANAI[1]*FPM10AIT[3] +ANAJ[1]*FPM10ACC[3] +ANAK[0]*FPM10COR[3] -PM25_NA[0] +PMC_NH4 ,ug m-3 ,ANH4I[1]*FPM10AIT[3]+ANH4J[1]*FPM10ACC[3]+ANH4K[1]*FPM10COR[3]-PM25_NH4[0] +PMC_NO3 ,ug m-3 ,ANO3I[1]*FPM10AIT[3]+ANO3J[1]*FPM10ACC[3]+ANO3K[1]*FPM10COR[3]-PM25_NO3[0] +PMC_SO4 ,ug m-3 ,ASO4I[1]*FPM10AIT[3]+ASO4J[1]*FPM10ACC[3]+ASO4K[1]*FPM10COR[3]-PM25_SO4[0] +PMC_TOT ,ug m-3 ,PM10[0]-PM25_TOT[0] + +!! Deisel PM Species +DIESEL_PM10 ,ug m-3 ,ADE_OTHRI[1]*FPM10AIT[3] + ADE_OTHRJ[1]*FPM10ACC[3] \ + +ADE_ECI[1] *FPM10AIT[3] + ADE_ECJ[1] *FPM10ACC[3] \ + +ADE_OCI[1] *FPM10AIT[3] + ADE_OCJ[1] *FPM10ACC[3] \ + + ADE_SO4J[1] *FPM10ACC[3] \ + + ADE_NO3J[1] *FPM10ACC[3] \ + + ADE_CORS[1] *FPM10COR[3] +DIESEL_PM25 ,ug m-3 ,ADE_OTHRI[1]*FPM25AIT[3] + ADE_OTHRJ[1]*FPM25ACC[3] \ + +ADE_ECI[1] *FPM25AIT[3] + ADE_ECJ[1] *FPM25ACC[3] \ + +ADE_OCI[1] *FPM25AIT[3] + ADE_OCJ[1] *FPM25ACC[3] \ + + ADE_SO4J[1] *FPM25ACC[3] \ + + ADE_NO3J[1] *FPM25ACC[3] \ + + ADE_CORS[1] *FPM25COR[3] + +!!Benzo-A-Pyrene, gas and aerosol species +BAP_GAS ,ng/m3 ,1.0e6*8.7017*BENAPY[1]*DENS[2] , gas phase benzo-a-pyrene +BAP_AERO ,ng/m3 ,1000.0*(ABENAPYI[1]+ABENAPYJ[1]) , fine aerosol phase benzo-a-pyrene +BAP_FAERO , ,BAP_AERO[0]/(BAP_AERO[0]+BAP_GAS[0]), aerosol fraction benzo-a-pyrene +BAP_PM10 ,ng/m3 ,1000.0*(ABENAPYI[1]*FPM10AIT[3] + ABENAPYJ[1]*FPM10ACC[3]) +BAP_PM25 ,ng/m3 ,1000.0*(ABENAPYI[1]*FPM25AIT[3] + ABENAPYJ[1]*FPM25ACC[3]) + +!Toxic Metallic PM species +BERYLLIUM_PM10 ,ng m-3 ,1000.0*(ABEI[1]*FPM10AIT[3] + ABEJ[1]*FPM10ACC[3]) +BERYLLIUM_PM25 ,ng m-3 ,1000.0*(ABEI[1]*FPM25AIT[3] + ABEJ[1]*FPM25ACC[3]) +CADMIUM_PM10 ,ng m-3 ,1000.0*(ACDI[1]*FPM10AIT[3] + ACDJ[1]*FPM10ACC[3]) +CADMIUM_PM25 ,ng m-3 ,1000.0*(ACDI[1]*FPM25AIT[3] + ACDJ[1]*FPM25ACC[3]) +CR_III_PM10 ,ng m-3 ,1000.0*(ACR_IIII[1]*FPM10AIT[3] + ACR_IIIJ[1]*FPM10ACC[3]) +CR_III_PM25 ,ng m-3 ,1000.0*(ACR_IIII[1]*FPM25AIT[3] + ACR_IIIJ[1]*FPM25ACC[3]) +CR_VI_PM10 ,ng m-3 ,1000.0*(ACR_VII[1]*FPM10AIT[3] + ACR_VIJ[1]*FPM10ACC[3]) +CR_VI_PM25 ,ng m-3 ,1000.0*(ACR_VII[1]*FPM25AIT[3] + ACR_VIJ[1]*FPM25ACC[3]) +CHROMIUM_PM10 ,ng m-3 ,CR_III_PM10[0] + CR_VI_PM10[0] +CHROMIUM_PM25 ,ng m-3 ,CR_III_PM25[0] + CR_VI_PM25[0] +LEAD_PM10 ,ng m-3 ,1000.0*(APBI[1]*FPM10AIT[3] + APBJ[1]*FPM10ACC[3]) +LEAD_PM25 ,ng m-3 ,1000.0*(APBI[1]*FPM25AIT[3] + APBJ[1]*FPM25ACC[3]) +MANGANESE_PM10 ,ng m-3 ,1000.0*(AMN_HAPSI[1]*FPM10AIT[3] + AMN_HAPSJ[1]*FPM10ACC[3]) +MANGANESE_PM25 ,ng m-3 ,1000.0*(AMN_HAPSI[1]*FPM25AIT[3] + AMN_HAPSJ[1]*FPM25ACC[3]) +NICKEL_PM10 ,ng m-3 ,1000.0*(ANII[1]*FPM10AIT[3] + ANIJ[1]*FPM10ACC[3]) +NICKEL_PM25 ,ng m-3 ,1000.0*(ANII[1]*FPM25AIT[3] + ANIJ[1]*FPM25ACC[3]) +ARSENIC_PM10 ,ng m-3 ,1000.0*(AASI[1]*FPM10AIT[3] + AASJ[1]*FPM10ACC[3]) +ARSENIC_PM25 ,ng m-3 ,1000.0*(AASI[1]*FPM25AIT[3] + AASJ[1]*FPM25ACC[3]) + +!Mercuric PM species +HG_PM10 ,ng m-3 ,1000.0*(APHGI[1]*FPM10AIT[3] + APHGJ[1]*FPM10ACC[3]) +HG_PM25 ,ng m-3 ,1000.0*(APHGI[1]*FPM25AIT[3] + APHGJ[1]*FPM25ACC[3]) + +!! FRM PM Equivalent Calculation +!! This section calculates the FRM applicable PM species, PMIJ_FRM and +!! PM25_FRM. The intermediate variablse K...ANH4IJ_loss are needed to +!! calculate the final quantities. +K ,ppb2 ,exp(118.87-24084/TEMP2[4]-6.025*log(TEMP2[4])) +P1 , ,exp(8763/TEMP2[4]+19.12*log(TEMP2[4])-135.94) +P2 , ,exp(9969/TEMP2[4]+16.22*log(TEMP2[4])-122.65) +P3 , ,exp(13875/TEMP2[4]+24.46*log(TEMP2[4])-182.61) +a , ,1-RH[0]/100 +K_prime ,ppb2 ,(P1[0]-P2[0]*a[0]+(P3[0]*a[0]*a[0]))*(a[0]^1.75)*K[0] +sqrt_Ki ,ppb ,sqrt(RH[0]<=61 ? K[0] : K_prime[0]) +max_NO3_loss ,ug m-3 ,745.7/TEMP2[4]*sqrt_Ki[0] +PM25_NO3_loss ,ug m-3 ,max_NO3_loss[0]<=PM25_NO3[0] ? max_NO3_loss[0] : PM25_NO3[0] +ANO3IJ_loss ,ug m-3 ,max_NO3_loss[0]<=ANO3IJ[0] ? max_NO3_loss[0] : ANO3IJ[0] +PM25_NH4_loss ,ug m-3 ,PM25_NO3_loss[0]*(18/62) +ANH4IJ_loss ,ug m-3 ,ANO3IJ_loss[0]*(18/62) +PMIJ_FRM ,ug m-3 ,ATOTIJ[0]-(ANO3IJ_loss[0]+ANH4IJ_loss[0]) \ + +0.24*(ASO4IJ[0]+ANH4IJ[0]-ANH4IJ_loss[0])+0.5 +PM25_FRM ,ug m-3 ,PM25_TOT[0]-(PM25_NO3_loss[0]+PM25_NH4_loss[0]) \ + +0.24*(PM25_SO4[0]+PM25_NH4[0]-PM25_NH4_loss[0])+0.5 diff --git a/CCTM/src/MECHS/cb6r5hap_ae7_aq/SpecDef_cb6r5hap_ae7_aq.txt b/CCTM/src/MECHS/cb6r5hap_ae7_aq/SpecDef_cb6r5hap_ae7_aq.txt index 4735d31e2..7fc520689 100644 --- a/CCTM/src/MECHS/cb6r5hap_ae7_aq/SpecDef_cb6r5hap_ae7_aq.txt +++ b/CCTM/src/MECHS/cb6r5hap_ae7_aq/SpecDef_cb6r5hap_ae7_aq.txt @@ -198,10 +198,10 @@ AOCIJ ,ugC m-3 ,PMF_OC[3] AOMIJ ,ug m-3 ,PMF_OA[3] !!! Anthropogenic-VOC Derived Organic Aerosol -AORGAJ ,ug m-3 ,PMF_ASOA[3] +AORGAIJ ,ug m-3 ,PMF_ASOA[3] !!! Biogenic-VOC Derived Organic Aerosol -AORGBJ ,ug m-3 ,PMF_BSOA[3] +AORGBIJ ,ug m-3 ,PMF_BSOA[3] !!! Cloud-Processed SOA AORGCJ ,ug m-3 ,AORGCJ[1] diff --git a/CCTM/src/MECHS/cb6r5m_ae7_aq/SpecDef_Conc_cb6r5m_ae7_aq.txt b/CCTM/src/MECHS/cb6r5m_ae7_aq/SpecDef_Conc_cb6r5m_ae7_aq.txt new file mode 100644 index 000000000..723d1173c --- /dev/null +++ b/CCTM/src/MECHS/cb6r5m_ae7_aq/SpecDef_Conc_cb6r5m_ae7_aq.txt @@ -0,0 +1,347 @@ +!#start YYYYJJJ 010000 +!#end YYYYJJJ 000000 +#layer 1 + +/ +! This Species Definition File is for Use with the COMBINE tool built for +! post-processing CMAQ output. It is compatible with CMAQv5.4. +! Date: May 12 2017 + +! Output variables that begin with 'PM' represent those in which a size cut was +! applied based on modeled aerosol mode parameters. For example, PM25_NA is all +! sodium that falls below 2.5 um diameter. These 'PM' variables are used for +! comparisons at IMPROVE and CSN sites. + +! Output variables that begin with 'PMAMS' represent the mass that would have +! been detected by an Aerosol Mass Spectrometer. + +! Output variables beginning with 'A' (aside from AIR_DENS) represent a +! combination of aerosol species in which no size cut was applied. For example, +! ASO4IJ is the sum of i-mode and j-mode sulfate. These 'A' variables are used +! for comparisons at CASTNet sites. + +! Output variables beginning with 'PMC' refer to the coarse fraction of total PM, +! computed by summing all modes and subtracting the PM2.5 fraction. These 'PMC' +! variables are used for comparisons at SEARCH sites. + +! This Species Definition File is just for use with the uncoupled, offline CMAQ, +! model. If you are processing WRF-CMAQ results, a different Species Definition +! file is required. + +/ File [1]: CMAQ conc/aconc file +/ File [2]: METCRO3D file +/ File [3]: ELMO/AELMO file +/ File [4]: METCRO2D file +/ +/new species ,units ,expression + +!-------------------------------------------! +!------------- Meteorology -----------------! +!-------------------------------------------! +AIR_DENS ,kg m-3 ,DENS[2] +RH ,% ,100.00*RH[3] +SFC_TMP ,C ,(TEMP2[4]-273.15) +PBLH ,m ,PBL[4] +SOL_RAD ,W m-2 ,RGRND[4] +precip ,cm ,RC[4]>=0 ? RN[4]+RC[4] : RN[4] +WSPD10 ,m s-1 ,WSPD10[4] +WDIR10 ,deg ,WDIR10[4] + +!-------------------------------------------! +!--------------- Gases ---------------------! +!-------------------------------------------! +ALD2 ,ppbV ,1000.0*ALD2[1] +BENZENE ,ppbV ,1000.0*BENZENE[1] +CO ,ppbV ,1000.0*CO[1] +ETH ,ppbV ,1000.0*ETH[1] +ETHA ,ppbV ,1000.0*ETHA[1] +FORM ,ppbV ,1000.0*FORM[1] +H2O2 ,ppbV ,1000.0*H2O2[1] +HNO3 ,ppbV ,1000.0*HNO3[1] +HNO3_UGM3 ,ug m-3 ,1000.0*(HNO3[1]*2.1756*DENS[2]) +HONO ,ppbV ,1000.0*HONO[1] +HOX ,ppbV ,1000.0*(OH[1]+HO2[1]) +OH ,ppbV ,1000.0*(OH[1]) +ISOP ,ppbV ,1000.0*ISOP[1] +N2O5 ,ppbV ,1000.0*N2O5[1] +NH3 ,ppbV ,1000.0*NH3[1] +NH3_UGM3 ,ug m-3 ,1000.0*(NH3[1]*0.5880*DENS[2]) +NHX ,ug m-3 ,1000.0*(NH3[1]*0.5880*DENS[2])+ANH4I[1]+ANH4J[1]+ANH4K[1] +NO ,ppbV ,1000.0*NO[1] +NO2 ,ppbV ,1000.0*NO2[1] +NOX ,ppbV ,1000.0*(NO[1] + NO2[1]) +ANO3_PPB ,ppbV ,(ANO3I[1]+ANO3J[1]+ANO3K[1])/(DENS[2]*(62.0/28.97)) +NTR ,ppbV ,1000.0*(NTR1[1]+NTR2[1]+INTR[1]) +PANS ,ppbV ,1000.0*(PAN[1]+PANX[1]+OPAN[1]) +NOY ,ppbV ,1000.0* (NO[1]+NO2[1]+NO3[1]+2*N2O5[1]+HONO[1]+HNO3[1]+PNA[1] \ + +CRON[1]+CLNO2[1]+CLNO3[1] \ + +BRNO2[1]+BRNO3[1]+INO[1]+INO2[1]+INO3[1]) \ + +PANS[0]+NTR[0]+ANO3_PPB[0] +O3 ,ppbV ,1000.0*O3[1] +SO2 ,ppbV ,1000.0*SO2[1] +SO2_UGM3 ,ug m-3 ,1000.0*(SO2[1]*2.2118*DENS[2]) +TERP ,ppbV ,1000.0*TERP[1] +TOL ,ppbV ,1000.0*TOL[1] +XYL ,ppbV ,1000.0*XYLMN[1] + +!Additional Toxic gases +!ACROLEIN ,ug m-3 ,1000.0*(ACROLEIN[1]*1.9365*DENS[2]) +!ACRO_PRIMARY ,ug m-3 ,1000.0*(ACRO_PRIMARY*1.9365*DENS[2]) +!ALD2_PRIMARY ,ug m-3 ,1000.0*(ALD2_PRIMARY[1]*1.5188*DENS[2]) +!FORM_PRIMARY ,ug m-3 ,1000.0*(FORM_PRIMARY[1]*1.0356*DENS[2]) +!BUTADIENE13 ,ug m-3 ,1000.0*(BUTADIENE13[1]*1.8674*DENS[2]) +!HCL ,ppbV ,1000.0*HCL[1] +!TOLUENE ,ppbV ,1000.0*TOLU[1] + +!Mercuric gas species +!HG_0 ,ng/m3 ,1000.0*(HG[1]*8.3330*DENS[2]*1000.0) +!HG_II ,ng/m3 ,1000.0*(HGIIGAS[1]*8.3330*DENS[2]*1000.0) + +!! Unused Gases. Presented Here for illustration. Users can uncomment +!! them if they choose. +!ALDX ,ppbV ,1000.0*ALDX[1] +!IOLE ,ppbV ,1000.0*IOLE[1] +!OLE ,ppbV ,1000.0*OLE[1] +!PAR ,ppbV ,1000.0*PAR[1] +!PAN ,ppbV ,1000.0*PAN[1] +!SULF ,ppbV ,1000.0*SULF[1] +! emitted VOCs +!VOC ,ppbC ,1000.0* (PAR[1] +2.0*ETHA[1] +3.0*PRPA[1] +MEOH[1]\ +! +2.0*ETH[1] +2.0*ETOH[1] +2.0*OLE[1] +3.0*ACET[1] \ +! +7.0*TOL[1] +8.0*XYLMN[1] +6.0*BENZENE[1] \ +! +FORM[1] +3.0*GLY[1] +4.0*KET[1] +2.0*ETHY[1] \ +! +2.0*ALD2[1] + 2.0*ETHA[1] + 4.0*IOLE[1] + 2.0*ALDX[1] \ +! +5.0*ISOP[1] + 10.0*TERP[1]+ 10.0*NAPH[1] +10.*APIN[1]) + +!! DMS and MSA. Users can uncomment them if they choose. +DMS ,ppbV ,1000.0*DMS[1] +MSA ,ppbV ,1000.0*MSA[1] + +!-------------------------------------------! +!--------------- Particles -----------------! +!-------------------------------------------! +!! Crustal Elements +AFEJ ,ug m-3 ,AFEJ[1] +AALJ ,ug m-3 ,AALJ[1] +ASIJ ,ug m-3 ,ASIJ[1] +ATIJ ,ug m-3 ,ATIJ[1] +ACAJ ,ug m-3 ,ACAJ[1] +AMGJ ,ug m-3 ,AMGJ[1] +AKJ ,ug m-3 ,AKJ[1] +AMNJ ,ug m-3 ,AMNJ[1] +ASOILJ ,ug m-3 ,2.20*AALJ[1]+2.49*ASIJ[1]+1.63*ACAJ[1]+2.42*AFEJ[1]+1.94*ATIJ[1] + +!! Non-Crustal Inorganic Particle Species +AHPLUSIJ ,umol m-3 ,(AH3OPI[1]+AH3OPJ[1])*1.0/19.0 +ANAK ,ug m-3 ,0.8373*ASEACAT[1]+0.0626*ASOIL[1]+0.0023*ACORS[1] +AMGK ,ug m-3 ,0.0997*ASEACAT[1]+0.0170*ASOIL[1]+0.0032*ACORS[1] +AKK ,ug m-3 ,0.0310*ASEACAT[1]+0.0242*ASOIL[1]+0.0176*ACORS[1] +ACAK ,ug m-3 ,0.0320*ASEACAT[1]+0.0838*ASOIL[1]+0.0562*ACORS[1] +ACLIJ ,ug m-3 ,ACLI[1]+ACLJ[1] +AECIJ ,ug m-3 ,AECI[1]+AECJ[1] +ANAIJ ,ug m-3 ,ANAJ[1]+ANAI[1] +ANO3IJ ,ug m-3 ,ANO3I[1]+ANO3J[1] +ANO3K ,ug m-3 ,ANO3K[1] +TNO3 ,ug m-3 ,2175.6*(HNO3[1]*DENS[2])+ANO3I[1]+ANO3J[1]+ANO3K[1] +ANH4IJ ,ug m-3 ,ANH4I[1]+ANH4J[1] +ANH4K ,ug m-3 ,ANH4K[1] +ASO4IJ ,ug m-3 ,ASO4I[1]+ASO4J[1] +ASO4K ,ug m-3 ,ASO4K[1] + +!! Organic Particle Species +APOCI ,ugC m-3 ,ALVPO1I[1]/1.39 + ASVPO1I[1]/1.32 + ASVPO2I[1]/1.26 \ + +APOCI[1] +APOCJ ,ugC m-3 ,ALVPO1J[1]/1.39 + ASVPO1J[1]/1.32 + ASVPO2J[1]/1.26 \ + +ASVPO3J[1]/1.21 + AIVPO1J[1]/1.17 + APOCJ[1] +APOCIJ ,ugC m-3 ,APOCI[0] + APOCJ[0] + +APOMI ,ug m-3 ,ALVPO1I[1] + ASVPO1I[1] + ASVPO2I[1] + APOCI[1] \ + +APNCOMI[1] +APOMJ ,ug m-3 ,ALVPO1J[1] + ASVPO1J[1] + ASVPO2J[1] + APOCJ[1] \ + +ASVPO3J[1] + AIVPO1J[1] + APNCOMJ[1] +APOMIJ ,ug m-3 ,APOMI[0] + APOMJ[0] + +ASOCI ,ugC m-3 ,ALVOO1I[1]/2.27 + ALVOO2I[1]/2.06 \ + +ASVOO1I[1]/1.88 + ASVOO2I[1]/1.73 +ASOCJ ,ugC m-3 ,AISO1J[1]/2.20 + AISO2J[1]/2.23 + AISO3J[1]/2.80 \ + +AMT1J[1]/1.67 + AMT2J[1]/1.67 + AMT3J[1]/1.72 \ + +AMT4J[1]/1.53 + AMT5J[1]/1.57 + AMT6J[1]/1.40 \ + +AMTNO3J[1]/1.90 + AMTHYDJ[1]/1.54 \ + +AGLYJ[1]/2.13 + ASQTJ[1]/1.52 \ + +AORGCJ[1]/2.00 + AOLGBJ[1]/2.10 + AOLGAJ[1]/2.50 \ + +ALVOO1J[1]/2.27 + ALVOO2J[1]/2.06 + ASVOO1J[1]/1.88 \ + +ASVOO2J[1]/1.73 + ASVOO3J[1]/1.60 \ + +AAVB1J[1]/2.70 + AAVB2J[1]/2.35 + AAVB3J[1]/2.17 \ + +AAVB4J[1]/1.99 + APCSOJ[1]/2.00 +ASOCIJ ,ugC m-3 ,ASOCI[0] + ASOCJ[0] + +ASOMI ,ug m-3 ,ALVOO1I[1] + ALVOO2I[1] + ASVOO1I[1] + ASVOO2I[1] +ASOMJ ,ug m-3 ,+AISO1J[1]+ AISO2J[1] + AISO3J[1] \ + +AMT1J[1] + AMT2J[1] + AMT3J[1] \ + +AMT4J[1] + AMT5J[1] + AMT6J[1] \ + +AMTNO3J[1] + AMTHYDJ[1] \ + +AGLYJ[1] + ASQTJ[1] \ + +AORGCJ[1] + AOLGBJ[1] + AOLGAJ[1] \ + +ALVOO1J[1] + ALVOO2J[1] + ASVOO1J[1] \ + +ASVOO2J[1] + ASVOO3J[1] + APCSOJ[1] \ + +AAVB1J[1] + AAVB2J[1] + AAVB3J[1] \ + +AAVB4J[1] +ASOMIJ ,ug m-3 ,ASOMI[0] + ASOMJ[0] + +AOCI ,ugC m-3 ,APOCI[0] + ASOCI[0] +AOCJ ,ugC m-3 ,APOCJ[0] + ASOCJ[0] + +AOCIJ ,ugC m-3 ,APOCIJ[0] + ASOCIJ[0] + + +AOMI ,ug m-3 ,APOMI[0] + ASOMI[0] +AOMJ ,ug m-3 ,APOMJ[0] + ASOMJ[0] + +AOMIJ ,ug m-3 ,APOMIJ[0] + ASOMIJ[0] + +!!! Anthropogenic-VOC Derived Organic Aerosol +AORGAI ,ug m-3 ,ALVOO1I[1] + ALVOO2I[1] + ASVOO1I[1] \ + +ASVOO2I[1] +AORGAJ ,ug m-3 ,ALVOO1J[1] + ALVOO2J[1] \ + +ASVOO1J[1] + ASVOO2J[1] + ASVOO3J[1] \ + +AAVB1J[1] + AAVB2J[1] + AAVB3J[1] \ + +AAVB4J[1] + AOLGAJ[1] + APCSOJ[1] +AORGAIJ ,ug m-3 ,AORGAI[0] + AORGAJ[0] + +!!! Biogenic-VOC Derived Organic Aerosol +AORGBIJ ,ug m-3 ,AMT1J[1] + AMT2J[1] + AMT3J[1] + AMT4J[1] \ + +AMT5J[1] + AMT6J[1] + AMTNO3J[1] \ + +AMTHYDJ[1] + AISO1J[1] + AISO2J[1] \ + +AISO3J[1] + ASQTJ[1] + AOLGBJ[1] + +!!! Cloud-Processed SOA +AORGCJ ,ug m-3 ,AORGCJ[1] +!!! Remaining SOA +AGLYJ ,ug m-3 ,AGLYJ[1] + +!!! OM/OC ratios +AOMOCRAT_TOT , ,AOMIJ[0]/AOCIJ[0] + +!! Total PM Aggregates +ATOTI ,ug m-3 ,ASO4I[1] + ANH4I[1] + ANO3I[1] + ANAI[1] \ + +ACLI[1] + AECI[1] + AOMI[0] + AOTHRI[1] +ATOTJ ,ug m-3 ,ASO4J[1] + ANH4J[1] + ANO3J[1] + ANAJ[1] \ + +ACLJ[1] + AECJ[1] + AOMJ[0] + AOTHRJ[1] \ + +AFEJ[1] + AALJ[1] + ASIJ[1] + ATIJ[1] \ + +ACAJ[1] + AMGJ[1] + AKJ[1] + AMNJ[1] + +ATOTK ,ug m-3 ,ASO4K[1] + ANH4K[1] + ANO3K[1] + ACLK[1] \ + +ACORS[1] + ASOIL[1] + ASEACAT[1] +ATOTIJ ,ug m-3 ,ATOTI[0] + ATOTJ[0] +ATOTIJK ,ug m-3 ,ATOTI[0] + ATOTJ[0] + ATOTK[0] + +!! Unspeciated PM including non-carbon organic mass +AUNSPEC1IJ ,ug m-3 ,ATOTIJ[0] - (ASO4IJ[0] + ANO3IJ[0] \ + +ANH4IJ[0] + ACLIJ[0] \ + +ANAIJ[0] + AECIJ[0] \ + +AOCIJ[0] + ASOILJ[0]) +!! Non-Carbon Organic Mass +ANCOMIJ ,ug m-3 ,AOMIJ[0] - AOCIJ[0] + +!! Unspeciated PM excluding non-carbon organic mass +AUNSPEC2IJ ,ug m-3 ,AUNSPEC1IJ[0] - ANCOMIJ[0] + +!! AMS Projection of Output Concentrations +PMAMS_CL ,ug m-3 ,ACLI[1] *FAMSAIT[3] +ACLJ[1]*FAMSACC[3]+ACLK[1] *FAMSCOR[3] +PMAMS_NH4 ,ug m-3 ,ANH4I[1]*FAMSAIT[3]+ANH4J[1]*FAMSACC[3]+ANH4K[1]*FAMSCOR[3] +PMAMS_NO3 ,ug m-3 ,ANO3I[1]*FAMSAIT[3]+ANO3J[1]*FAMSACC[3]+ANO3K[1]*FAMSCOR[3] +PMAMS_OA ,ug m-3 ,AOMI[0] *FAMSAIT[3]+AOMJ[0] *FAMSACC[3] +PMAMS_SO4 ,ug m-3 ,ASO4I[1]*FAMSAIT[3]+ASO4J[1]*FAMSACC[3]+ASO4K[1]*FAMSCOR[3] + +!! PM1 Cutoff Output +PM1_TOT ,ug m-3 ,ATOTI[0]*FPM1AIT[3]+ATOTJ[0]*FPM1ACC[3]+ATOTK[0]*FPM1COR[3] + +!! Unused PM1 Species. Included Here for demonstration +!PM1_EC ,ug m-3 ,AECI[1] *FPM1AIT[3] +AECJ[1] *FPM1ACC[3] +!PM1_OC ,ugC m-3 ,AOCI[0] *FPM1AIT[3] +AOCJ[0] *FPM1ACC[3] +!PM1_OM ,ug m-3 ,AOMI[0] *FPM1AIT[3] +AOMJ[0] *FPM1ACC[3] +!PM1_SO4 ,ug m-3 ,ASO4I[1]*FPM1AIT[3] +ASO4J[1]*FPM1ACC[3] +ASO4K[1]*FPM1COR[3] +!PM1_CL ,ug m-3 ,ACLI[1] *FPM1AIT[3] +ACLJ[1] *FPM1ACC[3] +ACLK[1] *FPM1COR[3] +!PM1_NA ,ug m-3 ,ANAI[1] *FPM1AIT[3] +ANAJ[1] *FPM1ACC[3] +ANAK[0] *FPM1COR[3] +!PM1_MG ,ug m-3 , AMGJ[1] *FPM1ACC[3] +AMGK[0] *FPM1COR[3] +!PM1_K ,ug m-3 , AKJ[1] *FPM1ACC[3] +AKK[0] *FPM1COR[3] +!PM1_CA ,ug m-3 , ACAJ[1] *FPM1ACC[3] +ACAK[0] *FPM1COR[3] +!PM1_NH4 ,ug m-3 ,ANH4I[1] *FPM1AIT[3]+ANH4J[1]*FPM1ACC[3] +ANH4K[1]*FPM1COR[3] +!PM1_NO3 ,ug m-3 ,ANO3I[1] *FPM1AIT[3]+ANO3J[1]*FPM1ACC[3] +ANO3K[1]*FPM1COR[3] +!PM1_SOIL ,ug m-3 ,ASOILJ[0]*FPM1ACC[3]+(ASOIL[1]+ACORS[1])*FPM1COR[3] +!PM1_UNSPEC1 ,ug m-3 ,PM1_TOT[0] - (PM1_CL[0] + PM1_EC[0]+ PM1_NA[0] + PM1_NH4[0] + \ +! PM1_NO3[0]+ PM1_OC[0]+ PM1_SOIL[0]+ PM1_SO4[0] ) +!PM1_UNSPCRS ,ug m-3 ,ATOTK[0] *FPM1COR[3] - (ASO4K[1]*FPM1COR[3] \ +! +ACLK[1]*FPM1COR[3] \ +! +ANAK[0]*FPM1COR[3] \ +! +AMGK[0]*FPM1COR[3] \ +! +AKK[0]*FPM1COR[3] \ +! +ACAK[0]*FPM1COR[3] \ +! +ANH4K[1]*FPM1COR[3] \ +! +ANO3K[1]*FPM1COR[3]) + +!! PM2.5 species computed using modeled size distribution +PM25_HP ,ug m-3 ,(AH3OPI[1]*FPM25AIT[3]+AH3OPJ[1]*FPM25ACC[3]+AH3OPK[1]*FPM25COR[3])*1.0/19.0 +PM25_CL ,ug m-3 ,ACLI[1]*FPM25AIT[3]+ACLJ[1]*FPM25ACC[3]+ACLK[1]*FPM25COR[3] +PM25_EC ,ug m-3 ,AECI[1]*FPM25AIT[3]+AECJ[1]*FPM25ACC[3] +PM25_NA ,ug m-3 ,ANAI[1]*FPM25AIT[3]+ANAJ[1]*FPM25ACC[3]+ANAK[0]*FPM25COR[3] +PM25_MG ,ug m-3 , AMGJ[1]*FPM25ACC[3]+AMGK[0]*FPM25COR[3] +PM25_K ,ug m-3 , AKJ[1] *FPM25ACC[3]+AKK[0] *FPM25COR[3] +PM25_CA ,ug m-3 , ACAJ[1]*FPM25ACC[3]+ACAK[0]*FPM25COR[3] +PM25_NH4 ,ug m-3 ,ANH4I[1]*FPM25AIT[3]+ANH4J[1]*FPM25ACC[3]+ANH4K[1]*FPM25COR[3] +PM25_NO3 ,ug m-3 ,ANO3I[1]*FPM25AIT[3]+ANO3J[1]*FPM25ACC[3]+ANO3K[1]*FPM25COR[3] +PM25_OC ,ugC m-3 ,AOCI[0] *FPM25AIT[3]+AOCJ[0]*FPM25ACC[3] +PM25_OM ,ug m-3 ,AOMI[0] *FPM25AIT[3]+AOMJ[0]*FPM25ACC[3] +PM25_SOIL ,ug m-3 ,ASOILJ[0]*FPM25ACC[3]+ASOIL[1]*FPM25COR[3] +PM25_SO4 ,ug m-3 ,ASO4I[1]*FPM25AIT[3]+ASO4J[1]*FPM25ACC[3]+ASO4K[1]*FPM25COR[3] +PM25_TOT ,ug m-3 ,ATOTI[0]*FPM25AIT[3]+ATOTJ[0]*FPM25ACC[3]+ATOTK[0]*FPM25COR[3] +PM25_UNSPEC1 ,ug m-3 ,PM25_TOT[0]-(PM25_CL[0]+PM25_EC[0]+PM25_NA[0]+PM25_NH4[0] \ + +PM25_NO3[0]+PM25_OC[0]+PM25_SOIL[0]+PM25_SO4[0]) +PM25_UNSPCRS ,ug m-3 ,ATOTK[0]*FPM25COR[3] - (ASO4K[1]*FPM25COR[3] \ + +ACLK[1]*FPM25COR[3] \ + +ANAK[0]*FPM25COR[3] \ + +AMGK[0]*FPM25COR[3] \ + +AKK[0]*FPM25COR[3] \ + +ACAK[0]*FPM25COR[3] \ + +ANH4K[1]*FPM25COR[3] \ + +ANO3K[1]*FPM25COR[3]) + + +!! Fine particle acidity (pH). pH is undefined if there is no aerosol water. +!Do not trust predictions when hourly water is <0.01 ug m-3. FINEPHF will +!have large negative value (-9.999E36) when pH is not to be trusted. +!AH2OIJ ,ug m-3 ,AH2OI[1]+AH2OJ[1] +!HPMOLAL ,mol kg-1 ,AHPLUSIJ[0]/AH2OIJ[0]*1000.0 +!ACIDITYTEMP , ,-1*LOG10(HPMOLAL[0]) +!FINEPHF , ,AH2OIJ[0]>0.01 ? ACIDITYTEMP[0] : -9.999E36 + +!! PM10.0 and Coarse-Sized Species +PM10 ,ug m-3 ,ATOTI[0]*FPM10AIT[3]+ATOTJ[0]*FPM10ACC[3]+ATOTK[0]*FPM10COR[3] + +PMC_CL ,ug m-3 ,ACLI[1]*FPM10AIT[3] +ACLJ[1]*FPM10ACC[3] +ACLK[1]*FPM10COR[3] -PM25_CL[0] +PMC_NA ,ug m-3 ,ANAI[1]*FPM10AIT[3] +ANAJ[1]*FPM10ACC[3] +ANAK[0]*FPM10COR[3] -PM25_NA[0] +PMC_NH4 ,ug m-3 ,ANH4I[1]*FPM10AIT[3]+ANH4J[1]*FPM10ACC[3]+ANH4K[1]*FPM10COR[3]-PM25_NH4[0] +PMC_NO3 ,ug m-3 ,ANO3I[1]*FPM10AIT[3]+ANO3J[1]*FPM10ACC[3]+ANO3K[1]*FPM10COR[3]-PM25_NO3[0] +PMC_SO4 ,ug m-3 ,ASO4I[1]*FPM10AIT[3]+ASO4J[1]*FPM10ACC[3]+ASO4K[1]*FPM10COR[3]-PM25_SO4[0] +PMC_TOT ,ug m-3 ,PM10[0]-PM25_TOT[0] + +!! FRM PM Equivalent Calculation +!! This section calculates the FRM applicable PM species, PMIJ_FRM and +!! PM25_FRM. The intermediate variablse K...ANH4IJ_loss are needed to +!! calculate the final quantities. +K ,ppb2 ,exp(118.87-24084/TEMP2[4]-6.025*log(TEMP2[4])) +P1 , ,exp(8763/TEMP2[4]+19.12*log(TEMP2[4])-135.94) +P2 , ,exp(9969/TEMP2[4]+16.22*log(TEMP2[4])-122.65) +P3 , ,exp(13875/TEMP2[4]+24.46*log(TEMP2[4])-182.61) +a , ,1-RH[0]/100 +K_prime ,ppb2 ,(P1[0]-P2[0]*a[0]+(P3[0]*a[0]*a[0]))*(a[0]^1.75)*K[0] +sqrt_Ki ,ppb ,sqrt(RH[0]<=61 ? K[0] : K_prime[0]) +max_NO3_loss ,ug m-3 ,745.7/TEMP2[4]*sqrt_Ki[0] +PM25_NO3_loss ,ug m-3 ,max_NO3_loss[0]<=PM25_NO3[0] ? max_NO3_loss[0] : PM25_NO3[0] +ANO3IJ_loss ,ug m-3 ,max_NO3_loss[0]<=ANO3IJ[0] ? max_NO3_loss[0] : ANO3IJ[0] +PM25_NH4_loss ,ug m-3 ,PM25_NO3_loss[0]*(18/62) +ANH4IJ_loss ,ug m-3 ,ANO3IJ_loss[0]*(18/62) +PMIJ_FRM ,ug m-3 ,ATOTIJ[0]-(ANO3IJ_loss[0]+ANH4IJ_loss[0]) \ + +0.24*(ASO4IJ[0]+ANH4IJ[0]-ANH4IJ_loss[0])+0.5 +PM25_FRM ,ug m-3 ,PM25_TOT[0]-(PM25_NO3_loss[0]+PM25_NH4_loss[0]) \ + +0.24*(PM25_SO4[0]+PM25_NH4[0]-PM25_NH4_loss[0])+0.5 diff --git a/CCTM/src/MECHS/cb6r5m_ae7_aq/SpecDef_cb6r5m_ae7_aq.txt b/CCTM/src/MECHS/cb6r5m_ae7_aq/SpecDef_cb6r5m_ae7_aq.txt index c6bbe5915..e5a9c07b1 100644 --- a/CCTM/src/MECHS/cb6r5m_ae7_aq/SpecDef_cb6r5m_ae7_aq.txt +++ b/CCTM/src/MECHS/cb6r5m_ae7_aq/SpecDef_cb6r5m_ae7_aq.txt @@ -113,7 +113,9 @@ XYL ,ppbV ,1000.0*XYLMN[1] ! +2.0*ALD2[1] + 2.0*ETHA[1] + 4.0*IOLE[1] + 2.0*ALDX[1] \ ! +5.0*ISOP[1] + 10.0*TERP[1]+ 10.0*NAPH[1] +10.*APIN[1]) - +!! DMS and MSA. Users can uncomment them if they choose. +DMS ,ppbV ,1000.0*DMS[1] +MSA ,ppbV ,1000.0*MSA[1] !-------------------------------------------! !--------------- Particles -----------------! @@ -155,10 +157,10 @@ AOCIJ ,ugC m-3 ,PMF_OC[3] AOMIJ ,ug m-3 ,PMF_OA[3] !!! Anthropogenic-VOC Derived Organic Aerosol -AORGAJ ,ug m-3 ,PMF_ASOA[3] +AORGAIJ ,ug m-3 ,PMF_ASOA[3] !!! Biogenic-VOC Derived Organic Aerosol -AORGBJ ,ug m-3 ,PMF_BSOA[3] +AORGBIJ ,ug m-3 ,PMF_BSOA[3] !!! Cloud-Processed SOA AORGCJ ,ug m-3 ,AORGCJ[1] diff --git a/CCTM/src/MECHS/cracmm1_aq/SpecDef_Conc_cracmm1_aq.txt b/CCTM/src/MECHS/cracmm1_aq/SpecDef_Conc_cracmm1_aq.txt new file mode 100644 index 000000000..2de5447e1 --- /dev/null +++ b/CCTM/src/MECHS/cracmm1_aq/SpecDef_Conc_cracmm1_aq.txt @@ -0,0 +1,382 @@ +!#start YYYYJJJ 010000 +!#end YYYYJJJ 000000 +#layer 1 + +/ +! This Species Definition File is for Use with the COMBINE tool built for +! post-processing CMAQ output. It is compatible with CMAQv5.2. +! Date: May 12 2017 + +! Output variables that begin with 'PM' represent those in which a size cut was +! applied based on modeled aerosol mode parameters. For example, PM25_NA is all +! sodium that falls below 2.5 um diameter. These 'PM' variables are used for +! comparisons at IMPROVE and CSN sites. + +! Output variables that begin with 'PMAMS' represent the mass that would have +! been detected by an Aerosol Mass Spectrometer. + +! Output variables beginning with 'A' (aside from AIR_DENS) represent a +! combination of aerosol species in which no size cut was applied. For example, +! ASO4IJ is the sum of i-mode and j-mode sulfate. These 'A' variables are used +! for comparisons at CASTNet sites. + +! Output variables beginning with 'PMC' refer to the coarse fraction of total PM, +! computed by summing all modes and subtracting the PM2.5 fraction. These 'PMC' +! variables are used for comparisons at SEARCH sites. + +! This Species Definition File is just for use with the uncoupled, offline CMAQ, +! model. If you are processing WRF-CMAQ results, a different Species Definition +! file is required. + +/ File [1]: CMAQ conc/aconc file +/ File [2]: METCRO3D file +/ File [3]: ELMO/AELMO file +/ File [4]: METCRO2D file +/ +/new species ,units ,expression + +!-------------------------------------------! +!------------- Meteorology -----------------! +!-------------------------------------------! +AIR_DENS ,kg m-3 ,DENS[2] +RH ,% ,100.00*RH[3] +SFC_TMP ,C ,(TEMP2[4]-273.15) +PBLH ,m ,PBL[4] +SOL_RAD ,W m-2 ,RGRND[4] +precip ,cm ,RC[4]>=0 ? RN[4]+RC[4] : RN[4] +WSPD10 ,m s-1 ,WSPD10[4] +WDIR10 ,deg ,WDIR10[4] + +!-------------------------------------------! +!--------------- Gases ---------------------! +!-------------------------------------------! +CO ,ppbV ,1000.0*CO[1] +H2O2 ,ppbV ,1000.0*H2O2[1] +HNO3 ,ppbV ,1000.0*HNO3[1] +HNO3_UGM3 ,ug m-3 ,1000.0*(HNO3[1]*2.1756*DENS[2]) +HONO ,ppbV ,1000.0*HONO[1] +HOX ,ppbV ,1000.0*(HO[1]+HO2[1]) +OH ,ppbV ,1000.0*HO[1] +N2O5 ,ppbV ,1000.0*N2O5[1] +NH3 ,ppbV ,1000.0*NH3[1] +NH3_UGM3 ,ug m-3 ,1000.0*(NH3[1]*0.5880*DENS[2]) +NHX ,ug m-3 ,1000.0*(NH3[1]*0.5880*DENS[2])+ANH4I[1]+ANH4J[1]+ANH4K[1] +NO ,ppbV ,1000.0*NO[1] +NO2 ,ppbV ,1000.0*NO2[1] +NOX ,ppbV ,1000.0*(NO[1] + NO2[1]) +ANO3_PPB ,ppbV ,(ANO3I[1]+ANO3J[1]+ANO3K[1])/(DENS[2]*(62.0/28.97)) +NTR ,ppbV ,1000.0*(ONIT[1]+ISON[1]+TRPN[1]+NALD[1]), organic nitrates in RACM2 +PANS ,ppbV ,1000.0*(PAN[1]+PPN[1]+MPAN[1]) +NOY ,ppbV ,1000.0*(NO[1]+NO2[1]+NO3[1]+2*N2O5[1]+HONO[1] \ + +HNO3[1]+HNO4[1]+PAN[1]+PPN[1]+MPAN[1] \ + +ISON[1]+TRPN[1]+ONIT[1]+NALD[1])+ANO3_PPB[0] +O3 ,ppbV ,1000.0*O3[1] +SO2 ,ppbV ,1000.0*SO2[1] +SO2_UGM3 ,ug m-3 ,1000.0*(SO2[1]*2.2118*DENS[2]) +TERP ,ppbV ,1000.0*(API[1]+LIM[1]), a-pinene and limonene monoterpenes in RACM2 + +! Deprecate these names in future +ETH ,ppbV ,1000.0*ETE[1], ethene is ETE in RACM2 +ETHA ,ppbV ,1000.0*ETH[1], ethane is ETH in RACM2 +ALD2 ,ppbV ,1000.0*ACD[1], acetaldehyde is ACD in RACM2 +FORM ,ppbV ,1000.0*HCHO[1], formaldehyde is HCHO RACM2 +ISOP ,ppbV ,1000.0*ISO[1], isoprene is ISO in RACM2 +TOL ,ppbV ,1000.0*TOL[1] + +! Hydrocarbons for evaluation. Note an "s" on the end indicates a collection of species from AQS +ACETALDEHYDE ,ppbV ,1000.0*ACD[1] +ACETYLENE ,ppbV ,1000.0*ACE[1] +ACROLEIN ,ppbV ,1000.0*ACRO[1] +ACETONE ,ppbV ,1000.0*ACT[1] +BUTADIENE13 ,ppbV ,1000.0*BDE13[1] +BENZENE ,ppbV ,1000.0*BEN[1] +ETHYLENE ,ppbV ,1000.0*ETE[1], ethene is ETE in RACM2 +ETHANE ,ppbV ,1000.0*ETH[1], ethane is ETH in RACM2 +ISOPRENE ,ppbV ,1000.0*ISO[1], isoprene is ISO in RACM2 +FORMALDEHYDE ,ppbV ,1000.0*HCHO[1], formaldehyde is HCHO RACM2 +MEKETONE ,ppbV ,1000.0*MEK[1] +TOLUENE ,ppbV ,1000.0*TOL[1] +XYLENES ,ppbV ,1000.0*(XYE[1]+XYM[1]) +HCPROPANES ,ppbV ,1000.0*(HC3[1]) +HCPENTANES ,ppbV ,1000.0*(HC5[1]) +HCDECANES ,ppbV ,1000.0*(HC10[1]), formerly HC8 +OLEFINS ,ppbV ,1000.0*(OLI[1]+OLT[1]) +ABPINENES ,ppbV ,1000.0*(API[1]) + +!! Unused Gases. Presented Here for illustration. Users can uncomment +!! them if they choose. +ALDX ,ppbV ,1000.0*ALD[1], C3 and higher aldehydes is ALD in RACM2 +!NOZ ,ppbV ,NOY[0]-NOX[0] +!SULF ,ppbV ,1000.0*SULF[1] +! SIGROC: S/IVOC alk and oxy gas species +LSIVROC ,ppbC ,1000.0* (9.5*VROCIOXY[1] \ + +14.0*VROCP5ARO[1]+13.0*VROCP6ARO[1] \ + +30.0*VROCN2ALK[1]+29.0*VROCN1ALK[1] \ + +28.0*VROCP0ALK[1]+27.0*VROCP1ALK[1] \ + +24.0*VROCP2ALK[1]+21.0*VROCP3ALK[1] \ + +18.0*VROCP4ALK[1]+14.0*VROCP5ALK[1] \ + +13.0*VROCP6ALK[1]\ + +17.0*VROCN2OXY2[1]+11.0*VROCN2OXY4[1] \ + +7.0*VROCN2OXY8[1]+20.0*VROCN1OXY1[1] \ + +12.0*VROCN1OXY3[1]+8.0*VROCN1OXY6[1] \ + +14.0*VROCP0OXY2[1]+10.0*VROCP0OXY4[1] \ + +17.0*VROCP1OXY1[1]+11.0*VROCP1OXY3[1] \ + +12.0*VROCP2OXY2[1]+11.0*VROCP3OXY2[1] \ + +9.0*VROCP4OXY2[1]+11.0*VROCP5OXY1[1] \ + +9.0*VROCP6OXY1[1] ), +! VROC: Total gas-phase (vapor) reactive organic carbon (stable species only) +VROC ,ppbC ,1000.0*(2.0*ACD[1]+2.0*ACE[1] \ + +3.0*ACRO[1]+3.0*ACT[1]+3.0*ALD[1]+10*API[1] \ + +7.0*BALD[1]+4.0*BDE13[1]+6.0*BEN[1] \ + +9.0*CSL[1]+5.0*DCB1[1]+6.0*DCB2[1]+4.0*DCB3[1] \ + +20.0*ELHOM[1] \ + +2.0*EOH[1]+2.0*ETE[1]+2.0*ETEG[1]+2.0*ETH[1] \ + +5.0*FURAN[1]+4.0*FURANONE[1]+2.0*GLY[1]+10.0*HOM[1] \ + +3.0*HC3[1]+5.0*HC5[1]+10.0*HC10[1] \ + +1.0*HCHO[1]+3.0*HKET[1] \ + +5.0*IEPOX[1]+5.0*ISHP[1]+5.0*ISO[1]+5.0*KET[1] \ + +10.0*LIM[1]+10.0*LIMAL[1]+4.0*MACR[1]+4*MAHP[1] \ + +7.0*MCT[1] \ + +4.0*MEK[1]+3.0*MGLY[1]+1.0*MOH[1]+4.0*MVK[1] \ + +10.0*NAPH[1]+5.0*OLI[1]+3.0*OLT[1] \ + +1.0*OP1[1]+2.0*OP2[1]+8.0*OP3[1]+10.0*OPB[1] \ + +1.0*ORA1[1]+2.0*ORA2[1] \ + +10.0*PINAL[1] \ + +6.0*PHEN[1]+3.0*PROG[1] \ + +3.0*ROH[1]+15.0*SESQ[1]+2.1*SLOWROC[1] \ + +7.0*TOL[1]+5.0*UALD[1] \ + +8.0*XYM[1]+8.0*XYE[1] \ + +2.0*PAA[1]+2.0*PAN[1]+3.0*PPN[1]+4.0*MPAN[1] \ + +4.0*ONIT[1]+2.0*NALD[1]+5.0*ISON[1]+10.0*TRPN[1] ) \ + +LSIVROC[0] , + +!-------------------------------------------! +!--------------- Particles -----------------! +!-------------------------------------------! +!! Crustal Elements +AFEJ ,ug m-3 ,AFEJ[1] +AALJ ,ug m-3 ,AALJ[1] +ASIJ ,ug m-3 ,ASIJ[1] +ATIJ ,ug m-3 ,ATIJ[1] +ACAJ ,ug m-3 ,ACAJ[1] +AMGJ ,ug m-3 ,AMGJ[1] +AKJ ,ug m-3 ,AKJ[1] +AMNJ ,ug m-3 ,AMNJ[1] +ASOILJ ,ug m-3 ,2.20*AALJ[1]+2.49*ASIJ[1]+1.63*ACAJ[1]+2.42*AFEJ[1]+1.94*ATIJ[1] + +!! Non-Crustal Inorganic Particle Species +AHPLUSIJ ,umol m-3 ,(AH3OPI[1]+AH3OPJ[1])*1.0/19.0 +ANAK ,ug m-3 ,0.8373*ASEACAT[1]+0.0626*ASOIL[1]+0.0023*ACORS[1] +AMGK ,ug m-3 ,0.0997*ASEACAT[1]+0.0170*ASOIL[1]+0.0032*ACORS[1] +AKK ,ug m-3 ,0.0310*ASEACAT[1]+0.0242*ASOIL[1]+0.0176*ACORS[1] +ACAK ,ug m-3 ,0.0320*ASEACAT[1]+0.0838*ASOIL[1]+0.0562*ACORS[1] +ACLIJ ,ug m-3 ,ACLI[1]+ACLJ[1] +AECIJ ,ug m-3 ,AECI[1]+AECJ[1] +ANAIJ ,ug m-3 ,ANAJ[1]+ANAI[1] +ANO3IJ ,ug m-3 ,ANO3I[1]+ANO3J[1] +ANO3K ,ug m-3 ,ANO3K[1] +TNO3 ,ug m-3 ,2175.6*(HNO3[1]*DENS[2])+ANO3I[1]+ANO3J[1]+ANO3K[1] +ANH4IJ ,ug m-3 ,ANH4I[1]+ANH4J[1] +ANH4K ,ug m-3 ,ANH4K[1] +ASO4IJ ,ug m-3 ,ASO4I[1]+ASO4J[1] +ASO4K ,ug m-3 ,ASO4K[1] + +!! Organic Particle Species +! Why is there an APOCI and APOCJ in the output? It doesn't match below +APOCI ,ugC m-3, AROCN2ALKI[1]/1.39 + AROCN1ALKI[1]/1.32 \ + + AROCP0ALKI[1]/1.17 + AROCP1ALKI[1]/1.17 +APOCJ ,ugC m-3, AROCN2ALKJ[1]/1.39 + AROCN1ALKJ[1]/1.32 \ + + AROCP0ALKJ[1]/1.17 + AROCP1ALKJ[1]/1.17 \ + + AROCP2ALKJ[1]/1.17 + AROCP3ALKJ[1]/1.17 +APOCIJ ,ugC m-3, APOCI[0] + APOCJ[0] + +APOMI ,ug m-3, AROCN2ALKI[1] + AROCN1ALKI[1] \ + + AROCP0ALKI[1] + AROCP1ALKI[1] + APNCOMI[1] +APOMJ ,ug m-3, AROCN2ALKJ[1] + AROCN1ALKJ[1] + AROCP0ALKJ[1] \ + + AROCP1ALKJ[1] + AROCP2ALKJ[1] + AROCP3ALKJ[1] + APNCOMJ[1] +APOMIJ ,ug m-3, APOMI[0] + APOMJ[0] +ASOCI ,ugC m-3, AROCN2OXY2I[1]/1.42 + AROCN2OXY4I[1]/1.67 \ + + AROCN2OXY8I[1]/2.17 + AROCN1OXY1I[1]/1.29 \ + + AROCN1OXY3I[1]/1.54 + AROCN1OXY6I[1]/1.92 \ + + AROCP0OXY2I[1]/1.42 + AROCP0OXY4I[1]/1.67 \ + + AROCP1OXY1I[1]/1.29 + AROCP1OXY3I[1]/1.54 +ASOCJ ,ugC m-3, AHOMJ[1]/2.08 + AELHOMJ[1]/1.67 + AISO3NOSJ[1]/2.27 \ + + AISO3OSJ[1]/3.6 + AGLYJ[1]/2.13 + AORGCJ[1]/2 \ + + AOP3J[1]/1.92 + ASOATJ[1]/2.31 + AROCN2OXY2J[1]/1.42 \ + + AROCN2OXY4J[1]/1.67 + AROCN2OXY8J[1]/2.17 + AROCN1OXY1J[1]/1.29 \ + + AROCN1OXY3J[1]/1.54 + AROCN1OXY6J[1]/1.92 + AROCP0OXY2J[1]/1.42 \ + + AROCP0OXY4J[1]/1.67 + AROCP1OXY1J[1]/1.29 + AROCP1OXY3J[1]/1.54 \ + + AROCP2OXY2J[1]/1.42 + AROCP3OXY2J[1]/1.42 +ASOCIJ ,ugC m-3, ASOCI[0] + ASOCJ[0] + +ASOMI ,ug m-3, AROCN2OXY2I[1] + AROCN2OXY4I[1] \ + + AROCN2OXY8I[1] + AROCN1OXY1I[1] \ + + AROCN1OXY3I[1] + AROCN1OXY6I[1] \ + + AROCP0OXY2I[1] + AROCP0OXY4I[1] \ + + AROCP1OXY1I[1] + AROCP1OXY3I[1] +ASOMJ ,ug m-3, AHOMJ[1] + AELHOMJ[1] + AISO3NOSJ[1] \ + + AISO3OSJ[1] + AGLYJ[1] + AORGCJ[1] \ + + AOP3J[1] + ASOATJ[1] + AROCN2OXY2J[1] \ + + AROCN2OXY4J[1] + AROCN2OXY8J[1] + AROCN1OXY1J[1] \ + + AROCN1OXY3J[1] + AROCN1OXY6J[1] + AROCP0OXY2J[1] \ + + AROCP0OXY4J[1] + AROCP1OXY1J[1] + AROCP1OXY3J[1] \ + + AROCP2OXY2J[1] + AROCP3OXY2J[1] + +ASOMIJ ,ug m-3 ,ASOMI[0] + ASOMJ[0] + +AOCI ,ugC m-3 ,APOCI[0] + ASOCI[0] +AOCJ ,ugC m-3 ,APOCJ[0] + ASOCJ[0] + +AOCIJ ,ugC m-3 ,APOCIJ[0] + ASOCIJ[0] + + +AOMI ,ug m-3 ,APOMI[0] + ASOMI[0] +AOMJ ,ug m-3 ,APOMJ[0] + ASOMJ[0] + +AOMIJ ,ug m-3 ,APOMIJ[0] + ASOMIJ[0] + +!!! Anthropogenic-VOC Derived Organic Aerosol +AORGAI ,ug m-3 ,AROCN2OXY2I[1]+AROCN2OXY4I[1]+AROCN2OXY8I[1]+AROCN1OXY1I[1] \ + +AROCN1OXY3I[1]+AROCN1OXY6I[1]+AROCP0OXY2I[1]+AROCP0OXY4I[1] \ + +AROCP1OXY1I[1]+AROCP1OXY3I[1] + +AORGAJ ,ug m-3 ,AROCN2OXY2J[1]+AROCN2OXY4J[1]+AROCN2OXY8J[1]+AROCN1OXY1J[1] \ + +AROCN1OXY3J[1]+AROCN1OXY6J[1]+AROCP0OXY2J[1]+AROCP0OXY4J[1] \ + +AROCP1OXY1J[1]+AROCP1OXY3J[1]+AROCP2OXY2J[1]+AROCP3OXY2J[1] \ + +AOP3J[1] +ASOATJ[1] +AORGAIJ ,ug m-3 ,AORGAI[0] + AORGAJ[0] + +!!! Biogenic-VOC Derived Organic Aerosol +AORGBIJ ,ug m-3 ,AISO3NOSJ[1] +AISO3OSJ[1] +AHOMJ[1] + AELHOMJ[1] + +!!! Cloud-Processed SOA +AORGCJ ,ug m-3 ,AORGCJ[1] +!!! Remaining SOA +AGLYJ ,ug m-3 ,AGLYJ[1] + +!!! OM/OC ratios +AOMOCRAT_TOT , ,AOMIJ[0]/AOCIJ[0] + +!! Total PM Aggregates +ATOTI ,ug m-3 ,ASO4I[1] + ANH4I[1] + ANO3I[1] + ANAI[1] \ + +ACLI[1] + AECI[1] + AOMI[0] + AOTHRI[1] +ATOTJ ,ug m-3 ,ASO4J[1] + ANH4J[1] + ANO3J[1] + ANAJ[1] \ + +ACLJ[1] + AECJ[1] + AOMJ[0] + AOTHRJ[1] \ + +AFEJ[1] + AALJ[1] + ASIJ[1] + ATIJ[1] \ + +ACAJ[1] + AMGJ[1] + AKJ[1] + AMNJ[1] + +ATOTK ,ug m-3 ,ASO4K[1] + ANH4K[1] + ANO3K[1] + ACLK[1] \ + +ACORS[1] + ASOIL[1] + ASEACAT[1] +ATOTIJ ,ug m-3 ,ATOTI[0] + ATOTJ[0] +ATOTIJK ,ug m-3 ,ATOTI[0] + ATOTJ[0] + ATOTK[0] + +!! Unspeciated PM including non-carbon organic mass +AUNSPEC1IJ ,ug m-3 ,ATOTIJ[0] - (ASO4IJ[0] + ANO3IJ[0] \ + +ANH4IJ[0] + ACLIJ[0] \ + +ANAIJ[0] + AECIJ[0] \ + +AOCIJ[0] + ASOILJ[0]) +!! Non-Carbon Organic Mass +ANCOMIJ ,ug m-3 ,AOMIJ[0] - AOCIJ[0] + +!! Unspeciated PM excluding non-carbon organic mass +AUNSPEC2IJ ,ug m-3 ,AUNSPEC1IJ[0] - ANCOMIJ[0] + +!! AMS Projection of Output Concentrations +PMAMS_CL ,ug m-3 ,ACLI[1] *FAMSAIT[3] +ACLJ[1]*FAMSACC[3]+ACLK[1] *FAMSCOR[3] +PMAMS_NH4 ,ug m-3 ,ANH4I[1]*FAMSAIT[3]+ANH4J[1]*FAMSACC[3]+ANH4K[1]*FAMSCOR[3] +PMAMS_NO3 ,ug m-3 ,ANO3I[1]*FAMSAIT[3]+ANO3J[1]*FAMSACC[3]+ANO3K[1]*FAMSCOR[3] +PMAMS_OA ,ug m-3 ,AOMI[0] *FAMSAIT[3]+AOMJ[0] *FAMSACC[3] +PMAMS_SO4 ,ug m-3 ,ASO4I[1]*FAMSAIT[3]+ASO4J[1]*FAMSACC[3]+ASO4K[1]*FAMSCOR[3] + +!! PM1 Cutoff Output +PM1_TOT ,ug m-3 ,ATOTI[0]*FPM1AIT[3]+ATOTJ[0]*FPM1ACC[3]+ATOTK[0]*FPM1COR[3] + +!! Unused PM1 Species. Included Here for demonstration +!PM1_EC ,ug m-3 ,AECI[1] *FPM1AIT[3] +AECJ[1] *FPM1ACC[3] +!PM1_OC ,ugC m-3 ,AOCI[0] *FPM1AIT[3] +AOCJ[0] *FPM1ACC[3] +!PM1_OM ,ug m-3 ,AOMI[0] *FPM1AIT[3] +AOMJ[0] *FPM1ACC[3] +!PM1_SO4 ,ug m-3 ,ASO4I[1]*FPM1AIT[3] +ASO4J[1]*FPM1ACC[3] +ASO4K[1]*FPM1COR[3] +!PM1_CL ,ug m-3 ,ACLI[1] *FPM1AIT[3] +ACLJ[1] *FPM1ACC[3] +ACLK[1] *FPM1COR[3] +!PM1_NA ,ug m-3 ,ANAI[1] *FPM1AIT[3] +ANAJ[1] *FPM1ACC[3] +ANAK[0] *FPM1COR[3] +!PM1_MG ,ug m-3 , AMGJ[1] *FPM1ACC[3] +AMGK[0] *FPM1COR[3] +!PM1_K ,ug m-3 , AKJ[1] *FPM1ACC[3] +AKK[0] *FPM1COR[3] +!PM1_CA ,ug m-3 , ACAJ[1] *FPM1ACC[3] +ACAK[0] *FPM1COR[3] +!PM1_NH4 ,ug m-3 ,ANH4I[1] *FPM1AIT[3]+ANH4J[1]*FPM1ACC[3] +ANH4K[1]*FPM1COR[3] +!PM1_NO3 ,ug m-3 ,ANO3I[1] *FPM1AIT[3]+ANO3J[1]*FPM1ACC[3] +ANO3K[1]*FPM1COR[3] +!PM1_SOIL ,ug m-3 ,ASOILJ[0]*FPM1ACC[3]+(ASOIL[1]+ACORS[1])*FPM1COR[3] +!PM1_UNSPEC1 ,ug m-3 ,PM1_TOT[0] - (PM1_CL[0] + PM1_EC[0]+ PM1_NA[0] + PM1_NH4[0] + \ +! PM1_NO3[0]+ PM1_OC[0]+ PM1_SOIL[0]+ PM1_SO4[0] ) +!PM1_UNSPCRS ,ug m-3 ,ATOTK[0] *FPM1COR[3] - (ASO4K[1]*FPM1COR[3] \ +! +ACLK[1]*FPM1COR[3] \ +! +ANAK[0]*FPM1COR[3] \ +! +AMGK[0]*FPM1COR[3] \ +! +AKK[0]*FPM1COR[3] \ +! +ACAK[0]*FPM1COR[3] \ +! +ANH4K[1]*FPM1COR[3] \ +! +ANO3K[1]*FPM1COR[3]) + +!! PM2.5 species computed using modeled size distribution +PM25_HP ,ug m-3 ,(AH3OPI[1]*FPM25AIT[3]+AH3OPJ[1]*FPM25ACC[3]+AH3OPK[1]*FPM25COR[3])*1.0/19.0 +PM25_CL ,ug m-3 ,ACLI[1]*FPM25AIT[3]+ACLJ[1]*FPM25ACC[3]+ACLK[1]*FPM25COR[3] +PM25_EC ,ug m-3 ,AECI[1]*FPM25AIT[3]+AECJ[1]*FPM25ACC[3] +PM25_NA ,ug m-3 ,ANAI[1]*FPM25AIT[3]+ANAJ[1]*FPM25ACC[3]+ANAK[0]*FPM25COR[3] +PM25_MG ,ug m-3 , AMGJ[1]*FPM25ACC[3]+AMGK[0]*FPM25COR[3] +PM25_K ,ug m-3 , AKJ[1] *FPM25ACC[3]+AKK[0] *FPM25COR[3] +PM25_CA ,ug m-3 , ACAJ[1]*FPM25ACC[3]+ACAK[0]*FPM25COR[3] +PM25_NH4 ,ug m-3 ,ANH4I[1]*FPM25AIT[3]+ANH4J[1]*FPM25ACC[3]+ANH4K[1]*FPM25COR[3] +PM25_NO3 ,ug m-3 ,ANO3I[1]*FPM25AIT[3]+ANO3J[1]*FPM25ACC[3]+ANO3K[1]*FPM25COR[3] +PM25_OC ,ugC m-3 ,AOCI[0] *FPM25AIT[3]+AOCJ[0]*FPM25ACC[3] +PM25_OM ,ug m-3 ,AOMI[0] *FPM25AIT[3]+AOMJ[0]*FPM25ACC[3] +PM25_SOIL ,ug m-3 ,ASOILJ[0]*FPM25ACC[3]+ASOIL[1]*FPM25COR[3] +PM25_SO4 ,ug m-3 ,ASO4I[1]*FPM25AIT[3]+ASO4J[1]*FPM25ACC[3]+ASO4K[1]*FPM25COR[3] +PM25_TOT ,ug m-3 ,ATOTI[0]*FPM25AIT[3]+ATOTJ[0]*FPM25ACC[3]+ATOTK[0]*FPM25COR[3] +PM25_UNSPEC1 ,ug m-3 ,PM25_TOT[0]-(PM25_CL[0]+PM25_EC[0]+PM25_NA[0]+PM25_NH4[0] \ + +PM25_NO3[0]+PM25_OC[0]+PM25_SOIL[0]+PM25_SO4[0]) +PM25_UNSPCRS ,ug m-3 ,ATOTK[0]*FPM25COR[3] - (ASO4K[1]*FPM25COR[3] \ + +ACLK[1]*FPM25COR[3] \ + +ANAK[0]*FPM25COR[3] \ + +AMGK[0]*FPM25COR[3] \ + +AKK[0]*FPM25COR[3] \ + +ACAK[0]*FPM25COR[3] \ + +ANH4K[1]*FPM25COR[3] \ + +ANO3K[1]*FPM25COR[3]) + + +!! Fine particle acidity (pH). pH is undefined if there is no aerosol water. +!Do not trust predictions when hourly water is <0.01 ug m-3. FINEPHF will +!have large negative value (-9.999E36) when pH is not to be trusted. +!AH2OIJ ,ug m-3 ,AH2OI[1]+AH2OJ[1] +!HPMOLAL ,mol kg-1 ,AHPLUSIJ[0]/AH2OIJ[0]*1000.0 +!ACIDITYTEMP , ,-1*LOG10(HPMOLAL[0]) +!FINEPHF , ,AH2OIJ[0]>0.01 ? ACIDITYTEMP[0] : -9.999E36 + +!! PM10.0 and Coarse-Sized Species +PM10 ,ug m-3 ,ATOTI[0]*FPM10AIT[3]+ATOTJ[0]*FPM10ACC[3]+ATOTK[0]*FPM10COR[3] + +PMC_CL ,ug m-3 ,ACLI[1]*FPM10AIT[3] +ACLJ[1]*FPM10ACC[3] +ACLK[1]*FPM10COR[3] -PM25_CL[0] +PMC_NA ,ug m-3 ,ANAI[1]*FPM10AIT[3] +ANAJ[1]*FPM10ACC[3] +ANAK[0]*FPM10COR[3] -PM25_NA[0] +PMC_NH4 ,ug m-3 ,ANH4I[1]*FPM10AIT[3]+ANH4J[1]*FPM10ACC[3]+ANH4K[1]*FPM10COR[3]-PM25_NH4[0] +PMC_NO3 ,ug m-3 ,ANO3I[1]*FPM10AIT[3]+ANO3J[1]*FPM10ACC[3]+ANO3K[1]*FPM10COR[3]-PM25_NO3[0] +PMC_SO4 ,ug m-3 ,ASO4I[1]*FPM10AIT[3]+ASO4J[1]*FPM10ACC[3]+ASO4K[1]*FPM10COR[3]-PM25_SO4[0] +PMC_TOT ,ug m-3 ,PM10[0]-PM25_TOT[0] + +!! FRM PM Equivalent Calculation +!! This section calculates the FRM applicable PM species, PMIJ_FRM and +!! PM25_FRM. The intermediate variablse K...ANH4IJ_loss are needed to +!! calculate the final quantities. +K ,ppb2 ,exp(118.87-24084/TEMP2[4]-6.025*log(TEMP2[4])) +P1 , ,exp(8763/TEMP2[4]+19.12*log(TEMP2[4])-135.94) +P2 , ,exp(9969/TEMP2[4]+16.22*log(TEMP2[4])-122.65) +P3 , ,exp(13875/TEMP2[4]+24.46*log(TEMP2[4])-182.61) +a , ,1-RH[0]/100 +K_prime ,ppb2 ,(P1[0]-P2[0]*a[0]+(P3[0]*a[0]*a[0]))*(a[0]^1.75)*K[0] +sqrt_Ki ,ppb ,sqrt(RH[0]<=61 ? K[0] : K_prime[0]) +max_NO3_loss ,ug m-3 ,745.7/TEMP2[4]*sqrt_Ki[0] +PM25_NO3_loss ,ug m-3 ,max_NO3_loss[0]<=PM25_NO3[0] ? max_NO3_loss[0] : PM25_NO3[0] +ANO3IJ_loss ,ug m-3 ,max_NO3_loss[0]<=ANO3IJ[0] ? max_NO3_loss[0] : ANO3IJ[0] +PM25_NH4_loss ,ug m-3 ,PM25_NO3_loss[0]*(18/62) +ANH4IJ_loss ,ug m-3 ,ANO3IJ_loss[0]*(18/62) +PMIJ_FRM ,ug m-3 ,ATOTIJ[0]-(ANO3IJ_loss[0]+ANH4IJ_loss[0]) \ + +0.24*(ASO4IJ[0]+ANH4IJ[0]-ANH4IJ_loss[0])+0.5 +PM25_FRM ,ug m-3 ,PM25_TOT[0]-(PM25_NO3_loss[0]+PM25_NH4_loss[0]) \ + +0.24*(PM25_SO4[0]+PM25_NH4[0]-PM25_NH4_loss[0])+0.5 diff --git a/CCTM/src/MECHS/cracmm1_aq/SpecDef_cracmm1_aq.txt b/CCTM/src/MECHS/cracmm1_aq/SpecDef_cracmm1_aq.txt index b9829ca1e..c730ff822 100644 --- a/CCTM/src/MECHS/cracmm1_aq/SpecDef_cracmm1_aq.txt +++ b/CCTM/src/MECHS/cracmm1_aq/SpecDef_cracmm1_aq.txt @@ -188,10 +188,10 @@ AOCIJ ,ugC m-3 ,PMF_OC[3] AOMIJ ,ug m-3 ,PMF_OA[3] !!! Anthropogenic-VOC Derived Organic Aerosol -AORGAJ ,ug m-3 ,PMF_ASOA[3] +AORGAIJ ,ug m-3 ,PMF_ASOA[3] !!! Biogenic-VOC Derived Organic Aerosol -AORGBJ ,ug m-3 ,PMF_BSOA[3] +AORGBIJ ,ug m-3 ,PMF_BSOA[3] !!! Cloud-Processed SOA AORGCJ ,ug m-3 ,AORGCJ[1] diff --git a/CCTM/src/MECHS/cracmm1amore_aq/SpecDef_Conc_cracmm1amore_aq.txt b/CCTM/src/MECHS/cracmm1amore_aq/SpecDef_Conc_cracmm1amore_aq.txt new file mode 100644 index 000000000..c59699ffe --- /dev/null +++ b/CCTM/src/MECHS/cracmm1amore_aq/SpecDef_Conc_cracmm1amore_aq.txt @@ -0,0 +1,384 @@ +!#start YYYYJJJ 010000 +!#end YYYYJJJ 000000 +#layer 1 + +/ +! This Species Definition File is for Use with the COMBINE tool built for +! post-processing CMAQ output. It is compatible with CMAQv5.2. +! Date: May 12 2017 + +! Output variables that begin with 'PM' represent those in which a size cut was +! applied based on modeled aerosol mode parameters. For example, PM25_NA is all +! sodium that falls below 2.5 um diameter. These 'PM' variables are used for +! comparisons at IMPROVE and CSN sites. + +! Output variables that begin with 'PMAMS' represent the mass that would have +! been detected by an Aerosol Mass Spectrometer. + +! Output variables beginning with 'A' (aside from AIR_DENS) represent a +! combination of aerosol species in which no size cut was applied. For example, +! ASO4IJ is the sum of i-mode and j-mode sulfate. These 'A' variables are used +! for comparisons at CASTNet sites. + +! Output variables beginning with 'PMC' refer to the coarse fraction of total PM, +! computed by summing all modes and subtracting the PM2.5 fraction. These 'PMC' +! variables are used for comparisons at SEARCH sites. + +! This Species Definition File is just for use with the uncoupled, offline CMAQ, +! model. If you are processing WRF-CMAQ results, a different Species Definition +! file is required. + +/ File [1]: CMAQ conc/aconc file +/ File [2]: METCRO3D file +/ File [3]: ELMO/AELMO file +/ File [4]: METCRO2D file +/ +/new species ,units ,expression + +!-------------------------------------------! +!------------- Meteorology -----------------! +!-------------------------------------------! +AIR_DENS ,kg m-3 ,DENS[2] +RH ,% ,100.00*RH[3] +SFC_TMP ,C ,(TEMP2[4]-273.15) +PBLH ,m ,PBL[4] +SOL_RAD ,W m-2 ,RGRND[4] +precip ,cm ,RC[4]>=0 ? RN[4]+RC[4] : RN[4] +WSPD10 ,m s-1 ,WSPD10[4] +WDIR10 ,deg ,WDIR10[4] + +!-------------------------------------------! +!--------------- Gases ---------------------! +!-------------------------------------------! +CO ,ppbV ,1000.0*CO[1] +H2O2 ,ppbV ,1000.0*H2O2[1] +HNO3 ,ppbV ,1000.0*HNO3[1] +HNO3_UGM3 ,ug m-3 ,1000.0*(HNO3[1]*2.1756*DENS[2]) +HONO ,ppbV ,1000.0*HONO[1] +HOX ,ppbV ,1000.0*(HO[1]+HO2[1]) +OH ,ppbV ,1000.0*HO[1] +N2O5 ,ppbV ,1000.0*N2O5[1] +NH3 ,ppbV ,1000.0*NH3[1] +NH3_UGM3 ,ug m-3 ,1000.0*(NH3[1]*0.5880*DENS[2]) +NHX ,ug m-3 ,1000.0*(NH3[1]*0.5880*DENS[2])+ANH4I[1]+ANH4J[1]+ANH4K[1] +NO ,ppbV ,1000.0*NO[1] +NO2 ,ppbV ,1000.0*NO2[1] +NOX ,ppbV ,1000.0*(NO[1] + NO2[1]) +ANO3_PPB ,ppbV ,(ANO3I[1]+ANO3J[1]+ANO3K[1])/(DENS[2]*(62.0/28.97)) +NTR ,ppbV ,1000.0*(ONIT[1]+ISON[1]+NALD[1]+IPN[1]+IPC[1]+TRPN[1]), organic nitrates in RACM2 +PANS ,ppbV ,1000.0*(PAN[1]+PPN[1]+MPAN[1]) +NOY ,ppbV ,1000.0*(NO[1]+NO2[1]+NO3[1]+2*N2O5[1]+HONO[1] \ + +HNO3[1]+HNO4[1]+PAN[1]+PPN[1]+MPAN[1] \ + +ISON[1]+NALD[1]+IPN[1]+IPC[1]+TRPN[1]+ONIT[1])+ANO3_PPB[0] +O3 ,ppbV ,1000.0*O3[1] +SO2 ,ppbV ,1000.0*SO2[1] +SO2_UGM3 ,ug m-3 ,1000.0*(SO2[1]*2.2118*DENS[2]) +TERP ,ppbV ,1000.0*(API[1]+LIM[1]), a-pinene and limonene monoterpenes in RACM2 + +! Deprecate these names in future +ETH ,ppbV ,1000.0*ETE[1], ethene is ETE in RACM2 +ETHA ,ppbV ,1000.0*ETH[1], ethane is ETH in RACM2 +ALD2 ,ppbV ,1000.0*ACD[1], acetaldehyde is ACD in RACM2 +FORM ,ppbV ,1000.0*HCHO[1], formaldehyde is HCHO RACM2 +ISOP ,ppbV ,1000.0*ISO[1], isoprene is ISO in RACM2 +TOL ,ppbV ,1000.0*TOL[1] + +! Hydrocarbons for evaluation. Note an "s" on the end indicates a collection of species from AQS +ACETALDEHYDE ,ppbV ,1000.0*ACD[1] +ACETYLENE ,ppbV ,1000.0*ACE[1] +ACROLEIN ,ppbV ,1000.0*ACRO[1] +ACETONE ,ppbV ,1000.0*ACT[1] +BUTADIENE13 ,ppbV ,1000.0*BDE13[1] +BENZENE ,ppbV ,1000.0*BEN[1] +ETHYLENE ,ppbV ,1000.0*ETE[1], ethene is ETE in RACM2 +ETHANE ,ppbV ,1000.0*ETH[1], ethane is ETH in RACM2 +ISOPRENE ,ppbV ,1000.0*ISO[1], isoprene is ISO in RACM2 +FORMALDEHYDE ,ppbV ,1000.0*HCHO[1], formaldehyde is HCHO RACM2 +MEKETONE ,ppbV ,1000.0*MEK[1] +TOLUENE ,ppbV ,1000.0*TOL[1] +XYLENES ,ppbV ,1000.0*(XYE[1]+XYM[1]) +HCPROPANES ,ppbV ,1000.0*(HC3[1]) +HCPENTANES ,ppbV ,1000.0*(HC5[1]) +HCDECANES ,ppbV ,1000.0*(HC10[1]), formerly HC8 +OLEFINS ,ppbV ,1000.0*(OLI[1]+OLT[1]) +ABPINENES ,ppbV ,1000.0*(API[1]) + +!! Unused Gases. Presented Here for illustration. Users can uncomment +!! them if they choose. +ALDX ,ppbV ,1000.0*ALD[1], C3 and higher aldehydes is ALD in RACM2 +!NOZ ,ppbV ,NOY[0]-NOX[0] +!SULF ,ppbV ,1000.0*SULF[1] +! SIGROC: L/S/IVOC alk and oxy gas species +LSIVROC ,ppbC ,1000.0* (9.5*VROCIOXY[1] \ + +14.0*VROCP5ARO[1]+13.0*VROCP6ARO[1] \ + +30.0*VROCN2ALK[1]+29.0*VROCN1ALK[1] \ + +28.0*VROCP0ALK[1]+27.0*VROCP1ALK[1] \ + +24.0*VROCP2ALK[1]+21.0*VROCP3ALK[1] \ + +18.0*VROCP4ALK[1]+14.0*VROCP5ALK[1] \ + +13.0*VROCP6ALK[1]\ + +17.0*VROCN2OXY2[1]+11.0*VROCN2OXY4[1] \ + +7.0*VROCN2OXY8[1]+20.0*VROCN1OXY1[1] \ + +12.0*VROCN1OXY3[1]+8.0*VROCN1OXY6[1] \ + +14.0*VROCP0OXY2[1]+10.0*VROCP0OXY4[1] \ + +17.0*VROCP1OXY1[1]+11.0*VROCP1OXY3[1] \ + +12.0*VROCP2OXY2[1]+11.0*VROCP3OXY2[1] \ + +9.0*VROCP4OXY2[1]+11.0*VROCP5OXY1[1] \ + +9.0*VROCP6OXY1[1] ), +! VROC: Total gas-phase (vapor) reactive organic carbon (stable species only) +VROC ,ppbC ,1000.0*(2.0*ACD[1]+2.0*ACE[1] \ + +3.0*ACRO[1]+3.0*ACT[1]+3.0*ALD[1]+10*API[1] \ + +7.0*BALD[1]+4.0*BDE13[1]+6.0*BEN[1] \ + +9.0*CSL[1]+5.0*DCB1[1]+6.0*DCB2[1]+4.0*DCB3[1] \ + +20.0*ELHOM[1] \ + +2.0*EOH[1]+2.0*ETE[1]+2.0*ETEG[1]+2.0*ETH[1] \ + +5.0*FURAN[1]+4.0*FURANONE[1]+2.0*GLY[1]+10.0*HOM[1] \ + +3.0*HC3[1]+5.0*HC5[1]+10.0*HC10[1] \ + +1.0*HCHO[1]+3.0*HKET[1] \ + +5.0*IEPOX[1]+5.0*ISHP[1]\ + +5.0*ISO[1]+5.0*KET[1] \ + +10.0*LIM[1]+10.0*LIMAL[1]+4.0*MACR[1]+4*MAHP[1] \ + +7.0*MCT[1] \ + +4.0*MEK[1]+3.0*MGLY[1]+1.0*MOH[1]+4.0*MVK[1] \ + +10.0*NAPH[1]+5.0*OLI[1]+3.0*OLT[1] \ + +1.0*OP1[1]+2.0*OP2[1]+8.0*OP3[1]+10.0*OPB[1] \ + +1.0*ORA1[1]+2.0*ORA2[1] \ + +10.0*PINAL[1] \ + +6.0*PHEN[1]+3.0*PROG[1] \ + +3.0*ROH[1]+15.0*SESQ[1]+2.1*SLOWROC[1] \ + +7.0*TOL[1]+5.0*UALD[1] \ + +8.0*XYM[1]+8.0*XYE[1] \ + +2.0*PAA[1]+2.0*PAN[1]+3.0*PPN[1]+4.0*MPAN[1] \ + +4.0*ONIT[1]+5.0*ISON[1] \ + +5.0*NALD[1]+5.0*IPN[1]+5.0*IPC[1]+10.0*TRPN[1] ) \ + +LSIVROC[0] , + +!-------------------------------------------! +!--------------- Particles -----------------! +!-------------------------------------------! +!! Crustal Elements +AFEJ ,ug m-3 ,AFEJ[1] +AALJ ,ug m-3 ,AALJ[1] +ASIJ ,ug m-3 ,ASIJ[1] +ATIJ ,ug m-3 ,ATIJ[1] +ACAJ ,ug m-3 ,ACAJ[1] +AMGJ ,ug m-3 ,AMGJ[1] +AKJ ,ug m-3 ,AKJ[1] +AMNJ ,ug m-3 ,AMNJ[1] +ASOILJ ,ug m-3 ,2.20*AALJ[1]+2.49*ASIJ[1]+1.63*ACAJ[1]+2.42*AFEJ[1]+1.94*ATIJ[1] + +!! Non-Crustal Inorganic Particle Species +AHPLUSIJ ,umol m-3 ,(AH3OPI[1]+AH3OPJ[1])*1.0/19.0 +ANAK ,ug m-3 ,0.8373*ASEACAT[1]+0.0626*ASOIL[1]+0.0023*ACORS[1] +AMGK ,ug m-3 ,0.0997*ASEACAT[1]+0.0170*ASOIL[1]+0.0032*ACORS[1] +AKK ,ug m-3 ,0.0310*ASEACAT[1]+0.0242*ASOIL[1]+0.0176*ACORS[1] +ACAK ,ug m-3 ,0.0320*ASEACAT[1]+0.0838*ASOIL[1]+0.0562*ACORS[1] +ACLIJ ,ug m-3 ,ACLI[1]+ACLJ[1] +AECIJ ,ug m-3 ,AECI[1]+AECJ[1] +ANAIJ ,ug m-3 ,ANAJ[1]+ANAI[1] +ANO3IJ ,ug m-3 ,ANO3I[1]+ANO3J[1] +ANO3K ,ug m-3 ,ANO3K[1] +TNO3 ,ug m-3 ,2175.6*(HNO3[1]*DENS[2])+ANO3I[1]+ANO3J[1]+ANO3K[1] +ANH4IJ ,ug m-3 ,ANH4I[1]+ANH4J[1] +ANH4K ,ug m-3 ,ANH4K[1] +ASO4IJ ,ug m-3 ,ASO4I[1]+ASO4J[1] +ASO4K ,ug m-3 ,ASO4K[1] + +!! Organic Particle Species +! Why is there an APOCI and APOCJ in the output? It doesn't match below +APOCI ,ugC m-3, AROCN2ALKI[1]/1.39 + AROCN1ALKI[1]/1.32 \ + + AROCP0ALKI[1]/1.17 + AROCP1ALKI[1]/1.17 +APOCJ ,ugC m-3, AROCN2ALKJ[1]/1.39 + AROCN1ALKJ[1]/1.32 \ + + AROCP0ALKJ[1]/1.17 + AROCP1ALKJ[1]/1.17 \ + + AROCP2ALKJ[1]/1.17 + AROCP3ALKJ[1]/1.17 +APOCIJ ,ugC m-3, APOCI[0] + APOCJ[0] + +APOMI ,ug m-3, AROCN2ALKI[1] + AROCN1ALKI[1] \ + + AROCP0ALKI[1] + AROCP1ALKI[1] + APNCOMI[1] +APOMJ ,ug m-3, AROCN2ALKJ[1] + AROCN1ALKJ[1] + AROCP0ALKJ[1] \ + + AROCP1ALKJ[1] + AROCP2ALKJ[1] + AROCP3ALKJ[1] + APNCOMJ[1] +APOMIJ ,ug m-3, APOMI[0] + APOMJ[0] +ASOCI ,ugC m-3, AROCN2OXY2I[1]/1.42 + AROCN2OXY4I[1]/1.67 \ + + AROCN2OXY8I[1]/2.17 + AROCN1OXY1I[1]/1.29 \ + + AROCN1OXY3I[1]/1.54 + AROCN1OXY6I[1]/1.92 \ + + AROCP0OXY2I[1]/1.42 + AROCP0OXY4I[1]/1.67 \ + + AROCP1OXY1I[1]/1.29 + AROCP1OXY3I[1]/1.54 +ASOCJ ,ugC m-3, AHOMJ[1]/2.08 + AELHOMJ[1]/1.67 + AISO3NOSJ[1]/2.27 \ + + AISO3OSJ[1]/3.6 + AGLYJ[1]/2.13 + AORGCJ[1]/2 \ + + AOP3J[1]/1.92 + ASOATJ[1]/2.31 + AROCN2OXY2J[1]/1.42 \ + + AROCN2OXY4J[1]/1.67 + AROCN2OXY8J[1]/2.17 + AROCN1OXY1J[1]/1.29 \ + + AROCN1OXY3J[1]/1.54 + AROCN1OXY6J[1]/1.92 + AROCP0OXY2J[1]/1.42 \ + + AROCP0OXY4J[1]/1.67 + AROCP1OXY1J[1]/1.29 + AROCP1OXY3J[1]/1.54 \ + + AROCP2OXY2J[1]/1.42 + AROCP3OXY2J[1]/1.42 +ASOCIJ ,ugC m-3, ASOCI[0] + ASOCJ[0] + +ASOMI ,ug m-3, AROCN2OXY2I[1] + AROCN2OXY4I[1] \ + + AROCN2OXY8I[1] + AROCN1OXY1I[1] \ + + AROCN1OXY3I[1] + AROCN1OXY6I[1] \ + + AROCP0OXY2I[1] + AROCP0OXY4I[1] \ + + AROCP1OXY1I[1] + AROCP1OXY3I[1] +ASOMJ ,ug m-3, AHOMJ[1] + AELHOMJ[1] + AISO3NOSJ[1] \ + + AISO3OSJ[1] + AGLYJ[1] + AORGCJ[1] \ + + AOP3J[1] + ASOATJ[1] + AROCN2OXY2J[1] \ + + AROCN2OXY4J[1] + AROCN2OXY8J[1] + AROCN1OXY1J[1] \ + + AROCN1OXY3J[1] + AROCN1OXY6J[1] + AROCP0OXY2J[1] \ + + AROCP0OXY4J[1] + AROCP1OXY1J[1] + AROCP1OXY3J[1] \ + + AROCP2OXY2J[1] + AROCP3OXY2J[1] + +ASOMIJ ,ug m-3 ,ASOMI[0] + ASOMJ[0] + +AOCI ,ugC m-3 ,APOCI[0] + ASOCI[0] +AOCJ ,ugC m-3 ,APOCJ[0] + ASOCJ[0] + +AOCIJ ,ugC m-3 ,APOCIJ[0] + ASOCIJ[0] + + +AOMI ,ug m-3 ,APOMI[0] + ASOMI[0] +AOMJ ,ug m-3 ,APOMJ[0] + ASOMJ[0] + +AOMIJ ,ug m-3 ,APOMIJ[0] + ASOMIJ[0] + +!!! Anthropogenic-VOC Derived Organic Aerosol +AORGAI ,ug m-3 ,AROCN2OXY2I[1]+AROCN2OXY4I[1]+AROCN2OXY8I[1]+AROCN1OXY1I[1] \ + +AROCN1OXY3I[1]+AROCN1OXY6I[1]+AROCP0OXY2I[1]+AROCP0OXY4I[1] \ + +AROCP1OXY1I[1]+AROCP1OXY3I[1] + +AORGAJ ,ug m-3 ,AROCN2OXY2J[1]+AROCN2OXY4J[1]+AROCN2OXY8J[1]+AROCN1OXY1J[1] \ + +AROCN1OXY3J[1]+AROCN1OXY6J[1]+AROCP0OXY2J[1]+AROCP0OXY4J[1] \ + +AROCP1OXY1J[1]+AROCP1OXY3J[1]+AROCP2OXY2J[1]+AROCP3OXY2J[1] \ + +AOP3J[1] +ASOATJ[1] +AORGAIJ ,ug m-3 ,AORGAI[0] + AORGAJ[0] + +!!! Biogenic-VOC Derived Organic Aerosol +AORGBIJ ,ug m-3 ,AISO3NOSJ[1] +AISO3OSJ[1] +AHOMJ[1] + AELHOMJ[1] + +!!! Cloud-Processed SOA +AORGCJ ,ug m-3 ,AORGCJ[1] +!!! Remaining SOA +AGLYJ ,ug m-3 ,AGLYJ[1] + +!!! OM/OC ratios +AOMOCRAT_TOT , ,AOMIJ[0]/AOCIJ[0] + +!! Total PM Aggregates +ATOTI ,ug m-3 ,ASO4I[1] + ANH4I[1] + ANO3I[1] + ANAI[1] \ + +ACLI[1] + AECI[1] + AOMI[0] + AOTHRI[1] +ATOTJ ,ug m-3 ,ASO4J[1] + ANH4J[1] + ANO3J[1] + ANAJ[1] \ + +ACLJ[1] + AECJ[1] + AOMJ[0] + AOTHRJ[1] \ + +AFEJ[1] + AALJ[1] + ASIJ[1] + ATIJ[1] \ + +ACAJ[1] + AMGJ[1] + AKJ[1] + AMNJ[1] + +ATOTK ,ug m-3 ,ASO4K[1] + ANH4K[1] + ANO3K[1] + ACLK[1] \ + +ACORS[1] + ASOIL[1] + ASEACAT[1] +ATOTIJ ,ug m-3 ,ATOTI[0] + ATOTJ[0] +ATOTIJK ,ug m-3 ,ATOTI[0] + ATOTJ[0] + ATOTK[0] + +!! Unspeciated PM including non-carbon organic mass +AUNSPEC1IJ ,ug m-3 ,ATOTIJ[0] - (ASO4IJ[0] + ANO3IJ[0] \ + +ANH4IJ[0] + ACLIJ[0] \ + +ANAIJ[0] + AECIJ[0] \ + +AOCIJ[0] + ASOILJ[0]) +!! Non-Carbon Organic Mass +ANCOMIJ ,ug m-3 ,AOMIJ[0] - AOCIJ[0] + +!! Unspeciated PM excluding non-carbon organic mass +AUNSPEC2IJ ,ug m-3 ,AUNSPEC1IJ[0] - ANCOMIJ[0] + +!! AMS Projection of Output Concentrations +PMAMS_CL ,ug m-3 ,ACLI[1] *FAMSAIT[3] +ACLJ[1]*FAMSACC[3]+ACLK[1] *FAMSCOR[3] +PMAMS_NH4 ,ug m-3 ,ANH4I[1]*FAMSAIT[3]+ANH4J[1]*FAMSACC[3]+ANH4K[1]*FAMSCOR[3] +PMAMS_NO3 ,ug m-3 ,ANO3I[1]*FAMSAIT[3]+ANO3J[1]*FAMSACC[3]+ANO3K[1]*FAMSCOR[3] +PMAMS_OA ,ug m-3 ,AOMI[0] *FAMSAIT[3]+AOMJ[0] *FAMSACC[3] +PMAMS_SO4 ,ug m-3 ,ASO4I[1]*FAMSAIT[3]+ASO4J[1]*FAMSACC[3]+ASO4K[1]*FAMSCOR[3] + +!! PM1 Cutoff Output +PM1_TOT ,ug m-3 ,ATOTI[0]*FPM1AIT[3]+ATOTJ[0]*FPM1ACC[3]+ATOTK[0]*FPM1COR[3] + +!! Unused PM1 Species. Included Here for demonstration +!PM1_EC ,ug m-3 ,AECI[1] *FPM1AIT[3] +AECJ[1] *FPM1ACC[3] +!PM1_OC ,ugC m-3 ,AOCI[0] *FPM1AIT[3] +AOCJ[0] *FPM1ACC[3] +!PM1_OM ,ug m-3 ,AOMI[0] *FPM1AIT[3] +AOMJ[0] *FPM1ACC[3] +!PM1_SO4 ,ug m-3 ,ASO4I[1]*FPM1AIT[3] +ASO4J[1]*FPM1ACC[3] +ASO4K[1]*FPM1COR[3] +!PM1_CL ,ug m-3 ,ACLI[1] *FPM1AIT[3] +ACLJ[1] *FPM1ACC[3] +ACLK[1] *FPM1COR[3] +!PM1_NA ,ug m-3 ,ANAI[1] *FPM1AIT[3] +ANAJ[1] *FPM1ACC[3] +ANAK[0] *FPM1COR[3] +!PM1_MG ,ug m-3 , AMGJ[1] *FPM1ACC[3] +AMGK[0] *FPM1COR[3] +!PM1_K ,ug m-3 , AKJ[1] *FPM1ACC[3] +AKK[0] *FPM1COR[3] +!PM1_CA ,ug m-3 , ACAJ[1] *FPM1ACC[3] +ACAK[0] *FPM1COR[3] +!PM1_NH4 ,ug m-3 ,ANH4I[1] *FPM1AIT[3]+ANH4J[1]*FPM1ACC[3] +ANH4K[1]*FPM1COR[3] +!PM1_NO3 ,ug m-3 ,ANO3I[1] *FPM1AIT[3]+ANO3J[1]*FPM1ACC[3] +ANO3K[1]*FPM1COR[3] +!PM1_SOIL ,ug m-3 ,ASOILJ[0]*FPM1ACC[3]+(ASOIL[1]+ACORS[1])*FPM1COR[3] +!PM1_UNSPEC1 ,ug m-3 ,PM1_TOT[0] - (PM1_CL[0] + PM1_EC[0]+ PM1_NA[0] + PM1_NH4[0] + \ +! PM1_NO3[0]+ PM1_OC[0]+ PM1_SOIL[0]+ PM1_SO4[0] ) +!PM1_UNSPCRS ,ug m-3 ,ATOTK[0] *FPM1COR[3] - (ASO4K[1]*FPM1COR[3] \ +! +ACLK[1]*FPM1COR[3] \ +! +ANAK[0]*FPM1COR[3] \ +! +AMGK[0]*FPM1COR[3] \ +! +AKK[0]*FPM1COR[3] \ +! +ACAK[0]*FPM1COR[3] \ +! +ANH4K[1]*FPM1COR[3] \ +! +ANO3K[1]*FPM1COR[3]) + +!! PM2.5 species computed using modeled size distribution +PM25_HP ,ug m-3 ,(AH3OPI[1]*FPM25AIT[3]+AH3OPJ[1]*FPM25ACC[3]+AH3OPK[1]*FPM25COR[3])*1.0/19.0 +PM25_CL ,ug m-3 ,ACLI[1]*FPM25AIT[3]+ACLJ[1]*FPM25ACC[3]+ACLK[1]*FPM25COR[3] +PM25_EC ,ug m-3 ,AECI[1]*FPM25AIT[3]+AECJ[1]*FPM25ACC[3] +PM25_NA ,ug m-3 ,ANAI[1]*FPM25AIT[3]+ANAJ[1]*FPM25ACC[3]+ANAK[0]*FPM25COR[3] +PM25_MG ,ug m-3 , AMGJ[1]*FPM25ACC[3]+AMGK[0]*FPM25COR[3] +PM25_K ,ug m-3 , AKJ[1] *FPM25ACC[3]+AKK[0] *FPM25COR[3] +PM25_CA ,ug m-3 , ACAJ[1]*FPM25ACC[3]+ACAK[0]*FPM25COR[3] +PM25_NH4 ,ug m-3 ,ANH4I[1]*FPM25AIT[3]+ANH4J[1]*FPM25ACC[3]+ANH4K[1]*FPM25COR[3] +PM25_NO3 ,ug m-3 ,ANO3I[1]*FPM25AIT[3]+ANO3J[1]*FPM25ACC[3]+ANO3K[1]*FPM25COR[3] +PM25_OC ,ugC m-3 ,AOCI[0] *FPM25AIT[3]+AOCJ[0]*FPM25ACC[3] +PM25_OM ,ug m-3 ,AOMI[0] *FPM25AIT[3]+AOMJ[0]*FPM25ACC[3] +PM25_SOIL ,ug m-3 ,ASOILJ[0]*FPM25ACC[3]+ASOIL[1]*FPM25COR[3] +PM25_SO4 ,ug m-3 ,ASO4I[1]*FPM25AIT[3]+ASO4J[1]*FPM25ACC[3]+ASO4K[1]*FPM25COR[3] +PM25_TOT ,ug m-3 ,ATOTI[0]*FPM25AIT[3]+ATOTJ[0]*FPM25ACC[3]+ATOTK[0]*FPM25COR[3] +PM25_UNSPEC1 ,ug m-3 ,PM25_TOT[0]-(PM25_CL[0]+PM25_EC[0]+PM25_NA[0]+PM25_NH4[0] \ + +PM25_NO3[0]+PM25_OC[0]+PM25_SOIL[0]+PM25_SO4[0]) +PM25_UNSPCRS ,ug m-3 ,ATOTK[0]*FPM25COR[3] - (ASO4K[1]*FPM25COR[3] \ + +ACLK[1]*FPM25COR[3] \ + +ANAK[0]*FPM25COR[3] \ + +AMGK[0]*FPM25COR[3] \ + +AKK[0]*FPM25COR[3] \ + +ACAK[0]*FPM25COR[3] \ + +ANH4K[1]*FPM25COR[3] \ + +ANO3K[1]*FPM25COR[3]) + + +!! Fine particle acidity (pH). pH is undefined if there is no aerosol water. +!Do not trust predictions when hourly water is <0.01 ug m-3. FINEPHF will +!have large negative value (-9.999E36) when pH is not to be trusted. +!AH2OIJ ,ug m-3 ,AH2OI[1]+AH2OJ[1] +!HPMOLAL ,mol kg-1 ,AHPLUSIJ[0]/AH2OIJ[0]*1000.0 +!ACIDITYTEMP , ,-1*LOG10(HPMOLAL[0]) +!FINEPHF , ,AH2OIJ[0]>0.01 ? ACIDITYTEMP[0] : -9.999E36 + +!! PM10.0 and Coarse-Sized Species +PM10 ,ug m-3 ,ATOTI[0]*FPM10AIT[3]+ATOTJ[0]*FPM10ACC[3]+ATOTK[0]*FPM10COR[3] + +PMC_CL ,ug m-3 ,ACLI[1]*FPM10AIT[3] +ACLJ[1]*FPM10ACC[3] +ACLK[1]*FPM10COR[3] -PM25_CL[0] +PMC_NA ,ug m-3 ,ANAI[1]*FPM10AIT[3] +ANAJ[1]*FPM10ACC[3] +ANAK[0]*FPM10COR[3] -PM25_NA[0] +PMC_NH4 ,ug m-3 ,ANH4I[1]*FPM10AIT[3]+ANH4J[1]*FPM10ACC[3]+ANH4K[1]*FPM10COR[3]-PM25_NH4[0] +PMC_NO3 ,ug m-3 ,ANO3I[1]*FPM10AIT[3]+ANO3J[1]*FPM10ACC[3]+ANO3K[1]*FPM10COR[3]-PM25_NO3[0] +PMC_SO4 ,ug m-3 ,ASO4I[1]*FPM10AIT[3]+ASO4J[1]*FPM10ACC[3]+ASO4K[1]*FPM10COR[3]-PM25_SO4[0] +PMC_TOT ,ug m-3 ,PM10[0]-PM25_TOT[0] + +!! FRM PM Equivalent Calculation +!! This section calculates the FRM applicable PM species, PMIJ_FRM and +!! PM25_FRM. The intermediate variablse K...ANH4IJ_loss are needed to +!! calculate the final quantities. +K ,ppb2 ,exp(118.87-24084/TEMP2[4]-6.025*log(TEMP2[4])) +P1 , ,exp(8763/TEMP2[4]+19.12*log(TEMP2[4])-135.94) +P2 , ,exp(9969/TEMP2[4]+16.22*log(TEMP2[4])-122.65) +P3 , ,exp(13875/TEMP2[4]+24.46*log(TEMP2[4])-182.61) +a , ,1-RH[0]/100 +K_prime ,ppb2 ,(P1[0]-P2[0]*a[0]+(P3[0]*a[0]*a[0]))*(a[0]^1.75)*K[0] +sqrt_Ki ,ppb ,sqrt(RH[0]<=61 ? K[0] : K_prime[0]) +max_NO3_loss ,ug m-3 ,745.7/TEMP2[4]*sqrt_Ki[0] +PM25_NO3_loss ,ug m-3 ,max_NO3_loss[0]<=PM25_NO3[0] ? max_NO3_loss[0] : PM25_NO3[0] +ANO3IJ_loss ,ug m-3 ,max_NO3_loss[0]<=ANO3IJ[0] ? max_NO3_loss[0] : ANO3IJ[0] +PM25_NH4_loss ,ug m-3 ,PM25_NO3_loss[0]*(18/62) +ANH4IJ_loss ,ug m-3 ,ANO3IJ_loss[0]*(18/62) +PMIJ_FRM ,ug m-3 ,ATOTIJ[0]-(ANO3IJ_loss[0]+ANH4IJ_loss[0]) \ + +0.24*(ASO4IJ[0]+ANH4IJ[0]-ANH4IJ_loss[0])+0.5 +PM25_FRM ,ug m-3 ,PM25_TOT[0]-(PM25_NO3_loss[0]+PM25_NH4_loss[0]) \ + +0.24*(PM25_SO4[0]+PM25_NH4[0]-PM25_NH4_loss[0])+0.5 diff --git a/CCTM/src/MECHS/cracmm1amore_aq/SpecDef_cracmm1amore_aq.txt b/CCTM/src/MECHS/cracmm1amore_aq/SpecDef_cracmm1amore_aq.txt index 23d8a7487..44a76c558 100644 --- a/CCTM/src/MECHS/cracmm1amore_aq/SpecDef_cracmm1amore_aq.txt +++ b/CCTM/src/MECHS/cracmm1amore_aq/SpecDef_cracmm1amore_aq.txt @@ -190,10 +190,10 @@ AOCIJ ,ugC m-3 ,PMF_OC[3] AOMIJ ,ug m-3 ,PMF_OA[3] !!! Anthropogenic-VOC Derived Organic Aerosol -AORGAJ ,ug m-3 ,PMF_ASOA[3] +AORGAIJ ,ug m-3 ,PMF_ASOA[3] !!! Biogenic-VOC Derived Organic Aerosol -AORGBJ ,ug m-3 ,PMF_BSOA[3] +AORGBIJ ,ug m-3 ,PMF_BSOA[3] !!! Cloud-Processed SOA AORGCJ ,ug m-3 ,AORGCJ[1] diff --git a/CCTM/src/MECHS/cracmm2/SpecDef_Conc_cracmm2.txt b/CCTM/src/MECHS/cracmm2/SpecDef_Conc_cracmm2.txt new file mode 100644 index 000000000..f956bd437 --- /dev/null +++ b/CCTM/src/MECHS/cracmm2/SpecDef_Conc_cracmm2.txt @@ -0,0 +1,387 @@ +!#start YYYYJJJ 010000 +!#end YYYYJJJ 000000 +#layer 1 + +/ +! This Species Definition File is for Use with the COMBINE tool built for +! post-processing CMAQ output. It is compatible with CMAQv5.2. +! Date: May 12 2017 + +! Output variables that begin with 'PM' represent those in which a size cut was +! applied based on modeled aerosol mode parameters. For example, PM25_NA is all +! sodium that falls below 2.5 um diameter. These 'PM' variables are used for +! comparisons at IMPROVE and CSN sites. + +! Output variables that begin with 'PMAMS' represent the mass that would have +! been detected by an Aerosol Mass Spectrometer. + +! Output variables beginning with 'A' (aside from AIR_DENS) represent a +! combination of aerosol species in which no size cut was applied. For example, +! ASO4IJ is the sum of i-mode and j-mode sulfate. These 'A' variables are used +! for comparisons at CASTNet sites. + +! Output variables beginning with 'PMC' refer to the coarse fraction of total PM, +! computed by summing all modes and subtracting the PM2.5 fraction. These 'PMC' +! variables are used for comparisons at SEARCH sites. + +! This Species Definition File is just for use with the uncoupled, offline CMAQ, +! model. If you are processing WRF-CMAQ results, a different Species Definition +! file is required. + +/ File [1]: CMAQ conc/aconc file +/ File [2]: METCRO3D file +/ File [3]: ELMO/AELMO file +/ File [4]: METCRO2D file +/ +/new species ,units ,expression + +!-------------------------------------------! +!------------- Meteorology -----------------! +!-------------------------------------------! +AIR_DENS ,kg m-3 ,DENS[2] +RH ,% ,100.00*RH[3] +SFC_TMP ,C ,(TEMP2[4]-273.15) +PBLH ,m ,PBL[4] +SOL_RAD ,W m-2 ,RGRND[4] +precip ,cm ,RC[4]>=0 ? RN[4]+RC[4] : RN[4] +WSPD10 ,m s-1 ,WSPD10[4] +WDIR10 ,deg ,WDIR10[4] + +!-------------------------------------------! +!--------------- Gases ---------------------! +!-------------------------------------------! +CO ,ppbV ,1000.0*CO[1] +H2O2 ,ppbV ,1000.0*H2O2[1] +HNO3 ,ppbV ,1000.0*HNO3[1] +HNO3_UGM3 ,ug m-3 ,1000.0*(HNO3[1]*2.1756*DENS[2]) +HONO ,ppbV ,1000.0*HONO[1] +HOX ,ppbV ,1000.0*(HO[1]+HO2[1]) +OH ,ppbV ,1000.0*HO[1] +N2O5 ,ppbV ,1000.0*N2O5[1] +NH3 ,ppbV ,1000.0*NH3[1] +NH3_UGM3 ,ug m-3 ,1000.0*(NH3[1]*0.5880*DENS[2]) +NHX ,ug m-3 ,1000.0*(NH3[1]*0.5880*DENS[2])+ANH4I[1]+ANH4J[1]+ANH4K[1] +NO ,ppbV ,1000.0*NO[1] +NO2 ,ppbV ,1000.0*NO2[1] +NOX ,ppbV ,1000.0*(NO[1] + NO2[1]) +ANO3_PPB ,ppbV ,(ANO3I[1]+ANO3J[1]+ANO3K[1])/(DENS[2]*(62.0/28.97)) +NTR ,ppbV ,1000.0*(ONIT[1]+ISON[1]+INALD[1]+TRPN[1]+HONIT[1]), organic nitrates +PANS ,ppbV ,1000.0*(PAN[1]+PPN[1]+MPAN[1]) +NOY ,ppbV ,1000.0*(NO[1]+NO2[1]+NO3[1]+2*N2O5[1]+HONO[1] \ + +HNO3[1]+HNO4[1]+PAN[1]+PPN[1]+MPAN[1] \ + +ISON[1]+INALD[1]+IPX[1]+TRPN[1]+ONIT[1]) \ + +HONIT[1]+ANO3_PPB[0] +O3 ,ppbV ,1000.0*O3[1] +SO2 ,ppbV ,1000.0*SO2[1] +SO2_UGM3 ,ug m-3 ,1000.0*(SO2[1]*2.2118*DENS[2]) +TERP ,ppbV ,1000.0*(API[1]+LIM[1]), a-pinene and limonene monoterpenes in CRACMM2 + +! Deprecate these names in future +ETH ,ppbV ,1000.0*ETE[1], ethene is ETE in CRACMM +ETHA ,ppbV ,1000.0*ETH[1], ethane is ETH in CRACMM +ALD2 ,ppbV ,1000.0*ACD[1], acetaldehyde is ACD in CRACMM +FORM ,ppbV ,1000.0*HCHO[1], formaldehyde is HCHO in CRACMM +ISOP ,ppbV ,1000.0*ISO[1], isoprene is ISO in CRACMM +TOL ,ppbV ,1000.0*TOL[1] + +! Hydrocarbons for evaluation. Note an "s" on the end indicates a collection of species from AQS +ACETALDEHYDE ,ppbV ,1000.0*ACD[1] +ACETYLENE ,ppbV ,1000.0*ACE[1] +ACROLEIN ,ppbV ,1000.0*ACRO[1] +ACETONE ,ppbV ,1000.0*ACT[1] +BUTADIENE13 ,ppbV ,1000.0*BDE13[1] +BENZENE ,ppbV ,1000.0*BEN[1] +ETHYLENE ,ppbV ,1000.0*ETE[1], ethene is ETE in CRACMM +ETHANE ,ppbV ,1000.0*ETH[1], ethane is ETH in CRACMM +ISOPRENE ,ppbV ,1000.0*ISO[1], isoprene is ISO in CRACMM +FORMALDEHYDE ,ppbV ,1000.0*HCHO[1], formaldehyde is HCHO in CRACMM +MEKETONE ,ppbV ,1000.0*MEK[1] +TOLUENE ,ppbV ,1000.0*TOL[1] +XYLENES ,ppbV ,1000.0*(XYL[1]+EBZ[1]+STY[1]) +ETHB ,ppbV ,1000.0*EBZ[1] +STYRENE ,ppbV ,1000.0*STY[1] +HCPROPANES ,ppbV ,1000.0*(HC3[1]) +HCPENTANES ,ppbV ,1000.0*(HC5[1]) +HCDECANES ,ppbV ,1000.0*(HC10[1]), formerly HC8 +OLEFINS ,ppbV ,1000.0*(OLI[1]+OLT[1]) +ABPINENES ,ppbV ,1000.0*(API[1]) + +!! Unused Gases. Presented Here for illustration. Users can uncomment +!! them if they choose. +ALDX ,ppbV ,1000.0*ALD[1], C3 and higher aldehydes is ALD in CRACMM +!NOZ ,ppbV ,NOY[0]-NOX[0] +!SULF ,ppbV ,1000.0*SULF[1] +! SIGROC: L/S/IVOC alk and oxy gas species +LSIVROC ,ppbC ,1000.0* (9.5*VROCIOXY[1] \ + +14.0*VROCP5ARO[1]+13.0*VROCP6ARO[1] \ + +30.0*VROCN2ALK[1]+29.0*VROCN1ALK[1] \ + +28.0*VROCP0ALK[1]+27.0*VROCP1ALK[1] \ + +24.0*VROCP2ALK[1]+21.0*VROCP3ALK[1] \ + +18.0*VROCP4ALK[1]+14.0*VROCP5ALK[1] \ + +13.0*VROCP6ALK[1]\ + +17.0*VROCN2OXY2[1]+11.0*VROCN2OXY4[1] \ + +7.0*VROCN2OXY8[1]+20.0*VROCN1OXY1[1] \ + +12.0*VROCN1OXY3[1]+8.0*VROCN1OXY6[1] \ + +14.0*VROCP0OXY2[1]+10.0*VROCP0OXY4[1] \ + +17.0*VROCP1OXY1[1]+11.0*VROCP1OXY3[1] \ + +12.0*VROCP2OXY2[1]+11.0*VROCP3OXY2[1] \ + +9.0*VROCP4OXY2[1]+11.0*VROCP5OXY1[1] \ + +9.0*VROCP6OXY1[1] ), +! VROC: Total gas-phase (vapor) reactive organic carbon (stable species only) +VROC ,ppbC ,1000.0*(2.0*ACD[1]+2.0*ACE[1] \ + +3.0*ACRO[1]+3.0*ACT[1]+3.0*ALD[1]+10*API[1] \ + +7.0*BALD[1]+4.0*BDE13[1]+6.0*BEN[1] \ + +9.0*CSL[1]+5.0*DCB1[1]+6.0*DCB2[1]+4.0*DCB3[1] \ + +20.0*ELHOM[1] \ + +2.0*EOH[1]+2.0*ETE[1]+2.0*ETEG[1]+2.0*ETH[1] \ + +5.0*FURAN[1]+4.0*FURANONE[1]+2.0*GLY[1]+10.0*HOM[1] \ + +3.0*HC3[1]+5.0*HC5[1]+10.0*HC10[1] \ + +1.0*HCHO[1]+3.0*HKET[1] \ + +5.0*IEPOX[1]+5.0*ISHP[1]\ + +5.0*ISO[1]+5.0*KET[1] \ + +10.0*LIM[1]+10.0*LIMAL[1]+4.0*MACR[1]+4*MAHP[1] \ + +7.0*MCT[1] \ + +4.0*MEK[1]+3.0*MGLY[1]+1.0*MOH[1]+4.0*MVK[1] \ + +10.0*NAPH[1]+5.0*OLI[1]+3.0*OLT[1] \ + +1.0*OP1[1]+2.0*OP2[1]+8.0*OP3[1]+10.0*OPB[1] \ + +1.0*ORA1[1]+2.0*ORA2[1] \ + +10.0*PINAL[1] \ + +6.0*PHEN[1]+3.0*PROG[1] \ + +3.0*ROH[1]+15.0*SESQ[1]+2.1*SLOWROC[1] \ + +7.0*TOL[1]+5.0*UALD[1] \ + +8.0*XYL[1]+8.0*EBZ[1]+8.0*STY[1] \ + +2.0*PAA[1]+2.0*PAN[1]+3.0*PPN[1]+4.0*MPAN[1] \ + +4.0*ONIT[1]+5.0*ISON[1] \ + +5.0*INALD[1]+5.0*IPX[1]+10.0*TRPN[1]+10.0*HONIT[1] ) \ + +LSIVROC[0] , + +!-------------------------------------------! +!--------------- Particles -----------------! +!-------------------------------------------! +!! Crustal Elements +AFEJ ,ug m-3 ,AFEJ[1] +AALJ ,ug m-3 ,AALJ[1] +ASIJ ,ug m-3 ,ASIJ[1] +ATIJ ,ug m-3 ,ATIJ[1] +ACAJ ,ug m-3 ,ACAJ[1] +AMGJ ,ug m-3 ,AMGJ[1] +AKJ ,ug m-3 ,AKJ[1] +AMNJ ,ug m-3 ,AMNJ[1] +ASOILJ ,ug m-3 ,2.20*AALJ[1]+2.49*ASIJ[1]+1.63*ACAJ[1]+2.42*AFEJ[1]+1.94*ATIJ[1] + +!! Non-Crustal Inorganic Particle Species +AHPLUSIJ ,umol m-3 ,(AH3OPI[1]+AH3OPJ[1])*1.0/19.0 +ANAK ,ug m-3 ,0.8373*ASEACAT[1]+0.0626*ASOIL[1]+0.0023*ACORS[1] +AMGK ,ug m-3 ,0.0997*ASEACAT[1]+0.0170*ASOIL[1]+0.0032*ACORS[1] +AKK ,ug m-3 ,0.0310*ASEACAT[1]+0.0242*ASOIL[1]+0.0176*ACORS[1] +ACAK ,ug m-3 ,0.0320*ASEACAT[1]+0.0838*ASOIL[1]+0.0562*ACORS[1] +ACLIJ ,ug m-3 ,ACLI[1]+ACLJ[1] +AECIJ ,ug m-3 ,AECI[1]+AECJ[1] +ANAIJ ,ug m-3 ,ANAJ[1]+ANAI[1] +ANO3IJ ,ug m-3 ,ANO3I[1]+ANO3J[1] +ANO3K ,ug m-3 ,ANO3K[1] +TNO3 ,ug m-3 ,2175.6*(HNO3[1]*DENS[2])+ANO3I[1]+ANO3J[1]+ANO3K[1] +ANH4IJ ,ug m-3 ,ANH4I[1]+ANH4J[1] +ANH4K ,ug m-3 ,ANH4K[1] +ASO4IJ ,ug m-3 ,ASO4I[1]+ASO4J[1] +ASO4K ,ug m-3 ,ASO4K[1] + +!! Organic Particle Species +! Why is there an APOCI and APOCJ in the output? It doesn't match below +APOCI ,ugC m-3, AROCN2ALKI[1]/1.39 + AROCN1ALKI[1]/1.32 \ + + AROCP0ALKI[1]/1.17 + AROCP1ALKI[1]/1.17 +APOCJ ,ugC m-3, AROCN2ALKJ[1]/1.39 + AROCN1ALKJ[1]/1.32 \ + + AROCP0ALKJ[1]/1.17 + AROCP1ALKJ[1]/1.17 \ + + AROCP2ALKJ[1]/1.17 + AROCP3ALKJ[1]/1.17 +APOCIJ ,ugC m-3, APOCI[0] + APOCJ[0] + +APOMI ,ug m-3, AROCN2ALKI[1] + AROCN1ALKI[1] \ + + AROCP0ALKI[1] + AROCP1ALKI[1] + APNCOMI[1] +APOMJ ,ug m-3, AROCN2ALKJ[1] + AROCN1ALKJ[1] + AROCP0ALKJ[1] \ + + AROCP1ALKJ[1] + AROCP2ALKJ[1] + AROCP3ALKJ[1] + APNCOMJ[1] +APOMIJ ,ug m-3, APOMI[0] + APOMJ[0] +ASOCI ,ugC m-3, AROCN2OXY2I[1]/1.42 + AROCN2OXY4I[1]/1.67 \ + + AROCN2OXY8I[1]/2.17 + AROCN1OXY1I[1]/1.29 \ + + AROCN1OXY3I[1]/1.54 + AROCN1OXY6I[1]/1.92 \ + + AROCP0OXY2I[1]/1.42 + AROCP0OXY4I[1]/1.67 \ + + AROCP1OXY1I[1]/1.29 + AROCP1OXY3I[1]/1.54 +ASOCJ ,ugC m-3, AHOMJ[1]/2.08 + AELHOMJ[1]/1.67 + AISO3NOSJ[1]/2.27 \ + + AISO3OSJ[1]/3.6 + AGLYJ[1]/2.13 + AORGCJ[1]/2 \ + + AOP3J[1]/1.92 + ASOATJ[1]/2.31 + AROCN2OXY2J[1]/1.42 \ + + AROCN2OXY4J[1]/1.67 + AROCN2OXY8J[1]/2.17 + AROCN1OXY1J[1]/1.29 \ + + AROCN1OXY3J[1]/1.54 + AROCN1OXY6J[1]/1.92 + AROCP0OXY2J[1]/1.42 \ + + AROCP0OXY4J[1]/1.67 + AROCP1OXY1J[1]/1.29 + AROCP1OXY3J[1]/1.54 \ + + AROCP2OXY2J[1]/1.42 + AROCP3OXY2J[1]/1.42 +ASOCIJ ,ugC m-3, ASOCI[0] + ASOCJ[0] + +ASOMI ,ug m-3, AROCN2OXY2I[1] + AROCN2OXY4I[1] \ + + AROCN2OXY8I[1] + AROCN1OXY1I[1] \ + + AROCN1OXY3I[1] + AROCN1OXY6I[1] \ + + AROCP0OXY2I[1] + AROCP0OXY4I[1] \ + + AROCP1OXY1I[1] + AROCP1OXY3I[1] +ASOMJ ,ug m-3, AHOMJ[1] + AELHOMJ[1] + AISO3NOSJ[1] \ + + AISO3OSJ[1] + AGLYJ[1] + AORGCJ[1] \ + + AOP3J[1] + ASOATJ[1] + AROCN2OXY2J[1] \ + + AROCN2OXY4J[1] + AROCN2OXY8J[1] + AROCN1OXY1J[1] \ + + AROCN1OXY3J[1] + AROCN1OXY6J[1] + AROCP0OXY2J[1] \ + + AROCP0OXY4J[1] + AROCP1OXY1J[1] + AROCP1OXY3J[1] \ + + AROCP2OXY2J[1] + AROCP3OXY2J[1] + +ASOMIJ ,ug m-3 ,ASOMI[0] + ASOMJ[0] + +AOCI ,ugC m-3 ,APOCI[0] + ASOCI[0] +AOCJ ,ugC m-3 ,APOCJ[0] + ASOCJ[0] + +AOCIJ ,ugC m-3 ,APOCIJ[0] + ASOCIJ[0] + + +AOMI ,ug m-3 ,APOMI[0] + ASOMI[0] +AOMJ ,ug m-3 ,APOMJ[0] + ASOMJ[0] + +AOMIJ ,ug m-3 ,APOMIJ[0] + ASOMIJ[0] + +!!! Anthropogenic-VOC Derived Organic Aerosol +AORGAI ,ug m-3 ,AROCN2OXY2I[1]+AROCN2OXY4I[1]+AROCN2OXY8I[1]+AROCN1OXY1I[1] \ + +AROCN1OXY3I[1]+AROCN1OXY6I[1]+AROCP0OXY2I[1]+AROCP0OXY4I[1] \ + +AROCP1OXY1I[1]+AROCP1OXY3I[1] + +AORGAJ ,ug m-3 ,AROCN2OXY2J[1]+AROCN2OXY4J[1]+AROCN2OXY8J[1]+AROCN1OXY1J[1] \ + +AROCN1OXY3J[1]+AROCN1OXY6J[1]+AROCP0OXY2J[1]+AROCP0OXY4J[1] \ + +AROCP1OXY1J[1]+AROCP1OXY3J[1]+AROCP2OXY2J[1]+AROCP3OXY2J[1] \ + +AOP3J[1] +ASOATJ[1] +AORGAIJ ,ug m-3 ,AORGAI[0] + AORGAJ[0] + +!!! Biogenic-VOC Derived Organic Aerosol +AORGBIJ ,ug m-3 ,AISO3NOSJ[1] +AISO3OSJ[1] +AHOMJ[1] + AELHOMJ[1] + +!!! Cloud-Processed SOA +AORGCJ ,ug m-3 ,AORGCJ[1] +!!! Remaining SOA +AGLYJ ,ug m-3 ,AGLYJ[1] + +!!! OM/OC ratios +AOMOCRAT_TOT , ,AOMIJ[0]/AOCIJ[0] + +!! Total PM Aggregates +ATOTI ,ug m-3 ,ASO4I[1] + ANH4I[1] + ANO3I[1] + ANAI[1] \ + +ACLI[1] + AECI[1] + AOMI[0] + AOTHRI[1] +ATOTJ ,ug m-3 ,ASO4J[1] + ANH4J[1] + ANO3J[1] + ANAJ[1] \ + +ACLJ[1] + AECJ[1] + AOMJ[0] + AOTHRJ[1] \ + +AFEJ[1] + AALJ[1] + ASIJ[1] + ATIJ[1] \ + +ACAJ[1] + AMGJ[1] + AKJ[1] + AMNJ[1] + +ATOTK ,ug m-3 ,ASO4K[1] + ANH4K[1] + ANO3K[1] + ACLK[1] \ + +ACORS[1] + ASOIL[1] + ASEACAT[1] +ATOTIJ ,ug m-3 ,ATOTI[0] + ATOTJ[0] +ATOTIJK ,ug m-3 ,ATOTI[0] + ATOTJ[0] + ATOTK[0] + +!! Unspeciated PM including non-carbon organic mass +AUNSPEC1IJ ,ug m-3 ,ATOTIJ[0] - (ASO4IJ[0] + ANO3IJ[0] \ + +ANH4IJ[0] + ACLIJ[0] \ + +ANAIJ[0] + AECIJ[0] \ + +AOCIJ[0] + ASOILJ[0]) +!! Non-Carbon Organic Mass +ANCOMIJ ,ug m-3 ,AOMIJ[0] - AOCIJ[0] + +!! Unspeciated PM excluding non-carbon organic mass +AUNSPEC2IJ ,ug m-3 ,AUNSPEC1IJ[0] - ANCOMIJ[0] + +!! AMS Projection of Output Concentrations +PMAMS_CL ,ug m-3 ,ACLI[1] *FAMSAIT[3] +ACLJ[1]*FAMSACC[3]+ACLK[1] *FAMSCOR[3] +PMAMS_NH4 ,ug m-3 ,ANH4I[1]*FAMSAIT[3]+ANH4J[1]*FAMSACC[3]+ANH4K[1]*FAMSCOR[3] +PMAMS_NO3 ,ug m-3 ,ANO3I[1]*FAMSAIT[3]+ANO3J[1]*FAMSACC[3]+ANO3K[1]*FAMSCOR[3] +PMAMS_OA ,ug m-3 ,AOMI[0] *FAMSAIT[3]+AOMJ[0] *FAMSACC[3] +PMAMS_SO4 ,ug m-3 ,ASO4I[1]*FAMSAIT[3]+ASO4J[1]*FAMSACC[3]+ASO4K[1]*FAMSCOR[3] + +!! PM1 Cutoff Output +PM1_TOT ,ug m-3 ,ATOTI[0]*FPM1AIT[3]+ATOTJ[0]*FPM1ACC[3]+ATOTK[0]*FPM1COR[3] + +!! Unused PM1 Species. Included Here for demonstration +!PM1_EC ,ug m-3 ,AECI[1] *FPM1AIT[3] +AECJ[1] *FPM1ACC[3] +!PM1_OC ,ugC m-3 ,AOCI[0] *FPM1AIT[3] +AOCJ[0] *FPM1ACC[3] +!PM1_OM ,ug m-3 ,AOMI[0] *FPM1AIT[3] +AOMJ[0] *FPM1ACC[3] +!PM1_SO4 ,ug m-3 ,ASO4I[1]*FPM1AIT[3] +ASO4J[1]*FPM1ACC[3] +ASO4K[1]*FPM1COR[3] +!PM1_CL ,ug m-3 ,ACLI[1] *FPM1AIT[3] +ACLJ[1] *FPM1ACC[3] +ACLK[1] *FPM1COR[3] +!PM1_NA ,ug m-3 ,ANAI[1] *FPM1AIT[3] +ANAJ[1] *FPM1ACC[3] +ANAK[0] *FPM1COR[3] +!PM1_MG ,ug m-3 , AMGJ[1] *FPM1ACC[3] +AMGK[0] *FPM1COR[3] +!PM1_K ,ug m-3 , AKJ[1] *FPM1ACC[3] +AKK[0] *FPM1COR[3] +!PM1_CA ,ug m-3 , ACAJ[1] *FPM1ACC[3] +ACAK[0] *FPM1COR[3] +!PM1_NH4 ,ug m-3 ,ANH4I[1] *FPM1AIT[3]+ANH4J[1]*FPM1ACC[3] +ANH4K[1]*FPM1COR[3] +!PM1_NO3 ,ug m-3 ,ANO3I[1] *FPM1AIT[3]+ANO3J[1]*FPM1ACC[3] +ANO3K[1]*FPM1COR[3] +!PM1_SOIL ,ug m-3 ,ASOILJ[0]*FPM1ACC[3]+(ASOIL[1]+ACORS[1])*FPM1COR[3] +!PM1_UNSPEC1 ,ug m-3 ,PM1_TOT[0] - (PM1_CL[0] + PM1_EC[0]+ PM1_NA[0] + PM1_NH4[0] + \ +! PM1_NO3[0]+ PM1_OC[0]+ PM1_SOIL[0]+ PM1_SO4[0] ) +!PM1_UNSPCRS ,ug m-3 ,ATOTK[0] *FPM1COR[3] - (ASO4K[1]*FPM1COR[3] \ +! +ACLK[1]*FPM1COR[3] \ +! +ANAK[0]*FPM1COR[3] \ +! +AMGK[0]*FPM1COR[3] \ +! +AKK[0]*FPM1COR[3] \ +! +ACAK[0]*FPM1COR[3] \ +! +ANH4K[1]*FPM1COR[3] \ +! +ANO3K[1]*FPM1COR[3]) + +!! PM2.5 species computed using modeled size distribution +PM25_HP ,ug m-3 ,(AH3OPI[1]*FPM25AIT[3]+AH3OPJ[1]*FPM25ACC[3]+AH3OPK[1]*FPM25COR[3])*1.0/19.0 +PM25_CL ,ug m-3 ,ACLI[1]*FPM25AIT[3]+ACLJ[1]*FPM25ACC[3]+ACLK[1]*FPM25COR[3] +PM25_EC ,ug m-3 ,AECI[1]*FPM25AIT[3]+AECJ[1]*FPM25ACC[3] +PM25_NA ,ug m-3 ,ANAI[1]*FPM25AIT[3]+ANAJ[1]*FPM25ACC[3]+ANAK[0]*FPM25COR[3] +PM25_MG ,ug m-3 , AMGJ[1]*FPM25ACC[3]+AMGK[0]*FPM25COR[3] +PM25_K ,ug m-3 , AKJ[1] *FPM25ACC[3]+AKK[0] *FPM25COR[3] +PM25_CA ,ug m-3 , ACAJ[1]*FPM25ACC[3]+ACAK[0]*FPM25COR[3] +PM25_NH4 ,ug m-3 ,ANH4I[1]*FPM25AIT[3]+ANH4J[1]*FPM25ACC[3]+ANH4K[1]*FPM25COR[3] +PM25_NO3 ,ug m-3 ,ANO3I[1]*FPM25AIT[3]+ANO3J[1]*FPM25ACC[3]+ANO3K[1]*FPM25COR[3] +PM25_OC ,ugC m-3 ,AOCI[0] *FPM25AIT[3]+AOCJ[0]*FPM25ACC[3] +PM25_OM ,ug m-3 ,AOMI[0] *FPM25AIT[3]+AOMJ[0]*FPM25ACC[3] +PM25_SOIL ,ug m-3 ,ASOILJ[0]*FPM25ACC[3]+ASOIL[1]*FPM25COR[3] +PM25_SO4 ,ug m-3 ,ASO4I[1]*FPM25AIT[3]+ASO4J[1]*FPM25ACC[3]+ASO4K[1]*FPM25COR[3] +PM25_TOT ,ug m-3 ,ATOTI[0]*FPM25AIT[3]+ATOTJ[0]*FPM25ACC[3]+ATOTK[0]*FPM25COR[3] +PM25_UNSPEC1 ,ug m-3 ,PM25_TOT[0]-(PM25_CL[0]+PM25_EC[0]+PM25_NA[0]+PM25_NH4[0] \ + +PM25_NO3[0]+PM25_OC[0]+PM25_SOIL[0]+PM25_SO4[0]) +PM25_UNSPCRS ,ug m-3 ,ATOTK[0]*FPM25COR[3] - (ASO4K[1]*FPM25COR[3] \ + +ACLK[1]*FPM25COR[3] \ + +ANAK[0]*FPM25COR[3] \ + +AMGK[0]*FPM25COR[3] \ + +AKK[0]*FPM25COR[3] \ + +ACAK[0]*FPM25COR[3] \ + +ANH4K[1]*FPM25COR[3] \ + +ANO3K[1]*FPM25COR[3]) + + +!! Fine particle acidity (pH). pH is undefined if there is no aerosol water. +!Do not trust predictions when hourly water is <0.01 ug m-3. FINEPHF will +!have large negative value (-9.999E36) when pH is not to be trusted. +!AH2OIJ ,ug m-3 ,AH2OI[1]+AH2OJ[1] +!HPMOLAL ,mol kg-1 ,AHPLUSIJ[0]/AH2OIJ[0]*1000.0 +!ACIDITYTEMP , ,-1*LOG10(HPMOLAL[0]) +!FINEPHF , ,AH2OIJ[0]>0.01 ? ACIDITYTEMP[0] : -9.999E36 + +!! PM10.0 and Coarse-Sized Species +PM10 ,ug m-3 ,ATOTI[0]*FPM10AIT[3]+ATOTJ[0]*FPM10ACC[3]+ATOTK[0]*FPM10COR[3] + +PMC_CL ,ug m-3 ,ACLI[1]*FPM10AIT[3] +ACLJ[1]*FPM10ACC[3] +ACLK[1]*FPM10COR[3] -PM25_CL[0] +PMC_NA ,ug m-3 ,ANAI[1]*FPM10AIT[3] +ANAJ[1]*FPM10ACC[3] +ANAK[0]*FPM10COR[3] -PM25_NA[0] +PMC_NH4 ,ug m-3 ,ANH4I[1]*FPM10AIT[3]+ANH4J[1]*FPM10ACC[3]+ANH4K[1]*FPM10COR[3]-PM25_NH4[0] +PMC_NO3 ,ug m-3 ,ANO3I[1]*FPM10AIT[3]+ANO3J[1]*FPM10ACC[3]+ANO3K[1]*FPM10COR[3]-PM25_NO3[0] +PMC_SO4 ,ug m-3 ,ASO4I[1]*FPM10AIT[3]+ASO4J[1]*FPM10ACC[3]+ASO4K[1]*FPM10COR[3]-PM25_SO4[0] +PMC_TOT ,ug m-3 ,PM10[0]-PM25_TOT[0] + +!! FRM PM Equivalent Calculation +!! This section calculates the FRM applicable PM species, PMIJ_FRM and +!! PM25_FRM. The intermediate variablse K...ANH4IJ_loss are needed to +!! calculate the final quantities. +K ,ppb2 ,exp(118.87-24084/TEMP2[4]-6.025*log(TEMP2[4])) +P1 , ,exp(8763/TEMP2[4]+19.12*log(TEMP2[4])-135.94) +P2 , ,exp(9969/TEMP2[4]+16.22*log(TEMP2[4])-122.65) +P3 , ,exp(13875/TEMP2[4]+24.46*log(TEMP2[4])-182.61) +a , ,1-RH[0]/100 +K_prime ,ppb2 ,(P1[0]-P2[0]*a[0]+(P3[0]*a[0]*a[0]))*(a[0]^1.75)*K[0] +sqrt_Ki ,ppb ,sqrt(RH[0]<=61 ? K[0] : K_prime[0]) +max_NO3_loss ,ug m-3 ,745.7/TEMP2[4]*sqrt_Ki[0] +PM25_NO3_loss ,ug m-3 ,max_NO3_loss[0]<=PM25_NO3[0] ? max_NO3_loss[0] : PM25_NO3[0] +ANO3IJ_loss ,ug m-3 ,max_NO3_loss[0]<=ANO3IJ[0] ? max_NO3_loss[0] : ANO3IJ[0] +PM25_NH4_loss ,ug m-3 ,PM25_NO3_loss[0]*(18/62) +ANH4IJ_loss ,ug m-3 ,ANO3IJ_loss[0]*(18/62) +PMIJ_FRM ,ug m-3 ,ATOTIJ[0]-(ANO3IJ_loss[0]+ANH4IJ_loss[0]) \ + +0.24*(ASO4IJ[0]+ANH4IJ[0]-ANH4IJ_loss[0])+0.5 +PM25_FRM ,ug m-3 ,PM25_TOT[0]-(PM25_NO3_loss[0]+PM25_NH4_loss[0]) \ + +0.24*(PM25_SO4[0]+PM25_NH4[0]-PM25_NH4_loss[0])+0.5 diff --git a/CCTM/src/MECHS/cracmm2/SpecDef_cracmm2.txt b/CCTM/src/MECHS/cracmm2/SpecDef_cracmm2.txt index 6205ac986..d0b6d77db 100644 --- a/CCTM/src/MECHS/cracmm2/SpecDef_cracmm2.txt +++ b/CCTM/src/MECHS/cracmm2/SpecDef_cracmm2.txt @@ -30,7 +30,7 @@ / File [1]: CMAQ conc/aconc file / File [2]: METCRO3D file -/ File [3]: PMDIAG/APMDIAG file +/ File [3]: ELMO/AELMO file / File [4]: METCRO2D file / /new species ,units ,expression @@ -74,7 +74,7 @@ NOY ,ppbV ,1000.0*(NO[1]+NO2[1]+NO3[1]+2*N2O5[1]+HONO[1] \ O3 ,ppbV ,1000.0*O3[1] SO2 ,ppbV ,1000.0*SO2[1] SO2_UGM3 ,ug m-3 ,1000.0*(SO2[1]*2.2118*DENS[2]) -TERP ,ppbV ,1000.0*(API[1]+LIM[1]), a-pinene and limonene monoterpenes in CRACMM +TERP ,ppbV ,1000.0*(API[1]+LIM[1]), a-pinene and limonene monoterpenes in CRACMM2 ! Deprecate these names in future ETH ,ppbV ,1000.0*ETE[1], ethene is ETE in CRACMM @@ -111,7 +111,7 @@ ABPINENES ,ppbV ,1000.0*(API[1]) ALDX ,ppbV ,1000.0*ALD[1], C3 and higher aldehydes is ALD in CRACMM !NOZ ,ppbV ,NOY[0]-NOX[0] !SULF ,ppbV ,1000.0*SULF[1] -! SIGROC: S/IVOC alk and oxy gas species +! SIGROC: L/S/IVOC alk and oxy gas species LSIVROC ,ppbC ,1000.0* (9.5*VROCIOXY[1] \ +14.0*VROCP5ARO[1]+13.0*VROCP6ARO[1] \ +30.0*VROCN2ALK[1]+29.0*VROCN1ALK[1] \ @@ -154,6 +154,7 @@ VROC ,ppbC ,1000.0*(2.0*ACD[1]+2.0*ACE[1] \ +4.0*ONIT[1]+5.0*ISON[1] \ +5.0*INALD[1]+5.0*IPX[1]+10.0*TRPN[1]+10.0*HONIT[1] ) \ +LSIVROC[0] , + !-------------------------------------------! !--------------- Particles -----------------! !-------------------------------------------! @@ -193,10 +194,10 @@ AOCIJ ,ugC m-3 ,PMF_OC[3] AOMIJ ,ug m-3 ,PMF_OA[3] !!! Anthropogenic-VOC Derived Organic Aerosol -AORGAJ ,ug m-3 ,PMF_ASOA[3] +AORGAIJ ,ug m-3 ,PMF_ASOA[3] !!! Biogenic-VOC Derived Organic Aerosol -AORGBJ ,ug m-3 ,PMF_BSOA[3] +AORGBIJ ,ug m-3 ,PMF_BSOA[3] !!! Cloud-Processed SOA AORGCJ ,ug m-3 ,AORGCJ[1] diff --git a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md index 4d0a10c48..96120983e 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md @@ -33,7 +33,7 @@ This chapter briefly describes how to use some of the software tools supported b ## 8.2 Aggregating and Transforming Model Species Concentrations -The *combine* Fortran program, released as part of the CMAQ POST tools, can combine variables from CMAQ, emissions, or meteorology files into a new I/O API file. Model species can be aggregated or transformed into variables of interest, e.g., to change units from ppmV to ppbV or match observed quantities from a specific monitoring network. Model output files can be concatenated to create files for longer time periods, e.g., files with hourly data for individual days can be combined into a single file for an entire month. More information on the *combine* utility and its use can be found in this [README file.]( ../../POST/combine/README.md) +The *combine* Fortran program, released as part of the CMAQ POST tools, can combine variables from CMAQ output, emissions, or meteorology files into a new I/O API file. Model species can be aggregated or transformed into variables of interest, e.g., to change units from ppmV to ppbV or match observed quantities from a specific monitoring network. Model output files can be concatenated to create files for longer time periods, e.g., files with hourly data for individual days can be combined into a single file for an entire month. More information on the *combine* utility and its use can be found in this [README file.]( ../../POST/combine/README.md) The *combine* utility relies on a chemical mechanism-specific "Species Definition" files that prescribe how CMAQ output variables should be mapped and/or combined to become comparable to different measured gas, particle, and deposition species. When you download the CMAQ code, the Species Definition files corresponding to default model output variables are automatically included under the subdirectory "CCTM/src/MECHS". Within each of the listed mechanism folders, you will find files "SpecDef_MECH_NAME.txt" (for gas and aerosol species) and "SpecDef_dep_MECH_NAME.txt" (for deposition species) that contain a long list of species definitions and corresponding documentation. For example, the calculation of NOX in ppbV is given as ``` @@ -41,7 +41,13 @@ NOX ,ppbV ,1000.0*(NO[1] + NO2[1]) ``` where NO and NO2 are pulled from an hourly instantaneous [CCTM_CONC](CMAQ_UG_ch07_model_outputs.md#conc) or hourly average [CCTM_ACONC](CMAQ_UG_ch07_model_outputs.md#aconc) model output file in units of ppmV. -Note that some species aggregation is already happening within the CMAQ model. The CMAQ aerosol module explicitly represents a number of individual aerosol species that need to be combined for comparisons to measured total PM2.5 mass. The Explicit and Lumped Model Output (ELMO) capability introduced in CMAQv5.4 presribes the calculation of aggregated aerosol species (e.g., PM1, PM2.5, and PM10), as well as diagnostic values (e.g., aerosol surface area and number) and CMAQ calculates them online. The species are then written to the [CCTM_ELMO](CMAQ_UG_ch07_model_outputs.md#ELMO) or [CCTM_AELMO](CMAQ_UG_ch07_model_outputs.md#AELMO) output files. See [Apendix F](Appendix/CMAQ_UG_appendixF_elmo_output.md) for more information about the calculation of ELMO output variables and how this relates to use of the *combine* tool. +Note that some species aggregation is already happening within the CMAQ model. The CMAQ aerosol module explicitly represents a number of individual aerosol species that need to be combined for comparisons to measured total PM2.5 mass. The Explicit and Lumped Model Output (ELMO) capability introduced in CMAQv5.4 prescribes the calculation of aggregated aerosol species (e.g., PM1, PM2.5, and PM10), as well as diagnostic values (e.g., aerosol surface area and number) and CMAQ calculates them online. The species are then written to the [CCTM_ELMO](CMAQ_UG_ch07_model_outputs.md#ELMO) or [CCTM_AELMO](CMAQ_UG_ch07_model_outputs.md#AELMO) output files. + +The "SpecDef_MECH_NAME.txt" file relies on output from the CCTM_CONC (or CCTM_ACONC) and the CCTM_ELMO (or CCTM_AELMO) files in addition to meteorological variables for completing all of its calculations. Generally, gas-phase species coming from the direct CCTM_CONC output and aerosol species from CCTM_ELMO. For reference and transparency, the each mechanism folder also includes a file names "SpecDef_Conc_MECH_NAME.txt" which processes both gas- and aerosol species from the CCTM_CONC file (CCTM_ELMO variables is still needed for applying hard bounds on particle size, like 2.5 um). These "SpecDef_Conc_MECH_NAME.txt" files are provided for all Carbon Bond 6-based mechanisms and all CRACMM-based mechanisms. Either of these two approaches should yield highly similar or exactly equal results. + +Finally, the SpecDef_Dep_MECH_NAME.txt files are provided to processes deposition variable output from CMAQ. + +See [Apendix F](Appendix/CMAQ_UG_appendixF_elmo_output.md) for more information about the calculation of ELMO output variables and how this relates to use of the *combine* tool. ## 8.3 Model-Observation Pairing for Model Evaluation Once model output has been processed using *combine*, the *sitecmp* and *sitecmp_dailyo3* utilities can be used to match air pollutant measurements with the appropriate model predicted variables. This pairing of model and observed variables is specified in the run scripts for *sitecmp* and *sitecmp_dailyo3*. In *sitecmp_dailyo3* this step is controlled by the definition of environment variables OBS_SPECIES and OZONE. See the [README.md](../../POST/sitecmp_dailyo3/README.md) and the sample run script in the [*sitecmp_dailyo3* scripts](../../POST/sitecmp_dailyo3/scripts) folder for more information on setting these environment variables. The run script for the *sitecmp* utility can be customized for many different types of chemical and meteorological quantities as described in the [README.md](../../POST/sitecmp/README.md) for sitecmp. Sample run scripts for the AQS, CSN, IMPROVE, NADP and SEARCH networks based on the 2016 CMAQ test case are provided in the [*sitecmp* scripts](../../POST/sitecmp/scripts) folder. In addition, the [README.md](../../POST/sitecmp/scripts/README.md) file within the *sitecmp* scripts folder provides the configuration options for monitoring networks. Note that there are multiple formats for CSN and SEARCH observed data files depending on the year. The README.txt file is broken into different sections to reflect the change in species names in the observation files for these two networks. (For example, elemental carbon measurements from the CSN network are labeled as “ec_niosh” in 2009 and earlier, “ec_tor” in 2010, and “88380_val” starting in 2011.) diff --git a/POST/combine/README.md b/POST/combine/README.md index 4f4757ee1..906ff38f7 100644 --- a/POST/combine/README.md +++ b/POST/combine/README.md @@ -79,7 +79,9 @@ Table 2. Functions over all Input Files per Output Time Step Variables from input files are defined by their name followed by its file number enclosed in brackets. Once defined in a species definition file, variables can subsequently be referred to by their name and the number zero enclosed in brackets. Adding a + or - sign before the file number within the bracket instructs combine to use the variable value for the next or previous timestep instead of the current time step when evaluating the expression. This can be used to define variables that are computed as difference between the current and previous time step, for example to compute hourly precipitation as the difference in WRF cumulative precipitation values between successive timesteps. -Examples of possible post-processing expressions are shown in the sample SPECIES_DEF files under the scripts/spec_def_files folder in this directory. Species definitions are used to specify how the concentrations of raw output species from CMAQ should be aggregated or transformed into variables of interest. For example, the concentrations of NO and NO2 from CMAQ can be added together to yield the concentration of NOx. Because each chemical mechanism being used in CMAQ differs in the number and kind of species it treats, each example file is specific to a certain chemical mechanism. The sample spec_def files provided have been labeled according to the mechanism each corresponds to. In addition to each spec_def file, a spec_dep file exists for each chemical mechanism that demonstrates how deposition rates can be aggregated to useful quantities (these are indicated with the "Dep" label in the file name). Users wanting to apply `combine` to other post-processing tasks (e.g. aggregating raw DDM3D or ISAM output species, aggregating individual aerosol species from DESID diagnostic emission files into total PM emissions) can use these sample files as a starting point for creating their own SPECIES_DEF files supporting such applications. +Examples of possible post-processing expressions are shown in the sample SPECIES_DEF files under the scripts/spec_def_files folder in this directory. Species definitions are used to specify how the concentrations of raw output species from CMAQ should be aggregated or transformed into variables of interest. For example, the concentrations of NO and NO2 from CMAQ can be added together to yield the concentration of NOx. Because each chemical mechanism being used in CMAQ differs in the number and kind of species it treats, each example file is specific to a certain chemical mechanism. The sample SpecDef files provided have been labeled according to the mechanism each corresponds to. In version 5.5, we have added SpecDef_Conc files which explicitly map output from the CCTM_CONC and CCTM_ACONC variables to post-processed variables consistent with output from the ELMO module. See [User Guide section 8.2](../../../DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md). + +In addition to each SpecDef file, a SpecDef_Dep file exists for each chemical mechanism that demonstrates how deposition rates can be aggregated to useful quantities (these are indicated with the "Dep" label in the file name). Users wanting to apply `combine` to other post-processing tasks (e.g. aggregating raw DDM3D or ISAM output species, aggregating individual aerosol species from DESID diagnostic emission files into total PM emissions) can use these sample files as a starting point for creating their own SPECIES_DEF files supporting such applications. **If you have questions about the sample species definition files or find something that does not seem correct please discuss it with us by creating an "Issue" through GitHub or contacting the CMAS Help Desk: http://www.cmascenter.org.** From ef113a51ec3fcdd1910f1f694c8cf40aa67eca58 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Thu, 5 Sep 2024 14:47:39 -0400 Subject: [PATCH 203/375] Update CMAQ_UG_ch06_model_configuration_options.md Update Pleim et al 2019, add Pleim et al 2022 --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 8117fb34b..e4eb73a87 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -1103,7 +1103,9 @@ Pleim, J.E. (2007b). A combined local and nonlocal closure model for the atmosph Pleim, J., & Ran, L. (2011). Surface flux modeling for air quality applications. Atmosphere, 2(3), 271-302. -Pleim, J. E., Ran, L., Appel, W., Shephard, M.W., & Cady-Pereira K. (2019). New bidirectional ammonia flux model in an air quality model coupled with an agricultural model. JAMES in review. +Pleim, J. E., Ran, L., Appel, W., Shephard, M.W., & Cady-Pereira K. (2019). New bidirectional ammonia flux model in an air quality model coupled with an agricultural model. Journal of Advances in Modeling Earth Systems, 11, 2934-2957, [doi: 10.1029/2019MS001728](https://doi.org/10.1029/2019MS001728). + +Pleim, J.E., Ran, L., Saylor, R.D., Willison, J. and Binkowski, F.S. (2022). A new aerosol dry deposition model for air quality and climate modeling. Journal of Advances in Modeling Earth Systems, 14(11), p.e2022MS003050, [doi: 10.1029/2022MS003050]( https://doi.org/10.1029/2022MS003050). Pye, H.O.T., Pinder, R.W., Piletic, I.R., Xie, Y., Capps, S.L., Lin, Y.H., Surratt, J.D., Zhang, Z.F., Gold, A., Luecken, D.J., Hutzell W.T., Jaoui, M., Offenberg, J.H., Kleindienst, T.E., Lewandowski, M., & Edney, E.O. (2013). Epoxide pathways improve model predictions of isoprene markers and reveal key role of acidity in aerosol formation. Environ. Sci. Technol., 47(19), 11056-11064. From 76ab487194d7602ab8aa161baed680aa067b04ca Mon Sep 17 00:00:00 2001 From: Ben Murphy Date: Thu, 5 Sep 2024 14:50:38 -0400 Subject: [PATCH 204/375] Corrects typos On branch 5.5_specdef --- DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md index 96120983e..5aa704af5 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md @@ -43,7 +43,7 @@ where NO and NO2 are pulled from an hourly instantaneous [CCTM_CONC](CMAQ_UG_ch0 Note that some species aggregation is already happening within the CMAQ model. The CMAQ aerosol module explicitly represents a number of individual aerosol species that need to be combined for comparisons to measured total PM2.5 mass. The Explicit and Lumped Model Output (ELMO) capability introduced in CMAQv5.4 prescribes the calculation of aggregated aerosol species (e.g., PM1, PM2.5, and PM10), as well as diagnostic values (e.g., aerosol surface area and number) and CMAQ calculates them online. The species are then written to the [CCTM_ELMO](CMAQ_UG_ch07_model_outputs.md#ELMO) or [CCTM_AELMO](CMAQ_UG_ch07_model_outputs.md#AELMO) output files. -The "SpecDef_MECH_NAME.txt" file relies on output from the CCTM_CONC (or CCTM_ACONC) and the CCTM_ELMO (or CCTM_AELMO) files in addition to meteorological variables for completing all of its calculations. Generally, gas-phase species coming from the direct CCTM_CONC output and aerosol species from CCTM_ELMO. For reference and transparency, the each mechanism folder also includes a file names "SpecDef_Conc_MECH_NAME.txt" which processes both gas- and aerosol species from the CCTM_CONC file (CCTM_ELMO variables is still needed for applying hard bounds on particle size, like 2.5 um). These "SpecDef_Conc_MECH_NAME.txt" files are provided for all Carbon Bond 6-based mechanisms and all CRACMM-based mechanisms. Either of these two approaches should yield highly similar or exactly equal results. +The "SpecDef_MECH_NAME.txt" file relies on output from the CCTM_CONC (or CCTM_ACONC) and the CCTM_ELMO (or CCTM_AELMO) files in addition to meteorological variables for completing all of its calculations. Generally, gas-phase species coming from the direct CCTM_CONC output and aerosol species from CCTM_ELMO. For reference and transparency, each mechanism folder also includes a file named "SpecDef_Conc_MECH_NAME.txt", which processes both gas- and aerosol species from the CCTM_CONC file (CCTM_ELMO variables is still needed for applying hard bounds on particle size, like 2.5 um). These "SpecDef_Conc_MECH_NAME.txt" files are provided for all Carbon Bond 6-based mechanisms and all CRACMM-based mechanisms. Either of these two approaches should yield highly similar or exactly equal results. Finally, the SpecDef_Dep_MECH_NAME.txt files are provided to processes deposition variable output from CMAQ. From 343bbcfd48b0ecd6a18a9585d933a3e0d5fa690f Mon Sep 17 00:00:00 2001 From: Ben Murphy Date: Thu, 5 Sep 2024 16:30:56 -0400 Subject: [PATCH 205/375] Add explanation of IC BC aerosol surface area issue. Please enter the commit message for your changes. Lines starting On branch 5.5_icbc_impact Changes to be committed: modified: DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md modified: DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md --- .../CMAQ_UG_appendixA_model_options.md | 2 +- ...MAQ_UG_ch06_model_configuration_options.md | 33 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index 06ba4e4cc..eabbd1326 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -488,7 +488,7 @@ Sets if the CCTM will run in multi-processor or serial mode. - `IC_AERO_M2USE [default: T]` Instructs CMAQ whether or not to use aerosol surface area from the Initial Condition file. If this option is set to false, then uniform diameter and standard deviation will be applied to each aerosol mode. If a particular simulation is a restart from a simulation preceeding in time (i.e. if this is any day after the first simulation day), then IC_AERO_M2USE is automatically set to True inside CMAQ. - `IC_AERO_M2WET [default: F=dry]` Instructs CMAQ whether or not to assume the initial condition surface area is consistent with dry or wet diameter. Note that most air quality models assume mode parameters are dry, and then will calculate wet diameter when needed (e.g. for deposition). - `BC_AERO_M2USE [default: T]` Instructs CMAQ whether or not to use aerosol surface area from the Boundary Condition file. If this option is set to false, then uniform diameter and standard deviation will be applied to each aerosol mode from the boundaries. -- `BC_AERO_M2WET [default: F=dry]` Instructs CMAQ whether or not to assume the boundary condition surface area is consistent with dry or wet diameter. Note that most air quality models assume mode parameters are dry, and then will calculate wet diameter when needed (e.g. for deposition). +- `BC_AERO_M2WET [default: F=dry]` Instructs CMAQ whether or not to assume the boundary condition surface area is consistent with dry or wet diameter. Note that most air quality models assume mode parameters are dry, and then will calculate wet diameter when needed (e.g. for deposition). For more information about the IC_AERO and BC_AERO options, please see [Chapter 6](CMAQ_UG_ch06_model_configuration_options.md#6.11.1_Aero_BC) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 8117fb34b..362507e03 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -36,6 +36,7 @@ * [6.10.4 Nitrous Acid (HONO)](#6.10.4_HONO) * [6.10.5 CRACMM](#6.10.5_CRACMM) * [6.11 Aerosol Dynamics and Chemistry](#6.11_Aerosol_Dynamics) + * [6.11.1 Aerosol Surface Area from Boundary Conditions](#6.11.1_Aero_BC) * [6.12 Aqueous Chemistry, Scavenging and Wet Deposition](#6.12_Aqueous_Chemistry) * [6.13 Potential Vorticity Scaling](#6.13_Potential_Vort) * [6.14 References](#6.14_References) @@ -952,6 +953,38 @@ CMAQ can output the reduction in visual range caused by the presence of PM, perc For easier comparison of CMAQ's output PM values with measurements, time-dependent cutoff fractions may be output by the model (e.g. Jiang et al., 2006). These include quantities for describing the fraction of each mode that would be categorized as PM2.5 (i.e. PM25AT, PM25AC, and PM25CO) and PM1.0 (i.e. PM1AT, PM1AC, and PM1CO) as well as the fraction of particles from each mode that would be detected by an AMS (i.e AMSAT, AMSAC, and AMSCO). There is also a surface interaction module in the multipollutant version of CMAQ that calculates the flux of mercury to and from the surface (rather than just depositing mercury). Further discussion on the scientific improvements to the CMAQ PM treatment is available in the release notes. + + + +### 6.11.1 Aerosol Boundary and Initial Conditions + + + +[Return to Top](#Return_to_Top) + + + +The Modal Aerosol approach in CMAQ uses three parameters to describe the population density of particles in size space (i.e. to parameterize the log-normal size distirbutions). These parameters are the zeroth moment (M0), which is also the Number concentration (N), the second moment (M2), which is proportional to bulk particle surface area (S), and the third moment (M3), which is proportional to bulk particle volume (V) and thus mass (M). The third moment is specified in the initial and boundary condition files in terms of the individual mass concentrations of each particle species in each mode. These mass concentrations are summed up to get M and then converted to M3. The values for M0 and M2 from the boundary and initial conditions are then used to calculate the mean diamter and standard deviation of all three log-normal modes. Each moment, M0, M2, and the speciated mass concentrations, are then transported throughout the model domain. + +If number concentration is missing or zero from the boundary or initial conditions, then the mean diameter and standard deviation for that mode are set to a default and M0 and M2 are calculated based on these assumptions. + +If number concentration is present and nonzero, but M2 is missing or zero, then the modal standard deviation is set to a default and the diameter is calculated to be consistent with the total mass and number concentrations. The user may explicitly direct CMAQ to ignore the M2 concentration from the boundary conditions by setting an environment variable to false: +``` +setenv BC_AERO_M2USE F #(default: T) +setenv IC_AERO_M2USE F #(default: T) +``` +This may be an attractive option if the values of M2 have become corrupted or unstable to due to interpolation of boundary or initial conditions in space and time. The impact of this option on fine and coarse mode particle mass concentrations is shown below. There is a substantially larger impact on coarse-mode particles, especially near the boundaries. + +((PICS)) + +The initial conditions are not expected to have such large impact on model results because model output data are used to begin every model restart (e.g. at the end of a day). It is expected that the user will give ample model spin-up time so that the impact of initial conditions issues is unlikely. + +Users may also specify if the boundary or initial conditions provided are applicable to wet or dry particle size distributions (i.e. is water included in the calculation of M2?). The following environment variable toggles this selection: +``` +setenv BC_AERO_M2WET F #(default: F, consistent with dry particle size distribution) +setenv IC_AERO_M2WET F #(default: F, consistent with dry particle size distribution) +``` +Unless specifically known otherwise, it is most often the case that M2 or particle surface area is calculated in terms of the dry particle size distribution. From a024e0f03e9ebd62ac3d7e92689497a1f995c0df Mon Sep 17 00:00:00 2001 From: Ben Murphy Date: Thu, 5 Sep 2024 16:38:39 -0400 Subject: [PATCH 206/375] Add recommendation for BC_AERO_M2USE On branch 5.5_icbc_impact modified: CMAQ_UG_ch06_model_configuration_options.md --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 362507e03..128f9bc41 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -36,7 +36,7 @@ * [6.10.4 Nitrous Acid (HONO)](#6.10.4_HONO) * [6.10.5 CRACMM](#6.10.5_CRACMM) * [6.11 Aerosol Dynamics and Chemistry](#6.11_Aerosol_Dynamics) - * [6.11.1 Aerosol Surface Area from Boundary Conditions](#6.11.1_Aero_BC) + * [6.11.1 Aerosol Boundary and Initial Conditions](#6.11.1_Aero_BC) * [6.12 Aqueous Chemistry, Scavenging and Wet Deposition](#6.12_Aqueous_Chemistry) * [6.13 Potential Vorticity Scaling](#6.13_Potential_Vort) * [6.14 References](#6.14_References) @@ -979,6 +979,8 @@ This may be an attractive option if the values of M2 have become corrupted or un The initial conditions are not expected to have such large impact on model results because model output data are used to begin every model restart (e.g. at the end of a day). It is expected that the user will give ample model spin-up time so that the impact of initial conditions issues is unlikely. +It is recommended to set BC_AERO_M2USE to True if boundary conditions were created with CMAQv5.4 or later. If boundary or initial conditions were made with CMAQv5.3 or before, then the definition of M2 did not include semivolatile organic compounds and should not be trusted to be compatible with CMAQv5.5 and beyond. In this case, set BC_AERO_M2USE to False. + Users may also specify if the boundary or initial conditions provided are applicable to wet or dry particle size distributions (i.e. is water included in the calculation of M2?). The following environment variable toggles this selection: ``` setenv BC_AERO_M2WET F #(default: F, consistent with dry particle size distribution) From 87ab9db0d0facbaeabf72b32e2e7f753095bf1ed Mon Sep 17 00:00:00 2001 From: Ben_Murphy Date: Thu, 5 Sep 2024 21:45:32 -0400 Subject: [PATCH 207/375] Update Aero BC explanation in ch06 with pictures --- .../CMAQ_UG_ch06_model_configuration_options.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 5a4a1b3ef..e6db3e223 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -973,9 +973,13 @@ If number concentration is present and nonzero, but M2 is missing or zero, then setenv BC_AERO_M2USE F #(default: T) setenv IC_AERO_M2USE F #(default: T) ``` -This may be an attractive option if the values of M2 have become corrupted or unstable to due to interpolation of boundary or initial conditions in space and time. The impact of this option on fine and coarse mode particle mass concentrations is shown below. There is a substantially larger impact on coarse-mode particles, especially near the boundaries. +This may be an attractive option if the values of M2 have become corrupted or unstable to due to interpolation of boundary or initial conditions in space and time. The impact of this option on fine and coarse mode particle mass concentrations is shown below. There is a substantially larger impact on coarse particles than on fine particles, especially near the boundaries. -((PICS)) +![image](https://github.com/user-attachments/assets/9f048187-ab68-4f64-9ba9-925cb6c6d218) +Deviation in total fine particle mass concentration in $\mu g \ m^{-3}$. + +![image](https://github.com/user-attachments/assets/80068a34-2643-49ac-bb0a-cce3e5859d41) +Deviation in total coarse particle mass concentration in $\mu g \ m^{-3}$. The initial conditions are not expected to have such large impact on model results because model output data are used to begin every model restart (e.g. at the end of a day). It is expected that the user will give ample model spin-up time so that the impact of initial conditions issues is unlikely. From 7e2708a70b1e8040d63eccd43dbe3550495deade Mon Sep 17 00:00:00 2001 From: SfarrellCMAQ <139152912+SfarrellCMAQ@users.noreply.github.com> Date: Fri, 6 Sep 2024 13:24:34 -0400 Subject: [PATCH 208/375] Update CMAQ_UG_appendixC_spatial_data.md Updated Biogenic Emissions Section and included link to EELD files used by OAQPS --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md index 4fc0f41f2..fef0d1503 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md @@ -58,7 +58,7 @@ on population, roads, airports, railroads, and land use spatial data sets. The [ **Regional masks** are used to specify regions such as states, counties, or countries within a gridded spatial domain. These regions are applied to regionally scale emissions as specified in section B.3.4 of the [DESID Appendix](CMAQ_UG_appendixB_emissions_control.md) and to track emissions by region in [ISAM](../Users_Guide/CMAQ_UG_ch11_ISAM.md) Masks can be created from a geospatial file of regions, such as county shapefile, with the [shp2cmaq](../../../PREP/shp2cmaq/README.md) tool or the Spatial Allocator. -**Biogenic emissions** requires land use input including coverage of different tree species. The landcover for BELD3 and BELD4 may be generated using the Spatial Allocator's [BELD4 land cover tools](https://github.com/CMASCenter/Spatial-Allocator/blob/master/docs/User_Manual/SA_ch03_vector.md#processing-biogenic-emissions-land-use-data). +**Biogenic emissions** requires land use input including coverage of different tree species. BELD data is released with the NEI ([BELD5 data from the 2020 NEI](https://gaftp.epa.gov/Air/emismod/2017/biogenics/)). **Sea spray emissions** require open ocean and surf zone (50m) buffer fractions for the modeling grid cells in an I/O API file. For most of North American domain, a SA Vector allocation tool can be used From c932d0bb8777a8cc9492319b784546ae3e68e316 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Fri, 6 Sep 2024 15:54:59 -0400 Subject: [PATCH 209/375] Update CMAQ_UG_appendixC_spatial_data.md --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md index fef0d1503..d216557cf 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md @@ -58,7 +58,7 @@ on population, roads, airports, railroads, and land use spatial data sets. The [ **Regional masks** are used to specify regions such as states, counties, or countries within a gridded spatial domain. These regions are applied to regionally scale emissions as specified in section B.3.4 of the [DESID Appendix](CMAQ_UG_appendixB_emissions_control.md) and to track emissions by region in [ISAM](../Users_Guide/CMAQ_UG_ch11_ISAM.md) Masks can be created from a geospatial file of regions, such as county shapefile, with the [shp2cmaq](../../../PREP/shp2cmaq/README.md) tool or the Spatial Allocator. -**Biogenic emissions** requires land use input including coverage of different tree species. BELD data is released with the NEI ([BELD5 data from the 2020 NEI](https://gaftp.epa.gov/Air/emismod/2017/biogenics/)). +**Biogenic emissions** requires land use input including coverage of different tree species. BELD data is typically released with [EPA's Air Emissions Modeling Platform data](https://www.epa.gov/air-emissions-modeling/emissions-modeling-platforms). BELD5 data is available from the from the 2017 emissions modeling platform ftp site: [https://gaftp.epa.gov/Air/emismod/2017/biogenics/](https://gaftp.epa.gov/Air/emismod/2017/biogenics/). **Sea spray emissions** require open ocean and surf zone (50m) buffer fractions for the modeling grid cells in an I/O API file. For most of North American domain, a SA Vector allocation tool can be used From 984c8219b8a8f452d5bb8d63580db300f52d3689 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Fri, 6 Sep 2024 16:02:44 -0400 Subject: [PATCH 210/375] Update CMAQ_UG_appendixC_spatial_data.md --- .../Appendix/CMAQ_UG_appendixC_spatial_data.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md index d216557cf..4db396fed 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md @@ -56,9 +56,13 @@ Emission spatial allocation surrogates are required for generating anthropogenic spatially allocate county-based emission inventories to model grid cells. Emission surrogates can be based on population, roads, airports, railroads, and land use spatial data sets. The [Surrogate Tool](https://github.com/CEMPD/SurrogateToolsDB) can be used for to generate spatial surrogates for SMOKE. -**Regional masks** are used to specify regions such as states, counties, or countries within a gridded spatial domain. These regions are applied to regionally scale emissions as specified in section B.3.4 of the [DESID Appendix](CMAQ_UG_appendixB_emissions_control.md) and to track emissions by region in [ISAM](../Users_Guide/CMAQ_UG_ch11_ISAM.md) Masks can be created from a geospatial file of regions, such as county shapefile, with the [shp2cmaq](../../../PREP/shp2cmaq/README.md) tool or the Spatial Allocator. +**Regional masks** are used to specify regions such as states, counties, or countries within a gridded spatial domain. These regions are applied to regionally scale emissions as specified in section B.3.4 of the [DESID Appendix](CMAQ_UG_appendixB_emissions_control.md) and to track emissions by region in [ISAM](../Users_Guide/CMAQ_UG_ch11_ISAM.md) Masks can be created from a geospatial file of regions, such as county shapefile, with the [shp2cmaq](../../../PREP/shp2cmaq/README.md) tool. -**Biogenic emissions** requires land use input including coverage of different tree species. BELD data is typically released with [EPA's Air Emissions Modeling Platform data](https://www.epa.gov/air-emissions-modeling/emissions-modeling-platforms). BELD5 data is available from the from the 2017 emissions modeling platform ftp site: [https://gaftp.epa.gov/Air/emismod/2017/biogenics/](https://gaftp.epa.gov/Air/emismod/2017/biogenics/). +**Biogenic emissions** requires land use input including coverage of different tree species. The Biogenic Emissions Landcover Dataset version 5 (BELD5) consists of 257 different landuse types at 1km horizontal resolution that covers all the contiguous United States, Mexico, most of Canada, parts of southern Alaska, and other Caribbean and +Central American countries. BELDv5 data is available from the 2017 emissions modeling platform ftp site: [https://gaftp.epa.gov/Air/emismod/2017/biogenics/](https://gaftp.epa.gov/Air/emismod/2017/biogenics/). For more information on BELD5 landuse types see: +[https://www.cmascenter.org/smoke/documentation/4.8/html/ch08s09.html#sect_input_source_beld5](https://www.cmascenter.org/smoke/documentation/4.8/html/ch08s09.html#sect_input_source_beld5) +and see the EPA 2017 NEI Technical Support Documentation (section 4.6): [https://www.epa.gov/sites/production/files/2020-04/documents/nei2017_tsd_full_30apr2020.pdf](https://www.epa.gov/sites/production/files/2020-04/documents/nei2017_tsd_full_30apr2020.pdf). To aggregate the BELD5 to a coarser modeling domain with the same map projection use the SMOKE Utility Tool called AGGWNDW. The SMOKE User’s Manual has information on this tool here: +[https://www.cmascenter.org/smoke/documentation/4.8/html/ch05s03s02.html](https://www.cmascenter.org/smoke/documentation/4.8/html/ch05s03s02.html). **Sea spray emissions** require open ocean and surf zone (50m) buffer fractions for the modeling grid cells in an I/O API file. For most of North American domain, a SA Vector allocation tool can be used From 8418965b5fd2560176109bc5987f5a0096f39fe6 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 9 Sep 2024 11:01:58 -0400 Subject: [PATCH 211/375] make consistent with script --- ..._tutorial_build_library_gcc_support_nc4.md | 629 ++++++++++++++++++ ...gcc_install_netcdf_for_nc4_compression.csh | 146 ++++ 2 files changed, 775 insertions(+) create mode 100644 DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md create mode 100755 DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md new file mode 100644 index 000000000..490c0cdfc --- /dev/null +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md @@ -0,0 +1,629 @@ +## Following these instructions + + https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/getting_and_building_netcdf.html + + Building with netCDF-4 and the Remote Data Client + + netCDF requires the HDF5, zlib, and curl libraries. + +## Versions required are at least HDF5 1.8.9, zlib 1.2.5, and curl 7.18.0 or later. + +set install directory + +``` +set INSTALL_DIR = $cwd/CMAQv5.5/LIBRARIES +``` + +1. If your compute server uses modules use the following command to see what packages are available + +``` +module avail +``` +2. Load module environment for a compiler (Intel|GCC|PGI) and mpi package corresponding to that compiler (e.g. openmpi). + +``` +module load gcc9.1.0 +module load openmpi_4.0.1/gcc_9.1.0 +``` + + +## Install zlib + +``` + cd $INSTALL_DIR +``` + +``` +wget https://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz +``` + +``` + tar -xzvf zlib-1.2.11.tar.gz +``` + +``` +cd zlib-1.2.11 +``` + +``` +./configure ; make test +``` + +``` +mkdir ${INSTALL_DIR}/zlib-1.2.11_gcc9.1.0 +``` + +``` +make install prefix=${INSTALL_DIR}/zlib-1.2.11_gcc9.1.0 +``` + +## Install curl (check first to determine if it is already installed) + +1. check to see if which is installed using + +``` +curl --version +``` + + +###IF it is not installed use the following steps to install it. + +``` +cd ${INSTALL_DIR} +wget https://curl.se/download/curl-7.79.0.tar.gz +``` +``` +tar -xzvf curl-7.79.0.tar.gz +``` + +``` +./configure --without-ssl --prefix=${INSTALL_DIR}/curl-7.79.0-gcc9.1.0 +``` + +``` +make +make install +``` + +## Install HDF5 + +``` +cd $INSTALL_DIR +``` + +``` +wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.7/src/hdf5-1.10.7.tar.gz +tar -xzvf hdf5-1.10.7.tar.gz +``` +``` +mkdir ${INSTALL_DIR}/hdf5-1.10-7-gcc9.1.0 +``` + +``` +cd hdf5-1.10.7 +``` + +Set flags + +``` + setenv CFLAGS "-O3" + setenv FFLAGS "-O3" + setenv CXXFLAGS "-O3" + setenv FCFLAGS "-O3" +``` + +Configure (note, you may need to add a path if you installed the curl library using --with-curl=${INSTALL_DIR}/curl-7.79.0-gcc9.1.0) + + +``` +./configure --prefix=${INSTALL_DIR} --with-zlib=${INSTALL_DIR}/zlib-1.2.11_gcc9.1.0/include,${INSTALL_DIR}/zlib-1.2.11_gcc9.1.0/lib --enable-hl +``` + +Build + +``` +make +make check # run test suite +make install # install +make check-install # verify installation +``` + +## Install netCDF-C + + +1. cd ${INSTALL_DIR} + +2. Download netCDF-C from the following website https://www.unidata.ucar.edu/downloads/netcdf/index.jsp + +``` +wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-c-4.8.0.tar.gz +``` + +3. Untar the netCDF-C tar.gz file + +``` +tar -xzvf netcdf-c-4.8.0.tar.gz +``` + +4. Change directories into the extracted directory +``` +cd netcdf-c-4.8.0 +``` + +5. Review the installation instructions for netcdf-c-4.8.0 for building netCDF to support nc4 compression + +``` +more INSTALL.md +``` + + +6. Run the configure --help command to see what settings can be used for the build. +``` +./configure --help +``` + +7. Set the Compiler environment variables + +Make sure these compilers can be found. +``` +which gfortran +which gcc +which g++ +``` + +If they are found, proceed to set the environment variables. +The paths will be dependent on your compute environment +If they are not found, reload your module (see above), or ask your system administrator for the paths to a compiler + +``` +setenv FC gfortran +setenv CC gcc +setenv CXX g++ +``` + +8. Run the configure command + +``` +./configure --with-pic --enable-netcdf-4 --enable-shared --prefix=${INSTALL_DIR} +``` + +9. Check that the configure command worked correctly, then run the install command + +``` +make |& tee make.gcc9.log +make install +``` + +10. Verify that the following message is obtained + +``` +| Congratulations! You have successfully installed netCDF! | +``` + +## Install netCDF-Fortran + +1. Change directories + +``` +cd $INSTALL_DIR +``` + + +2. Download netCDF-Fortran from the following website https://www.unidata.ucar.edu/downloads/netcdf/index.jsp + +``` +wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-fortran-4.5.3.tar.gz +``` + +3. Untar the tar.gz file + +``` +tar -xzvf netcdf-fortran-4.5.3.tar.gz +``` + +4. Change directories to netcdf-fortran-4.5.3 + +``` +cd netcdf-fortran-4.5.3 +``` + +5. Review the installation document http://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html + + +6. Set the CC environment variable to use the gcc and gfortran compilers + +``` +which gfortran +which gcc +which g++ + +setenv FC gfortran +setenv CC gcc +setenv CXX g++ +``` + +7. Set your LD_LIBRARY_PATH to include the netcdf-C library path for netCDF build + +``` +setenv NCDIR ${INSTALL_DIR} +setenv LIBS "-lnetcdf" +setenv CPPFLAGS -I${NCDIR}/include +setenv LDFLAGS -L${NCDIR}/lib + +setenv LD_LIBRARY_PATH ${NCDIR}/lib:${LD_LIBRARY_PATH} +``` + +8. Check your LD_LIBRARY_PATH + +``` +echo $LD_LIBRARY_PATH +``` + +9. Set the install directory for netCDF fortran + +``` +setenv NFDIR ${INSTALL_DIR} +setenv CPPFLAGS -I${NCDIR}/include +setenv LDFLAGS -L${NCDIR}/lib +``` + +10. Run the configure command + +``` +./configure --with-pic --enable-shared --prefix=${NFDIR} +``` + +11. Run the make check command + +``` +make check +``` + +Output if successful: + +``` +Testsuite summary for netCDF-Fortran 4.4.5 +========================================== +# TOTAL: 6 +# PASS: 6 +``` + +12. Run the make install command + +``` +make install +``` + +Output successful if you see Libraries have been installed in the install directory + +``` +ls ${INSTALL_DIR}/lib +``` + +If you ever happen to want to link against installed libraries +in a given directory, LIBDIR, you must either use libtool, and +specify the full pathname of the library, or use the '-LLIBDIR' +flag during linking and do at least one of the following: + - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable + during execution + - add LIBDIR to the 'LD_RUN_PATH' environment variable + during linking + - use the '-Wl,-rpath -Wl,LIBDIR' linker flag + - have your system administrator add LIBDIR to '/etc/ld.so.conf' + + +14. set your LD_LIBRARY_PATH to include the netcdf-Fortran library path for netCDF build + +``` +setenv NFDIR ${INSTALL_DIR} +setenv LD_LIBRARY_PATH ${NFDIR}/lib:${LD_LIBRARY_PATH} +``` +(may need to add the NCDIR and NFDIR to .cshrc) + +## Install I/O API +Note +The complete I/O API installation guide can be found at either of the following: + +https://www.cmascenter.org/ioapi/documentation/all_versions/html/AVAIL.html + +or + +https://cjcoats.github.io/ioapi/AVAIL.html + +1. Change directories to one level up from your current location + +``` +cd ../ +``` + +2. Download I/O API + +``` +git clone https://github.com/cjcoats/ioapi-3.2 +``` + +3. change directories to the ioapi-3.2 directory + +``` +cd ioapi-3.2 +``` + +4. Change branches to 20200828 for a tagged stable version + +``` +git checkout -b 20200828 +``` + +5. Change directories to the ioapi directory + +``` +cd ioapi +``` + +6. copy the Makefile.nocpl file to create a Makefile + +``` +cp Makefile.nocpl Makefile +``` + +7. Set the BIN environment variable to include the module that will be used to compile CMAQ +This will help future users identify what compiler version is compatible with this library. + +``` +setenv BIN Linux2_x86_64gfort_openmpi_4.0.1_gcc_9.1.0 +``` + +8. Copy an existing Makeinclude file to have this BIN name at the end + +``` +cp Makeinclude.Linux2_x86_64gfort Makeinclude.Linux2_x86_64gfort_openmpi_4.0.1_gcc_9.1.0 +``` + +9. Edit the Makeinclude.Linux2_x86_64gfort_openmpi_4.0.1_gcc_9.1.0 to comment out OMPFLAG and OMPLIBS +settings. This will remove the need to link the shared memory OPENMP libraries when compiling CMAQ and WRF-CMAQ. + +``` +#OMPFLAGS = -fopenmp +#OMPLIBS = -fopenmp +``` + +10. Create a BIN directory where the library and m3tools executables will be installed + +``` +mkdir ../$BIN +``` + +11. Link the BIN directory to a the gfort BIN directory - this step is needed for WRF-CMAQ. + +``` +cd ../ +ln -s Linux2_x86_64gfort_openmpi_4.0.1_gcc_9.1.0 Linux2_x86_64gfort +``` + +12. Set the HOME environment variable to be your LIBRARY install directory and run the make command to compile and link the ioapi library + +``` +cd ioapi +make 'HOME=[your_install_path]/LIBRARIES' |& tee make.log +``` + +13. Change directories to the $BIN dir and verify that both the libioapi.a library was successfully built + +``` +cd ../$BIN +ls -lrt libioapi.a +``` + +14. If you need to do a make clean, to rebuild the I/O API Library, specify the HOME directory at the command line as follows + +``` +cd ../ioapi +make 'HOME=[your_install_path]/LIBRARIES' clean +``` + +15. Change directories to the m3tools directory + +``` +cd ../m3tools +``` + +16. Copy the Makefile.nocpl to create a Makefile + +``` +cp Makefile.nocpl Makefile +``` + +17. Edit line 65 of the Makefile to use the NCDIR and NFDIR environment variables that you have set in the above steps to locate the netcdf C and netcdf Fortran libraries + +``` + LIBS = -L${OBJDIR} -lioapi -L${NFDIR}/lib -lnetcdff -L${NCDIR}/lib -lnetcdf $(OMPLIBS) $(ARCHLIB) $(ARCHLIBS) + ``` + +18. Run make to compile the m3tools + +``` +make |& tee make.log +``` + +19. Check to see that the m3tools have been installed successfully + +``` +cd ../$BIN +ls -rlt m3xtract +``` + +20. Use test script to verify that the executables are working + +``` +make test +``` + +## Install CMAQv5.3.2.1 + +1. Download the CMAQv5.3.2.1 code using the following + +``` +git clone -b 5.3.2.1 https://github.com/lizadams/cmaq.git CMAQ_REPO +``` + +2. Build and run in a user-specified directory outside of the repository +In the top level of CMAQ_REPO, the bldit_project.csh script will automatically replicate the CMAQ folder structure and copy every build and run script out of the repository so that you may modify them freely without version control. + +In bldit_project.csh, modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: + +set CMAQ_HOME = [your_work_location]/CMAQv5.3.2.1 +Now execute the script. + +``` +./bldit_project.csh +``` + + +3. Edit the config_cmaq.csh to specify the netCDF C, netCDF Fortran, and I/O API Library locations + +``` +cd [your_work_location]/CMAQv5.3.2.1 +vi config_cmaq.csh +``` + +Edit the case gcc section +note, the paths need to be edited to match the location for your installation + +``` +#> gfortran compiler............................................................ + case gcc: + + #> I/O API and netCDF for WRF-CMAQ + setenv NCDIR /proj/ie/proj/CMAS/EQUATES/LIBRARIES/netcdf-c-4.7.0-gcc9.1.0 # C netCDF install path + setenv NFDIR /proj/ie/proj/CMAS/EQUATES/LIBRARIES/netcdf-fortran-4.4.5-gcc9.1.0 # Fortran netCDF install path for CMAQ + setenv NETCDF netcdf_combined_directory_path # Note only for WRF-CMAQ as it requires combining the netcdf C and netcdf F into a single directory. CMAQ users - don't change this setting + setenv IOAPI /proj/ie/proj/CMAS/EQUATES/LIBRARIES/ioapi-3.2/ # I/O API + setenv WRF_ARCH 34 # [1-75] Optional, ONLY for WRF-CMAQ + + #> I/O API, netCDF, and MPI library locations + setenv IOAPI_INCL_DIR ${IOAPI}/ioapi/fixed_src #> I/O API include header files + setenv IOAPI_LIB_DIR ${IOAPI}/Linux2_x86_64gfort #> I/O API libraries + if ( $NETCDF == "netcdf_combined_directory_path" ) then + setenv NETCDF_LIB_DIR ${NCDIR}/lib #> netCDF C directory path + setenv NETCDF_INCL_DIR ${NCDIR}/include #> netCDF C directory path + setenv NETCDFF_LIB_DIR ${NFDIR}/lib #> netCDF Fortran directory path + setenv NETCDFF_INCL_DIR ${NFDIR}/include #> netCDF Fortran directory path + endif + + setenv MPI_INCL_DIR /nas/longleaf/apps-dogwood/mpi/gcc_9.1.0/openmpi_4.0.1/include #> MPI Include directory path + setenv MPI_LIB_DIR /nas/longleaf/apps-dogwood/mpi/gcc_9.1.0/openmpi_4.0.1/lib #> MPI Lib directory path +``` + +4. Source the config_cmaq.csh to create the lib directory + +``` +source config_cmaq.csh +``` + +5. Copy the EQUATES build and run script from the EQUATES_BENCHMARK repository to the CMAQv5.3.2.1/CCTM/scripts directory + +``` +cp bldit_cctm.csh /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/CCTM/scripts +cp run_cctm_2017_12US1_EQUATES_combine.csh /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/CCTM/scripts +``` + +6. Build CMAQv5.3.2.1 to support the STAGE dry deposition option + +``` +./bldit_cctm.EQUATES.csh gcc |& tee ./bldit_cctm.EQUATES..gcc.log +``` + +7. Build the POST processing routines + +``` +cd /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/POST/combine/scripts +./bldit_combine.csh gcc |& tee ./bldit_combine.gcc.log +``` + +``` +cd /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/POST/calc_tmetric/scripts +./bldit_calc_tmetric.csh gcc |& tee ./bldit_calc_tmetric.gcc.log +``` + +``` +cd /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/POST/hr2day/scripts +./bldit_hr2day.csh gcc |& tee ./bldit_hr2day.gcc.log +``` + +``` +cd /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/POST/bldoverlay/scripts +./bldit_bldoverlay.csh gcc |& tee ./bldit_bldoverlay.gcc.log +``` + +8. Edit the SBATCH section of the EQUATES Benchmark run script to use the SLURM resources on your machine +and modify the CMAQ_HOME directory to specify your local path + +``` +vi run_cctm_2017_12US1_EQUATES_combine.csh +``` + + setenv CMAQ_HOME /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1 + + +## Download EQUATES Benchmark Input Data + +1. Download the gdrive script from the Google Drive by following the Gdrive section of this README + + +https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4 + + +2. Download the EQUATES input data using the gdrive_scripts + +Download emissions + +``` +cd ../gdrive_scripts/data/2017_12US1/emis +./gdrive_download_equates_emis.csh +``` + +Download meteorology + +``` +cd ../gdrive_scripts/data/2017_12US1/met/mcip_v51_wrf_v411_noltng +./gdrive_download_equates_mcip.csh +``` + +Download Initial and Boundary Conditions + +``` +cd ../gdrive_scripts/data/2017_12US1/icbc +./gdrive_download_equates.icbc.csh +``` + +## Update EQUATES Benchmark Run Script to specify path to downloaded input data + +1. Specify the 2017_12US1 as the input data directory in the CMAQv5.3.2.1 CCTM run script + +``` +cd /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/CCTM/scripts +vi run_cctm_2017_12US1_EQUATES_combine.csh + +modify to specify the location of the EQUATES input files downloaded from the Google Drive +setenv INPDIR ${CMAQ_HOME}/2017_12US1 #Input Directory +``` + +## Modify EQUATES Benchmark Post-processing Scripts for your installation + +1. The POST/EQUATES directory is available under the CMAQv5.3.2.1 directory. +These scripts will be called by the run_cctm_2017_12US1_EQUATES_combine.csh script. +If you are using a different version of CMAQ, ie CMAQv5.3.3, you will need to copy the POST/EQUATES scripts to your repository for the CMAQv5.3.3 version. + +``` +cd /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/POST +cp -rp /proj/ie/proj/CMAS/EQUATES/EQUATES_BENCHMARK/POST/EQUATES . +``` + +2. Edit the scripts under /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/POST/EQUATES to specify your local WORKDIR and CMAQREPO + +## Run the equates run script + +``` +cd /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/CCTM/scripts +sbatch run_cctm_2017_12US1_EQUATES_combine.csh +``` diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh new file mode 100755 index 000000000..e743623bb --- /dev/null +++ b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh @@ -0,0 +1,146 @@ +#!/bin/csh -f +set echo + +# +# Install used tcsh and gcc/gfortran version 9.1.0 and openmpi +# + + /bin/tcsh --version + gcc --version + gfortran --version + module list | grep openmpi + which mpirun + +# -------------------- +# Set directory for CMAQ Libraries +# ------------------- + + mkdir /21dayscratch/scr/l/i/lizadams/CMAQ/LIBRARIES/build-hdf5 + setenv INSTDIR /21dayscratch/scr/l/i/lizadams/CMAQ/LIBRARIES/build-hdf5 + +# ---------------------- +# Build and install zlib +# --------------------- + + cd $INSTDIR + wget https://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz + tar -xzvf zlib-1.2.11.tar.gz + cd zlib-1.2.11 + ./configure --prefix=$INSTDIR/zlib-1.2.11/gcc_9.1.0 + make test |& tee make.test.log + make install |& tee make.install.log + +# ----------------------- +# Download and build HDF5 +# ----------------------- + cd $INSTDIR + wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.5/src/hdf5-1.10.5.tar.gz + tar xvf hdf5-1.10.5.tar.gz + rm -f hdf5-1.10.5.tar.gz + cd hdf5-1.10.5 + setenv CFLAGS "-O3" + setenv FFLAGS "-O3" + setenv CXXFLAGS "-O3" + setenv FCFLAGS "-O3" + ./configure --prefix=$INSTDIR --with-zlib=$INSTDIR/zlib-1.2.11/gcc_9.1.0/include,$INSTDIR/zlib-1.2.11/gcc_9.1.0/lib --enable-hl + make |& tee make.gcc9.log +# make check > make.gcc9.check + make install +# --------------------------- +# Download and build netCDF-C +# --------------------------- + cd $INSTDIR + wget https://github.com/Unidata/netcdf-c/archive/refs/tags/v4.8.0.tar.gz + #wget https://downloads.unidata.ucar.edu/netcdf-c/4.9.2/netcdf-c-4.9.2.zip + tar xvf v4.8.0.tar.gz + cd netcdf-c-4.8.0 + ./configure --with-pic --enable-netcdf-4 --enable-shared --prefix=$INSTDIR + make |& tee make.gcc9.log + make install +# --------------------------------- +# Download and build netCDF-Fortran +# --------------------------------- + cd $INSTDIR + wget https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.5.3.tar.gz + # installation instructions + tar xvf v4.5.3.tar.gz + cd netcdf-fortran-4.5.3 + setenv LIBS "-lnetcdf" + setenv CPPFLAGS -I${INSTDIR}/include + setenv LDFLAGS -L${INSTDIR}/lib + ./configure --with-pic --enable-shared --prefix=$INSTDIR + make |& tee make.gcc9.log + make install +# ----------------------------- +# Download and build netCDF-CXX +# ----------------------------- + cd $INSTDIR + wget https://github.com/Unidata/netcdf-cxx4/archive/refs/tags/v4.3.1.tar.gz + tar xvf v4.3.1.tar.gz + cd netcdf-cxx4-4.3.1 + ./configure --with-pic --enable-shared --prefix=$INSTDIR + make |& tee make.gcc9.log + make install +# -------------------------- +# Download and build OpenMPI +# -------------------------- +# cd $INSTDIR +# wget https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-3.1.4.tar.gz +# tar xvf openmpi-3.1.4.tar.gz +# rm -f openmpi-3.1.4.tar.gz +# cd openmpi-3.1.4 +# export CFLAGS="-O3" +# export FFLAGS="-O3" +# export CXXFLAGS="-O3" +# export FCFLAGS="-O3" +# ./configure --prefix=$INSTDIR --enable-mpi-cxx +# make |& tee make.gcc9.log +## make check > make.gcc9.check +# make install +# ---------------------------------- +# Download and build Parallel netCDF +# ---------------------------------- + cd $INSTDIR + wget https://parallel-netcdf.github.io/Release/pnetcdf-1.12.1.tar.gz + tar xvf pnetcdf-1.12.1.tar.gz + rm -f pnetcdf-1.12.1.tar.gz + cd pnetcdf-1.12.1 + #export CFLAGS="-O3 -fPIC" + #export FFLAGS="-O3 -fPIC" + #export CXXFLAGS="-O3 -fPIC" + #export FCFLAGS="-O3 -fPIC" + #./configure --prefix=$INSTDIR MPIF77=mpif90 MPIF90=mpif90 MPICC=mpicc MPICXX=mpicxx --with-mpi=/nas/longleaf/apps/r/4.1.3/openmpi + ./configure --prefix=$INSTDIR MPIF77=mpif90 MPIF90=mpif90 MPICC=mpicc MPICXX=mpicxx --with-mpi=/nas/longleaf/apps-dogwood/mpi/gcc_9.1.0/openmpi_4.0.1 + make |& tee make.gcc9.log + make install +# ---------------------------------------- +# Use tcsh 6.20 instead of the broken 6.21 +# ---------------------------------------- +# cd /shared/build-hdf5 +# wget http://ftp.funet.fi/pub/mirrors/ftp.astron.com/pub/tcsh/old/tcsh-6.20.00.tar.gz +# tar xvf tcsh-6.20.00.tar.gz +# rm -f tcsh-6.20.00.tar.gz +# cd tcsh-6.20.00 +# ./configure --disable-nls +# make > make.gcc9.log 2>&1 +# make install +# ln -s /usr/local/bin/tcsh /bin/csh +# ---------------------- +# Download and build vim +# ---------------------- +# cd /usr/local/src +# git clone https://github.com/vim/vim.git vim +# cd vim +# ./configure +# make > make.gcc9.log 2>&1 +# make install +# cd /usr/local/bin +# ln -s vim vi + +# install test + cd $INSTDIR/bin + ls h5diff + whereis h5diff + nc-config --version + nf-config --version + ncxx4-config --version From ec9ae3da9159d545a7720fca0bb665f09c5501a8 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 9 Sep 2024 11:09:45 -0400 Subject: [PATCH 212/375] update --- .../Tutorials/gcc_install_netcdf_for_nc4_compression.csh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh index e743623bb..e724042ea 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh @@ -15,8 +15,8 @@ set echo # Set directory for CMAQ Libraries # ------------------- - mkdir /21dayscratch/scr/l/i/lizadams/CMAQ/LIBRARIES/build-hdf5 - setenv INSTDIR /21dayscratch/scr/l/i/lizadams/CMAQ/LIBRARIES/build-hdf5 + mkdir -p $cwd/CMAQv5.5/LIBRARIES + setenv INSTDIR $cwd/CMAQv5.5/LIBRARIES # ---------------------- # Build and install zlib @@ -100,6 +100,8 @@ set echo # ---------------------------------- # Download and build Parallel netCDF # ---------------------------------- +# NOTE: the openmpi directory path is hard coded on this script and needs to be updated for your local machine +## cd $INSTDIR wget https://parallel-netcdf.github.io/Release/pnetcdf-1.12.1.tar.gz tar xvf pnetcdf-1.12.1.tar.gz From 23e782cfebb62d6b6d01359361e9e43f091b73ce Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 9 Sep 2024 11:10:06 -0400 Subject: [PATCH 213/375] update --- .../Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md index 490c0cdfc..dbe0b9834 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md @@ -12,6 +12,7 @@ set install directory ``` set INSTALL_DIR = $cwd/CMAQv5.5/LIBRARIES +mkdir -p $cwd/CMAQv5.5/LIBRARIES ``` 1. If your compute server uses modules use the following command to see what packages are available From e365597e4dc11167c1b47c8bca23f872cc6a8785 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 9 Sep 2024 12:49:36 -0400 Subject: [PATCH 214/375] update --- .../CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md | 34 ++++++------------- ..._tutorial_build_library_gcc_support_nc4.md | 9 +++++ ...gcc_install_netcdf_for_nc4_compression.csh | 31 ++++++++++------- 3 files changed, 38 insertions(+), 36 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md index 9612486cc..ef2cb4445 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md @@ -97,21 +97,20 @@ source config_cmaq.csh gcc 9.5 ## Install the CMAQ reference input and output benchmark data -Download the CMAQ two day reference input and output data for the CRACMM2 mechanism from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. +Download the CMAQ two day reference input and output data for the cb6r5_ae7 mechanism (using inputs from CMAQv5.4 Benchmark release) from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing), download the file CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz. The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. - Use the gdrive command to download the dataset. - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) - Text files are included that provide a list of the files in the benchmark input and output datasets. -The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmas-cmaq.s3.amazonaws.com/index.html). +The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz). Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: ``` cd $CMAQ_DATA -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input_CRACCM2.tar.gz -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output_CRACMM2.tar.gz +tar -xzvf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz ``` ## Compiling CMAQ @@ -153,7 +152,7 @@ The build directory parameters for the benchmark test case include the following To configure these parameters, the CCTM Science Modules within the bldit_cctm.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in [Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). -To keep the BLD directory name unique for each mechansim, modify the bldit_cctm script to use +To keep the BLD directory name unique for each mechansim, verify that the bldit_cctm script uses the following: ``` #> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. @@ -164,11 +163,11 @@ To keep the BLD directory name unique for each mechansim, modify the bldit_cctm endif ``` -Change the dry deposition scheme to use STAGE instead of M3DRY +Verify that the dry deposition scheme to use M3DRY ``` -#> Set Dry Deposition Scheme to Stage +#> Set Dry Deposition Scheme to m3dry - set DepMod = stage + set DepMod = m3dry ``` Following the requisite changes to the CCTM build script, use the following command to create the CCTM executable: @@ -181,27 +180,14 @@ cd $CMAQ_HOME/CCTM/scripts Verify that the BLD directory contains a namelist called ``` -CMAQ_Control_STAGE.nml +cd BLD_CCTM_v55_DDM3D_gcc_cb6r5_ae7_aq_m3dry +ls CMAQ_Control_DESID_cb6r5_ae7_aq.nml ``` -Change to the BLD directory and add the following lines to the bottom of the CMAQ_Control_DESID_cracmm2.nml - -``` - ! Re-Map CRACMM1 Aromatics to CRACMM2 - ! EBZ and XYE remapping, STY and XYM remapping - ! Generic scaling if not scaling by sector: 70% XYL; 30% EBZ - ! EBZ = FAC1 * XYE; STY = FAC2 * XYM ; XYL = (1-FAC1)*XYE + (1-FAC2)*XYM - 'EVERYWHERE', 'ALL' ,'XYE' ,'EBZ' ,'GAS' ,0.30,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'XYE' ,'XYL' ,'GAS' ,0.70,'UNIT','a', - - ! Generic scaling if not scaling by sector: 93% XYL; 7% STY - 'EVERYWHERE', 'ALL' ,'XYM' ,'STY' ,'GAS' ,0.07,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'XYM' ,'XYL' ,'GAS' ,0.93,'UNIT','a', -``` ## Configure the CCTM script -For an MPI configuration with 16 processors, +For an MPI configuration with 32 processors, ``` cd $CMAQ_HOME/CCTM/scripts diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md index dbe0b9834..2367d35bc 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md @@ -15,6 +15,15 @@ set INSTALL_DIR = $cwd/CMAQv5.5/LIBRARIES mkdir -p $cwd/CMAQv5.5/LIBRARIES ``` +### +### unset environment variables that would conflict with this installation +### + +``` + unsetenv LDFLAGS + unsetenv CPPFLAGS +``` + 1. If your compute server uses modules use the following command to see what packages are available ``` diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh index e724042ea..50fa7f06d 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh @@ -11,6 +11,13 @@ set echo module list | grep openmpi which mpirun +# +# unset envioronment variables that would conflict with this installation +# + + unsetenv LDFLAGS + unsetenv CPPFLAGS + # -------------------- # Set directory for CMAQ Libraries # ------------------- @@ -22,18 +29,18 @@ set echo # Build and install zlib # --------------------- - cd $INSTDIR + cd ${INSTDIR} wget https://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz tar -xzvf zlib-1.2.11.tar.gz cd zlib-1.2.11 - ./configure --prefix=$INSTDIR/zlib-1.2.11/gcc_9.1.0 + ./configure --prefix=${INSTDIR}/zlib-1.2.11/gcc_9.1.0 make test |& tee make.test.log make install |& tee make.install.log # ----------------------- # Download and build HDF5 # ----------------------- - cd $INSTDIR + cd ${INSTDIR} wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.5/src/hdf5-1.10.5.tar.gz tar xvf hdf5-1.10.5.tar.gz rm -f hdf5-1.10.5.tar.gz @@ -42,33 +49,33 @@ set echo setenv FFLAGS "-O3" setenv CXXFLAGS "-O3" setenv FCFLAGS "-O3" - ./configure --prefix=$INSTDIR --with-zlib=$INSTDIR/zlib-1.2.11/gcc_9.1.0/include,$INSTDIR/zlib-1.2.11/gcc_9.1.0/lib --enable-hl + ./configure --prefix=${INSTDIR} --with-zlib=${INSTDIR}/zlib-1.2.11/gcc_9.1.0/include,${INSTDIR}/zlib-1.2.11/gcc_9.1.0/lib --enable-hl make |& tee make.gcc9.log # make check > make.gcc9.check make install # --------------------------- # Download and build netCDF-C # --------------------------- - cd $INSTDIR + cd ${INSTDIR} wget https://github.com/Unidata/netcdf-c/archive/refs/tags/v4.8.0.tar.gz #wget https://downloads.unidata.ucar.edu/netcdf-c/4.9.2/netcdf-c-4.9.2.zip tar xvf v4.8.0.tar.gz cd netcdf-c-4.8.0 - ./configure --with-pic --enable-netcdf-4 --enable-shared --prefix=$INSTDIR + ./configure --with-pic --enable-netcdf-4 --disable-shared --prefix=${INSTDIR} make |& tee make.gcc9.log make install # --------------------------------- # Download and build netCDF-Fortran # --------------------------------- - cd $INSTDIR - wget https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.5.3.tar.gz + cd ${INSTDIR} + wget https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.5.4.tar.gz # installation instructions - tar xvf v4.5.3.tar.gz - cd netcdf-fortran-4.5.3 + tar xvf v4.5.4.tar.gz + cd netcdf-fortran-4.5.4 setenv LIBS "-lnetcdf" setenv CPPFLAGS -I${INSTDIR}/include setenv LDFLAGS -L${INSTDIR}/lib - ./configure --with-pic --enable-shared --prefix=$INSTDIR + ./configure --with-pic --disable-shared --prefix=${INSTDIR} make |& tee make.gcc9.log make install # ----------------------------- @@ -78,7 +85,7 @@ set echo wget https://github.com/Unidata/netcdf-cxx4/archive/refs/tags/v4.3.1.tar.gz tar xvf v4.3.1.tar.gz cd netcdf-cxx4-4.3.1 - ./configure --with-pic --enable-shared --prefix=$INSTDIR + ./configure --with-pic --disable-shared --prefix=$INSTDIR make |& tee make.gcc9.log make install # -------------------------- From 464fda95bdc98a1ad0ac89ada3a226c454754aa8 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 9 Sep 2024 13:31:44 -0400 Subject: [PATCH 215/375] update --- .../Tutorials/gcc_install_netcdf_for_nc4_compression.csh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh index 50fa7f06d..f91ee8e0d 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh @@ -72,9 +72,15 @@ set echo # installation instructions tar xvf v4.5.4.tar.gz cd netcdf-fortran-4.5.4 - setenv LIBS "-lnetcdf" + setenv FC gfortran + setenv F90 gfortran + setenv F77 gfortran + setenv CC gcc + setenv CXX g++ + setenv LIBS " -lnetcdf -lhdf5_hl -lhdf5 -lm -ldl -lz -lcurl " setenv CPPFLAGS -I${INSTDIR}/include setenv LDFLAGS -L${INSTDIR}/lib + setenv LD_LIBRARY_PATH ${INSTDIR}/lib ./configure --with-pic --disable-shared --prefix=${INSTDIR} make |& tee make.gcc9.log make install From 7dd9eec125cbed0495e543ea3f9acad5b3b5eae5 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 9 Sep 2024 14:35:54 -0400 Subject: [PATCH 216/375] add ioapi build script --- .../Tutorials/gcc_install_ioapi.csh | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh b/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh new file mode 100755 index 000000000..fffa8fa85 --- /dev/null +++ b/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh @@ -0,0 +1,36 @@ +#!/bin/csh -f +set echo + +# -------------------------------------- +# Add /usr/local/lib to the library path +# -------------------------------------- +# if [ -z ${LD_LIBRARY_PATH} ] +# then +# export LD_LIBRARY_PATH=/usr/local/lib +# else +# export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib +# fi +# ---------------------- +# Unpack and build IOAPI +# ---------------------- + setenv INSTDIR /21dayscratch/scr/l/i/lizadams/CMAQv5.5/LIBRARIES + cd $INSTDIR + git clone https://github.com/cjcoats/ioapi-3.2 + cd ioapi-3.2 + git checkout -b 20200828 + setenv BASEDIR $INSTDIR/ioapi-3.2 + setenv BIN Linux2_x86_64gfort + mkdir $BASEDIR/$BIN + setenv CPLMODE nocpl + # Edit Makefile or use syntax: make BIN=Linux2_x86_64pg CPLMODE=pncf INSTALL=/foo/bar + cd $BASEDIR/ioapi + cp Makefile.$CPLMODE ${BASEDIR}/ioapi/Makefile + cp Makefile.$CPLMODE ${BASEDIR}/m3tools/Makefile + # need updated Makefile to include ‘-DIOAPI_NCF4=1’ to the MFLAGS make-variable to avoid multiple definition of `nf_get_vara_int64_’ + sed -i -e 's/m64/m64 -DIOAPI_NCF4=1/g' Makeinclude.Linux2_x86_64gfort + make HOME=$INSTDIR | & tee make.log + cd $INSTDIR/ioapi-3.2/m3tools + make HOME=$INSTDIR | & tee make.log + # cd $BASEDIR/m3tools + #cp $PDIR/Makefile.template Makefile + #make HOME=$DIR/install From 2410249a412400f349effefb6b04e22afbc42204 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 9 Sep 2024 15:04:11 -0400 Subject: [PATCH 217/375] Update CMAQ_Control_Misc.nml Add information to the comments at the top of the file on what a user needs to do when selecting key word 'TOXICS' to ensure all toxics species are included in ELMO output files. --- CCTM/src/util/util/CMAQ_Control_Misc.nml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CCTM/src/util/util/CMAQ_Control_Misc.nml b/CCTM/src/util/util/CMAQ_Control_Misc.nml index 32fcabd5b..a5fd7c6a1 100644 --- a/CCTM/src/util/util/CMAQ_Control_Misc.nml +++ b/CCTM/src/util/util/CMAQ_Control_Misc.nml @@ -65,6 +65,16 @@ ! FAMS ! ! 'TOXICS' - Species output by the toxics version of CMAQ ! ! (e.g. PM25_HBE, PM25_HNI, PM10_HDIESEL', etc ! +! In CMAQ v5.5 and earlier versions with ELMO output! +! files, the TOXICS keyword group omits several ! +! toxic aerosol species. The missing species include! +! PM10 for nickle as well as PM25, PM10, and ! +! fraction aerosol for benzo[a]pyrene. To have the ! +! variables in the ELMO output files, a user has to ! +! add PM10_HNI, PM25_BENAPY, PM10_BENAPY and ! +! BENAPY_FAERO as well as the TOXICS keyword groups ! +! to CMAQ_Control_Misc.nml file in the CCTM build ! +! directory. ! ! ! ! ELMO_AVRG - set parameters for average output ! ! 'AVRG_LAYER_TOP' - top CMAQ layer for average output. Enter '-1' ! From 8eb8992b509c8ff29111d5c16bb1896fb21cc9cf Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 9 Sep 2024 15:10:08 -0400 Subject: [PATCH 218/375] Create CMAQ_UG_ch14_MPAS-CMAQ.md New Chapter for MPAS-CMAQ. --- DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md diff --git a/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md b/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md @@ -0,0 +1 @@ + From b6ab8907e3435b6111f08a297b4945f38ba7ba7c Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 9 Sep 2024 15:13:00 -0400 Subject: [PATCH 219/375] Update CMAQ_UG_ch14_MPAS-CMAQ.md --- DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md b/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md index 8b1378917..75e2abdec 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md @@ -1 +1,31 @@ + + +[<< Previous Chapter](CMAQ_UG_ch13_wrf-cmaq.md) - [Home](README.md) - [Tables and Figures >>](CMAQ_UG_tables_figures.md) + + + +# 14. MPAS-CMAQ Model + +## 14.1 Introduction + + +## 14.2 Documentation + +## 14.3 Application and Evaluation + +## 14.4 MPAS-CMAQ Release + + +## 14.5 MPAS-CMAQ Benchmark Test Case + + +## 14.6 References + + + + + +[<< Previous Chapter](CMAQ_UG_ch13_wrf-cmaq.md) - [Home](README.md) - [Tables and Figures >>](CMAQ_UG_tables_figures.md)
+ + From 38446db8e5690e7c7166af54d37e7b1e0a51b1a1 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 9 Sep 2024 15:13:50 -0400 Subject: [PATCH 220/375] Update CMAQ_UG_ch14_MPAS-CMAQ.md --- DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md b/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md index 75e2abdec..98db62c7f 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md @@ -1,6 +1,6 @@ -[<< Previous Chapter](CMAQ_UG_ch13_wrf-cmaq.md) - [Home](README.md) - [Tables and Figures >>](CMAQ_UG_tables_figures.md) +[<< Previous Chapter](CMAQ_UG_ch13_WRF-CMAQ.md) - [Home](README.md) - [Tables and Figures >>](CMAQ_UG_tables_figures.md) @@ -25,7 +25,7 @@ -[<< Previous Chapter](CMAQ_UG_ch13_wrf-cmaq.md) - [Home](README.md) - [Tables and Figures >>](CMAQ_UG_tables_figures.md)
+[<< Previous Chapter](CMAQ_UG_ch13_WRF-CMAQ.md) - [Home](README.md) - [Tables and Figures >>](CMAQ_UG_tables_figures.md)
From e5c6b93c5f09d6f305dbfbc91e8493df523c69e9 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 9 Sep 2024 15:14:53 -0400 Subject: [PATCH 221/375] Update CMAQ_UG_ch13_WRF-CMAQ.md --- DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md b/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md index 521f7c967..8f2d87012 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md @@ -1,6 +1,6 @@ -[<< Previous Chapter](CMAQ_UG_ch12_sulfur_tracking.md) - [Home](README.md) - [Tables and Figures >>](CMAQ_UG_tables_figures.md) +[<< Previous Chapter](CMAQ_UG_ch12_sulfur_tracking.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch14_MPAS-CMAQ.md.md) @@ -86,6 +86,6 @@ and for more details on the 2-way Coupled WRF-CMAQ system see: http://www.cmasce -[<< Previous Chapter](CMAQ_UG_ch12_sulfur_tracking.md) - [Home](README.md) - [Tables and Figures >>](CMAQ_UG_tables_figures.md)
+[<< Previous Chapter](CMAQ_UG_ch12_sulfur_tracking.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch14_MPAS-CMAQ.md.md)
From 51437c436a6a5df3ff265f69ebc915fa3beb612e Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 9 Sep 2024 15:15:10 -0400 Subject: [PATCH 222/375] Update CMAQ_UG_ch13_WRF-CMAQ.md --- DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md b/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md index 8f2d87012..8437bf87f 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md @@ -1,6 +1,6 @@ -[<< Previous Chapter](CMAQ_UG_ch12_sulfur_tracking.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch14_MPAS-CMAQ.md.md) +[<< Previous Chapter](CMAQ_UG_ch12_sulfur_tracking.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch14_MPAS-CMAQ.md) @@ -86,6 +86,6 @@ and for more details on the 2-way Coupled WRF-CMAQ system see: http://www.cmasce -[<< Previous Chapter](CMAQ_UG_ch12_sulfur_tracking.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch14_MPAS-CMAQ.md.md)
+[<< Previous Chapter](CMAQ_UG_ch12_sulfur_tracking.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch14_MPAS-CMAQ.md)
From c1addec2b023b8edc95f62eddcfd28dfadd50ecb Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 9 Sep 2024 15:21:32 -0400 Subject: [PATCH 223/375] Update README.md --- DOCS/Users_Guide/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DOCS/Users_Guide/README.md b/DOCS/Users_Guide/README.md index b4389d1cd..cf45e15a1 100644 --- a/DOCS/Users_Guide/README.md +++ b/DOCS/Users_Guide/README.md @@ -35,6 +35,8 @@ Note: While this User's Guide is packaged with the code when it is downloaded or [Chapter 13 (WRF-CMAQ):](CMAQ_UG_ch13_WRF-CMAQ.md) WRF-CMAQ model for simulating interactions between chemistry and weather. +[Chapter 14 (MPAS-CMAQ):](CMAQ_UG_ch14_MPAS-CMAQ.md) CMAQ is coulpled with the global Model for Prediction Across Scales (MPAS) allowing for seamless mesh refinement from global to local scales. + [Tables and Figures:](CMAQ_UG_tables_figures.md) List of Tables and Figures. [Appendix A (Model Options):](Appendix/CMAQ_UG_appendixA_model_options.md) List of model options in configuration, compilation and run scripts. From 309dcf8151b3666ff3504f34218131585b33beab Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 9 Sep 2024 15:38:43 -0400 Subject: [PATCH 224/375] update --- .../Tutorials/gcc_install_ioapi.csh | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh b/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh index fffa8fa85..ec1c862e5 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh @@ -1,15 +1,15 @@ #!/bin/csh -f +# Build I/O API version that supports NCF4 set echo # -------------------------------------- -# Add /usr/local/lib to the library path +# Add to the library path # -------------------------------------- -# if [ -z ${LD_LIBRARY_PATH} ] -# then -# export LD_LIBRARY_PATH=/usr/local/lib -# else -# export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib -# fi + if (! $?LD_LIBRARY_PATH) then + setenv LD_LIBRARY_PATH /21dayscratch/scr/l/i/lizadams/CMAQv5.5/LIBRARIES/lib + else + setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/21dayscratch/scr/l/i/lizadams/CMAQv5.5/LIBRARIES/lib + endif # ---------------------- # Unpack and build IOAPI # ---------------------- @@ -22,15 +22,23 @@ set echo setenv BIN Linux2_x86_64gfort mkdir $BASEDIR/$BIN setenv CPLMODE nocpl - # Edit Makefile or use syntax: make BIN=Linux2_x86_64pg CPLMODE=pncf INSTALL=/foo/bar + # Edit Makefile or use syntax: make BIN=Linux2_x86_64pg CPLMODE=nocpl INSTALL=$INSTDIR cd $BASEDIR/ioapi - cp Makefile.$CPLMODE ${BASEDIR}/ioapi/Makefile - cp Makefile.$CPLMODE ${BASEDIR}/m3tools/Makefile + # Copy the Makefile template + cp $BASEDIR/ioapi/Makefile.$CPLMODE ${BASEDIR}/ioapi/Makefile + cp ${BASEDIR}/m3tools/Makefile.$CPLMODE ${BASEDIR}/m3tools/Makefile + # Modify to specify the path of the netcdf libraries + sed -i 's/\-lnetcdff/\-L\$\{HOME\}\/lib \-lnetcdff/g' ${BASEDIR}/m3tools/Makefile # need updated Makefile to include ‘-DIOAPI_NCF4=1’ to the MFLAGS make-variable to avoid multiple definition of `nf_get_vara_int64_’ - sed -i -e 's/m64/m64 -DIOAPI_NCF4=1/g' Makeinclude.Linux2_x86_64gfort + # Makefile can be edited to use these options instead of the default options + VFLAG = -DVERSION='3.2-nocpl-ncf4' + DEFINEFLAGS = -DIOAPI_NCF4=1 $(ARCHFLAGS) $(PARFLAGS) + #This will remove # from the start of line 102 or add it if it wasn't already there: + sed -i '102s/^#/\n/; 102s/^[^\n]/#&/; 102s/^\n//' + sed -i '100s/^#/\n/; 100s/^[^\n]/#&/; 100s/^\n//' + sed -i '109s/^#/\n/; 109s/^[^\n]/#&/; 109s/^\n//' + sed -i '111s/^#/\n/; 111s/^[^\n]/#&/; 111s/^\n//' + #sed -i -e 's/m64/m64 -DIOAPI_NCF4=1/g' Makeinclude.Linux2_x86_64gfort make HOME=$INSTDIR | & tee make.log cd $INSTDIR/ioapi-3.2/m3tools make HOME=$INSTDIR | & tee make.log - # cd $BASEDIR/m3tools - #cp $PDIR/Makefile.template Makefile - #make HOME=$DIR/install From 9f52eb1f2189e325c69df323e98e87888d703e9e Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 9 Sep 2024 15:50:26 -0400 Subject: [PATCH 225/375] update --- DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh b/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh index ec1c862e5..4e194995f 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh @@ -28,16 +28,16 @@ set echo cp $BASEDIR/ioapi/Makefile.$CPLMODE ${BASEDIR}/ioapi/Makefile cp ${BASEDIR}/m3tools/Makefile.$CPLMODE ${BASEDIR}/m3tools/Makefile # Modify to specify the path of the netcdf libraries - sed -i 's/\-lnetcdff/\-L\$\{HOME\}\/lib \-lnetcdff/g' ${BASEDIR}/m3tools/Makefile + sed -i 's/\-lnetcdff/\-L\$\{HOME\}\/lib \-lnetcdff \-lnetcdf \-lhdf5_hl \-lhdf5 \-lm \-ldl \-lz \-lcurl/g' ${BASEDIR}/m3tools/Makefile # need updated Makefile to include ‘-DIOAPI_NCF4=1’ to the MFLAGS make-variable to avoid multiple definition of `nf_get_vara_int64_’ # Makefile can be edited to use these options instead of the default options - VFLAG = -DVERSION='3.2-nocpl-ncf4' - DEFINEFLAGS = -DIOAPI_NCF4=1 $(ARCHFLAGS) $(PARFLAGS) + # VFLAG = -DVERSION='3.2-nocpl-ncf4' + # DEFINEFLAGS = -DIOAPI_NCF4=1 $(ARCHFLAGS) $(PARFLAGS) #This will remove # from the start of line 102 or add it if it wasn't already there: - sed -i '102s/^#/\n/; 102s/^[^\n]/#&/; 102s/^\n//' - sed -i '100s/^#/\n/; 100s/^[^\n]/#&/; 100s/^\n//' - sed -i '109s/^#/\n/; 109s/^[^\n]/#&/; 109s/^\n//' - sed -i '111s/^#/\n/; 111s/^[^\n]/#&/; 111s/^\n//' + sed -i '102s/^#/\n/; 102s/^[^\n]/#&/; 102s/^\n//' Makefile + sed -i '100s/^#/\n/; 100s/^[^\n]/#&/; 100s/^\n//' Makefile + sed -i '109s/^#/\n/; 109s/^[^\n]/#&/; 109s/^\n//' Makefile + sed -i '111s/^#/\n/; 111s/^[^\n]/#&/; 111s/^\n//' Makefile #sed -i -e 's/m64/m64 -DIOAPI_NCF4=1/g' Makeinclude.Linux2_x86_64gfort make HOME=$INSTDIR | & tee make.log cd $INSTDIR/ioapi-3.2/m3tools From 9f0e30604abe978e683a5ca0600709ed558a7154 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 9 Sep 2024 15:53:15 -0400 Subject: [PATCH 226/375] update --- .../Tutorials/gcc_install_ioapi.csh | 14 +++--- .../gcc_install_ioapi_for_nc4_compression.csh | 46 +++++++++++++++++++ 2 files changed, 54 insertions(+), 6 deletions(-) create mode 100755 DOCS/Users_Guide/Tutorials/gcc_install_ioapi_for_nc4_compression.csh diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh b/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh index 4e194995f..f2c7000a8 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh @@ -2,19 +2,21 @@ # Build I/O API version that supports NCF4 set echo + + setenv INSTDIR /21dayscratch/scr/l/i/lizadams/CMAQv5.5/LIBRARIES + cd $INSTDIR + # -------------------------------------- # Add to the library path # -------------------------------------- if (! $?LD_LIBRARY_PATH) then - setenv LD_LIBRARY_PATH /21dayscratch/scr/l/i/lizadams/CMAQv5.5/LIBRARIES/lib + setenv LD_LIBRARY_PATH $INSTDIR/lib else - setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/21dayscratch/scr/l/i/lizadams/CMAQv5.5/LIBRARIES/lib + setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:$INSTDIR/lib endif # ---------------------- # Unpack and build IOAPI # ---------------------- - setenv INSTDIR /21dayscratch/scr/l/i/lizadams/CMAQv5.5/LIBRARIES - cd $INSTDIR git clone https://github.com/cjcoats/ioapi-3.2 cd ioapi-3.2 git checkout -b 20200828 @@ -39,6 +41,6 @@ set echo sed -i '109s/^#/\n/; 109s/^[^\n]/#&/; 109s/^\n//' Makefile sed -i '111s/^#/\n/; 111s/^[^\n]/#&/; 111s/^\n//' Makefile #sed -i -e 's/m64/m64 -DIOAPI_NCF4=1/g' Makeinclude.Linux2_x86_64gfort - make HOME=$INSTDIR | & tee make.log + make HOME=$INSTDIR | & tee make.ioapi.log cd $INSTDIR/ioapi-3.2/m3tools - make HOME=$INSTDIR | & tee make.log + make HOME=$INSTDIR | & tee make.m3tools.log diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_ioapi_for_nc4_compression.csh b/DOCS/Users_Guide/Tutorials/gcc_install_ioapi_for_nc4_compression.csh new file mode 100755 index 000000000..f2c7000a8 --- /dev/null +++ b/DOCS/Users_Guide/Tutorials/gcc_install_ioapi_for_nc4_compression.csh @@ -0,0 +1,46 @@ +#!/bin/csh -f +# Build I/O API version that supports NCF4 +set echo + + + setenv INSTDIR /21dayscratch/scr/l/i/lizadams/CMAQv5.5/LIBRARIES + cd $INSTDIR + +# -------------------------------------- +# Add to the library path +# -------------------------------------- + if (! $?LD_LIBRARY_PATH) then + setenv LD_LIBRARY_PATH $INSTDIR/lib + else + setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:$INSTDIR/lib + endif +# ---------------------- +# Unpack and build IOAPI +# ---------------------- + git clone https://github.com/cjcoats/ioapi-3.2 + cd ioapi-3.2 + git checkout -b 20200828 + setenv BASEDIR $INSTDIR/ioapi-3.2 + setenv BIN Linux2_x86_64gfort + mkdir $BASEDIR/$BIN + setenv CPLMODE nocpl + # Edit Makefile or use syntax: make BIN=Linux2_x86_64pg CPLMODE=nocpl INSTALL=$INSTDIR + cd $BASEDIR/ioapi + # Copy the Makefile template + cp $BASEDIR/ioapi/Makefile.$CPLMODE ${BASEDIR}/ioapi/Makefile + cp ${BASEDIR}/m3tools/Makefile.$CPLMODE ${BASEDIR}/m3tools/Makefile + # Modify to specify the path of the netcdf libraries + sed -i 's/\-lnetcdff/\-L\$\{HOME\}\/lib \-lnetcdff \-lnetcdf \-lhdf5_hl \-lhdf5 \-lm \-ldl \-lz \-lcurl/g' ${BASEDIR}/m3tools/Makefile + # need updated Makefile to include ‘-DIOAPI_NCF4=1’ to the MFLAGS make-variable to avoid multiple definition of `nf_get_vara_int64_’ + # Makefile can be edited to use these options instead of the default options + # VFLAG = -DVERSION='3.2-nocpl-ncf4' + # DEFINEFLAGS = -DIOAPI_NCF4=1 $(ARCHFLAGS) $(PARFLAGS) + #This will remove # from the start of line 102 or add it if it wasn't already there: + sed -i '102s/^#/\n/; 102s/^[^\n]/#&/; 102s/^\n//' Makefile + sed -i '100s/^#/\n/; 100s/^[^\n]/#&/; 100s/^\n//' Makefile + sed -i '109s/^#/\n/; 109s/^[^\n]/#&/; 109s/^\n//' Makefile + sed -i '111s/^#/\n/; 111s/^[^\n]/#&/; 111s/^\n//' Makefile + #sed -i -e 's/m64/m64 -DIOAPI_NCF4=1/g' Makeinclude.Linux2_x86_64gfort + make HOME=$INSTDIR | & tee make.ioapi.log + cd $INSTDIR/ioapi-3.2/m3tools + make HOME=$INSTDIR | & tee make.m3tools.log From 4384c30df0344cc2ddb7a1be11af43b2464d1629 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 9 Sep 2024 16:36:29 -0400 Subject: [PATCH 227/375] Update UG footer to say CMAQv5.5 On branch 5.5_docs Changes to be committed: modified: Appendix/CMAQ_UG_appendixA_model_options.md modified: Appendix/CMAQ_UG_appendixB_emissions_control.md modified: Appendix/CMAQ_UG_appendixC_spatial_data.md modified: Appendix/CMAQ_UG_appendixD_parallel_implementation.md modified: Appendix/CMAQ_UG_appendixE_configuring_WRF.md modified: Appendix/CMAQ_UG_appendixF_elmo_output.md modified: CMAQ_UG_ch01_overview.md modified: CMAQ_UG_ch02_program_structure.md modified: CMAQ_UG_ch03_preparing_compute_environment.md modified: CMAQ_UG_ch04_model_inputs.md modified: CMAQ_UG_ch05_running_a_simulation.md modified: CMAQ_UG_ch06_model_configuration_options.md modified: CMAQ_UG_ch07_model_outputs.md modified: CMAQ_UG_ch08_analysis_tools.md modified: CMAQ_UG_ch09_process_analysis.md modified: CMAQ_UG_ch10_HDDM-3D.md modified: CMAQ_UG_ch11_ISAM.md modified: CMAQ_UG_ch12_sulfur_tracking.md modified: CMAQ_UG_ch13_WRF-CMAQ.md modified: CMAQ_UG_ch14_MPAS-CMAQ.md modified: CMAQ_UG_tables_figures.md modified: README.md --- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md | 3 ++- .../Appendix/CMAQ_UG_appendixB_emissions_control.md | 2 +- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md | 3 ++- .../Appendix/CMAQ_UG_appendixD_parallel_implementation.md | 3 ++- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md | 3 ++- DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md | 2 +- DOCS/Users_Guide/CMAQ_UG_ch01_overview.md | 2 +- DOCS/Users_Guide/CMAQ_UG_ch02_program_structure.md | 3 +-- DOCS/Users_Guide/CMAQ_UG_ch03_preparing_compute_environment.md | 2 +- DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md | 3 +-- DOCS/Users_Guide/CMAQ_UG_ch05_running_a_simulation.md | 2 +- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 2 +- DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md | 2 +- DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md | 2 +- DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md | 2 +- DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md | 2 +- DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md | 2 +- DOCS/Users_Guide/CMAQ_UG_ch12_sulfur_tracking.md | 2 +- DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md | 2 +- DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md | 1 + DOCS/Users_Guide/CMAQ_UG_tables_figures.md | 2 +- DOCS/Users_Guide/README.md | 2 +- 22 files changed, 26 insertions(+), 23 deletions(-) diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md index eabbd1326..3f83c9b86 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixA_model_options.md @@ -737,5 +737,6 @@ Options for use with MEGAN: [<< Tables and Figures](../CMAQ_UG_tables_figures.md) - [Home](../README.md) - [Next Appendix >>](CMAQ_UG_appendixB_emissions_control.md)
- CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
+ diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md index 4d080b41c..f22ced0c0 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md @@ -415,6 +415,6 @@ For this set of example, Desid_N_Diag_Rules in the Desid_DiagVars section should [<< Previous Appendix](CMAQ_UG_appendixA_model_options.md) - [Home](../README.md) - [Next Appendix >>](CMAQ_UG_appendixC_spatial_data.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md index 4db396fed..200b0ee80 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixC_spatial_data.md @@ -96,5 +96,6 @@ update their geogrid land cover data using the more accurate land cover data gen [<< Previous Appendix](CMAQ_UG_appendixB_emissions_control.md) - [Home](../README.md) - [Next Appendix >>](CMAQ_UG_appendixD_parallel_implementation.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
+ diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixD_parallel_implementation.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixD_parallel_implementation.md index 100664cd3..722f2c0d6 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixD_parallel_implementation.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixD_parallel_implementation.md @@ -139,5 +139,6 @@ Wong, D.C., Yang, C.E., Fu, J.S., Wong, K., & Gao, Y. (2015). An approach to enh [<< Previous Appendix](CMAQ_UG_appendixC_spatial_data.md) - [Home](../README.md) - [Next Appendix >>](CMAQ_UG_appendixE_configuring_WRF.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
+ diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md index ae9593efa..7944811b9 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixE_configuring_WRF.md @@ -82,5 +82,6 @@ Kang, D., Heath, N., Gilliam, R., Spero, T., and Pleim, J.: Lightning Assimilati [<< Previous Appendix](CMAQ_UG_appendixD_parallel_implementation.md) - [Home](../README.md) - [Next Appendix >>](CMAQ_UG_appendixF_elmo_output.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
+ diff --git a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md index 6f95c32ce..3d0fce883 100644 --- a/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md +++ b/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixF_elmo_output.md @@ -152,6 +152,6 @@ Follow the example of existing variables to prescribe the species to be added, t [<< Previous Appendix](CMAQ_UG_appendixE_configuring_WRF.md) - [Home](../README.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md b/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md index a20ce0a17..1ee2bcd03 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md @@ -95,6 +95,6 @@ ___ [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch02_program_structure.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/CMAQ_UG_ch02_program_structure.md b/DOCS/Users_Guide/CMAQ_UG_ch02_program_structure.md index 9d12c6b62..423398fc3 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch02_program_structure.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch02_program_structure.md @@ -33,7 +33,6 @@ The CMAQ release includes several optional utilities for model developers. These [<< Previous Chapter](CMAQ_UG_ch01_overview.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch03_preparing_compute_environment.md) - -CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/CMAQ_UG_ch03_preparing_compute_environment.md b/DOCS/Users_Guide/CMAQ_UG_ch03_preparing_compute_environment.md index f7ea66176..e12ec55d0 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch03_preparing_compute_environment.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch03_preparing_compute_environment.md @@ -159,6 +159,6 @@ Wong, D. C., Yang, C. E., Fu, J. S., Wong, K., and Gao, Y., “An approach to en [<< Previous Chapter](CMAQ_UG_ch02_program_structure.md)- [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch04_model_inputs.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md index ed91c0060..246476e45 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch04_model_inputs.md @@ -872,8 +872,7 @@ Wavelength and photolysis rate parameters for CMAQ in-line photolysis calculatio [<< Previous Chapter](CMAQ_UG_ch03_preparing_compute_environment.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch05_running_a_simulation.md) - - CMAQ User's Guide (c) 2022
+ CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/CMAQ_UG_ch05_running_a_simulation.md b/DOCS/Users_Guide/CMAQ_UG_ch05_running_a_simulation.md index bc71c411d..91d74ec93 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch05_running_a_simulation.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch05_running_a_simulation.md @@ -467,6 +467,6 @@ See the [CMAQ Installation and Benchmarking Tutorial](Tutorials/CMAQ_UG_tutorial [<< Previous Chapter](CMAQ_UG_ch04_model_inputs.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch06_model_configuration_options.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index e6db3e223..6947b43f2 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -1190,7 +1190,7 @@ Zhao, J., Sarwar, G., Gantt, B., Foley, K., Kang, D., Fahey, K., Mathur, R., Hen [<< Previous Chapter](CMAQ_UG_ch05_running_a_simulation.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch07_model_outputs.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md index 0b57e220a..b50fe2128 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch07_model_outputs.md @@ -366,6 +366,6 @@ This optional 3-D CCTM file contains vertical profiles of the concentration of m [<< Previous Chapter](CMAQ_UG_ch06_model_configuration_options.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch08_analysis_tools.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md index 5aa704af5..e8785c610 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch08_analysis_tools.md @@ -93,6 +93,6 @@ The CMAS Center currently hosts VERDI at https://www.cmascenter.org/verdi, provi [<< Previous Chapter](CMAQ_UG_ch07_model_outputs.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch09_process_analysis.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md index 5768831dc..23f4e11df 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch09_process_analysis.md @@ -226,6 +226,6 @@ Tonnesen, S., & Jeffries, H.E. (1994). Inhibition of odd oxygen production in th [<< Previous Chapter](CMAQ_UG_ch08_analysis_tools.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch10_HDDM-3D.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md b/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md index ea443c649..1dbbf6067 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch10_HDDM-3D.md @@ -210,6 +210,6 @@ Dunker, A. 1984: The decoupled direct method for calculating sensitivity coeffic [<< Previous Chapter](CMAQ_UG_ch09_process_analysis.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch11_ISAM.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md b/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md index a8da7636b..0151ba019 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch11_ISAM.md @@ -257,6 +257,6 @@ Tonnesen, G.S. & Dennis, R.L. (2000b). Analysis of radical propagation efficienc [<< Previous Chapter](CMAQ_UG_ch10_HDDM-3D.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch12_sulfur_tracking.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/CMAQ_UG_ch12_sulfur_tracking.md b/DOCS/Users_Guide/CMAQ_UG_ch12_sulfur_tracking.md index 44695a9d0..211300508 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch12_sulfur_tracking.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch12_sulfur_tracking.md @@ -73,6 +73,6 @@ Note that several of the standard CMAQ output files (ACONC, CONC, CGRID, DDEP, a [<< Previous Chapter](CMAQ_UG_ch11_ISAM.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch13_WRF-CMAQ.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md b/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md index 8437bf87f..ee92705b8 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch13_WRF-CMAQ.md @@ -87,5 +87,5 @@ and for more details on the 2-way Coupled WRF-CMAQ system see: http://www.cmasce [<< Previous Chapter](CMAQ_UG_ch12_sulfur_tracking.md) - [Home](README.md) - [Next Chapter >>](CMAQ_UG_ch14_MPAS-CMAQ.md)
- +CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md b/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md index 98db62c7f..6223ca13a 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md @@ -26,6 +26,7 @@ [<< Previous Chapter](CMAQ_UG_ch13_WRF-CMAQ.md) - [Home](README.md) - [Tables and Figures >>](CMAQ_UG_tables_figures.md)
+CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/CMAQ_UG_tables_figures.md b/DOCS/Users_Guide/CMAQ_UG_tables_figures.md index 1d3982f27..7c059abfc 100644 --- a/DOCS/Users_Guide/CMAQ_UG_tables_figures.md +++ b/DOCS/Users_Guide/CMAQ_UG_tables_figures.md @@ -63,6 +63,6 @@ [<< Previous Chapter](CMAQ_UG_ch13_WRF-CMAQ.md) - [Home](README.md) - [Appendix >>](Appendix/CMAQ_UG_appendixA_model_options.md)
-CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
diff --git a/DOCS/Users_Guide/README.md b/DOCS/Users_Guide/README.md index cf45e15a1..f1819f813 100644 --- a/DOCS/Users_Guide/README.md +++ b/DOCS/Users_Guide/README.md @@ -53,4 +53,4 @@ Note: While this User's Guide is packaged with the code when it is downloaded or *** -CMAQ User's Guide (c) 2022
+CMAQv5.5 User's Guide
From d4f95fcf181c1486620965b6f2c9e409cec8ad22 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 9 Sep 2024 16:48:07 -0400 Subject: [PATCH 228/375] Update CMAQ_UG_ch01_overview.md --- DOCS/Users_Guide/CMAQ_UG_ch01_overview.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md b/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md index 1ee2bcd03..3725e469f 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md @@ -62,17 +62,16 @@ In addition to the air pollutant concentration and deposition fields output by C 6. *[Budget Tool](CMAQ_UG_ch09_process_analysis.md)*: This tool outputs domain-wide burden and specific process rates for user-selected variables in a summarized ascii file. This data can be useful in understanding broad features of the lifecycle of trace pollutants and in diagnosing potential model inconsistencies. 7. *[Explicit and Lumped CMAQ Model Output (ELMO) Module](Appendix/CMAQ_UG_appendixG_elmo_output.md)*: The ELMO Module allows users to request direct output of aggregate variables like PM2.5 mass, total organic aerosol, and aerosol properties like mode-specific diameter and standard deviation. Users can also select scalar CMAQ variables and meteorological variables be added to ELMO output files. -## 1.4 New Features in CMAQv5.4 -Building on previous versions of the modeling system, numerous updates to the process science and model structure have been implemented in CMAQv5.4 including: -1. Gas and aerosol chemistry mechanisms have been updated to include more recent scientific understanding. The Carbon Bond mechanism was updated to version CB6r5. The Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMM) is introduced with detailed representation of the chemistry of the Reactive Organic Carbon system including a fully bottom-up implementation of SOA formation from volatile precursors. -2. Two models of aerosol and gas land surface exchange are maintained: M3DRY and STAGE. The representation of aerosol dry deposition has been updated using data from more recent field measurements. Three optional algorithms are available for modeling aerosol deposition. -3. Biogenic emission approaches have been improved considerably, with land use focused updates to the BEIS model, and the introduction for the first time ever of the MEGAN biogenic emission model online in CMAQ. -4. The process of building model code for coupling CMAQ with WRFv4.4+ has been streamlined and better documented. -5. The AMETv1.5 tool is released with new analysis scripts on both the meteorological and air quality sides of AMET. The release also includes new and improved interactive scripts, improved error checking, and various bug fixes. -6. The CMAQ-ISAM and CMAQ-DDM systems have been generalized, streamlined, and improved so that they support multiple model configurations. CMAQ-ISAM is now equipped with options for apportioning Carbon and Nitrogen. -7. Community partners from Tsinghua University have contributed a research-grade chemical mechanism that implements the Two-Dimensional Volatility Basis Set (2D-VBS) for SOA formation and aging. It is built upon the SAPRC07 gas-phase mechanism and is available from the Github repo via a dedicated branch [('2DVBS')](https://github.com/USEPA/CMAQ/tree/2DVBS). - -Collectively, these updates improve model capabilities for addressing local nonattainment issues, quantifying natural contributions versus anthropogenic enhancements, enabling examination of regional air pollution in context of changing global emissions, and for cross-media applications. Additionally, changes to model structure in CMAQv5.4 are oriented towards improving transparency of model assumptions, improved diagnostic tools for model probing, and improvements in overall numerical and computational efficiency of the modeling system. +## 1.4 New Features in CMAQv5.5 +Building on previous versions of the modeling system, numerous updates to the process science and model structure have been implemented in CMAQv5.5 including: + +1. Gas and aerosol chemistry mechanisms have been updated to include more recent scientific understanding. CMAQv5.5 introduces version 2 of the Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMM2). CRACMM2 includes several updates to CRACMM1. Many updates are intended to improve the representation of secondary formaldehyde (HCHO) in CRACMM. These include the incorporation of the AMORE v1.2 isoprene condensation into the primary CRACMM mechanism, updates to HCHO yields from monoterpenes, and the addition of styrene as a new explicit species. Additional updates include changes to monoterpene nitrates that affect SOA formation and NOx recycling, the inclusion of emitted methane (ECH4), heterogeneous uptake of HO2 and NO3 radicals, and changes in how emissions of certain aromatic species are mapped to CRACMM species. + +2. A new option for estimation of photolysis rates was included. This option includes a new approach to estimate the effects of aerosol optical properties on photolysis rates. The approach provides a better match to optical properties determined by solving Mie scattering theory for spherical particles than the default method (FastOptics) but at comparable runtimes. + +3. The CMAQ-ISAM and CMAQ-DDM systems have been enhanced to support additional applications. CMAQ-ISAM now (1) includes detailed attribution of aerosol carbonaceous mass; (2) accounts for loss of aerosol mass from gravitational settling, thereby enabling the sum of K-mode tags to better match the bulk K-mode concentrations; (3) includes a new tag to attribute O3 to be of “stratospheric origin”. CMAQ-DDM can also similarly estimate sensitivity of O3 to the PV-scaled O3 in the model top layers. + +Collectively, these updates improve model capabilities for addressing local nonattainment issues, quantifying natural contributions versus anthropogenic enhancements, enabling examination of regional air pollution in context of changing global emissions, and for cross-media applications. Additionally, changes to model structure in CMAQv5.5 are oriented towards improving transparency of model assumptions, improved diagnostic tools for model probing, and improvements in overall numerical robustness and computational efficiency of the modeling system. ## 1.5 System Recommendations CMAQ is a comprehensive air pollution modeling system whose source code is written mostly in Fortran. CMAQ execution is typically performed on Linux based systems. The hardware configuration of such a system depends on the domain size, grid resolution and simulation duration. Since typical input and output data sets for CMAQ entail three dimensional descriptions of the dynamical and chemical state of the simulated atmosphere, these data sets could require upwards of several gigabytes of disk storage per simulation day. From c7fb7e7e7e9f49f63a3fd2d53a629a592a98a294 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 9 Sep 2024 17:07:27 -0400 Subject: [PATCH 229/375] Update CMAQ_UG_ch01_overview.md --- DOCS/Users_Guide/CMAQ_UG_ch01_overview.md | 1 - 1 file changed, 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md b/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md index 3725e469f..d02e17c77 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md @@ -71,7 +71,6 @@ Building on previous versions of the modeling system, numerous updates to the pr 3. The CMAQ-ISAM and CMAQ-DDM systems have been enhanced to support additional applications. CMAQ-ISAM now (1) includes detailed attribution of aerosol carbonaceous mass; (2) accounts for loss of aerosol mass from gravitational settling, thereby enabling the sum of K-mode tags to better match the bulk K-mode concentrations; (3) includes a new tag to attribute O3 to be of “stratospheric origin”. CMAQ-DDM can also similarly estimate sensitivity of O3 to the PV-scaled O3 in the model top layers. -Collectively, these updates improve model capabilities for addressing local nonattainment issues, quantifying natural contributions versus anthropogenic enhancements, enabling examination of regional air pollution in context of changing global emissions, and for cross-media applications. Additionally, changes to model structure in CMAQv5.5 are oriented towards improving transparency of model assumptions, improved diagnostic tools for model probing, and improvements in overall numerical robustness and computational efficiency of the modeling system. ## 1.5 System Recommendations CMAQ is a comprehensive air pollution modeling system whose source code is written mostly in Fortran. CMAQ execution is typically performed on Linux based systems. The hardware configuration of such a system depends on the domain size, grid resolution and simulation duration. Since typical input and output data sets for CMAQ entail three dimensional descriptions of the dynamical and chemical state of the simulated atmosphere, these data sets could require upwards of several gigabytes of disk storage per simulation day. From 00e267889f3bfef40cb8a932ba71214be1bcce33 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 9 Sep 2024 17:12:18 -0400 Subject: [PATCH 230/375] update --- ..._tutorial_build_library_gcc_support_nc4.md | 91 ++++++++----------- .../gcc_install_cmaq55_cb6r5_m3dry.csh | 43 +++++++++ .../Tutorials/gcc_install_ioapi.csh | 46 ---------- 3 files changed, 80 insertions(+), 100 deletions(-) create mode 100755 DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh delete mode 100755 DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md index 2367d35bc..7dc178d8d 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md @@ -468,12 +468,12 @@ ls -rlt m3xtract make test ``` -## Install CMAQv5.3.2.1 +## Install CMAQv55 -1. Download the CMAQv5.3.2.1 code using the following +1. Download the CMAQv55 code using the following ``` -git clone -b 5.3.2.1 https://github.com/lizadams/cmaq.git CMAQ_REPO +git clone -b 55 https://github.com/lizadams/cmaq.git CMAQ_REPO ``` 2. Build and run in a user-specified directory outside of the repository @@ -481,7 +481,7 @@ In the top level of CMAQ_REPO, the bldit_project.csh script will automatically r In bldit_project.csh, modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: -set CMAQ_HOME = [your_work_location]/CMAQv5.3.2.1 +set CMAQ_HOME = [your_work_location]/CMAQv55 Now execute the script. ``` @@ -492,7 +492,7 @@ Now execute the script. 3. Edit the config_cmaq.csh to specify the netCDF C, netCDF Fortran, and I/O API Library locations ``` -cd [your_work_location]/CMAQv5.3.2.1 +cd [your_work_location]/CMAQv55 vi config_cmaq.csh ``` @@ -504,10 +504,10 @@ note, the paths need to be edited to match the location for your installation case gcc: #> I/O API and netCDF for WRF-CMAQ - setenv NCDIR /proj/ie/proj/CMAS/EQUATES/LIBRARIES/netcdf-c-4.7.0-gcc9.1.0 # C netCDF install path - setenv NFDIR /proj/ie/proj/CMAS/EQUATES/LIBRARIES/netcdf-fortran-4.4.5-gcc9.1.0 # Fortran netCDF install path for CMAQ - setenv NETCDF netcdf_combined_directory_path # Note only for WRF-CMAQ as it requires combining the netcdf C and netcdf F into a single directory. CMAQ users - don't change this setting - setenv IOAPI /proj/ie/proj/CMAS/EQUATES/LIBRARIES/ioapi-3.2/ # I/O API + setenv NCDIR /your_local_path/LIBRARIES/ # C netCDF install path + setenv NFDIR /your_local_path/LIBRARIES/ # Fortran netCDF install path for CMAQ + setenv NETCDF /your_local_path/LIBRARIES/ # Note only for WRF-CMAQ as it requires combining the netcdf C and netcdf F into a single directory. CMAQ users - don't change this setting + setenv IOAPI /your_local_path/LIBRARIES/ioapi-3.2/ # I/O API setenv WRF_ARCH 34 # [1-75] Optional, ONLY for WRF-CMAQ #> I/O API, netCDF, and MPI library locations @@ -530,110 +530,93 @@ note, the paths need to be edited to match the location for your installation source config_cmaq.csh ``` -5. Copy the EQUATES build and run script from the EQUATES_BENCHMARK repository to the CMAQv5.3.2.1/CCTM/scripts directory +5. Copy the buildit script ``` -cp bldit_cctm.csh /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/CCTM/scripts -cp run_cctm_2017_12US1_EQUATES_combine.csh /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/CCTM/scripts +cp bldit_cctm.csh bldit_cctmv55_cb6r5_m3dry/ ``` -6. Build CMAQv5.3.2.1 to support the STAGE dry deposition option +6. Build CMAQv55 to support the cb6r5 and m3dry dry deposition option ``` -./bldit_cctm.EQUATES.csh gcc |& tee ./bldit_cctm.EQUATES..gcc.log +./bldit_cctmv55_cb6r5_m3dry.csh gcc | & tee ./bldit_cctmv55_cb6r5_m3dry.log ``` 7. Build the POST processing routines ``` -cd /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/POST/combine/scripts +cd POST/combine/ ./bldit_combine.csh gcc |& tee ./bldit_combine.gcc.log ``` ``` -cd /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/POST/calc_tmetric/scripts +cd POST/calc_tmetric/scripts ./bldit_calc_tmetric.csh gcc |& tee ./bldit_calc_tmetric.gcc.log ``` ``` -cd /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/POST/hr2day/scripts +cd POST/hr2day/scripts ./bldit_hr2day.csh gcc |& tee ./bldit_hr2day.gcc.log ``` ``` -cd /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/POST/bldoverlay/scripts +cd POST/bldoverlay/scripts ./bldit_bldoverlay.csh gcc |& tee ./bldit_bldoverlay.gcc.log ``` -8. Edit the SBATCH section of the EQUATES Benchmark run script to use the SLURM resources on your machine +8. Edit the SBATCH section of the Benchmark run script to use the SLURM resources on your machine and modify the CMAQ_HOME directory to specify your local path ``` -vi run_cctm_2017_12US1_EQUATES_combine.csh +vi run_cctm_Bench_2018_12NE3.csh ``` - setenv CMAQ_HOME /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1 -## Download EQUATES Benchmark Input Data +## Download Benchmark Input Data -1. Download the gdrive script from the Google Drive by following the Gdrive section of this README +## Update EQUATES Benchmark Run Script to specify path to downloaded input data -https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4 - - -2. Download the EQUATES input data using the gdrive_scripts - -Download emissions +1. Specify the 2018_12US1 as the input data directory in the CMAQv55 CCTM run script ``` -cd ../gdrive_scripts/data/2017_12US1/emis -./gdrive_download_equates_emis.csh +vi run_cctm_Bench_2018_12NE3.csh ``` -Download meteorology +verify the location of the 12NE3 benchmark input files ``` -cd ../gdrive_scripts/data/2017_12US1/met/mcip_v51_wrf_v411_noltng -./gdrive_download_equates_mcip.csh + setenv INPDIR ${CMAQ_DATA}/2018_12NE3 ``` -Download Initial and Boundary Conditions +## Modify Benchmark Post-processing Scripts for your installation + +1. The POST/combine directory is available under the CMAQv55 directory. +These scripts will need to be edited ``` -cd ../gdrive_scripts/data/2017_12US1/icbc -./gdrive_download_equates.icbc.csh +run_combine.csh ``` -## Update EQUATES Benchmark Run Script to specify path to downloaded input data -1. Specify the 2017_12US1 as the input data directory in the CMAQv5.3.2.1 CCTM run script +2. Edit the scripts under to specify the APPL for this benchmark ``` -cd /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/CCTM/scripts -vi run_cctm_2017_12US1_EQUATES_combine.csh + set APPL = Bench_2018_12NE3 #> Application Name (e.g. Gridname) -modify to specify the location of the EQUATES input files downloaded from the Google Drive -setenv INPDIR ${CMAQ_HOME}/2017_12US1 #Input Directory ``` -## Modify EQUATES Benchmark Post-processing Scripts for your installation - -1. The POST/EQUATES directory is available under the CMAQv5.3.2.1 directory. -These scripts will be called by the run_cctm_2017_12US1_EQUATES_combine.csh script. -If you are using a different version of CMAQ, ie CMAQv5.3.3, you will need to copy the POST/EQUATES scripts to your repository for the CMAQv5.3.3 version. +3. Edit the start and end date. ``` -cd /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/POST -cp -rp /proj/ie/proj/CMAS/EQUATES/EQUATES_BENCHMARK/POST/EQUATES . + set START_DATE = "2016-07-01" #> beginning date (July 1, 2016) + set END_DATE = "2016-07-14" #> ending date (July 14, 2016) ``` -2. Edit the scripts under /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/POST/EQUATES to specify your local WORKDIR and CMAQREPO -## Run the equates run script +## Run the combine run script ``` -cd /proj/ie/proj/CMAS/EQUATES/CMAQv5.3.2.1/CCTM/scripts -sbatch run_cctm_2017_12US1_EQUATES_combine.csh +sbatch run_combine.csh ``` diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh new file mode 100755 index 000000000..3707f1cb9 --- /dev/null +++ b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh @@ -0,0 +1,43 @@ +#!/bin/csh -f + +# ----------------------- +# Download and build CMAQ +# ----------------------- +# NOTE - please change the BILD and the CMAQ_HOME directory to your local path +setenv BUILD /21dayscratch/scr/l/i/lizadams/CMAQv5.5/LIBRARIES +setenv IOAPI_DIR $BUILD/ioapi-3.2/Linux2_x86_64gfort +setenv NETCDF_DIR $BUILD/lib +setenv NETCDFF_DIR $BUILD/lib +cd $BUILD/.. +#git clone -b 55 https://github.com/USEPA/CMAQ/CMAQ.git CMAQ_REPO_v55 +git clone -b 5.5_testing ssh://github.com/lizadams/CMAQ_CMAS.git CMAQ_REPO_v55 + +echo "downloaded CMAQv55" +cd CMAQ_REPO_v55 +cd $BUILD/CMAQ_REPO_v55/ +# Change CMAQ_HOME to a local directory + #This will remove # from the start of line 102 or add it if it wasn't already there: + sed -i '19s/^#/\n/; 19s/^[^\n]/#&/; 19s/^\n//' bldit_project.csh + sed -i '20i set CMAQ_HOME = /21dayscratch/scr/l/i/lizadams/CMAQv5.5/openmpi_gcc' bldit_project.csh + +set CMAQ_HOME = $BUILD/../openmpi_gcc +./bldit_project.csh +# Load the Openmpi module +# Edit this name to match what is available on your local machine + +module load openmpi_4.0.1/gcc_9.1.0 +cd $BUILD/../openmpi_gcc/CCTM/scripts/ + cp bldit_cctm.csh bldit_cctmv55_cb6r5_m3dry.csh + # Add extra libs to support nc4 compression in config_cmaq.csh + # -lnetcdf -lhdf5_hl -lhdf5 -lm -ldl -lz -lcurl + setenv extra_lib "-lnetcdf -lhdf5_hl -lhdf5 -lm -ldl -lz -lcurl" + # Add openmp flag to match what was used in I/O API in config_cmaq.csh + # setenv myLINK_FLAG "-fopenmp" # openMP not supported w/ CMAQ +./bldit_cctmv55_cb6r5_m3dry.csh gcc |& tee ./bldit_cctmv55_cb6r5_m3dry.log +# Verify that the executable was created. +ls -rlt BLD_CCTM_v55_gcc_cb6r5_ae7_aq_m3dry/*.exe + + + + + diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh b/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh deleted file mode 100755 index f2c7000a8..000000000 --- a/DOCS/Users_Guide/Tutorials/gcc_install_ioapi.csh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/csh -f -# Build I/O API version that supports NCF4 -set echo - - - setenv INSTDIR /21dayscratch/scr/l/i/lizadams/CMAQv5.5/LIBRARIES - cd $INSTDIR - -# -------------------------------------- -# Add to the library path -# -------------------------------------- - if (! $?LD_LIBRARY_PATH) then - setenv LD_LIBRARY_PATH $INSTDIR/lib - else - setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:$INSTDIR/lib - endif -# ---------------------- -# Unpack and build IOAPI -# ---------------------- - git clone https://github.com/cjcoats/ioapi-3.2 - cd ioapi-3.2 - git checkout -b 20200828 - setenv BASEDIR $INSTDIR/ioapi-3.2 - setenv BIN Linux2_x86_64gfort - mkdir $BASEDIR/$BIN - setenv CPLMODE nocpl - # Edit Makefile or use syntax: make BIN=Linux2_x86_64pg CPLMODE=nocpl INSTALL=$INSTDIR - cd $BASEDIR/ioapi - # Copy the Makefile template - cp $BASEDIR/ioapi/Makefile.$CPLMODE ${BASEDIR}/ioapi/Makefile - cp ${BASEDIR}/m3tools/Makefile.$CPLMODE ${BASEDIR}/m3tools/Makefile - # Modify to specify the path of the netcdf libraries - sed -i 's/\-lnetcdff/\-L\$\{HOME\}\/lib \-lnetcdff \-lnetcdf \-lhdf5_hl \-lhdf5 \-lm \-ldl \-lz \-lcurl/g' ${BASEDIR}/m3tools/Makefile - # need updated Makefile to include ‘-DIOAPI_NCF4=1’ to the MFLAGS make-variable to avoid multiple definition of `nf_get_vara_int64_’ - # Makefile can be edited to use these options instead of the default options - # VFLAG = -DVERSION='3.2-nocpl-ncf4' - # DEFINEFLAGS = -DIOAPI_NCF4=1 $(ARCHFLAGS) $(PARFLAGS) - #This will remove # from the start of line 102 or add it if it wasn't already there: - sed -i '102s/^#/\n/; 102s/^[^\n]/#&/; 102s/^\n//' Makefile - sed -i '100s/^#/\n/; 100s/^[^\n]/#&/; 100s/^\n//' Makefile - sed -i '109s/^#/\n/; 109s/^[^\n]/#&/; 109s/^\n//' Makefile - sed -i '111s/^#/\n/; 111s/^[^\n]/#&/; 111s/^\n//' Makefile - #sed -i -e 's/m64/m64 -DIOAPI_NCF4=1/g' Makeinclude.Linux2_x86_64gfort - make HOME=$INSTDIR | & tee make.ioapi.log - cd $INSTDIR/ioapi-3.2/m3tools - make HOME=$INSTDIR | & tee make.m3tools.log From 68f4a82151329873b71005a268596267947977bf Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Mon, 9 Sep 2024 18:51:59 -0400 Subject: [PATCH 231/375] Update CMAQ_UG_ch01_overview.md --- DOCS/Users_Guide/CMAQ_UG_ch01_overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md b/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md index d02e17c77..3dd3854a5 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md @@ -69,7 +69,7 @@ Building on previous versions of the modeling system, numerous updates to the pr 2. A new option for estimation of photolysis rates was included. This option includes a new approach to estimate the effects of aerosol optical properties on photolysis rates. The approach provides a better match to optical properties determined by solving Mie scattering theory for spherical particles than the default method (FastOptics) but at comparable runtimes. -3. The CMAQ-ISAM and CMAQ-DDM systems have been enhanced to support additional applications. CMAQ-ISAM now (1) includes detailed attribution of aerosol carbonaceous mass; (2) accounts for loss of aerosol mass from gravitational settling, thereby enabling the sum of K-mode tags to better match the bulk K-mode concentrations; (3) includes a new tag to attribute O3 to be of “stratospheric origin”. CMAQ-DDM can also similarly estimate sensitivity of O3 to the PV-scaled O3 in the model top layers. +3. The CMAQ-ISAM and CMAQ-DDM systems have been enhanced to support additional applications. CMAQ-ISAM now (1) includes detailed attribution of aerosol carbonaceous mass; (2) accounts for loss of aerosol mass from gravitational settling, thereby enabling the sum of K-mode tags to better match the bulk K-mode concentrations; (3) fixes a bug from v5.4 to allow for proper attribution of O3 from “stratospheric origin”. CMAQ-DDM was also corrected to properly estimate sensitivity of O3 to the PV-scaled O3 in the model top layers. ## 1.5 System Recommendations From a02af340337195a8cf73914dcb3cf181e5e59bb3 Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 10 Sep 2024 09:38:58 -0400 Subject: [PATCH 232/375] update --- .../Tutorials/CMAQ_UG_tutorial_DDM3D.md | 47 +++++++++---------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md index 85808c560..12386fb0e 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md @@ -1,8 +1,8 @@ ## CMAQ-DDM3D Benchmark Tutorial ## -### Procedure to build and run the CMAQ-DDM3D model using gnu compiler: ### +### Procedure to build and run the CMAQ-DDM3D model using cb6r5 mechanism and m3dry dry deposition scheme using gnu compiler: ### -### Step 1: Download and run the CMAQv5.5 benchmark case (without DDM3D) to confirm that your model run is consistent with the provided benchmark output. +### Step 1: Download and run the CMAQv5.4 cb6r5 benchmark case (without DDM3D) to confirm that your model run is consistent with the provided benchmark output. - [CMAQ Benchmark Tutorial](CMAQ_UG_tutorial_benchmark.md) If you encounter any errors, try running the model in debug mode and refer to the CMAS User Forum to determine if any issues have been reported. @@ -42,7 +42,7 @@ GNJ END ``` -The following gridmask file is provided with the benchmark inputs in the 2018_12NE3_BENCH/2018_12NE3 directory (see step 10 below) +The following gridmask file is provided with the benchmark inputs in the CMAQv5.4_2018_12NE3_Benchmark_2Day_Input/2018_12NE3 directory (see step 10 below) ``` GRIDMASK_STATES_12NE3.nc @@ -106,7 +106,7 @@ cd [your_install_path]/CMAQ_v5.5 ### Step 6. Edit the config_cmaq.csh to specify the paths of the ioapi and netCDF libraries -### Step 7: Modify the bldit_cctm.csh +### Step 7: Review the bldit_cctm_cb6r5_m3dry_ddm.csh bldit script Change directory to CCTM/scripts @@ -114,7 +114,7 @@ Change directory to CCTM/scripts cd CCTM/scripts ``` -Comment out the following option to compile CCTM with DDM-3: +Verify the following option is set to compile CCTM with DDM3D: ``` set DDM3D_CCTM #> uncomment to compile CCTM with DD3D activated @@ -122,14 +122,14 @@ set DDM3D_CCTM #> uncomment to compile CCTM with DD3D act ### Step 8: Run the bldit_cctm.csh script ``` -./bldit_cctm.csh gcc |& tee bldit_cctm_ddm3d.log +./bldit_cctm_cb6r5_m3dry_ddm.csh gcc |& tee bldit_cctm_cb6r5_m3dry_ddm.log ``` ### Step 9: Edit the Emission Control Namelist to recognize the CMAQ_REGIONS file Change directories to the build directory ``` -cd BLD_CCTM_v55_DDM3D_gcc +cd BLD_CCTM_v55_DDM3D_gcc_cb6r5_ae7_aq_m3dry ``` edit the Control_DESID namelist file @@ -147,14 +147,17 @@ Add the Regions to the &Desid_RegionDef section of the control DESID namelist. 'EVERYWHERE' ,'N/A' ,'N/A', 'PA' ,'CMAQ_MASKS' , 'PA', 'NJ' ,'CMAQ_MASKS' , 'NJ', +/ ``` ### Step 10: Example of emissions scaling (Reduce the PT_EGU emissions in PA by 25%) (Optional step) edit the DESID chemical control namelist file, note please specify the mechanism or define the MECH environment variable. + ``` -gedit CMAQ_Control_DESID_${MECH}.nml +#gedit CMAQ_Control_DESID_${MECH}.nml +gedit CMAQ_Control_DESID_cb6r5_ae7_aq.nml ``` Add the following line at the bottom of the the namelist file (before the /) @@ -168,14 +171,14 @@ Add the following line at the bottom of the the namelist file (before the /) ### Step 11: Install the CMAQ-DDM-3D reference input and output benchmark data -Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S that uses the CRACMM2 mechanism and the STAGE dry deposition scheme. +Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S that uses the cb6r5_ae7_aq mechanism and the m3dry dry deposition scheme. - Use the gdrive command to download the dataset. - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) - Text files are included that provide a list of the files in the benchmark input and output datasets. -The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmas-cmaq.s3.amazonaws.com/index.html). +The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz). Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: @@ -187,21 +190,20 @@ tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz The input files for the CMAQv5.4 DDM-3D benchmark case are the same as the benchmark inputs for the base model. Output DDM files associated with the sample DDM control file sensinput.2018_12NE3.dat provided in this release package are included in the benchmark outputs for the base model. -### Step 12: Edit the CMAQ-DDM3D runscript +### Step 12: Review the CMAQ-DDM3D runscript ``` -cp run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_DDM3D.csh -gedit run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_DDM3D.csh +gedit run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh ``` -Set General Parameters for Configuring the Simulation +Verify General Parameters for Configuring the Simulation ``` set VRSN = v54_DDM3D ``` -Turn on DDM3D and uncomment SEN_INPUT file +Verify that script turns on DDM3D, uncomments SEN_INPUT file and sets the number of sensitivity parameter to match the SEN_INPUT ``` setenv CTM_DDM3D Y @@ -212,20 +214,20 @@ Turn on DDM3D and uncomment SEN_INPUT file Run or Submit the script to the batch queueing system ``` -./run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_DDM3D.csh +./run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh ``` OR (If using SLRUM) ``` -sbatch run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_DDM3D.csh +sbatch run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh ``` ### Step 13: Verify that the run was successful - look for the output directory ``` - cd ../../data/2018_12NE3_BENCH/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cracmm2 + cd ../../data/2018_12NE3_BENCH/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry ``` If the run was successful you will see the following output @@ -237,15 +239,12 @@ sbatch run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_DDM3D.csh ### Step 14: Compare output with the 2 day benchmark outputs provided on the CMAS Center AWS Open Data Program - https://drive.google.com/drive/u/1/folders/ + ``` + wget + ``` Note, the following DDM-3D output files are generated in addition to the standard CMAQ output files. -``` -CCTM_SENDDEP_v55_DDM3D_gcc_Bench_2018_12NE3_cracmm2_20180702.nc -CCTM_SENWDEP_v55_DDM3D_gcc_Bench_2018_12NE3_cracmm2_20180702.nc -CCTM_SENGRID_v55_DDM3D_gcc_Bench_2018_12NE3_cracmm2_20180702.nc -``` ### Step 15: Compare sensitivities From 8c3e263d9e2e0c43a31aee5080b99a81dcdb53db Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 10 Sep 2024 09:41:39 -0400 Subject: [PATCH 233/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md index 12386fb0e..474a3a866 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md @@ -240,7 +240,7 @@ sbatch run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh ``` - wget + wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz ``` Note, the following DDM-3D output files are generated in addition to the standard CMAQ output files. From 640e32a5900d6bd95b1bab716a33dc6fcc747c60 Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 10 Sep 2024 09:42:30 -0400 Subject: [PATCH 234/375] update --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b6ff6f8f3..6ba51222a 100644 --- a/README.md +++ b/README.md @@ -69,10 +69,14 @@ In addition, a full set of inputs for 2018 are provided for the 12US1 domain (29 |**CMAQ Version**|**Data Type (Size)**|**Domain**|**Simulation Dates**|**Data Access**| |:----:|:----:|:--------------:|:----:|:--------:| -|v5.4 CB6|Input (10.3 Gb)| Northeast US| July 1 - 2, 2018| [Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/index.html)| -|v5.4 CB6|Output (13.9 Gb)| Northeast US| July 1 - 2, 2018|[Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/index.html) | -|v5.4 CB6 | Input | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/LDTWKH) | -|v5.4 CRACMM | Input | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/9AV907) | +|v5.4 CB6 | Input (10.3 Gb)| Northeast US| July 1 - 2, 2018| [Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/index.html)| +|v5.4 CB6 M3Dry | Output (13.9 Gb)| Northeast US| July 1 - 2, 2018|[Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/index.html) | +|v5.4 CB6 | Input | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/LDTWKH)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | +|v5.4 CRACMM Stage| Input | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/9AV907)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | +|v5.5 CRACMM2 Stage | Input (6.1 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https: )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) | +|v5.5 CB6 Stage | Output (16 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https: )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) | +|v5.5-ISAM CRACMM2 Stage | Output (52 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https: )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz) | +|v5.5-DDM3D CRACMM2 Stage | Output | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https: )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | ## Other Online Resources * [Resources for Running CMAQ on Amazon Web Services](https://www.epa.gov/cmaq/cmaq-resourcesutilities-model-users#cmaq-on-the-cloud) From f223b776ca5cb6a57a60be76610e261e02760984 Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 10 Sep 2024 09:47:03 -0400 Subject: [PATCH 235/375] update --- .../Tutorials/CMAQ_UG_tutorial_benchmark.md | 52 +++++++------------ 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index 9f57e73c6..9f10e066c 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -1,6 +1,6 @@ -# CMAQ Installation & Benchmarking Tutorial +# CMAQ Installation & Benchmarking Tutorial for CB6R5 and M3DRY -Purpose: This guide describes how to install and run the CMAQ test case for the CRACMM2 mechanism with the STAGE dry deposition scheme, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. +Purpose: This guide describes how to install and run the CMAQ test case for the CB6R5 mechanism with the M3DRY dry deposition scheme, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. Benchmarking refers to a simulation that is used to verify that the software is installed correctly. Benchmarking CMAQ is recommended in the following circumstances: - Installation by a new user @@ -97,21 +97,20 @@ source config_cmaq.csh gcc 9.5 ## Install the CMAQ reference input and output benchmark data -Download the CMAQ two day reference input and output data for the CRACMM2 mechanism from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. +Download the CMAQ two day reference input and output data for the cb6r5_ae7 mechanism (using inputs from CMAQv5.4 Benchmark release) from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing), download the file CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz. The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. - Use the gdrive command to download the dataset. - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) - Text files are included that provide a list of the files in the benchmark input and output datasets. -The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmas-cmaq.s3.amazonaws.com/index.html). +The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz). Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: ``` cd $CMAQ_DATA -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input_CRACCM2.tar.gz -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output_CRACMM2.tar.gz +tar -xzvf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz ``` ## Compiling CMAQ @@ -142,18 +141,18 @@ The build directory parameters for the benchmark test case include the following - 3-D Advection Scheme: wrf_cons - Horizontal diffusion: Multiscale - Vertical diffusion: ACM2_M3Dry -- Deposition: STAGE +- Deposition: M3Dry - Chemistry solver: EBI -- Aerosol module: cracmm -- Cloud module: acm_craccm -- Mechanism: cracmm2 +- Aerosol module: AERO7 +- Cloud module: ACM_AE7 +- Mechanism: cb6r5_ae7_aq - Inline biogenic emissions - Inline plume rise To configure these parameters, the CCTM Science Modules within the bldit_cctm.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in [Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). -To keep the BLD directory name unique for each mechansim, modify the bldit_cctm script to use +To keep the BLD directory name unique for each mechansim, verify that the bldit_cctm script uses the following: ``` #> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. @@ -164,11 +163,11 @@ To keep the BLD directory name unique for each mechansim, modify the bldit_cctm endif ``` -Change the dry deposition scheme to use STAGE instead of M3DRY +Verify that the dry deposition scheme to use M3DRY ``` -#> Set Dry Deposition Scheme to Stage +#> Set Dry Deposition Scheme to m3dry - set DepMod = stage + set DepMod = m3dry ``` Following the requisite changes to the CCTM build script, use the following command to create the CCTM executable: @@ -181,27 +180,14 @@ cd $CMAQ_HOME/CCTM/scripts Verify that the BLD directory contains a namelist called ``` -CMAQ_Control_STAGE.nml +cd BLD_CCTM_v55_DDM3D_gcc_cb6r5_ae7_aq_m3dry +ls CMAQ_Control_DESID_cb6r5_ae7_aq.nml ``` -Change to the BLD directory and add the following lines to the bottom of the CMAQ_Control_DESID_cracmm2.nml - -``` - ! Re-Map CRACMM1 Aromatics to CRACMM2 - ! EBZ and XYE remapping, STY and XYM remapping - ! Generic scaling if not scaling by sector: 70% XYL; 30% EBZ - ! EBZ = FAC1 * XYE; STY = FAC2 * XYM ; XYL = (1-FAC1)*XYE + (1-FAC2)*XYM - 'EVERYWHERE', 'ALL' ,'XYE' ,'EBZ' ,'GAS' ,0.30,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'XYE' ,'XYL' ,'GAS' ,0.70,'UNIT','a', - - ! Generic scaling if not scaling by sector: 93% XYL; 7% STY - 'EVERYWHERE', 'ALL' ,'XYM' ,'STY' ,'GAS' ,0.07,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'XYM' ,'XYL' ,'GAS' ,0.93,'UNIT','a', -``` ## Configure the CCTM script -For an MPI configuration with 16 processors, +For an MPI configuration with 32 processors, ``` cd $CMAQ_HOME/CCTM/scripts @@ -235,13 +221,13 @@ CCTM Science Configuration Options set to **Y** in the RunScript for the benchma - ```CTM_GRAV_SETL``` - vdiff aerosol gravitational sedmentation - ```CTM_BIOGEMIS``` - online biogenic emissions -To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in +To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in [Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). After configuring the MPI settings for your Linux system, check the rest of the script to ensure the correct path, date and names are used for the input data files. Per the note above, different Linux systems have different requirements for submitting MPI jobs. The command below is an example of how to submit the CCTM run script and may differ depending on the MPI requirements of your Linux system. ``` -./run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh |& tee cctm.log +./run_cctm_Bench_2018_12NE3_cb6r5_m3dry.csh |& tee cctm.log ``` ## Confirm that the Benchmark Simulation Completed @@ -265,7 +251,7 @@ CTM_LOG_[ProcessorID].v54_gcc_Bench_2018_12NE3_2day_20180702 The benchmark output results will have been placed in the directory: ``` -$CMAQ_DATA/output_CCTM_v54_[compiler]_Bench_2018_12NE3_2day +$CMAQ_DATA/output_CCTM_v54_[compiler]_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry ``` and can include upto 23 netCDF-type files: ACONC, AOD_DIAG, AELMO, APMVIS, B3GTS_S, BSOILOUT, BUDGET, CGRID, CONC, DEPV, DRYDEP, DUSTEMIS, LTNGCOL, LTNGHRLY, MEDIA_CONC, PHOTDIAG1, PHOTDIAG2, ELMO, PMVIS, SOILOUT, SSEMIS, VDIFF, VSED, WETDEP1, and WETDEP2. From d5b6bc5911508ce1d3319f1f146ddf16c57c82f7 Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 10 Sep 2024 09:57:28 -0400 Subject: [PATCH 236/375] update --- ...MAQ_UG_tutorial_benchmark_craccm2_stage.md | 278 ++++++++++++++++++ 1 file changed, 278 insertions(+) create mode 100644 DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_craccm2_stage.md diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_craccm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_craccm2_stage.md new file mode 100644 index 000000000..81984c3b9 --- /dev/null +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_craccm2_stage.md @@ -0,0 +1,278 @@ +# CMAQ Installation & Benchmarking Tutorial + +Purpose: This guide describes how to install and run the CMAQ test case for the CRACMM2 mechanism with the STAGE dry deposition scheme, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. + +Benchmarking refers to a simulation that is used to verify that the software is installed correctly. Benchmarking CMAQ is recommended in the following circumstances: +- Installation by a new user +- Installation on a new server +- Following kernel upgrades +- Following Fortran/C compiler upgrades +- Following netCDF or I/O API library upgrades + +## System Checks + +The following support software are required for compiling and running CMAQ. + +1. Fortran and C compilers, e.g., [Intel](https://software.intel.com/en-us/fortran-compilers), [Portland Group](http://www.pgroup.com), [Gnu](https://gcc.gnu.org/wiki/GFortran) +2. [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) +2. Message Passing Interface (MPI), e.g., [OpenMPI](https://www.open-mpi.org) or [MVAPICH2](http://www.mcs.anl.gov/research/projects/mpich2). +3. Latest release of [netCDF-C](https://www.unidata.ucar.edu/software/netcdf/docs/getting_and_building_netcdf.html) and [netCDF-Fortran](https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html) **built with netCDF4, HDF5, HDF4, DAP client, PnetCDF, or zlib support** +4. [I/O API](https://www.cmascenter.org/download/software/ioapi/ioapi_3-2.cfm?DB=TRUE) version 3.2 **tagged 20200828** +(note: if you have not installed the above libraries, please see the CMAQ_UG_tutorial_build_[gcc/intel/pgi].md tutorials available here: +https://github.com/USEPA/CMAQ/tree/main/DOCS/Users_Guide/Tutorials + +The suggested hardware requirements for running the CMAQ Southeast Benchmark case on a Linux workstation are: + +1. Linux environment with a 16 processors +2. 16 GB RAM +3. 400 GB hard drive storage + +## Install CMAQ and Required Libraries + +In the directory where you would like to install CMAQ, create the directory issue the following command to clone the EPA GitHub repository for CMAQv5.5: + +``` +git clone -b main https://github.com/USEPA/CMAQ.git CMAQ_REPO +``` + +For instructions on installing CMAQ from Zip files, see [Chapter 5](../CMAQ_UG_ch05_running_a_simulation.md). + +## Check Out a new Branch in the CMAQ Repository + +Checking out a new branch is a good idea even if you are not doing code development, per se. It is likely that you will want to retrieve new updates in the future, and an easy way to do this is through the main branch in the git repo. Thus, it is beneficial to leave it unperturbed if possible. +``` +cd CMAQ_REPO +git checkout -b my_branch +``` + +## Configure the CMAQ build environment + +The user has two options for building an environment. She or he may build and run CMAQ components directly in the repository structure (object files and executables will be ignored with .gitignore), or they may extract the build and run scripts out of the repository and work in a separate location. If you would like to build directly in the repository, skip to "Link the CMAQ Libraries" below. + +### Build and run in a user-specified directory outside of the repository +In the top level of CMAQ_REPO, the bldit_project.csh script will automatically replicate the CMAQ folder structure and copy every build and run script out of the repository so that you may modify them freely without version control. + +In bldit_project.csh, modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: +``` +set CMAQ_HOME = [your_install_path]/CMAQ_v5.5 +``` + +Now execute the script. +``` +./bldit_project.csh +``` + +## Link the CMAQ Libraries +The CMAQ build scripts require the following libraries and INCLUDE files to be available in the CMAQ_LIB directory (Note: the CMAQ_LIB gets set automatically by the config_cmaq.csh script, where `CMAQ_LIB = $CMAQ_HOME/lib`): + +- netCDF C library files are located in the `$CMAQ_LIB/netcdf/lib` directory +- netCDF Fortran library files are located in the `$CMAQ_LIB/netcdff/lib` directory +- I/O API library, include files and module files are located in the `$CMAQ_LIB/ioapi` directory +- MPI library and INCLUDE files are located in the `$CMAQ_LIB/mpi` directory + +The config_cmaq.csh script will automatically link the required libraries into the CMAQ_LIB directory. Set the locations of the netCDF, I/O API, and MPI installations on your Linux system with the following config_cmaq.csh environment variables: + +- `setenv IOAPI_INCL_DIR`: the location of the I/O API include header files on your system. +- `setenv IOAPI_LIB_DIR`: the location of compiled I/O API libraries on your system. +- `setenv NETCDF_LIB_DIR`: the location of the netCDF C library installation on your system. +- `setenv NETCDF_INCL_DIR`: the location of the netCDF C include files on your system. +- `setenv NETCDFF_LIB_DIR`: the location of the netCDF Fortran library installation on your system. +- `setenv NETCDFF_INCL_DIR`: the location of the netCDF Fortran include files on your system. +- `setenv MPI_LIB_DIR`: the location of the MPI (OpenMPI or MVAPICH) on your system. + +For example, if your netCDF C libraries are installed in /usr/local/netcdf/lib, set `NETCDF_LIB_DIR` to /usr/local/netcdf/lib. Similarly, if your I/O API library is installed in /home/cmaq/ioapi/Linux2_x86_64gfort, set `IOAPI_LIB_DIR` to /home/cmaq/ioapi/Linux2_x86_64gfort. + +*1.* Check the names of the I/O API and netCDF libraries using the `ioapi_lib` and `netcdf_lib` script variables. + +*2.* Check the name of the MPI library using the `mpi_lib` script variable. For MVAPICH use `-lmpich`; for openMPI use `-lmpi`. + +Links to these libraries will automatically be created when you run any of the build or run scripts. To manually create these libraries (this is optional), execute the config_cmaq.csh script, identifying the compiler in the command line [intel | gcc | pgi]: +``` +source config_cmaq.csh [compiler] +``` +You may also identify the version of the compiler if you wish it to be identified in build directory and executable names. This is optional. For example: +``` +source config_cmaq.csh gcc 9.5 +``` + +## Install the CMAQ reference input and output benchmark data + +Download the CMAQ two day reference input and output data for the CRACMM2 mechanism from the [AWS CMAS Data Warehouse](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. +Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: + +``` +cd $CMAQ_DATA +tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input_CRACCM2.tar.gz +tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output_CRACMM2.tar.gz +``` + +## Compiling CMAQ + +*Before proceeding, it should be noted that building the ICON and BCON executables are optional steps when working specifically with the benchmark data. This is because the initial condition and boundary condition files have been provided for you within the benchmark data set. For further information on these preprocessors please reference [Chapter 4](../CMAQ_UG_ch04_model_inputs.md).* + +Create the model executables for CCTM using the steps shown below. + +##### Configuration for multi-processor runs (default): + +``` +set ParOpt #> Option for MPI Runs +```` + +##### Configuration for single-processor runs (optional): + +For single-processor computing, edit the CCTM build script (bldit_cctm.csh) to indicate a single-processor run by commenting out set ParOpt as shown below. + +``` +#set ParOpt #> Option for Single Processor Runs +```` + +#### Configure CMAQ benchmark Science Modules: + +The build directory parameters for the benchmark test case include the following: + +- Multiprocessor simulation +- 3-D Advection Scheme: wrf_cons +- Horizontal diffusion: Multiscale +- Vertical diffusion: ACM2_M3Dry +- Deposition: STAGE +- Chemistry solver: EBI +- Aerosol module: cracmm +- Cloud module: acm_craccm +- Mechanism: cracmm2 +- Inline biogenic emissions +- Inline plume rise + +To configure these parameters, the CCTM Science Modules within the bldit_cctm.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in +[Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). + + +Review the bldit script for this benchmark. + +``` +cat bldit_cctm_gnu_cracmm2_stage.csh +``` + +Notice that the bldit script uses a unique BLD directory name mechansim and dry deposition scheme combination. + +``` +#> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. + if ( $?Debug_CCTM ) then + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug + else + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} + endif +``` + +Verify that the dry deposition scheme to use STAGE instead of M3DRY +``` +#> Set Dry Deposition Scheme to Stage + + set DepMod = stage +``` + +Following the requisite changes to the CCTM build script, use the following command to create the CCTM executable: + +``` +cd $CMAQ_HOME/CCTM/scripts +./bldit_cctm_gnu_cracmm2_stage.csh [compiler] [version] |& tee bldit_cctm_gnu_cracmm2_stage.log +``` + +Verify that the BLD directory contains a namelist called + +``` +CMAQ_Control_STAGE.nml +``` + +## Configure the CCTM script + +For an MPI configuration with 16 processors, + +``` +cd $CMAQ_HOME/CCTM/scripts +``` + +Edit the CCTM run script (run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh) for the MPI configuration and compiler that you will use: + +``` +setenv compiler gcc +setenv compilerVrsn 9.5 +setenv INPDIR ${CMAQ_DATA}/2018_12NE3 +@ NPCOL 8 ; @ NPROW = 4 +``` + +Most clustered multiprocessor systems require a command to start the MPI run-time environment. The default CCTM run script uses the *mpirun* command. Consult your system administrator to find out how to invoke MPI when running multiprocessor applications. + +For single-processor computing, set PROC to serial: + +``` +set PROC = serial +``` + +CCTM Science Configuration Options set to **Y** in the RunScript for the benchmark case include the following: + +- ```CTM_OCEAN_CHEM``` - use ocean halgoen chemistry and sea spray aerosol emissions +- ```KZMIN``` - minimum eddy diffusivity in each grid cell determined by land use fraction +- ```PX_VERSION``` - WRF PX land surface model +- ```CTM_ABFLUX``` - bidirectional ammonia flux for online deposition velocities +- ```CTM_BIDI_FERT_NH3``` - subtract fertilizer NH3 from emissions because it will be handled by the BiDi calculation +- ```CTM_SFC_HONO``` - surface HONO interaction +- ```CTM_GRAV_SETL``` - vdiff aerosol gravitational sedmentation +- ```CTM_BIOGEMIS``` - online biogenic emissions + +To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in +[Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). + +After configuring the MPI settings for your Linux system, check the rest of the script to ensure the correct path, date and names are used for the input data files. Per the note above, different Linux systems have different requirements for submitting MPI jobs. The command below is an example of how to submit the CCTM run script and may differ depending on the MPI requirements of your Linux system. + +``` +./run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh |& tee run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.log +``` + +## Confirm that the Benchmark Simulation Completed + +To confirm that the benchmark case ran to completion view the run log file. For MPI runs, check each of the CTM_LOG_[ProcessorID]*.log files. A successful run will contain the following line at the bottom of the log(s): + +``>>----> Program completed successfully <----<<`` + +Note: If you are running on multiple processors the log file for each processor is also moved from the $CMAQ_HOME/CCTM/scripts directory to the benchmark output directory: + +``` +$CMAQ_DATA/output_CCTM_v55_gcc_Bench_2018_12NE3_cracmm2_stage +``` +and these log files have the name convention: + +``` +CTM_LOG_[ProcessorID].v55_[compiler]_[APPL]_[YYYYMMDD] +CTM_LOG_[ProcessorID].v55_gcc_Bench_2018_12NE3_2day_20180702 +``` + +The benchmark output results will have been placed in the directory: + +``` +$CMAQ_DATA/output_CCTM_v55_gcc_Bench_2018_12NE3_cracmm2_stage +``` + +and can include upto 23 netCDF-type files: ACONC, AOD_DIAG, AELMO, APMVIS, B3GTS_S, BSOILOUT, BUDGET, CGRID, CONC, DEPV, DRYDEP, DUSTEMIS, LTNGCOL, LTNGHRLY, MEDIA_CONC, PHOTDIAG1, PHOTDIAG2, ELMO, PMVIS, SOILOUT, SSEMIS, VDIFF, VSED, WETDEP1, and WETDEP2. + + +Common errors in a CCTM simulation include the following: +- Incorrect paths to input files. Look in the CCTM screen output (capture in your log file) for an Error message about an input file not being found. +- Incorrect MPI implementation. A series of MPI errors at the end of the log file often indicate that the MPI job was not submitted correctly. + +Check the last few lines of the CCTM output log for messages to help diagnose why the simulation did not complete. + +## Check the CMAQ Benchmark Results + +To determine if CMAQ is correctly installed on your Linux system compare the results from your benchmark simulation to the reference output data downloaded from the CMAS Center. This data was generated on a Linux system with the following specifications: +- Linux Kernel 3.10.0-514.el7.x86_64 +- Red Hat Enterprise Linux Server 7.3 (Maipo) (use command: cat /etc/os-release) +- GNU GCC compiler version 9.1.0, 16 processors with OpenMPIv4.0.1 and I/O APIv3.2 tagged version 20200828 +- Debug mode turned off (```set Debug_CCTM``` commented out in $CMAQ_HOME/CCTM/scripts/bldit_cctm.csh) +- CMAQv5.4 + +The CMAQv5.4 reference output data includes a set of CCTM_ACONC_\*.nc files with layer 1 average model species concentrations for each model hour for 226 variables and a set of CCTM_WETDEP1_\*.nc files with cumulative hourly wet deposition fluxes for an additional 136 variables. The CCTM_SA_ACONC_\*.nc, CCTM_SA_CGRID_\*.nc, CCTM_SA_CONC_\*.nc, CCTM_SA_WETDEP_\*.nc and CCTM_SA_DRYDEP_\*.nc are generated when you run the CMAQ-ISAM benchmark. See the [CMAQ-ISAM Tutorial](../Tutorials/CMAQ_UG_tutorial_ISAM.md) for more information. + +Use your netCDF evaluation tool of choice to evaluate your benchmark results. For example, [VERDI](https://www.verdi-tool.org/) is a visualization tool to view CCTM results as tile plots. Statistical comparison of the results can be made with the I/O API Tools or R. + +Note, even with a successful installation and run of the benchmark case, some differences between your simulation and the reference data can occur due to differences in domain decomposition for multi-processor simulations as well as differences in compiler. These differences tend to manifest in upper layers of the model and are mostly found in predicting aerosol water (AH2O) and aerosol acidity (AH3OP), while differences are smaller for other key species like ASO4, ANO3, ACL, ALOO1, etc. These species have short atmospheric lifetimes with large changes in time and space derivatives or have model physics sensitive to small changes in concentration. Predicting these species is more sensitive to small changes in machine precision and accuracy. + From cae926f212230ec13165f4ca0ef7418f16c426fa Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Tue, 10 Sep 2024 11:41:15 -0400 Subject: [PATCH 237/375] Update CMAQ_UG_ch01_overview.md --- DOCS/Users_Guide/CMAQ_UG_ch01_overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md b/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md index 3dd3854a5..b6e23239f 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md @@ -69,7 +69,7 @@ Building on previous versions of the modeling system, numerous updates to the pr 2. A new option for estimation of photolysis rates was included. This option includes a new approach to estimate the effects of aerosol optical properties on photolysis rates. The approach provides a better match to optical properties determined by solving Mie scattering theory for spherical particles than the default method (FastOptics) but at comparable runtimes. -3. The CMAQ-ISAM and CMAQ-DDM systems have been enhanced to support additional applications. CMAQ-ISAM now (1) includes detailed attribution of aerosol carbonaceous mass; (2) accounts for loss of aerosol mass from gravitational settling, thereby enabling the sum of K-mode tags to better match the bulk K-mode concentrations; (3) fixes a bug from v5.4 to allow for proper attribution of O3 from “stratospheric origin”. CMAQ-DDM was also corrected to properly estimate sensitivity of O3 to the PV-scaled O3 in the model top layers. +3. The CMAQ-ISAM and CMAQ-DDM systems have been enhanced to support additional applications. CMAQ-ISAM now (1) includes detailed attribution of aerosol carbonaceous mass; (2) accounts for loss of aerosol mass from gravitational settling, thereby enabling the sum of K-mode tags to better match the bulk K-mode concentrations; (3) incorporates a tag to attribute O3 to be of “stratospheric origin” based on the PV-scaling methodology. CMAQ-DDM was also corrected to properly estimate sensitivity of O3 to the PV-scaled O3 in the model top layers. ## 1.5 System Recommendations From fd0a0bd26eb5314bdca5c6b6be801471dde9e48b Mon Sep 17 00:00:00 2001 From: chogrefe Date: Tue, 10 Sep 2024 14:00:56 -0400 Subject: [PATCH 238/375] Update CMAQ_UG_ch06 WBD section Removed the following paragraph that was added in summer 2024 to discuss findings from WBD sensitivity simulations performed during spring 2024. Since then, additional work identified an erroneous mapping of two NLCD40 desert land categories to BELD3 as the cause of the extremely strong dependency of WBD estimates on WRF land use. This erroneous mapping is expected to be fixed in the near future via a PR targeted for the v55+ branch, and therefore discussing the impacts of that erroneous mapping in this v55 documentation chapter seems counterproductive. That said, we might still consider updating v54 documentation with this analysis. "The WRF configuration choices discussed above, i.e. land use and vegetation fraction, can have a pronounced impact on CMAQ windblown dust calculations. Recent tests with MODIS vs. NLCD40 land use and lookup table vs. satellite-derived vegetation fraction found that the lowest (MODIS land use with lookup table vegetation fraction) and highest (NLCD40 land use with satellite-derived vegetation fraction) estimates of US annual total windblow dust emissions differed by a factor of 4-5. The estimates from the tests with MODIS land use were closer to estimates using the BELD land use configuration (used in Foroutan et al., 2017) than those from the tests with NLCD40 land use." --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index 6947b43f2..af0b9b9a8 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -507,8 +507,6 @@ In its windblown dust emission calculations, CMAQ uses time-varying vegetation c CMAQ windblown dust emissions are only computed for certain land use types defined as “desert” land, i.e. erodible, arid land. During the initial development of the CMAQ windblown dust module, three such “desert” land use types were defined and information about their fractional coverage was based on the Biogenic Emissions Landuse Database (BELD) and was provided to CMAQ through a separate input file. Later developments added the option to alternatively obtain land use information directly from MCIP (which in turn reflects the land use option selected for the WRF LSM, such as NCLD40 or MODIS), internally mapping “desert” types defined for the different WRF land use options to the three different BELD “desert” categories used in the CMAQ windblown dust algorithm. This supported the calculation of windblown dust emissions for areas outside North America where BELD is not available. As of version CMAQ version 5.4, the windblown dust module no longer supports reading a separate file with BELD land use data and always uses land use information contained in the MCIP files. -The WRF configuration choices discussed above, i.e. land use and vegetation fraction, can have a pronounced impact on CMAQ windblown dust calculations. Recent tests with MODIS vs. NLCD40 land use and lookup table vs. satellite-derived vegetation fraction found that the lowest (MODIS land use with lookup table vegetation fraction) and highest (NLCD40 land use with satellite-derived vegetation fraction) estimates of US annual total windblow dust emissions differed by a factor of 4-5. The estimates from the tests with MODIS land use were closer to estimates using the BELD land use configuration (used in Foroutan et al., 2017) than those from the tests with NLCD40 land use. - Users are strongly encouraged to enable the windblown dust module only for configurations using WRF version 4+. Windblown dust may only be enabled when using PX LSM input (setenv PX_VERSION Y), since other LSMs calculate soil properties at depths that are not consistent with assumptions in the windblown dust module. The CMAQ windblown dust module is controlled by the following RunScript flag: From 0fa376a6e984b1d4e7d40928ec7ad2acc6062f50 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 11 Sep 2024 14:40:42 -0400 Subject: [PATCH 239/375] update --- CCTM/scripts/bldit_cctm_cb6r5_m3dry.csh | 831 ++++++++++++++++++ CCTM/scripts/bldit_cctm_gnu_cracmm2_stage.csh | 827 +++++++++++++++++ ...un_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh | 826 +++++++++++++++++ ...tm_Bench_2018_12NE3_CRACMM2_STAGE_ISAM.csh | 826 +++++++++++++++++ README.md | 4 +- 5 files changed, 3312 insertions(+), 2 deletions(-) create mode 100755 CCTM/scripts/bldit_cctm_cb6r5_m3dry.csh create mode 100755 CCTM/scripts/bldit_cctm_gnu_cracmm2_stage.csh create mode 100755 CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh create mode 100755 CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_ISAM.csh diff --git a/CCTM/scripts/bldit_cctm_cb6r5_m3dry.csh b/CCTM/scripts/bldit_cctm_cb6r5_m3dry.csh new file mode 100755 index 000000000..6af87e3ef --- /dev/null +++ b/CCTM/scripts/bldit_cctm_cb6r5_m3dry.csh @@ -0,0 +1,831 @@ +#!/bin/csh -f + +# ======================= CCTMv5.5.X Build Script ========================= +# Usage: bldit_cctm.csh >&! bldit.cctm.log +# Requirements: I/O API & netCDF libraries, a Fortran compiler, +# and MPI for multiprocessor computing +# +# To report problems or request help with this script/program: +# http://www.cmascenter.org +# ========================================================================= + +#> Set Compiler Identity by User Input: Options -> intel | pgi | gcc + if ( $#argv == 1 ) then + setenv compiler $argv[1] + setenv compilerVrsn Empty + else if ( $#argv == 2 ) then + #> Compiler Name and Version have been provided + setenv compiler $1 + setenv compilerVrsn $2 + else + echo "usage: $0 " + echo " where is intel, pgi or gcc" + exit(2) + endif + +#> Source the config.cmaq file to set the build environment + cd ../.. + source ./config_cmaq.csh + + set echo + +# ======================================================================= +#> Begin User Input Section +# ======================================================================= + +#> Source Code Locations + setenv CCTM_SRC ${CMAQ_REPO}/CCTM/src #> location of the CCTM source code + set GlobInc = $CCTM_SRC/ICL #> location of the global include files + set Mechs = $CCTM_SRC/MECHS #> location of the chemistry mechanism include files + setenv REPOROOT $CCTM_SRC + +#> Controls for managing the source code and MPI compilation +set CompileBLDMAKE #> Recompile the BLDMAKE utility from source + #> comment out to use an existing BLDMAKE executable +set CopySrc #> copy the source files into the build directory +#set CopySrcTree #> copy the source files and directory tree into the build directory +#set MakeFileOnly #> uncomment to build a Makefile, but do not compile; + #> comment out to compile the model (default if not set) +#set build_mech #> uncomment to build mechanism source code files using the + #> chemmech utility. + +#> Below are chemmech options for revising the mechanism definitions file. The option needs information on the +#> composition of each chemistry. See UTIL/chemmech/README.md for more information. +#> Uncomment to use. +#> Rewrite reactions by appending them with changes in tracked atoms or elements from reactants to products + #setenv COMPUTE_DELTA_ATOMS F +#> The species namelist contains the composition information as comments at the end of lines defining species. +#> Note that if a defining line does not have an ending comment, the species is taken to have none of the tacked atoms. +#> If NAMELISTS_LIST_ATOMS equals F, an additional ASCII file contains the information. + #setenv NAMELISTS_LIST_ATOMS T + +#set clobber_mech #> when commented, the bldit_mech.csh script will halt if + #> newly created mechanism files are attempting replace + #> existing ones. When uncommented, the existing files + #> will be overwritten. +set ParOpt #> uncomment to build a multiple processor (MPI) executable; + #> comment out for a single processor (serial) executable +#set DistrEnv #> uncomment to distribute environmental variables to multiple machines + #> comment out for a single processor (serial) executable (MPI only) +#set build_parallel_io #> uncomment to build with parallel I/O (pnetcdf); + #> comment out to use standard netCDF I/O +#set Debug_CCTM #> uncomment to compile CCTM with debug option equal to TRUE + #> comment out to use standard, optimized compile process +set make_options = "-j" #> additional options for make command if MakeFileOnly is not set + #> comment out if no additional options are wanted. + +#> Integrated Source Apportionment Method (ISAM) +#set ISAM_CCTM #> uncomment to compile CCTM with ISAM activated + #> comment out to use standard process + +#set DDM3D_CCTM #> uncomment to compile CCTM with DDM-3D activated + #> comment out to use standard process +#> Two-way WRF-CMAQ +#set build_twoway #> uncomment to build WRF-CMAQ twoway; + #> comment out for off-line chemistry + +#> Working directory and Version IDs + if ( $?ISAM_CCTM ) then + set VRSN = v55_ISAM #> model configuration ID for CMAQ_ISAM + else if ( $?DDM3D_CCTM ) then + set VRSN = v55_DDM3D #> model configuration ID for CMAQ_DDM + else + set VRSN = v55 #> model configuration ID for CMAQ + endif + + set EXEC = CCTM_${VRSN}.exe #> executable name + set CFG = CCTM_${VRSN}.cfg #> configuration file name + + if ( $?build_twoway ) then # WRF Version used for WRF-CMAQ Model (must be v4.4+) + set WRF_VRSN = v4.4 + endif + +#======================================================================== +#> CCTM Science Modules +#======================================================================== +#> NOTE: For the modules with multiple options, a note is +#> provided on where to look in the CCTM source code +#> archive for a list of the possible settings. Users +#> may also refer to the CMAQ documentation. + + set ModGrid = grid/cartesian #> grid configuration module + + set DepMod = m3dry #> m3dry or stage + #set DepMod = stage + set ModAdv = wrf_cons #> 3-D Advection Scheme [Options: wrf_cons (default), local_cons] + set ModHdiff = hdiff/multiscale #> horizontal diffusion module + set ModVdiff = vdiff/acm2_${DepMod} #> vertical diffusion module (see $CMAQ_MODEL/CCTM/src/vdiff) + set ModDepv = depv/${DepMod} #> deposition velocity calculation module + #> (see $CMAQ_MODEL/CCTM/src/depv) + set ModEmis = emis/emis #> in-line emissions module + set ModBiog = biog/beis4 #> BEIS4 in-line emissions module + + set ModMegBiog = biog/megan3 #> MEGAN3 in-line emissions module + + set ModPlmrs = plrise/smoke #> in-line emissions plume rise + set ModCgrds = spcs/cgrid_spcs_nml #> chemistry species configuration module + #> (see $CMAQ_MODEL/CCTM/src/spcs) + set ModPhot = phot/inline #> photolysis calculation module + #> (see $CMAQ_MODEL/CCTM/src/phot) + + setenv Mechanism cb6r5_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) + set ModMech = MECHS/${Mechanism} + + if ( ${Mechanism} =~ *ae7* ) then #> ae7 family of aero and cloud chem + set ModAero = aero/aero7 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) + set ModCloud = cloud/acm_ae7 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) + else if ( ${Mechanism} =~ *ae6* ) then #> ae6 family of aero and cloud chem + set ModAero = aero/aero6 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) + set ModCloud = cloud/acm_ae6 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) + else if ( ${Mechanism} =~ *cracmm* ) then #> CRACMM family of aero and cloud chem + set ModAero = aero/cracmm # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) + set ModCloud = cloud/acm_cracmm # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) + endif + + # Special cloud modules for kmt versions + if( ${Mechanism} == cb6r5_ae7_aqkmt2 ) then + set ModCloud = cloud/acm_ae7_kmt2 + else if( ${Mechanism} == saprc07tic_ae7i_aqkmt2 ) then + set ModCloud = cloud/acm_ae7_kmt2 + endif + + # Gas chem solver + if ( ${Mechanism} == cb6r5m_ae7_aq ) then #> Gas-phase chemistry solver options ($CMAQ_MODEL/CCTM/src/gas) + setenv ChemSolver ros3 #> ros3 (or smvgear) are system independent + else + setenv ChemSolver ebi #> [ default for most mechanisms: ebi ] + endif + + if ( $ChemSolver == ebi ) then + set ModGas = gas/${ChemSolver}_${Mechanism} + + else + set ModGas = gas/${ChemSolver} + endif + + set ModUtil = util/util #> CCTM utility modules + set ModDiag = diag #> CCTM diagnostic modules + set Tracer = trac0 #> tracer configuration directory under + #> $CMAQ_MODEL/CCTM/src/MECHS [ default: no tracer species ] + set ModPa = procan/pa #> CCTM process analysis + set ModPvO3 = pv_o3 #> potential vorticity from the free troposphere + set ModISAM = isam #> CCTM Integrated Source Apportionment Method + set ModDDM3D = ddm3d #> Decoupled Direct Method in 3D + set ModDegrade = reactive_tracers #> Linear Chemical Loss for a fixed set of species treated as reactive tracers + +#============================================================================================ +#> Computing System Configuration: +#> Most of these settings are done in config.cmaq +#============================================================================================ + + setenv FC ${myFC} #> path of Fortan compiler; set in config.cmaq + set FP = $FC #> path of Fortan preprocessor; set in config.cmaq + set CC = ${myCC} #> path of C compiler; set in config.cmaq + setenv BLDER ${CMAQ_HOME}/UTIL/bldmake/bldmake_${compilerString}.exe #> name of model builder executable + +#> Libraries/include files +#set LIOAPI = "${IOAPI_DIR}/lib ${ioapi_lib}" #> I/O API library directory +#set IOAPIMOD = "${IOAPI_DIR}/include" #> I/O API module directory + set NETCDF = "${NETCDF_DIR}/lib ${netcdf_lib}" #> netCDF C library directory + set NETCDFF = "${NETCDFF_DIR}/lib ${netcdff_lib}" #> netCDF Fortran library directory + set PNETCDF = "${PNETCDF_DIR}/lib ${pnetcdf_lib}" #> Parallel netCDF library directory +#set PIO_INC = "${IOAPI_DIR}/src" + +#> Compiler flags set in config.cmaq + set FSTD = "${myFSTD}" + set DBG = "${myDBG}" + setenv F_FLAGS "${myFFLAGS}" #> F77 flags + set F90_FLAGS = "${myFRFLAGS}" #> F90 flags + set CPP_FLAGS = "" #> Fortran preprocessor flags + set C_FLAGS = "${myCFLAGS} -DFLDMN -I" #> C flags + set LINK_FLAGS = "${myLINK_FLAG}" # Link flags + + +#============================================================================================ +#> Implement User Input +#============================================================================================ + +#> Check for CMAQ_REPO and CMAQ_LIB settings: + if ( ! -e $CMAQ_REPO || ! -e $CMAQ_LIB ) then + echo " $CMAQ_REPO or $CMAQ_LIB directory not found" + exit 1 + endif + echo " Model repository base path: $CMAQ_REPO" + echo " library path: $CMAQ_LIB" + +#> If $CMAQ_MODEL is not set, default to $CMAQ_REPO + if ( $?CMAQ_MODEL ) then + echo " Model repository path: $CMAQ_MODEL" + else + setenv CMAQ_MODEL $CMAQ_REPO + echo " default Model repository path: $CMAQ_MODEL" + endif + +#> This script was written for Linux hosts only. If +#> the host system is not Linux, produce an error and stop + set BLD_OS = `uname -s` + if ($BLD_OS != 'Linux') then + echo " $BLD_OS -> wrong bldit script for host!" + exit 1 + endif + +#> If the two-way, coupled WRF-CMAQ model is being built, +#> then just generate the Makefile. Don't compile. + if ( $?build_twoway ) then + set MakeFileOnly + set ModTwoway = twoway + endif + +#> If parallel-io is selected, then make sure the multiprocessor +#> option is also set. + if ( $?build_parallel_io ) then + if ( ! $?ParOpt ) then + echo "*** ParOpt is not set: required for the build_parallel_io option" + exit 1 + endif + set PIO = ( -Dparallel_io ) + else + set PIO = "" + endif + + if ($DepMod == m3dry) then + set cpp_depmod = '-Dm3dry_opt' + else if ($DepMod == stage) then + set cpp_depmod = '-Dstage_opt' + if ( $?DDM3D_CCTM ) then + echo "*** DDM3D is not compatible with the STAGE deposition model" + exit 1 + endif + endif + +#> Set variables needed for multiprocessor and serial builds + if ( $?ParOpt ) then + #Multiprocessor system configuration + echo " Parallel; set MPI flags" + set ModStenex = STENEX/se + set ModPario = PARIO + set ModPar = par/mpi + set PARIO = ${CMAQ_MODEL}/PARIO + set STENEX = ${CMAQ_MODEL}/STENEX + # MPI_INC is set in config.cmaq + # set PIO_INC = "${IOAPI_DIR}/src/fixed_src" + set PAR = ( -Dparallel ) + set Popt = SE + set seL = se_snl + set LIB2 = "${ioapi_lib}" + set LIB3 = "${mpi_lib} ${extra_lib}" + set Str1 = (// Parallel / Include message passing definitions) + set Str2 = (include SUBST_MPI mpif.h;) + # Distribute Environment to different machines if not done automatically + if ( $?DistrEnv ) then + set PAR = ($PAR -Dcluster) + endif + else + #Serial system configuration + echo " Not Parallel; set Serial (no-op) flags" + set ModStenex = STENEX/noop + set ModPar = par/par_noop + set PARIO = "." + set STENEX = ${CMAQ_MODEL}/STENEX/noop + set MPI_INC = "." + # set PIO_INC = "." + set PAR = "" + set Popt = NOOP + set seL = sef90_noop + set LIB2 = "${ioapi_lib} ${extra_lib}" + set Str1 = + set Str2 = + endif + +#> if DDM-3D is set, add the pre-processor flag for it. + if ( $?DDM3D_CCTM ) then + set SENS = ( -Dsens ) + else + set SENS = "" + endif + +#> Build Mechanism Files and instruct build-make to look +#> in the CHEMMECH output folder for the files + if ( $?build_mech ) then + + # Note: modifying existing or creating new chemical mechanisms + # can lead to unstable or highly inaccurate representations of + # atmospheric chemical predictions when applying the EBI solvers. + # EBI solvers are highly characterized and tested before + # application. The CMAQ development team recommends using the + # generalized solvers, Rosenbrock or Gear, with user-defined + # mechanisms. + + # Because the bldit_cctm script is executing the bldit_mech + # processor, we will assume that the source location for the new + # mechanism files is in the CMAQ repo. There will also be an + # error check for overwriting an existing mechanism that can be + # disabled using the mech_clobber variable above. + setenv MECH_SRC ${CMAQ_REPO}/CCTM/src/${ModMech} + setenv TRAC_NML ${CMAQ_REPO}/CCTM/src/MECHS/trac0/Species_Table_TR_0.nml + setenv MECH_OUT ${CMAQ_REPO}/CCTM/src/${ModMech} + setenv EBI_SOLVER_OUT ${CMAQ_REPO}/CCTM/src/${ModGas} + if ( $?clobber_mech ) then + setenv CLOBBER_MECH TRUE + else + setenv CLOBBER_MECH FALSE + endif + + cd ${CMAQ_HOME}/CCTM/scripts + ./bldit_mech.csh ${compiler} ${compilerVrsn} + if ( $? != 0 ) then + echo "" + echo "bldit_mech did not finish correctly --> Build Process Halted" + exit 1 + endif + endif + +#> Tracer configuration files + set ModTrac = MECHS/$Tracer + +#> Set and create the "BLD" directory for checking out and compiling +#> source code. Move current directory to that build directory. + if ( $?Debug_CCTM ) then + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug + else + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} + endif + + + if ( ! -e "$Bld" ) then + mkdir $Bld + else + if ( ! -d "$Bld" ) then + echo " *** target exists, but not a directory ***" + exit 1 + endif + endif + cd $Bld + +#> Set locations for the include files of various modules + set ICL_PAR = $GlobInc/fixed/mpi + set ICL_CONST = $GlobInc/fixed/const + set ICL_FILES = $GlobInc/fixed/filenames + set ICL_EMCTL = $GlobInc/fixed/emctrl +#set ICL_PA = $GlobInc/procan/$PAOpt + + #Test with xlib commented out + if ( $?ParOpt ) then + set ICL_MPI = . #$xLib_Base/$xLib_3 + endif + + +#> If the source code is being copied to the build directory, +#> then move the include files as well and direct the Makefile +#> to the current directory. + if ( $?CopySrc ) then + /bin/cp -fp ${ICL_PAR}/* ${Bld} + /bin/cp -fp ${ICL_CONST}/* ${Bld} + /bin/cp -fp ${ICL_FILES}/* ${Bld} + /bin/cp -fp ${ICL_EMCTL}/* ${Bld} + #/bin/cp -fp ${ICL_PA}/* ${Bld} + if ( $?ParOpt ) then + /bin/cp -fp ${ICL_MPI}/mpif.h ${Bld} + endif + + set ICL_PAR = . + set ICL_CONST = . + set ICL_FILES = . + set ICL_EMCTL = . + #set ICL_PA = . + if ( $?ParOpt ) then + set ICL_MPI = . + endif + endif + + + set STX1 = ( -DSUBST_BARRIER=${Popt}_BARRIER\ + -DSUBST_GLOBAL_MAX=${Popt}_GLOBAL_MAX\ + -DSUBST_GLOBAL_MIN=${Popt}_GLOBAL_MIN\ + -DSUBST_GLOBAL_MIN_DATA=${Popt}_GLOBAL_MIN_DATA\ + -DSUBST_GLOBAL_TO_LOCAL_COORD=${Popt}_GLOBAL_TO_LOCAL_COORD\ + -DSUBST_GLOBAL_SUM=${Popt}_GLOBAL_SUM\ + -DSUBST_GLOBAL_LOGICAL=${Popt}_GLOBAL_LOGICAL\ + -DSUBST_GLOBAL_GATHER=${Popt}_GLOBAL_GATHER\ + -DSUBST_GLOBAL_BCAST=${Popt}_GLOBAL_BCAST\ + -DSUBST_LOOP_INDEX=${Popt}_LOOP_INDEX\ + -DSUBST_SUBGRID_INDEX=${Popt}_SUBGRID_INDEX ) + set STX2 = ( -DSUBST_HI_LO_BND_PE=${Popt}_HI_LO_BND_PE\ + -DSUBST_SUM_CHK=${Popt}_SUM_CHK\ + -DSUBST_SE_INIT=${Popt}_INIT\ + -DSUBST_INIT_ARRAY=${Popt}_INIT_ARRAY\ + -DSUBST_COMM=${Popt}_COMM\ + -DSUBST_MY_REGION=${Popt}_MY_REGION\ + -DSUBST_SLICE=${Popt}_SLICE\ + -DSUBST_GATHER=${Popt}_GATHER\ + -DSUBST_DATA_COPY=${Popt}_DATA_COPY\ + -DSUBST_IN_SYN=${Popt}_IN_SYN ) + + +#> 3-D Advection Options + if ( $ModAdv == wrf_cons ) then + set ModCpl = couple/gencoor_wrf_cons #> unit conversion and concentration coupling module + #> (see $CMAQ_MODEL/CCTM/src/couple) + set ModHadv = hadv/ppm #> horizontal advection module + set ModVadv = vadv/wrf_cons #> Vertical advection module + else if ($ModAdv == local_cons) then + set ModCpl = couple/gencoor_local_cons #> unit conversion and concentration coupling module + #> (see $CMAQ_MODEL/CCTM/src/couple) + set ModHadv = hadv/ppm #> horizontal advection module + set ModVadv = vadv/local_cons #> Vertical advection module + endif + + # Retrieve git repository sha ID for this source code version + set shaID = `git --git-dir=${CMAQ_REPO}/.git rev-parse --short=10 HEAD` + if ( $? != 0 ) then + set shaID = "not_a_repo" + endif + +# ============================================================================ +#> Create Config File +# ============================================================================ + +set Cfile = ${Bld}/${CFG}.bld # Config Filename + set quote = '"' + + echo > $Cfile + if ( $?make_options ) then + echo "make_options $quote$make_options$quote;" >> $Cfile + echo >> $Cfile + endif + echo "model $EXEC;" >> $Cfile + echo >> $Cfile + echo "repo $CCTM_SRC;" >> $Cfile + echo >> $Cfile + echo "sha_ID $shaID;" >> $Cfile + echo >> $Cfile + echo "mechanism $Mechanism;" >> $Cfile + echo >> $Cfile + echo "lib_base $CMAQ_LIB;" >> $Cfile + echo >> $Cfile + echo "lib_1 ioapi/lib;" >> $Cfile + echo >> $Cfile + echo "lib_2 ioapi/include_files;" >> $Cfile + echo >> $Cfile + if ( $?ParOpt ) then + echo "lib_3 ${quote}mpi -I.$quote;" >> $Cfile + echo >> $Cfile + endif + echo >> $Cfile + echo "lib_4 ioapi/lib;" >> $Cfile + echo >> $Cfile + set text = "$quote$CPP_FLAGS $PAR $SENS $PIO $cpp_depmod $STX1 $STX2$quote;" + echo "cpp_flags $text" >> $Cfile + echo >> $Cfile + echo "f_compiler $FC;" >> $Cfile + echo >> $Cfile + echo "fstd $quote$FSTD$quote;" >> $Cfile + echo >> $Cfile + echo "dbg $quote$DBG$quote;" >> $Cfile + echo >> $Cfile + echo "f_flags $quote$F_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "f90_flags $quote$F90_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "c_compiler $CC;" >> $Cfile + echo >> $Cfile + echo "c_flags $quote$C_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "link_flags $quote$LINK_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "ioapi $quote$LIB2$quote; " >> $Cfile + echo >> $Cfile + echo "netcdf $quote$netcdf_lib$quote;" >> $Cfile + echo >> $Cfile + echo "netcdff $quote$netcdff_lib$quote;" >> $Cfile + echo >> $Cfile + if ( $?ParOpt ) then + echo "mpich $quote$LIB3$quote;" >> $Cfile + echo >> $Cfile + endif + echo "include SUBST_PE_COMM $ICL_PAR/PE_COMM.EXT;" >> $Cfile + echo "include SUBST_CONST $ICL_CONST/CONST.EXT;" >> $Cfile + echo "include SUBST_FILES_ID $ICL_FILES/FILES_CTM.EXT;" >> $Cfile + echo "include SUBST_EMISPRM $ICL_EMCTL/EMISPRM.EXT;" >> $Cfile + echo >> $Cfile + + if ( $?ParOpt ) then + echo "$Str1" >> $Cfile + echo "include SUBST_MPI ./mpif.h;" >> $Cfile + endif + echo >> $Cfile + + set text = "stenex or se_noop" + echo "// options are" $text >> $Cfile + echo "Module ${ModStenex};" >> $Cfile + if ( $?ParOpt ) then + set text = "// parallel executable; stenex and pario included" + echo $text >> $Cfile + echo "Module ${ModPario};" >> $Cfile + else + set text = "serial executable; noop stenex" + echo $text >> $Cfile + endif + echo >> $Cfile + + set text = "par, par_nodistr and par_noop" + echo "// options are" $text >> $Cfile + if ( $?ParOpt ) then + echo "Module ${ModPar};" >> $Cfile + endif + echo >> $Cfile + + if ( $?build_twoway ) then + echo "// option set for WRF-CMAQ twoway" >> $Cfile + echo "Module ${ModTwoway};" >> $Cfile + echo >> $Cfile + endif + + set text = "driver" + echo "// options are" $text >> $Cfile + echo "Module driver;" >> $Cfile + echo >> $Cfile + + set text = "cartesian" + echo "// options are" $text >> $Cfile + echo "Module ${ModGrid};" >> $Cfile + echo >> $Cfile + + set text = "Init" + echo "// options are" $text >> $Cfile + echo "Module init;" >> $Cfile + echo >> $Cfile + + set text = "gencoor_wrf_cons and gencoor_local_cons" + echo "// options are" $text >> $Cfile + echo "Module ${ModCpl};" >> $Cfile + echo >> $Cfile + + set text = "ppm" + echo "// options are" $text >> $Cfile + echo "Module ${ModHadv};" >> $Cfile + echo >> $Cfile + + set text = "wrf_cons and local_cons" + echo "// options are" $text >> $Cfile + echo "Module ${ModVadv};" >> $Cfile + echo >> $Cfile + + set text = "multiscale" + echo "// options are" $text >> $Cfile + echo "Module ${ModHdiff};" >> $Cfile + echo >> $Cfile + + set text = "acm2_m3dry or acm2_stage" + echo "// options are" $text >> $Cfile + echo "Module ${ModVdiff};" >> $Cfile + echo >> $Cfile + + set text = "m3dry or stage" + echo "// options are" $text >> $Cfile + echo "Module ${ModDepv};" >> $Cfile + echo >> $Cfile + + set text = "emis" + echo "// options are" $text >> $Cfile + echo "Module ${ModEmis};" >> $Cfile + echo >> $Cfile + + set text = "beis4" + echo "// options are" $text >> $Cfile + echo "Module ${ModBiog};" >> $Cfile + echo >> $Cfile + + set text = "megan3" + echo "// options are" $text >> $Cfile + echo "Module ${ModMegBiog};" >> $Cfile + echo + + set text = "smoke" + echo "// options are" $text >> $Cfile + echo "Module ${ModPlmrs};" >> $Cfile + echo >> $Cfile + + set text = "cgrid_spcs_nml and cgrid_spcs_icl" + echo "// options are" $text >> $Cfile + echo "Module ${ModCgrds};" >> $Cfile + echo >> $Cfile + + set text = "inline and table" + echo "// options are" $text >> $Cfile + echo "Module ${ModPhot};" >> $Cfile + echo >> $Cfile + + set text = "degrade" + echo "// reactive_tracer options are" $text >> $Cfile + echo "Module ${ModDegrade};" >> $Cfile + echo >> $Cfile + + set text = "gas chemistry solvers" + echo "// " $text >> $Cfile + set text = "smvgear, ros3, and ebi; see 'gas chemistry mechanisms' for " + echo "// options are" $text >> $Cfile + echo "Module ${ModGas};" >> $Cfile + echo >> $Cfile + + set MechList = "cb6r5hap_ae7_aq, cb6r3_ae7_aq, cb6r5_ae7_aq, cb6r5_ae7_aqkmt2, cb6r5m_ae7_aq, racm2_ae6_aq, saprc07tc_ae6_aq, saprc07tic_ae7i_aq, saprc07tic_ae7i_aqkmt2" + + set text = "gas chemistry mechanisms" + echo "// " $text >> $Cfile + set text = "$MechList" + echo "// options are" $text >> $Cfile + echo "Module ${ModMech};" >> $Cfile + echo >> $Cfile + + set text = "tracer modules" + echo "// " $text >> $Cfile + echo "// options are trac0, trac1" >> $Cfile + echo "Module ${ModTrac};" >> $Cfile + echo + + set text = "use potential vorticity free-troposphere O3 scaling" + echo "// options are" $text >> $Cfile + echo "Module ${ModPvO3};" >> $Cfile + echo >> $Cfile + + set text = "aero6" + echo "// options are" $text >> $Cfile + echo "Module ${ModAero};" >> $Cfile + echo >> $Cfile + + set text = "acm_ae6, acm_ae6_kmt, acm_ae7_kmt2, acm_ae6_mp, acm_ae7" + echo "// options are" $text >> $Cfile + echo "Module ${ModCloud};" >> $Cfile + echo >> $Cfile + + set text = "// compile for inline process analysis" + echo $text >> $Cfile + echo "Module ${ModPa};" >> $Cfile + echo >> $Cfile + + set text = "// compile for integrated source apportionment method" + echo $text >> $Cfile + echo "Module ${ModISAM};" >> $Cfile + echo >> $Cfile + + if ( $?DDM3D_CCTM ) then + set text = "// compile for decoupled direct method in 3d" + echo $text >> $Cfile + echo "Module ${ModDDM3D};" >> $Cfile + echo >> $Cfile + endif + + set text = "util" + echo "// options are" $text >> $Cfile + echo "Module ${ModUtil};" >> $Cfile + echo >> $Cfile + + set text = "diag" + echo "// options are" $text >> $Cfile + echo "Module ${ModDiag};" >> $Cfile + echo >> $Cfile + + set text = "stm" + echo "// options are" $text >> $Cfile + echo "Module stm;" >> $Cfile + echo >> $Cfile + + set text = "cio" + echo "// options are" $text >> $Cfile + echo "Module cio;" >> $Cfile + echo >> $Cfile + + if ( $?ModMisc ) then + echo "Module ${ModMisc};" >> $Cfile + echo >> $Cfile + endif + +# ============================================================================ +#> Create Makefile and Model Executable +# ============================================================================ + unalias mv rm + +#> Recompile BLDMAKE from source if requested or if it does not exist + if ( $?CompileBLDMAKE || ! -f $BLDER ) then + cd ${CMAQ_REPO}/UTIL/bldmake/scripts + ./bldit_bldmake.csh + endif + +#> Relocate to the BLD_* directory + cd $Bld + +#> Set multiprocessor/serial options for BLDMAKE execution + if ( $?ParOpt ) then + set Blder = "$BLDER -verbose" + else + set Blder = "$BLDER -serial -verbose" + endif + +#> Run BLDMAKE Utility + set bld_flags = "" + if ( $?MakeFileOnly ) then # Do not compile the Model + set bld_flags = "${bld_flags} -makefo" + endif + + if ( $?CopySrc ) then + set bld_flags = "${bld_flags}" + else if ( $?CopySrcTree ) then + set bld_flags = "${bld_flags} -co" + else + set bld_flags = "{bld_flags} -git_local" # Run BLDMAKE with source code in + # version-controlled git repo + # $Cfile = ${CFG}.bld + endif + + if ( $?Debug_CCTM ) then + set bld_flags = "${bld_flags} -debug_cctm" + endif + + if ( $?ISAM_CCTM ) then + set bld_flags = "${bld_flags} -isam_cctm" + endif + + if ( $?build_twoway ) then + set bld_flags = "${bld_flags} -twoway" + endif + +#> Run BLDMAKE with source code in build directory + $Blder $bld_flags $Cfile + +#> Rename Makefile to specify compiler option and link back to Makefile + if ( ! $?build_twoway ) then + mv Makefile Makefile.$compilerString + if ( -e Makefile.$compilerString && -e Makefile ) rm Makefile + ln -s Makefile.$compilerString Makefile + endif + +#> Alert user of error in BLDMAKE if it ocurred + if ( $status != 0 ) then + echo " *** failure in $Blder ***" + exit 1 + endif + +#> Preserve old Config file, if it exists, before moving new one to +#> build directory. + if ( -e "$Bld/${CFG}" ) then + echo " >>> previous ${CFG} exists, re-naming to ${CFG}.old <<<" + mv $Bld/${CFG} $Bld/${CFG}.old + endif + mv ${CFG}.bld $Bld/${CFG} + +#> If a CRACMM mechanism is used and the compiler is gcc, remove trailing +#> comments in species namelist files (or else model will not run) + if ( ${Mechanism} =~ *cracmm* && ${compiler} == gcc ) then + echo " >>> removing trailing comments from species namelists <<<" + sed -i 's/,\!.*/,/' $Bld/GC_${Mechanism}.nml + sed -i 's/,\!.*/,/' $Bld/AE_${Mechanism}.nml + sed -i 's/,\!.*/,/' $Bld/NR_${Mechanism}.nml + endif + +#> If Building WRF-CMAQ, download WRF, download auxillary files and build +#> model + if ( $?build_twoway ) then + +#> Check if the user has git installed on their system + git --version >& /dev/null + + if ($? == 0) then + set git_check + endif + + if ($?git_check) then + + cd $CMAQ_HOME/CCTM/scripts + + # Downlad WRF repository from GitHub and put CMAQv5.5 into it + set WRF_BLD = BLD_WRF${WRF_VRSN}_CCTM_${VRSN}_${compilerString} + setenv wrf_path ${CMAQ_HOME}/CCTM/scripts/${WRF_BLD} + setenv WRF_CMAQ 1 + + if ( ! -d $WRF_BLD ) then + git clone --branch ${WRF_VRSN} https://github.com/wrf-model/WRF.git ./$WRF_BLD >& /dev/null + cd $wrf_path + mv $Bld ./cmaq + + # Configure WRF + ./configure <&! bldit.cctm.log +# Requirements: I/O API & netCDF libraries, a Fortran compiler, +# and MPI for multiprocessor computing +# +# To report problems or request help with this script/program: +# http://www.cmascenter.org +# ======================================================================= + +#> Set Compiler Identity by User Input: Options -> intel | pgi | gcc + if ( $#argv == 1 ) then + setenv compiler $argv[1] + setenv compilerVrsn Empty + else if ( $#argv == 2 ) then + #> Compiler Name and Version have been provided + setenv compiler $1 + setenv compilerVrsn $2 + else + echo "usage: $0 " + echo " where is intel, pgi or gcc" + exit(2) + endif + +#> Source the config.cmaq file to set the build environment + cd ../.. + source ./config_cmaq.csh + + set echo + +# ======================================================================= +#> Begin User Input Section +# ======================================================================= + +#> Source Code Locations + setenv CCTM_SRC ${CMAQ_REPO}/CCTM/src #> location of the CCTM source code + set GlobInc = $CCTM_SRC/ICL #> location of the global include files + set Mechs = $CCTM_SRC/MECHS #> location of the chemistry mechanism include files + setenv REPOROOT $CCTM_SRC + +#> Controls for managing the source code and MPI compilation +set CompileBLDMAKE #> Recompile the BLDMAKE utility from source + #> comment out to use an existing BLDMAKE executable +set CopySrc #> copy the source files into the build directory +#set CopySrcTree #> copy the source files and directory tree into the build directory +#set MakeFileOnly #> uncomment to build a Makefile, but do not compile; + #> comment out to compile the model (default if not set) +#set build_mech #> uncomment to build mechanism source code files using the + #> chemmech utility. + +#> Below are chemmech options for revising the mechanism definitions file. The option needs information on the +#> composition of each chemistry. See UTIL/chemmech/README.md for more information. +#> Uncomment to use. +#> Rewrite reactions by appending them with changes in tracked atoms or elements from reactants to products + #setenv COMPUTE_DELTA_ATOMS F +#> The species namelist contains the composition information as comments at the end of lines defining species. +#> Note that if a defining line does not have an ending comment, the species is taken to have none of the tacked atoms. +#> If NAMELISTS_LIST_ATOMS equals F, an additional ASCII file contains the information. + #setenv NAMELISTS_LIST_ATOMS T + +#set clobber_mech #> when commented, the bldit_mech.csh script will halt if + #> newly created mechanism files are attempting replace + #> existing ones. When uncommented, the existing files + #> will be overwritten. +set ParOpt #> uncomment to build a multiple processor (MPI) executable; + #> comment out for a single processor (serial) executable +#set DistrEnv #> uncomment to distribute environmental variables to multiple machines + #> comment out for a single processor (serial) executable (MPI only) +#set build_parallel_io #> uncomment to build with parallel I/O (pnetcdf); + #> comment out to use standard netCDF I/O +#set Debug_CCTM #> uncomment to compile CCTM with debug option equal to TRUE + #> comment out to use standard, optimized compile process +set make_options = "-j" #> additional options for make command if MakeFileOnly is not set + #> comment out if no additional options are wanted. + +#> Integrated Source Apportionment Method (ISAM) +#set ISAM_CCTM #> uncomment to compile CCTM with ISAM activated + #> comment out to use standard process + +#set DDM3D_CCTM #> uncomment to compile CCTM with DD3D activated + #> comment out to use standard process +#> Two-way WRF-CMAQ +#set build_twoway #> uncomment to build WRF-CMAQ twoway; + #> comment out for off-line chemistry + +#> Working directory and Version IDs + if ( $?ISAM_CCTM ) then + set VRSN = v55_ISAM #> model configuration ID for CMAQ_ISAM + else if ( $?DDM3D_CCTM ) then + set VRSN = v55_DDM3D #> model configuration ID for CMAQ_DDM + else + set VRSN = v55 #> model configuration ID for CMAQ + endif + + set EXEC = CCTM_${VRSN}.exe #> executable name + set CFG = CCTM_${VRSN}.cfg #> configuration file name + + if ( $?build_twoway ) then # WRF Version used for WRF-CMAQ Model (must be v4.4+) + set WRF_VRSN = v4.4 + endif + +#======================================================================== +#> CCTM Science Modules +#======================================================================== +#> NOTE: For the modules with multiple options, a note is +#> provided on where to look in the CCTM source code +#> archive for a list of the possible settings. Users +#> may also refer to the CMAQ documentation. + + set ModGrid = grid/cartesian #> grid configuration module + + # set DepMod = m3dry #> m3dry or stage + set DepMod = stage + set ModAdv = wrf_cons #> 3-D Advection Scheme [Options: wrf_cons (default), local_cons] + set ModHdiff = hdiff/multiscale #> horizontal diffusion module + set ModVdiff = vdiff/acm2_${DepMod} #> vertical diffusion module (see $CMAQ_MODEL/CCTM/src/vdiff) + set ModDepv = depv/${DepMod} #> deposition velocity calculation module + #> (see $CMAQ_MODEL/CCTM/src/depv) + set ModEmis = emis/emis #> in-line emissions module + set ModBiog = biog/beis4 #> BEIS4 in-line emissions module + + set ModMegBiog = biog/megan3 #> MEGAN3 in-line emissions module + + set ModPlmrs = plrise/smoke #> in-line emissions plume rise + set ModCgrds = spcs/cgrid_spcs_nml #> chemistry species configuration module + #> (see $CMAQ_MODEL/CCTM/src/spcs) + set ModPhot = phot/inline #> photolysis calculation module + #> (see $CMAQ_MODEL/CCTM/src/phot) + + setenv Mechanism cracmm2 #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) + set ModMech = MECHS/${Mechanism} + + if ( ${Mechanism} =~ *ae7* ) then #> ae7 family of aero and cloud chem + set ModAero = aero/aero7 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) + set ModCloud = cloud/acm_ae7 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) + else if ( ${Mechanism} =~ *ae6* ) then #> ae6 family of aero and cloud chem + set ModAero = aero/aero6 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) + set ModCloud = cloud/acm_ae6 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) + else if ( ${Mechanism} =~ *cracmm* ) then #> CRACMM family of aero and cloud chem + set ModAero = aero/cracmm # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) + set ModCloud = cloud/acm_cracmm # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) + endif + + # Special cloud modules for kmt versions + if( ${Mechanism} == cb6r5_ae7_aqkmt2 ) then + set ModCloud = cloud/acm_ae7_kmt2 + else if( ${Mechanism} == saprc07tic_ae7i_aqkmt2 ) then + set ModCloud = cloud/acm_ae7_kmt2 + endif + + # Gas chem solver + if ( ${Mechanism} == cb6r5m_ae7_aq ) then #> Gas-phase chemistry solver options ($CMAQ_MODEL/CCTM/src/gas) + setenv ChemSolver ros3 #> ros3 (or smvgear) are system independent + else + setenv ChemSolver ebi #> [ default for most mechanisms: ebi ] + endif + + if ( $ChemSolver == ebi ) then + set ModGas = gas/${ChemSolver}_${Mechanism} + + else + set ModGas = gas/${ChemSolver} + endif + + set ModUtil = util/util #> CCTM utility modules + set ModDiag = diag #> CCTM diagnostic modules + set Tracer = trac0 #> tracer configuration directory under + #> $CMAQ_MODEL/CCTM/src/MECHS [ default: no tracer species ] + set ModPa = procan/pa #> CCTM process analysis + set ModPvO3 = pv_o3 #> potential vorticity from the free troposphere + set ModISAM = isam #> CCTM Integrated Source Apportionment Method + set ModDDM3D = ddm3d #> Decoupled Direct Method in 3D + set ModDegrade = reactive_tracers #> Linear Chemical Loss for a fixed set of species treated as reactive tracers + +#============================================================================================ +#> Computing System Configuration: +#> Most of these settings are done in config.cmaq +#============================================================================================ + + setenv FC ${myFC} #> path of Fortan compiler; set in config.cmaq + set FP = $FC #> path of Fortan preprocessor; set in config.cmaq + set CC = ${myCC} #> path of C compiler; set in config.cmaq + setenv BLDER ${CMAQ_HOME}/UTIL/bldmake/bldmake_${compilerString}.exe #> name of model builder executable + +#> Libraries/include files +#set LIOAPI = "${IOAPI_DIR}/lib ${ioapi_lib}" #> I/O API library directory +#set IOAPIMOD = "${IOAPI_DIR}/include" #> I/O API module directory + set NETCDF = "${NETCDF_DIR}/lib ${netcdf_lib}" #> netCDF C library directory + set NETCDFF = "${NETCDFF_DIR}/lib ${netcdff_lib}" #> netCDF Fortran library directory + set PNETCDF = "${PNETCDF_DIR}/lib ${pnetcdf_lib}" #> Parallel netCDF library directory +#set PIO_INC = "${IOAPI_DIR}/src" + +#> Compiler flags set in config.cmaq + set FSTD = "${myFSTD}" + set DBG = "${myDBG}" + setenv F_FLAGS "${myFFLAGS}" #> F77 flags + set F90_FLAGS = "${myFRFLAGS}" #> F90 flags + set CPP_FLAGS = "" #> Fortran preprocessor flags + set C_FLAGS = "${myCFLAGS} -DFLDMN -I" #> C flags + set LINK_FLAGS = "${myLINK_FLAG}" # Link flags + + +#============================================================================================ +#> Implement User Input +#============================================================================================ + +#> Check for CMAQ_REPO and CMAQ_LIB settings: + if ( ! -e $CMAQ_REPO || ! -e $CMAQ_LIB ) then + echo " $CMAQ_REPO or $CMAQ_LIB directory not found" + exit 1 + endif + echo " Model repository base path: $CMAQ_REPO" + echo " library path: $CMAQ_LIB" + +#> If $CMAQ_MODEL is not set, default to $CMAQ_REPO + if ( $?CMAQ_MODEL ) then + echo " Model repository path: $CMAQ_MODEL" + else + setenv CMAQ_MODEL $CMAQ_REPO + echo " default Model repository path: $CMAQ_MODEL" + endif + +#> This script was written for Linux hosts only. If +#> the host system is not Linux, produce an error and stop + set BLD_OS = `uname -s` + if ($BLD_OS != 'Linux') then + echo " $BLD_OS -> wrong bldit script for host!" + exit 1 + endif + +#> If the two-way, coupled WRF-CMAQ model is being built, +#> then just generate the Makefile. Don't compile. + if ( $?build_twoway ) then + set MakeFileOnly + set ModTwoway = twoway + endif + +#> If parallel-io is selected, then make sure the multiprocessor +#> option is also set. + if ( $?build_parallel_io ) then + if ( ! $?ParOpt ) then + echo "*** ParOpt is not set: required for the build_parallel_io option" + exit 1 + endif + set PIO = ( -Dparallel_io ) + else + set PIO = "" + endif + + if ($DepMod == m3dry) then + set cpp_depmod = '-Dm3dry_opt' + else if ($DepMod == stage) then + set cpp_depmod = '-Dstage_opt' + endif + +#> Set variables needed for multiprocessor and serial builds + if ( $?ParOpt ) then + #Multiprocessor system configuration + echo " Parallel; set MPI flags" + set ModStenex = STENEX/se + set ModPario = PARIO + set ModPar = par/mpi + set PARIO = ${CMAQ_MODEL}/PARIO + set STENEX = ${CMAQ_MODEL}/STENEX + # MPI_INC is set in config.cmaq + # set PIO_INC = "${IOAPI_DIR}/src/fixed_src" + set PAR = ( -Dparallel ) + set Popt = SE + set seL = se_snl + set LIB2 = "${ioapi_lib}" + set LIB3 = "${mpi_lib} ${extra_lib}" + set Str1 = (// Parallel / Include message passing definitions) + set Str2 = (include SUBST_MPI mpif.h;) + # Distribute Environment to different machines if not done automatically + if ( $?DistrEnv ) then + set PAR = ($PAR -Dcluster) + endif + else + #Serial system configuration + echo " Not Parallel; set Serial (no-op) flags" + set ModStenex = STENEX/noop + set ModPar = par/par_noop + set PARIO = "." + set STENEX = ${CMAQ_MODEL}/STENEX/noop + set MPI_INC = "." + # set PIO_INC = "." + set PAR = "" + set Popt = NOOP + set seL = sef90_noop + set LIB2 = "${ioapi_lib} ${extra_lib}" + set Str1 = + set Str2 = + endif + +#> if DDM-3D is set, add the pre-processor flag for it. + if ( $?DDM3D_CCTM ) then + set SENS = ( -Dsens ) + else + set SENS = "" + endif + +#> Build Mechanism Files and instruct build-make to look +#> in the CHEMMECH output folder for the files + if ( $?build_mech ) then + + # Note: modifying existing or creating new chemical mechanisms + # can lead to unstable or highly inaccurate representations of + # atmospheric chemical predictions when applying the EBI solvers. + # EBI solvers are highly characterized and tested before + # application. The CMAQ development team recommends using the + # generalized solvers, Rosenbrock or Gear, with user-defined + # mechanisms. + + # Because the bldit_cctm script is executing the bldit_mech + # processor, we will assume that the source location for the new + # mechanism files is in the CMAQ repo. There will also be an + # error check for overwriting an existing mechanism that can be + # disabled using the mech_clobber variable above. + setenv MECH_SRC ${CMAQ_REPO}/CCTM/src/${ModMech} + setenv TRAC_NML ${CMAQ_REPO}/CCTM/src/MECHS/trac0/Species_Table_TR_0.nml + setenv MECH_OUT ${CMAQ_REPO}/CCTM/src/${ModMech} + setenv EBI_SOLVER_OUT ${CMAQ_REPO}/CCTM/src/${ModGas} + if ( $?clobber_mech ) then + setenv CLOBBER_MECH TRUE + else + setenv CLOBBER_MECH FALSE + endif + + cd ${CMAQ_HOME}/CCTM/scripts + ./bldit_mech.csh ${compiler} ${compilerVrsn} + if ( $? != 0 ) then + echo "" + echo "bldit_mech did not finish correctly --> Build Process Halted" + exit 1 + endif + endif + +#> Tracer configuration files + set ModTrac = MECHS/$Tracer + +#> Set and create the "BLD" directory for checking out and compiling +#> source code. Move current directory to that build directory. + if ( $?Debug_CCTM ) then + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug + else + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} + endif + + + if ( ! -e "$Bld" ) then + mkdir $Bld + else + if ( ! -d "$Bld" ) then + echo " *** target exists, but not a directory ***" + exit 1 + endif + endif + cd $Bld + +#> Set locations for the include files of various modules + set ICL_PAR = $GlobInc/fixed/mpi + set ICL_CONST = $GlobInc/fixed/const + set ICL_FILES = $GlobInc/fixed/filenames + set ICL_EMCTL = $GlobInc/fixed/emctrl +#set ICL_PA = $GlobInc/procan/$PAOpt + + #Test with xlib commented out + if ( $?ParOpt ) then + set ICL_MPI = . #$xLib_Base/$xLib_3 + endif + + +#> If the source code is being copied to the build directory, +#> then move the include files as well and direct the Makefile +#> to the current directory. + if ( $?CopySrc ) then + /bin/cp -fp ${ICL_PAR}/* ${Bld} + /bin/cp -fp ${ICL_CONST}/* ${Bld} + /bin/cp -fp ${ICL_FILES}/* ${Bld} + /bin/cp -fp ${ICL_EMCTL}/* ${Bld} + #/bin/cp -fp ${ICL_PA}/* ${Bld} + if ( $?ParOpt ) then + /bin/cp -fp ${ICL_MPI}/mpif.h ${Bld} + endif + + set ICL_PAR = . + set ICL_CONST = . + set ICL_FILES = . + set ICL_EMCTL = . + #set ICL_PA = . + if ( $?ParOpt ) then + set ICL_MPI = . + endif + endif + + + set STX1 = ( -DSUBST_BARRIER=${Popt}_BARRIER\ + -DSUBST_GLOBAL_MAX=${Popt}_GLOBAL_MAX\ + -DSUBST_GLOBAL_MIN=${Popt}_GLOBAL_MIN\ + -DSUBST_GLOBAL_MIN_DATA=${Popt}_GLOBAL_MIN_DATA\ + -DSUBST_GLOBAL_TO_LOCAL_COORD=${Popt}_GLOBAL_TO_LOCAL_COORD\ + -DSUBST_GLOBAL_SUM=${Popt}_GLOBAL_SUM\ + -DSUBST_GLOBAL_LOGICAL=${Popt}_GLOBAL_LOGICAL\ + -DSUBST_GLOBAL_GATHER=${Popt}_GLOBAL_GATHER\ + -DSUBST_GLOBAL_BCAST=${Popt}_GLOBAL_BCAST\ + -DSUBST_LOOP_INDEX=${Popt}_LOOP_INDEX\ + -DSUBST_SUBGRID_INDEX=${Popt}_SUBGRID_INDEX ) + set STX2 = ( -DSUBST_HI_LO_BND_PE=${Popt}_HI_LO_BND_PE\ + -DSUBST_SUM_CHK=${Popt}_SUM_CHK\ + -DSUBST_SE_INIT=${Popt}_INIT\ + -DSUBST_INIT_ARRAY=${Popt}_INIT_ARRAY\ + -DSUBST_COMM=${Popt}_COMM\ + -DSUBST_MY_REGION=${Popt}_MY_REGION\ + -DSUBST_SLICE=${Popt}_SLICE\ + -DSUBST_GATHER=${Popt}_GATHER\ + -DSUBST_DATA_COPY=${Popt}_DATA_COPY\ + -DSUBST_IN_SYN=${Popt}_IN_SYN ) + + +#> 3-D Advection Options + if ( $ModAdv == wrf_cons ) then + set ModCpl = couple/gencoor_wrf_cons #> unit conversion and concentration coupling module + #> (see $CMAQ_MODEL/CCTM/src/couple) + set ModHadv = hadv/ppm #> horizontal advection module + set ModVadv = vadv/wrf_cons #> Vertical advection module + else if ($ModAdv == local_cons) then + set ModCpl = couple/gencoor_local_cons #> unit conversion and concentration coupling module + #> (see $CMAQ_MODEL/CCTM/src/couple) + set ModHadv = hadv/ppm #> horizontal advection module + set ModVadv = vadv/local_cons #> Vertical advection module + endif + + # Retrieve git repository sha ID for this source code version + set shaID = `git --git-dir=${CMAQ_REPO}/.git rev-parse --short=10 HEAD` + if ( $? != 0 ) then + set shaID = "not_a_repo" + endif + +# ============================================================================ +#> Create Config File +# ============================================================================ + +set Cfile = ${Bld}/${CFG}.bld # Config Filename + set quote = '"' + + echo > $Cfile + if ( $?make_options ) then + echo "make_options $quote$make_options$quote;" >> $Cfile + echo >> $Cfile + endif + echo "model $EXEC;" >> $Cfile + echo >> $Cfile + echo "repo $CCTM_SRC;" >> $Cfile + echo >> $Cfile + echo "sha_ID $shaID;" >> $Cfile + echo >> $Cfile + echo "mechanism $Mechanism;" >> $Cfile + echo >> $Cfile + echo "lib_base $CMAQ_LIB;" >> $Cfile + echo >> $Cfile + echo "lib_1 ioapi/lib;" >> $Cfile + echo >> $Cfile + echo "lib_2 ioapi/include_files;" >> $Cfile + echo >> $Cfile + if ( $?ParOpt ) then + echo "lib_3 ${quote}mpi -I.$quote;" >> $Cfile + echo >> $Cfile + endif + echo >> $Cfile + echo "lib_4 ioapi/lib;" >> $Cfile + echo >> $Cfile + set text = "$quote$CPP_FLAGS $PAR $SENS $PIO $cpp_depmod $STX1 $STX2$quote;" + echo "cpp_flags $text" >> $Cfile + echo >> $Cfile + echo "f_compiler $FC;" >> $Cfile + echo >> $Cfile + echo "fstd $quote$FSTD$quote;" >> $Cfile + echo >> $Cfile + echo "dbg $quote$DBG$quote;" >> $Cfile + echo >> $Cfile + echo "f_flags $quote$F_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "f90_flags $quote$F90_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "c_compiler $CC;" >> $Cfile + echo >> $Cfile + echo "c_flags $quote$C_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "link_flags $quote$LINK_FLAGS$quote;" >> $Cfile + echo >> $Cfile + echo "ioapi $quote$LIB2$quote; " >> $Cfile + echo >> $Cfile + echo "netcdf $quote$netcdf_lib$quote;" >> $Cfile + echo >> $Cfile + echo "netcdff $quote$netcdff_lib$quote;" >> $Cfile + echo >> $Cfile + if ( $?ParOpt ) then + echo "mpich $quote$LIB3$quote;" >> $Cfile + echo >> $Cfile + endif + echo "include SUBST_PE_COMM $ICL_PAR/PE_COMM.EXT;" >> $Cfile + echo "include SUBST_CONST $ICL_CONST/CONST.EXT;" >> $Cfile + echo "include SUBST_FILES_ID $ICL_FILES/FILES_CTM.EXT;" >> $Cfile + echo "include SUBST_EMISPRM $ICL_EMCTL/EMISPRM.EXT;" >> $Cfile + echo >> $Cfile + + if ( $?ParOpt ) then + echo "$Str1" >> $Cfile + echo "include SUBST_MPI ./mpif.h;" >> $Cfile + endif + echo >> $Cfile + + set text = "stenex or se_noop" + echo "// options are" $text >> $Cfile + echo "Module ${ModStenex};" >> $Cfile + if ( $?ParOpt ) then + set text = "// parallel executable; stenex and pario included" + echo $text >> $Cfile + echo "Module ${ModPario};" >> $Cfile + else + set text = "serial executable; noop stenex" + echo $text >> $Cfile + endif + echo >> $Cfile + + set text = "par, par_nodistr and par_noop" + echo "// options are" $text >> $Cfile + if ( $?ParOpt ) then + echo "Module ${ModPar};" >> $Cfile + endif + echo >> $Cfile + + if ( $?build_twoway ) then + echo "// option set for WRF-CMAQ twoway" >> $Cfile + echo "Module ${ModTwoway};" >> $Cfile + echo >> $Cfile + endif + + set text = "driver" + echo "// options are" $text >> $Cfile + echo "Module driver;" >> $Cfile + echo >> $Cfile + + set text = "cartesian" + echo "// options are" $text >> $Cfile + echo "Module ${ModGrid};" >> $Cfile + echo >> $Cfile + + set text = "Init" + echo "// options are" $text >> $Cfile + echo "Module init;" >> $Cfile + echo >> $Cfile + + set text = "gencoor_wrf_cons and gencoor_local_cons" + echo "// options are" $text >> $Cfile + echo "Module ${ModCpl};" >> $Cfile + echo >> $Cfile + + set text = "ppm" + echo "// options are" $text >> $Cfile + echo "Module ${ModHadv};" >> $Cfile + echo >> $Cfile + + set text = "wrf_cons and local_cons" + echo "// options are" $text >> $Cfile + echo "Module ${ModVadv};" >> $Cfile + echo >> $Cfile + + set text = "multiscale" + echo "// options are" $text >> $Cfile + echo "Module ${ModHdiff};" >> $Cfile + echo >> $Cfile + + set text = "acm2_m3dry or acm2_stage" + echo "// options are" $text >> $Cfile + echo "Module ${ModVdiff};" >> $Cfile + echo >> $Cfile + + set text = "m3dry or stage" + echo "// options are" $text >> $Cfile + echo "Module ${ModDepv};" >> $Cfile + echo >> $Cfile + + set text = "emis" + echo "// options are" $text >> $Cfile + echo "Module ${ModEmis};" >> $Cfile + echo >> $Cfile + + set text = "beis4" + echo "// options are" $text >> $Cfile + echo "Module ${ModBiog};" >> $Cfile + echo >> $Cfile + + set text = "megan3" + echo "// options are" $text >> $Cfile + echo "Module ${ModMegBiog};" >> $Cfile + echo + + set text = "smoke" + echo "// options are" $text >> $Cfile + echo "Module ${ModPlmrs};" >> $Cfile + echo >> $Cfile + + set text = "cgrid_spcs_nml and cgrid_spcs_icl" + echo "// options are" $text >> $Cfile + echo "Module ${ModCgrds};" >> $Cfile + echo >> $Cfile + + set text = "inline and table" + echo "// options are" $text >> $Cfile + echo "Module ${ModPhot};" >> $Cfile + echo >> $Cfile + + set text = "degrade" + echo "// reactive_tracer options are" $text >> $Cfile + echo "Module ${ModDegrade};" >> $Cfile + echo >> $Cfile + + set text = "gas chemistry solvers" + echo "// " $text >> $Cfile + set text = "smvgear, ros3, and ebi; see 'gas chemistry mechanisms' for " + echo "// options are" $text >> $Cfile + echo "Module ${ModGas};" >> $Cfile + echo >> $Cfile + + set MechList = "cb6r5hap_ae7_aq, cb6r3_ae7_aq, cb6r5_ae7_aq, cb6r5_ae7_aqkmt2, cb6r5m_ae7_aq, racm2_ae6_aq, saprc07tc_ae6_aq, saprc07tic_ae7i_aq, saprc07tic_ae7i_aqkmt2" + + set text = "gas chemistry mechanisms" + echo "// " $text >> $Cfile + set text = "$MechList" + echo "// options are" $text >> $Cfile + echo "Module ${ModMech};" >> $Cfile + echo >> $Cfile + + set text = "tracer modules" + echo "// " $text >> $Cfile + echo "// options are trac0, trac1" >> $Cfile + echo "Module ${ModTrac};" >> $Cfile + echo + + set text = "use potential vorticity free-troposphere O3 scaling" + echo "// options are" $text >> $Cfile + echo "Module ${ModPvO3};" >> $Cfile + echo >> $Cfile + + set text = "aero6" + echo "// options are" $text >> $Cfile + echo "Module ${ModAero};" >> $Cfile + echo >> $Cfile + + set text = "acm_ae6, acm_ae6_kmt, acm_ae7_kmt2, acm_ae6_mp, acm_ae7" + echo "// options are" $text >> $Cfile + echo "Module ${ModCloud};" >> $Cfile + echo >> $Cfile + + set text = "// compile for inline process analysis" + echo $text >> $Cfile + echo "Module ${ModPa};" >> $Cfile + echo >> $Cfile + + set text = "// compile for integrated source apportionment method" + echo $text >> $Cfile + echo "Module ${ModISAM};" >> $Cfile + echo >> $Cfile + + if ( $?DDM3D_CCTM ) then + set text = "// compile for decoupled direct method in 3d" + echo $text >> $Cfile + echo "Module ${ModDDM3D};" >> $Cfile + echo >> $Cfile + endif + + set text = "util" + echo "// options are" $text >> $Cfile + echo "Module ${ModUtil};" >> $Cfile + echo >> $Cfile + + set text = "diag" + echo "// options are" $text >> $Cfile + echo "Module ${ModDiag};" >> $Cfile + echo >> $Cfile + + set text = "stm" + echo "// options are" $text >> $Cfile + echo "Module stm;" >> $Cfile + echo >> $Cfile + + set text = "cio" + echo "// options are" $text >> $Cfile + echo "Module cio;" >> $Cfile + echo >> $Cfile + + if ( $?ModMisc ) then + echo "Module ${ModMisc};" >> $Cfile + echo >> $Cfile + endif + +# ============================================================================ +#> Create Makefile and Model Executable +# ============================================================================ + unalias mv rm + +#> Recompile BLDMAKE from source if requested or if it does not exist + if ( $?CompileBLDMAKE || ! -f $BLDER ) then + cd ${CMAQ_REPO}/UTIL/bldmake/scripts + ./bldit_bldmake.csh + endif + +#> Relocate to the BLD_* directory + cd $Bld + +#> Set multiprocessor/serial options for BLDMAKE execution + if ( $?ParOpt ) then + set Blder = "$BLDER -verbose" + else + set Blder = "$BLDER -serial -verbose" + endif + +#> Run BLDMAKE Utility + set bld_flags = "" + if ( $?MakeFileOnly ) then # Do not compile the Model + set bld_flags = "${bld_flags} -makefo" + endif + + if ( $?CopySrc ) then + set bld_flags = "${bld_flags}" + else if ( $?CopySrcTree ) then + set bld_flags = "${bld_flags} -co" + else + set bld_flags = "{bld_flags} -git_local" # Run BLDMAKE with source code in + # version-controlled git repo + # $Cfile = ${CFG}.bld + endif + + if ( $?Debug_CCTM ) then + set bld_flags = "${bld_flags} -debug_cctm" + endif + + if ( $?ISAM_CCTM ) then + set bld_flags = "${bld_flags} -isam_cctm" + endif + + if ( $?build_twoway ) then + set bld_flags = "${bld_flags} -twoway" + endif + +#> Run BLDMAKE with source code in build directory + $Blder $bld_flags $Cfile + +#> Rename Makefile to specify compiler option and link back to Makefile + if ( ! $?build_twoway ) then + mv Makefile Makefile.$compilerString + if ( -e Makefile.$compilerString && -e Makefile ) rm Makefile + ln -s Makefile.$compilerString Makefile + endif + +#> Alert user of error in BLDMAKE if it ocurred + if ( $status != 0 ) then + echo " *** failure in $Blder ***" + exit 1 + endif + +#> Preserve old Config file, if it exists, before moving new one to +#> build directory. + if ( -e "$Bld/${CFG}" ) then + echo " >>> previous ${CFG} exists, re-naming to ${CFG}.old <<<" + mv $Bld/${CFG} $Bld/${CFG}.old + endif + mv ${CFG}.bld $Bld/${CFG} + +#> If a CRACMM mechanism is used and the compiler is gcc, remove trailing +#> comments in species namelist files (or else model will not run) + if ( ${Mechanism} =~ *cracmm* && ${compiler} == gcc ) then + echo " >>> removing trailing comments from species namelists <<<" + sed -i 's/,\!.*/,/' $Bld/GC_${Mechanism}.nml + sed -i 's/,\!.*/,/' $Bld/AE_${Mechanism}.nml + sed -i 's/,\!.*/,/' $Bld/NR_${Mechanism}.nml + endif + +#> If Building WRF-CMAQ, download WRF, download auxillary files and build +#> model + if ( $?build_twoway ) then + +#> Check if the user has git installed on their system + git --version >& /dev/null + + if ($? == 0) then + set git_check + endif + + if ($?git_check) then + + cd $CMAQ_HOME/CCTM/scripts + + # Downlad WRF repository from GitHub and put CMAQv5.4 into it + set WRF_BLD = BLD_WRF${WRF_VRSN}_CCTM_${VRSN}_${compilerString} + setenv wrf_path ${CMAQ_HOME}/CCTM/scripts/${WRF_BLD} + setenv WRF_CMAQ 1 + + if ( ! -d $WRF_BLD ) then + git clone --branch ${WRF_VRSN} https://github.com/wrf-model/WRF.git ./$WRF_BLD >& /dev/null + cd $wrf_path + mv $Bld ./cmaq + + # Configure WRF + ./configure <&! cctm_Bench_2018_12SE1.log & +# +# To report problems or request help with this script/program: +# http://www.epa.gov/cmaq (EPA CMAQ Website) +# http://www.cmascenter.org (CMAS Website) +# =================================================================== + +# =================================================================== +#> Runtime Environment Options +# =================================================================== + +echo 'Start Model Run At ' `date` + +#> Toggle Diagnostic Mode which will print verbose information to +#> standard output + setenv CTM_DIAG_LVL 0 + +#> Choose compiler and set up CMAQ environment with correct +#> libraries using config.cmaq. Options: intel | gcc | pgi + if ( ! $?compiler ) then + setenv compiler gcc + endif + if ( ! $?compilerVrsn ) then + setenv compilerVrsn Empty + endif + +#> Source the config.cmaq file to set the build environment + cd ../.. + source ./config_cmaq.csh $compiler $compilerVrsn + cd CCTM/scripts + +#> Set General Parameters for Configuring the Simulation + set VRSN = v55 #> Code Version + set PROC = mpi #> serial or mpi + set MECH = cracmm2 #> Mechanism ID + set APPL = Bench_2018_12NE3_${MECH}_stage #> Application Name (e.g. Gridname) + +#> Define RUNID as any combination of parameters above or others. By default, +#> this information will be collected into this one string, $RUNID, for easy +#> referencing in output binaries and log files as well as in other scripts. + setenv RUNID ${VRSN}_${compilerString}_${APPL} + +#> Set the build directory (this is where the CMAQ executable +#> is located by default). + set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_cracmm2_stage + set EXEC = CCTM_${VRSN}.exe + +#> Output Each line of Runscript to Log File + if ( $CTM_DIAG_LVL != 0 ) set echo + +#> Set Working, Input, and Output Directories + setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. + setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory + setenv INPDIR ${CMAQ_DATA}/cmaqv55_Benchmark_version2 #Input Directory + setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location + setenv NMLpath ${BLD} #> Location of Namelists. Common places are: + #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} + + echo "" + echo "Working Directory is $WORKDIR" + echo "Build Directory is $BLD" + echo "Output Directory is $OUTDIR" + echo "Log Directory is $LOGDIR" + echo "Executable Name is $EXEC" + +# ===================================================================== +#> CCTM Configuration Options +# ===================================================================== + +#> Set Start and End Days for looping + setenv NEW_START TRUE #> Set to FALSE for model restart + set START_DATE = "2018-07-01" #> beginning date (July 1, 2016) + set END_DATE = "2018-07-02" #> ending date (July 1, 2016) + +#> Set Timestepping Parameters +set STTIME = 000000 #> beginning GMT time (HHMMSS) +set NSTEPS = 240000 #> time duration (HHMMSS) for this run +set TSTEP = 010000 #> output time step interval (HHMMSS) + +#> Horizontal domain decomposition +if ( $PROC == serial ) then + setenv NPCOL_NPROW "1 1"; set NPROCS = 1 # single processor setting +else + @ NPCOL = 8; @ NPROW = 4 + @ NPROCS = $NPCOL * $NPROW + setenv NPCOL_NPROW "$NPCOL $NPROW"; +endif + +#> Define Execution ID: e.g. [CMAQ-Version-Info]_[User]_[Date]_[Time] +if ( ! -e ${BLD}/CCTM_${VRSN}.cfg ) then + set SHAID = "" +else + set SHAID = `grep "sha_ID" ${BLD}/CCTM_${VRSN}.cfg | cut -c 13-22` + if ( $SHAID == not_a_repo ) then + set SHAID = "" + else + set SHAID = "_sha="$SHAID + endif +endif +setenv EXECUTION_ID "CMAQ_CCTM${VRSN}${SHAID}_`id -u -n`_`date -u +%Y%m%d_%H%M%S_%N`" #> Inform IO/API of the Execution ID +echo "" +echo "---CMAQ EXECUTION ID: $EXECUTION_ID ---" + +#> Keep or Delete Existing Output Files +set CLOBBER_DATA = TRUE + +#> Logfile Options +#> Master Log File Name; uncomment to write standard output to a log, otherwise write to screen +#setenv LOGFILE $CMAQ_HOME/$RUNID.log +if (! -e $LOGDIR ) then + mkdir -p $LOGDIR +endif +setenv PRINT_PROC_TIME Y #> Print timing for all science subprocesses to Logfile + #> [ default: TRUE or Y ] +setenv STDOUT T #> Override I/O-API trying to write information to both the processor + #> logs and STDOUT [ options: T | F ] + +setenv GRID_NAME 2018_12NE3 #> check GRIDDESC file for GRID_NAME options +setenv GRIDDESC $INPDIR/GRIDDESC #> grid description file + +#> Retrieve the number of columns, rows, and layers in this simulation +set NZ = 35 +set NX = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f6` +set NY = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f7` +set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` + +#> Output Species and Layer Options + #> CONC file species; comment or set to "ALL" to write all species to CONC + #setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 HCHO ISOP NH3 ANH4I ANH4J ASO4I ASO4J" + #setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC + + #> ACONC file species; comment or set to "ALL" to write all species to ACONC + #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" + setenv AVG_CONC_SPCS "ALL" + setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC + setenv AVG_FILE_ENDTIME N #> override default beginning ACONC timestamp [ default: N ] + +#> Synchronization Time Step and Tolerance Options +setenv CTM_MAXSYNC 300 #> max sync time step (sec) [ default: 720 ] +setenv CTM_MINSYNC 60 #> min sync time step (sec) [ default: 60 ] +setenv SIGMA_SYNC_TOP 0.7 #> top sigma level thru which sync step determined [ default: 0.7 ] +#setenv ADV_HDIV_LIM 0.95 #> maximum horiz. div. limit for adv step adjust [ default: 0.9 ] +setenv CTM_ADV_CFL 0.95 #> max CFL [ default: 0.75] +#setenv RB_ATOL 1.0E-09 #> global ROS3 solver absolute tolerance [ default: 1.0E-07 ] + +#> Science Options +setenv CTM_OCEAN_CHEM Y #> Flag for ocean halogen chemistry, sea spray aerosol emissions, + #> and enhanced ozone deposition over ocean waters [ default: Y ] +setenv CTM_WB_DUST N #> use inline windblown dust emissions (only for use with PX) [ default: N ] +setenv CTM_LTNG_NO N #> turn on lightning NOx [ default: N ] +setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], + #> otherwise revert to Kz0UT +setenv PX_VERSION Y #> WRF PX LSM +setenv CLM_VERSION N #> WRF CLM LSM +setenv NOAH_VERSION N #> WRF NOAH LSM +setenv CTM_ABFLUX Y #> ammonia bi-directional flux for in-line deposition + #> velocities [ default: N ] +setenv CTM_BIDI_FERT_NH3 T #> subtract fertilizer NH3 from emissions because it will be handled + #> by the BiDi calculation [ default: Y ] +setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition + #> velocities [ default: N ] +setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ] + #> please see user guide (6.10.4 Nitrous Acid (HONO)) + #> for dependency on percent urban fraction dataset +setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ] +setenv CTM_PVO3 N #> consider potential vorticity module for O3 transport from the stratosphere + #> [default: N] + +setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions with BEIS [ default: N ] +setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ] +setenv BDSNP_MEGAN N #> turns on BDSNP soil NO emissions [ default: N ] + +setenv AEROSOL_OPTICS 3 #> sets method for determining aerosol optics affecting photolysis + #> frequencies ( 3 is the default value ) + #> VALUES 1 thru 3 determined Uniformly Volume Mixed spherical + #> (1-Tabular Mie; 2-Mie Calculation; 3-Case Approx to Mie Theory) + #> VALUES 4 thru 6 attempts to use core-shell mixing model when the + #> aerosol mode has signficant black carbon core otherwise use Volume Mixed + #> model where optics determined by + #> (4-Tabular Mie; 5-Mie Calculation; 6-Case Approx to Mie Theory) + +#> Surface Tiled Aerosol and Gaseous Exchange Options +#> Only active if DepMod=stage at compile time +setenv CTM_MOSAIC N #> Output landuse specific deposition velocities [ default: N ] +setenv CTM_STAGE_P22 N #> Pleim et al. 2022 Aerosol deposition model [default: N] +setenv CTM_STAGE_E20 Y #> Emerson et al. 2020 Aerosol deposition model [default: Y] +setenv CTM_STAGE_S22 N #> Shu et al. 2022 (CMAQ v5.3) Aerosol deposition model [default: N] + +setenv IC_AERO_M2WET F #> Specify whether or not initial condition aerosol size distribution + #> is wet or dry [ default: F = dry ] +setenv BC_AERO_M2WET F #> Specify whether or not boundary condition aerosol size distribution + #> is wet or dry [ default: F = dry ] +setenv IC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from initial + #> conditions [ default: T = use aerosol surface area ] +setenv BC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from boundary + #> conditions [ default: T = use aerosol surface area ] + + +#> Vertical Extraction Options +setenv VERTEXT N +setenv VERTEXT_COORD_PATH ${WORKDIR}/lonlat.csv + +#> I/O Controls +setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ] +setenv FL_ERR_STOP N #> stop on inconsistent input files +setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ] +setenv IOAPI_OFFSET_64 YES #> support large timestep records (>2GB/timestep record) [ options: YES | NO ] +setenv IOAPI_CHECK_HEADERS N #> check file headers [ options: Y | N ] +setenv CTM_EMISCHK N #> Abort CMAQ if missing surrogates from emissions Input files + +#> Diagnostic Output Flags +setenv CTM_CKSUM Y #> checksum report [ default: Y ] +setenv CLD_DIAG N #> cloud diagnostic file [ default: N ] + +setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ] +setenv NLAYS_PHOTDIAG "1" #> Number of layers for PHOTDIAG2 and PHOTDIAG3 from + #> Layer 1 to NLAYS_PHOTDIAG [ default: all layers ] +#setenv NWAVE_PHOTDIAG "294 303 310 316 333 381 607" #> Wavelengths written for variables + #> in PHOTDIAG2 and PHOTDIAG3 + #> [ default: all wavelengths ] + +setenv CTM_SSEMDIAG N #> sea-spray emissions diagnostic file [ default: N ] +setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; + #> Ignore if CTM_WB_DUST = N +setenv CTM_DEPV_FILE N #> deposition velocities diagnostic file [ default: N ] +setenv VDIFF_DIAG_FILE N #> vdiff & possibly aero grav. sedimentation diagnostic file [ default: N ] +setenv LTNGDIAG N #> lightning diagnostic file [ default: N ] +setenv B3GTS_DIAG N #> BEIS mass emissions diagnostic file [ default: N ] +setenv CTM_WVEL Y #> save derived vertical velocity component to conc + #> file [ default: Y ] + +# ===================================================================== +#> Input Directories and Filenames +# ===================================================================== + +set ICpath = $INPDIR/icbc #> initial conditions input directory +set BCpath = $INPDIR/icbc #> boundary conditions input directory +set EMISpath = $INPDIR/emis #> gridded emissions input directory +set IN_PTpath = $INPDIR/emis #> point source emissions input directory +set IN_LTpath = $INPDIR/lightning #> lightning NOx input directory +set METpath = $INPDIR/met/mcipv5.4 #> meteorology input directory +#set JVALpath = $INPDIR/jproc #> offline photolysis rate table directory +set OMIpath = $BLD #> ozone column data for the photolysis model +set EPICpath = $INPDIR/epic #> EPIC putput for bidirectional NH3 +set SZpath = $INPDIR/surface #> surf zone file for in-line seaspray emissions + +# ===================================================================== +#> Begin Loop Through Simulation Days +# ===================================================================== +set rtarray = "" + +set TODAYG = ${START_DATE} +set TODAYJ = `date -ud "${START_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ +set START_DAY = ${TODAYJ} +set STOP_DAY = `date -ud "${END_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ +set NDAYS = 0 + +while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ + + set NDAYS = `echo "${NDAYS} + 1" | bc -l` + + #> Retrieve Calendar day Information + set YYYYMMDD = `date -ud "${TODAYG}" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD + set YYYYMM = `date -ud "${TODAYG}" +%Y%m` #> Convert YYYY-MM-DD to YYYYMM + set YYMMDD = `date -ud "${TODAYG}" +%y%m%d` #> Convert YYYY-MM-DD to YYMMDD + set MM = `date -ud "${TODAYG}" +%m` #> Convert YYYY-MM-DD to MM + set YYYYJJJ = $TODAYJ + + #> Calculate Yesterday's Date + set YESTERDAY = `date -ud "${TODAYG}-1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYJJJ + +# ===================================================================== +#> Set Output String and Propagate Model Configuration Documentation +# ===================================================================== + echo "" + echo "Set up input and output files for Day ${TODAYG}." + + #> set output file name extensions + setenv CTM_APPL ${RUNID}_${YYYYMMDD} + + #> Copy Model Configuration To Output Folder + if ( ! -d "$OUTDIR" ) mkdir -p $OUTDIR + cp $BLD/CCTM_${VRSN}.cfg $OUTDIR/CCTM_${CTM_APPL}.cfg + +# ===================================================================== +#> Input Files (Some are Day-Dependent) +# ===================================================================== + + #> Initial conditions + if ($NEW_START == true || $NEW_START == TRUE ) then + setenv ICFILE CCTM_ICON_v55_CRACMM2_STAGE_12NE3_20180701.nc + setenv INIT_MEDC_1 notused + else + set ICpath = $OUTDIR + setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc + setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc + endif + + #> Boundary conditions + set BCFILE = BCON_v55_CRACMM2_STAGE_2018_12NE3_${YYYYMMDD}.nc + + #> Off-line photolysis rates + #set JVALfile = JTABLE_${YYYYJJJ} + + #> Ozone column data + set OMIfile = OMI_1979_to_2019.dat + + #> Optics file + set OPTfile = PHOT_OPTICS.dat + + #> MCIP meteorology files + setenv GRID_BDY_2D $METpath/GRIDBDY2D_12NE3_${YYYYMMDD}.nc # GRID files are static, not day-specific + setenv GRID_CRO_2D $METpath/GRIDCRO2D_12NE3_${YYYYMMDD}.nc + setenv GRID_CRO_3D $METpath/GRIDCRO3D_12NE3_${YYYYMMDD}.nc + setenv GRID_DOT_2D $METpath/GRIDDOT2D_12NE3_${YYYYMMDD}.nc + setenv MET_CRO_2D $METpath/METCRO2D_12NE3_${YYYYMMDD}.nc + setenv MET_CRO_3D $METpath/METCRO3D_12NE3_${YYYYMMDD}.nc + setenv MET_DOT_3D $METpath/METDOT3D_12NE3_${YYYYMMDD}.nc + setenv MET_BDY_3D $METpath/METBDY3D_12NE3_${YYYYMMDD}.nc + setenv LUFRAC_CRO $METpath/LUFRAC_CRO_12NE3_${YYYYMMDD}.nc + + #> Control Files + #> + #> IMPORTANT NOTE + #> + #> The DESID control files defined below are an integral part of controlling the behavior of the model simulation. + #> Among other things, they control the mapping of species in the emission files to chemical species in the model and + #> several aspects related to the simulation of organic aerosols. + #> Please carefully review the DESID control files to ensure that they are configured to be consistent with the assumptions + #> made when creating the emission files defined below and the desired representation of organic aerosols. + #> For further information, please see: + #> + AERO7 Release Notes section on 'Required emission updates': + #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Release_Notes/aero7_overview.md + #> + CMAQ User's Guide section 6.9.3 on 'Emission Compatability': + #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.9.3_Emission_Compatability + #> + Emission Control (DESID) Documentation in the CMAQ User's Guide: + #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md + #> + setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml + setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml + + #> The following namelist configures aggregated output (via the Explicit and Lumped + #> Air Quality Model Output (ELMO) Module), domain-wide budget output, and chemical + #> family output. + setenv MISC_CTRL_NML ${BLD}/CMAQ_Control_Misc.nml + + #> The following namelist controls the mapping of meteorological land use types and the NH3 and Hg emission + #> potentials + setenv STAGECTRL_NML ${BLD}/CMAQ_Control_STAGE.nml + + #> Spatial Masks For Emissions Scaling + #setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file + setenv CMAQ_MASKS $INPDIR/surface/GRIDMASK_STATES_12NE3.nc + + #> Gridded Emissions Files + setenv N_EMIS_GR 2 + set EMISfile = emis_mole_all_${YYYYMMDD}_12NE3_nobeis_norwc_WR705_2018gc2.ncf + setenv GR_EMIS_001 ${EMISpath}/merged_nobeis_norwc/${EMISfile} + setenv GR_EMIS_LAB_001 GRIDDED_EMIS + setenv GR_EM_SYM_DATE_001 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE + + set EMISfile = emis_mole_rwc_${YYYYMMDD}_12NE3_cmaq_cracmmv2_WR705_2018gc2.ncf + setenv GR_EMIS_002 ${EMISpath}/rwc/${EMISfile} + setenv GR_EMIS_LAB_002 GR_RES_FIRES + setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE + + #> In-line point emissions configuration + setenv N_EMIS_PT 10 #> Number of elevated source groups + + set STKCASEE = 12US1_cmaq_cracmmv2_WR705_2018gc2 # In-line Emission Rate File Suffix + set STKCASEG = 12US1_WR705_2018gc2 # Stack parameter File Suffix + + # Time-Independent Stack Parameters for Inline Point Sources + setenv STK_GRPS_001 $IN_PTpath/ptnonipm/stack_groups_ptnonipm_${STKCASEG}.ncf + setenv STK_GRPS_002 $IN_PTpath/ptegu/stack_groups_ptegu_${STKCASEG}.ncf + setenv STK_GRPS_003 $IN_PTpath/othpt/stack_groups_othpt_${STKCASEG}.ncf + setenv STK_GRPS_004 $IN_PTpath/ptagfire/stack_groups_ptagfire_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_005 $IN_PTpath/ptfire_grass/stack_groups_ptfire_grass_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_006 $IN_PTpath/ptfire/stack_groups_ptfire_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_007 $IN_PTpath/ptfire_othna/stack_groups_ptfire_othna_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_008 $IN_PTpath/pt_oilgas/stack_groups_pt_oilgas_${STKCASEG}.ncf + setenv STK_GRPS_009 $IN_PTpath/cmv_c3_12/stack_groups_cmv_c3_12_${STKCASEG}.ncf + setenv STK_GRPS_010 $IN_PTpath/cmv_c1c2_12/stack_groups_cmv_c1c2_12_${STKCASEG}.ncf + + # Emission Rates for Inline Point Sources + setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_004 $IN_PTpath/ptagfire/inln_mole_ptagfire_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_005 $IN_PTpath/ptfire_grass/inln_mole_ptfire_grass_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_006 $IN_PTpath/ptfire/inln_mole_ptfire_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_007 $IN_PTpath/ptfire_othna/inln_mole_ptfire_othna_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_008 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_009 $IN_PTpath/cmv_c3_12/inln_mole_cmv_c3_12_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_010 $IN_PTpath/cmv_c1c2_12/inln_mole_cmv_c1c2_12_${YYYYMMDD}_${STKCASEE}.ncf + + # Label Each Emissions Stream + setenv STK_EMIS_LAB_001 PT_NONEGU + setenv STK_EMIS_LAB_002 PT_EGU + setenv STK_EMIS_LAB_003 PT_OTHER + setenv STK_EMIS_LAB_004 PT_AGFIRES + setenv STK_EMIS_LAB_005 PT_RXFIRES + setenv STK_EMIS_LAB_006 PT_FIRES + setenv STK_EMIS_LAB_007 PT_OTHFIRES + setenv STK_EMIS_LAB_008 PT_OILGAS + setenv STK_EMIS_LAB_009 PT_CMV_C3 + setenv STK_EMIS_LAB_010 PT_CMV_C1C2 + + # Allow CMAQ to Use Point Source files with dates that do not + # match the internal model date + # To change default behaviour please see Users Guide for EMIS_SYM_DATE + setenv STK_EM_SYM_DATE_001 F + setenv STK_EM_SYM_DATE_002 F + setenv STK_EM_SYM_DATE_003 F + setenv STK_EM_SYM_DATE_004 F + setenv STK_EM_SYM_DATE_005 F + setenv STK_EM_SYM_DATE_006 F + setenv STK_EM_SYM_DATE_007 F + setenv STK_EM_SYM_DATE_008 F + + #> Lightning NOx configuration + if ( $CTM_LTNG_NO == 'Y' ) then + setenv LTNGNO "InLine" #> set LTNGNO to "Inline" to activate in-line calculation + + #> In-line lightning NOx options + setenv USE_NLDN Y #> use hourly NLDN strike file [ default: Y ] + if ( $USE_NLDN == Y ) then + setenv NLDN_STRIKES ${IN_LTpath}/NLDN_12km_60min_${YYYYMMDD}.ioapi + endif + setenv LTNGPARMS_FILE ${IN_LTpath}/LTNG_AllParms_12NE3.nc #> lightning parameter file + endif + + #> In-line biogenic emissions configuration + if ( $CTM_BIOGEMIS_BE == 'Y' ) then + set IN_BEISpath = ${INPDIR}/surface + setenv GSPRO $BLD/gspro_biogenics.txt + setenv BEIS_NORM_EMIS $IN_BEISpath/beis4_beld6_norm_emis.12NE3.nc + setenv BEIS_SOILINP $OUTDIR/CCTM_BSOILOUT_${RUNID}_${YESTERDAY}.nc + #> Biogenic NO soil input file; ignore if NEW_START = TRUE + endif + if ( $CTM_BIOGEMIS_MG == 'Y' ) then + setenv MEGAN_SOILINP $OUTDIR/CCTM_MSOILOUT_${RUNID}_${YESTERDAY}.nc + #> Biogenic NO soil input file; ignore if INITIAL_RUN = Y + #> ; ignore if IGNORE_SOILINP = Y + setenv MEGAN_CTS $SZpath/megan3.2/CT3_CONUS.ncf + setenv MEGAN_EFS $SZpath/megan3.2/EFMAPS_CONUS.ncf + setenv MEGAN_LDF $SZpath/megan3.2/LDF_CONUS.ncf + if ($BDSNP_MEGAN == 'Y') then + setenv BDSNPINP $OUTDIR/CCTM_BDSNPOUT_${RUNID}_${YESTERDAY}.nc + setenv BDSNP_FFILE $SZpath/megan3.2/FERT_tceq_12km.ncf + setenv BDSNP_NFILE $SZpath/megan3.2/NDEP_tceq_12km.ncf + setenv BDSNP_LFILE $SZpath/megan3.2/LANDTYPE_tceq_12km.ncf + setenv BDSNP_AFILE $SZpath/megan3.2/ARID_tceq_12km.ncf + setenv BDSNP_NAFILE $SZpath/megan3.2/NONARID_tceq_12km.ncf + endif + endif + + #> In-line sea spray emissions configuration + setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file + + #> Bidirectional ammonia configuration + if ( $CTM_ABFLUX == 'Y' ) then + setenv E2C_SOIL ${EPICpath}/2018r1_EPIC0509_12NE3_soil.nc + setenv E2C_CHEM ${EPICpath}/2018r1_EPIC0509_12NE3_time${YYYYMMDD}.nc + setenv E2C_CHEM_YEST ${EPICpath}/2018r1_EPIC0509_12NE3_time${YESTERDAY}.nc + setenv E2C_LU ${EPICpath}/beld4_12NE3_2011.nc + endif + +#> Inline Process Analysis + setenv CTM_PROCAN N #> use process analysis [ default: N] + if ( $?CTM_PROCAN ) then # $CTM_PROCAN is defined + if ( $CTM_PROCAN == 'Y' || $CTM_PROCAN == 'T' ) then +#> process analysis global column, row and layer ranges +# setenv PA_BCOL_ECOL "10 90" # default: all columns +# setenv PA_BROW_EROW "10 80" # default: all rows +# setenv PA_BLEV_ELEV "1 4" # default: all levels + setenv PACM_INFILE ${NMLpath}/pa_${MECH}.ctl + setenv PACM_REPORT $OUTDIR/"PA_REPORT".${YYYYMMDD} + endif + endif + +#> Integrated Source Apportionment Method (ISAM) Options + setenv CTM_ISAM N + if ( $?CTM_ISAM ) then + if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then + setenv SA_IOLIST ${WORKDIR}/isam_control.2018_12NE3.txt + setenv ISAM_BLEV_ELEV " 1 1" + setenv AISAM_BLEV_ELEV " 1 1" + + #> Set Up ISAM Initial Condition Flags + if ($NEW_START == true || $NEW_START == TRUE ) then + setenv ISAM_NEW_START Y + setenv ISAM_PREVDAY + else + setenv ISAM_NEW_START N + setenv ISAM_PREVDAY "$OUTDIR/CCTM_SA_CGRID_${RUNID}_${YESTERDAY}.nc" + endif + + #> Set Up ISAM Output Filenames + setenv SA_ACONC_1 "$OUTDIR/CCTM_SA_ACONC_${CTM_APPL}.nc -v" + setenv SA_CONC_1 "$OUTDIR/CCTM_SA_CONC_${CTM_APPL}.nc -v" + setenv SA_DD_1 "$OUTDIR/CCTM_SA_DRYDEP_${CTM_APPL}.nc -v" + setenv SA_WD_1 "$OUTDIR/CCTM_SA_WETDEP_${CTM_APPL}.nc -v" + setenv SA_CGRID_1 "$OUTDIR/CCTM_SA_CGRID_${CTM_APPL}.nc -v" + + #> Set optional ISAM regions files + setenv ISAM_REGIONS $INPDIR/surface/GRIDMASK_STATES_12NE3.nc + + #> Options used to favor tracked species in reaction for Ozone-NOx chemistry + setenv ISAM_O3_WEIGHTS 5 # weights for tracked species Default is 5 + # OPTIONS + # 1 does not weight any species + # 2 weights NOx and subset of NOz species + # 3 uses with from option 2 plus weight OVOC species, organic radicals and operators + # 4 weight OVOC species, organic radicals and operators + # 5 toggles between two weighting set based on VOC and NOx limited ozone production + # Below options only used if ISAM_O3_WEIGHTS set to 5 + setenv ISAM_NOX_CASE 2 # weights for tracked species when ozone production is NOx limited. Default is 2 + setenv ISAM_VOC_CASE 4 # weights for tracked species when ozone production is VOC limited. Default is 4 + setenv VOC_NOX_TRANS 0.35 # value of Prod H2O2 over Prod HNO3 less than where + # ISAM_VOC_CASE weights are used. Otherwise, ISAM_NOX_CASE + # weights are used. Default is 0.35 + + endif + endif + + +#> Sulfur Tracking Model (STM) + setenv STM_SO4TRACK N #> sulfur tracking [ default: N ] + if ( $?STM_SO4TRACK ) then + if ( $STM_SO4TRACK == 'Y' || $STM_SO4TRACK == 'T' ) then + + #> option to normalize sulfate tracers [ default: Y ] + setenv STM_ADJSO4 Y + + endif + endif + +#> Decoupled Direct Method in 3D (DDM-3D) Options + setenv CTM_DDM3D N # Sets up requisite script settings for DDM-3D (default is N/F) + # Additionally requires for CCTM to be compiled for DDM-3D simulations + + set NPMAX = 1 # Number of sensitivity parameters defined in SEN_INPUT + setenv SEN_INPUT ${WORKDIR}/sensinput.2018_12NE3.dat + + setenv DDM3D_HIGH N # allow higher-order sensitivity parameters in SEN_INPUT [ T | Y | F | N ] (default is N/F) + + if ($NEW_START == true || $NEW_START == TRUE ) then + setenv DDM3D_RST N # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) + set S_ICpath = # sensitivity fields are initialized to 0.0 on the first hour of the first day + set S_ICfile = + else + setenv DDM3D_RST Y # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) + set S_ICpath = $OUTDIR + set S_ICfile = CCTM_SENGRID_${RUNID}_${YESTERDAY}.nc + endif + + setenv CTM_NPMAX $NPMAX + setenv CTM_SENS_1 "$OUTDIR/CCTM_SENGRID_${CTM_APPL}.nc -v" + setenv A_SENS_1 "$OUTDIR/CCTM_ASENS_${CTM_APPL}.nc -v" + setenv CTM_SWETDEP_1 "$OUTDIR/CCTM_SENWDEP_${CTM_APPL}.nc -v" + setenv CTM_SDRYDEP_1 "$OUTDIR/CCTM_SENDDEP_${CTM_APPL}.nc -v" + setenv INIT_SENS_1 $S_ICpath/$S_ICfile + + +# ===================================================================== +#> Output Files +# ===================================================================== + + #> set output file names + setenv S_CGRID "$OUTDIR/CCTM_CGRID_${CTM_APPL}.nc" #> 3D Inst. Concentrations + setenv CTM_CONC_1 "$OUTDIR/CCTM_CONC_${CTM_APPL}.nc -v" #> On-Hour Concentrations + setenv A_CONC_1 "$OUTDIR/CCTM_ACONC_${CTM_APPL}.nc -v" #> Hourly Avg. Concentrations + setenv MEDIA_CONC "$OUTDIR/CCTM_MEDIA_CONC_${CTM_APPL}.nc -v" #> NH3 Conc. in Media + setenv CTM_DRY_DEP_1 "$OUTDIR/CCTM_DRYDEP_${CTM_APPL}.nc -v" #> Hourly Dry Deposition + setenv CTM_DEPV_DIAG "$OUTDIR/CCTM_DEPV_${CTM_APPL}.nc -v" #> Dry Deposition Velocities + setenv B3GTS_S "$OUTDIR/CCTM_B3GTS_S_${CTM_APPL}.nc -v" #> Biogenic Emissions + setenv BEIS_SOILOUT "$OUTDIR/CCTM_BSOILOUT_${CTM_APPL}.nc" #> Soil Emissions + setenv MEGAN_SOILOUT "$OUTDIR/CCTM_MSOILOUT_${CTM_APPL}.nc" #> Soil Emissions + setenv BDSNPOUT "$OUTDIR/CCTM_BDSNPOUT_${CTM_APPL}.nc" #> Soil Emissions + setenv CTM_WET_DEP_1 "$OUTDIR/CCTM_WETDEP1_${CTM_APPL}.nc -v" #> Wet Dep From All Clouds + setenv CTM_WET_DEP_2 "$OUTDIR/CCTM_WETDEP2_${CTM_APPL}.nc -v" #> Wet Dep From SubGrid Clouds + setenv CTM_ELMO_1 "$OUTDIR/CCTM_ELMO_${CTM_APPL}.nc -v" #> On-Hour Particle Diagnostics + setenv CTM_AELMO_1 "$OUTDIR/CCTM_AELMO_${CTM_APPL}.nc -v" #> Hourly Avg. Particle Diagnostics + setenv CTM_RJ_1 "$OUTDIR/CCTM_PHOTDIAG1_${CTM_APPL}.nc -v" #> 2D Surface Summary from Inline Photolysis + setenv CTM_RJ_2 "$OUTDIR/CCTM_PHOTDIAG2_${CTM_APPL}.nc -v" #> 3D Photolysis Rates + setenv CTM_RJ_3 "$OUTDIR/CCTM_PHOTDIAG3_${CTM_APPL}.nc -v" #> 3D Optical and Radiative Results from Photolysis + setenv CTM_SSEMIS_1 "$OUTDIR/CCTM_SSEMIS_${CTM_APPL}.nc -v" #> Sea Spray Emissions + setenv CTM_DUST_EMIS_1 "$OUTDIR/CCTM_DUSTEMIS_${CTM_APPL}.nc -v" #> Dust Emissions + setenv CTM_BUDGET "$OUTDIR/CCTM_BUDGET_${CTM_APPL}.txt -v" #> Budget [Default Off] + setenv CTM_IPR_1 "$OUTDIR/CCTM_PA_1_${CTM_APPL}.nc -v" #> Process Analysis + setenv CTM_IPR_2 "$OUTDIR/CCTM_PA_2_${CTM_APPL}.nc -v" #> Process Analysis + setenv CTM_IPR_3 "$OUTDIR/CCTM_PA_3_${CTM_APPL}.nc -v" #> Process Analysis + setenv CTM_IRR_1 "$OUTDIR/CCTM_IRR_1_${CTM_APPL}.nc -v" #> Chem Process Analysis + setenv CTM_IRR_2 "$OUTDIR/CCTM_IRR_2_${CTM_APPL}.nc -v" #> Chem Process Analysis + setenv CTM_IRR_3 "$OUTDIR/CCTM_IRR_3_${CTM_APPL}.nc -v" #> Chem Process Analysis + setenv CTM_DRY_DEP_MOS "$OUTDIR/CCTM_DDMOS_${CTM_APPL}.nc -v" #> Dry Dep + setenv CTM_DEPV_MOS "$OUTDIR/CCTM_DEPVMOS_${CTM_APPL}.nc -v" #> Dry Dep Velocity + setenv CTM_VDIFF_DIAG "$OUTDIR/CCTM_VDIFF_DIAG_${CTM_APPL}.nc -v" #> Vertical Dispersion Diagnostic + setenv CTM_VSED_DIAG "$OUTDIR/CCTM_VSED_DIAG_${CTM_APPL}.nc -v" #> Particle Grav. Settling Velocity + setenv CTM_LTNGDIAG_1 "$OUTDIR/CCTM_LTNGHRLY_${CTM_APPL}.nc -v" #> Hourly Avg Lightning NO + setenv CTM_LTNGDIAG_2 "$OUTDIR/CCTM_LTNGCOL_${CTM_APPL}.nc -v" #> Column Total Lightning NO + setenv CTM_VEXT_1 "$OUTDIR/CCTM_VEXT_${CTM_APPL}.nc -v" #> On-Hour 3D Concs at select sites + + #> set floor file (neg concs) + setenv FLOOR_FILE ${OUTDIR}/FLOOR_${CTM_APPL}.txt + + #> look for existing log files and output files + ( ls CTM_LOG_???.${CTM_APPL} > buff.txt ) >& /dev/null + ( ls ${LOGDIR}/CTM_LOG_???.${CTM_APPL} >> buff.txt ) >& /dev/null + set log_test = `cat buff.txt`; rm -f buff.txt + + set OUT_FILES = (${FLOOR_FILE} ${S_CGRID} ${CTM_CONC_1} ${A_CONC_1} ${MEDIA_CONC} \ + ${CTM_DRY_DEP_1} $CTM_DEPV_DIAG $B3GTS_S $MEGAN_SOILOUT $BEIS_SOILOUT $BDSNPOUT \ + $CTM_WET_DEP_1 $CTM_WET_DEP_2 $CTM_ELMO_1 $CTM_AELMO_1 \ + $CTM_RJ_1 $CTM_RJ_2 $CTM_RJ_3 $CTM_SSEMIS_1 $CTM_DUST_EMIS_1 $CTM_IPR_1 $CTM_IPR_2 \ + $CTM_IPR_3 $CTM_BUDGET $CTM_IRR_1 $CTM_IRR_2 $CTM_IRR_3 $CTM_DRY_DEP_MOS \ + $CTM_DEPV_MOS $CTM_VDIFF_DIAG $CTM_VSED_DIAG $CTM_LTNGDIAG_1 $CTM_LTNGDIAG_2 $CTM_VEXT_1 ) + if ( $?CTM_ISAM ) then + if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then + set OUT_FILES = (${OUT_FILES} ${SA_ACONC_1} ${SA_CONC_1} ${SA_DD_1} ${SA_WD_1} \ + ${SA_CGRID_1} ) + endif + endif + if ( $?CTM_DDM3D ) then + if ( $CTM_DDM3D == 'Y' || $CTM_DDM3D == 'T' ) then + set OUT_FILES = (${OUT_FILES} ${CTM_SENS_1} ${A_SENS_1} ${CTM_SWETDEP_1} ${CTM_SDRYDEP_1} ) + endif + endif + set OUT_FILES = `echo $OUT_FILES | sed "s; -v;;g" | sed "s;MPI:;;g" ` + ( ls $OUT_FILES > buff.txt ) >& /dev/null + set out_test = `cat buff.txt`; rm -f buff.txt + + #> delete previous output if requested + if ( $CLOBBER_DATA == true || $CLOBBER_DATA == TRUE ) then + echo + echo "Existing Logs and Output Files for Day ${TODAYG} Will Be Deleted" + + #> remove previous log files + foreach file ( ${log_test} ) + #echo "Deleting log file: $file" + /bin/rm -f $file + end + + #> remove previous output files + foreach file ( ${out_test} ) + #echo "Deleting output file: $file" + /bin/rm -f $file + end + /bin/rm -f ${OUTDIR}/CCTM_DESID*${CTM_APPL}.nc + + else + #> error if previous log files exist + if ( "$log_test" != "" ) then + echo "*** Logs exist - run ABORTED ***" + echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" + echo "*** and these files will be automatically deleted. ***" + exit 1 + endif + + #> error if previous output files exist + if ( "$out_test" != "" ) then + echo "*** Output Files Exist - run will be ABORTED ***" + foreach file ( $out_test ) + echo " cannot delete $file" + end + echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" + echo "*** and these files will be automatically deleted. ***" + exit 1 + endif + endif + + #> for the run control ... + setenv CTM_STDATE $YYYYJJJ + setenv CTM_STTIME $STTIME + setenv CTM_RUNLEN $NSTEPS + setenv CTM_TSTEP $TSTEP + setenv INIT_CONC_1 $ICpath/$ICFILE + setenv BNDY_CONC_1 $BCpath/$BCFILE + setenv OMI $OMIpath/$OMIfile + setenv MIE_TABLE $OUTDIR/mie_table_coeffs_${compilerString}.txt + setenv OPTICS_DATA $OMIpath/$OPTfile + #setenv XJ_DATA $JVALpath/$JVALfile + + #> species defn & photolysis + setenv gc_matrix_nml ${NMLpath}/GC_$MECH.nml + setenv ae_matrix_nml ${NMLpath}/AE_$MECH.nml + setenv nr_matrix_nml ${NMLpath}/NR_$MECH.nml + setenv tr_matrix_nml ${NMLpath}/Species_Table_TR_0.nml + + #> check for photolysis input data + setenv CSQY_DATA ${NMLpath}/CSQY_DATA_$MECH + + if (! (-e $CSQY_DATA ) ) then + echo " $CSQY_DATA not found " + exit 1 + endif + if (! (-e $OPTICS_DATA ) ) then + echo " $OPTICS_DATA not found " + exit 1 + endif + +# =================================================================== +#> Execution Portion +# =================================================================== + + #> Print attributes of the executable + if ( $CTM_DIAG_LVL != 0 ) then + ls -l $BLD/$EXEC + size $BLD/$EXEC + unlimit + limit + endif + + #> Print Startup Dialogue Information to Standard Out + echo + echo "CMAQ Processing of Day $YYYYMMDD Began at `date`" + echo + + #> Executable call for single PE, uncomment to invoke + #( /usr/bin/time -p $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt + + #> Executable call for multi PE, configure for your system + # set MPI = /usr/local/intel/impi/3.2.2.006/bin64 + # set MPIRUN = $MPI/mpirun + ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt + + #> Harvest Timing Output so that it may be reported below + set rtarray = "${rtarray} `tail -3 buff_${EXECUTION_ID}.txt | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | head -1` " + rm -rf buff_${EXECUTION_ID}.txt + + #> Abort script if abnormal termination + if ( ! -e $OUTDIR/CCTM_CGRID_${CTM_APPL}.nc ) then + echo "" + echo "**************************************************************" + echo "** Runscript Detected an Error: CGRID file was not written. **" + echo "** This indicates that CMAQ was interrupted or an issue **" + echo "** exists with writing output. The runscript will now **" + echo "** abort rather than proceeding to subsequent days. **" + echo "**************************************************************" + break + endif + + #> Print Concluding Text + echo + echo "CMAQ Processing of Day $YYYYMMDD Finished at `date`" + echo + echo "\\\\\=====\\\\\=====\\\\\=====\\\\\=====/////=====/////=====/////=====/////" + echo + +# =================================================================== +#> Finalize Run for This Day and Loop to Next Day +# =================================================================== + + #> Save Log Files and Move on to Next Simulation Day + mv CTM_LOG_???.${CTM_APPL} $LOGDIR + if ( $CTM_DIAG_LVL != 0 ) then + mv CTM_DIAG_???.${CTM_APPL} $LOGDIR + endif + + #> The next simulation day will, by definition, be a restart + setenv NEW_START false + + #> Increment both Gregorian and Julian Days + set TODAYG = `date -ud "${TODAYG}+1days" +%Y-%m-%d` #> Add a day for tomorrow + set TODAYJ = `date -ud "${TODAYG}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ + +end #Loop to the next Simulation Day + +# =================================================================== +#> Generate Timing Report +# =================================================================== +set RTMTOT = 0 +foreach it ( `seq ${NDAYS}` ) + set rt = `echo ${rtarray} | cut -d' ' -f${it}` + set RTMTOT = `echo "${RTMTOT} + ${rt}" | bc -l` +end + +set RTMAVG = `echo "scale=2; ${RTMTOT} / ${NDAYS}" | bc -l` +set RTMTOT = `echo "scale=2; ${RTMTOT} / 1" | bc -l` + +echo +echo "==================================" +echo " ***** CMAQ TIMING REPORT *****" +echo "==================================" +echo "Start Day: ${START_DATE}" +echo "End Day: ${END_DATE}" +echo "Number of Simulation Days: ${NDAYS}" +echo "Domain Name: ${GRID_NAME}" +echo "Number of Grid Cells: ${NCELLS} (ROW x COL x LAY)" +echo "Number of Layers: ${NZ}" +echo "Number of Processes: ${NPROCS}" +echo " All times are in seconds." +echo +echo "Num Day Wall Time" +set d = 0 +set day = ${START_DATE} +foreach it ( `seq ${NDAYS}` ) + # Set the right day and format it + set d = `echo "${d} + 1" | bc -l` + set n = `printf "%02d" ${d}` + + # Choose the correct time variables + set rt = `echo ${rtarray} | cut -d' ' -f${it}` + + # Write out row of timing data + echo "${n} ${day} ${rt}" + + # Increment day for next loop + set day = `date -ud "${day}+1days" +%Y-%m-%d` +end +echo " Total Time = ${RTMTOT}" +echo " Avg. Time = ${RTMAVG}" + +exit diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_ISAM.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_ISAM.csh new file mode 100755 index 000000000..3654ab145 --- /dev/null +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_ISAM.csh @@ -0,0 +1,826 @@ +#!/bin/csh -f +#SBATCH -J CMAQ +#SBATCH --nodes=2 +#SBATCH --ntasks-per-node=16 +#SBATCH --time=2:00:00 +#SBATCH -p debug_queue +##SBATCH -p 528_queue +#SBATCH -o /proj/ie/proj/CMAS/CMAQ/CMAQv5.5_testing/CMAQ_v5.5/CCTM/scripts/cmaq_cracmm2_stage_ISAM_%j.txt + + +# ===================== CCTMv5.5.X Run Script ========================= +# Usage: run.cctm >&! cctm_Bench_2018_12SE1.log & +# +# To report problems or request help with this script/program: +# http://www.epa.gov/cmaq (EPA CMAQ Website) +# http://www.cmascenter.org (CMAS Website) +# =================================================================== + +# =================================================================== +#> Runtime Environment Options +# =================================================================== + +echo 'Start Model Run At ' `date` + +#> Toggle Diagnostic Mode which will print verbose information to +#> standard output + setenv CTM_DIAG_LVL 0 + +#> Choose compiler and set up CMAQ environment with correct +#> libraries using config.cmaq. Options: intel | gcc | pgi + if ( ! $?compiler ) then + setenv compiler gcc + endif + if ( ! $?compilerVrsn ) then + setenv compilerVrsn Empty + endif + +#> Source the config.cmaq file to set the build environment + cd ../.. + source ./config_cmaq.csh $compiler $compilerVrsn + cd CCTM/scripts + +#> Set General Parameters for Configuring the Simulation + set VRSN = v55_ISAM #> Code Version + set PROC = mpi #> serial or mpi + set MECH = cracmm2 #> Mechanism ID + set APPL = Bench_2018_12NE3_${MECH}_stage #> Application Name (e.g. Gridname) + +#> Define RUNID as any combination of parameters above or others. By default, +#> this information will be collected into this one string, $RUNID, for easy +#> referencing in output binaries and log files as well as in other scripts. + setenv RUNID ${VRSN}_${compilerString}_${APPL} + +#> Set the build directory (this is where the CMAQ executable +#> is located by default). + set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${MECH}_stage + set EXEC = CCTM_${VRSN}.exe + +#> Output Each line of Runscript to Log File + if ( $CTM_DIAG_LVL != 0 ) set echo + +#> Set Working, Input, and Output Directories + setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. + setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory + setenv INPDIR ${CMAQ_DATA}/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input/2018_12NE3 #Input Directory + setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location + setenv NMLpath ${BLD} #> Location of Namelists. Common places are: + #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} + + echo "" + echo "Working Directory is $WORKDIR" + echo "Build Directory is $BLD" + echo "Output Directory is $OUTDIR" + echo "Log Directory is $LOGDIR" + echo "Executable Name is $EXEC" + +# ===================================================================== +#> CCTM Configuration Options +# ===================================================================== + +#> Set Start and End Days for looping + setenv NEW_START TRUE #> Set to FALSE for model restart + set START_DATE = "2018-07-01" #> beginning date (July 1, 2016) + set END_DATE = "2018-07-02" #> ending date (July 1, 2016) + +#> Set Timestepping Parameters +set STTIME = 000000 #> beginning GMT time (HHMMSS) +set NSTEPS = 240000 #> time duration (HHMMSS) for this run +set TSTEP = 010000 #> output time step interval (HHMMSS) + +#> Horizontal domain decomposition +if ( $PROC == serial ) then + setenv NPCOL_NPROW "1 1"; set NPROCS = 1 # single processor setting +else + @ NPCOL = 8; @ NPROW = 4 + @ NPROCS = $NPCOL * $NPROW + setenv NPCOL_NPROW "$NPCOL $NPROW"; +endif + +#> Define Execution ID: e.g. [CMAQ-Version-Info]_[User]_[Date]_[Time] +if ( ! -e ${BLD}/CCTM_${VRSN}.cfg ) then + set SHAID = "" +else + set SHAID = `grep "sha_ID" ${BLD}/CCTM_${VRSN}.cfg | cut -c 13-22` + if ( $SHAID == not_a_repo ) then + set SHAID = "" + else + set SHAID = "_sha="$SHAID + endif +endif +setenv EXECUTION_ID "CMAQ_CCTM${VRSN}${SHAID}_`id -u -n`_`date -u +%Y%m%d_%H%M%S_%N`" #> Inform IO/API of the Execution ID +echo "" +echo "---CMAQ EXECUTION ID: $EXECUTION_ID ---" + +#> Keep or Delete Existing Output Files +set CLOBBER_DATA = TRUE + +#> Logfile Options +#> Master Log File Name; uncomment to write standard output to a log, otherwise write to screen +#setenv LOGFILE $CMAQ_HOME/$RUNID.log +if (! -e $LOGDIR ) then + mkdir -p $LOGDIR +endif +setenv PRINT_PROC_TIME Y #> Print timing for all science subprocesses to Logfile + #> [ default: TRUE or Y ] +setenv STDOUT T #> Override I/O-API trying to write information to both the processor + #> logs and STDOUT [ options: T | F ] + +setenv GRID_NAME 2018_12NE3 #> check GRIDDESC file for GRID_NAME options +setenv GRIDDESC $INPDIR/GRIDDESC #> grid description file + +#> Retrieve the number of columns, rows, and layers in this simulation +set NZ = 35 +set NX = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f6` +set NY = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f7` +set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` + +#> Output Species and Layer Options + #> CONC file species; comment or set to "ALL" to write all species to CONC + #setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 HCHO ISOP NH3 ANH4I ANH4J ASO4I ASO4J" + #setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC + + #> ACONC file species; comment or set to "ALL" to write all species to ACONC + #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" + setenv AVG_CONC_SPCS "ALL" + setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC + setenv AVG_FILE_ENDTIME N #> override default beginning ACONC timestamp [ default: N ] + +#> Synchronization Time Step and Tolerance Options +setenv CTM_MAXSYNC 300 #> max sync time step (sec) [ default: 720 ] +setenv CTM_MINSYNC 60 #> min sync time step (sec) [ default: 60 ] +setenv SIGMA_SYNC_TOP 0.7 #> top sigma level thru which sync step determined [ default: 0.7 ] +#setenv ADV_HDIV_LIM 0.95 #> maximum horiz. div. limit for adv step adjust [ default: 0.9 ] +setenv CTM_ADV_CFL 0.95 #> max CFL [ default: 0.75] +#setenv RB_ATOL 1.0E-09 #> global ROS3 solver absolute tolerance [ default: 1.0E-07 ] + +#> Science Options +setenv CTM_OCEAN_CHEM Y #> Flag for ocean halogen chemistry, sea spray aerosol emissions, + #> and enhanced ozone deposition over ocean waters [ default: Y ] +setenv CTM_WB_DUST N #> use inline windblown dust emissions (only for use with PX) [ default: N ] +setenv CTM_LTNG_NO N #> turn on lightning NOx [ default: N ] +setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], + #> otherwise revert to Kz0UT +setenv PX_VERSION Y #> WRF PX LSM +setenv CLM_VERSION N #> WRF CLM LSM +setenv NOAH_VERSION N #> WRF NOAH LSM +setenv CTM_ABFLUX Y #> ammonia bi-directional flux for in-line deposition + #> velocities [ default: N ] +setenv CTM_BIDI_FERT_NH3 T #> subtract fertilizer NH3 from emissions because it will be handled + #> by the BiDi calculation [ default: Y ] +setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition + #> velocities [ default: N ] +setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ] + #> please see user guide (6.10.4 Nitrous Acid (HONO)) + #> for dependency on percent urban fraction dataset +setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ] +setenv CTM_PVO3 N #> consider potential vorticity module for O3 transport from the stratosphere + #> [default: N] + +setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions with BEIS [ default: N ] +setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ] +setenv BDSNP_MEGAN N #> turns on BDSNP soil NO emissions [ default: N ] + +setenv AEROSOL_OPTICS 3 #> sets method for determining aerosol optics affecting photolysis + #> frequencies ( 3 is the default value ) + #> VALUES 1 thru 3 determined Uniformly Volume Mixed spherical + #> (1-Tabular Mie; 2-Mie Calculation; 3-Case Approx to Mie Theory) + #> VALUES 4 thru 6 attempts to use core-shell mixing model when the + #> aerosol mode has signficant black carbon core otherwise use Volume Mixed + #> model where optics determined by + #> (4-Tabular Mie; 5-Mie Calculation; 6-Case Approx to Mie Theory) + +#> Surface Tiled Aerosol and Gaseous Exchange Options +#> Only active if DepMod=stage at compile time +setenv CTM_MOSAIC N #> Output landuse specific deposition velocities [ default: N ] +setenv CTM_STAGE_P22 N #> Pleim et al. 2022 Aerosol deposition model [default: N] +setenv CTM_STAGE_E20 Y #> Emerson et al. 2020 Aerosol deposition model [default: Y] +setenv CTM_STAGE_S22 N #> Shu et al. 2022 (CMAQ v5.3) Aerosol deposition model [default: N] + +setenv IC_AERO_M2WET F #> Specify whether or not initial condition aerosol size distribution + #> is wet or dry [ default: F = dry ] +setenv BC_AERO_M2WET F #> Specify whether or not boundary condition aerosol size distribution + #> is wet or dry [ default: F = dry ] +setenv IC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from initial + #> conditions [ default: T = use aerosol surface area ] +setenv BC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from boundary + #> conditions [ default: T = use aerosol surface area ] + + +#> Vertical Extraction Options +setenv VERTEXT N +setenv VERTEXT_COORD_PATH ${WORKDIR}/lonlat.csv + +#> I/O Controls +setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ] +setenv FL_ERR_STOP N #> stop on inconsistent input files +setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ] +setenv IOAPI_OFFSET_64 YES #> support large timestep records (>2GB/timestep record) [ options: YES | NO ] +setenv IOAPI_CHECK_HEADERS N #> check file headers [ options: Y | N ] +setenv CTM_EMISCHK N #> Abort CMAQ if missing surrogates from emissions Input files + +#> Diagnostic Output Flags +setenv CTM_CKSUM Y #> checksum report [ default: Y ] +setenv CLD_DIAG N #> cloud diagnostic file [ default: N ] + +setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ] +setenv NLAYS_PHOTDIAG "1" #> Number of layers for PHOTDIAG2 and PHOTDIAG3 from + #> Layer 1 to NLAYS_PHOTDIAG [ default: all layers ] +#setenv NWAVE_PHOTDIAG "294 303 310 316 333 381 607" #> Wavelengths written for variables + #> in PHOTDIAG2 and PHOTDIAG3 + #> [ default: all wavelengths ] + +setenv CTM_SSEMDIAG N #> sea-spray emissions diagnostic file [ default: N ] +setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; + #> Ignore if CTM_WB_DUST = N +setenv CTM_DEPV_FILE N #> deposition velocities diagnostic file [ default: N ] +setenv VDIFF_DIAG_FILE N #> vdiff & possibly aero grav. sedimentation diagnostic file [ default: N ] +setenv LTNGDIAG N #> lightning diagnostic file [ default: N ] +setenv B3GTS_DIAG N #> BEIS mass emissions diagnostic file [ default: N ] +setenv CTM_WVEL Y #> save derived vertical velocity component to conc + #> file [ default: Y ] + +# ===================================================================== +#> Input Directories and Filenames +# ===================================================================== + +set ICpath = $INPDIR/icbc #> initial conditions input directory +set BCpath = $INPDIR/icbc #> boundary conditions input directory +set EMISpath = $INPDIR/emis #> gridded emissions input directory +set IN_PTpath = $INPDIR/emis #> point source emissions input directory +set IN_LTpath = $INPDIR/lightning #> lightning NOx input directory +set METpath = $INPDIR/met/mcipv5.4 #> meteorology input directory +#set JVALpath = $INPDIR/jproc #> offline photolysis rate table directory +set OMIpath = $BLD #> ozone column data for the photolysis model +set EPICpath = $INPDIR/epic #> EPIC putput for bidirectional NH3 +set SZpath = $INPDIR/surface #> surf zone file for in-line seaspray emissions + +# ===================================================================== +#> Begin Loop Through Simulation Days +# ===================================================================== +set rtarray = "" + +set TODAYG = ${START_DATE} +set TODAYJ = `date -ud "${START_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ +set START_DAY = ${TODAYJ} +set STOP_DAY = `date -ud "${END_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ +set NDAYS = 0 + +while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ + + set NDAYS = `echo "${NDAYS} + 1" | bc -l` + + #> Retrieve Calendar day Information + set YYYYMMDD = `date -ud "${TODAYG}" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD + set YYYYMM = `date -ud "${TODAYG}" +%Y%m` #> Convert YYYY-MM-DD to YYYYMM + set YYMMDD = `date -ud "${TODAYG}" +%y%m%d` #> Convert YYYY-MM-DD to YYMMDD + set MM = `date -ud "${TODAYG}" +%m` #> Convert YYYY-MM-DD to MM + set YYYYJJJ = $TODAYJ + + #> Calculate Yesterday's Date + set YESTERDAY = `date -ud "${TODAYG}-1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYJJJ + +# ===================================================================== +#> Set Output String and Propagate Model Configuration Documentation +# ===================================================================== + echo "" + echo "Set up input and output files for Day ${TODAYG}." + + #> set output file name extensions + setenv CTM_APPL ${RUNID}_${YYYYMMDD} + + #> Copy Model Configuration To Output Folder + if ( ! -d "$OUTDIR" ) mkdir -p $OUTDIR + cp $BLD/CCTM_${VRSN}.cfg $OUTDIR/CCTM_${CTM_APPL}.cfg + +# ===================================================================== +#> Input Files (Some are Day-Dependent) +# ===================================================================== + + #> Initial conditions + if ($NEW_START == true || $NEW_START == TRUE ) then + setenv ICFILE CCTM_ICON_v55_CRACMM2_STAGE_12NE3_20180701.nc + setenv INIT_MEDC_1 notused + else + set ICpath = $OUTDIR + setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc + setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc + endif + + #> Boundary conditions + set BCFILE = BCON_v55_CRACMM2_STAGE_2018_12NE3_${YYYYMMDD}.nc + + #> Off-line photolysis rates + #set JVALfile = JTABLE_${YYYYJJJ} + + #> Ozone column data + set OMIfile = OMI_1979_to_2019.dat + + #> Optics file + set OPTfile = PHOT_OPTICS.dat + + #> MCIP meteorology files + setenv GRID_BDY_2D $METpath/GRIDBDY2D_12NE3_${YYYYMMDD}.nc # GRID files are static, not day-specific + setenv GRID_CRO_2D $METpath/GRIDCRO2D_12NE3_${YYYYMMDD}.nc + setenv GRID_CRO_3D $METpath/GRIDCRO3D_12NE3_${YYYYMMDD}.nc + setenv GRID_DOT_2D $METpath/GRIDDOT2D_12NE3_${YYYYMMDD}.nc + setenv MET_CRO_2D $METpath/METCRO2D_12NE3_${YYYYMMDD}.nc + setenv MET_CRO_3D $METpath/METCRO3D_12NE3_${YYYYMMDD}.nc + setenv MET_DOT_3D $METpath/METDOT3D_12NE3_${YYYYMMDD}.nc + setenv MET_BDY_3D $METpath/METBDY3D_12NE3_${YYYYMMDD}.nc + setenv LUFRAC_CRO $METpath/LUFRAC_CRO_12NE3_${YYYYMMDD}.nc + + #> Control Files + #> + #> IMPORTANT NOTE + #> + #> The DESID control files defined below are an integral part of controlling the behavior of the model simulation. + #> Among other things, they control the mapping of species in the emission files to chemical species in the model and + #> several aspects related to the simulation of organic aerosols. + #> Please carefully review the DESID control files to ensure that they are configured to be consistent with the assumptions + #> made when creating the emission files defined below and the desired representation of organic aerosols. + #> For further information, please see: + #> + AERO7 Release Notes section on 'Required emission updates': + #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Release_Notes/aero7_overview.md + #> + CMAQ User's Guide section 6.9.3 on 'Emission Compatability': + #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.9.3_Emission_Compatability + #> + Emission Control (DESID) Documentation in the CMAQ User's Guide: + #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md + #> + setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml + setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml + + #> The following namelist configures aggregated output (via the Explicit and Lumped + #> Air Quality Model Output (ELMO) Module), domain-wide budget output, and chemical + #> family output. + setenv MISC_CTRL_NML ${BLD}/CMAQ_Control_Misc.nml + + #> The following namelist controls the mapping of meteorological land use types and the NH3 and Hg emission + #> potentials + setenv STAGECTRL_NML ${BLD}/CMAQ_Control_STAGE.nml + + #> Spatial Masks For Emissions Scaling + #setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file + setenv CMAQ_MASKS $INPDIR/surface/GRIDMASK_STATES_12NE3.nc + + #> Gridded Emissions Files + setenv N_EMIS_GR 2 + set EMISfile = emis_mole_all_${YYYYMMDD}_12NE3_nobeis_norwc_WR705_2018gc2.ncf + setenv GR_EMIS_001 ${EMISpath}/merged_nobeis_norwc/${EMISfile} + setenv GR_EMIS_LAB_001 GRIDDED_EMIS + setenv GR_EM_SYM_DATE_001 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE + + set EMISfile = emis_mole_rwc_${YYYYMMDD}_12NE3_cmaq_cracmmv2_WR705_2018gc2.ncf + setenv GR_EMIS_002 ${EMISpath}/rwc/${EMISfile} + setenv GR_EMIS_LAB_002 GR_RES_FIRES + setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE + + #> In-line point emissions configuration + setenv N_EMIS_PT 10 #> Number of elevated source groups + + set STKCASEE = 12US1_cmaq_cracmmv2_WR705_2018gc2 # In-line Emission Rate File Suffix + set STKCASEG = 12US1_WR705_2018gc2 # Stack parameter File Suffix + + # Time-Independent Stack Parameters for Inline Point Sources + setenv STK_GRPS_001 $IN_PTpath/ptnonipm/stack_groups_ptnonipm_${STKCASEG}.ncf + setenv STK_GRPS_002 $IN_PTpath/ptegu/stack_groups_ptegu_${STKCASEG}.ncf + setenv STK_GRPS_003 $IN_PTpath/othpt/stack_groups_othpt_${STKCASEG}.ncf + setenv STK_GRPS_004 $IN_PTpath/ptagfire/stack_groups_ptagfire_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_005 $IN_PTpath/ptfire_grass/stack_groups_ptfire_grass_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_006 $IN_PTpath/ptfire/stack_groups_ptfire_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_007 $IN_PTpath/ptfire_othna/stack_groups_ptfire_othna_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_008 $IN_PTpath/pt_oilgas/stack_groups_pt_oilgas_${STKCASEG}.ncf + setenv STK_GRPS_009 $IN_PTpath/cmv_c3_12/stack_groups_cmv_c3_12_${STKCASEG}.ncf + setenv STK_GRPS_010 $IN_PTpath/cmv_c1c2_12/stack_groups_cmv_c1c2_12_${STKCASEG}.ncf + + # Emission Rates for Inline Point Sources + setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_004 $IN_PTpath/ptagfire/inln_mole_ptagfire_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_005 $IN_PTpath/ptfire_grass/inln_mole_ptfire_grass_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_006 $IN_PTpath/ptfire/inln_mole_ptfire_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_007 $IN_PTpath/ptfire_othna/inln_mole_ptfire_othna_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_008 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_009 $IN_PTpath/cmv_c3_12/inln_mole_cmv_c3_12_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_010 $IN_PTpath/cmv_c1c2_12/inln_mole_cmv_c1c2_12_${YYYYMMDD}_${STKCASEE}.ncf + + # Label Each Emissions Stream + setenv STK_EMIS_LAB_001 PT_NONEGU + setenv STK_EMIS_LAB_002 PT_EGU + setenv STK_EMIS_LAB_003 PT_OTHER + setenv STK_EMIS_LAB_004 PT_AGFIRES + setenv STK_EMIS_LAB_005 PT_RXFIRES + setenv STK_EMIS_LAB_006 PT_FIRES + setenv STK_EMIS_LAB_007 PT_OTHFIRES + setenv STK_EMIS_LAB_008 PT_OILGAS + setenv STK_EMIS_LAB_009 PT_CMV_C3 + setenv STK_EMIS_LAB_010 PT_CMV_C1C2 + + # Allow CMAQ to Use Point Source files with dates that do not + # match the internal model date + # To change default behaviour please see Users Guide for EMIS_SYM_DATE + setenv STK_EM_SYM_DATE_001 F + setenv STK_EM_SYM_DATE_002 F + setenv STK_EM_SYM_DATE_003 F + setenv STK_EM_SYM_DATE_004 F + setenv STK_EM_SYM_DATE_005 F + setenv STK_EM_SYM_DATE_006 F + setenv STK_EM_SYM_DATE_007 F + setenv STK_EM_SYM_DATE_008 F + + #> Lightning NOx configuration + if ( $CTM_LTNG_NO == 'Y' ) then + setenv LTNGNO "InLine" #> set LTNGNO to "Inline" to activate in-line calculation + + #> In-line lightning NOx options + setenv USE_NLDN Y #> use hourly NLDN strike file [ default: Y ] + if ( $USE_NLDN == Y ) then + setenv NLDN_STRIKES ${IN_LTpath}/NLDN_12km_60min_${YYYYMMDD}.ioapi + endif + setenv LTNGPARMS_FILE ${IN_LTpath}/LTNG_AllParms_12NE3.nc #> lightning parameter file + endif + + #> In-line biogenic emissions configuration + if ( $CTM_BIOGEMIS_BE == 'Y' ) then + set IN_BEISpath = ${INPDIR}/surface + setenv GSPRO $BLD/gspro_biogenics.txt + setenv BEIS_NORM_EMIS $IN_BEISpath/beis4_beld6_norm_emis.12NE3.nc + setenv BEIS_SOILINP $OUTDIR/CCTM_BSOILOUT_${RUNID}_${YESTERDAY}.nc + #> Biogenic NO soil input file; ignore if NEW_START = TRUE + endif + if ( $CTM_BIOGEMIS_MG == 'Y' ) then + setenv MEGAN_SOILINP $OUTDIR/CCTM_MSOILOUT_${RUNID}_${YESTERDAY}.nc + #> Biogenic NO soil input file; ignore if INITIAL_RUN = Y + #> ; ignore if IGNORE_SOILINP = Y + setenv MEGAN_CTS $SZpath/megan3.2/CT3_CONUS.ncf + setenv MEGAN_EFS $SZpath/megan3.2/EFMAPS_CONUS.ncf + setenv MEGAN_LDF $SZpath/megan3.2/LDF_CONUS.ncf + if ($BDSNP_MEGAN == 'Y') then + setenv BDSNPINP $OUTDIR/CCTM_BDSNPOUT_${RUNID}_${YESTERDAY}.nc + setenv BDSNP_FFILE $SZpath/megan3.2/FERT_tceq_12km.ncf + setenv BDSNP_NFILE $SZpath/megan3.2/NDEP_tceq_12km.ncf + setenv BDSNP_LFILE $SZpath/megan3.2/LANDTYPE_tceq_12km.ncf + setenv BDSNP_AFILE $SZpath/megan3.2/ARID_tceq_12km.ncf + setenv BDSNP_NAFILE $SZpath/megan3.2/NONARID_tceq_12km.ncf + endif + endif + + #> In-line sea spray emissions configuration + setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file + + #> Bidirectional ammonia configuration + if ( $CTM_ABFLUX == 'Y' ) then + setenv E2C_SOIL ${EPICpath}/2018r1_EPIC0509_12NE3_soil.nc + setenv E2C_CHEM ${EPICpath}/2018r1_EPIC0509_12NE3_time${YYYYMMDD}.nc + setenv E2C_CHEM_YEST ${EPICpath}/2018r1_EPIC0509_12NE3_time${YESTERDAY}.nc + setenv E2C_LU ${EPICpath}/beld4_12NE3_2011.nc + endif + +#> Inline Process Analysis + setenv CTM_PROCAN N #> use process analysis [ default: N] + if ( $?CTM_PROCAN ) then # $CTM_PROCAN is defined + if ( $CTM_PROCAN == 'Y' || $CTM_PROCAN == 'T' ) then +#> process analysis global column, row and layer ranges +# setenv PA_BCOL_ECOL "10 90" # default: all columns +# setenv PA_BROW_EROW "10 80" # default: all rows +# setenv PA_BLEV_ELEV "1 4" # default: all levels + setenv PACM_INFILE ${NMLpath}/pa_${MECH}.ctl + setenv PACM_REPORT $OUTDIR/"PA_REPORT".${YYYYMMDD} + endif + endif + +#> Integrated Source Apportionment Method (ISAM) Options + setenv CTM_ISAM Y + if ( $?CTM_ISAM ) then + if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then + setenv SA_IOLIST ${WORKDIR}/isam_control.2018_12NE3.txt + #setenv ISAM_BLEV_ELEV " 1 1" + setenv AISAM_BLEV_ELEV " 1 1" + + #> Set Up ISAM Initial Condition Flags + if ($NEW_START == true || $NEW_START == TRUE ) then + setenv ISAM_NEW_START Y + setenv ISAM_PREVDAY + else + setenv ISAM_NEW_START N + setenv ISAM_PREVDAY "$OUTDIR/CCTM_SA_CGRID_${RUNID}_${YESTERDAY}.nc" + endif + + #> Set Up ISAM Output Filenames + setenv SA_ACONC_1 "$OUTDIR/CCTM_SA_ACONC_${CTM_APPL}.nc -v" + setenv SA_CONC_1 "$OUTDIR/CCTM_SA_CONC_${CTM_APPL}.nc -v" + setenv SA_DD_1 "$OUTDIR/CCTM_SA_DRYDEP_${CTM_APPL}.nc -v" + setenv SA_WD_1 "$OUTDIR/CCTM_SA_WETDEP_${CTM_APPL}.nc -v" + setenv SA_CGRID_1 "$OUTDIR/CCTM_SA_CGRID_${CTM_APPL}.nc -v" + + #> Set optional ISAM regions files + setenv ISAM_REGIONS $INPDIR/surface/GRIDMASK_STATES_12NE3.nc + + #> Options used to favor tracked species in reaction for Ozone-NOx chemistry + setenv ISAM_O3_WEIGHTS 5 # weights for tracked species Default is 5 + # OPTIONS + # 1 does not weight any species + # 2 weights NOx and subset of NOz species + # 3 uses with from option 2 plus weight OVOC species, organic radicals and operators + # 4 weight OVOC species, organic radicals and operators + # 5 toggles between two weighting set based on VOC and NOx limited ozone production + # Below options only used if ISAM_O3_WEIGHTS set to 5 + setenv ISAM_NOX_CASE 2 # weights for tracked species when ozone production is NOx limited. Default is 2 + setenv ISAM_VOC_CASE 4 # weights for tracked species when ozone production is VOC limited. Default is 4 + setenv VOC_NOX_TRANS 0.35 # value of Prod H2O2 over Prod HNO3 less than where + # ISAM_VOC_CASE weights are used. Otherwise, ISAM_NOX_CASE + # weights are used. Default is 0.35 + + endif + endif + + +#> Sulfur Tracking Model (STM) + setenv STM_SO4TRACK N #> sulfur tracking [ default: N ] + if ( $?STM_SO4TRACK ) then + if ( $STM_SO4TRACK == 'Y' || $STM_SO4TRACK == 'T' ) then + + #> option to normalize sulfate tracers [ default: Y ] + setenv STM_ADJSO4 Y + + endif + endif + +#> Decoupled Direct Method in 3D (DDM-3D) Options + setenv CTM_DDM3D N # Sets up requisite script settings for DDM-3D (default is N/F) + # Additionally requires for CCTM to be compiled for DDM-3D simulations + + set NPMAX = 1 # Number of sensitivity parameters defined in SEN_INPUT + setenv SEN_INPUT ${WORKDIR}/sensinput.2018_12NE3.dat + + setenv DDM3D_HIGH N # allow higher-order sensitivity parameters in SEN_INPUT [ T | Y | F | N ] (default is N/F) + + if ($NEW_START == true || $NEW_START == TRUE ) then + setenv DDM3D_RST N # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) + set S_ICpath = # sensitivity fields are initialized to 0.0 on the first hour of the first day + set S_ICfile = + else + setenv DDM3D_RST Y # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) + set S_ICpath = $OUTDIR + set S_ICfile = CCTM_SENGRID_${RUNID}_${YESTERDAY}.nc + endif + + setenv CTM_NPMAX $NPMAX + setenv CTM_SENS_1 "$OUTDIR/CCTM_SENGRID_${CTM_APPL}.nc -v" + setenv A_SENS_1 "$OUTDIR/CCTM_ASENS_${CTM_APPL}.nc -v" + setenv CTM_SWETDEP_1 "$OUTDIR/CCTM_SENWDEP_${CTM_APPL}.nc -v" + setenv CTM_SDRYDEP_1 "$OUTDIR/CCTM_SENDDEP_${CTM_APPL}.nc -v" + setenv INIT_SENS_1 $S_ICpath/$S_ICfile + + +# ===================================================================== +#> Output Files +# ===================================================================== + + #> set output file names + setenv S_CGRID "$OUTDIR/CCTM_CGRID_${CTM_APPL}.nc" #> 3D Inst. Concentrations + setenv CTM_CONC_1 "$OUTDIR/CCTM_CONC_${CTM_APPL}.nc -v" #> On-Hour Concentrations + setenv A_CONC_1 "$OUTDIR/CCTM_ACONC_${CTM_APPL}.nc -v" #> Hourly Avg. Concentrations + setenv MEDIA_CONC "$OUTDIR/CCTM_MEDIA_CONC_${CTM_APPL}.nc -v" #> NH3 Conc. in Media + setenv CTM_DRY_DEP_1 "$OUTDIR/CCTM_DRYDEP_${CTM_APPL}.nc -v" #> Hourly Dry Deposition + setenv CTM_DEPV_DIAG "$OUTDIR/CCTM_DEPV_${CTM_APPL}.nc -v" #> Dry Deposition Velocities + setenv B3GTS_S "$OUTDIR/CCTM_B3GTS_S_${CTM_APPL}.nc -v" #> Biogenic Emissions + setenv BEIS_SOILOUT "$OUTDIR/CCTM_BSOILOUT_${CTM_APPL}.nc" #> Soil Emissions + setenv MEGAN_SOILOUT "$OUTDIR/CCTM_MSOILOUT_${CTM_APPL}.nc" #> Soil Emissions + setenv BDSNPOUT "$OUTDIR/CCTM_BDSNPOUT_${CTM_APPL}.nc" #> Soil Emissions + setenv CTM_WET_DEP_1 "$OUTDIR/CCTM_WETDEP1_${CTM_APPL}.nc -v" #> Wet Dep From All Clouds + setenv CTM_WET_DEP_2 "$OUTDIR/CCTM_WETDEP2_${CTM_APPL}.nc -v" #> Wet Dep From SubGrid Clouds + setenv CTM_ELMO_1 "$OUTDIR/CCTM_ELMO_${CTM_APPL}.nc -v" #> On-Hour Particle Diagnostics + setenv CTM_AELMO_1 "$OUTDIR/CCTM_AELMO_${CTM_APPL}.nc -v" #> Hourly Avg. Particle Diagnostics + setenv CTM_RJ_1 "$OUTDIR/CCTM_PHOTDIAG1_${CTM_APPL}.nc -v" #> 2D Surface Summary from Inline Photolysis + setenv CTM_RJ_2 "$OUTDIR/CCTM_PHOTDIAG2_${CTM_APPL}.nc -v" #> 3D Photolysis Rates + setenv CTM_RJ_3 "$OUTDIR/CCTM_PHOTDIAG3_${CTM_APPL}.nc -v" #> 3D Optical and Radiative Results from Photolysis + setenv CTM_SSEMIS_1 "$OUTDIR/CCTM_SSEMIS_${CTM_APPL}.nc -v" #> Sea Spray Emissions + setenv CTM_DUST_EMIS_1 "$OUTDIR/CCTM_DUSTEMIS_${CTM_APPL}.nc -v" #> Dust Emissions + setenv CTM_BUDGET "$OUTDIR/CCTM_BUDGET_${CTM_APPL}.txt -v" #> Budget [Default Off] + setenv CTM_IPR_1 "$OUTDIR/CCTM_PA_1_${CTM_APPL}.nc -v" #> Process Analysis + setenv CTM_IPR_2 "$OUTDIR/CCTM_PA_2_${CTM_APPL}.nc -v" #> Process Analysis + setenv CTM_IPR_3 "$OUTDIR/CCTM_PA_3_${CTM_APPL}.nc -v" #> Process Analysis + setenv CTM_IRR_1 "$OUTDIR/CCTM_IRR_1_${CTM_APPL}.nc -v" #> Chem Process Analysis + setenv CTM_IRR_2 "$OUTDIR/CCTM_IRR_2_${CTM_APPL}.nc -v" #> Chem Process Analysis + setenv CTM_IRR_3 "$OUTDIR/CCTM_IRR_3_${CTM_APPL}.nc -v" #> Chem Process Analysis + setenv CTM_DRY_DEP_MOS "$OUTDIR/CCTM_DDMOS_${CTM_APPL}.nc -v" #> Dry Dep + setenv CTM_DEPV_MOS "$OUTDIR/CCTM_DEPVMOS_${CTM_APPL}.nc -v" #> Dry Dep Velocity + setenv CTM_VDIFF_DIAG "$OUTDIR/CCTM_VDIFF_DIAG_${CTM_APPL}.nc -v" #> Vertical Dispersion Diagnostic + setenv CTM_VSED_DIAG "$OUTDIR/CCTM_VSED_DIAG_${CTM_APPL}.nc -v" #> Particle Grav. Settling Velocity + setenv CTM_LTNGDIAG_1 "$OUTDIR/CCTM_LTNGHRLY_${CTM_APPL}.nc -v" #> Hourly Avg Lightning NO + setenv CTM_LTNGDIAG_2 "$OUTDIR/CCTM_LTNGCOL_${CTM_APPL}.nc -v" #> Column Total Lightning NO + setenv CTM_VEXT_1 "$OUTDIR/CCTM_VEXT_${CTM_APPL}.nc -v" #> On-Hour 3D Concs at select sites + + #> set floor file (neg concs) + setenv FLOOR_FILE ${OUTDIR}/FLOOR_${CTM_APPL}.txt + + #> look for existing log files and output files + ( ls CTM_LOG_???.${CTM_APPL} > buff.txt ) >& /dev/null + ( ls ${LOGDIR}/CTM_LOG_???.${CTM_APPL} >> buff.txt ) >& /dev/null + set log_test = `cat buff.txt`; rm -f buff.txt + + set OUT_FILES = (${FLOOR_FILE} ${S_CGRID} ${CTM_CONC_1} ${A_CONC_1} ${MEDIA_CONC} \ + ${CTM_DRY_DEP_1} $CTM_DEPV_DIAG $B3GTS_S $MEGAN_SOILOUT $BEIS_SOILOUT $BDSNPOUT \ + $CTM_WET_DEP_1 $CTM_WET_DEP_2 $CTM_ELMO_1 $CTM_AELMO_1 \ + $CTM_RJ_1 $CTM_RJ_2 $CTM_RJ_3 $CTM_SSEMIS_1 $CTM_DUST_EMIS_1 $CTM_IPR_1 $CTM_IPR_2 \ + $CTM_IPR_3 $CTM_BUDGET $CTM_IRR_1 $CTM_IRR_2 $CTM_IRR_3 $CTM_DRY_DEP_MOS \ + $CTM_DEPV_MOS $CTM_VDIFF_DIAG $CTM_VSED_DIAG $CTM_LTNGDIAG_1 $CTM_LTNGDIAG_2 $CTM_VEXT_1 ) + if ( $?CTM_ISAM ) then + if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then + set OUT_FILES = (${OUT_FILES} ${SA_ACONC_1} ${SA_CONC_1} ${SA_DD_1} ${SA_WD_1} \ + ${SA_CGRID_1} ) + endif + endif + if ( $?CTM_DDM3D ) then + if ( $CTM_DDM3D == 'Y' || $CTM_DDM3D == 'T' ) then + set OUT_FILES = (${OUT_FILES} ${CTM_SENS_1} ${A_SENS_1} ${CTM_SWETDEP_1} ${CTM_SDRYDEP_1} ) + endif + endif + set OUT_FILES = `echo $OUT_FILES | sed "s; -v;;g" | sed "s;MPI:;;g" ` + ( ls $OUT_FILES > buff.txt ) >& /dev/null + set out_test = `cat buff.txt`; rm -f buff.txt + + #> delete previous output if requested + if ( $CLOBBER_DATA == true || $CLOBBER_DATA == TRUE ) then + echo + echo "Existing Logs and Output Files for Day ${TODAYG} Will Be Deleted" + + #> remove previous log files + foreach file ( ${log_test} ) + #echo "Deleting log file: $file" + /bin/rm -f $file + end + + #> remove previous output files + foreach file ( ${out_test} ) + #echo "Deleting output file: $file" + /bin/rm -f $file + end + /bin/rm -f ${OUTDIR}/CCTM_DESID*${CTM_APPL}.nc + + else + #> error if previous log files exist + if ( "$log_test" != "" ) then + echo "*** Logs exist - run ABORTED ***" + echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" + echo "*** and these files will be automatically deleted. ***" + exit 1 + endif + + #> error if previous output files exist + if ( "$out_test" != "" ) then + echo "*** Output Files Exist - run will be ABORTED ***" + foreach file ( $out_test ) + echo " cannot delete $file" + end + echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" + echo "*** and these files will be automatically deleted. ***" + exit 1 + endif + endif + + #> for the run control ... + setenv CTM_STDATE $YYYYJJJ + setenv CTM_STTIME $STTIME + setenv CTM_RUNLEN $NSTEPS + setenv CTM_TSTEP $TSTEP + setenv INIT_CONC_1 $ICpath/$ICFILE + setenv BNDY_CONC_1 $BCpath/$BCFILE + setenv OMI $OMIpath/$OMIfile + setenv MIE_TABLE $OUTDIR/mie_table_coeffs_${compilerString}.txt + setenv OPTICS_DATA $OMIpath/$OPTfile + #setenv XJ_DATA $JVALpath/$JVALfile + + #> species defn & photolysis + setenv gc_matrix_nml ${NMLpath}/GC_$MECH.nml + setenv ae_matrix_nml ${NMLpath}/AE_$MECH.nml + setenv nr_matrix_nml ${NMLpath}/NR_$MECH.nml + setenv tr_matrix_nml ${NMLpath}/Species_Table_TR_0.nml + + #> check for photolysis input data + setenv CSQY_DATA ${NMLpath}/CSQY_DATA_$MECH + + if (! (-e $CSQY_DATA ) ) then + echo " $CSQY_DATA not found " + exit 1 + endif + if (! (-e $OPTICS_DATA ) ) then + echo " $OPTICS_DATA not found " + exit 1 + endif + +# =================================================================== +#> Execution Portion +# =================================================================== + + #> Print attributes of the executable + if ( $CTM_DIAG_LVL != 0 ) then + ls -l $BLD/$EXEC + size $BLD/$EXEC + unlimit + limit + endif + + #> Print Startup Dialogue Information to Standard Out + echo + echo "CMAQ Processing of Day $YYYYMMDD Began at `date`" + echo + + #> Executable call for single PE, uncomment to invoke + #( /usr/bin/time -p $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt + + #> Executable call for multi PE, configure for your system + # set MPI = /usr/local/intel/impi/3.2.2.006/bin64 + # set MPIRUN = $MPI/mpirun + ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt + + #> Harvest Timing Output so that it may be reported below + set rtarray = "${rtarray} `tail -3 buff_${EXECUTION_ID}.txt | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | head -1` " + rm -rf buff_${EXECUTION_ID}.txt + + #> Abort script if abnormal termination + if ( ! -e $OUTDIR/CCTM_CGRID_${CTM_APPL}.nc ) then + echo "" + echo "**************************************************************" + echo "** Runscript Detected an Error: CGRID file was not written. **" + echo "** This indicates that CMAQ was interrupted or an issue **" + echo "** exists with writing output. The runscript will now **" + echo "** abort rather than proceeding to subsequent days. **" + echo "**************************************************************" + break + endif + + #> Print Concluding Text + echo + echo "CMAQ Processing of Day $YYYYMMDD Finished at `date`" + echo + echo "\\\\\=====\\\\\=====\\\\\=====\\\\\=====/////=====/////=====/////=====/////" + echo + +# =================================================================== +#> Finalize Run for This Day and Loop to Next Day +# =================================================================== + + #> Save Log Files and Move on to Next Simulation Day + mv CTM_LOG_???.${CTM_APPL} $LOGDIR + if ( $CTM_DIAG_LVL != 0 ) then + mv CTM_DIAG_???.${CTM_APPL} $LOGDIR + endif + + #> The next simulation day will, by definition, be a restart + setenv NEW_START false + + #> Increment both Gregorian and Julian Days + set TODAYG = `date -ud "${TODAYG}+1days" +%Y-%m-%d` #> Add a day for tomorrow + set TODAYJ = `date -ud "${TODAYG}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ + +end #Loop to the next Simulation Day + +# =================================================================== +#> Generate Timing Report +# =================================================================== +set RTMTOT = 0 +foreach it ( `seq ${NDAYS}` ) + set rt = `echo ${rtarray} | cut -d' ' -f${it}` + set RTMTOT = `echo "${RTMTOT} + ${rt}" | bc -l` +end + +set RTMAVG = `echo "scale=2; ${RTMTOT} / ${NDAYS}" | bc -l` +set RTMTOT = `echo "scale=2; ${RTMTOT} / 1" | bc -l` + +echo +echo "==================================" +echo " ***** CMAQ TIMING REPORT *****" +echo "==================================" +echo "Start Day: ${START_DATE}" +echo "End Day: ${END_DATE}" +echo "Number of Simulation Days: ${NDAYS}" +echo "Domain Name: ${GRID_NAME}" +echo "Number of Grid Cells: ${NCELLS} (ROW x COL x LAY)" +echo "Number of Layers: ${NZ}" +echo "Number of Processes: ${NPROCS}" +echo " All times are in seconds." +echo +echo "Num Day Wall Time" +set d = 0 +set day = ${START_DATE} +foreach it ( `seq ${NDAYS}` ) + # Set the right day and format it + set d = `echo "${d} + 1" | bc -l` + set n = `printf "%02d" ${d}` + + # Choose the correct time variables + set rt = `echo ${rtarray} | cut -d' ' -f${it}` + + # Write out row of timing data + echo "${n} ${day} ${rt}" + + # Increment day for next loop + set day = `date -ud "${day}+1days" +%Y-%m-%d` +end +echo " Total Time = ${RTMTOT}" +echo " Avg. Time = ${RTMAVG}" + +exit diff --git a/README.md b/README.md index 6ba51222a..f3af283b4 100644 --- a/README.md +++ b/README.md @@ -75,8 +75,8 @@ In addition, a full set of inputs for 2018 are provided for the 12US1 domain (29 |v5.4 CRACMM Stage| Input | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/9AV907)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | |v5.5 CRACMM2 Stage | Input (6.1 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https: )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) | |v5.5 CB6 Stage | Output (16 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https: )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) | -|v5.5-ISAM CRACMM2 Stage | Output (52 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https: )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz) | -|v5.5-DDM3D CRACMM2 Stage | Output | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https: )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | +|v5.5-ISAM CB6 M3Dry | Output (52 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https: )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_aq_m3dry.tar.gz) | +|v5.5-DDM3D CB6 M3Dry | Output | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https: )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | ## Other Online Resources * [Resources for Running CMAQ on Amazon Web Services](https://www.epa.gov/cmaq/cmaq-resourcesutilities-model-users#cmaq-on-the-cloud) From 5ebd819d02b4dae51caf9905ffb499417365a470 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 11 Sep 2024 15:42:10 -0400 Subject: [PATCH 240/375] update --- .../Tutorials/CMAQ_UG_tutorial_ISAM.md | 42 +-- .../CMAQ_UG_tutorial_ISAM_cracmm2_stage.md | 309 ++++++++++++++++++ 2 files changed, 324 insertions(+), 27 deletions(-) create mode 100644 DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM_cracmm2_stage.md diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 3ea2387b9..be9fa29e7 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -1,6 +1,6 @@ ## CMAQ-ISAM Benchmark Tutorial ## -### Procedure to build and run the CMAQ-ISAM model using gnu compiler for the CRACMM2 mechanism with the STAGE dry deposition scheme: ### +### Procedure to build and run the CMAQ-ISAM model using gnu compiler for the cb6r5_ae7_aq mechanism with the m3dry dry deposition scheme: ### ### Step 1: Download and run the CMAQv5.5 benchmark case (without ISAM) to confirm that your model run is consistent with the provided benchmark output. - [CMAQ Benchmark Tutorial](CMAQ_UG_tutorial_benchmark.md) @@ -17,7 +17,7 @@ Note: This benchmark is intended to demonstrate how to build and run CMAQ-ISAM w The following isam control file is provided in the CCTM/scripts directory when you obtain the CMAQv5.5 code from github (step 5 below): ``` -isam_control.txt +cat isam_control.2018_12NE3.txt ``` This file contains the following tag classes @@ -110,11 +110,14 @@ Uncomment the following option to compile CCTM with ISAM (remove the # before se #> Integrated Source Apportionment Method (ISAM) set ISAM_CCTM #> uncomment to compile CCTM with ISAM activated ``` -### Step 8: Modify the bldit_cctm.csh to specify the CRACMM2 mechanism and the stage dry deposition scheme and update the BLD directory name. +### Step 8: Modify the bldit_cctm.csh to specify the cb6r5_ae7_aq mechanism and the m3dry dry deposition scheme and update the BLD directory name. ``` -set DepMod = stage #> dry deposition scheme (m3dry or stage) -setenv Mechanism cracmm2 #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) +set DepMod = m3dry #> dry deposition scheme (m3dry or stage) +setenv Mechanism cb6r5_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) +``` + +Verify that the bldit_cctm.csh script uses the name of the mechanism and the dry deposition scheme in the BLD directory name: #> Set and create the "BLD" directory for checking out and compiling #> source code. Move current directory to that build directory. @@ -126,6 +129,7 @@ setenv Mechanism cracmm2 #> chemical mechanism (see $CMAQ_MODEL/CCT ``` ### Step 9: Run the bldit_cctm.csh script + ``` ./bldit_cctm.csh gcc |& tee bldit_cctm_isam.log ``` @@ -134,7 +138,7 @@ setenv Mechanism cracmm2 #> chemical mechanism (see $CMAQ_MODEL/CCT Change directories to the build directory ``` -cd BLD_CCTM_v55_ISAM_gcc_cracmm2_stage +cd BLD_CCTM_v55_ISAM_gcc_cb6r5_ae7_aq_m3dry ``` edit the DESID emissions namelist file @@ -150,29 +154,13 @@ Uncomment the line that contains ISAM_REGIONS as the File Label Desid_Reg_nml = ! Region Label | File_Label | Variable on File 'EVERYWHERE' ,'N/A' ,'N/A', - 'NY' ,'CMAQ_MASKS', 'NY', + ! 'NY' ,'CMAQ_MASKS', 'NY', ! 'WATER' ,'CMAQ_MASKS' ,'OPEN', ! 'ALL' ,'CMAQ_MASKS' ,'ALL', - ! 'ALL' ,'ISAM_REGIONS','ALL', + 'ALL' ,'ISAM_REGIONS','ALL', / ``` -### Step 10a: Edit the DESID chmeical control namelist file. - -Change to the BLD directory and add the following lines to the bottom of the CMAQ_Control_DESID_cracmm2.nml - -``` -! Re-Map CRACMM1 Aromatics to CRACMM2 - ! EBZ and XYE remapping, STY and XYM remapping - ! Generic scaling if not scaling by sector: 70% XYL; 30% EBZ - ! EBZ = FAC1 * XYE; STY = FAC2 * XYM ; XYL = (1-FAC1)*XYE + (1-FAC2)*XYM - 'EVERYWHERE', 'ALL' ,'XYE' ,'EBZ' ,'GAS' ,0.30,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'XYE' ,'XYL' ,'GAS' ,0.70,'UNIT','a', - - ! Generic scaling if not scaling by sector: 93% XYL; 7% STY - 'EVERYWHERE', 'ALL' ,'XYM' ,'STY' ,'GAS' ,0.07,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'XYM' ,'XYL' ,'GAS' ,0.93,'UNIT','a', -``` ### Step 11: Example of emissions scaling (Reduce the PT_EGU emissions in PA by 25%) (Optional step) @@ -199,7 +187,7 @@ Download the CMAQ two day reference input and output data from the [CMAS Center - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) - Text files are included that provide a list of the files in the benchmark input and output datasets. -The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmas-cmaq.s3.amazonaws.com/index.html). +The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz). Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: @@ -214,8 +202,8 @@ The input files for the CMAQv5.4 ISAM benchmark case are the same as the benchma ### Step 13: Edit the CMAQ-ISAM runscript ``` -cp run_cctm_Bench_2018_12NE3.csh run_cctm_Bench_2018_12NE3.ISAM.csh -gedit run_cctm_Bench_2018_12NE3.ISAM.csh +cp run_cctm_Bench_2018_12NE3.csh run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ISAM.csh +gedit run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ISAM.csh ``` Set General Parameters for Configuring the Simulation diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM_cracmm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM_cracmm2_stage.md new file mode 100644 index 000000000..3ea2387b9 --- /dev/null +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM_cracmm2_stage.md @@ -0,0 +1,309 @@ +## CMAQ-ISAM Benchmark Tutorial ## + +### Procedure to build and run the CMAQ-ISAM model using gnu compiler for the CRACMM2 mechanism with the STAGE dry deposition scheme: ### + +### Step 1: Download and run the CMAQv5.5 benchmark case (without ISAM) to confirm that your model run is consistent with the provided benchmark output. +- [CMAQ Benchmark Tutorial](CMAQ_UG_tutorial_benchmark.md) + +If you encounter any errors, try running the model in debug mode and refer to the CMAS User Forum to determine if any issues have been reported. + +https://forum.cmascenter.org/ + +### Step 2: Read the User Guide Chapter on Integrated Source Apportionment Method. +- [CMAQ User's Guide Chapter on ISAM](../CMAQ_UG_ch11_ISAM.md) + +Note: This benchmark is intended to demonstrate how to build and run CMAQ-ISAM with the provided input files: + +The following isam control file is provided in the CCTM/scripts directory when you obtain the CMAQv5.5 code from github (step 5 below): + +``` +isam_control.txt +``` + +This file contains the following tag classes + +``` +TAG NAME |EGU +REGION(S) |EVERYWHERE +EMIS STREAM(S) |PT_EGU + +TAG NAME |BIO +REGION(S) |NY +EMIS STREAM(S) |BIOG +``` + +The following gridmask file is provided with the benchmark inputs in the 2018_12NE3_BENCH/2018_12NE3 directory (see step 11 below) + +``` +GRIDMASK_STATES_12NE3.nc +``` + +The instructions require the user to edit the DESID emissions control namelist file and the DESID chemical control namelist file in the BLD directory. If you want to use emission scaling (independently from ISAM or DDM3D) you will also need to edit these files. (see step 10 below). + +``` +CMAQ_Control_DESID.nml +CMAQ_Control_DESID_${MECH}.nml +``` + + +### Step 3 (optional): choose your compiler, and load it using the module command if it is available on your system + +``` +module avail +``` + +``` +module load openmpi_4.0.1/gcc_9.1.0 +``` + +### Step 4 (optional): Install I/O API (note, this assumes you have already installed netCDF C and Fortran Libraries) + +I/O APIv3.2 supports up to MXFILE3=256 open files, each with up to MXVARS3=2048. ISAM applications configured to calculate source attribution of a large number of sources may exceed this upper limit of model variables, leading to a model crash. To avoid this issue, users may use I/O API version 3.2 "large" that increases MXFILE3 to 512 and MXVARS3 to 16384. Instructions to build this version are found in Chapter 3. Note, using this ioapi-large version is NOT REQUIRED for the CMAQ-ISAM Benchmark Case. If a user needs to use these larger setting for MXFILE3 and MXVAR3 to support their application, the memory requirements will be increased. If needed, this version is available as a zip file from the following address: + +https://www.cmascenter.org/ioapi/download/ioapi-3.2-large-20200828.tar.gz + +Otherwise, use the I/O API version available here: +https://www.cmascenter.org/ioapi/download/ioapi-3.2-20200828.tar.gz + +### Step 5: Install CMAQ with ISAM + +``` +git clone -b main https://github.com/USEPA/CMAQ.git CMAQ_REPO +``` + +Build and run in a user-specified directory outside of the repository + +In the top level of CMAQ_REPO, the bldit_project.csh script will automatically replicate the CMAQ folder structure and copy every build and run script out of the repository so that you may modify them freely without version control. + +Edit bldit_project.csh, to modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: + +``` +set CMAQ_HOME = [your_install_path]/CMAQ_v5.5 +``` + +Now execute the script. + +``` +./bldit_project.csh +``` + +Change directories to the CMAQ_HOME directory + +``` +cd [your_install_path]/CMAQ_v5.5 +``` + + +### Step 6. Edit the config_cmaq.csh to specify the paths of the ioapi and netCDF libraries + +### Step 7: Modify the bldit_cctm.csh to activate ISAM + +Change directory to CCTM/scripts + +``` +cd CCTM/scripts +``` + +Uncomment the following option to compile CCTM with ISAM (remove the # before set ISAM_CCTM): + +``` +#> Integrated Source Apportionment Method (ISAM) +set ISAM_CCTM #> uncomment to compile CCTM with ISAM activated +``` +### Step 8: Modify the bldit_cctm.csh to specify the CRACMM2 mechanism and the stage dry deposition scheme and update the BLD directory name. + +``` +set DepMod = stage #> dry deposition scheme (m3dry or stage) +setenv Mechanism cracmm2 #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) + +#> Set and create the "BLD" directory for checking out and compiling +#> source code. Move current directory to that build directory. + if ( $?Debug_CCTM ) then + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug + else + set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} + endif +``` + +### Step 9: Run the bldit_cctm.csh script +``` +./bldit_cctm.csh gcc |& tee bldit_cctm_isam.log +``` + +### Step 10: Edit the Emission Control Namelist to recognize the CMAQ_REGIONS file + +Change directories to the build directory +``` +cd BLD_CCTM_v55_ISAM_gcc_cracmm2_stage +``` + +edit the DESID emissions namelist file + +``` +gedit CMAQ_Control_DESID.nml +``` + +Uncomment the line that contains ISAM_REGIONS as the File Label + +``` +&Desid_RegionDef + Desid_Reg_nml = + ! Region Label | File_Label | Variable on File + 'EVERYWHERE' ,'N/A' ,'N/A', + 'NY' ,'CMAQ_MASKS', 'NY', + ! 'WATER' ,'CMAQ_MASKS' ,'OPEN', + ! 'ALL' ,'CMAQ_MASKS' ,'ALL', + ! 'ALL' ,'ISAM_REGIONS','ALL', +/ +``` + +### Step 10a: Edit the DESID chmeical control namelist file. + +Change to the BLD directory and add the following lines to the bottom of the CMAQ_Control_DESID_cracmm2.nml + +``` +! Re-Map CRACMM1 Aromatics to CRACMM2 + ! EBZ and XYE remapping, STY and XYM remapping + ! Generic scaling if not scaling by sector: 70% XYL; 30% EBZ + ! EBZ = FAC1 * XYE; STY = FAC2 * XYM ; XYL = (1-FAC1)*XYE + (1-FAC2)*XYM + 'EVERYWHERE', 'ALL' ,'XYE' ,'EBZ' ,'GAS' ,0.30,'UNIT','a', + 'EVERYWHERE', 'ALL' ,'XYE' ,'XYL' ,'GAS' ,0.70,'UNIT','a', + + ! Generic scaling if not scaling by sector: 93% XYL; 7% STY + 'EVERYWHERE', 'ALL' ,'XYM' ,'STY' ,'GAS' ,0.07,'UNIT','a', + 'EVERYWHERE', 'ALL' ,'XYM' ,'XYL' ,'GAS' ,0.93,'UNIT','a', +``` + +### Step 11: Example of emissions scaling (Reduce the PT_EGU emissions in PA by 25%) (Optional step) + +edit the DESID chemical control namelist file, note please specify the mechanism or define the MECH environment variable. + +``` +gedit CMAQ_Control_DESID_${MECH}.nml +``` + +Add the following line at the bottom of the the namelist file (before the /) + +``` + ! PT_EGU Emissions Scaling reduce PT_EGU emissions in NY by 25%. Note, to reduce the emissions by 25% we use DESID to multiply what had been 100% emissions by .75, so that the resulting emissions is reduced by 25%. + 'NY' , 'PT_EGU' ,'All' ,'All' ,'All' ,.75 ,'UNIT','o', + +``` + +### Step 12: Install the CMAQ-ISAM reference input and output benchmark data + +Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. + + - Use the gdrive command to download the dataset. + - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions + - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) + - Text files are included that provide a list of the files in the benchmark input and output datasets. + +The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmas-cmaq.s3.amazonaws.com/index.html). + +Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: + +``` +cd $CMAQ_DATA +tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz +tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz +``` + +The input files for the CMAQv5.4 ISAM benchmark case are the same as the benchmark inputs for the base model. Output source apportionment files associated with the sample isam_control.txt provided in this release package are included in the benchmark outputs for the base model. + +### Step 13: Edit the CMAQ-ISAM runscript + +``` +cp run_cctm_Bench_2018_12NE3.csh run_cctm_Bench_2018_12NE3.ISAM.csh +gedit run_cctm_Bench_2018_12NE3.ISAM.csh +``` + +Set General Parameters for Configuring the Simulation + +``` +set VRSN = v55_ISAM +``` + + +Turn on ISAM and uncomment the SA_IOLIST file and uncomment the ISAM regions file + +``` +setenv CTM_ISAM Y +setenv SA_IOLIST ${WORKDIR}/isam_control.2018_12NE3.txt +setenv ISAM_REGIONS $INPDIR/GRIDMASK_STATES_12NE3.nc +``` + +Run or Submit the script to the batch queueing system + +``` +./run_cctm_Bench_2018_12NE3.ISAM.csh +``` + +OR (If using SLRUM) + +``` +sbatch run_cctm_Bench_2018_12NE3.ISAM.csh +``` + +### Step 14: Verify that the run was successful + - look for the output directory + + ``` + cd ../../data/output_CCTM_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM + ``` + If the run was successful you will see the following output + + ``` + tail ./LOGS/CTM_LOG_000.v532_ISAM_gcc_Bench_2016_12SE1_20160702 + ``` + |>--- PROGRAM COMPLETED SUCCESSFULLY ---<| + +### Step 15: Compare output with the 2 day benchmark outputs provided on the google drive + +The following ISAM output files are generated in addition to the standard CMAQ output files. Note, the answers will not be comparible if emission scaling is used (Step 10 - optional) + +``` +CCTM_SA_DRYDEP_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc +CCTM_SA_WETDEP_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc +CCTM_SA_CONC_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc +CCTM_SA_ACONC_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc +CCTM_SA_CGRID_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc +``` + +### Step 16: Compare the tagged species in `CCTM_SA_CONC` output file to the full species in `CCTM_CONC` output file + +``` +ncdump -h CCTM_SA_CONC_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_4x8_all_CONC_20180701.nc | grep SO2_ +``` + +The following tagged species should add up to the total SO2 in the CONC file. + + float SO2_EGU(TSTEP, LAY, ROW, COL) ; + SO2_EGU:long_name = "SO2_EGU " ; + SO2_EGU:units = "ppmV " ; + SO2_EGU:var_desc = "tracer conc. " ; + float SO2_BIO(TSTEP, LAY, ROW, COL) ; + SO2_BIO:long_name = "SO2_BIO " ; + SO2_BIO:units = "ppmV " ; + SO2_BIO:var_desc = "tracer conc. " ; + float SO2_BCO(TSTEP, LAY, ROW, COL) ; + SO2_BCO:long_name = "SO2_BCO " ; + SO2_BCO:units = "ppmV " ; + SO2_BCO:var_desc = "tracer conc. " ; + float SO2_OTH(TSTEP, LAY, ROW, COL) ; + SO2_OTH:long_name = "SO2_OTH " ; + SO2_OTH:units = "ppmV " ; + SO2_OTH:var_desc = "tracer conc. " ; + float SO2_ICO(TSTEP, LAY, ROW, COL) ; + SO2_ICO:long_name = "SO2_ICO " ; + SO2_ICO:units = "ppmV " ; + SO2_ICO:var_desc = "tracer conc. + +[1] = CONC +[2] = SA_CONC + +``` +SO2_EGU[1] + SO2_BIO[1] + SO2_BCO[1] + SO2_OTH[1] + SO2_ICO[1] = SO2[2] +``` + +Both tagged species EGU and BIO contribute to the bulk concentration, therefore the sum of all tagged species including boundary conditions (BCO) and initial conditions (ICO) and other (all untagged emissions) (OTH) From 9d2ef54d30c09b0f2a5757bb24944f975bb3ed44 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 11 Sep 2024 15:43:42 -0400 Subject: [PATCH 241/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index be9fa29e7..d770ea142 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -121,6 +121,8 @@ Verify that the bldit_cctm.csh script uses the name of the mechanism and the dry #> Set and create the "BLD" directory for checking out and compiling #> source code. Move current directory to that build directory. + +``` if ( $?Debug_CCTM ) then set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug else From 7a371cd2a5855d1aed0e4a9a9c4de7c90428c914 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Fri, 13 Sep 2024 12:59:12 -0400 Subject: [PATCH 242/375] Update CMAQ_UG_ch01_overview.md --- DOCS/Users_Guide/CMAQ_UG_ch01_overview.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md b/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md index 3dd3854a5..2fcd565a3 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch01_overview.md @@ -67,10 +67,13 @@ Building on previous versions of the modeling system, numerous updates to the pr 1. Gas and aerosol chemistry mechanisms have been updated to include more recent scientific understanding. CMAQv5.5 introduces version 2 of the Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMM2). CRACMM2 includes several updates to CRACMM1. Many updates are intended to improve the representation of secondary formaldehyde (HCHO) in CRACMM. These include the incorporation of the AMORE v1.2 isoprene condensation into the primary CRACMM mechanism, updates to HCHO yields from monoterpenes, and the addition of styrene as a new explicit species. Additional updates include changes to monoterpene nitrates that affect SOA formation and NOx recycling, the inclusion of emitted methane (ECH4), heterogeneous uptake of HO2 and NO3 radicals, and changes in how emissions of certain aromatic species are mapped to CRACMM species. -2. A new option for estimation of photolysis rates was included. This option includes a new approach to estimate the effects of aerosol optical properties on photolysis rates. The approach provides a better match to optical properties determined by solving Mie scattering theory for spherical particles than the default method (FastOptics) but at comparable runtimes. - -3. The CMAQ-ISAM and CMAQ-DDM systems have been enhanced to support additional applications. CMAQ-ISAM now (1) includes detailed attribution of aerosol carbonaceous mass; (2) accounts for loss of aerosol mass from gravitational settling, thereby enabling the sum of K-mode tags to better match the bulk K-mode concentrations; (3) fixes a bug from v5.4 to allow for proper attribution of O3 from “stratospheric origin”. CMAQ-DDM was also corrected to properly estimate sensitivity of O3 to the PV-scaled O3 in the model top layers. +2. CMAQv5.5 is the first public release that allows coupling of CMAQ with the Model for Prediction Across Scales (MPAS). MPAS-CMAQ supports global domains with seamless regional resolution refinement over areas of interest. + +3. The CMAQ-ISAM and CMAQ-DDM systems have been enhanced to support additional applications. CMAQ-ISAM now (1) includes the capability to quantify the contributions from anthropogenic and biogenic sources to total secondary organic aerosol (SOA) and individual species; (2) accounts for loss of aerosol mass from gravitational settling, thereby enabling the sum of K-mode tags to better match the bulk K-mode concentrations; (3) fixes a bug from v5.4 to allow for proper attribution of O3 from “stratospheric origin”. CMAQ-DDM was also corrected to properly estimate sensitivity of O3 to the PV-scaled O3 in the model top layers. +4. A new option for estimation of photolysis rates was included. This option includes a new approach to estimate the effects of aerosol optical properties on photolysis rates. The approach provides a better match to optical properties determined by solving Mie scattering theory for spherical particles than the default method (FastOptics) but at comparable runtimes. + +See the [CMAQv5.5 Series FAQ](https://github.com/USEPA/CMAQ/wiki/CMAQv5.5-Series-FAQ) for more information on model updates in the new release. ## 1.5 System Recommendations CMAQ is a comprehensive air pollution modeling system whose source code is written mostly in Fortran. CMAQ execution is typically performed on Linux based systems. The hardware configuration of such a system depends on the domain size, grid resolution and simulation duration. Since typical input and output data sets for CMAQ entail three dimensional descriptions of the dynamical and chemical state of the simulated atmosphere, these data sets could require upwards of several gigabytes of disk storage per simulation day. From 1ebc782370770a0902b5c85de024356c9a17336b Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 18 Sep 2024 13:27:12 -0400 Subject: [PATCH 243/375] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b6ff6f8f3..607408c53 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -CMAQv5.5 +![image](https://github.com/user-attachments/assets/1dd3bdbe-9750-41b2-8b39-f234d74b8ecf)CMAQv5.5 ========== US EPA Community Multiscale Air Quality Model (CMAQ) Website: https://www.epa.gov/cmaq @@ -21,7 +21,8 @@ particulates, toxics, and acid deposition. * Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMM) version 2 including updated formaldehyde chemistry impacting ozone and secondary organic aerosol formation * New support for running pre-configured global CMAQ simulations coupled with meteorology from the Model for Prediction Across Scales – Atmosphere (MPAS-A) -* Updates to source attribution estimates with the Integrated Source Apportionment Method (ISAM) model, mainly impacting coarse particles and secondary organic aerosols formed through cloud processes +* Expanded capabilities of the Integrated Source Apportionment Method (ISAM) to quantify source contributions to total secondary organic aerosol (SOA) and individual species +* Updates to ISAM source attribution estimates, mainly impacting coarse particles and secondary organic aerosols formed through cloud processes * Updates to the Decoupled Direct Method (DDM) to improve second order ozone sensitivities * Updated chemistry to properly capture photolysis effects from sub-grid clouds * Revised algorithms for modeling dry deposition (M3DRY and STAGE updates) @@ -30,6 +31,7 @@ particulates, toxics, and acid deposition. * Updates to Sulfur Tracking Model (STM) to properly attribute sulfate from gas phase chemistry * Updates to the Explicit and Lumped Model Output (ELMO) synthesizer to fix erroneous output for several PM aggregates including PMF_OC, PMF_NCOM, TNO3 * New shp2cmaq python tool to convert GIS shapefiles into gridded netCDF mask files that can be used for defining regions and region families with DESID and using geographic source regions when running CMAQ-ISAM +* Simplified workflows for easier CMAQ installation * **See the full list of CMAQv5.5 updates on our new CMAQ Wiki page. [**CMAQv5.5 Updates**](https://github.com/USEPA/CMAQ/wiki/CMAQv5.5-Series-FAQ#do-i-need-to-update-from-v54-to-v55)** From 9216942fd9909d342d0918dfafe4ab9d324617af Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Tue, 24 Sep 2024 22:54:53 -0400 Subject: [PATCH 244/375] Update ch 14 (MPAS-CMAQ) --- DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md b/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md index 6223ca13a..1de9b3de0 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch14_MPAS-CMAQ.md @@ -7,23 +7,23 @@ # 14. MPAS-CMAQ Model ## 14.1 Introduction - -## 14.2 Documentation - -## 14.3 Application and Evaluation +The atmospheric component of the Model for Prediction Across Scales (MPAS) is developed by the National Center for Atmospheric Research (NCAR). This meteorlogical model can be coupled with CMAQ starting with the release of CMAQ version 5.5. MPAS-CMAQ is currently available in a pre-configured simulation that uses a globally-uniform 120 km resolution mesh and the CRACMM2 chemical mechanism. Additional configurations may be made available on request, and tools for the creation of custom configurations will be included in future versions of CMAQ. -## 14.4 MPAS-CMAQ Release +The MPAS-CMAQ model described here cannot be run in a stand-alone mode, with meteorological fields generated by MPAS used as input to CMAQ. This capability is planned for a future release. +## 14.2 Documentation -## 14.5 MPAS-CMAQ Benchmark Test Case +MPAS and CMAQ code are available on the [EPA's MPAS GitHub repository](https://github.com/USEPA/MPAS) and as a branch on the [CMAQ GitHub repository](https://github.com/USEPA/CMAQ/tree/MPAS-CMAQ) respecitively. The MPAS-CMAQ User's Guide is available in the [documentation directory](https://github.com/USEPA/CMAQ/blob/MPAS-CMAQ/DOCS/Users_Guide/PDF/MPAS-CMAQ.pdf) of the MPAS-CMAQ branch. The MPAS-CMAQ User's Guide provides detailed information on downloading, compiling, configuring, and running the model. +## 14.3 References of Interest -## 14.6 References +Bullock Jr., O. R., Foroutan, H., Gilliam, R. C., and Herwehe, J. A.: Adding four-dimensional data assimilation by analysis nudging to the Model for Prediction Across Scales – Atmosphere (version 4.0), Geosci. Model Dev., 11, 2897–2922, https://doi.org/10.5194/gmd-11-2897-2018, 2018. +Gilliam, R. C., Herwehe, J. A., Bullock, Jr, O. R., Pleim, J. E., Ran, L., Campbell, P. C., & Foroutan, H.: Establishing the suitability of the model for prediction across scales for global retrospective air quality modeling. Journal of Geophysical Research: Atmospheres, 126, e2020JD033588. https://doi.org/10.1029/2020JD033588, 2021. +Wong, D. C., Willison, J., Pleim, J. E., Sarwar, G., Beidler, J., Bullock, R., Herwehe, J. A., Gilliam, R., Kang, D., Hogrefe, C., Pouliot, G., and Foroutan, H.: Development of the MPAS-CMAQ Coupled System (V1.0) for Multiscale Global Air Quality Modeling, Geosci. Model Dev. Discuss. [preprint], https://doi.org/10.5194/gmd-2024-52, in review, 2024. - [<< Previous Chapter](CMAQ_UG_ch13_WRF-CMAQ.md) - [Home](README.md) - [Tables and Figures >>](CMAQ_UG_tables_figures.md)
CMAQv5.5 User's Guide
From 14114f47f638d03ef300a7a0d558266a8dc5f61e Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 25 Sep 2024 14:11:45 -0400 Subject: [PATCH 245/375] update --- ...MAQ_UG_tutorial_benchmark_craccm2_stage.md | 278 ------------------ ...MAQ_UG_tutorial_benchmark_cracmm2_stage.md | 54 ++-- 2 files changed, 19 insertions(+), 313 deletions(-) delete mode 100644 DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_craccm2_stage.md diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_craccm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_craccm2_stage.md deleted file mode 100644 index 81984c3b9..000000000 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_craccm2_stage.md +++ /dev/null @@ -1,278 +0,0 @@ -# CMAQ Installation & Benchmarking Tutorial - -Purpose: This guide describes how to install and run the CMAQ test case for the CRACMM2 mechanism with the STAGE dry deposition scheme, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. - -Benchmarking refers to a simulation that is used to verify that the software is installed correctly. Benchmarking CMAQ is recommended in the following circumstances: -- Installation by a new user -- Installation on a new server -- Following kernel upgrades -- Following Fortran/C compiler upgrades -- Following netCDF or I/O API library upgrades - -## System Checks - -The following support software are required for compiling and running CMAQ. - -1. Fortran and C compilers, e.g., [Intel](https://software.intel.com/en-us/fortran-compilers), [Portland Group](http://www.pgroup.com), [Gnu](https://gcc.gnu.org/wiki/GFortran) -2. [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) -2. Message Passing Interface (MPI), e.g., [OpenMPI](https://www.open-mpi.org) or [MVAPICH2](http://www.mcs.anl.gov/research/projects/mpich2). -3. Latest release of [netCDF-C](https://www.unidata.ucar.edu/software/netcdf/docs/getting_and_building_netcdf.html) and [netCDF-Fortran](https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html) **built with netCDF4, HDF5, HDF4, DAP client, PnetCDF, or zlib support** -4. [I/O API](https://www.cmascenter.org/download/software/ioapi/ioapi_3-2.cfm?DB=TRUE) version 3.2 **tagged 20200828** -(note: if you have not installed the above libraries, please see the CMAQ_UG_tutorial_build_[gcc/intel/pgi].md tutorials available here: -https://github.com/USEPA/CMAQ/tree/main/DOCS/Users_Guide/Tutorials - -The suggested hardware requirements for running the CMAQ Southeast Benchmark case on a Linux workstation are: - -1. Linux environment with a 16 processors -2. 16 GB RAM -3. 400 GB hard drive storage - -## Install CMAQ and Required Libraries - -In the directory where you would like to install CMAQ, create the directory issue the following command to clone the EPA GitHub repository for CMAQv5.5: - -``` -git clone -b main https://github.com/USEPA/CMAQ.git CMAQ_REPO -``` - -For instructions on installing CMAQ from Zip files, see [Chapter 5](../CMAQ_UG_ch05_running_a_simulation.md). - -## Check Out a new Branch in the CMAQ Repository - -Checking out a new branch is a good idea even if you are not doing code development, per se. It is likely that you will want to retrieve new updates in the future, and an easy way to do this is through the main branch in the git repo. Thus, it is beneficial to leave it unperturbed if possible. -``` -cd CMAQ_REPO -git checkout -b my_branch -``` - -## Configure the CMAQ build environment - -The user has two options for building an environment. She or he may build and run CMAQ components directly in the repository structure (object files and executables will be ignored with .gitignore), or they may extract the build and run scripts out of the repository and work in a separate location. If you would like to build directly in the repository, skip to "Link the CMAQ Libraries" below. - -### Build and run in a user-specified directory outside of the repository -In the top level of CMAQ_REPO, the bldit_project.csh script will automatically replicate the CMAQ folder structure and copy every build and run script out of the repository so that you may modify them freely without version control. - -In bldit_project.csh, modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: -``` -set CMAQ_HOME = [your_install_path]/CMAQ_v5.5 -``` - -Now execute the script. -``` -./bldit_project.csh -``` - -## Link the CMAQ Libraries -The CMAQ build scripts require the following libraries and INCLUDE files to be available in the CMAQ_LIB directory (Note: the CMAQ_LIB gets set automatically by the config_cmaq.csh script, where `CMAQ_LIB = $CMAQ_HOME/lib`): - -- netCDF C library files are located in the `$CMAQ_LIB/netcdf/lib` directory -- netCDF Fortran library files are located in the `$CMAQ_LIB/netcdff/lib` directory -- I/O API library, include files and module files are located in the `$CMAQ_LIB/ioapi` directory -- MPI library and INCLUDE files are located in the `$CMAQ_LIB/mpi` directory - -The config_cmaq.csh script will automatically link the required libraries into the CMAQ_LIB directory. Set the locations of the netCDF, I/O API, and MPI installations on your Linux system with the following config_cmaq.csh environment variables: - -- `setenv IOAPI_INCL_DIR`: the location of the I/O API include header files on your system. -- `setenv IOAPI_LIB_DIR`: the location of compiled I/O API libraries on your system. -- `setenv NETCDF_LIB_DIR`: the location of the netCDF C library installation on your system. -- `setenv NETCDF_INCL_DIR`: the location of the netCDF C include files on your system. -- `setenv NETCDFF_LIB_DIR`: the location of the netCDF Fortran library installation on your system. -- `setenv NETCDFF_INCL_DIR`: the location of the netCDF Fortran include files on your system. -- `setenv MPI_LIB_DIR`: the location of the MPI (OpenMPI or MVAPICH) on your system. - -For example, if your netCDF C libraries are installed in /usr/local/netcdf/lib, set `NETCDF_LIB_DIR` to /usr/local/netcdf/lib. Similarly, if your I/O API library is installed in /home/cmaq/ioapi/Linux2_x86_64gfort, set `IOAPI_LIB_DIR` to /home/cmaq/ioapi/Linux2_x86_64gfort. - -*1.* Check the names of the I/O API and netCDF libraries using the `ioapi_lib` and `netcdf_lib` script variables. - -*2.* Check the name of the MPI library using the `mpi_lib` script variable. For MVAPICH use `-lmpich`; for openMPI use `-lmpi`. - -Links to these libraries will automatically be created when you run any of the build or run scripts. To manually create these libraries (this is optional), execute the config_cmaq.csh script, identifying the compiler in the command line [intel | gcc | pgi]: -``` -source config_cmaq.csh [compiler] -``` -You may also identify the version of the compiler if you wish it to be identified in build directory and executable names. This is optional. For example: -``` -source config_cmaq.csh gcc 9.5 -``` - -## Install the CMAQ reference input and output benchmark data - -Download the CMAQ two day reference input and output data for the CRACMM2 mechanism from the [AWS CMAS Data Warehouse](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. -Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: - -``` -cd $CMAQ_DATA -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input_CRACCM2.tar.gz -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output_CRACMM2.tar.gz -``` - -## Compiling CMAQ - -*Before proceeding, it should be noted that building the ICON and BCON executables are optional steps when working specifically with the benchmark data. This is because the initial condition and boundary condition files have been provided for you within the benchmark data set. For further information on these preprocessors please reference [Chapter 4](../CMAQ_UG_ch04_model_inputs.md).* - -Create the model executables for CCTM using the steps shown below. - -##### Configuration for multi-processor runs (default): - -``` -set ParOpt #> Option for MPI Runs -```` - -##### Configuration for single-processor runs (optional): - -For single-processor computing, edit the CCTM build script (bldit_cctm.csh) to indicate a single-processor run by commenting out set ParOpt as shown below. - -``` -#set ParOpt #> Option for Single Processor Runs -```` - -#### Configure CMAQ benchmark Science Modules: - -The build directory parameters for the benchmark test case include the following: - -- Multiprocessor simulation -- 3-D Advection Scheme: wrf_cons -- Horizontal diffusion: Multiscale -- Vertical diffusion: ACM2_M3Dry -- Deposition: STAGE -- Chemistry solver: EBI -- Aerosol module: cracmm -- Cloud module: acm_craccm -- Mechanism: cracmm2 -- Inline biogenic emissions -- Inline plume rise - -To configure these parameters, the CCTM Science Modules within the bldit_cctm.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in -[Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). - - -Review the bldit script for this benchmark. - -``` -cat bldit_cctm_gnu_cracmm2_stage.csh -``` - -Notice that the bldit script uses a unique BLD directory name mechansim and dry deposition scheme combination. - -``` -#> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. - if ( $?Debug_CCTM ) then - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug - else - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} - endif -``` - -Verify that the dry deposition scheme to use STAGE instead of M3DRY -``` -#> Set Dry Deposition Scheme to Stage - - set DepMod = stage -``` - -Following the requisite changes to the CCTM build script, use the following command to create the CCTM executable: - -``` -cd $CMAQ_HOME/CCTM/scripts -./bldit_cctm_gnu_cracmm2_stage.csh [compiler] [version] |& tee bldit_cctm_gnu_cracmm2_stage.log -``` - -Verify that the BLD directory contains a namelist called - -``` -CMAQ_Control_STAGE.nml -``` - -## Configure the CCTM script - -For an MPI configuration with 16 processors, - -``` -cd $CMAQ_HOME/CCTM/scripts -``` - -Edit the CCTM run script (run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh) for the MPI configuration and compiler that you will use: - -``` -setenv compiler gcc -setenv compilerVrsn 9.5 -setenv INPDIR ${CMAQ_DATA}/2018_12NE3 -@ NPCOL 8 ; @ NPROW = 4 -``` - -Most clustered multiprocessor systems require a command to start the MPI run-time environment. The default CCTM run script uses the *mpirun* command. Consult your system administrator to find out how to invoke MPI when running multiprocessor applications. - -For single-processor computing, set PROC to serial: - -``` -set PROC = serial -``` - -CCTM Science Configuration Options set to **Y** in the RunScript for the benchmark case include the following: - -- ```CTM_OCEAN_CHEM``` - use ocean halgoen chemistry and sea spray aerosol emissions -- ```KZMIN``` - minimum eddy diffusivity in each grid cell determined by land use fraction -- ```PX_VERSION``` - WRF PX land surface model -- ```CTM_ABFLUX``` - bidirectional ammonia flux for online deposition velocities -- ```CTM_BIDI_FERT_NH3``` - subtract fertilizer NH3 from emissions because it will be handled by the BiDi calculation -- ```CTM_SFC_HONO``` - surface HONO interaction -- ```CTM_GRAV_SETL``` - vdiff aerosol gravitational sedmentation -- ```CTM_BIOGEMIS``` - online biogenic emissions - -To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in -[Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). - -After configuring the MPI settings for your Linux system, check the rest of the script to ensure the correct path, date and names are used for the input data files. Per the note above, different Linux systems have different requirements for submitting MPI jobs. The command below is an example of how to submit the CCTM run script and may differ depending on the MPI requirements of your Linux system. - -``` -./run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh |& tee run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.log -``` - -## Confirm that the Benchmark Simulation Completed - -To confirm that the benchmark case ran to completion view the run log file. For MPI runs, check each of the CTM_LOG_[ProcessorID]*.log files. A successful run will contain the following line at the bottom of the log(s): - -``>>----> Program completed successfully <----<<`` - -Note: If you are running on multiple processors the log file for each processor is also moved from the $CMAQ_HOME/CCTM/scripts directory to the benchmark output directory: - -``` -$CMAQ_DATA/output_CCTM_v55_gcc_Bench_2018_12NE3_cracmm2_stage -``` -and these log files have the name convention: - -``` -CTM_LOG_[ProcessorID].v55_[compiler]_[APPL]_[YYYYMMDD] -CTM_LOG_[ProcessorID].v55_gcc_Bench_2018_12NE3_2day_20180702 -``` - -The benchmark output results will have been placed in the directory: - -``` -$CMAQ_DATA/output_CCTM_v55_gcc_Bench_2018_12NE3_cracmm2_stage -``` - -and can include upto 23 netCDF-type files: ACONC, AOD_DIAG, AELMO, APMVIS, B3GTS_S, BSOILOUT, BUDGET, CGRID, CONC, DEPV, DRYDEP, DUSTEMIS, LTNGCOL, LTNGHRLY, MEDIA_CONC, PHOTDIAG1, PHOTDIAG2, ELMO, PMVIS, SOILOUT, SSEMIS, VDIFF, VSED, WETDEP1, and WETDEP2. - - -Common errors in a CCTM simulation include the following: -- Incorrect paths to input files. Look in the CCTM screen output (capture in your log file) for an Error message about an input file not being found. -- Incorrect MPI implementation. A series of MPI errors at the end of the log file often indicate that the MPI job was not submitted correctly. - -Check the last few lines of the CCTM output log for messages to help diagnose why the simulation did not complete. - -## Check the CMAQ Benchmark Results - -To determine if CMAQ is correctly installed on your Linux system compare the results from your benchmark simulation to the reference output data downloaded from the CMAS Center. This data was generated on a Linux system with the following specifications: -- Linux Kernel 3.10.0-514.el7.x86_64 -- Red Hat Enterprise Linux Server 7.3 (Maipo) (use command: cat /etc/os-release) -- GNU GCC compiler version 9.1.0, 16 processors with OpenMPIv4.0.1 and I/O APIv3.2 tagged version 20200828 -- Debug mode turned off (```set Debug_CCTM``` commented out in $CMAQ_HOME/CCTM/scripts/bldit_cctm.csh) -- CMAQv5.4 - -The CMAQv5.4 reference output data includes a set of CCTM_ACONC_\*.nc files with layer 1 average model species concentrations for each model hour for 226 variables and a set of CCTM_WETDEP1_\*.nc files with cumulative hourly wet deposition fluxes for an additional 136 variables. The CCTM_SA_ACONC_\*.nc, CCTM_SA_CGRID_\*.nc, CCTM_SA_CONC_\*.nc, CCTM_SA_WETDEP_\*.nc and CCTM_SA_DRYDEP_\*.nc are generated when you run the CMAQ-ISAM benchmark. See the [CMAQ-ISAM Tutorial](../Tutorials/CMAQ_UG_tutorial_ISAM.md) for more information. - -Use your netCDF evaluation tool of choice to evaluate your benchmark results. For example, [VERDI](https://www.verdi-tool.org/) is a visualization tool to view CCTM results as tile plots. Statistical comparison of the results can be made with the I/O API Tools or R. - -Note, even with a successful installation and run of the benchmark case, some differences between your simulation and the reference data can occur due to differences in domain decomposition for multi-processor simulations as well as differences in compiler. These differences tend to manifest in upper layers of the model and are mostly found in predicting aerosol water (AH2O) and aerosol acidity (AH3OP), while differences are smaller for other key species like ASO4, ANO3, ACL, ALOO1, etc. These species have short atmospheric lifetimes with large changes in time and space derivatives or have model physics sensitive to small changes in concentration. Predicting these species is more sensitive to small changes in machine precision and accuracy. - diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md index d28044cff..81984c3b9 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md @@ -1,4 +1,4 @@ -# CMAQ Installation & Benchmarking Tutorial for CRACMM2 and STAGE +# CMAQ Installation & Benchmarking Tutorial Purpose: This guide describes how to install and run the CMAQ test case for the CRACMM2 mechanism with the STAGE dry deposition scheme, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. @@ -97,15 +97,7 @@ source config_cmaq.csh gcc 9.5 ## Install the CMAQ reference input and output benchmark data -Download the CMAQ two day reference input and output data for the CRACMM2 mechanism from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. - - - Use the gdrive command to download the dataset. - - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions - - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) - - Text files are included that provide a list of the files in the benchmark input and output datasets. - -The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmas-cmaq.s3.amazonaws.com/index.html). - +Download the CMAQ two day reference input and output data for the CRACMM2 mechanism from the [AWS CMAS Data Warehouse](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: ``` @@ -153,7 +145,14 @@ The build directory parameters for the benchmark test case include the following To configure these parameters, the CCTM Science Modules within the bldit_cctm.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in [Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). -To keep the BLD directory name unique for each mechansim, modify the bldit_cctm script to use + +Review the bldit script for this benchmark. + +``` +cat bldit_cctm_gnu_cracmm2_stage.csh +``` + +Notice that the bldit script uses a unique BLD directory name mechansim and dry deposition scheme combination. ``` #> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. @@ -164,7 +163,7 @@ To keep the BLD directory name unique for each mechansim, modify the bldit_cctm endif ``` -Change the dry deposition scheme to use STAGE instead of M3DRY +Verify that the dry deposition scheme to use STAGE instead of M3DRY ``` #> Set Dry Deposition Scheme to Stage @@ -175,7 +174,7 @@ Following the requisite changes to the CCTM build script, use the following comm ``` cd $CMAQ_HOME/CCTM/scripts -./bldit_cctm_craccm.csh [compiler] [version] |& tee bldit_cctm_craccm.log +./bldit_cctm_gnu_cracmm2_stage.csh [compiler] [version] |& tee bldit_cctm_gnu_cracmm2_stage.log ``` Verify that the BLD directory contains a namelist called @@ -184,21 +183,6 @@ Verify that the BLD directory contains a namelist called CMAQ_Control_STAGE.nml ``` -Change to the BLD directory and add the following lines to the bottom of the CMAQ_Control_DESID_cracmm2.nml - -``` - ! Re-Map CRACMM1 Aromatics to CRACMM2 - ! EBZ and XYE remapping, STY and XYM remapping - ! Generic scaling if not scaling by sector: 70% XYL; 30% EBZ - ! EBZ = FAC1 * XYE; STY = FAC2 * XYM ; XYL = (1-FAC1)*XYE + (1-FAC2)*XYM - 'EVERYWHERE', 'ALL' ,'XYE' ,'EBZ' ,'GAS' ,0.30,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'XYE' ,'XYL' ,'GAS' ,0.70,'UNIT','a', - - ! Generic scaling if not scaling by sector: 93% XYL; 7% STY - 'EVERYWHERE', 'ALL' ,'XYM' ,'STY' ,'GAS' ,0.07,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'XYM' ,'XYL' ,'GAS' ,0.93,'UNIT','a', -``` - ## Configure the CCTM script For an MPI configuration with 16 processors, @@ -207,7 +191,7 @@ For an MPI configuration with 16 processors, cd $CMAQ_HOME/CCTM/scripts ``` -Edit the CCTM run script (run_cctm_Bench_2018_12NE3.csh) for the MPI configuration and compiler that you will use: +Edit the CCTM run script (run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh) for the MPI configuration and compiler that you will use: ``` setenv compiler gcc @@ -241,31 +225,31 @@ To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/sc After configuring the MPI settings for your Linux system, check the rest of the script to ensure the correct path, date and names are used for the input data files. Per the note above, different Linux systems have different requirements for submitting MPI jobs. The command below is an example of how to submit the CCTM run script and may differ depending on the MPI requirements of your Linux system. ``` -./run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh |& tee cctm.log +./run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh |& tee run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.log ``` ## Confirm that the Benchmark Simulation Completed -To confirm that the benchmark case ran to completion view the run.benchmark.log file. For MPI runs, check each of the CTM_LOG_[ProcessorID]*.log files. A successful run will contain the following line at the bottom of the log(s): +To confirm that the benchmark case ran to completion view the run log file. For MPI runs, check each of the CTM_LOG_[ProcessorID]*.log files. A successful run will contain the following line at the bottom of the log(s): ``>>----> Program completed successfully <----<<`` Note: If you are running on multiple processors the log file for each processor is also moved from the $CMAQ_HOME/CCTM/scripts directory to the benchmark output directory: ``` -$CMAQ_DATA/output_CCTM_v54_[compiler]_Bench_2018_12NE3_2day +$CMAQ_DATA/output_CCTM_v55_gcc_Bench_2018_12NE3_cracmm2_stage ``` and these log files have the name convention: ``` -CTM_LOG_[ProcessorID].v54_[compiler]_[APPL]_[YYYYMMDD] -CTM_LOG_[ProcessorID].v54_gcc_Bench_2018_12NE3_2day_20180702 +CTM_LOG_[ProcessorID].v55_[compiler]_[APPL]_[YYYYMMDD] +CTM_LOG_[ProcessorID].v55_gcc_Bench_2018_12NE3_2day_20180702 ``` The benchmark output results will have been placed in the directory: ``` -$CMAQ_DATA/output_CCTM_v54_[compiler]_Bench_2018_12NE3_2day +$CMAQ_DATA/output_CCTM_v55_gcc_Bench_2018_12NE3_cracmm2_stage ``` and can include upto 23 netCDF-type files: ACONC, AOD_DIAG, AELMO, APMVIS, B3GTS_S, BSOILOUT, BUDGET, CGRID, CONC, DEPV, DRYDEP, DUSTEMIS, LTNGCOL, LTNGHRLY, MEDIA_CONC, PHOTDIAG1, PHOTDIAG2, ELMO, PMVIS, SOILOUT, SSEMIS, VDIFF, VSED, WETDEP1, and WETDEP2. From c9d71689df8b07e667100f1c6ea15a6545b6b4b6 Mon Sep 17 00:00:00 2001 From: lizadams Date: Fri, 27 Sep 2024 14:47:02 -0400 Subject: [PATCH 246/375] update --- .../Tutorials/CMAQ_UG_tutorial_ISAM.md | 172 +++++++++++++++++- .../Tutorials/CMAQ_UG_tutorial_benchmark.md | 8 +- .../CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md | 12 +- 3 files changed, 179 insertions(+), 13 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index d770ea142..f4526b890 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -10,9 +10,9 @@ If you encounter any errors, try running the model in debug mode and refer to th https://forum.cmascenter.org/ ### Step 2: Read the User Guide Chapter on Integrated Source Apportionment Method. -- [CMAQ User's Guide Chapter on ISAM](../CMAQ_UG_ch11_ISAM.md) +- [CMAQ User Guide Chapter on ISAM](../CMAQ_UG_ch11_ISAM.md) -Note: This benchmark is intended to demonstrate how to build and run CMAQ-ISAM with the provided input files: +Note: This benchmark is intended to demonstrate how to build and run CMAQ-ISAM with the provided input files The following isam control file is provided in the CCTM/scripts directory when you obtain the CMAQv5.5 code from github (step 5 below): @@ -260,7 +260,7 @@ CCTM_SA_ACONC_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc CCTM_SA_CGRID_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc ``` -### Step 16: Compare the tagged species in `CCTM_SA_CONC` output file to the full species in `CCTM_CONC` output file +### Step 16: Compare the tagged species in `CCTM_SA_CONC` output file to the species in `CCTM_CONC` output file ``` ncdump -h CCTM_SA_CONC_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_4x8_all_CONC_20180701.nc | grep SO2_ @@ -297,3 +297,169 @@ SO2_EGU[1] + SO2_BIO[1] + SO2_BCO[1] + SO2_OTH[1] + SO2_ICO[1] = SO2[2] ``` Both tagged species EGU and BIO contribute to the bulk concentration, therefore the sum of all tagged species including boundary conditions (BCO) and initial conditions (ICO) and other (all untagged emissions) (OTH) + +### Step 17: Obtain scripts and species definition files to post process CMAQ-ISAM + +Note: we will be running each post processing routine twice, once for the tagged species found in the SA_ACONC, SA_DRYDEP, and SA_WETDEP output files, and again for the untagged species found in ACONC and the DRYDEP, WETDEP files. This will allow us to confirm that the sum of the tagged species is equal to the untagged species. + +Example species definition file and combine run script are provided to help users post-process the CMAQ-ISAM output to aggregate output from the SA_ACONC, SA_DRYDEP, and SA_WETDEP files. + +Download the run script and species definition files for this case from the AWS S3 Bucket. + +``` +cd CMAQ_v5.5/POST/combine/scripts + +SpecDef_ISAM_Conc_benchmark_cb6r5_ae7_aq.txt +SpecDef_ISAM_Dep_benchmark_cb6r5_ae7_aq.txt +run_combine_ISAM_sa_aconc+sa_dep_example_cb6r5_ae7_aq_12ne3_benchmark.csh +run_combine_ISAM_aconc+dep_example_cb6r5_ae7_aq_12ne3_benchmark.csh +``` + +Copy these files to the POST/combine/scripts directory + +### Step 18: Build and run combine + +Build the combine executable + +``` +cd CMAQ_v5.5/POST/combine/scripts +./bldit_combine.csh gcc |& tee ./bldit_combine.log +``` + +Run combine to create a file with all hours for the time period of your ISAM simulation for each tagged aggregate species in the SA_ACONC output file and for another file with all hours of the time period in your ISAM simulation for the SA_DRYDEP and SA_WETDEP output files. + +``` +./run_combine_ISAM_sa_aconc+sa_dep_example_cb6r5_ae7_aq_12ne3_benchmark.csh gcc |& tee ./run_combine_ISAM_sa_aconc+sa_dep_example_cb6r5_ae7_aq_12ne3_benchmark.log +``` + +Run combine to create a file with all hours for the time period of your ISAM simulation for each aggregate species in the ACONC output file and for another file with all hours of the time period in your ISAM simulation for the DRYDEP and WETDEP output files. + +``` +./run_combine_ISAM_aconc+dep_example_cb6r5_ae7_aq_12ne3_benchmark.csh |& tee ./run_combine_ISAM_aconc+dep_example_cb6r5_ae7_aq_12ne3_benchmark.log +``` + +Examine the output files + +``` +ls -lrt ../../../data/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry/POST +``` + +You should see that four output files were created: + +``` +-rw-rw-r-- 1 lizadams rc_cep-emc_psx 223856976 Sep 26 15:32 COMBINE_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc +-rw-rw-r-- 1 lizadams rc_cep-emc_psx 223857340 Sep 26 15:33 COMBINE_DEP_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc +-rw-rw-r-- 1 lizadams rc_cep-emc_psx 393254448 Sep 26 15:33 COMBINE_SA_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc +-rw-rw-r-- 1 lizadams rc_cep-emc_psx 526353656 Sep 26 15:34 COMBINE_SA_DEP_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc +``` + +### Step 19: Review the species definition files for the ISAM run. + +The species definition file calculates each of the tagged aggregate species. To see each tagged species definition for NOX, where NOX = NO + NO2, use the following grep command:. + +``` +grep NOX_ SpecDef_ISAM_Conc_benchmark_cb6r5_ae7_aq.txt +``` + +Output: + +``` +NOX_EGU ,ppbV ,1000.0*(NO_EGU[1] + NO2_EGU[1]) +NOX_BIO ,ppbV ,1000.0*(NO_BIO[1] + NO2_BIO[1]) +NOX_BCO ,ppbV ,1000.0*(NO_BCO[1] + NO2_BCO[1]) +NOX_ICO ,ppbV ,1000.0*(NO_ICO[1] + NO2_ICO[1]) +NOX_OTH ,ppbV ,1000.0*(NO_OTH[1] + NO2_OTH[1]) +``` + + +### Step 20: Build and run calc_tmetric to calculate the average of all tagged species, and the average of all species for your ISAM run. + +Download the run scripts for calc_tmetric for the ISAM run and copy them to the calc_tmetric/scripts directory.. + +``` +run_calc_tmetric_ISAM_sa_aconc.csh +run_calc_tmetric_ISAM_aconc.csh +``` + +Build the calc_tmetric executable + +``` +cd CMAQ_v5.5/POST/calc_tmetric/scripts +./bldit_calc_tmetric.csh gcc |& tee ./bldit_calc_tmetric.log +``` + +Run calc_tmetric + +``` +./run_calc_tmetric_ISAM_sa_aconc.csh gcc |& tee ./run_calc_tmetric_ISAM_sa_aconc.log +./run_calc_tmetric_ISAM_aconc.csh gcc |& tee ./run_calc_tmetric_ISAM_aconc.log +``` + +### Step 21: Build and run hr2day to calculate the daily average concentration for each tagged and aggregated species. + +Download the run scripts for hr2day for the ISAM run and copy them to the hr2day/scripts directory. + +``` +run_hr2day_ISAM_sa_aconc.csh +run_hr2day_ISAM_aconc.csh +``` + +Build the hr2day executable + +``` +cd CMAQ_v5.5/POST/hr2day/scripts +./bldit_hr2day.csh gcc |& tee ./bldit_hr2day.log +``` + +Run hr2day for both the SA_ACONC and ACONC file + +``` +./run_hr2day_ISAM_sa_aconc.csh gcc |& tee ./run_hr2day_ISAM_sa_aconc.log +./run_hr2day_ISAM_aconc.csh gcc |& tee ./run_hr2day_ISAM_aconc.log +``` + +Note, there are HR2DAY configuration options that were modified from the default settings, as this ISAM benchmark contains only two days of output, so it does not make sense to use the option to change from GMT time to local time, which is typically done to compare to observational data. + +The output data is set to be saved under the ISAM output directory. + +``` +cd CMAQ_v5.5/data/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry/POST +ls -lrt +``` + +Output: + +``` +-rw-rw-r-- 1 lizadams rc_cep-emc_psx 223856976 Sep 26 15:32 COMBINE_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc +-rw-rw-r-- 1 lizadams rc_cep-emc_psx 223857340 Sep 26 15:33 COMBINE_DEP_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc +-rw-rw-r-- 1 lizadams rc_cep-emc_psx 393254448 Sep 26 15:33 COMBINE_SA_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc +-rw-rw-r-- 1 lizadams rc_cep-emc_psx 526353656 Sep 26 15:34 COMBINE_SA_DEP_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc +-rw-rw-r-- 1 lizadams rc_cep-emc_psx 8251888 Sep 27 14:07 AVG_COMBINE_SA_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.nc +-rw-rw-r-- 1 lizadams rc_cep-emc_psx 432268 Sep 27 14:13 dailyavg_SA_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc +-rw-rw-r-- 1 lizadams rc_cep-emc_psx 95208 Sep 27 14:14 dailyavg_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.nc +``` + +VERDI can be used to compare the aggregated species in ACONC to the sum of the tagged aggregated species in the SA_ACONC file. + +``` +verdi -f $cwd/COMBINE_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc -f $cwd/COMBINE_SA_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc -s "NOX[1]" -g tile -s "NOX_EGU[2]+NOX_BIO[2]+NOX_BCO[2]+NOX_ICO[2]+NOX_OTH[2]" -g tile +``` + +VERDI can also be used to confirm that the average concentration of the aggregated species is equal to the sum of the tagged aggregated species, please note that this average is taken over two days, as the ISAM benchmark ran for two days, and two days were available in the combine output file. + +``` +verdi -f $cwd/AVG_COMBINE_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.nc -f $cwd/AVG_COMBINE_SA_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.nc -s "NOX[1]" -g tile -s "NOX_EGU_AVG[2]+NOX_BIO_AVG[2]+NOX_BCO_AVG[2]+NOX_ICO_AVG[2]+NOX_OTH_AVG[2]" -g tile +``` + +VERDI can also be used to confirm that the daily average concentration of the aggregated species is equal to the sum of the tagged aggregated species. Note, that there are two timesteps in each daily average file, one containing the average for day 1 and one containing the average for day 2 + +``` +verdi -f $cwd/dailyavg_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc -f $cwd/dailyavg_SA_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc -s "NOX[1]" -g tile -s "NOX_EGU[2]+NOX_BIO[2]+NOX_BCO[2]+NOX_ICO[2]+NOX_OTH[2]" -g tile +``` + + + + + + + diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index 9f10e066c..7b5fa66b6 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -239,19 +239,19 @@ To confirm that the benchmark case ran to completion view the run.benchmark.log Note: If you are running on multiple processors the log file for each processor is also moved from the $CMAQ_HOME/CCTM/scripts directory to the benchmark output directory: ``` -$CMAQ_DATA/output_CCTM_v54_[compiler]_Bench_2018_12NE3_2day +$CMAQ_DATA/output_CCTM_v55_[compiler]_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry ``` and these log files have the name convention: ``` -CTM_LOG_[ProcessorID].v54_[compiler]_[APPL]_[YYYYMMDD] -CTM_LOG_[ProcessorID].v54_gcc_Bench_2018_12NE3_2day_20180702 +CTM_LOG_[ProcessorID].v55_[compiler]_[APPL]_[YYYYMMDD] +CTM_LOG_[ProcessorID].v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180702 ``` The benchmark output results will have been placed in the directory: ``` -$CMAQ_DATA/output_CCTM_v54_[compiler]_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry +$CMAQ_DATA/output_CCTM_v55_[compiler]_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry ``` and can include upto 23 netCDF-type files: ACONC, AOD_DIAG, AELMO, APMVIS, B3GTS_S, BSOILOUT, BUDGET, CGRID, CONC, DEPV, DRYDEP, DUSTEMIS, LTNGCOL, LTNGHRLY, MEDIA_CONC, PHOTDIAG1, PHOTDIAG2, ELMO, PMVIS, SOILOUT, SSEMIS, VDIFF, VSED, WETDEP1, and WETDEP2. diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md index ef2cb4445..7b5fa66b6 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md @@ -221,13 +221,13 @@ CCTM Science Configuration Options set to **Y** in the RunScript for the benchma - ```CTM_GRAV_SETL``` - vdiff aerosol gravitational sedmentation - ```CTM_BIOGEMIS``` - online biogenic emissions -To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in +To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in [Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). After configuring the MPI settings for your Linux system, check the rest of the script to ensure the correct path, date and names are used for the input data files. Per the note above, different Linux systems have different requirements for submitting MPI jobs. The command below is an example of how to submit the CCTM run script and may differ depending on the MPI requirements of your Linux system. ``` -./run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh |& tee cctm.log +./run_cctm_Bench_2018_12NE3_cb6r5_m3dry.csh |& tee cctm.log ``` ## Confirm that the Benchmark Simulation Completed @@ -239,19 +239,19 @@ To confirm that the benchmark case ran to completion view the run.benchmark.log Note: If you are running on multiple processors the log file for each processor is also moved from the $CMAQ_HOME/CCTM/scripts directory to the benchmark output directory: ``` -$CMAQ_DATA/output_CCTM_v54_[compiler]_Bench_2018_12NE3_2day +$CMAQ_DATA/output_CCTM_v55_[compiler]_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry ``` and these log files have the name convention: ``` -CTM_LOG_[ProcessorID].v54_[compiler]_[APPL]_[YYYYMMDD] -CTM_LOG_[ProcessorID].v54_gcc_Bench_2018_12NE3_2day_20180702 +CTM_LOG_[ProcessorID].v55_[compiler]_[APPL]_[YYYYMMDD] +CTM_LOG_[ProcessorID].v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180702 ``` The benchmark output results will have been placed in the directory: ``` -$CMAQ_DATA/output_CCTM_v54_[compiler]_Bench_2018_12NE3_2day +$CMAQ_DATA/output_CCTM_v55_[compiler]_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry ``` and can include upto 23 netCDF-type files: ACONC, AOD_DIAG, AELMO, APMVIS, B3GTS_S, BSOILOUT, BUDGET, CGRID, CONC, DEPV, DRYDEP, DUSTEMIS, LTNGCOL, LTNGHRLY, MEDIA_CONC, PHOTDIAG1, PHOTDIAG2, ELMO, PMVIS, SOILOUT, SSEMIS, VDIFF, VSED, WETDEP1, and WETDEP2. From 9472284421da970934f91efdcb409e6abc4a1020 Mon Sep 17 00:00:00 2001 From: lizadams Date: Fri, 27 Sep 2024 15:21:36 -0400 Subject: [PATCH 247/375] update --- .../Tutorials/CMAQ_UG_tutorial_ISAM.md | 88 +++++++++++++++---- 1 file changed, 70 insertions(+), 18 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index f4526b890..ab9b28273 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -203,48 +203,83 @@ The input files for the CMAQv5.4 ISAM benchmark case are the same as the benchma ### Step 13: Edit the CMAQ-ISAM runscript +Note: there is an example of the run script on the AWS S3 bucket. + +``` +cd CMAQ_v5.5/CCTM/scripts +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ISAM.csh +cat run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ISAM.csh +``` + +Verify that the following settings. + +Verify the General Parameters for Configuring the Simulation + +``` + set VRSN = v55_ISAM + set PROC = mpi #> serial or mpi + set MECH = cb6r5_ae7_aq #> Mechanism ID + set APPL = Bench_2018_12NE3_${MECH}_m3dry #> Application Name (e.g. Gridname) +``` + +Verify the Build directory to include the dry deposition mechanism in the name + +``` +#> Set the build directory (this is where the CMAQ executable +#> is located by default). + set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${MECH}_m3dry +``` + +Verify the input data directory + ``` -cp run_cctm_Bench_2018_12NE3.csh run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ISAM.csh -gedit run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ISAM.csh +#> Set Working, Input, and Output Directories + setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. + setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory + setenv INPDIR ${CMAQ_DATA}/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input/2018_12NE3 #> Input Directory ``` -Set General Parameters for Configuring the Simulation +Verify the start and end dates to match the input data for this benchmark. ``` -set VRSN = v55_ISAM +#> Set Start and End Days for looping + setenv NEW_START TRUE #> Set to FALSE for model restart + set START_DATE = "2018-07-01" #> beginning date (July 1, 2016) + set END_DATE = "2018-07-02" #> ending date (July 1, 2016) ``` -Turn on ISAM and uncomment the SA_IOLIST file and uncomment the ISAM regions file +Verify that ISAM is turned on and that the SA_IOLIST file and ISAM regions file definitions are uncommented. ``` setenv CTM_ISAM Y setenv SA_IOLIST ${WORKDIR}/isam_control.2018_12NE3.txt setenv ISAM_REGIONS $INPDIR/GRIDMASK_STATES_12NE3.nc ``` + Run or Submit the script to the batch queueing system ``` -./run_cctm_Bench_2018_12NE3.ISAM.csh +./run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ISAM.csh ``` OR (If using SLRUM) ``` -sbatch run_cctm_Bench_2018_12NE3.ISAM.csh +sbatch run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ISAM.csh ``` ### Step 14: Verify that the run was successful - look for the output directory ``` - cd ../../data/output_CCTM_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM + cd ../../data/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry ``` If the run was successful you will see the following output ``` - tail ./LOGS/CTM_LOG_000.v532_ISAM_gcc_Bench_2016_12SE1_20160702 + tail ./LOGS/CTM_LOG_000.v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180702 ``` |>--- PROGRAM COMPLETED SUCCESSFULLY ---<| @@ -253,17 +288,17 @@ sbatch run_cctm_Bench_2018_12NE3.ISAM.csh The following ISAM output files are generated in addition to the standard CMAQ output files. Note, the answers will not be comparible if emission scaling is used (Step 10 - optional) ``` -CCTM_SA_DRYDEP_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc -CCTM_SA_WETDEP_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc -CCTM_SA_CONC_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc -CCTM_SA_ACONC_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc -CCTM_SA_CGRID_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc +CCTM_SA_CONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180702.nc +CCTM_SA_WETDEP_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180702.nc +CCTM_SA_DRYDEP_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180702.nc +CCTM_SA_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180702.nc +CCTM_SA_CGRID_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180702.nc ``` ### Step 16: Compare the tagged species in `CCTM_SA_CONC` output file to the species in `CCTM_CONC` output file ``` -ncdump -h CCTM_SA_CONC_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_4x8_all_CONC_20180701.nc | grep SO2_ +ncdump -h CCTM_SA_CONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180701.nc | grep SO2_ ``` The following tagged species should add up to the total SO2 in the CONC file. @@ -289,13 +324,17 @@ The following tagged species should add up to the total SO2 in the CONC file. SO2_ICO:units = "ppmV " ; SO2_ICO:var_desc = "tracer conc. -[1] = CONC -[2] = SA_CONC +``` + +The sum of the tagged species in the SA_CONC file is equal to the species in the CONC file. ``` SO2_EGU[1] + SO2_BIO[1] + SO2_BCO[1] + SO2_OTH[1] + SO2_ICO[1] = SO2[2] ``` +[1] = SA_CONC +[2] = CONC + Both tagged species EGU and BIO contribute to the bulk concentration, therefore the sum of all tagged species including boundary conditions (BCO) and initial conditions (ICO) and other (all untagged emissions) (OTH) ### Step 17: Obtain scripts and species definition files to post process CMAQ-ISAM @@ -308,14 +347,27 @@ Download the run script and species definition files for this case from the AWS ``` cd CMAQ_v5.5/POST/combine/scripts +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/combine/scripts/run_combine_ISAM_aconc%2Bdep_example_cb6r5_ae7_aq_12ne3_benchmark.csh +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/combine/scripts/run_combine_ISAM_sa_aconc%2Bsa_dep_example_cb6r5_ae7_aq_12ne3_benchmark.csh +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/combine/scripts/SpecDef_ISAM_Conc_benchmark_cb6r5_ae7_aq.txt +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/combine/scripts/SpecDef_ISAM_Dep_benchmark_cb6r5_ae7_aq.txt +``` + +List the files after they have been downloaded +``` +ls -lrt +``` + +Output + +``` SpecDef_ISAM_Conc_benchmark_cb6r5_ae7_aq.txt SpecDef_ISAM_Dep_benchmark_cb6r5_ae7_aq.txt run_combine_ISAM_sa_aconc+sa_dep_example_cb6r5_ae7_aq_12ne3_benchmark.csh run_combine_ISAM_aconc+dep_example_cb6r5_ae7_aq_12ne3_benchmark.csh ``` -Copy these files to the POST/combine/scripts directory ### Step 18: Build and run combine From 4438a424eb396a3e6de52a9f740f8dc67c496805 Mon Sep 17 00:00:00 2001 From: lizadams Date: Fri, 27 Sep 2024 15:24:08 -0400 Subject: [PATCH 248/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index ab9b28273..257067411 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -440,9 +440,11 @@ cd CMAQ_v5.5/POST/calc_tmetric/scripts ./bldit_calc_tmetric.csh gcc |& tee ./bldit_calc_tmetric.log ``` -Run calc_tmetric +Obtain and Run the calc_tmetric example scripts ``` +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/calc_tmetric/scripts/run_calc_tmetric_ISAM_aconc.csh +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/calc_tmetric/scripts/run_calc_tmetric_ISAM_sa_aconc.csh ./run_calc_tmetric_ISAM_sa_aconc.csh gcc |& tee ./run_calc_tmetric_ISAM_sa_aconc.log ./run_calc_tmetric_ISAM_aconc.csh gcc |& tee ./run_calc_tmetric_ISAM_aconc.log ``` @@ -451,9 +453,11 @@ Run calc_tmetric Download the run scripts for hr2day for the ISAM run and copy them to the hr2day/scripts directory. + ``` -run_hr2day_ISAM_sa_aconc.csh -run_hr2day_ISAM_aconc.csh +cd CMAQ_v5.5/POST/hr2day/scripts +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/hr2day/scripts/run_hr2day_ISAM_aconc.csh +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/hr2day/scripts/run_hr2day_ISAM_sa_aconc.csh ``` Build the hr2day executable @@ -479,7 +483,7 @@ cd CMAQ_v5.5/data/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry/P ls -lrt ``` -Output: +List of POST Output files: ``` -rw-rw-r-- 1 lizadams rc_cep-emc_psx 223856976 Sep 26 15:32 COMBINE_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc From 2afc7d03e657ff88c9e03a12ecc11214e92241f3 Mon Sep 17 00:00:00 2001 From: lizadams Date: Fri, 27 Sep 2024 15:25:21 -0400 Subject: [PATCH 249/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 257067411..f94c6fdd8 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -211,7 +211,7 @@ wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5 cat run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ISAM.csh ``` -Verify that the following settings. +Verify the following settings in the run script for this ISAM benchmark. Verify the General Parameters for Configuring the Simulation From fc293623deb440823d02e90233110e543e1e1dc3 Mon Sep 17 00:00:00 2001 From: lizadams Date: Fri, 27 Sep 2024 17:14:47 -0400 Subject: [PATCH 250/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index f94c6fdd8..9bd70b65c 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -195,6 +195,7 @@ Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and ``` cd $CMAQ_DATA +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz ``` From 19890f9196eb27458aca2e0615b2750249839a29 Mon Sep 17 00:00:00 2001 From: lizadams Date: Fri, 27 Sep 2024 17:24:51 -0400 Subject: [PATCH 251/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 9bd70b65c..8b4a40483 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -265,7 +265,7 @@ Run or Submit the script to the batch queueing system ./run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ISAM.csh ``` -OR (If using SLRUM) +OR (If using SLRUM) edit the #SBATCH commands at the top of the script for your machine, then run using ``` sbatch run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ISAM.csh From bd52d38b67860471c3b694018403688f2f2a5004 Mon Sep 17 00:00:00 2001 From: lizadams Date: Fri, 27 Sep 2024 17:25:48 -0400 Subject: [PATCH 252/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 8b4a40483..ab034c5e7 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -286,7 +286,7 @@ sbatch run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ISAM.csh ### Step 15: Compare output with the 2 day benchmark outputs provided on the google drive -The following ISAM output files are generated in addition to the standard CMAQ output files. Note, the answers will not be comparible if emission scaling is used (Step 10 - optional) +The following ISAM output files are generated in addition to the standard CMAQ output files. Note, the answers will not be comparible if emission scaling is used (Step 11 - optional) ``` CCTM_SA_CONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180702.nc From 4ff2fb03d2176e7293326ab9428629cde5e5e665 Mon Sep 17 00:00:00 2001 From: lizadams Date: Fri, 27 Sep 2024 17:28:00 -0400 Subject: [PATCH 253/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index ab034c5e7..e65f988c9 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -286,7 +286,7 @@ sbatch run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ISAM.csh ### Step 15: Compare output with the 2 day benchmark outputs provided on the google drive -The following ISAM output files are generated in addition to the standard CMAQ output files. Note, the answers will not be comparible if emission scaling is used (Step 11 - optional) +The following ISAM output files are generated in addition to the standard CMAQ output files. Note, the ACONC files created for the benchmark case without ISAM and this run will not be comparible if emission scaling is used (Step 11 - optional), but if emission scaling was not used, the files should be identical. ``` CCTM_SA_CONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180702.nc From 47c6ca0839671307c846fec86ce904cd86e1282e Mon Sep 17 00:00:00 2001 From: lizadams Date: Fri, 27 Sep 2024 17:30:01 -0400 Subject: [PATCH 254/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index e65f988c9..9417cc6ba 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -302,8 +302,10 @@ CCTM_SA_CGRID_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180702.nc ncdump -h CCTM_SA_CONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180701.nc | grep SO2_ ``` + The following tagged species should add up to the total SO2 in the CONC file. +``` float SO2_EGU(TSTEP, LAY, ROW, COL) ; SO2_EGU:long_name = "SO2_EGU " ; SO2_EGU:units = "ppmV " ; @@ -324,17 +326,16 @@ The following tagged species should add up to the total SO2 in the CONC file. SO2_ICO:long_name = "SO2_ICO " ; SO2_ICO:units = "ppmV " ; SO2_ICO:var_desc = "tracer conc. - ``` The sum of the tagged species in the SA_CONC file is equal to the species in the CONC file. ``` SO2_EGU[1] + SO2_BIO[1] + SO2_BCO[1] + SO2_OTH[1] + SO2_ICO[1] = SO2[2] -``` [1] = SA_CONC [2] = CONC +``` Both tagged species EGU and BIO contribute to the bulk concentration, therefore the sum of all tagged species including boundary conditions (BCO) and initial conditions (ICO) and other (all untagged emissions) (OTH) From c5ee7796e50b748773c24a8ddf36dc0ec4a54056 Mon Sep 17 00:00:00 2001 From: lizadams Date: Fri, 27 Sep 2024 17:34:53 -0400 Subject: [PATCH 255/375] update --- .../Tutorials/CMAQ_UG_tutorial_ISAM.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 9417cc6ba..09a637354 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -428,12 +428,6 @@ NOX_OTH ,ppbV ,1000.0*(NO_OTH[1] + NO2_OTH[1]) ### Step 20: Build and run calc_tmetric to calculate the average of all tagged species, and the average of all species for your ISAM run. -Download the run scripts for calc_tmetric for the ISAM run and copy them to the calc_tmetric/scripts directory.. - -``` -run_calc_tmetric_ISAM_sa_aconc.csh -run_calc_tmetric_ISAM_aconc.csh -``` Build the calc_tmetric executable @@ -442,19 +436,31 @@ cd CMAQ_v5.5/POST/calc_tmetric/scripts ./bldit_calc_tmetric.csh gcc |& tee ./bldit_calc_tmetric.log ``` -Obtain and Run the calc_tmetric example scripts +Download the run scripts for calc_tmetric for the ISAM run and copy them to the calc_tmetric/scripts directory.. ``` +cd CMAQ_v5.5/POST/calc_tmetric/scripts wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/calc_tmetric/scripts/run_calc_tmetric_ISAM_aconc.csh wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/calc_tmetric/scripts/run_calc_tmetric_ISAM_sa_aconc.csh +``` + +Run the calc_tmetric scripts + +``` ./run_calc_tmetric_ISAM_sa_aconc.csh gcc |& tee ./run_calc_tmetric_ISAM_sa_aconc.log ./run_calc_tmetric_ISAM_aconc.csh gcc |& tee ./run_calc_tmetric_ISAM_aconc.log ``` ### Step 21: Build and run hr2day to calculate the daily average concentration for each tagged and aggregated species. -Download the run scripts for hr2day for the ISAM run and copy them to the hr2day/scripts directory. +Build the hr2day executable + +``` +cd CMAQ_v5.5/POST/hr2day/scripts +./bldit_hr2day.csh gcc |& tee ./bldit_hr2day.log +``` +Download the run scripts for hr2day for the ISAM run ``` cd CMAQ_v5.5/POST/hr2day/scripts @@ -462,12 +468,6 @@ wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5 wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/hr2day/scripts/run_hr2day_ISAM_sa_aconc.csh ``` -Build the hr2day executable - -``` -cd CMAQ_v5.5/POST/hr2day/scripts -./bldit_hr2day.csh gcc |& tee ./bldit_hr2day.log -``` Run hr2day for both the SA_ACONC and ACONC file From b94c5a1730f4d0f4d7c232ef6d508a3d93c7c079 Mon Sep 17 00:00:00 2001 From: lizadams Date: Fri, 27 Sep 2024 17:35:44 -0400 Subject: [PATCH 256/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 09a637354..43c32ef96 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -500,6 +500,7 @@ List of POST Output files: VERDI can be used to compare the aggregated species in ACONC to the sum of the tagged aggregated species in the SA_ACONC file. ``` +cd CMAQ_v5.5/data/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry/POST verdi -f $cwd/COMBINE_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc -f $cwd/COMBINE_SA_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc -s "NOX[1]" -g tile -s "NOX_EGU[2]+NOX_BIO[2]+NOX_BCO[2]+NOX_ICO[2]+NOX_OTH[2]" -g tile ``` From 502a30d3689ab2e4b6598f79cee409528a2cabaf Mon Sep 17 00:00:00 2001 From: lizadams Date: Fri, 27 Sep 2024 17:40:12 -0400 Subject: [PATCH 257/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 43c32ef96..820a02f9c 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -503,6 +503,11 @@ VERDI can be used to compare the aggregated species in ACONC to the sum of the t cd CMAQ_v5.5/data/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry/POST verdi -f $cwd/COMBINE_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc -f $cwd/COMBINE_SA_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc -s "NOX[1]" -g tile -s "NOX_EGU[2]+NOX_BIO[2]+NOX_BCO[2]+NOX_ICO[2]+NOX_OTH[2]" -g tile ``` +Note, the min and max of the two tile plots should be identical. The difference can also be calculated to verify that they are only different by numerical roundoff. + +``` +verdi -f $cwd/COMBINE_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc -f $cwd/COMBINE_SA_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_201807.nc -s "NOX[1] - (NOX_EGU[2]+NOX_BIO[2]+NOX_BCO[2]+NOX_ICO[2]+NOX_OTH[2])" -g tile +``` VERDI can also be used to confirm that the average concentration of the aggregated species is equal to the sum of the tagged aggregated species, please note that this average is taken over two days, as the ISAM benchmark ran for two days, and two days were available in the combine output file. From c0c10f540f6a7e8673279e50541616878ec5a425 Mon Sep 17 00:00:00 2001 From: chogrefe Date: Fri, 27 Sep 2024 17:54:37 -0400 Subject: [PATCH 258/375] Add CMAQ_UG_ch06 STAGE NH3 bidi considerations Draft addition to the STAGE documentation section, pending review of the third bullet. --- .../CMAQ_UG_ch06_model_configuration_options.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index af0b9b9a8..e9ef42ba1 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -255,6 +255,14 @@ The main upgrade for version 5.4 is the replacement of the aerosol dry depositio In CMAQ v5.3., a new tiled, land use specific, dry deposition scheme, the Surface Tiled Aerosol and Gaseous Exchange (STAGE), option has been developed to better estimate atmospheric deposition for terrestrial and aquatic ecosystem health and applications to evaluate the impact of dry deposition on ambient air quality. This new scheme explicitly supports Weather Research and Forecasting (WRF) simulations with a variety of land surface schemes (Noah, Pleim-Xiu, etc). The model resistance framework, [Figure 6-1](#Figure6-1), parameterizes air-surface exchange as a gradient process and is used for both bidirectional exchange and dry deposition following the widely used resistance model of Nemitz et al. (2001). Grid scale fluxes are estimated from sub-grid cell land use specific fluxes and are area weighted to the grid cell totals which are then output in the standard dry deposition file with positive values indicating deposition and negative values indicating evasion. The model resistances are largely estimated following Massad et al. (2010) with the following exceptions. Deposition to wetted surfaces considers the bulk accommodation coefficient, following Fahey et al. (2017), and can be a limiting factor for highly soluble compounds. The in-canopy resistance is derived using the canopy momentum attenuation parameterization from Yi (2008). Aerosol dry deposition includes parameterizations for deposition to water or bare ground surfaces (Giorgi 1986), and vegetated surfaces (Slinn 1982), using the characteristic leaf radius parameterization of Zhang et al. (2001). The ammonia bidirectional option follows the ammonia specific parameterizations of Massad et al. (2010). Mercury bidirectional exchange is also available and follows the parameterization of Bash (2010). In this modeling framework, it is possible to consider bidirectional exchange for any species by providing a parametrization or constant that sets the stomatal, cuticular, soil and/or water compensation point as a value greater than 0. The ammonia bidirectional exchange model has been found to capture the seasonality of satellite and in-situ observations ([Wang et al., 2020](https://doi.org/10.1029/2020GL090579)). In CMAQv5.4, the non-agriculture NH3 emission potentials have been revised following recent observations ([Walker et al., 2022](https://doi.org/10.5194/bg-2022-133)). + +STAGE ammonia bidirectional calculations rely on input files generated by EPIC and, except on the first simulation day, the results of the previous day's STAGE soil NH4 chemistry calculations that are stored in the previous day's `CCTM_MEDIA_CONC` output file. The following considerations apply when using the STAGE ammonia bidirectional module: + +1. Ammonia bidirectional exchange in STAGE was developed to track the mass balance of the soil NH4 because the CMAQ-STAGE estimate of NH3 evasion differs from EPIC. The discrepancy between CMAQ-STAGE simulations of the soil NH4 in the MEDIA_CONC and EPIC input files will grow over time due to the differences that the parameterization of model evasion have on the soil mass balance. +2. Initialization of the bidirectional exchange soil NH4 on different dates will likely result in persistent model differences that can persist for months depending on the time of the initialization and environmental conditions. +3. When performing multiyear CMAQ simulations using the ammonia bidirectional flux module, Jan. 1st of each simulation year should be initialized solely from EPIC files (i.e. not use the December 31 `CCTM_MEDIA_CONC` file from the previous year) as current versions of EPIC used in FEST-C do not reasonably simulate multiyear runs and simulations are conducted for the calendar year. + + From 36ec7821b1a989b306b21e5461c9608fb4aad615 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 11:01:10 -0400 Subject: [PATCH 259/375] update --- ...tm_Bench_2018_12NE3_CRACMM2_STAGE_ISAM.csh | 826 ------------------ .../run_cctm_Bench_2018_12NE3_cb6r5_stage.csh | 818 ----------------- 2 files changed, 1644 deletions(-) delete mode 100755 CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_ISAM.csh delete mode 100755 CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_stage.csh diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_ISAM.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_ISAM.csh deleted file mode 100755 index 3654ab145..000000000 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE_ISAM.csh +++ /dev/null @@ -1,826 +0,0 @@ -#!/bin/csh -f -#SBATCH -J CMAQ -#SBATCH --nodes=2 -#SBATCH --ntasks-per-node=16 -#SBATCH --time=2:00:00 -#SBATCH -p debug_queue -##SBATCH -p 528_queue -#SBATCH -o /proj/ie/proj/CMAS/CMAQ/CMAQv5.5_testing/CMAQ_v5.5/CCTM/scripts/cmaq_cracmm2_stage_ISAM_%j.txt - - -# ===================== CCTMv5.5.X Run Script ========================= -# Usage: run.cctm >&! cctm_Bench_2018_12SE1.log & -# -# To report problems or request help with this script/program: -# http://www.epa.gov/cmaq (EPA CMAQ Website) -# http://www.cmascenter.org (CMAS Website) -# =================================================================== - -# =================================================================== -#> Runtime Environment Options -# =================================================================== - -echo 'Start Model Run At ' `date` - -#> Toggle Diagnostic Mode which will print verbose information to -#> standard output - setenv CTM_DIAG_LVL 0 - -#> Choose compiler and set up CMAQ environment with correct -#> libraries using config.cmaq. Options: intel | gcc | pgi - if ( ! $?compiler ) then - setenv compiler gcc - endif - if ( ! $?compilerVrsn ) then - setenv compilerVrsn Empty - endif - -#> Source the config.cmaq file to set the build environment - cd ../.. - source ./config_cmaq.csh $compiler $compilerVrsn - cd CCTM/scripts - -#> Set General Parameters for Configuring the Simulation - set VRSN = v55_ISAM #> Code Version - set PROC = mpi #> serial or mpi - set MECH = cracmm2 #> Mechanism ID - set APPL = Bench_2018_12NE3_${MECH}_stage #> Application Name (e.g. Gridname) - -#> Define RUNID as any combination of parameters above or others. By default, -#> this information will be collected into this one string, $RUNID, for easy -#> referencing in output binaries and log files as well as in other scripts. - setenv RUNID ${VRSN}_${compilerString}_${APPL} - -#> Set the build directory (this is where the CMAQ executable -#> is located by default). - set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${MECH}_stage - set EXEC = CCTM_${VRSN}.exe - -#> Output Each line of Runscript to Log File - if ( $CTM_DIAG_LVL != 0 ) set echo - -#> Set Working, Input, and Output Directories - setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. - setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory - setenv INPDIR ${CMAQ_DATA}/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input/2018_12NE3 #Input Directory - setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location - setenv NMLpath ${BLD} #> Location of Namelists. Common places are: - #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} - - echo "" - echo "Working Directory is $WORKDIR" - echo "Build Directory is $BLD" - echo "Output Directory is $OUTDIR" - echo "Log Directory is $LOGDIR" - echo "Executable Name is $EXEC" - -# ===================================================================== -#> CCTM Configuration Options -# ===================================================================== - -#> Set Start and End Days for looping - setenv NEW_START TRUE #> Set to FALSE for model restart - set START_DATE = "2018-07-01" #> beginning date (July 1, 2016) - set END_DATE = "2018-07-02" #> ending date (July 1, 2016) - -#> Set Timestepping Parameters -set STTIME = 000000 #> beginning GMT time (HHMMSS) -set NSTEPS = 240000 #> time duration (HHMMSS) for this run -set TSTEP = 010000 #> output time step interval (HHMMSS) - -#> Horizontal domain decomposition -if ( $PROC == serial ) then - setenv NPCOL_NPROW "1 1"; set NPROCS = 1 # single processor setting -else - @ NPCOL = 8; @ NPROW = 4 - @ NPROCS = $NPCOL * $NPROW - setenv NPCOL_NPROW "$NPCOL $NPROW"; -endif - -#> Define Execution ID: e.g. [CMAQ-Version-Info]_[User]_[Date]_[Time] -if ( ! -e ${BLD}/CCTM_${VRSN}.cfg ) then - set SHAID = "" -else - set SHAID = `grep "sha_ID" ${BLD}/CCTM_${VRSN}.cfg | cut -c 13-22` - if ( $SHAID == not_a_repo ) then - set SHAID = "" - else - set SHAID = "_sha="$SHAID - endif -endif -setenv EXECUTION_ID "CMAQ_CCTM${VRSN}${SHAID}_`id -u -n`_`date -u +%Y%m%d_%H%M%S_%N`" #> Inform IO/API of the Execution ID -echo "" -echo "---CMAQ EXECUTION ID: $EXECUTION_ID ---" - -#> Keep or Delete Existing Output Files -set CLOBBER_DATA = TRUE - -#> Logfile Options -#> Master Log File Name; uncomment to write standard output to a log, otherwise write to screen -#setenv LOGFILE $CMAQ_HOME/$RUNID.log -if (! -e $LOGDIR ) then - mkdir -p $LOGDIR -endif -setenv PRINT_PROC_TIME Y #> Print timing for all science subprocesses to Logfile - #> [ default: TRUE or Y ] -setenv STDOUT T #> Override I/O-API trying to write information to both the processor - #> logs and STDOUT [ options: T | F ] - -setenv GRID_NAME 2018_12NE3 #> check GRIDDESC file for GRID_NAME options -setenv GRIDDESC $INPDIR/GRIDDESC #> grid description file - -#> Retrieve the number of columns, rows, and layers in this simulation -set NZ = 35 -set NX = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f6` -set NY = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f7` -set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` - -#> Output Species and Layer Options - #> CONC file species; comment or set to "ALL" to write all species to CONC - #setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 HCHO ISOP NH3 ANH4I ANH4J ASO4I ASO4J" - #setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC - - #> ACONC file species; comment or set to "ALL" to write all species to ACONC - #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" - setenv AVG_CONC_SPCS "ALL" - setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC - setenv AVG_FILE_ENDTIME N #> override default beginning ACONC timestamp [ default: N ] - -#> Synchronization Time Step and Tolerance Options -setenv CTM_MAXSYNC 300 #> max sync time step (sec) [ default: 720 ] -setenv CTM_MINSYNC 60 #> min sync time step (sec) [ default: 60 ] -setenv SIGMA_SYNC_TOP 0.7 #> top sigma level thru which sync step determined [ default: 0.7 ] -#setenv ADV_HDIV_LIM 0.95 #> maximum horiz. div. limit for adv step adjust [ default: 0.9 ] -setenv CTM_ADV_CFL 0.95 #> max CFL [ default: 0.75] -#setenv RB_ATOL 1.0E-09 #> global ROS3 solver absolute tolerance [ default: 1.0E-07 ] - -#> Science Options -setenv CTM_OCEAN_CHEM Y #> Flag for ocean halogen chemistry, sea spray aerosol emissions, - #> and enhanced ozone deposition over ocean waters [ default: Y ] -setenv CTM_WB_DUST N #> use inline windblown dust emissions (only for use with PX) [ default: N ] -setenv CTM_LTNG_NO N #> turn on lightning NOx [ default: N ] -setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], - #> otherwise revert to Kz0UT -setenv PX_VERSION Y #> WRF PX LSM -setenv CLM_VERSION N #> WRF CLM LSM -setenv NOAH_VERSION N #> WRF NOAH LSM -setenv CTM_ABFLUX Y #> ammonia bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_BIDI_FERT_NH3 T #> subtract fertilizer NH3 from emissions because it will be handled - #> by the BiDi calculation [ default: Y ] -setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ] - #> please see user guide (6.10.4 Nitrous Acid (HONO)) - #> for dependency on percent urban fraction dataset -setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ] -setenv CTM_PVO3 N #> consider potential vorticity module for O3 transport from the stratosphere - #> [default: N] - -setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions with BEIS [ default: N ] -setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ] -setenv BDSNP_MEGAN N #> turns on BDSNP soil NO emissions [ default: N ] - -setenv AEROSOL_OPTICS 3 #> sets method for determining aerosol optics affecting photolysis - #> frequencies ( 3 is the default value ) - #> VALUES 1 thru 3 determined Uniformly Volume Mixed spherical - #> (1-Tabular Mie; 2-Mie Calculation; 3-Case Approx to Mie Theory) - #> VALUES 4 thru 6 attempts to use core-shell mixing model when the - #> aerosol mode has signficant black carbon core otherwise use Volume Mixed - #> model where optics determined by - #> (4-Tabular Mie; 5-Mie Calculation; 6-Case Approx to Mie Theory) - -#> Surface Tiled Aerosol and Gaseous Exchange Options -#> Only active if DepMod=stage at compile time -setenv CTM_MOSAIC N #> Output landuse specific deposition velocities [ default: N ] -setenv CTM_STAGE_P22 N #> Pleim et al. 2022 Aerosol deposition model [default: N] -setenv CTM_STAGE_E20 Y #> Emerson et al. 2020 Aerosol deposition model [default: Y] -setenv CTM_STAGE_S22 N #> Shu et al. 2022 (CMAQ v5.3) Aerosol deposition model [default: N] - -setenv IC_AERO_M2WET F #> Specify whether or not initial condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv BC_AERO_M2WET F #> Specify whether or not boundary condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv IC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from initial - #> conditions [ default: T = use aerosol surface area ] -setenv BC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from boundary - #> conditions [ default: T = use aerosol surface area ] - - -#> Vertical Extraction Options -setenv VERTEXT N -setenv VERTEXT_COORD_PATH ${WORKDIR}/lonlat.csv - -#> I/O Controls -setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ] -setenv FL_ERR_STOP N #> stop on inconsistent input files -setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ] -setenv IOAPI_OFFSET_64 YES #> support large timestep records (>2GB/timestep record) [ options: YES | NO ] -setenv IOAPI_CHECK_HEADERS N #> check file headers [ options: Y | N ] -setenv CTM_EMISCHK N #> Abort CMAQ if missing surrogates from emissions Input files - -#> Diagnostic Output Flags -setenv CTM_CKSUM Y #> checksum report [ default: Y ] -setenv CLD_DIAG N #> cloud diagnostic file [ default: N ] - -setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ] -setenv NLAYS_PHOTDIAG "1" #> Number of layers for PHOTDIAG2 and PHOTDIAG3 from - #> Layer 1 to NLAYS_PHOTDIAG [ default: all layers ] -#setenv NWAVE_PHOTDIAG "294 303 310 316 333 381 607" #> Wavelengths written for variables - #> in PHOTDIAG2 and PHOTDIAG3 - #> [ default: all wavelengths ] - -setenv CTM_SSEMDIAG N #> sea-spray emissions diagnostic file [ default: N ] -setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; - #> Ignore if CTM_WB_DUST = N -setenv CTM_DEPV_FILE N #> deposition velocities diagnostic file [ default: N ] -setenv VDIFF_DIAG_FILE N #> vdiff & possibly aero grav. sedimentation diagnostic file [ default: N ] -setenv LTNGDIAG N #> lightning diagnostic file [ default: N ] -setenv B3GTS_DIAG N #> BEIS mass emissions diagnostic file [ default: N ] -setenv CTM_WVEL Y #> save derived vertical velocity component to conc - #> file [ default: Y ] - -# ===================================================================== -#> Input Directories and Filenames -# ===================================================================== - -set ICpath = $INPDIR/icbc #> initial conditions input directory -set BCpath = $INPDIR/icbc #> boundary conditions input directory -set EMISpath = $INPDIR/emis #> gridded emissions input directory -set IN_PTpath = $INPDIR/emis #> point source emissions input directory -set IN_LTpath = $INPDIR/lightning #> lightning NOx input directory -set METpath = $INPDIR/met/mcipv5.4 #> meteorology input directory -#set JVALpath = $INPDIR/jproc #> offline photolysis rate table directory -set OMIpath = $BLD #> ozone column data for the photolysis model -set EPICpath = $INPDIR/epic #> EPIC putput for bidirectional NH3 -set SZpath = $INPDIR/surface #> surf zone file for in-line seaspray emissions - -# ===================================================================== -#> Begin Loop Through Simulation Days -# ===================================================================== -set rtarray = "" - -set TODAYG = ${START_DATE} -set TODAYJ = `date -ud "${START_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set START_DAY = ${TODAYJ} -set STOP_DAY = `date -ud "${END_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set NDAYS = 0 - -while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ - - set NDAYS = `echo "${NDAYS} + 1" | bc -l` - - #> Retrieve Calendar day Information - set YYYYMMDD = `date -ud "${TODAYG}" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD - set YYYYMM = `date -ud "${TODAYG}" +%Y%m` #> Convert YYYY-MM-DD to YYYYMM - set YYMMDD = `date -ud "${TODAYG}" +%y%m%d` #> Convert YYYY-MM-DD to YYMMDD - set MM = `date -ud "${TODAYG}" +%m` #> Convert YYYY-MM-DD to MM - set YYYYJJJ = $TODAYJ - - #> Calculate Yesterday's Date - set YESTERDAY = `date -ud "${TODAYG}-1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYJJJ - -# ===================================================================== -#> Set Output String and Propagate Model Configuration Documentation -# ===================================================================== - echo "" - echo "Set up input and output files for Day ${TODAYG}." - - #> set output file name extensions - setenv CTM_APPL ${RUNID}_${YYYYMMDD} - - #> Copy Model Configuration To Output Folder - if ( ! -d "$OUTDIR" ) mkdir -p $OUTDIR - cp $BLD/CCTM_${VRSN}.cfg $OUTDIR/CCTM_${CTM_APPL}.cfg - -# ===================================================================== -#> Input Files (Some are Day-Dependent) -# ===================================================================== - - #> Initial conditions - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ICFILE CCTM_ICON_v55_CRACMM2_STAGE_12NE3_20180701.nc - setenv INIT_MEDC_1 notused - else - set ICpath = $OUTDIR - setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc - setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc - endif - - #> Boundary conditions - set BCFILE = BCON_v55_CRACMM2_STAGE_2018_12NE3_${YYYYMMDD}.nc - - #> Off-line photolysis rates - #set JVALfile = JTABLE_${YYYYJJJ} - - #> Ozone column data - set OMIfile = OMI_1979_to_2019.dat - - #> Optics file - set OPTfile = PHOT_OPTICS.dat - - #> MCIP meteorology files - setenv GRID_BDY_2D $METpath/GRIDBDY2D_12NE3_${YYYYMMDD}.nc # GRID files are static, not day-specific - setenv GRID_CRO_2D $METpath/GRIDCRO2D_12NE3_${YYYYMMDD}.nc - setenv GRID_CRO_3D $METpath/GRIDCRO3D_12NE3_${YYYYMMDD}.nc - setenv GRID_DOT_2D $METpath/GRIDDOT2D_12NE3_${YYYYMMDD}.nc - setenv MET_CRO_2D $METpath/METCRO2D_12NE3_${YYYYMMDD}.nc - setenv MET_CRO_3D $METpath/METCRO3D_12NE3_${YYYYMMDD}.nc - setenv MET_DOT_3D $METpath/METDOT3D_12NE3_${YYYYMMDD}.nc - setenv MET_BDY_3D $METpath/METBDY3D_12NE3_${YYYYMMDD}.nc - setenv LUFRAC_CRO $METpath/LUFRAC_CRO_12NE3_${YYYYMMDD}.nc - - #> Control Files - #> - #> IMPORTANT NOTE - #> - #> The DESID control files defined below are an integral part of controlling the behavior of the model simulation. - #> Among other things, they control the mapping of species in the emission files to chemical species in the model and - #> several aspects related to the simulation of organic aerosols. - #> Please carefully review the DESID control files to ensure that they are configured to be consistent with the assumptions - #> made when creating the emission files defined below and the desired representation of organic aerosols. - #> For further information, please see: - #> + AERO7 Release Notes section on 'Required emission updates': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Release_Notes/aero7_overview.md - #> + CMAQ User's Guide section 6.9.3 on 'Emission Compatability': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.9.3_Emission_Compatability - #> + Emission Control (DESID) Documentation in the CMAQ User's Guide: - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md - #> - setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml - setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml - - #> The following namelist configures aggregated output (via the Explicit and Lumped - #> Air Quality Model Output (ELMO) Module), domain-wide budget output, and chemical - #> family output. - setenv MISC_CTRL_NML ${BLD}/CMAQ_Control_Misc.nml - - #> The following namelist controls the mapping of meteorological land use types and the NH3 and Hg emission - #> potentials - setenv STAGECTRL_NML ${BLD}/CMAQ_Control_STAGE.nml - - #> Spatial Masks For Emissions Scaling - #setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file - setenv CMAQ_MASKS $INPDIR/surface/GRIDMASK_STATES_12NE3.nc - - #> Gridded Emissions Files - setenv N_EMIS_GR 2 - set EMISfile = emis_mole_all_${YYYYMMDD}_12NE3_nobeis_norwc_WR705_2018gc2.ncf - setenv GR_EMIS_001 ${EMISpath}/merged_nobeis_norwc/${EMISfile} - setenv GR_EMIS_LAB_001 GRIDDED_EMIS - setenv GR_EM_SYM_DATE_001 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set EMISfile = emis_mole_rwc_${YYYYMMDD}_12NE3_cmaq_cracmmv2_WR705_2018gc2.ncf - setenv GR_EMIS_002 ${EMISpath}/rwc/${EMISfile} - setenv GR_EMIS_LAB_002 GR_RES_FIRES - setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - #> In-line point emissions configuration - setenv N_EMIS_PT 10 #> Number of elevated source groups - - set STKCASEE = 12US1_cmaq_cracmmv2_WR705_2018gc2 # In-line Emission Rate File Suffix - set STKCASEG = 12US1_WR705_2018gc2 # Stack parameter File Suffix - - # Time-Independent Stack Parameters for Inline Point Sources - setenv STK_GRPS_001 $IN_PTpath/ptnonipm/stack_groups_ptnonipm_${STKCASEG}.ncf - setenv STK_GRPS_002 $IN_PTpath/ptegu/stack_groups_ptegu_${STKCASEG}.ncf - setenv STK_GRPS_003 $IN_PTpath/othpt/stack_groups_othpt_${STKCASEG}.ncf - setenv STK_GRPS_004 $IN_PTpath/ptagfire/stack_groups_ptagfire_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_GRPS_005 $IN_PTpath/ptfire_grass/stack_groups_ptfire_grass_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_GRPS_006 $IN_PTpath/ptfire/stack_groups_ptfire_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_GRPS_007 $IN_PTpath/ptfire_othna/stack_groups_ptfire_othna_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_GRPS_008 $IN_PTpath/pt_oilgas/stack_groups_pt_oilgas_${STKCASEG}.ncf - setenv STK_GRPS_009 $IN_PTpath/cmv_c3_12/stack_groups_cmv_c3_12_${STKCASEG}.ncf - setenv STK_GRPS_010 $IN_PTpath/cmv_c1c2_12/stack_groups_cmv_c1c2_12_${STKCASEG}.ncf - - # Emission Rates for Inline Point Sources - setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_004 $IN_PTpath/ptagfire/inln_mole_ptagfire_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_005 $IN_PTpath/ptfire_grass/inln_mole_ptfire_grass_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_006 $IN_PTpath/ptfire/inln_mole_ptfire_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_007 $IN_PTpath/ptfire_othna/inln_mole_ptfire_othna_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_008 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_009 $IN_PTpath/cmv_c3_12/inln_mole_cmv_c3_12_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_010 $IN_PTpath/cmv_c1c2_12/inln_mole_cmv_c1c2_12_${YYYYMMDD}_${STKCASEE}.ncf - - # Label Each Emissions Stream - setenv STK_EMIS_LAB_001 PT_NONEGU - setenv STK_EMIS_LAB_002 PT_EGU - setenv STK_EMIS_LAB_003 PT_OTHER - setenv STK_EMIS_LAB_004 PT_AGFIRES - setenv STK_EMIS_LAB_005 PT_RXFIRES - setenv STK_EMIS_LAB_006 PT_FIRES - setenv STK_EMIS_LAB_007 PT_OTHFIRES - setenv STK_EMIS_LAB_008 PT_OILGAS - setenv STK_EMIS_LAB_009 PT_CMV_C3 - setenv STK_EMIS_LAB_010 PT_CMV_C1C2 - - # Allow CMAQ to Use Point Source files with dates that do not - # match the internal model date - # To change default behaviour please see Users Guide for EMIS_SYM_DATE - setenv STK_EM_SYM_DATE_001 F - setenv STK_EM_SYM_DATE_002 F - setenv STK_EM_SYM_DATE_003 F - setenv STK_EM_SYM_DATE_004 F - setenv STK_EM_SYM_DATE_005 F - setenv STK_EM_SYM_DATE_006 F - setenv STK_EM_SYM_DATE_007 F - setenv STK_EM_SYM_DATE_008 F - - #> Lightning NOx configuration - if ( $CTM_LTNG_NO == 'Y' ) then - setenv LTNGNO "InLine" #> set LTNGNO to "Inline" to activate in-line calculation - - #> In-line lightning NOx options - setenv USE_NLDN Y #> use hourly NLDN strike file [ default: Y ] - if ( $USE_NLDN == Y ) then - setenv NLDN_STRIKES ${IN_LTpath}/NLDN_12km_60min_${YYYYMMDD}.ioapi - endif - setenv LTNGPARMS_FILE ${IN_LTpath}/LTNG_AllParms_12NE3.nc #> lightning parameter file - endif - - #> In-line biogenic emissions configuration - if ( $CTM_BIOGEMIS_BE == 'Y' ) then - set IN_BEISpath = ${INPDIR}/surface - setenv GSPRO $BLD/gspro_biogenics.txt - setenv BEIS_NORM_EMIS $IN_BEISpath/beis4_beld6_norm_emis.12NE3.nc - setenv BEIS_SOILINP $OUTDIR/CCTM_BSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if NEW_START = TRUE - endif - if ( $CTM_BIOGEMIS_MG == 'Y' ) then - setenv MEGAN_SOILINP $OUTDIR/CCTM_MSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if INITIAL_RUN = Y - #> ; ignore if IGNORE_SOILINP = Y - setenv MEGAN_CTS $SZpath/megan3.2/CT3_CONUS.ncf - setenv MEGAN_EFS $SZpath/megan3.2/EFMAPS_CONUS.ncf - setenv MEGAN_LDF $SZpath/megan3.2/LDF_CONUS.ncf - if ($BDSNP_MEGAN == 'Y') then - setenv BDSNPINP $OUTDIR/CCTM_BDSNPOUT_${RUNID}_${YESTERDAY}.nc - setenv BDSNP_FFILE $SZpath/megan3.2/FERT_tceq_12km.ncf - setenv BDSNP_NFILE $SZpath/megan3.2/NDEP_tceq_12km.ncf - setenv BDSNP_LFILE $SZpath/megan3.2/LANDTYPE_tceq_12km.ncf - setenv BDSNP_AFILE $SZpath/megan3.2/ARID_tceq_12km.ncf - setenv BDSNP_NAFILE $SZpath/megan3.2/NONARID_tceq_12km.ncf - endif - endif - - #> In-line sea spray emissions configuration - setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file - - #> Bidirectional ammonia configuration - if ( $CTM_ABFLUX == 'Y' ) then - setenv E2C_SOIL ${EPICpath}/2018r1_EPIC0509_12NE3_soil.nc - setenv E2C_CHEM ${EPICpath}/2018r1_EPIC0509_12NE3_time${YYYYMMDD}.nc - setenv E2C_CHEM_YEST ${EPICpath}/2018r1_EPIC0509_12NE3_time${YESTERDAY}.nc - setenv E2C_LU ${EPICpath}/beld4_12NE3_2011.nc - endif - -#> Inline Process Analysis - setenv CTM_PROCAN N #> use process analysis [ default: N] - if ( $?CTM_PROCAN ) then # $CTM_PROCAN is defined - if ( $CTM_PROCAN == 'Y' || $CTM_PROCAN == 'T' ) then -#> process analysis global column, row and layer ranges -# setenv PA_BCOL_ECOL "10 90" # default: all columns -# setenv PA_BROW_EROW "10 80" # default: all rows -# setenv PA_BLEV_ELEV "1 4" # default: all levels - setenv PACM_INFILE ${NMLpath}/pa_${MECH}.ctl - setenv PACM_REPORT $OUTDIR/"PA_REPORT".${YYYYMMDD} - endif - endif - -#> Integrated Source Apportionment Method (ISAM) Options - setenv CTM_ISAM Y - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - setenv SA_IOLIST ${WORKDIR}/isam_control.2018_12NE3.txt - #setenv ISAM_BLEV_ELEV " 1 1" - setenv AISAM_BLEV_ELEV " 1 1" - - #> Set Up ISAM Initial Condition Flags - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ISAM_NEW_START Y - setenv ISAM_PREVDAY - else - setenv ISAM_NEW_START N - setenv ISAM_PREVDAY "$OUTDIR/CCTM_SA_CGRID_${RUNID}_${YESTERDAY}.nc" - endif - - #> Set Up ISAM Output Filenames - setenv SA_ACONC_1 "$OUTDIR/CCTM_SA_ACONC_${CTM_APPL}.nc -v" - setenv SA_CONC_1 "$OUTDIR/CCTM_SA_CONC_${CTM_APPL}.nc -v" - setenv SA_DD_1 "$OUTDIR/CCTM_SA_DRYDEP_${CTM_APPL}.nc -v" - setenv SA_WD_1 "$OUTDIR/CCTM_SA_WETDEP_${CTM_APPL}.nc -v" - setenv SA_CGRID_1 "$OUTDIR/CCTM_SA_CGRID_${CTM_APPL}.nc -v" - - #> Set optional ISAM regions files - setenv ISAM_REGIONS $INPDIR/surface/GRIDMASK_STATES_12NE3.nc - - #> Options used to favor tracked species in reaction for Ozone-NOx chemistry - setenv ISAM_O3_WEIGHTS 5 # weights for tracked species Default is 5 - # OPTIONS - # 1 does not weight any species - # 2 weights NOx and subset of NOz species - # 3 uses with from option 2 plus weight OVOC species, organic radicals and operators - # 4 weight OVOC species, organic radicals and operators - # 5 toggles between two weighting set based on VOC and NOx limited ozone production - # Below options only used if ISAM_O3_WEIGHTS set to 5 - setenv ISAM_NOX_CASE 2 # weights for tracked species when ozone production is NOx limited. Default is 2 - setenv ISAM_VOC_CASE 4 # weights for tracked species when ozone production is VOC limited. Default is 4 - setenv VOC_NOX_TRANS 0.35 # value of Prod H2O2 over Prod HNO3 less than where - # ISAM_VOC_CASE weights are used. Otherwise, ISAM_NOX_CASE - # weights are used. Default is 0.35 - - endif - endif - - -#> Sulfur Tracking Model (STM) - setenv STM_SO4TRACK N #> sulfur tracking [ default: N ] - if ( $?STM_SO4TRACK ) then - if ( $STM_SO4TRACK == 'Y' || $STM_SO4TRACK == 'T' ) then - - #> option to normalize sulfate tracers [ default: Y ] - setenv STM_ADJSO4 Y - - endif - endif - -#> Decoupled Direct Method in 3D (DDM-3D) Options - setenv CTM_DDM3D N # Sets up requisite script settings for DDM-3D (default is N/F) - # Additionally requires for CCTM to be compiled for DDM-3D simulations - - set NPMAX = 1 # Number of sensitivity parameters defined in SEN_INPUT - setenv SEN_INPUT ${WORKDIR}/sensinput.2018_12NE3.dat - - setenv DDM3D_HIGH N # allow higher-order sensitivity parameters in SEN_INPUT [ T | Y | F | N ] (default is N/F) - - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv DDM3D_RST N # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = # sensitivity fields are initialized to 0.0 on the first hour of the first day - set S_ICfile = - else - setenv DDM3D_RST Y # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = $OUTDIR - set S_ICfile = CCTM_SENGRID_${RUNID}_${YESTERDAY}.nc - endif - - setenv CTM_NPMAX $NPMAX - setenv CTM_SENS_1 "$OUTDIR/CCTM_SENGRID_${CTM_APPL}.nc -v" - setenv A_SENS_1 "$OUTDIR/CCTM_ASENS_${CTM_APPL}.nc -v" - setenv CTM_SWETDEP_1 "$OUTDIR/CCTM_SENWDEP_${CTM_APPL}.nc -v" - setenv CTM_SDRYDEP_1 "$OUTDIR/CCTM_SENDDEP_${CTM_APPL}.nc -v" - setenv INIT_SENS_1 $S_ICpath/$S_ICfile - - -# ===================================================================== -#> Output Files -# ===================================================================== - - #> set output file names - setenv S_CGRID "$OUTDIR/CCTM_CGRID_${CTM_APPL}.nc" #> 3D Inst. Concentrations - setenv CTM_CONC_1 "$OUTDIR/CCTM_CONC_${CTM_APPL}.nc -v" #> On-Hour Concentrations - setenv A_CONC_1 "$OUTDIR/CCTM_ACONC_${CTM_APPL}.nc -v" #> Hourly Avg. Concentrations - setenv MEDIA_CONC "$OUTDIR/CCTM_MEDIA_CONC_${CTM_APPL}.nc -v" #> NH3 Conc. in Media - setenv CTM_DRY_DEP_1 "$OUTDIR/CCTM_DRYDEP_${CTM_APPL}.nc -v" #> Hourly Dry Deposition - setenv CTM_DEPV_DIAG "$OUTDIR/CCTM_DEPV_${CTM_APPL}.nc -v" #> Dry Deposition Velocities - setenv B3GTS_S "$OUTDIR/CCTM_B3GTS_S_${CTM_APPL}.nc -v" #> Biogenic Emissions - setenv BEIS_SOILOUT "$OUTDIR/CCTM_BSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv MEGAN_SOILOUT "$OUTDIR/CCTM_MSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv BDSNPOUT "$OUTDIR/CCTM_BDSNPOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv CTM_WET_DEP_1 "$OUTDIR/CCTM_WETDEP1_${CTM_APPL}.nc -v" #> Wet Dep From All Clouds - setenv CTM_WET_DEP_2 "$OUTDIR/CCTM_WETDEP2_${CTM_APPL}.nc -v" #> Wet Dep From SubGrid Clouds - setenv CTM_ELMO_1 "$OUTDIR/CCTM_ELMO_${CTM_APPL}.nc -v" #> On-Hour Particle Diagnostics - setenv CTM_AELMO_1 "$OUTDIR/CCTM_AELMO_${CTM_APPL}.nc -v" #> Hourly Avg. Particle Diagnostics - setenv CTM_RJ_1 "$OUTDIR/CCTM_PHOTDIAG1_${CTM_APPL}.nc -v" #> 2D Surface Summary from Inline Photolysis - setenv CTM_RJ_2 "$OUTDIR/CCTM_PHOTDIAG2_${CTM_APPL}.nc -v" #> 3D Photolysis Rates - setenv CTM_RJ_3 "$OUTDIR/CCTM_PHOTDIAG3_${CTM_APPL}.nc -v" #> 3D Optical and Radiative Results from Photolysis - setenv CTM_SSEMIS_1 "$OUTDIR/CCTM_SSEMIS_${CTM_APPL}.nc -v" #> Sea Spray Emissions - setenv CTM_DUST_EMIS_1 "$OUTDIR/CCTM_DUSTEMIS_${CTM_APPL}.nc -v" #> Dust Emissions - setenv CTM_BUDGET "$OUTDIR/CCTM_BUDGET_${CTM_APPL}.txt -v" #> Budget [Default Off] - setenv CTM_IPR_1 "$OUTDIR/CCTM_PA_1_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_2 "$OUTDIR/CCTM_PA_2_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_3 "$OUTDIR/CCTM_PA_3_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IRR_1 "$OUTDIR/CCTM_IRR_1_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_2 "$OUTDIR/CCTM_IRR_2_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_3 "$OUTDIR/CCTM_IRR_3_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_DRY_DEP_MOS "$OUTDIR/CCTM_DDMOS_${CTM_APPL}.nc -v" #> Dry Dep - setenv CTM_DEPV_MOS "$OUTDIR/CCTM_DEPVMOS_${CTM_APPL}.nc -v" #> Dry Dep Velocity - setenv CTM_VDIFF_DIAG "$OUTDIR/CCTM_VDIFF_DIAG_${CTM_APPL}.nc -v" #> Vertical Dispersion Diagnostic - setenv CTM_VSED_DIAG "$OUTDIR/CCTM_VSED_DIAG_${CTM_APPL}.nc -v" #> Particle Grav. Settling Velocity - setenv CTM_LTNGDIAG_1 "$OUTDIR/CCTM_LTNGHRLY_${CTM_APPL}.nc -v" #> Hourly Avg Lightning NO - setenv CTM_LTNGDIAG_2 "$OUTDIR/CCTM_LTNGCOL_${CTM_APPL}.nc -v" #> Column Total Lightning NO - setenv CTM_VEXT_1 "$OUTDIR/CCTM_VEXT_${CTM_APPL}.nc -v" #> On-Hour 3D Concs at select sites - - #> set floor file (neg concs) - setenv FLOOR_FILE ${OUTDIR}/FLOOR_${CTM_APPL}.txt - - #> look for existing log files and output files - ( ls CTM_LOG_???.${CTM_APPL} > buff.txt ) >& /dev/null - ( ls ${LOGDIR}/CTM_LOG_???.${CTM_APPL} >> buff.txt ) >& /dev/null - set log_test = `cat buff.txt`; rm -f buff.txt - - set OUT_FILES = (${FLOOR_FILE} ${S_CGRID} ${CTM_CONC_1} ${A_CONC_1} ${MEDIA_CONC} \ - ${CTM_DRY_DEP_1} $CTM_DEPV_DIAG $B3GTS_S $MEGAN_SOILOUT $BEIS_SOILOUT $BDSNPOUT \ - $CTM_WET_DEP_1 $CTM_WET_DEP_2 $CTM_ELMO_1 $CTM_AELMO_1 \ - $CTM_RJ_1 $CTM_RJ_2 $CTM_RJ_3 $CTM_SSEMIS_1 $CTM_DUST_EMIS_1 $CTM_IPR_1 $CTM_IPR_2 \ - $CTM_IPR_3 $CTM_BUDGET $CTM_IRR_1 $CTM_IRR_2 $CTM_IRR_3 $CTM_DRY_DEP_MOS \ - $CTM_DEPV_MOS $CTM_VDIFF_DIAG $CTM_VSED_DIAG $CTM_LTNGDIAG_1 $CTM_LTNGDIAG_2 $CTM_VEXT_1 ) - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${SA_ACONC_1} ${SA_CONC_1} ${SA_DD_1} ${SA_WD_1} \ - ${SA_CGRID_1} ) - endif - endif - if ( $?CTM_DDM3D ) then - if ( $CTM_DDM3D == 'Y' || $CTM_DDM3D == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${CTM_SENS_1} ${A_SENS_1} ${CTM_SWETDEP_1} ${CTM_SDRYDEP_1} ) - endif - endif - set OUT_FILES = `echo $OUT_FILES | sed "s; -v;;g" | sed "s;MPI:;;g" ` - ( ls $OUT_FILES > buff.txt ) >& /dev/null - set out_test = `cat buff.txt`; rm -f buff.txt - - #> delete previous output if requested - if ( $CLOBBER_DATA == true || $CLOBBER_DATA == TRUE ) then - echo - echo "Existing Logs and Output Files for Day ${TODAYG} Will Be Deleted" - - #> remove previous log files - foreach file ( ${log_test} ) - #echo "Deleting log file: $file" - /bin/rm -f $file - end - - #> remove previous output files - foreach file ( ${out_test} ) - #echo "Deleting output file: $file" - /bin/rm -f $file - end - /bin/rm -f ${OUTDIR}/CCTM_DESID*${CTM_APPL}.nc - - else - #> error if previous log files exist - if ( "$log_test" != "" ) then - echo "*** Logs exist - run ABORTED ***" - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - - #> error if previous output files exist - if ( "$out_test" != "" ) then - echo "*** Output Files Exist - run will be ABORTED ***" - foreach file ( $out_test ) - echo " cannot delete $file" - end - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - endif - - #> for the run control ... - setenv CTM_STDATE $YYYYJJJ - setenv CTM_STTIME $STTIME - setenv CTM_RUNLEN $NSTEPS - setenv CTM_TSTEP $TSTEP - setenv INIT_CONC_1 $ICpath/$ICFILE - setenv BNDY_CONC_1 $BCpath/$BCFILE - setenv OMI $OMIpath/$OMIfile - setenv MIE_TABLE $OUTDIR/mie_table_coeffs_${compilerString}.txt - setenv OPTICS_DATA $OMIpath/$OPTfile - #setenv XJ_DATA $JVALpath/$JVALfile - - #> species defn & photolysis - setenv gc_matrix_nml ${NMLpath}/GC_$MECH.nml - setenv ae_matrix_nml ${NMLpath}/AE_$MECH.nml - setenv nr_matrix_nml ${NMLpath}/NR_$MECH.nml - setenv tr_matrix_nml ${NMLpath}/Species_Table_TR_0.nml - - #> check for photolysis input data - setenv CSQY_DATA ${NMLpath}/CSQY_DATA_$MECH - - if (! (-e $CSQY_DATA ) ) then - echo " $CSQY_DATA not found " - exit 1 - endif - if (! (-e $OPTICS_DATA ) ) then - echo " $OPTICS_DATA not found " - exit 1 - endif - -# =================================================================== -#> Execution Portion -# =================================================================== - - #> Print attributes of the executable - if ( $CTM_DIAG_LVL != 0 ) then - ls -l $BLD/$EXEC - size $BLD/$EXEC - unlimit - limit - endif - - #> Print Startup Dialogue Information to Standard Out - echo - echo "CMAQ Processing of Day $YYYYMMDD Began at `date`" - echo - - #> Executable call for single PE, uncomment to invoke - #( /usr/bin/time -p $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Executable call for multi PE, configure for your system - # set MPI = /usr/local/intel/impi/3.2.2.006/bin64 - # set MPIRUN = $MPI/mpirun - ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Harvest Timing Output so that it may be reported below - set rtarray = "${rtarray} `tail -3 buff_${EXECUTION_ID}.txt | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | head -1` " - rm -rf buff_${EXECUTION_ID}.txt - - #> Abort script if abnormal termination - if ( ! -e $OUTDIR/CCTM_CGRID_${CTM_APPL}.nc ) then - echo "" - echo "**************************************************************" - echo "** Runscript Detected an Error: CGRID file was not written. **" - echo "** This indicates that CMAQ was interrupted or an issue **" - echo "** exists with writing output. The runscript will now **" - echo "** abort rather than proceeding to subsequent days. **" - echo "**************************************************************" - break - endif - - #> Print Concluding Text - echo - echo "CMAQ Processing of Day $YYYYMMDD Finished at `date`" - echo - echo "\\\\\=====\\\\\=====\\\\\=====\\\\\=====/////=====/////=====/////=====/////" - echo - -# =================================================================== -#> Finalize Run for This Day and Loop to Next Day -# =================================================================== - - #> Save Log Files and Move on to Next Simulation Day - mv CTM_LOG_???.${CTM_APPL} $LOGDIR - if ( $CTM_DIAG_LVL != 0 ) then - mv CTM_DIAG_???.${CTM_APPL} $LOGDIR - endif - - #> The next simulation day will, by definition, be a restart - setenv NEW_START false - - #> Increment both Gregorian and Julian Days - set TODAYG = `date -ud "${TODAYG}+1days" +%Y-%m-%d` #> Add a day for tomorrow - set TODAYJ = `date -ud "${TODAYG}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ - -end #Loop to the next Simulation Day - -# =================================================================== -#> Generate Timing Report -# =================================================================== -set RTMTOT = 0 -foreach it ( `seq ${NDAYS}` ) - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - set RTMTOT = `echo "${RTMTOT} + ${rt}" | bc -l` -end - -set RTMAVG = `echo "scale=2; ${RTMTOT} / ${NDAYS}" | bc -l` -set RTMTOT = `echo "scale=2; ${RTMTOT} / 1" | bc -l` - -echo -echo "==================================" -echo " ***** CMAQ TIMING REPORT *****" -echo "==================================" -echo "Start Day: ${START_DATE}" -echo "End Day: ${END_DATE}" -echo "Number of Simulation Days: ${NDAYS}" -echo "Domain Name: ${GRID_NAME}" -echo "Number of Grid Cells: ${NCELLS} (ROW x COL x LAY)" -echo "Number of Layers: ${NZ}" -echo "Number of Processes: ${NPROCS}" -echo " All times are in seconds." -echo -echo "Num Day Wall Time" -set d = 0 -set day = ${START_DATE} -foreach it ( `seq ${NDAYS}` ) - # Set the right day and format it - set d = `echo "${d} + 1" | bc -l` - set n = `printf "%02d" ${d}` - - # Choose the correct time variables - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - - # Write out row of timing data - echo "${n} ${day} ${rt}" - - # Increment day for next loop - set day = `date -ud "${day}+1days" +%Y-%m-%d` -end -echo " Total Time = ${RTMTOT}" -echo " Avg. Time = ${RTMAVG}" - -exit diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_stage.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_stage.csh deleted file mode 100755 index cc7ae7618..000000000 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_stage.csh +++ /dev/null @@ -1,818 +0,0 @@ -#!/bin/csh -f - -# ===================== CCTMv5.5.X Run Script ========================= -# Usage: run.cctm >&! cctm_Bench_2018_12SE1.log & -# -# To report problems or request help with this script/program: -# http://www.epa.gov/cmaq (EPA CMAQ Website) -# http://www.cmascenter.org (CMAS Website) -# =================================================================== - -# =================================================================== -#> Runtime Environment Options -# =================================================================== - -echo 'Start Model Run At ' `date` - -#> Toggle Diagnostic Mode which will print verbose information to -#> standard output - setenv CTM_DIAG_LVL 0 - -#> Choose compiler and set up CMAQ environment with correct -#> libraries using config.cmaq. Options: intel | gcc | pgi - if ( ! $?compiler ) then - setenv compiler intel - endif - if ( ! $?compilerVrsn ) then - setenv compilerVrsn Empty - endif - -#> Source the config.cmaq file to set the build environment - cd ../.. - source ./config_cmaq.csh $compiler $compilerVrsn - cd CCTM/scripts - -#> Set General Parameters for Configuring the Simulation - set VRSN = v55 #> Code Version - set PROC = mpi #> serial or mpi - set MECH = cb6r5_ae7_aq #> Mechanism ID - set APPL = Bench_2018_12NE3_${MECH}_stage #> Application Name (e.g. Gridname) - -#> Define RUNID as any combination of parameters above or others. By default, -#> this information will be collected into this one string, $RUNID, for easy -#> referencing in output binaries and log files as well as in other scripts. - setenv RUNID ${VRSN}_${compilerString}_${APPL} - -#> Set the build directory (this is where the CMAQ executable -#> is located by default). - set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${MECH}_stage - set EXEC = CCTM_${VRSN}.exe - -#> Output Each line of Runscript to Log File - if ( $CTM_DIAG_LVL != 0 ) set echo - -#> Set Working, Input, and Output Directories - setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. - setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory - setenv INPDIR ${CMAQ_DATA}/2018_12NE3 #> Input Directory - setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location - setenv NMLpath ${BLD} #> Location of Namelists. Common places are: - #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} - - echo "" - echo "Working Directory is $WORKDIR" - echo "Build Directory is $BLD" - echo "Output Directory is $OUTDIR" - echo "Log Directory is $LOGDIR" - echo "Executable Name is $EXEC" - -# ===================================================================== -#> CCTM Configuration Options -# ===================================================================== - -#> Set Start and End Days for looping - setenv NEW_START TRUE #> Set to FALSE for model restart - set START_DATE = "2018-07-01" #> beginning date (July 1, 2016) - set END_DATE = "2018-07-02" #> ending date (July 1, 2016) - -#> Set Timestepping Parameters -set STTIME = 000000 #> beginning GMT time (HHMMSS) -set NSTEPS = 240000 #> time duration (HHMMSS) for this run -set TSTEP = 010000 #> output time step interval (HHMMSS) - -#> Horizontal domain decomposition -if ( $PROC == serial ) then - setenv NPCOL_NPROW "1 1"; set NPROCS = 1 # single processor setting -else - @ NPCOL = 8; @ NPROW = 4 - @ NPROCS = $NPCOL * $NPROW - setenv NPCOL_NPROW "$NPCOL $NPROW"; -endif - -#> Define Execution ID: e.g. [CMAQ-Version-Info]_[User]_[Date]_[Time] -if ( ! -e ${BLD}/CCTM_${VRSN}.cfg ) then - set SHAID = "" -else - set SHAID = `grep "sha_ID" ${BLD}/CCTM_${VRSN}.cfg | cut -c 13-22` - if ( $SHAID == not_a_repo ) then - set SHAID = "" - else - set SHAID = "_sha="$SHAID - endif -endif -setenv EXECUTION_ID "CMAQ_CCTM${VRSN}${SHAID}_`id -u -n`_`date -u +%Y%m%d_%H%M%S_%N`" #> Inform IO/API of the Execution ID -echo "" -echo "---CMAQ EXECUTION ID: $EXECUTION_ID ---" - -#> Keep or Delete Existing Output Files -set CLOBBER_DATA = TRUE - -#> Logfile Options -#> Master Log File Name; uncomment to write standard output to a log, otherwise write to screen -#setenv LOGFILE $CMAQ_HOME/$RUNID.log -if (! -e $LOGDIR ) then - mkdir -p $LOGDIR -endif -setenv PRINT_PROC_TIME Y #> Print timing for all science subprocesses to Logfile - #> [ default: TRUE or Y ] -setenv STDOUT T #> Override I/O-API trying to write information to both the processor - #> logs and STDOUT [ options: T | F ] - -setenv GRID_NAME 2018_12NE3 #> check GRIDDESC file for GRID_NAME options -setenv GRIDDESC $INPDIR/GRIDDESC #> grid description file - -#> Retrieve the number of columns, rows, and layers in this simulation -set NZ = 35 -set NX = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f6` -set NY = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f7` -set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` - -#> Output Species and Layer Options - #> CONC file species; comment or set to "ALL" to write all species to CONC - # setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 FORM ISOP NH3 ANH4I ANH4J ASO4I ASO4J" - #setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC - - #> ACONC file species; comment or set to "ALL" to write all species to ACONC - #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" - setenv AVG_CONC_SPCS "ALL" - setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC - setenv AVG_FILE_ENDTIME N #> override default beginning ACONC timestamp [ default: N ] - -#> Synchronization Time Step and Tolerance Options -setenv CTM_MAXSYNC 300 #> max sync time step (sec) [ default: 720 ] -setenv CTM_MINSYNC 60 #> min sync time step (sec) [ default: 60 ] -setenv SIGMA_SYNC_TOP 0.7 #> top sigma level thru which sync step determined [ default: 0.7 ] -#setenv ADV_HDIV_LIM 0.95 #> maximum horiz. div. limit for adv step adjust [ default: 0.9 ] -setenv CTM_ADV_CFL 0.95 #> max CFL [ default: 0.75] -#setenv RB_ATOL 1.0E-09 #> global ROS3 solver absolute tolerance [ default: 1.0E-07 ] - -#> Science Options -setenv CTM_OCEAN_CHEM Y #> Flag for ocean halogen chemistry, sea spray aerosol emissions, - #> and enhanced ozone deposition over ocean waters [ default: Y ] -setenv CTM_WB_DUST N #> use inline windblown dust emissions (only for use with PX) [ default: N ] -setenv CTM_LTNG_NO N #> turn on lightning NOx [ default: N ] -setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], - #> otherwise revert to Kz0UT -setenv PX_VERSION Y #> WRF PX LSM -setenv CLM_VERSION N #> WRF CLM LSM -setenv NOAH_VERSION N #> WRF NOAH LSM -setenv CTM_ABFLUX Y #> ammonia bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_BIDI_FERT_NH3 T #> subtract fertilizer NH3 from emissions because it will be handled - #> by the BiDi calculation [ default: Y ] -setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ] - #> please see user guide (6.10.4 Nitrous Acid (HONO)) - #> for dependency on percent urban fraction dataset -setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ] -setenv CTM_PVO3 N #> consider potential vorticity module for O3 transport from the stratosphere - #> [default: N] - -setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions with BEIS [ default: N ] -setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ] -setenv BDSNP_MEGAN N #> turns on BDSNP soil NO emissions [ default: N ] - -setenv AEROSOL_OPTICS 3 #> sets method for determining aerosol optics affecting photolysis - #> frequencies ( 3 is the default value ) - #> VALUES 1 thru 3 determined Uniformly Volume Mixed spherical - #> (1-Tabular Mie; 2-Mie Calculation; 3-Case Approx to Mie Theory) - #> VALUES 4 thru 6 attempts to use core-shell mixing model when the - #> aerosol mode has signficant black carbon core otherwise use Volume Mixed - #> model where optics determined by - #> (4-Tabular Mie; 5-Mie Calculation; 6-Case Approx to Mie Theory) - -#> Surface Tiled Aerosol and Gaseous Exchange Options -#> Only active if DepMod=stage at compile time -setenv CTM_MOSAIC N #> Output landuse specific deposition velocities [ default: N ] -setenv CTM_STAGE_P22 N #> Pleim et al. 2022 Aerosol deposition model [default: N] -setenv CTM_STAGE_E20 Y #> Emerson et al. 2020 Aerosol deposition model [default: Y] -setenv CTM_STAGE_S22 N #> Shu et al. 2022 (CMAQ v5.3) Aerosol deposition model [default: N] - -setenv IC_AERO_M2WET F #> Specify whether or not initial condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv BC_AERO_M2WET F #> Specify whether or not boundary condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv IC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from initial - #> conditions [ default: T = use aerosol surface area ] -setenv BC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from boundary - #> conditions [ default: T = use aerosol surface area ] - - -#> Vertical Extraction Options -setenv VERTEXT N -setenv VERTEXT_COORD_PATH ${WORKDIR}/lonlat.csv - -#> I/O Controls -setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ] -setenv FL_ERR_STOP N #> stop on inconsistent input files -setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ] -setenv IOAPI_OFFSET_64 YES #> support large timestep records (>2GB/timestep record) [ options: YES | NO ] -setenv IOAPI_CHECK_HEADERS N #> check file headers [ options: Y | N ] -setenv CTM_EMISCHK N #> Abort CMAQ if missing surrogates from emissions Input files - -#> Diagnostic Output Flags -setenv CTM_CKSUM Y #> checksum report [ default: Y ] -setenv CLD_DIAG N #> cloud diagnostic file [ default: N ] - -setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ] -setenv NLAYS_PHOTDIAG "1" #> Number of layers for PHOTDIAG2 and PHOTDIAG3 from - #> Layer 1 to NLAYS_PHOTDIAG [ default: all layers ] -#setenv NWAVE_PHOTDIAG "294 303 310 316 333 381 607" #> Wavelengths written for variables - #> in PHOTDIAG2 and PHOTDIAG3 - #> [ default: all wavelengths ] - -setenv CTM_SSEMDIAG N #> sea-spray emissions diagnostic file [ default: N ] -setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; - #> Ignore if CTM_WB_DUST = N -setenv CTM_DEPV_FILE N #> deposition velocities diagnostic file [ default: N ] -setenv VDIFF_DIAG_FILE N #> vdiff & possibly aero grav. sedimentation diagnostic file [ default: N ] -setenv LTNGDIAG N #> lightning diagnostic file [ default: N ] -setenv B3GTS_DIAG N #> BEIS mass emissions diagnostic file [ default: N ] -setenv CTM_WVEL Y #> save derived vertical velocity component to conc - #> file [ default: Y ] - -# ===================================================================== -#> Input Directories and Filenames -# ===================================================================== - -set ICpath = $INPDIR/icbc #> initial conditions input directory -set BCpath = $INPDIR/icbc #> boundary conditions input directory -set EMISpath = $INPDIR/emis #> gridded emissions input directory -set IN_PTpath = $INPDIR/emis #> point source emissions input directory -set IN_LTpath = $INPDIR/lightning #> lightning NOx input directory -set METpath = $INPDIR/met/mcipv5.4 #> meteorology input directory -#set JVALpath = $INPDIR/jproc #> offline photolysis rate table directory -set OMIpath = $BLD #> ozone column data for the photolysis model -set EPICpath = $INPDIR/epic #> EPIC putput for bidirectional NH3 -set SZpath = $INPDIR/surface #> surf zone file for in-line seaspray emissions - -# ===================================================================== -#> Begin Loop Through Simulation Days -# ===================================================================== -set rtarray = "" - -set TODAYG = ${START_DATE} -set TODAYJ = `date -ud "${START_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set START_DAY = ${TODAYJ} -set STOP_DAY = `date -ud "${END_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set NDAYS = 0 - -while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ - - set NDAYS = `echo "${NDAYS} + 1" | bc -l` - - #> Retrieve Calendar day Information - set YYYYMMDD = `date -ud "${TODAYG}" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD - set YYYYMM = `date -ud "${TODAYG}" +%Y%m` #> Convert YYYY-MM-DD to YYYYMM - set YYMMDD = `date -ud "${TODAYG}" +%y%m%d` #> Convert YYYY-MM-DD to YYMMDD - set MM = `date -ud "${TODAYG}" +%m` #> Convert YYYY-MM-DD to MM - set YYYYJJJ = $TODAYJ - - #> Calculate Yesterday's Date - set YESTERDAY = `date -ud "${TODAYG}-1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYJJJ - -# ===================================================================== -#> Set Output String and Propagate Model Configuration Documentation -# ===================================================================== - echo "" - echo "Set up input and output files for Day ${TODAYG}." - - #> set output file name extensions - setenv CTM_APPL ${RUNID}_${YYYYMMDD} - - #> Copy Model Configuration To Output Folder - if ( ! -d "$OUTDIR" ) mkdir -p $OUTDIR - cp $BLD/CCTM_${VRSN}.cfg $OUTDIR/CCTM_${CTM_APPL}.cfg - -# ===================================================================== -#> Input Files (Some are Day-Dependent) -# ===================================================================== - - #> Initial conditions - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ICFILE CCTM_ICON_v54_${MECH}_12NE3_20180701.nc - setenv INIT_MEDC_1 notused - else - set ICpath = $OUTDIR - setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc - setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc - endif - - #> Boundary conditions - set BCFILE = CCTM_BCON_v54_${MECH}_12NE3_${YYYYMMDD}.nc - - #> Off-line photolysis rates - #set JVALfile = JTABLE_${YYYYJJJ} - - #> Ozone column data - set OMIfile = OMI_1979_to_2019.dat - - #> Optics file - set OPTfile = PHOT_OPTICS.dat - - #> MCIP meteorology files - setenv GRID_BDY_2D $METpath/GRIDBDY2D_12NE3_${YYYYMMDD}.nc # GRID files are static, not day-specific - setenv GRID_CRO_2D $METpath/GRIDCRO2D_12NE3_${YYYYMMDD}.nc - setenv GRID_CRO_3D $METpath/GRIDCRO3D_12NE3_${YYYYMMDD}.nc - setenv GRID_DOT_2D $METpath/GRIDDOT2D_12NE3_${YYYYMMDD}.nc - setenv MET_CRO_2D $METpath/METCRO2D_12NE3_${YYYYMMDD}.nc - setenv MET_CRO_3D $METpath/METCRO3D_12NE3_${YYYYMMDD}.nc - setenv MET_DOT_3D $METpath/METDOT3D_12NE3_${YYYYMMDD}.nc - setenv MET_BDY_3D $METpath/METBDY3D_12NE3_${YYYYMMDD}.nc - setenv LUFRAC_CRO $METpath/LUFRAC_CRO_12NE3_${YYYYMMDD}.nc - - #> Control Files - #> - #> IMPORTANT NOTE - #> - #> The DESID control files defined below are an integral part of controlling the behavior of the model simulation. - #> Among other things, they control the mapping of species in the emission files to chemical species in the model and - #> several aspects related to the simulation of organic aerosols. - #> Please carefully review the DESID control files to ensure that they are configured to be consistent with the assumptions - #> made when creating the emission files defined below and the desired representation of organic aerosols. - #> For further information, please see: - #> + AERO7 Release Notes section on 'Required emission updates': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Release_Notes/aero7_overview.md - #> + CMAQ User's Guide section 6.9.3 on 'Emission Compatability': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.9.3_Emission_Compatability - #> + Emission Control (DESID) Documentation in the CMAQ User's Guide: - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md - #> - setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml - setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml - - #> The following namelist configures aggregated output (via the Explicit and Lumped - #> Air Quality Model Output (ELMO) Module), domain-wide budget output, and chemical - #> family output. - setenv MISC_CTRL_NML ${BLD}/CMAQ_Control_Misc.nml - - #> The following namelist controls the mapping of meteorological land use types and the NH3 and Hg emission - #> potentials - setenv STAGECTRL_NML ${BLD}/CMAQ_Control_STAGE.nml - - #> Spatial Masks For Emissions Scaling - #setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file - setenv CMAQ_MASKS $INPDIR/GRIDMASK_STATES_12NE3.nc - - #> Gridded Emissions Files - setenv N_EMIS_GR 2 - set EMISfile = emis_mole_all_${YYYYMMDD}_12NE3_nobeis_norwc_2018gc_cb6_18j.ncf - setenv GR_EMIS_001 ${EMISpath}/merged_nobeis_norwc/${EMISfile} - setenv GR_EMIS_LAB_001 GRIDDED_EMIS - setenv GR_EM_SYM_DATE_001 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set EMISfile = emis_mole_rwc_${YYYYMMDD}_12NE3_cmaq_cb6ae7_2018gc_cb6_18j.ncf - setenv GR_EMIS_002 ${EMISpath}/rwc/${EMISfile} - setenv GR_EMIS_LAB_002 GR_RES_FIRES - setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - #> In-line point emissions configuration - setenv N_EMIS_PT 10 #> Number of elevated source groups - - set STKCASEG = 12US1_2018gc_cb6_18j # Stack Group Version Label - set STKCASEE = 12US1_cmaq_cb6ae7_2018gc_cb6_18j # Stack Emission Version Label - - # Time-Independent Stack Parameters for Inline Point Sources - setenv STK_GRPS_001 $IN_PTpath/ptnonipm/stack_groups_ptnonipm_${STKCASEG}.ncf - setenv STK_GRPS_002 $IN_PTpath/ptegu/stack_groups_ptegu_${STKCASEG}.ncf - setenv STK_GRPS_003 $IN_PTpath/othpt/stack_groups_othpt_${STKCASEG}.ncf - setenv STK_GRPS_004 $IN_PTpath/ptagfire/stack_groups_ptagfire_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_GRPS_005 $IN_PTpath/ptfire-rx/stack_groups_ptfire-rx_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_GRPS_006 $IN_PTpath/ptfire-wild/stack_groups_ptfire-wild_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_GRPS_007 $IN_PTpath/ptfire_othna/stack_groups_ptfire_othna_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_GRPS_008 $IN_PTpath/pt_oilgas/stack_groups_pt_oilgas_${STKCASEG}.ncf - setenv STK_GRPS_009 $IN_PTpath/cmv_c3_12/stack_groups_cmv_c3_12_${STKCASEG}.ncf - setenv STK_GRPS_010 $IN_PTpath/cmv_c1c2_12/stack_groups_cmv_c1c2_12_${STKCASEG}.ncf - - # Emission Rates for Inline Point Sources - setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_004 $IN_PTpath/ptagfire/inln_mole_ptagfire_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_005 $IN_PTpath/ptfire-rx/inln_mole_ptfire-rx_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_006 $IN_PTpath/ptfire-wild/inln_mole_ptfire-wild_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_007 $IN_PTpath/ptfire_othna/inln_mole_ptfire_othna_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_008 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_009 $IN_PTpath/cmv_c3_12/inln_mole_cmv_c3_12_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_010 $IN_PTpath/cmv_c1c2_12/inln_mole_cmv_c1c2_12_${YYYYMMDD}_${STKCASEE}.ncf - - # Label Each Emissions Stream - setenv STK_EMIS_LAB_001 PT_NONEGU - setenv STK_EMIS_LAB_002 PT_EGU - setenv STK_EMIS_LAB_003 PT_OTHER - setenv STK_EMIS_LAB_004 PT_AGFIRES - setenv STK_EMIS_LAB_005 PT_RXFIRES - setenv STK_EMIS_LAB_006 PT_WILDFIRES - setenv STK_EMIS_LAB_007 PT_OTHFIRES - setenv STK_EMIS_LAB_008 PT_OILGAS - setenv STK_EMIS_LAB_009 PT_CMV_C3 - setenv STK_EMIS_LAB_010 PT_CMV_C1C2 - - # Allow CMAQ to Use Point Source files with dates that do not - # match the internal model date - # To change default behaviour please see Users Guide for EMIS_SYM_DATE - setenv STK_EM_SYM_DATE_001 F - setenv STK_EM_SYM_DATE_002 F - setenv STK_EM_SYM_DATE_003 F - setenv STK_EM_SYM_DATE_004 F - setenv STK_EM_SYM_DATE_005 F - setenv STK_EM_SYM_DATE_006 F - setenv STK_EM_SYM_DATE_007 F - setenv STK_EM_SYM_DATE_008 F - - #> Lightning NOx configuration - if ( $CTM_LTNG_NO == 'Y' ) then - setenv LTNGNO "InLine" #> set LTNGNO to "Inline" to activate in-line calculation - - #> In-line lightning NOx options - setenv USE_NLDN Y #> use hourly NLDN strike file [ default: Y ] - if ( $USE_NLDN == Y ) then - setenv NLDN_STRIKES ${IN_LTpath}/NLDN_12km_60min_${YYYYMMDD}.ioapi - endif - setenv LTNGPARMS_FILE ${IN_LTpath}/LTNG_AllParms_12NE3.nc #> lightning parameter file - endif - - #> In-line biogenic emissions configuration - if ( $CTM_BIOGEMIS_BE == 'Y' ) then - set IN_BEISpath = ${INPDIR}/surface - setenv GSPRO $BLD/gspro_biogenics.txt - setenv BEIS_NORM_EMIS $IN_BEISpath/beis4_beld6_norm_emis.12NE3.nc - setenv BEIS_SOILINP $OUTDIR/CCTM_BSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if NEW_START = TRUE - endif - if ( $CTM_BIOGEMIS_MG == 'Y' ) then - setenv MEGAN_SOILINP $OUTDIR/CCTM_MSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if INITIAL_RUN = Y - #> ; ignore if IGNORE_SOILINP = Y - setenv MEGAN_CTS $SZpath/megan3.2/CT3_CONUS.ncf - setenv MEGAN_EFS $SZpath/megan3.2/EFMAPS_CONUS.ncf - setenv MEGAN_LDF $SZpath/megan3.2/LDF_CONUS.ncf - if ($BDSNP_MEGAN == 'Y') then - setenv BDSNPINP $OUTDIR/CCTM_BDSNPOUT_${RUNID}_${YESTERDAY}.nc - setenv BDSNP_FFILE $SZpath/megan3.2/FERT_tceq_12km.ncf - setenv BDSNP_NFILE $SZpath/megan3.2/NDEP_tceq_12km.ncf - setenv BDSNP_LFILE $SZpath/megan3.2/LANDTYPE_tceq_12km.ncf - setenv BDSNP_AFILE $SZpath/megan3.2/ARID_tceq_12km.ncf - setenv BDSNP_NAFILE $SZpath/megan3.2/NONARID_tceq_12km.ncf - endif - endif - - #> In-line sea spray emissions configuration - setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file - - #> Bidirectional ammonia configuration - if ( $CTM_ABFLUX == 'Y' ) then - setenv E2C_SOIL ${EPICpath}/2018r1_EPIC0509_12NE3_soil.nc - setenv E2C_CHEM ${EPICpath}/2018r1_EPIC0509_12NE3_time${YYYYMMDD}.nc - setenv E2C_CHEM_YEST ${EPICpath}/2018r1_EPIC0509_12NE3_time${YESTERDAY}.nc - setenv E2C_LU ${EPICpath}/beld4_12NE3_2011.nc - endif - -#> Inline Process Analysis - setenv CTM_PROCAN N #> use process analysis [ default: N] - if ( $?CTM_PROCAN ) then # $CTM_PROCAN is defined - if ( $CTM_PROCAN == 'Y' || $CTM_PROCAN == 'T' ) then -#> process analysis global column, row and layer ranges -# setenv PA_BCOL_ECOL "10 90" # default: all columns -# setenv PA_BROW_EROW "10 80" # default: all rows -# setenv PA_BLEV_ELEV "1 4" # default: all levels - setenv PACM_INFILE ${NMLpath}/pa_${MECH}.ctl - setenv PACM_REPORT $OUTDIR/"PA_REPORT".${YYYYMMDD} - endif - endif - -#> Integrated Source Apportionment Method (ISAM) Options - setenv CTM_ISAM N - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - setenv SA_IOLIST ${WORKDIR}/isam_control.2018_12NE3.txt - setenv ISAM_BLEV_ELEV " 1 1" - setenv AISAM_BLEV_ELEV " 1 1" - - #> Set Up ISAM Initial Condition Flags - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ISAM_NEW_START Y - setenv ISAM_PREVDAY - else - setenv ISAM_NEW_START N - setenv ISAM_PREVDAY "$OUTDIR/CCTM_SA_CGRID_${RUNID}_${YESTERDAY}.nc" - endif - - #> Set Up ISAM Output Filenames - setenv SA_ACONC_1 "$OUTDIR/CCTM_SA_ACONC_${CTM_APPL}.nc -v" - setenv SA_CONC_1 "$OUTDIR/CCTM_SA_CONC_${CTM_APPL}.nc -v" - setenv SA_DD_1 "$OUTDIR/CCTM_SA_DRYDEP_${CTM_APPL}.nc -v" - setenv SA_WD_1 "$OUTDIR/CCTM_SA_WETDEP_${CTM_APPL}.nc -v" - setenv SA_CGRID_1 "$OUTDIR/CCTM_SA_CGRID_${CTM_APPL}.nc -v" - - #> Set optional ISAM regions files - setenv ISAM_REGIONS $INPDIR/GRIDMASK_STATES_12NE3.nc - - #> Options used to favor tracked species in reaction for Ozone-NOx chemistry - setenv ISAM_O3_WEIGHTS 5 # weights for tracked species Default is 5 - # OPTIONS - # 1 does not weight any species - # 2 weights NOx and subset of NOz species - # 3 uses with from option 2 plus weight OVOC species, organic radicals and operators - # 4 weight OVOC species, organic radicals and operators - # 5 toggles between two weighting set based on VOC and NOx limited ozone production - # Below options only used if ISAM_O3_WEIGHTS set to 5 - setenv ISAM_NOX_CASE 2 # weights for tracked species when ozone production is NOx limited. Default is 2 - setenv ISAM_VOC_CASE 4 # weights for tracked species when ozone production is VOC limited. Default is 4 - setenv VOC_NOX_TRANS 0.35 # value of Prod H2O2 over Prod HNO3 less than where - # ISAM_VOC_CASE weights are used. Otherwise, ISAM_NOX_CASE - # weights are used. Default is 0.35 - - endif - endif - - -#> Sulfur Tracking Model (STM) - setenv STM_SO4TRACK N #> sulfur tracking [ default: N ] - if ( $?STM_SO4TRACK ) then - if ( $STM_SO4TRACK == 'Y' || $STM_SO4TRACK == 'T' ) then - - #> option to normalize sulfate tracers [ default: Y ] - setenv STM_ADJSO4 Y - - endif - endif - -#> Decoupled Direct Method in 3D (DDM-3D) Options - setenv CTM_DDM3D N # Sets up requisite script settings for DDM-3D (default is N/F) - # Additionally requires for CCTM to be compiled for DDM-3D simulations - - set NPMAX = 1 # Number of sensitivity parameters defined in SEN_INPUT - setenv SEN_INPUT ${WORKDIR}/sensinput.2018_12NE3.dat - - setenv DDM3D_HIGH N # allow higher-order sensitivity parameters in SEN_INPUT [ T | Y | F | N ] (default is N/F) - - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv DDM3D_RST N # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = # sensitivity fields are initialized to 0.0 on the first hour of the first day - set S_ICfile = - else - setenv DDM3D_RST Y # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = $OUTDIR - set S_ICfile = CCTM_SENGRID_${RUNID}_${YESTERDAY}.nc - endif - - setenv CTM_NPMAX $NPMAX - setenv CTM_SENS_1 "$OUTDIR/CCTM_SENGRID_${CTM_APPL}.nc -v" - setenv A_SENS_1 "$OUTDIR/CCTM_ASENS_${CTM_APPL}.nc -v" - setenv CTM_SWETDEP_1 "$OUTDIR/CCTM_SENWDEP_${CTM_APPL}.nc -v" - setenv CTM_SDRYDEP_1 "$OUTDIR/CCTM_SENDDEP_${CTM_APPL}.nc -v" - setenv INIT_SENS_1 $S_ICpath/$S_ICfile - - -# ===================================================================== -#> Output Files -# ===================================================================== - - #> set output file names - setenv S_CGRID "$OUTDIR/CCTM_CGRID_${CTM_APPL}.nc" #> 3D Inst. Concentrations - setenv CTM_CONC_1 "$OUTDIR/CCTM_CONC_${CTM_APPL}.nc -v" #> On-Hour Concentrations - setenv A_CONC_1 "$OUTDIR/CCTM_ACONC_${CTM_APPL}.nc -v" #> Hourly Avg. Concentrations - setenv MEDIA_CONC "$OUTDIR/CCTM_MEDIA_CONC_${CTM_APPL}.nc -v" #> NH3 Conc. in Media - setenv CTM_DRY_DEP_1 "$OUTDIR/CCTM_DRYDEP_${CTM_APPL}.nc -v" #> Hourly Dry Deposition - setenv CTM_DEPV_DIAG "$OUTDIR/CCTM_DEPV_${CTM_APPL}.nc -v" #> Dry Deposition Velocities - setenv B3GTS_S "$OUTDIR/CCTM_B3GTS_S_${CTM_APPL}.nc -v" #> Biogenic Emissions - setenv BEIS_SOILOUT "$OUTDIR/CCTM_BSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv MEGAN_SOILOUT "$OUTDIR/CCTM_MSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv BDSNPOUT "$OUTDIR/CCTM_BDSNPOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv CTM_WET_DEP_1 "$OUTDIR/CCTM_WETDEP1_${CTM_APPL}.nc -v" #> Wet Dep From All Clouds - setenv CTM_WET_DEP_2 "$OUTDIR/CCTM_WETDEP2_${CTM_APPL}.nc -v" #> Wet Dep From SubGrid Clouds - setenv CTM_ELMO_1 "$OUTDIR/CCTM_ELMO_${CTM_APPL}.nc -v" #> On-Hour Particle Diagnostics - setenv CTM_AELMO_1 "$OUTDIR/CCTM_AELMO_${CTM_APPL}.nc -v" #> Hourly Avg. Particle Diagnostics - setenv CTM_RJ_1 "$OUTDIR/CCTM_PHOTDIAG1_${CTM_APPL}.nc -v" #> 2D Surface Summary from Inline Photolysis - setenv CTM_RJ_2 "$OUTDIR/CCTM_PHOTDIAG2_${CTM_APPL}.nc -v" #> 3D Photolysis Rates - setenv CTM_RJ_3 "$OUTDIR/CCTM_PHOTDIAG3_${CTM_APPL}.nc -v" #> 3D Optical and Radiative Results from Photolysis - setenv CTM_SSEMIS_1 "$OUTDIR/CCTM_SSEMIS_${CTM_APPL}.nc -v" #> Sea Spray Emissions - setenv CTM_DUST_EMIS_1 "$OUTDIR/CCTM_DUSTEMIS_${CTM_APPL}.nc -v" #> Dust Emissions - setenv CTM_BUDGET "$OUTDIR/CCTM_BUDGET_${CTM_APPL}.txt -v" #> Budget [Default Off] - setenv CTM_IPR_1 "$OUTDIR/CCTM_PA_1_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_2 "$OUTDIR/CCTM_PA_2_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_3 "$OUTDIR/CCTM_PA_3_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IRR_1 "$OUTDIR/CCTM_IRR_1_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_2 "$OUTDIR/CCTM_IRR_2_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_3 "$OUTDIR/CCTM_IRR_3_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_DRY_DEP_MOS "$OUTDIR/CCTM_DDMOS_${CTM_APPL}.nc -v" #> Dry Dep - setenv CTM_DEPV_MOS "$OUTDIR/CCTM_DEPVMOS_${CTM_APPL}.nc -v" #> Dry Dep Velocity - setenv CTM_VDIFF_DIAG "$OUTDIR/CCTM_VDIFF_DIAG_${CTM_APPL}.nc -v" #> Vertical Dispersion Diagnostic - setenv CTM_VSED_DIAG "$OUTDIR/CCTM_VSED_DIAG_${CTM_APPL}.nc -v" #> Particle Grav. Settling Velocity - setenv CTM_LTNGDIAG_1 "$OUTDIR/CCTM_LTNGHRLY_${CTM_APPL}.nc -v" #> Hourly Avg Lightning NO - setenv CTM_LTNGDIAG_2 "$OUTDIR/CCTM_LTNGCOL_${CTM_APPL}.nc -v" #> Column Total Lightning NO - setenv CTM_VEXT_1 "$OUTDIR/CCTM_VEXT_${CTM_APPL}.nc -v" #> On-Hour 3D Concs at select sites - - #> set floor file (neg concs) - setenv FLOOR_FILE ${OUTDIR}/FLOOR_${CTM_APPL}.txt - - #> look for existing log files and output files - ( ls CTM_LOG_???.${CTM_APPL} > buff.txt ) >& /dev/null - ( ls ${LOGDIR}/CTM_LOG_???.${CTM_APPL} >> buff.txt ) >& /dev/null - set log_test = `cat buff.txt`; rm -f buff.txt - - set OUT_FILES = (${FLOOR_FILE} ${S_CGRID} ${CTM_CONC_1} ${A_CONC_1} ${MEDIA_CONC} \ - ${CTM_DRY_DEP_1} $CTM_DEPV_DIAG $B3GTS_S $MEGAN_SOILOUT $BEIS_SOILOUT $BDSNPOUT \ - $CTM_WET_DEP_1 $CTM_WET_DEP_2 $CTM_ELMO_1 $CTM_AELMO_1 \ - $CTM_RJ_1 $CTM_RJ_2 $CTM_RJ_3 $CTM_SSEMIS_1 $CTM_DUST_EMIS_1 $CTM_IPR_1 $CTM_IPR_2 \ - $CTM_IPR_3 $CTM_BUDGET $CTM_IRR_1 $CTM_IRR_2 $CTM_IRR_3 $CTM_DRY_DEP_MOS \ - $CTM_DEPV_MOS $CTM_VDIFF_DIAG $CTM_VSED_DIAG $CTM_LTNGDIAG_1 $CTM_LTNGDIAG_2 $CTM_VEXT_1 ) - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${SA_ACONC_1} ${SA_CONC_1} ${SA_DD_1} ${SA_WD_1} \ - ${SA_CGRID_1} ) - endif - endif - if ( $?CTM_DDM3D ) then - if ( $CTM_DDM3D == 'Y' || $CTM_DDM3D == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${CTM_SENS_1} ${A_SENS_1} ${CTM_SWETDEP_1} ${CTM_SDRYDEP_1} ) - endif - endif - set OUT_FILES = `echo $OUT_FILES | sed "s; -v;;g" | sed "s;MPI:;;g" ` - ( ls $OUT_FILES > buff.txt ) >& /dev/null - set out_test = `cat buff.txt`; rm -f buff.txt - - #> delete previous output if requested - if ( $CLOBBER_DATA == true || $CLOBBER_DATA == TRUE ) then - echo - echo "Existing Logs and Output Files for Day ${TODAYG} Will Be Deleted" - - #> remove previous log files - foreach file ( ${log_test} ) - #echo "Deleting log file: $file" - /bin/rm -f $file - end - - #> remove previous output files - foreach file ( ${out_test} ) - #echo "Deleting output file: $file" - /bin/rm -f $file - end - /bin/rm -f ${OUTDIR}/CCTM_DESID*${CTM_APPL}.nc - - else - #> error if previous log files exist - if ( "$log_test" != "" ) then - echo "*** Logs exist - run ABORTED ***" - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - - #> error if previous output files exist - if ( "$out_test" != "" ) then - echo "*** Output Files Exist - run will be ABORTED ***" - foreach file ( $out_test ) - echo " cannot delete $file" - end - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - endif - - #> for the run control ... - setenv CTM_STDATE $YYYYJJJ - setenv CTM_STTIME $STTIME - setenv CTM_RUNLEN $NSTEPS - setenv CTM_TSTEP $TSTEP - setenv INIT_CONC_1 $ICpath/$ICFILE - setenv BNDY_CONC_1 $BCpath/$BCFILE - setenv OMI $OMIpath/$OMIfile - setenv MIE_TABLE $OUTDIR/mie_table_coeffs_${compilerString}.txt - setenv OPTICS_DATA $OMIpath/$OPTfile - #setenv XJ_DATA $JVALpath/$JVALfile - - #> species defn & photolysis - setenv gc_matrix_nml ${NMLpath}/GC_$MECH.nml - setenv ae_matrix_nml ${NMLpath}/AE_$MECH.nml - setenv nr_matrix_nml ${NMLpath}/NR_$MECH.nml - setenv tr_matrix_nml ${NMLpath}/Species_Table_TR_0.nml - - #> check for photolysis input data - setenv CSQY_DATA ${NMLpath}/CSQY_DATA_$MECH - - if (! (-e $CSQY_DATA ) ) then - echo " $CSQY_DATA not found " - exit 1 - endif - if (! (-e $OPTICS_DATA ) ) then - echo " $OPTICS_DATA not found " - exit 1 - endif - -# =================================================================== -#> Execution Portion -# =================================================================== - - #> Print attributes of the executable - if ( $CTM_DIAG_LVL != 0 ) then - ls -l $BLD/$EXEC - size $BLD/$EXEC - unlimit - limit - endif - - #> Print Startup Dialogue Information to Standard Out - echo - echo "CMAQ Processing of Day $YYYYMMDD Began at `date`" - echo - - #> Executable call for single PE, uncomment to invoke - #( /usr/bin/time -p $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Executable call for multi PE, configure for your system - # set MPI = /usr/local/intel/impi/3.2.2.006/bin64 - # set MPIRUN = $MPI/mpirun - ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Harvest Timing Output so that it may be reported below - set rtarray = "${rtarray} `tail -3 buff_${EXECUTION_ID}.txt | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | head -1` " - rm -rf buff_${EXECUTION_ID}.txt - - #> Abort script if abnormal termination - if ( ! -e $OUTDIR/CCTM_CGRID_${CTM_APPL}.nc ) then - echo "" - echo "**************************************************************" - echo "** Runscript Detected an Error: CGRID file was not written. **" - echo "** This indicates that CMAQ was interrupted or an issue **" - echo "** exists with writing output. The runscript will now **" - echo "** abort rather than proceeding to subsequent days. **" - echo "**************************************************************" - break - endif - - #> Print Concluding Text - echo - echo "CMAQ Processing of Day $YYYYMMDD Finished at `date`" - echo - echo "\\\\\=====\\\\\=====\\\\\=====\\\\\=====/////=====/////=====/////=====/////" - echo - -# =================================================================== -#> Finalize Run for This Day and Loop to Next Day -# =================================================================== - - #> Save Log Files and Move on to Next Simulation Day - mv CTM_LOG_???.${CTM_APPL} $LOGDIR - if ( $CTM_DIAG_LVL != 0 ) then - mv CTM_DIAG_???.${CTM_APPL} $LOGDIR - endif - - #> The next simulation day will, by definition, be a restart - setenv NEW_START false - - #> Increment both Gregorian and Julian Days - set TODAYG = `date -ud "${TODAYG}+1days" +%Y-%m-%d` #> Add a day for tomorrow - set TODAYJ = `date -ud "${TODAYG}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ - -end #Loop to the next Simulation Day - -# =================================================================== -#> Generate Timing Report -# =================================================================== -set RTMTOT = 0 -foreach it ( `seq ${NDAYS}` ) - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - set RTMTOT = `echo "${RTMTOT} + ${rt}" | bc -l` -end - -set RTMAVG = `echo "scale=2; ${RTMTOT} / ${NDAYS}" | bc -l` -set RTMTOT = `echo "scale=2; ${RTMTOT} / 1" | bc -l` - -echo -echo "==================================" -echo " ***** CMAQ TIMING REPORT *****" -echo "==================================" -echo "Start Day: ${START_DATE}" -echo "End Day: ${END_DATE}" -echo "Number of Simulation Days: ${NDAYS}" -echo "Domain Name: ${GRID_NAME}" -echo "Number of Grid Cells: ${NCELLS} (ROW x COL x LAY)" -echo "Number of Layers: ${NZ}" -echo "Number of Processes: ${NPROCS}" -echo " All times are in seconds." -echo -echo "Num Day Wall Time" -set d = 0 -set day = ${START_DATE} -foreach it ( `seq ${NDAYS}` ) - # Set the right day and format it - set d = `echo "${d} + 1" | bc -l` - set n = `printf "%02d" ${d}` - - # Choose the correct time variables - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - - # Write out row of timing data - echo "${n} ${day} ${rt}" - - # Increment day for next loop - set day = `date -ud "${day}+1days" +%Y-%m-%d` -end -echo " Total Time = ${RTMTOT}" -echo " Avg. Time = ${RTMAVG}" - -exit From 3281092298cc49fb01b2cfd84dd45c78569258f8 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 11:02:43 -0400 Subject: [PATCH 260/375] update --- CCTM/scripts/run_cctm_Bench_2018_12NE3.csh | 31 +++++++++++++--------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh index 2f8566224..848fb0dc4 100755 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh @@ -1,8 +1,15 @@ #!/bin/csh -f +#SBATCH -J CMAQ +#SBATCH --nodes=2 +#SBATCH --ntasks-per-node=16 +#SBATCH --time=2:00:00 +#SBATCH -p debug_queue +##SBATCH -p 528_queue +#SBATCH -o /proj/ie/proj/CMAS/CMAQ/CMAQv5.5_testing/CMAQ_v5.5/CCTM/scripts/cmaq_cb6r5_m3dry_%j.txt + # ===================== CCTMv5.5.X Run Script ========================= -# Usage: run_cctm_Bench_2018_12NE3.csh >&! cctm_Bench_2018_12SE1.log & -# Slurm Usage: sbatch run_cctm_Bench_2018_12NE3.csh +# Usage: run.cctm >&! cctm_Bench_2018_12SE1.log & # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) @@ -22,7 +29,7 @@ echo 'Start Model Run At ' `date` #> Choose compiler and set up CMAQ environment with correct #> libraries using config.cmaq. Options: intel | gcc | pgi if ( ! $?compiler ) then - setenv compiler intel + setenv compiler gcc endif if ( ! $?compilerVrsn ) then setenv compilerVrsn Empty @@ -34,10 +41,10 @@ echo 'Start Model Run At ' `date` cd CCTM/scripts #> Set General Parameters for Configuring the Simulation - set VRSN = v55 #> Code Version + set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi set MECH = cb6r5_ae7_aq #> Mechanism ID - set APPL = Bench_2018_12NE3 #> Application Name (e.g. Gridname) + set APPL = Bench_2018_12NE3_${MECH}_m3dry #> Application Name (e.g. Gridname) #> Define RUNID as any combination of parameters above or others. By default, #> this information will be collected into this one string, $RUNID, for easy @@ -46,7 +53,7 @@ echo 'Start Model Run At ' `date` #> Set the build directory (this is where the CMAQ executable #> is located by default). - set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString} + set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${MECH}_m3dry set EXEC = CCTM_${VRSN}.exe #> Output Each line of Runscript to Log File @@ -55,7 +62,7 @@ echo 'Start Model Run At ' `date` #> Set Working, Input, and Output Directories setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory - setenv INPDIR ${CMAQ_DATA}/2018_12NE3 #> Input Directory + setenv INPDIR ${CMAQ_DATA}/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input/2018_12NE3 #> Input Directory setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location setenv NMLpath ${BLD} #> Location of Namelists. Common places are: #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} @@ -74,7 +81,7 @@ echo 'Start Model Run At ' `date` #> Set Start and End Days for looping setenv NEW_START TRUE #> Set to FALSE for model restart set START_DATE = "2018-07-01" #> beginning date (July 1, 2016) - set END_DATE = "2018-07-01" #> ending date (July 1, 2016) + set END_DATE = "2018-07-02" #> ending date (July 1, 2016) #> Set Timestepping Parameters set STTIME = 000000 #> beginning GMT time (HHMMSS) @@ -130,8 +137,8 @@ set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` #> Output Species and Layer Options #> CONC file species; comment or set to "ALL" to write all species to CONC - setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 FORM ISOP NH3 ANH4I ANH4J ASO4I ASO4J" - setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC + # setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 FORM ISOP NH3 ANH4I ANH4J ASO4I ASO4J" + #setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC #> ACONC file species; comment or set to "ALL" to write all species to ACONC #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" @@ -292,7 +299,7 @@ while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ #> Initial conditions if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ICFILE CCTM_ICON_${MECH}_12NE3_20180701.nc + setenv ICFILE CCTM_ICON_v54_${MECH}_12NE3_20180701.nc setenv INIT_MEDC_1 notused else set ICpath = $OUTDIR @@ -301,7 +308,7 @@ while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ endif #> Boundary conditions - set BCFILE = CCTM_BCON_${MECH}_12NE3_${YYYYMMDD}.nc + set BCFILE = CCTM_BCON_v54_${MECH}_12NE3_${YYYYMMDD}.nc #> Off-line photolysis rates #set JVALfile = JTABLE_${YYYYJJJ} From 126066c222bdba6d1cfc7823abd9c4cc94a13e34 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 11:07:15 -0400 Subject: [PATCH 261/375] update --- CCTM/scripts/run_cctm_Bench_2018_12NE3.csh | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh index 848fb0dc4..c1e4fa19b 100755 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh @@ -1,12 +1,4 @@ #!/bin/csh -f -#SBATCH -J CMAQ -#SBATCH --nodes=2 -#SBATCH --ntasks-per-node=16 -#SBATCH --time=2:00:00 -#SBATCH -p debug_queue -##SBATCH -p 528_queue -#SBATCH -o /proj/ie/proj/CMAS/CMAQ/CMAQv5.5_testing/CMAQ_v5.5/CCTM/scripts/cmaq_cb6r5_m3dry_%j.txt - # ===================== CCTMv5.5.X Run Script ========================= # Usage: run.cctm >&! cctm_Bench_2018_12SE1.log & @@ -29,7 +21,7 @@ echo 'Start Model Run At ' `date` #> Choose compiler and set up CMAQ environment with correct #> libraries using config.cmaq. Options: intel | gcc | pgi if ( ! $?compiler ) then - setenv compiler gcc + setenv compiler intel endif if ( ! $?compilerVrsn ) then setenv compilerVrsn Empty From fa23faff27987771699c4efb8bd42a0eafc2aef0 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 11:09:10 -0400 Subject: [PATCH 262/375] update --- CCTM/scripts/run_cctm_Bench_2018_12NE3.csh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh index c1e4fa19b..be85272d6 100755 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh @@ -1,7 +1,8 @@ #!/bin/csh -f # ===================== CCTMv5.5.X Run Script ========================= -# Usage: run.cctm >&! cctm_Bench_2018_12SE1.log & +# Usage: run.cctm >&! cctm_Bench_2018_12NE3.log & +# Slurm Usage: sbatch run_cctm_Bench_2018_12NE3.csh # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) From b1be12fafc46ddc291568129d9d676f7979cf6ca Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 11:09:46 -0400 Subject: [PATCH 263/375] update --- ...un_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh | 826 ------------------ 1 file changed, 826 deletions(-) delete mode 100755 CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh deleted file mode 100755 index 72c7336a7..000000000 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh +++ /dev/null @@ -1,826 +0,0 @@ -#!/bin/csh -f -#SBATCH -J CMAQ -#SBATCH --nodes=2 -#SBATCH --ntasks-per-node=16 -#SBATCH --time=2:00:00 -#SBATCH -p debug_queue -##SBATCH -p 528_queue -#SBATCH -o /proj/ie/proj/CMAS/CMAQ/CMAQv5.5_testing/CMAQ_v5.5/CCTM/scripts/cmaq_cracmm2_stage_%j.txt - - -# ===================== CCTMv5.5.X Run Script ========================= -# Usage: run.cctm >&! cctm_Bench_2018_12SE1.log & -# -# To report problems or request help with this script/program: -# http://www.epa.gov/cmaq (EPA CMAQ Website) -# http://www.cmascenter.org (CMAS Website) -# =================================================================== - -# =================================================================== -#> Runtime Environment Options -# =================================================================== - -echo 'Start Model Run At ' `date` - -#> Toggle Diagnostic Mode which will print verbose information to -#> standard output - setenv CTM_DIAG_LVL 0 - -#> Choose compiler and set up CMAQ environment with correct -#> libraries using config.cmaq. Options: intel | gcc | pgi - if ( ! $?compiler ) then - setenv compiler gcc - endif - if ( ! $?compilerVrsn ) then - setenv compilerVrsn Empty - endif - -#> Source the config.cmaq file to set the build environment - cd ../.. - source ./config_cmaq.csh $compiler $compilerVrsn - cd CCTM/scripts - -#> Set General Parameters for Configuring the Simulation - set VRSN = v55 #> Code Version - set PROC = mpi #> serial or mpi - set MECH = cracmm2 #> Mechanism ID - set APPL = Bench_2018_12NE3_${MECH}_stage #> Application Name (e.g. Gridname) - -#> Define RUNID as any combination of parameters above or others. By default, -#> this information will be collected into this one string, $RUNID, for easy -#> referencing in output binaries and log files as well as in other scripts. - setenv RUNID ${VRSN}_${compilerString}_${APPL} - -#> Set the build directory (this is where the CMAQ executable -#> is located by default). - set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_cracmm2_stage - set EXEC = CCTM_${VRSN}.exe - -#> Output Each line of Runscript to Log File - if ( $CTM_DIAG_LVL != 0 ) set echo - -#> Set Working, Input, and Output Directories - setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. - setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory - setenv INPDIR ${CMAQ_DATA}/cmaqv55_Benchmark_version2 #Input Directory - setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location - setenv NMLpath ${BLD} #> Location of Namelists. Common places are: - #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} - - echo "" - echo "Working Directory is $WORKDIR" - echo "Build Directory is $BLD" - echo "Output Directory is $OUTDIR" - echo "Log Directory is $LOGDIR" - echo "Executable Name is $EXEC" - -# ===================================================================== -#> CCTM Configuration Options -# ===================================================================== - -#> Set Start and End Days for looping - setenv NEW_START TRUE #> Set to FALSE for model restart - set START_DATE = "2018-07-01" #> beginning date (July 1, 2016) - set END_DATE = "2018-07-02" #> ending date (July 1, 2016) - -#> Set Timestepping Parameters -set STTIME = 000000 #> beginning GMT time (HHMMSS) -set NSTEPS = 240000 #> time duration (HHMMSS) for this run -set TSTEP = 010000 #> output time step interval (HHMMSS) - -#> Horizontal domain decomposition -if ( $PROC == serial ) then - setenv NPCOL_NPROW "1 1"; set NPROCS = 1 # single processor setting -else - @ NPCOL = 8; @ NPROW = 4 - @ NPROCS = $NPCOL * $NPROW - setenv NPCOL_NPROW "$NPCOL $NPROW"; -endif - -#> Define Execution ID: e.g. [CMAQ-Version-Info]_[User]_[Date]_[Time] -if ( ! -e ${BLD}/CCTM_${VRSN}.cfg ) then - set SHAID = "" -else - set SHAID = `grep "sha_ID" ${BLD}/CCTM_${VRSN}.cfg | cut -c 13-22` - if ( $SHAID == not_a_repo ) then - set SHAID = "" - else - set SHAID = "_sha="$SHAID - endif -endif -setenv EXECUTION_ID "CMAQ_CCTM${VRSN}${SHAID}_`id -u -n`_`date -u +%Y%m%d_%H%M%S_%N`" #> Inform IO/API of the Execution ID -echo "" -echo "---CMAQ EXECUTION ID: $EXECUTION_ID ---" - -#> Keep or Delete Existing Output Files -set CLOBBER_DATA = TRUE - -#> Logfile Options -#> Master Log File Name; uncomment to write standard output to a log, otherwise write to screen -#setenv LOGFILE $CMAQ_HOME/$RUNID.log -if (! -e $LOGDIR ) then - mkdir -p $LOGDIR -endif -setenv PRINT_PROC_TIME Y #> Print timing for all science subprocesses to Logfile - #> [ default: TRUE or Y ] -setenv STDOUT T #> Override I/O-API trying to write information to both the processor - #> logs and STDOUT [ options: T | F ] - -setenv GRID_NAME 2018_12NE3 #> check GRIDDESC file for GRID_NAME options -setenv GRIDDESC $INPDIR/GRIDDESC #> grid description file - -#> Retrieve the number of columns, rows, and layers in this simulation -set NZ = 35 -set NX = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f6` -set NY = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f7` -set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` - -#> Output Species and Layer Options - #> CONC file species; comment or set to "ALL" to write all species to CONC - #setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 HCHO ISOP NH3 ANH4I ANH4J ASO4I ASO4J" - #setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC - - #> ACONC file species; comment or set to "ALL" to write all species to ACONC - #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" - setenv AVG_CONC_SPCS "ALL" - setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC - setenv AVG_FILE_ENDTIME N #> override default beginning ACONC timestamp [ default: N ] - -#> Synchronization Time Step and Tolerance Options -setenv CTM_MAXSYNC 300 #> max sync time step (sec) [ default: 720 ] -setenv CTM_MINSYNC 60 #> min sync time step (sec) [ default: 60 ] -setenv SIGMA_SYNC_TOP 0.7 #> top sigma level thru which sync step determined [ default: 0.7 ] -#setenv ADV_HDIV_LIM 0.95 #> maximum horiz. div. limit for adv step adjust [ default: 0.9 ] -setenv CTM_ADV_CFL 0.95 #> max CFL [ default: 0.75] -#setenv RB_ATOL 1.0E-09 #> global ROS3 solver absolute tolerance [ default: 1.0E-07 ] - -#> Science Options -setenv CTM_OCEAN_CHEM Y #> Flag for ocean halogen chemistry, sea spray aerosol emissions, - #> and enhanced ozone deposition over ocean waters [ default: Y ] -setenv CTM_WB_DUST N #> use inline windblown dust emissions (only for use with PX) [ default: N ] -setenv CTM_LTNG_NO N #> turn on lightning NOx [ default: N ] -setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], - #> otherwise revert to Kz0UT -setenv PX_VERSION Y #> WRF PX LSM -setenv CLM_VERSION N #> WRF CLM LSM -setenv NOAH_VERSION N #> WRF NOAH LSM -setenv CTM_ABFLUX Y #> ammonia bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_BIDI_FERT_NH3 T #> subtract fertilizer NH3 from emissions because it will be handled - #> by the BiDi calculation [ default: Y ] -setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ] - #> please see user guide (6.10.4 Nitrous Acid (HONO)) - #> for dependency on percent urban fraction dataset -setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ] -setenv CTM_PVO3 N #> consider potential vorticity module for O3 transport from the stratosphere - #> [default: N] - -setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions with BEIS [ default: N ] -setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ] -setenv BDSNP_MEGAN N #> turns on BDSNP soil NO emissions [ default: N ] - -setenv AEROSOL_OPTICS 3 #> sets method for determining aerosol optics affecting photolysis - #> frequencies ( 3 is the default value ) - #> VALUES 1 thru 3 determined Uniformly Volume Mixed spherical - #> (1-Tabular Mie; 2-Mie Calculation; 3-Case Approx to Mie Theory) - #> VALUES 4 thru 6 attempts to use core-shell mixing model when the - #> aerosol mode has signficant black carbon core otherwise use Volume Mixed - #> model where optics determined by - #> (4-Tabular Mie; 5-Mie Calculation; 6-Case Approx to Mie Theory) - -#> Surface Tiled Aerosol and Gaseous Exchange Options -#> Only active if DepMod=stage at compile time -setenv CTM_MOSAIC N #> Output landuse specific deposition velocities [ default: N ] -setenv CTM_STAGE_P22 N #> Pleim et al. 2022 Aerosol deposition model [default: N] -setenv CTM_STAGE_E20 Y #> Emerson et al. 2020 Aerosol deposition model [default: Y] -setenv CTM_STAGE_S22 N #> Shu et al. 2022 (CMAQ v5.3) Aerosol deposition model [default: N] - -setenv IC_AERO_M2WET F #> Specify whether or not initial condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv BC_AERO_M2WET F #> Specify whether or not boundary condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv IC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from initial - #> conditions [ default: T = use aerosol surface area ] -setenv BC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from boundary - #> conditions [ default: T = use aerosol surface area ] - - -#> Vertical Extraction Options -setenv VERTEXT N -setenv VERTEXT_COORD_PATH ${WORKDIR}/lonlat.csv - -#> I/O Controls -setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ] -setenv FL_ERR_STOP N #> stop on inconsistent input files -setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ] -setenv IOAPI_OFFSET_64 YES #> support large timestep records (>2GB/timestep record) [ options: YES | NO ] -setenv IOAPI_CHECK_HEADERS N #> check file headers [ options: Y | N ] -setenv CTM_EMISCHK N #> Abort CMAQ if missing surrogates from emissions Input files - -#> Diagnostic Output Flags -setenv CTM_CKSUM Y #> checksum report [ default: Y ] -setenv CLD_DIAG N #> cloud diagnostic file [ default: N ] - -setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ] -setenv NLAYS_PHOTDIAG "1" #> Number of layers for PHOTDIAG2 and PHOTDIAG3 from - #> Layer 1 to NLAYS_PHOTDIAG [ default: all layers ] -#setenv NWAVE_PHOTDIAG "294 303 310 316 333 381 607" #> Wavelengths written for variables - #> in PHOTDIAG2 and PHOTDIAG3 - #> [ default: all wavelengths ] - -setenv CTM_SSEMDIAG N #> sea-spray emissions diagnostic file [ default: N ] -setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; - #> Ignore if CTM_WB_DUST = N -setenv CTM_DEPV_FILE N #> deposition velocities diagnostic file [ default: N ] -setenv VDIFF_DIAG_FILE N #> vdiff & possibly aero grav. sedimentation diagnostic file [ default: N ] -setenv LTNGDIAG N #> lightning diagnostic file [ default: N ] -setenv B3GTS_DIAG N #> BEIS mass emissions diagnostic file [ default: N ] -setenv CTM_WVEL Y #> save derived vertical velocity component to conc - #> file [ default: Y ] - -# ===================================================================== -#> Input Directories and Filenames -# ===================================================================== - -set ICpath = $INPDIR/icbc #> initial conditions input directory -set BCpath = $INPDIR/icbc #> boundary conditions input directory -set EMISpath = $INPDIR/emis #> gridded emissions input directory -set IN_PTpath = $INPDIR/emis #> point source emissions input directory -set IN_LTpath = $INPDIR/lightning #> lightning NOx input directory -set METpath = $INPDIR/met/mcipv5.4 #> meteorology input directory -#set JVALpath = $INPDIR/jproc #> offline photolysis rate table directory -set OMIpath = $BLD #> ozone column data for the photolysis model -set EPICpath = $INPDIR/epic #> EPIC putput for bidirectional NH3 -set SZpath = $INPDIR/surface #> surf zone file for in-line seaspray emissions - -# ===================================================================== -#> Begin Loop Through Simulation Days -# ===================================================================== -set rtarray = "" - -set TODAYG = ${START_DATE} -set TODAYJ = `date -ud "${START_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set START_DAY = ${TODAYJ} -set STOP_DAY = `date -ud "${END_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set NDAYS = 0 - -while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ - - set NDAYS = `echo "${NDAYS} + 1" | bc -l` - - #> Retrieve Calendar day Information - set YYYYMMDD = `date -ud "${TODAYG}" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD - set YYYYMM = `date -ud "${TODAYG}" +%Y%m` #> Convert YYYY-MM-DD to YYYYMM - set YYMMDD = `date -ud "${TODAYG}" +%y%m%d` #> Convert YYYY-MM-DD to YYMMDD - set MM = `date -ud "${TODAYG}" +%m` #> Convert YYYY-MM-DD to MM - set YYYYJJJ = $TODAYJ - - #> Calculate Yesterday's Date - set YESTERDAY = `date -ud "${TODAYG}-1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYJJJ - -# ===================================================================== -#> Set Output String and Propagate Model Configuration Documentation -# ===================================================================== - echo "" - echo "Set up input and output files for Day ${TODAYG}." - - #> set output file name extensions - setenv CTM_APPL ${RUNID}_${YYYYMMDD} - - #> Copy Model Configuration To Output Folder - if ( ! -d "$OUTDIR" ) mkdir -p $OUTDIR - cp $BLD/CCTM_${VRSN}.cfg $OUTDIR/CCTM_${CTM_APPL}.cfg - -# ===================================================================== -#> Input Files (Some are Day-Dependent) -# ===================================================================== - - #> Initial conditions - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ICFILE CCTM_ICON_v55_CRACMM2_STAGE_12NE3_20180701.nc - setenv INIT_MEDC_1 notused - else - set ICpath = $OUTDIR - setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc - setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc - endif - - #> Boundary conditions - set BCFILE = BCON_v55_CRACMM2_STAGE_2018_12NE3_${YYYYMMDD}.nc - - #> Off-line photolysis rates - #set JVALfile = JTABLE_${YYYYJJJ} - - #> Ozone column data - set OMIfile = OMI_1979_to_2019.dat - - #> Optics file - set OPTfile = PHOT_OPTICS.dat - - #> MCIP meteorology files - setenv GRID_BDY_2D $METpath/GRIDBDY2D_12NE3_${YYYYMMDD}.nc # GRID files are static, not day-specific - setenv GRID_CRO_2D $METpath/GRIDCRO2D_12NE3_${YYYYMMDD}.nc - setenv GRID_CRO_3D $METpath/GRIDCRO3D_12NE3_${YYYYMMDD}.nc - setenv GRID_DOT_2D $METpath/GRIDDOT2D_12NE3_${YYYYMMDD}.nc - setenv MET_CRO_2D $METpath/METCRO2D_12NE3_${YYYYMMDD}.nc - setenv MET_CRO_3D $METpath/METCRO3D_12NE3_${YYYYMMDD}.nc - setenv MET_DOT_3D $METpath/METDOT3D_12NE3_${YYYYMMDD}.nc - setenv MET_BDY_3D $METpath/METBDY3D_12NE3_${YYYYMMDD}.nc - setenv LUFRAC_CRO $METpath/LUFRAC_CRO_12NE3_${YYYYMMDD}.nc - - #> Control Files - #> - #> IMPORTANT NOTE - #> - #> The DESID control files defined below are an integral part of controlling the behavior of the model simulation. - #> Among other things, they control the mapping of species in the emission files to chemical species in the model and - #> several aspects related to the simulation of organic aerosols. - #> Please carefully review the DESID control files to ensure that they are configured to be consistent with the assumptions - #> made when creating the emission files defined below and the desired representation of organic aerosols. - #> For further information, please see: - #> + AERO7 Release Notes section on 'Required emission updates': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Release_Notes/aero7_overview.md - #> + CMAQ User's Guide section 6.9.3 on 'Emission Compatability': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.9.3_Emission_Compatability - #> + Emission Control (DESID) Documentation in the CMAQ User's Guide: - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md - #> - setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml - setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml - - #> The following namelist configures aggregated output (via the Explicit and Lumped - #> Air Quality Model Output (ELMO) Module), domain-wide budget output, and chemical - #> family output. - setenv MISC_CTRL_NML ${BLD}/CMAQ_Control_Misc.nml - - #> The following namelist controls the mapping of meteorological land use types and the NH3 and Hg emission - #> potentials - setenv STAGECTRL_NML ${BLD}/CMAQ_Control_STAGE.nml - - #> Spatial Masks For Emissions Scaling - #setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file - setenv CMAQ_MASKS $INPDIR/surface/GRIDMASK_STATES_12NE3.nc - - #> Gridded Emissions Files - setenv N_EMIS_GR 2 - set EMISfile = emis_mole_all_${YYYYMMDD}_12NE3_nobeis_norwc_WR705_2018gc2.ncf - setenv GR_EMIS_001 ${EMISpath}/merged_nobeis_norwc/${EMISfile} - setenv GR_EMIS_LAB_001 GRIDDED_EMIS - setenv GR_EM_SYM_DATE_001 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set EMISfile = emis_mole_rwc_${YYYYMMDD}_12NE3_cmaq_cracmmv2_WR705_2018gc2.ncf - setenv GR_EMIS_002 ${EMISpath}/rwc/${EMISfile} - setenv GR_EMIS_LAB_002 GR_RES_FIRES - setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - #> In-line point emissions configuration - setenv N_EMIS_PT 10 #> Number of elevated source groups - - set STKCASEE = 12US1_cmaq_cracmmv2_WR705_2018gc2 # In-line Emission Rate File Suffix - set STKCASEG = 12US1_WR705_2018gc2 # Stack parameter File Suffix - - # Time-Independent Stack Parameters for Inline Point Sources - setenv STK_GRPS_001 $IN_PTpath/ptnonipm/stack_groups_ptnonipm_${STKCASEG}.ncf - setenv STK_GRPS_002 $IN_PTpath/ptegu/stack_groups_ptegu_${STKCASEG}.ncf - setenv STK_GRPS_003 $IN_PTpath/othpt/stack_groups_othpt_${STKCASEG}.ncf - setenv STK_GRPS_004 $IN_PTpath/ptagfire/stack_groups_ptagfire_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_GRPS_005 $IN_PTpath/ptfire_grass/stack_groups_ptfire_grass_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_GRPS_006 $IN_PTpath/ptfire/stack_groups_ptfire_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_GRPS_007 $IN_PTpath/ptfire_othna/stack_groups_ptfire_othna_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_GRPS_008 $IN_PTpath/pt_oilgas/stack_groups_pt_oilgas_${STKCASEG}.ncf - setenv STK_GRPS_009 $IN_PTpath/cmv_c3_12/stack_groups_cmv_c3_12_${STKCASEG}.ncf - setenv STK_GRPS_010 $IN_PTpath/cmv_c1c2_12/stack_groups_cmv_c1c2_12_${STKCASEG}.ncf - - # Emission Rates for Inline Point Sources - setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_004 $IN_PTpath/ptagfire/inln_mole_ptagfire_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_005 $IN_PTpath/ptfire_grass/inln_mole_ptfire_grass_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_006 $IN_PTpath/ptfire/inln_mole_ptfire_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_007 $IN_PTpath/ptfire_othna/inln_mole_ptfire_othna_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_008 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_009 $IN_PTpath/cmv_c3_12/inln_mole_cmv_c3_12_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_010 $IN_PTpath/cmv_c1c2_12/inln_mole_cmv_c1c2_12_${YYYYMMDD}_${STKCASEE}.ncf - - # Label Each Emissions Stream - setenv STK_EMIS_LAB_001 PT_NONEGU - setenv STK_EMIS_LAB_002 PT_EGU - setenv STK_EMIS_LAB_003 PT_OTHER - setenv STK_EMIS_LAB_004 PT_AGFIRES - setenv STK_EMIS_LAB_005 PT_RXFIRES - setenv STK_EMIS_LAB_006 PT_FIRES - setenv STK_EMIS_LAB_007 PT_OTHFIRES - setenv STK_EMIS_LAB_008 PT_OILGAS - setenv STK_EMIS_LAB_009 PT_CMV_C3 - setenv STK_EMIS_LAB_010 PT_CMV_C1C2 - - # Allow CMAQ to Use Point Source files with dates that do not - # match the internal model date - # To change default behaviour please see Users Guide for EMIS_SYM_DATE - setenv STK_EM_SYM_DATE_001 F - setenv STK_EM_SYM_DATE_002 F - setenv STK_EM_SYM_DATE_003 F - setenv STK_EM_SYM_DATE_004 F - setenv STK_EM_SYM_DATE_005 F - setenv STK_EM_SYM_DATE_006 F - setenv STK_EM_SYM_DATE_007 F - setenv STK_EM_SYM_DATE_008 F - - #> Lightning NOx configuration - if ( $CTM_LTNG_NO == 'Y' ) then - setenv LTNGNO "InLine" #> set LTNGNO to "Inline" to activate in-line calculation - - #> In-line lightning NOx options - setenv USE_NLDN Y #> use hourly NLDN strike file [ default: Y ] - if ( $USE_NLDN == Y ) then - setenv NLDN_STRIKES ${IN_LTpath}/NLDN_12km_60min_${YYYYMMDD}.ioapi - endif - setenv LTNGPARMS_FILE ${IN_LTpath}/LTNG_AllParms_12NE3.nc #> lightning parameter file - endif - - #> In-line biogenic emissions configuration - if ( $CTM_BIOGEMIS_BE == 'Y' ) then - set IN_BEISpath = ${INPDIR}/surface - setenv GSPRO $BLD/gspro_biogenics.txt - setenv BEIS_NORM_EMIS $IN_BEISpath/beis4_beld6_norm_emis.12NE3.nc - setenv BEIS_SOILINP $OUTDIR/CCTM_BSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if NEW_START = TRUE - endif - if ( $CTM_BIOGEMIS_MG == 'Y' ) then - setenv MEGAN_SOILINP $OUTDIR/CCTM_MSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if INITIAL_RUN = Y - #> ; ignore if IGNORE_SOILINP = Y - setenv MEGAN_CTS $SZpath/megan3.2/CT3_CONUS.ncf - setenv MEGAN_EFS $SZpath/megan3.2/EFMAPS_CONUS.ncf - setenv MEGAN_LDF $SZpath/megan3.2/LDF_CONUS.ncf - if ($BDSNP_MEGAN == 'Y') then - setenv BDSNPINP $OUTDIR/CCTM_BDSNPOUT_${RUNID}_${YESTERDAY}.nc - setenv BDSNP_FFILE $SZpath/megan3.2/FERT_tceq_12km.ncf - setenv BDSNP_NFILE $SZpath/megan3.2/NDEP_tceq_12km.ncf - setenv BDSNP_LFILE $SZpath/megan3.2/LANDTYPE_tceq_12km.ncf - setenv BDSNP_AFILE $SZpath/megan3.2/ARID_tceq_12km.ncf - setenv BDSNP_NAFILE $SZpath/megan3.2/NONARID_tceq_12km.ncf - endif - endif - - #> In-line sea spray emissions configuration - setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file - - #> Bidirectional ammonia configuration - if ( $CTM_ABFLUX == 'Y' ) then - setenv E2C_SOIL ${EPICpath}/2018r1_EPIC0509_12NE3_soil.nc - setenv E2C_CHEM ${EPICpath}/2018r1_EPIC0509_12NE3_time${YYYYMMDD}.nc - setenv E2C_CHEM_YEST ${EPICpath}/2018r1_EPIC0509_12NE3_time${YESTERDAY}.nc - setenv E2C_LU ${EPICpath}/beld4_12NE3_2011.nc - endif - -#> Inline Process Analysis - setenv CTM_PROCAN N #> use process analysis [ default: N] - if ( $?CTM_PROCAN ) then # $CTM_PROCAN is defined - if ( $CTM_PROCAN == 'Y' || $CTM_PROCAN == 'T' ) then -#> process analysis global column, row and layer ranges -# setenv PA_BCOL_ECOL "10 90" # default: all columns -# setenv PA_BROW_EROW "10 80" # default: all rows -# setenv PA_BLEV_ELEV "1 4" # default: all levels - setenv PACM_INFILE ${NMLpath}/pa_${MECH}.ctl - setenv PACM_REPORT $OUTDIR/"PA_REPORT".${YYYYMMDD} - endif - endif - -#> Integrated Source Apportionment Method (ISAM) Options - setenv CTM_ISAM N - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - setenv SA_IOLIST ${WORKDIR}/isam_control.2018_12NE3.txt - setenv ISAM_BLEV_ELEV " 1 1" - setenv AISAM_BLEV_ELEV " 1 1" - - #> Set Up ISAM Initial Condition Flags - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ISAM_NEW_START Y - setenv ISAM_PREVDAY - else - setenv ISAM_NEW_START N - setenv ISAM_PREVDAY "$OUTDIR/CCTM_SA_CGRID_${RUNID}_${YESTERDAY}.nc" - endif - - #> Set Up ISAM Output Filenames - setenv SA_ACONC_1 "$OUTDIR/CCTM_SA_ACONC_${CTM_APPL}.nc -v" - setenv SA_CONC_1 "$OUTDIR/CCTM_SA_CONC_${CTM_APPL}.nc -v" - setenv SA_DD_1 "$OUTDIR/CCTM_SA_DRYDEP_${CTM_APPL}.nc -v" - setenv SA_WD_1 "$OUTDIR/CCTM_SA_WETDEP_${CTM_APPL}.nc -v" - setenv SA_CGRID_1 "$OUTDIR/CCTM_SA_CGRID_${CTM_APPL}.nc -v" - - #> Set optional ISAM regions files - setenv ISAM_REGIONS $INPDIR/surface/GRIDMASK_STATES_12NE3.nc - - #> Options used to favor tracked species in reaction for Ozone-NOx chemistry - setenv ISAM_O3_WEIGHTS 5 # weights for tracked species Default is 5 - # OPTIONS - # 1 does not weight any species - # 2 weights NOx and subset of NOz species - # 3 uses with from option 2 plus weight OVOC species, organic radicals and operators - # 4 weight OVOC species, organic radicals and operators - # 5 toggles between two weighting set based on VOC and NOx limited ozone production - # Below options only used if ISAM_O3_WEIGHTS set to 5 - setenv ISAM_NOX_CASE 2 # weights for tracked species when ozone production is NOx limited. Default is 2 - setenv ISAM_VOC_CASE 4 # weights for tracked species when ozone production is VOC limited. Default is 4 - setenv VOC_NOX_TRANS 0.35 # value of Prod H2O2 over Prod HNO3 less than where - # ISAM_VOC_CASE weights are used. Otherwise, ISAM_NOX_CASE - # weights are used. Default is 0.35 - - endif - endif - - -#> Sulfur Tracking Model (STM) - setenv STM_SO4TRACK N #> sulfur tracking [ default: N ] - if ( $?STM_SO4TRACK ) then - if ( $STM_SO4TRACK == 'Y' || $STM_SO4TRACK == 'T' ) then - - #> option to normalize sulfate tracers [ default: Y ] - setenv STM_ADJSO4 Y - - endif - endif - -#> Decoupled Direct Method in 3D (DDM-3D) Options - setenv CTM_DDM3D N # Sets up requisite script settings for DDM-3D (default is N/F) - # Additionally requires for CCTM to be compiled for DDM-3D simulations - - set NPMAX = 1 # Number of sensitivity parameters defined in SEN_INPUT - setenv SEN_INPUT ${WORKDIR}/sensinput.2018_12NE3.dat - - setenv DDM3D_HIGH N # allow higher-order sensitivity parameters in SEN_INPUT [ T | Y | F | N ] (default is N/F) - - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv DDM3D_RST N # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = # sensitivity fields are initialized to 0.0 on the first hour of the first day - set S_ICfile = - else - setenv DDM3D_RST Y # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = $OUTDIR - set S_ICfile = CCTM_SENGRID_${RUNID}_${YESTERDAY}.nc - endif - - setenv CTM_NPMAX $NPMAX - setenv CTM_SENS_1 "$OUTDIR/CCTM_SENGRID_${CTM_APPL}.nc -v" - setenv A_SENS_1 "$OUTDIR/CCTM_ASENS_${CTM_APPL}.nc -v" - setenv CTM_SWETDEP_1 "$OUTDIR/CCTM_SENWDEP_${CTM_APPL}.nc -v" - setenv CTM_SDRYDEP_1 "$OUTDIR/CCTM_SENDDEP_${CTM_APPL}.nc -v" - setenv INIT_SENS_1 $S_ICpath/$S_ICfile - - -# ===================================================================== -#> Output Files -# ===================================================================== - - #> set output file names - setenv S_CGRID "$OUTDIR/CCTM_CGRID_${CTM_APPL}.nc" #> 3D Inst. Concentrations - setenv CTM_CONC_1 "$OUTDIR/CCTM_CONC_${CTM_APPL}.nc -v" #> On-Hour Concentrations - setenv A_CONC_1 "$OUTDIR/CCTM_ACONC_${CTM_APPL}.nc -v" #> Hourly Avg. Concentrations - setenv MEDIA_CONC "$OUTDIR/CCTM_MEDIA_CONC_${CTM_APPL}.nc -v" #> NH3 Conc. in Media - setenv CTM_DRY_DEP_1 "$OUTDIR/CCTM_DRYDEP_${CTM_APPL}.nc -v" #> Hourly Dry Deposition - setenv CTM_DEPV_DIAG "$OUTDIR/CCTM_DEPV_${CTM_APPL}.nc -v" #> Dry Deposition Velocities - setenv B3GTS_S "$OUTDIR/CCTM_B3GTS_S_${CTM_APPL}.nc -v" #> Biogenic Emissions - setenv BEIS_SOILOUT "$OUTDIR/CCTM_BSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv MEGAN_SOILOUT "$OUTDIR/CCTM_MSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv BDSNPOUT "$OUTDIR/CCTM_BDSNPOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv CTM_WET_DEP_1 "$OUTDIR/CCTM_WETDEP1_${CTM_APPL}.nc -v" #> Wet Dep From All Clouds - setenv CTM_WET_DEP_2 "$OUTDIR/CCTM_WETDEP2_${CTM_APPL}.nc -v" #> Wet Dep From SubGrid Clouds - setenv CTM_ELMO_1 "$OUTDIR/CCTM_ELMO_${CTM_APPL}.nc -v" #> On-Hour Particle Diagnostics - setenv CTM_AELMO_1 "$OUTDIR/CCTM_AELMO_${CTM_APPL}.nc -v" #> Hourly Avg. Particle Diagnostics - setenv CTM_RJ_1 "$OUTDIR/CCTM_PHOTDIAG1_${CTM_APPL}.nc -v" #> 2D Surface Summary from Inline Photolysis - setenv CTM_RJ_2 "$OUTDIR/CCTM_PHOTDIAG2_${CTM_APPL}.nc -v" #> 3D Photolysis Rates - setenv CTM_RJ_3 "$OUTDIR/CCTM_PHOTDIAG3_${CTM_APPL}.nc -v" #> 3D Optical and Radiative Results from Photolysis - setenv CTM_SSEMIS_1 "$OUTDIR/CCTM_SSEMIS_${CTM_APPL}.nc -v" #> Sea Spray Emissions - setenv CTM_DUST_EMIS_1 "$OUTDIR/CCTM_DUSTEMIS_${CTM_APPL}.nc -v" #> Dust Emissions - setenv CTM_BUDGET "$OUTDIR/CCTM_BUDGET_${CTM_APPL}.txt -v" #> Budget [Default Off] - setenv CTM_IPR_1 "$OUTDIR/CCTM_PA_1_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_2 "$OUTDIR/CCTM_PA_2_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_3 "$OUTDIR/CCTM_PA_3_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IRR_1 "$OUTDIR/CCTM_IRR_1_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_2 "$OUTDIR/CCTM_IRR_2_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_3 "$OUTDIR/CCTM_IRR_3_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_DRY_DEP_MOS "$OUTDIR/CCTM_DDMOS_${CTM_APPL}.nc -v" #> Dry Dep - setenv CTM_DEPV_MOS "$OUTDIR/CCTM_DEPVMOS_${CTM_APPL}.nc -v" #> Dry Dep Velocity - setenv CTM_VDIFF_DIAG "$OUTDIR/CCTM_VDIFF_DIAG_${CTM_APPL}.nc -v" #> Vertical Dispersion Diagnostic - setenv CTM_VSED_DIAG "$OUTDIR/CCTM_VSED_DIAG_${CTM_APPL}.nc -v" #> Particle Grav. Settling Velocity - setenv CTM_LTNGDIAG_1 "$OUTDIR/CCTM_LTNGHRLY_${CTM_APPL}.nc -v" #> Hourly Avg Lightning NO - setenv CTM_LTNGDIAG_2 "$OUTDIR/CCTM_LTNGCOL_${CTM_APPL}.nc -v" #> Column Total Lightning NO - setenv CTM_VEXT_1 "$OUTDIR/CCTM_VEXT_${CTM_APPL}.nc -v" #> On-Hour 3D Concs at select sites - - #> set floor file (neg concs) - setenv FLOOR_FILE ${OUTDIR}/FLOOR_${CTM_APPL}.txt - - #> look for existing log files and output files - ( ls CTM_LOG_???.${CTM_APPL} > buff.txt ) >& /dev/null - ( ls ${LOGDIR}/CTM_LOG_???.${CTM_APPL} >> buff.txt ) >& /dev/null - set log_test = `cat buff.txt`; rm -f buff.txt - - set OUT_FILES = (${FLOOR_FILE} ${S_CGRID} ${CTM_CONC_1} ${A_CONC_1} ${MEDIA_CONC} \ - ${CTM_DRY_DEP_1} $CTM_DEPV_DIAG $B3GTS_S $MEGAN_SOILOUT $BEIS_SOILOUT $BDSNPOUT \ - $CTM_WET_DEP_1 $CTM_WET_DEP_2 $CTM_ELMO_1 $CTM_AELMO_1 \ - $CTM_RJ_1 $CTM_RJ_2 $CTM_RJ_3 $CTM_SSEMIS_1 $CTM_DUST_EMIS_1 $CTM_IPR_1 $CTM_IPR_2 \ - $CTM_IPR_3 $CTM_BUDGET $CTM_IRR_1 $CTM_IRR_2 $CTM_IRR_3 $CTM_DRY_DEP_MOS \ - $CTM_DEPV_MOS $CTM_VDIFF_DIAG $CTM_VSED_DIAG $CTM_LTNGDIAG_1 $CTM_LTNGDIAG_2 $CTM_VEXT_1 ) - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${SA_ACONC_1} ${SA_CONC_1} ${SA_DD_1} ${SA_WD_1} \ - ${SA_CGRID_1} ) - endif - endif - if ( $?CTM_DDM3D ) then - if ( $CTM_DDM3D == 'Y' || $CTM_DDM3D == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${CTM_SENS_1} ${A_SENS_1} ${CTM_SWETDEP_1} ${CTM_SDRYDEP_1} ) - endif - endif - set OUT_FILES = `echo $OUT_FILES | sed "s; -v;;g" | sed "s;MPI:;;g" ` - ( ls $OUT_FILES > buff.txt ) >& /dev/null - set out_test = `cat buff.txt`; rm -f buff.txt - - #> delete previous output if requested - if ( $CLOBBER_DATA == true || $CLOBBER_DATA == TRUE ) then - echo - echo "Existing Logs and Output Files for Day ${TODAYG} Will Be Deleted" - - #> remove previous log files - foreach file ( ${log_test} ) - #echo "Deleting log file: $file" - /bin/rm -f $file - end - - #> remove previous output files - foreach file ( ${out_test} ) - #echo "Deleting output file: $file" - /bin/rm -f $file - end - /bin/rm -f ${OUTDIR}/CCTM_DESID*${CTM_APPL}.nc - - else - #> error if previous log files exist - if ( "$log_test" != "" ) then - echo "*** Logs exist - run ABORTED ***" - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - - #> error if previous output files exist - if ( "$out_test" != "" ) then - echo "*** Output Files Exist - run will be ABORTED ***" - foreach file ( $out_test ) - echo " cannot delete $file" - end - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - endif - - #> for the run control ... - setenv CTM_STDATE $YYYYJJJ - setenv CTM_STTIME $STTIME - setenv CTM_RUNLEN $NSTEPS - setenv CTM_TSTEP $TSTEP - setenv INIT_CONC_1 $ICpath/$ICFILE - setenv BNDY_CONC_1 $BCpath/$BCFILE - setenv OMI $OMIpath/$OMIfile - setenv MIE_TABLE $OUTDIR/mie_table_coeffs_${compilerString}.txt - setenv OPTICS_DATA $OMIpath/$OPTfile - #setenv XJ_DATA $JVALpath/$JVALfile - - #> species defn & photolysis - setenv gc_matrix_nml ${NMLpath}/GC_$MECH.nml - setenv ae_matrix_nml ${NMLpath}/AE_$MECH.nml - setenv nr_matrix_nml ${NMLpath}/NR_$MECH.nml - setenv tr_matrix_nml ${NMLpath}/Species_Table_TR_0.nml - - #> check for photolysis input data - setenv CSQY_DATA ${NMLpath}/CSQY_DATA_$MECH - - if (! (-e $CSQY_DATA ) ) then - echo " $CSQY_DATA not found " - exit 1 - endif - if (! (-e $OPTICS_DATA ) ) then - echo " $OPTICS_DATA not found " - exit 1 - endif - -# =================================================================== -#> Execution Portion -# =================================================================== - - #> Print attributes of the executable - if ( $CTM_DIAG_LVL != 0 ) then - ls -l $BLD/$EXEC - size $BLD/$EXEC - unlimit - limit - endif - - #> Print Startup Dialogue Information to Standard Out - echo - echo "CMAQ Processing of Day $YYYYMMDD Began at `date`" - echo - - #> Executable call for single PE, uncomment to invoke - #( /usr/bin/time -p $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Executable call for multi PE, configure for your system - # set MPI = /usr/local/intel/impi/3.2.2.006/bin64 - # set MPIRUN = $MPI/mpirun - ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Harvest Timing Output so that it may be reported below - set rtarray = "${rtarray} `tail -3 buff_${EXECUTION_ID}.txt | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | head -1` " - rm -rf buff_${EXECUTION_ID}.txt - - #> Abort script if abnormal termination - if ( ! -e $OUTDIR/CCTM_CGRID_${CTM_APPL}.nc ) then - echo "" - echo "**************************************************************" - echo "** Runscript Detected an Error: CGRID file was not written. **" - echo "** This indicates that CMAQ was interrupted or an issue **" - echo "** exists with writing output. The runscript will now **" - echo "** abort rather than proceeding to subsequent days. **" - echo "**************************************************************" - break - endif - - #> Print Concluding Text - echo - echo "CMAQ Processing of Day $YYYYMMDD Finished at `date`" - echo - echo "\\\\\=====\\\\\=====\\\\\=====\\\\\=====/////=====/////=====/////=====/////" - echo - -# =================================================================== -#> Finalize Run for This Day and Loop to Next Day -# =================================================================== - - #> Save Log Files and Move on to Next Simulation Day - mv CTM_LOG_???.${CTM_APPL} $LOGDIR - if ( $CTM_DIAG_LVL != 0 ) then - mv CTM_DIAG_???.${CTM_APPL} $LOGDIR - endif - - #> The next simulation day will, by definition, be a restart - setenv NEW_START false - - #> Increment both Gregorian and Julian Days - set TODAYG = `date -ud "${TODAYG}+1days" +%Y-%m-%d` #> Add a day for tomorrow - set TODAYJ = `date -ud "${TODAYG}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ - -end #Loop to the next Simulation Day - -# =================================================================== -#> Generate Timing Report -# =================================================================== -set RTMTOT = 0 -foreach it ( `seq ${NDAYS}` ) - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - set RTMTOT = `echo "${RTMTOT} + ${rt}" | bc -l` -end - -set RTMAVG = `echo "scale=2; ${RTMTOT} / ${NDAYS}" | bc -l` -set RTMTOT = `echo "scale=2; ${RTMTOT} / 1" | bc -l` - -echo -echo "==================================" -echo " ***** CMAQ TIMING REPORT *****" -echo "==================================" -echo "Start Day: ${START_DATE}" -echo "End Day: ${END_DATE}" -echo "Number of Simulation Days: ${NDAYS}" -echo "Domain Name: ${GRID_NAME}" -echo "Number of Grid Cells: ${NCELLS} (ROW x COL x LAY)" -echo "Number of Layers: ${NZ}" -echo "Number of Processes: ${NPROCS}" -echo " All times are in seconds." -echo -echo "Num Day Wall Time" -set d = 0 -set day = ${START_DATE} -foreach it ( `seq ${NDAYS}` ) - # Set the right day and format it - set d = `echo "${d} + 1" | bc -l` - set n = `printf "%02d" ${d}` - - # Choose the correct time variables - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - - # Write out row of timing data - echo "${n} ${day} ${rt}" - - # Increment day for next loop - set day = `date -ud "${day}+1days" +%Y-%m-%d` -end -echo " Total Time = ${RTMTOT}" -echo " Avg. Time = ${RTMAVG}" - -exit From a85a55a34c2e0454396805f133a2f6d96fc2e5ef Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 11:13:39 -0400 Subject: [PATCH 264/375] update --- .../CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md | 280 ------------------ 1 file changed, 280 deletions(-) delete mode 100644 DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md deleted file mode 100644 index 7b5fa66b6..000000000 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_m3dry.md +++ /dev/null @@ -1,280 +0,0 @@ -# CMAQ Installation & Benchmarking Tutorial for CB6R5 and M3DRY - -Purpose: This guide describes how to install and run the CMAQ test case for the CB6R5 mechanism with the M3DRY dry deposition scheme, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. - -Benchmarking refers to a simulation that is used to verify that the software is installed correctly. Benchmarking CMAQ is recommended in the following circumstances: -- Installation by a new user -- Installation on a new server -- Following kernel upgrades -- Following Fortran/C compiler upgrades -- Following netCDF or I/O API library upgrades - -## System Checks - -The following support software are required for compiling and running CMAQ. - -1. Fortran and C compilers, e.g., [Intel](https://software.intel.com/en-us/fortran-compilers), [Portland Group](http://www.pgroup.com), [Gnu](https://gcc.gnu.org/wiki/GFortran) -2. [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) -2. Message Passing Interface (MPI), e.g., [OpenMPI](https://www.open-mpi.org) or [MVAPICH2](http://www.mcs.anl.gov/research/projects/mpich2). -3. Latest release of [netCDF-C](https://www.unidata.ucar.edu/software/netcdf/docs/getting_and_building_netcdf.html) and [netCDF-Fortran](https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html) **built with netCDF4, HDF5, HDF4, DAP client, PnetCDF, or zlib support** -4. [I/O API](https://www.cmascenter.org/download/software/ioapi/ioapi_3-2.cfm?DB=TRUE) version 3.2 **tagged 20200828** -(note: if you have not installed the above libraries, please see the CMAQ_UG_tutorial_build_[gcc/intel/pgi].md tutorials available here: -https://github.com/USEPA/CMAQ/tree/main/DOCS/Users_Guide/Tutorials - -The suggested hardware requirements for running the CMAQ Southeast Benchmark case on a Linux workstation are: - -1. Linux environment with a 16 processors -2. 16 GB RAM -3. 400 GB hard drive storage - -## Install CMAQ and Required Libraries - -In the directory where you would like to install CMAQ, create the directory issue the following command to clone the EPA GitHub repository for CMAQv5.5: - -``` -git clone -b main https://github.com/USEPA/CMAQ.git CMAQ_REPO -``` - -For instructions on installing CMAQ from Zip files, see [Chapter 5](../CMAQ_UG_ch05_running_a_simulation.md). - -## Check Out a new Branch in the CMAQ Repository - -Checking out a new branch is a good idea even if you are not doing code development, per se. It is likely that you will want to retrieve new updates in the future, and an easy way to do this is through the main branch in the git repo. Thus, it is beneficial to leave it unperturbed if possible. -``` -cd CMAQ_REPO -git checkout -b my_branch -``` - -## Configure the CMAQ build environment - -The user has two options for building an environment. She or he may build and run CMAQ components directly in the repository structure (object files and executables will be ignored with .gitignore), or they may extract the build and run scripts out of the repository and work in a separate location. If you would like to build directly in the repository, skip to "Link the CMAQ Libraries" below. - -### Build and run in a user-specified directory outside of the repository -In the top level of CMAQ_REPO, the bldit_project.csh script will automatically replicate the CMAQ folder structure and copy every build and run script out of the repository so that you may modify them freely without version control. - -In bldit_project.csh, modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: -``` -set CMAQ_HOME = [your_install_path]/CMAQ_v5.5 -``` - -Now execute the script. -``` -./bldit_project.csh -``` - -## Link the CMAQ Libraries -The CMAQ build scripts require the following libraries and INCLUDE files to be available in the CMAQ_LIB directory (Note: the CMAQ_LIB gets set automatically by the config_cmaq.csh script, where `CMAQ_LIB = $CMAQ_HOME/lib`): - -- netCDF C library files are located in the `$CMAQ_LIB/netcdf/lib` directory -- netCDF Fortran library files are located in the `$CMAQ_LIB/netcdff/lib` directory -- I/O API library, include files and module files are located in the `$CMAQ_LIB/ioapi` directory -- MPI library and INCLUDE files are located in the `$CMAQ_LIB/mpi` directory - -The config_cmaq.csh script will automatically link the required libraries into the CMAQ_LIB directory. Set the locations of the netCDF, I/O API, and MPI installations on your Linux system with the following config_cmaq.csh environment variables: - -- `setenv IOAPI_INCL_DIR`: the location of the I/O API include header files on your system. -- `setenv IOAPI_LIB_DIR`: the location of compiled I/O API libraries on your system. -- `setenv NETCDF_LIB_DIR`: the location of the netCDF C library installation on your system. -- `setenv NETCDF_INCL_DIR`: the location of the netCDF C include files on your system. -- `setenv NETCDFF_LIB_DIR`: the location of the netCDF Fortran library installation on your system. -- `setenv NETCDFF_INCL_DIR`: the location of the netCDF Fortran include files on your system. -- `setenv MPI_LIB_DIR`: the location of the MPI (OpenMPI or MVAPICH) on your system. - -For example, if your netCDF C libraries are installed in /usr/local/netcdf/lib, set `NETCDF_LIB_DIR` to /usr/local/netcdf/lib. Similarly, if your I/O API library is installed in /home/cmaq/ioapi/Linux2_x86_64gfort, set `IOAPI_LIB_DIR` to /home/cmaq/ioapi/Linux2_x86_64gfort. - -*1.* Check the names of the I/O API and netCDF libraries using the `ioapi_lib` and `netcdf_lib` script variables. - -*2.* Check the name of the MPI library using the `mpi_lib` script variable. For MVAPICH use `-lmpich`; for openMPI use `-lmpi`. - -Links to these libraries will automatically be created when you run any of the build or run scripts. To manually create these libraries (this is optional), execute the config_cmaq.csh script, identifying the compiler in the command line [intel | gcc | pgi]: -``` -source config_cmaq.csh [compiler] -``` -You may also identify the version of the compiler if you wish it to be identified in build directory and executable names. This is optional. For example: -``` -source config_cmaq.csh gcc 9.5 -``` - -## Install the CMAQ reference input and output benchmark data - -Download the CMAQ two day reference input and output data for the cb6r5_ae7 mechanism (using inputs from CMAQv5.4 Benchmark release) from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing), download the file CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz. The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. - - - Use the gdrive command to download the dataset. - - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions - - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) - - Text files are included that provide a list of the files in the benchmark input and output datasets. - -The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz). - -Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: - -``` -cd $CMAQ_DATA -tar -xzvf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz -``` - -## Compiling CMAQ - -*Before proceeding, it should be noted that building the ICON and BCON executables are optional steps when working specifically with the benchmark data. This is because the initial condition and boundary condition files have been provided for you within the benchmark data set. For further information on these preprocessors please reference [Chapter 4](../CMAQ_UG_ch04_model_inputs.md).* - -Create the model executables for CCTM using the steps shown below. - -##### Configuration for multi-processor runs (default): - -``` -set ParOpt #> Option for MPI Runs -```` - -##### Configuration for single-processor runs (optional): - -For single-processor computing, edit the CCTM build script (bldit_cctm.csh) to indicate a single-processor run by commenting out set ParOpt as shown below. - -``` -#set ParOpt #> Option for Single Processor Runs -```` - -#### Configure CMAQ benchmark Science Modules: - -The build directory parameters for the benchmark test case include the following: - -- Multiprocessor simulation -- 3-D Advection Scheme: wrf_cons -- Horizontal diffusion: Multiscale -- Vertical diffusion: ACM2_M3Dry -- Deposition: M3Dry -- Chemistry solver: EBI -- Aerosol module: AERO7 -- Cloud module: ACM_AE7 -- Mechanism: cb6r5_ae7_aq -- Inline biogenic emissions -- Inline plume rise - -To configure these parameters, the CCTM Science Modules within the bldit_cctm.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in -[Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). - -To keep the BLD directory name unique for each mechansim, verify that the bldit_cctm script uses the following: - -``` -#> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. - if ( $?Debug_CCTM ) then - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug - else - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} - endif -``` - -Verify that the dry deposition scheme to use M3DRY -``` -#> Set Dry Deposition Scheme to m3dry - - set DepMod = m3dry -``` - -Following the requisite changes to the CCTM build script, use the following command to create the CCTM executable: - -``` -cd $CMAQ_HOME/CCTM/scripts -./bldit_cctm_craccm.csh [compiler] [version] |& tee bldit_cctm_craccm.log -``` - -Verify that the BLD directory contains a namelist called - -``` -cd BLD_CCTM_v55_DDM3D_gcc_cb6r5_ae7_aq_m3dry -ls CMAQ_Control_DESID_cb6r5_ae7_aq.nml -``` - - -## Configure the CCTM script - -For an MPI configuration with 32 processors, - -``` -cd $CMAQ_HOME/CCTM/scripts -``` - -Edit the CCTM run script (run_cctm_Bench_2018_12NE3.csh) for the MPI configuration and compiler that you will use: - -``` -setenv compiler gcc -setenv compilerVrsn 9.5 -setenv INPDIR ${CMAQ_DATA}/2018_12NE3 -@ NPCOL 8 ; @ NPROW = 4 -``` - -Most clustered multiprocessor systems require a command to start the MPI run-time environment. The default CCTM run script uses the *mpirun* command. Consult your system administrator to find out how to invoke MPI when running multiprocessor applications. - -For single-processor computing, set PROC to serial: - -``` -set PROC = serial -``` - -CCTM Science Configuration Options set to **Y** in the RunScript for the benchmark case include the following: - -- ```CTM_OCEAN_CHEM``` - use ocean halgoen chemistry and sea spray aerosol emissions -- ```KZMIN``` - minimum eddy diffusivity in each grid cell determined by land use fraction -- ```PX_VERSION``` - WRF PX land surface model -- ```CTM_ABFLUX``` - bidirectional ammonia flux for online deposition velocities -- ```CTM_BIDI_FERT_NH3``` - subtract fertilizer NH3 from emissions because it will be handled by the BiDi calculation -- ```CTM_SFC_HONO``` - surface HONO interaction -- ```CTM_GRAV_SETL``` - vdiff aerosol gravitational sedmentation -- ```CTM_BIOGEMIS``` - online biogenic emissions - -To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in -[Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). - -After configuring the MPI settings for your Linux system, check the rest of the script to ensure the correct path, date and names are used for the input data files. Per the note above, different Linux systems have different requirements for submitting MPI jobs. The command below is an example of how to submit the CCTM run script and may differ depending on the MPI requirements of your Linux system. - -``` -./run_cctm_Bench_2018_12NE3_cb6r5_m3dry.csh |& tee cctm.log -``` - -## Confirm that the Benchmark Simulation Completed - -To confirm that the benchmark case ran to completion view the run.benchmark.log file. For MPI runs, check each of the CTM_LOG_[ProcessorID]*.log files. A successful run will contain the following line at the bottom of the log(s): - -``>>----> Program completed successfully <----<<`` - -Note: If you are running on multiple processors the log file for each processor is also moved from the $CMAQ_HOME/CCTM/scripts directory to the benchmark output directory: - -``` -$CMAQ_DATA/output_CCTM_v55_[compiler]_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry -``` -and these log files have the name convention: - -``` -CTM_LOG_[ProcessorID].v55_[compiler]_[APPL]_[YYYYMMDD] -CTM_LOG_[ProcessorID].v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180702 -``` - -The benchmark output results will have been placed in the directory: - -``` -$CMAQ_DATA/output_CCTM_v55_[compiler]_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry -``` - -and can include upto 23 netCDF-type files: ACONC, AOD_DIAG, AELMO, APMVIS, B3GTS_S, BSOILOUT, BUDGET, CGRID, CONC, DEPV, DRYDEP, DUSTEMIS, LTNGCOL, LTNGHRLY, MEDIA_CONC, PHOTDIAG1, PHOTDIAG2, ELMO, PMVIS, SOILOUT, SSEMIS, VDIFF, VSED, WETDEP1, and WETDEP2. - - -Common errors in a CCTM simulation include the following: -- Incorrect paths to input files. Look in the CCTM screen output (capture in your log file) for an Error message about an input file not being found. -- Incorrect MPI implementation. A series of MPI errors at the end of the log file often indicate that the MPI job was not submitted correctly. - -Check the last few lines of the CCTM output log for messages to help diagnose why the simulation did not complete. - -## Check the CMAQ Benchmark Results - -To determine if CMAQ is correctly installed on your Linux system compare the results from your benchmark simulation to the reference output data downloaded from the CMAS Center. This data was generated on a Linux system with the following specifications: -- Linux Kernel 3.10.0-514.el7.x86_64 -- Red Hat Enterprise Linux Server 7.3 (Maipo) (use command: cat /etc/os-release) -- GNU GCC compiler version 9.1.0, 16 processors with OpenMPIv4.0.1 and I/O APIv3.2 tagged version 20200828 -- Debug mode turned off (```set Debug_CCTM``` commented out in $CMAQ_HOME/CCTM/scripts/bldit_cctm.csh) -- CMAQv5.4 - -The CMAQv5.4 reference output data includes a set of CCTM_ACONC_\*.nc files with layer 1 average model species concentrations for each model hour for 226 variables and a set of CCTM_WETDEP1_\*.nc files with cumulative hourly wet deposition fluxes for an additional 136 variables. The CCTM_SA_ACONC_\*.nc, CCTM_SA_CGRID_\*.nc, CCTM_SA_CONC_\*.nc, CCTM_SA_WETDEP_\*.nc and CCTM_SA_DRYDEP_\*.nc are generated when you run the CMAQ-ISAM benchmark. See the [CMAQ-ISAM Tutorial](../Tutorials/CMAQ_UG_tutorial_ISAM.md) for more information. - -Use your netCDF evaluation tool of choice to evaluate your benchmark results. For example, [VERDI](https://www.verdi-tool.org/) is a visualization tool to view CCTM results as tile plots. Statistical comparison of the results can be made with the I/O API Tools or R. - -Note, even with a successful installation and run of the benchmark case, some differences between your simulation and the reference data can occur due to differences in domain decomposition for multi-processor simulations as well as differences in compiler. These differences tend to manifest in upper layers of the model and are mostly found in predicting aerosol water (AH2O) and aerosol acidity (AH3OP), while differences are smaller for other key species like ASO4, ANO3, ACL, ALOO1, etc. These species have short atmospheric lifetimes with large changes in time and space derivatives or have model physics sensitive to small changes in concentration. Predicting these species is more sensitive to small changes in machine precision and accuracy. - From df38fb1574f46b50082b1c4b96d9e7e22f0e3dde Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 11:14:28 -0400 Subject: [PATCH 265/375] update --- .../CMAQ_UG_tutorial_ISAM_cracmm2_stage.md | 309 ------------------ 1 file changed, 309 deletions(-) delete mode 100644 DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM_cracmm2_stage.md diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM_cracmm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM_cracmm2_stage.md deleted file mode 100644 index 3ea2387b9..000000000 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM_cracmm2_stage.md +++ /dev/null @@ -1,309 +0,0 @@ -## CMAQ-ISAM Benchmark Tutorial ## - -### Procedure to build and run the CMAQ-ISAM model using gnu compiler for the CRACMM2 mechanism with the STAGE dry deposition scheme: ### - -### Step 1: Download and run the CMAQv5.5 benchmark case (without ISAM) to confirm that your model run is consistent with the provided benchmark output. -- [CMAQ Benchmark Tutorial](CMAQ_UG_tutorial_benchmark.md) - -If you encounter any errors, try running the model in debug mode and refer to the CMAS User Forum to determine if any issues have been reported. - -https://forum.cmascenter.org/ - -### Step 2: Read the User Guide Chapter on Integrated Source Apportionment Method. -- [CMAQ User's Guide Chapter on ISAM](../CMAQ_UG_ch11_ISAM.md) - -Note: This benchmark is intended to demonstrate how to build and run CMAQ-ISAM with the provided input files: - -The following isam control file is provided in the CCTM/scripts directory when you obtain the CMAQv5.5 code from github (step 5 below): - -``` -isam_control.txt -``` - -This file contains the following tag classes - -``` -TAG NAME |EGU -REGION(S) |EVERYWHERE -EMIS STREAM(S) |PT_EGU - -TAG NAME |BIO -REGION(S) |NY -EMIS STREAM(S) |BIOG -``` - -The following gridmask file is provided with the benchmark inputs in the 2018_12NE3_BENCH/2018_12NE3 directory (see step 11 below) - -``` -GRIDMASK_STATES_12NE3.nc -``` - -The instructions require the user to edit the DESID emissions control namelist file and the DESID chemical control namelist file in the BLD directory. If you want to use emission scaling (independently from ISAM or DDM3D) you will also need to edit these files. (see step 10 below). - -``` -CMAQ_Control_DESID.nml -CMAQ_Control_DESID_${MECH}.nml -``` - - -### Step 3 (optional): choose your compiler, and load it using the module command if it is available on your system - -``` -module avail -``` - -``` -module load openmpi_4.0.1/gcc_9.1.0 -``` - -### Step 4 (optional): Install I/O API (note, this assumes you have already installed netCDF C and Fortran Libraries) - -I/O APIv3.2 supports up to MXFILE3=256 open files, each with up to MXVARS3=2048. ISAM applications configured to calculate source attribution of a large number of sources may exceed this upper limit of model variables, leading to a model crash. To avoid this issue, users may use I/O API version 3.2 "large" that increases MXFILE3 to 512 and MXVARS3 to 16384. Instructions to build this version are found in Chapter 3. Note, using this ioapi-large version is NOT REQUIRED for the CMAQ-ISAM Benchmark Case. If a user needs to use these larger setting for MXFILE3 and MXVAR3 to support their application, the memory requirements will be increased. If needed, this version is available as a zip file from the following address: - -https://www.cmascenter.org/ioapi/download/ioapi-3.2-large-20200828.tar.gz - -Otherwise, use the I/O API version available here: -https://www.cmascenter.org/ioapi/download/ioapi-3.2-20200828.tar.gz - -### Step 5: Install CMAQ with ISAM - -``` -git clone -b main https://github.com/USEPA/CMAQ.git CMAQ_REPO -``` - -Build and run in a user-specified directory outside of the repository - -In the top level of CMAQ_REPO, the bldit_project.csh script will automatically replicate the CMAQ folder structure and copy every build and run script out of the repository so that you may modify them freely without version control. - -Edit bldit_project.csh, to modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: - -``` -set CMAQ_HOME = [your_install_path]/CMAQ_v5.5 -``` - -Now execute the script. - -``` -./bldit_project.csh -``` - -Change directories to the CMAQ_HOME directory - -``` -cd [your_install_path]/CMAQ_v5.5 -``` - - -### Step 6. Edit the config_cmaq.csh to specify the paths of the ioapi and netCDF libraries - -### Step 7: Modify the bldit_cctm.csh to activate ISAM - -Change directory to CCTM/scripts - -``` -cd CCTM/scripts -``` - -Uncomment the following option to compile CCTM with ISAM (remove the # before set ISAM_CCTM): - -``` -#> Integrated Source Apportionment Method (ISAM) -set ISAM_CCTM #> uncomment to compile CCTM with ISAM activated -``` -### Step 8: Modify the bldit_cctm.csh to specify the CRACMM2 mechanism and the stage dry deposition scheme and update the BLD directory name. - -``` -set DepMod = stage #> dry deposition scheme (m3dry or stage) -setenv Mechanism cracmm2 #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) - -#> Set and create the "BLD" directory for checking out and compiling -#> source code. Move current directory to that build directory. - if ( $?Debug_CCTM ) then - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug - else - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} - endif -``` - -### Step 9: Run the bldit_cctm.csh script -``` -./bldit_cctm.csh gcc |& tee bldit_cctm_isam.log -``` - -### Step 10: Edit the Emission Control Namelist to recognize the CMAQ_REGIONS file - -Change directories to the build directory -``` -cd BLD_CCTM_v55_ISAM_gcc_cracmm2_stage -``` - -edit the DESID emissions namelist file - -``` -gedit CMAQ_Control_DESID.nml -``` - -Uncomment the line that contains ISAM_REGIONS as the File Label - -``` -&Desid_RegionDef - Desid_Reg_nml = - ! Region Label | File_Label | Variable on File - 'EVERYWHERE' ,'N/A' ,'N/A', - 'NY' ,'CMAQ_MASKS', 'NY', - ! 'WATER' ,'CMAQ_MASKS' ,'OPEN', - ! 'ALL' ,'CMAQ_MASKS' ,'ALL', - ! 'ALL' ,'ISAM_REGIONS','ALL', -/ -``` - -### Step 10a: Edit the DESID chmeical control namelist file. - -Change to the BLD directory and add the following lines to the bottom of the CMAQ_Control_DESID_cracmm2.nml - -``` -! Re-Map CRACMM1 Aromatics to CRACMM2 - ! EBZ and XYE remapping, STY and XYM remapping - ! Generic scaling if not scaling by sector: 70% XYL; 30% EBZ - ! EBZ = FAC1 * XYE; STY = FAC2 * XYM ; XYL = (1-FAC1)*XYE + (1-FAC2)*XYM - 'EVERYWHERE', 'ALL' ,'XYE' ,'EBZ' ,'GAS' ,0.30,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'XYE' ,'XYL' ,'GAS' ,0.70,'UNIT','a', - - ! Generic scaling if not scaling by sector: 93% XYL; 7% STY - 'EVERYWHERE', 'ALL' ,'XYM' ,'STY' ,'GAS' ,0.07,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'XYM' ,'XYL' ,'GAS' ,0.93,'UNIT','a', -``` - -### Step 11: Example of emissions scaling (Reduce the PT_EGU emissions in PA by 25%) (Optional step) - -edit the DESID chemical control namelist file, note please specify the mechanism or define the MECH environment variable. - -``` -gedit CMAQ_Control_DESID_${MECH}.nml -``` - -Add the following line at the bottom of the the namelist file (before the /) - -``` - ! PT_EGU Emissions Scaling reduce PT_EGU emissions in NY by 25%. Note, to reduce the emissions by 25% we use DESID to multiply what had been 100% emissions by .75, so that the resulting emissions is reduced by 25%. - 'NY' , 'PT_EGU' ,'All' ,'All' ,'All' ,.75 ,'UNIT','o', - -``` - -### Step 12: Install the CMAQ-ISAM reference input and output benchmark data - -Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. - - - Use the gdrive command to download the dataset. - - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions - - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) - - Text files are included that provide a list of the files in the benchmark input and output datasets. - -The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmas-cmaq.s3.amazonaws.com/index.html). - -Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: - -``` -cd $CMAQ_DATA -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz -``` - -The input files for the CMAQv5.4 ISAM benchmark case are the same as the benchmark inputs for the base model. Output source apportionment files associated with the sample isam_control.txt provided in this release package are included in the benchmark outputs for the base model. - -### Step 13: Edit the CMAQ-ISAM runscript - -``` -cp run_cctm_Bench_2018_12NE3.csh run_cctm_Bench_2018_12NE3.ISAM.csh -gedit run_cctm_Bench_2018_12NE3.ISAM.csh -``` - -Set General Parameters for Configuring the Simulation - -``` -set VRSN = v55_ISAM -``` - - -Turn on ISAM and uncomment the SA_IOLIST file and uncomment the ISAM regions file - -``` -setenv CTM_ISAM Y -setenv SA_IOLIST ${WORKDIR}/isam_control.2018_12NE3.txt -setenv ISAM_REGIONS $INPDIR/GRIDMASK_STATES_12NE3.nc -``` - -Run or Submit the script to the batch queueing system - -``` -./run_cctm_Bench_2018_12NE3.ISAM.csh -``` - -OR (If using SLRUM) - -``` -sbatch run_cctm_Bench_2018_12NE3.ISAM.csh -``` - -### Step 14: Verify that the run was successful - - look for the output directory - - ``` - cd ../../data/output_CCTM_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM - ``` - If the run was successful you will see the following output - - ``` - tail ./LOGS/CTM_LOG_000.v532_ISAM_gcc_Bench_2016_12SE1_20160702 - ``` - |>--- PROGRAM COMPLETED SUCCESSFULLY ---<| - -### Step 15: Compare output with the 2 day benchmark outputs provided on the google drive - -The following ISAM output files are generated in addition to the standard CMAQ output files. Note, the answers will not be comparible if emission scaling is used (Step 10 - optional) - -``` -CCTM_SA_DRYDEP_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc -CCTM_SA_WETDEP_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc -CCTM_SA_CONC_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc -CCTM_SA_ACONC_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc -CCTM_SA_CGRID_v54_ISAM_gcc_Bench_2018_12NE3_2day_ISAM_20180702.nc -``` - -### Step 16: Compare the tagged species in `CCTM_SA_CONC` output file to the full species in `CCTM_CONC` output file - -``` -ncdump -h CCTM_SA_CONC_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_4x8_all_CONC_20180701.nc | grep SO2_ -``` - -The following tagged species should add up to the total SO2 in the CONC file. - - float SO2_EGU(TSTEP, LAY, ROW, COL) ; - SO2_EGU:long_name = "SO2_EGU " ; - SO2_EGU:units = "ppmV " ; - SO2_EGU:var_desc = "tracer conc. " ; - float SO2_BIO(TSTEP, LAY, ROW, COL) ; - SO2_BIO:long_name = "SO2_BIO " ; - SO2_BIO:units = "ppmV " ; - SO2_BIO:var_desc = "tracer conc. " ; - float SO2_BCO(TSTEP, LAY, ROW, COL) ; - SO2_BCO:long_name = "SO2_BCO " ; - SO2_BCO:units = "ppmV " ; - SO2_BCO:var_desc = "tracer conc. " ; - float SO2_OTH(TSTEP, LAY, ROW, COL) ; - SO2_OTH:long_name = "SO2_OTH " ; - SO2_OTH:units = "ppmV " ; - SO2_OTH:var_desc = "tracer conc. " ; - float SO2_ICO(TSTEP, LAY, ROW, COL) ; - SO2_ICO:long_name = "SO2_ICO " ; - SO2_ICO:units = "ppmV " ; - SO2_ICO:var_desc = "tracer conc. - -[1] = CONC -[2] = SA_CONC - -``` -SO2_EGU[1] + SO2_BIO[1] + SO2_BCO[1] + SO2_OTH[1] + SO2_ICO[1] = SO2[2] -``` - -Both tagged species EGU and BIO contribute to the bulk concentration, therefore the sum of all tagged species including boundary conditions (BCO) and initial conditions (ICO) and other (all untagged emissions) (OTH) From 097aca2a3c5f7fec2369627705ae330dfcee5825 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 11:20:30 -0400 Subject: [PATCH 266/375] update --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 697d0c9c3..fe8b1f18a 100644 --- a/README.md +++ b/README.md @@ -71,14 +71,14 @@ In addition, a full set of inputs for 2018 are provided for the 12US1 domain (29 |**CMAQ Version**|**Data Type (Size)**|**Domain**|**Simulation Dates**|**Data Access**| |:----:|:----:|:--------------:|:----:|:--------:| -|v5.4 CB6 | Input (10.3 Gb)| Northeast US| July 1 - 2, 2018| [Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/index.html)| -|v5.4 CB6 M3Dry | Output (13.9 Gb)| Northeast US| July 1 - 2, 2018|[Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/index.html) | +|v5.4 CB6 | Input (10.3 Gb)| Northeast US| July 1 - 2, 2018| [Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz)| +|v5.4 CB6 M3Dry | Output (13.9 Gb)| Northeast US| July 1 - 2, 2018|[Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz) | |v5.4 CB6 | Input | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/LDTWKH)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | |v5.4 CRACMM Stage| Input | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/9AV907)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | -|v5.5 CRACMM2 Stage | Input (6.1 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https: )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) | -|v5.5 CB6 Stage | Output (16 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https: )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) | -|v5.5-ISAM CB6 M3Dry | Output (52 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https: )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_aq_m3dry.tar.gz) | -|v5.5-DDM3D CB6 M3Dry | Output | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https: )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | +|v5.5 CRACMM2 Stage | Input (6.1 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) | +|v5.5 CB6 Stage | Output (16 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) | +|v5.5-ISAM CB6 M3Dry | Output (52 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_aq_m3dry.tar.gz) | +|v5.5-DDM3D CB6 M3Dry | Output | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | ## Other Online Resources * [Resources for Running CMAQ on Amazon Web Services](https://www.epa.gov/cmaq/cmaq-resourcesutilities-model-users#cmaq-on-the-cloud) From 9ba64a72635a83992495ee177d0f07c0661bc8f7 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 11:22:11 -0400 Subject: [PATCH 267/375] update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fe8b1f18a..25812e8cc 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ In addition, a full set of inputs for 2018 are provided for the 12US1 domain (29 |v5.4 CRACMM Stage| Input | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/9AV907)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | |v5.5 CRACMM2 Stage | Input (6.1 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) | |v5.5 CB6 Stage | Output (16 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) | -|v5.5-ISAM CB6 M3Dry | Output (52 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_aq_m3dry.tar.gz) | +|v5.5-ISAM CB6 M3Dry | Output (52 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | |v5.5-DDM3D CB6 M3Dry | Output | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | ## Other Online Resources From 8cce26e91bf75553841948740aba741a10b9d05f Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 11:24:22 -0400 Subject: [PATCH 268/375] update --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 25812e8cc..c4d3d0a5d 100644 --- a/README.md +++ b/README.md @@ -75,10 +75,10 @@ In addition, a full set of inputs for 2018 are provided for the 12US1 domain (29 |v5.4 CB6 M3Dry | Output (13.9 Gb)| Northeast US| July 1 - 2, 2018|[Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz) | |v5.4 CB6 | Input | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/LDTWKH)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | |v5.4 CRACMM Stage| Input | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/9AV907)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | -|v5.5 CRACMM2 Stage | Input (6.1 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) | -|v5.5 CB6 Stage | Output (16 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) | -|v5.5-ISAM CB6 M3Dry | Output (52 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | -|v5.5-DDM3D CB6 M3Dry | Output | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
/> [AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | +|v5.5 CRACMM2 Stage | Input (6.1 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) | +|v5.5 CB6 Stage | Output (16 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) | +|v5.5-ISAM CB6 M3Dry | Output (52 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | +|v5.5-DDM3D CB6 M3Dry | Output | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | ## Other Online Resources * [Resources for Running CMAQ on Amazon Web Services](https://www.epa.gov/cmaq/cmaq-resourcesutilities-model-users#cmaq-on-the-cloud) From 818870028d6bace4a7693a1283f33b7e8d08d742 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 11:30:24 -0400 Subject: [PATCH 269/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 820a02f9c..e4eb3b8f9 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -164,7 +164,7 @@ Uncomment the line that contains ISAM_REGIONS as the File Label ``` -### Step 11: Example of emissions scaling (Reduce the PT_EGU emissions in PA by 25%) (Optional step) +### Step 11: Example of emissions scaling (Reduce the PT_EGU emissions in NY by 25%) (Optional step) edit the DESID chemical control namelist file, note please specify the mechanism or define the MECH environment variable. From 6aa4c5465e5364774d9618d1e907c7c9a9b406a6 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 11:40:32 -0400 Subject: [PATCH 270/375] update --- .../Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index e4eb3b8f9..929b5e5a3 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -38,6 +38,8 @@ The following gridmask file is provided with the benchmark inputs in the 2018_12 GRIDMASK_STATES_12NE3.nc ``` +Note, all states are listed in the variable list in the header of the file, but the data only contains valid entries for the states in the 12NE3 domain. + The instructions require the user to edit the DESID emissions control namelist file and the DESID chemical control namelist file in the BLD directory. If you want to use emission scaling (independently from ISAM or DDM3D) you will also need to edit these files. (see step 10 below). ``` @@ -164,7 +166,7 @@ Uncomment the line that contains ISAM_REGIONS as the File Label ``` -### Step 11: Example of emissions scaling (Reduce the PT_EGU emissions in NY by 25%) (Optional step) +### Step 11: Example of emissions scaling (Reduce the PT_EGU emissions in NY by 25%) (Optional step, described here, but not used) edit the DESID chemical control namelist file, note please specify the mechanism or define the MECH environment variable. @@ -296,10 +298,10 @@ CCTM_SA_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180702.nc CCTM_SA_CGRID_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180702.nc ``` -### Step 16: Compare the tagged species in `CCTM_SA_CONC` output file to the species in `CCTM_CONC` output file +### Step 16: Compare the tagged species in `CCTM_SA_ACONC` output file to the species in `CCTM_ACONC` output file ``` -ncdump -h CCTM_SA_CONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180701.nc | grep SO2_ +ncdump -h CCTM_SA_ACONC_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180701.nc | grep SO2_ ``` @@ -328,13 +330,13 @@ The following tagged species should add up to the total SO2 in the CONC file. SO2_ICO:var_desc = "tracer conc. ``` -The sum of the tagged species in the SA_CONC file is equal to the species in the CONC file. +The sum of the tagged species in the SA_ACONC file is equal to the species in the ACONC file. ``` SO2_EGU[1] + SO2_BIO[1] + SO2_BCO[1] + SO2_OTH[1] + SO2_ICO[1] = SO2[2] -[1] = SA_CONC -[2] = CONC +[1] = SA_ACONC +[2] = ACONC ``` Both tagged species EGU and BIO contribute to the bulk concentration, therefore the sum of all tagged species including boundary conditions (BCO) and initial conditions (ICO) and other (all untagged emissions) (OTH) From e4fd926bc6aba86bdd9b10cf55221b7b7efe84fa Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 11:56:05 -0400 Subject: [PATCH 271/375] update --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c4d3d0a5d..e8bc87ae2 100644 --- a/README.md +++ b/README.md @@ -73,12 +73,12 @@ In addition, a full set of inputs for 2018 are provided for the 12US1 domain (29 |:----:|:----:|:--------------:|:----:|:--------:| |v5.4 CB6 | Input (10.3 Gb)| Northeast US| July 1 - 2, 2018| [Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz)| |v5.4 CB6 M3Dry | Output (13.9 Gb)| Northeast US| July 1 - 2, 2018|[Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz) | -|v5.4 CB6 | Input | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/LDTWKH)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | -|v5.4 CRACMM Stage| Input | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/9AV907)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | -|v5.5 CRACMM2 Stage | Input (6.1 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) | +|v5.4 CB6 | Input (6.1 TB) | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/LDTWKH)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | +|v5.4 CRACMM Stage| Input (6.1 TB)| 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/9AV907)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | +|v5.5 CRACMM2 Stage | Input (6 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) | |v5.5 CB6 Stage | Output (16 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) | -|v5.5-ISAM CB6 M3Dry | Output (52 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | -|v5.5-DDM3D CB6 M3Dry | Output | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | +|v5.5-ISAM CB6 M3Dry | Output (52 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | +|v5.5-DDM3D CB6 M3Dry | Output (16 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | ## Other Online Resources * [Resources for Running CMAQ on Amazon Web Services](https://www.epa.gov/cmaq/cmaq-resourcesutilities-model-users#cmaq-on-the-cloud) From 9e41b4e739b1ad643baa7452b215ac6516a732da Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 12:49:44 -0400 Subject: [PATCH 272/375] update --- CCTM/scripts/bldit_cctm_cb6r5_m3dry.csh | 831 ------------------ CCTM/scripts/bldit_cctm_cb6r5_m3dry_ddm.csh | 831 ------------------ CCTM/scripts/bldit_cctm_cb6r5_stage.csh | 831 ------------------ CCTM/scripts/bldit_cctm_gnu_cracmm2_stage.csh | 827 ----------------- 4 files changed, 3320 deletions(-) delete mode 100755 CCTM/scripts/bldit_cctm_cb6r5_m3dry.csh delete mode 100755 CCTM/scripts/bldit_cctm_cb6r5_m3dry_ddm.csh delete mode 100755 CCTM/scripts/bldit_cctm_cb6r5_stage.csh delete mode 100755 CCTM/scripts/bldit_cctm_gnu_cracmm2_stage.csh diff --git a/CCTM/scripts/bldit_cctm_cb6r5_m3dry.csh b/CCTM/scripts/bldit_cctm_cb6r5_m3dry.csh deleted file mode 100755 index 6af87e3ef..000000000 --- a/CCTM/scripts/bldit_cctm_cb6r5_m3dry.csh +++ /dev/null @@ -1,831 +0,0 @@ -#!/bin/csh -f - -# ======================= CCTMv5.5.X Build Script ========================= -# Usage: bldit_cctm.csh >&! bldit.cctm.log -# Requirements: I/O API & netCDF libraries, a Fortran compiler, -# and MPI for multiprocessor computing -# -# To report problems or request help with this script/program: -# http://www.cmascenter.org -# ========================================================================= - -#> Set Compiler Identity by User Input: Options -> intel | pgi | gcc - if ( $#argv == 1 ) then - setenv compiler $argv[1] - setenv compilerVrsn Empty - else if ( $#argv == 2 ) then - #> Compiler Name and Version have been provided - setenv compiler $1 - setenv compilerVrsn $2 - else - echo "usage: $0 " - echo " where is intel, pgi or gcc" - exit(2) - endif - -#> Source the config.cmaq file to set the build environment - cd ../.. - source ./config_cmaq.csh - - set echo - -# ======================================================================= -#> Begin User Input Section -# ======================================================================= - -#> Source Code Locations - setenv CCTM_SRC ${CMAQ_REPO}/CCTM/src #> location of the CCTM source code - set GlobInc = $CCTM_SRC/ICL #> location of the global include files - set Mechs = $CCTM_SRC/MECHS #> location of the chemistry mechanism include files - setenv REPOROOT $CCTM_SRC - -#> Controls for managing the source code and MPI compilation -set CompileBLDMAKE #> Recompile the BLDMAKE utility from source - #> comment out to use an existing BLDMAKE executable -set CopySrc #> copy the source files into the build directory -#set CopySrcTree #> copy the source files and directory tree into the build directory -#set MakeFileOnly #> uncomment to build a Makefile, but do not compile; - #> comment out to compile the model (default if not set) -#set build_mech #> uncomment to build mechanism source code files using the - #> chemmech utility. - -#> Below are chemmech options for revising the mechanism definitions file. The option needs information on the -#> composition of each chemistry. See UTIL/chemmech/README.md for more information. -#> Uncomment to use. -#> Rewrite reactions by appending them with changes in tracked atoms or elements from reactants to products - #setenv COMPUTE_DELTA_ATOMS F -#> The species namelist contains the composition information as comments at the end of lines defining species. -#> Note that if a defining line does not have an ending comment, the species is taken to have none of the tacked atoms. -#> If NAMELISTS_LIST_ATOMS equals F, an additional ASCII file contains the information. - #setenv NAMELISTS_LIST_ATOMS T - -#set clobber_mech #> when commented, the bldit_mech.csh script will halt if - #> newly created mechanism files are attempting replace - #> existing ones. When uncommented, the existing files - #> will be overwritten. -set ParOpt #> uncomment to build a multiple processor (MPI) executable; - #> comment out for a single processor (serial) executable -#set DistrEnv #> uncomment to distribute environmental variables to multiple machines - #> comment out for a single processor (serial) executable (MPI only) -#set build_parallel_io #> uncomment to build with parallel I/O (pnetcdf); - #> comment out to use standard netCDF I/O -#set Debug_CCTM #> uncomment to compile CCTM with debug option equal to TRUE - #> comment out to use standard, optimized compile process -set make_options = "-j" #> additional options for make command if MakeFileOnly is not set - #> comment out if no additional options are wanted. - -#> Integrated Source Apportionment Method (ISAM) -#set ISAM_CCTM #> uncomment to compile CCTM with ISAM activated - #> comment out to use standard process - -#set DDM3D_CCTM #> uncomment to compile CCTM with DDM-3D activated - #> comment out to use standard process -#> Two-way WRF-CMAQ -#set build_twoway #> uncomment to build WRF-CMAQ twoway; - #> comment out for off-line chemistry - -#> Working directory and Version IDs - if ( $?ISAM_CCTM ) then - set VRSN = v55_ISAM #> model configuration ID for CMAQ_ISAM - else if ( $?DDM3D_CCTM ) then - set VRSN = v55_DDM3D #> model configuration ID for CMAQ_DDM - else - set VRSN = v55 #> model configuration ID for CMAQ - endif - - set EXEC = CCTM_${VRSN}.exe #> executable name - set CFG = CCTM_${VRSN}.cfg #> configuration file name - - if ( $?build_twoway ) then # WRF Version used for WRF-CMAQ Model (must be v4.4+) - set WRF_VRSN = v4.4 - endif - -#======================================================================== -#> CCTM Science Modules -#======================================================================== -#> NOTE: For the modules with multiple options, a note is -#> provided on where to look in the CCTM source code -#> archive for a list of the possible settings. Users -#> may also refer to the CMAQ documentation. - - set ModGrid = grid/cartesian #> grid configuration module - - set DepMod = m3dry #> m3dry or stage - #set DepMod = stage - set ModAdv = wrf_cons #> 3-D Advection Scheme [Options: wrf_cons (default), local_cons] - set ModHdiff = hdiff/multiscale #> horizontal diffusion module - set ModVdiff = vdiff/acm2_${DepMod} #> vertical diffusion module (see $CMAQ_MODEL/CCTM/src/vdiff) - set ModDepv = depv/${DepMod} #> deposition velocity calculation module - #> (see $CMAQ_MODEL/CCTM/src/depv) - set ModEmis = emis/emis #> in-line emissions module - set ModBiog = biog/beis4 #> BEIS4 in-line emissions module - - set ModMegBiog = biog/megan3 #> MEGAN3 in-line emissions module - - set ModPlmrs = plrise/smoke #> in-line emissions plume rise - set ModCgrds = spcs/cgrid_spcs_nml #> chemistry species configuration module - #> (see $CMAQ_MODEL/CCTM/src/spcs) - set ModPhot = phot/inline #> photolysis calculation module - #> (see $CMAQ_MODEL/CCTM/src/phot) - - setenv Mechanism cb6r5_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) - set ModMech = MECHS/${Mechanism} - - if ( ${Mechanism} =~ *ae7* ) then #> ae7 family of aero and cloud chem - set ModAero = aero/aero7 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) - set ModCloud = cloud/acm_ae7 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) - else if ( ${Mechanism} =~ *ae6* ) then #> ae6 family of aero and cloud chem - set ModAero = aero/aero6 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) - set ModCloud = cloud/acm_ae6 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) - else if ( ${Mechanism} =~ *cracmm* ) then #> CRACMM family of aero and cloud chem - set ModAero = aero/cracmm # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) - set ModCloud = cloud/acm_cracmm # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) - endif - - # Special cloud modules for kmt versions - if( ${Mechanism} == cb6r5_ae7_aqkmt2 ) then - set ModCloud = cloud/acm_ae7_kmt2 - else if( ${Mechanism} == saprc07tic_ae7i_aqkmt2 ) then - set ModCloud = cloud/acm_ae7_kmt2 - endif - - # Gas chem solver - if ( ${Mechanism} == cb6r5m_ae7_aq ) then #> Gas-phase chemistry solver options ($CMAQ_MODEL/CCTM/src/gas) - setenv ChemSolver ros3 #> ros3 (or smvgear) are system independent - else - setenv ChemSolver ebi #> [ default for most mechanisms: ebi ] - endif - - if ( $ChemSolver == ebi ) then - set ModGas = gas/${ChemSolver}_${Mechanism} - - else - set ModGas = gas/${ChemSolver} - endif - - set ModUtil = util/util #> CCTM utility modules - set ModDiag = diag #> CCTM diagnostic modules - set Tracer = trac0 #> tracer configuration directory under - #> $CMAQ_MODEL/CCTM/src/MECHS [ default: no tracer species ] - set ModPa = procan/pa #> CCTM process analysis - set ModPvO3 = pv_o3 #> potential vorticity from the free troposphere - set ModISAM = isam #> CCTM Integrated Source Apportionment Method - set ModDDM3D = ddm3d #> Decoupled Direct Method in 3D - set ModDegrade = reactive_tracers #> Linear Chemical Loss for a fixed set of species treated as reactive tracers - -#============================================================================================ -#> Computing System Configuration: -#> Most of these settings are done in config.cmaq -#============================================================================================ - - setenv FC ${myFC} #> path of Fortan compiler; set in config.cmaq - set FP = $FC #> path of Fortan preprocessor; set in config.cmaq - set CC = ${myCC} #> path of C compiler; set in config.cmaq - setenv BLDER ${CMAQ_HOME}/UTIL/bldmake/bldmake_${compilerString}.exe #> name of model builder executable - -#> Libraries/include files -#set LIOAPI = "${IOAPI_DIR}/lib ${ioapi_lib}" #> I/O API library directory -#set IOAPIMOD = "${IOAPI_DIR}/include" #> I/O API module directory - set NETCDF = "${NETCDF_DIR}/lib ${netcdf_lib}" #> netCDF C library directory - set NETCDFF = "${NETCDFF_DIR}/lib ${netcdff_lib}" #> netCDF Fortran library directory - set PNETCDF = "${PNETCDF_DIR}/lib ${pnetcdf_lib}" #> Parallel netCDF library directory -#set PIO_INC = "${IOAPI_DIR}/src" - -#> Compiler flags set in config.cmaq - set FSTD = "${myFSTD}" - set DBG = "${myDBG}" - setenv F_FLAGS "${myFFLAGS}" #> F77 flags - set F90_FLAGS = "${myFRFLAGS}" #> F90 flags - set CPP_FLAGS = "" #> Fortran preprocessor flags - set C_FLAGS = "${myCFLAGS} -DFLDMN -I" #> C flags - set LINK_FLAGS = "${myLINK_FLAG}" # Link flags - - -#============================================================================================ -#> Implement User Input -#============================================================================================ - -#> Check for CMAQ_REPO and CMAQ_LIB settings: - if ( ! -e $CMAQ_REPO || ! -e $CMAQ_LIB ) then - echo " $CMAQ_REPO or $CMAQ_LIB directory not found" - exit 1 - endif - echo " Model repository base path: $CMAQ_REPO" - echo " library path: $CMAQ_LIB" - -#> If $CMAQ_MODEL is not set, default to $CMAQ_REPO - if ( $?CMAQ_MODEL ) then - echo " Model repository path: $CMAQ_MODEL" - else - setenv CMAQ_MODEL $CMAQ_REPO - echo " default Model repository path: $CMAQ_MODEL" - endif - -#> This script was written for Linux hosts only. If -#> the host system is not Linux, produce an error and stop - set BLD_OS = `uname -s` - if ($BLD_OS != 'Linux') then - echo " $BLD_OS -> wrong bldit script for host!" - exit 1 - endif - -#> If the two-way, coupled WRF-CMAQ model is being built, -#> then just generate the Makefile. Don't compile. - if ( $?build_twoway ) then - set MakeFileOnly - set ModTwoway = twoway - endif - -#> If parallel-io is selected, then make sure the multiprocessor -#> option is also set. - if ( $?build_parallel_io ) then - if ( ! $?ParOpt ) then - echo "*** ParOpt is not set: required for the build_parallel_io option" - exit 1 - endif - set PIO = ( -Dparallel_io ) - else - set PIO = "" - endif - - if ($DepMod == m3dry) then - set cpp_depmod = '-Dm3dry_opt' - else if ($DepMod == stage) then - set cpp_depmod = '-Dstage_opt' - if ( $?DDM3D_CCTM ) then - echo "*** DDM3D is not compatible with the STAGE deposition model" - exit 1 - endif - endif - -#> Set variables needed for multiprocessor and serial builds - if ( $?ParOpt ) then - #Multiprocessor system configuration - echo " Parallel; set MPI flags" - set ModStenex = STENEX/se - set ModPario = PARIO - set ModPar = par/mpi - set PARIO = ${CMAQ_MODEL}/PARIO - set STENEX = ${CMAQ_MODEL}/STENEX - # MPI_INC is set in config.cmaq - # set PIO_INC = "${IOAPI_DIR}/src/fixed_src" - set PAR = ( -Dparallel ) - set Popt = SE - set seL = se_snl - set LIB2 = "${ioapi_lib}" - set LIB3 = "${mpi_lib} ${extra_lib}" - set Str1 = (// Parallel / Include message passing definitions) - set Str2 = (include SUBST_MPI mpif.h;) - # Distribute Environment to different machines if not done automatically - if ( $?DistrEnv ) then - set PAR = ($PAR -Dcluster) - endif - else - #Serial system configuration - echo " Not Parallel; set Serial (no-op) flags" - set ModStenex = STENEX/noop - set ModPar = par/par_noop - set PARIO = "." - set STENEX = ${CMAQ_MODEL}/STENEX/noop - set MPI_INC = "." - # set PIO_INC = "." - set PAR = "" - set Popt = NOOP - set seL = sef90_noop - set LIB2 = "${ioapi_lib} ${extra_lib}" - set Str1 = - set Str2 = - endif - -#> if DDM-3D is set, add the pre-processor flag for it. - if ( $?DDM3D_CCTM ) then - set SENS = ( -Dsens ) - else - set SENS = "" - endif - -#> Build Mechanism Files and instruct build-make to look -#> in the CHEMMECH output folder for the files - if ( $?build_mech ) then - - # Note: modifying existing or creating new chemical mechanisms - # can lead to unstable or highly inaccurate representations of - # atmospheric chemical predictions when applying the EBI solvers. - # EBI solvers are highly characterized and tested before - # application. The CMAQ development team recommends using the - # generalized solvers, Rosenbrock or Gear, with user-defined - # mechanisms. - - # Because the bldit_cctm script is executing the bldit_mech - # processor, we will assume that the source location for the new - # mechanism files is in the CMAQ repo. There will also be an - # error check for overwriting an existing mechanism that can be - # disabled using the mech_clobber variable above. - setenv MECH_SRC ${CMAQ_REPO}/CCTM/src/${ModMech} - setenv TRAC_NML ${CMAQ_REPO}/CCTM/src/MECHS/trac0/Species_Table_TR_0.nml - setenv MECH_OUT ${CMAQ_REPO}/CCTM/src/${ModMech} - setenv EBI_SOLVER_OUT ${CMAQ_REPO}/CCTM/src/${ModGas} - if ( $?clobber_mech ) then - setenv CLOBBER_MECH TRUE - else - setenv CLOBBER_MECH FALSE - endif - - cd ${CMAQ_HOME}/CCTM/scripts - ./bldit_mech.csh ${compiler} ${compilerVrsn} - if ( $? != 0 ) then - echo "" - echo "bldit_mech did not finish correctly --> Build Process Halted" - exit 1 - endif - endif - -#> Tracer configuration files - set ModTrac = MECHS/$Tracer - -#> Set and create the "BLD" directory for checking out and compiling -#> source code. Move current directory to that build directory. - if ( $?Debug_CCTM ) then - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug - else - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} - endif - - - if ( ! -e "$Bld" ) then - mkdir $Bld - else - if ( ! -d "$Bld" ) then - echo " *** target exists, but not a directory ***" - exit 1 - endif - endif - cd $Bld - -#> Set locations for the include files of various modules - set ICL_PAR = $GlobInc/fixed/mpi - set ICL_CONST = $GlobInc/fixed/const - set ICL_FILES = $GlobInc/fixed/filenames - set ICL_EMCTL = $GlobInc/fixed/emctrl -#set ICL_PA = $GlobInc/procan/$PAOpt - - #Test with xlib commented out - if ( $?ParOpt ) then - set ICL_MPI = . #$xLib_Base/$xLib_3 - endif - - -#> If the source code is being copied to the build directory, -#> then move the include files as well and direct the Makefile -#> to the current directory. - if ( $?CopySrc ) then - /bin/cp -fp ${ICL_PAR}/* ${Bld} - /bin/cp -fp ${ICL_CONST}/* ${Bld} - /bin/cp -fp ${ICL_FILES}/* ${Bld} - /bin/cp -fp ${ICL_EMCTL}/* ${Bld} - #/bin/cp -fp ${ICL_PA}/* ${Bld} - if ( $?ParOpt ) then - /bin/cp -fp ${ICL_MPI}/mpif.h ${Bld} - endif - - set ICL_PAR = . - set ICL_CONST = . - set ICL_FILES = . - set ICL_EMCTL = . - #set ICL_PA = . - if ( $?ParOpt ) then - set ICL_MPI = . - endif - endif - - - set STX1 = ( -DSUBST_BARRIER=${Popt}_BARRIER\ - -DSUBST_GLOBAL_MAX=${Popt}_GLOBAL_MAX\ - -DSUBST_GLOBAL_MIN=${Popt}_GLOBAL_MIN\ - -DSUBST_GLOBAL_MIN_DATA=${Popt}_GLOBAL_MIN_DATA\ - -DSUBST_GLOBAL_TO_LOCAL_COORD=${Popt}_GLOBAL_TO_LOCAL_COORD\ - -DSUBST_GLOBAL_SUM=${Popt}_GLOBAL_SUM\ - -DSUBST_GLOBAL_LOGICAL=${Popt}_GLOBAL_LOGICAL\ - -DSUBST_GLOBAL_GATHER=${Popt}_GLOBAL_GATHER\ - -DSUBST_GLOBAL_BCAST=${Popt}_GLOBAL_BCAST\ - -DSUBST_LOOP_INDEX=${Popt}_LOOP_INDEX\ - -DSUBST_SUBGRID_INDEX=${Popt}_SUBGRID_INDEX ) - set STX2 = ( -DSUBST_HI_LO_BND_PE=${Popt}_HI_LO_BND_PE\ - -DSUBST_SUM_CHK=${Popt}_SUM_CHK\ - -DSUBST_SE_INIT=${Popt}_INIT\ - -DSUBST_INIT_ARRAY=${Popt}_INIT_ARRAY\ - -DSUBST_COMM=${Popt}_COMM\ - -DSUBST_MY_REGION=${Popt}_MY_REGION\ - -DSUBST_SLICE=${Popt}_SLICE\ - -DSUBST_GATHER=${Popt}_GATHER\ - -DSUBST_DATA_COPY=${Popt}_DATA_COPY\ - -DSUBST_IN_SYN=${Popt}_IN_SYN ) - - -#> 3-D Advection Options - if ( $ModAdv == wrf_cons ) then - set ModCpl = couple/gencoor_wrf_cons #> unit conversion and concentration coupling module - #> (see $CMAQ_MODEL/CCTM/src/couple) - set ModHadv = hadv/ppm #> horizontal advection module - set ModVadv = vadv/wrf_cons #> Vertical advection module - else if ($ModAdv == local_cons) then - set ModCpl = couple/gencoor_local_cons #> unit conversion and concentration coupling module - #> (see $CMAQ_MODEL/CCTM/src/couple) - set ModHadv = hadv/ppm #> horizontal advection module - set ModVadv = vadv/local_cons #> Vertical advection module - endif - - # Retrieve git repository sha ID for this source code version - set shaID = `git --git-dir=${CMAQ_REPO}/.git rev-parse --short=10 HEAD` - if ( $? != 0 ) then - set shaID = "not_a_repo" - endif - -# ============================================================================ -#> Create Config File -# ============================================================================ - -set Cfile = ${Bld}/${CFG}.bld # Config Filename - set quote = '"' - - echo > $Cfile - if ( $?make_options ) then - echo "make_options $quote$make_options$quote;" >> $Cfile - echo >> $Cfile - endif - echo "model $EXEC;" >> $Cfile - echo >> $Cfile - echo "repo $CCTM_SRC;" >> $Cfile - echo >> $Cfile - echo "sha_ID $shaID;" >> $Cfile - echo >> $Cfile - echo "mechanism $Mechanism;" >> $Cfile - echo >> $Cfile - echo "lib_base $CMAQ_LIB;" >> $Cfile - echo >> $Cfile - echo "lib_1 ioapi/lib;" >> $Cfile - echo >> $Cfile - echo "lib_2 ioapi/include_files;" >> $Cfile - echo >> $Cfile - if ( $?ParOpt ) then - echo "lib_3 ${quote}mpi -I.$quote;" >> $Cfile - echo >> $Cfile - endif - echo >> $Cfile - echo "lib_4 ioapi/lib;" >> $Cfile - echo >> $Cfile - set text = "$quote$CPP_FLAGS $PAR $SENS $PIO $cpp_depmod $STX1 $STX2$quote;" - echo "cpp_flags $text" >> $Cfile - echo >> $Cfile - echo "f_compiler $FC;" >> $Cfile - echo >> $Cfile - echo "fstd $quote$FSTD$quote;" >> $Cfile - echo >> $Cfile - echo "dbg $quote$DBG$quote;" >> $Cfile - echo >> $Cfile - echo "f_flags $quote$F_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "f90_flags $quote$F90_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "c_compiler $CC;" >> $Cfile - echo >> $Cfile - echo "c_flags $quote$C_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "link_flags $quote$LINK_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "ioapi $quote$LIB2$quote; " >> $Cfile - echo >> $Cfile - echo "netcdf $quote$netcdf_lib$quote;" >> $Cfile - echo >> $Cfile - echo "netcdff $quote$netcdff_lib$quote;" >> $Cfile - echo >> $Cfile - if ( $?ParOpt ) then - echo "mpich $quote$LIB3$quote;" >> $Cfile - echo >> $Cfile - endif - echo "include SUBST_PE_COMM $ICL_PAR/PE_COMM.EXT;" >> $Cfile - echo "include SUBST_CONST $ICL_CONST/CONST.EXT;" >> $Cfile - echo "include SUBST_FILES_ID $ICL_FILES/FILES_CTM.EXT;" >> $Cfile - echo "include SUBST_EMISPRM $ICL_EMCTL/EMISPRM.EXT;" >> $Cfile - echo >> $Cfile - - if ( $?ParOpt ) then - echo "$Str1" >> $Cfile - echo "include SUBST_MPI ./mpif.h;" >> $Cfile - endif - echo >> $Cfile - - set text = "stenex or se_noop" - echo "// options are" $text >> $Cfile - echo "Module ${ModStenex};" >> $Cfile - if ( $?ParOpt ) then - set text = "// parallel executable; stenex and pario included" - echo $text >> $Cfile - echo "Module ${ModPario};" >> $Cfile - else - set text = "serial executable; noop stenex" - echo $text >> $Cfile - endif - echo >> $Cfile - - set text = "par, par_nodistr and par_noop" - echo "// options are" $text >> $Cfile - if ( $?ParOpt ) then - echo "Module ${ModPar};" >> $Cfile - endif - echo >> $Cfile - - if ( $?build_twoway ) then - echo "// option set for WRF-CMAQ twoway" >> $Cfile - echo "Module ${ModTwoway};" >> $Cfile - echo >> $Cfile - endif - - set text = "driver" - echo "// options are" $text >> $Cfile - echo "Module driver;" >> $Cfile - echo >> $Cfile - - set text = "cartesian" - echo "// options are" $text >> $Cfile - echo "Module ${ModGrid};" >> $Cfile - echo >> $Cfile - - set text = "Init" - echo "// options are" $text >> $Cfile - echo "Module init;" >> $Cfile - echo >> $Cfile - - set text = "gencoor_wrf_cons and gencoor_local_cons" - echo "// options are" $text >> $Cfile - echo "Module ${ModCpl};" >> $Cfile - echo >> $Cfile - - set text = "ppm" - echo "// options are" $text >> $Cfile - echo "Module ${ModHadv};" >> $Cfile - echo >> $Cfile - - set text = "wrf_cons and local_cons" - echo "// options are" $text >> $Cfile - echo "Module ${ModVadv};" >> $Cfile - echo >> $Cfile - - set text = "multiscale" - echo "// options are" $text >> $Cfile - echo "Module ${ModHdiff};" >> $Cfile - echo >> $Cfile - - set text = "acm2_m3dry or acm2_stage" - echo "// options are" $text >> $Cfile - echo "Module ${ModVdiff};" >> $Cfile - echo >> $Cfile - - set text = "m3dry or stage" - echo "// options are" $text >> $Cfile - echo "Module ${ModDepv};" >> $Cfile - echo >> $Cfile - - set text = "emis" - echo "// options are" $text >> $Cfile - echo "Module ${ModEmis};" >> $Cfile - echo >> $Cfile - - set text = "beis4" - echo "// options are" $text >> $Cfile - echo "Module ${ModBiog};" >> $Cfile - echo >> $Cfile - - set text = "megan3" - echo "// options are" $text >> $Cfile - echo "Module ${ModMegBiog};" >> $Cfile - echo - - set text = "smoke" - echo "// options are" $text >> $Cfile - echo "Module ${ModPlmrs};" >> $Cfile - echo >> $Cfile - - set text = "cgrid_spcs_nml and cgrid_spcs_icl" - echo "// options are" $text >> $Cfile - echo "Module ${ModCgrds};" >> $Cfile - echo >> $Cfile - - set text = "inline and table" - echo "// options are" $text >> $Cfile - echo "Module ${ModPhot};" >> $Cfile - echo >> $Cfile - - set text = "degrade" - echo "// reactive_tracer options are" $text >> $Cfile - echo "Module ${ModDegrade};" >> $Cfile - echo >> $Cfile - - set text = "gas chemistry solvers" - echo "// " $text >> $Cfile - set text = "smvgear, ros3, and ebi; see 'gas chemistry mechanisms' for " - echo "// options are" $text >> $Cfile - echo "Module ${ModGas};" >> $Cfile - echo >> $Cfile - - set MechList = "cb6r5hap_ae7_aq, cb6r3_ae7_aq, cb6r5_ae7_aq, cb6r5_ae7_aqkmt2, cb6r5m_ae7_aq, racm2_ae6_aq, saprc07tc_ae6_aq, saprc07tic_ae7i_aq, saprc07tic_ae7i_aqkmt2" - - set text = "gas chemistry mechanisms" - echo "// " $text >> $Cfile - set text = "$MechList" - echo "// options are" $text >> $Cfile - echo "Module ${ModMech};" >> $Cfile - echo >> $Cfile - - set text = "tracer modules" - echo "// " $text >> $Cfile - echo "// options are trac0, trac1" >> $Cfile - echo "Module ${ModTrac};" >> $Cfile - echo - - set text = "use potential vorticity free-troposphere O3 scaling" - echo "// options are" $text >> $Cfile - echo "Module ${ModPvO3};" >> $Cfile - echo >> $Cfile - - set text = "aero6" - echo "// options are" $text >> $Cfile - echo "Module ${ModAero};" >> $Cfile - echo >> $Cfile - - set text = "acm_ae6, acm_ae6_kmt, acm_ae7_kmt2, acm_ae6_mp, acm_ae7" - echo "// options are" $text >> $Cfile - echo "Module ${ModCloud};" >> $Cfile - echo >> $Cfile - - set text = "// compile for inline process analysis" - echo $text >> $Cfile - echo "Module ${ModPa};" >> $Cfile - echo >> $Cfile - - set text = "// compile for integrated source apportionment method" - echo $text >> $Cfile - echo "Module ${ModISAM};" >> $Cfile - echo >> $Cfile - - if ( $?DDM3D_CCTM ) then - set text = "// compile for decoupled direct method in 3d" - echo $text >> $Cfile - echo "Module ${ModDDM3D};" >> $Cfile - echo >> $Cfile - endif - - set text = "util" - echo "// options are" $text >> $Cfile - echo "Module ${ModUtil};" >> $Cfile - echo >> $Cfile - - set text = "diag" - echo "// options are" $text >> $Cfile - echo "Module ${ModDiag};" >> $Cfile - echo >> $Cfile - - set text = "stm" - echo "// options are" $text >> $Cfile - echo "Module stm;" >> $Cfile - echo >> $Cfile - - set text = "cio" - echo "// options are" $text >> $Cfile - echo "Module cio;" >> $Cfile - echo >> $Cfile - - if ( $?ModMisc ) then - echo "Module ${ModMisc};" >> $Cfile - echo >> $Cfile - endif - -# ============================================================================ -#> Create Makefile and Model Executable -# ============================================================================ - unalias mv rm - -#> Recompile BLDMAKE from source if requested or if it does not exist - if ( $?CompileBLDMAKE || ! -f $BLDER ) then - cd ${CMAQ_REPO}/UTIL/bldmake/scripts - ./bldit_bldmake.csh - endif - -#> Relocate to the BLD_* directory - cd $Bld - -#> Set multiprocessor/serial options for BLDMAKE execution - if ( $?ParOpt ) then - set Blder = "$BLDER -verbose" - else - set Blder = "$BLDER -serial -verbose" - endif - -#> Run BLDMAKE Utility - set bld_flags = "" - if ( $?MakeFileOnly ) then # Do not compile the Model - set bld_flags = "${bld_flags} -makefo" - endif - - if ( $?CopySrc ) then - set bld_flags = "${bld_flags}" - else if ( $?CopySrcTree ) then - set bld_flags = "${bld_flags} -co" - else - set bld_flags = "{bld_flags} -git_local" # Run BLDMAKE with source code in - # version-controlled git repo - # $Cfile = ${CFG}.bld - endif - - if ( $?Debug_CCTM ) then - set bld_flags = "${bld_flags} -debug_cctm" - endif - - if ( $?ISAM_CCTM ) then - set bld_flags = "${bld_flags} -isam_cctm" - endif - - if ( $?build_twoway ) then - set bld_flags = "${bld_flags} -twoway" - endif - -#> Run BLDMAKE with source code in build directory - $Blder $bld_flags $Cfile - -#> Rename Makefile to specify compiler option and link back to Makefile - if ( ! $?build_twoway ) then - mv Makefile Makefile.$compilerString - if ( -e Makefile.$compilerString && -e Makefile ) rm Makefile - ln -s Makefile.$compilerString Makefile - endif - -#> Alert user of error in BLDMAKE if it ocurred - if ( $status != 0 ) then - echo " *** failure in $Blder ***" - exit 1 - endif - -#> Preserve old Config file, if it exists, before moving new one to -#> build directory. - if ( -e "$Bld/${CFG}" ) then - echo " >>> previous ${CFG} exists, re-naming to ${CFG}.old <<<" - mv $Bld/${CFG} $Bld/${CFG}.old - endif - mv ${CFG}.bld $Bld/${CFG} - -#> If a CRACMM mechanism is used and the compiler is gcc, remove trailing -#> comments in species namelist files (or else model will not run) - if ( ${Mechanism} =~ *cracmm* && ${compiler} == gcc ) then - echo " >>> removing trailing comments from species namelists <<<" - sed -i 's/,\!.*/,/' $Bld/GC_${Mechanism}.nml - sed -i 's/,\!.*/,/' $Bld/AE_${Mechanism}.nml - sed -i 's/,\!.*/,/' $Bld/NR_${Mechanism}.nml - endif - -#> If Building WRF-CMAQ, download WRF, download auxillary files and build -#> model - if ( $?build_twoway ) then - -#> Check if the user has git installed on their system - git --version >& /dev/null - - if ($? == 0) then - set git_check - endif - - if ($?git_check) then - - cd $CMAQ_HOME/CCTM/scripts - - # Downlad WRF repository from GitHub and put CMAQv5.5 into it - set WRF_BLD = BLD_WRF${WRF_VRSN}_CCTM_${VRSN}_${compilerString} - setenv wrf_path ${CMAQ_HOME}/CCTM/scripts/${WRF_BLD} - setenv WRF_CMAQ 1 - - if ( ! -d $WRF_BLD ) then - git clone --branch ${WRF_VRSN} https://github.com/wrf-model/WRF.git ./$WRF_BLD >& /dev/null - cd $wrf_path - mv $Bld ./cmaq - - # Configure WRF - ./configure < >&! bldit.cctm.log -# Requirements: I/O API & netCDF libraries, a Fortran compiler, -# and MPI for multiprocessor computing -# -# To report problems or request help with this script/program: -# http://www.cmascenter.org -# ========================================================================= - -#> Set Compiler Identity by User Input: Options -> intel | pgi | gcc - if ( $#argv == 1 ) then - setenv compiler $argv[1] - setenv compilerVrsn Empty - else if ( $#argv == 2 ) then - #> Compiler Name and Version have been provided - setenv compiler $1 - setenv compilerVrsn $2 - else - echo "usage: $0 " - echo " where is intel, pgi or gcc" - exit(2) - endif - -#> Source the config.cmaq file to set the build environment - cd ../.. - source ./config_cmaq.csh - - set echo - -# ======================================================================= -#> Begin User Input Section -# ======================================================================= - -#> Source Code Locations - setenv CCTM_SRC ${CMAQ_REPO}/CCTM/src #> location of the CCTM source code - set GlobInc = $CCTM_SRC/ICL #> location of the global include files - set Mechs = $CCTM_SRC/MECHS #> location of the chemistry mechanism include files - setenv REPOROOT $CCTM_SRC - -#> Controls for managing the source code and MPI compilation -set CompileBLDMAKE #> Recompile the BLDMAKE utility from source - #> comment out to use an existing BLDMAKE executable -set CopySrc #> copy the source files into the build directory -#set CopySrcTree #> copy the source files and directory tree into the build directory -#set MakeFileOnly #> uncomment to build a Makefile, but do not compile; - #> comment out to compile the model (default if not set) -#set build_mech #> uncomment to build mechanism source code files using the - #> chemmech utility. - -#> Below are chemmech options for revising the mechanism definitions file. The option needs information on the -#> composition of each chemistry. See UTIL/chemmech/README.md for more information. -#> Uncomment to use. -#> Rewrite reactions by appending them with changes in tracked atoms or elements from reactants to products - #setenv COMPUTE_DELTA_ATOMS F -#> The species namelist contains the composition information as comments at the end of lines defining species. -#> Note that if a defining line does not have an ending comment, the species is taken to have none of the tacked atoms. -#> If NAMELISTS_LIST_ATOMS equals F, an additional ASCII file contains the information. - #setenv NAMELISTS_LIST_ATOMS T - -#set clobber_mech #> when commented, the bldit_mech.csh script will halt if - #> newly created mechanism files are attempting replace - #> existing ones. When uncommented, the existing files - #> will be overwritten. -set ParOpt #> uncomment to build a multiple processor (MPI) executable; - #> comment out for a single processor (serial) executable -#set DistrEnv #> uncomment to distribute environmental variables to multiple machines - #> comment out for a single processor (serial) executable (MPI only) -#set build_parallel_io #> uncomment to build with parallel I/O (pnetcdf); - #> comment out to use standard netCDF I/O -#set Debug_CCTM #> uncomment to compile CCTM with debug option equal to TRUE - #> comment out to use standard, optimized compile process -set make_options = "-j" #> additional options for make command if MakeFileOnly is not set - #> comment out if no additional options are wanted. - -#> Integrated Source Apportionment Method (ISAM) -#set ISAM_CCTM #> uncomment to compile CCTM with ISAM activated - #> comment out to use standard process - -set DDM3D_CCTM #> uncomment to compile CCTM with DDM-3D activated - #> comment out to use standard process -#> Two-way WRF-CMAQ -#set build_twoway #> uncomment to build WRF-CMAQ twoway; - #> comment out for off-line chemistry - -#> Working directory and Version IDs - if ( $?ISAM_CCTM ) then - set VRSN = v55_ISAM #> model configuration ID for CMAQ_ISAM - else if ( $?DDM3D_CCTM ) then - set VRSN = v55_DDM3D #> model configuration ID for CMAQ_DDM - else - set VRSN = v55 #> model configuration ID for CMAQ - endif - - set EXEC = CCTM_${VRSN}.exe #> executable name - set CFG = CCTM_${VRSN}.cfg #> configuration file name - - if ( $?build_twoway ) then # WRF Version used for WRF-CMAQ Model (must be v4.4+) - set WRF_VRSN = v4.4 - endif - -#======================================================================== -#> CCTM Science Modules -#======================================================================== -#> NOTE: For the modules with multiple options, a note is -#> provided on where to look in the CCTM source code -#> archive for a list of the possible settings. Users -#> may also refer to the CMAQ documentation. - - set ModGrid = grid/cartesian #> grid configuration module - - set DepMod = m3dry #> m3dry or stage - #set DepMod = stage - set ModAdv = wrf_cons #> 3-D Advection Scheme [Options: wrf_cons (default), local_cons] - set ModHdiff = hdiff/multiscale #> horizontal diffusion module - set ModVdiff = vdiff/acm2_${DepMod} #> vertical diffusion module (see $CMAQ_MODEL/CCTM/src/vdiff) - set ModDepv = depv/${DepMod} #> deposition velocity calculation module - #> (see $CMAQ_MODEL/CCTM/src/depv) - set ModEmis = emis/emis #> in-line emissions module - set ModBiog = biog/beis4 #> BEIS4 in-line emissions module - - set ModMegBiog = biog/megan3 #> MEGAN3 in-line emissions module - - set ModPlmrs = plrise/smoke #> in-line emissions plume rise - set ModCgrds = spcs/cgrid_spcs_nml #> chemistry species configuration module - #> (see $CMAQ_MODEL/CCTM/src/spcs) - set ModPhot = phot/inline #> photolysis calculation module - #> (see $CMAQ_MODEL/CCTM/src/phot) - - setenv Mechanism cb6r5_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) - set ModMech = MECHS/${Mechanism} - - if ( ${Mechanism} =~ *ae7* ) then #> ae7 family of aero and cloud chem - set ModAero = aero/aero7 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) - set ModCloud = cloud/acm_ae7 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) - else if ( ${Mechanism} =~ *ae6* ) then #> ae6 family of aero and cloud chem - set ModAero = aero/aero6 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) - set ModCloud = cloud/acm_ae6 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) - else if ( ${Mechanism} =~ *cracmm* ) then #> CRACMM family of aero and cloud chem - set ModAero = aero/cracmm # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) - set ModCloud = cloud/acm_cracmm # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) - endif - - # Special cloud modules for kmt versions - if( ${Mechanism} == cb6r5_ae7_aqkmt2 ) then - set ModCloud = cloud/acm_ae7_kmt2 - else if( ${Mechanism} == saprc07tic_ae7i_aqkmt2 ) then - set ModCloud = cloud/acm_ae7_kmt2 - endif - - # Gas chem solver - if ( ${Mechanism} == cb6r5m_ae7_aq ) then #> Gas-phase chemistry solver options ($CMAQ_MODEL/CCTM/src/gas) - setenv ChemSolver ros3 #> ros3 (or smvgear) are system independent - else - setenv ChemSolver ebi #> [ default for most mechanisms: ebi ] - endif - - if ( $ChemSolver == ebi ) then - set ModGas = gas/${ChemSolver}_${Mechanism} - - else - set ModGas = gas/${ChemSolver} - endif - - set ModUtil = util/util #> CCTM utility modules - set ModDiag = diag #> CCTM diagnostic modules - set Tracer = trac0 #> tracer configuration directory under - #> $CMAQ_MODEL/CCTM/src/MECHS [ default: no tracer species ] - set ModPa = procan/pa #> CCTM process analysis - set ModPvO3 = pv_o3 #> potential vorticity from the free troposphere - set ModISAM = isam #> CCTM Integrated Source Apportionment Method - set ModDDM3D = ddm3d #> Decoupled Direct Method in 3D - set ModDegrade = reactive_tracers #> Linear Chemical Loss for a fixed set of species treated as reactive tracers - -#============================================================================================ -#> Computing System Configuration: -#> Most of these settings are done in config.cmaq -#============================================================================================ - - setenv FC ${myFC} #> path of Fortan compiler; set in config.cmaq - set FP = $FC #> path of Fortan preprocessor; set in config.cmaq - set CC = ${myCC} #> path of C compiler; set in config.cmaq - setenv BLDER ${CMAQ_HOME}/UTIL/bldmake/bldmake_${compilerString}.exe #> name of model builder executable - -#> Libraries/include files -#set LIOAPI = "${IOAPI_DIR}/lib ${ioapi_lib}" #> I/O API library directory -#set IOAPIMOD = "${IOAPI_DIR}/include" #> I/O API module directory - set NETCDF = "${NETCDF_DIR}/lib ${netcdf_lib}" #> netCDF C library directory - set NETCDFF = "${NETCDFF_DIR}/lib ${netcdff_lib}" #> netCDF Fortran library directory - set PNETCDF = "${PNETCDF_DIR}/lib ${pnetcdf_lib}" #> Parallel netCDF library directory -#set PIO_INC = "${IOAPI_DIR}/src" - -#> Compiler flags set in config.cmaq - set FSTD = "${myFSTD}" - set DBG = "${myDBG}" - setenv F_FLAGS "${myFFLAGS}" #> F77 flags - set F90_FLAGS = "${myFRFLAGS}" #> F90 flags - set CPP_FLAGS = "" #> Fortran preprocessor flags - set C_FLAGS = "${myCFLAGS} -DFLDMN -I" #> C flags - set LINK_FLAGS = "${myLINK_FLAG}" # Link flags - - -#============================================================================================ -#> Implement User Input -#============================================================================================ - -#> Check for CMAQ_REPO and CMAQ_LIB settings: - if ( ! -e $CMAQ_REPO || ! -e $CMAQ_LIB ) then - echo " $CMAQ_REPO or $CMAQ_LIB directory not found" - exit 1 - endif - echo " Model repository base path: $CMAQ_REPO" - echo " library path: $CMAQ_LIB" - -#> If $CMAQ_MODEL is not set, default to $CMAQ_REPO - if ( $?CMAQ_MODEL ) then - echo " Model repository path: $CMAQ_MODEL" - else - setenv CMAQ_MODEL $CMAQ_REPO - echo " default Model repository path: $CMAQ_MODEL" - endif - -#> This script was written for Linux hosts only. If -#> the host system is not Linux, produce an error and stop - set BLD_OS = `uname -s` - if ($BLD_OS != 'Linux') then - echo " $BLD_OS -> wrong bldit script for host!" - exit 1 - endif - -#> If the two-way, coupled WRF-CMAQ model is being built, -#> then just generate the Makefile. Don't compile. - if ( $?build_twoway ) then - set MakeFileOnly - set ModTwoway = twoway - endif - -#> If parallel-io is selected, then make sure the multiprocessor -#> option is also set. - if ( $?build_parallel_io ) then - if ( ! $?ParOpt ) then - echo "*** ParOpt is not set: required for the build_parallel_io option" - exit 1 - endif - set PIO = ( -Dparallel_io ) - else - set PIO = "" - endif - - if ($DepMod == m3dry) then - set cpp_depmod = '-Dm3dry_opt' - else if ($DepMod == stage) then - set cpp_depmod = '-Dstage_opt' - if ( $?DDM3D_CCTM ) then - echo "*** DDM3D is not compatible with the STAGE deposition model" - exit 1 - endif - endif - -#> Set variables needed for multiprocessor and serial builds - if ( $?ParOpt ) then - #Multiprocessor system configuration - echo " Parallel; set MPI flags" - set ModStenex = STENEX/se - set ModPario = PARIO - set ModPar = par/mpi - set PARIO = ${CMAQ_MODEL}/PARIO - set STENEX = ${CMAQ_MODEL}/STENEX - # MPI_INC is set in config.cmaq - # set PIO_INC = "${IOAPI_DIR}/src/fixed_src" - set PAR = ( -Dparallel ) - set Popt = SE - set seL = se_snl - set LIB2 = "${ioapi_lib}" - set LIB3 = "${mpi_lib} ${extra_lib}" - set Str1 = (// Parallel / Include message passing definitions) - set Str2 = (include SUBST_MPI mpif.h;) - # Distribute Environment to different machines if not done automatically - if ( $?DistrEnv ) then - set PAR = ($PAR -Dcluster) - endif - else - #Serial system configuration - echo " Not Parallel; set Serial (no-op) flags" - set ModStenex = STENEX/noop - set ModPar = par/par_noop - set PARIO = "." - set STENEX = ${CMAQ_MODEL}/STENEX/noop - set MPI_INC = "." - # set PIO_INC = "." - set PAR = "" - set Popt = NOOP - set seL = sef90_noop - set LIB2 = "${ioapi_lib} ${extra_lib}" - set Str1 = - set Str2 = - endif - -#> if DDM-3D is set, add the pre-processor flag for it. - if ( $?DDM3D_CCTM ) then - set SENS = ( -Dsens ) - else - set SENS = "" - endif - -#> Build Mechanism Files and instruct build-make to look -#> in the CHEMMECH output folder for the files - if ( $?build_mech ) then - - # Note: modifying existing or creating new chemical mechanisms - # can lead to unstable or highly inaccurate representations of - # atmospheric chemical predictions when applying the EBI solvers. - # EBI solvers are highly characterized and tested before - # application. The CMAQ development team recommends using the - # generalized solvers, Rosenbrock or Gear, with user-defined - # mechanisms. - - # Because the bldit_cctm script is executing the bldit_mech - # processor, we will assume that the source location for the new - # mechanism files is in the CMAQ repo. There will also be an - # error check for overwriting an existing mechanism that can be - # disabled using the mech_clobber variable above. - setenv MECH_SRC ${CMAQ_REPO}/CCTM/src/${ModMech} - setenv TRAC_NML ${CMAQ_REPO}/CCTM/src/MECHS/trac0/Species_Table_TR_0.nml - setenv MECH_OUT ${CMAQ_REPO}/CCTM/src/${ModMech} - setenv EBI_SOLVER_OUT ${CMAQ_REPO}/CCTM/src/${ModGas} - if ( $?clobber_mech ) then - setenv CLOBBER_MECH TRUE - else - setenv CLOBBER_MECH FALSE - endif - - cd ${CMAQ_HOME}/CCTM/scripts - ./bldit_mech.csh ${compiler} ${compilerVrsn} - if ( $? != 0 ) then - echo "" - echo "bldit_mech did not finish correctly --> Build Process Halted" - exit 1 - endif - endif - -#> Tracer configuration files - set ModTrac = MECHS/$Tracer - -#> Set and create the "BLD" directory for checking out and compiling -#> source code. Move current directory to that build directory. - if ( $?Debug_CCTM ) then - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug - else - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} - endif - - - if ( ! -e "$Bld" ) then - mkdir $Bld - else - if ( ! -d "$Bld" ) then - echo " *** target exists, but not a directory ***" - exit 1 - endif - endif - cd $Bld - -#> Set locations for the include files of various modules - set ICL_PAR = $GlobInc/fixed/mpi - set ICL_CONST = $GlobInc/fixed/const - set ICL_FILES = $GlobInc/fixed/filenames - set ICL_EMCTL = $GlobInc/fixed/emctrl -#set ICL_PA = $GlobInc/procan/$PAOpt - - #Test with xlib commented out - if ( $?ParOpt ) then - set ICL_MPI = . #$xLib_Base/$xLib_3 - endif - - -#> If the source code is being copied to the build directory, -#> then move the include files as well and direct the Makefile -#> to the current directory. - if ( $?CopySrc ) then - /bin/cp -fp ${ICL_PAR}/* ${Bld} - /bin/cp -fp ${ICL_CONST}/* ${Bld} - /bin/cp -fp ${ICL_FILES}/* ${Bld} - /bin/cp -fp ${ICL_EMCTL}/* ${Bld} - #/bin/cp -fp ${ICL_PA}/* ${Bld} - if ( $?ParOpt ) then - /bin/cp -fp ${ICL_MPI}/mpif.h ${Bld} - endif - - set ICL_PAR = . - set ICL_CONST = . - set ICL_FILES = . - set ICL_EMCTL = . - #set ICL_PA = . - if ( $?ParOpt ) then - set ICL_MPI = . - endif - endif - - - set STX1 = ( -DSUBST_BARRIER=${Popt}_BARRIER\ - -DSUBST_GLOBAL_MAX=${Popt}_GLOBAL_MAX\ - -DSUBST_GLOBAL_MIN=${Popt}_GLOBAL_MIN\ - -DSUBST_GLOBAL_MIN_DATA=${Popt}_GLOBAL_MIN_DATA\ - -DSUBST_GLOBAL_TO_LOCAL_COORD=${Popt}_GLOBAL_TO_LOCAL_COORD\ - -DSUBST_GLOBAL_SUM=${Popt}_GLOBAL_SUM\ - -DSUBST_GLOBAL_LOGICAL=${Popt}_GLOBAL_LOGICAL\ - -DSUBST_GLOBAL_GATHER=${Popt}_GLOBAL_GATHER\ - -DSUBST_GLOBAL_BCAST=${Popt}_GLOBAL_BCAST\ - -DSUBST_LOOP_INDEX=${Popt}_LOOP_INDEX\ - -DSUBST_SUBGRID_INDEX=${Popt}_SUBGRID_INDEX ) - set STX2 = ( -DSUBST_HI_LO_BND_PE=${Popt}_HI_LO_BND_PE\ - -DSUBST_SUM_CHK=${Popt}_SUM_CHK\ - -DSUBST_SE_INIT=${Popt}_INIT\ - -DSUBST_INIT_ARRAY=${Popt}_INIT_ARRAY\ - -DSUBST_COMM=${Popt}_COMM\ - -DSUBST_MY_REGION=${Popt}_MY_REGION\ - -DSUBST_SLICE=${Popt}_SLICE\ - -DSUBST_GATHER=${Popt}_GATHER\ - -DSUBST_DATA_COPY=${Popt}_DATA_COPY\ - -DSUBST_IN_SYN=${Popt}_IN_SYN ) - - -#> 3-D Advection Options - if ( $ModAdv == wrf_cons ) then - set ModCpl = couple/gencoor_wrf_cons #> unit conversion and concentration coupling module - #> (see $CMAQ_MODEL/CCTM/src/couple) - set ModHadv = hadv/ppm #> horizontal advection module - set ModVadv = vadv/wrf_cons #> Vertical advection module - else if ($ModAdv == local_cons) then - set ModCpl = couple/gencoor_local_cons #> unit conversion and concentration coupling module - #> (see $CMAQ_MODEL/CCTM/src/couple) - set ModHadv = hadv/ppm #> horizontal advection module - set ModVadv = vadv/local_cons #> Vertical advection module - endif - - # Retrieve git repository sha ID for this source code version - set shaID = `git --git-dir=${CMAQ_REPO}/.git rev-parse --short=10 HEAD` - if ( $? != 0 ) then - set shaID = "not_a_repo" - endif - -# ============================================================================ -#> Create Config File -# ============================================================================ - -set Cfile = ${Bld}/${CFG}.bld # Config Filename - set quote = '"' - - echo > $Cfile - if ( $?make_options ) then - echo "make_options $quote$make_options$quote;" >> $Cfile - echo >> $Cfile - endif - echo "model $EXEC;" >> $Cfile - echo >> $Cfile - echo "repo $CCTM_SRC;" >> $Cfile - echo >> $Cfile - echo "sha_ID $shaID;" >> $Cfile - echo >> $Cfile - echo "mechanism $Mechanism;" >> $Cfile - echo >> $Cfile - echo "lib_base $CMAQ_LIB;" >> $Cfile - echo >> $Cfile - echo "lib_1 ioapi/lib;" >> $Cfile - echo >> $Cfile - echo "lib_2 ioapi/include_files;" >> $Cfile - echo >> $Cfile - if ( $?ParOpt ) then - echo "lib_3 ${quote}mpi -I.$quote;" >> $Cfile - echo >> $Cfile - endif - echo >> $Cfile - echo "lib_4 ioapi/lib;" >> $Cfile - echo >> $Cfile - set text = "$quote$CPP_FLAGS $PAR $SENS $PIO $cpp_depmod $STX1 $STX2$quote;" - echo "cpp_flags $text" >> $Cfile - echo >> $Cfile - echo "f_compiler $FC;" >> $Cfile - echo >> $Cfile - echo "fstd $quote$FSTD$quote;" >> $Cfile - echo >> $Cfile - echo "dbg $quote$DBG$quote;" >> $Cfile - echo >> $Cfile - echo "f_flags $quote$F_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "f90_flags $quote$F90_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "c_compiler $CC;" >> $Cfile - echo >> $Cfile - echo "c_flags $quote$C_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "link_flags $quote$LINK_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "ioapi $quote$LIB2$quote; " >> $Cfile - echo >> $Cfile - echo "netcdf $quote$netcdf_lib$quote;" >> $Cfile - echo >> $Cfile - echo "netcdff $quote$netcdff_lib$quote;" >> $Cfile - echo >> $Cfile - if ( $?ParOpt ) then - echo "mpich $quote$LIB3$quote;" >> $Cfile - echo >> $Cfile - endif - echo "include SUBST_PE_COMM $ICL_PAR/PE_COMM.EXT;" >> $Cfile - echo "include SUBST_CONST $ICL_CONST/CONST.EXT;" >> $Cfile - echo "include SUBST_FILES_ID $ICL_FILES/FILES_CTM.EXT;" >> $Cfile - echo "include SUBST_EMISPRM $ICL_EMCTL/EMISPRM.EXT;" >> $Cfile - echo >> $Cfile - - if ( $?ParOpt ) then - echo "$Str1" >> $Cfile - echo "include SUBST_MPI ./mpif.h;" >> $Cfile - endif - echo >> $Cfile - - set text = "stenex or se_noop" - echo "// options are" $text >> $Cfile - echo "Module ${ModStenex};" >> $Cfile - if ( $?ParOpt ) then - set text = "// parallel executable; stenex and pario included" - echo $text >> $Cfile - echo "Module ${ModPario};" >> $Cfile - else - set text = "serial executable; noop stenex" - echo $text >> $Cfile - endif - echo >> $Cfile - - set text = "par, par_nodistr and par_noop" - echo "// options are" $text >> $Cfile - if ( $?ParOpt ) then - echo "Module ${ModPar};" >> $Cfile - endif - echo >> $Cfile - - if ( $?build_twoway ) then - echo "// option set for WRF-CMAQ twoway" >> $Cfile - echo "Module ${ModTwoway};" >> $Cfile - echo >> $Cfile - endif - - set text = "driver" - echo "// options are" $text >> $Cfile - echo "Module driver;" >> $Cfile - echo >> $Cfile - - set text = "cartesian" - echo "// options are" $text >> $Cfile - echo "Module ${ModGrid};" >> $Cfile - echo >> $Cfile - - set text = "Init" - echo "// options are" $text >> $Cfile - echo "Module init;" >> $Cfile - echo >> $Cfile - - set text = "gencoor_wrf_cons and gencoor_local_cons" - echo "// options are" $text >> $Cfile - echo "Module ${ModCpl};" >> $Cfile - echo >> $Cfile - - set text = "ppm" - echo "// options are" $text >> $Cfile - echo "Module ${ModHadv};" >> $Cfile - echo >> $Cfile - - set text = "wrf_cons and local_cons" - echo "// options are" $text >> $Cfile - echo "Module ${ModVadv};" >> $Cfile - echo >> $Cfile - - set text = "multiscale" - echo "// options are" $text >> $Cfile - echo "Module ${ModHdiff};" >> $Cfile - echo >> $Cfile - - set text = "acm2_m3dry or acm2_stage" - echo "// options are" $text >> $Cfile - echo "Module ${ModVdiff};" >> $Cfile - echo >> $Cfile - - set text = "m3dry or stage" - echo "// options are" $text >> $Cfile - echo "Module ${ModDepv};" >> $Cfile - echo >> $Cfile - - set text = "emis" - echo "// options are" $text >> $Cfile - echo "Module ${ModEmis};" >> $Cfile - echo >> $Cfile - - set text = "beis4" - echo "// options are" $text >> $Cfile - echo "Module ${ModBiog};" >> $Cfile - echo >> $Cfile - - set text = "megan3" - echo "// options are" $text >> $Cfile - echo "Module ${ModMegBiog};" >> $Cfile - echo - - set text = "smoke" - echo "// options are" $text >> $Cfile - echo "Module ${ModPlmrs};" >> $Cfile - echo >> $Cfile - - set text = "cgrid_spcs_nml and cgrid_spcs_icl" - echo "// options are" $text >> $Cfile - echo "Module ${ModCgrds};" >> $Cfile - echo >> $Cfile - - set text = "inline and table" - echo "// options are" $text >> $Cfile - echo "Module ${ModPhot};" >> $Cfile - echo >> $Cfile - - set text = "degrade" - echo "// reactive_tracer options are" $text >> $Cfile - echo "Module ${ModDegrade};" >> $Cfile - echo >> $Cfile - - set text = "gas chemistry solvers" - echo "// " $text >> $Cfile - set text = "smvgear, ros3, and ebi; see 'gas chemistry mechanisms' for " - echo "// options are" $text >> $Cfile - echo "Module ${ModGas};" >> $Cfile - echo >> $Cfile - - set MechList = "cb6r5hap_ae7_aq, cb6r3_ae7_aq, cb6r5_ae7_aq, cb6r5_ae7_aqkmt2, cb6r5m_ae7_aq, racm2_ae6_aq, saprc07tc_ae6_aq, saprc07tic_ae7i_aq, saprc07tic_ae7i_aqkmt2" - - set text = "gas chemistry mechanisms" - echo "// " $text >> $Cfile - set text = "$MechList" - echo "// options are" $text >> $Cfile - echo "Module ${ModMech};" >> $Cfile - echo >> $Cfile - - set text = "tracer modules" - echo "// " $text >> $Cfile - echo "// options are trac0, trac1" >> $Cfile - echo "Module ${ModTrac};" >> $Cfile - echo - - set text = "use potential vorticity free-troposphere O3 scaling" - echo "// options are" $text >> $Cfile - echo "Module ${ModPvO3};" >> $Cfile - echo >> $Cfile - - set text = "aero6" - echo "// options are" $text >> $Cfile - echo "Module ${ModAero};" >> $Cfile - echo >> $Cfile - - set text = "acm_ae6, acm_ae6_kmt, acm_ae7_kmt2, acm_ae6_mp, acm_ae7" - echo "// options are" $text >> $Cfile - echo "Module ${ModCloud};" >> $Cfile - echo >> $Cfile - - set text = "// compile for inline process analysis" - echo $text >> $Cfile - echo "Module ${ModPa};" >> $Cfile - echo >> $Cfile - - set text = "// compile for integrated source apportionment method" - echo $text >> $Cfile - echo "Module ${ModISAM};" >> $Cfile - echo >> $Cfile - - if ( $?DDM3D_CCTM ) then - set text = "// compile for decoupled direct method in 3d" - echo $text >> $Cfile - echo "Module ${ModDDM3D};" >> $Cfile - echo >> $Cfile - endif - - set text = "util" - echo "// options are" $text >> $Cfile - echo "Module ${ModUtil};" >> $Cfile - echo >> $Cfile - - set text = "diag" - echo "// options are" $text >> $Cfile - echo "Module ${ModDiag};" >> $Cfile - echo >> $Cfile - - set text = "stm" - echo "// options are" $text >> $Cfile - echo "Module stm;" >> $Cfile - echo >> $Cfile - - set text = "cio" - echo "// options are" $text >> $Cfile - echo "Module cio;" >> $Cfile - echo >> $Cfile - - if ( $?ModMisc ) then - echo "Module ${ModMisc};" >> $Cfile - echo >> $Cfile - endif - -# ============================================================================ -#> Create Makefile and Model Executable -# ============================================================================ - unalias mv rm - -#> Recompile BLDMAKE from source if requested or if it does not exist - if ( $?CompileBLDMAKE || ! -f $BLDER ) then - cd ${CMAQ_REPO}/UTIL/bldmake/scripts - ./bldit_bldmake.csh - endif - -#> Relocate to the BLD_* directory - cd $Bld - -#> Set multiprocessor/serial options for BLDMAKE execution - if ( $?ParOpt ) then - set Blder = "$BLDER -verbose" - else - set Blder = "$BLDER -serial -verbose" - endif - -#> Run BLDMAKE Utility - set bld_flags = "" - if ( $?MakeFileOnly ) then # Do not compile the Model - set bld_flags = "${bld_flags} -makefo" - endif - - if ( $?CopySrc ) then - set bld_flags = "${bld_flags}" - else if ( $?CopySrcTree ) then - set bld_flags = "${bld_flags} -co" - else - set bld_flags = "{bld_flags} -git_local" # Run BLDMAKE with source code in - # version-controlled git repo - # $Cfile = ${CFG}.bld - endif - - if ( $?Debug_CCTM ) then - set bld_flags = "${bld_flags} -debug_cctm" - endif - - if ( $?ISAM_CCTM ) then - set bld_flags = "${bld_flags} -isam_cctm" - endif - - if ( $?build_twoway ) then - set bld_flags = "${bld_flags} -twoway" - endif - -#> Run BLDMAKE with source code in build directory - $Blder $bld_flags $Cfile - -#> Rename Makefile to specify compiler option and link back to Makefile - if ( ! $?build_twoway ) then - mv Makefile Makefile.$compilerString - if ( -e Makefile.$compilerString && -e Makefile ) rm Makefile - ln -s Makefile.$compilerString Makefile - endif - -#> Alert user of error in BLDMAKE if it ocurred - if ( $status != 0 ) then - echo " *** failure in $Blder ***" - exit 1 - endif - -#> Preserve old Config file, if it exists, before moving new one to -#> build directory. - if ( -e "$Bld/${CFG}" ) then - echo " >>> previous ${CFG} exists, re-naming to ${CFG}.old <<<" - mv $Bld/${CFG} $Bld/${CFG}.old - endif - mv ${CFG}.bld $Bld/${CFG} - -#> If a CRACMM mechanism is used and the compiler is gcc, remove trailing -#> comments in species namelist files (or else model will not run) - if ( ${Mechanism} =~ *cracmm* && ${compiler} == gcc ) then - echo " >>> removing trailing comments from species namelists <<<" - sed -i 's/,\!.*/,/' $Bld/GC_${Mechanism}.nml - sed -i 's/,\!.*/,/' $Bld/AE_${Mechanism}.nml - sed -i 's/,\!.*/,/' $Bld/NR_${Mechanism}.nml - endif - -#> If Building WRF-CMAQ, download WRF, download auxillary files and build -#> model - if ( $?build_twoway ) then - -#> Check if the user has git installed on their system - git --version >& /dev/null - - if ($? == 0) then - set git_check - endif - - if ($?git_check) then - - cd $CMAQ_HOME/CCTM/scripts - - # Downlad WRF repository from GitHub and put CMAQv5.5 into it - set WRF_BLD = BLD_WRF${WRF_VRSN}_CCTM_${VRSN}_${compilerString} - setenv wrf_path ${CMAQ_HOME}/CCTM/scripts/${WRF_BLD} - setenv WRF_CMAQ 1 - - if ( ! -d $WRF_BLD ) then - git clone --branch ${WRF_VRSN} https://github.com/wrf-model/WRF.git ./$WRF_BLD >& /dev/null - cd $wrf_path - mv $Bld ./cmaq - - # Configure WRF - ./configure < >&! bldit.cctm.log -# Requirements: I/O API & netCDF libraries, a Fortran compiler, -# and MPI for multiprocessor computing -# -# To report problems or request help with this script/program: -# http://www.cmascenter.org -# ========================================================================= - -#> Set Compiler Identity by User Input: Options -> intel | pgi | gcc - if ( $#argv == 1 ) then - setenv compiler $argv[1] - setenv compilerVrsn Empty - else if ( $#argv == 2 ) then - #> Compiler Name and Version have been provided - setenv compiler $1 - setenv compilerVrsn $2 - else - echo "usage: $0 " - echo " where is intel, pgi or gcc" - exit(2) - endif - -#> Source the config.cmaq file to set the build environment - cd ../.. - source ./config_cmaq.csh - - set echo - -# ======================================================================= -#> Begin User Input Section -# ======================================================================= - -#> Source Code Locations - setenv CCTM_SRC ${CMAQ_REPO}/CCTM/src #> location of the CCTM source code - set GlobInc = $CCTM_SRC/ICL #> location of the global include files - set Mechs = $CCTM_SRC/MECHS #> location of the chemistry mechanism include files - setenv REPOROOT $CCTM_SRC - -#> Controls for managing the source code and MPI compilation -set CompileBLDMAKE #> Recompile the BLDMAKE utility from source - #> comment out to use an existing BLDMAKE executable -set CopySrc #> copy the source files into the build directory -#set CopySrcTree #> copy the source files and directory tree into the build directory -#set MakeFileOnly #> uncomment to build a Makefile, but do not compile; - #> comment out to compile the model (default if not set) -#set build_mech #> uncomment to build mechanism source code files using the - #> chemmech utility. - -#> Below are chemmech options for revising the mechanism definitions file. The option needs information on the -#> composition of each chemistry. See UTIL/chemmech/README.md for more information. -#> Uncomment to use. -#> Rewrite reactions by appending them with changes in tracked atoms or elements from reactants to products - #setenv COMPUTE_DELTA_ATOMS F -#> The species namelist contains the composition information as comments at the end of lines defining species. -#> Note that if a defining line does not have an ending comment, the species is taken to have none of the tacked atoms. -#> If NAMELISTS_LIST_ATOMS equals F, an additional ASCII file contains the information. - #setenv NAMELISTS_LIST_ATOMS T - -#set clobber_mech #> when commented, the bldit_mech.csh script will halt if - #> newly created mechanism files are attempting replace - #> existing ones. When uncommented, the existing files - #> will be overwritten. -set ParOpt #> uncomment to build a multiple processor (MPI) executable; - #> comment out for a single processor (serial) executable -#set DistrEnv #> uncomment to distribute environmental variables to multiple machines - #> comment out for a single processor (serial) executable (MPI only) -#set build_parallel_io #> uncomment to build with parallel I/O (pnetcdf); - #> comment out to use standard netCDF I/O -#set Debug_CCTM #> uncomment to compile CCTM with debug option equal to TRUE - #> comment out to use standard, optimized compile process -set make_options = "-j" #> additional options for make command if MakeFileOnly is not set - #> comment out if no additional options are wanted. - -#> Integrated Source Apportionment Method (ISAM) -#set ISAM_CCTM #> uncomment to compile CCTM with ISAM activated - #> comment out to use standard process - -#set DDM3D_CCTM #> uncomment to compile CCTM with DDM-3D activated - #> comment out to use standard process -#> Two-way WRF-CMAQ -#set build_twoway #> uncomment to build WRF-CMAQ twoway; - #> comment out for off-line chemistry - -#> Working directory and Version IDs - if ( $?ISAM_CCTM ) then - set VRSN = v55_ISAM #> model configuration ID for CMAQ_ISAM - else if ( $?DDM3D_CCTM ) then - set VRSN = v55_DDM3D #> model configuration ID for CMAQ_DDM - else - set VRSN = v55 #> model configuration ID for CMAQ - endif - - set EXEC = CCTM_${VRSN}.exe #> executable name - set CFG = CCTM_${VRSN}.cfg #> configuration file name - - if ( $?build_twoway ) then # WRF Version used for WRF-CMAQ Model (must be v4.4+) - set WRF_VRSN = v4.4 - endif - -#======================================================================== -#> CCTM Science Modules -#======================================================================== -#> NOTE: For the modules with multiple options, a note is -#> provided on where to look in the CCTM source code -#> archive for a list of the possible settings. Users -#> may also refer to the CMAQ documentation. - - set ModGrid = grid/cartesian #> grid configuration module - -#set DepMod = m3dry #> m3dry or stage -set DepMod = stage - set ModAdv = wrf_cons #> 3-D Advection Scheme [Options: wrf_cons (default), local_cons] - set ModHdiff = hdiff/multiscale #> horizontal diffusion module - set ModVdiff = vdiff/acm2_${DepMod} #> vertical diffusion module (see $CMAQ_MODEL/CCTM/src/vdiff) - set ModDepv = depv/${DepMod} #> deposition velocity calculation module - #> (see $CMAQ_MODEL/CCTM/src/depv) - set ModEmis = emis/emis #> in-line emissions module - set ModBiog = biog/beis4 #> BEIS4 in-line emissions module - - set ModMegBiog = biog/megan3 #> MEGAN3 in-line emissions module - - set ModPlmrs = plrise/smoke #> in-line emissions plume rise - set ModCgrds = spcs/cgrid_spcs_nml #> chemistry species configuration module - #> (see $CMAQ_MODEL/CCTM/src/spcs) - set ModPhot = phot/inline #> photolysis calculation module - #> (see $CMAQ_MODEL/CCTM/src/phot) - - setenv Mechanism cb6r5_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) - set ModMech = MECHS/${Mechanism} - - if ( ${Mechanism} =~ *ae7* ) then #> ae7 family of aero and cloud chem - set ModAero = aero/aero7 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) - set ModCloud = cloud/acm_ae7 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) - else if ( ${Mechanism} =~ *ae6* ) then #> ae6 family of aero and cloud chem - set ModAero = aero/aero6 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) - set ModCloud = cloud/acm_ae6 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) - else if ( ${Mechanism} =~ *cracmm* ) then #> CRACMM family of aero and cloud chem - set ModAero = aero/cracmm # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) - set ModCloud = cloud/acm_cracmm # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) - endif - - # Special cloud modules for kmt versions - if( ${Mechanism} == cb6r5_ae7_aqkmt2 ) then - set ModCloud = cloud/acm_ae7_kmt2 - else if( ${Mechanism} == saprc07tic_ae7i_aqkmt2 ) then - set ModCloud = cloud/acm_ae7_kmt2 - endif - - # Gas chem solver - if ( ${Mechanism} == cb6r5m_ae7_aq ) then #> Gas-phase chemistry solver options ($CMAQ_MODEL/CCTM/src/gas) - setenv ChemSolver ros3 #> ros3 (or smvgear) are system independent - else - setenv ChemSolver ebi #> [ default for most mechanisms: ebi ] - endif - - if ( $ChemSolver == ebi ) then - set ModGas = gas/${ChemSolver}_${Mechanism} - - else - set ModGas = gas/${ChemSolver} - endif - - set ModUtil = util/util #> CCTM utility modules - set ModDiag = diag #> CCTM diagnostic modules - set Tracer = trac0 #> tracer configuration directory under - #> $CMAQ_MODEL/CCTM/src/MECHS [ default: no tracer species ] - set ModPa = procan/pa #> CCTM process analysis - set ModPvO3 = pv_o3 #> potential vorticity from the free troposphere - set ModISAM = isam #> CCTM Integrated Source Apportionment Method - set ModDDM3D = ddm3d #> Decoupled Direct Method in 3D - set ModDegrade = reactive_tracers #> Linear Chemical Loss for a fixed set of species treated as reactive tracers - -#============================================================================================ -#> Computing System Configuration: -#> Most of these settings are done in config.cmaq -#============================================================================================ - - setenv FC ${myFC} #> path of Fortan compiler; set in config.cmaq - set FP = $FC #> path of Fortan preprocessor; set in config.cmaq - set CC = ${myCC} #> path of C compiler; set in config.cmaq - setenv BLDER ${CMAQ_HOME}/UTIL/bldmake/bldmake_${compilerString}.exe #> name of model builder executable - -#> Libraries/include files -#set LIOAPI = "${IOAPI_DIR}/lib ${ioapi_lib}" #> I/O API library directory -#set IOAPIMOD = "${IOAPI_DIR}/include" #> I/O API module directory - set NETCDF = "${NETCDF_DIR}/lib ${netcdf_lib}" #> netCDF C library directory - set NETCDFF = "${NETCDFF_DIR}/lib ${netcdff_lib}" #> netCDF Fortran library directory - set PNETCDF = "${PNETCDF_DIR}/lib ${pnetcdf_lib}" #> Parallel netCDF library directory -#set PIO_INC = "${IOAPI_DIR}/src" - -#> Compiler flags set in config.cmaq - set FSTD = "${myFSTD}" - set DBG = "${myDBG}" - setenv F_FLAGS "${myFFLAGS}" #> F77 flags - set F90_FLAGS = "${myFRFLAGS}" #> F90 flags - set CPP_FLAGS = "" #> Fortran preprocessor flags - set C_FLAGS = "${myCFLAGS} -DFLDMN -I" #> C flags - set LINK_FLAGS = "${myLINK_FLAG}" # Link flags - - -#============================================================================================ -#> Implement User Input -#============================================================================================ - -#> Check for CMAQ_REPO and CMAQ_LIB settings: - if ( ! -e $CMAQ_REPO || ! -e $CMAQ_LIB ) then - echo " $CMAQ_REPO or $CMAQ_LIB directory not found" - exit 1 - endif - echo " Model repository base path: $CMAQ_REPO" - echo " library path: $CMAQ_LIB" - -#> If $CMAQ_MODEL is not set, default to $CMAQ_REPO - if ( $?CMAQ_MODEL ) then - echo " Model repository path: $CMAQ_MODEL" - else - setenv CMAQ_MODEL $CMAQ_REPO - echo " default Model repository path: $CMAQ_MODEL" - endif - -#> This script was written for Linux hosts only. If -#> the host system is not Linux, produce an error and stop - set BLD_OS = `uname -s` - if ($BLD_OS != 'Linux') then - echo " $BLD_OS -> wrong bldit script for host!" - exit 1 - endif - -#> If the two-way, coupled WRF-CMAQ model is being built, -#> then just generate the Makefile. Don't compile. - if ( $?build_twoway ) then - set MakeFileOnly - set ModTwoway = twoway - endif - -#> If parallel-io is selected, then make sure the multiprocessor -#> option is also set. - if ( $?build_parallel_io ) then - if ( ! $?ParOpt ) then - echo "*** ParOpt is not set: required for the build_parallel_io option" - exit 1 - endif - set PIO = ( -Dparallel_io ) - else - set PIO = "" - endif - - if ($DepMod == m3dry) then - set cpp_depmod = '-Dm3dry_opt' - else if ($DepMod == stage) then - set cpp_depmod = '-Dstage_opt' - if ( $?DDM3D_CCTM ) then - echo "*** DDM3D is not compatible with the STAGE deposition model" - exit 1 - endif - endif - -#> Set variables needed for multiprocessor and serial builds - if ( $?ParOpt ) then - #Multiprocessor system configuration - echo " Parallel; set MPI flags" - set ModStenex = STENEX/se - set ModPario = PARIO - set ModPar = par/mpi - set PARIO = ${CMAQ_MODEL}/PARIO - set STENEX = ${CMAQ_MODEL}/STENEX - # MPI_INC is set in config.cmaq - # set PIO_INC = "${IOAPI_DIR}/src/fixed_src" - set PAR = ( -Dparallel ) - set Popt = SE - set seL = se_snl - set LIB2 = "${ioapi_lib}" - set LIB3 = "${mpi_lib} ${extra_lib}" - set Str1 = (// Parallel / Include message passing definitions) - set Str2 = (include SUBST_MPI mpif.h;) - # Distribute Environment to different machines if not done automatically - if ( $?DistrEnv ) then - set PAR = ($PAR -Dcluster) - endif - else - #Serial system configuration - echo " Not Parallel; set Serial (no-op) flags" - set ModStenex = STENEX/noop - set ModPar = par/par_noop - set PARIO = "." - set STENEX = ${CMAQ_MODEL}/STENEX/noop - set MPI_INC = "." - # set PIO_INC = "." - set PAR = "" - set Popt = NOOP - set seL = sef90_noop - set LIB2 = "${ioapi_lib} ${extra_lib}" - set Str1 = - set Str2 = - endif - -#> if DDM-3D is set, add the pre-processor flag for it. - if ( $?DDM3D_CCTM ) then - set SENS = ( -Dsens ) - else - set SENS = "" - endif - -#> Build Mechanism Files and instruct build-make to look -#> in the CHEMMECH output folder for the files - if ( $?build_mech ) then - - # Note: modifying existing or creating new chemical mechanisms - # can lead to unstable or highly inaccurate representations of - # atmospheric chemical predictions when applying the EBI solvers. - # EBI solvers are highly characterized and tested before - # application. The CMAQ development team recommends using the - # generalized solvers, Rosenbrock or Gear, with user-defined - # mechanisms. - - # Because the bldit_cctm script is executing the bldit_mech - # processor, we will assume that the source location for the new - # mechanism files is in the CMAQ repo. There will also be an - # error check for overwriting an existing mechanism that can be - # disabled using the mech_clobber variable above. - setenv MECH_SRC ${CMAQ_REPO}/CCTM/src/${ModMech} - setenv TRAC_NML ${CMAQ_REPO}/CCTM/src/MECHS/trac0/Species_Table_TR_0.nml - setenv MECH_OUT ${CMAQ_REPO}/CCTM/src/${ModMech} - setenv EBI_SOLVER_OUT ${CMAQ_REPO}/CCTM/src/${ModGas} - if ( $?clobber_mech ) then - setenv CLOBBER_MECH TRUE - else - setenv CLOBBER_MECH FALSE - endif - - cd ${CMAQ_HOME}/CCTM/scripts - ./bldit_mech.csh ${compiler} ${compilerVrsn} - if ( $? != 0 ) then - echo "" - echo "bldit_mech did not finish correctly --> Build Process Halted" - exit 1 - endif - endif - -#> Tracer configuration files - set ModTrac = MECHS/$Tracer - -#> Set and create the "BLD" directory for checking out and compiling -#> source code. Move current directory to that build directory. - if ( $?Debug_CCTM ) then - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug - else - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} - endif - - - if ( ! -e "$Bld" ) then - mkdir $Bld - else - if ( ! -d "$Bld" ) then - echo " *** target exists, but not a directory ***" - exit 1 - endif - endif - cd $Bld - -#> Set locations for the include files of various modules - set ICL_PAR = $GlobInc/fixed/mpi - set ICL_CONST = $GlobInc/fixed/const - set ICL_FILES = $GlobInc/fixed/filenames - set ICL_EMCTL = $GlobInc/fixed/emctrl -#set ICL_PA = $GlobInc/procan/$PAOpt - - #Test with xlib commented out - if ( $?ParOpt ) then - set ICL_MPI = . #$xLib_Base/$xLib_3 - endif - - -#> If the source code is being copied to the build directory, -#> then move the include files as well and direct the Makefile -#> to the current directory. - if ( $?CopySrc ) then - /bin/cp -fp ${ICL_PAR}/* ${Bld} - /bin/cp -fp ${ICL_CONST}/* ${Bld} - /bin/cp -fp ${ICL_FILES}/* ${Bld} - /bin/cp -fp ${ICL_EMCTL}/* ${Bld} - #/bin/cp -fp ${ICL_PA}/* ${Bld} - if ( $?ParOpt ) then - /bin/cp -fp ${ICL_MPI}/mpif.h ${Bld} - endif - - set ICL_PAR = . - set ICL_CONST = . - set ICL_FILES = . - set ICL_EMCTL = . - #set ICL_PA = . - if ( $?ParOpt ) then - set ICL_MPI = . - endif - endif - - - set STX1 = ( -DSUBST_BARRIER=${Popt}_BARRIER\ - -DSUBST_GLOBAL_MAX=${Popt}_GLOBAL_MAX\ - -DSUBST_GLOBAL_MIN=${Popt}_GLOBAL_MIN\ - -DSUBST_GLOBAL_MIN_DATA=${Popt}_GLOBAL_MIN_DATA\ - -DSUBST_GLOBAL_TO_LOCAL_COORD=${Popt}_GLOBAL_TO_LOCAL_COORD\ - -DSUBST_GLOBAL_SUM=${Popt}_GLOBAL_SUM\ - -DSUBST_GLOBAL_LOGICAL=${Popt}_GLOBAL_LOGICAL\ - -DSUBST_GLOBAL_GATHER=${Popt}_GLOBAL_GATHER\ - -DSUBST_GLOBAL_BCAST=${Popt}_GLOBAL_BCAST\ - -DSUBST_LOOP_INDEX=${Popt}_LOOP_INDEX\ - -DSUBST_SUBGRID_INDEX=${Popt}_SUBGRID_INDEX ) - set STX2 = ( -DSUBST_HI_LO_BND_PE=${Popt}_HI_LO_BND_PE\ - -DSUBST_SUM_CHK=${Popt}_SUM_CHK\ - -DSUBST_SE_INIT=${Popt}_INIT\ - -DSUBST_INIT_ARRAY=${Popt}_INIT_ARRAY\ - -DSUBST_COMM=${Popt}_COMM\ - -DSUBST_MY_REGION=${Popt}_MY_REGION\ - -DSUBST_SLICE=${Popt}_SLICE\ - -DSUBST_GATHER=${Popt}_GATHER\ - -DSUBST_DATA_COPY=${Popt}_DATA_COPY\ - -DSUBST_IN_SYN=${Popt}_IN_SYN ) - - -#> 3-D Advection Options - if ( $ModAdv == wrf_cons ) then - set ModCpl = couple/gencoor_wrf_cons #> unit conversion and concentration coupling module - #> (see $CMAQ_MODEL/CCTM/src/couple) - set ModHadv = hadv/ppm #> horizontal advection module - set ModVadv = vadv/wrf_cons #> Vertical advection module - else if ($ModAdv == local_cons) then - set ModCpl = couple/gencoor_local_cons #> unit conversion and concentration coupling module - #> (see $CMAQ_MODEL/CCTM/src/couple) - set ModHadv = hadv/ppm #> horizontal advection module - set ModVadv = vadv/local_cons #> Vertical advection module - endif - - # Retrieve git repository sha ID for this source code version - set shaID = `git --git-dir=${CMAQ_REPO}/.git rev-parse --short=10 HEAD` - if ( $? != 0 ) then - set shaID = "not_a_repo" - endif - -# ============================================================================ -#> Create Config File -# ============================================================================ - -set Cfile = ${Bld}/${CFG}.bld # Config Filename - set quote = '"' - - echo > $Cfile - if ( $?make_options ) then - echo "make_options $quote$make_options$quote;" >> $Cfile - echo >> $Cfile - endif - echo "model $EXEC;" >> $Cfile - echo >> $Cfile - echo "repo $CCTM_SRC;" >> $Cfile - echo >> $Cfile - echo "sha_ID $shaID;" >> $Cfile - echo >> $Cfile - echo "mechanism $Mechanism;" >> $Cfile - echo >> $Cfile - echo "lib_base $CMAQ_LIB;" >> $Cfile - echo >> $Cfile - echo "lib_1 ioapi/lib;" >> $Cfile - echo >> $Cfile - echo "lib_2 ioapi/include_files;" >> $Cfile - echo >> $Cfile - if ( $?ParOpt ) then - echo "lib_3 ${quote}mpi -I.$quote;" >> $Cfile - echo >> $Cfile - endif - echo >> $Cfile - echo "lib_4 ioapi/lib;" >> $Cfile - echo >> $Cfile - set text = "$quote$CPP_FLAGS $PAR $SENS $PIO $cpp_depmod $STX1 $STX2$quote;" - echo "cpp_flags $text" >> $Cfile - echo >> $Cfile - echo "f_compiler $FC;" >> $Cfile - echo >> $Cfile - echo "fstd $quote$FSTD$quote;" >> $Cfile - echo >> $Cfile - echo "dbg $quote$DBG$quote;" >> $Cfile - echo >> $Cfile - echo "f_flags $quote$F_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "f90_flags $quote$F90_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "c_compiler $CC;" >> $Cfile - echo >> $Cfile - echo "c_flags $quote$C_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "link_flags $quote$LINK_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "ioapi $quote$LIB2$quote; " >> $Cfile - echo >> $Cfile - echo "netcdf $quote$netcdf_lib$quote;" >> $Cfile - echo >> $Cfile - echo "netcdff $quote$netcdff_lib$quote;" >> $Cfile - echo >> $Cfile - if ( $?ParOpt ) then - echo "mpich $quote$LIB3$quote;" >> $Cfile - echo >> $Cfile - endif - echo "include SUBST_PE_COMM $ICL_PAR/PE_COMM.EXT;" >> $Cfile - echo "include SUBST_CONST $ICL_CONST/CONST.EXT;" >> $Cfile - echo "include SUBST_FILES_ID $ICL_FILES/FILES_CTM.EXT;" >> $Cfile - echo "include SUBST_EMISPRM $ICL_EMCTL/EMISPRM.EXT;" >> $Cfile - echo >> $Cfile - - if ( $?ParOpt ) then - echo "$Str1" >> $Cfile - echo "include SUBST_MPI ./mpif.h;" >> $Cfile - endif - echo >> $Cfile - - set text = "stenex or se_noop" - echo "// options are" $text >> $Cfile - echo "Module ${ModStenex};" >> $Cfile - if ( $?ParOpt ) then - set text = "// parallel executable; stenex and pario included" - echo $text >> $Cfile - echo "Module ${ModPario};" >> $Cfile - else - set text = "serial executable; noop stenex" - echo $text >> $Cfile - endif - echo >> $Cfile - - set text = "par, par_nodistr and par_noop" - echo "// options are" $text >> $Cfile - if ( $?ParOpt ) then - echo "Module ${ModPar};" >> $Cfile - endif - echo >> $Cfile - - if ( $?build_twoway ) then - echo "// option set for WRF-CMAQ twoway" >> $Cfile - echo "Module ${ModTwoway};" >> $Cfile - echo >> $Cfile - endif - - set text = "driver" - echo "// options are" $text >> $Cfile - echo "Module driver;" >> $Cfile - echo >> $Cfile - - set text = "cartesian" - echo "// options are" $text >> $Cfile - echo "Module ${ModGrid};" >> $Cfile - echo >> $Cfile - - set text = "Init" - echo "// options are" $text >> $Cfile - echo "Module init;" >> $Cfile - echo >> $Cfile - - set text = "gencoor_wrf_cons and gencoor_local_cons" - echo "// options are" $text >> $Cfile - echo "Module ${ModCpl};" >> $Cfile - echo >> $Cfile - - set text = "ppm" - echo "// options are" $text >> $Cfile - echo "Module ${ModHadv};" >> $Cfile - echo >> $Cfile - - set text = "wrf_cons and local_cons" - echo "// options are" $text >> $Cfile - echo "Module ${ModVadv};" >> $Cfile - echo >> $Cfile - - set text = "multiscale" - echo "// options are" $text >> $Cfile - echo "Module ${ModHdiff};" >> $Cfile - echo >> $Cfile - - set text = "acm2_m3dry or acm2_stage" - echo "// options are" $text >> $Cfile - echo "Module ${ModVdiff};" >> $Cfile - echo >> $Cfile - - set text = "m3dry or stage" - echo "// options are" $text >> $Cfile - echo "Module ${ModDepv};" >> $Cfile - echo >> $Cfile - - set text = "emis" - echo "// options are" $text >> $Cfile - echo "Module ${ModEmis};" >> $Cfile - echo >> $Cfile - - set text = "beis4" - echo "// options are" $text >> $Cfile - echo "Module ${ModBiog};" >> $Cfile - echo >> $Cfile - - set text = "megan3" - echo "// options are" $text >> $Cfile - echo "Module ${ModMegBiog};" >> $Cfile - echo - - set text = "smoke" - echo "// options are" $text >> $Cfile - echo "Module ${ModPlmrs};" >> $Cfile - echo >> $Cfile - - set text = "cgrid_spcs_nml and cgrid_spcs_icl" - echo "// options are" $text >> $Cfile - echo "Module ${ModCgrds};" >> $Cfile - echo >> $Cfile - - set text = "inline and table" - echo "// options are" $text >> $Cfile - echo "Module ${ModPhot};" >> $Cfile - echo >> $Cfile - - set text = "degrade" - echo "// reactive_tracer options are" $text >> $Cfile - echo "Module ${ModDegrade};" >> $Cfile - echo >> $Cfile - - set text = "gas chemistry solvers" - echo "// " $text >> $Cfile - set text = "smvgear, ros3, and ebi; see 'gas chemistry mechanisms' for " - echo "// options are" $text >> $Cfile - echo "Module ${ModGas};" >> $Cfile - echo >> $Cfile - - set MechList = "cb6r5hap_ae7_aq, cb6r3_ae7_aq, cb6r5_ae7_aq, cb6r5_ae7_aqkmt2, cb6r5m_ae7_aq, racm2_ae6_aq, saprc07tc_ae6_aq, saprc07tic_ae7i_aq, saprc07tic_ae7i_aqkmt2" - - set text = "gas chemistry mechanisms" - echo "// " $text >> $Cfile - set text = "$MechList" - echo "// options are" $text >> $Cfile - echo "Module ${ModMech};" >> $Cfile - echo >> $Cfile - - set text = "tracer modules" - echo "// " $text >> $Cfile - echo "// options are trac0, trac1" >> $Cfile - echo "Module ${ModTrac};" >> $Cfile - echo - - set text = "use potential vorticity free-troposphere O3 scaling" - echo "// options are" $text >> $Cfile - echo "Module ${ModPvO3};" >> $Cfile - echo >> $Cfile - - set text = "aero6" - echo "// options are" $text >> $Cfile - echo "Module ${ModAero};" >> $Cfile - echo >> $Cfile - - set text = "acm_ae6, acm_ae6_kmt, acm_ae7_kmt2, acm_ae6_mp, acm_ae7" - echo "// options are" $text >> $Cfile - echo "Module ${ModCloud};" >> $Cfile - echo >> $Cfile - - set text = "// compile for inline process analysis" - echo $text >> $Cfile - echo "Module ${ModPa};" >> $Cfile - echo >> $Cfile - - set text = "// compile for integrated source apportionment method" - echo $text >> $Cfile - echo "Module ${ModISAM};" >> $Cfile - echo >> $Cfile - - if ( $?DDM3D_CCTM ) then - set text = "// compile for decoupled direct method in 3d" - echo $text >> $Cfile - echo "Module ${ModDDM3D};" >> $Cfile - echo >> $Cfile - endif - - set text = "util" - echo "// options are" $text >> $Cfile - echo "Module ${ModUtil};" >> $Cfile - echo >> $Cfile - - set text = "diag" - echo "// options are" $text >> $Cfile - echo "Module ${ModDiag};" >> $Cfile - echo >> $Cfile - - set text = "stm" - echo "// options are" $text >> $Cfile - echo "Module stm;" >> $Cfile - echo >> $Cfile - - set text = "cio" - echo "// options are" $text >> $Cfile - echo "Module cio;" >> $Cfile - echo >> $Cfile - - if ( $?ModMisc ) then - echo "Module ${ModMisc};" >> $Cfile - echo >> $Cfile - endif - -# ============================================================================ -#> Create Makefile and Model Executable -# ============================================================================ - unalias mv rm - -#> Recompile BLDMAKE from source if requested or if it does not exist - if ( $?CompileBLDMAKE || ! -f $BLDER ) then - cd ${CMAQ_REPO}/UTIL/bldmake/scripts - ./bldit_bldmake.csh - endif - -#> Relocate to the BLD_* directory - cd $Bld - -#> Set multiprocessor/serial options for BLDMAKE execution - if ( $?ParOpt ) then - set Blder = "$BLDER -verbose" - else - set Blder = "$BLDER -serial -verbose" - endif - -#> Run BLDMAKE Utility - set bld_flags = "" - if ( $?MakeFileOnly ) then # Do not compile the Model - set bld_flags = "${bld_flags} -makefo" - endif - - if ( $?CopySrc ) then - set bld_flags = "${bld_flags}" - else if ( $?CopySrcTree ) then - set bld_flags = "${bld_flags} -co" - else - set bld_flags = "{bld_flags} -git_local" # Run BLDMAKE with source code in - # version-controlled git repo - # $Cfile = ${CFG}.bld - endif - - if ( $?Debug_CCTM ) then - set bld_flags = "${bld_flags} -debug_cctm" - endif - - if ( $?ISAM_CCTM ) then - set bld_flags = "${bld_flags} -isam_cctm" - endif - - if ( $?build_twoway ) then - set bld_flags = "${bld_flags} -twoway" - endif - -#> Run BLDMAKE with source code in build directory - $Blder $bld_flags $Cfile - -#> Rename Makefile to specify compiler option and link back to Makefile - if ( ! $?build_twoway ) then - mv Makefile Makefile.$compilerString - if ( -e Makefile.$compilerString && -e Makefile ) rm Makefile - ln -s Makefile.$compilerString Makefile - endif - -#> Alert user of error in BLDMAKE if it ocurred - if ( $status != 0 ) then - echo " *** failure in $Blder ***" - exit 1 - endif - -#> Preserve old Config file, if it exists, before moving new one to -#> build directory. - if ( -e "$Bld/${CFG}" ) then - echo " >>> previous ${CFG} exists, re-naming to ${CFG}.old <<<" - mv $Bld/${CFG} $Bld/${CFG}.old - endif - mv ${CFG}.bld $Bld/${CFG} - -#> If a CRACMM mechanism is used and the compiler is gcc, remove trailing -#> comments in species namelist files (or else model will not run) - if ( ${Mechanism} =~ *cracmm* && ${compiler} == gcc ) then - echo " >>> removing trailing comments from species namelists <<<" - sed -i 's/,\!.*/,/' $Bld/GC_${Mechanism}.nml - sed -i 's/,\!.*/,/' $Bld/AE_${Mechanism}.nml - sed -i 's/,\!.*/,/' $Bld/NR_${Mechanism}.nml - endif - -#> If Building WRF-CMAQ, download WRF, download auxillary files and build -#> model - if ( $?build_twoway ) then - -#> Check if the user has git installed on their system - git --version >& /dev/null - - if ($? == 0) then - set git_check - endif - - if ($?git_check) then - - cd $CMAQ_HOME/CCTM/scripts - - # Downlad WRF repository from GitHub and put CMAQv5.5 into it - set WRF_BLD = BLD_WRF${WRF_VRSN}_CCTM_${VRSN}_${compilerString} - setenv wrf_path ${CMAQ_HOME}/CCTM/scripts/${WRF_BLD} - setenv WRF_CMAQ 1 - - if ( ! -d $WRF_BLD ) then - git clone --branch ${WRF_VRSN} https://github.com/wrf-model/WRF.git ./$WRF_BLD >& /dev/null - cd $wrf_path - mv $Bld ./cmaq - - # Configure WRF - ./configure <&! bldit.cctm.log -# Requirements: I/O API & netCDF libraries, a Fortran compiler, -# and MPI for multiprocessor computing -# -# To report problems or request help with this script/program: -# http://www.cmascenter.org -# ======================================================================= - -#> Set Compiler Identity by User Input: Options -> intel | pgi | gcc - if ( $#argv == 1 ) then - setenv compiler $argv[1] - setenv compilerVrsn Empty - else if ( $#argv == 2 ) then - #> Compiler Name and Version have been provided - setenv compiler $1 - setenv compilerVrsn $2 - else - echo "usage: $0 " - echo " where is intel, pgi or gcc" - exit(2) - endif - -#> Source the config.cmaq file to set the build environment - cd ../.. - source ./config_cmaq.csh - - set echo - -# ======================================================================= -#> Begin User Input Section -# ======================================================================= - -#> Source Code Locations - setenv CCTM_SRC ${CMAQ_REPO}/CCTM/src #> location of the CCTM source code - set GlobInc = $CCTM_SRC/ICL #> location of the global include files - set Mechs = $CCTM_SRC/MECHS #> location of the chemistry mechanism include files - setenv REPOROOT $CCTM_SRC - -#> Controls for managing the source code and MPI compilation -set CompileBLDMAKE #> Recompile the BLDMAKE utility from source - #> comment out to use an existing BLDMAKE executable -set CopySrc #> copy the source files into the build directory -#set CopySrcTree #> copy the source files and directory tree into the build directory -#set MakeFileOnly #> uncomment to build a Makefile, but do not compile; - #> comment out to compile the model (default if not set) -#set build_mech #> uncomment to build mechanism source code files using the - #> chemmech utility. - -#> Below are chemmech options for revising the mechanism definitions file. The option needs information on the -#> composition of each chemistry. See UTIL/chemmech/README.md for more information. -#> Uncomment to use. -#> Rewrite reactions by appending them with changes in tracked atoms or elements from reactants to products - #setenv COMPUTE_DELTA_ATOMS F -#> The species namelist contains the composition information as comments at the end of lines defining species. -#> Note that if a defining line does not have an ending comment, the species is taken to have none of the tacked atoms. -#> If NAMELISTS_LIST_ATOMS equals F, an additional ASCII file contains the information. - #setenv NAMELISTS_LIST_ATOMS T - -#set clobber_mech #> when commented, the bldit_mech.csh script will halt if - #> newly created mechanism files are attempting replace - #> existing ones. When uncommented, the existing files - #> will be overwritten. -set ParOpt #> uncomment to build a multiple processor (MPI) executable; - #> comment out for a single processor (serial) executable -#set DistrEnv #> uncomment to distribute environmental variables to multiple machines - #> comment out for a single processor (serial) executable (MPI only) -#set build_parallel_io #> uncomment to build with parallel I/O (pnetcdf); - #> comment out to use standard netCDF I/O -#set Debug_CCTM #> uncomment to compile CCTM with debug option equal to TRUE - #> comment out to use standard, optimized compile process -set make_options = "-j" #> additional options for make command if MakeFileOnly is not set - #> comment out if no additional options are wanted. - -#> Integrated Source Apportionment Method (ISAM) -#set ISAM_CCTM #> uncomment to compile CCTM with ISAM activated - #> comment out to use standard process - -#set DDM3D_CCTM #> uncomment to compile CCTM with DD3D activated - #> comment out to use standard process -#> Two-way WRF-CMAQ -#set build_twoway #> uncomment to build WRF-CMAQ twoway; - #> comment out for off-line chemistry - -#> Working directory and Version IDs - if ( $?ISAM_CCTM ) then - set VRSN = v55_ISAM #> model configuration ID for CMAQ_ISAM - else if ( $?DDM3D_CCTM ) then - set VRSN = v55_DDM3D #> model configuration ID for CMAQ_DDM - else - set VRSN = v55 #> model configuration ID for CMAQ - endif - - set EXEC = CCTM_${VRSN}.exe #> executable name - set CFG = CCTM_${VRSN}.cfg #> configuration file name - - if ( $?build_twoway ) then # WRF Version used for WRF-CMAQ Model (must be v4.4+) - set WRF_VRSN = v4.4 - endif - -#======================================================================== -#> CCTM Science Modules -#======================================================================== -#> NOTE: For the modules with multiple options, a note is -#> provided on where to look in the CCTM source code -#> archive for a list of the possible settings. Users -#> may also refer to the CMAQ documentation. - - set ModGrid = grid/cartesian #> grid configuration module - - # set DepMod = m3dry #> m3dry or stage - set DepMod = stage - set ModAdv = wrf_cons #> 3-D Advection Scheme [Options: wrf_cons (default), local_cons] - set ModHdiff = hdiff/multiscale #> horizontal diffusion module - set ModVdiff = vdiff/acm2_${DepMod} #> vertical diffusion module (see $CMAQ_MODEL/CCTM/src/vdiff) - set ModDepv = depv/${DepMod} #> deposition velocity calculation module - #> (see $CMAQ_MODEL/CCTM/src/depv) - set ModEmis = emis/emis #> in-line emissions module - set ModBiog = biog/beis4 #> BEIS4 in-line emissions module - - set ModMegBiog = biog/megan3 #> MEGAN3 in-line emissions module - - set ModPlmrs = plrise/smoke #> in-line emissions plume rise - set ModCgrds = spcs/cgrid_spcs_nml #> chemistry species configuration module - #> (see $CMAQ_MODEL/CCTM/src/spcs) - set ModPhot = phot/inline #> photolysis calculation module - #> (see $CMAQ_MODEL/CCTM/src/phot) - - setenv Mechanism cracmm2 #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) - set ModMech = MECHS/${Mechanism} - - if ( ${Mechanism} =~ *ae7* ) then #> ae7 family of aero and cloud chem - set ModAero = aero/aero7 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) - set ModCloud = cloud/acm_ae7 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) - else if ( ${Mechanism} =~ *ae6* ) then #> ae6 family of aero and cloud chem - set ModAero = aero/aero6 # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) - set ModCloud = cloud/acm_ae6 # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) - else if ( ${Mechanism} =~ *cracmm* ) then #> CRACMM family of aero and cloud chem - set ModAero = aero/cracmm # > aerosol chemistry module (see $CMAQ_MODEL/CCTM/src/aero) - set ModCloud = cloud/acm_cracmm # > cloud chemistry module (see $CMAQ_MODEL/CCTM/src/cloud) - endif - - # Special cloud modules for kmt versions - if( ${Mechanism} == cb6r5_ae7_aqkmt2 ) then - set ModCloud = cloud/acm_ae7_kmt2 - else if( ${Mechanism} == saprc07tic_ae7i_aqkmt2 ) then - set ModCloud = cloud/acm_ae7_kmt2 - endif - - # Gas chem solver - if ( ${Mechanism} == cb6r5m_ae7_aq ) then #> Gas-phase chemistry solver options ($CMAQ_MODEL/CCTM/src/gas) - setenv ChemSolver ros3 #> ros3 (or smvgear) are system independent - else - setenv ChemSolver ebi #> [ default for most mechanisms: ebi ] - endif - - if ( $ChemSolver == ebi ) then - set ModGas = gas/${ChemSolver}_${Mechanism} - - else - set ModGas = gas/${ChemSolver} - endif - - set ModUtil = util/util #> CCTM utility modules - set ModDiag = diag #> CCTM diagnostic modules - set Tracer = trac0 #> tracer configuration directory under - #> $CMAQ_MODEL/CCTM/src/MECHS [ default: no tracer species ] - set ModPa = procan/pa #> CCTM process analysis - set ModPvO3 = pv_o3 #> potential vorticity from the free troposphere - set ModISAM = isam #> CCTM Integrated Source Apportionment Method - set ModDDM3D = ddm3d #> Decoupled Direct Method in 3D - set ModDegrade = reactive_tracers #> Linear Chemical Loss for a fixed set of species treated as reactive tracers - -#============================================================================================ -#> Computing System Configuration: -#> Most of these settings are done in config.cmaq -#============================================================================================ - - setenv FC ${myFC} #> path of Fortan compiler; set in config.cmaq - set FP = $FC #> path of Fortan preprocessor; set in config.cmaq - set CC = ${myCC} #> path of C compiler; set in config.cmaq - setenv BLDER ${CMAQ_HOME}/UTIL/bldmake/bldmake_${compilerString}.exe #> name of model builder executable - -#> Libraries/include files -#set LIOAPI = "${IOAPI_DIR}/lib ${ioapi_lib}" #> I/O API library directory -#set IOAPIMOD = "${IOAPI_DIR}/include" #> I/O API module directory - set NETCDF = "${NETCDF_DIR}/lib ${netcdf_lib}" #> netCDF C library directory - set NETCDFF = "${NETCDFF_DIR}/lib ${netcdff_lib}" #> netCDF Fortran library directory - set PNETCDF = "${PNETCDF_DIR}/lib ${pnetcdf_lib}" #> Parallel netCDF library directory -#set PIO_INC = "${IOAPI_DIR}/src" - -#> Compiler flags set in config.cmaq - set FSTD = "${myFSTD}" - set DBG = "${myDBG}" - setenv F_FLAGS "${myFFLAGS}" #> F77 flags - set F90_FLAGS = "${myFRFLAGS}" #> F90 flags - set CPP_FLAGS = "" #> Fortran preprocessor flags - set C_FLAGS = "${myCFLAGS} -DFLDMN -I" #> C flags - set LINK_FLAGS = "${myLINK_FLAG}" # Link flags - - -#============================================================================================ -#> Implement User Input -#============================================================================================ - -#> Check for CMAQ_REPO and CMAQ_LIB settings: - if ( ! -e $CMAQ_REPO || ! -e $CMAQ_LIB ) then - echo " $CMAQ_REPO or $CMAQ_LIB directory not found" - exit 1 - endif - echo " Model repository base path: $CMAQ_REPO" - echo " library path: $CMAQ_LIB" - -#> If $CMAQ_MODEL is not set, default to $CMAQ_REPO - if ( $?CMAQ_MODEL ) then - echo " Model repository path: $CMAQ_MODEL" - else - setenv CMAQ_MODEL $CMAQ_REPO - echo " default Model repository path: $CMAQ_MODEL" - endif - -#> This script was written for Linux hosts only. If -#> the host system is not Linux, produce an error and stop - set BLD_OS = `uname -s` - if ($BLD_OS != 'Linux') then - echo " $BLD_OS -> wrong bldit script for host!" - exit 1 - endif - -#> If the two-way, coupled WRF-CMAQ model is being built, -#> then just generate the Makefile. Don't compile. - if ( $?build_twoway ) then - set MakeFileOnly - set ModTwoway = twoway - endif - -#> If parallel-io is selected, then make sure the multiprocessor -#> option is also set. - if ( $?build_parallel_io ) then - if ( ! $?ParOpt ) then - echo "*** ParOpt is not set: required for the build_parallel_io option" - exit 1 - endif - set PIO = ( -Dparallel_io ) - else - set PIO = "" - endif - - if ($DepMod == m3dry) then - set cpp_depmod = '-Dm3dry_opt' - else if ($DepMod == stage) then - set cpp_depmod = '-Dstage_opt' - endif - -#> Set variables needed for multiprocessor and serial builds - if ( $?ParOpt ) then - #Multiprocessor system configuration - echo " Parallel; set MPI flags" - set ModStenex = STENEX/se - set ModPario = PARIO - set ModPar = par/mpi - set PARIO = ${CMAQ_MODEL}/PARIO - set STENEX = ${CMAQ_MODEL}/STENEX - # MPI_INC is set in config.cmaq - # set PIO_INC = "${IOAPI_DIR}/src/fixed_src" - set PAR = ( -Dparallel ) - set Popt = SE - set seL = se_snl - set LIB2 = "${ioapi_lib}" - set LIB3 = "${mpi_lib} ${extra_lib}" - set Str1 = (// Parallel / Include message passing definitions) - set Str2 = (include SUBST_MPI mpif.h;) - # Distribute Environment to different machines if not done automatically - if ( $?DistrEnv ) then - set PAR = ($PAR -Dcluster) - endif - else - #Serial system configuration - echo " Not Parallel; set Serial (no-op) flags" - set ModStenex = STENEX/noop - set ModPar = par/par_noop - set PARIO = "." - set STENEX = ${CMAQ_MODEL}/STENEX/noop - set MPI_INC = "." - # set PIO_INC = "." - set PAR = "" - set Popt = NOOP - set seL = sef90_noop - set LIB2 = "${ioapi_lib} ${extra_lib}" - set Str1 = - set Str2 = - endif - -#> if DDM-3D is set, add the pre-processor flag for it. - if ( $?DDM3D_CCTM ) then - set SENS = ( -Dsens ) - else - set SENS = "" - endif - -#> Build Mechanism Files and instruct build-make to look -#> in the CHEMMECH output folder for the files - if ( $?build_mech ) then - - # Note: modifying existing or creating new chemical mechanisms - # can lead to unstable or highly inaccurate representations of - # atmospheric chemical predictions when applying the EBI solvers. - # EBI solvers are highly characterized and tested before - # application. The CMAQ development team recommends using the - # generalized solvers, Rosenbrock or Gear, with user-defined - # mechanisms. - - # Because the bldit_cctm script is executing the bldit_mech - # processor, we will assume that the source location for the new - # mechanism files is in the CMAQ repo. There will also be an - # error check for overwriting an existing mechanism that can be - # disabled using the mech_clobber variable above. - setenv MECH_SRC ${CMAQ_REPO}/CCTM/src/${ModMech} - setenv TRAC_NML ${CMAQ_REPO}/CCTM/src/MECHS/trac0/Species_Table_TR_0.nml - setenv MECH_OUT ${CMAQ_REPO}/CCTM/src/${ModMech} - setenv EBI_SOLVER_OUT ${CMAQ_REPO}/CCTM/src/${ModGas} - if ( $?clobber_mech ) then - setenv CLOBBER_MECH TRUE - else - setenv CLOBBER_MECH FALSE - endif - - cd ${CMAQ_HOME}/CCTM/scripts - ./bldit_mech.csh ${compiler} ${compilerVrsn} - if ( $? != 0 ) then - echo "" - echo "bldit_mech did not finish correctly --> Build Process Halted" - exit 1 - endif - endif - -#> Tracer configuration files - set ModTrac = MECHS/$Tracer - -#> Set and create the "BLD" directory for checking out and compiling -#> source code. Move current directory to that build directory. - if ( $?Debug_CCTM ) then - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug - else - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} - endif - - - if ( ! -e "$Bld" ) then - mkdir $Bld - else - if ( ! -d "$Bld" ) then - echo " *** target exists, but not a directory ***" - exit 1 - endif - endif - cd $Bld - -#> Set locations for the include files of various modules - set ICL_PAR = $GlobInc/fixed/mpi - set ICL_CONST = $GlobInc/fixed/const - set ICL_FILES = $GlobInc/fixed/filenames - set ICL_EMCTL = $GlobInc/fixed/emctrl -#set ICL_PA = $GlobInc/procan/$PAOpt - - #Test with xlib commented out - if ( $?ParOpt ) then - set ICL_MPI = . #$xLib_Base/$xLib_3 - endif - - -#> If the source code is being copied to the build directory, -#> then move the include files as well and direct the Makefile -#> to the current directory. - if ( $?CopySrc ) then - /bin/cp -fp ${ICL_PAR}/* ${Bld} - /bin/cp -fp ${ICL_CONST}/* ${Bld} - /bin/cp -fp ${ICL_FILES}/* ${Bld} - /bin/cp -fp ${ICL_EMCTL}/* ${Bld} - #/bin/cp -fp ${ICL_PA}/* ${Bld} - if ( $?ParOpt ) then - /bin/cp -fp ${ICL_MPI}/mpif.h ${Bld} - endif - - set ICL_PAR = . - set ICL_CONST = . - set ICL_FILES = . - set ICL_EMCTL = . - #set ICL_PA = . - if ( $?ParOpt ) then - set ICL_MPI = . - endif - endif - - - set STX1 = ( -DSUBST_BARRIER=${Popt}_BARRIER\ - -DSUBST_GLOBAL_MAX=${Popt}_GLOBAL_MAX\ - -DSUBST_GLOBAL_MIN=${Popt}_GLOBAL_MIN\ - -DSUBST_GLOBAL_MIN_DATA=${Popt}_GLOBAL_MIN_DATA\ - -DSUBST_GLOBAL_TO_LOCAL_COORD=${Popt}_GLOBAL_TO_LOCAL_COORD\ - -DSUBST_GLOBAL_SUM=${Popt}_GLOBAL_SUM\ - -DSUBST_GLOBAL_LOGICAL=${Popt}_GLOBAL_LOGICAL\ - -DSUBST_GLOBAL_GATHER=${Popt}_GLOBAL_GATHER\ - -DSUBST_GLOBAL_BCAST=${Popt}_GLOBAL_BCAST\ - -DSUBST_LOOP_INDEX=${Popt}_LOOP_INDEX\ - -DSUBST_SUBGRID_INDEX=${Popt}_SUBGRID_INDEX ) - set STX2 = ( -DSUBST_HI_LO_BND_PE=${Popt}_HI_LO_BND_PE\ - -DSUBST_SUM_CHK=${Popt}_SUM_CHK\ - -DSUBST_SE_INIT=${Popt}_INIT\ - -DSUBST_INIT_ARRAY=${Popt}_INIT_ARRAY\ - -DSUBST_COMM=${Popt}_COMM\ - -DSUBST_MY_REGION=${Popt}_MY_REGION\ - -DSUBST_SLICE=${Popt}_SLICE\ - -DSUBST_GATHER=${Popt}_GATHER\ - -DSUBST_DATA_COPY=${Popt}_DATA_COPY\ - -DSUBST_IN_SYN=${Popt}_IN_SYN ) - - -#> 3-D Advection Options - if ( $ModAdv == wrf_cons ) then - set ModCpl = couple/gencoor_wrf_cons #> unit conversion and concentration coupling module - #> (see $CMAQ_MODEL/CCTM/src/couple) - set ModHadv = hadv/ppm #> horizontal advection module - set ModVadv = vadv/wrf_cons #> Vertical advection module - else if ($ModAdv == local_cons) then - set ModCpl = couple/gencoor_local_cons #> unit conversion and concentration coupling module - #> (see $CMAQ_MODEL/CCTM/src/couple) - set ModHadv = hadv/ppm #> horizontal advection module - set ModVadv = vadv/local_cons #> Vertical advection module - endif - - # Retrieve git repository sha ID for this source code version - set shaID = `git --git-dir=${CMAQ_REPO}/.git rev-parse --short=10 HEAD` - if ( $? != 0 ) then - set shaID = "not_a_repo" - endif - -# ============================================================================ -#> Create Config File -# ============================================================================ - -set Cfile = ${Bld}/${CFG}.bld # Config Filename - set quote = '"' - - echo > $Cfile - if ( $?make_options ) then - echo "make_options $quote$make_options$quote;" >> $Cfile - echo >> $Cfile - endif - echo "model $EXEC;" >> $Cfile - echo >> $Cfile - echo "repo $CCTM_SRC;" >> $Cfile - echo >> $Cfile - echo "sha_ID $shaID;" >> $Cfile - echo >> $Cfile - echo "mechanism $Mechanism;" >> $Cfile - echo >> $Cfile - echo "lib_base $CMAQ_LIB;" >> $Cfile - echo >> $Cfile - echo "lib_1 ioapi/lib;" >> $Cfile - echo >> $Cfile - echo "lib_2 ioapi/include_files;" >> $Cfile - echo >> $Cfile - if ( $?ParOpt ) then - echo "lib_3 ${quote}mpi -I.$quote;" >> $Cfile - echo >> $Cfile - endif - echo >> $Cfile - echo "lib_4 ioapi/lib;" >> $Cfile - echo >> $Cfile - set text = "$quote$CPP_FLAGS $PAR $SENS $PIO $cpp_depmod $STX1 $STX2$quote;" - echo "cpp_flags $text" >> $Cfile - echo >> $Cfile - echo "f_compiler $FC;" >> $Cfile - echo >> $Cfile - echo "fstd $quote$FSTD$quote;" >> $Cfile - echo >> $Cfile - echo "dbg $quote$DBG$quote;" >> $Cfile - echo >> $Cfile - echo "f_flags $quote$F_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "f90_flags $quote$F90_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "c_compiler $CC;" >> $Cfile - echo >> $Cfile - echo "c_flags $quote$C_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "link_flags $quote$LINK_FLAGS$quote;" >> $Cfile - echo >> $Cfile - echo "ioapi $quote$LIB2$quote; " >> $Cfile - echo >> $Cfile - echo "netcdf $quote$netcdf_lib$quote;" >> $Cfile - echo >> $Cfile - echo "netcdff $quote$netcdff_lib$quote;" >> $Cfile - echo >> $Cfile - if ( $?ParOpt ) then - echo "mpich $quote$LIB3$quote;" >> $Cfile - echo >> $Cfile - endif - echo "include SUBST_PE_COMM $ICL_PAR/PE_COMM.EXT;" >> $Cfile - echo "include SUBST_CONST $ICL_CONST/CONST.EXT;" >> $Cfile - echo "include SUBST_FILES_ID $ICL_FILES/FILES_CTM.EXT;" >> $Cfile - echo "include SUBST_EMISPRM $ICL_EMCTL/EMISPRM.EXT;" >> $Cfile - echo >> $Cfile - - if ( $?ParOpt ) then - echo "$Str1" >> $Cfile - echo "include SUBST_MPI ./mpif.h;" >> $Cfile - endif - echo >> $Cfile - - set text = "stenex or se_noop" - echo "// options are" $text >> $Cfile - echo "Module ${ModStenex};" >> $Cfile - if ( $?ParOpt ) then - set text = "// parallel executable; stenex and pario included" - echo $text >> $Cfile - echo "Module ${ModPario};" >> $Cfile - else - set text = "serial executable; noop stenex" - echo $text >> $Cfile - endif - echo >> $Cfile - - set text = "par, par_nodistr and par_noop" - echo "// options are" $text >> $Cfile - if ( $?ParOpt ) then - echo "Module ${ModPar};" >> $Cfile - endif - echo >> $Cfile - - if ( $?build_twoway ) then - echo "// option set for WRF-CMAQ twoway" >> $Cfile - echo "Module ${ModTwoway};" >> $Cfile - echo >> $Cfile - endif - - set text = "driver" - echo "// options are" $text >> $Cfile - echo "Module driver;" >> $Cfile - echo >> $Cfile - - set text = "cartesian" - echo "// options are" $text >> $Cfile - echo "Module ${ModGrid};" >> $Cfile - echo >> $Cfile - - set text = "Init" - echo "// options are" $text >> $Cfile - echo "Module init;" >> $Cfile - echo >> $Cfile - - set text = "gencoor_wrf_cons and gencoor_local_cons" - echo "// options are" $text >> $Cfile - echo "Module ${ModCpl};" >> $Cfile - echo >> $Cfile - - set text = "ppm" - echo "// options are" $text >> $Cfile - echo "Module ${ModHadv};" >> $Cfile - echo >> $Cfile - - set text = "wrf_cons and local_cons" - echo "// options are" $text >> $Cfile - echo "Module ${ModVadv};" >> $Cfile - echo >> $Cfile - - set text = "multiscale" - echo "// options are" $text >> $Cfile - echo "Module ${ModHdiff};" >> $Cfile - echo >> $Cfile - - set text = "acm2_m3dry or acm2_stage" - echo "// options are" $text >> $Cfile - echo "Module ${ModVdiff};" >> $Cfile - echo >> $Cfile - - set text = "m3dry or stage" - echo "// options are" $text >> $Cfile - echo "Module ${ModDepv};" >> $Cfile - echo >> $Cfile - - set text = "emis" - echo "// options are" $text >> $Cfile - echo "Module ${ModEmis};" >> $Cfile - echo >> $Cfile - - set text = "beis4" - echo "// options are" $text >> $Cfile - echo "Module ${ModBiog};" >> $Cfile - echo >> $Cfile - - set text = "megan3" - echo "// options are" $text >> $Cfile - echo "Module ${ModMegBiog};" >> $Cfile - echo - - set text = "smoke" - echo "// options are" $text >> $Cfile - echo "Module ${ModPlmrs};" >> $Cfile - echo >> $Cfile - - set text = "cgrid_spcs_nml and cgrid_spcs_icl" - echo "// options are" $text >> $Cfile - echo "Module ${ModCgrds};" >> $Cfile - echo >> $Cfile - - set text = "inline and table" - echo "// options are" $text >> $Cfile - echo "Module ${ModPhot};" >> $Cfile - echo >> $Cfile - - set text = "degrade" - echo "// reactive_tracer options are" $text >> $Cfile - echo "Module ${ModDegrade};" >> $Cfile - echo >> $Cfile - - set text = "gas chemistry solvers" - echo "// " $text >> $Cfile - set text = "smvgear, ros3, and ebi; see 'gas chemistry mechanisms' for " - echo "// options are" $text >> $Cfile - echo "Module ${ModGas};" >> $Cfile - echo >> $Cfile - - set MechList = "cb6r5hap_ae7_aq, cb6r3_ae7_aq, cb6r5_ae7_aq, cb6r5_ae7_aqkmt2, cb6r5m_ae7_aq, racm2_ae6_aq, saprc07tc_ae6_aq, saprc07tic_ae7i_aq, saprc07tic_ae7i_aqkmt2" - - set text = "gas chemistry mechanisms" - echo "// " $text >> $Cfile - set text = "$MechList" - echo "// options are" $text >> $Cfile - echo "Module ${ModMech};" >> $Cfile - echo >> $Cfile - - set text = "tracer modules" - echo "// " $text >> $Cfile - echo "// options are trac0, trac1" >> $Cfile - echo "Module ${ModTrac};" >> $Cfile - echo - - set text = "use potential vorticity free-troposphere O3 scaling" - echo "// options are" $text >> $Cfile - echo "Module ${ModPvO3};" >> $Cfile - echo >> $Cfile - - set text = "aero6" - echo "// options are" $text >> $Cfile - echo "Module ${ModAero};" >> $Cfile - echo >> $Cfile - - set text = "acm_ae6, acm_ae6_kmt, acm_ae7_kmt2, acm_ae6_mp, acm_ae7" - echo "// options are" $text >> $Cfile - echo "Module ${ModCloud};" >> $Cfile - echo >> $Cfile - - set text = "// compile for inline process analysis" - echo $text >> $Cfile - echo "Module ${ModPa};" >> $Cfile - echo >> $Cfile - - set text = "// compile for integrated source apportionment method" - echo $text >> $Cfile - echo "Module ${ModISAM};" >> $Cfile - echo >> $Cfile - - if ( $?DDM3D_CCTM ) then - set text = "// compile for decoupled direct method in 3d" - echo $text >> $Cfile - echo "Module ${ModDDM3D};" >> $Cfile - echo >> $Cfile - endif - - set text = "util" - echo "// options are" $text >> $Cfile - echo "Module ${ModUtil};" >> $Cfile - echo >> $Cfile - - set text = "diag" - echo "// options are" $text >> $Cfile - echo "Module ${ModDiag};" >> $Cfile - echo >> $Cfile - - set text = "stm" - echo "// options are" $text >> $Cfile - echo "Module stm;" >> $Cfile - echo >> $Cfile - - set text = "cio" - echo "// options are" $text >> $Cfile - echo "Module cio;" >> $Cfile - echo >> $Cfile - - if ( $?ModMisc ) then - echo "Module ${ModMisc};" >> $Cfile - echo >> $Cfile - endif - -# ============================================================================ -#> Create Makefile and Model Executable -# ============================================================================ - unalias mv rm - -#> Recompile BLDMAKE from source if requested or if it does not exist - if ( $?CompileBLDMAKE || ! -f $BLDER ) then - cd ${CMAQ_REPO}/UTIL/bldmake/scripts - ./bldit_bldmake.csh - endif - -#> Relocate to the BLD_* directory - cd $Bld - -#> Set multiprocessor/serial options for BLDMAKE execution - if ( $?ParOpt ) then - set Blder = "$BLDER -verbose" - else - set Blder = "$BLDER -serial -verbose" - endif - -#> Run BLDMAKE Utility - set bld_flags = "" - if ( $?MakeFileOnly ) then # Do not compile the Model - set bld_flags = "${bld_flags} -makefo" - endif - - if ( $?CopySrc ) then - set bld_flags = "${bld_flags}" - else if ( $?CopySrcTree ) then - set bld_flags = "${bld_flags} -co" - else - set bld_flags = "{bld_flags} -git_local" # Run BLDMAKE with source code in - # version-controlled git repo - # $Cfile = ${CFG}.bld - endif - - if ( $?Debug_CCTM ) then - set bld_flags = "${bld_flags} -debug_cctm" - endif - - if ( $?ISAM_CCTM ) then - set bld_flags = "${bld_flags} -isam_cctm" - endif - - if ( $?build_twoway ) then - set bld_flags = "${bld_flags} -twoway" - endif - -#> Run BLDMAKE with source code in build directory - $Blder $bld_flags $Cfile - -#> Rename Makefile to specify compiler option and link back to Makefile - if ( ! $?build_twoway ) then - mv Makefile Makefile.$compilerString - if ( -e Makefile.$compilerString && -e Makefile ) rm Makefile - ln -s Makefile.$compilerString Makefile - endif - -#> Alert user of error in BLDMAKE if it ocurred - if ( $status != 0 ) then - echo " *** failure in $Blder ***" - exit 1 - endif - -#> Preserve old Config file, if it exists, before moving new one to -#> build directory. - if ( -e "$Bld/${CFG}" ) then - echo " >>> previous ${CFG} exists, re-naming to ${CFG}.old <<<" - mv $Bld/${CFG} $Bld/${CFG}.old - endif - mv ${CFG}.bld $Bld/${CFG} - -#> If a CRACMM mechanism is used and the compiler is gcc, remove trailing -#> comments in species namelist files (or else model will not run) - if ( ${Mechanism} =~ *cracmm* && ${compiler} == gcc ) then - echo " >>> removing trailing comments from species namelists <<<" - sed -i 's/,\!.*/,/' $Bld/GC_${Mechanism}.nml - sed -i 's/,\!.*/,/' $Bld/AE_${Mechanism}.nml - sed -i 's/,\!.*/,/' $Bld/NR_${Mechanism}.nml - endif - -#> If Building WRF-CMAQ, download WRF, download auxillary files and build -#> model - if ( $?build_twoway ) then - -#> Check if the user has git installed on their system - git --version >& /dev/null - - if ($? == 0) then - set git_check - endif - - if ($?git_check) then - - cd $CMAQ_HOME/CCTM/scripts - - # Downlad WRF repository from GitHub and put CMAQv5.4 into it - set WRF_BLD = BLD_WRF${WRF_VRSN}_CCTM_${VRSN}_${compilerString} - setenv wrf_path ${CMAQ_HOME}/CCTM/scripts/${WRF_BLD} - setenv WRF_CMAQ 1 - - if ( ! -d $WRF_BLD ) then - git clone --branch ${WRF_VRSN} https://github.com/wrf-model/WRF.git ./$WRF_BLD >& /dev/null - cd $wrf_path - mv $Bld ./cmaq - - # Configure WRF - ./configure < Date: Mon, 30 Sep 2024 12:55:17 -0400 Subject: [PATCH 273/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md index 474a3a866..6c36d2297 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md @@ -106,7 +106,7 @@ cd [your_install_path]/CMAQ_v5.5 ### Step 6. Edit the config_cmaq.csh to specify the paths of the ioapi and netCDF libraries -### Step 7: Review the bldit_cctm_cb6r5_m3dry_ddm.csh bldit script +### Step 7: Copy the bldit_cctm.csh script to a new bldit_cctm_cb6r5_m3dry_ddm.csh bldit script, and make the following edits: Change directory to CCTM/scripts @@ -114,7 +114,7 @@ Change directory to CCTM/scripts cd CCTM/scripts ``` -Verify the following option is set to compile CCTM with DDM3D: +Modify the following option to compile CCTM with DDM3D: ``` set DDM3D_CCTM #> uncomment to compile CCTM with DD3D activated From 294844a81731a72ffc5638f45dcdd02d43364cb9 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 12:57:12 -0400 Subject: [PATCH 274/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 929b5e5a3..1f70b7fc4 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -104,6 +104,7 @@ Change directory to CCTM/scripts ``` cd CCTM/scripts +cp bldit_cctm.csh bldit_cctm_isam.csh ``` Uncomment the following option to compile CCTM with ISAM (remove the # before set ISAM_CCTM): @@ -119,7 +120,7 @@ set DepMod = m3dry #> dry deposition scheme (m3dry or stage) setenv Mechanism cb6r5_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) ``` -Verify that the bldit_cctm.csh script uses the name of the mechanism and the dry deposition scheme in the BLD directory name: +Verify that the bldit_cctm_isam.csh script uses the name of the mechanism and the dry deposition scheme in the BLD directory name: #> Set and create the "BLD" directory for checking out and compiling #> source code. Move current directory to that build directory. @@ -132,10 +133,10 @@ Verify that the bldit_cctm.csh script uses the name of the mechanism and the dry endif ``` -### Step 9: Run the bldit_cctm.csh script +### Step 9: Run the bldit_cctm_isam.csh script ``` -./bldit_cctm.csh gcc |& tee bldit_cctm_isam.log +./bldit_cctm_isam.csh gcc |& tee bldit_cctm_isam.log ``` ### Step 10: Edit the Emission Control Namelist to recognize the CMAQ_REGIONS file From 1e335457d5a8b0e52ae2288b4fff3a06f47c3a6a Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 13:02:44 -0400 Subject: [PATCH 275/375] update --- .../Tutorials/CMAQ_UG_tutorial_benchmark.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index 7b5fa66b6..d771a75cd 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -121,6 +121,14 @@ Create the model executables for CCTM using the steps shown below. ##### Configuration for multi-processor runs (default): +``` +cd $CMAQ_HOME/CCTM/scripts +cp bldit_cctm.csh bldit_cctm_cb6r5_ae7_aq_m3dry.csh +``` + +Edit the bldit_cctm_cb6r5_ae7_aq_m3dry.csh script to use the following settings: + + ``` set ParOpt #> Option for MPI Runs ```` @@ -155,7 +163,7 @@ To configure these parameters, the CCTM Science Modules within the bldit_cctm.cs To keep the BLD directory name unique for each mechansim, verify that the bldit_cctm script uses the following: ``` -#> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. +#> Verify that the "BLD" directory for checking out and compiling source code uses the mechanism and deposition scheme in the name. if ( $?Debug_CCTM ) then set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug else @@ -174,7 +182,7 @@ Following the requisite changes to the CCTM build script, use the following comm ``` cd $CMAQ_HOME/CCTM/scripts -./bldit_cctm_craccm.csh [compiler] [version] |& tee bldit_cctm_craccm.log +./bldit_cctm_cb6r5_ae7_aq_m3dry [compiler] [version] |& tee bldit_cctm_cb6r5_ae7_aq_m3dry.log ``` Verify that the BLD directory contains a namelist called From 9fec5409015a6b7c1f4072e72bb70b615a98ed8b Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 13:07:26 -0400 Subject: [PATCH 276/375] update --- ...CMAQ_UG_tutorial_benchmark_cracmm2_stage.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md index 81984c3b9..3ae5ccfe5 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md @@ -146,13 +146,14 @@ To configure these parameters, the CCTM Science Modules within the bldit_cctm.cs [Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). -Review the bldit script for this benchmark. +Create a bldit script for this benchmark. ``` -cat bldit_cctm_gnu_cracmm2_stage.csh +cp bldit_cctm.csh bldit_cctm_cracmm2_stage.csh +vi bldit_cctm_cracmm2_stage.csh ``` -Notice that the bldit script uses a unique BLD directory name mechansim and dry deposition scheme combination. +Verify the bldit script uses a unique BLD directory name mechansim and dry deposition scheme combination. ``` #> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. @@ -163,18 +164,25 @@ Notice that the bldit script uses a unique BLD directory name mechansim and dry endif ``` -Verify that the dry deposition scheme to use STAGE instead of M3DRY +Modify the dry deposition scheme to use STAGE instead of M3DRY ``` #> Set Dry Deposition Scheme to Stage set DepMod = stage ``` +Modify the Mechanism to use craccm2 instead of cb6r5 + +``` + setenv Mechanism cracmm2 #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) +``` + + Following the requisite changes to the CCTM build script, use the following command to create the CCTM executable: ``` cd $CMAQ_HOME/CCTM/scripts -./bldit_cctm_gnu_cracmm2_stage.csh [compiler] [version] |& tee bldit_cctm_gnu_cracmm2_stage.log +./bldit_cctm_cracmm2_stage.csh [compiler] [version] |& tee bldit_cctm_cracmm2_stage.log ``` Verify that the BLD directory contains a namelist called From 67cf09f8091c402e219ea34ca1df6963b20db582 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 13:09:00 -0400 Subject: [PATCH 277/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md index 6c36d2297..e311dc4d6 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md @@ -112,6 +112,7 @@ Change directory to CCTM/scripts ``` cd CCTM/scripts +cp bldit_cctm.csh bldit_cctm_cb6r5_m3dry_ddm.csh ``` Modify the following option to compile CCTM with DDM3D: From a3a7ec71c700093f9ca26f30827edfea4e502b93 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 13:10:58 -0400 Subject: [PATCH 278/375] update --- .../Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md index c8a83ad96..e6bfedaf1 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md @@ -155,14 +155,14 @@ To configure these parameters, the CCTM Science Modules within the bldit_cctm.cs Use the bldit_cctm script that is set up to use the cb6r5 mechanism and the stage dry deposition scheme. -Review the bldit script +Copy the bldit script to a new script for this benchmark ``` -more bldit_cctm_cb6r5_stage.csh +cp bldit_cctm.csh bldit_cctm_cb6r5_stage.csh ``` -Verify the dry deposition scheme uses STAGE instead of M3DRY +Modify the dry deposition scheme uses STAGE instead of M3DRY ``` # set DepMod = m3dry #> m3dry From e684bb742f005f064a348b7174db6d93929ae5ce Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 13:27:04 -0400 Subject: [PATCH 279/375] update --- DOCS/Users_Guide/Tutorials/README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/README.md b/DOCS/Users_Guide/Tutorials/README.md index 98e2365a0..fedc79dc5 100644 --- a/DOCS/Users_Guide/Tutorials/README.md +++ b/DOCS/Users_Guide/Tutorials/README.md @@ -4,10 +4,13 @@ CMAQ Tutorials A series of short tutorials provide practical examples of how to set up and run CMAQ, exercise different features in the software, and better understand the software system. Community members are encouraged to both suggest ideas for new tutorials and to contribute tutorials directly to this repository. [Contact the CMAS Center](cmas@unc.edu) with new tutorial ideas. - [Building CMAQ for GNU](CMAQ_UG_tutorial_build_library_gcc.md): This tutorial describes how to install netCDF and I/O API libraries and build CMAQ using the GNU GCC compiler version 9.1.0. +- [Building CMAQ for GNU to support compressed netCDF4](CMAQ_UG_tutorial_build_library_gcc_support_nc4.md): This tutorial describes how to install netCDF and I/O API libraries to support netCDF-4 compressed files. - [Building CMAQ for Intel](CMAQ_UG_tutorial_build_library_intel.md): This tutorial describes how to install netCDF and I/O API libraries and build CMAQ using the Intel compiler version 18.2. -- [Running the CMAQ Test Case](CMAQ_UG_tutorial_benchmark.md): This tutorial describes how to prepare your Linux system for installing and running the CMAQ test case. -- [Running the CMAQ-ISAM Test Case](CMAQ_UG_tutorial_ISAM.md): This tutorial describes how to build and run the CMAQ-ISAM model using GNU GCC compiler. -- [Running the CMAQ-DDM-3D Test Case](CMAQ_UG_tutorial_DDM3D.md): This tutorial describes how to build and run the CMAQ-DDM-3D model using GNU GCC compiler. +- [Running the CMAQ Test Case for cracmm2 and stage](CMAQ_UG_tutorial_benchmark_cracmm2_stage.md): This tutorial describes how to prepare your Linux system for installing and running the CMAQ test case for cracmm2 and stage. +- [Running the CMAQ Test Case for cb6r5 and stage](CMAQ_UG_tutorial_benchmark_cb6r5_stage.md): This tutorial describes how to prepare your Linux system for installing and running the CMAQ test case for the cb6r5_ae7_aq mecchanism and the stage dry deposition scheme. +- [Running the CMAQ Test Case for cb6r5 and m3dry](CMAQ_UG_tutorial_benchmark.md): This tutorial describes how to prepare your Linux system for installing and running the CMAQ test case for cb6r5_ae7_aq and m3dry. +- [Running the CMAQ-ISAM Test Case for cb6r5 and m3dry](CMAQ_UG_tutorial_ISAM.md): This tutorial describes how to build and run the CMAQ-ISAM model using GNU GCC compiler for cb6r5_ae7_aq and m3dry. +- [Running the CMAQ-DDM-3D Test Case for cb6r5 and m3dry](CMAQ_UG_tutorial_DDM3D.md): This tutorial describes how to build and run the CMAQ-DDM-3D model using GNU GCC compiler cb6r5_ae7_aq and m3dry. - [Running the WRF-CMAQ Test Case](CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md) This tutorial describes how to build and run the WRF-CMAQ model. - [Debugging Tips](CMAQ_UG_tutorial_debug.md): This tutorial describes how to examine log files and debug issues encountered when installing and running the CMAQ test case. - [Using the Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMM)](CMAQ_UG_tutorial_CRACMM.md) This tutorial gives an overview and FAQ on how to run CMAQ with the new CRACMM mechanism. From bba03e09c6cb74e73b4705565dda34f3e777cfa0 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 13:32:47 -0400 Subject: [PATCH 280/375] update --- DOCS/Users_Guide/Tutorials/README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/README.md b/DOCS/Users_Guide/Tutorials/README.md index fedc79dc5..2621eb925 100644 --- a/DOCS/Users_Guide/Tutorials/README.md +++ b/DOCS/Users_Guide/Tutorials/README.md @@ -4,7 +4,10 @@ CMAQ Tutorials A series of short tutorials provide practical examples of how to set up and run CMAQ, exercise different features in the software, and better understand the software system. Community members are encouraged to both suggest ideas for new tutorials and to contribute tutorials directly to this repository. [Contact the CMAS Center](cmas@unc.edu) with new tutorial ideas. - [Building CMAQ for GNU](CMAQ_UG_tutorial_build_library_gcc.md): This tutorial describes how to install netCDF and I/O API libraries and build CMAQ using the GNU GCC compiler version 9.1.0. -- [Building CMAQ for GNU to support compressed netCDF4](CMAQ_UG_tutorial_build_library_gcc_support_nc4.md): This tutorial describes how to install netCDF and I/O API libraries to support netCDF-4 compressed files. +- [Building CMAQ for GNU to support compressed netCDF4](CMAQ_UG_tutorial_build_library_gcc_support_nc4.md): This tutorial describes how to install netCDF and I/O API libraries to support netCDF-4 compressed files. +- [Script to install netCDF libraries to support netCDF4 compression](gcc_install_netcdf_for_nc4_compression.csh): This script installs prerequisite libraries for netCDF-4 to support compressed files. +- [Script to install I/O API library to support netCDF4 compression](gcc_install_ioapi_for_nc4_compression.csh): This script installs I/O API library to support compressed files. +- [Script to install CMAQv55 for cb6r5 and m3dry](gcc_install_cmaq55_cb6r5_m3dry.csh): This script installs CMAQv5.5 and uses libraries that support netCDF-4 compression. - [Building CMAQ for Intel](CMAQ_UG_tutorial_build_library_intel.md): This tutorial describes how to install netCDF and I/O API libraries and build CMAQ using the Intel compiler version 18.2. - [Running the CMAQ Test Case for cracmm2 and stage](CMAQ_UG_tutorial_benchmark_cracmm2_stage.md): This tutorial describes how to prepare your Linux system for installing and running the CMAQ test case for cracmm2 and stage. - [Running the CMAQ Test Case for cb6r5 and stage](CMAQ_UG_tutorial_benchmark_cb6r5_stage.md): This tutorial describes how to prepare your Linux system for installing and running the CMAQ test case for the cb6r5_ae7_aq mecchanism and the stage dry deposition scheme. From 3218a647ca72ff6d17c2ac841a443708cbc05e9a Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 13:35:26 -0400 Subject: [PATCH 281/375] update --- DOCS/Users_Guide/Tutorials/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/README.md b/DOCS/Users_Guide/Tutorials/README.md index 2621eb925..0a66268b5 100644 --- a/DOCS/Users_Guide/Tutorials/README.md +++ b/DOCS/Users_Guide/Tutorials/README.md @@ -3,7 +3,7 @@ CMAQ Tutorials A series of short tutorials provide practical examples of how to set up and run CMAQ, exercise different features in the software, and better understand the software system. Community members are encouraged to both suggest ideas for new tutorials and to contribute tutorials directly to this repository. [Contact the CMAS Center](cmas@unc.edu) with new tutorial ideas. -- [Building CMAQ for GNU](CMAQ_UG_tutorial_build_library_gcc.md): This tutorial describes how to install netCDF and I/O API libraries and build CMAQ using the GNU GCC compiler version 9.1.0. +- [Building CMAQ Libraries for GNU disabling netCDF4 compression](CMAQ_UG_tutorial_build_library_gcc.md): This tutorial describes how to install netCDF and I/O API libraries and build CMAQ using the GNU GCC compiler version 9.1.0. - [Building CMAQ for GNU to support compressed netCDF4](CMAQ_UG_tutorial_build_library_gcc_support_nc4.md): This tutorial describes how to install netCDF and I/O API libraries to support netCDF-4 compressed files. - [Script to install netCDF libraries to support netCDF4 compression](gcc_install_netcdf_for_nc4_compression.csh): This script installs prerequisite libraries for netCDF-4 to support compressed files. - [Script to install I/O API library to support netCDF4 compression](gcc_install_ioapi_for_nc4_compression.csh): This script installs I/O API library to support compressed files. From 55ba6701969ad43a6db32612602e75c1acbdd9b1 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 13:36:16 -0400 Subject: [PATCH 282/375] update --- DOCS/Users_Guide/Tutorials/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/README.md b/DOCS/Users_Guide/Tutorials/README.md index 0a66268b5..f7f5373d3 100644 --- a/DOCS/Users_Guide/Tutorials/README.md +++ b/DOCS/Users_Guide/Tutorials/README.md @@ -4,7 +4,7 @@ CMAQ Tutorials A series of short tutorials provide practical examples of how to set up and run CMAQ, exercise different features in the software, and better understand the software system. Community members are encouraged to both suggest ideas for new tutorials and to contribute tutorials directly to this repository. [Contact the CMAS Center](cmas@unc.edu) with new tutorial ideas. - [Building CMAQ Libraries for GNU disabling netCDF4 compression](CMAQ_UG_tutorial_build_library_gcc.md): This tutorial describes how to install netCDF and I/O API libraries and build CMAQ using the GNU GCC compiler version 9.1.0. -- [Building CMAQ for GNU to support compressed netCDF4](CMAQ_UG_tutorial_build_library_gcc_support_nc4.md): This tutorial describes how to install netCDF and I/O API libraries to support netCDF-4 compressed files. +- [Building CMAQ for GNU using libraries that support compressed netCDF4](CMAQ_UG_tutorial_build_library_gcc_support_nc4.md): This tutorial describes how to install netCDF and I/O API libraries to support netCDF-4 compressed files. - [Script to install netCDF libraries to support netCDF4 compression](gcc_install_netcdf_for_nc4_compression.csh): This script installs prerequisite libraries for netCDF-4 to support compressed files. - [Script to install I/O API library to support netCDF4 compression](gcc_install_ioapi_for_nc4_compression.csh): This script installs I/O API library to support compressed files. - [Script to install CMAQv55 for cb6r5 and m3dry](gcc_install_cmaq55_cb6r5_m3dry.csh): This script installs CMAQv5.5 and uses libraries that support netCDF-4 compression. From 350adb768833faf93c20f9c1a7492f576216bbe5 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 13:36:55 -0400 Subject: [PATCH 283/375] update --- DOCS/Users_Guide/Tutorials/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/README.md b/DOCS/Users_Guide/Tutorials/README.md index f7f5373d3..bfdc376d1 100644 --- a/DOCS/Users_Guide/Tutorials/README.md +++ b/DOCS/Users_Guide/Tutorials/README.md @@ -3,7 +3,7 @@ CMAQ Tutorials A series of short tutorials provide practical examples of how to set up and run CMAQ, exercise different features in the software, and better understand the software system. Community members are encouraged to both suggest ideas for new tutorials and to contribute tutorials directly to this repository. [Contact the CMAS Center](cmas@unc.edu) with new tutorial ideas. -- [Building CMAQ Libraries for GNU disabling netCDF4 compression](CMAQ_UG_tutorial_build_library_gcc.md): This tutorial describes how to install netCDF and I/O API libraries and build CMAQ using the GNU GCC compiler version 9.1.0. +- [Building CMAQ for GNU using Libraries that disable netCDF4 compression](CMAQ_UG_tutorial_build_library_gcc.md): This tutorial describes how to install netCDF and I/O API libraries and build CMAQ using the GNU GCC compiler version 9.1.0. - [Building CMAQ for GNU using libraries that support compressed netCDF4](CMAQ_UG_tutorial_build_library_gcc_support_nc4.md): This tutorial describes how to install netCDF and I/O API libraries to support netCDF-4 compressed files. - [Script to install netCDF libraries to support netCDF4 compression](gcc_install_netcdf_for_nc4_compression.csh): This script installs prerequisite libraries for netCDF-4 to support compressed files. - [Script to install I/O API library to support netCDF4 compression](gcc_install_ioapi_for_nc4_compression.csh): This script installs I/O API library to support compressed files. From 6e554b63cb1e9593df1b42a322190cd21b251d4c Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 13:37:26 -0400 Subject: [PATCH 284/375] update --- DOCS/Users_Guide/Tutorials/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/README.md b/DOCS/Users_Guide/Tutorials/README.md index bfdc376d1..42576ca44 100644 --- a/DOCS/Users_Guide/Tutorials/README.md +++ b/DOCS/Users_Guide/Tutorials/README.md @@ -3,7 +3,7 @@ CMAQ Tutorials A series of short tutorials provide practical examples of how to set up and run CMAQ, exercise different features in the software, and better understand the software system. Community members are encouraged to both suggest ideas for new tutorials and to contribute tutorials directly to this repository. [Contact the CMAS Center](cmas@unc.edu) with new tutorial ideas. -- [Building CMAQ for GNU using Libraries that disable netCDF4 compression](CMAQ_UG_tutorial_build_library_gcc.md): This tutorial describes how to install netCDF and I/O API libraries and build CMAQ using the GNU GCC compiler version 9.1.0. +- [Building CMAQ for GNU using libraries that disable netCDF4 compression](CMAQ_UG_tutorial_build_library_gcc.md): This tutorial describes how to install netCDF and I/O API libraries and build CMAQ using the GNU GCC compiler version 9.1.0. - [Building CMAQ for GNU using libraries that support compressed netCDF4](CMAQ_UG_tutorial_build_library_gcc_support_nc4.md): This tutorial describes how to install netCDF and I/O API libraries to support netCDF-4 compressed files. - [Script to install netCDF libraries to support netCDF4 compression](gcc_install_netcdf_for_nc4_compression.csh): This script installs prerequisite libraries for netCDF-4 to support compressed files. - [Script to install I/O API library to support netCDF4 compression](gcc_install_ioapi_for_nc4_compression.csh): This script installs I/O API library to support compressed files. From 5991909d4d9b13d04a249f3642e9d1a387d7afc0 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 13:38:08 -0400 Subject: [PATCH 285/375] update --- DOCS/Users_Guide/Tutorials/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/README.md b/DOCS/Users_Guide/Tutorials/README.md index 42576ca44..895e16acc 100644 --- a/DOCS/Users_Guide/Tutorials/README.md +++ b/DOCS/Users_Guide/Tutorials/README.md @@ -8,7 +8,7 @@ A series of short tutorials provide practical examples of how to set up and run - [Script to install netCDF libraries to support netCDF4 compression](gcc_install_netcdf_for_nc4_compression.csh): This script installs prerequisite libraries for netCDF-4 to support compressed files. - [Script to install I/O API library to support netCDF4 compression](gcc_install_ioapi_for_nc4_compression.csh): This script installs I/O API library to support compressed files. - [Script to install CMAQv55 for cb6r5 and m3dry](gcc_install_cmaq55_cb6r5_m3dry.csh): This script installs CMAQv5.5 and uses libraries that support netCDF-4 compression. -- [Building CMAQ for Intel](CMAQ_UG_tutorial_build_library_intel.md): This tutorial describes how to install netCDF and I/O API libraries and build CMAQ using the Intel compiler version 18.2. +- [Building CMAQ for Intel using libraries that disable netCDF4 compression](CMAQ_UG_tutorial_build_library_intel.md): This tutorial describes how to install netCDF and I/O API libraries and build CMAQ using the Intel compiler version 18.2. - [Running the CMAQ Test Case for cracmm2 and stage](CMAQ_UG_tutorial_benchmark_cracmm2_stage.md): This tutorial describes how to prepare your Linux system for installing and running the CMAQ test case for cracmm2 and stage. - [Running the CMAQ Test Case for cb6r5 and stage](CMAQ_UG_tutorial_benchmark_cb6r5_stage.md): This tutorial describes how to prepare your Linux system for installing and running the CMAQ test case for the cb6r5_ae7_aq mecchanism and the stage dry deposition scheme. - [Running the CMAQ Test Case for cb6r5 and m3dry](CMAQ_UG_tutorial_benchmark.md): This tutorial describes how to prepare your Linux system for installing and running the CMAQ test case for cb6r5_ae7_aq and m3dry. From 73fceb79db3aee2b9101e2e307096364cc7be228 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 14:03:25 -0400 Subject: [PATCH 286/375] update --- CCTM/scripts/run_cctm_Bench_2018_12NE3.csh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh index be85272d6..cba3cd001 100755 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh @@ -130,8 +130,8 @@ set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` #> Output Species and Layer Options #> CONC file species; comment or set to "ALL" to write all species to CONC - # setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 FORM ISOP NH3 ANH4I ANH4J ASO4I ASO4J" - #setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC + setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 FORM ISOP NH3 ANH4I ANH4J ASO4I ASO4J" + setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC #> ACONC file species; comment or set to "ALL" to write all species to ACONC #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" From 96292d70a4d70e9dc073c9181969851a641991f4 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 14:13:47 -0400 Subject: [PATCH 287/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md index e311dc4d6..ca9db2145 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md @@ -246,6 +246,14 @@ sbatch run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh Note, the following DDM-3D output files are generated in addition to the standard CMAQ output files. +``` + CCTM_SENWDEP_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180701.nc + CCTM_SENDDEP_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180701.nc + CCTM_SENGRID_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180701.nc +``` + + + ### Step 15: Compare sensitivities From 9e798dafff5d117710a17768ab800cc9b28ab31e Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 15:02:09 -0400 Subject: [PATCH 288/375] update --- CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh index ba72242e3..860f6cf74 100755 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh @@ -1,7 +1,7 @@ #!/bin/csh -f # ===================== CCTMv5.5.X Run Script ========================= -# Usage: run.cctm >&! cctm_Bench_2018_12SE1.log & +# Usage: run.cctm >&! cctm.log & # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) From 78f5b756b47e096c25c505356a3ce18360c7bd60 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 15:03:04 -0400 Subject: [PATCH 289/375] update --- CCTM/scripts/run_cctm_Bench_2018_12NE3.csh | 2 +- CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh index cba3cd001..5cfb3bf1c 100755 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh @@ -1,7 +1,7 @@ #!/bin/csh -f # ===================== CCTMv5.5.X Run Script ========================= -# Usage: run.cctm >&! cctm_Bench_2018_12NE3.log & +# Usage: run.cctm >&! cctm_Bench.log & # Slurm Usage: sbatch run_cctm_Bench_2018_12NE3.csh # # To report problems or request help with this script/program: diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh index 860f6cf74..7cb25c8d6 100755 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh @@ -1,7 +1,7 @@ #!/bin/csh -f # ===================== CCTMv5.5.X Run Script ========================= -# Usage: run.cctm >&! cctm.log & +# Usage: run.cctm >&! cctm_Bench.log & # # To report problems or request help with this script/program: # http://www.epa.gov/cmaq (EPA CMAQ Website) From 023c2592d721b26c8210fc5c35f6350d3911ef2b Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 15:05:25 -0400 Subject: [PATCH 290/375] update --- CCTM/scripts/run_cctm_Bench_2018_12NE3.csh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh index 5cfb3bf1c..282bbbc07 100755 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh @@ -1,7 +1,7 @@ #!/bin/csh -f # ===================== CCTMv5.5.X Run Script ========================= -# Usage: run.cctm >&! cctm_Bench.log & +# Usage: run_cctm_Bench_2018_12NE3.csh >&! cctm_Bench_2018_12NE3.log & # Slurm Usage: sbatch run_cctm_Bench_2018_12NE3.csh # # To report problems or request help with this script/program: From 012cbafe91269c7ad2f74345ae14a973984989d2 Mon Sep 17 00:00:00 2001 From: chogrefe Date: Mon, 30 Sep 2024 15:28:06 -0400 Subject: [PATCH 291/375] Updated STAGE NH3 Bidi Initialization Guidance Incorporated Jesse's suggested wording change for the first bullet. --- DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md index e9ef42ba1..110fa3c61 100644 --- a/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md +++ b/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md @@ -258,7 +258,7 @@ The ammonia bidirectional option follows the ammonia specific parameterizations STAGE ammonia bidirectional calculations rely on input files generated by EPIC and, except on the first simulation day, the results of the previous day's STAGE soil NH4 chemistry calculations that are stored in the previous day's `CCTM_MEDIA_CONC` output file. The following considerations apply when using the STAGE ammonia bidirectional module: -1. Ammonia bidirectional exchange in STAGE was developed to track the mass balance of the soil NH4 because the CMAQ-STAGE estimate of NH3 evasion differs from EPIC. The discrepancy between CMAQ-STAGE simulations of the soil NH4 in the MEDIA_CONC and EPIC input files will grow over time due to the differences that the parameterization of model evasion have on the soil mass balance. +1. Ammonia bidirectional exchange in STAGE was developed to track the mass balance of the soil NH4 because the CMAQ-STAGE estimate of NH3 evasion differs from EPIC. The discrepancy between CMAQ-STAGE simulations of the soil NH4 in the MEDIA_CONC and EPIC input files will diverge over time due to the differences that the parameterization of model evasion have on the soil mass balance. 2. Initialization of the bidirectional exchange soil NH4 on different dates will likely result in persistent model differences that can persist for months depending on the time of the initialization and environmental conditions. 3. When performing multiyear CMAQ simulations using the ammonia bidirectional flux module, Jan. 1st of each simulation year should be initialized solely from EPIC files (i.e. not use the December 31 `CCTM_MEDIA_CONC` file from the previous year) as current versions of EPIC used in FEST-C do not reasonably simulate multiyear runs and simulations are conducted for the calendar year. From 64f8f8cb76f378bc12099befe074f97ea65e5dac Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 16:59:24 -0400 Subject: [PATCH 292/375] update --- CCTM/scripts/run_cctm_Bench_2018_12NE3.csh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh index 282bbbc07..d3f6ccf84 100755 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh @@ -36,8 +36,9 @@ echo 'Start Model Run At ' `date` #> Set General Parameters for Configuring the Simulation set VRSN = v55 #> Code Version set PROC = mpi #> serial or mpi - set MECH = cb6r5_ae7_aq #> Mechanism ID - set APPL = Bench_2018_12NE3_${MECH}_m3dry #> Application Name (e.g. Gridname) + set MECH = cb6r5_ae7_aq #> Mechanism ID, depends on the bldit_cctm.csh settings + set DEP = m3dry #> m3dry or stage, depending on bldit_cctm.csh settings + set APPL = Bench_2018_12NE3_${MECH}_${DEP} #> Application Name (e.g. Gridname) #> Define RUNID as any combination of parameters above or others. By default, #> this information will be collected into this one string, $RUNID, for easy @@ -46,7 +47,7 @@ echo 'Start Model Run At ' `date` #> Set the build directory (this is where the CMAQ executable #> is located by default). - set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${MECH}_m3dry + set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${MECH}_${DEP} set EXEC = CCTM_${VRSN}.exe #> Output Each line of Runscript to Log File From 55e6e92eb1d26de473f63b5aaada7c75ce002c2f Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 17:01:49 -0400 Subject: [PATCH 293/375] update --- CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh index 7cb25c8d6..17214fd7c 100755 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh @@ -35,8 +35,9 @@ echo 'Start Model Run At ' `date` #> Set General Parameters for Configuring the Simulation set VRSN = v55_DDM3D #> Code Version set PROC = mpi #> serial or mpi - set MECH = cb6r5_ae7_aq #> Mechanism ID - set APPL = Bench_2018_12NE3_${MECH}_m3dry #> Application Name (e.g. Gridname) + set MECH = cb6r5_ae7_aq #> Mechanism ID, depends on the bldit_cctm.csh settings + set DEP = m3dry #> m3dry or stage, depending on bldit_cctm.csh settings + set APPL = Bench_2018_12NE3_${MECH}_${DEP} #> Application Name (e.g. Gridname) #> Define RUNID as any combination of parameters above or others. By default, #> this information will be collected into this one string, $RUNID, for easy @@ -45,7 +46,7 @@ echo 'Start Model Run At ' `date` #> Set the build directory (this is where the CMAQ executable #> is located by default). - set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${MECH}_m3dry + set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${MECH}_${DEP} set EXEC = CCTM_${VRSN}.exe #> Output Each line of Runscript to Log File From d09eb2e38d4e240332ca3d711ddd1af681752e0b Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 17:38:53 -0400 Subject: [PATCH 294/375] update --- .../Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md index e6bfedaf1..331f7841f 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md @@ -141,7 +141,7 @@ The build directory parameters for the benchmark test case include the following - Multiprocessor simulation - 3-D Advection Scheme: wrf_cons - Horizontal diffusion: Multiscale -- Vertical diffusion: ACM2_M3Dry +- Vertical diffusion: ACM2_stage - Deposition: M3Dry - Chemistry solver: EBI - Aerosol module: AERO7 From 896192f1be6e9a73e74b3a1745dd80bafe0eed30 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 17:39:32 -0400 Subject: [PATCH 295/375] update --- .../Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md index 331f7841f..882af4691 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md @@ -141,7 +141,7 @@ The build directory parameters for the benchmark test case include the following - Multiprocessor simulation - 3-D Advection Scheme: wrf_cons - Horizontal diffusion: Multiscale -- Vertical diffusion: ACM2_stage +- Vertical diffusion: ACM2_Stage - Deposition: M3Dry - Chemistry solver: EBI - Aerosol module: AERO7 From 858364bea65fb3840bc419abd0e9e3d24a57dab1 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 17:40:13 -0400 Subject: [PATCH 296/375] update --- .../Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md index 3ae5ccfe5..97d3388ba 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md @@ -133,7 +133,7 @@ The build directory parameters for the benchmark test case include the following - Multiprocessor simulation - 3-D Advection Scheme: wrf_cons - Horizontal diffusion: Multiscale -- Vertical diffusion: ACM2_M3Dry +- Vertical diffusion: ACM2_Stage - Deposition: STAGE - Chemistry solver: EBI - Aerosol module: cracmm From c2cb0f10024d336a5c43473f54b8c1fe6233d9ce Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 17:41:27 -0400 Subject: [PATCH 297/375] update --- .../Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md index 882af4691..9c62d132b 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md @@ -165,7 +165,7 @@ cp bldit_cctm.csh bldit_cctm_cb6r5_stage.csh Modify the dry deposition scheme uses STAGE instead of M3DRY ``` - # set DepMod = m3dry #> m3dry + # set DepMod = m3dry #> m3dry or stage set DepMod = stage ``` From 7520c46e77e018c97618c52a8a9432d9f65a4159 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 17:41:55 -0400 Subject: [PATCH 298/375] update --- .../Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md index 9c62d132b..24cc51095 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md @@ -142,7 +142,7 @@ The build directory parameters for the benchmark test case include the following - 3-D Advection Scheme: wrf_cons - Horizontal diffusion: Multiscale - Vertical diffusion: ACM2_Stage -- Deposition: M3Dry +- Deposition: Stage - Chemistry solver: EBI - Aerosol module: AERO7 - Cloud module: ACM_AE7 From cbb6102e9277184d3d5ef0d5e52187e942ec8fc2 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 17:43:12 -0400 Subject: [PATCH 299/375] update --- .../CMAQ_UG_tutorial_benchmark_cb6r5_stage.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md index 24cc51095..631ef82c8 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md @@ -120,6 +120,13 @@ tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz Create the model executables for CCTM using the steps shown below. +Use the bldit_cctm script that is set up to use the cb6r5 mechanism and the stage dry deposition scheme. + +Copy the bldit script to a new script for this benchmark + +``` +cp bldit_cctm.csh bldit_cctm_cb6r5_stage.csh + ##### Configuration for multi-processor runs (default): ``` @@ -153,14 +160,6 @@ The build directory parameters for the benchmark test case include the following To configure these parameters, the CCTM Science Modules within the bldit_cctm.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in [Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). -Use the bldit_cctm script that is set up to use the cb6r5 mechanism and the stage dry deposition scheme. - -Copy the bldit script to a new script for this benchmark - -``` -cp bldit_cctm.csh bldit_cctm_cb6r5_stage.csh -``` - Modify the dry deposition scheme uses STAGE instead of M3DRY From d0bc4f1e04fa42724262e8da279e6ef88b023248 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 17:46:14 -0400 Subject: [PATCH 300/375] update --- .../Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md index 631ef82c8..16eb22c2b 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md @@ -175,7 +175,7 @@ Verify the Mechanism is set to cb6r5_ae7_aq ``` -Verify that a unique BLD directory name for each combination of mechansim and dry deposition scheme. +Verify that the bldit_cctm.csh script contains the following lines (creating a unique BLD directory name for each combination of mechansim and dry deposition scheme). #> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. if ( $?Debug_CCTM ) then From e82deeb0f398f2edb8e580da25c6c2d2cc84db43 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 17:49:35 -0400 Subject: [PATCH 301/375] update --- .../Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md index 97d3388ba..9f0679c9d 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md @@ -153,7 +153,7 @@ cp bldit_cctm.csh bldit_cctm_cracmm2_stage.csh vi bldit_cctm_cracmm2_stage.csh ``` -Verify the bldit script uses a unique BLD directory name mechansim and dry deposition scheme combination. +Verify that the bldit_cctm_cracmm2_stage.csh script uses the name of the mechanism and the dry deposition scheme in the BLD directory name: ``` #> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. From 208835f78a81a6088cbfe32261107b178a51a152 Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 17:57:16 -0400 Subject: [PATCH 302/375] update --- CCTM/scripts/run_cctm_Bench_2018_12NE3.csh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh index d3f6ccf84..8a02ee7fa 100755 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh @@ -131,8 +131,8 @@ set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` #> Output Species and Layer Options #> CONC file species; comment or set to "ALL" to write all species to CONC - setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 FORM ISOP NH3 ANH4I ANH4J ASO4I ASO4J" - setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC + # setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 FORM ISOP NH3 ANH4I ANH4J ASO4I ASO4J" + # setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC #> ACONC file species; comment or set to "ALL" to write all species to ACONC #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" From 4c1af0c5af5f722aaaf148d79aa1d6d41bfcc2dc Mon Sep 17 00:00:00 2001 From: lizadams Date: Mon, 30 Sep 2024 17:59:24 -0400 Subject: [PATCH 303/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 1f70b7fc4..bf43b0f2a 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -120,7 +120,7 @@ set DepMod = m3dry #> dry deposition scheme (m3dry or stage) setenv Mechanism cb6r5_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) ``` -Verify that the bldit_cctm_isam.csh script uses the name of the mechanism and the dry deposition scheme in the BLD directory name: +Verify that the bldit_cctm_isam.csh script contains the following lines: (the mechanism and the dry deposition scheme have been added to the BLD directory name): #> Set and create the "BLD" directory for checking out and compiling #> source code. Move current directory to that build directory. From 1c00c071f741f9c510765a6bc7560f1386ef84c7 Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 09:22:38 -0400 Subject: [PATCH 304/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index d771a75cd..adafd5a50 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -18,7 +18,7 @@ The following support software are required for compiling and running CMAQ. 2. Message Passing Interface (MPI), e.g., [OpenMPI](https://www.open-mpi.org) or [MVAPICH2](http://www.mcs.anl.gov/research/projects/mpich2). 3. Latest release of [netCDF-C](https://www.unidata.ucar.edu/software/netcdf/docs/getting_and_building_netcdf.html) and [netCDF-Fortran](https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html) **built with netCDF4, HDF5, HDF4, DAP client, PnetCDF, or zlib support** 4. [I/O API](https://www.cmascenter.org/download/software/ioapi/ioapi_3-2.cfm?DB=TRUE) version 3.2 **tagged 20200828** -(note: if you have not installed the above libraries, please see the CMAQ_UG_tutorial_build_[gcc/intel/pgi].md tutorials available here: +(note: if you have not installed the above libraries, please see the CMAQ_UG_tutorial_build_library_gcc_support_nc4.md tutorial available here: https://github.com/USEPA/CMAQ/tree/main/DOCS/Users_Guide/Tutorials The suggested hardware requirements for running the CMAQ Southeast Benchmark case on a Linux workstation are: From b24093941f0106431f50680b2214c6e175a18f49 Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 09:27:31 -0400 Subject: [PATCH 305/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index adafd5a50..94888f461 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -18,7 +18,7 @@ The following support software are required for compiling and running CMAQ. 2. Message Passing Interface (MPI), e.g., [OpenMPI](https://www.open-mpi.org) or [MVAPICH2](http://www.mcs.anl.gov/research/projects/mpich2). 3. Latest release of [netCDF-C](https://www.unidata.ucar.edu/software/netcdf/docs/getting_and_building_netcdf.html) and [netCDF-Fortran](https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html) **built with netCDF4, HDF5, HDF4, DAP client, PnetCDF, or zlib support** 4. [I/O API](https://www.cmascenter.org/download/software/ioapi/ioapi_3-2.cfm?DB=TRUE) version 3.2 **tagged 20200828** -(note: if you have not installed the above libraries, please see the CMAQ_UG_tutorial_build_library_gcc_support_nc4.md tutorial available here: +(note: if you have not installed the above libraries, please see the [CMAQ_UG_tutorial_build_library_gcc_support_nc4.md](https://github.com/USEPA/CMAQ/tree/main/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md) tutorial available here: https://github.com/USEPA/CMAQ/tree/main/DOCS/Users_Guide/Tutorials The suggested hardware requirements for running the CMAQ Southeast Benchmark case on a Linux workstation are: From 4b1b6aea6e23869907ef543911aa90eab5ce71c4 Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 09:30:58 -0400 Subject: [PATCH 306/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_debug.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_debug.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_debug.md index fa9c7154c..b0619cdc9 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_debug.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_debug.md @@ -6,8 +6,11 @@ This guide helps you to find and report errors to the CMAS Center Forum and foll ## Building CMAQ ### Prerequisite: Build Libraries and CMAQ using gcc or intel compilers Follow the CMAQ Build Tutorials for the appropriate compiler: +Uncompressed netCDF-4 library builds: * [Building CMAQ for GNU](CMAQ_UG_tutorial_build_library_gcc.md) * [Building CMAQ for Intel](CMAQ_UG_tutorial_build_library_intel.md) +Compressed netCDF-4 Library builds: +* [Building CMAQ using netCDF-4 compression for GNU](CMAQ_UG_tutorial_build_library_gcc_support_nc4.md) ### Verify that an executable was created ``` From f8fce87de353f7120233a5c18123db49aec693dd Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 09:37:20 -0400 Subject: [PATCH 307/375] update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e8bc87ae2..0fea0b6ea 100644 --- a/README.md +++ b/README.md @@ -72,11 +72,11 @@ In addition, a full set of inputs for 2018 are provided for the 12US1 domain (29 |**CMAQ Version**|**Data Type (Size)**|**Domain**|**Simulation Dates**|**Data Access**| |:----:|:----:|:--------------:|:----:|:--------:| |v5.4 CB6 | Input (10.3 Gb)| Northeast US| July 1 - 2, 2018| [Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz)| -|v5.4 CB6 M3Dry | Output (13.9 Gb)| Northeast US| July 1 - 2, 2018|[Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz) | |v5.4 CB6 | Input (6.1 TB) | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/LDTWKH)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | |v5.4 CRACMM Stage| Input (6.1 TB)| 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/9AV907)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | |v5.5 CRACMM2 Stage | Input (6 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) | |v5.5 CB6 Stage | Output (16 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) | +|v5.5 CB6 M3Dry | Output (15 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | |v5.5-ISAM CB6 M3Dry | Output (52 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | |v5.5-DDM3D CB6 M3Dry | Output (16 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | From 6dcebb4db5e3cc94ed9fc7f838defa6ae3cccc55 Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 09:56:28 -0400 Subject: [PATCH 308/375] update --- .../Tutorials/gcc_install_ioapi_for_nc4_compression.csh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_ioapi_for_nc4_compression.csh b/DOCS/Users_Guide/Tutorials/gcc_install_ioapi_for_nc4_compression.csh index f2c7000a8..1c031e45d 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_ioapi_for_nc4_compression.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_ioapi_for_nc4_compression.csh @@ -1,5 +1,8 @@ #!/bin/csh -f # Build I/O API version that supports NCF4 +# Note - this script works for gcc 9.1, to use gcc 10 and above, use the -fallow-argument-mismatch argument +# As of Aug. 28, 2020, there are now new BIN=Linux*gfort10* types and corresponding Makeinclude.Linux*gfort10* that incorporate this flag for the I/O API and M3Tools. +# The above information is from the I/O API documentation: https://www.cmascenter.org/ioapi/documentation/all_versions/html/AVAIL.html set echo From 95e9e51f029bb17f56ba8861ba5144d73be18ad3 Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 09:58:33 -0400 Subject: [PATCH 309/375] update --- .../CMAQ_UG_tutorial_build_library_gcc_support_nc4.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md index 7dc178d8d..786fe92eb 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md @@ -5,6 +5,12 @@ Building with netCDF-4 and the Remote Data Client netCDF requires the HDF5, zlib, and curl libraries. +## This Tutorial is for the gcc 9.1.0 compiler. +## For gcc 10 and above, use the -fallow-argument-mismatch argument +## As of Aug. 28, 2020, there are now new BIN=Linux*gfort10* types and corresponding Makeinclude.Linux*gfort10* that incorporate this flag for the I/O API and M3Tools. +## The above information is from the I/O API documentation: https://www.cmascenter.org/ioapi/documentation/all_versions/html/AVAIL.html + + ## Versions required are at least HDF5 1.8.9, zlib 1.2.5, and curl 7.18.0 or later. From 2025d101a22dfa44db591cbd5d4a17c88a19e823 Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 14:13:27 -0400 Subject: [PATCH 310/375] update --- ...un_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh | 820 ++++++++++++++++++ 1 file changed, 820 insertions(+) create mode 100755 CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh new file mode 100755 index 000000000..27280abe0 --- /dev/null +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh @@ -0,0 +1,820 @@ +#!/bin/csh -f + + +# ===================== CCTMv5.5.X STAGE CRACMM 12NE3 Run Script ========================= +# Usage: run_cctm_2018_12NE3_v54_Base_STAGE_CRACMM.csh >&! cctm_2018_12NE3_CRACMM.log & +# +# To report problems or request help with this script/program: +# http://www.epa.gov/cmaq (EPA CMAQ Website) +# http://www.cmascenter.org (CMAS Website) +# =================================================================== + +# =================================================================== +#> Runtime Environment Options +# =================================================================== + +echo 'Start Model Run At ' `date` + +#> Toggle Diagnostic Mode which will print verbose information to +#> standard output + setenv CTM_DIAG_LVL 0 + +#> Choose compiler and set up CMAQ environment with correct +#> libraries using config.cmaq. Options: intel | gcc | pgi + if ( ! $?compiler ) then + setenv compiler gcc + endif + if ( ! $?compilerVrsn ) then + setenv compilerVrsn Empty + endif + +#> Source the config.cmaq file to set the build environment + cd ../.. + source ./config_cmaq.csh $compiler $compilerVrsn + cd CCTM/scripts + +#> Set General Parameters for Configuring the Simulation + set VRSN = v55 #> Code Version + set PROC = mpi #> serial or mpi + set MECH = cracmm2 #> Mechanism ID + set DEP = stage + set APPL = Bench_2018_12NE3_${MECH}_${DEP} #> Application Name (e.g. Gridname) + +#> Define RUNID as any combination of parameters above or others. By default, +#> this information will be collected into this one string, $RUNID, for easy +#> referencing in output binaries and log files as well as in other scripts. + setenv RUNID ${VRSN}_${compilerString}_${APPL} + +#> Set the build directory (this is where the CMAQ executable +#> is located by default). + set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${MECH}_${DEP} + set EXEC = CCTM_${VRSN}.exe + +#> Output Each line of Runscript to Log File + if ( $CTM_DIAG_LVL != 0 ) set echo + +#> Set Working, Input, and Output Directories + setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. + setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory + setenv INPDIR ${CMAQ_DATA}/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input/ #Input Directory + setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location + setenv NMLpath ${BLD} #> Location of Namelists. Common places are: + #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} + + echo "" + echo "Working Directory is $WORKDIR" + echo "Build Directory is $BLD" + echo "Output Directory is $OUTDIR" + echo "Log Directory is $LOGDIR" + echo "Executable Name is $EXEC" + +# ===================================================================== +#> CCTM Configuration Options +# ===================================================================== + +#> Set Start and End Days for looping + setenv NEW_START TRUE #> Set to FALSE for model restart + set START_DATE = "2018-07-01" #> beginning date (July 1, 2016) + set END_DATE = "2018-07-02" #> ending date (July 1, 2016) + +#> Set Timestepping Parameters +set STTIME = 000000 #> beginning GMT time (HHMMSS) +set NSTEPS = 240000 #> time duration (HHMMSS) for this run +set TSTEP = 010000 #> output time step interval (HHMMSS) + +#> Horizontal domain decomposition +if ( $PROC == serial ) then + setenv NPCOL_NPROW "1 1"; set NPROCS = 1 # single processor setting +else + @ NPCOL = 8; @ NPROW = 4 + @ NPROCS = $NPCOL * $NPROW + setenv NPCOL_NPROW "$NPCOL $NPROW"; +endif + +#> Define Execution ID: e.g. [CMAQ-Version-Info]_[User]_[Date]_[Time] +if ( ! -e ${BLD}/CCTM_${VRSN}.cfg ) then + set SHAID = "" +else + set SHAID = `grep "sha_ID" ${BLD}/CCTM_${VRSN}.cfg | cut -c 13-22` + if ( $SHAID == not_a_repo ) then + set SHAID = "" + else + set SHAID = "_sha="$SHAID + endif +endif +setenv EXECUTION_ID "CMAQ_CCTM${VRSN}${SHAID}_`id -u -n`_`date -u +%Y%m%d_%H%M%S_%N`" #> Inform IO/API of the Execution ID +echo "" +echo "---CMAQ EXECUTION ID: $EXECUTION_ID ---" + +#> Keep or Delete Existing Output Files +set CLOBBER_DATA = TRUE + +#> Logfile Options +#> Master Log File Name; uncomment to write standard output to a log, otherwise write to screen +#setenv LOGFILE $CMAQ_HOME/$RUNID.log +if (! -e $LOGDIR ) then + mkdir -p $LOGDIR +endif +setenv PRINT_PROC_TIME Y #> Print timing for all science subprocesses to Logfile + #> [ default: TRUE or Y ] +setenv STDOUT T #> Override I/O-API trying to write information to both the processor + #> logs and STDOUT [ options: T | F ] + +setenv GRID_NAME 2018_12NE3 #> check GRIDDESC file for GRID_NAME options +setenv GRIDDESC $INPDIR/GRIDDESC #> grid description file + +#> Retrieve the number of columns, rows, and layers in this simulation +set NZ = 35 +set NX = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f6` +set NY = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f7` +set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` + +#> Output Species and Layer Options + #> CONC file species; comment or set to "ALL" to write all species to CONC + #setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 HCHO ISOP NH3 ANH4I ANH4J ASO4I ASO4J" + #setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC + + #> ACONC file species; comment or set to "ALL" to write all species to ACONC + #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" + setenv AVG_CONC_SPCS "ALL" + setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC + setenv AVG_FILE_ENDTIME N #> override default beginning ACONC timestamp [ default: N ] + +#> Synchronization Time Step and Tolerance Options +setenv CTM_MAXSYNC 300 #> max sync time step (sec) [ default: 720 ] +setenv CTM_MINSYNC 60 #> min sync time step (sec) [ default: 60 ] +setenv SIGMA_SYNC_TOP 0.7 #> top sigma level thru which sync step determined [ default: 0.7 ] +#setenv ADV_HDIV_LIM 0.95 #> maximum horiz. div. limit for adv step adjust [ default: 0.9 ] +setenv CTM_ADV_CFL 0.95 #> max CFL [ default: 0.75] +#setenv RB_ATOL 1.0E-09 #> global ROS3 solver absolute tolerance [ default: 1.0E-07 ] + +#> Science Options +setenv CTM_OCEAN_CHEM Y #> Flag for ocean halogen chemistry, sea spray aerosol emissions, + #> and enhanced ozone deposition over ocean waters [ default: Y ] +setenv CTM_WB_DUST N #> use inline windblown dust emissions (only for use with PX) [ default: N ] +setenv CTM_LTNG_NO N #> turn on lightning NOx [ default: N ] +setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], + #> otherwise revert to Kz0UT +setenv PX_VERSION Y #> WRF PX LSM +setenv CLM_VERSION N #> WRF CLM LSM +setenv NOAH_VERSION N #> WRF NOAH LSM +setenv CTM_ABFLUX Y #> ammonia bi-directional flux for in-line deposition + #> velocities [ default: N ] +setenv CTM_BIDI_FERT_NH3 T #> subtract fertilizer NH3 from emissions because it will be handled + #> by the BiDi calculation [ default: Y ] +setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition + #> velocities [ default: N ] +setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ] + #> please see user guide (6.10.4 Nitrous Acid (HONO)) + #> for dependency on percent urban fraction dataset +setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ] +setenv CTM_PVO3 N #> consider potential vorticity module for O3 transport from the stratosphere + #> [default: N] + +setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions with BEIS [ default: N ] +setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ] +setenv BDSNP_MEGAN N #> turns on BDSNP soil NO emissions [ default: N ] + +setenv AEROSOL_OPTICS 3 #> sets method for determining aerosol optics affecting photolysis + #> frequencies ( 3 is the default value ) + #> VALUES 1 thru 3 determined Uniformly Volume Mixed spherical + #> (1-Tabular Mie; 2-Mie Calculation; 3-Case Approx to Mie Theory) + #> VALUES 4 thru 6 attempts to use core-shell mixing model when the + #> aerosol mode has signficant black carbon core otherwise use Volume Mixed + #> model where optics determined by + #> (4-Tabular Mie; 5-Mie Calculation; 6-Case Approx to Mie Theory) + +#> Surface Tiled Aerosol and Gaseous Exchange Options +#> Only active if DepMod=stage at compile time +setenv CTM_MOSAIC N #> Output landuse specific deposition velocities [ default: N ] +setenv CTM_STAGE_P22 N #> Pleim et al. 2022 Aerosol deposition model [default: N] +setenv CTM_STAGE_E20 Y #> Emerson et al. 2020 Aerosol deposition model [default: Y] +setenv CTM_STAGE_S22 N #> Shu et al. 2022 (CMAQ v5.3) Aerosol deposition model [default: N] + +setenv IC_AERO_M2WET F #> Specify whether or not initial condition aerosol size distribution + #> is wet or dry [ default: F = dry ] +setenv BC_AERO_M2WET F #> Specify whether or not boundary condition aerosol size distribution + #> is wet or dry [ default: F = dry ] +setenv IC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from initial + #> conditions [ default: T = use aerosol surface area ] +setenv BC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from boundary + #> conditions [ default: T = use aerosol surface area ] + + +#> Vertical Extraction Options +setenv VERTEXT N +setenv VERTEXT_COORD_PATH ${WORKDIR}/lonlat.csv + +#> I/O Controls +setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ] +setenv FL_ERR_STOP N #> stop on inconsistent input files +setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ] +setenv IOAPI_OFFSET_64 YES #> support large timestep records (>2GB/timestep record) [ options: YES | NO ] +setenv IOAPI_CHECK_HEADERS N #> check file headers [ options: Y | N ] +setenv CTM_EMISCHK N #> Abort CMAQ if missing surrogates from emissions Input files + +#> Diagnostic Output Flags +setenv CTM_CKSUM Y #> checksum report [ default: Y ] +setenv CLD_DIAG N #> cloud diagnostic file [ default: N ] + +setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ] +setenv NLAYS_PHOTDIAG "1" #> Number of layers for PHOTDIAG2 and PHOTDIAG3 from + #> Layer 1 to NLAYS_PHOTDIAG [ default: all layers ] +#setenv NWAVE_PHOTDIAG "294 303 310 316 333 381 607" #> Wavelengths written for variables + #> in PHOTDIAG2 and PHOTDIAG3 + #> [ default: all wavelengths ] + +setenv CTM_SSEMDIAG N #> sea-spray emissions diagnostic file [ default: N ] +setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; + #> Ignore if CTM_WB_DUST = N +setenv CTM_DEPV_FILE N #> deposition velocities diagnostic file [ default: N ] +setenv VDIFF_DIAG_FILE N #> vdiff & possibly aero grav. sedimentation diagnostic file [ default: N ] +setenv LTNGDIAG N #> lightning diagnostic file [ default: N ] +setenv B3GTS_DIAG N #> BEIS mass emissions diagnostic file [ default: N ] +setenv CTM_WVEL Y #> save derived vertical velocity component to conc + #> file [ default: Y ] + +# ===================================================================== +#> Input Directories and Filenames +# ===================================================================== + +set ICpath = $INPDIR/icbc #> initial conditions input directory +set BCpath = $INPDIR/icbc #> boundary conditions input directory +set EMISpath = $INPDIR/emis #> gridded emissions input directory +set IN_PTpath = $INPDIR/emis #> point source emissions input directory +set IN_LTpath = $INPDIR/lightning #> lightning NOx input directory +set METpath = $INPDIR/met/mcipv5.4 #> meteorology input directory +#set JVALpath = $INPDIR/jproc #> offline photolysis rate table directory +set OMIpath = $BLD #> ozone column data for the photolysis model +set EPICpath = $INPDIR/epic #> EPIC putput for bidirectional NH3 +set SZpath = $INPDIR/surface #> surf zone file for in-line seaspray emissions + +# ===================================================================== +#> Begin Loop Through Simulation Days +# ===================================================================== +set rtarray = "" + +set TODAYG = ${START_DATE} +set TODAYJ = `date -ud "${START_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ +set START_DAY = ${TODAYJ} +set STOP_DAY = `date -ud "${END_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ +set NDAYS = 0 + +while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ + + set NDAYS = `echo "${NDAYS} + 1" | bc -l` + + #> Retrieve Calendar day Information + set YYYYMMDD = `date -ud "${TODAYG}" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD + set YYYYMM = `date -ud "${TODAYG}" +%Y%m` #> Convert YYYY-MM-DD to YYYYMM + set YYMMDD = `date -ud "${TODAYG}" +%y%m%d` #> Convert YYYY-MM-DD to YYMMDD + set MM = `date -ud "${TODAYG}" +%m` #> Convert YYYY-MM-DD to MM + set YYYYJJJ = $TODAYJ + + #> Calculate Yesterday's Date + set YESTERDAY = `date -ud "${TODAYG}-1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYJJJ + +# ===================================================================== +#> Set Output String and Propagate Model Configuration Documentation +# ===================================================================== + echo "" + echo "Set up input and output files for Day ${TODAYG}." + + #> set output file name extensions + setenv CTM_APPL ${RUNID}_${YYYYMMDD} + + #> Copy Model Configuration To Output Folder + if ( ! -d "$OUTDIR" ) mkdir -p $OUTDIR + cp $BLD/CCTM_${VRSN}.cfg $OUTDIR/CCTM_${CTM_APPL}.cfg + +# ===================================================================== +#> Input Files (Some are Day-Dependent) +# ===================================================================== + + #> Initial conditions + if ($NEW_START == true || $NEW_START == TRUE ) then + setenv ICFILE CCTM_ICON_v55_CRACMM2_STAGE_12NE3_20180701.nc + setenv INIT_MEDC_1 notused + else + set ICpath = $OUTDIR + setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc + setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc + endif + + #> Boundary conditions + set BCFILE = BCON_v55_CRACMM2_STAGE_2018_12NE3_${YYYYMMDD}.nc + + #> Off-line photolysis rates + #set JVALfile = JTABLE_${YYYYJJJ} + + #> Ozone column data + set OMIfile = OMI_1979_to_2019.dat + + #> Optics file + set OPTfile = PHOT_OPTICS.dat + + #> MCIP meteorology files + setenv GRID_BDY_2D $METpath/GRIDBDY2D_12NE3_${YYYYMMDD}.nc # GRID files are static, not day-specific + setenv GRID_CRO_2D $METpath/GRIDCRO2D_12NE3_${YYYYMMDD}.nc + setenv GRID_CRO_3D $METpath/GRIDCRO3D_12NE3_${YYYYMMDD}.nc + setenv GRID_DOT_2D $METpath/GRIDDOT2D_12NE3_${YYYYMMDD}.nc + setenv MET_CRO_2D $METpath/METCRO2D_12NE3_${YYYYMMDD}.nc + setenv MET_CRO_3D $METpath/METCRO3D_12NE3_${YYYYMMDD}.nc + setenv MET_DOT_3D $METpath/METDOT3D_12NE3_${YYYYMMDD}.nc + setenv MET_BDY_3D $METpath/METBDY3D_12NE3_${YYYYMMDD}.nc + setenv LUFRAC_CRO $METpath/LUFRAC_CRO_12NE3_${YYYYMMDD}.nc + + #> Control Files + #> + #> IMPORTANT NOTE + #> + #> The DESID control files defined below are an integral part of controlling the behavior of the model simulation. + #> Among other things, they control the mapping of species in the emission files to chemical species in the model and + #> several aspects related to the simulation of organic aerosols. + #> Please carefully review the DESID control files to ensure that they are configured to be consistent with the assumptions + #> made when creating the emission files defined below and the desired representation of organic aerosols. + #> For further information, please see: + #> + AERO7 Release Notes section on 'Required emission updates': + #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Release_Notes/aero7_overview.md + #> + CMAQ User's Guide section 6.9.3 on 'Emission Compatability': + #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.9.3_Emission_Compatability + #> + Emission Control (DESID) Documentation in the CMAQ User's Guide: + #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md + #> + setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml + setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml + + #> The following namelist configures aggregated output (via the Explicit and Lumped + #> Air Quality Model Output (ELMO) Module), domain-wide budget output, and chemical + #> family output. + setenv MISC_CTRL_NML ${BLD}/CMAQ_Control_Misc.nml + + #> The following namelist controls the mapping of meteorological land use types and the NH3 and Hg emission + #> potentials + setenv STAGECTRL_NML ${BLD}/CMAQ_Control_STAGE.nml + + #> Spatial Masks For Emissions Scaling + #setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file + setenv CMAQ_MASKS $INPDIR/surface/GRIDMASK_STATES_12NE3.nc + + #> Gridded Emissions Files + setenv N_EMIS_GR 2 + set EMISfile = emis_mole_all_${YYYYMMDD}_12NE3_nobeis_norwc_WR705_2018gc2.ncf + setenv GR_EMIS_001 ${EMISpath}/merged_nobeis_norwc/${EMISfile} + setenv GR_EMIS_LAB_001 GRIDDED_EMIS + setenv GR_EM_SYM_DATE_001 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE + + set EMISfile = emis_mole_rwc_${YYYYMMDD}_12NE3_cmaq_cracmmv2_WR705_2018gc2.ncf + setenv GR_EMIS_002 ${EMISpath}/rwc/${EMISfile} + setenv GR_EMIS_LAB_002 GR_RES_FIRES + setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE + + #> In-line point emissions configuration + setenv N_EMIS_PT 10 #> Number of elevated source groups + + set STKCASEE = 12US1_cmaq_cracmmv2_WR705_2018gc2 # In-line Emission Rate File Suffix + set STKCASEG = 12US1_WR705_2018gc2 # Stack parameter File Suffix + + # Time-Independent Stack Parameters for Inline Point Sources + setenv STK_GRPS_001 $IN_PTpath/ptnonipm/stack_groups_ptnonipm_${STKCASEG}.ncf + setenv STK_GRPS_002 $IN_PTpath/ptegu/stack_groups_ptegu_${STKCASEG}.ncf + setenv STK_GRPS_003 $IN_PTpath/othpt/stack_groups_othpt_${STKCASEG}.ncf + setenv STK_GRPS_004 $IN_PTpath/ptagfire/stack_groups_ptagfire_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_005 $IN_PTpath/ptfire_grass/stack_groups_ptfire_grass_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_006 $IN_PTpath/ptfire/stack_groups_ptfire_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_007 $IN_PTpath/ptfire_othna/stack_groups_ptfire_othna_${YYYYMMDD}_${STKCASEG}.ncf + setenv STK_GRPS_008 $IN_PTpath/pt_oilgas/stack_groups_pt_oilgas_${STKCASEG}.ncf + setenv STK_GRPS_009 $IN_PTpath/cmv_c3_12/stack_groups_cmv_c3_12_${STKCASEG}.ncf + setenv STK_GRPS_010 $IN_PTpath/cmv_c1c2_12/stack_groups_cmv_c1c2_12_${STKCASEG}.ncf + + # Emission Rates for Inline Point Sources + setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_004 $IN_PTpath/ptagfire/inln_mole_ptagfire_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_005 $IN_PTpath/ptfire_grass/inln_mole_ptfire_grass_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_006 $IN_PTpath/ptfire/inln_mole_ptfire_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_007 $IN_PTpath/ptfire_othna/inln_mole_ptfire_othna_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_008 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_009 $IN_PTpath/cmv_c3_12/inln_mole_cmv_c3_12_${YYYYMMDD}_${STKCASEE}.ncf + setenv STK_EMIS_010 $IN_PTpath/cmv_c1c2_12/inln_mole_cmv_c1c2_12_${YYYYMMDD}_${STKCASEE}.ncf + + # Label Each Emissions Stream + setenv STK_EMIS_LAB_001 PT_NONEGU + setenv STK_EMIS_LAB_002 PT_EGU + setenv STK_EMIS_LAB_003 PT_OTHER + setenv STK_EMIS_LAB_004 PT_AGFIRES + setenv STK_EMIS_LAB_005 PT_RXFIRES + setenv STK_EMIS_LAB_006 PT_FIRES + setenv STK_EMIS_LAB_007 PT_OTHFIRES + setenv STK_EMIS_LAB_008 PT_OILGAS + setenv STK_EMIS_LAB_009 PT_CMV_C3 + setenv STK_EMIS_LAB_010 PT_CMV_C1C2 + + # Allow CMAQ to Use Point Source files with dates that do not + # match the internal model date + # To change default behaviour please see Users Guide for EMIS_SYM_DATE + setenv STK_EM_SYM_DATE_001 F + setenv STK_EM_SYM_DATE_002 F + setenv STK_EM_SYM_DATE_003 F + setenv STK_EM_SYM_DATE_004 F + setenv STK_EM_SYM_DATE_005 F + setenv STK_EM_SYM_DATE_006 F + setenv STK_EM_SYM_DATE_007 F + setenv STK_EM_SYM_DATE_008 F + + #> Lightning NOx configuration + if ( $CTM_LTNG_NO == 'Y' ) then + setenv LTNGNO "InLine" #> set LTNGNO to "Inline" to activate in-line calculation + + #> In-line lightning NOx options + setenv USE_NLDN Y #> use hourly NLDN strike file [ default: Y ] + if ( $USE_NLDN == Y ) then + setenv NLDN_STRIKES ${IN_LTpath}/NLDN_12km_60min_${YYYYMMDD}.ioapi + endif + setenv LTNGPARMS_FILE ${IN_LTpath}/LTNG_AllParms_12NE3.nc #> lightning parameter file + endif + + #> In-line biogenic emissions configuration + if ( $CTM_BIOGEMIS_BE == 'Y' ) then + set IN_BEISpath = ${INPDIR}/surface + setenv GSPRO $BLD/gspro_biogenics.txt + setenv BEIS_NORM_EMIS $IN_BEISpath/beis4_beld6_norm_emis.12NE3.nc + setenv BEIS_SOILINP $OUTDIR/CCTM_BSOILOUT_${RUNID}_${YESTERDAY}.nc + #> Biogenic NO soil input file; ignore if NEW_START = TRUE + endif + if ( $CTM_BIOGEMIS_MG == 'Y' ) then + setenv MEGAN_SOILINP $OUTDIR/CCTM_MSOILOUT_${RUNID}_${YESTERDAY}.nc + #> Biogenic NO soil input file; ignore if INITIAL_RUN = Y + #> ; ignore if IGNORE_SOILINP = Y + setenv MEGAN_CTS $SZpath/megan3.2/CT3_CONUS.ncf + setenv MEGAN_EFS $SZpath/megan3.2/EFMAPS_CONUS.ncf + setenv MEGAN_LDF $SZpath/megan3.2/LDF_CONUS.ncf + if ($BDSNP_MEGAN == 'Y') then + setenv BDSNPINP $OUTDIR/CCTM_BDSNPOUT_${RUNID}_${YESTERDAY}.nc + setenv BDSNP_FFILE $SZpath/megan3.2/FERT_tceq_12km.ncf + setenv BDSNP_NFILE $SZpath/megan3.2/NDEP_tceq_12km.ncf + setenv BDSNP_LFILE $SZpath/megan3.2/LANDTYPE_tceq_12km.ncf + setenv BDSNP_AFILE $SZpath/megan3.2/ARID_tceq_12km.ncf + setenv BDSNP_NAFILE $SZpath/megan3.2/NONARID_tceq_12km.ncf + endif + endif + + #> In-line sea spray emissions configuration + setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12NE3.nc #> horizontal grid-dependent ocean file + + #> Bidirectional ammonia configuration + if ( $CTM_ABFLUX == 'Y' ) then + setenv E2C_SOIL ${EPICpath}/2018r1_EPIC0509_12NE3_soil.nc + setenv E2C_CHEM ${EPICpath}/2018r1_EPIC0509_12NE3_time${YYYYMMDD}.nc + setenv E2C_CHEM_YEST ${EPICpath}/2018r1_EPIC0509_12NE3_time${YESTERDAY}.nc + setenv E2C_LU ${EPICpath}/beld4_12NE3_2011.nc + endif + +#> Inline Process Analysis + setenv CTM_PROCAN N #> use process analysis [ default: N] + if ( $?CTM_PROCAN ) then # $CTM_PROCAN is defined + if ( $CTM_PROCAN == 'Y' || $CTM_PROCAN == 'T' ) then +#> process analysis global column, row and layer ranges +# setenv PA_BCOL_ECOL "10 90" # default: all columns +# setenv PA_BROW_EROW "10 80" # default: all rows +# setenv PA_BLEV_ELEV "1 4" # default: all levels + setenv PACM_INFILE ${NMLpath}/pa_${MECH}.ctl + setenv PACM_REPORT $OUTDIR/"PA_REPORT".${YYYYMMDD} + endif + endif + +#> Integrated Source Apportionment Method (ISAM) Options + setenv CTM_ISAM N + if ( $?CTM_ISAM ) then + if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then + setenv SA_IOLIST ${WORKDIR}/isam_control.2018_12NE3.txt + setenv ISAM_BLEV_ELEV " 1 1" + setenv AISAM_BLEV_ELEV " 1 1" + + #> Set Up ISAM Initial Condition Flags + if ($NEW_START == true || $NEW_START == TRUE ) then + setenv ISAM_NEW_START Y + setenv ISAM_PREVDAY + else + setenv ISAM_NEW_START N + setenv ISAM_PREVDAY "$OUTDIR/CCTM_SA_CGRID_${RUNID}_${YESTERDAY}.nc" + endif + + #> Set Up ISAM Output Filenames + setenv SA_ACONC_1 "$OUTDIR/CCTM_SA_ACONC_${CTM_APPL}.nc -v" + setenv SA_CONC_1 "$OUTDIR/CCTM_SA_CONC_${CTM_APPL}.nc -v" + setenv SA_DD_1 "$OUTDIR/CCTM_SA_DRYDEP_${CTM_APPL}.nc -v" + setenv SA_WD_1 "$OUTDIR/CCTM_SA_WETDEP_${CTM_APPL}.nc -v" + setenv SA_CGRID_1 "$OUTDIR/CCTM_SA_CGRID_${CTM_APPL}.nc -v" + + #> Set optional ISAM regions files + setenv ISAM_REGIONS $INPDIR/surface/GRIDMASK_STATES_12NE3.nc + + #> Options used to favor tracked species in reaction for Ozone-NOx chemistry + setenv ISAM_O3_WEIGHTS 5 # weights for tracked species Default is 5 + # OPTIONS + # 1 does not weight any species + # 2 weights NOx and subset of NOz species + # 3 uses with from option 2 plus weight OVOC species, organic radicals and operators + # 4 weight OVOC species, organic radicals and operators + # 5 toggles between two weighting set based on VOC and NOx limited ozone production + # Below options only used if ISAM_O3_WEIGHTS set to 5 + setenv ISAM_NOX_CASE 2 # weights for tracked species when ozone production is NOx limited. Default is 2 + setenv ISAM_VOC_CASE 4 # weights for tracked species when ozone production is VOC limited. Default is 4 + setenv VOC_NOX_TRANS 0.35 # value of Prod H2O2 over Prod HNO3 less than where + # ISAM_VOC_CASE weights are used. Otherwise, ISAM_NOX_CASE + # weights are used. Default is 0.35 + + endif + endif + + +#> Sulfur Tracking Model (STM) + setenv STM_SO4TRACK N #> sulfur tracking [ default: N ] + if ( $?STM_SO4TRACK ) then + if ( $STM_SO4TRACK == 'Y' || $STM_SO4TRACK == 'T' ) then + + #> option to normalize sulfate tracers [ default: Y ] + setenv STM_ADJSO4 Y + + endif + endif + +#> Decoupled Direct Method in 3D (DDM-3D) Options + setenv CTM_DDM3D N # Sets up requisite script settings for DDM-3D (default is N/F) + # Additionally requires for CCTM to be compiled for DDM-3D simulations + + set NPMAX = 1 # Number of sensitivity parameters defined in SEN_INPUT + setenv SEN_INPUT ${WORKDIR}/sensinput.2018_12NE3.dat + + setenv DDM3D_HIGH N # allow higher-order sensitivity parameters in SEN_INPUT [ T | Y | F | N ] (default is N/F) + + if ($NEW_START == true || $NEW_START == TRUE ) then + setenv DDM3D_RST N # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) + set S_ICpath = # sensitivity fields are initialized to 0.0 on the first hour of the first day + set S_ICfile = + else + setenv DDM3D_RST Y # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) + set S_ICpath = $OUTDIR + set S_ICfile = CCTM_SENGRID_${RUNID}_${YESTERDAY}.nc + endif + + setenv CTM_NPMAX $NPMAX + setenv CTM_SENS_1 "$OUTDIR/CCTM_SENGRID_${CTM_APPL}.nc -v" + setenv A_SENS_1 "$OUTDIR/CCTM_ASENS_${CTM_APPL}.nc -v" + setenv CTM_SWETDEP_1 "$OUTDIR/CCTM_SENWDEP_${CTM_APPL}.nc -v" + setenv CTM_SDRYDEP_1 "$OUTDIR/CCTM_SENDDEP_${CTM_APPL}.nc -v" + setenv INIT_SENS_1 $S_ICpath/$S_ICfile + + +# ===================================================================== +#> Output Files +# ===================================================================== + + #> set output file names + setenv S_CGRID "$OUTDIR/CCTM_CGRID_${CTM_APPL}.nc" #> 3D Inst. Concentrations + setenv CTM_CONC_1 "$OUTDIR/CCTM_CONC_${CTM_APPL}.nc -v" #> On-Hour Concentrations + setenv A_CONC_1 "$OUTDIR/CCTM_ACONC_${CTM_APPL}.nc -v" #> Hourly Avg. Concentrations + setenv MEDIA_CONC "$OUTDIR/CCTM_MEDIA_CONC_${CTM_APPL}.nc -v" #> NH3 Conc. in Media + setenv CTM_DRY_DEP_1 "$OUTDIR/CCTM_DRYDEP_${CTM_APPL}.nc -v" #> Hourly Dry Deposition + setenv CTM_DEPV_DIAG "$OUTDIR/CCTM_DEPV_${CTM_APPL}.nc -v" #> Dry Deposition Velocities + setenv B3GTS_S "$OUTDIR/CCTM_B3GTS_S_${CTM_APPL}.nc -v" #> Biogenic Emissions + setenv BEIS_SOILOUT "$OUTDIR/CCTM_BSOILOUT_${CTM_APPL}.nc" #> Soil Emissions + setenv MEGAN_SOILOUT "$OUTDIR/CCTM_MSOILOUT_${CTM_APPL}.nc" #> Soil Emissions + setenv BDSNPOUT "$OUTDIR/CCTM_BDSNPOUT_${CTM_APPL}.nc" #> Soil Emissions + setenv CTM_WET_DEP_1 "$OUTDIR/CCTM_WETDEP1_${CTM_APPL}.nc -v" #> Wet Dep From All Clouds + setenv CTM_WET_DEP_2 "$OUTDIR/CCTM_WETDEP2_${CTM_APPL}.nc -v" #> Wet Dep From SubGrid Clouds + setenv CTM_ELMO_1 "$OUTDIR/CCTM_ELMO_${CTM_APPL}.nc -v" #> On-Hour Particle Diagnostics + setenv CTM_AELMO_1 "$OUTDIR/CCTM_AELMO_${CTM_APPL}.nc -v" #> Hourly Avg. Particle Diagnostics + setenv CTM_RJ_1 "$OUTDIR/CCTM_PHOTDIAG1_${CTM_APPL}.nc -v" #> 2D Surface Summary from Inline Photolysis + setenv CTM_RJ_2 "$OUTDIR/CCTM_PHOTDIAG2_${CTM_APPL}.nc -v" #> 3D Photolysis Rates + setenv CTM_RJ_3 "$OUTDIR/CCTM_PHOTDIAG3_${CTM_APPL}.nc -v" #> 3D Optical and Radiative Results from Photolysis + setenv CTM_SSEMIS_1 "$OUTDIR/CCTM_SSEMIS_${CTM_APPL}.nc -v" #> Sea Spray Emissions + setenv CTM_DUST_EMIS_1 "$OUTDIR/CCTM_DUSTEMIS_${CTM_APPL}.nc -v" #> Dust Emissions + setenv CTM_BUDGET "$OUTDIR/CCTM_BUDGET_${CTM_APPL}.txt -v" #> Budget [Default Off] + setenv CTM_IPR_1 "$OUTDIR/CCTM_PA_1_${CTM_APPL}.nc -v" #> Process Analysis + setenv CTM_IPR_2 "$OUTDIR/CCTM_PA_2_${CTM_APPL}.nc -v" #> Process Analysis + setenv CTM_IPR_3 "$OUTDIR/CCTM_PA_3_${CTM_APPL}.nc -v" #> Process Analysis + setenv CTM_IRR_1 "$OUTDIR/CCTM_IRR_1_${CTM_APPL}.nc -v" #> Chem Process Analysis + setenv CTM_IRR_2 "$OUTDIR/CCTM_IRR_2_${CTM_APPL}.nc -v" #> Chem Process Analysis + setenv CTM_IRR_3 "$OUTDIR/CCTM_IRR_3_${CTM_APPL}.nc -v" #> Chem Process Analysis + setenv CTM_DRY_DEP_MOS "$OUTDIR/CCTM_DDMOS_${CTM_APPL}.nc -v" #> Dry Dep + setenv CTM_DEPV_MOS "$OUTDIR/CCTM_DEPVMOS_${CTM_APPL}.nc -v" #> Dry Dep Velocity + setenv CTM_VDIFF_DIAG "$OUTDIR/CCTM_VDIFF_DIAG_${CTM_APPL}.nc -v" #> Vertical Dispersion Diagnostic + setenv CTM_VSED_DIAG "$OUTDIR/CCTM_VSED_DIAG_${CTM_APPL}.nc -v" #> Particle Grav. Settling Velocity + setenv CTM_LTNGDIAG_1 "$OUTDIR/CCTM_LTNGHRLY_${CTM_APPL}.nc -v" #> Hourly Avg Lightning NO + setenv CTM_LTNGDIAG_2 "$OUTDIR/CCTM_LTNGCOL_${CTM_APPL}.nc -v" #> Column Total Lightning NO + setenv CTM_VEXT_1 "$OUTDIR/CCTM_VEXT_${CTM_APPL}.nc -v" #> On-Hour 3D Concs at select sites + + #> set floor file (neg concs) + setenv FLOOR_FILE ${OUTDIR}/FLOOR_${CTM_APPL}.txt + + #> look for existing log files and output files + ( ls CTM_LOG_???.${CTM_APPL} > buff.txt ) >& /dev/null + ( ls ${LOGDIR}/CTM_LOG_???.${CTM_APPL} >> buff.txt ) >& /dev/null + set log_test = `cat buff.txt`; rm -f buff.txt + + set OUT_FILES = (${FLOOR_FILE} ${S_CGRID} ${CTM_CONC_1} ${A_CONC_1} ${MEDIA_CONC} \ + ${CTM_DRY_DEP_1} $CTM_DEPV_DIAG $B3GTS_S $MEGAN_SOILOUT $BEIS_SOILOUT $BDSNPOUT \ + $CTM_WET_DEP_1 $CTM_WET_DEP_2 $CTM_ELMO_1 $CTM_AELMO_1 \ + $CTM_RJ_1 $CTM_RJ_2 $CTM_RJ_3 $CTM_SSEMIS_1 $CTM_DUST_EMIS_1 $CTM_IPR_1 $CTM_IPR_2 \ + $CTM_IPR_3 $CTM_BUDGET $CTM_IRR_1 $CTM_IRR_2 $CTM_IRR_3 $CTM_DRY_DEP_MOS \ + $CTM_DEPV_MOS $CTM_VDIFF_DIAG $CTM_VSED_DIAG $CTM_LTNGDIAG_1 $CTM_LTNGDIAG_2 $CTM_VEXT_1 ) + if ( $?CTM_ISAM ) then + if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then + set OUT_FILES = (${OUT_FILES} ${SA_ACONC_1} ${SA_CONC_1} ${SA_DD_1} ${SA_WD_1} \ + ${SA_CGRID_1} ) + endif + endif + if ( $?CTM_DDM3D ) then + if ( $CTM_DDM3D == 'Y' || $CTM_DDM3D == 'T' ) then + set OUT_FILES = (${OUT_FILES} ${CTM_SENS_1} ${A_SENS_1} ${CTM_SWETDEP_1} ${CTM_SDRYDEP_1} ) + endif + endif + set OUT_FILES = `echo $OUT_FILES | sed "s; -v;;g" | sed "s;MPI:;;g" ` + ( ls $OUT_FILES > buff.txt ) >& /dev/null + set out_test = `cat buff.txt`; rm -f buff.txt + + #> delete previous output if requested + if ( $CLOBBER_DATA == true || $CLOBBER_DATA == TRUE ) then + echo + echo "Existing Logs and Output Files for Day ${TODAYG} Will Be Deleted" + + #> remove previous log files + foreach file ( ${log_test} ) + #echo "Deleting log file: $file" + /bin/rm -f $file + end + + #> remove previous output files + foreach file ( ${out_test} ) + #echo "Deleting output file: $file" + /bin/rm -f $file + end + /bin/rm -f ${OUTDIR}/CCTM_DESID*${CTM_APPL}.nc + + else + #> error if previous log files exist + if ( "$log_test" != "" ) then + echo "*** Logs exist - run ABORTED ***" + echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" + echo "*** and these files will be automatically deleted. ***" + exit 1 + endif + + #> error if previous output files exist + if ( "$out_test" != "" ) then + echo "*** Output Files Exist - run will be ABORTED ***" + foreach file ( $out_test ) + echo " cannot delete $file" + end + echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" + echo "*** and these files will be automatically deleted. ***" + exit 1 + endif + endif + + #> for the run control ... + setenv CTM_STDATE $YYYYJJJ + setenv CTM_STTIME $STTIME + setenv CTM_RUNLEN $NSTEPS + setenv CTM_TSTEP $TSTEP + setenv INIT_CONC_1 $ICpath/$ICFILE + setenv BNDY_CONC_1 $BCpath/$BCFILE + setenv OMI $OMIpath/$OMIfile + setenv MIE_TABLE $OUTDIR/mie_table_coeffs_${compilerString}.txt + setenv OPTICS_DATA $OMIpath/$OPTfile + #setenv XJ_DATA $JVALpath/$JVALfile + + #> species defn & photolysis + setenv gc_matrix_nml ${NMLpath}/GC_$MECH.nml + setenv ae_matrix_nml ${NMLpath}/AE_$MECH.nml + setenv nr_matrix_nml ${NMLpath}/NR_$MECH.nml + setenv tr_matrix_nml ${NMLpath}/Species_Table_TR_0.nml + + #> check for photolysis input data + setenv CSQY_DATA ${NMLpath}/CSQY_DATA_$MECH + + if (! (-e $CSQY_DATA ) ) then + echo " $CSQY_DATA not found " + exit 1 + endif + if (! (-e $OPTICS_DATA ) ) then + echo " $OPTICS_DATA not found " + exit 1 + endif + +# =================================================================== +#> Execution Portion +# =================================================================== + + #> Print attributes of the executable + if ( $CTM_DIAG_LVL != 0 ) then + ls -l $BLD/$EXEC + size $BLD/$EXEC + unlimit + limit + endif + + #> Print Startup Dialogue Information to Standard Out + echo + echo "CMAQ Processing of Day $YYYYMMDD Began at `date`" + echo + + #> Executable call for single PE, uncomment to invoke + #( /usr/bin/time -p $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt + + #> Executable call for multi PE, configure for your system + # set MPI = /usr/local/intel/impi/3.2.2.006/bin64 + # set MPIRUN = $MPI/mpirun + ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt + + #> Harvest Timing Output so that it may be reported below + set rtarray = "${rtarray} `tail -3 buff_${EXECUTION_ID}.txt | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | head -1` " + rm -rf buff_${EXECUTION_ID}.txt + + #> Abort script if abnormal termination + if ( ! -e $OUTDIR/CCTM_CGRID_${CTM_APPL}.nc ) then + echo "" + echo "**************************************************************" + echo "** Runscript Detected an Error: CGRID file was not written. **" + echo "** This indicates that CMAQ was interrupted or an issue **" + echo "** exists with writing output. The runscript will now **" + echo "** abort rather than proceeding to subsequent days. **" + echo "**************************************************************" + break + endif + + #> Print Concluding Text + echo + echo "CMAQ Processing of Day $YYYYMMDD Finished at `date`" + echo + echo "\\\\\=====\\\\\=====\\\\\=====\\\\\=====/////=====/////=====/////=====/////" + echo + +# =================================================================== +#> Finalize Run for This Day and Loop to Next Day +# =================================================================== + + #> Save Log Files and Move on to Next Simulation Day + mv CTM_LOG_???.${CTM_APPL} $LOGDIR + if ( $CTM_DIAG_LVL != 0 ) then + mv CTM_DIAG_???.${CTM_APPL} $LOGDIR + endif + + #> The next simulation day will, by definition, be a restart + setenv NEW_START false + + #> Increment both Gregorian and Julian Days + set TODAYG = `date -ud "${TODAYG}+1days" +%Y-%m-%d` #> Add a day for tomorrow + set TODAYJ = `date -ud "${TODAYG}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ + +end #Loop to the next Simulation Day + +# =================================================================== +#> Generate Timing Report +# =================================================================== +set RTMTOT = 0 +foreach it ( `seq ${NDAYS}` ) + set rt = `echo ${rtarray} | cut -d' ' -f${it}` + set RTMTOT = `echo "${RTMTOT} + ${rt}" | bc -l` +end + +set RTMAVG = `echo "scale=2; ${RTMTOT} / ${NDAYS}" | bc -l` +set RTMTOT = `echo "scale=2; ${RTMTOT} / 1" | bc -l` + +echo +echo "==================================" +echo " ***** CMAQ TIMING REPORT *****" +echo "==================================" +echo "Start Day: ${START_DATE}" +echo "End Day: ${END_DATE}" +echo "Number of Simulation Days: ${NDAYS}" +echo "Domain Name: ${GRID_NAME}" +echo "Number of Grid Cells: ${NCELLS} (ROW x COL x LAY)" +echo "Number of Layers: ${NZ}" +echo "Number of Processes: ${NPROCS}" +echo " All times are in seconds." +echo +echo "Num Day Wall Time" +set d = 0 +set day = ${START_DATE} +foreach it ( `seq ${NDAYS}` ) + # Set the right day and format it + set d = `echo "${d} + 1" | bc -l` + set n = `printf "%02d" ${d}` + + # Choose the correct time variables + set rt = `echo ${rtarray} | cut -d' ' -f${it}` + + # Write out row of timing data + echo "${n} ${day} ${rt}" + + # Increment day for next loop + set day = `date -ud "${day}+1days" +%Y-%m-%d` +end +echo " Total Time = ${RTMTOT}" +echo " Avg. Time = ${RTMAVG}" + +exit From d288e44822b9a28f0875cb9c93cd5fb26e3a8411 Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 14:16:40 -0400 Subject: [PATCH 311/375] update --- .../Tutorials/CMAQ_UG_tutorial_benchmark.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index 94888f461..3f27a85da 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -160,16 +160,6 @@ The build directory parameters for the benchmark test case include the following To configure these parameters, the CCTM Science Modules within the bldit_cctm.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in [Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). -To keep the BLD directory name unique for each mechansim, verify that the bldit_cctm script uses the following: - -``` -#> Verify that the "BLD" directory for checking out and compiling source code uses the mechanism and deposition scheme in the name. - if ( $?Debug_CCTM ) then - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug - else - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} - endif -``` Verify that the dry deposition scheme to use M3DRY ``` From 70cb49ba2f2a88c2f10097532eb76b9dbb6b988d Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 14:18:03 -0400 Subject: [PATCH 312/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index 3f27a85da..f29c5d762 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -252,7 +252,7 @@ The benchmark output results will have been placed in the directory: $CMAQ_DATA/output_CCTM_v55_[compiler]_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry ``` -and can include upto 23 netCDF-type files: ACONC, AOD_DIAG, AELMO, APMVIS, B3GTS_S, BSOILOUT, BUDGET, CGRID, CONC, DEPV, DRYDEP, DUSTEMIS, LTNGCOL, LTNGHRLY, MEDIA_CONC, PHOTDIAG1, PHOTDIAG2, ELMO, PMVIS, SOILOUT, SSEMIS, VDIFF, VSED, WETDEP1, and WETDEP2. +and can include upto 23 netCDF-type files: ACONC, AELMO, B3GTS_S, BSOILOUT, BUDGET, CGRID, CONC, DEPV, DRYDEP, DUSTEMIS, LTNGCOL, LTNGHRLY, MEDIA_CONC, PHOTDIAG1, PHOTDIAG2, ELMO, SOILOUT, SSEMIS, VDIFF, VSED, WETDEP1, and WETDEP2. Common errors in a CCTM simulation include the following: From 7f2a3a1420a76835267f064613c81f56254768d4 Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 14:20:49 -0400 Subject: [PATCH 313/375] update --- .../CMAQ_UG_tutorial_benchmark_cb6r5_stage.md | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md index 16eb22c2b..748eb32be 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md @@ -174,18 +174,6 @@ Verify the Mechanism is set to cb6r5_ae7_aq setenv Mechanism cb6r5_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) ``` - -Verify that the bldit_cctm.csh script contains the following lines (creating a unique BLD directory name for each combination of mechansim and dry deposition scheme). - -#> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. - if ( $?Debug_CCTM ) then - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug - else - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} - endif -``` - - Following the requisite changes to the CCTM build script, use the following command to create the CCTM executable: ``` From 5f0420f80cd2e2307fc909a2ed496ea5e5c9b94a Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 14:21:17 -0400 Subject: [PATCH 314/375] update --- .../CMAQ_UG_tutorial_benchmark_cracmm2_stage.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md index 9f0679c9d..3f8b3e5cd 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md @@ -153,17 +153,6 @@ cp bldit_cctm.csh bldit_cctm_cracmm2_stage.csh vi bldit_cctm_cracmm2_stage.csh ``` -Verify that the bldit_cctm_cracmm2_stage.csh script uses the name of the mechanism and the dry deposition scheme in the BLD directory name: - -``` -#> Set and create the "BLD" directory for checking out and compiling source code. Move current directory to that build directory. - if ( $?Debug_CCTM ) then - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod}_debug - else - set Bld = $CMAQ_HOME/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${Mechanism}_${DepMod} - endif -``` - Modify the dry deposition scheme to use STAGE instead of M3DRY ``` #> Set Dry Deposition Scheme to Stage From 8177afd25366a4832e16672489658c8e44521a2b Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 14:24:52 -0400 Subject: [PATCH 315/375] update --- .../CMAQ_UG_tutorial_benchmark_cb6r5_stage.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md index 748eb32be..e558302dc 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md @@ -211,28 +211,26 @@ Verify that the Mechanism is set to cb6r5_ae7_aq. set MECH = cb6r5_ae7_aq #> Mechanism ID ``` -Verify the APPL name specifies both the mechanism and the dry deposition scheme +Verify that the Deposition is set to stage ``` - set APPL = Bench_2018_12NE3_${MECH}_stage #> Application Name (e.g. Gridname) +set DEP = stage #>Depends on bldit_cctm.csh settings ``` - -Verify that the BLD directory name specifies both the mechanism and the dry deposition scheme +Verify the APPL name specifies both the mechanism and the dry deposition scheme ``` - set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString}_${MECH}_stage + set APPL = Bench_2018_12NE3_${MECH}_${DEP} #> Application Name (e.g. Gridname) ``` - Specify the MPI configuration and compiler and input directory that you will use: ``` setenv compiler gcc setenv compilerVrsn 9.5 -setenv INPDIR ${CMAQ_DATA}/2018_12NE3 +setenv INPDIR ${CMAQ_DATA}/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input/2018_12NE3 @ NPCOL 8 ; @ NPROW = 4 ``` From b117f36ce0a9898ae9cfb5c1d1ff06624a6cf10f Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 14:33:53 -0400 Subject: [PATCH 316/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md | 1 - 1 file changed, 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index f29c5d762..7fbfbce01 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -160,7 +160,6 @@ The build directory parameters for the benchmark test case include the following To configure these parameters, the CCTM Science Modules within the bldit_cctm.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in [Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). - Verify that the dry deposition scheme to use M3DRY ``` #> Set Dry Deposition Scheme to m3dry From f636c0e4d86dbae3fceaa80f38865772da337d29 Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 14:38:26 -0400 Subject: [PATCH 317/375] update --- .../CMAQ_UG_tutorial_benchmark_cracmm2_stage.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md index 3f8b3e5cd..9ae9d45ea 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md @@ -112,6 +112,14 @@ tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output_CRACMM2.tar.gz Create the model executables for CCTM using the steps shown below. +Create a bldit_cctm script for this benchmark and verify or modify the settings listed below. + +``` +cp bldit_cctm.csh bldit_cctm_cracmm2_stage.csh +vi bldit_cctm_cracmm2_stage.csh +``` + + ##### Configuration for multi-processor runs (default): ``` @@ -146,12 +154,6 @@ To configure these parameters, the CCTM Science Modules within the bldit_cctm.cs [Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). -Create a bldit script for this benchmark. - -``` -cp bldit_cctm.csh bldit_cctm_cracmm2_stage.csh -vi bldit_cctm_cracmm2_stage.csh -``` Modify the dry deposition scheme to use STAGE instead of M3DRY ``` From 7002d398c17cd4a3bfb597eef2a950c2da33538f Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 14:42:44 -0400 Subject: [PATCH 318/375] update --- .../Tutorials/gcc_install_netcdf_for_nc4_compression.csh | 1 + 1 file changed, 1 insertion(+) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh index f91ee8e0d..a7906dee5 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh @@ -72,6 +72,7 @@ set echo # installation instructions tar xvf v4.5.4.tar.gz cd netcdf-fortran-4.5.4 + ## Note, if non-standard locaions are used for the following compilers, you may need to specify their locations here: setenv FC gfortran setenv F90 gfortran setenv F77 gfortran From eb3b6e5424919f323278abef5d7e8bb0a759ed6e Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 14:44:28 -0400 Subject: [PATCH 319/375] update --- ...gcc_install_netcdf_for_nc4_compression.csh | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh index a7906dee5..26abeafd8 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh @@ -116,19 +116,19 @@ set echo # ---------------------------------- # NOTE: the openmpi directory path is hard coded on this script and needs to be updated for your local machine ## - cd $INSTDIR - wget https://parallel-netcdf.github.io/Release/pnetcdf-1.12.1.tar.gz - tar xvf pnetcdf-1.12.1.tar.gz - rm -f pnetcdf-1.12.1.tar.gz - cd pnetcdf-1.12.1 - #export CFLAGS="-O3 -fPIC" - #export FFLAGS="-O3 -fPIC" - #export CXXFLAGS="-O3 -fPIC" - #export FCFLAGS="-O3 -fPIC" - #./configure --prefix=$INSTDIR MPIF77=mpif90 MPIF90=mpif90 MPICC=mpicc MPICXX=mpicxx --with-mpi=/nas/longleaf/apps/r/4.1.3/openmpi - ./configure --prefix=$INSTDIR MPIF77=mpif90 MPIF90=mpif90 MPICC=mpicc MPICXX=mpicxx --with-mpi=/nas/longleaf/apps-dogwood/mpi/gcc_9.1.0/openmpi_4.0.1 - make |& tee make.gcc9.log - make install +#cd $INSTDIR +# wget https://parallel-netcdf.github.io/Release/pnetcdf-1.12.1.tar.gz +# tar xvf pnetcdf-1.12.1.tar.gz +# rm -f pnetcdf-1.12.1.tar.gz +# cd pnetcdf-1.12.1 +# #export CFLAGS="-O3 -fPIC" +# #export FFLAGS="-O3 -fPIC" +# #export CXXFLAGS="-O3 -fPIC" +# #export FCFLAGS="-O3 -fPIC" +# #./configure --prefix=$INSTDIR MPIF77=mpif90 MPIF90=mpif90 MPICC=mpicc MPICXX=mpicxx --with-mpi=/nas/longleaf/apps/r/4.1.3/openmpi +# ./configure --prefix=$INSTDIR MPIF77=mpif90 MPIF90=mpif90 MPICC=mpicc MPICXX=mpicxx --with-mpi=/nas/longleaf/apps-dogwood/mpi/gcc_9.1.0/openmpi_4.0.1 +# make |& tee make.gcc9.log +# make install # ---------------------------------------- # Use tcsh 6.20 instead of the broken 6.21 # ---------------------------------------- From 3ae9e390658b9f0236b7018578a23c07e89d674e Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 16:39:50 -0400 Subject: [PATCH 320/375] update --- .../gcc_install_cmaq55_cb6r5_m3dry.csh | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh index 3707f1cb9..c655d8e0c 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh @@ -3,29 +3,45 @@ # ----------------------- # Download and build CMAQ # ----------------------- -# NOTE - please change the BILD and the CMAQ_HOME directory to your local path +# NOTE - please change the BUILD, CMAQ_HOME and OPENMPI directory to your local paths +# To find the openmpi path, search for mpirun, and then look for the include and lib directories +# > which mpirun setenv BUILD /21dayscratch/scr/l/i/lizadams/CMAQv5.5/LIBRARIES setenv IOAPI_DIR $BUILD/ioapi-3.2/Linux2_x86_64gfort setenv NETCDF_DIR $BUILD/lib setenv NETCDFF_DIR $BUILD/lib +setenv OPENMPI /nas/longleaf/apps-dogwood/mpi/gcc_9.1.0/openmpi_4.0.1/ cd $BUILD/.. #git clone -b 55 https://github.com/USEPA/CMAQ/CMAQ.git CMAQ_REPO_v55 git clone -b 5.5_testing ssh://github.com/lizadams/CMAQ_CMAS.git CMAQ_REPO_v55 echo "downloaded CMAQv55" cd CMAQ_REPO_v55 -cd $BUILD/CMAQ_REPO_v55/ +cd $BUILD/../CMAQ_REPO_v55/ # Change CMAQ_HOME to a local directory #This will remove # from the start of line 102 or add it if it wasn't already there: sed -i '19s/^#/\n/; 19s/^[^\n]/#&/; 19s/^\n//' bldit_project.csh sed -i '20i set CMAQ_HOME = /21dayscratch/scr/l/i/lizadams/CMAQv5.5/openmpi_gcc' bldit_project.csh set CMAQ_HOME = $BUILD/../openmpi_gcc +mkdir $BUILD/../openmpi_gcc ./bldit_project.csh # Load the Openmpi module # Edit this name to match what is available on your local machine module load openmpi_4.0.1/gcc_9.1.0 + # edit config_cmaq.csh to specify the library locations + cd $BUILD/../openmpi_gcc/ + sed -i '144i \ setenv BUILD /21dayscratch/scr/l/i/lizadams/CMAQv5.5/LIBRARIES' config_cmaq.csh + sed -i '145i \ setenv OPENMPI /nas/longleaf/apps-dogwood/mpi/gcc_9.1.0/openmpi_4.0.1/' config_cmaq.csh + sed -i 's@ioapi_inc_gcc@$BUILD\/ioapi-3.2\/ioapi\/fixed_src@g' config_cmaq.csh + sed -i 's@ioapi_lib_gcc@$BUILD\/ioapi-3.2\/Linux2_x86_64gfort@g' config_cmaq.csh + sed -i 's@netcdf_lib_gcc@$BUILD\/lib@g' config_cmaq.csh + sed -i 's@netcdf_inc_gcc@$BUILD\/include@g' config_cmaq.csh + sed -i 's@netcdff_lib_gcc@$BUILD\/lib@g' config_cmaq.csh + sed -i 's@netcdff_inc_gcc@$BUILD\/include@g' config_cmaq.csh + sed -i 's@mpi_incl_gcc@$OPENMPI\/include@g' config_cmaq.csh + sed -i 's@mpi_lib_gcc@$OPENMPI\/lib@g' config_cmaq.csh cd $BUILD/../openmpi_gcc/CCTM/scripts/ cp bldit_cctm.csh bldit_cctmv55_cb6r5_m3dry.csh # Add extra libs to support nc4 compression in config_cmaq.csh @@ -33,6 +49,7 @@ cd $BUILD/../openmpi_gcc/CCTM/scripts/ setenv extra_lib "-lnetcdf -lhdf5_hl -lhdf5 -lm -ldl -lz -lcurl" # Add openmp flag to match what was used in I/O API in config_cmaq.csh # setenv myLINK_FLAG "-fopenmp" # openMP not supported w/ CMAQ + ./bldit_cctmv55_cb6r5_m3dry.csh gcc |& tee ./bldit_cctmv55_cb6r5_m3dry.log # Verify that the executable was created. ls -rlt BLD_CCTM_v55_gcc_cb6r5_ae7_aq_m3dry/*.exe From dfb0ebb326b3dc06ea9709add6d89fde5b1cce1e Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 17:25:30 -0400 Subject: [PATCH 321/375] add install of curl library --- .../gcc_install_netcdf_for_nc4_compression.csh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh index 26abeafd8..404c46e90 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh @@ -25,6 +25,18 @@ set echo mkdir -p $cwd/CMAQv5.5/LIBRARIES setenv INSTDIR $cwd/CMAQv5.5/LIBRARIES +# ---------------------- +# Build and install curl +# --------------------- + + cd ${INSTDIR} + wget https://curl.se/download/curl-8.10.1.tar.gz + tar -xzvf curl-8.10.1.tar.gz + cd curl-8.10.1 + ./configure --prefix=${INSTDIR} --with-openssl --without-libpsl + make |& tee make.curl.log + make install |& tee make.install.curl.log + # ---------------------- # Build and install zlib # --------------------- @@ -33,7 +45,7 @@ set echo wget https://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz tar -xzvf zlib-1.2.11.tar.gz cd zlib-1.2.11 - ./configure --prefix=${INSTDIR}/zlib-1.2.11/gcc_9.1.0 + ./configure --prefix=${INSTDIR} make test |& tee make.test.log make install |& tee make.install.log From 89c116868f6e8c6f8b9f573e12a774e501dfd57f Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 17:26:15 -0400 Subject: [PATCH 322/375] update --- DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh index c655d8e0c..6706de1af 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh @@ -46,7 +46,7 @@ cd $BUILD/../openmpi_gcc/CCTM/scripts/ cp bldit_cctm.csh bldit_cctmv55_cb6r5_m3dry.csh # Add extra libs to support nc4 compression in config_cmaq.csh # -lnetcdf -lhdf5_hl -lhdf5 -lm -ldl -lz -lcurl - setenv extra_lib "-lnetcdf -lhdf5_hl -lhdf5 -lm -ldl -lz -lcurl" + setenv extra_lib "-L $BUILD/lib -lnetcdf -lhdf5_hl -lhdf5 -lm -ldl -lz -L $BUILD/curl-8.10.1/gcc_9.1.0/lib -lcurl" # Add openmp flag to match what was used in I/O API in config_cmaq.csh # setenv myLINK_FLAG "-fopenmp" # openMP not supported w/ CMAQ From eb83496dda48a7997c84416909c89824338647ca Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 17:31:32 -0400 Subject: [PATCH 323/375] revert to previous version --- DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh index 6706de1af..c655d8e0c 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh @@ -46,7 +46,7 @@ cd $BUILD/../openmpi_gcc/CCTM/scripts/ cp bldit_cctm.csh bldit_cctmv55_cb6r5_m3dry.csh # Add extra libs to support nc4 compression in config_cmaq.csh # -lnetcdf -lhdf5_hl -lhdf5 -lm -ldl -lz -lcurl - setenv extra_lib "-L $BUILD/lib -lnetcdf -lhdf5_hl -lhdf5 -lm -ldl -lz -L $BUILD/curl-8.10.1/gcc_9.1.0/lib -lcurl" + setenv extra_lib "-lnetcdf -lhdf5_hl -lhdf5 -lm -ldl -lz -lcurl" # Add openmp flag to match what was used in I/O API in config_cmaq.csh # setenv myLINK_FLAG "-fopenmp" # openMP not supported w/ CMAQ From c88904b8f94e4c22e2084e36b04aedbdeb50cd1d Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 18:18:14 -0400 Subject: [PATCH 324/375] fixed missing libraries issue --- DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh index c655d8e0c..f1c96bab0 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh @@ -42,6 +42,10 @@ module load openmpi_4.0.1/gcc_9.1.0 sed -i 's@netcdff_inc_gcc@$BUILD\/include@g' config_cmaq.csh sed -i 's@mpi_incl_gcc@$OPENMPI\/include@g' config_cmaq.csh sed -i 's@mpi_lib_gcc@$OPENMPI\/lib@g' config_cmaq.csh + #edit the config_cmaq.csh to use -fopenmp due to it being used by default for I/O API Library + sed -i '172i \ setenv myLINK_FLAG -fopenmp' config_cmaq.csh + #edit the config_cmaq.csh to add extra libraries + sed -i 's@-lnetcdf\" #@-lnetcdf -lcurl -lhdf5 -lhdf5_hl \" #@g' config_cmaq.csh cd $BUILD/../openmpi_gcc/CCTM/scripts/ cp bldit_cctm.csh bldit_cctmv55_cb6r5_m3dry.csh # Add extra libs to support nc4 compression in config_cmaq.csh From 9c03fd833239447ef0a489cec6206bc5b6824524 Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 18:37:00 -0400 Subject: [PATCH 325/375] update --- DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh index f1c96bab0..e73f6dc9e 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh @@ -59,6 +59,8 @@ cd $BUILD/../openmpi_gcc/CCTM/scripts/ ls -rlt BLD_CCTM_v55_gcc_cb6r5_ae7_aq_m3dry/*.exe +#Note, to run CMAQ, please create modules or set the LD_LIBRARY_PATH to include the directories for $BUILD/lib at run time. +##see this tutorial for instructions: https://pcluster-cmaq.readthedocs.io/en/latest/user_guide_pcluster/developers_guide/cmaq-vm/install.html#create-custom-environment-module-for-libraries From 7346df7421349fefb9d3457ef47e3494e7a91c55 Mon Sep 17 00:00:00 2001 From: lizadams Date: Tue, 1 Oct 2024 18:39:17 -0400 Subject: [PATCH 326/375] update --- .../Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh index e73f6dc9e..2a41e92e4 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh @@ -61,6 +61,9 @@ ls -rlt BLD_CCTM_v55_gcc_cb6r5_ae7_aq_m3dry/*.exe #Note, to run CMAQ, please create modules or set the LD_LIBRARY_PATH to include the directories for $BUILD/lib at run time. -##see this tutorial for instructions: https://pcluster-cmaq.readthedocs.io/en/latest/user_guide_pcluster/developers_guide/cmaq-vm/install.html#create-custom-environment-module-for-libraries +##see this tutorial for instructions to install modules: +##https://pcluster-cmaq.readthedocs.io/en/latest/user_guide_pcluster/developers_guide/cmaq-vm/install.html#install-environment-modules +## If you have modules on your machine, you can create custom modules +## https://pcluster-cmaq.readthedocs.io/en/latest/user_guide_pcluster/developers_guide/cmaq-vm/install.html#create-custom-environment-module-for-libraries From d16e77075f5c30b75a9ae33784678326e1668d98 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Tue, 1 Oct 2024 18:45:21 -0400 Subject: [PATCH 327/375] Remove 2019 runscript from 5.5 release Changes to be committed: deleted: run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh --- ...cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh | 902 ------------------ 1 file changed, 902 deletions(-) delete mode 100755 CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh diff --git a/CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh b/CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh deleted file mode 100755 index 03ff3ce9f..000000000 --- a/CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh +++ /dev/null @@ -1,902 +0,0 @@ -#!/bin/csh -f - -# ===================== CCTMv5.5.X Run Script ========================= -# Usage: run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh !>& run_cctm_cracmm_2019_12US1_CRACMM2.log & -# Slurm Usage: sbatch run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh -# -# To report problems or request help with this script/program: -# http://www.epa.gov/cmaq (EPA CMAQ Website) -# http://www.cmascenter.org (CMAS Website) -# =================================================================== - -#> Simple Linux Utility for Resource Management System -#> (SLURM) - The following specifications are recommended -#> for executing the runscript on the cluster at the -#> National Computing Center used primarily by EPA. -#SBATCH -t 72:00:00 -#SBATCH -n 256 -#SBATCH -J CMAQ_2019cracmm -#SBATCH -p ord -#SBATCH -A mod3dev -#SBATCH -o /work/MOD3DEV/tskipper/cracmm_hcho/20231201_cracmm2_aromatics/CCTM/scripts/2019_12US1_%j.txt - -#> The following commands output information from the SLURM -#> scheduler to the log files for traceability. - if ( $?SLURM_JOB_ID ) then - echo Job ID is $SLURM_JOB_ID - echo "Running on nodes `printenv SLURM_JOB_NODELIST`" - echo Host is $SLURM_SUBMIT_HOST - #> Switch to the working directory. By default, - #> SLURM launches processes from your home directory. - echo Working directory is $SLURM_SUBMIT_DIR - cd $SLURM_SUBMIT_DIR - endif - -#> Configure the system environment and set up the module -#> capability - limit stacksize unlimited -# - -# =================================================================== -#> Runtime Environment Options -# =================================================================== - -echo 'Start Model Run At ' `date` - -#> Toggle Diagnostic Mode which will print verbose information to -#> standard output - setenv CTM_DIAG_LVL 0 - -#> Choose compiler and set up CMAQ environment with correct -#> libraries using config.cmaq. Options: intel | gcc | pgi - if ( ! $?compiler ) then - setenv compiler intel - endif - if ( ! $?compilerVrsn ) then - setenv compilerVrsn Empty - endif - -#> Source the config.cmaq file to set the build environment - cd ../.. - source ./config_cmaq.csh $compiler $compilerVrsn - cd CCTM/scripts - -#> Set General Parameters for Configuring the Simulation - set VRSN = v55 #> Code Version - set PROC = mpi #> serial or mpi - set MECH = cracmm2 #> Mechanism ID -# set EMIS = 2016fh #> Emission Inventory Details - set APPL = 2019_12US1 #> Application Name (e.g. Gridname) - -#> Define RUNID as any combination of parameters above or others. By default, -#> this information will be collected into this one string, $RUNID, for easy -#> referencing in output binaries and log files as well as in other scripts. - setenv RUNID ${VRSN}_${compilerString}_${APPL} - -#> Set the build directory (this is where the CMAQ executable -#> is located by default). - set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString} - set EXEC = CCTM_${VRSN}.exe - -#> Output Each line of Runscript to Log File - if ( $CTM_DIAG_LVL != 0 ) set echo - -#> Set Working, Input, and Output Directories - setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. - setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory - setenv INPDIR /work/MOD3DATA/CMAQv53_TS/2019_12US1 #Input Directory - setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location - setenv NMLpath ${BLD} #> Location of Namelists. Common places are: - #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} - - echo "" - echo "Working Directory is $WORKDIR" - echo "Build Directory is $BLD" - echo "Output Directory is $OUTDIR" - echo "Log Directory is $LOGDIR" - echo "Executable Name is $EXEC" - -# ===================================================================== -#> CCTM Configuration Options -# ===================================================================== - -#> Set Start and End Days for looping - setenv NEW_START TRUE #> Set to FALSE for model restart - set START_DATE = "2019-05-22" #> beginning date (January 1, 2016) - set END_DATE = "2019-09-06" #> ending date (December 31, 2016) - -#> Set Timestepping Parameters -set STTIME = 000000 #> beginning GMT time (HHMMSS) -set NSTEPS = 240000 #> time duration (HHMMSS) for this run -set TSTEP = 010000 #> output time step interval (HHMMSS) - -#> Horizontal domain decomposition -if ( $PROC == serial ) then - setenv NPCOL_NPROW "1 1"; set NPROCS = 1 # single processor setting -else - #@ NPCOL = 16; @ NPROW = 8 #128 total - @ NPCOL = 16; @ NPROW = 16 - @ NPROCS = $NPCOL * $NPROW - setenv NPCOL_NPROW "$NPCOL $NPROW"; -endif - -#> Define Execution ID: e.g. [CMAQ-Version-Info]_[User]_[Date]_[Time] -if ( ! -e ${BLD}/CCTM_${VRSN}.cfg ) then - set SHAID = "" -else - set SHAID = `grep "sha_ID" ${BLD}/CCTM_${VRSN}.cfg | cut -c 13-22` - if ( $SHAID == not_a_repo ) then - set SHAID = "" - else - set SHAID = "_sha="$SHAID - endif -endif -setenv EXECUTION_ID "CMAQ_CCTM${VRSN}${SHAID}_`id -u -n`_`date -u +%Y%m%d_%H%M%S_%N`" #> Inform IO/API of the Execution ID -echo "" -echo "---CMAQ EXECUTION ID: $EXECUTION_ID ---" - -#> Keep or Delete Existing Output Files -set CLOBBER_DATA = FALSE - -#> Logfile Options -#> Master Log File Name; uncomment to write standard output to a log, otherwise write to screen -#setenv LOGFILE $CMAQ_HOME/$RUNID.log -if (! -e $LOGDIR ) then - mkdir -p $LOGDIR -endif -setenv PRINT_PROC_TIME Y #> Print timing for all science subprocesses to Logfile - #> [ default: TRUE or Y ] -setenv STDOUT T #> Override I/O-API trying to write information to both the processor - #> logs and STDOUT [ options: T | F ] - -setenv GRID_NAME 12US1 #> check GRIDDESC file for GRID_NAME options -setenv GRIDDESC $INPDIR/../GRIDDESC #> grid description file - -#> Retrieve the number of columns, rows, and layers in this simulation -set NZ = 35 -set NX = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f6` -set NY = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f7` -set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` - -#> Output Species and Layer Options - #> CONC file species; comment or set to "ALL" to write all species to CONC - #setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 HCHO ISO NH3 ANH4I ANH4J ASO4I ASO4J" - #setenv CONC_SPCS "ALL" - setenv CONC_SPCS "O3 NO2 HCHO ISO" - #setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC - - #> ACONC file species; comment or set to "ALL" to write all species to ACONC - #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" - setenv AVG_CONC_SPCS "ALL" - setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC - setenv AVG_FILE_ENDTIME N #> override default beginning ACONC timestamp [ default: N ] - -#> Synchronization Time Step and Tolerance Options -setenv CTM_MAXSYNC 300 #> max sync time step (sec) [ default: 720 ] -setenv CTM_MINSYNC 60 #> min sync time step (sec) [ default: 60 ] -setenv SIGMA_SYNC_TOP 0.7 #> top sigma level thru which sync step determined [ default: 0.7 ] -#setenv ADV_HDIV_LIM 0.95 #> maximum horiz. div. limit for adv step adjust [ default: 0.9 ] -setenv CTM_ADV_CFL 0.95 #> max CFL [ default: 0.75] -#setenv RB_ATOL 1.0E-09 #> global ROS3 solver absolute tolerance [ default: 1.0E-07 ] - -#> Science Options -setenv CTM_OCEAN_CHEM Y #> Flag for ocean halogen chemistry and sea spray aerosol emissions [ default: Y ] -setenv CTM_WB_DUST N #> use inline windblown dust emissions (only for use with PX) [ default: N ] -setenv CTM_LTNG_NO Y #> turn on lightning NOx [ default: N ] -setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], - #> otherwise revert to Kz0UT -setenv PX_VERSION Y #> WRF PX LSM -setenv CLM_VERSION N #> WRF CLM LSM -setenv NOAH_VERSION N #> WRF NOAH LSM -setenv CTM_ABFLUX Y #> ammonia bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_BIDI_FERT_NH3 T #> subtract fertilizer NH3 from emissions because it will be handled - #> by the BiDi calculation [ default: Y ] -setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ] - #> please see user guide (6.10.4 Nitrous Acid (HONO)) - #> for dependency on percent urban fraction dataset -setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ] - -setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions with BEIS [ default: N ] -setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ] -setenv BDSNP_MEGAN N #> turns on BDSNP soil NO emissions [ default: N ] - - -setenv IC_AERO_M2WET F #> Specify whether or not initial condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv BC_AERO_M2WET F #> Specify whether or not boundary condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv IC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from initial - #> conditions [ default: T = use aerosol surface area ] -setenv BC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from boundary - #> conditions [ default: T = use aerosol surface area ] - -#> Surface Tiled Aerosol and Gaseous Exchange Options -#> Only active if DepMod=stage at compile time -setenv CTM_MOSAIC N #> Output landuse specific deposition velocities [ default: N ] -setenv CTM_STAGE_P22 N #> Pleim et al. 2022 Aerosol deposition model [default: N] -setenv CTM_STAGE_E20 Y #> Emerson et al. 2020 Aerosol deposition model [default: Y] -setenv CTM_STAGE_S22 N #> Shu et al. 2022 (CMAQ v5.3) Aerosol deposition model [default: N] - - -#> Vertical Extraction Options -setenv VERTEXT N -setenv VERTEXT_COORD_PATH ${WORKDIR}/lonlat.csv - -#> I/O Controls -setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ] -setenv FL_ERR_STOP N #> stop on inconsistent input files -setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ] -setenv IOAPI_OFFSET_64 YES #> support large timestep records (>2GB/timestep record) [ options: YES | NO ] -setenv IOAPI_CHECK_HEADERS N #> check file headers [ options: Y | N ] -setenv CTM_EMISCHK N #> Abort CMAQ if missing surrogates from emissions Input files - -#> Diagnostic Output Flags -setenv CTM_CKSUM Y #> checksum report [ default: Y ] -setenv CLD_DIAG N #> cloud diagnostic file [ default: N ] - -setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ] -setenv NLAYS_PHOTDIAG "1" #> Number of layers for PHOTDIAG2 and PHOTDIAG3 from - #> Layer 1 to NLAYS_PHOTDIAG [ default: all layers ] -#setenv NWAVE_PHOTDIAG "294 303 310 316 333 381 607" #> Wavelengths written for variables - #> in PHOTDIAG2 and PHOTDIAG3 - #> [ default: all wavelengths ] - -setenv CTM_SSEMDIAG N #> sea-spray emissions diagnostic file [ default: N ] -setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; - #> Ignore if CTM_WB_DUST = N -setenv CTM_DEPV_FILE N #> deposition velocities diagnostic file [ default: N ] -setenv VDIFF_DIAG_FILE N #> vdiff & possibly aero grav. sedimentation diagnostic file [ default: N ] -setenv LTNGDIAG N #> lightning diagnostic file [ default: N ] -setenv B3GTS_DIAG N #> BEIS mass emissions diagnostic file [ default: N ] -setenv CTM_WVEL N #> save derived vertical velocity component to conc - #> file [ default: Y ] - -#> MPI Optimization Flags -setenv MPI_SM_POOL 16000 #> increase shared memory pool in case many MPI_SEND headers -setenv MP_EAGER_LIMIT 65536 #> set MPI message passing buffer size to max -setenv MP_SINGLE_THREAD yes #> optimize for single threaded applications [ default: no ] -setenv MP_STDOUTMODE ordered #> order output by the processor ID -setenv MP_LABELIO yes #> label output by processor ID [ default: no ] -setenv MP_SHARED_MEMORY yes #> force use of shared memory for tasks on same node [ default: no ] -setenv MP_ADAPTER_USE shared #> share the MP adapter with other jobs -setenv MP_CPU_USE multiple #> share the node with multiple users/jobs -setenv MP_CSS_INTERRUPT yes #> specify whether arriving packets generate interrupts [ default: no ] - -# ===================================================================== -#> Input Directories and Filenames -# ===================================================================== - -set ICpath = $INPDIR/icbc #> initial conditions input directory -set BCpath = $INPDIR/icbc #> boundary conditions input directory -#set EMISpath = /work/MOD3DEV/callen05/WR624/WR624_EQ2019_CRACMM/premerged/ #> surface emissions input directory -set EMISpath = $INPDIR/emis/cracmmv1_20220923/cmaq_ready_area -#set EMISpath2 = $INPDIR/emis/cb6r3_ae6_20191121_compressed/cmaq_ready/gridded_rwc #> surface residential wood combustion emissions directory -set PREMRGpath = /work/MOD3DEV/tskipper/cracmm_hcho/emissions/premerged -#set IN_PTpath = /work/MOD3DEV/callen05/WR624/smoke_out/WR624_EQ2019_CRACMM/${GRID_NAME}/cmaq_cracmmv1/ #> elevated emissions input directory (in-line point only) -set IN_PTpath = $INPDIR/emis/cracmmv1_20220923/cmaq_ready_point -set STKGRPpath = /work/MOD3DEV/callen05/WR624/smoke_out/WR624_EQ2019_CRACMM/${GRID_NAME}/cmaq_cracmmv1 -#set IN_LTpath = $INPDIR/met/lightning #> lightning NOx input directory -set IN_LTpath = /work/MOD3EVAL/dkj/LTNG/NLDN_12US/2019 # From Daiwen email 11/1/22 -set METpath = $INPDIR/met/mcip_v51_wrf_v411_noltng #> meteorology input directory -#set JVALpath = $INPDIR/jproc #> offline photolysis rate table directory -set OMIpath = $BLD #> ozone column data for the photolysis model -set EPICpath = $INPDIR/epic #> EPIC putput for bidirectional NH3 -set SZpath = /work/MOD3DATA/2018_${GRID_NAME}/surface #> surf zone file for in-line seaspray emissions - -# ===================================================================== -#> Begin Loop Through Simulation Days -# ===================================================================== -set rtarray = "" - -set TODAYG = ${START_DATE} -set TODAYJ = `date -ud "${START_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set START_DAY = ${TODAYJ} -set STOP_DAY = `date -ud "${END_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set NDAYS = 0 - -while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ - - set NDAYS = `echo "${NDAYS} + 1" | bc -l` - - #> Retrieve Calendar day Information - set YYYYMMDD = `date -ud "${TODAYG}" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD - set YYYYMM = `date -ud "${TODAYG}" +%Y%m` #> Convert YYYY-MM-DD to YYYYMM - set YYYY = `date -ud "${TODAYG}" +%Y` #> Convert YYYY-MM-DD to YYYY - set YYMMDD = `date -ud "${TODAYG}" +%y%m%d` #> Convert YYYY-MM-DD to YYMMDD - set MM = `date -ud "${TODAYG}" +%m` #> Convert YYYY-MM-DD to MM - set YYYYJJJ = $TODAYJ - - #> Calculate Yesterday's Date - set YESTERDAY = `date -ud "${TODAYG}-1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYJJJ - -# ===================================================================== -#> Set Output String and Propagate Model Configuration Documentation -# ===================================================================== - echo "" - echo "Set up input and output files for Day ${TODAYG}." - - #> set output file name extensions - setenv CTM_APPL ${RUNID}_${YYYYMMDD} - - #> Copy Model Configuration To Output Folder - if ( ! -d "$OUTDIR" ) mkdir -p $OUTDIR - cp $BLD/CCTM_${VRSN}.cfg $OUTDIR/CCTM_${CTM_APPL}.cfg - -# ===================================================================== -#> Input Files (Some are Day-Dependent) -# ===================================================================== - - #> Initial conditions - if ($NEW_START == true || $NEW_START == TRUE ) then - # setenv ICFILE ICON_CGRID_12US1_v532_cracmm1_aq_WR413_MYR_STAGE_2019_12US1_${YESTERDAY}.nc - # setenv INIT_MEDC_1 notused - set ICpath = /work/MOD3DEV/has/2022firex/20221031setup/data/output_CCTM_v54_intel18.0_2019_12US1 - #setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc # update for RHEL8 - setenv ICFILE CCTM_CGRID_v54_intel18.0_2019_12US1_${YESTERDAY}.nc - #setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc - setenv INIT_MEDC_1 notused - - else - set ICpath = $OUTDIR - setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc - setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc - endif - - #> Boundary conditions, use STAGE files if CCTM uses the stage option for depv - #set BCFILE = bctr_12km_HCMAQ_V531_STAGE_cb6r3m_ae7_kmtbr_BCON_V53_WRF411_corrected_${YYYYMM}.ncf - set BCFILE = BCON_CONC_12US1_CMAQv54_2019_108NHEMI_CRACCM1_FRMEQ_regrid_${YYYYMM}.nc - - #> Off-line photolysis rates - #set JVALfile = JTABLE_${YYYYJJJ} - - #> Ozone column data - set OMIfile = OMI_1979_to_2019.dat - - #> Optics file - set OPTfile = PHOT_OPTICS.dat - - #> MCIP meteorology files - setenv GRID_BDY_2D $METpath/GRIDBDY2D_$YYYYMMDD.nc4 - setenv GRID_CRO_2D $METpath/GRIDCRO2D_$YYYYMMDD.nc4 - setenv GRID_CRO_3D $METpath/GRIDCRO3D_$YYYYMMDD.nc4 - setenv GRID_DOT_2D $METpath/GRIDDOT2D_$YYYYMMDD.nc4 - setenv MET_CRO_2D $METpath/METCRO2D_$YYYYMMDD.nc4 - setenv MET_CRO_3D $METpath/METCRO3D_$YYYYMMDD.nc4 - setenv MET_DOT_3D $METpath/METDOT3D_$YYYYMMDD.nc4 - setenv MET_BDY_3D $METpath/METBDY3D_$YYYYMMDD.nc4 - setenv LUFRAC_CRO $METpath/LUFRAC_CRO_$YYYYMMDD.nc4 -# setenv LUFRAC_CRO $METpath/LUFRAC_CRO.$GRID_NAME.${NZ}L.$YYMMDD - - #> Control Files - #> - #> IMPORTANT NOTE - #> - #> The DESID control files defined below are an integral part of controlling the behavior of the model simulation. - #> Among other things, they control the mapping of species in the emission files to chemical species in the model and - #> several aspects related to the simulation of organic aerosols. - #> Please carefully review the DESID control files to ensure that they are configured to be consistent with the assumptions - #> made when creating the emission files defined below and the desired representation of organic aerosols. - #> For further information, please see: - #> + AERO7 Release Notes section on 'Required emission updates': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Release_Notes/aero7_overview.md - #> + CMAQ User's Guide section 6.9.3 on 'Emission Compatability': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.9.3_Emission_Compatability - #> + Emission Control (DESID) Documentation in the CMAQ User's Guide: - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md - #> - # default DESID files - #setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml - #setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml - # DESID files customized for EPA CRACMM2 2019 simulations - setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID_cracmm2019EPA.nml - setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}_EPA2019.nml - - #> The following namelist configures aggregated output (via the Explicit and Lumped - #> Air Quality Model Output (ELMO) Module), domain-wide budget output, and chemical - #> family output. - setenv MISC_CTRL_NML ${BLD}/CMAQ_Control_Misc.nml - - #> The following namelist controls the mapping of meteorological land use types and the NH3 and Hg emission - #> potentials - setenv STAGECTRL_NML ${BLD}/CMAQ_Control_STAGE.nml - - #> Spatial Masks For Emissions Scaling - setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12US1.nc #> horizontal grid-dependent ocean file - - #> Determine Representative Emission Days - set EMDATES = /work/EMIS/em_v6.3/ge_dat/smk_dates/2019/smk_merge_dates_${YYYYMM}.txt - set intable = `grep "^${YYYYMMDD}" $EMDATES` - set Date = `echo $intable[1] | cut -d, -f1` - set aveday_N = `echo $intable[2] | cut -d, -f1` - set aveday_Y = `echo $intable[3] | cut -d, -f1` - set mwdss_N = `echo $intable[4] | cut -d, -f1` - set mwdss_Y = `echo $intable[5] | cut -d, -f1` - set week_N = `echo $intable[6] | cut -d, -f1` - set week_Y = `echo $intable[7] | cut -d, -f1` - set all = `echo $intable[8] | cut -d, -f1` - - #> Gridded Emissions files - setenv N_EMIS_GR 8 - set sector = np_gasoline - set EMISfile = emis_mole_${sector}_${YYYYMMDD}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_001 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_001 G_${sector} - setenv GR_EM_SYM_DATE_001 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set sector = np_diesel - set EMISfile = emis_mole_${sector}_${YYYYMMDD}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_002 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_002 G_${sector} - setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set sector = aircraft - set EMISfile = emis_mole_${sector}_${week_Y}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_003 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_003 G_${sector} - setenv GR_EM_SYM_DATE_003 T # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set sector = np_solvents - set EMISfile = emis_mole_${sector}_${YYYYMMDD}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_004 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_004 G_${sector} - setenv GR_EM_SYM_DATE_004 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set sector = asphalt - set EMISfile = emis_mole_${sector}_${week_Y}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_005 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_005 G_${sector} - setenv GR_EM_SYM_DATE_005 T # To change default behaviour please see Users Guide for EMIS_SYM_DATE - ${aveday_N} - - set sector = np_other - set EMISfile = emis_mole_${sector}_${YYYYMMDD}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_006 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_006 G_${sector} - setenv GR_EM_SYM_DATE_006 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set sector = cooking - set EMISfile = emis_mole_${sector}_${YYYYMMDD}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_007 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_007 G_${sector} - setenv GR_EM_SYM_DATE_007 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set sector = all_rwc - set EMISfile = emis_mole_${sector}_${YYYYMMDD}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_008 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_008 G_${sector} - setenv GR_EM_SYM_DATE_008 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - #> In-Line Point Emissions Files - setenv N_EMIS_PT 5 #4 #> Number of elevated source groups - - set STKCASEE = ${GRID_NAME}_cmaq_cracmmv1_WR624_EQ2019_CRACMM # In-line Emission Rate File Suffix - set STKCASEG = ${GRID_NAME}_WR624_EQ2019_CRACMM # Stack parameter File Suffix - - set sector = cmv - setenv STK_GRPS_001 $STKGRPpath/${sector}/stack_groups_${sector}_${STKCASEG}.ncf - setenv STK_EMIS_001 $IN_PTpath/${sector}/inln_mole_${sector}_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_LAB_001 P_$sector - setenv STK_EM_SYM_DATE_001 F - - set sector = othpt_aircraft - setenv STK_GRPS_002 $STKGRPpath/${sector}/stack_groups_${sector}_${STKCASEG}.ncf - setenv STK_EMIS_002 $IN_PTpath/${sector}/inln_mole_${sector}_${mwdss_N}_${STKCASEE}.ncf - setenv STK_EMIS_LAB_002 P_$sector - setenv STK_EM_SYM_DATE_002 T - - set sector = all_fire - setenv STK_GRPS_003 $STKGRPpath/${sector}/stack_groups_${sector}_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_EMIS_003 $IN_PTpath/${sector}/inln_mole_${sector}_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_LAB_003 P_$sector - setenv STK_EM_SYM_DATE_003 F - - set sector = pt_other_nonfire - setenv STK_GRPS_004 $STKGRPpath/${sector}/stack_groups_${sector}_${STKCASEG}.ncf - setenv STK_EMIS_004 $IN_PTpath/${sector}/inln_mole_${sector}_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_LAB_004 P_$sector - setenv STK_EM_SYM_DATE_004 F - - # add additional point source file for ptnonipm - set sector = ptnonipm - setenv STK_GRPS_005 $PREMRGpath/${sector}/stack_groups_${sector}_${STKCASEG}.ncf - setenv STK_EMIS_005 $PREMRGpath/${sector}/inln_mole_${sector}_${mwdss_Y}_${STKCASEE}.ncf - setenv STK_EMIS_LAB_005 P_$sector - setenv STK_EM_SYM_DATE_005 T - - #> Lightning NOx configuration - if ( $CTM_LTNG_NO == 'Y' ) then - setenv LTNGNO "InLine" #> set LTNGNO to "Inline" to activate in-line calculation - - #> In-line lightning NOx options - setenv USE_NLDN Y #> use hourly NLDN strike file [ default: Y ] - if ( $USE_NLDN == Y ) then - setenv NLDN_STRIKES ${IN_LTpath}/NLDN_12km_60min_${YYYYMMDD}.ioapi - endif - setenv LTNGPARMS_FILE ${IN_LTpath}/LTNG_AllParms_12US1.ncf #> lightning parameter file; ignore if LTNGPARAM = N - endif - - - #> In-line biogenic emissions configuration - if ( $CTM_BIOGEMIS_MG == 'Y' ) then - setenv MEGAN_SOILINP $OUTDIR/CCTM_MSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if INITIAL_RUN = Y - #> ; ignore if IGNORE_SOILINP = Y - setenv MEGAN_CTS /work/MOD3DATA/2016_12US1/surface/megan3.2/CT3_CONUS.ncf - setenv MEGAN_EFS /work/MOD3DATA/2016_12US1/surface/megan3.2/EFMAPS_CONUS.ncf - setenv MEGAN_LDF /work/MOD3DATA/2016_12US1/surface/megan3.2/LDF_CONUS.ncf - if ($BDSNP_MEGAN == 'Y') then - setenv BDSNPINP $OUTDIR/CCTM_BDSNPOUT_${RUNID}_${YESTERDAY}.nc - setenv BDSNP_FFILE /work/MOD3DATA/2016_12US1/surface/megan3.2/FERT_CONUS.ncf - setenv BDSNP_NFILE /work/MOD3DATA/2016_12US1/surface/megan3.2/NDEP_CONUS.ncf - setenv BDSNP_LFILE /work/MOD3DATA/2016_12US1/surface/megan3.2/LANDTYPE_CONUS.ncf - setenv BDSNP_AFILE /work/MOD3DATA/2016_12US1/surface/megan3.2/ARID_CONUS.ncf - setenv BDSNP_NAFILE /work/MOD3DATA/2016_12US1/surface/megan3.2/NONARID_CONUS.ncf - endif - endif - if ( $CTM_BIOGEMIS_BE == 'Y' ) then - #set IN_BEISpath = ${INPDIR}/surface - setenv GSPRO ${BLD}/gspro_biogenics.txt - setenv BEIS_NORM_EMIS /work/MOD3APP/ezv/2020_12US1/surface/beis4_beld6_norm_emis.12US1.ncf - setenv BEIS_SOILINP $OUTDIR/CCTM_BSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if NEW_START = TRUE - endif - - #> In-line sea spray emissions configuration - setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12US1.nc - - #> Bidirectional ammonia configuration - if ( $CTM_ABFLUX == 'Y' ) then - # need to modify for FEST-C v1.4. - setenv E2C_SOIL ${EPICpath}/2019r1_EPIC0509_12US1_soil.nc4 - setenv E2C_CHEM ${EPICpath}/2019r1_EPIC0509_${GRID_NAME}_time${YYYYMMDD}.nc4 - setenv E2C_LU ${EPICpath}/beld4_12US1_2011.nc4 #beld4_camq12km_2011_4CMAQioapi.ncf - endif - -#> Inline Process Analysis - setenv CTM_PROCAN N #> use process analysis [ default: N] - if ( $?CTM_PROCAN ) then # $CTM_PROCAN is defined - if ( $CTM_PROCAN == 'Y' || $CTM_PROCAN == 'T' ) then -#> process analysis global column, row and layer ranges -# setenv PA_BCOL_ECOL "10 90" # default: all columns -# setenv PA_BROW_EROW "10 80" # default: all rows -# setenv PA_BLEV_ELEV "1 4" # default: all levels - setenv PACM_INFILE ${NMLpath}/pa_${MECH}.ctl - setenv PACM_REPORT $OUTDIR/"PA_REPORT".${YYYYMMDD} - endif - endif - -#> Integrated Source Apportionment Method (ISAM) Options - setenv CTM_ISAM N - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - setenv SA_IOLIST ${WORKDIR}/isam_control.txt - setenv ISAM_BLEV_ELEV " 1 1" - setenv AISAM_BLEV_ELEV " 1 1" - - #> Set Up ISAM Initial Condition Flags - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ISAM_NEW_START Y - setenv ISAM_PREVDAY - else - setenv ISAM_NEW_START N - setenv ISAM_PREVDAY "$OUTDIR/CCTM_SA_CGRID_${RUNID}_${YESTERDAY}.nc" - endif - - #> Set Up ISAM Output Filenames - setenv SA_ACONC_1 "$OUTDIR/CCTM_SA_ACONC_${CTM_APPL}.nc -v" - setenv SA_CONC_1 "$OUTDIR/CCTM_SA_CONC_${CTM_APPL}.nc -v" - setenv SA_DD_1 "$OUTDIR/CCTM_SA_DRYDEP_${CTM_APPL}.nc -v" - setenv SA_WD_1 "$OUTDIR/CCTM_SA_WETDEP_${CTM_APPL}.nc -v" - setenv SA_CGRID_1 "$OUTDIR/CCTM_SA_CGRID_${CTM_APPL}.nc -v" - - #> Set optional ISAM regions files -# setenv ISAM_REGIONS /work/MOD3EVAL/nsu/isam_v53/CCTM/scripts/input/RGN_ISAM.nc - - #> Options used to favor tracked species in reactions for Ozone-NOx chemistry - setenv ISAM_O3_WEIGHTS 5 # weights for tracked species Default is 5 - # OPTIONS - # 1 does not weight any species - # 2 weights NOx and subset of NOz species - # 3 uses with from option 2 plus weight OVOC species, organic radicals and operators - # 4 weight OVOC species, organic radicals and operators - # 5 toggles between two weighting set based on VOC and NOx limited ozone production - # Below options only used if ISAM_O3_WEIGHTS set to 5 - setenv ISAM_NOX_CASE 2 # weights for tracked species when ozone production is NOx limited. Default is 2 - setenv ISAM_VOC_CASE 4 # weights for tracked species when ozone production is VOC limited. Default is 4 - setenv VOC_NOX_TRANS 0.35 # value of Prod H2O2 over Prod HNO3 less than where - # ISAM_VOC_CASE weights are used. Otherwise, ISAM_NOX_CASE - # weights are used. Default is 0.35 - - - endif - endif - -#> Sulfur Tracking Model (STM) - setenv STM_SO4TRACK N #> sulfur tracking [ default: N ] - if ( $?STM_SO4TRACK ) then - if ( $STM_SO4TRACK == 'Y' || $STM_SO4TRACK == 'T' ) then - - #> option to normalize sulfate tracers [ default: Y ] - setenv STM_ADJSO4 Y - - endif - endif - -#> Decoupled Direct Method in 3D (DDM-3D) Options - setenv CTM_DDM3D N # Sets up requisite script settings for DDM-3D (default is N/F) - # Additionally requires for CCTM to be compiled for DDM-3D simulations - - set NPMAX = 1 # Number of sensitivity parameters defined in SEN_INPUT - setenv SEN_INPUT ${WORKDIR}/sensinput.dat - - setenv DDM3D_HIGH N # allow higher-order sensitivity parameters in SEN_INPUT [ T | Y | F | N ] (default is N/F) - - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv DDM3D_RST N # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = # sensitivity fields are initialized to 0.0 on the first hour of the first day - set S_ICfile = - else - setenv DDM3D_RST Y # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = $OUTDIR - set S_ICfile = CCTM_SENGRID_${RUNID}_${YESTERDAY}.nc - endif - - setenv CTM_NPMAX $NPMAX - setenv CTM_SENS_1 "$OUTDIR/CCTM_SENGRID_${CTM_APPL}.nc -v" - setenv A_SENS_1 "$OUTDIR/CCTM_ASENS_${CTM_APPL}.nc -v" - setenv CTM_SWETDEP_1 "$OUTDIR/CCTM_SENWDEP_${CTM_APPL}.nc -v" - setenv CTM_SDRYDEP_1 "$OUTDIR/CCTM_SENDDEP_${CTM_APPL}.nc -v" - setenv INIT_SENS_1 $S_ICpath/$S_ICfile - -# ===================================================================== -#> Output Files -# ===================================================================== - - #> set output file names - setenv S_CGRID "$OUTDIR/CCTM_CGRID_${CTM_APPL}.nc" #> 3D Inst. Concentrations - setenv CTM_CONC_1 "$OUTDIR/CCTM_CONC_${CTM_APPL}.nc -v" #> On-Hour Concentrations - setenv A_CONC_1 "$OUTDIR/CCTM_ACONC_${CTM_APPL}.nc -v" #> Hourly Avg. Concentrations - setenv MEDIA_CONC "$OUTDIR/CCTM_MEDIA_CONC_${CTM_APPL}.nc -v" #> NH3 Conc. in Media - setenv CTM_DRY_DEP_1 "$OUTDIR/CCTM_DRYDEP_${CTM_APPL}.nc -v" #> Hourly Dry Deposition - setenv CTM_DEPV_DIAG "$OUTDIR/CCTM_DEPV_${CTM_APPL}.nc -v" #> Dry Deposition Velocities - setenv B3GTS_S "$OUTDIR/CCTM_B3GTS_S_${CTM_APPL}.nc -v" #> Biogenic Emissions - setenv BDSNPOUT "$OUTDIR/CCTM_BDSNPOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv BEIS_SOILOUT "$OUTDIR/CCTM_BSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv MEGAN_SOILOUT "$OUTDIR/CCTM_MSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv CTM_WET_DEP_1 "$OUTDIR/CCTM_WETDEP1_${CTM_APPL}.nc -v" #> Wet Dep From All Clouds - setenv CTM_WET_DEP_2 "$OUTDIR/CCTM_WETDEP2_${CTM_APPL}.nc -v" #> Wet Dep From SubGrid Clouds - setenv CTM_ELMO_1 "$OUTDIR/CCTM_ELMO_${CTM_APPL}.nc -v" #> On-Hour Particle Diagnostics - setenv CTM_AELMO_1 "$OUTDIR/CCTM_AELMO_${CTM_APPL}.nc -v" #> Hourly Avg. Particle Diagnostics - setenv CTM_RJ_1 "$OUTDIR/CCTM_PHOTDIAG1_${CTM_APPL}.nc -v" #> 2D Surface Summary from Inline Photolysis - setenv CTM_RJ_2 "$OUTDIR/CCTM_PHOTDIAG2_${CTM_APPL}.nc -v" #> 3D Photolysis Rates - setenv CTM_RJ_3 "$OUTDIR/CCTM_PHOTDIAG3_${CTM_APPL}.nc -v" #> 3D Optical and Radiative Results from Photolysis - setenv CTM_SSEMIS_1 "$OUTDIR/CCTM_SSEMIS_${CTM_APPL}.nc -v" #> Sea Spray Emissions - setenv CTM_DUST_EMIS_1 "$OUTDIR/CCTM_DUSTEMIS_${CTM_APPL}.nc -v" #> Dust Emissions - setenv CTM_BUDGET "$OUTDIR/CCTM_BUDGET_${CTM_APPL}.txt -v" #> Budget - setenv CTM_IPR_1 "$OUTDIR/CCTM_PA_1_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_2 "$OUTDIR/CCTM_PA_2_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_3 "$OUTDIR/CCTM_PA_3_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IRR_1 "$OUTDIR/CCTM_IRR_1_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_2 "$OUTDIR/CCTM_IRR_2_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_3 "$OUTDIR/CCTM_IRR_3_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_DRY_DEP_MOS "$OUTDIR/CCTM_DDMOS_${CTM_APPL}.nc -v" #> Dry Dep - setenv CTM_DEPV_MOS "$OUTDIR/CCTM_DEPVMOS_${CTM_APPL}.nc -v" #> Dry Dep Velocity - setenv CTM_VDIFF_DIAG "$OUTDIR/CCTM_VDIFF_DIAG_${CTM_APPL}.nc -v" #> Vertical Dispersion Diagnostic - setenv CTM_VSED_DIAG "$OUTDIR/CCTM_VSED_DIAG_${CTM_APPL}.nc -v" #> Particle Grav. Settling Velocity - setenv CTM_LTNGDIAG_1 "$OUTDIR/CCTM_LTNGHRLY_${CTM_APPL}.nc -v" #> Hourly Avg Lightning NO - setenv CTM_LTNGDIAG_2 "$OUTDIR/CCTM_LTNGCOL_${CTM_APPL}.nc -v" #> Column Total Lightning NO - setenv CTM_VEXT_1 "$OUTDIR/CCTM_VEXT_${CTM_APPL}.nc -v" #> On-Hour 3D Concs at select sites - - #> set floor file (neg concs) - setenv FLOOR_FILE ${OUTDIR}/FLOOR_${CTM_APPL}.txt - - #> look for existing log files and output files - ( ls CTM_LOG_???.${CTM_APPL} > buff.txt ) >& /dev/null - ( ls ${LOGDIR}/CTM_LOG_???.${CTM_APPL} >> buff.txt ) >& /dev/null - set log_test = `cat buff.txt`; rm -f buff.txt - - set OUT_FILES = (${FLOOR_FILE} ${S_CGRID} ${CTM_CONC_1} ${A_CONC_1} ${MEDIA_CONC} \ - ${CTM_DRY_DEP_1} $CTM_DEPV_DIAG $B3GTS_S $MEGAN_SOILOUT $BEIS_SOILOUT $BDSNPOUT \ - $CTM_WET_DEP_1 $CTM_WET_DEP_2 $CTM_ELMO_1 $CTM_AELMO_1 \ - $CTM_RJ_1 $CTM_RJ_2 $CTM_RJ_3 $CTM_SSEMIS_1 $CTM_DUST_EMIS_1 $CTM_IPR_1 $CTM_IPR_2 \ - $CTM_IPR_3 $CTM_BUDGET $CTM_IRR_1 $CTM_IRR_2 $CTM_IRR_3 $CTM_DRY_DEP_MOS \ - $CTM_DEPV_MOS $CTM_VDIFF_DIAG $CTM_VSED_DIAG $CTM_LTNGDIAG_1 $CTM_LTNGDIAG_2 $CTM_VEXT_1 ) - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${SA_ACONC_1} ${SA_CONC_1} ${SA_DD_1} ${SA_WD_1} \ - ${SA_CGRID_1} ) - endif - endif - if ( $?CTM_DDM3D ) then - if ( $CTM_DDM3D == 'Y' || $CTM_DDM3D == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${CTM_SENS_1} ${A_SENS_1} ${CTM_SWETDEP_1} ${CTM_SDRYDEP_1} ) - endif - endif - set OUT_FILES = `echo $OUT_FILES | sed "s; -v;;g" ` - ( ls $OUT_FILES > buff.txt ) >& /dev/null - set out_test = `cat buff.txt`; rm -f buff.txt - - #> delete previous output if requested - if ( $CLOBBER_DATA == true || $CLOBBER_DATA == TRUE ) then - echo - echo "Existing Logs and Output Files for Day ${TODAYG} Will Be Deleted" - - #> remove previous log files - foreach file ( ${log_test} ) - #echo "Deleting log file: $file" - /bin/rm -f $file - end - - #> remove previous output files - foreach file ( ${out_test} ) - #echo "Deleting output file: $file" - /bin/rm -f $file - end - /bin/rm -f ${OUTDIR}/CCTM_DESID*${RUNID}_${YYYYMMDD}.nc - - else - #> error if previous log files exist - if ( "$log_test" != "" ) then - echo "*** Logs exist - run ABORTED ***" - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - - #> error if previous output files exist - if ( "$out_test" != "" ) then - echo "*** Output Files Exist - run will be ABORTED ***" - foreach file ( $out_test ) - echo " cannot delete $file" - end - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - endif - - #> for the run control ... - setenv CTM_STDATE $YYYYJJJ - setenv CTM_STTIME $STTIME - setenv CTM_RUNLEN $NSTEPS - setenv CTM_TSTEP $TSTEP - setenv INIT_CONC_1 $ICpath/$ICFILE - setenv BNDY_CONC_1 $BCpath/$BCFILE - setenv OMI $OMIpath/$OMIfile - setenv OPTICS_DATA $OMIpath/$OPTfile - #setenv XJ_DATA $JVALpath/$JVALfile - - #> species defn & photolysis - setenv gc_matrix_nml ${NMLpath}/GC_$MECH.nml - setenv ae_matrix_nml ${NMLpath}/AE_$MECH.nml - setenv nr_matrix_nml ${NMLpath}/NR_$MECH.nml - setenv tr_matrix_nml ${NMLpath}/Species_Table_TR_0.nml - - #> check for photolysis input data - setenv CSQY_DATA ${NMLpath}/CSQY_DATA_$MECH - - if (! (-e $CSQY_DATA ) ) then - echo " $CSQY_DATA not found " - exit 1 - endif - if (! (-e $OPTICS_DATA ) ) then - echo " $OPTICS_DATA not found " - exit 1 - endif - -# =================================================================== -#> Execution Portion -# =================================================================== - - #> Print attributes of the executable - if ( $CTM_DIAG_LVL != 0 ) then - ls -l $BLD/$EXEC - size $BLD/$EXEC - unlimit - limit - endif - - #> Print Startup Dialogue Information to Standard Out - echo - echo "CMAQ Processing of Day $YYYYMMDD Began at `date`" - echo - - #> Executable call for single PE, uncomment to invoke - #( /usr/bin/time -p $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Executable call for multi PE, configure for your system - # set MPI = /usr/local/intel/impi/3.2.2.006/bin64 - # set MPIRUN = $MPI/mpirun - ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Harvest Timing Output so that it may be reported below - set rtarray = "${rtarray} `tail -3 buff_${EXECUTION_ID}.txt | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | head -1` " - rm -rf buff_${EXECUTION_ID}.txt - - #> Abort script if abnormal termination - if ( ! -e $S_CGRID ) then - echo "" - echo "**************************************************************" - echo "** Runscript Detected an Error: CGRID file was not written. **" - echo "** This indicates that CMAQ was interrupted or an issue **" - echo "** exists with writing output. The runscript will now **" - echo "** abort rather than proceeding to subsequent days. **" - echo "**************************************************************" - break - endif - - #> Print Concluding Text - echo - echo "CMAQ Processing of Day $YYYYMMDD Finished at `date`" - echo - echo "\\\\\=====\\\\\=====\\\\\=====\\\\\=====/////=====/////=====/////=====/////" - echo - -# =================================================================== -#> Finalize Run for This Day and Loop to Next Day -# =================================================================== - - #> Save Log Files and Move on to Next Simulation Day - mv CTM_LOG_???.${CTM_APPL} $LOGDIR - if ( $CTM_DIAG_LVL != 0 ) then - mv CTM_DIAG_???.${CTM_APPL} $LOGDIR - endif - - #> The next simulation day will, by definition, be a restart - setenv NEW_START false - - #> Increment both Gregorian and Julian Days - set TODAYG = `date -ud "${TODAYG}+1days" +%Y-%m-%d` #> Add a day for tomorrow - set TODAYJ = `date -ud "${TODAYG}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ - -end #Loop to the next Simulation Day - -# =================================================================== -#> Generate Timing Report -# =================================================================== -set RTMTOT = 0 -foreach it ( `seq ${NDAYS}` ) - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - set RTMTOT = `echo "${RTMTOT} + ${rt}" | bc -l` -end - -set RTMAVG = `echo "scale=2; ${RTMTOT} / ${NDAYS}" | bc -l` -set RTMTOT = `echo "scale=2; ${RTMTOT} / 1" | bc -l` - -echo -echo "==================================" -echo " ***** CMAQ TIMING REPORT *****" -echo "==================================" -echo "Start Day: ${START_DATE}" -echo "End Day: ${END_DATE}" -echo "Number of Simulation Days: ${NDAYS}" -echo "Domain Name: ${GRID_NAME}" -echo "Number of Grid Cells: ${NCELLS} (ROW x COL x LAY)" -echo "Number of Layers: ${NZ}" -echo "Number of Processes: ${NPROCS}" -echo " All times are in seconds." -echo -echo "Num Day Wall Time" -set d = 0 -set day = ${START_DATE} -foreach it ( `seq ${NDAYS}` ) - # Set the right day and format it - set d = `echo "${d} + 1" | bc -l` - set n = `printf "%02d" ${d}` - - # Choose the correct time variables - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - - # Write out row of timing data - echo "${n} ${day} ${rt}" - - # Increment day for next loop - set day = `date -ud "${day}+1days" +%Y-%m-%d` -end -echo " Total Time = ${RTMTOT}" -echo " Avg. Time = ${RTMAVG}" - -exit From 4baf18f7586fb752bf5c46474318b3e43f604cd9 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 08:36:18 -0400 Subject: [PATCH 328/375] Remove 2019 .nml files from 5.5 release Changes to be committed: deleted: CMAQ_Control_DESID_cracmm2019EPA.nml deleted: CMAQ_Control_DESID_cracmm2_EPA2019.nml --- .../CMAQ_Control_DESID_cracmm2019EPA.nml | 253 ----------- .../CMAQ_Control_DESID_cracmm2_EPA2019.nml | 394 ------------------ 2 files changed, 647 deletions(-) delete mode 100644 CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2019EPA.nml delete mode 100644 CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2_EPA2019.nml diff --git a/CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2019EPA.nml b/CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2019EPA.nml deleted file mode 100644 index 61635a64e..000000000 --- a/CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2019EPA.nml +++ /dev/null @@ -1,253 +0,0 @@ -!------------------------------------------------------------------------------! -! Emission Control Interface ! -! for the ! -! Detailed Emissions Scaling, Isolation, and Diagnostics (DESID) Module, ! -! part of the ! -! Community Multiscale Air Quality (CMAQ) Model ! -! developed and maintained by the ! -! Center for Environmental Measurement and Modeling (CEMM), ! -! Office of Research and Development (ORD) ! -! U.S. Environmental Protection Agency (USEPA) ! -! ! -! This namelist is consistent with CMAQv5.4 (Release AUGUST 2022) ! -! ! -! See CMAQ User's Guide Appendix B and ! -! Murphy et al., Geoscientific Model Development, 14, 3407-3420, ! -! https://doi.org/10.5194/gmd-14-3407-2021, 2021. ! -!------------------------------------------------------------------------------! -&Desid_Options - Desid_MaxLays = 0 ! Add all emissions above Desid_MaxLays to the grid cell at - ! Desid_MaxLays. If Desid_MaxLays = 0, then all model layers are - ! available for emissions. -/ - -!------------------------------------------------------------------------------! -! Area Normalization Component ! -! Specify area-normalized emission fluxes from input streams. If emission ! -! inputs are provided to CMAQ in area-normalized fluxes for any stream, this ! -! component may be used to convert them correctly to emission rates ! -! appropriate for the model simulation grid projection. For example, if ! -! offline biogenic emissions are provided in units of moles/m2/s, then that ! -! stream may be identified here and DESID can be instructed to adjust each ! -! flux to moles/s and adjust the rates using the map scale factor that ! -! converts emissions in real geographic space into projected grid space. ! -! ! -! Definition of Fields: ! -! 'Stream - Declare a stream. If the label is 'ALL', then the instruction ! -! Label' will be expanded to all OFFLINE streams. ! -! ! -! 'Area Normalization' - If TRUE, then this stream's emissions will be ! -! multiplied by grid cell area. If AUTO, then DESID will deduce ! -! from the units string whether or not each variable on the ! -! stream input file should be multiplied by the area scale ! -! factor. ! -! ! -! 'Projection Adjustment' - If TRUE, then this stream's emissions will be ! -! multiplied by the area Map Scale Factor. If AUTO, then DESID ! -! will inherit the per-stream value from Area Normalization. If ! -! Area Normalization is TRUE, the Projection Adjustment is True ! -!------------------------------------------------------------------------------! -&Desid_AreaNormVars - Desid_Max_Area = 30 ! Maximum number of Area Normalization rules -/ - -&Desid_AreaNorm - Desid_Area_Nml = - ! | Stream Label | Area Normalization | Projection Adjustment - 'ALL' ,'AUTO' ,'AUTO', - ! 'GRIDDED' ,'TRUE' ,'TRUE', - ! 'FIRES' ,'TRUE' ,'FALSE', - ! 'VCP' ,'FALSE' ,'TRUE', -/ - -!------------------------------------------------------------------------------! -! Size Distribution Specification Component ! -! Each size distribution rule either modifies the parameters associated with ! -! the aerosol modes of a particular stream, or adds new modes to a particular! -! stream if they do not already exist. ! -! ! -! Definition of Fields: ! -! 'Stream - Label for the emissions stream that the instruction will ! -! Label' apply to. If the label is 'ALL', then the instruction will ! -! be expanded to apply to all streams. ! -! 'Emission Mode' - With this label, the user identifies which mode from ! -! the emissions is to be modified or created. With this ! -! specificity, multiple streams can be defined and ! -! mapped in the emissions rules. ! -! 'Reference Mode' - This label maps the emissions species aerosol mode ! -! to specific parameters catalogued in the AERO_DATA ! -! module. ! -!------------------------------------------------------------------------------! -&Desid_SizeDistVars - Desid_Max_Sd = 10 ! Maximum number of size distribution rules -/ - -&Desid_SizeDist - Desid_Sd_nml = - - ! Stream Label | Emiss. Mode | Ref. Mode - 'ALL' ,'FINE' ,'FINE_REF', - 'ALL' ,'COARSE' ,'COARSE_REF', - 'WBDUST' ,'FINE' ,'FINE_WBDUST', - 'WBDUST' ,'COARSE' ,'COARSE_WBDUST', - 'SEASPRAY' ,'FINE' ,'FINE_SEASPRAY', - 'SEASPRAY' ,'COARSE' ,'COARSE_SEASPRAY', - ! 'AIRCRAFT' ,'FINE' ,'AIR_FINE', !To use these examples, you - ! 'AIRCRAFT' ,'COARSE' ,'AIR_COARSE', ! must add entries for AIR_FINE - ! and AIR_COARSE to the data structure - ! em_aero_ref in AERO_DATA. - -/ - -!------------------------------------------------------------------------------! -! Region-Based Scaling Specification Component (See User's Guide section B.3) ! -! It is possible in CMAQ to scale emissions for a subset of the model domain ! -! using gridded masks to indicate where the scaling should occur. ! -! ! -! Definition of Fields: ! -! 'Region - Label for the region that is being specified. By default, the! -! Label' first region, is the whole domain, or "EVERYWHERE". It is ! -! 'File - With this label, the user identifies the file that the data for! -! Label' this region is stored on. The CMAQ runscript should provide the! -! path to this file (or files) using the environment variable ! -! construct. ! -! 'Variable - This label identifies the variable on the region file that ! -! on File' should be used to populate this particular region. ! -!------------------------------------------------------------------------------! -&Desid_RegionDefVars - Desid_Max_Reg = 60 ! Maximum number of region definition rules - Desid_N_Reg_Fams = 0 ! Exact number of region family definitions - Desid_Max_Reg_Fam_Members = 100 ! Larger than the number of regions on all - ! family definitions -/ - -&Desid_RegionDef - Desid_Reg_nml = - ! Region Label | File_Label | Variable on File - 'EVERYWHERE' ,'N/A' ,'N/A', - ! 'WATER' ,'CMAQ_MASKS' ,'OPEN', - ! 'ALL' ,'CMAQ_MASKS' ,'ALL', - ! 'ALL' ,'ISAM_REGIONS','ALL', -/ - -&Desid_RegionFam - ! Region Family Definitions - ! RegionFamilyName(1) = 'Water' - ! RegionFamilyMembers(1,:)= 'SURF','OPEN' - -/ - -!------------------------------------------------------------------------------! -! Emissions Scaling Family Definitions ! -! This component includes definitions for families of emission streams and ! -! region combinations. ! -!------------------------------------------------------------------------------! -&Desid_StreamFamVars - Desid_N_Stream_Fams = 5 ! Exact number of stream family definitions - Desid_Max_Stream_Fam_Members = 20 ! Larger than the number of streams on all - ! family definitions -/ - -&Desid_StreamFam -! For emission streams available in several run scripts under CCTM/scripts -! Set Desid_N_Stream_Fams to 1 !!!!!!! - ! StreamFamilyName(1) = 'PT_SOURCES' - ! StreamFamilyMembers(1,1:3)= 'PT_NONEGU','PT_EGU','PT_OTHER' - -! For emission streams unique in CCTM/src/run_cctm_cracmm_4LISTOS1.csh script -! Set Desid_N_Stream_Fams to number !!!!!!! -! All gridded and point files MUST be put in one of these categories for 2019 platform - ! Sources that do not have a source-specific POA treatment - StreamFamilyName(1) = 'GENERAL_POA' - StreamFamilyMembers(1,1:5)= 'G_np_solvents','G_asphalt','G_np_other','G_cooking','P_pt_other_nonfire' - - ! All wood burning: fires and RWC - StreamFamilyName(2) = 'PT_FIRE' - StreamFamilyMembers(2,1:2)= 'G_all_rwc','P_all_fire' - - ! Gasoline-like sources - StreamFamilyName(3) = 'GRIDDED_GASOLINE' - StreamFamilyMembers(3,1:1)= 'G_np_gasoline' - - ! Diesel-like Sources including marine vehicles (cmv) - StreamFamilyName(4) = 'DIESEL' - StreamFamilyMembers(4,1:2)= 'G_np_diesel','P_cmv' - - ! US and Canada Aircraft - StreamFamilyName(5) = 'AIRCRAFT' - StreamFamilyMembers(5,1:2)= 'G_aircraft','P_othpt_aircraft' - -/ - -!------------------------------------------------------------------------------! -! Emissions Diagnostic Output Component ! -! This section allows users to specify individual species for output on ! -! emissions diagnostic output files. ! -! Definition of Fields: ! -! NEmissDiag - the number of diagnostic 'instructions' that you are ! -! giving. It will very likely be different than the number ! -! of diagnostic emissions output files. For example, if you wish! -! to expand the streams using the ALL keyword, then all of the ! -! streams will have a file, but only one instruction is needed. ! -! EmissDiagStreams(NEmissDiag,:) - The stream names that are to be exported. ! -! In addition to the labels of individual streams, you may also use ! -! stream family names here to identify more than one stream at a time. ! -! By default, each stream family element will instruct CMAQ to sum all ! -! of the streams in that group. The keyword 'ALL' is available by ! -! default to expand a list of all streams individually. The keyword ! -! 'TOTAL' is availble to select the sum of all streams. You may use a ! -! '*' at the beginning of a family name to instruct CMAQ to expand that ! -! keyword and export files for all of the streams in that group. ! -! EmissDiagFmt(NEmissDiag) - the format of every stream created as a result ! -! of the instruction. Options are: ! -! - COLSUM = the column-sum ! -! - 3D = 3D output ! -! - LAYER1 = Just the surface layer ! -! - OFF = Turn Off File ! -! EmissDiagSpec(NEmissDiag,:) - The species to be added to each diagnostic ! -! file. Species will only appear on a diagnostic file if the relevant ! -! stream or group of streams for the file have that species present. ! -! The keyword 'ALL' may also be used to easily add all species of any ! -! stream. ! -!------------------------------------------------------------------------------! -&Desid_DiagVars - Desid_N_Diag_Rules = 0 ! Exact Number of Diagnostic Rules Below - Desid_Max_Diag_Streams=20 ! Maximum number of species variables on all rules - ! below (do not count expansions) - Desid_Max_Diag_Spec = 80 ! Maximum number of species variables on all rules - ! below (do not count expansions) -/ - -&Desid_Diag - - ! Example 1: Print all streams individually to many diagnostic files of 2D - ! column sums. NO, NO2, total NOX (defined in the chemical family interface - ! in CMAQ_Control_Misc.nml), bulk ASO4 (all modes), and CO will all be on the - ! file. - - ! Desid_Diag_Streams_Nml(1,:)= 'ALL' - ! Desid_Diag_Fmt_Nml(1) = 'COLSUM' ! Options: LAYER1, COLSUM, 3D - ! Desid_Diag_Spec_Nml(1,:) = 'NO','NO2','NOX','ASO4','CO' - - - ! Example 2: Activate the sum of all streams using the keyword TOTAL. This file - ! will be 3D and will include six variables: 'AEC' = AECI + AECJ + AECK; - ! 'AECI'; 'NO2'; 'ACLK'; 'AMG' and 'TERP' if those variables are avilable on - ! the stream. - - ! Desid_Diag_Streams_Nml(2,:)= 'TOTAL' - ! Desid_Diag_Fmt_Nml(2) = '3D' - ! Desid_Diag_Spec_Nml(2,:) = 'AEC','AECI','NO2','ACLK','AMG','TERP' - - - ! Example 3: Create a diagnostic of the sum of the components of the PT_SOURCES - ! family (defined in the stream family section). This file will be column sums - ! and will include all the emitted species as long as they appear on at least - ! one of the streams within PT_SOURCES. - - ! Desid_Diag_Streams_Nml(3,:)= 'PT_SOURCES' - ! Desid_Diag_Fmt_Nml(3) = 'COLSUM' - ! Desid_Diag_Spec_Nml(3,:) = 'ALL' - -/ - diff --git a/CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2_EPA2019.nml b/CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2_EPA2019.nml deleted file mode 100644 index 07cc5c739..000000000 --- a/CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2_EPA2019.nml +++ /dev/null @@ -1,394 +0,0 @@ -!------------------------------------------------------------------------------! -! Emission Control Interface ! -! for the ! -! Detailed Emissions Scaling, Isolation, and Diagnostics (DESID) Module, ! -! part of the ! -! Community Multiscale Air Quality (CMAQ) Model ! -! developed and maintained by the ! -! Center for Environmental Measurement and Modeling (CEMM), ! -! Office of Research and Development (ORD) ! -! U.S. Environmental Protection Agency (USEPA) ! -! ! -! This namelist is consistent with CMAQv5.4 (Release AUGUST 2022) ! -! ! -! See CMAQ User's Guide Appendix B (https://github.com/USEPA/CMAQ/blob/main/ ! -! DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md) ! -! and Murphy et al., Geoscientific Model Development, 14, 3407-3420, ! -! https://doi.org/10.5194/gmd-14-3407-2021, 2021. ! -!------------------------------------------------------------------------------! - -!------------------------------------------------------------------------------! -! Emissions Scaling Rule Specification Component ! -! Each rule is presented as a row of inputs. The syntax of the ! -! emissions scaling rules is the following: ! -! EM_INSTR(I) = 'Region Label', 'Stream Label', 'Emission-Species', ! -! 'CMAQ-Species', 'Phase/Mode', 'Scale Factor', 'Basis', ! -! 'Operation' ! -! ! -! See the User's Guide for detailed definitions of each field. ! -! ! -! You may confirm the effect of the (default and custom) rules below by ! -! inspecting the processor-dependent log files ("CTM_LOG_XXX...") ! -! ! -! Note: If no rules are provided for a species, then there is no emission ! -! of that species. ! -!------------------------------------------------------------------------------! -&Desid_ScalingVars - Desid_Max_Rules = 2500 -/ - -&Desid_Scaling - Desid_Rules_nml = - ! Region | Stream Label |Emission | CMAQ- |Phase/|Scale |Basis |Op - ! Label | |Surrogate| Species |Mode |Factor| | - - !> DEFAULT MAPPING Semivolatile POA - apply meat cooking profile by default for sources - ! that are not treated with a specific volatility profile (GENERAL_POA family). - ! Based on Woody et al., 2016: https://doi.org/10.5194/acp-16-4081-2016 - ! O:C Ratio of 0.1 (or lowest available OXY species) based on - ! Mohr et al. 2009 https://pubs.acs.org/doi/10.1021/es8011518 - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'VROCN2OXY2' ,'GAS' ,0. ,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','VROCN2OXY2' ,'GAS' ,0. ,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'VROCP0OXY2' ,'GAS' ,0.175,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','VROCP0OXY2' ,'GAS' ,0.175,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'VROCP1OXY1' ,'GAS' ,0.091,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','VROCP1OXY1' ,'GAS' ,0.091,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'VROCP2OXY2' ,'GAS' ,0.100,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','VROCP2OXY2' ,'GAS' ,0.100,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'VROCP3OXY2' ,'GAS' ,0.100,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','VROCP3OXY2' ,'GAS' ,0.100,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'AROCN2OXY2' ,'FINE',0.35 ,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','AROCN2OXY2' ,'FINE',0.35 ,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2','AROCP0OXY2' ,'FINE',0.175,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','AROCP0OXY2' ,'FINE',0.175,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'AROCP1OXY1' ,'FINE',0.009,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','AROCP1OXY1' ,'FINE',0.009,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'AROCP2OXY2' ,'FINE',0. ,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','AROCP2OXY2' ,'FINE',0. ,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'VROCP3OXY2' ,'FINE',0. ,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','VROCP3OXY2' ,'FINE',0. ,'MASS','a', - - ! --> Semivolatile POA - Use Woody et al. 2016 biomass burning for Fires - ! O:C ratio of 0.4 (or similar) used based on OM/OC of 1.7 and - ! Canagaratna et al. 2015 ACP relationship (OM/OC =1.29*O:C+1.17) - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'VROCN2OXY4' ,'GAS' ,0. ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','VROCN2OXY4' ,'GAS' ,0. ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'VROCP0OXY4' ,'GAS' ,0.05 ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','VROCP0OXY4' ,'GAS' ,0.05 ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'VROCP1OXY3' ,'GAS' ,0.091,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','VROCP1OXY3' ,'GAS' ,0.091,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'VROCP2OXY2' ,'GAS' ,0.200,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','VROCP2OXY2' ,'GAS' ,0.200,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'VROCP3OXY2' ,'GAS' ,0.400,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','VROCP3OXY2' ,'GAS' ,0.400,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'AROCN2OXY4' ,'FINE',0.20 ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','AROCN2OXY4' ,'FINE',0.20 ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2','AROCP0OXY4' ,'FINE',0.05 ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','AROCP0OXY4' ,'FINE',0.05 ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'AROCP1OXY3' ,'FINE',0.009,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','AROCP1OXY3' ,'FINE',0.009,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'AROCP2OXY2' ,'FINE',0. ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','AROCP2OXY2' ,'FINE',0. ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'VROCP3OXY2' ,'FINE',0. ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','VROCP3OXY2' ,'FINE',0. ,'MASS','a', - - ! Gasoline-Source Volatility Distribution (Mostly Onroad and Offroad Vehicles) - ! Gasoline profile based on Lu et al. 2020 https://doi.org/10.5194/acp-20-4313-2020 - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMOCN2' ,'AROCN1ALK' ,'FINE',0.228,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMNCOMN2','AROCN1ALK' ,'FINE',0.228,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMOCN2' ,'AROCP0ALK' ,'FINE',0.054,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMNCOMN2','AROCP0ALK' ,'FINE',0.054,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMOCN2' ,'VROCP0ALK' ,'GAS' ,0.054,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMNCOMN2','VROCP0ALK' ,'GAS' ,0.054,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMOCN2' ,'VROCP1ALK' ,'GAS' ,0.515,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMNCOMN2','VROCP1ALK' ,'GAS' ,0.515,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMOCN2' ,'VROCP2ALK' ,'GAS' ,0.550,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMNCOMN2','VROCP2ALK' ,'GAS' ,0.550,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMOCN2 ' ,'VROCP3ALK' ,'GAS' ,0.0 ,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMNCOMN2','VROCP3ALK' ,'GAS' ,0.0 ,'MASS','a', - - 'EVERYWHERE', 'GRIDDED_GASOLINE','NMOG' ,'VROCP3ALK' ,'GAS' ,0.0032,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','NMOG' ,'VROCP4ALK' ,'GAS' ,0.0034,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','NMOG' ,'VROCP5ALK' ,'GAS' ,0.0019,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','NMOG' ,'VROCP6ALK' ,'GAS' ,0.0064,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','NMOG' ,'VROCP5ARO' ,'GAS' ,0.0060,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','NMOG' ,'VROCP6ARO' ,'GAS' ,0.0253,'MASS','a', - - ! Diesel Family Volatility Distribution (Mostly Onroad and Offroad Sources and CMV) - ! Diesel profile based on Lu et al. 2020 https://doi.org/10.5194/acp-20-4313-2020 - 'EVERYWHERE', 'DIESEL' ,'PMOCN2' ,'AROCN1ALK' ,'FINE',0.187,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMNCOMN2','AROCN1ALK' ,'FINE',0.187,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMOCN2' ,'AROCP0ALK' ,'FINE',0.043,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMNCOMN2','AROCP0ALK' ,'FINE',0.043,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMOCN2' ,'VROCP0ALK' ,'GAS' ,0.043,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMNCOMN2','VROCP0ALK' ,'GAS' ,0.043,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMOCN2' ,'VROCP1ALK' ,'GAS' ,0.364,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMNCOMN2','VROCP1ALK' ,'GAS' ,0.364,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMOCN2' ,'VROCP2ALK' ,'GAS' ,0.363,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMNCOMN2','VROCP2ALK' ,'GAS' ,0.363,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMOCN2' ,'VROCP3ALK' ,'GAS' ,0.0 ,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMNCOMN2','VROCP3ALK' ,'GAS' ,0.0 ,'MASS','a', - - 'EVERYWHERE', 'DIESEL' ,'NMOG' ,'VROCP3ALK' ,'GAS' ,0.0536,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'NMOG' ,'VROCP4ALK' ,'GAS' ,0.1486,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'NMOG' ,'VROCP5ALK' ,'GAS' ,0.1869,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'NMOG' ,'VROCP6ALK' ,'GAS' ,0.1588,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'NMOG' ,'VROCP5ARO' ,'GAS' ,0.0043,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'NMOG' ,'VROCP6ARO' ,'GAS' ,0.0025,'MASS','a', - - ! Aircraft Family Turbine Engine Volatility Distribution - ! Aircraft profile based on Lu et al. 2020 https://doi.org/10.5194/acp-20-4313-2020 - 'EVERYWHERE', 'AIRCRAFT' ,'PMOCN2' ,'AROCN1ALK' ,'FINE',0.149,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMNCOMN2','AROCN1ALK' ,'FINE',0.149,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMOCN2' ,'AROCP0ALK' ,'FINE',0.130,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMNCOMN2','AROCP0ALK' ,'FINE',0.130,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMOCN2' ,'VROCP0ALK' ,'GAS' ,0.130,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMNCOMN2','VROCP0ALK' ,'GAS' ,0.130,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMOCN2' ,'VROCP1ALK' ,'GAS' ,0.384,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMNCOMN2','VROCP1ALK' ,'GAS' ,0.384,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMOCN2' ,'VROCP2ALK' ,'GAS' ,0.208,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMNCOMN2','VROCP2ALK' ,'GAS' ,0.208,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMOCN2' ,'VROCP3ALK' ,'GAS' ,0.0 ,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMNCOMN2','VROCP3ALK' ,'GAS' ,0.0 ,'MASS','a', - - ! Volatility resolved CRACMM semivolatile POA - 'EVERYWHERE', 'ALL' ,'POCN2' ,'AROCN2ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'POCN1' ,'AROCN1ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'POCP0' ,'AROCP0ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'POCP1' ,'AROCP1ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'POCP2' ,'AROCP2ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PNCOMN2' ,'AROCN2ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PNCOMN1' ,'AROCN1ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PNCOMP0' ,'AROCP0ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PNCOMP1' ,'AROCP1ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PNCOMP2' ,'AROCP2ALK' ,'FINE',1.0,'UNIT','a', - - ! pcSOA is a CMAQ species introduced to account for missing pathways for SOA - ! formation from combustion sources. It includes IVOC oxidation as well as other - ! phenomena (Murphy et al., ACP, 2017). It was parameterized primarily in LA, - ! where vehicle exhaust continues to dominate. - ! pcSOA is deprecated in CRACMM - - ! Wind-Blown Dust and Sea Spray Scaling - ! Fine Components - 'EVERYWHERE', 'ALL' ,'PMFINE_SO4' ,'ASO4' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_NO3' ,'ANO3' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_CL' ,'ACL' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_NH4' ,'ANH4' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_NA' ,'ANA' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_CA' ,'ACA' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_MG' ,'AMG' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_K' ,'AK' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_FE' ,'AFE' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_AL' ,'AAL' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_SI' ,'ASI' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_TI' ,'ATI' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_MN' ,'AMN' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_H2O' ,'AH2O' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_OTHR' ,'AOTHR' ,'FINE',1. ,'UNIT','a', - - - ! Wind-Blown Dust and Sea Spray Scaling - ! Coarse Components - 'EVERYWHERE', 'ALL' ,'PMCOARSE_SO4','ASO4' ,'COARSE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMCOARSE_NO3','ANO3' ,'COARSE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMCOARSE_CL' ,'ACL' ,'COARSE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMCOARSE_H2O','AH2O' ,'COARSE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMCOARSE_SOIL','ASOIL' ,'COARSE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMCOARSE_SEACAT','ASEACAT' ,'COARSE',1. ,'UNIT','a', - - - ! Updated aromatic species for CRACMM2 - ! EBZ is now explicit ethylbenzene; was lumped in XYE before. - ! XYL is now all xylenes and similar aromatics. Previously o- and p-xylenes - ! were included in XYE while m-xylene was included in XYM. - ! New species STY is explicit styrene. Styrene was previously included in XYM. - - ! EBZ and XYE remapping - ! Generic scaling if not scaling by sector: 70% XYL; 30% EBZ - 'EVERYWHERE', 'ALL' ,'XYE' ,'XYL' ,'GAS' ,0.70,'UNIT','m', - 'EVERYWHERE', 'ALL' ,'XYE' ,'EBZ' ,'GAS' ,0.30,'UNIT','a', - - ! STY and XYM remapping - ! Generic scaling if not scaling by sector: 93% XYL; 7% STY - !'EVERYWHERE', 'ALL' ,'XYM' ,'XYL' ,'GAS' ,0.93,'UNIT','m', - !'EVERYWHERE', 'ALL' ,'XYM' ,'STY' ,'GAS' ,0.07,'UNIT','a', - ! Source-specific scaling - ! gasoline: 99% XYL; 1% STY - 'EVERYWHERE', 'GRIDDED_GASOLINE','XYM' ,'XYL' ,'GAS' ,0.99,'UNIT','m', - 'EVERYWHERE', 'GRIDDED_GASOLINE','XYM' ,'STY' ,'GAS' ,0.01,'UNIT','a', - ! ptnonipm: 35% XYL; 65% STY - 'EVERYWHERE', 'P_ptnonipm' ,'ALL' ,'ALL' ,'ALL' ,0.0 ,'UNIT','m',! zero ptnonipm emissions - 'EVERYWHERE', 'P_ptnonipm' ,'XYM' ,'STY' ,'GAS' ,0.65 ,'UNIT','a',! 65% of XYM emissions to STY - 'EVERYWHERE', 'P_ptnonipm' ,'XYM' ,'XYL' ,'GAS' ,-0.65,'UNIT','a',! remove 65% of XYM that was already included in P_pt_other_nonfire - ! fires (not including rwc): 78% XYM; 12% STY - 'EVERYWHERE', 'P_all_fire' ,'XYM' ,'XYL' ,'GAS' ,0.78,'UNIT','m', - 'EVERYWHERE', 'P_all_fire' ,'XYM' ,'STY' ,'GAS' ,0.12,'UNIT','a', - ! solvents (aka VCP): 94% XYL; 6% STY - 'EVERYWHERE', 'G_np_solvents','XYM' ,'XYL' ,'GAS' ,0.94,'UNIT','m', - 'EVERYWHERE', 'G_np_solvents','XYM' ,'STY' ,'GAS' ,0.06,'UNIT','a', - -/ From 23c298b14ecc55b0f9d7f05cef3e14075aa74d45 Mon Sep 17 00:00:00 2001 From: Jeff Willison Date: Wed, 2 Oct 2024 08:58:31 -0400 Subject: [PATCH 329/375] Rename run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh to run_cctm_2018_12US1_v55_Base_STAGE_EM_CRACMM.csh --- ...RACMM.csh => run_cctm_2018_12US1_v55_Base_STAGE_EM_CRACMM.csh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CCTM/scripts/{run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh => run_cctm_2018_12US1_v55_Base_STAGE_EM_CRACMM.csh} (100%) diff --git a/CCTM/scripts/run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh b/CCTM/scripts/run_cctm_2018_12US1_v55_Base_STAGE_EM_CRACMM.csh similarity index 100% rename from CCTM/scripts/run_cctm_2018_12US1_v54_Base_STAGE_EM_CRACMM.csh rename to CCTM/scripts/run_cctm_2018_12US1_v55_Base_STAGE_EM_CRACMM.csh From 99013569ab9ea37f8d3545e17d4530751d6926f1 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 09:14:31 -0400 Subject: [PATCH 330/375] Update CMAQ_UG_tutorial_DDM3D.md Fixes to file path names and locations --- .../Tutorials/CMAQ_UG_tutorial_DDM3D.md | 32 ++++++------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md index ca9db2145..f931cb473 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md @@ -2,7 +2,7 @@ ### Procedure to build and run the CMAQ-DDM3D model using cb6r5 mechanism and m3dry dry deposition scheme using gnu compiler: ### -### Step 1: Download and run the CMAQv5.4 cb6r5 benchmark case (without DDM3D) to confirm that your model run is consistent with the provided benchmark output. +### Step 1: Download and run the CMAQv5.5 cb6r5 benchmark case (without DDM3D) to confirm that your model run is consistent with the provided benchmark output. - [CMAQ Benchmark Tutorial](CMAQ_UG_tutorial_benchmark.md) If you encounter any errors, try running the model in debug mode and refer to the CMAS User Forum to determine if any issues have been reported. @@ -42,7 +42,7 @@ GNJ END ``` -The following gridmask file is provided with the benchmark inputs in the CMAQv5.4_2018_12NE3_Benchmark_2Day_Input/2018_12NE3 directory (see step 10 below) +The following gridmask file is provided with the [5.5 benchmark inputs](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/index.html#v5_5/) tar file CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz. (See step 10 below.) ``` GRIDMASK_STATES_12NE3.nc @@ -172,24 +172,18 @@ Add the following line at the bottom of the the namelist file (before the /) ### Step 11: Install the CMAQ-DDM-3D reference input and output benchmark data -Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S that uses the cb6r5_ae7_aq mechanism and the m3dry dry deposition scheme. +Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/index.html#v5_5/): CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz and output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz. The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S that uses the cb6r5_ae7_aq mechanism and the m3dry dry deposition scheme. - - Use the gdrive command to download the dataset. - - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions - - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) - - Text files are included that provide a list of the files in the benchmark input and output datasets. - -The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz). - -Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: +Download and copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: ``` cd $CMAQ_DATA +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz +tar xvzf output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz ``` -The input files for the CMAQv5.4 DDM-3D benchmark case are the same as the benchmark inputs for the base model. Output DDM files associated with the sample DDM control file sensinput.2018_12NE3.dat provided in this release package are included in the benchmark outputs for the base model. ### Step 12: Review the CMAQ-DDM3D runscript @@ -200,7 +194,7 @@ gedit run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh Verify General Parameters for Configuring the Simulation ``` - set VRSN = v54_DDM3D + set VRSN = v55_DDM3D ``` @@ -239,12 +233,7 @@ sbatch run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh ### Step 14: Compare output with the 2 day benchmark outputs provided on the CMAS Center AWS Open Data Program - - ``` - wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz - ``` - - Note, the following DDM-3D output files are generated in addition to the standard CMAQ output files. +Note, the following DDM-3D output files are generated in addition to the standard CMAQ output files. ``` CCTM_SENWDEP_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180701.nc @@ -252,9 +241,6 @@ sbatch run_cctm_Bench_2018_12NE3_cb6r5_m3dry_ddm.csh CCTM_SENGRID_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry_20180701.nc ``` - - - ### Step 15: Compare sensitivities First order sensitivities should not be larger than bulk, second order should not be larger than first order. From 15b6569fb89b9282f04d73c719b05d84e0877bbc Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 09:20:34 -0400 Subject: [PATCH 331/375] Update CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md --- .../CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md index 09a52633a..9b57a7403 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md @@ -179,24 +179,25 @@ Users should look for the following message at the end of their bldit_cctm_twowa If the User sees this, the WRF-CMAQ model has been successfully compiled and built. If not, the User should double check the library paths above and try again. If it still fails, please reach post on the [CMAS Forum](https://forum.cmascenter.org/c/wrf-cmaq). -### Install the WRF-CMAQ reference input and output benchmark data +### Install the WRF-CMAQ reference input benchmark data -Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Google Drive](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing) or from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmas-cmaq.s3.amazonaws.com/index.html). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. +Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Google Drive](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing) or from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/index.html#v5_5/ +), file CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz. The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. - - Use the gdrive command to download the dataset. + - Use the gdrive command if you are downloading the dataset from Google Drive. - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) - - Text files are included that provide a list of the files in the benchmark input and output datasets. + - Text files are included that provide a list of the files in the benchmark input datasets. + - Reference output files for WRF-CMAQv5.5 will be provided at a later date. -Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: +Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input files: ``` cd $CMAQ_DATA tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz ``` -The input files for the WRF-CMAQ benchmark case are provided in the base model benchmark inputs .tar file. Output WRF-CMAQ files associated with the sample run script for the coupled WRF-CMAQ model in this release package are provided in the base model benchmark outputs .tar file. +The input files for the WRF-CMAQ benchmark case are provided in the base model benchmark inputs .tar file. ## Running the WRF-CMAQ model From 39c7873b70341dc24bf3da4df95449fda1b05988 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 09:32:10 -0400 Subject: [PATCH 332/375] Update CMAQ_UG_tutorial_benchmark.md --- .../Tutorials/CMAQ_UG_tutorial_benchmark.md | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index 7fbfbce01..5a8425c1f 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -97,20 +97,16 @@ source config_cmaq.csh gcc 9.5 ## Install the CMAQ reference input and output benchmark data -Download the CMAQ two day reference input and output data for the cb6r5_ae7 mechanism (using inputs from CMAQv5.4 Benchmark release) from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing), download the file CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz. The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. +Download the CMAQ two day reference input and output data for the cb6r5_ae7 mechanism (using inputs from CMAQv5.4 Benchmark release) from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/index.html#v5_5/): CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz and output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz. The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. - - Use the gdrive command to download the dataset. - - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions - - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) - - Text files are included that provide a list of the files in the benchmark input and output datasets. - -The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz). - -Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: +Download and copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: ``` cd $CMAQ_DATA +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz tar -xzvf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz +tar -xzvf output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz ``` ## Compiling CMAQ @@ -177,7 +173,7 @@ cd $CMAQ_HOME/CCTM/scripts Verify that the BLD directory contains a namelist called ``` -cd BLD_CCTM_v55_DDM3D_gcc_cb6r5_ae7_aq_m3dry +cd BLD_CCTM_v55_gcc_cb6r5_ae7_aq_m3dry ls CMAQ_Control_DESID_cb6r5_ae7_aq.nml ``` @@ -224,7 +220,7 @@ To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/sc After configuring the MPI settings for your Linux system, check the rest of the script to ensure the correct path, date and names are used for the input data files. Per the note above, different Linux systems have different requirements for submitting MPI jobs. The command below is an example of how to submit the CCTM run script and may differ depending on the MPI requirements of your Linux system. ``` -./run_cctm_Bench_2018_12NE3_cb6r5_m3dry.csh |& tee cctm.log +./run_cctm_Bench_2018_12NE3_CB6R5_M3DRY.csh |& tee cctm.log ``` ## Confirm that the Benchmark Simulation Completed @@ -267,9 +263,9 @@ To determine if CMAQ is correctly installed on your Linux system compare the res - Red Hat Enterprise Linux Server 7.3 (Maipo) (use command: cat /etc/os-release) - GNU GCC compiler version 9.1.0, 16 processors with OpenMPIv4.0.1 and I/O APIv3.2 tagged version 20200828 - Debug mode turned off (```set Debug_CCTM``` commented out in $CMAQ_HOME/CCTM/scripts/bldit_cctm.csh) -- CMAQv5.4 +- CMAQv5.5 -The CMAQv5.4 reference output data includes a set of CCTM_ACONC_\*.nc files with layer 1 average model species concentrations for each model hour for 226 variables and a set of CCTM_WETDEP1_\*.nc files with cumulative hourly wet deposition fluxes for an additional 136 variables. The CCTM_SA_ACONC_\*.nc, CCTM_SA_CGRID_\*.nc, CCTM_SA_CONC_\*.nc, CCTM_SA_WETDEP_\*.nc and CCTM_SA_DRYDEP_\*.nc are generated when you run the CMAQ-ISAM benchmark. See the [CMAQ-ISAM Tutorial](../Tutorials/CMAQ_UG_tutorial_ISAM.md) for more information. +The CMAQv5.5 reference output data includes a set of CCTM_ACONC_\*.nc files with layer 1 average model species concentrations for each model hour for 226 variables and a set of CCTM_WETDEP1_\*.nc files with cumulative hourly wet deposition fluxes for an additional 136 variables. Use your netCDF evaluation tool of choice to evaluate your benchmark results. For example, [VERDI](https://www.verdi-tool.org/) is a visualization tool to view CCTM results as tile plots. Statistical comparison of the results can be made with the I/O API Tools or R. From ac21610cfe276a9f4ef12a09cb9918e5c24fc9a1 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 09:33:02 -0400 Subject: [PATCH 333/375] Rename run_cctm_Bench_2018_12NE3.csh to run_cctm_Bench_2018_12NE3_CB6R5_M3DRY.csh --- ...h_2018_12NE3.csh => run_cctm_Bench_2018_12NE3_CB6R5_M3DRY.csh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CCTM/scripts/{run_cctm_Bench_2018_12NE3.csh => run_cctm_Bench_2018_12NE3_CB6R5_M3DRY.csh} (100%) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3_CB6R5_M3DRY.csh similarity index 100% rename from CCTM/scripts/run_cctm_Bench_2018_12NE3.csh rename to CCTM/scripts/run_cctm_Bench_2018_12NE3_CB6R5_M3DRY.csh From f13a374e817dac1e614d34c028e747a6388c6768 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 09:40:16 -0400 Subject: [PATCH 334/375] Update CMAQ_UG_tutorial_ISAM.md --- .../Tutorials/CMAQ_UG_tutorial_ISAM.md | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index bf43b0f2a..40a425673 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -1,6 +1,6 @@ ## CMAQ-ISAM Benchmark Tutorial ## -### Procedure to build and run the CMAQ-ISAM model using gnu compiler for the cb6r5_ae7_aq mechanism with the m3dry dry deposition scheme: ### +Procedure to build and run the CMAQ-ISAM model using gnu compiler for the cb6r5_ae7_aq mechanism with the m3dry dry deposition scheme: ### Step 1: Download and run the CMAQv5.5 benchmark case (without ISAM) to confirm that your model run is consistent with the provided benchmark output. - [CMAQ Benchmark Tutorial](CMAQ_UG_tutorial_benchmark.md) @@ -185,22 +185,16 @@ Add the following line at the bottom of the the namelist file (before the /) ### Step 12: Install the CMAQ-ISAM reference input and output benchmark data -Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. +Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/index.html#v5_5/): CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz and output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz. - - Use the gdrive command to download the dataset. - - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions - - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) - - Text files are included that provide a list of the files in the benchmark input and output datasets. - -The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz). - -Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: +Download and copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: ``` cd $CMAQ_DATA wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz +tar xvzf output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz ``` The input files for the CMAQv5.4 ISAM benchmark case are the same as the benchmark inputs for the base model. Output source apportionment files associated with the sample isam_control.txt provided in this release package are included in the benchmark outputs for the base model. @@ -352,8 +346,8 @@ Download the run script and species definition files for this case from the AWS ``` cd CMAQ_v5.5/POST/combine/scripts -wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/combine/scripts/run_combine_ISAM_aconc%2Bdep_example_cb6r5_ae7_aq_12ne3_benchmark.csh -wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/combine/scripts/run_combine_ISAM_sa_aconc%2Bsa_dep_example_cb6r5_ae7_aq_12ne3_benchmark.csh +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/combine/scripts/run_combine_ISAM_aconc+dep_example_cb6r5_ae7_aq_12ne3_benchmark.csh +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/combine/scripts/run_combine_ISAM_sa_aconc+sa_dep_example_cb6r5_ae7_aq_12ne3_benchmark.csh wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/combine/scripts/SpecDef_ISAM_Conc_benchmark_cb6r5_ae7_aq.txt wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/ISAM_Benchmark/POST/combine/scripts/SpecDef_ISAM_Dep_benchmark_cb6r5_ae7_aq.txt ``` From 789eb58450b63f6840ef64aa95e7276e4aa0878b Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 2 Oct 2024 09:41:20 -0400 Subject: [PATCH 335/375] fix netCDF build --- .../gcc_install_cmaq55_cb6r5_m3dry.csh | 5 ----- ...gcc_install_netcdf_for_nc4_compression.csh | 20 ++++++++++--------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh index 2a41e92e4..f1c96bab0 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh @@ -59,11 +59,6 @@ cd $BUILD/../openmpi_gcc/CCTM/scripts/ ls -rlt BLD_CCTM_v55_gcc_cb6r5_ae7_aq_m3dry/*.exe -#Note, to run CMAQ, please create modules or set the LD_LIBRARY_PATH to include the directories for $BUILD/lib at run time. -##see this tutorial for instructions to install modules: -##https://pcluster-cmaq.readthedocs.io/en/latest/user_guide_pcluster/developers_guide/cmaq-vm/install.html#install-environment-modules -## If you have modules on your machine, you can create custom modules -## https://pcluster-cmaq.readthedocs.io/en/latest/user_guide_pcluster/developers_guide/cmaq-vm/install.html#create-custom-environment-module-for-libraries diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh index 404c46e90..a885bfe18 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_netcdf_for_nc4_compression.csh @@ -33,7 +33,7 @@ set echo wget https://curl.se/download/curl-8.10.1.tar.gz tar -xzvf curl-8.10.1.tar.gz cd curl-8.10.1 - ./configure --prefix=${INSTDIR} --with-openssl --without-libpsl + ./configure --prefix=${INSTDIR} --without-ssl make |& tee make.curl.log make install |& tee make.install.curl.log @@ -73,28 +73,30 @@ set echo #wget https://downloads.unidata.ucar.edu/netcdf-c/4.9.2/netcdf-c-4.9.2.zip tar xvf v4.8.0.tar.gz cd netcdf-c-4.8.0 - ./configure --with-pic --enable-netcdf-4 --disable-shared --prefix=${INSTDIR} + ./configure --with-pic --enable-netcdf-4 --enable-shared --prefix=${INSTDIR} make |& tee make.gcc9.log make install # --------------------------------- # Download and build netCDF-Fortran # --------------------------------- cd ${INSTDIR} - wget https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.5.4.tar.gz + wget https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.5.3.tar.gz # installation instructions - tar xvf v4.5.4.tar.gz - cd netcdf-fortran-4.5.4 + tar xvf v4.5.3.tar.gz + cd netcdf-fortran-4.5.3 ## Note, if non-standard locaions are used for the following compilers, you may need to specify their locations here: setenv FC gfortran setenv F90 gfortran setenv F77 gfortran setenv CC gcc setenv CXX g++ - setenv LIBS " -lnetcdf -lhdf5_hl -lhdf5 -lm -ldl -lz -lcurl " + #setenv LIBS " -lnetcdf -lhdf5_hl -lhdf5 -lm -ldl -lz -lcurl " + setenv NCDIR ${INSTDIR} + setenv LIBS "-lnetcdf" setenv CPPFLAGS -I${INSTDIR}/include setenv LDFLAGS -L${INSTDIR}/lib - setenv LD_LIBRARY_PATH ${INSTDIR}/lib - ./configure --with-pic --disable-shared --prefix=${INSTDIR} + setenv LD_LIBRARY_PATH ${INSTDIR}/lib:${LD_LIBRARY_PATH} + ./configure --with-pic --enable-shared --prefix=${INSTDIR} make |& tee make.gcc9.log make install # ----------------------------- @@ -104,7 +106,7 @@ set echo wget https://github.com/Unidata/netcdf-cxx4/archive/refs/tags/v4.3.1.tar.gz tar xvf v4.3.1.tar.gz cd netcdf-cxx4-4.3.1 - ./configure --with-pic --disable-shared --prefix=$INSTDIR + ./configure --with-pic --enable-shared --prefix=$INSTDIR make |& tee make.gcc9.log make install # -------------------------- From fea342662ff2e00c3e7249b4ea60334cf0044f7b Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 2 Oct 2024 09:43:53 -0400 Subject: [PATCH 336/375] add back comments about using modules --- .../Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh index f1c96bab0..2a41e92e4 100755 --- a/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh +++ b/DOCS/Users_Guide/Tutorials/gcc_install_cmaq55_cb6r5_m3dry.csh @@ -59,6 +59,11 @@ cd $BUILD/../openmpi_gcc/CCTM/scripts/ ls -rlt BLD_CCTM_v55_gcc_cb6r5_ae7_aq_m3dry/*.exe +#Note, to run CMAQ, please create modules or set the LD_LIBRARY_PATH to include the directories for $BUILD/lib at run time. +##see this tutorial for instructions to install modules: +##https://pcluster-cmaq.readthedocs.io/en/latest/user_guide_pcluster/developers_guide/cmaq-vm/install.html#install-environment-modules +## If you have modules on your machine, you can create custom modules +## https://pcluster-cmaq.readthedocs.io/en/latest/user_guide_pcluster/developers_guide/cmaq-vm/install.html#create-custom-environment-module-for-libraries From 94fa7d0c0e13389f72f052857b950306c8befc77 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 2 Oct 2024 09:50:52 -0400 Subject: [PATCH 337/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index bf43b0f2a..4c353065b 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -199,8 +199,8 @@ Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and ``` cd $CMAQ_DATA wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz ``` The input files for the CMAQv5.4 ISAM benchmark case are the same as the benchmark inputs for the base model. Output source apportionment files associated with the sample isam_control.txt provided in this release package are included in the benchmark outputs for the base model. From 2e2a90763a9b7b334e06a77196a1c515bf5b93cc Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 10:02:15 -0400 Subject: [PATCH 338/375] Update README.md @fisidi @lizadams Please check whether you agree with my reformatting of the Tutorials README page. --- DOCS/Users_Guide/Tutorials/README.md | 43 ++++++++++++++++------------ 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/README.md b/DOCS/Users_Guide/Tutorials/README.md index 895e16acc..cfa21dcec 100644 --- a/DOCS/Users_Guide/Tutorials/README.md +++ b/DOCS/Users_Guide/Tutorials/README.md @@ -3,23 +3,28 @@ CMAQ Tutorials A series of short tutorials provide practical examples of how to set up and run CMAQ, exercise different features in the software, and better understand the software system. Community members are encouraged to both suggest ideas for new tutorials and to contribute tutorials directly to this repository. [Contact the CMAS Center](cmas@unc.edu) with new tutorial ideas. -- [Building CMAQ for GNU using libraries that disable netCDF4 compression](CMAQ_UG_tutorial_build_library_gcc.md): This tutorial describes how to install netCDF and I/O API libraries and build CMAQ using the GNU GCC compiler version 9.1.0. -- [Building CMAQ for GNU using libraries that support compressed netCDF4](CMAQ_UG_tutorial_build_library_gcc_support_nc4.md): This tutorial describes how to install netCDF and I/O API libraries to support netCDF-4 compressed files. -- [Script to install netCDF libraries to support netCDF4 compression](gcc_install_netcdf_for_nc4_compression.csh): This script installs prerequisite libraries for netCDF-4 to support compressed files. -- [Script to install I/O API library to support netCDF4 compression](gcc_install_ioapi_for_nc4_compression.csh): This script installs I/O API library to support compressed files. -- [Script to install CMAQv55 for cb6r5 and m3dry](gcc_install_cmaq55_cb6r5_m3dry.csh): This script installs CMAQv5.5 and uses libraries that support netCDF-4 compression. -- [Building CMAQ for Intel using libraries that disable netCDF4 compression](CMAQ_UG_tutorial_build_library_intel.md): This tutorial describes how to install netCDF and I/O API libraries and build CMAQ using the Intel compiler version 18.2. -- [Running the CMAQ Test Case for cracmm2 and stage](CMAQ_UG_tutorial_benchmark_cracmm2_stage.md): This tutorial describes how to prepare your Linux system for installing and running the CMAQ test case for cracmm2 and stage. -- [Running the CMAQ Test Case for cb6r5 and stage](CMAQ_UG_tutorial_benchmark_cb6r5_stage.md): This tutorial describes how to prepare your Linux system for installing and running the CMAQ test case for the cb6r5_ae7_aq mecchanism and the stage dry deposition scheme. -- [Running the CMAQ Test Case for cb6r5 and m3dry](CMAQ_UG_tutorial_benchmark.md): This tutorial describes how to prepare your Linux system for installing and running the CMAQ test case for cb6r5_ae7_aq and m3dry. -- [Running the CMAQ-ISAM Test Case for cb6r5 and m3dry](CMAQ_UG_tutorial_ISAM.md): This tutorial describes how to build and run the CMAQ-ISAM model using GNU GCC compiler for cb6r5_ae7_aq and m3dry. -- [Running the CMAQ-DDM-3D Test Case for cb6r5 and m3dry](CMAQ_UG_tutorial_DDM3D.md): This tutorial describes how to build and run the CMAQ-DDM-3D model using GNU GCC compiler cb6r5_ae7_aq and m3dry. -- [Running the WRF-CMAQ Test Case](CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md) This tutorial describes how to build and run the WRF-CMAQ model. -- [Debugging Tips](CMAQ_UG_tutorial_debug.md): This tutorial describes how to examine log files and debug issues encountered when installing and running the CMAQ test case. -- [Using the Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMM)](CMAQ_UG_tutorial_CRACMM.md) This tutorial gives an overview and FAQ on how to run CMAQ with the new CRACMM mechanism. -- [Prescribing Emissions Using the DESID Module](CMAQ_UG_tutorial_emissions.md): This tutorial describes how to use the Emission Control namelist to manipulate emission inputs, e.g. zero out emissions, scaling emissions, adding emissions for a new tracer. -- [Creating an OCEAN file](CMAQ_UG_tutorial_oceanfile.md): This tutorial describes methods to a CMAQ Ocean file. -- [Adding an Inert Tracer Species to CMAQ](CMAQ_UG_tutorial_tracers.md): This tutorial will step you through the process of adding chemically inert tracers to the CMAQ model. -- [Create Initial and Boundary Conditions from Seasonal Average Hemispheric CMAQ Output](CMAQ_UG_tutorial_HCMAQ_IC_BC.md): This tutorial will step the user through the process of creating initial and boundary conditions from a seasonal average hemispheric CMAQ output file distributed through the CMAS data warehouse. -- [Modifying a CMAQ Chemical Mechanism](CMAQ_UG_tutorial_chemicalmechanism.md): This tutorial describes how to modify a chemical mechanism in CMAQ and reflect the changes in Github. +- **Scripts to automatically install software needed to run CMAQ** + - [Script to install I/O API library to support netCDF4 compression](gcc_install_ioapi_for_nc4_compression.csh) + - [Script to install netCDF libraries to support netCDF4 compression](gcc_install_netcdf_for_nc4_compression.csh) + - [Script to install CMAQv55 for CB6r5 and M3DRY](gcc_install_cmaq55_cb6r5_m3dry.csh) +- **Directions on how to prepare your Linux system for installing and running CMAQ** (These directions are an alternative to the above helper scripts.) + - [Building CMAQ for GNU using libraries that disable netCDF4 compression](CMAQ_UG_tutorial_build_library_gcc.md) + - [Building CMAQ for GNU using libraries that support compressed netCDF4](CMAQ_UG_tutorial_build_library_gcc_support_nc4.md) + - [Building CMAQ for Intel using libraries that disable netCDF4 compression](CMAQ_UG_tutorial_build_library_intel.md) + +- **Directions for running CMAQ test cases** + - [Running the CMAQ Base Model with CRACMM2 and STAGE](CMAQ_UG_tutorial_benchmark_cracmm2_stage.md) + - [Running the CMAQ Base Model with CB6r5 and M3DRY](CMAQ_UG_tutorial_benchmark.md) + - [Running the CMAQ-ISAM Test Case](CMAQ_UG_tutorial_ISAM.md) + - [Running the CMAQ-DDM-3D Test Case](CMAQ_UG_tutorial_DDM3D.md) + - [Running the WRF-CMAQ Test Case](CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md) + +- **Other Tutorials** + - [Debugging Tips](CMAQ_UG_tutorial_debug.md) + - [Using the Community Regional Atmospheric Chemistry Multiphase Mechanism (CRACMM)](CMAQ_UG_tutorial_CRACMM.md) + - [Manipulate Emissions Inputs with the DESID Module](CMAQ_UG_tutorial_emissions.md) + - [Creating an OCEAN file](CMAQ_UG_tutorial_oceanfile.md) + - [Adding an Inert Tracer Species to CMAQ](CMAQ_UG_tutorial_tracers.md) + - [Create Initial and Boundary Conditions from Seasonal Average Hemispheric CMAQ Output](CMAQ_UG_tutorial_HCMAQ_IC_BC.md) + - [Modifying a CMAQ Chemical Mechanism](CMAQ_UG_tutorial_chemicalmechanism.md) From 0fd314b75c2a1b6c122a25d1b05629b5788564fb Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 10:05:49 -0400 Subject: [PATCH 339/375] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0fea0b6ea..7051b4f6d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![image](https://github.com/user-attachments/assets/1dd3bdbe-9750-41b2-8b39-f234d74b8ecf)CMAQv5.5 +CMAQv5.5 ========== US EPA Community Multiscale Air Quality Model (CMAQ) Website: https://www.epa.gov/cmaq From d08ab1cb13e1293bdf11889a0e71bed03add9dc8 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 2 Oct 2024 10:09:12 -0400 Subject: [PATCH 340/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 4c353065b..748b0afd6 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -165,7 +165,7 @@ Uncomment the line that contains ISAM_REGIONS as the File Label 'ALL' ,'ISAM_REGIONS','ALL', / ``` - + ### Step 11: Example of emissions scaling (Reduce the PT_EGU emissions in NY by 25%) (Optional step, described here, but not used) @@ -249,7 +249,7 @@ Verify the start and end dates to match the input data for this benchmark. #> Set Start and End Days for looping setenv NEW_START TRUE #> Set to FALSE for model restart set START_DATE = "2018-07-01" #> beginning date (July 1, 2016) - set END_DATE = "2018-07-02" #> ending date (July 1, 2016) + set END_DATE = "2018-07-02" #> ending date (July 2, 2016) ``` From 5300ccee5e22370a945f4fbba8fe3082c9b396fc Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 10:33:30 -0400 Subject: [PATCH 341/375] Update README.md Please look at my edits to the data table to make sure they make sense. --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 0fea0b6ea..10d9c95ac 100644 --- a/README.md +++ b/README.md @@ -65,20 +65,20 @@ Code documentation is included within this repository (they are version-controll * [Developers' Guide](DOCS/Developers_Guide/CMAQ_Dev_Guide.md) ## CMAQ Test Cases -Benchmark/tutorial data for the CMAQv5.5 release are available from the CMAS Data Warehouse. The input and output files are stored on Google Drive and on Amazon Web Services (AWS) Open Data Registry. CMAQv5.5 comes with new input and output benchmark data for July 1-2, 2018 over the Northeast US (links provided below). Tutorials are provided for using the benchmark data to test running of the base [CMAQ model](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md) (with either the CB6r5 or CRACMMv2 mechanisms), [WRF-CMAQ](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md), and [CMAQ-ISAM](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md). The input datasets include a grid mask file for the United States (GRIDMASK_STATES_12SE1.nc). The grid mask file is used for running the new ISAM test case, or to test out regional emissions scaling with [DESID](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md). The input datasets also include an ocean file with variables needed to use the cb6r5_ae7 and cb6r5m_ae7 mechanisms. See the [Ocean File tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_oceanfile.md) for more information on changes to the required ocean file input beginning in v5.4. +Benchmark/tutorial data for the CMAQv5.5 release are available from the CMAS Data Warehouse. The input and output files are stored on Amazon Web Services (AWS) Open Data Registry. CMAQv5.5 benchmark input is the same as CMAQv5.4, provding a July 1-2, 2018 case over the Northeast US. CMAQv5.5 comes with new output data for running several different model configurations (links below). Tutorials are provided for using the benchmark data to test running of the base CMAQ model with either the CB6r5 or CRACMMv2 mechanisms, WRF-CMAQ, CMAQ-ISAM, and CMAQ-DDM. The input datasets include a grid mask file for the United States (GRIDMASK_STATES_12SE1.nc). The grid mask file is used for running the ISAM test case, or to test out regional emissions scaling with [DESID](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_emissions.md). The input datasets also include an ocean file with variables needed to use the cb6r5_ae7 and cb6r5m_ae7 mechanisms. See the [Ocean File tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_oceanfile.md) for more information on changes to the required ocean file input beginning in v5.4. In addition, a full set of inputs for 2018 are provided for the 12US1 domain (299 column x 459 row x 35 layer, 12-km horizontal grid spacing) on AWS, including emissions compatible with both the CB6r5 and CRACMMv1.0 chemical mechanisms. Note that the 12US1 inputs are netCDF-4/HDF5 compressed files to substantially reduce file sizes. Through testing at the EPA, we’ve noticed that certain domains encounter model crashes from reading in large amounts of compressed netCDF data. A work around for those cases is uncompressing the data manually via [nccopy 1](https://www.unidata.ucar.edu/software/netcdf/workshops/2011/utilities/Nccopy.html) or [m3cple](https://www.cmascenter.org/ioapi/documentation/all_versions/html/M3CPLE.html) (compiled with HDF5) before running the CMAQ simulation. -|**CMAQ Version**|**Data Type (Size)**|**Domain**|**Simulation Dates**|**Data Access**| -|:----:|:----:|:--------------:|:----:|:--------:| -|v5.4 CB6 | Input (10.3 Gb)| Northeast US| July 1 - 2, 2018| [Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz)| -|v5.4 CB6 | Input (6.1 TB) | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/LDTWKH)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | -|v5.4 CRACMM Stage| Input (6.1 TB)| 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/9AV907)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) | -|v5.5 CRACMM2 Stage | Input (6 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) | -|v5.5 CB6 Stage | Output (16 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) | -|v5.5 CB6 M3Dry | Output (15 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | -|v5.5-ISAM CB6 M3Dry | Output (52 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | -|v5.5-DDM3D CB6 M3Dry | Output (16 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://dataverse.unc.edu/dataset.xhtml?persistentId=doi%253A10.15139%252FS3%252FX5SZM2 )
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) | +|**CMAQ Version**|**Data Type (Size)**|**Domain**|**Simulation Dates**|**Data Access**|**Tutorial**| +|:----:|:----:|:--------------:|:----:|:--------:|:----:| +|v5.4 CB6r5 | Input (10.3 Gb)| Northeast US| July 1 - 2, 2018| [Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz)|| +|v5.4 CB6r5 | Input (6.1 TB) | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/LDTWKH)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) || +|v5.5 CRACMM2| Input (6 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS]( https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) || +|v5.5 CRACMM2| Output (52 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS]( https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz)[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md)| +|v5.5 CB6r5 M3Dry | Output (15 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) |[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md)| +|v5.5 CB6r5 STAGE | Output (16 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) |[Modify the M3DRY Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md)| +|v5.5-ISAM CB6r5 M3Dry | Output (52 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) |[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md)| +|v5.5-DDM3D CB6r5 M3Dry | Output (16 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) |[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md)| ## Other Online Resources * [Resources for Running CMAQ on Amazon Web Services](https://www.epa.gov/cmaq/cmaq-resourcesutilities-model-users#cmaq-on-the-cloud) From 9900aa3a8107814ef102a6d527267de3aa2db4a4 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 10:37:30 -0400 Subject: [PATCH 342/375] Update CMAQ_UG_tutorial_ISAM.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 40a425673..51d4697ae 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -192,9 +192,8 @@ Download and copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directo ``` cd $CMAQ_DATA wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz -wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz -tar xvzf output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz ``` The input files for the CMAQv5.4 ISAM benchmark case are the same as the benchmark inputs for the base model. Output source apportionment files associated with the sample isam_control.txt provided in this release package are included in the benchmark outputs for the base model. From 138b0c65a7d35f23e3e5a2973b5d902f2cc960d1 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 10:52:18 -0400 Subject: [PATCH 343/375] Update README.md --- DOCS/Users_Guide/Tutorials/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/README.md b/DOCS/Users_Guide/Tutorials/README.md index cfa21dcec..5be3095d3 100644 --- a/DOCS/Users_Guide/Tutorials/README.md +++ b/DOCS/Users_Guide/Tutorials/README.md @@ -3,7 +3,7 @@ CMAQ Tutorials A series of short tutorials provide practical examples of how to set up and run CMAQ, exercise different features in the software, and better understand the software system. Community members are encouraged to both suggest ideas for new tutorials and to contribute tutorials directly to this repository. [Contact the CMAS Center](cmas@unc.edu) with new tutorial ideas. -- **Scripts to automatically install software needed to run CMAQ** +- **Scripts to install software needed to run CMAQ** - [Script to install I/O API library to support netCDF4 compression](gcc_install_ioapi_for_nc4_compression.csh) - [Script to install netCDF libraries to support netCDF4 compression](gcc_install_netcdf_for_nc4_compression.csh) - [Script to install CMAQv55 for CB6r5 and M3DRY](gcc_install_cmaq55_cb6r5_m3dry.csh) From bbbdf8a02d88eafdf5582c4c26a29c334887a40d Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 2 Oct 2024 10:53:14 -0400 Subject: [PATCH 344/375] update --- CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh index 27280abe0..9cb1510a0 100755 --- a/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh +++ b/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh @@ -56,7 +56,7 @@ echo 'Start Model Run At ' `date` #> Set Working, Input, and Output Directories setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory - setenv INPDIR ${CMAQ_DATA}/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input/ #Input Directory + setenv INPDIR ${CMAQ_DATA}/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input/2018_12NE3 #Input Directory setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location setenv NMLpath ${BLD} #> Location of Namelists. Common places are: #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} From eeb4c191a1ef410838c2459bc0b66ded6a1ef13a Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 10:53:47 -0400 Subject: [PATCH 345/375] Update README.md Added MPAS-CMAQ benchmark input data, metadata and tutorial links. --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 10d9c95ac..e39fa6cd6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![image](https://github.com/user-attachments/assets/1dd3bdbe-9750-41b2-8b39-f234d74b8ecf)CMAQv5.5 +CMAQv5.5 ========== US EPA Community Multiscale Air Quality Model (CMAQ) Website: https://www.epa.gov/cmaq @@ -71,15 +71,17 @@ In addition, a full set of inputs for 2018 are provided for the 12US1 domain (29 |**CMAQ Version**|**Data Type (Size)**|**Domain**|**Simulation Dates**|**Data Access**|**Tutorial**| |:----:|:----:|:--------------:|:----:|:--------:|:----:| -|v5.4 CB6r5 | Input (10.3 Gb)| Northeast US| July 1 - 2, 2018| [Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz)|| +|MPAS-CMAQ| Input (215 GB) | Global (uniform 120) | Jan 1, 2017|[Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/PAHQFO)
[AWS Link](https://mpas-cmaq.s3.amazonaws.com/index.html) |[Tutorial](https://github.com/USEPA/CMAQ/blob/MPAS_CMAQ/DOCS/Users_Guide/PDF/MPAS_CMAQ_guide.pdf)| |v5.4 CB6r5 | Input (6.1 TB) | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/LDTWKH)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) || +|v5.4 CB6r5 | Input (10.3 GB)| Northeast US| July 1 - 2, 2018| [Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz)|| |v5.5 CRACMM2| Input (6 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS]( https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) || |v5.5 CRACMM2| Output (52 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS]( https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz)[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md)| -|v5.5 CB6r5 M3Dry | Output (15 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) |[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md)| -|v5.5 CB6r5 STAGE | Output (16 Gb) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) |[Modify the M3DRY Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md)| +|v5.5 CB6r5 M3Dry | Output (15 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) |[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md)| +|v5.5 CB6r5 STAGE | Output (16 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) |[Modify the M3DRY Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md)| |v5.5-ISAM CB6r5 M3Dry | Output (52 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) |[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md)| |v5.5-DDM3D CB6r5 M3Dry | Output (16 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) |[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md)| + ## Other Online Resources * [Resources for Running CMAQ on Amazon Web Services](https://www.epa.gov/cmaq/cmaq-resourcesutilities-model-users#cmaq-on-the-cloud) * [Software Programs for Preparing CMAQ Inputs](https://www.epa.gov/cmaq/cmaq-resourcesutilities-model-users#prepare_cmaq_inputs) From 7131258988da1c15efa798866bb0031e3d946a06 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:03:38 -0400 Subject: [PATCH 346/375] Delete DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md --- .../CMAQ_UG_tutorial_benchmark_cb6r5_stage.md | 312 ------------------ 1 file changed, 312 deletions(-) delete mode 100644 DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md deleted file mode 100644 index e558302dc..000000000 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cb6r5_stage.md +++ /dev/null @@ -1,312 +0,0 @@ -# CMAQ Installation & Benchmarking Tutorial for cb6r5 and stage - -Purpose: This guide describes how to install and run the CMAQ test case for the CB6R5 mechanism with the STAGE dry deposition scheme, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. - -Benchmarking refers to a simulation that is used to verify that the software is installed correctly. Benchmarking CMAQ is recommended in the following circumstances: -- Installation by a new user -- Installation on a new server -- Following kernel upgrades -- Following Fortran/C compiler upgrades -- Following netCDF or I/O API library upgrades - -## System Checks - -The following support software are required for compiling and running CMAQ. - -1. Fortran and C compilers, e.g., [Intel](https://software.intel.com/en-us/fortran-compilers), [Portland Group](http://www.pgroup.com), [Gnu](https://gcc.gnu.org/wiki/GFortran) -2. [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) -2. Message Passing Interface (MPI), e.g., [OpenMPI](https://www.open-mpi.org) or [MVAPICH2](http://www.mcs.anl.gov/research/projects/mpich2). -3. Latest release of [netCDF-C](https://www.unidata.ucar.edu/software/netcdf/docs/getting_and_building_netcdf.html) and [netCDF-Fortran](https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html) **built with netCDF4, HDF5, HDF4, DAP client, PnetCDF, or zlib support** -4. [I/O API](https://www.cmascenter.org/download/software/ioapi/ioapi_3-2.cfm?DB=TRUE) version 3.2 **tagged 20200828** -(note: if you have not installed the above libraries, please see the CMAQ_UG_tutorial_build_[gcc/intel/pgi].md tutorials available here: -https://github.com/USEPA/CMAQ/tree/main/DOCS/Users_Guide/Tutorials - -The suggested hardware requirements for running the CMAQ Southeast Benchmark case on a Linux workstation are: - -1. Linux environment with a 16 processors -2. 16 GB RAM -3. 400 GB hard drive storage - -## Install CMAQ and Required Libraries - -In the directory where you would like to install CMAQ, create the directory issue the following command to clone the EPA GitHub repository for CMAQv5.5: - -``` -git clone -b main https://github.com/USEPA/CMAQ.git CMAQ_REPO -``` - -For instructions on installing CMAQ from Zip files, see [Chapter 5](../CMAQ_UG_ch05_running_a_simulation.md). - -## Check Out a new Branch in the CMAQ Repository - -Checking out a new branch is a good idea even if you are not doing code development, per se. It is likely that you will want to retrieve new updates in the future, and an easy way to do this is through the main branch in the git repo. Thus, it is beneficial to leave it unperturbed if possible. -``` -cd CMAQ_REPO -git checkout -b my_branch -``` - -## Configure the CMAQ build environment - -The user has two options for building an environment. She or he may build and run CMAQ components directly in the repository structure (object files and executables will be ignored with .gitignore), or they may extract the build and run scripts out of the repository and work in a separate location. If you would like to build directly in the repository, skip to "Link the CMAQ Libraries" below. - -### Build and run in a user-specified directory outside of the repository -In the top level of CMAQ_REPO, the bldit_project.csh script will automatically replicate the CMAQ folder structure and copy every build and run script out of the repository so that you may modify them freely without version control. - -In bldit_project.csh, modify the variable $CMAQ_HOME to identify the folder that you would like to install the CMAQ package under. For example: -``` -set CMAQ_HOME = [your_install_path]/CMAQ_v5.5 -``` - -Now execute the script. -``` -./bldit_project.csh -``` - -## Link the CMAQ Libraries -The CMAQ build scripts require the following libraries and INCLUDE files to be available in the CMAQ_LIB directory (Note: the CMAQ_LIB gets set automatically by the config_cmaq.csh script, where `CMAQ_LIB = $CMAQ_HOME/lib`): - -- netCDF C library files are located in the `$CMAQ_LIB/netcdf/lib` directory -- netCDF Fortran library files are located in the `$CMAQ_LIB/netcdff/lib` directory -- I/O API library, include files and module files are located in the `$CMAQ_LIB/ioapi` directory -- MPI library and INCLUDE files are located in the `$CMAQ_LIB/mpi` directory - -The config_cmaq.csh script will automatically link the required libraries into the CMAQ_LIB directory. Set the locations of the netCDF, I/O API, and MPI installations on your Linux system with the following config_cmaq.csh environment variables: - -- `setenv IOAPI_INCL_DIR`: the location of the I/O API include header files on your system. -- `setenv IOAPI_LIB_DIR`: the location of compiled I/O API libraries on your system. -- `setenv NETCDF_LIB_DIR`: the location of the netCDF C library installation on your system. -- `setenv NETCDF_INCL_DIR`: the location of the netCDF C include files on your system. -- `setenv NETCDFF_LIB_DIR`: the location of the netCDF Fortran library installation on your system. -- `setenv NETCDFF_INCL_DIR`: the location of the netCDF Fortran include files on your system. -- `setenv MPI_LIB_DIR`: the location of the MPI (OpenMPI or MVAPICH) on your system. - -For example, if your netCDF C libraries are installed in /usr/local/netcdf/lib, set `NETCDF_LIB_DIR` to /usr/local/netcdf/lib. Similarly, if your I/O API library is installed in /home/cmaq/ioapi/Linux2_x86_64gfort, set `IOAPI_LIB_DIR` to /home/cmaq/ioapi/Linux2_x86_64gfort. - -*1.* Check the names of the I/O API and netCDF libraries using the `ioapi_lib` and `netcdf_lib` script variables. - -*2.* Check the name of the MPI library using the `mpi_lib` script variable. For MVAPICH use `-lmpich`; for openMPI use `-lmpi`. - -Links to these libraries will automatically be created when you run any of the build or run scripts. To manually create these libraries (this is optional), execute the config_cmaq.csh script, identifying the compiler in the command line [intel | gcc | pgi]: -``` -source config_cmaq.csh [compiler] -``` -You may also identify the version of the compiler if you wish it to be identified in build directory and executable names. This is optional. For example: -``` -source config_cmaq.csh gcc 9.5 -``` - -## Install the CMAQ reference input and output benchmark data - -Download the CMAQ two day reference input and output data for the cb6r5 mechanism from the [CMAS Center Data Warehouse Google Drive]([https://drive.google.com/file/d/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp/view?usp=sharing](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. - - - Use the gdrive command to download the dataset. - - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions - - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) - - Text files are included that provide a list of the files in the benchmark input and output datasets. - -The benchmark data is also available from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz). - -Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: - -``` -cd $CMAQ_DATA -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz -``` - -## Compiling CMAQ - -*Before proceeding, it should be noted that building the ICON and BCON executables are optional steps when working specifically with the benchmark data. This is because the initial condition and boundary condition files have been provided for you within the benchmark data set. For further information on these preprocessors please reference [Chapter 4](../CMAQ_UG_ch04_model_inputs.md).* - -Create the model executables for CCTM using the steps shown below. - -Use the bldit_cctm script that is set up to use the cb6r5 mechanism and the stage dry deposition scheme. - -Copy the bldit script to a new script for this benchmark - -``` -cp bldit_cctm.csh bldit_cctm_cb6r5_stage.csh - -##### Configuration for multi-processor runs (default): - -``` -set ParOpt #> Option for MPI Runs -```` - -##### Configuration for single-processor runs (optional): - -For single-processor computing, edit the CCTM build script (bldit_cctm.csh) to indicate a single-processor run by commenting out set ParOpt as shown below. - -``` -#set ParOpt #> Option for Single Processor Runs -```` - -#### Configure CMAQ benchmark Science Modules: - -The build directory parameters for the benchmark test case include the following: - -- Multiprocessor simulation -- 3-D Advection Scheme: wrf_cons -- Horizontal diffusion: Multiscale -- Vertical diffusion: ACM2_Stage -- Deposition: Stage -- Chemistry solver: EBI -- Aerosol module: AERO7 -- Cloud module: ACM_AE7 -- Mechanism: cb6r5_ae7_aq -- Inline biogenic emissions -- Inline plume rise - -To configure these parameters, the CCTM Science Modules within the bldit_cctm.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in -[Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). - - -Modify the dry deposition scheme uses STAGE instead of M3DRY - -``` - # set DepMod = m3dry #> m3dry or stage - set DepMod = stage -``` - -Verify the Mechanism is set to cb6r5_ae7_aq - -``` - setenv Mechanism cb6r5_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) -``` - -Following the requisite changes to the CCTM build script, use the following command to create the CCTM executable: - -``` -cd $CMAQ_HOME/CCTM/scripts -./bldit_cctm_cb6r5_stage.csh [compiler] [version] |& tee bldit_cctm_cb6r5_stage.log -``` - -Verify that the BLD directory contains a namelist called CMAQ_Control_STAGE.nml and that the executable was created - -``` -cd BLD_CCTM_v55_gcc_cb6r5_ae7_aq_stage -ls -lrt CMAQ_Control_STAGE.nml -ls -lrt CCTM_v55.exe -``` - - -## Use the CCTM run script that is configured for cb6r5 and the stage dry deposition scheme - -For an MPI configuration with 16 processors, -` -``` -cd $CMAQ_HOME/CCTM/scripts -``` - -Review the script - -``` -more run_cctm_Bench_2018_12NE3_cb6r5_stage.csh -``` - - -Verify that the Mechanism is set to cb6r5_ae7_aq. - -``` -set MECH = cb6r5_ae7_aq #> Mechanism ID -``` - -Verify that the Deposition is set to stage - -``` -set DEP = stage #>Depends on bldit_cctm.csh settings -``` - -Verify the APPL name specifies both the mechanism and the dry deposition scheme - -``` - set APPL = Bench_2018_12NE3_${MECH}_${DEP} #> Application Name (e.g. Gridname) -``` - - -Specify the MPI configuration and compiler and input directory that you will use: - - -``` -setenv compiler gcc -setenv compilerVrsn 9.5 -setenv INPDIR ${CMAQ_DATA}/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input/2018_12NE3 -@ NPCOL 8 ; @ NPROW = 4 -``` - -Most clustered multiprocessor systems require a command to start the MPI run-time environment. The default CCTM run script uses the *mpirun* command. Consult your system administrator to find out how to invoke MPI when running multiprocessor applications. -` -For single-processor computing, set PROC to serial: - -``` -set PROC = serial -``` - -CCTM Science Configuration Options set to **Y** in the RunScript for the benchmark case include the following: - -- ```CTM_OCEAN_CHEM``` - use ocean halgoen chemistry and sea spray aerosol emissions -- ```KZMIN``` - minimum eddy diffusivity in each grid cell determined by land use fraction --` ```PX_VERSION``` - WRF PX land surface model -- ```CTM_ABFLUX``` - bidirectional ammonia flux for online deposition velocities -- ```CTM_BIDI_FERT_NH3``` - subtract fertilizer NH3 from emissions because it will be handled by the BiDi calculation -- ```CTM_SFC_HONO``` - surface HONO interaction -- ```CTM_GRAV_SETL``` - vdiff aerosol gravitational sedmentation -- ```CTM_BIOGEMIS``` - online biogenic emissions - -To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_stage.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in -[Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). - -After configuring the MPI settings for your Linux system, check the rest of the script to ensure the correct path, date and names are used for the input data files. Per the note above, different Linux systems have different requirements for submitting MPI jobs. The command below is an example of how to submit the CCTM run script and may differ depending on the MPI requirements of your Linux system. - -``` -./run_cctm_Bench_2018_12NE3_cb6r5_stage.csh |& tee cctm.log -``` - -## Confirm that the Benchmark Simulation Completed - -`To confirm that the benchmark case ran to completion view the run.benchmark.log file. For MPI runs, check each of the CTM_LOG_[ProcessorID]*.log files. A successful run will contain the following line at the bottom of the log(s): - -``>>----> Program completed successfully <----<<`` -` -Note: If you are running on multiple processors the log file for each processor is also moved from the $CMAQ_HOME/CCTM/scripts directory to the benchmark output directory: - -``` -$CMAQ_DATA/output_CCTM_v55_[compiler]_Bench_2018_12NE3_cb6r5_ae7_aq_stage -``` -and these log files have the name convention: - -``` -CTM_LOG_[ProcessorID].v55_[compiler]_[APPL]_[YYYYMMDD] -CTM_LOG_[ProcessorID].v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage_20180702 -``` - -The benchmark output results will have been placed in the directory: - -``` -$CMAQ_DATA/output_CCTM_v55_[compiler]_Bench_2018_12NE3_cb6r5_ae7_aq_stage -``` - -and can include upto 23 netCDF-type files: ACONC, AOD_DIAG, AELMO, APMVIS, B3GTS_S, BSOILOUT, BUDGET, CGRID, CONC, DEPV, DRYDEP, DUSTEMIS, LTNGCOL, LTNGHRLY, MEDIA_CONC, PHOTDIAG1, PHOTDIAG2, ELMO, PMVIS, SOILOUT, SSEMIS, VDIFF, VSED, WETDEP1, and WETDEP2. - - -Common errors in a CCTM simulation include the following: -- Incorrect paths to input files. Look in the CCTM screen output (capture in your log file) for an Error message about an input file not being found. -- Incorrect MPI implementation. A series of MPI errors at the end of the log file often indicate that the MPI job was not submitted correctly. - -Check the last few lines of the CCTM output log for messages to help diagnose why the simulation did not complete. - -## Check the CMAQ Benchmark Results - -To determine if CMAQ is correctly installed on your Linux system compare the results from your benchmark simulation to the reference output data downloaded from the CMAS Center. This data was generated on a Linux system with the following specifications: -- Linux Kernel 3.10.0-514.el7.x86_64 -- Red Hat Enterprise Linux Server 7.3 (Maipo) (use command: cat /etc/os-release) -- GNU GCC compiler version 9.1.0, 16 processors with OpenMPIv4.0.1 and I/O APIv3.2 tagged version 20200828 -- Debug mode turned off (```set Debug_CCTM``` commented out in $CMAQ_HOME/CCTM/scripts/bldit_cctm.csh) -- CMAQv5.5 - -The CMAQv5.5 reference output data includes a set of CCTM_ACONC_\*.nc files with layer 1 average model species concentrations for each model hour for 222 variables and a set of CCTM_WETDEP1_\*.nc files with cumulative hourly wet deposition fluxes for an additional 139 variables. The CCTM_SA_ACONC_\*.nc, CCTM_SA_CGRID_\*.nc, CCTM_SA_CONC_\*.nc, CCTM_SA_WETDEP_\*.nc and CCTM_SA_DRYDEP_\*.nc are generated when you run the CMAQ-ISAM benchmark. See the [CMAQ-ISAM Tutorial](../Tutorials/CMAQ_UG_tutorial_ISAM.md) for more information. - -Use your netCDF evaluation tool of choice to evaluate your benchmark results. For example, [VERDI](https://www.verdi-tool.org/) is a visualization tool to view CCTM results as tile plots. Statistical comparison of the results can be made with the I/O API Tools or R. - -Note, even with a successful installation and run of the benchmark case, some differences between your simulation and the reference data can occur due to differences in domain decomposition for multi-processor simulations as well as differences in compiler. These differences tend to manifest in upper layers of the model and are mostly found in predicting aerosol water (AH2O) and aerosol acidity (AH3OP), while differences are smaller for other key species like ASO4, ANO3, ACL, ALOO1, etc. These species have short atmospheric lifetimes with large changes in time and space derivatives or have model physics sensitive to small changes in concentration. Predicting these species is more sensitive to small changes in machine precision and accuracy. - From 19a3d423c162b1770d119b9c4a379e068921bb3b Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:08:36 -0400 Subject: [PATCH 347/375] Update CMAQ_UG_tutorial_benchmark.md @fisidi @lizadams Take a look at my modifications to this tutorial related to stage cb6r5. --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index 5a8425c1f..ca0a39244 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -1,4 +1,4 @@ -# CMAQ Installation & Benchmarking Tutorial for CB6R5 and M3DRY +# CMAQ Installation & Benchmarking Tutorial for CB6R5 Purpose: This guide describes how to install and run the CMAQ test case for the CB6R5 mechanism with the M3DRY dry deposition scheme, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. @@ -109,6 +109,8 @@ tar -xzvf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz tar -xzvf output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz ``` +*Note that there is also benchmark output data for CMAQv5.5 with CB6r5 and the STAGE dry deposition module. Look for output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz in the AWS link above.* + ## Compiling CMAQ *Before proceeding, it should be noted that building the ICON and BCON executables are optional steps when working specifically with the benchmark data. This is because the initial condition and boundary condition files have been provided for you within the benchmark data set. For further information on these preprocessors please reference [Chapter 4](../CMAQ_UG_ch04_model_inputs.md).* @@ -163,6 +165,8 @@ Verify that the dry deposition scheme to use M3DRY set DepMod = m3dry ``` +*Note that there is reference benchmark output for both the M3DRY and STAGE dry deposition schemes. To try a simulation using STAGE simply change this model setting to set DepMod =stage.* + Following the requisite changes to the CCTM build script, use the following command to create the CCTM executable: ``` From 320dbf2f44edeb858fa88a0840e86ed71b6d3f89 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:09:06 -0400 Subject: [PATCH 348/375] Update README.md --- DOCS/Users_Guide/Tutorials/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/README.md b/DOCS/Users_Guide/Tutorials/README.md index 5be3095d3..5d206c70c 100644 --- a/DOCS/Users_Guide/Tutorials/README.md +++ b/DOCS/Users_Guide/Tutorials/README.md @@ -15,7 +15,7 @@ A series of short tutorials provide practical examples of how to set up and run - **Directions for running CMAQ test cases** - [Running the CMAQ Base Model with CRACMM2 and STAGE](CMAQ_UG_tutorial_benchmark_cracmm2_stage.md) - - [Running the CMAQ Base Model with CB6r5 and M3DRY](CMAQ_UG_tutorial_benchmark.md) + - [Running the CMAQ Base Model with CB6r5 and M3DRY or STAGE](CMAQ_UG_tutorial_benchmark.md) - [Running the CMAQ-ISAM Test Case](CMAQ_UG_tutorial_ISAM.md) - [Running the CMAQ-DDM-3D Test Case](CMAQ_UG_tutorial_DDM3D.md) - [Running the WRF-CMAQ Test Case](CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md) From 10ee95a2778b606e29cc19259c12455c3a87540d Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:11:08 -0400 Subject: [PATCH 349/375] Rename run_cctm_Bench_2018_12NE3_CB6R5_M3DRY.csh to run_cctm_Bench_2018_12NE3_CB6R5.csh --- ..._12NE3_CB6R5_M3DRY.csh => run_cctm_Bench_2018_12NE3_CB6R5.csh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CCTM/scripts/{run_cctm_Bench_2018_12NE3_CB6R5_M3DRY.csh => run_cctm_Bench_2018_12NE3_CB6R5.csh} (100%) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3_CB6R5_M3DRY.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3_CB6R5.csh similarity index 100% rename from CCTM/scripts/run_cctm_Bench_2018_12NE3_CB6R5_M3DRY.csh rename to CCTM/scripts/run_cctm_Bench_2018_12NE3_CB6R5.csh From 952fb702a3e9eba6da0f7d5d14cdb4972b0ebe84 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:12:07 -0400 Subject: [PATCH 350/375] Rename run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh to run_cctm_Bench_2018_12NE3_CRACMM2.csh --- ...E3_CRACMM2_STAGE.csh => run_cctm_Bench_2018_12NE3_CRACMM2.csh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CCTM/scripts/{run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh => run_cctm_Bench_2018_12NE3_CRACMM2.csh} (100%) diff --git a/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh b/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2.csh similarity index 100% rename from CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh rename to CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2.csh From 967e7f07afac8dae390c43df467d0d451505d5cd Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:13:46 -0400 Subject: [PATCH 351/375] Delete CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2_EPA2019.nml --- .../CMAQ_Control_DESID_cracmm2_EPA2019.nml | 394 ------------------ 1 file changed, 394 deletions(-) delete mode 100644 CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2_EPA2019.nml diff --git a/CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2_EPA2019.nml b/CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2_EPA2019.nml deleted file mode 100644 index 07cc5c739..000000000 --- a/CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2_EPA2019.nml +++ /dev/null @@ -1,394 +0,0 @@ -!------------------------------------------------------------------------------! -! Emission Control Interface ! -! for the ! -! Detailed Emissions Scaling, Isolation, and Diagnostics (DESID) Module, ! -! part of the ! -! Community Multiscale Air Quality (CMAQ) Model ! -! developed and maintained by the ! -! Center for Environmental Measurement and Modeling (CEMM), ! -! Office of Research and Development (ORD) ! -! U.S. Environmental Protection Agency (USEPA) ! -! ! -! This namelist is consistent with CMAQv5.4 (Release AUGUST 2022) ! -! ! -! See CMAQ User's Guide Appendix B (https://github.com/USEPA/CMAQ/blob/main/ ! -! DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md) ! -! and Murphy et al., Geoscientific Model Development, 14, 3407-3420, ! -! https://doi.org/10.5194/gmd-14-3407-2021, 2021. ! -!------------------------------------------------------------------------------! - -!------------------------------------------------------------------------------! -! Emissions Scaling Rule Specification Component ! -! Each rule is presented as a row of inputs. The syntax of the ! -! emissions scaling rules is the following: ! -! EM_INSTR(I) = 'Region Label', 'Stream Label', 'Emission-Species', ! -! 'CMAQ-Species', 'Phase/Mode', 'Scale Factor', 'Basis', ! -! 'Operation' ! -! ! -! See the User's Guide for detailed definitions of each field. ! -! ! -! You may confirm the effect of the (default and custom) rules below by ! -! inspecting the processor-dependent log files ("CTM_LOG_XXX...") ! -! ! -! Note: If no rules are provided for a species, then there is no emission ! -! of that species. ! -!------------------------------------------------------------------------------! -&Desid_ScalingVars - Desid_Max_Rules = 2500 -/ - -&Desid_Scaling - Desid_Rules_nml = - ! Region | Stream Label |Emission | CMAQ- |Phase/|Scale |Basis |Op - ! Label | |Surrogate| Species |Mode |Factor| | - - !> DEFAULT MAPPING Semivolatile POA - apply meat cooking profile by default for sources - ! that are not treated with a specific volatility profile (GENERAL_POA family). - ! Based on Woody et al., 2016: https://doi.org/10.5194/acp-16-4081-2016 - ! O:C Ratio of 0.1 (or lowest available OXY species) based on - ! Mohr et al. 2009 https://pubs.acs.org/doi/10.1021/es8011518 - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'VROCN2OXY2' ,'GAS' ,0. ,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','VROCN2OXY2' ,'GAS' ,0. ,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'VROCP0OXY2' ,'GAS' ,0.175,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','VROCP0OXY2' ,'GAS' ,0.175,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'VROCP1OXY1' ,'GAS' ,0.091,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','VROCP1OXY1' ,'GAS' ,0.091,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'VROCP2OXY2' ,'GAS' ,0.100,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','VROCP2OXY2' ,'GAS' ,0.100,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'VROCP3OXY2' ,'GAS' ,0.100,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','VROCP3OXY2' ,'GAS' ,0.100,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'AROCN2OXY2' ,'FINE',0.35 ,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','AROCN2OXY2' ,'FINE',0.35 ,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2','AROCP0OXY2' ,'FINE',0.175,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','AROCP0OXY2' ,'FINE',0.175,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'AROCP1OXY1' ,'FINE',0.009,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','AROCP1OXY1' ,'FINE',0.009,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'AROCP2OXY2' ,'FINE',0. ,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','AROCP2OXY2' ,'FINE',0. ,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMOCN2' ,'VROCP3OXY2' ,'FINE',0. ,'MASS','a', - 'EVERYWHERE', 'GENERAL_POA' ,'PMNCOMN2','VROCP3OXY2' ,'FINE',0. ,'MASS','a', - - ! --> Semivolatile POA - Use Woody et al. 2016 biomass burning for Fires - ! O:C ratio of 0.4 (or similar) used based on OM/OC of 1.7 and - ! Canagaratna et al. 2015 ACP relationship (OM/OC =1.29*O:C+1.17) - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'VROCN2OXY4' ,'GAS' ,0. ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','VROCN2OXY4' ,'GAS' ,0. ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'VROCP0OXY4' ,'GAS' ,0.05 ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','VROCP0OXY4' ,'GAS' ,0.05 ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'VROCP1OXY3' ,'GAS' ,0.091,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','VROCP1OXY3' ,'GAS' ,0.091,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'VROCP2OXY2' ,'GAS' ,0.200,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','VROCP2OXY2' ,'GAS' ,0.200,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'VROCP3OXY2' ,'GAS' ,0.400,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','VROCP3OXY2' ,'GAS' ,0.400,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'AROCN2OXY4' ,'FINE',0.20 ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','AROCN2OXY4' ,'FINE',0.20 ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2','AROCP0OXY4' ,'FINE',0.05 ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','AROCP0OXY4' ,'FINE',0.05 ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'AROCP1OXY3' ,'FINE',0.009,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','AROCP1OXY3' ,'FINE',0.009,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'AROCP2OXY2' ,'FINE',0. ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','AROCP2OXY2' ,'FINE',0. ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMOCN2' ,'VROCP3OXY2' ,'FINE',0. ,'MASS','a', - 'EVERYWHERE', 'PT_FIRE' ,'PMNCOMN2','VROCP3OXY2' ,'FINE',0. ,'MASS','a', - - ! Gasoline-Source Volatility Distribution (Mostly Onroad and Offroad Vehicles) - ! Gasoline profile based on Lu et al. 2020 https://doi.org/10.5194/acp-20-4313-2020 - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMOCN2' ,'AROCN1ALK' ,'FINE',0.228,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMNCOMN2','AROCN1ALK' ,'FINE',0.228,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMOCN2' ,'AROCP0ALK' ,'FINE',0.054,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMNCOMN2','AROCP0ALK' ,'FINE',0.054,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMOCN2' ,'VROCP0ALK' ,'GAS' ,0.054,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMNCOMN2','VROCP0ALK' ,'GAS' ,0.054,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMOCN2' ,'VROCP1ALK' ,'GAS' ,0.515,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMNCOMN2','VROCP1ALK' ,'GAS' ,0.515,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMOCN2' ,'VROCP2ALK' ,'GAS' ,0.550,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMNCOMN2','VROCP2ALK' ,'GAS' ,0.550,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMOCN2 ' ,'VROCP3ALK' ,'GAS' ,0.0 ,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','PMNCOMN2','VROCP3ALK' ,'GAS' ,0.0 ,'MASS','a', - - 'EVERYWHERE', 'GRIDDED_GASOLINE','NMOG' ,'VROCP3ALK' ,'GAS' ,0.0032,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','NMOG' ,'VROCP4ALK' ,'GAS' ,0.0034,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','NMOG' ,'VROCP5ALK' ,'GAS' ,0.0019,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','NMOG' ,'VROCP6ALK' ,'GAS' ,0.0064,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','NMOG' ,'VROCP5ARO' ,'GAS' ,0.0060,'MASS','a', - 'EVERYWHERE', 'GRIDDED_GASOLINE','NMOG' ,'VROCP6ARO' ,'GAS' ,0.0253,'MASS','a', - - ! Diesel Family Volatility Distribution (Mostly Onroad and Offroad Sources and CMV) - ! Diesel profile based on Lu et al. 2020 https://doi.org/10.5194/acp-20-4313-2020 - 'EVERYWHERE', 'DIESEL' ,'PMOCN2' ,'AROCN1ALK' ,'FINE',0.187,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMNCOMN2','AROCN1ALK' ,'FINE',0.187,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMOCN2' ,'AROCP0ALK' ,'FINE',0.043,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMNCOMN2','AROCP0ALK' ,'FINE',0.043,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMOCN2' ,'VROCP0ALK' ,'GAS' ,0.043,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMNCOMN2','VROCP0ALK' ,'GAS' ,0.043,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMOCN2' ,'VROCP1ALK' ,'GAS' ,0.364,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMNCOMN2','VROCP1ALK' ,'GAS' ,0.364,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMOCN2' ,'VROCP2ALK' ,'GAS' ,0.363,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMNCOMN2','VROCP2ALK' ,'GAS' ,0.363,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMOCN2' ,'VROCP3ALK' ,'GAS' ,0.0 ,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'PMNCOMN2','VROCP3ALK' ,'GAS' ,0.0 ,'MASS','a', - - 'EVERYWHERE', 'DIESEL' ,'NMOG' ,'VROCP3ALK' ,'GAS' ,0.0536,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'NMOG' ,'VROCP4ALK' ,'GAS' ,0.1486,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'NMOG' ,'VROCP5ALK' ,'GAS' ,0.1869,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'NMOG' ,'VROCP6ALK' ,'GAS' ,0.1588,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'NMOG' ,'VROCP5ARO' ,'GAS' ,0.0043,'MASS','a', - 'EVERYWHERE', 'DIESEL' ,'NMOG' ,'VROCP6ARO' ,'GAS' ,0.0025,'MASS','a', - - ! Aircraft Family Turbine Engine Volatility Distribution - ! Aircraft profile based on Lu et al. 2020 https://doi.org/10.5194/acp-20-4313-2020 - 'EVERYWHERE', 'AIRCRAFT' ,'PMOCN2' ,'AROCN1ALK' ,'FINE',0.149,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMNCOMN2','AROCN1ALK' ,'FINE',0.149,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMOCN2' ,'AROCP0ALK' ,'FINE',0.130,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMNCOMN2','AROCP0ALK' ,'FINE',0.130,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMOCN2' ,'VROCP0ALK' ,'GAS' ,0.130,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMNCOMN2','VROCP0ALK' ,'GAS' ,0.130,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMOCN2' ,'VROCP1ALK' ,'GAS' ,0.384,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMNCOMN2','VROCP1ALK' ,'GAS' ,0.384,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMOCN2' ,'VROCP2ALK' ,'GAS' ,0.208,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMNCOMN2','VROCP2ALK' ,'GAS' ,0.208,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMOCN2' ,'VROCP3ALK' ,'GAS' ,0.0 ,'MASS','a', - 'EVERYWHERE', 'AIRCRAFT' ,'PMNCOMN2','VROCP3ALK' ,'GAS' ,0.0 ,'MASS','a', - - ! Volatility resolved CRACMM semivolatile POA - 'EVERYWHERE', 'ALL' ,'POCN2' ,'AROCN2ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'POCN1' ,'AROCN1ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'POCP0' ,'AROCP0ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'POCP1' ,'AROCP1ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'POCP2' ,'AROCP2ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PNCOMN2' ,'AROCN2ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PNCOMN1' ,'AROCN1ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PNCOMP0' ,'AROCP0ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PNCOMP1' ,'AROCP1ALK' ,'FINE',1.0,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PNCOMP2' ,'AROCP2ALK' ,'FINE',1.0,'UNIT','a', - - ! pcSOA is a CMAQ species introduced to account for missing pathways for SOA - ! formation from combustion sources. It includes IVOC oxidation as well as other - ! phenomena (Murphy et al., ACP, 2017). It was parameterized primarily in LA, - ! where vehicle exhaust continues to dominate. - ! pcSOA is deprecated in CRACMM - - ! Wind-Blown Dust and Sea Spray Scaling - ! Fine Components - 'EVERYWHERE', 'ALL' ,'PMFINE_SO4' ,'ASO4' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_NO3' ,'ANO3' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_CL' ,'ACL' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_NH4' ,'ANH4' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_NA' ,'ANA' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_CA' ,'ACA' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_MG' ,'AMG' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_K' ,'AK' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_FE' ,'AFE' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_AL' ,'AAL' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_SI' ,'ASI' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_TI' ,'ATI' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_MN' ,'AMN' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_H2O' ,'AH2O' ,'FINE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMFINE_OTHR' ,'AOTHR' ,'FINE',1. ,'UNIT','a', - - - ! Wind-Blown Dust and Sea Spray Scaling - ! Coarse Components - 'EVERYWHERE', 'ALL' ,'PMCOARSE_SO4','ASO4' ,'COARSE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMCOARSE_NO3','ANO3' ,'COARSE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMCOARSE_CL' ,'ACL' ,'COARSE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMCOARSE_H2O','AH2O' ,'COARSE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMCOARSE_SOIL','ASOIL' ,'COARSE',1. ,'UNIT','a', - 'EVERYWHERE', 'ALL' ,'PMCOARSE_SEACAT','ASEACAT' ,'COARSE',1. ,'UNIT','a', - - - ! Updated aromatic species for CRACMM2 - ! EBZ is now explicit ethylbenzene; was lumped in XYE before. - ! XYL is now all xylenes and similar aromatics. Previously o- and p-xylenes - ! were included in XYE while m-xylene was included in XYM. - ! New species STY is explicit styrene. Styrene was previously included in XYM. - - ! EBZ and XYE remapping - ! Generic scaling if not scaling by sector: 70% XYL; 30% EBZ - 'EVERYWHERE', 'ALL' ,'XYE' ,'XYL' ,'GAS' ,0.70,'UNIT','m', - 'EVERYWHERE', 'ALL' ,'XYE' ,'EBZ' ,'GAS' ,0.30,'UNIT','a', - - ! STY and XYM remapping - ! Generic scaling if not scaling by sector: 93% XYL; 7% STY - !'EVERYWHERE', 'ALL' ,'XYM' ,'XYL' ,'GAS' ,0.93,'UNIT','m', - !'EVERYWHERE', 'ALL' ,'XYM' ,'STY' ,'GAS' ,0.07,'UNIT','a', - ! Source-specific scaling - ! gasoline: 99% XYL; 1% STY - 'EVERYWHERE', 'GRIDDED_GASOLINE','XYM' ,'XYL' ,'GAS' ,0.99,'UNIT','m', - 'EVERYWHERE', 'GRIDDED_GASOLINE','XYM' ,'STY' ,'GAS' ,0.01,'UNIT','a', - ! ptnonipm: 35% XYL; 65% STY - 'EVERYWHERE', 'P_ptnonipm' ,'ALL' ,'ALL' ,'ALL' ,0.0 ,'UNIT','m',! zero ptnonipm emissions - 'EVERYWHERE', 'P_ptnonipm' ,'XYM' ,'STY' ,'GAS' ,0.65 ,'UNIT','a',! 65% of XYM emissions to STY - 'EVERYWHERE', 'P_ptnonipm' ,'XYM' ,'XYL' ,'GAS' ,-0.65,'UNIT','a',! remove 65% of XYM that was already included in P_pt_other_nonfire - ! fires (not including rwc): 78% XYM; 12% STY - 'EVERYWHERE', 'P_all_fire' ,'XYM' ,'XYL' ,'GAS' ,0.78,'UNIT','m', - 'EVERYWHERE', 'P_all_fire' ,'XYM' ,'STY' ,'GAS' ,0.12,'UNIT','a', - ! solvents (aka VCP): 94% XYL; 6% STY - 'EVERYWHERE', 'G_np_solvents','XYM' ,'XYL' ,'GAS' ,0.94,'UNIT','m', - 'EVERYWHERE', 'G_np_solvents','XYM' ,'STY' ,'GAS' ,0.06,'UNIT','a', - -/ From 8f9a8b4ab3619791b3977ee4f90594ed151ee255 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:13:59 -0400 Subject: [PATCH 352/375] Delete CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2019EPA.nml --- .../CMAQ_Control_DESID_cracmm2019EPA.nml | 253 ------------------ 1 file changed, 253 deletions(-) delete mode 100644 CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2019EPA.nml diff --git a/CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2019EPA.nml b/CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2019EPA.nml deleted file mode 100644 index 61635a64e..000000000 --- a/CCTM/src/MECHS/cracmm2/CMAQ_Control_DESID_cracmm2019EPA.nml +++ /dev/null @@ -1,253 +0,0 @@ -!------------------------------------------------------------------------------! -! Emission Control Interface ! -! for the ! -! Detailed Emissions Scaling, Isolation, and Diagnostics (DESID) Module, ! -! part of the ! -! Community Multiscale Air Quality (CMAQ) Model ! -! developed and maintained by the ! -! Center for Environmental Measurement and Modeling (CEMM), ! -! Office of Research and Development (ORD) ! -! U.S. Environmental Protection Agency (USEPA) ! -! ! -! This namelist is consistent with CMAQv5.4 (Release AUGUST 2022) ! -! ! -! See CMAQ User's Guide Appendix B and ! -! Murphy et al., Geoscientific Model Development, 14, 3407-3420, ! -! https://doi.org/10.5194/gmd-14-3407-2021, 2021. ! -!------------------------------------------------------------------------------! -&Desid_Options - Desid_MaxLays = 0 ! Add all emissions above Desid_MaxLays to the grid cell at - ! Desid_MaxLays. If Desid_MaxLays = 0, then all model layers are - ! available for emissions. -/ - -!------------------------------------------------------------------------------! -! Area Normalization Component ! -! Specify area-normalized emission fluxes from input streams. If emission ! -! inputs are provided to CMAQ in area-normalized fluxes for any stream, this ! -! component may be used to convert them correctly to emission rates ! -! appropriate for the model simulation grid projection. For example, if ! -! offline biogenic emissions are provided in units of moles/m2/s, then that ! -! stream may be identified here and DESID can be instructed to adjust each ! -! flux to moles/s and adjust the rates using the map scale factor that ! -! converts emissions in real geographic space into projected grid space. ! -! ! -! Definition of Fields: ! -! 'Stream - Declare a stream. If the label is 'ALL', then the instruction ! -! Label' will be expanded to all OFFLINE streams. ! -! ! -! 'Area Normalization' - If TRUE, then this stream's emissions will be ! -! multiplied by grid cell area. If AUTO, then DESID will deduce ! -! from the units string whether or not each variable on the ! -! stream input file should be multiplied by the area scale ! -! factor. ! -! ! -! 'Projection Adjustment' - If TRUE, then this stream's emissions will be ! -! multiplied by the area Map Scale Factor. If AUTO, then DESID ! -! will inherit the per-stream value from Area Normalization. If ! -! Area Normalization is TRUE, the Projection Adjustment is True ! -!------------------------------------------------------------------------------! -&Desid_AreaNormVars - Desid_Max_Area = 30 ! Maximum number of Area Normalization rules -/ - -&Desid_AreaNorm - Desid_Area_Nml = - ! | Stream Label | Area Normalization | Projection Adjustment - 'ALL' ,'AUTO' ,'AUTO', - ! 'GRIDDED' ,'TRUE' ,'TRUE', - ! 'FIRES' ,'TRUE' ,'FALSE', - ! 'VCP' ,'FALSE' ,'TRUE', -/ - -!------------------------------------------------------------------------------! -! Size Distribution Specification Component ! -! Each size distribution rule either modifies the parameters associated with ! -! the aerosol modes of a particular stream, or adds new modes to a particular! -! stream if they do not already exist. ! -! ! -! Definition of Fields: ! -! 'Stream - Label for the emissions stream that the instruction will ! -! Label' apply to. If the label is 'ALL', then the instruction will ! -! be expanded to apply to all streams. ! -! 'Emission Mode' - With this label, the user identifies which mode from ! -! the emissions is to be modified or created. With this ! -! specificity, multiple streams can be defined and ! -! mapped in the emissions rules. ! -! 'Reference Mode' - This label maps the emissions species aerosol mode ! -! to specific parameters catalogued in the AERO_DATA ! -! module. ! -!------------------------------------------------------------------------------! -&Desid_SizeDistVars - Desid_Max_Sd = 10 ! Maximum number of size distribution rules -/ - -&Desid_SizeDist - Desid_Sd_nml = - - ! Stream Label | Emiss. Mode | Ref. Mode - 'ALL' ,'FINE' ,'FINE_REF', - 'ALL' ,'COARSE' ,'COARSE_REF', - 'WBDUST' ,'FINE' ,'FINE_WBDUST', - 'WBDUST' ,'COARSE' ,'COARSE_WBDUST', - 'SEASPRAY' ,'FINE' ,'FINE_SEASPRAY', - 'SEASPRAY' ,'COARSE' ,'COARSE_SEASPRAY', - ! 'AIRCRAFT' ,'FINE' ,'AIR_FINE', !To use these examples, you - ! 'AIRCRAFT' ,'COARSE' ,'AIR_COARSE', ! must add entries for AIR_FINE - ! and AIR_COARSE to the data structure - ! em_aero_ref in AERO_DATA. - -/ - -!------------------------------------------------------------------------------! -! Region-Based Scaling Specification Component (See User's Guide section B.3) ! -! It is possible in CMAQ to scale emissions for a subset of the model domain ! -! using gridded masks to indicate where the scaling should occur. ! -! ! -! Definition of Fields: ! -! 'Region - Label for the region that is being specified. By default, the! -! Label' first region, is the whole domain, or "EVERYWHERE". It is ! -! 'File - With this label, the user identifies the file that the data for! -! Label' this region is stored on. The CMAQ runscript should provide the! -! path to this file (or files) using the environment variable ! -! construct. ! -! 'Variable - This label identifies the variable on the region file that ! -! on File' should be used to populate this particular region. ! -!------------------------------------------------------------------------------! -&Desid_RegionDefVars - Desid_Max_Reg = 60 ! Maximum number of region definition rules - Desid_N_Reg_Fams = 0 ! Exact number of region family definitions - Desid_Max_Reg_Fam_Members = 100 ! Larger than the number of regions on all - ! family definitions -/ - -&Desid_RegionDef - Desid_Reg_nml = - ! Region Label | File_Label | Variable on File - 'EVERYWHERE' ,'N/A' ,'N/A', - ! 'WATER' ,'CMAQ_MASKS' ,'OPEN', - ! 'ALL' ,'CMAQ_MASKS' ,'ALL', - ! 'ALL' ,'ISAM_REGIONS','ALL', -/ - -&Desid_RegionFam - ! Region Family Definitions - ! RegionFamilyName(1) = 'Water' - ! RegionFamilyMembers(1,:)= 'SURF','OPEN' - -/ - -!------------------------------------------------------------------------------! -! Emissions Scaling Family Definitions ! -! This component includes definitions for families of emission streams and ! -! region combinations. ! -!------------------------------------------------------------------------------! -&Desid_StreamFamVars - Desid_N_Stream_Fams = 5 ! Exact number of stream family definitions - Desid_Max_Stream_Fam_Members = 20 ! Larger than the number of streams on all - ! family definitions -/ - -&Desid_StreamFam -! For emission streams available in several run scripts under CCTM/scripts -! Set Desid_N_Stream_Fams to 1 !!!!!!! - ! StreamFamilyName(1) = 'PT_SOURCES' - ! StreamFamilyMembers(1,1:3)= 'PT_NONEGU','PT_EGU','PT_OTHER' - -! For emission streams unique in CCTM/src/run_cctm_cracmm_4LISTOS1.csh script -! Set Desid_N_Stream_Fams to number !!!!!!! -! All gridded and point files MUST be put in one of these categories for 2019 platform - ! Sources that do not have a source-specific POA treatment - StreamFamilyName(1) = 'GENERAL_POA' - StreamFamilyMembers(1,1:5)= 'G_np_solvents','G_asphalt','G_np_other','G_cooking','P_pt_other_nonfire' - - ! All wood burning: fires and RWC - StreamFamilyName(2) = 'PT_FIRE' - StreamFamilyMembers(2,1:2)= 'G_all_rwc','P_all_fire' - - ! Gasoline-like sources - StreamFamilyName(3) = 'GRIDDED_GASOLINE' - StreamFamilyMembers(3,1:1)= 'G_np_gasoline' - - ! Diesel-like Sources including marine vehicles (cmv) - StreamFamilyName(4) = 'DIESEL' - StreamFamilyMembers(4,1:2)= 'G_np_diesel','P_cmv' - - ! US and Canada Aircraft - StreamFamilyName(5) = 'AIRCRAFT' - StreamFamilyMembers(5,1:2)= 'G_aircraft','P_othpt_aircraft' - -/ - -!------------------------------------------------------------------------------! -! Emissions Diagnostic Output Component ! -! This section allows users to specify individual species for output on ! -! emissions diagnostic output files. ! -! Definition of Fields: ! -! NEmissDiag - the number of diagnostic 'instructions' that you are ! -! giving. It will very likely be different than the number ! -! of diagnostic emissions output files. For example, if you wish! -! to expand the streams using the ALL keyword, then all of the ! -! streams will have a file, but only one instruction is needed. ! -! EmissDiagStreams(NEmissDiag,:) - The stream names that are to be exported. ! -! In addition to the labels of individual streams, you may also use ! -! stream family names here to identify more than one stream at a time. ! -! By default, each stream family element will instruct CMAQ to sum all ! -! of the streams in that group. The keyword 'ALL' is available by ! -! default to expand a list of all streams individually. The keyword ! -! 'TOTAL' is availble to select the sum of all streams. You may use a ! -! '*' at the beginning of a family name to instruct CMAQ to expand that ! -! keyword and export files for all of the streams in that group. ! -! EmissDiagFmt(NEmissDiag) - the format of every stream created as a result ! -! of the instruction. Options are: ! -! - COLSUM = the column-sum ! -! - 3D = 3D output ! -! - LAYER1 = Just the surface layer ! -! - OFF = Turn Off File ! -! EmissDiagSpec(NEmissDiag,:) - The species to be added to each diagnostic ! -! file. Species will only appear on a diagnostic file if the relevant ! -! stream or group of streams for the file have that species present. ! -! The keyword 'ALL' may also be used to easily add all species of any ! -! stream. ! -!------------------------------------------------------------------------------! -&Desid_DiagVars - Desid_N_Diag_Rules = 0 ! Exact Number of Diagnostic Rules Below - Desid_Max_Diag_Streams=20 ! Maximum number of species variables on all rules - ! below (do not count expansions) - Desid_Max_Diag_Spec = 80 ! Maximum number of species variables on all rules - ! below (do not count expansions) -/ - -&Desid_Diag - - ! Example 1: Print all streams individually to many diagnostic files of 2D - ! column sums. NO, NO2, total NOX (defined in the chemical family interface - ! in CMAQ_Control_Misc.nml), bulk ASO4 (all modes), and CO will all be on the - ! file. - - ! Desid_Diag_Streams_Nml(1,:)= 'ALL' - ! Desid_Diag_Fmt_Nml(1) = 'COLSUM' ! Options: LAYER1, COLSUM, 3D - ! Desid_Diag_Spec_Nml(1,:) = 'NO','NO2','NOX','ASO4','CO' - - - ! Example 2: Activate the sum of all streams using the keyword TOTAL. This file - ! will be 3D and will include six variables: 'AEC' = AECI + AECJ + AECK; - ! 'AECI'; 'NO2'; 'ACLK'; 'AMG' and 'TERP' if those variables are avilable on - ! the stream. - - ! Desid_Diag_Streams_Nml(2,:)= 'TOTAL' - ! Desid_Diag_Fmt_Nml(2) = '3D' - ! Desid_Diag_Spec_Nml(2,:) = 'AEC','AECI','NO2','ACLK','AMG','TERP' - - - ! Example 3: Create a diagnostic of the sum of the components of the PT_SOURCES - ! family (defined in the stream family section). This file will be column sums - ! and will include all the emitted species as long as they appear on at least - ! one of the streams within PT_SOURCES. - - ! Desid_Diag_Streams_Nml(3,:)= 'PT_SOURCES' - ! Desid_Diag_Fmt_Nml(3) = 'COLSUM' - ! Desid_Diag_Spec_Nml(3,:) = 'ALL' - -/ - From a2cd4174b3e313dcf065cee8108fd62e1de927e7 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:16:41 -0400 Subject: [PATCH 353/375] Update CMAQ_UG_tutorial_benchmark.md --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index ca0a39244..5ddc92b78 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -190,7 +190,7 @@ For an MPI configuration with 32 processors, cd $CMAQ_HOME/CCTM/scripts ``` -Edit the CCTM run script (run_cctm_Bench_2018_12NE3.csh) for the MPI configuration and compiler that you will use: +Edit the CCTM run script (run_cctm_Bench_2018_12NE3_CB6R5.csh) for the MPI configuration and compiler that you will use: ``` setenv compiler gcc @@ -218,13 +218,13 @@ CCTM Science Configuration Options set to **Y** in the RunScript for the benchma - ```CTM_GRAV_SETL``` - vdiff aerosol gravitational sedmentation - ```CTM_BIOGEMIS``` - online biogenic emissions -To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_cb6r5_m3dry.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in +To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_CB6R5.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in [Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). After configuring the MPI settings for your Linux system, check the rest of the script to ensure the correct path, date and names are used for the input data files. Per the note above, different Linux systems have different requirements for submitting MPI jobs. The command below is an example of how to submit the CCTM run script and may differ depending on the MPI requirements of your Linux system. ``` -./run_cctm_Bench_2018_12NE3_CB6R5_M3DRY.csh |& tee cctm.log +./run_cctm_Bench_2018_12NE3_CB6R5.csh |& tee cctm.log ``` ## Confirm that the Benchmark Simulation Completed From 4feaa1a8b7e6195c15a42a54c73ac93a32d5ce18 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:18:30 -0400 Subject: [PATCH 354/375] Update CMAQ_UG_tutorial_benchmark_cracmm2_stage.md --- .../Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md index 9ae9d45ea..fb75dce5c 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md @@ -1,4 +1,4 @@ -# CMAQ Installation & Benchmarking Tutorial +# CMAQ Installation & Benchmarking Tutorial for CRACMM2 Purpose: This guide describes how to install and run the CMAQ test case for the CRACMM2 mechanism with the STAGE dry deposition scheme, which serves two different purposes. The first being to familiarize the user with the CMAQ suite of programs and how they work together, and secondly to verify the installation of the software on your system via benchmarking. @@ -190,7 +190,7 @@ For an MPI configuration with 16 processors, cd $CMAQ_HOME/CCTM/scripts ``` -Edit the CCTM run script (run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh) for the MPI configuration and compiler that you will use: +Edit the CCTM run script (run_cctm_Bench_2018_12NE3_CRACMM2.csh) for the MPI configuration and compiler that you will use: ``` setenv compiler gcc @@ -218,13 +218,13 @@ CCTM Science Configuration Options set to **Y** in the RunScript for the benchma - ```CTM_GRAV_SETL``` - vdiff aerosol gravitational sedmentation - ```CTM_BIOGEMIS``` - online biogenic emissions -To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in +To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/scripts/run_cctm_Bench_2018_12NE3_CRACMM2.csh need to be set. The comments within the script itself should help guide the user on the options for each variable and how to set them. Further information on variable names can be found in [Appendix A](../Appendix/CMAQ_UG_appendixA_model_options.md). After configuring the MPI settings for your Linux system, check the rest of the script to ensure the correct path, date and names are used for the input data files. Per the note above, different Linux systems have different requirements for submitting MPI jobs. The command below is an example of how to submit the CCTM run script and may differ depending on the MPI requirements of your Linux system. ``` -./run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.csh |& tee run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.log +./run_cctm_Bench_2018_12NE3_CRACMM2.csh |& tee run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.log ``` ## Confirm that the Benchmark Simulation Completed From c7d3b93849baea551aa270e7448b8f07769712e9 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:35:12 -0400 Subject: [PATCH 355/375] Delete CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh --- ...cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh | 902 ------------------ 1 file changed, 902 deletions(-) delete mode 100755 CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh diff --git a/CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh b/CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh deleted file mode 100755 index 03ff3ce9f..000000000 --- a/CCTM/scripts/run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh +++ /dev/null @@ -1,902 +0,0 @@ -#!/bin/csh -f - -# ===================== CCTMv5.5.X Run Script ========================= -# Usage: run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh !>& run_cctm_cracmm_2019_12US1_CRACMM2.log & -# Slurm Usage: sbatch run_cctm_cracmm_2019_12US1_CRACMM2_EPA2019.csh -# -# To report problems or request help with this script/program: -# http://www.epa.gov/cmaq (EPA CMAQ Website) -# http://www.cmascenter.org (CMAS Website) -# =================================================================== - -#> Simple Linux Utility for Resource Management System -#> (SLURM) - The following specifications are recommended -#> for executing the runscript on the cluster at the -#> National Computing Center used primarily by EPA. -#SBATCH -t 72:00:00 -#SBATCH -n 256 -#SBATCH -J CMAQ_2019cracmm -#SBATCH -p ord -#SBATCH -A mod3dev -#SBATCH -o /work/MOD3DEV/tskipper/cracmm_hcho/20231201_cracmm2_aromatics/CCTM/scripts/2019_12US1_%j.txt - -#> The following commands output information from the SLURM -#> scheduler to the log files for traceability. - if ( $?SLURM_JOB_ID ) then - echo Job ID is $SLURM_JOB_ID - echo "Running on nodes `printenv SLURM_JOB_NODELIST`" - echo Host is $SLURM_SUBMIT_HOST - #> Switch to the working directory. By default, - #> SLURM launches processes from your home directory. - echo Working directory is $SLURM_SUBMIT_DIR - cd $SLURM_SUBMIT_DIR - endif - -#> Configure the system environment and set up the module -#> capability - limit stacksize unlimited -# - -# =================================================================== -#> Runtime Environment Options -# =================================================================== - -echo 'Start Model Run At ' `date` - -#> Toggle Diagnostic Mode which will print verbose information to -#> standard output - setenv CTM_DIAG_LVL 0 - -#> Choose compiler and set up CMAQ environment with correct -#> libraries using config.cmaq. Options: intel | gcc | pgi - if ( ! $?compiler ) then - setenv compiler intel - endif - if ( ! $?compilerVrsn ) then - setenv compilerVrsn Empty - endif - -#> Source the config.cmaq file to set the build environment - cd ../.. - source ./config_cmaq.csh $compiler $compilerVrsn - cd CCTM/scripts - -#> Set General Parameters for Configuring the Simulation - set VRSN = v55 #> Code Version - set PROC = mpi #> serial or mpi - set MECH = cracmm2 #> Mechanism ID -# set EMIS = 2016fh #> Emission Inventory Details - set APPL = 2019_12US1 #> Application Name (e.g. Gridname) - -#> Define RUNID as any combination of parameters above or others. By default, -#> this information will be collected into this one string, $RUNID, for easy -#> referencing in output binaries and log files as well as in other scripts. - setenv RUNID ${VRSN}_${compilerString}_${APPL} - -#> Set the build directory (this is where the CMAQ executable -#> is located by default). - set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString} - set EXEC = CCTM_${VRSN}.exe - -#> Output Each line of Runscript to Log File - if ( $CTM_DIAG_LVL != 0 ) set echo - -#> Set Working, Input, and Output Directories - setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. - setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory - setenv INPDIR /work/MOD3DATA/CMAQv53_TS/2019_12US1 #Input Directory - setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location - setenv NMLpath ${BLD} #> Location of Namelists. Common places are: - #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} - - echo "" - echo "Working Directory is $WORKDIR" - echo "Build Directory is $BLD" - echo "Output Directory is $OUTDIR" - echo "Log Directory is $LOGDIR" - echo "Executable Name is $EXEC" - -# ===================================================================== -#> CCTM Configuration Options -# ===================================================================== - -#> Set Start and End Days for looping - setenv NEW_START TRUE #> Set to FALSE for model restart - set START_DATE = "2019-05-22" #> beginning date (January 1, 2016) - set END_DATE = "2019-09-06" #> ending date (December 31, 2016) - -#> Set Timestepping Parameters -set STTIME = 000000 #> beginning GMT time (HHMMSS) -set NSTEPS = 240000 #> time duration (HHMMSS) for this run -set TSTEP = 010000 #> output time step interval (HHMMSS) - -#> Horizontal domain decomposition -if ( $PROC == serial ) then - setenv NPCOL_NPROW "1 1"; set NPROCS = 1 # single processor setting -else - #@ NPCOL = 16; @ NPROW = 8 #128 total - @ NPCOL = 16; @ NPROW = 16 - @ NPROCS = $NPCOL * $NPROW - setenv NPCOL_NPROW "$NPCOL $NPROW"; -endif - -#> Define Execution ID: e.g. [CMAQ-Version-Info]_[User]_[Date]_[Time] -if ( ! -e ${BLD}/CCTM_${VRSN}.cfg ) then - set SHAID = "" -else - set SHAID = `grep "sha_ID" ${BLD}/CCTM_${VRSN}.cfg | cut -c 13-22` - if ( $SHAID == not_a_repo ) then - set SHAID = "" - else - set SHAID = "_sha="$SHAID - endif -endif -setenv EXECUTION_ID "CMAQ_CCTM${VRSN}${SHAID}_`id -u -n`_`date -u +%Y%m%d_%H%M%S_%N`" #> Inform IO/API of the Execution ID -echo "" -echo "---CMAQ EXECUTION ID: $EXECUTION_ID ---" - -#> Keep or Delete Existing Output Files -set CLOBBER_DATA = FALSE - -#> Logfile Options -#> Master Log File Name; uncomment to write standard output to a log, otherwise write to screen -#setenv LOGFILE $CMAQ_HOME/$RUNID.log -if (! -e $LOGDIR ) then - mkdir -p $LOGDIR -endif -setenv PRINT_PROC_TIME Y #> Print timing for all science subprocesses to Logfile - #> [ default: TRUE or Y ] -setenv STDOUT T #> Override I/O-API trying to write information to both the processor - #> logs and STDOUT [ options: T | F ] - -setenv GRID_NAME 12US1 #> check GRIDDESC file for GRID_NAME options -setenv GRIDDESC $INPDIR/../GRIDDESC #> grid description file - -#> Retrieve the number of columns, rows, and layers in this simulation -set NZ = 35 -set NX = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f6` -set NY = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f7` -set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` - -#> Output Species and Layer Options - #> CONC file species; comment or set to "ALL" to write all species to CONC - #setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 HCHO ISO NH3 ANH4I ANH4J ASO4I ASO4J" - #setenv CONC_SPCS "ALL" - setenv CONC_SPCS "O3 NO2 HCHO ISO" - #setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC - - #> ACONC file species; comment or set to "ALL" to write all species to ACONC - #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" - setenv AVG_CONC_SPCS "ALL" - setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC - setenv AVG_FILE_ENDTIME N #> override default beginning ACONC timestamp [ default: N ] - -#> Synchronization Time Step and Tolerance Options -setenv CTM_MAXSYNC 300 #> max sync time step (sec) [ default: 720 ] -setenv CTM_MINSYNC 60 #> min sync time step (sec) [ default: 60 ] -setenv SIGMA_SYNC_TOP 0.7 #> top sigma level thru which sync step determined [ default: 0.7 ] -#setenv ADV_HDIV_LIM 0.95 #> maximum horiz. div. limit for adv step adjust [ default: 0.9 ] -setenv CTM_ADV_CFL 0.95 #> max CFL [ default: 0.75] -#setenv RB_ATOL 1.0E-09 #> global ROS3 solver absolute tolerance [ default: 1.0E-07 ] - -#> Science Options -setenv CTM_OCEAN_CHEM Y #> Flag for ocean halogen chemistry and sea spray aerosol emissions [ default: Y ] -setenv CTM_WB_DUST N #> use inline windblown dust emissions (only for use with PX) [ default: N ] -setenv CTM_LTNG_NO Y #> turn on lightning NOx [ default: N ] -setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], - #> otherwise revert to Kz0UT -setenv PX_VERSION Y #> WRF PX LSM -setenv CLM_VERSION N #> WRF CLM LSM -setenv NOAH_VERSION N #> WRF NOAH LSM -setenv CTM_ABFLUX Y #> ammonia bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_BIDI_FERT_NH3 T #> subtract fertilizer NH3 from emissions because it will be handled - #> by the BiDi calculation [ default: Y ] -setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ] - #> please see user guide (6.10.4 Nitrous Acid (HONO)) - #> for dependency on percent urban fraction dataset -setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ] - -setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions with BEIS [ default: N ] -setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ] -setenv BDSNP_MEGAN N #> turns on BDSNP soil NO emissions [ default: N ] - - -setenv IC_AERO_M2WET F #> Specify whether or not initial condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv BC_AERO_M2WET F #> Specify whether or not boundary condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv IC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from initial - #> conditions [ default: T = use aerosol surface area ] -setenv BC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from boundary - #> conditions [ default: T = use aerosol surface area ] - -#> Surface Tiled Aerosol and Gaseous Exchange Options -#> Only active if DepMod=stage at compile time -setenv CTM_MOSAIC N #> Output landuse specific deposition velocities [ default: N ] -setenv CTM_STAGE_P22 N #> Pleim et al. 2022 Aerosol deposition model [default: N] -setenv CTM_STAGE_E20 Y #> Emerson et al. 2020 Aerosol deposition model [default: Y] -setenv CTM_STAGE_S22 N #> Shu et al. 2022 (CMAQ v5.3) Aerosol deposition model [default: N] - - -#> Vertical Extraction Options -setenv VERTEXT N -setenv VERTEXT_COORD_PATH ${WORKDIR}/lonlat.csv - -#> I/O Controls -setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ] -setenv FL_ERR_STOP N #> stop on inconsistent input files -setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ] -setenv IOAPI_OFFSET_64 YES #> support large timestep records (>2GB/timestep record) [ options: YES | NO ] -setenv IOAPI_CHECK_HEADERS N #> check file headers [ options: Y | N ] -setenv CTM_EMISCHK N #> Abort CMAQ if missing surrogates from emissions Input files - -#> Diagnostic Output Flags -setenv CTM_CKSUM Y #> checksum report [ default: Y ] -setenv CLD_DIAG N #> cloud diagnostic file [ default: N ] - -setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ] -setenv NLAYS_PHOTDIAG "1" #> Number of layers for PHOTDIAG2 and PHOTDIAG3 from - #> Layer 1 to NLAYS_PHOTDIAG [ default: all layers ] -#setenv NWAVE_PHOTDIAG "294 303 310 316 333 381 607" #> Wavelengths written for variables - #> in PHOTDIAG2 and PHOTDIAG3 - #> [ default: all wavelengths ] - -setenv CTM_SSEMDIAG N #> sea-spray emissions diagnostic file [ default: N ] -setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; - #> Ignore if CTM_WB_DUST = N -setenv CTM_DEPV_FILE N #> deposition velocities diagnostic file [ default: N ] -setenv VDIFF_DIAG_FILE N #> vdiff & possibly aero grav. sedimentation diagnostic file [ default: N ] -setenv LTNGDIAG N #> lightning diagnostic file [ default: N ] -setenv B3GTS_DIAG N #> BEIS mass emissions diagnostic file [ default: N ] -setenv CTM_WVEL N #> save derived vertical velocity component to conc - #> file [ default: Y ] - -#> MPI Optimization Flags -setenv MPI_SM_POOL 16000 #> increase shared memory pool in case many MPI_SEND headers -setenv MP_EAGER_LIMIT 65536 #> set MPI message passing buffer size to max -setenv MP_SINGLE_THREAD yes #> optimize for single threaded applications [ default: no ] -setenv MP_STDOUTMODE ordered #> order output by the processor ID -setenv MP_LABELIO yes #> label output by processor ID [ default: no ] -setenv MP_SHARED_MEMORY yes #> force use of shared memory for tasks on same node [ default: no ] -setenv MP_ADAPTER_USE shared #> share the MP adapter with other jobs -setenv MP_CPU_USE multiple #> share the node with multiple users/jobs -setenv MP_CSS_INTERRUPT yes #> specify whether arriving packets generate interrupts [ default: no ] - -# ===================================================================== -#> Input Directories and Filenames -# ===================================================================== - -set ICpath = $INPDIR/icbc #> initial conditions input directory -set BCpath = $INPDIR/icbc #> boundary conditions input directory -#set EMISpath = /work/MOD3DEV/callen05/WR624/WR624_EQ2019_CRACMM/premerged/ #> surface emissions input directory -set EMISpath = $INPDIR/emis/cracmmv1_20220923/cmaq_ready_area -#set EMISpath2 = $INPDIR/emis/cb6r3_ae6_20191121_compressed/cmaq_ready/gridded_rwc #> surface residential wood combustion emissions directory -set PREMRGpath = /work/MOD3DEV/tskipper/cracmm_hcho/emissions/premerged -#set IN_PTpath = /work/MOD3DEV/callen05/WR624/smoke_out/WR624_EQ2019_CRACMM/${GRID_NAME}/cmaq_cracmmv1/ #> elevated emissions input directory (in-line point only) -set IN_PTpath = $INPDIR/emis/cracmmv1_20220923/cmaq_ready_point -set STKGRPpath = /work/MOD3DEV/callen05/WR624/smoke_out/WR624_EQ2019_CRACMM/${GRID_NAME}/cmaq_cracmmv1 -#set IN_LTpath = $INPDIR/met/lightning #> lightning NOx input directory -set IN_LTpath = /work/MOD3EVAL/dkj/LTNG/NLDN_12US/2019 # From Daiwen email 11/1/22 -set METpath = $INPDIR/met/mcip_v51_wrf_v411_noltng #> meteorology input directory -#set JVALpath = $INPDIR/jproc #> offline photolysis rate table directory -set OMIpath = $BLD #> ozone column data for the photolysis model -set EPICpath = $INPDIR/epic #> EPIC putput for bidirectional NH3 -set SZpath = /work/MOD3DATA/2018_${GRID_NAME}/surface #> surf zone file for in-line seaspray emissions - -# ===================================================================== -#> Begin Loop Through Simulation Days -# ===================================================================== -set rtarray = "" - -set TODAYG = ${START_DATE} -set TODAYJ = `date -ud "${START_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set START_DAY = ${TODAYJ} -set STOP_DAY = `date -ud "${END_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set NDAYS = 0 - -while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ - - set NDAYS = `echo "${NDAYS} + 1" | bc -l` - - #> Retrieve Calendar day Information - set YYYYMMDD = `date -ud "${TODAYG}" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD - set YYYYMM = `date -ud "${TODAYG}" +%Y%m` #> Convert YYYY-MM-DD to YYYYMM - set YYYY = `date -ud "${TODAYG}" +%Y` #> Convert YYYY-MM-DD to YYYY - set YYMMDD = `date -ud "${TODAYG}" +%y%m%d` #> Convert YYYY-MM-DD to YYMMDD - set MM = `date -ud "${TODAYG}" +%m` #> Convert YYYY-MM-DD to MM - set YYYYJJJ = $TODAYJ - - #> Calculate Yesterday's Date - set YESTERDAY = `date -ud "${TODAYG}-1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYJJJ - -# ===================================================================== -#> Set Output String and Propagate Model Configuration Documentation -# ===================================================================== - echo "" - echo "Set up input and output files for Day ${TODAYG}." - - #> set output file name extensions - setenv CTM_APPL ${RUNID}_${YYYYMMDD} - - #> Copy Model Configuration To Output Folder - if ( ! -d "$OUTDIR" ) mkdir -p $OUTDIR - cp $BLD/CCTM_${VRSN}.cfg $OUTDIR/CCTM_${CTM_APPL}.cfg - -# ===================================================================== -#> Input Files (Some are Day-Dependent) -# ===================================================================== - - #> Initial conditions - if ($NEW_START == true || $NEW_START == TRUE ) then - # setenv ICFILE ICON_CGRID_12US1_v532_cracmm1_aq_WR413_MYR_STAGE_2019_12US1_${YESTERDAY}.nc - # setenv INIT_MEDC_1 notused - set ICpath = /work/MOD3DEV/has/2022firex/20221031setup/data/output_CCTM_v54_intel18.0_2019_12US1 - #setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc # update for RHEL8 - setenv ICFILE CCTM_CGRID_v54_intel18.0_2019_12US1_${YESTERDAY}.nc - #setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc - setenv INIT_MEDC_1 notused - - else - set ICpath = $OUTDIR - setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc - setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc - endif - - #> Boundary conditions, use STAGE files if CCTM uses the stage option for depv - #set BCFILE = bctr_12km_HCMAQ_V531_STAGE_cb6r3m_ae7_kmtbr_BCON_V53_WRF411_corrected_${YYYYMM}.ncf - set BCFILE = BCON_CONC_12US1_CMAQv54_2019_108NHEMI_CRACCM1_FRMEQ_regrid_${YYYYMM}.nc - - #> Off-line photolysis rates - #set JVALfile = JTABLE_${YYYYJJJ} - - #> Ozone column data - set OMIfile = OMI_1979_to_2019.dat - - #> Optics file - set OPTfile = PHOT_OPTICS.dat - - #> MCIP meteorology files - setenv GRID_BDY_2D $METpath/GRIDBDY2D_$YYYYMMDD.nc4 - setenv GRID_CRO_2D $METpath/GRIDCRO2D_$YYYYMMDD.nc4 - setenv GRID_CRO_3D $METpath/GRIDCRO3D_$YYYYMMDD.nc4 - setenv GRID_DOT_2D $METpath/GRIDDOT2D_$YYYYMMDD.nc4 - setenv MET_CRO_2D $METpath/METCRO2D_$YYYYMMDD.nc4 - setenv MET_CRO_3D $METpath/METCRO3D_$YYYYMMDD.nc4 - setenv MET_DOT_3D $METpath/METDOT3D_$YYYYMMDD.nc4 - setenv MET_BDY_3D $METpath/METBDY3D_$YYYYMMDD.nc4 - setenv LUFRAC_CRO $METpath/LUFRAC_CRO_$YYYYMMDD.nc4 -# setenv LUFRAC_CRO $METpath/LUFRAC_CRO.$GRID_NAME.${NZ}L.$YYMMDD - - #> Control Files - #> - #> IMPORTANT NOTE - #> - #> The DESID control files defined below are an integral part of controlling the behavior of the model simulation. - #> Among other things, they control the mapping of species in the emission files to chemical species in the model and - #> several aspects related to the simulation of organic aerosols. - #> Please carefully review the DESID control files to ensure that they are configured to be consistent with the assumptions - #> made when creating the emission files defined below and the desired representation of organic aerosols. - #> For further information, please see: - #> + AERO7 Release Notes section on 'Required emission updates': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Release_Notes/aero7_overview.md - #> + CMAQ User's Guide section 6.9.3 on 'Emission Compatability': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.9.3_Emission_Compatability - #> + Emission Control (DESID) Documentation in the CMAQ User's Guide: - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md - #> - # default DESID files - #setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml - #setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml - # DESID files customized for EPA CRACMM2 2019 simulations - setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID_cracmm2019EPA.nml - setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}_EPA2019.nml - - #> The following namelist configures aggregated output (via the Explicit and Lumped - #> Air Quality Model Output (ELMO) Module), domain-wide budget output, and chemical - #> family output. - setenv MISC_CTRL_NML ${BLD}/CMAQ_Control_Misc.nml - - #> The following namelist controls the mapping of meteorological land use types and the NH3 and Hg emission - #> potentials - setenv STAGECTRL_NML ${BLD}/CMAQ_Control_STAGE.nml - - #> Spatial Masks For Emissions Scaling - setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12US1.nc #> horizontal grid-dependent ocean file - - #> Determine Representative Emission Days - set EMDATES = /work/EMIS/em_v6.3/ge_dat/smk_dates/2019/smk_merge_dates_${YYYYMM}.txt - set intable = `grep "^${YYYYMMDD}" $EMDATES` - set Date = `echo $intable[1] | cut -d, -f1` - set aveday_N = `echo $intable[2] | cut -d, -f1` - set aveday_Y = `echo $intable[3] | cut -d, -f1` - set mwdss_N = `echo $intable[4] | cut -d, -f1` - set mwdss_Y = `echo $intable[5] | cut -d, -f1` - set week_N = `echo $intable[6] | cut -d, -f1` - set week_Y = `echo $intable[7] | cut -d, -f1` - set all = `echo $intable[8] | cut -d, -f1` - - #> Gridded Emissions files - setenv N_EMIS_GR 8 - set sector = np_gasoline - set EMISfile = emis_mole_${sector}_${YYYYMMDD}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_001 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_001 G_${sector} - setenv GR_EM_SYM_DATE_001 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set sector = np_diesel - set EMISfile = emis_mole_${sector}_${YYYYMMDD}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_002 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_002 G_${sector} - setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set sector = aircraft - set EMISfile = emis_mole_${sector}_${week_Y}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_003 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_003 G_${sector} - setenv GR_EM_SYM_DATE_003 T # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set sector = np_solvents - set EMISfile = emis_mole_${sector}_${YYYYMMDD}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_004 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_004 G_${sector} - setenv GR_EM_SYM_DATE_004 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set sector = asphalt - set EMISfile = emis_mole_${sector}_${week_Y}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_005 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_005 G_${sector} - setenv GR_EM_SYM_DATE_005 T # To change default behaviour please see Users Guide for EMIS_SYM_DATE - ${aveday_N} - - set sector = np_other - set EMISfile = emis_mole_${sector}_${YYYYMMDD}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_006 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_006 G_${sector} - setenv GR_EM_SYM_DATE_006 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set sector = cooking - set EMISfile = emis_mole_${sector}_${YYYYMMDD}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_007 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_007 G_${sector} - setenv GR_EM_SYM_DATE_007 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set sector = all_rwc - set EMISfile = emis_mole_${sector}_${YYYYMMDD}_12US1_cmaq_cracmmv1_WR624_EQ2019_CRACMM.ncf - setenv GR_EMIS_008 ${EMISpath}/${sector}/${EMISfile} - setenv GR_EMIS_LAB_008 G_${sector} - setenv GR_EM_SYM_DATE_008 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - #> In-Line Point Emissions Files - setenv N_EMIS_PT 5 #4 #> Number of elevated source groups - - set STKCASEE = ${GRID_NAME}_cmaq_cracmmv1_WR624_EQ2019_CRACMM # In-line Emission Rate File Suffix - set STKCASEG = ${GRID_NAME}_WR624_EQ2019_CRACMM # Stack parameter File Suffix - - set sector = cmv - setenv STK_GRPS_001 $STKGRPpath/${sector}/stack_groups_${sector}_${STKCASEG}.ncf - setenv STK_EMIS_001 $IN_PTpath/${sector}/inln_mole_${sector}_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_LAB_001 P_$sector - setenv STK_EM_SYM_DATE_001 F - - set sector = othpt_aircraft - setenv STK_GRPS_002 $STKGRPpath/${sector}/stack_groups_${sector}_${STKCASEG}.ncf - setenv STK_EMIS_002 $IN_PTpath/${sector}/inln_mole_${sector}_${mwdss_N}_${STKCASEE}.ncf - setenv STK_EMIS_LAB_002 P_$sector - setenv STK_EM_SYM_DATE_002 T - - set sector = all_fire - setenv STK_GRPS_003 $STKGRPpath/${sector}/stack_groups_${sector}_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_EMIS_003 $IN_PTpath/${sector}/inln_mole_${sector}_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_LAB_003 P_$sector - setenv STK_EM_SYM_DATE_003 F - - set sector = pt_other_nonfire - setenv STK_GRPS_004 $STKGRPpath/${sector}/stack_groups_${sector}_${STKCASEG}.ncf - setenv STK_EMIS_004 $IN_PTpath/${sector}/inln_mole_${sector}_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_LAB_004 P_$sector - setenv STK_EM_SYM_DATE_004 F - - # add additional point source file for ptnonipm - set sector = ptnonipm - setenv STK_GRPS_005 $PREMRGpath/${sector}/stack_groups_${sector}_${STKCASEG}.ncf - setenv STK_EMIS_005 $PREMRGpath/${sector}/inln_mole_${sector}_${mwdss_Y}_${STKCASEE}.ncf - setenv STK_EMIS_LAB_005 P_$sector - setenv STK_EM_SYM_DATE_005 T - - #> Lightning NOx configuration - if ( $CTM_LTNG_NO == 'Y' ) then - setenv LTNGNO "InLine" #> set LTNGNO to "Inline" to activate in-line calculation - - #> In-line lightning NOx options - setenv USE_NLDN Y #> use hourly NLDN strike file [ default: Y ] - if ( $USE_NLDN == Y ) then - setenv NLDN_STRIKES ${IN_LTpath}/NLDN_12km_60min_${YYYYMMDD}.ioapi - endif - setenv LTNGPARMS_FILE ${IN_LTpath}/LTNG_AllParms_12US1.ncf #> lightning parameter file; ignore if LTNGPARAM = N - endif - - - #> In-line biogenic emissions configuration - if ( $CTM_BIOGEMIS_MG == 'Y' ) then - setenv MEGAN_SOILINP $OUTDIR/CCTM_MSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if INITIAL_RUN = Y - #> ; ignore if IGNORE_SOILINP = Y - setenv MEGAN_CTS /work/MOD3DATA/2016_12US1/surface/megan3.2/CT3_CONUS.ncf - setenv MEGAN_EFS /work/MOD3DATA/2016_12US1/surface/megan3.2/EFMAPS_CONUS.ncf - setenv MEGAN_LDF /work/MOD3DATA/2016_12US1/surface/megan3.2/LDF_CONUS.ncf - if ($BDSNP_MEGAN == 'Y') then - setenv BDSNPINP $OUTDIR/CCTM_BDSNPOUT_${RUNID}_${YESTERDAY}.nc - setenv BDSNP_FFILE /work/MOD3DATA/2016_12US1/surface/megan3.2/FERT_CONUS.ncf - setenv BDSNP_NFILE /work/MOD3DATA/2016_12US1/surface/megan3.2/NDEP_CONUS.ncf - setenv BDSNP_LFILE /work/MOD3DATA/2016_12US1/surface/megan3.2/LANDTYPE_CONUS.ncf - setenv BDSNP_AFILE /work/MOD3DATA/2016_12US1/surface/megan3.2/ARID_CONUS.ncf - setenv BDSNP_NAFILE /work/MOD3DATA/2016_12US1/surface/megan3.2/NONARID_CONUS.ncf - endif - endif - if ( $CTM_BIOGEMIS_BE == 'Y' ) then - #set IN_BEISpath = ${INPDIR}/surface - setenv GSPRO ${BLD}/gspro_biogenics.txt - setenv BEIS_NORM_EMIS /work/MOD3APP/ezv/2020_12US1/surface/beis4_beld6_norm_emis.12US1.ncf - setenv BEIS_SOILINP $OUTDIR/CCTM_BSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if NEW_START = TRUE - endif - - #> In-line sea spray emissions configuration - setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12US1.nc - - #> Bidirectional ammonia configuration - if ( $CTM_ABFLUX == 'Y' ) then - # need to modify for FEST-C v1.4. - setenv E2C_SOIL ${EPICpath}/2019r1_EPIC0509_12US1_soil.nc4 - setenv E2C_CHEM ${EPICpath}/2019r1_EPIC0509_${GRID_NAME}_time${YYYYMMDD}.nc4 - setenv E2C_LU ${EPICpath}/beld4_12US1_2011.nc4 #beld4_camq12km_2011_4CMAQioapi.ncf - endif - -#> Inline Process Analysis - setenv CTM_PROCAN N #> use process analysis [ default: N] - if ( $?CTM_PROCAN ) then # $CTM_PROCAN is defined - if ( $CTM_PROCAN == 'Y' || $CTM_PROCAN == 'T' ) then -#> process analysis global column, row and layer ranges -# setenv PA_BCOL_ECOL "10 90" # default: all columns -# setenv PA_BROW_EROW "10 80" # default: all rows -# setenv PA_BLEV_ELEV "1 4" # default: all levels - setenv PACM_INFILE ${NMLpath}/pa_${MECH}.ctl - setenv PACM_REPORT $OUTDIR/"PA_REPORT".${YYYYMMDD} - endif - endif - -#> Integrated Source Apportionment Method (ISAM) Options - setenv CTM_ISAM N - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - setenv SA_IOLIST ${WORKDIR}/isam_control.txt - setenv ISAM_BLEV_ELEV " 1 1" - setenv AISAM_BLEV_ELEV " 1 1" - - #> Set Up ISAM Initial Condition Flags - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ISAM_NEW_START Y - setenv ISAM_PREVDAY - else - setenv ISAM_NEW_START N - setenv ISAM_PREVDAY "$OUTDIR/CCTM_SA_CGRID_${RUNID}_${YESTERDAY}.nc" - endif - - #> Set Up ISAM Output Filenames - setenv SA_ACONC_1 "$OUTDIR/CCTM_SA_ACONC_${CTM_APPL}.nc -v" - setenv SA_CONC_1 "$OUTDIR/CCTM_SA_CONC_${CTM_APPL}.nc -v" - setenv SA_DD_1 "$OUTDIR/CCTM_SA_DRYDEP_${CTM_APPL}.nc -v" - setenv SA_WD_1 "$OUTDIR/CCTM_SA_WETDEP_${CTM_APPL}.nc -v" - setenv SA_CGRID_1 "$OUTDIR/CCTM_SA_CGRID_${CTM_APPL}.nc -v" - - #> Set optional ISAM regions files -# setenv ISAM_REGIONS /work/MOD3EVAL/nsu/isam_v53/CCTM/scripts/input/RGN_ISAM.nc - - #> Options used to favor tracked species in reactions for Ozone-NOx chemistry - setenv ISAM_O3_WEIGHTS 5 # weights for tracked species Default is 5 - # OPTIONS - # 1 does not weight any species - # 2 weights NOx and subset of NOz species - # 3 uses with from option 2 plus weight OVOC species, organic radicals and operators - # 4 weight OVOC species, organic radicals and operators - # 5 toggles between two weighting set based on VOC and NOx limited ozone production - # Below options only used if ISAM_O3_WEIGHTS set to 5 - setenv ISAM_NOX_CASE 2 # weights for tracked species when ozone production is NOx limited. Default is 2 - setenv ISAM_VOC_CASE 4 # weights for tracked species when ozone production is VOC limited. Default is 4 - setenv VOC_NOX_TRANS 0.35 # value of Prod H2O2 over Prod HNO3 less than where - # ISAM_VOC_CASE weights are used. Otherwise, ISAM_NOX_CASE - # weights are used. Default is 0.35 - - - endif - endif - -#> Sulfur Tracking Model (STM) - setenv STM_SO4TRACK N #> sulfur tracking [ default: N ] - if ( $?STM_SO4TRACK ) then - if ( $STM_SO4TRACK == 'Y' || $STM_SO4TRACK == 'T' ) then - - #> option to normalize sulfate tracers [ default: Y ] - setenv STM_ADJSO4 Y - - endif - endif - -#> Decoupled Direct Method in 3D (DDM-3D) Options - setenv CTM_DDM3D N # Sets up requisite script settings for DDM-3D (default is N/F) - # Additionally requires for CCTM to be compiled for DDM-3D simulations - - set NPMAX = 1 # Number of sensitivity parameters defined in SEN_INPUT - setenv SEN_INPUT ${WORKDIR}/sensinput.dat - - setenv DDM3D_HIGH N # allow higher-order sensitivity parameters in SEN_INPUT [ T | Y | F | N ] (default is N/F) - - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv DDM3D_RST N # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = # sensitivity fields are initialized to 0.0 on the first hour of the first day - set S_ICfile = - else - setenv DDM3D_RST Y # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = $OUTDIR - set S_ICfile = CCTM_SENGRID_${RUNID}_${YESTERDAY}.nc - endif - - setenv CTM_NPMAX $NPMAX - setenv CTM_SENS_1 "$OUTDIR/CCTM_SENGRID_${CTM_APPL}.nc -v" - setenv A_SENS_1 "$OUTDIR/CCTM_ASENS_${CTM_APPL}.nc -v" - setenv CTM_SWETDEP_1 "$OUTDIR/CCTM_SENWDEP_${CTM_APPL}.nc -v" - setenv CTM_SDRYDEP_1 "$OUTDIR/CCTM_SENDDEP_${CTM_APPL}.nc -v" - setenv INIT_SENS_1 $S_ICpath/$S_ICfile - -# ===================================================================== -#> Output Files -# ===================================================================== - - #> set output file names - setenv S_CGRID "$OUTDIR/CCTM_CGRID_${CTM_APPL}.nc" #> 3D Inst. Concentrations - setenv CTM_CONC_1 "$OUTDIR/CCTM_CONC_${CTM_APPL}.nc -v" #> On-Hour Concentrations - setenv A_CONC_1 "$OUTDIR/CCTM_ACONC_${CTM_APPL}.nc -v" #> Hourly Avg. Concentrations - setenv MEDIA_CONC "$OUTDIR/CCTM_MEDIA_CONC_${CTM_APPL}.nc -v" #> NH3 Conc. in Media - setenv CTM_DRY_DEP_1 "$OUTDIR/CCTM_DRYDEP_${CTM_APPL}.nc -v" #> Hourly Dry Deposition - setenv CTM_DEPV_DIAG "$OUTDIR/CCTM_DEPV_${CTM_APPL}.nc -v" #> Dry Deposition Velocities - setenv B3GTS_S "$OUTDIR/CCTM_B3GTS_S_${CTM_APPL}.nc -v" #> Biogenic Emissions - setenv BDSNPOUT "$OUTDIR/CCTM_BDSNPOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv BEIS_SOILOUT "$OUTDIR/CCTM_BSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv MEGAN_SOILOUT "$OUTDIR/CCTM_MSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv CTM_WET_DEP_1 "$OUTDIR/CCTM_WETDEP1_${CTM_APPL}.nc -v" #> Wet Dep From All Clouds - setenv CTM_WET_DEP_2 "$OUTDIR/CCTM_WETDEP2_${CTM_APPL}.nc -v" #> Wet Dep From SubGrid Clouds - setenv CTM_ELMO_1 "$OUTDIR/CCTM_ELMO_${CTM_APPL}.nc -v" #> On-Hour Particle Diagnostics - setenv CTM_AELMO_1 "$OUTDIR/CCTM_AELMO_${CTM_APPL}.nc -v" #> Hourly Avg. Particle Diagnostics - setenv CTM_RJ_1 "$OUTDIR/CCTM_PHOTDIAG1_${CTM_APPL}.nc -v" #> 2D Surface Summary from Inline Photolysis - setenv CTM_RJ_2 "$OUTDIR/CCTM_PHOTDIAG2_${CTM_APPL}.nc -v" #> 3D Photolysis Rates - setenv CTM_RJ_3 "$OUTDIR/CCTM_PHOTDIAG3_${CTM_APPL}.nc -v" #> 3D Optical and Radiative Results from Photolysis - setenv CTM_SSEMIS_1 "$OUTDIR/CCTM_SSEMIS_${CTM_APPL}.nc -v" #> Sea Spray Emissions - setenv CTM_DUST_EMIS_1 "$OUTDIR/CCTM_DUSTEMIS_${CTM_APPL}.nc -v" #> Dust Emissions - setenv CTM_BUDGET "$OUTDIR/CCTM_BUDGET_${CTM_APPL}.txt -v" #> Budget - setenv CTM_IPR_1 "$OUTDIR/CCTM_PA_1_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_2 "$OUTDIR/CCTM_PA_2_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_3 "$OUTDIR/CCTM_PA_3_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IRR_1 "$OUTDIR/CCTM_IRR_1_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_2 "$OUTDIR/CCTM_IRR_2_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_3 "$OUTDIR/CCTM_IRR_3_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_DRY_DEP_MOS "$OUTDIR/CCTM_DDMOS_${CTM_APPL}.nc -v" #> Dry Dep - setenv CTM_DEPV_MOS "$OUTDIR/CCTM_DEPVMOS_${CTM_APPL}.nc -v" #> Dry Dep Velocity - setenv CTM_VDIFF_DIAG "$OUTDIR/CCTM_VDIFF_DIAG_${CTM_APPL}.nc -v" #> Vertical Dispersion Diagnostic - setenv CTM_VSED_DIAG "$OUTDIR/CCTM_VSED_DIAG_${CTM_APPL}.nc -v" #> Particle Grav. Settling Velocity - setenv CTM_LTNGDIAG_1 "$OUTDIR/CCTM_LTNGHRLY_${CTM_APPL}.nc -v" #> Hourly Avg Lightning NO - setenv CTM_LTNGDIAG_2 "$OUTDIR/CCTM_LTNGCOL_${CTM_APPL}.nc -v" #> Column Total Lightning NO - setenv CTM_VEXT_1 "$OUTDIR/CCTM_VEXT_${CTM_APPL}.nc -v" #> On-Hour 3D Concs at select sites - - #> set floor file (neg concs) - setenv FLOOR_FILE ${OUTDIR}/FLOOR_${CTM_APPL}.txt - - #> look for existing log files and output files - ( ls CTM_LOG_???.${CTM_APPL} > buff.txt ) >& /dev/null - ( ls ${LOGDIR}/CTM_LOG_???.${CTM_APPL} >> buff.txt ) >& /dev/null - set log_test = `cat buff.txt`; rm -f buff.txt - - set OUT_FILES = (${FLOOR_FILE} ${S_CGRID} ${CTM_CONC_1} ${A_CONC_1} ${MEDIA_CONC} \ - ${CTM_DRY_DEP_1} $CTM_DEPV_DIAG $B3GTS_S $MEGAN_SOILOUT $BEIS_SOILOUT $BDSNPOUT \ - $CTM_WET_DEP_1 $CTM_WET_DEP_2 $CTM_ELMO_1 $CTM_AELMO_1 \ - $CTM_RJ_1 $CTM_RJ_2 $CTM_RJ_3 $CTM_SSEMIS_1 $CTM_DUST_EMIS_1 $CTM_IPR_1 $CTM_IPR_2 \ - $CTM_IPR_3 $CTM_BUDGET $CTM_IRR_1 $CTM_IRR_2 $CTM_IRR_3 $CTM_DRY_DEP_MOS \ - $CTM_DEPV_MOS $CTM_VDIFF_DIAG $CTM_VSED_DIAG $CTM_LTNGDIAG_1 $CTM_LTNGDIAG_2 $CTM_VEXT_1 ) - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${SA_ACONC_1} ${SA_CONC_1} ${SA_DD_1} ${SA_WD_1} \ - ${SA_CGRID_1} ) - endif - endif - if ( $?CTM_DDM3D ) then - if ( $CTM_DDM3D == 'Y' || $CTM_DDM3D == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${CTM_SENS_1} ${A_SENS_1} ${CTM_SWETDEP_1} ${CTM_SDRYDEP_1} ) - endif - endif - set OUT_FILES = `echo $OUT_FILES | sed "s; -v;;g" ` - ( ls $OUT_FILES > buff.txt ) >& /dev/null - set out_test = `cat buff.txt`; rm -f buff.txt - - #> delete previous output if requested - if ( $CLOBBER_DATA == true || $CLOBBER_DATA == TRUE ) then - echo - echo "Existing Logs and Output Files for Day ${TODAYG} Will Be Deleted" - - #> remove previous log files - foreach file ( ${log_test} ) - #echo "Deleting log file: $file" - /bin/rm -f $file - end - - #> remove previous output files - foreach file ( ${out_test} ) - #echo "Deleting output file: $file" - /bin/rm -f $file - end - /bin/rm -f ${OUTDIR}/CCTM_DESID*${RUNID}_${YYYYMMDD}.nc - - else - #> error if previous log files exist - if ( "$log_test" != "" ) then - echo "*** Logs exist - run ABORTED ***" - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - - #> error if previous output files exist - if ( "$out_test" != "" ) then - echo "*** Output Files Exist - run will be ABORTED ***" - foreach file ( $out_test ) - echo " cannot delete $file" - end - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - endif - - #> for the run control ... - setenv CTM_STDATE $YYYYJJJ - setenv CTM_STTIME $STTIME - setenv CTM_RUNLEN $NSTEPS - setenv CTM_TSTEP $TSTEP - setenv INIT_CONC_1 $ICpath/$ICFILE - setenv BNDY_CONC_1 $BCpath/$BCFILE - setenv OMI $OMIpath/$OMIfile - setenv OPTICS_DATA $OMIpath/$OPTfile - #setenv XJ_DATA $JVALpath/$JVALfile - - #> species defn & photolysis - setenv gc_matrix_nml ${NMLpath}/GC_$MECH.nml - setenv ae_matrix_nml ${NMLpath}/AE_$MECH.nml - setenv nr_matrix_nml ${NMLpath}/NR_$MECH.nml - setenv tr_matrix_nml ${NMLpath}/Species_Table_TR_0.nml - - #> check for photolysis input data - setenv CSQY_DATA ${NMLpath}/CSQY_DATA_$MECH - - if (! (-e $CSQY_DATA ) ) then - echo " $CSQY_DATA not found " - exit 1 - endif - if (! (-e $OPTICS_DATA ) ) then - echo " $OPTICS_DATA not found " - exit 1 - endif - -# =================================================================== -#> Execution Portion -# =================================================================== - - #> Print attributes of the executable - if ( $CTM_DIAG_LVL != 0 ) then - ls -l $BLD/$EXEC - size $BLD/$EXEC - unlimit - limit - endif - - #> Print Startup Dialogue Information to Standard Out - echo - echo "CMAQ Processing of Day $YYYYMMDD Began at `date`" - echo - - #> Executable call for single PE, uncomment to invoke - #( /usr/bin/time -p $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Executable call for multi PE, configure for your system - # set MPI = /usr/local/intel/impi/3.2.2.006/bin64 - # set MPIRUN = $MPI/mpirun - ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Harvest Timing Output so that it may be reported below - set rtarray = "${rtarray} `tail -3 buff_${EXECUTION_ID}.txt | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | head -1` " - rm -rf buff_${EXECUTION_ID}.txt - - #> Abort script if abnormal termination - if ( ! -e $S_CGRID ) then - echo "" - echo "**************************************************************" - echo "** Runscript Detected an Error: CGRID file was not written. **" - echo "** This indicates that CMAQ was interrupted or an issue **" - echo "** exists with writing output. The runscript will now **" - echo "** abort rather than proceeding to subsequent days. **" - echo "**************************************************************" - break - endif - - #> Print Concluding Text - echo - echo "CMAQ Processing of Day $YYYYMMDD Finished at `date`" - echo - echo "\\\\\=====\\\\\=====\\\\\=====\\\\\=====/////=====/////=====/////=====/////" - echo - -# =================================================================== -#> Finalize Run for This Day and Loop to Next Day -# =================================================================== - - #> Save Log Files and Move on to Next Simulation Day - mv CTM_LOG_???.${CTM_APPL} $LOGDIR - if ( $CTM_DIAG_LVL != 0 ) then - mv CTM_DIAG_???.${CTM_APPL} $LOGDIR - endif - - #> The next simulation day will, by definition, be a restart - setenv NEW_START false - - #> Increment both Gregorian and Julian Days - set TODAYG = `date -ud "${TODAYG}+1days" +%Y-%m-%d` #> Add a day for tomorrow - set TODAYJ = `date -ud "${TODAYG}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ - -end #Loop to the next Simulation Day - -# =================================================================== -#> Generate Timing Report -# =================================================================== -set RTMTOT = 0 -foreach it ( `seq ${NDAYS}` ) - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - set RTMTOT = `echo "${RTMTOT} + ${rt}" | bc -l` -end - -set RTMAVG = `echo "scale=2; ${RTMTOT} / ${NDAYS}" | bc -l` -set RTMTOT = `echo "scale=2; ${RTMTOT} / 1" | bc -l` - -echo -echo "==================================" -echo " ***** CMAQ TIMING REPORT *****" -echo "==================================" -echo "Start Day: ${START_DATE}" -echo "End Day: ${END_DATE}" -echo "Number of Simulation Days: ${NDAYS}" -echo "Domain Name: ${GRID_NAME}" -echo "Number of Grid Cells: ${NCELLS} (ROW x COL x LAY)" -echo "Number of Layers: ${NZ}" -echo "Number of Processes: ${NPROCS}" -echo " All times are in seconds." -echo -echo "Num Day Wall Time" -set d = 0 -set day = ${START_DATE} -foreach it ( `seq ${NDAYS}` ) - # Set the right day and format it - set d = `echo "${d} + 1" | bc -l` - set n = `printf "%02d" ${d}` - - # Choose the correct time variables - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - - # Write out row of timing data - echo "${n} ${day} ${rt}" - - # Increment day for next loop - set day = `date -ud "${day}+1days" +%Y-%m-%d` -end -echo " Total Time = ${RTMTOT}" -echo " Avg. Time = ${RTMAVG}" - -exit From fe6bba35c89f69ae847b47d488209953255217c5 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 2 Oct 2024 11:36:27 -0400 Subject: [PATCH 356/375] update --- .../CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md index 09a52633a..aca3b0b12 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md @@ -179,24 +179,25 @@ Users should look for the following message at the end of their bldit_cctm_twowa If the User sees this, the WRF-CMAQ model has been successfully compiled and built. If not, the User should double check the library paths above and try again. If it still fails, please reach post on the [CMAS Forum](https://forum.cmascenter.org/c/wrf-cmaq). -### Install the WRF-CMAQ reference input and output benchmark data +### Install the WRF-CMAQ reference input benchmark data -Download the CMAQ two day reference input and output data from the [CMAS Center Data Warehouse Google Drive](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing) or from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmas-cmaq.s3.amazonaws.com/index.html). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. +Download the CMAQ two day reference input data from the [CMAS Center Data Warehouse Google Drive](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp?usp=sharing) or from the [CMAS Center Data Warehouse Amazon Web Services S3 Bucket](https://cmas-cmaq.s3.amazonaws.com/index.html). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. - Use the gdrive command to download the dataset. - If this is the first time that you are using gdrive, or if you have an issue with your token, please read the following instructions - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) - - Text files are included that provide a list of the files in the benchmark input and output datasets. + - Text files are included that provide a list of the files in the benchmark input datasets. + - wget can be used to download data from the CMAS Open Data Folder on AWS Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: ``` cd $CMAQ_DATA +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output.tar.gz ``` -The input files for the WRF-CMAQ benchmark case are provided in the base model benchmark inputs .tar file. Output WRF-CMAQ files associated with the sample run script for the coupled WRF-CMAQ model in this release package are provided in the base model benchmark outputs .tar file. +The input files for the WRF-CMAQ benchmark case are provided in the base model benchmark inputs .tar file. Output WRF-CMAQ files associated with the sample run script for the coupled WRF-CMAQ model in this release package will beprovided in the base model benchmark outputs .tar file for the CMAQv5.5 release at a later date. ## Running the WRF-CMAQ model @@ -222,7 +223,7 @@ The following commonly modified namelist options for WRF-CMAQ are specified in t available in the WRF restart file or not) * One sample run scripts is provided (run_cctm_Bench_2018_12NE3.WRFCMAQ.csh) for running the coupled - model with short wave radiation feedback turned on. Reference benchmark output is provided for a test simulations with short wave radiation feedback turned on ("sf") and turned off ("nf"). + model with short wave radiation feedback turned on. Reference benchmark output will be provided for a test simulations with short wave radiation feedback turned on ("sf") and turned off ("nf"). - Start with the run_cctm_Bench_2018_12NE3.WRFCMAQ.csh that specifies direct_sw_feedback = .true. From 6aa5918cedd40fd49d9d7269989ce0b13cb09cde Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:39:51 -0400 Subject: [PATCH 357/375] Remove non-2018 runscripts --- CCTM/scripts/isam_control.2016_12SE1.txt | 57 ------------------------ 1 file changed, 57 deletions(-) delete mode 100644 CCTM/scripts/isam_control.2016_12SE1.txt diff --git a/CCTM/scripts/isam_control.2016_12SE1.txt b/CCTM/scripts/isam_control.2016_12SE1.txt deleted file mode 100644 index 496c0dba5..000000000 --- a/CCTM/scripts/isam_control.2016_12SE1.txt +++ /dev/null @@ -1,57 +0,0 @@ -!!! CMAQ-ISAM tag definition control file -!!! (lines begining with !!! - three exclamation marks - are ignored by the text parser)!!! -!!! -!!! Example file provided with CMAQ v5.5 release -!!! 26 July 2020: Sergey L. Napelenok -!!! -!!! -!!! The "TAG CLASSES" line defines the tag classes to track for the simulation. Species in NITRATE and VOC classes depend on the -!!! the chemical mechanism used. The below definitions apply for the cb6r3_ae7_aq mechanism. These species will be tracked for -!!! each user-defined source. -!!! Choose any/all from the list: -!!! SULFATE - ASO4, SO2, SULF, SULRXN -!!! NITRATE - ANO3, HNO3, NO, NO2, NO3, HONO, N2O5, PNA, PAN, PANX, NTR1, NTR2, INTR, CLNO2, CLNO3 -!!! AMMONIUM - ANH4, NH3 -!!! EC - AEC -!!! OA_TOT - Total Primary and Seocndary Organic Aerosol Species -!!! NVPOA - Primary Organic Aerosol Species APOC, APNCOM -!!! VOC - Various species depending on mechanism. Now includes CO. (see CCTM/src/isam/SA_DEFN.F for complete list) -!!! PM_TOT - All PM Species. ACL,ANA,AMG,AK,ACA,AFE,AAL,ASI,ATI,AMN,AOTHR -!!! and TAGCLASSES SULFATE, NITRATE, AMMONIUM, EC, OC, and VOC -!!! PM_IONS - ANA, AMG, AK, ACA, AFE, AAL, ASI, ATI, AMN, AOTHR -!!! OZONE - O3, all NITRATE species, and all VOC species -!!! CHLORINE - ACL, HCL -!!! HAP_GAS - Gas-phase Hazardous Air Pollutant Species -!!! HAP_AERO - Aerosol-Phase Hazardous Air Pollutant Species -!!! HAP_TOT - Total Gas and Aerosol HAPs -!!! PAH_TEQ - Nonreactive TEQ PAH species -!!! BENAPYRENE- BENAPY and ABENAPY -!!! MERCURY - HG, HGIIGAS, HGIIAER, APHG -!!! ALL - All available modeled species - -TAG CLASSES |SULFATE, OZONE - -!!! The following are source definition text blocks in the format. Provide a 3-line block for each source you want to track. -!!! Do not assign the same source of mass in more than 1 source definition block. -!!! TAG NAME |Three character text string (unique to each source definition) -!!! REGION(S) |Keyword EVERYWHERE or variable names from the region file (multiple regions need to be comma delimited) -!!! FILENAME(S) |Emissions labels (multiple labels need to be comma delimited) - -TAG NAME |GAE -REGION(S) |GA -EMIS STREAM(S) |PT_EGU - -TAG NAME |GAF -REGION(S) |GA -EMIS STREAM(S) |PT_FIRES - -TAG NAME |NCE -REGION(S) |NC -EMIS STREAM(S) |PT_EGU - -TAG NAME |NCF -REGION(S) |NC -EMIS STREAM(S) |PT_FIRES - - -ENDLIST eof From 3c27ce2dfa8750467cf556a71320ea0d86d4ebe4 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:40:20 -0400 Subject: [PATCH 358/375] Delete CCTM/scripts/run_cctm_2010_4CALIF1.csh --- CCTM/scripts/run_cctm_2010_4CALIF1.csh | 809 ------------------------- 1 file changed, 809 deletions(-) delete mode 100755 CCTM/scripts/run_cctm_2010_4CALIF1.csh diff --git a/CCTM/scripts/run_cctm_2010_4CALIF1.csh b/CCTM/scripts/run_cctm_2010_4CALIF1.csh deleted file mode 100755 index 090892802..000000000 --- a/CCTM/scripts/run_cctm_2010_4CALIF1.csh +++ /dev/null @@ -1,809 +0,0 @@ -#!/bin/csh -f - -# =================== CCTMv5.5.X Run Script ========================= -# Usage: run_cctm_2010_4CALIF1.csh >&! run_cctm_2010_4CALIF1.log & -# Slurm Usage: sbatch run_cctm_2010_4CALIF1.csh -# -# To report problems or request help with this script/program: -# http://www.epa.gov/cmaq (EPA CMAQ Website) -# http://www.cmascenter.org (CMAS Website) -# =================================================================== - -# =================================================================== -#> Runtime Environment Options -# =================================================================== - -echo 'Start Model Run At ' `date` - -#> Toggle Diagnostic Mode which will print verbose information to -#> standard output - setenv CTM_DIAG_LVL 0 - -#> Choose compiler and set up CMAQ environment with correct -#> libraries using config.cmaq. Options: intel | gcc | pgi - if ( ! $?compiler ) then - setenv compiler intel - endif - if ( ! $?compilerVrsn ) then - setenv compilerVrsn Empty - endif - -#> Source the config.cmaq file to set the build environment - cd ../.. - source ./config_cmaq.csh $compiler $compilerVrsn - cd CCTM/scripts - -#> Set General Parameters and Labels for Configuring the Simulation - set VRSN = v55 #> Code Version - set PROC = mpi #> serial or mpi - set MECH = saprc07tic_ae7i_aq #> Mechanism ID - set EMIS = 2011eh_saprc_10g #> Emission Inventory Details - set APPL = 4CALIF1 #> Application Name (e.g. Domain) - -#> Define RUNID as any combination of parameters above or others. By default, -#> this information will be collected into this one string, $RUNID, for easy -#> referencing in output binaries and log files as well as in other scripts. - setenv RUNID ${VRSN}_${PROC}_${compilerString}_${APPL} - -#> Set the build directory (this is where the CMAQ executable -#> is located by default). - set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString} - set EXEC = CCTM_${VRSN}.exe - -#> Output Each line of Runscript to Log File - if ( $CTM_DIAG_LVL != 0 ) set echo - -#> Set Working, Input, and Output Directories - setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. - setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory - setenv INPDIR /work/MOD3DATA/2010_4CALIF1 #Input Directory - setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location - setenv NMLpath ${BLD} #> Location of Namelists. Common places are: - #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} - - echo "" - echo "Working Directory is $WORKDIR" - echo "Build Directory is $BLD" - echo "Output Directory is $OUTDIR" - echo "Log Directory is $LOGDIR" - echo "Executable Name is $EXEC" - -# ===================================================================== -#> CCTM Configuration Options -# ===================================================================== - -#> Set Start and End Days for looping - setenv NEW_START TRUE #> Set to FALSE for model restart - set START_DATE = "2010-05-02" #> beginning date (May 1, 2010) - set END_DATE = "2010-05-02" #> ending date (June 30, 2010) - -#> Set Timestepping Parameters -set STTIME = 000000 #> beginning GMT time (HHMMSS) -set NSTEPS = 240000 #> time duration (HHMMSS) for this run -set TSTEP = 010000 #> output time step interval (HHMMSS) - -#> Horizontal domain decomposition -if ( $PROC == serial ) then - setenv NPCOL_NPROW "1 1"; set NPROCS = 1 # single processor setting -else - @ NPCOL = 16; @ NPROW = 8 - @ NPROCS = $NPCOL * $NPROW - setenv NPCOL_NPROW "$NPCOL $NPROW"; -endif - -#> Define Execution ID: e.g. [CMAQ-Version-Info]_[User]_[Date]_[Time] -if ( ! -e ${BLD}/CCTM_${VRSN}.cfg ) then - set SHAID = "" -else - set SHAID = `grep "sha_ID" ${BLD}/CCTM_${VRSN}.cfg | cut -c 13-22` - if ( $SHAID == not_a_repo ) then - set SHAID = "" - else - set SHAID = "_sha="$SHAID - endif -endif -setenv EXECUTION_ID "CMAQ_CCTM${VRSN}${SHAID}_`id -u -n`_`date -u +%Y%m%d_%H%M%S_%N`" #> Inform IO/API of the Execution ID -echo "" -echo "---CMAQ EXECUTION ID: $EXECUTION_ID ---" - -#> Keep or Delete Existing Output Files -set CLOBBER_DATA = FALSE - -#> Logfile Options -#> Master Log File Name; uncomment to write standard output to a log, otherwise write to screen -#setenv LOGFILE $CMAQ_HOME/$RUNID.log -if (! -e $LOGDIR ) then - mkdir -p $LOGDIR -endif -setenv PRINT_PROC_TIME Y #> Print timing for all science subprocesses to Logfile - #> [ default: TRUE or Y ] -setenv STDOUT T #> Override I/O-API trying to write information to both the processor - #> logs and STDOUT [ options: T | F ] - -setenv GRID_NAME 4CALIF1 #> check GRIDDESC file for GRID_NAME options -setenv GRIDDESC $INPDIR/GRIDDESC #> grid description file - -#> Retrieve the number of columns, rows, and layers in this simulation -set NZ = 35 -set NX = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f6` -set NY = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f7` -set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` - -#> Output Species and Layer Options - #> CONC file species; comment or set to "ALL" to write all species to CONC - setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 HCHO ISOPRENE NH3 ANH4I ANH4J ASO4I ASO4J" - setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC - - #> ACONC file species; comment or set to "ALL" to write all species to ACONC - #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" - setenv AVG_CONC_SPCS "ALL" - setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC - setenv AVG_FILE_ENDTIME N #> override default beginning ACONC timestamp [ default: N ] - -#> Synchronization Time Step and Tolerance Options -setenv CTM_MAXSYNC 300 #> max sync time step (sec) [ default: 720 ] -setenv CTM_MINSYNC 60 #> min sync time step (sec) [ default: 60 ] -setenv SIGMA_SYNC_TOP 0.7 #> top sigma level thru which sync step determined [ default: 0.7 ] -#setenv ADV_HDIV_LIM 0.95 #> maximum horiz. div. limit for adv step adjust [ default: 0.9 ] -setenv CTM_ADV_CFL 0.95 #> max CFL [ default: 0.75] -#setenv RB_ATOL 1.0E-09 #> global ROS3 solver absolute tolerance [ default: 1.0E-07 ] - -#> Science Options -setenv CTM_OCEAN_CHEM Y #> Flag for ocean halogen chemistry, sea spray aerosol emissions, - #> and enhanced ozone deposition over ocean waters [ default: Y ] -setenv CTM_WB_DUST Y #> use inline windblown dust emissions (only for use with PX) [ default: N ] -setenv CTM_LTNG_NO N #> turn on lightning NOx [ default: N ] -setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], - #> otherwise revert to Kz0UT -setenv PX_VERSION Y #> WRF PX LSM -setenv CLM_VERSION N #> WRF CLM LSM -setenv NOAH_VERSION N #> WRF NOAH LSM -setenv CTM_ABFLUX N #> ammonia bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ] - #> please see user guide (6.10.4 Nitrous Acid (HONO)) - #> for dependency on percent urban fraction dataset -setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ] -setenv CTM_PVO3 N #> consider potential vorticity module for O3 transport from the stratosphere - #> [default: N] - - -setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions with BEIS [ default: N ] -setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ] -setenv BDSNP_MEGAN N #> turns on BDSNP soil NO emissions [ default: N ] - -setenv AEROSOL_OPTICS 3 #> sets method for determining aerosol optics affecting photolysis - #> frequencies ( 3 is the default value ) - #> VALUES 1 thru 3 determined Uniformly Volume Mixed spherical - #> (1-Tabular Mie; 2-Mie Calculation; 3-Case Approx to Mie Theory) - #> VALUES 4 thru 6 attempts to use core-shell mixing model when the - #> aerosol mode has signficant black carbon core otherwise use Volume Mixed - #> model where optics determined by - #> (4-Tabular Mie; 5-Mie Calculation; 6-Case Approx to Mie Theory) - -#> Surface Tiled Aerosol and Gaseous Exchange Options -#> Only active if DepMod=stage at compile time -setenv CTM_MOSAIC N #> Output landuse specific deposition velocities [ default: N ] -setenv CTM_STAGE_P22 N #> Pleim et al. 2022 Aerosol deposition model [default: N] -setenv CTM_STAGE_E20 Y #> Emerson et al. 2020 Aerosol deposition model [default: Y] -setenv CTM_STAGE_S22 N #> Shu et al. 2022 (CMAQ v5.3) Aerosol deposition model [default: N] - - -setenv IC_AERO_M2WET F #> Specify whether or not initial condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv BC_AERO_M2WET F #> Specify whether or not boundary condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv IC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from initial - #> conditions [ default: T = use aerosol surface area ] -setenv BC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from boundary - #> conditions [ default: T = use aerosol surface area ] - - -#> Vertical Extraction Options -setenv VERTEXT N -setenv VERTEXT_COORD_PATH ${WORKDIR}/lonlat.csv - -#> I/O Controls -setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ] -setenv FL_ERR_STOP N #> stop on inconsistent input files -setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ] -setenv IOAPI_OFFSET_64 YES #> support large timestep records (>2GB/timestep record) [ options: YES | NO ] -setenv IOAPI_CHECK_HEADERS N #> check file headers [ options: Y | N ] -setenv CTM_EMISCHK N #> Abort CMAQ if missing surrogates from emissions Input files - -#> Diagnostic Output Flags -setenv CTM_CKSUM Y #> checksum report [ default: Y ] -setenv CLD_DIAG N #> cloud diagnostic file [ default: N ] - -setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ] -setenv NLAYS_PHOTDIAG "1" #> Number of layers for PHOTDIAG2 and PHOTDIAG3 from - #> Layer 1 to NLAYS_PHOTDIAG [ default: all layers ] -#setenv NWAVE_PHOTDIAG "294 303 310 316 333 381 607" #> Wavelengths written for variables - #> in PHOTDIAG2 and PHOTDIAG3 - #> [ default: all wavelengths ] - -setenv CTM_SSEMDIAG N #> sea-spray emissions diagnostic file [ default: N ] -setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; - #> Ignore if CTM_WB_DUST = N -setenv CTM_DEPV_FILE N #> deposition velocities diagnostic file [ default: N ] -setenv VDIFF_DIAG_FILE N #> vdiff & possibly aero grav. sedimentation diagnostic file [ default: N ] -setenv LTNGDIAG N #> lightning diagnostic file [ default: N ] -setenv B3GTS_DIAG N #> beis mass emissions diagnostic file [ default: N ] -setenv CTM_WVEL Y #> save derived vertical velocity component to conc & aconc - #> file [ default: Y ] - -# ===================================================================== -#> Input Directories and Filenames -# ===================================================================== - -set ICpath = $INPDIR/icbc #> initial conditions input directory -set BCpath = $INPDIR/icbc #> boundary conditions input directory -set EMISpath = $INPDIR/emis/saprc07t_ae6_20180511/cmaq_ready/gridded #> gridded emissions input directory -set IN_PTpath = $INPDIR/emis/saprc07t_ae6_20180511/cmaq_ready #> point source emissions input directory -set IN_LTpath = $INPDIR/met/lightning #> lightning NOx input directory -set METpath = $INPDIR/met/mcip_v4.3_wrf_v3.8.1 #> meteorology input directory -#set JVALpath = $INPDIR/jproc #> offline photolysis rate table directory -set OMIpath = $BLD #> ozone column data for the photolysis model -set EPICpath = $INPDIR/surface #> EPIC putput for bidirectional NH3 -set SZpath = $INPDIR/surface #> surf zone file for in-line seasalt emissions - -# ===================================================================== -#> Begin Loop Through Simulation Days -# ===================================================================== -set rtarray = "" - -set TODAYG = ${START_DATE} -set TODAYJ = `date -ud "${START_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set START_DAY = ${TODAYJ} -set STOP_DAY = `date -ud "${END_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set NDAYS = 0 - -while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ - - set NDAYS = `echo "${NDAYS} + 1" | bc -l` - - #> Retrieve Calendar day Information - set YYYYMMDD = `date -ud "${TODAYG}" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD - set YYYYMM = `date -ud "${TODAYG}" +%Y%m` #> Convert YYYY-MM-DD to YYYYMM - set YYMMDD = `date -ud "${TODAYG}" +%y%m%d` #> Convert YYYY-MM-DD to YYMMDD - set YYYYJJJ = $TODAYJ - - #> Calculate Yesterday's Date - set YESTERDAY = `date -ud "${TODAYG}-1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYJJJ - -# ===================================================================== -#> Set Output String and Propagate Model Configuration Documentation -# ===================================================================== - echo "" - echo "Set up input and output files for Day ${TODAYG}." - - #> set output file name extensions - setenv CTM_APPL ${RUNID}_${YYYYMMDD} - - #> Copy Model Configuration To Output Folder - if ( ! -d "$OUTDIR" ) mkdir -p $OUTDIR - cp $BLD/CCTM_${VRSN}.cfg $OUTDIR/CCTM_${CTM_APPL}.cfg - -# ===================================================================== -#> Input Files (Some are Day-Dependent) -# ===================================================================== - - #> Initial conditions - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ICFILE ICON_v52_4CALIF1_saprc07tb_ae6_aq_timeind - setenv INIT_MEDC_1 notused - else - set ICpath = $OUTDIR - setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc - setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc - endif - - #> Boundary conditions - set BCFILE = BCON_v52_4CALIF1_saprc07tb_ae6_aq_timeind - - #> Off-line photolysis rates - #set JVALfile = JTABLE_${YYYYJJJ} - - #> Ozone column data - set OMIfile = OMI_1979_to_2019.dat - - #> Optics file - set OPTfile = PHOT_OPTICS.dat - - #> MCIP meteorology files - setenv GRID_BDY_2D $METpath/GRIDBDY2D.$GRID_NAME.${NZ}L.$YYMMDD # GRID files are static, not day-specific - setenv GRID_CRO_2D $METpath/GRIDCRO2D.$GRID_NAME.${NZ}L.$YYMMDD -# setenv GRID_CRO_3D $METpath/GRIDCRO3D.$GRID_NAME.${NZ}L.$YYMMDD - setenv GRID_CRO_3D '' # this file not used or available - setenv GRID_DOT_2D $METpath/GRIDDOT2D.$GRID_NAME.${NZ}L.$YYMMDD - setenv MET_CRO_2D $METpath/METCRO2D.$GRID_NAME.${NZ}L.$YYMMDD - setenv MET_CRO_3D $METpath/METCRO3D.$GRID_NAME.${NZ}L.$YYMMDD - setenv MET_DOT_3D $METpath/METDOT3D.$GRID_NAME.${NZ}L.$YYMMDD - setenv MET_BDY_3D $METpath/METBDY3D.$GRID_NAME.${NZ}L.$YYMMDD -# setenv LUFRAC_CRO $METpath/LUFRAC_CRO.$GRID_NAME.${NZ}L.$YYMMDD - - #> Control Files - #> - #> IMPORTANT NOTE - #> - #> The DESID control files defined below are an integral part of controlling the behavior of the model simulation. - #> Among other things, they control the mapping of species in the emission files to chemical species in the model and - #> several aspects related to the simulation of organic aerosols. - #> Please carefully review the DESID control files to ensure that they are configured to be consistent with the assumptions - #> made when creating the emission files defined below and the desired representation of organic aerosols. - #> For further information, please see: - #> + AERO7 Release Notes section on 'Required emission updates': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Release_Notes/aero7_overview.md - #> + CMAQ User's Guide section 6.9.3 on 'Emission Compatability': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.9.3_Emission_Compatability - #> + Emission Control (DESID) Documentation in the CMAQ User's Guide: - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md - #> - setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml - setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml - - #> The following namelist configures aggregated output (via the Explicit and Lumped - #> Air Quality Model Output (ELMO) Module), domain-wide budget output, and chemical - #> family output. - setenv MISC_CTRL_NML ${BLD}/CMAQ_Control_Misc.nml - - #> The following namelist controls the mapping of meteorological land use types and the NH3 and Hg emission - #> potentials - setenv STAGECTRL_NML ${BLD}/CMAQ_Control_STAGE.nml - - #> Spatial Masks For Emissions Scaling - setenv CMAQ_MASKS $SZpath/12US1_surf_bench.nc #> horizontal grid-dependent surf zone file - - #> Determine Representative Emission Days - set EMDATES = $INPDIR/emis/emis_dates/smk_merge_dates_${YYYYMM}.txt - set intable = `grep "^${YYYYMMDD}" $EMDATES` - set Date = `echo $intable[1] | cut -d, -f1` - set aveday_N = `echo $intable[2] | cut -d, -f1` - set aveday_Y = `echo $intable[3] | cut -d, -f1` - set mwdss_N = `echo $intable[4] | cut -d, -f1` - set mwdss_Y = `echo $intable[5] | cut -d, -f1` - set week_N = `echo $intable[6] | cut -d, -f1` - set week_Y = `echo $intable[7] | cut -d, -f1` - set all = `echo $intable[8] | cut -d, -f1` - - #> Gridded Emissions Files - setenv N_EMIS_GR 1 - set EMISfile = emis_mole_all_${YYYYMMDD}_4CALIF1_cmaq_saprc07TB_2011eh_saprc_10g.ncf - setenv GR_EMIS_001 ${EMISpath}/${EMISfile} - setenv GR_EMIS_LAB_001 GRIDDED_EMIS - setenv GR_EM_SYM_DATE_001 F # To change default behavior please see Users Guide for EMIS_SYM_DATE - - #> In-Line Point Emissions configuration - setenv N_EMIS_PT 7 #> Number of elevated source groups - - set STKCASEG = 4CALIF1_2011eh_saprc_10g # Stack Group Version Label - set STKCASEE = 4CALIF1_cmaq_saprc07TB_2011eh_saprc_10g # Stack Emission Version Label - - setenv STK_GRPS_001 $IN_PTpath/ptnonipm/stack_groups_ptnonipm_${STKCASEG}.ncf - setenv STK_GRPS_002 $IN_PTpath/ptegu/stack_groups_ptegu_${STKCASEG}.ncf - setenv STK_GRPS_003 $IN_PTpath/othpt/stack_groups_othpt_${STKCASEG}.ncf - setenv STK_GRPS_004 $IN_PTpath/wildfire/stack_groups_wildfire_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_GRPS_005 $IN_PTpath/rxfire/stack_groups_rxfire_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_GRPS_006 $IN_PTpath/pt_oilgas/stack_groups_pt_oilgas_${STKCASEG}.ncf - setenv STK_GRPS_007 $IN_PTpath/ship_int_cmv_c3/stack_groups_ship_int_cmv_c3_${STKCASEG}.ncf - - setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${mwdss_Y}_${STKCASEE}.ncf - setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${mwdss_N}_${STKCASEE}.ncf - setenv STK_EMIS_004 $IN_PTpath/wildfire/inln_mole_wildfire_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_005 $IN_PTpath/rxfire/inln_mole_rxfire_${YYYYMMDD}_${STKCASEE}.ncf - setenv STK_EMIS_006 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${mwdss_Y}_${STKCASEE}.ncf - setenv STK_EMIS_007 $IN_PTpath/ship_int_cmv_c3/inln_mole_ship_int_cmv_c3_${aveday_N}_${STKCASEE}.ncf - - # Label Each Emissions Stream - setenv STK_EMIS_LAB_001 PT_NONEGU - setenv STK_EMIS_LAB_002 PT_EGU - setenv STK_EMIS_LAB_003 PT_OTHER - setenv STK_EMIS_LAB_004 PT_FIRES - setenv STK_EMIS_LAB_005 PT_RXFIRES - setenv STK_EMIS_LAB_006 PT_OILGAS - setenv STK_EMIS_LAB_007 PT_MARINE - - # Allow CMAQ to Use Point Source files with dates that do not - # match the internal model date (Representative Days) - # To set default behavior please see Users Guide for EMIS_SYM_DATE - setenv STK_EM_SYM_DATE_001 T - setenv STK_EM_SYM_DATE_002 T - setenv STK_EM_SYM_DATE_003 T - setenv STK_EM_SYM_DATE_004 T - setenv STK_EM_SYM_DATE_005 T - setenv STK_EM_SYM_DATE_006 T - setenv STK_EM_SYM_DATE_007 T - - #> Lightning NOx configuration - if ( $CTM_LTNG_NO == 'Y' ) then - setenv LTNGNO "InLine" #> set LTNGNO to "Inline" to activate in-line calculation - - #> In-line lightning NOx options - setenv USE_NLDN Y #> use hourly NLDN strike file [ default: Y ] - if ( $USE_NLDN == Y ) then - setenv NLDN_STRIKES ${IN_LTpath}/NLDN.12US1.${YYYYMMDD}.ioapi - endif - setenv LTNGPARMS_FILE ${IN_LTpath}/LTNG_AllParms_12US1.ncf #> lightning parameter file; ignore if LTNGPARAM = N - endif - - #> In-line biogenic emissions configuration - if ( $CTM_BIOGEMIS_MG == 'Y' ) then - - setenv MEGAN_SOILINP $OUTDIR/CCTM_MSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if INITIAL_RUN = Y - #> ; ignore if IGNORE_SOILINP = Y - # Files for this domain are not available. They must be created using the MEGAN preprocessor - #setenv MEGAN_CTS # location of CTS input file - #setenv MEGAN_EFS # location of EFS input file - #setenv MEGAN_LAI # location of LAI input file (optional) - #setenv MEGAN_LDF # location of LDF input file - echo "*** Selected MEGAN without required input files - run ABORTED ***" - exit 1 - endif - if ( $CTM_BIOGEMIS_BE == 'Y' ) then - set IN_BEISpath = ${INPDIR}/surface - setenv GSPRO $BLD/gspro_biogenics.txt - setenv BEIS_NORM_EMIS $IN_BEISpath/b3grd_4CALIF1_2011en_cb6_10.ncf - setenv BEIS_SOILINP $OUTDIR/CCTM_BSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if NEW_START = TRUE - endif - - - #> In-line Sea Spray emissions configuration - setenv OCEAN_1 ${SZpath}/surf_4calif1.ncf #> horizontal grid-dependent surf zone file - - #> Bidirectional ammonia configuration - if ( $CTM_ABFLUX == 'Y' ) then - setenv E2C_SOIL ${EPICpath}/epic/US1_12km_soil.nc - setenv E2C_CHEM ${EPICpath}/epic/US1_12km_time${YYYYMMDD}.nc - setenv E2C_LU ${EPICpath}/beld4_12kmCONUS_2006nlcd.ncf - endif - -#> Inline Process Analysis - setenv CTM_PROCAN N #> use process analysis [ default: N] - if ( $?CTM_PROCAN ) then # $CTM_PROCAN is defined - if ( $CTM_PROCAN == 'Y' || $CTM_PROCAN == 'T' ) then -#> process analysis global column, row and layer ranges -# setenv PA_BCOL_ECOL "10 90" # default: all columns -# setenv PA_BROW_EROW "10 80" # default: all rows -# setenv PA_BLEV_ELEV "1 4" # default: all levels - setenv PACM_INFILE ${NMLpath}/pa_${MECH}.ctl - setenv PACM_REPORT $OUTDIR/"PA_REPORT".${YYYYMMDD} - endif - endif - -#> Integrated Source Apportionment Method (ISAM) Options - setenv CTM_ISAM N - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - setenv SA_IOLIST ${WORKDIR}/isam_control.txt - setenv ISAM_BLEV_ELEV " 1 1" - setenv AISAM_BLEV_ELEV " 1 1" - - #> Set Up ISAM Initial Condition Flags - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ISAM_NEW_START Y - setenv ISAM_PREVDAY - else - setenv ISAM_NEW_START N - setenv ISAM_PREVDAY "$OUTDIR/CCTM_SA_CGRID_${RUNID}_${YESTERDAY}.nc" - endif - - #> Set Up ISAM Output Filenames - setenv SA_ACONC_1 "$OUTDIR/CCTM_SA_ACONC_${CTM_APPL}.nc -v" - setenv SA_CONC_1 "$OUTDIR/CCTM_SA_CONC_${CTM_APPL}.nc -v" - setenv SA_DD_1 "$OUTDIR/CCTM_SA_DRYDEP_${CTM_APPL}.nc -v" - setenv SA_WD_1 "$OUTDIR/CCTM_SA_WETDEP_${CTM_APPL}.nc -v" - setenv SA_CGRID_1 "$OUTDIR/CCTM_SA_CGRID_${CTM_APPL}.nc -v" - - #> Set optional ISAM regions files -# setenv ISAM_REGIONS /work/MOD3EVAL/nsu/isam_v53/CCTM/scripts/input/RGN_ISAM.nc - - #> Options used to favor tracked species in reaction for Ozone-NOx chemistry - setenv ISAM_O3_WEIGHTS 5 # weights for tracked species Default is 5 - # OPTIONS - # 1 does not weight any species - # 2 weights NOx and subset of NOz species - # 3 uses with from option 2 plus weight OVOC species, organic radicals and operators - # 4 weight OVOC species, organic radicals and operators - # 5 toggles between two weighting set based on VOC and NOx limited ozone production - # Below options only used if ISAM_O3_WEIGHTS set to 5 - setenv ISAM_NOX_CASE 2 # weights for tracked species when ozone production is NOx limited. Default is 2 - setenv ISAM_VOC_CASE 4 # weights for tracked species when ozone production is VOC limited. Default is 4 - setenv VOC_NOX_TRANS 0.35 # value of Prod H2O2 over Prod HNO3 less than where - # ISAM_VOC_CASE weights are used. Otherwise, ISAM_NOX_CASE - # weights are used. Default is 0.35 - - endif - endif - -#> Sulfur Tracking Model (STM) - setenv STM_SO4TRACK N #> sulfur tracking [ default: N ] - if ( $?STM_SO4TRACK ) then - if ( $STM_SO4TRACK == 'Y' || $STM_SO4TRACK == 'T' ) then - - #> option to normalize sulfate tracers [ default: Y ] - setenv STM_ADJSO4 Y - - endif - endif - -#> Decoupled Direct Method in 3D (DDM-3D) Options - setenv CTM_DDM3D N # Sets up requisite script settings for DDM-3D (default is N/F) - # Additionally requires for CCTM to be compiled for DDM-3D simulations - - set NPMAX = 1 # Number of sensitivity parameters defined in SEN_INPUT - setenv SEN_INPUT ${WORKDIR}/sensinput.dat - - setenv DDM3D_HIGH N # allow higher-order sensitivity parameters in SEN_INPUT [ T | Y | F | N ] (default is N/F) - - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv DDM3D_RST N # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = # sensitivity fields are initialized to 0.0 on the first hour of the first day - set S_ICfile = - else - setenv DDM3D_RST Y # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = $OUTDIR - set S_ICfile = CCTM_SENGRID_${RUNID}_${YESTERDAY}.nc - endif - - setenv CTM_NPMAX $NPMAX - setenv CTM_SENS_1 "$OUTDIR/CCTM_SENGRID_${CTM_APPL}.nc -v" - setenv A_SENS_1 "$OUTDIR/CCTM_ASENS_${CTM_APPL}.nc -v" - setenv CTM_SWETDEP_1 "$OUTDIR/CCTM_SENWDEP_${CTM_APPL}.nc -v" - setenv CTM_SDRYDEP_1 "$OUTDIR/CCTM_SENDDEP_${CTM_APPL}.nc -v" - setenv INIT_SENS_1 $S_ICpath/$S_ICfile - -# ===================================================================== -#> Output Files -# ===================================================================== - - #> set output file names - setenv S_CGRID "$OUTDIR/CCTM_CGRID_${CTM_APPL}.nc" #> 3D Inst. Concenctrations - setenv CTM_CONC_1 "$OUTDIR/CCTM_CONC_${CTM_APPL}.nc -v" #> On-Hour Concentrations - setenv A_CONC_1 "$OUTDIR/CCTM_ACONC_${CTM_APPL}.nc -v" #> Hourly Avg. Concentrations - setenv MEDIA_CONC "$OUTDIR/CCTM_MEDIA_CONC_${CTM_APPL}.nc -v" #> NH3 Conc. in Media - setenv CTM_DRY_DEP_1 "$OUTDIR/CCTM_DRYDEP_${CTM_APPL}.nc -v" #> Hourly Dry Deposition - setenv CTM_DEPV_DIAG "$OUTDIR/CCTM_DEPV_${CTM_APPL}.nc -v" #> Dry Deposition Velocities - setenv B3GTS_S "$OUTDIR/CCTM_B3GTS_S_${CTM_APPL}.nc -v" #> Biogenic Emissions - setenv BEIS_SOILOUT "$OUTDIR/CCTM_BSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv MEGAN_SOILOUT "$OUTDIR/CCTM_MSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv BDSNPOUT "$OUTDIR/CCTM_BDSNPOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv CTM_WET_DEP_1 "$OUTDIR/CCTM_WETDEP1_${CTM_APPL}.nc -v" #> Wet Dep From All Clouds - setenv CTM_WET_DEP_2 "$OUTDIR/CCTM_WETDEP2_${CTM_APPL}.nc -v" #> Wet Dep From SubGrid Clouds - setenv CTM_ELMO_1 "$OUTDIR/CCTM_ELMO_${CTM_APPL}.nc -v" #> On-Hour Particle Diagnostics - setenv CTM_AELMO_1 "$OUTDIR/CCTM_AELMO_${CTM_APPL}.nc -v" #> Hourly Avg. Particle Diagnostics - setenv CTM_RJ_1 "$OUTDIR/CCTM_PHOTDIAG1_${CTM_APPL}.nc -v" #> 2D Surface Summary from Inline Photolysis - setenv CTM_RJ_2 "$OUTDIR/CCTM_PHOTDIAG2_${CTM_APPL}.nc -v" #> 3D Photolysis Rates - setenv CTM_RJ_3 "$OUTDIR/CCTM_PHOTDIAG3_${CTM_APPL}.nc -v" #> 3D Optical and Radiative Results from Photolysis - setenv CTM_SSEMIS_1 "$OUTDIR/CCTM_SSEMIS_${CTM_APPL}.nc -v" #> Sea Spray Emissions - setenv CTM_DUST_EMIS_1 "$OUTDIR/CCTM_DUSTEMIS_${CTM_APPL}.nc -v" #> Dust Emissions - setenv CTM_BUDGET "$OUTDIR/CCTM_BUDGET_${CTM_APPL}.txt -v" #> Budget - setenv CTM_IPR_1 "$OUTDIR/CCTM_PA_1_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_2 "$OUTDIR/CCTM_PA_2_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_3 "$OUTDIR/CCTM_PA_3_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IRR_1 "$OUTDIR/CCTM_IRR_1_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_2 "$OUTDIR/CCTM_IRR_2_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_3 "$OUTDIR/CCTM_IRR_3_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_DRY_DEP_MOS "$OUTDIR/CCTM_DDMOS_${CTM_APPL}.nc -v" #> Dry Dep - setenv CTM_DEPV_MOS "$OUTDIR/CCTM_DEPVMOS_${CTM_APPL}.nc -v" #> Dry Dep Velocity - setenv CTM_VDIFF_DIAG "$OUTDIR/CCTM_VDIFF_DIAG_${CTM_APPL}.nc -v" #> Vertical Dispersion Diagnostic - setenv CTM_VSED_DIAG "$OUTDIR/CCTM_VSED_DIAG_${CTM_APPL}.nc -v" #> Particle Grav. Settling Velocity - setenv CTM_LTNGDIAG_1 "$OUTDIR/CCTM_LTNGHRLY_${CTM_APPL}.nc -v" #> Hourly Avg Lightning NO - setenv CTM_LTNGDIAG_2 "$OUTDIR/CCTM_LTNGCOL_${CTM_APPL}.nc -v" #> Column Total Lightning NO - setenv CTM_VEXT_1 "$OUTDIR/CCTM_VEXT_${CTM_APPL}.nc -v" #> On-Hour 3D Concs at select sites - - #> set floor file (neg concs) - setenv FLOOR_FILE ${OUTDIR}/FLOOR_${CTM_APPL}.txt - - #> look for existing log files and output files - ( ls CTM_LOG_???.${CTM_APPL} > buff.txt ) >& /dev/null - ( ls ${LOGDIR}/CTM_LOG_???.${CTM_APPL} >> buff.txt ) >& /dev/null - set log_test = `cat buff.txt`; rm -f buff.txt - - set OUT_FILES = (${FLOOR_FILE} ${S_CGRID} ${CTM_CONC_1} ${A_CONC_1} ${MEDIA_CONC} \ - ${CTM_DRY_DEP_1} $CTM_DEPV_DIAG $B3GTS_S $MEGAN_SOILOUT $BEIS_SOILOUT $BDSNPOUT \ - $CTM_WET_DEP_1 $CTM_WET_DEP_2 $CTM_ELMO_1 $CTM_AELMO_1 \ - $CTM_RJ_1 $CTM_RJ_2 $CTM_RJ_3 $CTM_SSEMIS_1 $CTM_DUST_EMIS_1 $CTM_IPR_1 $CTM_IPR_2 \ - $CTM_IPR_3 $CTM_BUDGET $CTM_IRR_1 $CTM_IRR_2 $CTM_IRR_3 $CTM_DRY_DEP_MOS \ - $CTM_DEPV_MOS $CTM_VDIFF_DIAG $CTM_VSED_DIAG $CTM_LTNGDIAG_1 $CTM_LTNGDIAG_2 $CTM_VEXT_1 ) - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${SA_ACONC_1} ${SA_CONC_1} ${SA_DD_1} ${SA_WD_1} \ - ${SA_CGRID_1} ) - endif - endif - if ( $?CTM_DDM3D ) then - if ( $CTM_DDM3D == 'Y' || $CTM_DDM3D == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${CTM_SENS_1} ${A_SENS_1} ${CTM_SWETDEP_1} ${CTM_SDRYDEP_1} ) - endif - endif - set OUT_FILES = `echo $OUT_FILES | sed "s; -v;;g" ` - ( ls $OUT_FILES > buff.txt ) >& /dev/null - set out_test = `cat buff.txt`; rm -f buff.txt - - #> delete previous output if requested - if ( $CLOBBER_DATA == true || $CLOBBER_DATA == TRUE ) then - echo - echo "Existing Logs and Output Files for Day ${TODAYG} Will Be Deleted" - - #> remove previous log files - foreach file ( ${log_test} ) - #echo "Deleting log file: $file" - /bin/rm -f $file - end - - #> remove previous output files - foreach file ( ${out_test} ) - #echo "Deleting output file: $file" - /bin/rm -f $file - end - /bin/rm -f ${OUTDIR}/CCTM_DESID*${CTM_APPL}.nc - - else - #> error if previous log files exist - if ( "$log_test" != "" ) then - echo "*** Logs exist - run ABORTED ***" - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - - #> error if previous output files exist - if ( "$out_test" != "" ) then - echo "*** Output Files Exist - run will be ABORTED ***" - foreach file ( $out_test ) - echo " cannot delete $file" - end - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - endif - - #> for the run control ... - setenv CTM_STDATE $YYYYJJJ - setenv CTM_STTIME $STTIME - setenv CTM_RUNLEN $NSTEPS - setenv CTM_TSTEP $TSTEP - setenv INIT_CONC_1 $ICpath/$ICFILE - setenv BNDY_CONC_1 $BCpath/$BCFILE - setenv OMI $OMIpath/$OMIfile - setenv MIE_TABLE $OUTDIR/mie_table_coeffs_${compilerString}.txt - setenv OPTICS_DATA $OMIpath/$OPTfile - #setenv XJ_DATA $JVALpath/$JVALfile - - #> species defn & photolysis - setenv gc_matrix_nml ${NMLpath}/GC_$MECH.nml - setenv ae_matrix_nml ${NMLpath}/AE_$MECH.nml - setenv nr_matrix_nml ${NMLpath}/NR_$MECH.nml - setenv tr_matrix_nml ${NMLpath}/Species_Table_TR_0.nml - - #> check for photolysis input data - setenv CSQY_DATA ${NMLpath}/CSQY_DATA_$MECH - - if (! (-e $CSQY_DATA ) ) then - echo " $CSQY_DATA not found " - exit 1 - endif - if (! (-e $OPTICS_DATA ) ) then - echo " $OPTICS_DATA not found " - exit 1 - endif - -# =================================================================== -#> Execution Portion -# =================================================================== - - #> Print attributes of the executable - if ( $CTM_DIAG_LVL != 0 ) then - ls -l $BLD/$EXEC - size $BLD/$EXEC - unlimit - limit - endif - - #> Print Startup Dialogue Information to Standard Out - echo - echo "CMAQ Processing of Day $YYYYMMDD Began at `date`" - echo - - #> Executable call for single PE, uncomment to invoke - #( /usr/bin/time -p $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Executable call for multi PE, configure for your system - # set MPI = /usr/local/intel/impi/3.2.2.006/bin64 - # set MPIRUN = $MPI/mpirun - ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Harvest Timing Output so that it may be reported below - set rtarray = "${rtarray} `tail -3 buff_${EXECUTION_ID}.txt | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | head -1` " - rm -rf buff_${EXECUTION_ID}.txt - - #> Abort script if abnormal termination - if ( ! -e $S_CGRID ) then - echo "" - echo "**************************************************************" - echo "** Runscript Detected an Error: CGRID file was not written. **" - echo "** This indicates that CMAQ was interrupted or an issue **" - echo "** exists with writing output. The runscript will now **" - echo "** abort rather than proceeding to subsequent days. **" - echo "**************************************************************" - break - endif - - #> Print Concluding Text - echo - echo "CMAQ Processing of Day $YYYYMMDD Finished at `date`" - echo - echo "\\\\\=====\\\\\=====\\\\\=====\\\\\=====/////=====/////=====/////=====/////" - echo - -# =================================================================== -#> Finalize Run for This Day and Loop to Next Day -# =================================================================== - - #> Save Log Files and Move on to Next Simulation Day - mv CTM_LOG_???.${CTM_APPL} $LOGDIR - if ( $CTM_DIAG_LVL != 0 ) then - mv CTM_DIAG_???.${CTM_APPL} $LOGDIR - endif - - #> The next simulation day will, by definition, be a restart - setenv NEW_START false - - #> Increment both Gregorian and Julian Days - set TODAYG = `date -ud "${TODAYG}+1days" +%Y-%m-%d` #> Add a day for tomorrow - set TODAYJ = `date -ud "${TODAYG}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ - -end #Loop to the next Simulation Day - -# =================================================================== -#> Generate Timing Report -# =================================================================== -set RTMTOT = 0 -foreach it ( `seq ${NDAYS}` ) - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - set RTMTOT = `echo "${RTMTOT} + ${rt}" | bc -l` -end - -set RTMAVG = `echo "scale=2; ${RTMTOT} / ${NDAYS}" | bc -l` -set RTMTOT = `echo "scale=2; ${RTMTOT} / 1" | bc -l` - -echo -echo "==================================" -echo " ***** CMAQ TIMING REPORT *****" -echo "==================================" -echo "Start Day: ${START_DATE}" -echo "End Day: ${END_DATE}" -echo "Number of Simulation Days: ${NDAYS}" -echo "Domain Name: ${GRID_NAME}" -echo "Number of Grid Cells: ${NCELLS} (ROW x COL x LAY)" -echo "Number of Layers: ${NZ}" -echo "Number of Processes: ${NPROCS}" -echo " All times are in seconds." -echo -echo "Num Day Wall Time" -set d = 0 -set day = ${START_DATE} -foreach it ( `seq ${NDAYS}` ) - # Set the right day and format it - set d = `echo "${d} + 1" | bc -l` - set n = `printf "%02d" ${d}` - - # Choose the correct time variables - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - - # Write out row of timing data - echo "${n} ${day} ${rt}" - - # Increment day for next loop - set day = `date -ud "${day}+1days" +%Y-%m-%d` -end -echo " Total Time = ${RTMTOT}" -echo " Avg. Time = ${RTMAVG}" - -exit From f5795b244f8a7f0fb4124342c0d08ff749d34b68 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:40:33 -0400 Subject: [PATCH 359/375] Delete CCTM/scripts/sensinput.2016_12SE1.dat --- CCTM/scripts/sensinput.2016_12SE1.dat | 80 --------------------------- 1 file changed, 80 deletions(-) delete mode 100644 CCTM/scripts/sensinput.2016_12SE1.dat diff --git a/CCTM/scripts/sensinput.2016_12SE1.dat b/CCTM/scripts/sensinput.2016_12SE1.dat deleted file mode 100644 index d71709c34..000000000 --- a/CCTM/scripts/sensinput.2016_12SE1.dat +++ /dev/null @@ -1,80 +0,0 @@ -EGU - EMIS - PT_EGU - SPECIES - NO, NO2 - -END - - - - - - - -For each sensitivity definition block: - -(mandatory) The first line is the name of the sensitivity parameter; any 3-character name of the user's choosing, no leading spaces -(mandatory) The next line specifies the type of sensitivity (One leading space followed by 4 capitalized characters) -EMIS: Emissions -INIT: Initial Conditions -BOUN: Boundary Conditions -RATE: Reaction rate -HIGH: Higher-order sensitivity. -(mandatory) For EMIS, the next line specifies the emissions streams to be used for this parameter. The comma-delimited list must have two leading spaces. The stream names must be defined in the run script. Alternatively, the key word 'TOTA' will use all model emissions for this parameter. -(mandatory) -For EMIS, INIT, or BOUN sensitivity: The term ' SPECIES' (all-cap, one leading space) must appear next. -For RATE sensitivity: The term ' REACTION' (all-cap, one leading space) must appear next. -For HIGH sensitivity: The next 2 lines must each be one leading space followed by the name of the sensitivity to which we're taking higher order sensitivity. That name must have already been defined as the name of a sensitivity parameter. No further information should be defined for a higher-order sensitivity parameter. -(mandatory) -For EMIS, INIT, or BOUN sensitivity: Specify one or more species. The comma-delimited species list must have two leading spaces and then exactly match a species from model species list. The keyword 'ALL' here allows for all model species instead. -For RATE sensitivity: Specify one or more reactions. Names must have two leading spaces and then exactly match the label from mech.def (also in RXDT.EXT). -(optional) -The term ' REGION' (all-cap, one leading space). If this term is used, the next line must be a comma-delimited list of region variables. - -NOTE1: This list must be consistent with the max # of sens parameters (NPMAX) set in the runscript. -NOTE2: For better understanding of how this file is read, or to modify/add features, look at sinput.F in the code. - -After the final sensitivity definition block, the keyword 'END' is required. - - -Examples: - -ES2 - EMIS - TOTA - SPECIES - SO2 - -ENX - EMIS - GRIDDEDEMIS, PT_EGU - SPECIES - NO, NO2 - -EBI - EMIS - BEIS - SPECIES - ISOP - -2NX - HIGH - EMISNOX - EMISNOX - -RT1 - RATE - REACTION - 1 - -RG1 - EMIS - SPECIES - NO, NO2 - REGION - GA, NC - - - - From 6b460d7ab284350bf32f29715d9e0ee90ddb6c9f Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:40:54 -0400 Subject: [PATCH 360/375] Delete CCTM/scripts/run_cctm_Bench_2016_12SE1.csh --- CCTM/scripts/run_cctm_Bench_2016_12SE1.csh | 814 --------------------- 1 file changed, 814 deletions(-) delete mode 100755 CCTM/scripts/run_cctm_Bench_2016_12SE1.csh diff --git a/CCTM/scripts/run_cctm_Bench_2016_12SE1.csh b/CCTM/scripts/run_cctm_Bench_2016_12SE1.csh deleted file mode 100755 index d7ceaaf7e..000000000 --- a/CCTM/scripts/run_cctm_Bench_2016_12SE1.csh +++ /dev/null @@ -1,814 +0,0 @@ -#!/bin/csh -f - -# ===================== CCTMv5.5.X Run Script ========================= -# Usage: run_cctm_Bench_2016_12SE1.csh >&! run_cctm_Bench_2016_12SE1.log & -# Slurm Usage: sbatch run_cctm_Bench_2016_12SE1.csh -# -# To report problems or request help with this script/program: -# http://www.epa.gov/cmaq (EPA CMAQ Website) -# http://www.cmascenter.org (CMAS Website) -# =================================================================== - -# =================================================================== -#> Runtime Environment Options -# =================================================================== - -echo 'Start Model Run At ' `date` - -#> Toggle Diagnostic Mode which will print verbose information to -#> standard output - setenv CTM_DIAG_LVL 0 - -#> Choose compiler and set up CMAQ environment with correct -#> libraries using config.cmaq. Options: intel | gcc | pgi - if ( ! $?compiler ) then - setenv compiler intel - endif - if ( ! $?compilerVrsn ) then - setenv compilerVrsn Empty - endif - -#> Source the config.cmaq file to set the build environment - cd ../.. - source ./config_cmaq.csh $compiler $compilerVrsn - cd CCTM/scripts - -#> Set General Parameters for Configuring the Simulation - set VRSN = v55 #> Code Version - set PROC = mpi #> serial or mpi - set MECH = cb6r5_ae7_aq #> Mechanism ID - set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) - -#> Define RUNID as any combination of parameters above or others. By default, -#> this information will be collected into this one string, $RUNID, for easy -#> referencing in output binaries and log files as well as in other scripts. - setenv RUNID ${VRSN}_${compilerString}_${APPL} - -#> Set the build directory (this is where the CMAQ executable -#> is located by default). - set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString} - set EXEC = CCTM_${VRSN}.exe - -#> Output Each line of Runscript to Log File - if ( $CTM_DIAG_LVL != 0 ) set echo - -#> Set Working, Input, and Output Directories - setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. - setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory - setenv INPDIR ${CMAQ_DATA}/2016_12SE1 #> Input Directory - setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location - setenv NMLpath ${BLD} #> Location of Namelists. Common places are: - #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} - - echo "" - echo "Working Directory is $WORKDIR" - echo "Build Directory is $BLD" - echo "Output Directory is $OUTDIR" - echo "Log Directory is $LOGDIR" - echo "Executable Name is $EXEC" - -# ===================================================================== -#> CCTM Configuration Options -# ===================================================================== - -#> Set Start and End Days for looping - setenv NEW_START TRUE #> Set to FALSE for model restart - set START_DATE = "2016-07-01" #> beginning date (July 1, 2016) - set END_DATE = "2016-07-01" #> ending date (July 1, 2016) - -#> Set Timestepping Parameters -set STTIME = 000000 #> beginning GMT time (HHMMSS) -set NSTEPS = 240000 #> time duration (HHMMSS) for this run -set TSTEP = 010000 #> output time step interval (HHMMSS) - -#> Horizontal domain decomposition -if ( $PROC == serial ) then - setenv NPCOL_NPROW "1 1"; set NPROCS = 1 # single processor setting -else - @ NPCOL = 8; @ NPROW = 4 - @ NPROCS = $NPCOL * $NPROW - setenv NPCOL_NPROW "$NPCOL $NPROW"; -endif - -#> Define Execution ID: e.g. [CMAQ-Version-Info]_[User]_[Date]_[Time] -if ( ! -e ${BLD}/CCTM_${VRSN}.cfg ) then - set SHAID = "" -else - set SHAID = `grep "sha_ID" ${BLD}/CCTM_${VRSN}.cfg | cut -c 13-22` - if ( $SHAID == not_a_repo ) then - set SHAID = "" - else - set SHAID = "_sha="$SHAID - endif -endif -setenv EXECUTION_ID "CMAQ_CCTM${VRSN}${SHAID}_`id -u -n`_`date -u +%Y%m%d_%H%M%S_%N`" #> Inform IO/API of the Execution ID -echo "" -echo "---CMAQ EXECUTION ID: $EXECUTION_ID ---" - -#> Keep or Delete Existing Output Files -set CLOBBER_DATA = TRUE - -#> Logfile Options -#> Master Log File Name; uncomment to write standard output to a log, otherwise write to screen -#setenv LOGFILE $CMAQ_HOME/$RUNID.log -if (! -e $LOGDIR ) then - mkdir -p $LOGDIR -endif -setenv PRINT_PROC_TIME Y #> Print timing for all science subprocesses to Logfile - #> [ default: TRUE or Y ] -setenv STDOUT T #> Override I/O-API trying to write information to both the processor - #> logs and STDOUT [ options: T | F ] - -setenv GRID_NAME 2016_12SE1 #> check GRIDDESC file for GRID_NAME options -setenv GRIDDESC $INPDIR/GRIDDESC #> grid description file - -#> Retrieve the number of columns, rows, and layers in this simulation -set NZ = 35 -set NX = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f6` -set NY = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f7` -set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` - -#> Output Species and Layer Options - #> CONC file species; comment or set to "ALL" to write all species to CONC - setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 FORM ISOP NH3 ANH4I ANH4J ASO4I ASO4J" - setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC - - #> ACONC file species; comment or set to "ALL" to write all species to ACONC - #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" - setenv AVG_CONC_SPCS "ALL" - setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC - setenv AVG_FILE_ENDTIME N #> override default beginning ACONC timestamp [ default: N ] - -#> Synchronization Time Step and Tolerance Options -setenv CTM_MAXSYNC 300 #> max sync time step (sec) [ default: 720 ] -setenv CTM_MINSYNC 60 #> min sync time step (sec) [ default: 60 ] -setenv SIGMA_SYNC_TOP 0.7 #> top sigma level thru which sync step determined [ default: 0.7 ] -#setenv ADV_HDIV_LIM 0.95 #> maximum horiz. div. limit for adv step adjust [ default: 0.9 ] -setenv CTM_ADV_CFL 0.95 #> max CFL [ default: 0.75] -#setenv RB_ATOL 1.0E-09 #> global ROS3 solver absolute tolerance [ default: 1.0E-07 ] - -#> Science Options -setenv CTM_OCEAN_CHEM Y #> Flag for ocean halogen chemistry, sea spray aerosol emissions, - #> and enhanced ozone deposition over ocean waters [ default: Y ] -setenv CTM_WB_DUST N #> use inline windblown dust emissions (only for use with PX) [ default: N ] -setenv CTM_LTNG_NO N #> turn on lightning NOx [ default: N ] -setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], - #> otherwise revert to Kz0UT -setenv PX_VERSION Y #> WRF PX LSM -setenv CLM_VERSION N #> WRF CLM LSM -setenv NOAH_VERSION N #> WRF NOAH LSM -setenv CTM_ABFLUX Y #> ammonia bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_BIDI_FERT_NH3 T #> subtract fertilizer NH3 from emissions because it will be handled - #> by the BiDi calculation [ default: Y ] -setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ] - #> please see user guide (6.10.4 Nitrous Acid (HONO)) - #> for dependency on percent urban fraction dataset -setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ] -setenv CTM_PVO3 N #> consider potential vorticity module for O3 transport from the stratosphere - #> [default: N] - - -setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions with BEIS [ default: N ] -setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ] -setenv BDSNP_MEGAN N #> turns on BDSNP soil NO emissions [ default: N ] - -setenv AEROSOL_OPTICS 3 #> sets method for determining aerosol optics affecting photolysis - #> frequencies ( 3 is the default value ) - #> VALUES 1 thru 3 determined Uniformly Volume Mixed spherical - #> (1-Tabular Mie; 2-Mie Calculation; 3-Case Approx to Mie Theory) - #> VALUES 4 thru 6 attempts to use core-shell mixing model when the - #> aerosol mode has signficant black carbon core otherwise use Volume Mixed - #> model where optics determined by - #> (4-Tabular Mie; 5-Mie Calculation; 6-Case Approx to Mie Theory) - -#> Surface Tiled Aerosol and Gaseous Exchange Options -#> Only active if DepMod=stage at compile time -setenv CTM_MOSAIC N #> Output landuse specific deposition velocities [ default: N ] -setenv CTM_STAGE_P22 N #> Pleim et al. 2022 Aerosol deposition model [default: N] -setenv CTM_STAGE_E20 Y #> Emerson et al. 2020 Aerosol deposition model [default: Y] -setenv CTM_STAGE_S22 N #> Shu et al. 2022 (CMAQ v5.3) Aerosol deposition model [default: N] - -setenv IC_AERO_M2WET F #> Specify whether or not initial condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv BC_AERO_M2WET F #> Specify whether or not boundary condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv IC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from initial - #> conditions [ default: T = use aerosol surface area ] -setenv BC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from boundary - #> conditions [ default: T = use aerosol surface area ] - - -#> Vertical Extraction Options -setenv VERTEXT N -setenv VERTEXT_COORD_PATH ${WORKDIR}/lonlat.csv - -#> I/O Controls -setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ] -setenv FL_ERR_STOP N #> stop on inconsistent input files -setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ] -setenv IOAPI_OFFSET_64 YES #> support large timestep records (>2GB/timestep record) [ options: YES | NO ] -setenv IOAPI_CHECK_HEADERS N #> check file headers [ options: Y | N ] -setenv CTM_EMISCHK N #> Abort CMAQ if missing surrogates from emissions Input files - -#> Diagnostic Output Flags -setenv CTM_CKSUM Y #> checksum report [ default: Y ] -setenv CLD_DIAG N #> cloud diagnostic file [ default: N ] - -setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ] -setenv NLAYS_PHOTDIAG "1" #> Number of layers for PHOTDIAG2 and PHOTDIAG3 from - #> Layer 1 to NLAYS_PHOTDIAG [ default: all layers ] -#setenv NWAVE_PHOTDIAG "294 303 310 316 333 381 607" #> Wavelengths written for variables - #> in PHOTDIAG2 and PHOTDIAG3 - #> [ default: all wavelengths ] - -setenv CTM_SSEMDIAG N #> sea-spray emissions diagnostic file [ default: N ] -setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; - #> Ignore if CTM_WB_DUST = N -setenv CTM_DEPV_FILE N #> deposition velocities diagnostic file [ default: N ] -setenv VDIFF_DIAG_FILE N #> vdiff & possibly aero grav. sedimentation diagnostic file [ default: N ] -setenv LTNGDIAG N #> lightning diagnostic file [ default: N ] -setenv B3GTS_DIAG N #> BEIS mass emissions diagnostic file [ default: N ] -setenv CTM_WVEL Y #> save derived vertical velocity component to conc - #> file [ default: Y ] - -# ===================================================================== -#> Input Directories and Filenames -# ===================================================================== - -set ICpath = $INPDIR/icbc #> initial conditions input directory -set BCpath = $INPDIR/icbc #> boundary conditions input directory -set EMISpath = $INPDIR/emis/gridded_area/gridded #> gridded emissions input directory -set EMISpath2 = $INPDIR/emis/gridded_area/rwc #> gridded surface residential wood combustion emissions directory -set IN_PTpath = $INPDIR/emis/inln_point #> point source emissions input directory -set IN_LTpath = $INPDIR/lightning #> lightning NOx input directory -set METpath = $INPDIR/met/mcipv5.0 #> meteorology input directory -#set JVALpath = $INPDIR/jproc #> offline photolysis rate table directory -set OMIpath = $BLD #> ozone column data for the photolysis model -set EPICpath = $INPDIR/land #> EPIC putput for bidirectional NH3 -set SZpath = $INPDIR/land #> surf zone file for in-line seaspray emissions - -# ===================================================================== -#> Begin Loop Through Simulation Days -# ===================================================================== -set rtarray = "" - -set TODAYG = ${START_DATE} -set TODAYJ = `date -ud "${START_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set START_DAY = ${TODAYJ} -set STOP_DAY = `date -ud "${END_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set NDAYS = 0 - -while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ - - set NDAYS = `echo "${NDAYS} + 1" | bc -l` - - #> Retrieve Calendar day Information - set YYYYMMDD = `date -ud "${TODAYG}" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD - set YYYYMM = `date -ud "${TODAYG}" +%Y%m` #> Convert YYYY-MM-DD to YYYYMM - set YYMMDD = `date -ud "${TODAYG}" +%y%m%d` #> Convert YYYY-MM-DD to YYMMDD - set MM = `date -ud "${TODAYG}" +%m` #> Convert YYYY-MM-DD to MM - set YYYYJJJ = $TODAYJ - - #> Calculate Yesterday's Date - set YESTERDAY = `date -ud "${TODAYG}-1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYJJJ - -# ===================================================================== -#> Set Output String and Propagate Model Configuration Documentation -# ===================================================================== - echo "" - echo "Set up input and output files for Day ${TODAYG}." - - #> set output file name extensions - setenv CTM_APPL ${RUNID}_${YYYYMMDD} - - #> Copy Model Configuration To Output Folder - if ( ! -d "$OUTDIR" ) mkdir -p $OUTDIR - cp $BLD/CCTM_${VRSN}.cfg $OUTDIR/CCTM_${CTM_APPL}.cfg - -# ===================================================================== -#> Input Files (Some are Day-Dependent) -# ===================================================================== - - #> Initial conditions - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ICFILE ICON_20160630_bench.nc - setenv INIT_MEDC_1 notused - else - set ICpath = $OUTDIR - setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc - setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc - endif - - #> Boundary conditions - set BCFILE = BCON_${YYYYMMDD}_bench.nc - - #> Off-line photolysis rates - #set JVALfile = JTABLE_${YYYYJJJ} - - #> Ozone column data - set OMIfile = OMI_1979_to_2019.dat - - #> Optics file - set OPTfile = PHOT_OPTICS.dat - - #> MCIP meteorology files - setenv GRID_BDY_2D $METpath/GRIDBDY2D_${YYMMDD}.nc # GRID files are static, not day-specific - setenv GRID_CRO_2D $METpath/GRIDCRO2D_${YYMMDD}.nc - setenv GRID_CRO_3D $METpath/GRIDCRO3D_${YYMMDD}.nc - setenv GRID_DOT_2D $METpath/GRIDDOT2D_${YYMMDD}.nc - setenv MET_CRO_2D $METpath/METCRO2D_${YYMMDD}.nc - setenv MET_CRO_3D $METpath/METCRO3D_${YYMMDD}.nc - setenv MET_DOT_3D $METpath/METDOT3D_${YYMMDD}.nc - setenv MET_BDY_3D $METpath/METBDY3D_${YYMMDD}.nc - setenv LUFRAC_CRO $METpath/LUFRAC_CRO_${YYMMDD}.nc - - #> Control Files - #> - #> IMPORTANT NOTE - #> - #> The DESID control files defined below are an integral part of controlling the behavior of the model simulation. - #> Among other things, they control the mapping of species in the emission files to chemical species in the model and - #> several aspects related to the simulation of organic aerosols. - #> Please carefully review the DESID control files to ensure that they are configured to be consistent with the assumptions - #> made when creating the emission files defined below and the desired representation of organic aerosols. - #> For further information, please see: - #> + AERO7 Release Notes section on 'Required emission updates': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Release_Notes/aero7_overview.md - #> + CMAQ User's Guide section 6.9.3 on 'Emission Compatability': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.9.3_Emission_Compatability - #> + Emission Control (DESID) Documentation in the CMAQ User's Guide: - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md - #> - setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml - setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml - - #> The following namelist configures aggregated output (via the Explicit and Lumped - #> Air Quality Model Output (ELMO) Module), domain-wide budget output, and chemical - #> family output. - setenv MISC_CTRL_NML ${BLD}/CMAQ_Control_Misc.nml - - #> The following namelist controls the mapping of meteorological land use types and the NH3 and Hg emission - #> potentials - setenv STAGECTRL_NML ${BLD}/CMAQ_Control_STAGE.nml - - #> Spatial Masks For Emissions Scaling - setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_SE53BENCH.nc #> horizontal grid-dependent ocean file - - #> Gridded Emissions Files - setenv N_EMIS_GR 2 - set EMISfile = emis_mole_all_${YYYYMMDD}_cb6_bench.nc - setenv GR_EMIS_001 ${EMISpath}/${EMISfile} - setenv GR_EMIS_LAB_001 GRIDDED_EMIS - setenv GR_EM_SYM_DATE_001 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set EMISfile = emis_mole_rwc_${YYYYMMDD}_12US1_cmaq_cb6_2016ff_16j.nc - setenv GR_EMIS_002 ${EMISpath2}/${EMISfile} - setenv GR_EMIS_LAB_002 GR_RES_FIRES - setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - #> In-line point emissions configuration - setenv N_EMIS_PT 8 #> Number of elevated source groups - - set STKCASEG = 12US1_2016ff_16j # Stack Group Version Label - set STKCASEE = 12US1_cmaq_cb6_2016ff_16j # Stack Emission Version Label - - # Time-Independent Stack Parameters for Inline Point Sources - setenv STK_GRPS_001 $IN_PTpath/stack_groups/stack_groups_ptnonipm_${STKCASEG}.nc - setenv STK_GRPS_002 $IN_PTpath/stack_groups/stack_groups_ptegu_${STKCASEG}.nc - setenv STK_GRPS_003 $IN_PTpath/stack_groups/stack_groups_othpt_${STKCASEG}.nc - setenv STK_GRPS_004 $IN_PTpath/stack_groups/stack_groups_ptagfire_${YYYYMMDD}_${STKCASEG}.nc - setenv STK_GRPS_005 $IN_PTpath/stack_groups/stack_groups_ptfire_${YYYYMMDD}_${STKCASEG}.nc - setenv STK_GRPS_006 $IN_PTpath/stack_groups/stack_groups_ptfire_othna_${YYYYMMDD}_${STKCASEG}.nc - setenv STK_GRPS_007 $IN_PTpath/stack_groups/stack_groups_pt_oilgas_${STKCASEG}.nc - setenv STK_GRPS_008 $IN_PTpath/stack_groups/stack_groups_cmv_c3_${STKCASEG}.nc - - # Emission Rates for Inline Point Sources - setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${YYYYMMDD}_${STKCASEE}.nc - setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.nc - setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${YYYYMMDD}_${STKCASEE}.nc - setenv STK_EMIS_004 $IN_PTpath/ptagfire/inln_mole_ptagfire_${YYYYMMDD}_${STKCASEE}.nc - setenv STK_EMIS_005 $IN_PTpath/ptfire/inln_mole_ptfire_${YYYYMMDD}_${STKCASEE}.nc - setenv STK_EMIS_006 $IN_PTpath/ptfire_othna/inln_mole_ptfire_othna_${YYYYMMDD}_${STKCASEE}.nc - setenv STK_EMIS_007 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.nc - setenv STK_EMIS_008 $IN_PTpath/cmv_c3/inln_mole_cmv_c3_${YYYYMMDD}_${STKCASEE}.nc - - # Label Each Emissions Stream - setenv STK_EMIS_LAB_001 PT_NONEGU - setenv STK_EMIS_LAB_002 PT_EGU - setenv STK_EMIS_LAB_003 PT_OTHER - setenv STK_EMIS_LAB_004 PT_AGFIRES - setenv STK_EMIS_LAB_005 PT_FIRES - setenv STK_EMIS_LAB_006 PT_OTHFIRES - setenv STK_EMIS_LAB_007 PT_OILGAS - setenv STK_EMIS_LAB_008 PT_CMV - - # Allow CMAQ to Use Point Source files with dates that do not - # match the internal model date - # To change default behaviour please see Users Guide for EMIS_SYM_DATE - setenv STK_EM_SYM_DATE_001 T - setenv STK_EM_SYM_DATE_002 T - setenv STK_EM_SYM_DATE_003 T - setenv STK_EM_SYM_DATE_004 T - setenv STK_EM_SYM_DATE_005 T - setenv STK_EM_SYM_DATE_006 T - setenv STK_EM_SYM_DATE_007 T - setenv STK_EM_SYM_DATE_008 T - - #> Lightning NOx configuration - if ( $CTM_LTNG_NO == 'Y' ) then - setenv LTNGNO "InLine" #> set LTNGNO to "Inline" to activate in-line calculation - - #> In-line lightning NOx options - setenv USE_NLDN Y #> use hourly NLDN strike file [ default: Y ] - if ( $USE_NLDN == Y ) then - setenv NLDN_STRIKES ${IN_LTpath}/NLDN.12US1.${YYYYMMDD}_bench.nc - endif - setenv LTNGPARMS_FILE ${IN_LTpath}/LTNG_AllParms_12US1_bench.nc #> lightning parameter file - endif - - #> In-line biogenic emissions configuration - if ( $CTM_BIOGEMIS_BE == 'Y' ) then - set IN_BEISpath = ${INPDIR}/land - setenv GSPRO $BLD/gspro_biogenics.txt - setenv BEIS_NORM_EMIS $IN_BEISpath/b3grd_bench.nc - setenv BEIS_SOILINP $OUTDIR/CCTM_BSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if NEW_START = TRUE - endif - if ( $CTM_BIOGEMIS_MG == 'Y' ) then - setenv MEGAN_SOILINP $OUTDIR/CCTM_MSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if INITIAL_RUN = Y - #> ; ignore if IGNORE_SOILINP = Y - setenv MEGAN_CTS /work/MOD3DATA/2016_12SE1/land/megan3.2/CT3_SEBENCH.ncf - setenv MEGAN_EFS /work/MOD3DATA/2016_12SE1/land/megan3.2/EFMAPS_SEBENCH.ncf - setenv MEGAN_LDF /work/MOD3DATA/2016_12SE1/land/megan3.2/LDF_SEBENCH.ncf - if ($BDSNP_MEGAN == 'Y') then - setenv BDSNPINP $OUTDIR/CCTM_BDSNPOUT_${RUNID}_${YESTERDAY}.nc - setenv BDSNP_FFILE /work/MOD3DATA/2016_12SE1/land/megan3.2/FERT_SEBENCH.ncf - setenv BDSNP_NFILE /work/MOD3DATA/2016_12SE1/land/megan3.2/NDEP_SEBENCH.ncf - setenv BDSNP_LFILE /work/MOD3DATA/2016_12SE1/land/megan3.2/LANDTYPE_SEBENCH.ncf - setenv BDSNP_AFILE /work/MOD3DATA/2016_12SE1/land/megan3.2/ARID_SEBENCH.ncf - setenv BDSNP_NAFILE /work/MOD3DATA/2016_12SE1/land/megan3.2/NONARID_SEBENCH.ncf - endif - endif - - #> In-line sea spray emissions configuration - setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_SE53BENCH.nc #> horizontal grid-dependent ocean file - - #> Bidirectional ammonia configuration - if ( $CTM_ABFLUX == 'Y' ) then - setenv E2C_SOIL ${EPICpath}/epic_festc1.4_20180516/2016_US1_soil_bench.nc - setenv E2C_CHEM ${EPICpath}/epic_festc1.4_20180516/2016_US1_time${YYYYMMDD}_bench.nc - setenv E2C_CHEM_YEST ${EPICpath}/epic_festc1.4_20180516/2016_US1_time${YESTERDAY}_bench.nc - setenv E2C_LU ${EPICpath}/beld4_12kmCONUS_2011nlcd_bench.nc - endif - -#> Inline Process Analysis - setenv CTM_PROCAN N #> use process analysis [ default: N] - if ( $?CTM_PROCAN ) then # $CTM_PROCAN is defined - if ( $CTM_PROCAN == 'Y' || $CTM_PROCAN == 'T' ) then -#> process analysis global column, row and layer ranges -# setenv PA_BCOL_ECOL "10 90" # default: all columns -# setenv PA_BROW_EROW "10 80" # default: all rows -# setenv PA_BLEV_ELEV "1 4" # default: all levels - setenv PACM_INFILE ${NMLpath}/pa_${MECH}.ctl - setenv PACM_REPORT $OUTDIR/"PA_REPORT".${YYYYMMDD} - endif - endif - -#> Integrated Source Apportionment Method (ISAM) Options - setenv CTM_ISAM N - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - setenv SA_IOLIST ${WORKDIR}/isam_control.2016_12SE1.txt - setenv ISAM_BLEV_ELEV " 1 1" - setenv AISAM_BLEV_ELEV " 1 1" - - #> Set Up ISAM Initial Condition Flags - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ISAM_NEW_START Y - setenv ISAM_PREVDAY - else - setenv ISAM_NEW_START N - setenv ISAM_PREVDAY "$OUTDIR/CCTM_SA_CGRID_${RUNID}_${YESTERDAY}.nc" - endif - - #> Set Up ISAM Output Filenames - setenv SA_ACONC_1 "$OUTDIR/CCTM_SA_ACONC_${CTM_APPL}.nc -v" - setenv SA_CONC_1 "$OUTDIR/CCTM_SA_CONC_${CTM_APPL}.nc -v" - setenv SA_DD_1 "$OUTDIR/CCTM_SA_DRYDEP_${CTM_APPL}.nc -v" - setenv SA_WD_1 "$OUTDIR/CCTM_SA_WETDEP_${CTM_APPL}.nc -v" - setenv SA_CGRID_1 "$OUTDIR/CCTM_SA_CGRID_${CTM_APPL}.nc -v" - - #> Set optional ISAM regions files - #setenv ISAM_REGIONS $INPDIR/GRIDMASK_STATES_12SE1.nc - - #> Options used to favor tracked species in reaction for Ozone-NOx chemistry - setenv ISAM_O3_WEIGHTS 5 # weights for tracked species Default is 5 - # OPTIONS - # 1 does not weight any species - # 2 weights NOx and subset of NOz species - # 3 uses with from option 2 plus weight OVOC species, organic radicals and operators - # 4 weight OVOC species, organic radicals and operators - # 5 toggles between two weighting set based on VOC and NOx limited ozone production - # Below options only used if ISAM_O3_WEIGHTS set to 5 - setenv ISAM_NOX_CASE 2 # weights for tracked species when ozone production is NOx limited. Default is 2 - setenv ISAM_VOC_CASE 4 # weights for tracked species when ozone production is VOC limited. Default is 4 - setenv VOC_NOX_TRANS 0.35 # value of Prod H2O2 over Prod HNO3 less than where - # ISAM_VOC_CASE weights are used. Otherwise, ISAM_NOX_CASE - # weights are used. Default is 0.35 - - endif - endif - - -#> Sulfur Tracking Model (STM) - setenv STM_SO4TRACK N #> sulfur tracking [ default: N ] - if ( $?STM_SO4TRACK ) then - if ( $STM_SO4TRACK == 'Y' || $STM_SO4TRACK == 'T' ) then - - #> option to normalize sulfate tracers [ default: Y ] - setenv STM_ADJSO4 Y - - endif - endif - -#> Decoupled Direct Method in 3D (DDM-3D) Options - setenv CTM_DDM3D N # Sets up requisite script settings for DDM-3D (default is N/F) - # Additionally requires for CCTM to be compiled for DDM-3D simulations - - set NPMAX = 1 # Number of sensitivity parameters defined in SEN_INPUT - setenv SEN_INPUT ${WORKDIR}/sensinput.2016_12SE1.dat - - setenv DDM3D_HIGH N # allow higher-order sensitivity parameters in SEN_INPUT [ T | Y | F | N ] (default is N/F) - - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv DDM3D_RST N # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = # sensitivity fields are initialized to 0.0 on the first hour of the first day - set S_ICfile = - else - setenv DDM3D_RST Y # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = $OUTDIR - set S_ICfile = CCTM_SENGRID_${RUNID}_${YESTERDAY}.nc - endif - - setenv CTM_NPMAX $NPMAX - setenv CTM_SENS_1 "$OUTDIR/CCTM_SENGRID_${CTM_APPL}.nc -v" - setenv A_SENS_1 "$OUTDIR/CCTM_ASENS_${CTM_APPL}.nc -v" - setenv CTM_SWETDEP_1 "$OUTDIR/CCTM_SENWDEP_${CTM_APPL}.nc -v" - setenv CTM_SDRYDEP_1 "$OUTDIR/CCTM_SENDDEP_${CTM_APPL}.nc -v" - setenv INIT_SENS_1 $S_ICpath/$S_ICfile - - -# ===================================================================== -#> Output Files -# ===================================================================== - - #> set output file names - setenv S_CGRID "$OUTDIR/CCTM_CGRID_${CTM_APPL}.nc" #> 3D Inst. Concentrations - setenv CTM_CONC_1 "$OUTDIR/CCTM_CONC_${CTM_APPL}.nc -v" #> On-Hour Concentrations - setenv A_CONC_1 "$OUTDIR/CCTM_ACONC_${CTM_APPL}.nc -v" #> Hourly Avg. Concentrations - setenv MEDIA_CONC "$OUTDIR/CCTM_MEDIA_CONC_${CTM_APPL}.nc -v" #> NH3 Conc. in Media - setenv CTM_DRY_DEP_1 "$OUTDIR/CCTM_DRYDEP_${CTM_APPL}.nc -v" #> Hourly Dry Deposition - setenv CTM_DEPV_DIAG "$OUTDIR/CCTM_DEPV_${CTM_APPL}.nc -v" #> Dry Deposition Velocities - setenv B3GTS_S "$OUTDIR/CCTM_B3GTS_S_${CTM_APPL}.nc -v" #> Biogenic Emissions - setenv BEIS_SOILOUT "$OUTDIR/CCTM_BSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv MEGAN_SOILOUT "$OUTDIR/CCTM_MSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv BDSNPOUT "$OUTDIR/CCTM_BDSNPOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv CTM_WET_DEP_1 "$OUTDIR/CCTM_WETDEP1_${CTM_APPL}.nc -v" #> Wet Dep From All Clouds - setenv CTM_WET_DEP_2 "$OUTDIR/CCTM_WETDEP2_${CTM_APPL}.nc -v" #> Wet Dep From SubGrid Clouds - setenv CTM_ELMO_1 "$OUTDIR/CCTM_ELMO_${CTM_APPL}.nc -v" #> On-Hour Particle Diagnostics - setenv CTM_AELMO_1 "$OUTDIR/CCTM_AELMO_${CTM_APPL}.nc -v" #> Hourly Avg. Particle Diagnostics - setenv CTM_RJ_1 "$OUTDIR/CCTM_PHOTDIAG1_${CTM_APPL}.nc -v" #> 2D Surface Summary from Inline Photolysis - setenv CTM_RJ_2 "$OUTDIR/CCTM_PHOTDIAG2_${CTM_APPL}.nc -v" #> 3D Photolysis Rates - setenv CTM_RJ_3 "$OUTDIR/CCTM_PHOTDIAG3_${CTM_APPL}.nc -v" #> 3D Optical and Radiative Results from Photolysis - setenv CTM_SSEMIS_1 "$OUTDIR/CCTM_SSEMIS_${CTM_APPL}.nc -v" #> Sea Spray Emissions - setenv CTM_DUST_EMIS_1 "$OUTDIR/CCTM_DUSTEMIS_${CTM_APPL}.nc -v" #> Dust Emissions - setenv CTM_BUDGET "$OUTDIR/CCTM_BUDGET_${CTM_APPL}.txt -v" #> Budget [Default Off] - setenv CTM_IPR_1 "$OUTDIR/CCTM_PA_1_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_2 "$OUTDIR/CCTM_PA_2_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_3 "$OUTDIR/CCTM_PA_3_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IRR_1 "$OUTDIR/CCTM_IRR_1_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_2 "$OUTDIR/CCTM_IRR_2_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_3 "$OUTDIR/CCTM_IRR_3_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_DRY_DEP_MOS "$OUTDIR/CCTM_DDMOS_${CTM_APPL}.nc -v" #> Dry Dep - setenv CTM_DEPV_MOS "$OUTDIR/CCTM_DEPVMOS_${CTM_APPL}.nc -v" #> Dry Dep Velocity - setenv CTM_VDIFF_DIAG "$OUTDIR/CCTM_VDIFF_DIAG_${CTM_APPL}.nc -v" #> Vertical Dispersion Diagnostic - setenv CTM_VSED_DIAG "$OUTDIR/CCTM_VSED_DIAG_${CTM_APPL}.nc -v" #> Particle Grav. Settling Velocity - setenv CTM_LTNGDIAG_1 "$OUTDIR/CCTM_LTNGHRLY_${CTM_APPL}.nc -v" #> Hourly Avg Lightning NO - setenv CTM_LTNGDIAG_2 "$OUTDIR/CCTM_LTNGCOL_${CTM_APPL}.nc -v" #> Column Total Lightning NO - setenv CTM_VEXT_1 "$OUTDIR/CCTM_VEXT_${CTM_APPL}.nc -v" #> On-Hour 3D Concs at select sites - - #> set floor file (neg concs) - setenv FLOOR_FILE ${OUTDIR}/FLOOR_${CTM_APPL}.txt - - #> look for existing log files and output files - ( ls CTM_LOG_???.${CTM_APPL} > buff.txt ) >& /dev/null - ( ls ${LOGDIR}/CTM_LOG_???.${CTM_APPL} >> buff.txt ) >& /dev/null - set log_test = `cat buff.txt`; rm -f buff.txt - - set OUT_FILES = (${FLOOR_FILE} ${S_CGRID} ${CTM_CONC_1} ${A_CONC_1} ${MEDIA_CONC} \ - ${CTM_DRY_DEP_1} $CTM_DEPV_DIAG $B3GTS_S $MEGAN_SOILOUT $BEIS_SOILOUT $BDSNPOUT \ - $CTM_WET_DEP_1 $CTM_WET_DEP_2 $CTM_ELMO_1 $CTM_AELMO_1 \ - $CTM_RJ_1 $CTM_RJ_2 $CTM_RJ_3 $CTM_SSEMIS_1 $CTM_DUST_EMIS_1 $CTM_IPR_1 $CTM_IPR_2 \ - $CTM_IPR_3 $CTM_BUDGET $CTM_IRR_1 $CTM_IRR_2 $CTM_IRR_3 $CTM_DRY_DEP_MOS \ - $CTM_DEPV_MOS $CTM_VDIFF_DIAG $CTM_VSED_DIAG $CTM_LTNGDIAG_1 $CTM_LTNGDIAG_2 $CTM_VEXT_1 ) - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${SA_ACONC_1} ${SA_CONC_1} ${SA_DD_1} ${SA_WD_1} \ - ${SA_CGRID_1} ) - endif - endif - if ( $?CTM_DDM3D ) then - if ( $CTM_DDM3D == 'Y' || $CTM_DDM3D == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${CTM_SENS_1} ${A_SENS_1} ${CTM_SWETDEP_1} ${CTM_SDRYDEP_1} ) - endif - endif - set OUT_FILES = `echo $OUT_FILES | sed "s; -v;;g" | sed "s;MPI:;;g" ` - ( ls $OUT_FILES > buff.txt ) >& /dev/null - set out_test = `cat buff.txt`; rm -f buff.txt - - #> delete previous output if requested - if ( $CLOBBER_DATA == true || $CLOBBER_DATA == TRUE ) then - echo - echo "Existing Logs and Output Files for Day ${TODAYG} Will Be Deleted" - - #> remove previous log files - foreach file ( ${log_test} ) - #echo "Deleting log file: $file" - /bin/rm -f $file - end - - #> remove previous output files - foreach file ( ${out_test} ) - #echo "Deleting output file: $file" - /bin/rm -f $file - end - /bin/rm -f ${OUTDIR}/CCTM_DESID*${CTM_APPL}.nc - - else - #> error if previous log files exist - if ( "$log_test" != "" ) then - echo "*** Logs exist - run ABORTED ***" - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - - #> error if previous output files exist - if ( "$out_test" != "" ) then - echo "*** Output Files Exist - run will be ABORTED ***" - foreach file ( $out_test ) - echo " cannot delete $file" - end - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - endif - - #> for the run control ... - setenv CTM_STDATE $YYYYJJJ - setenv CTM_STTIME $STTIME - setenv CTM_RUNLEN $NSTEPS - setenv CTM_TSTEP $TSTEP - setenv INIT_CONC_1 $ICpath/$ICFILE - setenv BNDY_CONC_1 $BCpath/$BCFILE - setenv OMI $OMIpath/$OMIfile - setenv MIE_TABLE $OUTDIR/mie_table_coeffs_${compilerString}.txt - setenv OPTICS_DATA $OMIpath/$OPTfile - #setenv XJ_DATA $JVALpath/$JVALfile - - #> species defn & photolysis - setenv gc_matrix_nml ${NMLpath}/GC_$MECH.nml - setenv ae_matrix_nml ${NMLpath}/AE_$MECH.nml - setenv nr_matrix_nml ${NMLpath}/NR_$MECH.nml - setenv tr_matrix_nml ${NMLpath}/Species_Table_TR_0.nml - - #> check for photolysis input data - setenv CSQY_DATA ${NMLpath}/CSQY_DATA_$MECH - - if (! (-e $CSQY_DATA ) ) then - echo " $CSQY_DATA not found " - exit 1 - endif - if (! (-e $OPTICS_DATA ) ) then - echo " $OPTICS_DATA not found " - exit 1 - endif - -# =================================================================== -#> Execution Portion -# =================================================================== - - #> Print attributes of the executable - if ( $CTM_DIAG_LVL != 0 ) then - ls -l $BLD/$EXEC - size $BLD/$EXEC - unlimit - limit - endif - - #> Print Startup Dialogue Information to Standard Out - echo - echo "CMAQ Processing of Day $YYYYMMDD Began at `date`" - echo - - #> Executable call for single PE, uncomment to invoke - #( /usr/bin/time -p $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Executable call for multi PE, configure for your system - # set MPI = /usr/local/intel/impi/3.2.2.006/bin64 - # set MPIRUN = $MPI/mpirun - ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Harvest Timing Output so that it may be reported below - set rtarray = "${rtarray} `tail -3 buff_${EXECUTION_ID}.txt | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | head -1` " - rm -rf buff_${EXECUTION_ID}.txt - - #> Abort script if abnormal termination - if ( ! -e $OUTDIR/CCTM_CGRID_${CTM_APPL}.nc ) then - echo "" - echo "**************************************************************" - echo "** Runscript Detected an Error: CGRID file was not written. **" - echo "** This indicates that CMAQ was interrupted or an issue **" - echo "** exists with writing output. The runscript will now **" - echo "** abort rather than proceeding to subsequent days. **" - echo "**************************************************************" - break - endif - - #> Print Concluding Text - echo - echo "CMAQ Processing of Day $YYYYMMDD Finished at `date`" - echo - echo "\\\\\=====\\\\\=====\\\\\=====\\\\\=====/////=====/////=====/////=====/////" - echo - -# =================================================================== -#> Finalize Run for This Day and Loop to Next Day -# =================================================================== - - #> Save Log Files and Move on to Next Simulation Day - mv CTM_LOG_???.${CTM_APPL} $LOGDIR - if ( $CTM_DIAG_LVL != 0 ) then - mv CTM_DIAG_???.${CTM_APPL} $LOGDIR - endif - - #> The next simulation day will, by definition, be a restart - setenv NEW_START false - - #> Increment both Gregorian and Julian Days - set TODAYG = `date -ud "${TODAYG}+1days" +%Y-%m-%d` #> Add a day for tomorrow - set TODAYJ = `date -ud "${TODAYG}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ - -end #Loop to the next Simulation Day - -# =================================================================== -#> Generate Timing Report -# =================================================================== -set RTMTOT = 0 -foreach it ( `seq ${NDAYS}` ) - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - set RTMTOT = `echo "${RTMTOT} + ${rt}" | bc -l` -end - -set RTMAVG = `echo "scale=2; ${RTMTOT} / ${NDAYS}" | bc -l` -set RTMTOT = `echo "scale=2; ${RTMTOT} / 1" | bc -l` - -echo -echo "==================================" -echo " ***** CMAQ TIMING REPORT *****" -echo "==================================" -echo "Start Day: ${START_DATE}" -echo "End Day: ${END_DATE}" -echo "Number of Simulation Days: ${NDAYS}" -echo "Domain Name: ${GRID_NAME}" -echo "Number of Grid Cells: ${NCELLS} (ROW x COL x LAY)" -echo "Number of Layers: ${NZ}" -echo "Number of Processes: ${NPROCS}" -echo " All times are in seconds." -echo -echo "Num Day Wall Time" -set d = 0 -set day = ${START_DATE} -foreach it ( `seq ${NDAYS}` ) - # Set the right day and format it - set d = `echo "${d} + 1" | bc -l` - set n = `printf "%02d" ${d}` - - # Choose the correct time variables - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - - # Write out row of timing data - echo "${n} ${day} ${rt}" - - # Increment day for next loop - set day = `date -ud "${day}+1days" +%Y-%m-%d` -end -echo " Total Time = ${RTMTOT}" -echo " Avg. Time = ${RTMAVG}" - -exit From f82f06860475a5947be3fe9425d1b50b0e3ca0cb Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:41:03 -0400 Subject: [PATCH 361/375] Delete CCTM/scripts/run_cctm_2016_12US1.csh --- CCTM/scripts/run_cctm_2016_12US1.csh | 834 --------------------------- 1 file changed, 834 deletions(-) delete mode 100755 CCTM/scripts/run_cctm_2016_12US1.csh diff --git a/CCTM/scripts/run_cctm_2016_12US1.csh b/CCTM/scripts/run_cctm_2016_12US1.csh deleted file mode 100755 index e46a1e439..000000000 --- a/CCTM/scripts/run_cctm_2016_12US1.csh +++ /dev/null @@ -1,834 +0,0 @@ -#!/bin/csh -f - -# ===================== CCTMv5.5.X Run Script ======================= -# Usage: run_cctm_2016_12US1.csh >&! run_cctm_2016_12US1.log & -# Slurm Usage: sbatch run_cctm_2016_12US1.csh -# -# To report problems or request help with this script/program: -# http://www.epa.gov/cmaq (EPA CMAQ Website) -# http://www.cmascenter.org (CMAS Website) -# =================================================================== - -# =================================================================== -#> Runtime Environment Options -# =================================================================== - -echo 'Start Model Run At ' `date` - -#> Toggle Diagnostic Mode which will print verbose information to -#> standard output - setenv CTM_DIAG_LVL 0 - -#> Choose compiler and set up CMAQ environment with correct -#> libraries using config.cmaq. Options: intel | gcc | pgi - if ( ! $?compiler ) then - setenv compiler intel - endif - if ( ! $?compilerVrsn ) then - setenv compilerVrsn Empty - endif - -#> Source the config.cmaq file to set the build environment - cd ../.. - source ./config_cmaq.csh $compiler $compilerVrsn - cd CCTM/scripts - -#> Set General Parameters for Configuring the Simulation - set VRSN = v55 #> Code Version - set PROC = mpi #> serial or mpi - set MECH = cb6r5_ae7_aq #> Mechanism ID - set EMIS = 2016fh #> Emission Inventory Details - set APPL = 2016_CONUS #> Application Name (e.g. Gridname) - -#> Define RUNID as any combination of parameters above or others. By default, -#> this information will be collected into this one string, $RUNID, for easy -#> referencing in output binaries and log files as well as in other scripts. - setenv RUNID ${VRSN}_${compilerString}_${APPL} - -#> Set the build directory (this is where the CMAQ executable -#> is located by default). - set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString} - set EXEC = CCTM_${VRSN}.exe - -#> Output Each line of Runscript to Log File - if ( $CTM_DIAG_LVL != 0 ) set echo - -#> Set Working, Input, and Output Directories - setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. - setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory - setenv INPDIR /work/MOD3DATA/2016_12US1 #Input Directory - setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location - setenv NMLpath ${BLD} #> Location of Namelists. Common places are: - #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} - - echo "" - echo "Working Directory is $WORKDIR" - echo "Build Directory is $BLD" - echo "Output Directory is $OUTDIR" - echo "Log Directory is $LOGDIR" - echo "Executable Name is $EXEC" - -# ===================================================================== -#> CCTM Configuration Options -# ===================================================================== - -#> Set Start and End Days for looping - setenv NEW_START TRUE #> Set to FALSE for model restart - set START_DATE = "2015-12-28" #> beginning date (January 1, 2016) - set END_DATE = "2015-12-28" #> ending date (December 31, 2016) - -#> Set Timestepping Parameters -set STTIME = 000000 #> beginning GMT time (HHMMSS) -set NSTEPS = 240000 #> time duration (HHMMSS) for this run -set TSTEP = 010000 #> output time step interval (HHMMSS) - -#> Horizontal domain decomposition -if ( $PROC == serial ) then - setenv NPCOL_NPROW "1 1"; set NPROCS = 1 # single processor setting -else - @ NPCOL = 16; @ NPROW = 8 - @ NPROCS = $NPCOL * $NPROW - setenv NPCOL_NPROW "$NPCOL $NPROW"; -endif - -#> Define Execution ID: e.g. [CMAQ-Version-Info]_[User]_[Date]_[Time] -if ( ! -e ${BLD}/CCTM_${VRSN}.cfg ) then - set SHAID = "" -else - set SHAID = `grep "sha_ID" ${BLD}/CCTM_${VRSN}.cfg | cut -c 13-22` - if ( $SHAID == not_a_repo ) then - set SHAID = "" - else - set SHAID = "_sha="$SHAID - endif -endif -setenv EXECUTION_ID "CMAQ_CCTM${VRSN}${SHAID}_`id -u -n`_`date -u +%Y%m%d_%H%M%S_%N`" #> Inform IO/API of the Execution ID -echo "" -echo "---CMAQ EXECUTION ID: $EXECUTION_ID ---" - -#> Keep or Delete Existing Output Files -set CLOBBER_DATA = FALSE - -#> Logfile Options -#> Master Log File Name; uncomment to write standard output to a log, otherwise write to screen -#setenv LOGFILE $CMAQ_HOME/$RUNID.log -if (! -e $LOGDIR ) then - mkdir -p $LOGDIR -endif -setenv PRINT_PROC_TIME Y #> Print timing for all science subprocesses to Logfile - #> [ default: TRUE or Y ] -setenv STDOUT T #> Override I/O-API trying to write information to both the processor - #> logs and STDOUT [ options: T | F ] - -setenv GRID_NAME 12US1 #> check GRIDDESC file for GRID_NAME options -setenv GRIDDESC $INPDIR/GRIDDESC #> grid description file - -#> Retrieve the number of columns, rows, and layers in this simulation -set NZ = 35 -set NX = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f6` -set NY = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f7` -set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` - -#> Output Species and Layer Options - #> CONC file species; comment or set to "ALL" to write all species to CONC - setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 FORM ISOP NH3 ANH4I ANH4J ASO4I ASO4J" - setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC - - #> ACONC file species; comment or set to "ALL" to write all species to ACONC - #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" - setenv AVG_CONC_SPCS "ALL" - setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC - setenv AVG_FILE_ENDTIME N #> override default beginning ACONC timestamp [ default: N ] - -#> Synchronization Time Step and Tolerance Options -setenv CTM_MAXSYNC 300 #> max sync time step (sec) [ default: 720 ] -setenv CTM_MINSYNC 60 #> min sync time step (sec) [ default: 60 ] -setenv SIGMA_SYNC_TOP 0.7 #> top sigma level thru which sync step determined [ default: 0.7 ] -#setenv ADV_HDIV_LIM 0.95 #> maximum horiz. div. limit for adv step adjust [ default: 0.9 ] -setenv CTM_ADV_CFL 0.95 #> max CFL [ default: 0.75] -#setenv RB_ATOL 1.0E-09 #> global ROS3 solver absolute tolerance [ default: 1.0E-07 ] - -#> Science Options -setenv CTM_OCEAN_CHEM Y #> Flag for ocean halogen chemistry, sea spray aerosol emissions, - #> and enhanced ozone deposition over ocean waters [ default: Y ] -setenv CTM_WB_DUST N #> use inline windblown dust emissions (only for use with PX) [ default: N ] -setenv CTM_LTNG_NO Y #> turn on lightning NOx [ default: N ] -setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], - #> otherwise revert to Kz0UT -setenv PX_VERSION Y #> WRF PX LSM -setenv CLM_VERSION N #> WRF CLM LSM -setenv NOAH_VERSION N #> WRF NOAH LSM -setenv CTM_ABFLUX Y #> ammonia bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_BIDI_FERT_NH3 T #> subtract fertilizer NH3 from emissions because it will be handled - #> by the BiDi calculation [ default: Y ] -setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ] - #> please see user guide (6.10.4 Nitrous Acid (HONO)) - #> for dependency on percent urban fraction dataset -setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ] -setenv CTM_PVO3 N #> consider potential vorticity module for O3 transport from the stratosphere - #> [default: N] - - -setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions with BEIS [ default: N ] -setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ] -setenv BDSNP_MEGAN N #> turns on BDSNP soil NO emissions [ default: N ] - -setenv AEROSOL_OPTICS 3 #> sets method for determining aerosol optics affecting photolysis - #> frequencies ( 3 is the default value ) - #> VALUES 1 thru 3 determined Uniformly Volume Mixed spherical - #> (1-Tabular Mie; 2-Mie Calculation; 3-Case Approx to Mie Theory) - #> VALUES 4 thru 6 attempts to use core-shell mixing model when the - #> aerosol mode has signficant black carbon core otherwise use Volume Mixed - #> model where optics determined by - #> (4-Tabular Mie; 5-Mie Calculation; 6-Case Approx to Mie Theory) - -setenv IC_AERO_M2WET F #> Specify whether or not initial condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv BC_AERO_M2WET F #> Specify whether or not boundary condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv IC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from initial - #> conditions [ default: T = use aerosol surface area ] -setenv BC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from boundary - #> conditions [ default: T = use aerosol surface area ] - -#> Surface Tiled Aerosol and Gaseous Exchange Options -#> Only active if DepMod=stage at compile time -setenv CTM_MOSAIC N #> Output landuse specific deposition velocities [ default: N ] -setenv CTM_STAGE_P22 N #> Pleim et al. 2022 Aerosol deposition model [default: N] -setenv CTM_STAGE_E20 Y #> Emerson et al. 2020 Aerosol deposition model [default: Y] -setenv CTM_STAGE_S22 N #> Shu et al. 2022 (CMAQ v5.3) Aerosol deposition model [default: N] - - -#> Vertical Extraction Options -setenv VERTEXT N -setenv VERTEXT_COORD_PATH ${WORKDIR}/lonlat.csv - -#> I/O Controls -setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ] -setenv FL_ERR_STOP N #> stop on inconsistent input files -setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ] -setenv IOAPI_OFFSET_64 YES #> support large timestep records (>2GB/timestep record) [ options: YES | NO ] -setenv IOAPI_CHECK_HEADERS N #> check file headers [ options: Y | N ] -setenv CTM_EMISCHK N #> Abort CMAQ if missing surrogates from emissions Input files - -#> Diagnostic Output Flags -setenv CTM_CKSUM Y #> checksum report [ default: Y ] -setenv CLD_DIAG N #> cloud diagnostic file [ default: N ] - -setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ] -setenv NLAYS_PHOTDIAG "1" #> Number of layers for PHOTDIAG2 and PHOTDIAG3 from - #> Layer 1 to NLAYS_PHOTDIAG [ default: all layers ] -#setenv NWAVE_PHOTDIAG "294 303 310 316 333 381 607" #> Wavelengths written for variables - #> in PHOTDIAG2 and PHOTDIAG3 - #> [ default: all wavelengths ] - -setenv CTM_SSEMDIAG N #> sea-spray emissions diagnostic file [ default: N ] -setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; - #> Ignore if CTM_WB_DUST = N -setenv CTM_DEPV_FILE N #> deposition velocities diagnostic file [ default: N ] -setenv VDIFF_DIAG_FILE N #> vdiff & possibly aero grav. sedimentation diagnostic file [ default: N ] -setenv LTNGDIAG N #> lightning diagnostic file [ default: N ] -setenv B3GTS_DIAG N #> BEIS mass emissions diagnostic file [ default: N ] -setenv CTM_WVEL Y #> save derived vertical velocity component to conc - #> file [ default: Y ] - -# ===================================================================== -#> Input Directories and Filenames -# ===================================================================== - -set ICpath = $INPDIR/icbc #> initial conditions input directory -set BCpath = $INPDIR/icbc #> boundary conditions input directory -set EMISpath = $INPDIR/emis/cb6r3_ae6_20191121_compressed/cmaq_ready/gridded_nobeis_norwc #> surface emissions input directory -set EMISpath2 = $INPDIR/emis/cb6r3_ae6_20191121_compressed/cmaq_ready/gridded_rwc #> surface residential wood combustion emissions directory -set IN_PTpath = $INPDIR/emis/cb6r3_ae6_20191121_compressed/cmaq_ready #> elevated emissions input directory (in-line point only) -set IN_LTpath = $INPDIR/met/lightning #> lightning NOx input directory -set METpath = $INPDIR/met/mcip_v50_wrf_v411_ltng_lufgood #> meteorology input directory -#set JVALpath = $INPDIR/jproc #> offline photolysis rate table directory -set OMIpath = $BLD #> ozone column data for the photolysis model -set EPICpath = $INPDIR/surface #> EPIC putput for bidirectional NH3 -set SZpath = $INPDIR/surface #> surf zone file for in-line seaspray emissions - -# ===================================================================== -#> Begin Loop Through Simulation Days -# ===================================================================== -set rtarray = "" - -set TODAYG = ${START_DATE} -set TODAYJ = `date -ud "${START_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set START_DAY = ${TODAYJ} -set STOP_DAY = `date -ud "${END_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set NDAYS = 0 - -while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ - - set NDAYS = `echo "${NDAYS} + 1" | bc -l` - - #> Retrieve Calendar day Information - set YYYYMMDD = `date -ud "${TODAYG}" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD - set YYYYMM = `date -ud "${TODAYG}" +%Y%m` #> Convert YYYY-MM-DD to YYYYMM - set YYYY = `date -ud "${TODAYG}" +%Y` #> Convert YYYY-MM-DD to YYYY - set YYMMDD = `date -ud "${TODAYG}" +%y%m%d` #> Convert YYYY-MM-DD to YYMMDD - set MM = `date -ud "${TODAYG}" +%m` #> Convert YYYY-MM-DD to MM - set YYYYJJJ = $TODAYJ - - #> Calculate Yesterday's Date - set YESTERDAY = `date -ud "${TODAYG}-1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYJJJ - -# ===================================================================== -#> Set Output String and Propagate Model Configuration Documentation -# ===================================================================== - echo "" - echo "Set up input and output files for Day ${TODAYG}." - - #> set output file name extensions - setenv CTM_APPL ${RUNID}_${YYYYMMDD} - - #> Copy Model Configuration To Output Folder - if ( ! -d "$OUTDIR" ) mkdir -p $OUTDIR - cp $BLD/CCTM_${VRSN}.cfg $OUTDIR/CCTM_${CTM_APPL}.cfg - -# ===================================================================== -#> Input Files (Some are Day-Dependent) -# ===================================================================== - - #> Initial conditions - if ($NEW_START == true || $NEW_START == TRUE ) then - # setenv ICFILE ICON_v53_12US1_regrid_20151222 - setenv ICFILE ICON_cb6r3_ae6_profile_12US1_timeind - setenv INIT_MEDC_1 notused - else - set ICpath = $OUTDIR - setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc - setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc - endif - - #> Boundary conditions, use STAGE files if CCTM uses the stage option for depv - #set BCFILE = bctr_12km_HCMAQ_V531_STAGE_cb6r3m_ae7_kmtbr_BCON_V53_WRF411_corrected_${YYYYMM}.ncf - set BCFILE = bctr_12km_HCMAQ_V53R_RUNA_M3DRY_cb6r3m_ae7_kmtbr_BCON_V53_WRF411_corrected_${YYYYMM}.ncf - - - #> Off-line photolysis rates - #set JVALfile = JTABLE_${YYYYJJJ} - - #> Ozone column data - set OMIfile = OMI_1979_to_2019.dat - - #> Optics file - set OPTfile = PHOT_OPTICS.dat - - #> MCIP meteorology files - setenv GRID_BDY_2D $METpath/GRIDBDY2D_$YYMMDD.nc - setenv GRID_CRO_2D $METpath/GRIDCRO2D_$YYMMDD.nc - setenv GRID_CRO_3D $METpath/GRIDCRO3D_$YYMMDD.nc - setenv GRID_DOT_2D $METpath/GRIDDOT2D_$YYMMDD.nc - setenv MET_CRO_2D $METpath/METCRO2D_$YYMMDD.nc - setenv MET_CRO_3D $METpath/METCRO3D_$YYMMDD.nc - setenv MET_DOT_3D $METpath/METDOT3D_$YYMMDD.nc - setenv MET_BDY_3D $METpath/METBDY3D_$YYMMDD.nc - setenv LUFRAC_CRO $METpath/LUFRAC_CRO_$YYMMDD.nc -# setenv LUFRAC_CRO $METpath/LUFRAC_CRO.$GRID_NAME.${NZ}L.$YYMMDD - - #> Control Files - #> - #> IMPORTANT NOTE - #> - #> The DESID control files defined below are an integral part of controlling the behavior of the model simulation. - #> Among other things, they control the mapping of species in the emission files to chemical species in the model and - #> several aspects related to the simulation of organic aerosols. - #> Please carefully review the DESID control files to ensure that they are configured to be consistent with the assumptions - #> made when creating the emission files defined below and the desired representation of organic aerosols. - #> For further information, please see: - #> + AERO7 Release Notes section on 'Required emission updates': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Release_Notes/aero7_overview.md - #> + CMAQ User's Guide section 6.9.3 on 'Emission Compatability': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.9.3_Emission_Compatability - #> + Emission Control (DESID) Documentation in the CMAQ User's Guide: - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md - #> - setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml - setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml - - #> The following namelist configures aggregated output (via the Explicit and Lumped - #> Air Quality Model Output (ELMO) Module), domain-wide budget output, and chemical - #> family output. - setenv MISC_CTRL_NML ${BLD}/CMAQ_Control_Misc.nml - - #> The following namelist controls the mapping of meteorological land use types and the NH3 and Hg emission - #> potentials - setenv STAGECTRL_NML ${BLD}/CMAQ_Control_STAGE.nml - - #> Spatial Masks For Emissions Scaling - setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12US1.nc #> horizontal grid-dependent ocean file - - #> Determine Representative Emission Days - set EMDATES = $INPDIR/emis/emis_dates/smk_merge_dates_${YYYYMM}.txt - set intable = `grep "^${YYYYMMDD}" $EMDATES` - set Date = `echo $intable[1] | cut -d, -f1` - set aveday_N = `echo $intable[2] | cut -d, -f1` - set aveday_Y = `echo $intable[3] | cut -d, -f1` - set mwdss_N = `echo $intable[4] | cut -d, -f1` - set mwdss_Y = `echo $intable[5] | cut -d, -f1` - set week_N = `echo $intable[6] | cut -d, -f1` - set week_Y = `echo $intable[7] | cut -d, -f1` - set all = `echo $intable[8] | cut -d, -f1` - - #> Gridded Emissions files - setenv N_EMIS_GR 2 - set EMISfile = emis_mole_all_${YYYYMMDD}_12US1_nobeis_norwc_2016fh_16j.nc4 - setenv GR_EMIS_001 ${EMISpath}/${EMISfile} - setenv GR_EMIS_LAB_001 GRIDDED_EMIS - setenv GR_EM_SYM_DATE_001 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - set EMISfile = emis_mole_rwc_${YYYYMMDD}_12US1_cmaq_cb6_2016fh_16j.nc4 - setenv GR_EMIS_002 ${EMISpath2}/${EMISfile} - setenv GR_EMIS_LAB_002 GR_RES_FIRES - setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - - #> In-Line Point Emissions Files - setenv N_EMIS_PT 9 #> Number of elevated source groups - - set STKCASEE = 12US1_cmaq_cb6_2016fh_16j # In-line Emission Rate File Suffix - set STKCASEG = 12US1_2016fh_16j # Stack parameter File Suffix - - setenv STK_GRPS_001 $IN_PTpath/ptnonipm/stack_groups_ptnonipm_${STKCASEG}.nc4 - setenv STK_GRPS_002 $IN_PTpath/ptegu/stack_groups_ptegu_${STKCASEG}.nc4 - setenv STK_GRPS_003 $IN_PTpath/othpt/stack_groups_othpt_${STKCASEG}.nc4 - setenv STK_GRPS_004 $IN_PTpath/ptagfire/stack_groups_ptagfire_${YYYYMMDD}_${STKCASEG}.nc4 - setenv STK_GRPS_005 $IN_PTpath/ptfire/stack_groups_ptfire_${YYYYMMDD}_${STKCASEG}.nc4 - setenv STK_GRPS_006 $IN_PTpath/ptfire_othna/stack_groups_ptfire_othna_${YYYYMMDD}_${STKCASEG}.nc4 - setenv STK_GRPS_007 $IN_PTpath/pt_oilgas/stack_groups_pt_oilgas_${STKCASEG}.nc4 - setenv STK_GRPS_008 $IN_PTpath/cmv_c3_12/stack_groups_cmv_c3_12_${STKCASEG}.nc4 - setenv STK_GRPS_009 $IN_PTpath/cmv_c1c2_12/stack_groups_cmv_c1c2_12_${STKCASEG}.nc4 - - setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${mwdss_Y}_${STKCASEE}.nc4 - setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.nc4 - setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${mwdss_N}_${STKCASEE}.nc4 - setenv STK_EMIS_004 $IN_PTpath/ptagfire/inln_mole_ptagfire_${YYYYMMDD}_${STKCASEE}.nc4 - setenv STK_EMIS_005 $IN_PTpath/ptfire/inln_mole_ptfire_${YYYYMMDD}_${STKCASEE}.nc4 - setenv STK_EMIS_006 $IN_PTpath/ptfire_othna/inln_mole_ptfire_othna_${YYYYMMDD}_${STKCASEE}.nc4 - setenv STK_EMIS_007 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${mwdss_Y}_${STKCASEE}.nc4 - setenv STK_EMIS_008 $IN_PTpath/cmv_c3_12/inln_mole_cmv_c3_12_${YYYYMMDD}_${STKCASEE}.nc4 - setenv STK_EMIS_009 $IN_PTpath/cmv_c1c2_12/inln_mole_cmv_c1c2_12_${YYYYMMDD}_${STKCASEE}.nc4 - - # Label Each Emissions Stream - setenv STK_EMIS_LAB_001 PT_NONEGU - setenv STK_EMIS_LAB_002 PT_EGU - setenv STK_EMIS_LAB_003 PT_OTHER - setenv STK_EMIS_LAB_004 PT_AGFIRES - setenv STK_EMIS_LAB_005 PT_FIRES - setenv STK_EMIS_LAB_006 PT_OTHFIRES - setenv STK_EMIS_LAB_007 PT_OILGAS - setenv STK_EMIS_LAB_008 PT_CMV_C3 - setenv STK_EMIS_LAB_009 PT_CMV_C1C2 - - # Allow CMAQ to Use Point Source files with dates that do not - # match the internal model date - # To change default behaviour please see Users Guide for EMIS_SYM_DATE - setenv STK_EM_SYM_DATE_001 T - setenv STK_EM_SYM_DATE_002 T - setenv STK_EM_SYM_DATE_003 T - setenv STK_EM_SYM_DATE_004 T - setenv STK_EM_SYM_DATE_005 T - setenv STK_EM_SYM_DATE_006 T - setenv STK_EM_SYM_DATE_007 T - setenv STK_EM_SYM_DATE_008 T - setenv STK_EM_SYM_DATE_009 T - - #> Lightning NOx configuration - if ( $CTM_LTNG_NO == 'Y' ) then - setenv LTNGNO "InLine" #> set LTNGNO to "Inline" to activate in-line calculation - - #> In-line lightning NOx options - setenv USE_NLDN Y #> use hourly NLDN strike file [ default: Y ] - if ( $USE_NLDN == Y ) then - setenv NLDN_STRIKES ${IN_LTpath}/NLDN.12US1.${YYYYMMDD}.ioapi - endif - setenv LTNGPARMS_FILE ${IN_LTpath}/LTNG_AllParms_12US1.ncf #> lightning parameter file; ignore if LTNGPARAM = N - endif - - - #> In-line biogenic emissions configuration - if ( $CTM_BIOGEMIS_MG == 'Y' ) then - setenv MEGAN_SOILINP $OUTDIR/CCTM_MSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if INITIAL_RUN = Y - #> ; ignore if IGNORE_SOILINP = Y - setenv MEGAN_CTS /work/MOD3DATA/2016_12US1/surface/megan3.2/CT3_CONUS.ncf - setenv MEGAN_EFS /work/MOD3DATA/2016_12US1/surface/megan3.2/EFMAPS_CONUS.ncf - setenv MEGAN_LDF /work/MOD3DATA/2016_12US1/surface/megan3.2/LDF_CONUS.ncf - if ($BDSNP_MEGAN == 'Y') then - setenv BDSNPINP $OUTDIR/CCTM_BDSNPOUT_${RUNID}_${YESTERDAY}.nc - setenv BDSNP_FFILE /work/MOD3DATA/2016_12US1/surface/megan3.2/FERT_CONUS.ncf - setenv BDSNP_NFILE /work/MOD3DATA/2016_12US1/surface/megan3.2/NDEP_CONUS.ncf - setenv BDSNP_LFILE /work/MOD3DATA/2016_12US1/surface/megan3.2/LANDTYPE_CONUS.ncf - setenv BDSNP_AFILE /work/MOD3DATA/2016_12US1/surface/megan3.2/ARID_CONUS.ncf - setenv BDSNP_NAFILE /work/MOD3DATA/2016_12US1/surface/megan3.2/NONARID_CONUS.ncf - endif - endif - if ( $CTM_BIOGEMIS_BE == 'Y' ) then - set IN_BEISpath = ${INPDIR}/surface - setenv GSPRO ${BLD}/gspro_biogenics.txt - setenv BEIS_NORM_EMIS $IN_BEISpath/b3grd.smoke30_beis361.12US1.2011NLCD_FIA5.1_CDL_norm_v3.ncf - setenv BEIS_SOILINP $OUTDIR/CCTM_BSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if NEW_START = TRUE - endif - - #> In-line sea spray emissions configuration - setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_12US1.nc - - #> Bidirectional ammonia configuration - if ( $CTM_ABFLUX == 'Y' ) then - # need to modify for FEST-C v1.4. - setenv E2C_SOIL ${EPICpath}/toCMAQ_festc1.4_epic/us1_2016_cmaq12km_soil.nc - setenv E2C_CHEM ${EPICpath}/toCMAQ_festc1.4_epic/us1_2016_cmaq12km_time${YYYYMMDD}.nc - setenv E2C_LU ${EPICpath}/beld4_camq12km_2011_4CMAQioapi.ncf - endif - -#> Inline Process Analysis - setenv CTM_PROCAN N #> use process analysis [ default: N] - if ( $?CTM_PROCAN ) then # $CTM_PROCAN is defined - if ( $CTM_PROCAN == 'Y' || $CTM_PROCAN == 'T' ) then -#> process analysis global column, row and layer ranges -# setenv PA_BCOL_ECOL "10 90" # default: all columns -# setenv PA_BROW_EROW "10 80" # default: all rows -# setenv PA_BLEV_ELEV "1 4" # default: all levels - setenv PACM_INFILE ${NMLpath}/pa_${MECH}.ctl - setenv PACM_REPORT $OUTDIR/"PA_REPORT".${YYYYMMDD} - endif - endif - -#> Integrated Source Apportionment Method (ISAM) Options - setenv CTM_ISAM N - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - setenv SA_IOLIST ${WORKDIR}/isam_control.txt - setenv ISAM_BLEV_ELEV " 1 1" - setenv AISAM_BLEV_ELEV " 1 1" - - #> Set Up ISAM Initial Condition Flags - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ISAM_NEW_START Y - setenv ISAM_PREVDAY - else - setenv ISAM_NEW_START N - setenv ISAM_PREVDAY "$OUTDIR/CCTM_SA_CGRID_${RUNID}_${YESTERDAY}.nc" - endif - - #> Set Up ISAM Output Filenames - setenv SA_ACONC_1 "$OUTDIR/CCTM_SA_ACONC_${CTM_APPL}.nc -v" - setenv SA_CONC_1 "$OUTDIR/CCTM_SA_CONC_${CTM_APPL}.nc -v" - setenv SA_DD_1 "$OUTDIR/CCTM_SA_DRYDEP_${CTM_APPL}.nc -v" - setenv SA_WD_1 "$OUTDIR/CCTM_SA_WETDEP_${CTM_APPL}.nc -v" - setenv SA_CGRID_1 "$OUTDIR/CCTM_SA_CGRID_${CTM_APPL}.nc -v" - - #> Set optional ISAM regions files -# setenv ISAM_REGIONS /work/MOD3EVAL/nsu/isam_v53/CCTM/scripts/input/RGN_ISAM.nc - - #> Options used to favor tracked species in reactions for Ozone-NOx chemistry - setenv ISAM_O3_WEIGHTS 5 # weights for tracked species Default is 5 - # OPTIONS - # 1 does not weight any species - # 2 weights NOx and subset of NOz species - # 3 uses with from option 2 plus weight OVOC species, organic radicals and operators - # 4 weight OVOC species, organic radicals and operators - # 5 toggles between two weighting set based on VOC and NOx limited ozone production - # Below options only used if ISAM_O3_WEIGHTS set to 5 - setenv ISAM_NOX_CASE 2 # weights for tracked species when ozone production is NOx limited. Default is 2 - setenv ISAM_VOC_CASE 4 # weights for tracked species when ozone production is VOC limited. Default is 4 - setenv VOC_NOX_TRANS 0.35 # value of Prod H2O2 over Prod HNO3 less than where - # ISAM_VOC_CASE weights are used. Otherwise, ISAM_NOX_CASE - # weights are used. Default is 0.35 - - - endif - endif - -#> Sulfur Tracking Model (STM) - setenv STM_SO4TRACK N #> sulfur tracking [ default: N ] - if ( $?STM_SO4TRACK ) then - if ( $STM_SO4TRACK == 'Y' || $STM_SO4TRACK == 'T' ) then - - #> option to normalize sulfate tracers [ default: Y ] - setenv STM_ADJSO4 Y - - endif - endif - -#> Decoupled Direct Method in 3D (DDM-3D) Options - setenv CTM_DDM3D N # Sets up requisite script settings for DDM-3D (default is N/F) - # Additionally requires for CCTM to be compiled for DDM-3D simulations - - set NPMAX = 1 # Number of sensitivity parameters defined in SEN_INPUT - setenv SEN_INPUT ${WORKDIR}/sensinput.dat - - setenv DDM3D_HIGH N # allow higher-order sensitivity parameters in SEN_INPUT [ T | Y | F | N ] (default is N/F) - - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv DDM3D_RST N # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = # sensitivity fields are initialized to 0.0 on the first hour of the first day - set S_ICfile = - else - setenv DDM3D_RST Y # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = $OUTDIR - set S_ICfile = CCTM_SENGRID_${RUNID}_${YESTERDAY}.nc - endif - - setenv CTM_NPMAX $NPMAX - setenv CTM_SENS_1 "$OUTDIR/CCTM_SENGRID_${CTM_APPL}.nc -v" - setenv A_SENS_1 "$OUTDIR/CCTM_ASENS_${CTM_APPL}.nc -v" - setenv CTM_SWETDEP_1 "$OUTDIR/CCTM_SENWDEP_${CTM_APPL}.nc -v" - setenv CTM_SDRYDEP_1 "$OUTDIR/CCTM_SENDDEP_${CTM_APPL}.nc -v" - setenv INIT_SENS_1 $S_ICpath/$S_ICfile - -# ===================================================================== -#> Output Files -# ===================================================================== - - #> set output file names - setenv S_CGRID "$OUTDIR/CCTM_CGRID_${CTM_APPL}.nc" #> 3D Inst. Concentrations - setenv CTM_CONC_1 "$OUTDIR/CCTM_CONC_${CTM_APPL}.nc -v" #> On-Hour Concentrations - setenv A_CONC_1 "$OUTDIR/CCTM_ACONC_${CTM_APPL}.nc -v" #> Hourly Avg. Concentrations - setenv MEDIA_CONC "$OUTDIR/CCTM_MEDIA_CONC_${CTM_APPL}.nc -v" #> NH3 Conc. in Media - setenv CTM_DRY_DEP_1 "$OUTDIR/CCTM_DRYDEP_${CTM_APPL}.nc -v" #> Hourly Dry Deposition - setenv CTM_DEPV_DIAG "$OUTDIR/CCTM_DEPV_${CTM_APPL}.nc -v" #> Dry Deposition Velocities - setenv B3GTS_S "$OUTDIR/CCTM_B3GTS_S_${CTM_APPL}.nc -v" #> Biogenic Emissions - setenv BDSNPOUT "$OUTDIR/CCTM_BDSNPOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv BEIS_SOILOUT "$OUTDIR/CCTM_BSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv MEGAN_SOILOUT "$OUTDIR/CCTM_MSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv CTM_WET_DEP_1 "$OUTDIR/CCTM_WETDEP1_${CTM_APPL}.nc -v" #> Wet Dep From All Clouds - setenv CTM_WET_DEP_2 "$OUTDIR/CCTM_WETDEP2_${CTM_APPL}.nc -v" #> Wet Dep From SubGrid Clouds - setenv CTM_ELMO_1 "$OUTDIR/CCTM_ELMO_${CTM_APPL}.nc -v" #> On-Hour Particle Diagnostics - setenv CTM_AELMO_1 "$OUTDIR/CCTM_AELMO_${CTM_APPL}.nc -v" #> Hourly Avg. Particle Diagnostics - setenv CTM_RJ_1 "$OUTDIR/CCTM_PHOTDIAG1_${CTM_APPL}.nc -v" #> 2D Surface Summary from Inline Photolysis - setenv CTM_RJ_2 "$OUTDIR/CCTM_PHOTDIAG2_${CTM_APPL}.nc -v" #> 3D Photolysis Rates - setenv CTM_RJ_3 "$OUTDIR/CCTM_PHOTDIAG3_${CTM_APPL}.nc -v" #> 3D Optical and Radiative Results from Photolysis - setenv CTM_SSEMIS_1 "$OUTDIR/CCTM_SSEMIS_${CTM_APPL}.nc -v" #> Sea Spray Emissions - setenv CTM_DUST_EMIS_1 "$OUTDIR/CCTM_DUSTEMIS_${CTM_APPL}.nc -v" #> Dust Emissions - setenv CTM_BUDGET "$OUTDIR/CCTM_BUDGET_${CTM_APPL}.txt -v" #> Budget - setenv CTM_IPR_1 "$OUTDIR/CCTM_PA_1_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_2 "$OUTDIR/CCTM_PA_2_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_3 "$OUTDIR/CCTM_PA_3_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IRR_1 "$OUTDIR/CCTM_IRR_1_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_2 "$OUTDIR/CCTM_IRR_2_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_3 "$OUTDIR/CCTM_IRR_3_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_DRY_DEP_MOS "$OUTDIR/CCTM_DDMOS_${CTM_APPL}.nc -v" #> Dry Dep - setenv CTM_DEPV_MOS "$OUTDIR/CCTM_DEPVMOS_${CTM_APPL}.nc -v" #> Dry Dep Velocity - setenv CTM_VDIFF_DIAG "$OUTDIR/CCTM_VDIFF_DIAG_${CTM_APPL}.nc -v" #> Vertical Dispersion Diagnostic - setenv CTM_VSED_DIAG "$OUTDIR/CCTM_VSED_DIAG_${CTM_APPL}.nc -v" #> Particle Grav. Settling Velocity - setenv CTM_LTNGDIAG_1 "$OUTDIR/CCTM_LTNGHRLY_${CTM_APPL}.nc -v" #> Hourly Avg Lightning NO - setenv CTM_LTNGDIAG_2 "$OUTDIR/CCTM_LTNGCOL_${CTM_APPL}.nc -v" #> Column Total Lightning NO - setenv CTM_VEXT_1 "$OUTDIR/CCTM_VEXT_${CTM_APPL}.nc -v" #> On-Hour 3D Concs at select sites - - #> set floor file (neg concs) - setenv FLOOR_FILE ${OUTDIR}/FLOOR_${CTM_APPL}.txt - - #> look for existing log files and output files - ( ls CTM_LOG_???.${CTM_APPL} > buff.txt ) >& /dev/null - ( ls ${LOGDIR}/CTM_LOG_???.${CTM_APPL} >> buff.txt ) >& /dev/null - set log_test = `cat buff.txt`; rm -f buff.txt - - set OUT_FILES = (${FLOOR_FILE} ${S_CGRID} ${CTM_CONC_1} ${A_CONC_1} ${MEDIA_CONC} \ - ${CTM_DRY_DEP_1} $CTM_DEPV_DIAG $B3GTS_S $MEGAN_SOILOUT $BEIS_SOILOUT $BDSNPOUT \ - $CTM_WET_DEP_1 $CTM_WET_DEP_2 $CTM_ELMO_1 $CTM_AELMO_1 \ - $CTM_RJ_1 $CTM_RJ_2 $CTM_RJ_3 $CTM_SSEMIS_1 $CTM_DUST_EMIS_1 $CTM_IPR_1 $CTM_IPR_2 \ - $CTM_IPR_3 $CTM_BUDGET $CTM_IRR_1 $CTM_IRR_2 $CTM_IRR_3 $CTM_DRY_DEP_MOS \ - $CTM_DEPV_MOS $CTM_VDIFF_DIAG $CTM_VSED_DIAG $CTM_LTNGDIAG_1 $CTM_LTNGDIAG_2 $CTM_VEXT_1 ) - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${SA_ACONC_1} ${SA_CONC_1} ${SA_DD_1} ${SA_WD_1} \ - ${SA_CGRID_1} ) - endif - endif - if ( $?CTM_DDM3D ) then - if ( $CTM_DDM3D == 'Y' || $CTM_DDM3D == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${CTM_SENS_1} ${A_SENS_1} ${CTM_SWETDEP_1} ${CTM_SDRYDEP_1} ) - endif - endif - set OUT_FILES = `echo $OUT_FILES | sed "s; -v;;g" ` - ( ls $OUT_FILES > buff.txt ) >& /dev/null - set out_test = `cat buff.txt`; rm -f buff.txt - - #> delete previous output if requested - if ( $CLOBBER_DATA == true || $CLOBBER_DATA == TRUE ) then - echo - echo "Existing Logs and Output Files for Day ${TODAYG} Will Be Deleted" - - #> remove previous log files - foreach file ( ${log_test} ) - #echo "Deleting log file: $file" - /bin/rm -f $file - end - - #> remove previous output files - foreach file ( ${out_test} ) - #echo "Deleting output file: $file" - /bin/rm -f $file - end - /bin/rm -f ${OUTDIR}/CCTM_DESID*${CTM_APPL}.nc - - else - #> error if previous log files exist - if ( "$log_test" != "" ) then - echo "*** Logs exist - run ABORTED ***" - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - - #> error if previous output files exist - if ( "$out_test" != "" ) then - echo "*** Output Files Exist - run will be ABORTED ***" - foreach file ( $out_test ) - echo " cannot delete $file" - end - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - endif - - #> for the run control ... - setenv CTM_STDATE $YYYYJJJ - setenv CTM_STTIME $STTIME - setenv CTM_RUNLEN $NSTEPS - setenv CTM_TSTEP $TSTEP - setenv INIT_CONC_1 $ICpath/$ICFILE - setenv BNDY_CONC_1 $BCpath/$BCFILE - setenv OMI $OMIpath/$OMIfile - setenv MIE_TABLE $OUTDIR/mie_table_coeffs_${compilerString}.txt - setenv OPTICS_DATA $OMIpath/$OPTfile - #setenv XJ_DATA $JVALpath/$JVALfile - - #> species defn & photolysis - setenv gc_matrix_nml ${NMLpath}/GC_$MECH.nml - setenv ae_matrix_nml ${NMLpath}/AE_$MECH.nml - setenv nr_matrix_nml ${NMLpath}/NR_$MECH.nml - setenv tr_matrix_nml ${NMLpath}/Species_Table_TR_0.nml - - #> check for photolysis input data - setenv CSQY_DATA ${NMLpath}/CSQY_DATA_$MECH - - if (! (-e $CSQY_DATA ) ) then - echo " $CSQY_DATA not found " - exit 1 - endif - if (! (-e $OPTICS_DATA ) ) then - echo " $OPTICS_DATA not found " - exit 1 - endif - -# =================================================================== -#> Execution Portion -# =================================================================== - - #> Print attributes of the executable - if ( $CTM_DIAG_LVL != 0 ) then - ls -l $BLD/$EXEC - size $BLD/$EXEC - unlimit - limit - endif - - #> Print Startup Dialogue Information to Standard Out - echo - echo "CMAQ Processing of Day $YYYYMMDD Began at `date`" - echo - - #> Executable call for single PE, uncomment to invoke - #( /usr/bin/time -p $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Executable call for multi PE, configure for your system - # set MPI = /usr/local/intel/impi/3.2.2.006/bin64 - # set MPIRUN = $MPI/mpirun - ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Harvest Timing Output so that it may be reported below - set rtarray = "${rtarray} `tail -3 buff_${EXECUTION_ID}.txt | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | head -1` " - rm -rf buff_${EXECUTION_ID}.txt - - #> Abort script if abnormal termination - if ( ! -e $S_CGRID ) then - echo "" - echo "**************************************************************" - echo "** Runscript Detected an Error: CGRID file was not written. **" - echo "** This indicates that CMAQ was interrupted or an issue **" - echo "** exists with writing output. The runscript will now **" - echo "** abort rather than proceeding to subsequent days. **" - echo "**************************************************************" - break - endif - - #> Print Concluding Text - echo - echo "CMAQ Processing of Day $YYYYMMDD Finished at `date`" - echo - echo "\\\\\=====\\\\\=====\\\\\=====\\\\\=====/////=====/////=====/////=====/////" - echo - -# =================================================================== -#> Finalize Run for This Day and Loop to Next Day -# =================================================================== - - #> Save Log Files and Move on to Next Simulation Day - mv CTM_LOG_???.${CTM_APPL} $LOGDIR - if ( $CTM_DIAG_LVL != 0 ) then - mv CTM_DIAG_???.${CTM_APPL} $LOGDIR - endif - - #> The next simulation day will, by definition, be a restart - setenv NEW_START false - - #> Increment both Gregorian and Julian Days - set TODAYG = `date -ud "${TODAYG}+1days" +%Y-%m-%d` #> Add a day for tomorrow - set TODAYJ = `date -ud "${TODAYG}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ - -end #Loop to the next Simulation Day - -# =================================================================== -#> Generate Timing Report -# =================================================================== -set RTMTOT = 0 -foreach it ( `seq ${NDAYS}` ) - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - set RTMTOT = `echo "${RTMTOT} + ${rt}" | bc -l` -end - -set RTMAVG = `echo "scale=2; ${RTMTOT} / ${NDAYS}" | bc -l` -set RTMTOT = `echo "scale=2; ${RTMTOT} / 1" | bc -l` - -echo -echo "==================================" -echo " ***** CMAQ TIMING REPORT *****" -echo "==================================" -echo "Start Day: ${START_DATE}" -echo "End Day: ${END_DATE}" -echo "Number of Simulation Days: ${NDAYS}" -echo "Domain Name: ${GRID_NAME}" -echo "Number of Grid Cells: ${NCELLS} (ROW x COL x LAY)" -echo "Number of Layers: ${NZ}" -echo "Number of Processes: ${NPROCS}" -echo " All times are in seconds." -echo -echo "Num Day Wall Time" -set d = 0 -set day = ${START_DATE} -foreach it ( `seq ${NDAYS}` ) - # Set the right day and format it - set d = `echo "${d} + 1" | bc -l` - set n = `printf "%02d" ${d}` - - # Choose the correct time variables - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - - # Write out row of timing data - echo "${n} ${day} ${rt}" - - # Increment day for next loop - set day = `date -ud "${day}+1days" +%Y-%m-%d` -end -echo " Total Time = ${RTMTOT}" -echo " Avg. Time = ${RTMAVG}" - -exit From 447fb4fb72f3b0243313849e8423b153afafdce3 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:41:13 -0400 Subject: [PATCH 362/375] Delete CCTM/scripts/run_cctm_2015_HEMI.csh --- CCTM/scripts/run_cctm_2015_HEMI.csh | 804 ---------------------------- 1 file changed, 804 deletions(-) delete mode 100755 CCTM/scripts/run_cctm_2015_HEMI.csh diff --git a/CCTM/scripts/run_cctm_2015_HEMI.csh b/CCTM/scripts/run_cctm_2015_HEMI.csh deleted file mode 100755 index e08be52d5..000000000 --- a/CCTM/scripts/run_cctm_2015_HEMI.csh +++ /dev/null @@ -1,804 +0,0 @@ -#!/bin/csh -f - -# ==================== CCTMv5.5.X Run Script ======================== -# Usage: run_cctm_2015_HEMI.csh >&! run_cctm_2015_HEMI.log & -# Slurm Usage: sbatch run_cctm_2015_HEMI.csh -# -# To report problems or request help with this script/program: -# http://www.epa.gov/cmaq (EPA CMAQ Website) -# http://www.cmascenter.org (CMAS Website) -# =================================================================== - -# =================================================================== -#> Runtime Environment Options -# =================================================================== - -echo 'Start Model Run At ' `date` - -#> Toggle Diagnostic Mode which will print verbose information to -#> standard output - setenv CTM_DIAG_LVL 0 - -#> Choose compiler and set up CMAQ environment with correct -#> libraries using config.cmaq. Options: intel | gcc | pgi - if ( ! $?compiler ) then - setenv compiler intel - endif - if ( ! $?compilerVrsn ) then - setenv compilerVrsn Empty - endif - -#> Source the config.cmaq file to set the build environment - cd ../.. - source ./config_cmaq.csh $compiler $compilerVrsn - cd CCTM/scripts - -#> Set General Parameters for Configuring the Simulation - set VRSN = v55 #> Code Version - set PROC = mpi #> serial or mpi - set MECH = cb6r5m_ae7_aq #> Mechanism ID - set APPL = 2015_HEMI #> Application Name (e.g. Gridname) - -#> Define RUNID as any combination of parameters above or others. By default, -#> this information will be collected into this one string, $RUNID, for easy -#> referencing in output binaries and log files as well as in other scripts. - setenv RUNID ${VRSN}_${compilerString}_${APPL} - -#> Set the build directory (this is where the CMAQ executable -#> is located by default). - set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString} - set EXEC = CCTM_${VRSN}.exe - -#> Output Each line of Runscript to Log File - if ( $CTM_DIAG_LVL != 0 ) set echo - -#> Set Working, Input, and Output Directories - setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. - setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory - setenv INPDIR /work/MOD3DATA/$APPL #Input Directory - setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location - setenv NMLpath ${BLD} #> Location of Namelists. Common places are: - #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} - - echo "" - echo "Working Directory is $WORKDIR" - echo "Build Directory is $BLD" - echo "Output Directory is $OUTDIR" - echo "Log Directory is $LOGDIR" - echo "Executable Name is $EXEC" - -# ===================================================================== -#> CCTM Configuration Options -# ===================================================================== - -#> Set Start and End Days for looping - setenv NEW_START TRUE #> Set to FALSE for model restart - set START_DATE = "2015-10-01" #> beginning date (Oct. 1, 2015) - set END_DATE = "2015-10-01" #> ending date (Dec. 31, 2016) - -#> Set Timestepping Parameters -set STTIME = 000000 #> beginning GMT time (HHMMSS) -set NSTEPS = 240000 #> time duration (HHMMSS) for this run -set TSTEP = 010000 #> output time step interval (HHMMSS) - -#> Horizontal domain decomposition -if ( $PROC == serial ) then - setenv NPCOL_NPROW "1 1"; set NPROCS = 1 # single processor setting -else - @ NPCOL = 16; @ NPROW = 8 - @ NPROCS = $NPCOL * $NPROW - setenv NPCOL_NPROW "$NPCOL $NPROW"; -endif - -#> Define Execution ID: e.g. [CMAQ-Version-Info]_[User]_[Date]_[Time] -if ( ! -e ${BLD}/CCTM_${VRSN}.cfg ) then - set SHAID = "" -else - set SHAID = `grep "sha_ID" ${BLD}/CCTM_${VRSN}.cfg | cut -c 13-22` - if ( $SHAID == not_a_repo ) then - set SHAID = "" - else - set SHAID = "_sha="$SHAID - endif -endif -setenv EXECUTION_ID "CMAQ_CCTM${VRSN}${SHAID}_`id -u -n`_`date -u +%Y%m%d_%H%M%S_%N`" #> Inform IO/API of the Execution ID -echo "" -echo "---CMAQ EXECUTION ID: $EXECUTION_ID ---" - -#> Keep or Delete Existing Output Files -set CLOBBER_DATA = FALSE - -#> Logfile Options -#> Master Log File Name; uncomment to write standard output to a log, otherwise write to screen -#setenv LOGFILE $CMAQ_HOME/$RUNID.log -if (! -e $LOGDIR ) then - mkdir -p $LOGDIR -endif -setenv PRINT_PROC_TIME Y #> Print timing for all science subprocesses to Logfile - #> [ default: TRUE or Y ] -setenv STDOUT T #> Override I/O-API trying to write information to both the processor - #> logs and STDOUT [ options: T | F ] - -setenv GRIDDESC $INPDIR/GRIDDESC #> grid description file -setenv GRID_NAME WRF_CMAQ_2WAY #> check GRIDDESC file for GRID_NAME options - -#> Retrieve the number of columns, rows, and layers in this simulation -set NZ = 44 -set NX = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f6` -set NY = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f7` -set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` - -#> Output Species and Layer Options - #> CONC file species; comment or set to "ALL" to write all species to CONC - setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 FORM ISOP NH3 ANH4I ANH4J ASO4I ASO4J" - setenv CONC_BLEV_ELEV "1 1" #> CONC file layer range; comment to write all layers to CONC - - #> ACONC file species; comment or set to "ALL" to write all species to ACONC - #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" - setenv AVG_CONC_SPCS "ALL" - setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC - setenv AVG_FILE_ENDTIME N #> override default beginning ACONC timestamp [ default: N ] - -#> Synchronization Time Step and Tolerance Options -setenv CTM_MAXSYNC 300 #> max sync time step (sec) [ default: 720 ] -setenv CTM_MINSYNC 60 #> min sync time step (sec) [ default: 60 ] -setenv SIGMA_SYNC_TOP 0.7 #> top sigma level thru which sync step determined [ default: 0.7 ] -#setenv ADV_HDIV_LIM 0.95 #> maximum horiz. div. limit for adv step adjust [ default: 0.9 ] -setenv CTM_ADV_CFL 0.95 #> max CFL [ default: 0.75] -#setenv RB_ATOL 1.0E-09 #> global ROS3 solver absolute tolerance [ default: 1.0E-07 ] - -#> Science Options -setenv CTM_OCEAN_CHEM Y #> Flag for ocean halogen chemistry, sea spray aerosol emissions, - #> and enhanced ozone deposition over ocean waters [ default: Y ] -setenv CTM_WB_DUST Y #> use inline windblown dust emissions (only for use with PX) [ default: N ] -setenv CTM_LTNG_NO N #> turn on lightning NOx [ default: N ] -setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], - #> otherwise revert to Kz0UT -setenv PX_VERSION Y #> WRF PX LSM -setenv CLM_VERSION N #> WRF CLM LSM -setenv NOAH_VERSION N #> WRF NOAH LSM -setenv CTM_ABFLUX N #> ammonia bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_BIDI_FERT_NH3 F #> subtract fertilizer NH3 from emissions because it will be handled - #> by the BiDi calculation [ default: Y ] -setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ] - #> please see user guide (6.10.4 Nitrous Acid (HONO)) - #> for dependency on percent urban fraction dataset -setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ] - -setenv CTM_PVO3 Y #> consider potential vorticity module for O3 transport from the stratosphere - #> [default: N] - -setenv CTM_BIOGEMIS_BE N #> calculate in-line biogenic emissions with BEIS [ default: N ] -setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ] -setenv BDSNP_MEGAN N #> turns on BDSNP soil NO emissions [ default: N ] - -setenv AEROSOL_OPTICS 3 #> sets method for determining aerosol optics affecting photolysis - #> frequencies ( 3 is the default value ) - #> VALUES 1 thru 3 determined Uniformly Volume Mixed spherical - #> (1-Tabular Mie; 2-Mie Calculation; 3-Case Approx to Mie Theory) - #> VALUES 4 thru 6 attempts to use core-shell mixing model when the - #> aerosol mode has signficant black carbon core otherwise use Volume Mixed - #> model where optics determined by - #> (4-Tabular Mie; 5-Mie Calculation; 6-Case Approx to Mie Theory) - -#> Surface Tiled Aerosol and Gaseous Exchange Options -#> Only active if DepMod=stage at compile time -setenv CTM_MOSAIC N #> Output landuse specific deposition velocities [ default: N ] -setenv CTM_STAGE_P22 N #> Pleim et al. 2022 Aerosol deposition model [default: N] -setenv CTM_STAGE_E20 Y #> Emerson et al. 2020 Aerosol deposition model [default: Y] -setenv CTM_STAGE_S22 N #> Shu et al. 2022 (CMAQ v5.3) Aerosol deposition model [default: N] - -setenv IC_AERO_M2WET F #> Specify whether or not initial condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv BC_AERO_M2WET F #> Specify whether or not boundary condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv IC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from initial - #> conditions [ default: T = use aerosol surface area ] -setenv BC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from boundary - #> conditions [ default: T = use aerosol surface area ] - - -#> Vertical Extraction Options -setenv VERTEXT N -setenv VERTEXT_COORD_PATH ${WORKDIR}/lonlat.csv - -#> I/O Controls -setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ] -setenv FL_ERR_STOP N #> stop on inconsistent input files -setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ] -setenv IOAPI_OFFSET_64 YES #> support large timestep records (>2GB/timestep record) [ options: YES | NO ] -setenv IOAPI_CHECK_HEADERS N #> check file headers [ options: Y | N ] -setenv CTM_EMISCHK N #> Abort CMAQ if missing surrogates from emissions Input files - -#> Diagnostic Output Flags -setenv CTM_CKSUM Y #> checksum report [ default: Y ] -setenv CLD_DIAG N #> cloud diagnostic file [ default: N ] - -setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ] -setenv NLAYS_PHOTDIAG "1" #> Number of layers for PHOTDIAG2 and PHOTDIAG3 from - #> Layer 1 to NLAYS_PHOTDIAG [ default: all layers ] -#setenv NWAVE_PHOTDIAG "294 303 310 316 333 381 607" #> Wavelengths written for variables - #> in PHOTDIAG2 and PHOTDIAG3 - #> [ default: all wavelengths ] - -setenv CTM_SSEMDIAG N #> sea-spray emissions diagnostic file [ default: N ] -setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; - #> Ignore if CTM_WB_DUST = N -setenv CTM_DEPV_FILE N #> deposition velocities diagnostic file [ default: N ] -setenv VDIFF_DIAG_FILE N #> vdiff & possibly aero grav. sedimentation diagnostic file [ default: N ] -setenv LTNGDIAG N #> lightning diagnostic file [ default: N ] -setenv B3GTS_DIAG N #> BEIS mass emissions diagnostic file [ default: N ] -setenv CTM_WVEL Y #> save derived vertical velocity component to conc & aconc - #> file [ default: Y ] -setenv CTM_MGEMDIAG N # marine emissions diagnostic file [ default: N ] - # it will generate the file only if MECH = cb6r5m_ae7_aq -# ===================================================================== -#> Input Directories and Filenames -# ===================================================================== - -set ICpath = $INPDIR/icbc/cb6r3_ae6 #> initial conditions input directory -set BCpath = $INPDIR/icbc/cb6r3_ae6 #> boundary conditions input directory -set EMISpath = $INPDIR/emis/cb6r3_ae6_fe #> gridded emissions input directory -set IN_PTpath = #> point source emissions input directory -set IN_LTpath = $INPDIR/lightning #> lightning NOx input directory -set METpath = $INPDIR/met/mcip_v43_wrf_v38_ctrl #> meteorology input directory -#set JVALpath = $INPDIR/jproc #> offline photolysis rate table directory -set OMIpath = $BLD #> ozone column data for the photolysis model -set SZpath = $INPDIR/surface #> surf zone file for in-line seaspray emissions -set EPICpath = $INPDIR/surface #> EPIC putput for bidirectional NH3 - -# ===================================================================== -#> Begin Loop Through Simulation Days -# ===================================================================== -set rtarray = "" - -set TODAYG = ${START_DATE} -set TODAYJ = `date -ud "${START_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set START_DAY = ${TODAYJ} -set STOP_DAY = `date -ud "${END_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set NDAYS = 0 - -while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ - - set NDAYS = `echo "${NDAYS} + 1" | bc -l` - - #> Retrieve Calendar day Information - set YYYYMMDD = `date -ud "${TODAYG}" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD - set YYYYMM = `date -ud "${TODAYG}" +%Y%m` #> Convert YYYY-MM-DD to YYYYMM - set YYMMDD = `date -ud "${TODAYG}" +%y%m%d` #> Convert YYYY-MM-DD to YYMMDD - set MM = `date -ud "${TODAYG}" +%m` #> Convert YYYY-MM-DD to MM - set YYYYJJJ = $TODAYJ - set YEAR = `date -ud "${TODAYG}" +%Y` #> Convert YYYY-MM-DD to YYYY - - #> Calculate Yesterday's Date - set YESTERDAY = `date -ud "${TODAYG}-1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYJJJ - -# ===================================================================== -#> Set Output String and Propagate Model Configuration Documentation -# ===================================================================== - echo "" - echo "Set up input and output files for Day ${TODAYG}." - - #> set output file name extensions - setenv CTM_APPL ${RUNID}_${YYYYMMDD} - - #> Copy Model Configuration To Output Folder - if ( ! -d "$OUTDIR" ) mkdir -p $OUTDIR - cp $BLD/CCTM_${VRSN}.cfg $OUTDIR/CCTM_${CTM_APPL}.cfg - -# ===================================================================== -#> Input Files (Some are Day-Dependent) -# ===================================================================== - - #> Initial conditions - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ICFILE CCTM_CGRID_v52_hdifupdate_intel17.0_HEMIS_cb6_20150930 - setenv INIT_MEDC_1 notused - else - set ICpath = $OUTDIR - setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc - setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY}.nc - endif - - #> Boundary conditions - set BCFILE = hemisphere_bc_cb05mp_cleano3_44L.ncf - - #> Off-line photolysis rates - #set JVALfile = JTABLE_${YYYYJJJ} - - #> Ozone column data - set OMIfile = OMI_1979_to_2019.dat - - #> Optics file - set OPTfile = PHOT_OPTICS.dat - - #> MCIP meteorology files - set MCONF = 108NHEMI2.44L - setenv GRID_BDY_2D $METpath/GRIDBDY2D.$MCONF.${YYYYMMDD} # GRID files are static, not day-specific - setenv GRID_CRO_2D $METpath/GRIDCRO2D.$MCONF.${YYYYMMDD} - setenv GRID_CRO_3D absent - setenv GRID_DOT_2D $METpath/GRIDDOT2D.$MCONF.${YYYYMMDD} - setenv MET_CRO_2D $METpath/METCRO2D.$MCONF.${YYYYMMDD} - setenv MET_CRO_3D $METpath/METCRO3D.$MCONF.${YYYYMMDD} - setenv MET_DOT_3D $METpath/METDOT3D.$MCONF.${YYYYMMDD} - setenv MET_BDY_3D $METpath/METBDY3D.$MCONF.${YYYYMMDD} -# setenv LUFRAC_CRO $METpath/LUFRAC_CRO.$MCONF.${YYYYMMDD} - - #> Control Files - #> - #> IMPORTANT NOTE - #> - #> The DESID control files defined below are an integral part of controlling the behavior of the model simulation. - #> Among other things, they control the mapping of species in the emission files to chemical species in the model and - #> several aspects related to the simulation of organic aerosols. - #> Please carefully review the DESID control files to ensure that they are configured to be consistent with the assumptions - #> made when creating the emission files defined below and the desired representation of organic aerosols. - #> For further information, please see: - #> + AERO7 Release Notes section on 'Required emission updates': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Release_Notes/aero7_overview.md - #> + CMAQ User's Guide section 6.9.3 on 'Emission Compatability': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.9.3_Emission_Compatability - #> + Emission Control (DESID) Documentation in the CMAQ User's Guide: - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md - #> - setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml - setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml - - #> The following namelist configures aggregated output (via the Explicit and Lumped - #> Air Quality Model Output (ELMO) Module), domain-wide budget output, and chemical - #> family output. - setenv MISC_CTRL_NML ${BLD}/CMAQ_Control_Misc.nml - - #> The following namelist controls the mapping of meteorological land use types and the NH3 and Hg emission - #> potentials - setenv STAGECTRL_NML ${BLD}/CMAQ_Control_STAGE.nml - -#> Spatial Masks For Emissions Scaling - setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_108NHEMI2.nc #> horizontal grid-dependent ocean file - setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_108NHEMI2.nc #> horizontal grid-dependent ocean file - - #> Gridded Emissions Files - setenv N_EMIS_GR 1 - if( $YEAR == 2015 ) then - set EMISfile = emis_mole_all_${YYYYMMDD}_HEMI_108k_withbeis_2016fe_spinup_cb6_15jh.ncf - else - set EMISfile = emis_mole_all_${YYYYMMDD}_HEMI_108k_withbeis_2016fe_hemi_cb6_16jh.ncf - endif - - setenv GR_EMIS_001 ${EMISpath}/${EMISfile} - setenv GR_EMIS_LAB_001 GRIDDED_EMIS - setenv GR_EM_SYM_DATE_001 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE - #> In-line point emissions configuration - setenv N_EMIS_PT 0 #> Number of elevated source groups - - set STKCASEG = 12US1_2011ek_cb6cmaq_v6_11g # Stack Group Version Label - set STKCASEE = 12US1_cmaq_cb6e51_2011ek_cb6cmaq_v6_11g # Stack Emission Version Label - - setenv STK_GRPS_001 $IN_PTpath/stack_groups/stack_groups_ptnonipm_${STKCASEG}.nc - setenv STK_GRPS_002 $IN_PTpath/stack_groups/stack_groups_ptegu_${STKCASEG}.nc - setenv STK_GRPS_003 $IN_PTpath/stack_groups/stack_groups_othpt_${STKCASEG}.nc - setenv STK_GRPS_004 $IN_PTpath/stack_groups/stack_groups_ptfire_${YYYYMMDD}_${STKCASEG}.nc - setenv STK_GRPS_005 $IN_PTpath/stack_groups/stack_groups_pt_oilgas_${STKCASEG}.nc - - setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${YYYYMMDD}_${STKCASEE}.nc - setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.nc - setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${YYYYMMDD}_${STKCASEE}.nc - setenv STK_EMIS_004 $IN_PTpath/ptfire/inln_mole_ptfire_${YYYYMMDD}_${STKCASEE}.nc - setenv STK_EMIS_005 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.nc - - # Label Each Emissions Stream - setenv STK_EMIS_LAB_001 PT_NONEGU - setenv STK_EMIS_LAB_002 PT_EGU - setenv STK_EMIS_LAB_003 PT_OTHER - setenv STK_EMIS_LAB_004 PT_FIRES - setenv STK_EMIS_LAB_005 PT_OILGAS - - # Allow CMAQ to Use Point Source files with dates that do not - # match the internal model date - # To change default behaviour please see Users Guide for EMIS_SYM_DATE - setenv STK_EM_SYM_DATE_001 T - setenv STK_EM_SYM_DATE_002 T - setenv STK_EM_SYM_DATE_003 T - setenv STK_EM_SYM_DATE_004 T - setenv STK_EM_SYM_DATE_005 T - - #> Lightning NOx configuration - if ( $CTM_LTNG_NO == 'Y' ) then - setenv LTNGNO "InLine" #> set LTNGNO to "Inline" to activate in-line calculation - - #> In-line lightning NOx options - setenv USE_NLDN Y #> use hourly NLDN strike file [ default: Y ] - if ( $USE_NLDN == Y ) then - setenv NLDN_STRIKES ${IN_LTpath}/NLDN.12US1.${YYYYMMDD}_bench.nc - endif - setenv LTNGPARMS_FILE ${IN_LTpath}/LTNG_AllParms_12US1_bench.nc #> lightning parameter file - endif - - #> In-line biogenic emissions configuration - if ( $CTM_BIOGEMIS_BE == 'Y' ) then - set IN_BEISpath = ${INPDIR}/land - setenv GSPRO $BLD/gspro_biogenics.txt - setenv BEIS_NORM_EMIS $IN_BEISpath/b3grd_bench.nc - setenv BEIS_SOILINP $OUTDIR/CCTM_BSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if NEW_START = TRUE - endif - if ( $CTM_BIOGEMIS_MG == 'Y' ) then - setenv MEGAN_SOILINP $OUTDIR/CCTM_MSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if INITIAL_RUN = Y - #> ; ignore if IGNORE_SOILINP = Y - setenv MEGAN_CTS /work/MOD3DATA/2014_HEMI/surface/megan3.2/CT3_HEMI.ncf - setenv MEGAN_EFS /work/MOD3DATA/2014_HEMI/surface/megan3.2/EFMAPS_HEMI.ncf - setenv MEGAN_LDF /work/MOD3DATA/2014_HEMI/surface/megan3.2/LDF_HEMI.ncf - if ($BDSNP_MEGAN == 'Y') then - setenv BDSNPINP $OUTDIR/CCTM_BDSNPOUT_${RUNID}_${YESTERDAY}.nc - setenv BDSNP_FFILE /work/MOD3DATA/2014_HEMI/surface/megan3.2/FERT_HEMI.ncf - setenv BDSNP_NFILE /work/MOD3DATA/2014_HEMI/surface/megan3.2/NDEP_HEMI.ncf - setenv BDSNP_LFILE /work/MOD3DATA/2014_HEMI/surface/megan3.2/LANDTYPE_HEMI.ncf - setenv BDSNP_AFILE /work/MOD3DATA/2014_HEMI/surface/megan3.2/ARID_HEMI.ncf - setenv BDSNP_NAFILE /work/MOD3DATA/2014_HEMI/surface/megan3.2/NONARID_HEMI.ncf - endif - endif - - #> In-line sea spray emissions configuration -- set above -# setenv OCEAN_1 $SZpath/12US1_surf_bench.nc #> horizontal grid-dependent surf zone file - - #> Bidirectional ammonia configuration - if ( $CTM_ABFLUX == 'Y' ) then -# modify for FEST-C v1.4. - setenv E2C_SOIL ${EPICpath}/epic_festc1.4/epic2011_20180516_soil.nc - setenv E2C_CHEM ${EPICpath}/epic_festc1.4/epic2011_20180516_time${YYYYMMDD}.nc - setenv E2C_LU ${EPICpath}/beld4_12kmCONUS_2006nlcd_bench.nc - endif - -#> Inline Process Analysis - setenv CTM_PROCAN N #> use process analysis [ default: N] - if ( $?CTM_PROCAN ) then # $CTM_PROCAN is defined - if ( $CTM_PROCAN == 'Y' || $CTM_PROCAN == 'T' ) then -#> process analysis global column, row and layer ranges -# setenv PA_BCOL_ECOL "10 90" # default: all columns -# setenv PA_BROW_EROW "10 80" # default: all rows -# setenv PA_BLEV_ELEV "1 4" # default: all levels - setenv PACM_INFILE ${NMLpath}/pa_${MECH}.ctl - setenv PACM_REPORT $OUTDIR/"PA_REPORT".${YYYYMMDD} - endif - endif - -#> Integrated Source Apportionment Method (ISAM) Options - setenv CTM_ISAM N - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - setenv SA_IOLIST ${WORKDIR}/isam_control.txt - setenv ISAM_BLEV_ELEV " 1 1" - setenv AISAM_BLEV_ELEV " 1 1" - - #> Set Up ISAM Initial Condition Flags - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ISAM_NEW_START Y - setenv ISAM_PREVDAY - else - setenv ISAM_NEW_START N - setenv ISAM_PREVDAY "$OUTDIR/CCTM_SA_CGRID_${RUNID}_${YESTERDAY}.nc" - endif - - #> Set Up ISAM Output Filenames - setenv SA_ACONC_1 "$OUTDIR/CCTM_SA_ACONC_${CTM_APPL}.nc -v" - setenv SA_CONC_1 "$OUTDIR/CCTM_SA_CONC_${CTM_APPL}.nc -v" - setenv SA_DD_1 "$OUTDIR/CCTM_SA_DRYDEP_${CTM_APPL}.nc -v" - setenv SA_WD_1 "$OUTDIR/CCTM_SA_WETDEP_${CTM_APPL}.nc -v" - setenv SA_CGRID_1 "$OUTDIR/CCTM_SA_CGRID_${CTM_APPL}.nc -v" - - #> Set optional ISAM regions files -# setenv ISAM_REGIONS /work/MOD3EVAL/nsu/isam_v53/CCTM/scripts/input/RGN_ISAM.nc - - - #> Options used to favor tracked species in reaction for Ozone-NOx chemistry - setenv ISAM_O3_WEIGHTS 5 # weights for tracked species Default is 5 - # OPTIONS - # 1 does not weight any species - # 2 weights NOx and subset of NOz species - # 3 uses with from option 2 plus weight OVOC species, organic radicals and operators - # 4 weight OVOC species, organic radicals and operators - # 5 toggles between two weighting set based on VOC and NOx limited ozone production - # Below options only used if ISAM_O3_WEIGHTS set to 5 - setenv ISAM_NOX_CASE 2 # weights for tracked species when ozone production is NOx limited. Default is 2 - setenv ISAM_VOC_CASE 4 # weights for tracked species when ozone production is VOC limited. Default is 4 - setenv VOC_NOX_TRANS 0.35 # value of Prod H2O2 over Prod HNO3 less than where - # ISAM_VOC_CASE weights are used. Otherwise, ISAM_NOX_CASE - # weights are used. Default is 0.35 - - endif - endif - -#> Sulfur Tracking Model (STM) - setenv STM_SO4TRACK N #> sulfur tracking [ default: N ] - if ( $?STM_SO4TRACK ) then - if ( $STM_SO4TRACK == 'Y' || $STM_SO4TRACK == 'T' ) then - - #> option to normalize sulfate tracers [ default: Y ] - setenv STM_ADJSO4 Y - - endif - endif - -#> Decoupled Direct Method in 3D (DDM-3D) Options - setenv CTM_DDM3D N # Sets up requisite script settings for DDM-3D (default is N/F) - # Additionally requires for CCTM to be compiled for DDM-3D simulations - - set NPMAX = 1 # Number of sensitivity parameters defined in SEN_INPUT - setenv SEN_INPUT ${WORKDIR}/sensinput.dat - - setenv DDM3D_HIGH N # allow higher-order sensitivity parameters in SEN_INPUT [ T | Y | F | N ] (default is N/F) - - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv DDM3D_RST N # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = # sensitivity fields are initialized to 0.0 on the first hour of the first day - set S_ICfile = - else - setenv DDM3D_RST Y # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = $OUTDIR - set S_ICfile = CCTM_SENGRID_${RUNID}_${YESTERDAY}.nc - endif - - setenv CTM_NPMAX $NPMAX - setenv CTM_SENS_1 "$OUTDIR/CCTM_SENGRID_${CTM_APPL}.nc -v" - setenv A_SENS_1 "$OUTDIR/CCTM_ASENS_${CTM_APPL}.nc -v" - setenv CTM_SWETDEP_1 "$OUTDIR/CCTM_SENWDEP_${CTM_APPL}.nc -v" - setenv CTM_SDRYDEP_1 "$OUTDIR/CCTM_SENDDEP_${CTM_APPL}.nc -v" - setenv INIT_SENS_1 $S_ICpath/$S_ICfile - -# ===================================================================== -#> Output Files -# ===================================================================== - - #> set output file names - setenv S_CGRID "$OUTDIR/CCTM_CGRID_${CTM_APPL}.nc" #> 3D Inst. Concentrations - setenv CTM_CONC_1 "$OUTDIR/CCTM_CONC_${CTM_APPL}.nc -v" #> On-Hour Concentrations - setenv A_CONC_1 "$OUTDIR/CCTM_ACONC_${CTM_APPL}.nc -v" #> Hourly Avg. Concentrations - setenv MEDIA_CONC "$OUTDIR/CCTM_MEDIA_CONC_${CTM_APPL}.nc -v" #> NH3 Conc. in Media - setenv CTM_DRY_DEP_1 "$OUTDIR/CCTM_DRYDEP_${CTM_APPL}.nc -v" #> Hourly Dry Deposition - setenv CTM_DEPV_DIAG "$OUTDIR/CCTM_DEPV_${CTM_APPL}.nc -v" #> Dry Deposition Velocities - setenv B3GTS_S "$OUTDIR/CCTM_B3GTS_S_${CTM_APPL}.nc -v" #> Biogenic Emissions - setenv BEIS_SOILOUT "$OUTDIR/CCTM_BSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv MEGAN_SOILOUT "$OUTDIR/CCTM_MSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv BDSNPOUT "$OUTDIR/CCTM_BDSNPOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv CTM_WET_DEP_1 "$OUTDIR/CCTM_WETDEP1_${CTM_APPL}.nc -v" #> Wet Dep From All Clouds - setenv CTM_WET_DEP_2 "$OUTDIR/CCTM_WETDEP2_${CTM_APPL}.nc -v" #> Wet Dep From SubGrid Clouds - setenv CTM_ELMO_1 "$OUTDIR/CCTM_ELMO_${CTM_APPL}.nc -v" #> On-Hour Particle Diagnostics - setenv CTM_AELMO_1 "$OUTDIR/CCTM_AELMO_${CTM_APPL}.nc -v" #> Hourly Avg. Particle Diagnostics - setenv CTM_RJ_1 "$OUTDIR/CCTM_PHOTDIAG1_${CTM_APPL}.nc -v" #> 2D Surface Summary from Inline Photolysis - setenv CTM_RJ_2 "$OUTDIR/CCTM_PHOTDIAG2_${CTM_APPL}.nc -v" #> 3D Photolysis Rates - setenv CTM_RJ_3 "$OUTDIR/CCTM_PHOTDIAG3_${CTM_APPL}.nc -v" #> 3D Optical and Radiative Results from Photolysis - setenv CTM_SSEMIS_1 "$OUTDIR/CCTM_SSEMIS_${CTM_APPL}.nc -v" #> Sea Spray Emissions - setenv CTM_MGEM_1 "$OUTDIR/CCTM_MGEM_${CTM_APPL}.nc -v" #> Marine Gas Emissions - setenv CTM_DUST_EMIS_1 "$OUTDIR/CCTM_DUSTEMIS_${CTM_APPL}.nc -v" #> Dust Emissions - setenv CTM_BUDGET "$OUTDIR/CCTM_BUDGET_${CTM_APPL}.txt -v" #> Budget - setenv CTM_IPR_1 "$OUTDIR/CCTM_PA_1_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_2 "$OUTDIR/CCTM_PA_2_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_3 "$OUTDIR/CCTM_PA_3_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IRR_1 "$OUTDIR/CCTM_IRR_1_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_2 "$OUTDIR/CCTM_IRR_2_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_3 "$OUTDIR/CCTM_IRR_3_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_DRY_DEP_MOS "$OUTDIR/CCTM_DDMOS_${CTM_APPL}.nc -v" #> Dry Dep - setenv CTM_DEPV_MOS "$OUTDIR/CCTM_DEPVMOS_${CTM_APPL}.nc -v" #> Dry Dep Velocity - setenv CTM_VDIFF_DIAG "$OUTDIR/CCTM_VDIFF_DIAG_${CTM_APPL}.nc -v" #> Vertical Dispersion Diagnostic - setenv CTM_VSED_DIAG "$OUTDIR/CCTM_VSED_DIAG_${CTM_APPL}.nc -v" #> Particle Grav. Settling Velocity - setenv CTM_LTNGDIAG_1 "$OUTDIR/CCTM_LTNGHRLY_${CTM_APPL}.nc -v" #> Hourly Avg Lightning NO - setenv CTM_LTNGDIAG_2 "$OUTDIR/CCTM_LTNGCOL_${CTM_APPL}.nc -v" #> Column Total Lightning NO - setenv CTM_VEXT_1 "$OUTDIR/CCTM_VEXT_${CTM_APPL}.nc -v" #> On-Hour 3D Concs at select sites - - #> set floor file (neg concs) - setenv FLOOR_FILE ${OUTDIR}/FLOOR_${CTM_APPL}.txt - - #> look for existing log files and output files - ( ls CTM_LOG_???.${CTM_APPL} > buff.txt ) >& /dev/null - ( ls ${LOGDIR}/CTM_LOG_???.${CTM_APPL} >> buff.txt ) >& /dev/null - set log_test = `cat buff.txt`; rm -f buff.txt - - set OUT_FILES = (${FLOOR_FILE} ${S_CGRID} ${CTM_CONC_1} ${A_CONC_1} ${MEDIA_CONC} \ - ${CTM_DRY_DEP_1} $CTM_DEPV_DIAG $B3GTS_S $MEGAN_SOILOUT $BEIS_SOILOUT $BDSNPOUT \ - $CTM_WET_DEP_1 $CTM_WET_DEP_2 $CTM_ELMO_1 $CTM_AELMO_1 \ - $CTM_RJ_1 $CTM_RJ_2 $CTM_RJ_3 $CTM_SSEMIS_1 $CTM_DUST_EMIS_1 $CTM_IPR_1 $CTM_IPR_2 \ - $CTM_IPR_3 $CTM_BUDGET $CTM_IRR_1 $CTM_IRR_2 $CTM_IRR_3 $CTM_DRY_DEP_MOS \ - $CTM_DEPV_MOS $CTM_VDIFF_DIAG $CTM_VSED_DIAG $CTM_LTNGDIAG_1 $CTM_LTNGDIAG_2 \ - $CTM_VEXT_1 $CTM_MGEM_1 ) - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${SA_ACONC_1} ${SA_CONC_1} ${SA_DD_1} ${SA_WD_1} \ - ${SA_CGRID_1} ) - endif - endif - if ( $?CTM_DDM3D ) then - if ( $CTM_DDM3D == 'Y' || $CTM_DDM3D == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${CTM_SENS_1} ${A_SENS_1} ${CTM_SWETDEP_1} ${CTM_SDRYDEP_1} ) - endif - endif - set OUT_FILES = `echo $OUT_FILES | sed "s; -v;;g" ` - ( ls $OUT_FILES > buff.txt ) >& /dev/null - set out_test = `cat buff.txt`; rm -f buff.txt - - #> delete previous output if requested - if ( $CLOBBER_DATA == true || $CLOBBER_DATA == TRUE ) then - echo - echo "Existing Logs and Output Files for Day ${TODAYG} Will Be Deleted" - - #> remove previous log files - foreach file ( ${log_test} ) - #echo "Deleting log file: $file" - /bin/rm -f $file - end - - #> remove previous output files - foreach file ( ${out_test} ) - #echo "Deleting output file: $file" - /bin/rm -f $file - end - /bin/rm -f ${OUTDIR}/CCTM_DESID*${CTM_APPL}.nc - - else - #> error if previous log files exist - if ( "$log_test" != "" ) then - echo "*** Logs exist - run ABORTED ***" - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - - #> error if previous output files exist - if ( "$out_test" != "" ) then - echo "*** Output Files Exist - run will be ABORTED ***" - foreach file ( $out_test ) - echo " cannot delete $file" - end - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - endif - - #> for the run control ... - setenv CTM_STDATE $YYYYJJJ - setenv CTM_STTIME $STTIME - setenv CTM_RUNLEN $NSTEPS - setenv CTM_TSTEP $TSTEP - setenv INIT_CONC_1 $ICpath/$ICFILE - setenv BNDY_CONC_1 $BCpath/$BCFILE - setenv OMI $OMIpath/$OMIfile - setenv MIE_TABLE $OUTDIR/mie_table_coeffs_${compilerString}.txt - setenv OPTICS_DATA $OMIpath/$OPTfile - #setenv XJ_DATA $JVALpath/$JVALfile - - #> species defn & photolysis - setenv gc_matrix_nml ${NMLpath}/GC_$MECH.nml - setenv ae_matrix_nml ${NMLpath}/AE_$MECH.nml - setenv nr_matrix_nml ${NMLpath}/NR_$MECH.nml - setenv tr_matrix_nml ${NMLpath}/Species_Table_TR_0.nml - - #> check for photolysis input data - setenv CSQY_DATA ${NMLpath}/CSQY_DATA_$MECH - - if (! (-e $CSQY_DATA ) ) then - echo " $CSQY_DATA not found " - exit 1 - endif - if (! (-e $OPTICS_DATA ) ) then - echo " $OPTICS_DATA not found " - exit 1 - endif - -# =================================================================== -#> Execution Portion -# =================================================================== - - #> Print attributes of the executable - if ( $CTM_DIAG_LVL != 0 ) then - ls -l $BLD/$EXEC - size $BLD/$EXEC - unlimit - limit - endif - - #> Print Startup Dialogue Information to Standard Out - echo - echo "CMAQ Processing of Day $YYYYMMDD Began at `date`" - echo - - #> Executable call for single PE, uncomment to invoke - #( /usr/bin/time -p $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Executable call for multi PE, configure for your system - # set MPI = /usr/local/intel/impi/3.2.2.006/bin64 - # set MPIRUN = $MPI/mpirun - ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Harvest Timing Output so that it may be reported below - set rtarray = "${rtarray} `tail -3 buff_${EXECUTION_ID}.txt | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | head -1` " - rm -rf buff_${EXECUTION_ID}.txt - - #> Abort script if abnormal termination - if ( ! -e $S_CGRID ) then - echo "" - echo "**************************************************************" - echo "** Runscript Detected an Error: CGRID file was not written. **" - echo "** This indicates that CMAQ was interrupted or an issue **" - echo "** exists with writing output. The runscript will now **" - echo "** abort rather than proceeding to subsequent days. **" - echo "**************************************************************" - break - endif - - #> Print Concluding Text - echo - echo "CMAQ Processing of Day $YYYYMMDD Finished at `date`" - echo - echo "\\\\\=====\\\\\=====\\\\\=====\\\\\=====/////=====/////=====/////=====/////" - echo - -# =================================================================== -#> Finalize Run for This Day and Loop to Next Day -# =================================================================== - - #> Save Log Files and Move on to Next Simulation Day - mv CTM_LOG_???.${CTM_APPL} $LOGDIR - if ( $CTM_DIAG_LVL != 0 ) then - mv CTM_DIAG_???.${CTM_APPL} $LOGDIR - endif - - #> The next simulation day will, by definition, be a restart - setenv NEW_START false - - #> Increment both Gregorian and Julian Days - set TODAYG = `date -ud "${TODAYG}+1days" +%Y-%m-%d` #> Add a day for tomorrow - set TODAYJ = `date -ud "${TODAYG}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ - -end #Loop to the next Simulation Day - -# =================================================================== -#> Generate Timing Report -# =================================================================== -set RTMTOT = 0 -foreach it ( `seq ${NDAYS}` ) - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - set RTMTOT = `echo "${RTMTOT} + ${rt}" | bc -l` -end - -set RTMAVG = `echo "scale=2; ${RTMTOT} / ${NDAYS}" | bc -l` -set RTMTOT = `echo "scale=2; ${RTMTOT} / 1" | bc -l` - -echo -echo "==================================" -echo " ***** CMAQ TIMING REPORT *****" -echo "==================================" -echo "Start Day: ${START_DATE}" -echo "End Day: ${END_DATE}" -echo "Number of Simulation Days: ${NDAYS}" -echo "Domain Name: ${GRID_NAME}" -echo "Number of Grid Cells: ${NCELLS} (ROW x COL x LAY)" -echo "Number of Layers: ${NZ}" -echo "Number of Processes: ${NPROCS}" -echo " All times are in seconds." -echo -echo "Num Day Wall Time" -set d = 0 -set day = ${START_DATE} -foreach it ( `seq ${NDAYS}` ) - # Set the right day and format it - set d = `echo "${d} + 1" | bc -l` - set n = `printf "%02d" ${d}` - - # Choose the correct time variables - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - - # Write out row of timing data - echo "${n} ${day} ${rt}" - - # Increment day for next loop - set day = `date -ud "${day}+1days" +%Y-%m-%d` -end -echo " Total Time = ${RTMTOT}" -echo " Avg. Time = ${RTMAVG}" - -exit - From 4fcab38ecd9e890eb1a3b48c0df1e1ceb18f02c6 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 11:50:07 -0400 Subject: [PATCH 363/375] Delete CCTM/scripts/run_cctm_cracmm_2018_4LISTOS1.csh --- .../scripts/run_cctm_cracmm_2018_4LISTOS1.csh | 845 ------------------ 1 file changed, 845 deletions(-) delete mode 100755 CCTM/scripts/run_cctm_cracmm_2018_4LISTOS1.csh diff --git a/CCTM/scripts/run_cctm_cracmm_2018_4LISTOS1.csh b/CCTM/scripts/run_cctm_cracmm_2018_4LISTOS1.csh deleted file mode 100755 index 7e5a1119d..000000000 --- a/CCTM/scripts/run_cctm_cracmm_2018_4LISTOS1.csh +++ /dev/null @@ -1,845 +0,0 @@ -#!/bin/csh -f - -# ===================== CCTMv5.5.X Run Script ========================= -# Usage: run_cctm_cracmm_2018_4LISTOS1.csh >&! run_cctm_cracmm_2018_4LISTOS1.log & -# Slurm Usage: sbatch run_cctm_cracmm_2018_4LISTOS1.csh -# -# To report problems or request help with this script/program: -# http://www.epa.gov/cmaq (EPA CMAQ Website) -# http://www.cmascenter.org (CMAS Website) -# =================================================================== - -# =================================================================== -#> Runtime Environment Options -# =================================================================== - -echo 'Start Model Run At ' `date` - -#> Toggle Diagnostic Mode which will print verbose information to -#> standard output - setenv CTM_DIAG_LVL 0 - -#> Choose compiler and set up CMAQ environment with correct -#> libraries using config.cmaq. Options: intel | gcc | pgi - if ( ! $?compiler ) then - setenv compiler intel - endif - if ( ! $?compilerVrsn ) then - setenv compilerVrsn Empty - endif - -#> Source the config.cmaq file to set the build environment - cd ../.. - source ./config_cmaq.csh $compiler $compilerVrsn - cd CCTM/scripts - -#> Set General Parameters for Configuring the Simulation - set VRSN = v55 #> Code Version - set PROC = mpi #> serial or mpi - set MECH = cracmm2 #> Mechanism ID - set EMIS = 2018ff #> Emission Inventory Details - set APPL = 4LISTOS1 #> Application Name (e.g. Gridname) - -#> Define RUNID as any combination of parameters above or others. By default, -#> this information will be collected into this one string, $RUNID, for easy -#> referencing in output binaries and log files as well as in other scripts. - setenv RUNID ${VRSN}_${compilerString}_${APPL} - -#> Set the build directory (this is where the CMAQ executable -#> is located by default). - set BLD = ${CMAQ_HOME}/CCTM/scripts/BLD_CCTM_${VRSN}_${compilerString} - set EXEC = CCTM_${VRSN}.exe - -#> Output Each line of Runscript to Log File - if ( $CTM_DIAG_LVL != 0 ) set echo - -#> Set Working, Input, and Output Directories - setenv WORKDIR ${CMAQ_HOME}/CCTM/scripts #> Working Directory. Where the runscript is. - setenv OUTDIR ${CMAQ_DATA}/output_CCTM_${RUNID} #> Output Directory - setenv INPDIR /work/MOD3DATA/2018_4LISTOS1 #> Input Directory, files retrieved with agetscript.csh in INPDIR - setenv LOGDIR ${OUTDIR}/LOGS #> Log Directory Location - setenv NMLpath ${BLD} #> Location of Namelists. Common places are: - #> ${WORKDIR} | ${CCTM_SRC}/MECHS/${MECH} | ${BLD} - - echo "" - echo "Working Directory is $WORKDIR" - echo "Build Directory is $BLD" - echo "Output Directory is $OUTDIR" - echo "Log Directory is $LOGDIR" - echo "Executable Name is $EXEC" - -# ===================================================================== -#> CCTM Configuration Options -# ===================================================================== - -#> Set Start and End Days for looping - setenv NEW_START TRUE #> Set to FALSE for model restart - set START_DATE = "2018-05-02" #> beginning date - set END_DATE = "2018-08-31" #> ending date - -#> Set Timestepping Parameters -set STTIME = 000000 #> beginning GMT time (HHMMSS) -set NSTEPS = 240000 #> time duration (HHMMSS) for this run -set TSTEP = 010000 #> output time step interval (HHMMSS) - -#> Horizontal domain decomposition -if ( $PROC == serial ) then - setenv NPCOL_NPROW "1 1"; set NPROCS = 1 # single processor setting -else - @ NPCOL = 32; @ NPROW = 8 - @ NPROCS = $NPCOL * $NPROW - setenv NPCOL_NPROW "$NPCOL $NPROW"; -endif - -#> Define Execution ID: e.g. [CMAQ-Version-Info]_[User]_[Date]_[Time] -if ( ! -e ${BLD}/CCTM_${VRSN}.cfg ) then - set SHAID = "" -else - set SHAID = `grep "sha_ID" ${BLD}/CCTM_${VRSN}.cfg | cut -c 13-22` - if ( $SHAID == not_a_repo ) then - set SHAID = "" - else - set SHAID = "_sha="$SHAID - endif -endif -setenv EXECUTION_ID "CMAQ_CCTM${VRSN}${SHAID}_`id -u -n`_`date -u +%Y%m%d_%H%M%S_%N`" #> Inform IO/API of the Execution ID -echo "" -echo "---CMAQ EXECUTION ID: $EXECUTION_ID ---" - -#> Keep or Delete Existing Output Files -set CLOBBER_DATA = FALSE - -#> Logfile Options -#> Master Log File Name; uncomment to write standard output to a log, otherwise write to screen -#setenv LOGFILE $CMAQ_HOME/$RUNID.log -if (! -e $LOGDIR ) then - mkdir -p $LOGDIR -endif -setenv PRINT_PROC_TIME Y #> Print timing for all science subprocesses to Logfile - #> [ default: TRUE or Y ] -setenv STDOUT T #> Override I/O-API trying to write information to both the processor - #> logs and STDOUT [ options: T | F ] - -setenv GRID_NAME LISTOS4 #> check GRIDDESC file for GRID_NAME options -setenv GRIDDESC $INPDIR/GRIDDESCatv #> grid description file - -#> Retrieve the number of columns, rows, and layers in this simulation -set NZ = 35 -set NX = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f6` -set NY = `grep -A 1 ${GRID_NAME} ${GRIDDESC} | tail -1 | sed 's/ */ /g' | cut -d' ' -f7` -set NCELLS = `echo "${NX} * ${NY} * ${NZ}" | bc -l` - -#> Output Species and Layer Options - #> CONC file species; comment or set to "ALL" to write all species to CONC - setenv CONC_SPCS "O3 NO ANO3I ANO3J NO2 HCHO ISO NH3 ANH4I ANH4J ASO4I ASO4J" - setenv CONC_BLEV_ELEV " 1 1" #> CONC file layer range; comment to write all layers to CONC - - #> ACONC file species; comment or set to "ALL" to write all species to ACONC - #setenv AVG_CONC_SPCS "O3 NO CO NO2 ASO4I ASO4J NH3" - setenv AVG_CONC_SPCS "ALL" - setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC - setenv AVG_FILE_ENDTIME N #> override default beginning ACONC timestamp [ default: N ] - -#> Synchronization Time Step and Tolerance Options -setenv CTM_MAXSYNC 100 #> max sync time step (sec) [ default: 720 ] -setenv CTM_MINSYNC 20 #> min sync time step (sec) [ default: 60 ] -setenv SIGMA_SYNC_TOP 0.7 #> top sigma level thru which sync step determined [ default: 0.7 ] -#setenv ADV_HDIV_LIM 0.95 #> maximum horiz. div. limit for adv step adjust [ default: 0.9 ] -setenv CTM_ADV_CFL 0.95 #> max CFL [ default: 0.75] -#setenv RB_ATOL 1.0E-09 #> global ROS3 solver absolute tolerance [ default: 1.0E-07 ] - -#> Science Options -setenv CTM_OCEAN_CHEM Y #> Flag for ocean halogen chemistry, sea spray aerosol emissions, - #> and enhanced ozone deposition over ocean waters [ default: Y ] -setenv CTM_WB_DUST N #> use inline windblown dust emissions [ default: Y ] -setenv CTM_LTNG_NO N #> turn on lightning NOx [ default: N ] -setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], - #> otherwise revert to Kz0UT -setenv PX_VERSION Y #> WRF PX LSM -setenv CLM_VERSION N #> WRF CLM LSM -setenv NOAH_VERSION N #> WRF NOAH LSM -setenv CTM_ABFLUX N #> ammonia bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_BIDI_FERT_NH3 F #> subtract fertilizer NH3 from emissions because it will be handled - #> by the BiDi calculation [ default: Y ] -setenv CTM_HGBIDI N #> mercury bi-directional flux for in-line deposition - #> velocities [ default: N ] -setenv CTM_SFC_HONO Y #> surface HONO interaction [ default: Y ] -setenv CTM_GRAV_SETL Y #> vdiff aerosol gravitational sedimentation [ default: Y ] -setenv CTM_PVO3 N #> consider potential vorticity module for O3 transport from the stratosphere - #> [default: N] - -setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions [ default: N ] -setenv CTM_BIOGEMIS_MG N #> turns on MEGAN biogenic emission [ default: N ] -setenv USE_MEGAN_LAI N #> use separate LAI input file [ default: N ] -setenv BDSNP_MEGAN N #> turns on BDSNP soil NO emissions [ default: N ] - -setenv AEROSOL_OPTICS 3 #> sets method for determining aerosol optics affecting photolysis - #> frequencies ( 3 is the default value ) - #> VALUES 1 thru 3 determined Uniformly Volume Mixed spherical - #> (1-Tabular Mie; 2-Mie Calculation; 3-Case Approx to Mie Theory) - #> VALUES 4 thru 6 attempts to use core-shell mixing model when the - #> aerosol mode has signficant black carbon core otherwise use Volume Mixed - #> model where optics determined by - #> (4-Tabular Mie; 5-Mie Calculation; 6-Case Approx to Mie Theory) - - -setenv IC_AERO_M2WET F #> Specify whether or not initial condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv BC_AERO_M2WET F #> Specify whether or not boundary condition aerosol size distribution - #> is wet or dry [ default: F = dry ] -setenv IC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from initial - #> conditions [ default: T = use aerosol surface area ] -setenv BC_AERO_M2USE F #> Specify whether or not to use aerosol surface area from boundary - #> conditions [ default: T = use aerosol surface area ] - -#> Surface Tiled Aerosol and Gaseous Exchange Options -#> Only active if DepMod=stage at compile time -setenv CTM_MOSAIC N #> Output landuse specific deposition velocities [ default: N ] -setenv CTM_STAGE_P22 N #> Pleim et al. 2022 Aerosol deposition model [default: N] -setenv CTM_STAGE_E20 Y #> Emerson et al. 2020 Aerosol deposition model [default: Y] -setenv CTM_STAGE_S22 N #> Shu et al. 2022 (CMAQ v5.3) Aerosol deposition model [default: N] - -#> Vertical Extraction Options -setenv VERTEXT N -setenv VERTEXT_COORD_PATH ${WORKDIR}/lonlat.csv - -#> I/O Controls -setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ] -setenv FL_ERR_STOP N #> stop on inconsistent input files -setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ] -setenv IOAPI_OFFSET_64 YES #> support large timestep records (>2GB/timestep record) [ options: YES | NO ] -setenv IOAPI_CHECK_HEADERS N #> check file headers [ options: Y | N ] -setenv CTM_EMISCHK N #> Abort CMAQ if missing surrogates from emissions Input files - # ATV, 12/19/2019: Y (this means that if I fudged up the - # EmissControl file with the mapping, it'll crash it) -setenv EMISDIAG F #> Print Emission Rates at the output time step after they have been - #> scaled and modified by the user Rules [options: F | T or 2D | 3D | 2DSUM ] - #> Individual streams can be modified using the variables: - #> GR_EMIS_DIAG_## | STK_EMIS_DIAG_## | BIOG_EMIS_DIAG - #> MG_EMIS_DIAG | LTNG_EMIS_DIAG | DUST_EMIS_DIAG - #> SEASPRAY_EMIS_DIAG - #> Note that these diagnostics are different than other emissions diagnostic - #> output because they occur after scaling. - -#> Diagnostic Output Flags -setenv CTM_CKSUM Y #> checksum report [ default: Y ] -setenv CLD_DIAG N #> cloud diagnostic file [ default: N ] - -setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ] -setenv NLAYS_PHOTDIAG "1" #> Number of layers for PHOTDIAG2 and PHOTDIAG3 from - #> Layer 1 to NLAYS_PHOTDIAG [ default: all layers ] -#setenv NWAVE_PHOTDIAG "294 303 310 316 333 381 607" #> Wavelengths written for variables - #> in PHOTDIAG2 and PHOTDIAG3 - #> [ default: all wavelengths ] - -setenv CTM_SSEMDIAG N #> sea-spray emissions diagnostic file [ default: N ] -setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; - #> Ignore if CTM_WB_DUST = N -setenv CTM_DEPV_FILE N #> deposition velocities diagnostic file [ default: N ] -setenv VDIFF_DIAG_FILE N #> vdiff & possibly aero grav. sedimentation diagnostic file [ default: N ] -setenv LTNGDIAG N #> lightning diagnostic file [ default: N ] -setenv B3GTS_DIAG N #> BEIS mass emissions diagnostic file [ default: N ] -setenv CTM_WVEL Y #> save derived vertical velocity component to conc - #> file [ default: Y ] - -# ===================================================================== -#> Input Directories and Filenames -# ===================================================================== - -set ICpath = ${INPDIR}/icbc/cracmm1 #> initial conditions input directory -set BCpath = $ICpath #> boundary conditions input directory -set EMISpath = $INPDIR/emis/cracmmv0_21_20211001 #> emissions input directory -set IN_PTpath = $EMISpath/cmaq_ready_point #> point source emissions input directory -#set IN_LTpath = $INPDIR/lightning #> lightning NOx input directory -set METpath = $INPDIR/met #> meteorology input directory -#set JVALpath = $INPDIR/jproc #> offline photolysis rate table directory -set OMIpath = $BLD #> ozone column data for the photolysis model -set LUpath = $INPDIR/surface #> BELD landuse data for windblown dust model -#set SZpath = $INPDIR/ #> surf zone file for in-line seaspray emissions - -# ===================================================================== -#> Begin Loop Through Simulation Days -# ===================================================================== -set rtarray = "" - -set TODAYG = ${START_DATE} -set TODAYJ = `date -ud "${START_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set START_DAY = ${TODAYJ} -set STOP_DAY = `date -ud "${END_DATE}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ -set NDAYS = 0 - -while ($TODAYJ <= $STOP_DAY ) #>Compare dates in terms of YYYYJJJ - - set NDAYS = `echo "${NDAYS} + 1" | bc -l` - - #> Retrieve Calendar day Information - set YYYYMMDD = `date -ud "${TODAYG}" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD - set YYYYMM = `date -ud "${TODAYG}" +%Y%m` #> Convert YYYY-MM-DD to YYYYMM - set YYYY = `date -ud "${TODAYG}" +%Y` #> Convert YYYY-MM-DD to YYYY - set YYMMDD = `date -ud "${TODAYG}" +%y%m%d` #> Convert YYYY-MM-DD to YYMMDD - set MM = `date -ud "${TODAYG}" +%m` #> Convert YYYY-MM-DD to MM - set YYYYJJJ = $TODAYJ - - #> Calculate Yesterday's Date - set YESTERDAY = `date -ud "${TODAYG}-1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYJJJ - -# ===================================================================== -#> Set Output String and Propagate Model Configuration Documentation -# ===================================================================== - echo "" - echo "Set up input and output files for Day ${TODAYG}." - - #> set output file name extensions - setenv CTM_APPL ${RUNID}_${YYYYMMDD} - - #> Copy Model Configuration To Output Folder - if ( ! -d "$OUTDIR" ) mkdir -p $OUTDIR - cp $BLD/CCTM_${VRSN}.cfg $OUTDIR/CCTM_${CTM_APPL}.cfg - -# ===================================================================== -#> Input Files (Some are Day-Dependent) -# ===================================================================== - - #> Initial conditions - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ICFILE ICON_v532_LISTOS4_cracmm_20180502_NO_IEPOXP.ncf - setenv INIT_MEDC_1 notused - setenv INITIAL_RUN Y #related to restart soil information file - else - set ICpath = $OUTDIR - setenv ICFILE CCTM_CGRID_${RUNID}_${YESTERDAY}.nc - setenv INIT_MEDC_1 $ICpath/CCTM_MEDIA_CONC_${RUNID}_${YESTERDAY} - setenv INITIAL_RUN N - endif - - #> Boundary conditions - set BCFILE = BCON_v532_LISTOS4_cracmm_${YYYYMMDD}.ncf - - #> Off-line photolysis rates - #set JVALfile = JTABLE_${YYYYJJJ} - - #> Ozone column data - set OMIfile = OMI_1979_to_2019.dat - - #> Optics file - set OPTfile = PHOT_OPTICS.dat - - #> MCIP meteorology files - setenv GRID_BDY_2D $METpath/GRIDBDY2D_${YYYYMMDD}.nc # GRID files are static, not day-specific - setenv GRID_CRO_2D $METpath/GRIDCRO2D_${YYYYMMDD}.nc - #setenv GRID_CRO_3D $METpath/GRIDCRO3D_${YYMMDD}.nc - setenv GRID_DOT_2D $METpath/GRIDDOT2D_${YYYYMMDD}.nc - setenv MET_CRO_2D $METpath/METCRO2D_${YYYYMMDD}.nc - setenv MET_CRO_3D $METpath/METCRO3D_${YYYYMMDD}.nc - setenv MET_DOT_3D $METpath/METDOT3D_${YYYYMMDD}.nc - setenv MET_BDY_3D $METpath/METBDY3D_${YYYYMMDD}.nc - setenv LUFRAC_CRO $METpath/LUFRAC_CRO_${YYYYMMDD}.nc - - #> Emissions Control File - #> - #> IMPORTANT NOTE - #> - #> The emissions control file defined below is an integral part of controlling the behavior of the model simulation. - #> Among other things, it controls the mapping of species in the emission files to chemical species in the model and - #> several aspects related to the simulation of organic aerosols. - #> Please carefully review the emissions control file to ensure that it is configured to be consistent with the assumptions - #> made when creating the emission files defined below and the desired representation of organic aerosols. - #> For further information, please see: - #> + AERO7 Release Notes section on 'Required emission updates': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Release_Notes/aero7_overview.md - #> + CMAQ User's Guide section 6.9.3 on 'Emission Compatability': - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/CMAQ_UG_ch06_model_configuration_options.md#6.9.3_Emission_Compatability - #> + Emission Control (DESID) Documentation in the CMAQ User's Guide: - #> https://github.com/USEPA/CMAQ/blob/master/DOCS/Users_Guide/Appendix/CMAQ_UG_appendixB_emissions_control.md - #> - setenv DESID_CTRL_NML ${BLD}/CMAQ_Control_DESID.nml - setenv DESID_CHEM_CTRL_NML ${BLD}/CMAQ_Control_DESID_${MECH}.nml - - #> The following namelist configures aggregated output (via the Explicit and Lumped - #> Air Quality Model Output (ELMO) Module), domain-wide budget output, and chemical - #> family output. - setenv MISC_CTRL_NML ${BLD}/CMAQ_Control_Misc.nml - - #> The following namelist controls the mapping of meteorological land use types and the NH3 and Hg emission - #> potentials - setenv STAGECTRL_NML ${BLD}/CMAQ_Control_STAGE.nml - - - #> Spatial Masks For Emissions Scaling - setenv CMAQ_MASKS ${LUpath}/OCEAN_${MM}_L3m_MC_CHL_chlor_a_LISTOS4.nc #> horizontal grid-dependent surf zone file - - #> Determine Representative Emission Days - set EMDATES = $INPDIR/emis/smk_dates/smk_merge_dates_${YYYYMM}.txt - set intable = `grep "^${YYYYMMDD}" $EMDATES` - set Date = `echo $intable[1] | cut -d, -f1` - set aveday_N = `echo $intable[2] | cut -d, -f1` - set aveday_Y = `echo $intable[3] | cut -d, -f1` - set mwdss_N = `echo $intable[4] | cut -d, -f1` - set mwdss_Y = `echo $intable[5] | cut -d, -f1` - set week_N = `echo $intable[6] | cut -d, -f1` - set week_Y = `echo $intable[7] | cut -d, -f1` - set all = `echo $intable[8] | cut -d, -f1` - - #> Emissions - set STKCASEG = 4LISTOS1_2018ff_18j_WR616 # Stack Group Version Label - set STKCASEET = 4LISTOS1_cmaq_cracmmv0_21_2018ff_18j_WR616 # Emission Version Label - - #> Gridded Emissions Files - setenv N_EMIS_GR 5 - setenv GR_EMIS_001 ${EMISpath}/cmaq_ready_area/aircraft/emis_mole_aircraft_${week_Y}_${STKCASEET}.ncf - setenv GR_EMIS_002 ${EMISpath}/cmaq_ready_area/np_diesel/emis_mole_np_diesel_${YYYYMMDD}_${STKCASEET}.ncf - setenv GR_EMIS_003 ${EMISpath}/cmaq_ready_area/np_gasoline/emis_mole_np_gasoline_${YYYYMMDD}_${STKCASEET}.ncf - setenv GR_EMIS_004 ${EMISpath}/cmaq_ready_area/np_other/emis_mole_np_other_${YYYYMMDD}_${STKCASEET}.ncf - setenv GR_EMIS_005 ${EMISpath}/cmaq_ready_area/np_solvents/emis_mole_np_solvents_${YYYYMMDD}_${STKCASEET}.ncf - - #> Gridden emission labels - setenv GR_EMIS_LAB_001 GRIDDED_US_AIRCRAFT - setenv GR_EMIS_LAB_002 GRIDDED_DIESEL - setenv GR_EMIS_LAB_003 GRIDDED_GASOLINE - setenv GR_EMIS_LAB_004 GRIDDED_OTHER - setenv GR_EMIS_LAB_005 GRIDDED_SOLVENTS - - #> Allow for files to be used on other dates? - setenv GR_EM_SYM_DATE_001 T - setenv GR_EM_SYM_DATE_002 F - setenv GR_EM_SYM_DATE_003 F - setenv GR_EM_SYM_DATE_004 F - setenv GR_EM_SYM_DATE_005 F - - #> In-line point emissions configuration - setenv N_EMIS_PT 6 #> Number of elevated source groups - # Time-Independent Stack Parameters for Inline Point Sources - setenv STK_GRPS_001 $IN_PTpath/airports_can/stack_groups_airports_can_${STKCASEG}.ncf - setenv STK_GRPS_002 $IN_PTpath/all_fire/stack_groups_all_fire_${YYYYMMDD}_${STKCASEG}.ncf - setenv STK_GRPS_003 $IN_PTpath/cmv_4/stack_groups_cmv_4_${STKCASEG}.ncf - setenv STK_GRPS_004 $IN_PTpath/othpt_solv/stack_groups_othpt_solv_${STKCASEG}.ncf - setenv STK_GRPS_005 $IN_PTpath/pt_other_nonfire/stack_groups_pt_other_nonfire_${STKCASEG}.ncf - setenv STK_GRPS_006 $IN_PTpath/pt_solvents/stack_groups_pt_solvents_${STKCASEG}.ncf - - setenv LAYP_STTIME $STTIME - setenv LAYP_NSTEPS $NSTEPS - - # Emission Rates for Inline Point Sources - setenv STK_EMIS_001 $IN_PTpath/airports_can/inln_mole_airports_can_${mwdss_N}_${STKCASEET}.ncf - setenv STK_EMIS_002 $IN_PTpath/all_fire/inln_mole_all_fire_${YYYYMMDD}_${STKCASEET}.ncf - setenv STK_EMIS_003 $IN_PTpath/cmv_4/inln_mole_cmv_4_${YYYYMMDD}_${STKCASEET}.ncf - setenv STK_EMIS_004 $IN_PTpath/othpt_solv/inln_mole_othpt_solv_${mwdss_N}_${STKCASEET}.ncf - setenv STK_EMIS_005 $IN_PTpath/pt_other_nonfire/inln_mole_pt_other_nonfire_${YYYYMMDD}_${STKCASEET}.ncf - setenv STK_EMIS_006 $IN_PTpath/pt_solvents/inln_mole_pt_solvents_${mwdss_Y}_${STKCASEET}.ncf - setenv LAYP_STDATE $YYYYJJJ - - # Label Each Emissions Stream - setenv STK_EMIS_LAB_001 PT_CANADA_AIRPORTS - setenv STK_EMIS_LAB_002 PT_FIRE - setenv STK_EMIS_LAB_003 PT_CMV - setenv STK_EMIS_LAB_004 PT_CANADA_SOLVENTS - setenv STK_EMIS_LAB_005 PT_OTHER - setenv STK_EMIS_LAB_006 PT_US_SOLVENTS # duplicative with VCPy - - # Allow CMAQ to Use Point Source files with dates that do not - # match the internal model date - # To change default behaviour please see Users Guide for EMIS_SYM_DATE - setenv STK_EM_SYM_DATE_001 T - setenv STK_EM_SYM_DATE_002 F - setenv STK_EM_SYM_DATE_003 F - setenv STK_EM_SYM_DATE_004 T - setenv STK_EM_SYM_DATE_005 F - setenv STK_EM_SYM_DATE_006 T - - #> Lightning NOx configuration - if ( $CTM_LTNG_NO == 'Y' ) then - setenv LTNGNO "InLine" #> set LTNGNO to "Inline" to activate in-line calculation - - #> In-line lightning NOx options - setenv USE_NLDN Y #> use hourly NLDN strike file [ default: Y ] - if ( $USE_NLDN == Y ) then - setenv NLDN_STRIKES ${IN_LTpath}/NLDN.12US1.${YYYYMMDD}.ioapi - endif - setenv LTNGPARMS_FILE ${IN_LTpath}/LTNG_AllParms_12US1.ncf #> lightning parameter file; ignore if LTNGPARAM = N - endif - - #> In-line biogenic emissions configuration - if ( $CTM_BIOGEMIS_BE == 'Y' ) then - set IN_BEISpath = ${INPDIR} - setenv GSPRO $BLD/gspro_biogenics.txt - setenv BEIS_NORM_EMIS $IN_BEISpath/beis/b3grd_4LISTOS1_2018ff_18j_WR401_fine.ncf - setenv BIOSW_YN Y #> use frost date switch [ default: Y ] - setenv BIOSEASON $IN_BEISpath/beis/bioseason.cmaq.2018_4LISTOS1.ncf - #> ignore season switch file if BIOSW_YN = N - setenv SUMMER_YN Y #> Use summer normalized emissions? [ default: Y ] - setenv PX_VERSION Y #> MCIP is PX version? [ default: N ] - setenv BEIS_SOILINP $OUTDIR/CCTM_BSOILOUT_${RUNID}_${YESTERDAY}.nc - #> Biogenic NO soil input file; ignore if INITIAL_RUN = Y - endif - if ( $CTM_BIOGEMIS_MG == 'Y' ) then - echo "Error: MEGAN Inputs unavailable for 2018 4LIST1 case" - exit() - endif - - - #> Windblown dust emissions configuration - if ( $CTM_WB_DUST == 'Y' ) then - # Input variables for BELD3 Landuse option - setenv DUST_LU_1 $LUpath/beld3_12US1_459X299_output_a.ncf - setenv DUST_LU_2 $LUpath/beld3_12US1_459X299_output_tot.ncf - endif - - #> In-line sea spray emissions configuration - setenv OCEAN_1 ${LUpath}/OCEAN_${MM}_L3m_MC_CHL_chlor_a_LISTOS4.nc #> horizontal grid-dependent surf zone file - - #> Bidirectional ammonia configuration - if ( $CTM_ABFLUX == 'Y' ) then - setenv E2C_SOIL ${LUpath}/epic_festc1.4_20180516/2016_US1_soil_bench.nc - setenv E2C_CHEM ${LUpath}/epic_festc1.4_20180516/2016_US1_time${YYYYMMDD}_bench.nc - setenv E2C_CHEM_YEST ${LUpath}/epic_festc1.4_20180516/2016_US1_time${YESTERDAY}_bench.nc - setenv E2C_LU ${LUpath}/beld4_12kmCONUS_2011nlcd_bench.nc - endif - -#> Inline Process Analysis - setenv CTM_PROCAN N #> use process analysis [ default: N] - if ( $?CTM_PROCAN ) then # $CTM_PROCAN is defined - if ( $CTM_PROCAN == 'Y' || $CTM_PROCAN == 'T' ) then -#> process analysis global column, row and layer ranges -# setenv PA_BCOL_ECOL "10 90" # default: all columns -# setenv PA_BROW_EROW "10 80" # default: all rows -# setenv PA_BLEV_ELEV "1 4" # default: all levels - setenv PACM_INFILE ${NMLpath}/pa_${MECH}.ctl - setenv PACM_REPORT $OUTDIR/"PA_REPORT".${YYYYMMDD} - endif - endif - -#> Integrated Source Apportionment Method (ISAM) Options - setenv CTM_ISAM N - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - setenv SA_IOLIST ${WORKDIR}/isam_control.txt - setenv ISAM_BLEV_ELEV " 1 1" - setenv AISAM_BLEV_ELEV " 1 1" - - #> Set Up ISAM Initial Condition Flags - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv ISAM_NEW_START Y - setenv ISAM_PREVDAY - else - setenv ISAM_NEW_START N - setenv ISAM_PREVDAY "$OUTDIR/CCTM_SA_CGRID_${RUNID}_${YESTERDAY}.nc" - endif - - #> Set Up ISAM Output Filenames - setenv SA_ACONC_1 "$OUTDIR/CCTM_SA_ACONC_${CTM_APPL}.nc -v" - setenv SA_CONC_1 "$OUTDIR/CCTM_SA_CONC_${CTM_APPL}.nc -v" - setenv SA_DD_1 "$OUTDIR/CCTM_SA_DRYDEP_${CTM_APPL}.nc -v" - setenv SA_WD_1 "$OUTDIR/CCTM_SA_WETDEP_${CTM_APPL}.nc -v" - setenv SA_CGRID_1 "$OUTDIR/CCTM_SA_CGRID_${CTM_APPL}.nc -v" - - #> Set optional ISAM regions files -# setenv ISAM_REGIONS /work/MOD3EVAL/nsu/isam_v53/CCTM/scripts/input/RGN_ISAM.nc - - #> Options used to favor tracked species in reactions for Ozone-NOx chemistry - setenv ISAM_O3_WEIGHTS 5 # weights for tracked species Default is 5 - # OPTIONS - # 1 does not weight any species - # 2 weights NOx and subset of NOz species - # 3 uses with from option 2 plus weight OVOC species, organic radicals and operators - # 4 weight OVOC species, organic radicals and operators - # 5 toggles between two weighting set based on VOC and NOx limited ozone production - # Below options only used if ISAM_O3_WEIGHTS set to 5 - setenv ISAM_NOX_CASE 2 # weights for tracked species when ozone production is NOx limited. Default is 2 - setenv ISAM_VOC_CASE 4 # weights for tracked species when ozone production is VOC limited. Default is 4 - setenv VOC_NOX_TRANS 0.35 # value of Prod H2O2 over Prod HNO3 less than where - # ISAM_VOC_CASE weights are used. Otherwise, ISAM_NOX_CASE - # weights are used. Default is 0.35 - - - endif - endif - -#> Sulfur Tracking Model (STM) - setenv STM_SO4TRACK N #> sulfur tracking [ default: N ] - if ( $?STM_SO4TRACK ) then - if ( $STM_SO4TRACK == 'Y' || $STM_SO4TRACK == 'T' ) then - - #> option to normalize sulfate tracers [ default: Y ] - setenv STM_ADJSO4 Y - - endif - endif - -#> Decoupled Direct Method in 3D (DDM-3D) Options - setenv CTM_DDM3D N # Sets up requisite script settings for DDM-3D (default is N/F) - # Additionally requires for CCTM to be compiled for DDM-3D simulations - - set NPMAX = 1 # Number of sensitivity parameters defined in SEN_INPUT - setenv SEN_INPUT ${WORKDIR}/sensinput.dat - - setenv DDM3D_HIGH N # allow higher-order sensitivity parameters in SEN_INPUT [ T | Y | F | N ] (default is N/F) - - if ($NEW_START == true || $NEW_START == TRUE ) then - setenv DDM3D_RST N # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = # sensitivity fields are initialized to 0.0 on the first hour of the first day - set S_ICfile = - else - setenv DDM3D_RST Y # begins from sensitivities from a restart file [ T | Y | F | N ] (default is Y/T) - set S_ICpath = $OUTDIR - set S_ICfile = CCTM_SENGRID_${RUNID}_${YESTERDAY}.nc - endif - - setenv CTM_NPMAX $NPMAX - setenv CTM_SENS_1 "$OUTDIR/CCTM_SENGRID_${CTM_APPL}.nc -v" - setenv A_SENS_1 "$OUTDIR/CCTM_ASENS_${CTM_APPL}.nc -v" - setenv CTM_SWETDEP_1 "$OUTDIR/CCTM_SENWDEP_${CTM_APPL}.nc -v" - setenv CTM_SDRYDEP_1 "$OUTDIR/CCTM_SENDDEP_${CTM_APPL}.nc -v" - setenv INIT_SENS_1 $S_ICpath/$S_ICfile - -# ===================================================================== -#> Output Files -# ===================================================================== - - #> set output file names - setenv S_CGRID "$OUTDIR/CCTM_CGRID_${CTM_APPL}.nc" #> 3D Inst. Concentrations - setenv CTM_CONC_1 "$OUTDIR/CCTM_CONC_${CTM_APPL}.nc -v" #> On-Hour Concentrations - setenv A_CONC_1 "$OUTDIR/CCTM_ACONC_${CTM_APPL}.nc -v" #> Hourly Avg. Concentrations - setenv MEDIA_CONC "$OUTDIR/CCTM_MEDIA_CONC_${CTM_APPL}.nc -v" #> NH3 Conc. in Media - setenv CTM_DRY_DEP_1 "$OUTDIR/CCTM_DRYDEP_${CTM_APPL}.nc -v" #> Hourly Dry Deposition - setenv CTM_DEPV_DIAG "$OUTDIR/CCTM_DEPV_${CTM_APPL}.nc -v" #> Dry Deposition Velocities - setenv B3GTS_S "$OUTDIR/CCTM_B3GTS_S_${CTM_APPL}.nc -v" #> Biogenic Emissions - setenv BEIS_SOILOUT "$OUTDIR/CCTM_BSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv MEGAN_SOILOUT "$OUTDIR/CCTM_MSOILOUT_${CTM_APPL}.nc" #> Soil Emissions - setenv CTM_WET_DEP_1 "$OUTDIR/CCTM_WETDEP1_${CTM_APPL}.nc -v" #> Wet Dep From All Clouds - setenv CTM_WET_DEP_2 "$OUTDIR/CCTM_WETDEP2_${CTM_APPL}.nc -v" #> Wet Dep From SubGrid Clouds - setenv CTM_ELMO_1 "$OUTDIR/CCTM_ELMO_${CTM_APPL}.nc -v" #> On-Hour Particle Diagnostics - setenv CTM_AELMO_1 "$OUTDIR/CCTM_AELMO_${CTM_APPL}.nc -v" #> Hourly Avg. Particle Diagnostics - setenv CTM_RJ_1 "$OUTDIR/CCTM_PHOTDIAG1_${CTM_APPL}.nc -v" #> 2D Surface Summary from Inline Photolysis - setenv CTM_RJ_2 "$OUTDIR/CCTM_PHOTDIAG2_${CTM_APPL}.nc -v" #> 3D Photolysis Rates - setenv CTM_RJ_3 "$OUTDIR/CCTM_PHOTDIAG3_${CTM_APPL}.nc -v" #> 3D Optical and Radiative Results from Photolysis - setenv CTM_SSEMIS_1 "$OUTDIR/CCTM_SSEMIS_${CTM_APPL}.nc -v" #> Sea Spray Emissions - setenv CTM_DUST_EMIS_1 "$OUTDIR/CCTM_DUSTEMIS_${CTM_APPL}.nc -v" #> Dust Emissions - setenv CTM_BUDGET "$OUTDIR/CCTM_BUDGET_${CTM_APPL}.txt -v" #> Budget - setenv CTM_IPR_1 "$OUTDIR/CCTM_PA_1_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_2 "$OUTDIR/CCTM_PA_2_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IPR_3 "$OUTDIR/CCTM_PA_3_${CTM_APPL}.nc -v" #> Process Analysis - setenv CTM_IRR_1 "$OUTDIR/CCTM_IRR_1_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_2 "$OUTDIR/CCTM_IRR_2_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_IRR_3 "$OUTDIR/CCTM_IRR_3_${CTM_APPL}.nc -v" #> Chem Process Analysis - setenv CTM_DRY_DEP_MOS "$OUTDIR/CCTM_DDMOS_${CTM_APPL}.nc -v" #> Dry Dep - setenv CTM_DEPV_MOS "$OUTDIR/CCTM_DEPVMOS_${CTM_APPL}.nc -v" #> Dry Dep Velocity - setenv CTM_VDIFF_DIAG "$OUTDIR/CCTM_VDIFF_DIAG_${CTM_APPL}.nc -v" #> Vertical Dispersion Diagnostic - setenv CTM_VSED_DIAG "$OUTDIR/CCTM_VSED_DIAG_${CTM_APPL}.nc -v" #> Particle Grav. Settling Velocity - setenv CTM_LTNGDIAG_1 "$OUTDIR/CCTM_LTNGHRLY_${CTM_APPL}.nc -v" #> Hourly Avg Lightning NO - setenv CTM_LTNGDIAG_2 "$OUTDIR/CCTM_LTNGCOL_${CTM_APPL}.nc -v" #> Column Total Lightning NO - setenv CTM_VEXT_1 "$OUTDIR/CCTM_VEXT_${CTM_APPL}.nc -v" #> On-Hour 3D Concs at select sites - - #> set floor file (neg concs) - setenv FLOOR_FILE ${OUTDIR}/FLOOR_${CTM_APPL}.txt - - #> look for existing log files and output files - ( ls CTM_LOG_???.${CTM_APPL} > buff.txt ) >& /dev/null - ( ls ${LOGDIR}/CTM_LOG_???.${CTM_APPL} >> buff.txt ) >& /dev/null - set log_test = `cat buff.txt`; rm -f buff.txt - - set OUT_FILES = (${FLOOR_FILE} ${S_CGRID} ${CTM_CONC_1} ${A_CONC_1} ${MEDIA_CONC} \ - ${CTM_DRY_DEP_1} $CTM_DEPV_DIAG $B3GTS_S $BEIS_SOILOUT $MEGAN_SOILOUT $CTM_WET_DEP_1\ - $CTM_WET_DEP_2 $CTM_ELMO_1 $CTM_AELMO_1 \ - $CTM_RJ_1 $CTM_RJ_2 $CTM_RJ_3 $CTM_SSEMIS_1 $CTM_DUST_EMIS_1 $CTM_IPR_1 $CTM_IPR_2 \ - $CTM_IPR_3 $CTM_BUDGET $CTM_IRR_1 $CTM_IRR_2 $CTM_IRR_3 $CTM_DRY_DEP_MOS \ - $CTM_DEPV_MOS $CTM_VDIFF_DIAG $CTM_VSED_DIAG $CTM_LTNGDIAG_1 $CTM_LTNGDIAG_2 $CTM_VEXT_1 ) - if ( $?CTM_ISAM ) then - if ( $CTM_ISAM == 'Y' || $CTM_ISAM == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${SA_ACONC_1} ${SA_CONC_1} ${SA_DD_1} ${SA_WD_1} \ - ${SA_CGRID_1} ) - endif - endif - if ( $?CTM_DDM3D ) then - if ( $CTM_DDM3D == 'Y' || $CTM_DDM3D == 'T' ) then - set OUT_FILES = (${OUT_FILES} ${CTM_SENS_1} ${A_SENS_1} ${CTM_SWETDEP_1} ${CTM_SDRYDEP_1} ) - endif - endif - set OUT_FILES = `echo $OUT_FILES | sed "s; -v;;g" ` - ( ls $OUT_FILES > buff.txt ) >& /dev/null - set out_test = `cat buff.txt`; rm -f buff.txt - - #> delete previous output if requested - if ( $CLOBBER_DATA == true || $CLOBBER_DATA == TRUE ) then - echo - echo "Existing Logs and Output Files for Day ${TODAYG} Will Be Deleted" - - #> remove previous log files - foreach file ( ${log_test} ) - #echo "Deleting log file: $file" - /bin/rm -f $file - end - - #> remove previous output files - foreach file ( ${out_test} ) - #echo "Deleting output file: $file" - /bin/rm -f $file - end - /bin/rm -f ${OUTDIR}/CCTM_DESID*${CTM_APPL}.nc - - else - #> error if previous log files exist - if ( "$log_test" != "" ) then - echo "*** Logs exist - run ABORTED ***" - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - - #> error if previous output files exist - if ( "$out_test" != "" ) then - echo "*** Output Files Exist - run will be ABORTED ***" - foreach file ( $out_test ) - echo " cannot delete $file" - end - echo "*** To overide, set CLOBBER_DATA = TRUE in run_cctm.csh ***" - echo "*** and these files will be automatically deleted. ***" - exit 1 - endif - endif - - #> for the run control ... - setenv CTM_STDATE $YYYYJJJ - setenv CTM_STTIME $STTIME - setenv CTM_RUNLEN $NSTEPS - setenv CTM_TSTEP $TSTEP - setenv INIT_CONC_1 $ICpath/$ICFILE - setenv BNDY_CONC_1 $BCpath/$BCFILE - setenv OMI $OMIpath/$OMIfile - setenv MIE_TABLE $OUTDIR/mie_table_coeffs_${compilerString}.txt - setenv OPTICS_DATA $OMIpath/$OPTfile - #setenv XJ_DATA $JVALpath/$JVALfile - set TR_DVpath = $METpath - set TR_DVfile = $MET_CRO_2D - - #> species defn & photolysis - setenv gc_matrix_nml ${NMLpath}/GC_$MECH.nml - setenv ae_matrix_nml ${NMLpath}/AE_$MECH.nml - setenv nr_matrix_nml ${NMLpath}/NR_$MECH.nml - setenv tr_matrix_nml ${NMLpath}/Species_Table_TR_0.nml - - #> check for photolysis input data - setenv CSQY_DATA ${NMLpath}/CSQY_DATA_$MECH - - if (! (-e $CSQY_DATA ) ) then - echo " $CSQY_DATA not found " - exit 1 - endif - if (! (-e $OPTICS_DATA ) ) then - echo " $OPTICS_DATA not found " - exit 1 - endif - -# =================================================================== -#> Execution Portion -# =================================================================== - - #> Print attributes of the executable - if ( $CTM_DIAG_LVL != 0 ) then - ls -l $BLD/$EXEC - size $BLD/$EXEC - unlimit - limit - endif - - #> Print Startup Dialogue Information to Standard Out - echo - echo "CMAQ Processing of Day $YYYYMMDD Began at `date`" - echo - - #> Executable call for single PE, uncomment to invoke - #( /usr/bin/time -p $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Executable call for multi PE, configure for your system - #set MPI = /home/local-rhel7/apps/intel/compilers_and_libraries_2019.5.281/linux/mpi/intel64/bin - #set MPIRUN = $MPI/mpirun - ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt - - #> Harvest Timing Output so that it may be reported below - set rtarray = "${rtarray} `tail -3 buff_${EXECUTION_ID}.txt | grep -Eo '[+-]?[0-9]+([.][0-9]+)?' | head -1` " - rm -rf buff_${EXECUTION_ID}.txt - - #> Abort script if abnormal termination - if ( ! -e $S_CGRID ) then - echo "" - echo "**************************************************************" - echo "** Runscript Detected an Error: CGRID file was not written. **" - echo "** This indicates that CMAQ was interrupted or an issue **" - echo "** exists with writing output. The runscript will now **" - echo "** abort rather than proceeding to subsequent days. **" - echo "**************************************************************" - break - endif - - #> Print Concluding Text - echo - echo "CMAQ Processing of Day $YYYYMMDD Finished at `date`" - echo - echo "\\\\\=====\\\\\=====\\\\\=====\\\\\=====/////=====/////=====/////=====/////" - echo - -# =================================================================== -#> Finalize Run for This Day and Loop to Next Day -# =================================================================== - - #> Save Log Files and Move on to Next Simulation Day - mv CTM_LOG_???.${CTM_APPL} $LOGDIR - if ( $CTM_DIAG_LVL != 0 ) then - mv CTM_DIAG_???.${CTM_APPL} $LOGDIR - endif - - #> The next simulation day will, by definition, be a restart - setenv NEW_START false - - #> Increment both Gregorian and Julian Days - set TODAYG = `date -ud "${TODAYG}+1days" +%Y-%m-%d` #> Add a day for tomorrow - set TODAYJ = `date -ud "${TODAYG}" +%Y%j` #> Convert YYYY-MM-DD to YYYYJJJ - -end #Loop to the next Simulation Day - -# =================================================================== -#> Generate Timing Report -# =================================================================== -set RTMTOT = 0 -foreach it ( `seq ${NDAYS}` ) - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - set RTMTOT = `echo "${RTMTOT} + ${rt}" | bc -l` -end - -set RTMAVG = `echo "scale=2; ${RTMTOT} / ${NDAYS}" | bc -l` -set RTMTOT = `echo "scale=2; ${RTMTOT} / 1" | bc -l` - -echo -echo "==================================" -echo " ***** CMAQ TIMING REPORT *****" -echo "==================================" -echo "Start Day: ${START_DATE}" -echo "End Day: ${END_DATE}" -echo "Number of Simulation Days: ${NDAYS}" -echo "Domain Name: ${GRID_NAME}" -echo "Number of Grid Cells: ${NCELLS} (ROW x COL x LAY)" -echo "Number of Layers: ${NZ}" -echo "Number of Processes: ${NPROCS}" -echo " All times are in seconds." -echo -echo "Num Day Wall Time" -set d = 0 -set day = ${START_DATE} -foreach it ( `seq ${NDAYS}` ) - # Set the right day and format it - set d = `echo "${d} + 1" | bc -l` - set n = `printf "%02d" ${d}` - - # Choose the correct time variables - set rt = `echo ${rtarray} | cut -d' ' -f${it}` - - # Write out row of timing data - echo "${n} ${day} ${rt}" - - # Increment day for next loop - set day = `date -ud "${day}+1days" +%Y-%m-%d` -end -echo " Total Time = ${RTMTOT}" -echo " Avg. Time = ${RTMAVG}" - -exit From 3c41be32190299c1a69213e5571786bed8463360 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 12:34:39 -0400 Subject: [PATCH 364/375] Update README.md Update benchmark output link for CRACMM2 case --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e39fa6cd6..94cf4b47e 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ In addition, a full set of inputs for 2018 are provided for the 12US1 domain (29 |v5.4 CB6r5 | Input (6.1 TB) | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/LDTWKH)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) || |v5.4 CB6r5 | Input (10.3 GB)| Northeast US| July 1 - 2, 2018| [Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz)|| |v5.5 CRACMM2| Input (6 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS]( https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) || -|v5.5 CRACMM2| Output (52 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS]( https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz)[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md)| +|v5.5 CRACMM2| Output (19 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS]( https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz)[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md)| |v5.5 CB6r5 M3Dry | Output (15 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) |[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md)| |v5.5 CB6r5 STAGE | Output (16 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) |[Modify the M3DRY Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md)| |v5.5-ISAM CB6r5 M3Dry | Output (52 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) |[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md)| From 9ed266426d39a4bfdcd297d6559bf705806a8ee5 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 2 Oct 2024 12:35:38 -0400 Subject: [PATCH 365/375] update --- .../Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md index fb75dce5c..638bf2bd4 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md @@ -98,12 +98,11 @@ source config_cmaq.csh gcc 9.5 ## Install the CMAQ reference input and output benchmark data Download the CMAQ two day reference input and output data for the CRACMM2 mechanism from the [AWS CMAS Data Warehouse](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. -Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: +Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input files: ``` cd $CMAQ_DATA tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input_CRACCM2.tar.gz -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output_CRACMM2.tar.gz ``` ## Compiling CMAQ From 9407cdda8601ead5003da1993214ba3267042f63 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 12:37:19 -0400 Subject: [PATCH 366/375] Update CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md --- .../Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md index 088c1f2f2..ed3efed51 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_WRF-CMAQ_Benchmark.md @@ -190,8 +190,6 @@ Download the CMAQ two day reference input data from the [CMAS Center Data Wareho - [Tips to download data from CMAS Data Warehouse](https://docs.google.com/document/d/1e7B94zFkbKygVWfrhGwEZL51jF4fGXGXZbvi6KzXYQ4) - Text files are included that provide a list of the files in the benchmark input datasets. - wget can be used to download data from the CMAS Open Data Folder on AWS - - Reference output files for WRF-CMAQv5.5 will be provided at a later date. - Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input files: From 15b0ad5f5fba8c99c912fed82f07c02ba8b342ff Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 2 Oct 2024 12:40:03 -0400 Subject: [PATCH 367/375] update --- .../Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md index 638bf2bd4..3224cd02b 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md @@ -102,7 +102,9 @@ Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and ``` cd $CMAQ_DATA +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input_CRACCM2.tar.gz +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz ``` ## Compiling CMAQ From a0e8ef458ad6aa9e3a29bc2f825c18ff350b7139 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 2 Oct 2024 12:44:05 -0400 Subject: [PATCH 368/375] update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e39fa6cd6..6ba5c71e6 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ In addition, a full set of inputs for 2018 are provided for the 12US1 domain (29 |v5.4 CB6r5 | Input (6.1 TB) | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/LDTWKH)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) || |v5.4 CB6r5 | Input (10.3 GB)| Northeast US| July 1 - 2, 2018| [Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz)|| |v5.5 CRACMM2| Input (6 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS]( https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) || -|v5.5 CRACMM2| Output (52 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS]( https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz)[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md)| +|v5.5 CRACMM2| Output (52 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS]( https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz)[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md)| |v5.5 CB6r5 M3Dry | Output (15 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) |[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md)| |v5.5 CB6r5 STAGE | Output (16 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) |[Modify the M3DRY Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md)| |v5.5-ISAM CB6r5 M3Dry | Output (52 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) |[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md)| From 863aba6e0636d2b2a1a10a95b13546a7a84125ef Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 12:44:34 -0400 Subject: [PATCH 369/375] Update CMAQ_UG_tutorial_benchmark_cracmm2_stage.md --- .../CMAQ_UG_tutorial_benchmark_cracmm2_stage.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md index fb75dce5c..c60c4d776 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md @@ -98,12 +98,13 @@ source config_cmaq.csh gcc 9.5 ## Install the CMAQ reference input and output benchmark data Download the CMAQ two day reference input and output data for the CRACMM2 mechanism from the [AWS CMAS Data Warehouse](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz). The CMAQ benchmark test case is a two day simulation for July 1-2 2018 on a 100 column x 105 row x 35 layer 12-km resolution domain over the northeast U.S. -Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input and output files: +Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and untar the two day benchmark input files: ``` cd $CMAQ_DATA +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input_CRACCM2.tar.gz -tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Output_CRACMM2.tar.gz +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz ``` ## Compiling CMAQ @@ -224,7 +225,7 @@ To configure these parameters, the Science Options within the $CMAQ_HOME/CCTM/sc After configuring the MPI settings for your Linux system, check the rest of the script to ensure the correct path, date and names are used for the input data files. Per the note above, different Linux systems have different requirements for submitting MPI jobs. The command below is an example of how to submit the CCTM run script and may differ depending on the MPI requirements of your Linux system. ``` -./run_cctm_Bench_2018_12NE3_CRACMM2.csh |& tee run_cctm_Bench_2018_12NE3_CRACMM2_STAGE.log +./run_cctm_Bench_2018_12NE3_CRACMM2.csh |& tee run_cctm_Bench_2018_12NE3_CRACMM2.log ``` ## Confirm that the Benchmark Simulation Completed @@ -267,9 +268,9 @@ To determine if CMAQ is correctly installed on your Linux system compare the res - Red Hat Enterprise Linux Server 7.3 (Maipo) (use command: cat /etc/os-release) - GNU GCC compiler version 9.1.0, 16 processors with OpenMPIv4.0.1 and I/O APIv3.2 tagged version 20200828 - Debug mode turned off (```set Debug_CCTM``` commented out in $CMAQ_HOME/CCTM/scripts/bldit_cctm.csh) -- CMAQv5.4 +- CMAQv5.5 -The CMAQv5.4 reference output data includes a set of CCTM_ACONC_\*.nc files with layer 1 average model species concentrations for each model hour for 226 variables and a set of CCTM_WETDEP1_\*.nc files with cumulative hourly wet deposition fluxes for an additional 136 variables. The CCTM_SA_ACONC_\*.nc, CCTM_SA_CGRID_\*.nc, CCTM_SA_CONC_\*.nc, CCTM_SA_WETDEP_\*.nc and CCTM_SA_DRYDEP_\*.nc are generated when you run the CMAQ-ISAM benchmark. See the [CMAQ-ISAM Tutorial](../Tutorials/CMAQ_UG_tutorial_ISAM.md) for more information. +The CMAQv5.5 reference output data includes a set of CCTM_ACONC_\*.nc files with layer 1 average model species concentrations for each model hour for 226 variables and a set of CCTM_WETDEP1_\*.nc files with cumulative hourly wet deposition fluxes for an additional 136 variables. Use your netCDF evaluation tool of choice to evaluate your benchmark results. For example, [VERDI](https://www.verdi-tool.org/) is a visualization tool to view CCTM results as tile plots. Statistical comparison of the results can be made with the I/O API Tools or R. From c942d34d1941ff01936b8e57ce44a6dc8343cfac Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 12:45:36 -0400 Subject: [PATCH 370/375] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 94cf4b47e..2dc3e42d3 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ In addition, a full set of inputs for 2018 are provided for the 12US1 domain (29 |v5.4 CB6r5 | Input (6.1 TB) | 12US1 | Jan 1 - Dec 31, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/LDTWKH)
[AWS Link](https://cmas-cmaq-modeling-platform-2018.s3.amazonaws.com/index.html) || |v5.4 CB6r5 | Input (10.3 GB)| Northeast US| July 1 - 2, 2018| [Metadata, DOI, and download instructions ](https://doi.org/10.15139/S3/BWMI8X)
[Google Drive Link](https://drive.google.com/drive/folders/1AFUB-4kzIXXoZr4hOHNBqRvy9JQ9_MDp)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_4/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz)|| |v5.5 CRACMM2| Input (6 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS]( https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz) || -|v5.5 CRACMM2| Output (19 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS]( https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz)[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md)| +|v5.5 CRACMM2| Output (19 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS]( https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz)|[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md)| |v5.5 CB6r5 M3Dry | Output (15 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) |[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md)| |v5.5 CB6r5 STAGE | Output (16 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Download Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_stage.tar.gz) |[Modify the M3DRY Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md)| |v5.5-ISAM CB6r5 M3Dry | Output (52 GB) | 12NE3 | July 1 - 2, 2018 | [Metadata, DOI, and links to data on AWS](https://doi.org/10.15139/S3/X5SZM2)
[AWS Link](https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz) |[Tutorial](DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md)| From 1e15acd30b951f26d7d5f6622c4ff54b21d51e39 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 2 Oct 2024 12:46:57 -0400 Subject: [PATCH 371/375] Update --- .../Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md index 3224cd02b..29b890026 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark_cracmm2_stage.md @@ -104,7 +104,10 @@ Copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directory, unzip and cd $CMAQ_DATA wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.5_2018_12NE3_Benchmark_cracmm2_stage_2Day_Input.tar.gz tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input_CRACCM2.tar.gz +mkdir ref_output +cd ref_output wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz +tar -xzvf output_CCTM_v55_gcc_Bench_2018_12NE3_cracmm2_stage.tar.gz ``` ## Compiling CMAQ From 6898acab12541d5287f453cf325e7fdca4817aea Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 2 Oct 2024 12:47:55 -0400 Subject: [PATCH 372/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md index 5ddc92b78..c08246b6a 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_benchmark.md @@ -104,8 +104,10 @@ Download and copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directo ``` cd $CMAQ_DATA wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz -wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz tar -xzvf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz +mkdir ref_output +cd ref_output +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz tar -xzvf output_CCTM_v55_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz ``` From 0a5077464fad7db22d2e5ddf356125877c0add69 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 2 Oct 2024 12:48:41 -0400 Subject: [PATCH 373/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md index f931cb473..40bf5219e 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_DDM3D.md @@ -179,8 +179,10 @@ Download and copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directo ``` cd $CMAQ_DATA wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz -wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz +mkdir ref_output +cd ref_output +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz tar xvzf output_CCTM_v55_DDM3D_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz ``` From 78ab5cd1deff362442aab495628c0b44e9d643d5 Mon Sep 17 00:00:00 2001 From: lizadams Date: Wed, 2 Oct 2024 12:49:38 -0400 Subject: [PATCH 374/375] update --- DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md index 921199518..b76634c3e 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_ISAM.md @@ -192,8 +192,11 @@ Download and copy the data to `$CMAQ_DATA`. Navigate to the `$CMAQ_DATA` directo ``` cd $CMAQ_DATA wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz -wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz tar xvzf CMAQv5.4_2018_12NE3_Benchmark_2Day_Input.tar.gz +mkdir ref_output +cd ref_output +wget https://cmaq-release-benchmark-data-for-easy-download.s3.amazonaws.com/v5_5/output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz +tar xzvf output_CCTM_v55_ISAM_gcc_Bench_2018_12NE3_cb6r5_ae7_aq_m3dry.tar.gz ``` The input files for the CMAQv5.4 ISAM benchmark case are the same as the benchmark inputs for the base model. Output source apportionment files associated with the sample isam_control.txt provided in this release package are included in the benchmark outputs for the base model. From 22b2b0efc7c70003be94e2ef2d57aa6641899b09 Mon Sep 17 00:00:00 2001 From: Kristen Foley Date: Wed, 2 Oct 2024 15:31:28 -0400 Subject: [PATCH 375/375] Update CMAQ_UG_tutorial_build_library_gcc_support_nc4.md --- ...UG_tutorial_build_library_gcc_support_nc4.md | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md index 786fe92eb..c098ff8d8 100644 --- a/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md +++ b/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_build_library_gcc_support_nc4.md @@ -1,15 +1,12 @@ -## Following these instructions +## Building with netCDF-4 and the Remote Data Client - https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/getting_and_building_netcdf.html - - Building with netCDF-4 and the Remote Data Client - - netCDF requires the HDF5, zlib, and curl libraries. -## This Tutorial is for the gcc 9.1.0 compiler. -## For gcc 10 and above, use the -fallow-argument-mismatch argument -## As of Aug. 28, 2020, there are now new BIN=Linux*gfort10* types and corresponding Makeinclude.Linux*gfort10* that incorporate this flag for the I/O API and M3Tools. -## The above information is from the I/O API documentation: https://www.cmascenter.org/ioapi/documentation/all_versions/html/AVAIL.html +This tutorial is based on these instructions: https://www.unidata.ucar.edu/software/netcdf/documentation/NUG/getting_and_building_netcdf.html +* netCDF requires the HDF5, zlib, and curl libraries. +* This Tutorial is for the gcc 9.1.0 compiler. +* For gcc 10 and above, use the -fallow-argument-mismatch argument + * As of Aug. 28, 2020, there are now new *BIN=Linux\*gfort10\** types and corresponding *Makeinclude.Linux\*gfort10\** that incorporate this flag for the I/O API and M3Tools. + * Source: I/O API documentation, https://www.cmascenter.org/ioapi/documentation/all_versions/html/AVAIL.html ## Versions required are at least HDF5 1.8.9, zlib 1.2.5, and curl 7.18.0 or later.