Error creating BCON from Hemispheric CMAQ outputs

Exactly, because these cb05e51 species do not exist in cb6r3m

More generally, as mentioned above, @mazzeoa should not be using the postprocessing cb05e51 SpecDef file for the desired mechanism conversion. While I haven’t done cb6r3m_ae7 to cb05e51_ae6 mapping, with some exceptions most of the mapping should just be 1:1 (i.e. O3 to O3, HCHO to HCHO, etc.) and no unit conversions (i.e. no ppm to ppb) should be performed.

1 Like

I’m sorry for posting a wrong version of the SpecDef file. I uplodaded the new one (1) that has the correct number of pollutant.
Following your suggestion to delete the output of combine and re-run combine remapping (2) I was able to have the TFLAG variable correct as in the original file.

I then re-run the bcon with the new file and apparently it worked, I uploaded the log of the run (3).

Relatively to the creation of the SpecDef, should I recreate it again according to @hogrefe.christian suggestions?

Thanks for your really helpful collaboration

  1. correct SpecDef File: SpecDef_cb05e51_ae6_aq_derived_from_cb6r3m_ae7_kmtbr.txt (4.3 KB)

  2. combine run log (output deleted) : combine_newtrial.txt (22.7 KB)

  3. bcon run with correct output from combine: bcon_new.txt (20.3 KB)

Thanks for posting the updated logs and confirming that there was a mismatch between the previously posted SpecDef file and ‘combine’ log file. It’s good to know that the processing stream now works without ‘combine’ or ‘BCON’ crash.

However, you definitely do need to recreate your mechanism conversion SpecDef file. If you were going to run CMAQ with the BC file you just generated, your O3, NO, ISOP CO, etc. concentrations at the boundaries would be too high by a factor of 1000., you’d miss other gas phase species not included in the postprocessing SpecDef file, you’d also miss most of the individual aerosol species (e.g. ASO4J, ANO3J), and CMAQ would ignore all of the aggregated species like ASO4IJ, AOMIJ, etc. since it wouldn’t know how to interpret them.

Again, your goal is to derive as many of the CMAQ species defined in the GC_, AE_ and NR_ namelist files in the cb05e51_ae6_aq mechanism directory as possible from the CMAQ model species listed in the GC_, AE_ and NR_ namelist files in the cb6r3m_ae7_kmtbr mechanism directory. The three sample mechanism conversion SpecDef files in the bcon map2mech directory hopefully can serve as an illustration.

In particular, the ‘SpecDef_racm_ae6_aq_derived_from_cb6r3m_ae7_kmtbr.txt’ example shows how the ae7 species can be mapped to ae6, so you can use the aerosol portion of that file (lines 196 - 350) when you develop your mapping file.

I also found it useful to first run ‘combine’ with ‘setenv GENSPEC Y’ and ‘setenv SPECIES_DEF SpecDef_all_cb6r3m_ae7_kmtbr_1to1_mapping.txt’ to get a template SpecDef file where all cb6r3m_ae7_kmtbr species from the downloaded file are just mapped to themselves. You can then replace the aerosol portion of that file with the one from SpecDef_racm_ae6_aq_derived_from_cb6r3m_ae7_kmtbr.txt and go through the gas phase species to determine the ones where cb6r3m and cb05e51 differ and you need to define some correspondence.

Thanks a lot for the extensive explanation. I followed your suggestions and I have (1) run combine with the GENSPEC Y activated generating a SpecDef file from the cb6r3m_ae7_kmtbr. Then (2) I manually compared this list (that should be the total number of pollutant present in the input file) with the namelist from the final mechanism cb05e51_ae6_aq comparing the AE_ GC_ and NR_ species in the namelist with the SpecDef created in step 1. Finally (3) I run bcon again with this new SpecDef file and generated the output.
I’m attaching to new namelist here > SpecDef_cb05e51_ae6_aq_derived_from_cb6r3m_ae7_kmtbr_genspec.txt (15.5 KB)
Here the log of bcon with the new specdef file > log.bcon.newspecdef.genspec.txt (26.8 KB)

If the process I applied is correct I have only just a final question: The BC from H-CMAQ are still static in time but they reflect the differences in the seasonal variation. Considering I want to apply this BC to an annual simulation in CMAQ, it’s reasonable to give the same file (the output generated above) to each daily simulation for the whole year? Should I do any additional conversion to apply these BC for an annual simulation?

Thanks in advance

Thanks for posting your revised SpecDef file. This is a good start, but you want to do more than just comment out species that are not shared between the two mechanisms - whenever possible, you want to calculate cb05e51_ae6 species that aren’t present in cb6r3m_ae7 from species that are.

For the aerosol species, please see my earlier post and use lines 196 - 350 from our example SpecDef_racm_ae6_aq_derived_from_cb6r3m_ae7_kmtbr.txt file to calculate ae6 species from ae7 species. For example, this line "AALK1J ,ug m-3 ,AAVB1J[1]*0.16, AE7 to AE6 Mapping " means that the ae6 species AALK1J can be estimated by multiplying the ae7 species AAVB1J with 0.16 whereas using your current version of the file, you’d not have any AALK1J values in your BC file so CMAQ would initialize this species to 0.

For the gas phase species mapping, I am not an expert, but I know that that you’d want to estimate the organic nitrate species in cb05e51 (NTRALK, NTRCN, NTROH, NTRI, NTRCNOH, NTRPX, and NTRM) from the organic nitrate species in cb6r3m (NTR1, NTR2, and INTR), and you’d also want to define the cb05e51 species PAR as sum of the cb6r3m species PAR, PRPA, KET, ACET, and BENZENE since the four latter species were split out from PAR in the transition from cb5 to cb6. Here is how you might do this - again, I am no expert in chemical mechanisms, and I’d ask others to weigh in and correct me. Specifically, while I do know that in the past we had summed NTRALK and NTRCN to get NTR1 when going from cb05e51 to cb6r3, summed NTROH, NTRI, NTRCNOH, and NTRPX to get NTR2 when going from cb05e51 to cb6r3, and mapped NTRM to INTR, I do not know if the even split I’m suggesting below is appropriate to disaggregate these species from cb6r3 to cb05e51.

PAR ,ppmv ,PAR[1]+PRPA[1]+KET[1]+ACET[1], CB6R3 to CB05e51 Mapping
NTRALK ,ppmv ,0.5 * NTR1, CB6R3 to CB05e51 Mapping
NTRCN ,ppmv ,0.5 * NTR1, CB6R3 to CB05e51 Mapping
NTROH ,ppmv ,0.25 * NTR2, CB6R3 to CB05e51 Mapping
NTRI ,ppmv ,0.25 * NTR2, CB6R3 to CB05e51 Mapping
NTRCNOH ,ppmv ,0.25 * NTR2, CB6R3 to CB05e51 Mapping
NTRPX ,ppmv ,0.25 * NTR2, CB6R3 to CB05e51 Mapping
NTRM ,ppmv ,INTR, CB6R3 to CB05e51 Mapping

I will respond to your other question in a separate post below.

Following your suggestions I created a new SpecDef list. I made some comment line “/ — /” to highlight the new part added: 1. The gas scheme proposed and 2. the aerosols lines 196 - 350 from the example SpecDef_racm_ae6_aq_derived_from_cb6r3m_ae7_kmtbr.txt file.
I also deleted all the commented species to do not create confusion.
Here the file: SpecDef_cb05e51_ae6_aq_derived_from_cb6r3m_ae7_kmtbr_genspec_2.txt (12.0 KB)

The motivation for providing seasonal average H-CMAQ concentrations was for users not able to run their own H-CMAQ simulations to use BCON to create temporally (seasonally) varying boundary conditions. The (slow) temporal variation is introduced by interpolating between the seasonal average values stored at mid-season time points (i.e. mid-January, mid-April, etc.). The actual temporal interpolation can be performed either in BCON or by CMAQ itself (except for CMAQv5.3, but CMAQv5.3.1+ and CMAQv5.2.1 or earlier would be fine). I’ll try to briefly describe these options below:

  • Interpolate using BCON. Pro: easier workflow. Con: larger file sizes. To use this option, you just follow Step 6 of the tutorial (i.e. run BCON) for each day, always providing the MET_CRO_3D_FIN file for each day. For example, to generate the BC file with 25 hourly values for January 1, provide the seasonal average species-mapped H-CMAQ output file as CTM_CONC_1 and MET_CRO_3D_CRS and your MCIP METBDY3D file for January 1 as MET_BDY_3D_FIN. Then repeat this for January 2, January 3, etc., creating CMAQ boundary condition files with hourly values for each day of the year. It’s important to remember that the time structure of the output file created by BCON always is determined by the time structure of MET_BDY_3D_FIN, i.e. the time steps in that file are the ones BCON will try to interpolate to using the data available from CTM_CONC_1 and MET_CRO_3D_CRS.

  • Interpolate using CMAQ. Pro: smaller file size, con: more customized workflow. The idea of this approach would be to create a boundary condition file with just six time steps, i.e. the same six time steps available in the H-CMAQ seasonal mean output file, and then leave it to CMAQ to interpolate between these values to each model time step. Given that the time structure of the output file created by BCON always is determined by the time structure of MET_BDY_3D_FIN, this means that you’d either first have to create a MET_BDY_3D_FIN file from your MCIP METBDY3D file that has the same six time steps as the H-CMAQ seasonal mean output file and then perform one BCON run with this file, or to create six different one-hour MET_BDY_3D_FIN files, each corresponding to one of the six time steps in the H-CMAQ seasonal mean output file, run BCON six times, and then concatenate the resulting files. In either approach, you’ll probably want to use tools like m3xtract, m3tshift, etc. to extract specific time steps from your existing MCIP files and to create files for the time steps you may not have (October 2015 and January 2017). In either case, you also want to make sure that the custom 6-time-step or six single-time-step MET_BDY_3D_FIN file(s) have a TSTEP that matches that of the H-CMAQ seasonal mean output file, i.e. 21960000 (91.5 days) so that the resulting boundary condition file also inherits that time step and CMAQ can properly interpolate.

Thanks for posting your revised SpecDef file to go from cb6r3m_ae7_kmtbr to cb5e51_ae6_aq. This looks reasonable to me, but I hope others with more chemical mechanism knowledge can comment if they see any issues. In any case, though, this should be helpful a helpful starting point for other users interested in this specific mapping, so thanks again for posting.

Thanks for the explanation. I already coded something to create daily “run_bcon” files for the internal domains so I think that in my case would be easier to start from that and create daily BC from your first option.

Many thanks for the help on this issue, really appreciated.

I’ll keep an eye on this forum in case some more suggestions will come to improve the SpecDef list. I hope the version I created can be helpful for other users.

1 Like