Speciation conversion questions

Hi all,

I am using NEI 2016 v1 platform running emissions as input to CMAQ. Does anyone know how to convert the default speciation files (CB6) to SAPRC99. Are there any profiles ready to replace gsref and gspro files in the script or I should generate those SAPRC speciation profile by myself?

Hope to receive your help. Thanks!

We posted a SAPRC07T (not SAPRC99) profile package under 2017 platform. This package should work as is with 2016v1 platform, except you need to replace the GSPRO with the one in this package:

https://gaftp.epa.gov/Air/emismod/2017/ancillary_data/ge_dat_for_2017gb_speciation_SAPRC_15jan2021.zip

The README in that package mentions that the procedure is different for onroad, othpt, and onroad_mex. For onroad, we have this package under 2017 platform which can serve as guidance. Use the speciation-related inputs from this package plus the onroad FF10 from 2016v1:

https://gaftp.epa.gov/Air/emismod/2017/onroad_as_nonpoint_saprc_speciation_scripts_inputs.zip

If you also want to run Canada/Mexico, we would need to write up instructions for othpt and onroad_mex as those are not yet available.

Thanks for your information. I check the speciation package under 2017 platform and found that the GSCNV and GSREF files are only available for CB6AE7 but not SAPRC. Do I need to generate the GSCNV and GSREF profile for SAPRCE?

I had tried using gscnv.SAPRC07TC_ae7_criteria.CMAQ.2020Feb10.txt and gspro.SAPRC07TC_ae7_criteria.CMAQ.2020Feb10.txt from SPTOOLS to run the simulations but got error as following:
ERROR: No pollutants found in speciation profiles match the inventory!
ERROR: No species found in speciation profile!

 *** ERROR ABORT in subroutine DSCSPROF
 Problem(s) with speciation profiles file.

I also attached the log files here
spcmat_rail_2016fh_16j_cmaq_saprc99.log.txt (241.3 KB)

So how could I convert the speciation to SAPRC using 2016 platform? I have SPARC 99 profiles for previous version of NEI platform (2011), but it is not working on 2016. Is there any way I can use my previous speciation profile to generate the SAPRC99 emission for 2016?

If I am not mistaken, you could use the same GSREF and GSCNV for CB6 with the SAPRC GSPRO. They share the same speciation profile IDs between CB6 and SAPRC07 and GSREF should be same.

Thanks for your suggestion. I tried GSREF and GSCNV for CB6 and used GSPRO of SAPRC07TC to run the rail emissions but got error like the following:
pollutants not in the inventory.

 Scanning speciation profiles file for species...
 Value for SMK_SOURCE:  'A'
 Value for SMK_SOURCE:  'A'
 ERROR: No pollutants found in speciation profiles match the inventory!
 ERROR: No species found in speciation profile!

 *** ERROR ABORT in subroutine DSCSPROF
 Problem(s) with speciation profiles file.

spcmat_rail_2016fh_16j_cmaq_saprc99.log.txt (20.4 KB)
I attached the full log file to here. Is it due to the rail emission inventory or the speciation profiles?

Yes, you should use the 2016 platform gsref and gscnv with the provided SAPRC profiles.

Based on your log file, you did not update your GSREF and GSPRO files properly. GSREF should be the 2016v1 CB6 version and GSPRO should be the one for SAPRC07T

I used gspro_SAPRC07TC_AE7_SPECIATE_5_1.txt as the GSPRO which I obtained from the link of 2017 platform.
The GSCNV and GSREF files are:
gscnv_Create_Speciate4_5_CB6CMAQ_04jan2018_nf_v1.txt
gsref_cmaq_cb6_2016fh_16j_nf.txt
Both of them are obtained from 2016V1 platform. So I assume I did the same way as your suggestion. How could I solve this issue?

Based on my 2016v1 runs, there is only one speciation ID “8774” assigned for NONHAPVOC. If you used the same GSREF and GSCNV file from 2016v1 package, you will be able to see the “8774” profile conversion entry from NONHAPVOC to NONHAPTOG. If not, you need to check the list of SCCs from ASCC_rail_* file and check the GSREF entries for these SCCs and identify what speciation profile ID was assigned in GSREF.

In my gscnv_Create_Speciate4_5_CB6CMAQ_04jan2018_nf_v1.txt file, I found several conversion with ID of 8774. These conversions transfer all VOC to TOG, including EXH_NONHAPVOC (to EXH_NONHAPTOG), NONHAPVOC (to NONHAPTOG), VOC (to TOG), EXH_VOC(EXH_TOG).

There is five lines in the ASCC_rail file:
00000000002285002006
00000000002285002007
00000000002285002008
00000000002285002009
00000000002285002010

I check them in the GSREF profile and found they are all NONHAPVOC. It seems like the speciation conversion is not conducted since I also found NONHAPVOC.ncf generated in the intermed/rail/area_rail_dat/ directory. I am not sure but I assume it should be named as NONHAPTOG so that the SAPRC profile can read it. Could you let me know how could I solve this issue?

The VOC-to-TOG and NONHAPVOC-to-NONHAPTOG conversions are performed by the Spcmat program. The files in the area_rail_dat directory are created by the Smkinven program, which runs prior to Spcmat and therefore prior to the VOC-to-TOG conversion; that is why you see a NONHAPVOC.ncf file rather than a NONHAPTOG.ncf file in that directory. To confirm that the conversion is occurring in Spcmat, you should see this message in the Spcmat log: Processing pollutant “NONHAPVOC” using pollutant “NONHAPTOG” for profiles

