Skip to content

Curated public API

This page is the small top-level surface exposed by using AtmosTransport. Everything else remains reachable through its owning submodule, for example AtmosTransport.Preprocessing.process_day or AtmosTransport.Adjoints.cs_surface_emission_footprint.

Run a configured simulation

SymbolUse
run_driven_simulation(cfg)Canonical high-level run entry point for a TOML-derived config dictionary.
validate_config(cfg)Pre-flight common config mistakes before model allocation.
expand_data_path(path)Resolve ~/... and environment-variable paths such as $ATMOSTRANSPORT_DATA_ROOT/....
expand_binary_paths(input_cfg)Resolve [input] binary_paths or folder + start_date + end_date.
julia
using TOML, AtmosTransport

# First run examples/generate_synthetic_quickstart.jl from the terminal.
cfg = TOML.parsefile("config/examples/minimal_template.toml")
ok, errors = validate_config(cfg)
ok || error(join(errors, "\n"))
model = run_driven_simulation(cfg)

Inspect transport binaries

SymbolUse
inspect_binary(path)Print header/capability information and return capability flags.
binary_capabilities(reader)Summarize operator payload support for an open reader.
TransportBinaryReader, TransportBinaryHeaderRead current version-4 binaries on any supported topology.
TransportBinaryDriverRuntime met driver shared by lat-lon, reduced-Gaussian, and cubed-sphere binaries.
load_transport_window(driver, i)Load a runtime forcing window.
write_transport_binary(...)Write synthetic or preprocessed LL/RG transport binaries.
total_windows, window_dt, steps_per_window, steps_per_window_scheduleInspect driver timing.
grid_type, horizontal_topologyInspect binary topology metadata.
supports_diffusion, supports_convectionCheck whether a driver can support requested physics.

All three topologies share this reader, driver, and runtime-window API. Cubed-sphere preprocessing uses panel-aware streaming writer helpers; those helpers are advanced construction APIs rather than a second reader hierarchy.

Work with grids and state

SymbolUse
CPU, GPUArchitecture tags for grids and drivers.
earth_parametersDefault planetary constants.
AtmosGridCombine horizontal mesh, vertical coordinate, and architecture.
LatLonMesh, ReducedGaussianMesh, CubedSphereMeshHorizontal mesh constructors.
HybridSigmaPressureHybrid sigma-pressure vertical coordinate.
nx, ny, ncells, nfaces, nlevels, nrings, cell_indexGrid dimensions and indexing.
cell_area, cell_faces, floattypeGrid geometry and scalar type helpers.
radius, gravity, reference_pressurePlanet constants stored on a grid.
pressure_at_interface, pressure_at_level, level_thicknessVertical coordinate helpers.
CellState, CubedSphereStateStore air mass and conservative mixing ratio × carrier-air-mass tracer fields.
DryBasis, MoistBasisMake the air-mass basis explicit in state containers.
allocate_face_fluxes, allocate_tracersAllocate state-compatible transport storage.
get_tracer, mixing_ratio, total_mass, total_air_massCommon state diagnostics.
tracer_names, ntracersInspect tracer layout.

Configure physics and custom loops

SymbolUse
AdvectionWorkspace, DiffusionWorkspaceIndependent scratch storage for low-level advection and diffusion calls. Model constructors allocate them automatically.
UpwindScheme, SlopesScheme, PPMScheme, LinRoodPPMSchemeCommon advection schemes.
NoDiffusion, ImplicitVerticalDiffusionDiffusion operator choices.
NoSurfaceFlux, SurfaceFluxOperator, SurfaceFluxSourceSurface-flux operator stack.
PerTracerFluxMap, flux_forMap emissions to named tracers.
NoConvection, CMFMCConvection, TM5ConvectionConvection operator choices.
NoChemistry, ExponentialDecay, CompositeChemistryChemistry operator choices.
ConstantField, ProfileKzFieldSimple time-varying fields used by physics operators.
apply!Generic low-level operator application hook.
TransportModelLow-level bundle of state, fluxes, grid, and operators.
Simulation, DrivenSimulationLow-level harnesses for custom in-memory and window-driven loops.
step!, run!, run_window!Low-level loop hooks for custom experiments.
with_chemistry, with_diffusion, with_emissionsFunctional model-update helpers.
build_runtime_physics_recipe, validate_runtime_physics_recipeBuild and check physics recipes from config.
build_initial_mixing_ratio, pack_initial_tracer_massInitial-condition helpers.
TransportTracerSpecRuntime tracer specification record.

