The program PROCAN creates a set of include files needed to instrument the CCTM to produce process analysis output. This program reads and interprets instructions from a command file and then generates three Fortran include files (.EXT) used by CCTM to produce the Process Analysis outputs that were requested in the commands. The process analysis commands themselves are formatted according to a simple set of rules and a free-form format. Nevertheless, each command has a special syntax that must be followed, and each command makes use of special keywords and/or operators that have specific meaning to PROCAN. The commands are of three major types: global commands, IPR commands, and IRR commands. The discussion begins first, however, with a description of some general rules for configuring PROCAN.
PROCAN configuration is implemented through the command file PACP_INFILE. The free-form format of the PROCAN command file is similar to that used by the general mechanism processor, CHEMECH. In general, white spaces are ignored and line wrap is allowed (i.e., commands can be continued on a subsequent line after a hard return). The free-form format also allows embedded comments and makes use of special symbols to indicate the type of input data. Special rules for naming species, entering labels, and specifying numerical values, such as stoichiometric coefficients and rate constant parameters, are also used. Each major component of the command file is discussed below:
This section describes the individual process analysis commands that are used to construct a PROCAN command file. In the description of these commands, the following conventions will be used. Bold type is used for PROCAN keywords and normal type for user supplied inputs. Alternative inputs are separated by vertical bars (|), and optional inputs are enclosed in braces ({}). The PROCAN commands fall into three general categories:
Table 5.16. Process Analysis Global Commands
| Command | Description |
|---|---|
| OUTPUT_DOMAIN = {LOCOL[n1] + HICOL[n2] + LOROW[n3] + HIROW[n4] + LOLEV[n5] + HILEV[n6]}; | The OUTPUT_DOMAIN command provides the capability to limit the IPR and IRR output data to a portion of the modeling domain. The ni in brackets are numbers that define the bounds of the output domain relative to the number of columns, rows, and vertical levels in the modeling domain. Thus, for example, the value for n1 must be greater than or equal to one and less than or equal to the number of columns in the domain. If any one domain specifier is omitted, the corresponding end of the modeling domain is used as a default. If the command is omitted entirely, output is generated for the entire domain. |
| DEFINE FAMILY familyname = {c1*}species1 {+ {c2*}species2 + ...}; | The DEFINE FAMILY command is used to define a group of species as members of a family. The user specified “familyname” must be unique, and can be referenced in subsequent commands. The ci are numerical coefficients that default to one if not specified; “speciesi” represents the model species names. |
| ENDPA; | The ENDPA command signifies the end of the command input in the PACP command file. |
Table 5.17. Integrated Process Rate Output Command
| Command | Description |
|---|---|
| IPR_OUTPUT species|familyname|ALL = {pcode1 + pcode2 + ...}; | The IPR_OUTPUT command defines specific IPR outputs to be generated during a CMAQ CTM simulation. A model species name, family name, or the keyword ALL must follow the IRR_OUTPUT keyword. The keyword ALL refers to all model species. IPRs are generated for the selected species or family, and they are controlled by the specified values of pcodei, where pcodei corresponds to one of the process codes listed below. If no process codes are specified, IPRs will be generated for every science process (i.e., the first 12 codes shown in Table 5-3). The output variables that are generated are named either species_pcodei or familyname_pcodei. |
Table 5.18. IPR process codes
| Process Code | Definition |
|---|---|
| XADV | Advection in the E-W direction |
| YADV | Advection in the N-S direction |
| ZADV | Vertical advection |
| ADJC | Mass adjustment |
| HDIF | Horizontal diffusion |
| VDIF | Vertical diffusion |
| EMIS | Emissions |
| DDEP | Dry deposition |
| CHEM | Chemistry |
| AERO | Aerosols |
| CLDS | Cloud processes and aqueous chemistry |
| PING | Plume-in-grid |
| XYADV | Sum of XADV and YADV |
| XYZADV | Sum of XADV, YADV, ZADV |
| TOTADV | Sum of XADV, YADV, ZADV, and ADJC |
| TOTDIF | Sum of HDIF and VDIF |
| TOTTRAN | Sum of XADV, YADV, ZADV, ADJC, HDIF, and VDIF |
Table 5.19. Integrated Reaction Rate Output Commands
| Command | Description |
|---|---|
| IRR_TYPE = FULL|PARTIAL|NONE; | The IRR_TYPE command defines the type of IRR analysis. With the type set to FULL, IRRs for each individual reaction will be calculated and written to the IRR output file, and all other IRR commands will be ignored. IRR_TYPE set to PARTIAL indicates that the IRR commands following this command are to be processed to produce user-defined IRR outputs. Type set to NONE causes all IRR commands to be ignored and no IRR output to be generated. If the command is omitted, type PARTIAL is assumed. |
| DEFINE RXNSUM cyclename = species1; | The DEFINE CYCLE command is used to compute the net of all chemical production and loss of a species. Thus, this quantity is computed by summing the IRRs for all reactions in which a species is consumed, and then subtracting that sum from the sum of the IRRs for all reactions in which the species is produced. The “cyclename” is a user-defined name that must be unique, and can be referenced in subsequent IRR_OUTPUT commands. |
| DEFINE CYCLE sumname = {c1*}<rxlabl1> { ± {c2*} <rxlabl2> ± ...}; | The RXSUM command is used to compute a linear combination of the IRRs for individual reactions that can then be referenced in a subsequent IRR_OUTPUT command; “sumname” is user-defined and must be unique. The linear combination of IRRs is defined according to the expressions following the equal signs that specify which reactions's IRRs to sum. The “rxlabli” is the reaction label that is used in the generalized mechanism. The “ci” are optional numerical coefficients that default to one if not specified. |
| IRR_OUTPUT irrname = {c1*}op1|cyclname{qual1}| sumname{qual1}| <rxlabl1>{ ± {c2*}op2 | cyclname{qual2}| sumname{qual2}| <rxlabl2> + ...}; | The IRR_OUTPUT command defines a specific IRR output to be generated during a CMAQ simulation. It is constructed by specifying a linear combination of IRR operators, IRR global definitions, or IRRs for specified reactions. Each individual term in the combination must include either one of the five IRR operators described in Table M-14 (i.e., opi), a cycle name, a reaction sum name, or a reaction label enclosed in “greater than” and “less than” signs. The optional qualifiers (quali) for cyclename or reaction sum name can be either POSONLY or NEGONLY. With these qualifiers, the defined quantity is included as a term only when it is positive or negative, respectively. If the name is not qualified, the quantity is included regardless of sign. The numerical coefficients for each term (ci) are assumed to be one unless they are explicitly included. The irrname that is supplied by the user will be assigned as the variable name in the I/O API IRR output file. |
| DESCRIPTION = “description”; | The description command is provided to allow the user to specify a long description of the output variable that will be included on the I/O API IRR output name. If a description is not specified for an IRR_OUTPUT variable, the irrname (or short name) will be used in the output file. If the description command is used, it should be located immediately following the IRR_OUTPUT command to which it applies. |
| PROD [species1] {FROM[species2] {AND|OR [species3] }} | The PROD operator is used to compute the total production of a species by summing the IRRs of all reactions in which species1 appears as a product. The optional qualifiers FROM and/OR restrict the sum to include only those reactions in which species2 and/or species3 are reactants. The “speciesi” can be any gas-phase mechanism species or a family of gas-phase species; “species2” or “species3” may also be the keyword HV to restrict the selection to photolytic reactions. |
| NETP [species1] {FROM[species2] {AND|OR [species3] }} | The NETP operator is very similar to the production operator since it is used compute the production of a species. Whereas the PROD operator includes every reaction in which species1 occurs as a product, the NETP operator includes only those reactions in which the net production of species1 is greater than zero. Thus, if species1 or any member of the family species appears as both a reactant and a product with equal stoichiometry in a reaction, the PROD operator will include it, but the NETP operator will not. This operator is useful for getting the net production of a family, for example. |
| LOSS[species1] {AND|OR [species2] } | The LOSS operator is used to compute the total loss of a species by summing the IRRs of all reactions in which species1 appears as a reactant. The optional qualifier AND restricts the sum to include only those reactions in which both species1 and species2 are reactants. Similarly, the OR qualifier includes all reactions in which either “species1” or “species2” appears as a reactant, where “species1” or “species2” can be any gas-phase species in the mechanism, a family name that includes only gas-phase mechanism species, or the keyword HV to restrict the selection of reactions to those that are photolytic. |
| NETL[species1] {AND|OR [species2] } | The NETL operator is very similar to the loss operator since it is used to compute the loss of a species. However, it includes only those reactions in which there is a net loss of “species1” and/or “species2”. Thus, if species1 or any member of the family species appears as both a reactant and a product with equal stoichiometry in reaction, the NETL operator will not include it in summing the loss of that species, whereas the LOSS operator will include the IRR for that reaction. |
| NET[species1] | The NET operator is similar to the CYCLE definition since it gives the net of the production and the loss of a species for all reactions in which “species1” appears either as reactant or a product; “species1” may be any gas-phase, mechanism species or any family consisting wholly of gas-phase mechanism species. |
The environment variables listed here are invoked during execution of the program and are set in the PROCAN run script.
Executable to use for the simulation
PROCAN control file for setting process analysis configuration