Skip to content

Refactoring of species and isotopologues#1112

Merged
riclarsson merged 21 commits intoatmtools:mainfrom
riclarsson:spec-in-xml
Apr 11, 2026
Merged

Refactoring of species and isotopologues#1112
riclarsson merged 21 commits intoatmtools:mainfrom
riclarsson:spec-in-xml

Conversation

@riclarsson
Copy link
Copy Markdown
Contributor

No description provided.

@riclarsson riclarsson requested a review from Copilot April 8, 2026 01:27
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_bandsReadJPL entry 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.

@riclarsson riclarsson marked this pull request as ready for review April 8, 2026 09:18
@riclarsson riclarsson requested a review from olemke April 8, 2026 09:18
@riclarsson
Copy link
Copy Markdown
Contributor Author

@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.

@riclarsson
Copy link
Copy Markdown
Contributor Author

@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.

@riclarsson riclarsson merged commit abe0b8a into atmtools:main Apr 11, 2026
9 checks passed
@riclarsson riclarsson deleted the spec-in-xml branch April 11, 2026 00:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants