Skip to content

ufs-community/CECE

Repository files navigation

CECE: Community Emissions Computing Engine

CECE is a high-performance, performance-portable emissions compute component for Earth System Models. It is built using C++20 and the Kokkos programming model, designed to run efficiently on both multi-core CPUs and GPUs.

Quick Start

1. Development Environment

The recommended way to develop CECE is using the provided Docker container:

./setup.sh

2. Build

Inside the container:

mkdir build && cd build
cmake ..
make -j4

3. Run Examples

CECE provides several example configurations to demonstrate different capabilities:

Run a basic example:

./setup.sh -c "cd /work && ./build/bin/cece_nuopc_app examples/cece_config_ex1.yaml"

Available examples:

  • cece_config_ex1.yaml - Basic single species (CO) emission processing
  • cece_config_ex3.yaml - Minimal configuration for quick testing
  • cece_config_ex5.yaml - Multi-species production example (CO + NO)

4. Configuration

CECE uses a single YAML configuration file with fully configurable parameters:

# Timing configuration
driver:
  start_time: "2020-01-01T00:00:00"
  end_time: "2020-01-01T06:00:00"
  timestep_seconds: 3600

# Spatial grid configuration
grid:
  nx: 4
  ny: 4
  lon_min: -135.0
  lon_max: 135.0
  lat_min: -67.5
  lat_max: 67.5

# Species and emission data streams
species:
  co:
    - field: "MACCITY_CO"
      operation: "add"

cece_data:
  streams:
    - name: "MACCITY_CO"
      file: "/work/data/MACCity_4x5.nc"
      # ... stream configuration

Documentation

Comprehensive documentation is available in the docs/ directory:

Architecture

CECE is built on a modular architecture:

  • NUOPC Integration: Earth System Model component interface
  • TIDE Data Ingestion: High-performance emission data processing with conservative regridding
  • Kokkos Compute: Performance-portable parallel execution (CPU/GPU)
  • Physics Schemes: Extensible emission processing algorithms
  • YAML Configuration: Runtime configuration without recompilation

Requirements

  • C++20 compiler
  • MPI implementation
  • ESMF/NUOPC framework
  • Kokkos (included)
  • yaml-cpp (included)

Development

See AGENTS.md for detailed developer guidelines and coding standards.

Releases

No releases published

Packages

 
 
 

Contributors