Thanks for the reply. In the SPEMAT log file, the error message comes like following:
Pollutant-specific entries in the speciation cross-reference file have
been skipped.

 Number of inital xrefs:        23
 Number of COMBO xrefs:         0
 Number of FRACS xrefs:         0
 Processing speciation cross-reference file...
 Value for FULLSCC_ONLY:  Y returning TRUE
 Reading pollutant to pollutant conversion file...
 WARNING: Records in GSCNV file for pollutant "EXH__NONHAPVOC" ignored starting at line 2181
 WARNING: Records in GSCNV file for pollutant "VOC" ignored starting at line 4460

 >>--->> WARNING in subroutine RDSCONV
 Records were skipped in pollutant-to-pollutant conversion file for
      pollutants not in the inventory.

 Scanning speciation profiles file for species...
 Value for SMK_SOURCE:  'A'
 Value for SMK_SOURCE:  'A'
 ERROR: No pollutants found in speciation profiles match the inventory!
 ERROR: No species found in speciation profile!

 *** ERROR ABORT in subroutine DSCSPROF
 Problem(s) with speciation profiles file.

I don’t see any “VOC” conversion to “TOG” in the log file. It seems that the model didn’t convert the speciation. How could I solve this issue?

“ERROR: No pollutants found in speciation profiles match the inventory!”`` indicates a possible problem with the GSPRO. Can you provide the full Smkinven and Spcmat logs, and the INVTABLE, GSPRO, GSREF, and GSCNV they are using and confirm in your output logs that your run is pointing to the files that you plan to use?

Thanks for reply. log files are uploaded to here
smkinven_rail_2016fh_16j.log.txt (29.1 KB)
spcmat_rail_2016fh_16j_cmaq_saprc.log.txt (20.4 KB)

INVTABLE, GSCNV, PSREF are from 2016 v1 platform. I can not upload these files since the system limited the upload file size. I write down their name here:
/gsref_cmaq_cb6_2016fh_16j_nf.txt
invtable_2014platform_integrate_21dec2018_v3.txt
gscnv_Create_Speciate4_5_CB6CMAQ_04jan2018_nf_v1.txt

GSPRO is from the 2017 platform “gspro.SAPRC07TC_ae7_criteria.CMAQ.2020Feb10.txt” as your suggestion

stdout log file is also uploaded here.
rail.o.-notch301.txt (8.1 KB)

It looks like you are using a GSPRO from a Speciation Tool release rather than the one we posted under 2017 platform (under https://gaftp.epa.gov/Air/emismod/2017/ancillary_data/ge_dat_for_2017gb_speciation_SAPRC_15jan2021.zip).

Can you instead try using the GSPRO called gspro_SAPRC07TC_AE7_SPECIATE_5_1.txt from the referenced SAPRC package?

Thanks for your suggestion. Now the model works. But the stdout log files shows the same log analyzer error as I got in previous run. Error message shows:
log analyzer
Getting message data (might take some time)…
Finished getting data
Classifying message types…
Total number of known messages: 1156
Total number of unknown messages: 2
Level 3 analysis…
Finished classifying message types
log analyzer
Getting message data (might take some time)…
Finished getting data
Classifying message types…
Total number of known messages: 1156
Total number of unknown messages: 2
Level 1 analysis…
Finished classifying message types
Testing for exit priority <= 1
ERROR: At least one message’s priority is less than or equal to the exit priority: 1
ERROR: Level 1 errors or Level 0 warnings found. Check log files, fix inputs, and rerun.
I also attached the full log file here.
rail.o.-notch301.txt (27.7 KB)

And only oneday emission output is generated in premerged directory (I remember we talked this before, It seem like the output is normal).

We reviewed your standard output and are still concerned that there could be an issue with your run.

Have you reviewed your Level 0 and Level 1 logs from the log analyzer to determine which message caused it to fail?

We pointed you to the directory in the other CMAS thread for a different sector.

Some more information: Look in the folder for your case ($CASE/reports/log_analyzer/) for the messages where the first column (the “priority”) is either 0 or 1.

Also, please review the Log Analyzer section of the README (info file) for either 2016v1 or 2017 platform, where there is some more info on what the log analyzer does and what to look for in the output.

https://gaftp.epa.gov/Air/emismod/2016/v1/2016_v1_platform_package_30apr2021.txt

1 Like

Oh I see. I found that is due to I did not delete all temporal files the model generated in previous run so the model use some old files which is using the wrong GSPRO file. Now the model run successfully and the emission output is there. The log analyzer now show the following information in the stdout file:
log analyzer
Getting message data (might take some time)…
Finished getting data
Classifying message types…
Total number of known messages: 1122
Total number of unknown messages: 0
Level 3 analysis…
Finished classifying message types
log analyzer
Getting message data (might take some time)…
Finished getting data
Classifying message types…
Total number of known messages: 1122
Total number of unknown messages: 0
Level 1 analysis…
Finished classifying message types
Testing for exit priority <= 1
All message priorities > 1

I think that means the simulation is completed. Let me know if I am wrong.

Thanks for your help with this issue.

Best,

1 Like

This is great to hear. Glad that you got it to work!