The SMOKE modeling system consists of several core programs (described in Chapter 6, SMOKE Core Programs), several utility programs (described in Chapter 5, SMOKE Utility Programs), and the quality assurance program Smkreport (described in Chapter 7, SMOKE Quality Assurance). The source code for all programs is available in the
directory.
$SMKROOT
/src
SMOKE also uses several libraries for shared functionality. The I/O API and NetCDF libraries were discussed in Chapter 12, Downloading, Installing, and Compiling SMOKE. In addition, SMOKE is distributed with the FileSetAPI library (Section 11.1.1, “FileSetAPI library”), the EDSS Tools library (Section 11.1.2, “EDSS Tools library”), and a library version of MOBILE6 (Section 11.1.3, “MOBILE6 library”).
$SMK_SUBSYS
directory.
This library is used to open multiple I/O API files to avoid the limit of 120 variables per I/O API file. The source code
in found in the
directory (also accessible using the $SMK_SUBSYS
/filesetapiFS_ROOT
environment variable), which contains the following source code and Makefiles.
$FS_ROOT
/appendname.f
$FS_ROOT
/chkfileset.f
$FS_ROOT
/chksetdesc.f
$FS_ROOT
/cleanup.f
$FS_ROOT
/closeset.f
$FS_ROOT
/createset.f
$FS_ROOT
/descset.f
$FS_ROOT
/Makefile
$FS_ROOT
/Makeit
$FS_ROOT
/modfileset.f
$FS_ROOT
/modmake.inc
$FS_ROOT
/openset.f
$FS_ROOT
/promptset.f
$FS_ROOT
/readset.F
$FS_ROOT
/SETDECL.EXT
$FS_ROOT
/writeset.F
The EDSS Tools library is built on the EDSS framework and contains a variety of routines used for accessing I/O API data and
other Models-3 conventions. The main directory for the EDSS Tools library is
, which is also accessible with the $SMK_SUBSYS
/edss_toolsTOOLS_ROOT
environment variable. The source code for the EDSS Tools library is in the
directory and consists of the following source code and Makefiles.
$TOOLS_ROOT
/src
$ETINC
/IOCNST3.EXT
$ETINC
/IOPRVT3.EXT
$ETINC
/IOSTRG3.EXT
$ETLSRC
/checkmem.f
$ETLSRC
/chkgrid.f
$ETLSRC
/chkint.f
$ETLSRC
/chkreal.f
$ETLSRC
/dscm3grd.f
$ETLSRC
/dscm3lay.f
$ETLSRC
/flterr.f
$ETLSRC
/fltrneg.f
$ETLSRC
/getcfdsc.f
$ETLSRC
/getfline.f
$ETLSRC
/getifdsc.f
$ETLSRC
/getm3epi.f
$ETLSRC
/getnlist.f
$ETLSRC
/hdrmiss3.f
$ETLSRC
/ioapi_grd_size.f
$ETLSRC
/m3mesg.F
$ETLSRC
/Makefile
$ETLSRC
/Makeit
$ETLSRC
/multunit.f
$ETLSRC
/nextime.f
$ETLSRC
/openphys.f
$ETLSRC
/padnzero.f
$ETLSRC
/padzero.f
$ETLSRC
/parsline.f
$ETLSRC
/polmesg.f
$ETLSRC
/rd3mask.f
$ETLSRC
/rdsetmask.f
$ETLSRC
/unitfac.f
$ETLSRC
/unitmatch.f
$ETDSRC
/modgrid.f
$ETDSRC
/modmake.inc
The code for the library version of MOBILE6 is in
, also accessible with the $SMKROOT
/src/mo6M6_SRC
environment variable. This code is the stand-alone version of MOBILE6.2.03 with special aggregation code to create the emission
factors at the resolution needed by SMOKE. In addition, we have added code to allow MOBILE6 to pass the emission factors back
to SMOKE in memory, rather than writing an output file. The SMOKE version of MOBILE6 has also been updated to allow lowercase
input file names and to look for external input files in the
directory.
$SMK_M6PATH
The source code needed for the SMOKE programs is in the
directory. Table 11.1, “SMOKE programs and source code directories” lists each SMOKE program and the corresponding source code directory and environment variable you can use to access that
directory.
$SMKROOT
/src
Table 11.1. SMOKE programs and source code directories
SMOKE Program | Source Code Directory | Environment Variable |
---|---|---|
Beld3to2 |
|
UT_SRC |
Cntlmat |
|
CL_SRC |
Elevpoint |
|
PT_SRC |
Emisfac |
|
MB_SRC |
Extractida |
|
UT_SRC |
Geofac |
|
UT_SRC |
Grdmat |
|
GD_SRC |
Grwinven |
|
IV_SRC |
Invsplit |
|
UT_SRC |
Laypoint |
|
PT_SRC |
Mbsetup |
|
MB_SRC |
Metcombine |
|
UT_SRC |
Metscan |
|
UT_SRC |
Mrggrid |
|
MG_SRC |
Normbeis3 |
|
BG_SRC |
Pktreduc |
|
UT_SRC |
Premobl |
|
MB_SRC |
Rawbio |
|
BG_SRC |
Smk2emis |
|
UT_SRC |
Smkinven |
|
IV_SRC |
Smkmerge |
|
MG_SRC |
Smkreport |
|
QA_SRC |
Spcmat |
|
SP_SRC |
Surgtool |
|
UT_SRC |
Temporal |
|
TM_SRC |
Tmpbeis3 |
|
BG_SRC |
Tmpbio |
|
BG_SRC |
Uam2ncf |
|
UT_SRC |
There are three additional directories in the
that we have not mentioned. They are:
$SMKROOT
/src
($SMKROOT
/src/emmodMD_SRC
): Contains modules for shared program variables
($SMKROOT
/src/incINC
): Contains include files (discussed in Section 11.2, “Include Files”)
($SMKROOT
/src/libEL_SRC
): Contains source code for the main SMOKE library