AddingDoublingRT

Getting started

  • Installation
    • Requirements
      • C++ / CUDA
      • JAX
    • Building the C++ / CUDA backends
    • Using the JAX backend
    • Running the examples and tests
    • Building this documentation
  • Quick start
    • C++: a solar problem
    • C++: a thermal problem
    • JAX: single wavenumber
    • JAX: batched across a spectrum
    • CUDA: batched host convenience call

User guide

  • User guide
    • Configuration
      • Dimensions and flags
      • Boundary and source parameters
      • Layer and level arrays
      • Validation rules
      • The RTOutput object
    • Outputs
      • Always populated
      • Optional: net-flux components
      • Optional: temperature Jacobians
    • Thermal emission
      • Basic setup
      • Boundary temperatures
      • Supplying Planck values directly
    • Solar / stellar beam
      • Direct beam and fluxes
      • Combined thermal + solar
      • Mean intensity and the beam
    • Phase functions
      • Built-in helpers
      • Arbitrary phase functions
    • Boundary conditions
      • Upper boundary
      • Lower boundary: Lambertian surface
      • Lower boundary: diffusion approximation
    • Using delta-M scaling
      • When to use it
      • Consistency of derived quantities
    • Temperature Jacobians
      • Enabling
      • Reading the Jacobians
      • Practical notes

Theory

  • Theory
    • Overview and notation
      • The problem
      • The reflection / transmission operators
      • The two-step algorithm
      • Index conventions
    • Doubling: a single homogeneous layer
      • Thin-layer initialisation
      • Thermal source: the \(\vect{y}\) and \(\vect{z}\) vectors
      • Solar source initialisation
      • The doubling loop
      • Pure absorption (\(\omega = 0\))
    • Adding: combining layers
      • Resolvents
      • Composite reflection and transmission
      • Composite source vectors
      • Non-scattering layer optimisation
    • Boundary conditions and intensity reconstruction
      • Top of atmosphere
      • Lambertian surface
      • Diffusion lower boundary condition
      • Intensity at internal interfaces
      • Fluxes and mean intensity
      • Flux divergence (heating rate)
    • Phase-function treatment
      • Legendre moment convention
      • Supported phase functions
      • Azimuthally averaged phase matrices
      • Solar phase vectors
    • Delta-M scaling
      • Truncation fraction
      • Scaled optical properties
      • Truncated phase function
      • Effect on the solar beam
      • Applicability
    • Analytic temperature Jacobians
      • What is differentiated
      • Why it is cheap and exact
      • Source seeds
      • Propagation through adding
      • Heating-rate Jacobian
      • Planck chain rule
      • Depth limit of the heating Jacobian
      • Cost, caching, and scope
    • Implementation notes
      • Code structure (C++)
      • Template dispatch
      • Adaptive doubling count
      • Workspace reuse
      • Other notes

Backends & API

  • Backends & API reference
    • C++ (CPU) backend
      • Solver entry points
        • solve()
        • solve()
      • ADConfig
        • ADConfig
      • RTOutput
        • RTOutput
      • SolverWorkspace
        • SolverWorkspace
      • Exposed utilities (for testing)
        • gaussLegendre()
        • computePhaseMatricesFromLegendre()
        • planckFunction()
    • CUDA (GPU) backend
      • Configuration
        • BatchConfig
      • Device data layouts
        • DeviceData
        • RawDeviceData
      • Entry points
        • solveBatch()
        • solveBatchHost()
        • solveBatchFromCoefficients()
        • solveBatchFromCoefficients()
        • SolverWorkspaceGPU
    • JAX (CPU/GPU) backend
      • Single-wavenumber solver
        • src_jax.ADConfig
        • src_jax.RTOutput
        • src_jax.solve()
      • Batched solver
        • src_jax.BatchConfig
        • src_jax.solve_batch()
      • Differentiation
      • Module-level helpers

Appendix

  • References
    • Foundational method
    • Doubling extensions
    • Linearisation and remote sensing
    • Project documents
AddingDoublingRT
  • Search


© Copyright 2026, Daniel Kitzmann.

Built with Sphinx using a theme provided by Read the Docs.