Manual DrivenSimulation Assembly

Use this pattern when you want the runtime loop but need to own the model construction. It is the advanced path behind run_driven_simulation, without the wrapper's multi-file output, GPU adaptation, and progress plumbing.

julia
using TOML, AtmosTransport
using AtmosTransport.MetDrivers: air_mass_basis, driver_grid

# Requires the binary generated by examples/generate_synthetic_quickstart.jl.
cfg = TOML.parsefile("config/examples/minimal_template.toml")
paths = expand_binary_paths(cfg["input"])
FT = Float64

driver = TransportBinaryDriver(first(paths); FT = FT, arch = CPU())
recipe = build_runtime_physics_recipe(cfg, driver, FT)
validate_runtime_physics_recipe(recipe, driver)

grid = driver_grid(driver)
window1 = load_transport_window(driver, 1)
Basis = air_mass_basis(driver) === :dry ? DryBasis : MoistBasis
air = copy(window1.air_mass)

vmr = build_initial_mixing_ratio(
    air, grid, Dict("kind" => "uniform", "background" => 400e-6);
    surface_pressure = window1.surface_pressure,
)
co2 = pack_initial_tracer_mass(grid, air, vmr; mass_basis = Basis())

state = CellState(Basis, air; CO2 = co2)
fluxes = allocate_face_fluxes(grid.horizontal, nlevels(grid);
                              FT = FT, basis = Basis)
model = TransportModel(state, fluxes, grid, recipe.advection;
                       diffusion = recipe.diffusion,
                       convection = recipe.convection)

sim = DrivenSimulation(model, driver;
                       stop_window = min(total_windows(driver), 24),
                       chemistry = recipe.chemistry)
run_window!(sim)

The constructor validates grid and mass-basis compatibility before stepping. DrivenSimulation.step! then refreshes forcing from the driver and delegates the actual operator ordering to TransportModel.step!.

Output, regridding, and visualization

SymbolUse
capture_snapshot, write_snapshot_netcdfCapture and write diagnostic frames.
build_regridder, apply_regridder!Build and apply offline conservative regridders.
open_snapshotOpen a written snapshot NetCDF.
fieldviewExtract a plottable field view from a snapshot.
mapplot, moviePlot or animate snapshot fields when a Makie backend is loaded.

Advanced names

Internal tape records, checkpoint schedules, payload-section loaders, kernel variants, and preprocessing drivers are intentionally not exported at the top level. Advanced workflows can use explicit qualification through the owning module:

julia
AtmosTransport.MetDrivers.load_qv_pair_window!(...)
AtmosTransport.Preprocessing.process_day(...)
AtmosTransport.Adjoints.cs_surface_emission_footprint(...)

Top-level docstrings

AtmosTransport.AtmosTransport Module
julia
AtmosTransport

Offline atmospheric transport on lat-lon, reduced-Gaussian, and cubed-sphere grids.

Quick start

julia
using TOML
using AtmosTransport

# First run examples/generate_synthetic_quickstart.jl from the terminal.
cfg = TOML.parsefile("config/examples/minimal_template.toml")
ok, errors = validate_config(cfg)
ok || error(join(errors, "
"))
run_driven_simulation(cfg)

From the shell, use the same library entry point through the canonical runner:

bash
julia --project=. examples/generate_synthetic_quickstart.jl
julia --project=. scripts/run_transport.jl config/examples/minimal_template.toml

Common entry points

  • run_driven_simulation: load a run config, dispatch on the first transport binary's topology, run the simulation, and write snapshots.

  • validate_config: catch common run-config mistakes before opening binary readers or allocating model state.

  • inspect_binary: inspect a preprocessed transport binary header and capability flags.

  • open_snapshot, mapplot, movie: inspect and plot written NetCDF snapshots.

  • write_transport_binary: build a transport binary from in-memory test or preprocessing windows.

See the rendered getting-started docs under docs/src/getting_started/, the architecture tour in docs/src/concepts/architecture.md, and the curated API map in docs/src/api/public_api.md.

source
AtmosTransport.expand_data_path Method
julia
expand_data_path(p::AbstractString) -> String

Resolve a TOML/CLI path string by substituting $ATMOSTRANSPORT_DATA_ROOT (or ${ATMOSTRANSPORT_DATA_ROOT}) and any environment variable that is set in ENV, then running expanduser for any leading ~. Returns a plain String.

source