feat: Add TUV-x hook - #173
Open
bbakernoaa wants to merge 121 commits into
Open
Conversation
- Add Intel oneAPI Linux build and test workflow (.github/workflows/intel_oneapi.yml) - Add Intel Linux build and test workflow (.github/workflows/ubuntu_intel.yml) - Add NUOPC interface presentation documentation - Refactor ProcessFactory_Mod.F90 and ProcessRegistry_Mod.F90 for improved module organization - Update UnitConversion_Mod.F90 with enhanced conversion utilities - Update met_utilities_mod.F90 and utilities_mod.F90 for consistency - Update SettlingScheme_GOCART_Mod.F90 settling process implementation - Update CMakeLists.txt build configuration - Update catchem.F90 API module - Remove init_mod.F90 (functionality consolidated into other modules) - Enables CI/CD testing with Intel compilers alongside existing GCC workflows
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
- Add comprehensive error handling and context tracking to create_process function - Implement automatic met field allocation for created processes - Add case-insensitive unit handling for pressure conversions (Pa, hPa, Torr, mmHg) - Add case-insensitive unit handling for temperature conversions (K, C, F) - Expand documentation with detailed parameter descriptions and accepted unit variants - Update utility function docs to reflect all supported unit options - Improve error reporting with specific guidance for unknown processes
- Delete intel_oneapi.yml workflow file - Delete ubuntu_intel.yml workflow file - Remove newline at end of ci.yml file - Consolidate Intel compiler testing into main CI pipeline
- Add missing newline character at end of .github/workflows/ci.yml - Ensures proper file formatting and consistency with Unix conventions
- Add settling_scheme=2 parameter to Chem_SettlingSimple call for GOCART scheme - Add settling_scheme=2 parameter to Chem_Settling call for GOCART scheme - Include inline comments documenting hardcoded settling_scheme=2 for GOCART scheme - Ensures consistent settling scheme specification across both settling calculation paths
- Add Kokkos GPU/parallel computing framework with CMake configuration and C++17 support - Create new kokkos interop layer with dispatch modules for drydep, seasalt, settling, and wetdep processes - Implement KokkosDispatch_Mod.F90 for Fortran-C++ interoperability and kernel dispatching - Add settling physics module (SettlingPhysics_Mod.F90) with Kokkos-optimized computations - Refactor ColumnInterface_Mod into VirtualColumn_Mod for improved architecture - Remove deprecated ColumnInterface_Mod and consolidate column processing logic - Add comprehensive test suite for Kokkos CPU/GPU dispatch and numerical equivalence validation - Update CMakeLists.txt with ENABLE_KOKKOS option and conditional C++ standard configuration - Add Kokkos 4.3.0 to Spack environment configuration with serial and OpenMP backends - Update documentation with revised roadmap timelines and field compatibility tables - Add .kiro/ to .gitignore for IDE artifacts - Update process interface templates and build system for Kokkos integration
…egration - Remove CATChemAPI_Mod.F90 high-level API module (replaced by StateContainer architecture) - Remove catchem.F90 wrapper module (consolidated into core modules) - Update kokkos_common.hpp with improved GPU/parallel computing support - Simplify API surface by eliminating redundant abstraction layers - Align codebase with modern StateContainer-based architecture
Co-authored-by: Zachary Moon <zachary.moon@noaa.gov>
…build configuration - Move SettlingPhysics_Mod.F90 from root to schemes/ subdirectory for better organization - Remove unused Process.H header file with macro definitions - Update CMakeLists.txt to reflect new SettlingPhysics_Mod.F90 location in schemes group - Reorder function parameters in VirtualColumn_Mod.F90 for consistency (rc moved after optional parameters) - Add conditional Kokkos linking support to process generator CMakeLists template - Improves code organization by grouping scheme-specific modules together
- Split set() command across multiple lines for better formatting - Improve code organization and consistency with CMake style guidelines - Enhance maintainability of settling scheme sources configuration
- Add solar_zenith_angle subroutine to met_utilities_mod for computing SZA and cosine values - Implement GOCART2G-compatible solar declination algorithm with Fourier coefficients - Add optional column_id parameter to VirtualColumn initialization for per-column state tracking - Update ProcessManager to pass column_id when creating virtual columns from batch processing - Make column_id optional in StateManager's create_virtual_column subroutine - Add SO4chemPhysics_Mod.F90 module for SO4 chemistry physics calculations - Update SO4chem CMakeLists.txt to include new physics module in build - Simplify ProcessSO4chemInterface to use ProcessInterface instead of ColumnProcessInterface - Add test_SO4chemPhysics.F90 for physics module unit tests - Update test fixtures in test_GridManager and test_VirtualColumn for new signatures
- Align continuation lines in multi-line expressions to improve readability - Standardize indentation in SO4chemPhysics_Mod.F90 for arithmetic operations - Standardize indentation in test_SO4chemPhysics.F90 for consistency with main module - Improve visual alignment of operator precedence and expression structure
…_mass for aerosols
…C interface fix(settling): guard against non-positive layer pressure thickness to prevent NaN/Inf
…t deposition scheme
…catchem_properties to C++
… test_catchem_properties
… overflow/NaN guards
…/s for aerosol and non-aerosol species
…on, and HPC libraries; establish operational readiness standards
…gistration in init
…rify J-rate computation
… profile creation
Collaborator
Author
|
This should not go in until after #136 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CATChem Pull Request & Change Report: MUSICA TUV-x Photolysis Integration (
feature/tuv-x)1. Executive Summary
This branch (
feature/tuv-x) implements the end-to-end integration of the MUSICA TUV-x photolysis solver library into the CATChem core atmospheric chemistry engine, alongside establishing comprehensive developer guidelines and operational readiness standards.By developing the native C++ physical process class
catchem::PhotolysisProcess(extendingcatchem::ProcessInterface), CATChem can now:Additionally, this branch introduces robust developer documentation and Copilot instructions to align development with UFS Community standards.
2. Commit-by-Commit History Analysis
The branch was branched off
feature/reworkand consists of 11 sequential commits:7aee1438feat(docs): add comprehensive guidelines....github/instructions/for Bash, C++, Fortran, Python, and HPC libraries; established operational readiness standards.67495c7bfeat(core): propagate config path to state...catchem::StateManagerandcatchem::Coreto accept and store the YAML configuration file path for use during process initialization.d1add471feat(photolysis): add photolysis process class...catchem::PhotolysisProcessclass structure extendingcatchem::ProcessInterface, along with anextern "C"registration hook.2f45cfaafeat(photolysis): implement config parsing...76a85f33feat(photolysis): implement column-wise SZA...5f9d1a22build(cmake): integrate photolysis process...yaml-cppand MUSICAtuv-xlibraries.d8564407test(photolysis): add integration tests...test_catchem_photolysis.cpp) to mock meteorological profiles and verify computedccaa3559feat(photolysis): finalize native C-API...f6ffd969chore: update descriptions in guidelines....github/instructions/documentation with formal UFS Community standards.99ff7c87fix: codespell and pre-commit.codespellrcand ran pre-commit formatting hooks across the repository.1c5a4787add copilot instructions.github/copilot-instructions.mdto guide AI-assisted development context.3. Core Architectural Highlights
A. Dynamic Configuration Propagation
CoretoStateManager:initphase without needing hardcoded paths.B. Safe Grid & Profile Lifecycle Management
Gridobjects (e.g.,heightandwavelength), populates edges/midpoints, adds them toGridMap, and then safely deletes the local pointers:GridMapclones or assumes ownership of the grid memory.C. Host-Configuration Reconciliation
temperature,air,O2,O3) are not defined in the configuration, the solver pre-registers them dynamically on the fly:D. Multi-column SZA & Edge-to-Midpoint Interpolation
state->time.get_cos_sza(...).BXHEIGHTin meters) into km-based grid edges.DiagManager:4. Verification and Testing
A dedicated integration test
test_catchem_photolysiswas implemented to verify correctness:photolysisis registered in the C++ registry.2026-07-13 12:00:00) to guarantee solar radiation.LAT(LON(T(AIRDEN(run_timestep(3600.0).photolysis_rate_jfoo).The integration test successfully compiles and passes under the workspace CTest suite:
5. Metadata and Classification
Type of Change
Change Characteristics
Checklist