Refactoring of species and isotopologues#1112
Conversation
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR refactors species/isotopologue and partition-function handling to be generated from an external “cat-data” layout, and adds initial support for reading JPL line lists into LBL absorption bands.
Changes:
- Remove several built-in partition-function XMLs and update the partfun build logic to glob partition functions from
${ARTS_CAT_DATA_DIR}. - Introduce generated species/isotopologue metadata (plus predefined model records) and update call sites to use
SpeciesIsotope::from_name(...). - Add JPL parsing/generation utilities and integrate a new
abs_bandsReadJPLentry point.
Reviewed changes
Copilot reviewed 110 out of 351 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| src/partfun/data/H2SO4-126.xml | Removed built-in partition function XML (migrated to cat-data). |
| src/partfun/data/H2S-122.xml | Removed built-in partition function XML (migrated to cat-data). |
| src/partfun/data/H-1.xml | Removed built-in partition function XML (migrated to cat-data). |
| src/partfun/data/DCOOH-266.xml | Removed built-in partition function XML (migrated to cat-data). |
| src/partfun/data/D2CO-26.xml | Removed built-in partition function XML (migrated to cat-data). |
| src/partfun/data/Cl2O2-765.xml | Removed built-in partition function XML (migrated to cat-data). |
| src/partfun/data/Cl2O2-565.xml | Removed built-in partition function XML (migrated to cat-data). |
| src/partfun/data/CH4-311.xml | Removed large built-in partition-function table XML (migrated to cat-data). |
| src/partfun/data/CH3CN-2125.xml | Removed built-in partition function XML (migrated to cat-data). |
| src/partfun/data/CH2DCN-224.xml | Removed built-in partition function XML (migrated to cat-data). |
| src/partfun/data/C3H8-21.xml | Removed built-in partition function XML (migrated to cat-data). |
| src/partfun/data/BrO-96.xml | Removed built-in partition function XML (migrated to cat-data). |
| src/partfun/data/BrO-16.xml | Removed built-in partition function XML (migrated to cat-data). |
| src/partfun/data/Ar-8.xml | Removed built-in partition function XML (migrated to cat-data). |
| src/partfun/CMakeLists.txt | Switch partfun XML discovery/generation to ${ARTS_CAT_DATA_DIR}/partition-functions. |
| src/m_linemixing.cc | Update species-isotope lookup to SpeciesIsotope::from_name. |
| src/m_lbl.cc | Add abs_bandsReadJPL method to read JPL lines. |
| src/core/xml/xml_io_stream_set.h | Add XML IO support for std::set<T>. |
| src/core/xml/xml_io_stream_enum_options.h | Adjust enum helper include to new common helper. |
| src/core/xml/xml_io_base.h | Move enumsFileType.h include to project header form. |
| src/core/xml/xml.h | Register new XML stream support for std::set. |
| src/core/xml/enumsFileType.h | Add local FileType enum and conversions/formatter. |
| src/core/xml/CMakeLists.txt | Remove arts_enum_options link from xml_io. |
| src/core/util/format_tags.h | Tighten arts_inner_fmt concept; adjust set formatting bracket type. |
| src/core/util/enums-common-helper.h | Add shared enum helper header (now canonical location). |
| src/core/spec/species_tags.h | Change default Tag::spec_ind initialization literal. |
| src/core/spec/species_tags.cc | Use Isotope::Joker explicitly when checking joker isotopologue. |
| src/core/spec/species_info.h | Introduce SpeciesIsotopologueInfo and XML/format helpers. |
| src/core/spec/species_info.cc | Implement SpeciesIsotopologueInfo XML IO and name formatting. |
| src/core/spec/species_enum_info.h | Introduce SpeciesEnumInfo and XML/format helpers. |
| src/core/spec/species_enum_info.cc | Implement SpeciesEnumInfo XML IO. |
| src/core/spec/predef-models/liquidcloud-ELL07.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/O2-visCKDMT252.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/O2-v1v0CKDMT100.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/O2-v0v0CKDMT100.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/O2-TRE05.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/O2-SelfContStandardType.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/O2-PWR98.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/O2-PWR2022.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/O2-PWR2021.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/O2-MPM89.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/O2-MPM2020.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/O2-CIAfunCKDMT100.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/N2-SelfContStandardType.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/N2-SelfContPWR2021.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/N2-SelfContMPM93.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/N2-CIArotCKDMT252.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/N2-CIAfunCKDMT252.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/H2O-SelfContStandardType.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/H2O-SelfContCKDMT430.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/H2O-SelfContCKDMT400.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/H2O-SelfContCKDMT350.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/H2O-SelfContCKDMT320.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/H2O-PWR98.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/H2O-PWR2022.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/H2O-PWR2021.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/H2O-MPM89.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/H2O-ForeignContStandardType.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/H2O-ForeignContCKDMT430.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/H2O-ForeignContCKDMT400.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/H2O-ForeignContCKDMT350.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/H2O-ForeignContCKDMT320.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/predef-models/CO2-CKDMT252.xml | Add predefined-model isotopologue info as split XML. |
| src/core/spec/make_species_enum.cc | Add generator for species enum info + isotopologue/partfun wrappers. |
| src/core/spec/make_species.cc | Add generator for isotopologue table from split XML files. |
| src/core/spec/isotopologues_class.h | Introduce Species::Isotope class header (moved from isotopologues.h). |
| src/core/spec/isotopologues_class.cc | Implement XML IO for SpeciesIsotope. |
| src/core/spec/isotopologues.h | Replace large hardcoded isotopologue table with generated include. |
| src/core/spec/isotopologues.cc | Refactor isotopologue utilities; derive builtin ratios from data; rename parsing API to from_name. |
| src/core/spec/CMakeLists.txt | Add generators + generated sources/headers to species build. |
| src/core/rtepack/rtepack_transmission.h | Include enums header for types used by transmission interfaces. |
| src/core/rtepack/rtepack_surface.cc | Simplify assert (span sizes already comparable). |
| src/core/quantum/quantum.h | Include enums header for quantum interfaces. |
| src/core/quantum/quantum.cc | Update isotope parsing to SpeciesIsotope::from_name. |
| src/core/quantum/make_molparam_map.cc | Add generator for HITRAN molparam map header. |
| src/core/quantum/make_jpl_data.cc | Add generator for JPL species data header. |
| src/core/quantum/jpl_species_info.h | Add JPL species info type + XML IO hooks. |
| src/core/quantum/jpl_species_info.cc | Implement XML IO for JPL species info. |
| src/core/quantum/jpl_species.h | Add JPL species lookup interface. |
| src/core/quantum/jpl_species.cc | Implement lookup from generated JPL dataset. |
| src/core/quantum/hitran_species_info.h | Add HITRAN species-info record + XML IO hooks. |
| src/core/quantum/hitran_species_info.cc | Implement XML IO for HITRAN species info. |
| src/core/quantum/hitran_species.h | Convert include guards to #pragma once. |
| src/core/quantum/hitran_species.cc | Switch HITRAN map to generated header; improve error reporting and add catch wrapper. |
| src/core/quantum/CMakeLists.txt | Add generators, generated headers, and JPL support to quantum build. |
| src/core/options/make_enums.cc | Stop generating enums-common helper (now checked in). |
| src/core/options/arts_options.cc | Build SpeciesEnum option values from generated species enum info. |
| src/core/options/CMakeLists.txt | Link options library against generated species enum info. |
| src/core/lbl/lbl_temperature_model.h | Include enums header for LBL temperature model dependencies. |
| src/core/lbl/lbl_lineshape_model.h | Add XML IO declarations for line-shape model types. |
| src/core/lbl/lbl_lineshape_model.cpp | Implement XML IO read/write for line-shape model types. |
| src/core/lbl/lbl_lineshape_linemixing.cpp | Include enums header for line-mixing dependencies. |
| src/core/lbl/lbl_jpl.h | Add JPL parsing API and record formatting. |
| src/core/lbl/lbl_jpl.cpp | Implement JPL fixed-width parsing and line conversion. |
| src/core/lbl/lbl_data.h | Expose shared einstein_a(...) helper in header. |
| src/core/lbl/lbl_data.cpp | Implement shared einstein_a(...) helper and reuse in HITRAN path. |
| src/core/lbl/lbl.h | Export JPL API in public LBL header. |
| src/core/lbl/CMakeLists.txt | Compile and link new lbl_jpl.cpp. |
| src/core/geodesy/geodetic.cpp | Drop unused ellipsoid parameter name. |
| src/core/functional/functional_atm_pressure_field.h | Include enums header for functional field types. |
| src/core/functional/CMakeLists.txt | Add arts_enum_options linkage for functional library. |
| src/core/artstime/artstime.cc | Use unified <enums.h> include. |
| src/core/artstime/CMakeLists.txt | Link artstime against arts_enum_options. |
| python/src/pyarts3/hitran.py | Expose HITRAN pos-to-char conversion and add cat-data conversion helper. |
| CMakeLists.txt | Remove ARTS_PARTFUN_DATA_PATH configuration block. |
| .clang-tidy | Disable llvm-qualified-auto check. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@olemke I would like it if you check this stuff. I have made many changes to the species layout. We are now downloading a lot more data. But with this, it is possible to extend ARTS species without modifying C++ files. I kept the split-format in arts-cat-data so that adding individual species is relatively straightforward. I think. |
|
@olemke, I will merge this because I need it. The short of this is that for any release of ARTS, you need to have a modern copy of arts-cat-data ready. Data from there is used for compilation now. |
No description provided.