moonbit-plasma

    A MoonBit plasma numerics toolkit for teaching, research prototypes, and lightweight engineering calculations.

    plasma
    simulation
    pic
    vlasov
    numerics
    Download zip
    Version
    0.2.2
    License
    Apache-2.0
    Last updated
    2 months ago
    Downloads
    62

    No dependencies

    #moonbit-plasma

    moonbit-plasma is a pure MoonBit toolkit for deterministic one-dimensional electrostatic plasma models. It provides inspectable numerical kernels for teaching laboratories, research prototypes, regression fixtures, and lightweight engineering calculations.

    #Project positioning

    The library provides a composable path from physical parameters to a reproducible result: construct a grid and species, sample particles or a distribution, deposit charge, solve the electrostatic field, advance the state, and export diagnostics. Its scope is intentionally explicit: this is a 1D electrostatic toolkit, not a claim of a validated MPI/GPU production solver.

    #Core capabilities

    • SI plasma relations, thermal scales, damping estimates, beta, and Alfvén-related helpers.
    • Periodic grids, interpolation, profiles, finite-difference derivatives, and periodic or bounded Poisson solvers.
    • PIC with NGP/CIC/TSC shape functions, multiple species, deterministic sampling, and boundary policies.
    • Simplified Vlasov-Poisson advection with density, velocity marginal, entropy, kinetic energy, positivity, and mass diagnostics.
    • Boris and Verlet integration, analytic fields, collision models, fluid fluxes, spectra, phase-space histograms, and invariant checks.
    • Stable CSV snapshots, benchmark records, verification bundles, and generated public API summaries.

    #Quick start

    moon update moon check --deny-warn moon test --deny-warn moon run cmd/main

    ///|
    test {
    let grid = Grid1D::new(8, 1.0)
    let state = PicState::new(grid, two_stream_particles(16, 1.0, 1.0e5))
    let next = state.run(1.0e-12, 2)
    assert_eq(next.particles.length(), 16)
    }

    #CLI

    moon run cmd/main prints benchmark rows, an aggregate summary, and a deterministic fingerprint. The reported workload is cells × particles × steps; errors are calculated from each run. Custom experiments can use SimulationScenario, PipelineConfig, ExperimentConfig, or PicConfig and export CSV through the library.

    #Architecture

    AreaRepresentative modules
    Physical relations and unitsconstants.mbt, formulas.mbt, physics_relations_ext.mbt, units.mbt
    Grid and field numericsgrid*.mbt, interpolation.mbt, field*.mbt, poisson.mbt, solver_tools.mbt
    Particle and distribution modelspic*.mbt, multispecies.mbt, sampling.mbt, shapes.mbt, vlasov*.mbt
    Boundaries and dynamicsboundary*.mbt, integrators.mbt, magnetic.mbt, collisions.mbt, fluid.mbt
    Analysis and exportmoments.mbt, diagnostics*.mbt, spectra.mbt, phase_space.mbt, dataset.mbt, serialization.mbt
    Reproducibilityscenarios.mbt, orchestration.mbt, benchmark_report.mbt, reproducibility.mbt, verification_bundle.mbt

    Public interfaces are generated with moon info --target all into pkg.generated.mbti.

    #Benchmarks

    The deterministic tiny, medium, and large PIC scenarios report configured sizes, computed charge error, energy drift, work units, and a checksum. Run:

    moon run cmd/main

    The checked-in benchmark report records the output observed during verification; rerun it after changing the toolchain or numerical kernels.

    #Tests and numerical boundaries

    The suite exercises formulas, degenerate grids, periodic wrapping, field reconstruction, charge deposition, Poisson residuals, shape partition of unity, deterministic sampling, species totals, particle boundaries, Vlasov moments, PIC stepping, spectra, phase-space counts, serialization, and benchmark contracts.

    moon test acceptance_test.mbt moon test advanced_test.mbt moon test benchmark_test.mbt moon test physics_test.mbt moon test system_test.mbt

    #CI and release

    GitHub Actions tests Linux, macOS, and Windows with the current stable MoonBit installer. It runs dependency update, format verification, warning-free checks across stable targets, all tests, generated API verification, and the CLI smoke test. A separate benchmark workflow uploads CLI output, and the release workflow publishes the package to Mooncakes after the same checks.

    #License

    Apache-2.0. See LICENSE.

    ApiEntry

    pub(all) struct ApiEntry {
    name : String
    category : String
    description : String
    } derive(ToJson,
    Debug
    )

    BenchmarkRecord

    pub(all) struct BenchmarkRecord {
    name : String
    cells : Int
    particles : Int
    steps : Int
    work_units : Int
    final_particles : Int
    charge_error : Double
    energy_drift : Double
    } derive(ToJson,
    Debug
    )

    BenchmarkSample

    pub(all) struct BenchmarkSample {
    name : String
    cells : Int
    particles : Int
    steps : Int
    energy : Double
    } derive(ToJson,
    Debug
    )

    BenchmarkSuite

    pub(all) struct BenchmarkSuite {
    records : Array[BenchmarkRecord]
    } derive(ToJson,
    Debug
    )

    BenchmarkSuite::maximum_charge_error

    fn BenchmarkSuite::maximum_charge_error(suite : BenchmarkSuite) -> Double

    BenchmarkSuite::maximum_energy_drift

    fn BenchmarkSuite::maximum_energy_drift(suite : BenchmarkSuite) -> Double

    BenchmarkSuite::total_work

    fn BenchmarkSuite::total_work(suite : BenchmarkSuite) -> Int

    Boundary1D

    pub(all) enum Boundary1D {
    Periodic
    Reflecting
    Absorbing
    } derive(Eq, ToJson,
    Debug
    )

    BoundaryBatchResult

    pub(all) struct BoundaryBatchResult {
    alive : Array[Particle]
    absorbed : Int
    reflected : Int
    wrapped : Int
    } derive(ToJson,
    Debug
    )

    BoundaryResult

    pub(all) struct BoundaryResult {
    x : Double
    v : Double
    alive : Bool
    } derive(ToJson,
    Debug
    )

    CflReport

    pub(all) struct CflReport {
    recommended_dt : Double
    max_displacement : Double
    stable : Bool
    } derive(ToJson,
    Debug
    )

    CollisionKind

    pub(all) enum CollisionKind {
    Elastic
    Drag
    Langevin
    Thermalize
    } derive(Eq, ToJson,
    Debug
    )

    CollisionModel

    pub(all) struct CollisionModel {
    kind : CollisionKind
    rate : Double
    background_velocity : Double
    thermal_speed : Double
    } derive(ToJson,
    Debug
    )

    ConservationReport

    pub(all) struct ConservationReport {
    initial_charge : Double
    final_charge : Double
    charge_drift : Double
    initial_energy : Double
    final_energy : Double
    energy_drift : Double
    particle_count_preserved : Bool
    } derive(ToJson,
    Debug
    )

    ElectricFieldKind

    pub(all) enum ElectricFieldKind {
    Constant
    Sinusoidal
    Gaussian
    Linear
    Pulse
    } derive(Eq, ToJson,
    Debug
    )

    ElectricFieldModel

    pub(all) struct ElectricFieldModel {
    kind : ElectricFieldKind
    amplitude : Double
    offset : Double
    wave_number : Double
    center : Double
    width : Double
    slope : Double
    } derive(ToJson,
    Debug
    )

    EnsembleMember

    pub(all) struct EnsembleMember {
    id : Int
    seed : Int
    diagnostics : Array[PicDiagnostics]
    } derive(ToJson,
    Debug
    )

    EnsembleSummary

    pub(all) struct EnsembleSummary {
    members : Int
    mean_final_energy : Double
    spread_final_energy : Double
    mean_charge_error : Double
    maximum_particle_loss : Int
    } derive(ToJson,
    Debug
    )

    ExperimentConfig

    pub(all) struct ExperimentConfig {
    name : String
    grid : Grid1D
    steps : Int
    dt : Double
    } derive(ToJson,
    Debug
    )

    ExperimentConfig::new

    fn ExperimentConfig::new(name : String, grid : Grid1D, steps : Int, dt : Double) -> ExperimentConfig

    ExperimentReport

    pub(all) struct ExperimentReport {
    name : String
    samples : Array[ExperimentSample]
    final_state : PicState
    } derive(ToJson,
    Debug
    )

    ExperimentSample

    pub(all) struct ExperimentSample {
    step : Int
    time : Double
    particles : Int
    total_charge : Double
    kinetic_energy : Double
    field_energy : Double
    total_energy : Double
    charge_error : Double
    } derive(ToJson,
    Debug
    )

    Field1D

    pub(all) struct Field1D {
    grid : Grid1D
    charge_density : Array[Double]
    electric : Array[Double]
    potential : Array[Double]
    } derive(ToJson,
    Debug
    )

    Field1D::charge_neutrality_error

    fn Field1D::charge_neutrality_error(field : Field1D) -> Double

    Field1D::electric_energy

    fn Field1D::electric_energy(field : Field1D) -> Double

    Field1D::electric_range

    fn Field1D::electric_range(field : Field1D) -> (Double, Double)

    Field1D::new

    fn Field1D::new(grid : Grid1D) -> Field1D

    Field1D::potential_range

    fn Field1D::potential_range(field : Field1D) -> (Double, Double)

    FluidFlux

    pub(all) struct FluidFlux {
    mass : Double
    momentum : Double
    energy : Double
    } derive(ToJson,
    Debug
    )

    FluidState

    pub(all) struct FluidState {
    density : Double
    velocity : Double
    pressure : Double
    energy : Double
    } derive(ToJson,
    Debug
    )

    FluidState::new

    fn FluidState::new(density : Double, velocity : Double, pressure : Double, energy : Double) -> FluidState

    Grid1D

    pub(all) struct Grid1D {
    cells : Int
    length : Double
    dx : Double
    } derive(ToJson,
    Debug
    )

    Grid1D::cell_index

    fn Grid1D::cell_index(grid : Grid1D, x : Double) -> Int

    Grid1D::cell_width

    fn Grid1D::cell_width(grid : Grid1D) -> Double

    Grid1D::cells_count

    fn Grid1D::cells_count(grid : Grid1D) -> Int

    Grid1D::domain_length

    fn Grid1D::domain_length(grid : Grid1D) -> Double

    Grid1D::is_valid

    fn Grid1D::is_valid(grid : Grid1D) -> Bool

    Grid1D::new

    fn Grid1D::new(cells : Int, length : Double) -> Grid1D

    Grid1D::position

    fn Grid1D::position(grid : Grid1D, index : Int) -> Double

    Grid1D::wrap

    fn Grid1D::wrap(grid : Grid1D, x : Double) -> Double

    GridDescriptor

    pub(all) struct GridDescriptor {
    grid : Grid1D
    cell_centers : Array[Double]
    cell_edges : Array[Double]
    } derive(ToJson,
    Debug
    )

    GridReduction

    pub(all) struct GridReduction {
    source_cells : Int
    target_cells : Int
    source_length : Double
    values : Array[Double]
    } derive(ToJson,
    Debug
    )

    HealthCheck

    pub(all) struct HealthCheck {
    name : String
    passed : Bool
    metric : Double
    threshold : Double
    message : String
    } derive(ToJson,
    Debug
    )

    InterpolationMode

    pub(all) enum InterpolationMode {
    Nearest
    Linear
    Quadratic
    } derive(Eq, ToJson,
    Debug
    )

    InterpolationResult

    pub(all) struct InterpolationResult {
    value : Double
    left : Int
    right : Int
    fraction : Double
    } derive(ToJson,
    Debug
    )

    InvariantCheck

    pub(all) struct InvariantCheck {
    name : String
    passed : Bool
    observed : Double
    tolerance : Double
    } derive(ToJson,
    Debug
    )

    MagneticField3D

    pub(all) struct MagneticField3D {
    origin : Vector3
    uniform : Vector3
    gradient : Vector3
    } derive(ToJson,
    Debug
    )

    MagneticField3D::flux_through_area

    fn MagneticField3D::flux_through_area(field : MagneticField3D, position : Vector3, normal : Vector3, area : Double) -> Double

    MagneticField3D::magnitude

    fn MagneticField3D::magnitude(field : MagneticField3D, position : Vector3) -> Double

    MagneticField3D::sample

    fn MagneticField3D::sample(field : MagneticField3D, position : Vector3) -> Vector3

    Matrix2

    pub(all) struct Matrix2 {
    a11 : Double
    a12 : Double
    a21 : Double
    a22 : Double
    } derive(ToJson,
    Debug
    )

    Matrix2::add

    fn Matrix2::add(a : Matrix2, b : Matrix2) -> Matrix2

    Matrix2::determinant

    fn Matrix2::determinant(matrix : Matrix2) -> Double

    Matrix2::identity

    fn Matrix2::identity() -> Matrix2

    Matrix2::inverse

    fn Matrix2::inverse(matrix : Matrix2) -> Matrix2

    Matrix2::multiply

    fn Matrix2::multiply(a : Matrix2, b : Matrix2) -> Matrix2

    Matrix2::multiply_vector

    fn Matrix2::multiply_vector(matrix : Matrix2, vector : MatrixVector2) -> MatrixVector2

    Matrix2::new

    fn Matrix2::new(a11 : Double, a12 : Double, a21 : Double, a22 : Double) -> Matrix2

    Matrix2::scale

    fn Matrix2::scale(a : Matrix2, factor : Double) -> Matrix2

    Matrix2::transpose

    fn Matrix2::transpose(matrix : Matrix2) -> Matrix2

    Matrix2::zero

    fn Matrix2::zero() -> Matrix2

    MatrixVector2

    pub(all) struct MatrixVector2 {
    x : Double
    y : Double
    } derive(Eq, ToJson,
    Debug
    )

    MatrixVector2::add

    MatrixVector2::distance

    fn MatrixVector2::distance(a : MatrixVector2, b : MatrixVector2) -> Double

    MatrixVector2::dot

    fn MatrixVector2::dot(a : MatrixVector2, b : MatrixVector2) -> Double

    MatrixVector2::new

    fn MatrixVector2::new(x : Double, y : Double) -> MatrixVector2

    MatrixVector2::norm

    fn MatrixVector2::norm(a : MatrixVector2) -> Double

    MatrixVector2::scale

    fn MatrixVector2::scale(a : MatrixVector2, factor : Double) -> MatrixVector2

    Moments1D

    pub(all) struct Moments1D {
    density : Array[Double]
    momentum : Array[Double]
    temperature_like : Array[Double]
    } derive(ToJson,
    Debug
    )

    MultiSpeciesState

    pub(all) struct MultiSpeciesState {
    grid : Grid1D
    populations : Array[SpeciesPopulation]
    charge_density : Array[Double]
    field : Field1D
    time : Double
    } derive(ToJson,
    Debug
    )

    MultiSpeciesState::current_density

    fn MultiSpeciesState::current_density(state : MultiSpeciesState) -> Array[Double]

    MultiSpeciesState::flatten

    MultiSpeciesState::kinetic_energy

    fn MultiSpeciesState::kinetic_energy(state : MultiSpeciesState) -> Double

    MultiSpeciesState::new

    MultiSpeciesState::number_density

    fn MultiSpeciesState::number_density(state : MultiSpeciesState) -> Array[Double]

    MultiSpeciesState::particle_count

    fn MultiSpeciesState::particle_count(state : MultiSpeciesState) -> Int

    MultiSpeciesState::population

    fn MultiSpeciesState::population(state : MultiSpeciesState, index : Int) -> SpeciesPopulation?

    MultiSpeciesState::run

    fn MultiSpeciesState::run(state : MultiSpeciesState, dt : Double, steps : Int) -> MultiSpeciesState

    MultiSpeciesState::species_count

    fn MultiSpeciesState::species_count(state : MultiSpeciesState) -> Int

    MultiSpeciesState::step

    fn MultiSpeciesState::step(state : MultiSpeciesState, dt : Double) -> MultiSpeciesState

    MultiSpeciesState::total_charge

    fn MultiSpeciesState::total_charge(state : MultiSpeciesState) -> Double

    MultiSpeciesState::total_energy

    fn MultiSpeciesState::total_energy(state : MultiSpeciesState) -> Double

    MultiSpeciesState::total_mass

    fn MultiSpeciesState::total_mass(state : MultiSpeciesState) -> Double

    NumericTable

    pub(all) struct NumericTable {
    columns : Array[String]
    rows : Array[Array[Double]]
    } derive(ToJson,
    Debug
    )

    NumericTable::add_row

    fn NumericTable::add_row(table : NumericTable, row : Array[Double]) -> Unit

    NumericTable::column

    fn NumericTable::column(table : NumericTable, index : Int) -> String?

    NumericTable::column_count

    fn NumericTable::column_count(table : NumericTable) -> Int

    NumericTable::new

    fn NumericTable::new(columns : Array[String]) -> NumericTable

    NumericTable::row

    fn NumericTable::row(table : NumericTable, index : Int) -> Array[Double]?

    NumericTable::row_count

    fn NumericTable::row_count(table : NumericTable) -> Int

    NumericTable::to_csv

    fn NumericTable::to_csv(table : NumericTable) -> String

    NumericTable::transpose

    fn NumericTable::transpose(table : NumericTable) -> NumericTable

    Observable

    pub(all) struct Observable {
    name : String
    unit : String
    values : Array[Double]
    } derive(ToJson,
    Debug
    )

    Observable::count

    fn Observable::count(observable : Observable) -> Int

    Observable::maximum

    fn Observable::maximum(observable : Observable) -> Double

    Observable::mean

    fn Observable::mean(observable : Observable) -> Double

    Observable::minimum

    fn Observable::minimum(observable : Observable) -> Double

    Observable::new

    fn Observable::new(name : String, unit : String, values : Array[Double]) -> Observable

    Observable::normalize

    fn Observable::normalize(observable : Observable) -> Observable

    Observable::range

    fn Observable::range(observable : Observable) -> Double

    Observable::scale

    fn Observable::scale(observable : Observable, factor : Double) -> Observable

    Observable::shift

    fn Observable::shift(observable : Observable, amount : Double) -> Observable

    Observable::summary

    fn Observable::summary(observable : Observable) -> SeriesSummary

    Observable::to_csv

    fn Observable::to_csv(observable : Observable) -> String

    Particle

    pub(all) struct Particle {
    x : Double
    v : Double
    weight : Double
    charge : Double
    mass : Double
    } derive(ToJson,
    Debug
    )

    Particle::new

    fn Particle::new(x~ : Double, v~ : Double, weight? : Double, charge? : Double, mass? : Double) -> Particle

    PhaseSpaceGrid

    pub(all) struct PhaseSpaceGrid {
    x_bins : Int
    v_bins : Int
    x_min : Double
    x_max : Double
    v_min : Double
    v_max : Double
    counts : Array[Int]
    } derive(ToJson,
    Debug
    )

    PhaseSpaceGrid::index

    fn PhaseSpaceGrid::index(grid : PhaseSpaceGrid, x_index : Int, v_index : Int) -> Int

    PhaseSpaceGrid::new

    fn PhaseSpaceGrid::new(x_bins : Int, v_bins : Int, x_min : Double, x_max : Double, v_min : Double, v_max : Double) -> PhaseSpaceGrid

    PhaseSpaceGrid::total_count

    fn PhaseSpaceGrid::total_count(grid : PhaseSpaceGrid) -> Int

    PhaseSpaceGrid::v_index

    fn PhaseSpaceGrid::v_index(grid : PhaseSpaceGrid, v : Double) -> Int

    PhaseSpaceGrid::v_width

    fn PhaseSpaceGrid::v_width(grid : PhaseSpaceGrid) -> Double

    PhaseSpaceGrid::x_index

    fn PhaseSpaceGrid::x_index(grid : PhaseSpaceGrid, x : Double) -> Int

    PhaseSpaceGrid::x_width

    fn PhaseSpaceGrid::x_width(grid : PhaseSpaceGrid) -> Double

    PicConfig

    pub(all) struct PicConfig {
    grid : Grid1D
    dt : Double
    steps : Int
    shape : ShapeKind
    boundary : Boundary1D
    } derive(ToJson,
    Debug
    )

    PicConfig::new

    fn PicConfig::new(grid : Grid1D, dt : Double, steps : Int) -> PicConfig

    PicConfig::validate

    fn PicConfig::validate(config : PicConfig) -> ValidationReport

    PicConfig::with_boundary

    fn PicConfig::with_boundary(config : PicConfig, boundary : Boundary1D) -> PicConfig

    PicConfig::with_shape

    fn PicConfig::with_shape(config : PicConfig, shape : ShapeKind) -> PicConfig

    PicDiagnostics

    pub(all) struct PicDiagnostics {
    time : Double
    particles : Int
    total_charge : Double
    kinetic_energy : Double
    field_energy : Double
    center_of_mass : Double
    mean_velocity : Double
    velocity_variance : Double
    } derive(ToJson,
    Debug
    )

    PicDiagnostics::from_state

    fn PicDiagnostics::from_state(state : PicState) -> PicDiagnostics

    PicDiagnostics::total_energy

    fn PicDiagnostics::total_energy(d : PicDiagnostics) -> Double

    PicQuality

    pub(all) struct PicQuality {
    finite : Bool
    nonnegative_density : Bool
    energy_drift : Double
    charge_error : Double
    } derive(ToJson,
    Debug
    )

    PicSeriesSummary

    pub(all) struct PicSeriesSummary {
    samples : Int
    particles_initial : Int
    particles_final : Int
    charge_drift : Double
    energy_drift : Double
    maximum_field : Double
    } derive(ToJson,
    Debug
    )

    PicState

    pub(all) struct PicState {
    grid : Grid1D
    particles : Array[Particle]
    field : Field1D
    time : Double
    } derive(ToJson,
    Debug
    )

    PicState::new

    fn PicState::new(grid : Grid1D, particles : Array[Particle]) -> PicState

    PicState::run

    fn PicState::run(state : PicState, dt : Double, steps : Int) -> PicState

    PicState::step

    fn PicState::step(state : PicState, dt : Double) -> PicState

    PipelineConfig

    pub(all) struct PipelineConfig {
    name : String
    grid : Grid1D
    particles : Int
    steps : Int
    dt : Double
    shape : ShapeKind
    boundary : Boundary1D
    } derive(ToJson,
    Debug
    )

    PipelineConfig::new

    fn PipelineConfig::new(name : String, grid : Grid1D, particles : Int, steps : Int, dt : Double) -> PipelineConfig

    PipelineConfig::with_boundary

    fn PipelineConfig::with_boundary(config : PipelineConfig, boundary : Boundary1D) -> PipelineConfig

    PipelineConfig::with_shape

    fn PipelineConfig::with_shape(config : PipelineConfig, shape : ShapeKind) -> PipelineConfig

    PipelineFrame

    pub(all) struct PipelineFrame {
    step : Int
    state : PicState
    diagnostics : PicDiagnostics
    } derive(ToJson,
    Debug
    )

    PipelineResult

    pub(all) struct PipelineResult {
    config : PipelineConfig
    frames : Array[PipelineFrame]
    } derive(ToJson,
    Debug
    )

    PipelineResult::charge_errors

    fn PipelineResult::charge_errors(result : PipelineResult) -> Array[Double]

    PipelineResult::energies

    fn PipelineResult::energies(result : PipelineResult) -> Array[Double]

    PipelineResult::final_frame

    fn PipelineResult::final_frame(result : PipelineResult) -> PipelineFrame?

    PipelineResult::times

    fn PipelineResult::times(result : PipelineResult) -> Array[Double]

    PlasmaBenchmarkCase

    pub(all) struct PlasmaBenchmarkCase {
    name : String
    cells : Int
    particles : Int
    steps : Int
    initial_energy : Double
    final_energy : Double
    charge_error : Double
    } derive(ToJson,
    Debug
    )

    PlasmaBenchmarkReport

    pub(all) struct PlasmaBenchmarkReport {
    cases : Array[PlasmaBenchmarkCase]
    total_steps : Int
    } derive(ToJson,
    Debug
    )

    PoissonResult

    pub(all) struct PoissonResult {
    potential : Array[Double]
    residual : Double
    iterations : Int
    converged : Bool
    } derive(ToJson,
    Debug
    )

    Profile1D

    pub(all) struct Profile1D {
    kind : ProfileKind
    base : Double
    amplitude : Double
    center : Double
    width : Double
    wave_number : Double
    floor : Double
    } derive(ToJson,
    Debug
    )

    ProfileKind

    pub(all) enum ProfileKind {
    Constant
    Gaussian
    Sinusoid
    Ramp
    DoubleHump
    TopHat
    } derive(Eq, ToJson,
    Debug
    )

    QualityMetric

    pub(all) struct QualityMetric {
    name : String
    value : Double
    tolerance : Double
    passed : Bool
    } derive(ToJson,
    Debug
    )

    RandomStream

    pub(all) struct RandomStream {
    state : Int
    } derive(ToJson,
    Debug
    )

    RandomStream::new

    fn RandomStream::new(seed : Int) -> RandomStream

    RandomStream::next_int

    fn RandomStream::next_int(stream : RandomStream) -> Int

    RandomStream::next_signed

    fn RandomStream::next_signed(stream : RandomStream) -> Double

    RandomStream::next_unit

    fn RandomStream::next_unit(stream : RandomStream) -> Double

    RelaxationResult

    pub(all) struct RelaxationResult {
    values : Array[Double]
    residuals : Array[Double]
    iterations : Int
    converged : Bool
    } derive(ToJson,
    Debug
    )

    ReproducibilityManifest

    pub(all) struct ReproducibilityManifest {
    name : String
    seed : Int
    cells : Int
    particles : Int
    steps : Int
    dt : Double
    shape : String
    boundary : String
    toolchain : String
    } derive(ToJson,
    Debug
    )

    ResultFingerprint

    pub(all) struct ResultFingerprint {
    sample_count : Int
    work_units : Int
    charge_error : Double
    energy_drift : Double
    checksum : Int
    } derive(ToJson,
    Debug
    )

    SamplingConfig

    pub(all) struct SamplingConfig {
    count : Int
    seed : Int
    drift : Double
    spread : Double
    profile : Profile1D
    } derive(ToJson,
    Debug
    )

    SamplingConfig::new

    fn SamplingConfig::new(count : Int, seed : Int, drift : Double, spread : Double) -> SamplingConfig

    SamplingConfig::sample

    fn SamplingConfig::sample(config : SamplingConfig, grid : Grid1D) -> Array[Particle]

    SamplingConfig::validate

    SeriesSummary

    pub(all) struct SeriesSummary {
    name : String
    count : Int
    minimum : Double
    maximum : Double
    mean : Double
    rms : Double
    span : Double
    } derive(ToJson,
    Debug
    )

    ShapeContribution

    pub(all) struct ShapeContribution {
    index : Int
    weight : Double
    } derive(ToJson,
    Debug
    )

    ShapeKind

    pub(all) enum ShapeKind {
    NGP
    CIC
    TSC
    } derive(Eq, ToJson,
    Debug
    )

    ShapeWeights

    pub(all) struct ShapeWeights {
    contributions : Array[ShapeContribution]
    total : Double
    count : Int
    } derive(ToJson,
    Debug
    )

    SimulationScenario

    pub(all) struct SimulationScenario {
    name : String
    grid : Grid1D
    particles : Int
    steps : Int
    dt : Double
    boundary : Boundary1D
    shape : ShapeKind
    seed : Int
    } derive(ToJson,
    Debug
    )

    Species

    pub(all) struct Species {
    name : String
    charge : Double
    mass : Double
    } derive(ToJson,
    Debug
    )

    Species::electron

    fn Species::electron() -> Species

    Species::gyro_frequency

    fn Species::gyro_frequency(species : Species, magnetic_field_t : Double) -> Double

    Species::ion

    fn Species::ion(name : String, charge_state : Int, mass_kg : Double) -> Species

    Species::plasma_frequency

    fn Species::plasma_frequency(species : Species, density_m3 : Double) -> Double

    Species::proton

    fn Species::proton() -> Species

    Species::thermal_velocity

    fn Species::thermal_velocity(species : Species, temperature_k : Double) -> Double

    SpeciesPopulation

    pub(all) struct SpeciesPopulation {
    species : Species
    particles : Array[Particle]
    } derive(ToJson,
    Debug
    )

    SpeciesPopulation::charge

    fn SpeciesPopulation::charge(population : SpeciesPopulation) -> Double

    SpeciesPopulation::count

    fn SpeciesPopulation::count(population : SpeciesPopulation) -> Int

    SpeciesPopulation::mass

    fn SpeciesPopulation::mass(population : SpeciesPopulation) -> Double

    SpeciesPopulation::new

    fn SpeciesPopulation::new(species : Species, particles : Array[Particle]) -> SpeciesPopulation

    SpectrumBin

    pub(all) struct SpectrumBin {
    mode : Int
    frequency : Double
    real : Double
    imaginary : Double
    power : Double
    } derive(ToJson,
    Debug
    )

    TimeSeries

    pub(all) struct TimeSeries {
    name : String
    times : Array[Double]
    values : Array[Double]
    } derive(ToJson,
    Debug
    )

    TimeSeries::derivative

    fn TimeSeries::derivative(series : TimeSeries) -> Array[Double]

    TimeSeries::difference

    fn TimeSeries::difference(first : TimeSeries, second : TimeSeries) -> TimeSeries

    TimeSeries::integral

    fn TimeSeries::integral(series : TimeSeries) -> Double

    TimeSeries::is_monotonic_time

    fn TimeSeries::is_monotonic_time(series : TimeSeries) -> Bool

    TimeSeries::last_time

    fn TimeSeries::last_time(series : TimeSeries) -> Double

    TimeSeries::last_value

    fn TimeSeries::last_value(series : TimeSeries) -> Double

    TimeSeries::length

    fn TimeSeries::length(series : TimeSeries) -> Int

    TimeSeries::maximum

    fn TimeSeries::maximum(series : TimeSeries) -> Double

    TimeSeries::mean

    fn TimeSeries::mean(series : TimeSeries) -> Double

    TimeSeries::minimum

    fn TimeSeries::minimum(series : TimeSeries) -> Double

    TimeSeries::moving_average

    fn TimeSeries::moving_average(series : TimeSeries, width : Int) -> Array[Double]

    TimeSeries::new

    fn TimeSeries::new(name : String) -> TimeSeries

    TimeSeries::push

    fn TimeSeries::push(series : TimeSeries, time : Double, value : Double) -> Unit

    TimeSeries::resample

    fn TimeSeries::resample(series : TimeSeries, count : Int) -> TimeSeries

    TimeSeries::scale

    fn TimeSeries::scale(series : TimeSeries, factor : Double) -> TimeSeries

    TimeSeries::shift

    fn TimeSeries::shift(series : TimeSeries, amount : Double) -> TimeSeries

    TimeSeries::summary

    fn TimeSeries::summary(series : TimeSeries) -> SeriesSummary

    TimeSeries::time_span

    fn TimeSeries::time_span(series : TimeSeries) -> Double

    TimeSeries::to_csv

    fn TimeSeries::to_csv(series : TimeSeries) -> String

    UnitScales

    pub(all) struct UnitScales {
    length : Double
    density : Double
    time : Double
    mass : Double
    charge : Double
    temperature : Double
    magnetic : Double
    } derive(ToJson,
    Debug
    )

    UnitScales::si

    fn UnitScales::si(length : Double, density : Double, time : Double) -> UnitScales

    ValidationIssue

    pub(all) struct ValidationIssue {
    code : String
    message : String
    value : Double
    } derive(ToJson,
    Debug
    )

    ValidationReport

    pub(all) struct ValidationReport {
    valid : Bool
    issues : Array[ValidationIssue]
    } derive(ToJson,
    Debug
    )

    Vector3

    pub(all) struct Vector3 {
    x : Double
    y : Double
    z : Double
    } derive(Eq, ToJson,
    Debug
    )

    Vector3::add

    fn Vector3::add(a : Vector3, b : Vector3) -> Vector3

    Vector3::component_max

    fn Vector3::component_max(a : Vector3, b : Vector3) -> Vector3

    Vector3::component_min

    fn Vector3::component_min(a : Vector3, b : Vector3) -> Vector3

    Vector3::cross

    fn Vector3::cross(a : Vector3, b : Vector3) -> Vector3

    Vector3::distance

    fn Vector3::distance(a : Vector3, b : Vector3) -> Double

    Vector3::dot

    fn Vector3::dot(a : Vector3, b : Vector3) -> Double

    Vector3::new

    fn Vector3::new(x : Double, y : Double, z : Double) -> Vector3

    Vector3::norm

    fn Vector3::norm(a : Vector3) -> Double

    Vector3::normalized

    fn Vector3::normalized(a : Vector3) -> Vector3

    Vector3::scale

    fn Vector3::scale(a : Vector3, factor : Double) -> Vector3

    Vector3::sub

    fn Vector3::sub(a : Vector3, b : Vector3) -> Vector3

    Vector3::zero

    fn Vector3::zero() -> Vector3

    VerificationBundle

    pub(all) struct VerificationBundle {
    scenario : SimulationScenario
    manifest : ReproducibilityManifest
    fingerprint : ResultFingerprint
    metrics : Array[QualityMetric]
    invariants : Array[InvariantCheck]
    } derive(ToJson,
    Debug
    )

    VerificationBundle::invariant_report

    fn VerificationBundle::invariant_report(bundle : VerificationBundle) -> String

    VerificationBundle::metric_report

    fn VerificationBundle::metric_report(bundle : VerificationBundle) -> String

    VerificationBundle::passed

    fn VerificationBundle::passed(bundle : VerificationBundle) -> Bool

    VerificationBundle::reproducibility_report

    fn VerificationBundle::reproducibility_report(bundle : VerificationBundle) -> String

    VerificationBundle::summary

    fn VerificationBundle::summary(bundle : VerificationBundle) -> String

    VerificationBundle::to_csv

    fn VerificationBundle::to_csv(bundle : VerificationBundle) -> String

    VerificationBundle::work_units

    fn VerificationBundle::work_units(bundle : VerificationBundle) -> Int

    VerletState

    pub(all) struct VerletState {
    position : Double
    velocity : Double
    acceleration : Double
    } derive(ToJson,
    Debug
    )

    VerletState::new

    fn VerletState::new(position : Double, velocity : Double, acceleration : Double) -> VerletState

    VlasovConfig

    pub(all) struct VlasovConfig {
    grid : Grid1D
    velocity_min : Double
    velocity_max : Double
    velocity_bins : Int
    dt : Double
    } derive(ToJson,
    Debug
    )

    VlasovConfig::dv

    fn VlasovConfig::dv(config : VlasovConfig) -> Double

    VlasovConfig::new

    fn VlasovConfig::new(grid : Grid1D, velocity_min~ : Double, velocity_max~ : Double, velocity_bins~ : Int, dt~ : Double) -> VlasovConfig

    VlasovConfig::velocity

    fn VlasovConfig::velocity(config : VlasovConfig, bin : Int) -> Double

    VlasovState

    pub(all) struct VlasovState {
    config : VlasovConfig
    distribution : Array[Double]
    charge_density : Array[Double]
    time : Double
    } derive(ToJson,
    Debug
    )

    VlasovState::step

    fn VlasovState::step(state : VlasovState) -> VlasovState

    VlasovStepReport

    pub(all) struct VlasovStepReport {
    before_mass : Double
    after_mass : Double
    mass_error : Double
    minimum : Double
    maximum : Double
    time : Double
    } derive(ToJson,
    Debug
    )

    VlasovSummary

    pub(all) struct VlasovSummary {
    density_mean : Double
    density_minimum : Double
    density_maximum : Double
    momentum_mean : Double
    kinetic_energy : Double
    entropy : Double
    } derive(ToJson,
    Debug
    )

    accelerate_particles

    fn accelerate_particles(particles : ArrayView[Particle], acceleration : Double, dt : Double) -> Array[Particle]

    acceleration_from_field

    fn acceleration_from_field(particle : Particle, electric : Double) -> Double

    acceptance_benchmark_csv

    fn acceptance_benchmark_csv() -> String

    acceptance_benchmark_summary

    fn acceptance_benchmark_summary() -> String

    acceptance_fingerprint_csv

    fn acceptance_fingerprint_csv() -> String

    acoustic_mach

    fn acoustic_mach(velocity : Double, sound : Double) -> Double

    add_profile

    fn add_profile(a : ArrayView[Double], b : ArrayView[Double]) -> Array[Double]

    advance_leapfrog

    fn advance_leapfrog(position : Double, velocity : Double, acceleration : Double, dt : Double) -> (Double, Double)

    advance_particles

    fn advance_particles(grid : Grid1D, particles : ArrayView[Particle], electric : ArrayView[Double], dt : Double) -> Array[Particle]

    advance_verlet

    fn advance_verlet(state : VerletState, dt : Double, next_acceleration : Double) -> VerletState

    alfven_speed

    fn alfven_speed(magnetic_field : Double, density : Double, mass : Double) -> Double

    all_close

    fn all_close(a : ArrayView[Double], b : ArrayView[Double], absolute : Double, relative : Double) -> Bool

    all_metrics_pass

    fn all_metrics_pass(metrics : ArrayView[QualityMetric]) -> Bool

    analysis_summary

    fn analysis_summary(values : ArrayView[Double]) -> String

    angular_frequency

    fn angular_frequency(charge : Double, magnetic : Vector3, mass : Double) -> Double

    angular_frequency_from_frequency

    fn angular_frequency_from_frequency(frequency : Double) -> Double

    api_catalog

    fn api_catalog() -> Array[ApiEntry]

    api_catalog_categories

    fn api_catalog_categories() -> Array[String]

    api_catalog_contains

    fn api_catalog_contains(name : String) -> Bool

    api_catalog_to_csv

    fn api_catalog_to_csv() -> String

    apply_boundary

    fn apply_boundary(grid : Grid1D, boundary : Boundary1D, x : Double, v : Double) -> BoundaryResult

    apply_boundary_to_particle

    fn apply_boundary_to_particle(grid : Grid1D, boundary : Boundary1D, particle : Particle) -> Particle?

    apply_collision

    fn apply_collision(particle : Particle, model : CollisionModel, dt : Double, noise : Double) -> Particle

    apply_collisions

    fn apply_collisions(particles : ArrayView[Particle], model : CollisionModel, dt : Double, noise : ArrayView[Double]) -> Array[Particle]

    apply_drag

    fn apply_drag(particle : Particle, rate : Double, dt : Double, background_velocity : Double) -> Particle

    apply_particle_boundary_batch

    fn apply_particle_boundary_batch(grid : Grid1D, boundary : Boundary1D, particles : ArrayView[Particle]) -> BoundaryBatchResult

    apply_reflecting_position

    fn apply_reflecting_position(grid : Grid1D, x : Double, v : Double) -> (Double, Double)

    approximate_log

    fn approximate_log(value : Double) -> Double

    assess_pic_cfl

    fn assess_pic_cfl(grid : Grid1D, maximum_speed~ : Double, dt~ : Double, safety_factor~ : Double) -> CflReport

    assess_pic_quality

    fn assess_pic_quality(state : PicState) -> PicQuality

    assess_vlasov_cfl

    fn assess_vlasov_cfl(config : VlasovConfig) -> CflReport

    autocorrelation

    fn autocorrelation(signal : ArrayView[Double], lag : Int) -> Double

    autocorrelation_series

    fn autocorrelation_series(signal : ArrayView[Double]) -> Array[Double]

    average_reductions

    fn average_reductions(reductions : ArrayView[GridReduction]) -> Array[Double]

    backward_difference

    fn backward_difference(grid : Grid1D, values : ArrayView[Double], index : Int) -> Double

    benchmark_fingerprint_suite

    fn benchmark_fingerprint_suite(suite : BenchmarkSuite) -> Array[ResultFingerprint]

    benchmark_health

    fn benchmark_health(record : BenchmarkRecord) -> Array[HealthCheck]

    benchmark_record_to_json_like

    fn benchmark_record_to_json_like(record : BenchmarkRecord) -> String

    benchmark_report_csv

    fn benchmark_report_csv(report : PlasmaBenchmarkReport) -> String

    benchmark_scenario

    fn benchmark_scenario(scenario : SimulationScenario) -> BenchmarkRecord

    benchmark_suite

    fn benchmark_suite() -> BenchmarkSuite

    benchmark_suite_summary

    fn benchmark_suite_summary(suite : BenchmarkSuite) -> String

    benchmark_suite_to_csv

    fn benchmark_suite_to_csv(suite : BenchmarkSuite) -> String

    benchmark_to_csv

    fn benchmark_to_csv(sample : BenchmarkSample) -> String

    boltzmann_constant

    let boltzmann_constant : Double

    boris_position

    fn boris_position(position : Vector3, velocity : Vector3, dt : Double) -> Vector3

    boris_push

    fn boris_push(velocity : Vector3, electric : Vector3, magnetic : Vector3, dt : Double, charge : Double, mass : Double) -> Vector3

    boundary_loss_fraction

    fn boundary_loss_fraction(result : BoundaryBatchResult, original_count : Int) -> Double

    boundary_name

    fn boundary_name(boundary : Boundary1D) -> String

    boundary_positions

    fn boundary_positions(grid : Grid1D, particles : ArrayView[Particle]) -> Array[Double]

    boundary_reflection_fraction

    fn boundary_reflection_fraction(result : BoundaryBatchResult, original_count : Int) -> Double

    boundary_valid

    fn boundary_valid(grid : Grid1D, particles : ArrayView[Particle]) -> Bool

    boundary_velocity_flux

    fn boundary_velocity_flux(grid : Grid1D, particles : ArrayView[Particle]) -> Double

    boundary_wrap_fraction

    fn boundary_wrap_fraction(result : BoundaryBatchResult, original_count : Int) -> Double

    build_verification_bundle

    fn build_verification_bundle(scenario : SimulationScenario, toolchain : String) -> VerificationBundle

    center_of_mass

    fn center_of_mass(grid : Grid1D, particles : ArrayView[Particle]) -> Double

    central_difference

    fn central_difference(grid : Grid1D, values : ArrayView[Double], index : Int) -> Double

    central_interpolate

    fn central_interpolate(first : Double, second : Double, fraction : Double) -> Double

    cfl_ratio

    fn cfl_ratio(report : CflReport) -> Double

    charge_conservation_error

    fn charge_conservation_error(grid : Grid1D, densities : ArrayView[Array[Double]], expected : Double) -> Double

    charge_neutralize

    fn charge_neutralize(_grid : Grid1D, density : ArrayView[Double]) -> Array[Double]

    charge_series

    fn charge_series(grid : Grid1D, densities : ArrayView[Array[Double]]) -> Array[Double]

    clamp

    fn clamp(value : Double, low : Double, high : Double) -> Double

    clamp_index

    fn clamp_index(index : Int, length : Int) -> Int

    clamp_int

    fn clamp_int(value : Int, low : Int, high : Int) -> Int

    clamp_time_step

    fn clamp_time_step(value : Double, minimum : Double, maximum : Double) -> Double

    cli_help

    fn cli_help() -> String

    collision_energy_loss

    fn collision_energy_loss(particle : Particle, after : Particle) -> Double

    collision_frequency

    fn collision_frequency(density : Double, charge : Double, mass : Double, temperature : Double, log_lambda : Double) -> Double

    collision_model

    fn collision_model(kind : CollisionKind, rate : Double, background_velocity : Double, thermal_speed : Double) -> CollisionModel

    collision_probability

    fn collision_probability(rate : Double, dt : Double) -> Double

    collision_rate_for_species

    fn collision_rate_for_species(species : Species, density : Double, temperature : Double, log_lambda : Double) -> Double

    collision_summary

    fn collision_summary(particles : ArrayView[Particle], model : CollisionModel, dt : Double) -> (Double, Double)

    collision_temperature

    fn collision_temperature(particles : ArrayView[Particle], mass : Double) -> Double

    combine_electric_models

    fn combine_electric_models(first : ElectricFieldModel, second : ElectricFieldModel) -> ElectricFieldModel

    compare_metric_sets

    fn compare_metric_sets(first : ArrayView[QualityMetric], second : ArrayView[QualityMetric]) -> Double

    compare_scenarios

    fn compare_scenarios(first : SimulationScenario, second : SimulationScenario) -> Bool

    config_to_csv

    fn config_to_csv(config : PicConfig) -> String

    conservation_report

    fn conservation_report(charges : ArrayView[Double], energies : ArrayView[Double]) -> ConservationReport

    constant_electric_field

    fn constant_electric_field(value : Double) -> ElectricFieldModel

    convergence_order

    fn convergence_order(errors : ArrayView[Double], step_ratio : Double) -> Double

    copy_values

    fn copy_values(values : ArrayView[Double]) -> Array[Double]

    correlation

    fn correlation(first : ArrayView[Double], second : ArrayView[Double]) -> Double

    coulomb_logarithm

    fn coulomb_logarithm(debye_length_m : Double, impact_parameter_m : Double) -> Double

    covariance

    fn covariance(first : ArrayView[Double], second : ArrayView[Double]) -> Double

    csv_escape

    fn csv_escape(value : String) -> String

    csv_header

    fn csv_header(columns : ArrayView[String]) -> String

    csv_row

    fn csv_row(values : ArrayView[Double]) -> String

    cumulative_series

    fn cumulative_series(values : ArrayView[Double], spacing : Double) -> Array[Double]

    curl_1d

    fn curl_1d(grid : Grid1D, values : ArrayView[Double]) -> Array[Double]

    cyclotron_period

    fn cyclotron_period(charge : Double, magnetic : Vector3, mass : Double) -> Double

    debye_length

    fn debye_length(electron_temperature_k : Double, electron_density_m3 : Double) -> Double

    denormalize_charge

    fn denormalize_charge(scales : UnitScales, value : Double) -> Double

    denormalize_density

    fn denormalize_density(scales : UnitScales, value : Double) -> Double

    denormalize_electric_field

    fn denormalize_electric_field(scales : UnitScales, value : Double) -> Double

    denormalize_length

    fn denormalize_length(scales : UnitScales, value : Double) -> Double

    denormalize_mass

    fn denormalize_mass(scales : UnitScales, value : Double) -> Double

    denormalize_temperature

    fn denormalize_temperature(scales : UnitScales, value : Double) -> Double

    denormalize_time

    fn denormalize_time(scales : UnitScales, value : Double) -> Double

    denormalize_velocity

    fn denormalize_velocity(scales : UnitScales, value : Double) -> Double

    deposit_charge

    fn deposit_charge(grid : Grid1D, particles : ArrayView[Particle]) -> Array[Double]

    deposit_charge_with_shape

    fn deposit_charge_with_shape(grid : Grid1D, particles : ArrayView[Particle], kind : ShapeKind) -> Array[Double]

    deposit_number_with_shape

    fn deposit_number_with_shape(grid : Grid1D, particles : ArrayView[Particle], kind : ShapeKind) -> Array[Double]

    deposit_with_shape

    fn deposit_with_shape(grid : Grid1D, positions : ArrayView[Double], values : ArrayView[Double], kind : ShapeKind) -> Array[Double]

    describe_grid

    fn describe_grid(grid : Grid1D) -> GridDescriptor

    deterministic_seed

    fn deterministic_seed(name : String, salt : Int) -> Int

    diagnostics_to_csv

    fn diagnostics_to_csv(samples : ArrayView[PicDiagnostics]) -> String

    diagonal_solve

    fn diagonal_solve(diagonal : ArrayView[Double], right_hand_side : ArrayView[Double]) -> Array[Double]

    dimensionless_length

    fn dimensionless_length(length : Double, scale : Double) -> Double

    dimensionless_time

    fn dimensionless_time(time : Double, frequency : Double) -> Double

    dipole_magnetic_field

    fn dipole_magnetic_field(moment : Vector3, position : Vector3, coefficient : Double) -> Vector3

    discrete_spectrum

    fn discrete_spectrum(signal : ArrayView[Double]) -> Array[SpectrumBin]

    distribution_entropy

    fn distribution_entropy(state : VlasovState) -> Double

    distribution_integral

    fn distribution_integral(state : VlasovState) -> Double

    distribution_is_nonnegative

    fn distribution_is_nonnegative(distribution : ArrayView[Double]) -> Bool

    distribution_kinetic_energy

    fn distribution_kinetic_energy(state : VlasovState, mass : Double) -> Double

    distribution_mass_error

    fn distribution_mass_error(config : VlasovConfig, left : ArrayView[Double], right : ArrayView[Double]) -> Double

    distribution_maximum

    fn distribution_maximum(state : VlasovState) -> Double

    distribution_mean_velocity

    fn distribution_mean_velocity(config : VlasovConfig, distribution : ArrayView[Double]) -> Double

    distribution_minimum

    fn distribution_minimum(state : VlasovState) -> Double

    distribution_negative_mass

    fn distribution_negative_mass(state : VlasovState) -> Double

    distribution_positive_part

    fn distribution_positive_part(state : VlasovState) -> Array[Double]

    distribution_sum

    fn distribution_sum(config : VlasovConfig, distribution : ArrayView[Double]) -> Double

    distribution_temperature_like

    fn distribution_temperature_like(config : VlasovConfig, distribution : ArrayView[Double]) -> Double

    divergence_periodic

    fn divergence_periodic(grid : Grid1D, values : ArrayView[Double]) -> Array[Double]

    dominant_frequency

    fn dominant_frequency(spectrum : ArrayView[SpectrumBin]) -> Int

    downsample_mean

    fn downsample_mean(values : ArrayView[Double], factor : Int) -> Array[Double]

    drag_factor

    fn drag_factor(rate : Double, dt : Double) -> Double

    drift_series

    fn drift_series(values : ArrayView[Double]) -> Array[Double]

    electric_field_value

    fn electric_field_value(model : ElectricFieldModel, x : Double) -> Double

    electric_field_values

    fn electric_field_values(grid : Grid1D, model : ElectricFieldModel) -> Array[Double]

    electric_force

    fn electric_force(charge : Double, electric : Vector3) -> Vector3

    electric_from_potential

    fn electric_from_potential(grid : Grid1D, potential : ArrayView[Double]) -> Array[Double]

    electric_potential_value

    fn electric_potential_value(model : ElectricFieldModel, x : Double) -> Double

    electron_mass

    let electron_mass : Double

    electron_plasma_frequency

    fn electron_plasma_frequency(electron_density_m3 : Double) -> Double

    electron_thermal_velocity

    fn electron_thermal_velocity(temperature_k : Double) -> Double

    electrostatic_energy

    fn electrostatic_energy(grid : Grid1D, electric : ArrayView[Double]) -> Double

    electrostatic_energy_density

    fn electrostatic_energy_density(electric : ArrayView[Double]) -> Array[Double]

    elementary_charge

    let elementary_charge : Double

    energy_series

    fn energy_series(particles : ArrayView[Array[Particle]], fields : ArrayView[Field1D]) -> Array[Double]

    ensemble_charge_errors

    fn ensemble_charge_errors(members : ArrayView[EnsembleMember]) -> Array[Double]

    ensemble_diagnostics_to_csv

    fn ensemble_diagnostics_to_csv(members : ArrayView[EnsembleMember]) -> String

    ensemble_final_energies

    fn ensemble_final_energies(members : ArrayView[EnsembleMember]) -> Array[Double]

    ensemble_particle_losses

    fn ensemble_particle_losses(members : ArrayView[EnsembleMember]) -> Array[Int]

    ensemble_passes

    fn ensemble_passes(summary : EnsembleSummary, charge_tolerance : Double, energy_spread_tolerance : Double) -> Bool

    ensemble_summary_to_csv

    fn ensemble_summary_to_csv(summary : EnsembleSummary) -> String

    estimate_landau_rate

    fn estimate_landau_rate(wave_number : Double, temperature : Double, density : Double) -> Double

    euler_flux

    fn euler_flux(state : FluidState, _gamma : Double) -> FluidFlux

    expected_output_schema

    fn expected_output_schema() -> String

    expected_sample_count

    fn expected_sample_count(scenario : SimulationScenario) -> Int

    expected_work_units

    fn expected_work_units(scenario : SimulationScenario) -> Int

    experiment_charge_error

    fn experiment_charge_error(report : ExperimentReport) -> Double

    experiment_energy_drift

    fn experiment_energy_drift(report : ExperimentReport) -> Double

    experiment_energy_series

    fn experiment_energy_series(report : ExperimentReport) -> Array[Double]

    experiment_particle_counts

    fn experiment_particle_counts(report : ExperimentReport) -> Array[Int]

    experiment_passes_charge_tolerance

    fn experiment_passes_charge_tolerance(report : ExperimentReport, tolerance : Double) -> Bool

    experiment_passes_energy_tolerance

    fn experiment_passes_energy_tolerance(report : ExperimentReport, tolerance : Double) -> Bool

    experiment_summary

    fn experiment_summary(report : ExperimentReport) -> String

    experiment_times

    fn experiment_times(report : ExperimentReport) -> Array[Double]

    experiment_to_csv

    fn experiment_to_csv(report : ExperimentReport) -> String

    field_add

    fn field_add(first : ArrayView[Double], second : ArrayView[Double]) -> Array[Double]

    field_difference

    fn field_difference(first : ArrayView[Double], second : ArrayView[Double]) -> Array[Double]

    field_energy

    fn field_energy(field : Field1D) -> Double

    field_invariants

    fn field_invariants(field : Field1D) -> Array[InvariantCheck]

    field_l2_error

    fn field_l2_error(first : ArrayView[Double], second : ArrayView[Double]) -> Double

    field_line_step

    fn field_line_step(position : Vector3, field : MagneticField3D, step : Double) -> Vector3

    field_maximum

    fn field_maximum(values : ArrayView[Double]) -> Double

    field_mean_abs

    fn field_mean_abs(values : ArrayView[Double]) -> Double

    field_model_energy

    fn field_model_energy(grid : Grid1D, model : ElectricFieldModel) -> Double

    field_model_force

    fn field_model_force(model : ElectricFieldModel, charge : Double, x : Double) -> Double

    field_model_mean

    fn field_model_mean(grid : Grid1D, model : ElectricFieldModel) -> Double

    field_model_name

    fn field_model_name(model : ElectricFieldModel) -> String

    field_model_work

    fn field_model_work(model : ElectricFieldModel, charge : Double, start : Double, stop : Double, samples : Int) -> Double

    field_quality_metrics

    fn field_quality_metrics(grid : Grid1D, field : Field1D) -> Array[QualityMetric]

    field_residual

    fn field_residual(grid : Grid1D, electric : ArrayView[Double], charge_density : ArrayView[Double]) -> Array[Double]

    field_residual_norm

    fn field_residual_norm(grid : Grid1D, electric : ArrayView[Double], charge_density : ArrayView[Double]) -> Double

    field_scale

    fn field_scale(values : ArrayView[Double], factor : Double) -> Array[Double]

    field_to_csv

    fn field_to_csv(field : Field1D) -> String

    fill_like

    fn fill_like(values : ArrayView[Double], value : Double) -> Array[Double]

    fingerprint_diagnostics

    fn fingerprint_diagnostics(values : ArrayView[PicDiagnostics]) -> Int

    fingerprint_from_scenario

    fn fingerprint_from_scenario(scenario : SimulationScenario) -> ResultFingerprint

    fingerprint_integer

    fn fingerprint_integer(value : Double) -> Int

    fingerprint_suite_to_csv

    fn fingerprint_suite_to_csv(suite : BenchmarkSuite) -> String

    fingerprint_to_csv

    fn fingerprint_to_csv(fingerprint : ResultFingerprint) -> String

    fingerprint_values

    fn fingerprint_values(values : ArrayView[Double]) -> Int

    fingerprints_equal

    fn fingerprints_equal(first : ResultFingerprint, second : ResultFingerprint) -> Bool

    finite_difference_first

    fn finite_difference_first(values : ArrayView[Double], spacing : Double) -> Array[Double]

    finite_difference_second

    fn finite_difference_second(values : ArrayView[Double], spacing : Double) -> Array[Double]

    finite_difference_series

    fn finite_difference_series(values : ArrayView[Double], spacing : Double) -> Array[Double]

    fluid_cfl_dt

    fn fluid_cfl_dt(states : ArrayView[FluidState], gamma : Double, cell_width : Double, cfl : Double) -> Double

    fluid_clamp_physical

    fn fluid_clamp_physical(state : FluidState) -> FluidState

    fluid_compressibility

    fn fluid_compressibility(state : FluidState, gamma : Double) -> Double

    fluid_energy

    fn fluid_energy(density : Double, velocity : Double, pressure : Double, gamma : Double) -> Double

    fluid_enthalpy

    fn fluid_enthalpy(state : FluidState) -> Double

    fluid_mach_number

    fn fluid_mach_number(state : FluidState, gamma : Double) -> Double

    fluid_mean_density

    fn fluid_mean_density(states : ArrayView[FluidState]) -> Double

    fluid_mean_pressure

    fn fluid_mean_pressure(states : ArrayView[FluidState]) -> Double

    fluid_mean_velocity

    fn fluid_mean_velocity(states : ArrayView[FluidState]) -> Double

    fluid_pressure

    fn fluid_pressure(density : Double, temperature : Double, gas_constant : Double) -> Double

    fluid_state_from_primitive

    fn fluid_state_from_primitive(density : Double, velocity : Double, pressure : Double, gamma : Double) -> FluidState

    fluid_state_is_physical

    fn fluid_state_is_physical(state : FluidState) -> Bool

    fluid_temperature

    fn fluid_temperature(state : FluidState, gas_constant : Double) -> Double

    fluid_update

    fn fluid_update(state : FluidState, flux_difference : FluidFlux, dt : Double, cell_width : Double) -> FluidState

    fluid_wave_speed

    fn fluid_wave_speed(state : FluidState, gamma : Double) -> Double

    forward_difference

    fn forward_difference(grid : Grid1D, values : ArrayView[Double], index : Int) -> Double

    frequency_from_angular_frequency

    fn frequency_from_angular_frequency(angular : Double) -> Double

    gather_with_shape

    fn gather_with_shape(grid : Grid1D, values : ArrayView[Double], positions : ArrayView[Double], kind : ShapeKind) -> Array[Double]

    gaussian_electric_field

    fn gaussian_electric_field(amplitude : Double, center : Double, width : Double, offset : Double) -> ElectricFieldModel

    geometric_schedule

    fn geometric_schedule(start : Double, factor : Double, count : Int) -> Array[Double]

    gradient_periodic

    fn gradient_periodic(grid : Grid1D, values : ArrayView[Double]) -> Array[Double]

    grid_cell_edges

    fn grid_cell_edges(grid : Grid1D) -> Array[Double]

    grid_cell_volume

    fn grid_cell_volume(grid : Grid1D) -> Double

    grid_center_of_mass

    fn grid_center_of_mass(grid : Grid1D, density : ArrayView[Double]) -> Double

    grid_clip

    fn grid_clip(grid : Grid1D, values : ArrayView[Double], low : Double, high : Double) -> Array[Double]

    grid_coordinates

    fn grid_coordinates(grid : Grid1D) -> Array[Double]

    grid_distance

    fn grid_distance(grid : Grid1D, first : Double, second : Double) -> Double

    grid_index_at

    fn grid_index_at(grid : Grid1D, x : Double) -> Int

    grid_integral

    fn grid_integral(grid : Grid1D, values : ArrayView[Double]) -> Double

    grid_interpolate_coordinates

    fn grid_interpolate_coordinates(grid : Grid1D, count : Int) -> Array[Double]

    grid_l2_difference

    fn grid_l2_difference(grid : Grid1D, first : ArrayView[Double], second : ArrayView[Double]) -> Double

    grid_neighbor_indices

    fn grid_neighbor_indices(grid : Grid1D, index : Int) -> (Int, Int)

    grid_periodic_copy

    fn grid_periodic_copy(grid : Grid1D, values : ArrayView[Double], shift : Int) -> Array[Double]

    grid_periodic_mean

    fn grid_periodic_mean(_grid : Grid1D, values : ArrayView[Double]) -> Double

    grid_regrid

    fn grid_regrid(source : Grid1D, values : ArrayView[Double], target : Grid1D) -> Array[Double]

    grid_roll

    fn grid_roll(grid : Grid1D, values : ArrayView[Double], shift : Int) -> Array[Double]

    grid_smooth

    fn grid_smooth(grid : Grid1D, values : ArrayView[Double], passes : Int) -> Array[Double]

    grid_variance

    fn grid_variance(grid : Grid1D, values : ArrayView[Double]) -> Double

    grid_weighted_integral

    fn grid_weighted_integral(grid : Grid1D, values : ArrayView[Double], weight : ArrayView[Double]) -> Double

    gyro_frequency

    fn gyro_frequency(charge_c : Double, magnetic_field_t : Double, mass_kg : Double) -> Double

    gyroradius

    fn gyroradius(mass : Double, speed : Double, charge : Double, magnetic : Double) -> Double

    hann_window

    fn hann_window(signal : ArrayView[Double]) -> Array[Double]

    health_charge

    fn health_charge(grid : Grid1D, density : ArrayView[Double], expected : Double, tolerance : Double) -> HealthCheck

    health_check

    fn health_check(name : String, metric : Double, threshold : Double, message : String) -> HealthCheck

    health_energy

    fn health_energy(initial : Double, final_value : Double, tolerance : Double) -> HealthCheck

    health_particles

    fn health_particles(expected : Int, actual : Int) -> HealthCheck

    health_report

    fn health_report(checks : ArrayView[HealthCheck]) -> Bool

    health_report_to_csv

    fn health_report_to_csv(checks : ArrayView[HealthCheck]) -> String

    health_residual

    fn health_residual(residual : Double, tolerance : Double) -> HealthCheck

    histogram_edges

    fn histogram_edges(low : Double, high : Double, bins : Int) -> Array[Double]

    histogram_particles

    fn histogram_particles(grid : PhaseSpaceGrid, particles : ArrayView[Particle]) -> PhaseSpaceGrid

    integrate_position

    fn integrate_position(position : Double, velocity : Double, acceleration : Double, dt : Double) -> Double

    integrate_trapezoid

    fn integrate_trapezoid(grid : Grid1D, values : ArrayView[Double]) -> Double

    integrate_velocity

    fn integrate_velocity(velocity : Double, acceleration : Double, dt : Double) -> Double

    interpolate_pair

    fn interpolate_pair(left : Double, right : Double, fraction : Double, mode : InterpolationMode) -> Double

    interpolate_periodic

    fn interpolate_periodic(grid : Grid1D, values : ArrayView[Double], x : Double) -> Double

    interpolate_series

    fn interpolate_series(values : ArrayView[Double], count : Int) -> Array[Double]

    interpolation_error

    fn interpolation_error(grid : Grid1D, values : ArrayView[Double], points : ArrayView[Double], expected : ArrayView[Double]) -> Double

    interquartile_range

    fn interquartile_range(values : ArrayView[Double]) -> Double

    invariant

    fn invariant(name : String, observed : Double, tolerance : Double) -> InvariantCheck

    invariant_all

    fn invariant_all(checks : ArrayView[InvariantCheck]) -> Bool

    invariant_bounds

    fn invariant_bounds(name : String, values : ArrayView[Double], low : Double, high : Double) -> InvariantCheck

    invariant_charge

    fn invariant_charge(grid : Grid1D, density : ArrayView[Double], expected : Double, tolerance : Double) -> InvariantCheck

    invariant_close

    fn invariant_close(name : String, actual : Double, expected : Double, tolerance : Double) -> InvariantCheck

    invariant_max_error

    fn invariant_max_error(checks : ArrayView[InvariantCheck]) -> Double

    invariant_positive

    fn invariant_positive(name : String, values : ArrayView[Double]) -> InvariantCheck

    invariant_report

    fn invariant_report(checks : ArrayView[InvariantCheck]) -> String

    invariant_shape

    fn invariant_shape(name : String, actual : Int, expected : Int) -> InvariantCheck

    invariant_to_csv

    fn invariant_to_csv(checks : ArrayView[InvariantCheck]) -> String

    invariant_zero_mean

    fn invariant_zero_mean(name : String, values : ArrayView[Double], tolerance : Double) -> InvariantCheck

    inverse_lerp

    fn inverse_lerp(a : Double, b : Double, value : Double) -> Double

    kinetic_energy

    fn kinetic_energy(particles : ArrayView[Particle]) -> Double

    kinetic_energy_vector

    fn kinetic_energy_vector(mass : Double, velocity : Vector3) -> Double

    kinetic_temperature

    fn kinetic_temperature(particles : ArrayView[Particle]) -> Double

    kinetic_to_thermal_ratio

    fn kinetic_to_thermal_ratio(velocity : Double, temperature : Double, mass : Double) -> Double

    l2_distance

    fn l2_distance(left : ArrayView[Double], right : ArrayView[Double]) -> Double

    l2_norm

    fn l2_norm(values : ArrayView[Double]) -> Double

    landau_damping_rate

    fn landau_damping_rate(wave_number_m : Double, electron_temperature_k : Double, electron_density_m3 : Double) -> Double

    laplacian_periodic

    fn laplacian_periodic(grid : Grid1D, values : ArrayView[Double]) -> Array[Double]

    lax_friedrichs_flux

    fn lax_friedrichs_flux(left : FluidState, right : FluidState, gamma : Double, wave_speed : Double) -> FluidFlux

    lerp

    fn lerp(a : Double, b : Double, t : Double) -> Double

    linear_electric_field

    fn linear_electric_field(offset : Double, slope : Double, center : Double) -> ElectricFieldModel

    linear_magnetic_field

    fn linear_magnetic_field(origin : Vector3, uniform : Vector3, gradient : Vector3) -> MagneticField3D

    linear_schedule

    fn linear_schedule(start : Double, stop : Double, count : Int) -> Array[Double]

    linspace

    fn linspace(start : Double, stop : Double, count : Int) -> Array[Double]

    locate_periodic

    fn locate_periodic(grid : Grid1D, x : Double) -> InterpolationResult

    lorentz_force

    fn lorentz_force(charge : Double, velocity : Vector3, electric : Vector3, magnetic : Vector3) -> Vector3

    magnetic_energy_density

    fn magnetic_energy_density(field : Vector3) -> Double

    magnetic_force

    fn magnetic_force(charge : Double, velocity : Vector3, magnetic : Vector3) -> Vector3

    magnetic_pressure

    fn magnetic_pressure(field : Vector3) -> Double

    magnetic_pressure_si

    fn magnetic_pressure_si(magnetic_field : Double) -> Double

    make_landau_initial

    fn make_landau_initial(config : VlasovConfig, density0~ : Double, thermal_speed~ : Double, perturbation? : Double, mode? : Int) -> VlasovState

    manifest_fingerprint

    fn manifest_fingerprint(scenario : SimulationScenario, toolchain : String) -> String

    manifest_from_scenario

    fn manifest_from_scenario(scenario : SimulationScenario, toolchain : String) -> ReproducibilityManifest

    manifest_seed

    fn manifest_seed(manifest : ReproducibilityManifest) -> Int

    manifest_to_csv

    fn manifest_to_csv(manifest : ReproducibilityManifest) -> String

    manifest_work_units

    fn manifest_work_units(manifest : ReproducibilityManifest) -> Int

    map_field

    fn map_field(field : Field1D, transform : (Double) -> Double) -> Field1D

    map_particles

    fn map_particles(particles : ArrayView[Particle], transform : (Particle) -> Particle) -> Array[Particle]

    mass_series

    fn mass_series(particles : ArrayView[Array[Particle]]) -> Array[Double]

    matrix_frobenius_norm

    fn matrix_frobenius_norm(matrix : Matrix2) -> Double

    matrix_trace

    fn matrix_trace(matrix : Matrix2) -> Double

    max_abs_value

    fn max_abs_value(values : ArrayView[Double]) -> Double

    max_value

    fn max_value(values : ArrayView[Double], fallback : Double) -> Double

    maximum_metric

    fn maximum_metric(metrics : ArrayView[QualityMetric]) -> Double

    maxwellian

    fn maxwellian(v : Double, thermal_speed : Double) -> Double

    mean

    fn mean(values : ArrayView[Double]) -> Double

    mean_absolute_error

    fn mean_absolute_error(actual : ArrayView[Double], predicted : ArrayView[Double]) -> Double

    mean_subtract

    fn mean_subtract(signal : ArrayView[Double]) -> Array[Double]

    median

    fn median(values : ArrayView[Double]) -> Double

    merge_observables

    fn merge_observables(first : Observable, second : Observable) -> Observable

    merge_populations

    fn merge_populations(first : SpeciesPopulation, second : SpeciesPopulation) -> SpeciesPopulation

    metric

    fn metric(name : String, value : Double, tolerance : Double) -> QualityMetric

    metric_count

    fn metric_count(name : String, actual : Int, expected : Int) -> QualityMetric

    metric_l2

    fn metric_l2(name : String, actual : ArrayView[Double], expected : ArrayView[Double], tolerance : Double) -> QualityMetric

    metric_max_abs

    fn metric_max_abs(name : String, values : ArrayView[Double], tolerance : Double) -> QualityMetric

    metric_names

    fn metric_names(metrics : ArrayView[QualityMetric]) -> Array[String]

    metric_relative

    fn metric_relative(name : String, actual : Double, expected : Double, tolerance : Double) -> QualityMetric

    metrics_to_csv

    fn metrics_to_csv(metrics : ArrayView[QualityMetric]) -> String

    min_value

    fn min_value(values : ArrayView[Double], fallback : Double) -> Double

    mix_fields

    fn mix_fields(first : Field1D, second : Field1D, fraction : Double) -> Field1D

    modulo_index

    fn modulo_index(index : Int, count : Int) -> Int

    momentum_series

    fn momentum_series(particles : ArrayView[Array[Particle]]) -> Array[Double]

    momentum_vector

    fn momentum_vector(mass : Double, velocity : Vector3) -> Vector3

    monotonic_time

    fn monotonic_time(values : ArrayView[Double]) -> Bool

    moving_average

    fn moving_average(values : ArrayView[Double], width : Int) -> Array[Double]

    multiply_profile

    fn multiply_profile(a : ArrayView[Double], b : ArrayView[Double]) -> Array[Double]

    nearest_index

    fn nearest_index(grid : Grid1D, x : Double) -> Int

    normalize_charge

    fn normalize_charge(scales : UnitScales, value : Double) -> Double

    normalize_density

    fn normalize_density(scales : UnitScales, value : Double) -> Double

    normalize_electric_field

    fn normalize_electric_field(scales : UnitScales, value : Double) -> Double

    normalize_field

    fn normalize_field(field : Field1D) -> Field1D

    normalize_length

    fn normalize_length(scales : UnitScales, value : Double) -> Double

    normalize_mass

    fn normalize_mass(scales : UnitScales, value : Double) -> Double

    normalize_profile

    fn normalize_profile(grid : Grid1D, values : ArrayView[Double], target_integral : Double) -> Array[Double]

    normalize_series

    fn normalize_series(values : ArrayView[Double]) -> Array[Double]

    normalize_shape_weights

    fn normalize_shape_weights(weights : ArrayView[ShapeContribution]) -> Array[ShapeContribution]

    normalize_sum

    fn normalize_sum(values : ArrayView[Double]) -> Array[Double]

    normalize_temperature

    fn normalize_temperature(scales : UnitScales, value : Double) -> Double

    normalize_time

    fn normalize_time(scales : UnitScales, value : Double) -> Double

    normalize_velocity

    fn normalize_velocity(scales : UnitScales, value : Double) -> Double

    normalize_wave_number

    fn normalize_wave_number(wave_number : Double, debye : Double) -> Double

    numerical_epsilon

    fn numerical_epsilon(scale : Double) -> Double

    observable_correlation

    fn observable_correlation(first : Observable, second : Observable) -> Double

    observable_difference

    fn observable_difference(first : Observable, second : Observable) -> Observable

    observable_summary_csv

    fn observable_summary_csv(values : ArrayView[Observable]) -> String

    observables_from_diagnostics

    fn observables_from_diagnostics(values : ArrayView[PicDiagnostics]) -> Array[Observable]

    outer_product

    fn outer_product(first : MatrixVector2, second : MatrixVector2) -> Matrix2

    package_description

    fn package_description() -> String

    package_keywords

    fn package_keywords() -> Array[String]

    package_license

    fn package_license() -> String

    package_metadata_csv

    fn package_metadata_csv() -> String

    package_name

    fn package_name() -> String

    package_ready

    fn package_ready() -> Bool

    package_repository

    fn package_repository() -> String

    package_version

    fn package_version() -> String

    particle_charge_series

    fn particle_charge_series(states : ArrayView[Array[Particle]]) -> Array[Double]

    particle_current_density

    fn particle_current_density(grid : Grid1D, particles : ArrayView[Particle]) -> Array[Double]

    particle_energy_series

    fn particle_energy_series(states : ArrayView[Array[Particle]]) -> Array[Double]

    particle_for_species

    fn particle_for_species(species : Species, x~ : Double, v~ : Double, weight? : Double) -> Particle

    particle_mean_shift

    fn particle_mean_shift(particles : ArrayView[Particle]) -> Array[Particle]

    particle_merge

    fn particle_merge(first : ArrayView[Particle], second : ArrayView[Particle]) -> Array[Particle]

    particle_momentum_series

    fn particle_momentum_series(states : ArrayView[Array[Particle]]) -> Array[Double]

    particle_number_density

    fn particle_number_density(grid : Grid1D, particles : ArrayView[Particle]) -> Array[Double]

    particle_position_bounds

    fn particle_position_bounds(particles : ArrayView[Particle]) -> (Double, Double)

    particle_quality_metrics

    fn particle_quality_metrics(grid : Grid1D, particles : ArrayView[Particle]) -> Array[QualityMetric]

    particle_speed

    fn particle_speed(particle : Particle) -> Double

    particle_speed_range

    fn particle_speed_range(particles : ArrayView[Particle]) -> (Double, Double)

    particle_speeds

    fn particle_speeds(particles : ArrayView[Particle]) -> Array[Double]

    particle_thermalize

    fn particle_thermalize(particles : ArrayView[Particle], temperature : Double) -> Array[Particle]

    particle_total_momentum

    fn particle_total_momentum(particles : ArrayView[Particle]) -> Double

    particle_velocity_bounds

    fn particle_velocity_bounds(particles : ArrayView[Particle]) -> (Double, Double)

    particle_velocity_center

    fn particle_velocity_center(particles : ArrayView[Particle]) -> Array[Particle]

    particles_in_cell

    fn particles_in_cell(grid : Grid1D, particles : ArrayView[Particle], cell : Int) -> Array[Particle]

    particles_to_csv

    fn particles_to_csv(particles : ArrayView[Particle]) -> String

    particles_with_position_range

    fn particles_with_position_range(particles : ArrayView[Particle], low : Double, high : Double) -> Array[Particle]

    particles_with_speed_limit

    fn particles_with_speed_limit(particles : ArrayView[Particle], limit : Double) -> Array[Particle]

    percentile

    fn percentile(values : ArrayView[Double], fraction : Double) -> Double

    periodic_average

    fn periodic_average(grid : Grid1D, values : ArrayView[Double], radius : Int) -> Array[Double]

    periodic_cumulative

    fn periodic_cumulative(grid : Grid1D, values : ArrayView[Double]) -> Array[Double]

    periodic_gradient

    fn periodic_gradient(grid : Grid1D, values : ArrayView[Double]) -> Array[Double]

    periodic_index

    fn periodic_index(index : Int, length : Int) -> Int

    periodic_laplacian

    fn periodic_laplacian(grid : Grid1D, values : ArrayView[Double]) -> Array[Double]

    phase_space_density

    fn phase_space_density(grid : PhaseSpaceGrid, particles : ArrayView[Particle]) -> Array[Double]

    phase_space_energy

    fn phase_space_energy(grid : PhaseSpaceGrid, histogram : ArrayView[Double], mass : Double) -> Double

    phase_space_entropy

    fn phase_space_entropy(histogram : ArrayView[Double]) -> Double

    phase_space_marginal_v

    fn phase_space_marginal_v(grid : PhaseSpaceGrid, histogram : ArrayView[Double]) -> Array[Double]

    phase_space_marginal_x

    fn phase_space_marginal_x(grid : PhaseSpaceGrid, histogram : ArrayView[Double]) -> Array[Double]

    phase_space_mean_velocity

    fn phase_space_mean_velocity(grid : PhaseSpaceGrid, histogram : ArrayView[Double]) -> Double

    phase_space_peak

    fn phase_space_peak(grid : PhaseSpaceGrid, histogram : ArrayView[Double]) -> (Int, Int)

    phase_space_to_csv

    fn phase_space_to_csv(grid : PhaseSpaceGrid, histogram : ArrayView[Double]) -> String

    let pi : Double

    pic_charge_drift

    fn pic_charge_drift(values : ArrayView[PicDiagnostics]) -> Double

    pic_config_summary

    fn pic_config_summary(config : PicConfig) -> String

    pic_diagnostics_charges

    fn pic_diagnostics_charges(values : ArrayView[PicDiagnostics]) -> Array[Double]

    pic_diagnostics_energies

    fn pic_diagnostics_energies(values : ArrayView[PicDiagnostics]) -> Array[Double]

    pic_diagnostics_pass

    fn pic_diagnostics_pass(values : ArrayView[PicDiagnostics], charge_tolerance : Double, energy_tolerance : Double) -> Bool

    pic_diagnostics_times

    fn pic_diagnostics_times(values : ArrayView[PicDiagnostics]) -> Array[Double]

    pic_diagnostics_to_table

    fn pic_diagnostics_to_table(values : ArrayView[PicDiagnostics]) -> NumericTable

    pic_energy_drift

    fn pic_energy_drift(values : ArrayView[PicDiagnostics]) -> Double

    pic_invariants

    fn pic_invariants(state : PicState, expected_charge : Double) -> Array[InvariantCheck]

    pic_series_summary_to_csv

    fn pic_series_summary_to_csv(summary : PicSeriesSummary) -> String

    pic_state_charge_error

    fn pic_state_charge_error(state : PicState) -> Double

    pic_state_energy

    fn pic_state_energy(state : PicState) -> Double

    pic_state_is_finite

    fn pic_state_is_finite(state : PicState) -> Bool

    pic_state_to_snapshot

    fn pic_state_to_snapshot(state : PicState) -> String

    pipeline_frame

    fn pipeline_frame(_config : PipelineConfig, step : Int, state : PicState) -> PipelineFrame

    pipeline_initial_state

    fn pipeline_initial_state(config : PipelineConfig) -> PicState

    pipeline_step

    fn pipeline_step(config : PipelineConfig, state : PicState) -> PicState

    pipeline_summary

    fn pipeline_summary(result : PipelineResult) -> String

    pipeline_to_csv

    fn pipeline_to_csv(result : PipelineResult) -> String

    plasma_beta

    fn plasma_beta(temperature : Double, density : Double, magnetic_field : Double) -> Double

    plasma_frequency

    fn plasma_frequency(density_m3 : Double, charge_c? : Double, mass_kg? : Double) -> Double

    plasma_parameter

    fn plasma_parameter(electron_density_m3 : Double, debye_length_m : Double) -> Double

    plasma_parameter_from_state

    fn plasma_parameter_from_state(temperature : Double, density : Double) -> Double

    plasma_time_unit

    fn plasma_time_unit(scales : UnitScales, density : Double, mass : Double, charge : Double) -> Double

    poisson_converges

    fn poisson_converges(grid : Grid1D, source : ArrayView[Double], tolerance : Double, max_iterations : Int) -> Bool

    poisson_electric_field

    fn poisson_electric_field(grid : Grid1D, potential : ArrayView[Double]) -> Array[Double]

    poisson_energy

    fn poisson_energy(grid : Grid1D, potential : ArrayView[Double]) -> Double

    poisson_iteration_history

    fn poisson_iteration_history(grid : Grid1D, source : ArrayView[Double], steps : Int) -> Array[Double]

    poisson_mean_free

    fn poisson_mean_free(potential : ArrayView[Double]) -> Array[Double]

    poisson_residual

    fn poisson_residual(grid : Grid1D, potential : ArrayView[Double], source : ArrayView[Double]) -> Double

    poisson_residual_series

    fn poisson_residual_series(grid : Grid1D, potentials : ArrayView[Array[Double]], source : ArrayView[Double]) -> Array[Double]

    poisson_solution_range

    fn poisson_solution_range(result : PoissonResult) -> Double

    poisson_source

    fn poisson_source(charge_density : ArrayView[Double]) -> Array[Double]

    polynomial_basis

    fn polynomial_basis(x : Double, order : Int) -> Array[Double]

    polynomial_derivative

    fn polynomial_derivative(coefficients : ArrayView[Double]) -> Array[Double]

    polynomial_evaluate

    fn polynomial_evaluate(coefficients : ArrayView[Double], x : Double) -> Double

    polynomial_fit_constant

    fn polynomial_fit_constant(values : ArrayView[Double]) -> Array[Double]

    population_charge_density

    fn population_charge_density(grid : Grid1D, populations : ArrayView[SpeciesPopulation], kind : ShapeKind) -> Array[Double]

    population_charge_summary

    fn population_charge_summary(state : MultiSpeciesState) -> Array[Double]

    population_mass_summary

    fn population_mass_summary(state : MultiSpeciesState) -> Array[Double]

    population_names

    fn population_names(state : MultiSpeciesState) -> Array[String]

    position_marginal

    fn position_marginal(state : VlasovState) -> Array[Double]

    potential_from_electric

    fn potential_from_electric(grid : Grid1D, electric : ArrayView[Double]) -> Array[Double]

    power_spectrum

    fn power_spectrum(signal : ArrayView[Double]) -> Array[Double]

    profile_ceiling

    fn profile_ceiling(values : ArrayView[Double], ceiling : Double) -> Array[Double]

    profile_constant

    fn profile_constant(value : Double) -> Profile1D

    profile_double_hump

    fn profile_double_hump(base : Double, amplitude : Double, center : Double, width : Double) -> Profile1D

    profile_floor

    fn profile_floor(values : ArrayView[Double], floor : Double) -> Array[Double]

    profile_gaussian

    fn profile_gaussian(base : Double, amplitude : Double, center : Double, width : Double) -> Profile1D

    profile_integral

    fn profile_integral(grid : Grid1D, profile : Profile1D) -> Double

    profile_maximum

    fn profile_maximum(values : ArrayView[Double]) -> Double

    profile_mean

    fn profile_mean(grid : Grid1D, profile : Profile1D) -> Double

    profile_minimum

    fn profile_minimum(values : ArrayView[Double]) -> Double

    profile_ramp

    fn profile_ramp(start : Double, end : Double, center : Double, width : Double) -> Profile1D

    profile_range

    fn profile_range(values : ArrayView[Double]) -> Double

    profile_sinusoid

    fn profile_sinusoid(base : Double, amplitude : Double, wave_number : Double, phase : Double) -> Profile1D

    profile_top_hat

    fn profile_top_hat(low : Double, high : Double, center : Double, width : Double) -> Profile1D

    profile_value

    fn profile_value(profile : Profile1D, x : Double) -> Double

    profile_values

    fn profile_values(grid : Grid1D, profile : Profile1D) -> Array[Double]

    project_field

    fn project_field(field : Field1D) -> Field1D

    project_zero_mean

    fn project_zero_mean(values : ArrayView[Double]) -> Array[Double]

    prolongate_linear

    fn prolongate_linear(source : Grid1D, values : ArrayView[Double], target : Grid1D) -> Array[Double]

    proton_mass

    let proton_mass : Double

    public_api_summary

    fn public_api_summary() -> String

    pulse_electric_field

    fn pulse_electric_field(amplitude : Double, center : Double, width : Double, offset : Double) -> ElectricFieldModel

    push_particle

    fn push_particle(grid : Grid1D, particle : Particle, electric~ : Double, dt~ : Double) -> Particle

    push_particle_unbounded

    fn push_particle_unbounded(particle : Particle, electric : Double, dt : Double) -> Particle

    push_particles

    fn push_particles(particles : ArrayView[Particle], electric : ArrayView[Double], dt : Double) -> Array[Particle]

    quality_report

    fn quality_report(metrics : ArrayView[QualityMetric]) -> String

    reduce_average

    fn reduce_average(source : Grid1D, values : ArrayView[Double], target_cells : Int) -> GridReduction

    reduction_converges

    fn reduction_converges(errors : ArrayView[Double], tolerance : Double) -> Bool

    reduction_error

    fn reduction_error(source : Grid1D, values : ArrayView[Double], reduction : GridReduction) -> Double

    reduction_errors

    fn reduction_errors(source : Grid1D, values : ArrayView[Double], reductions : ArrayView[GridReduction]) -> Array[Double]

    reduction_integral

    fn reduction_integral(_grid : Grid1D, reduction : GridReduction) -> Double

    reduction_maximum

    fn reduction_maximum(reduction : GridReduction) -> Double

    reduction_minimum

    fn reduction_minimum(reduction : GridReduction) -> Double

    reduction_series

    fn reduction_series(source : Grid1D, values : ArrayView[Double], resolutions : ArrayView[Int]) -> Array[GridReduction]

    reduction_summary

    fn reduction_summary(reduction : GridReduction) -> String

    reduction_to_csv

    fn reduction_to_csv(reduction : GridReduction) -> String

    reflect_position

    fn reflect_position(grid : Grid1D, x : Double) -> Double

    relative_change

    fn relative_change(initial : Double, final_value : Double) -> Double

    relative_energy_drift

    fn relative_energy_drift(initial : Double, ending : Double) -> Double

    relative_error

    fn relative_error(actual : Double, predicted : Double) -> Double

    relative_l2_error

    fn relative_l2_error(reference : ArrayView[Double], actual : ArrayView[Double]) -> Double

    relative_residual

    fn relative_residual(values : ArrayView[Double], target : ArrayView[Double]) -> Double

    relax_to_target

    fn relax_to_target(initial : Array[Double], target : Array[Double], factor : Double, max_iterations : Int) -> RelaxationResult

    relaxation_time

    fn relaxation_time(rate : Double) -> Double

    reproducibility_report

    fn reproducibility_report(scenario : SimulationScenario, toolchain : String) -> String

    reproducible_run

    fn reproducible_run(scenario : SimulationScenario) -> Bool

    resample_periodic

    fn resample_periodic(source_grid : Grid1D, source : ArrayView[Double], target_grid : Grid1D, mode : InterpolationMode) -> Array[Double]

    rescale_particle_weights

    fn rescale_particle_weights(particles : ArrayView[Particle], factor : Double) -> Array[Particle]

    residual_norm

    fn residual_norm(residual : ArrayView[Double]) -> Double

    residual_sum_of_squares

    fn residual_sum_of_squares(actual : ArrayView[Double], predicted : ArrayView[Double]) -> Double

    result_is_well_formed

    fn result_is_well_formed(scenario : SimulationScenario, fingerprint : ResultFingerprint) -> Bool

    rms

    fn rms(values : ArrayView[Double]) -> Double

    run_ensemble

    fn run_ensemble(scenario : SimulationScenario, members : Int) -> Array[EnsembleMember]

    run_experiment

    fn run_experiment(config : ExperimentConfig) -> ExperimentReport

    run_pic_benchmark

    fn run_pic_benchmark(cells? : Int, particles? : Int, steps? : Int) -> BenchmarkSample

    run_pipeline

    fn run_pipeline(config : PipelineConfig) -> PipelineResult

    run_plasma_benchmark_catalog

    fn run_plasma_benchmark_catalog() -> PlasmaBenchmarkReport

    running_maximum

    fn running_maximum(values : ArrayView[Double]) -> Array[Double]

    running_minimum

    fn running_minimum(values : ArrayView[Double]) -> Array[Double]

    safe_grid

    fn safe_grid(cells : Int, length : Double) -> Grid1D?

    safe_ratio

    fn safe_ratio(numerator : Double, denominator : Double, fallback : Double) -> Double

    sample_beam

    fn sample_beam(count : Int, seed : Int, drift : Double, spread : Double) -> Array[Double]

    sample_clone

    fn sample_clone(particles : ArrayView[Particle]) -> Array[Particle]

    sample_histogram

    fn sample_histogram(values : ArrayView[Double], low : Double, high : Double, bins : Int) -> Array[Int]

    sample_lattice

    fn sample_lattice(grid : Grid1D, velocity : Double, count : Int) -> Array[Particle]

    sample_linear

    fn sample_linear(grid : Grid1D, values : ArrayView[Double], x : Double) -> Double

    sample_mean

    fn sample_mean(values : ArrayView[Double]) -> Double

    sample_normal

    fn sample_normal(count : Int, seed : Int, mean_value : Double, standard_deviation : Double) -> Array[Double]

    sample_particles

    fn sample_particles(grid : Grid1D, count : Int, seed : Int, drift : Double, spread : Double) -> Array[Particle]

    sample_periodic

    fn sample_periodic(grid : Grid1D, values : ArrayView[Double], x : Double, mode : InterpolationMode) -> Double

    sample_periodic_linear

    fn sample_periodic_linear(grid : Grid1D, values : ArrayView[Double], x : Double) -> Double

    sample_positions

    fn sample_positions(count : Int, length : Double, phase : Double) -> Array[Double]

    sample_profile

    fn sample_profile(grid : Grid1D, profile : Profile1D, count : Int, seed : Int) -> Array[Double]

    sample_quantiles

    fn sample_quantiles(values : ArrayView[Double], count : Int) -> Array[Double]

    sample_rejection

    fn sample_rejection(grid : Grid1D, profile : Profile1D, count : Int, seed : Int, upper : Double) -> Array[Double]

    sample_span

    fn sample_span(values : ArrayView[Double]) -> Double

    sample_two_beam

    fn sample_two_beam(count : Int, seed : Int, drift : Double, spread : Double) -> Array[Double]

    sample_uniform

    fn sample_uniform(count : Int, seed : Int, low : Double, high : Double) -> Array[Double]

    sample_uniform_grid

    fn sample_uniform_grid(grid : Grid1D, count : Int, seed : Int) -> Array[Double]

    sample_variance

    fn sample_variance(values : ArrayView[Double]) -> Double

    sample_weighted_particles

    fn sample_weighted_particles(grid : Grid1D, count : Int, seed : Int, profile : Profile1D) -> Array[Particle]

    sampled_beam

    fn sampled_beam(config : VlasovConfig, density~ : Double, center_velocity~ : Double, thermal_speed~ : Double) -> Array[Double]

    sampled_maxwellian

    fn sampled_maxwellian(config : VlasovConfig, density~ : Double, thermal_speed~ : Double) -> Array[Double]

    sampling_config_summary

    fn sampling_config_summary(config : SamplingConfig) -> String

    scale_field

    fn scale_field(field : Field1D, factor : Double) -> Field1D

    scales_summary

    fn scales_summary(scales : UnitScales) -> String

    scenario_charge_error

    fn scenario_charge_error(scenario : SimulationScenario) -> Double

    scenario_description

    fn scenario_description(scenario : SimulationScenario) -> String

    scenario_diagnostics_csv

    fn scenario_diagnostics_csv(scenario : SimulationScenario) -> String

    scenario_health

    fn scenario_health(scenario : SimulationScenario) -> Array[HealthCheck]

    scenario_initial_state

    fn scenario_initial_state(scenario : SimulationScenario) -> PicState

    scenario_manifest_summary

    fn scenario_manifest_summary(scenario : SimulationScenario) -> String

    scenario_particle_count

    fn scenario_particle_count(scenario : SimulationScenario) -> Int

    scenario_quality_metrics

    fn scenario_quality_metrics(scenario : SimulationScenario) -> Array[QualityMetric]

    scenario_run

    fn scenario_run(scenario : SimulationScenario) -> PicState

    scenario_step

    fn scenario_step(state : PicState, scenario : SimulationScenario) -> PicState

    scenario_trace

    fn scenario_trace(scenario : SimulationScenario) -> Array[PicDiagnostics]

    scenario_with_boundary

    fn scenario_with_boundary(scenario : SimulationScenario, boundary : Boundary1D) -> SimulationScenario

    scenario_with_dt

    fn scenario_with_dt(scenario : SimulationScenario, dt : Double) -> SimulationScenario

    scenario_with_shape

    fn scenario_with_shape(scenario : SimulationScenario, shape : ShapeKind) -> SimulationScenario

    scenario_work_units

    fn scenario_work_units(scenario : SimulationScenario) -> Int

    serialize_benchmark

    fn serialize_benchmark(suite : BenchmarkSuite) -> String

    serialize_config

    fn serialize_config(config : ExperimentConfig) -> String

    serialize_field_snapshot

    fn serialize_field_snapshot(field : Field1D) -> String

    serialize_grid_values

    fn serialize_grid_values(grid : Grid1D, name : String, values : ArrayView[Double]) -> String

    serialize_named_values

    fn serialize_named_values(names : ArrayView[String], values : ArrayView[Double]) -> String

    serialize_particles_snapshot

    fn serialize_particles_snapshot(particles : ArrayView[Particle]) -> String

    serialize_pipeline

    fn serialize_pipeline(result : PipelineResult) -> String

    serialize_scalar_series

    fn serialize_scalar_series(name : String, values : ArrayView[Double]) -> String

    serialize_shape_weights

    fn serialize_shape_weights(weights : ShapeWeights) -> String

    serialize_summary

    fn serialize_summary(name : String, values : ArrayView[Double]) -> String

    serialize_validation

    fn serialize_validation(report : ValidationReport) -> String

    serialize_vector_series

    fn serialize_vector_series(name : String, values : ArrayView[Vector3]) -> String

    serialize_vlasov

    fn serialize_vlasov(state : VlasovState) -> String

    series_from_pairs

    fn series_from_pairs(name : String, pairs : Array[(Double, Double)]) -> TimeSeries

    series_mean

    fn series_mean(values : ArrayView[Double]) -> Double

    series_range

    fn series_range(values : ArrayView[Double]) -> Double

    series_rms

    fn series_rms(values : ArrayView[Double]) -> Double

    shape_blend

    fn shape_blend(grid : Grid1D, x : Double, first : ShapeKind, second : ShapeKind, fraction : Double) -> Array[Double]

    shape_charge_error

    fn shape_charge_error(grid : Grid1D, particles : ArrayView[Particle], kind : ShapeKind) -> Double

    shape_kind_from_index

    fn shape_kind_from_index(index : Int) -> ShapeKind

    shape_moment

    fn shape_moment(grid : Grid1D, positions : ArrayView[Double], values : ArrayView[Double], kind : ShapeKind, order : Int) -> Double

    shape_name

    fn shape_name(kind : ShapeKind) -> String

    shape_partition_error

    fn shape_partition_error(grid : Grid1D, x : Double, kind : ShapeKind) -> Double

    shape_reconstruct

    fn shape_reconstruct(grid : Grid1D, deposited : ArrayView[Double], positions : ArrayView[Double], kind : ShapeKind) -> Array[Double]

    shape_support

    fn shape_support(kind : ShapeKind) -> Int

    shape_weight

    fn shape_weight(grid : Grid1D, x : Double, index : Int, kind : ShapeKind) -> Double

    shape_weights

    fn shape_weights(grid : Grid1D, x : Double, kind : ShapeKind) -> ShapeWeights

    shift_field

    fn shift_field(grid : Grid1D, field : Field1D, shift : Double) -> Field1D

    shift_profile

    fn shift_profile(grid : Grid1D, values : ArrayView[Double], shift : Double) -> Array[Double]

    simpson_integral

    fn simpson_integral(values : ArrayView[Double], spacing : Double) -> Double

    sinusoidal_electric_field

    fn sinusoidal_electric_field(amplitude : Double, offset : Double, wave_number : Double, phase : Double) -> ElectricFieldModel

    sliding_windows

    fn sliding_windows(values : ArrayView[Double], width : Int, stride : Int) -> Array[Array[Double]]

    solve_2x2

    fn solve_2x2(matrix : Matrix2, rhs : MatrixVector2) -> MatrixVector2

    solve_periodic_field

    fn solve_periodic_field(grid : Grid1D, charge_density : ArrayView[Double]) -> Field1D

    solve_periodic_poisson

    fn solve_periodic_poisson(grid : Grid1D, source : ArrayView[Double], max_iterations? : Int, tolerance? : Double) -> PoissonResult

    Compatibility wrapper with a source-density API.

    solve_periodic_potential_field

    fn solve_periodic_potential_field(grid : Grid1D, source : ArrayView[Double], max_iterations? : Int, tolerance? : Double) -> Field1D

    solve_poisson_dirichlet

    fn solve_poisson_dirichlet(grid : Grid1D, source : ArrayView[Double], left_value : Double, right_value : Double) -> Array[Double]

    solve_poisson_jacobi

    fn solve_poisson_jacobi(grid : Grid1D, charge_density : ArrayView[Double], max_iterations : Int, tolerance : Double) -> PoissonResult

    solve_poisson_periodic

    fn solve_poisson_periodic(grid : Grid1D, charge_density : ArrayView[Double], max_iterations : Int, tolerance : Double) -> PoissonResult

    solver_convergence_rate

    fn solver_convergence_rate(residuals : ArrayView[Double]) -> Double

    solver_is_decreasing

    fn solver_is_decreasing(residuals : ArrayView[Double]) -> Bool

    solver_residual_csv

    fn solver_residual_csv(residuals : ArrayView[Double]) -> String

    sound_speed

    fn sound_speed(state : FluidState, gamma : Double) -> Double

    sound_speed_ideal

    fn sound_speed_ideal(temperature : Double, mass : Double, gamma : Double) -> Double

    species_gyro_frequency

    fn species_gyro_frequency(species : Species, field : Double) -> Double

    species_gyroradius

    fn species_gyroradius(species : Species, temperature : Double, field : Double) -> Double

    species_particles

    fn species_particles(species : Species, count : Int, spacing : Double, drift : Double) -> Array[Particle]

    species_plasma_frequency

    fn species_plasma_frequency(species : Species, density : Double) -> Double

    specific_internal_energy

    fn specific_internal_energy(state : FluidState) -> Double

    spectral_centroid

    fn spectral_centroid(spectrum : ArrayView[SpectrumBin]) -> Double

    spectrum_band_power

    fn spectrum_band_power(spectrum : ArrayView[SpectrumBin], low : Double, high : Double) -> Double

    spectrum_to_csv

    fn spectrum_to_csv(spectrum : ArrayView[SpectrumBin]) -> String

    stable_pic_dt

    fn stable_pic_dt(grid : Grid1D, maximum_speed : Double, safety_factor : Double) -> Double

    stable_time_step

    fn stable_time_step(cell_width : Double, speed : Double, cfl : Double) -> Double

    standard_scenario

    fn standard_scenario(name : String, cells : Int, particles : Int, steps : Int) -> SimulationScenario

    sum_values

    fn sum_values(values : ArrayView[Double]) -> Double

    summarize_ensemble

    fn summarize_ensemble(members : ArrayView[EnsembleMember]) -> EnsembleSummary

    summarize_pic_series

    fn summarize_pic_series(values : ArrayView[PicDiagnostics]) -> PicSeriesSummary

    summarize_series

    fn summarize_series(name : String, values : ArrayView[Double]) -> SeriesSummary

    summarize_vlasov

    fn summarize_vlasov(state : VlasovState, mass : Double) -> VlasovSummary

    summary_array

    fn summary_array(values : ArrayView[Array[Double]]) -> Array[SeriesSummary]

    summary_to_csv

    fn summary_to_csv(summary : SeriesSummary) -> String

    table_append_column

    fn table_append_column(table : NumericTable, name : String, values : ArrayView[Double]) -> NumericTable

    table_column_sums

    fn table_column_sums(table : NumericTable) -> Array[Double]

    table_column_values

    fn table_column_values(table : NumericTable, index : Int) -> Array[Double]

    table_filter_rows

    fn table_filter_rows(table : NumericTable, column : Int, low : Double, high : Double) -> NumericTable

    table_from_series

    fn table_from_series(names : Array[String], series : Array[Array[Double]]) -> NumericTable

    table_maximum

    fn table_maximum(table : NumericTable, index : Int) -> Double

    table_mean

    fn table_mean(table : NumericTable, index : Int) -> Double

    table_minimum

    fn table_minimum(table : NumericTable, index : Int) -> Double

    table_row_sums

    fn table_row_sums(table : NumericTable) -> Array[Double]

    table_summary

    fn table_summary(table : NumericTable) -> String

    thermal_debye_length

    fn thermal_debye_length(temperature : Double, density : Double, charge : Double) -> Double

    thermal_energy

    fn thermal_energy(temperature : Double) -> Double

    thermal_speed

    fn thermal_speed(temperature : Double, mass : Double) -> Double

    thermal_speed_from_temperature

    fn thermal_speed_from_temperature(temperature : Double, mass : Double) -> Double

    thermal_unit

    fn thermal_unit(scales : UnitScales) -> Double

    thermal_velocity

    fn thermal_velocity(temperature_k : Double, mass_kg~ : Double) -> Double

    total_charge

    fn total_charge(grid : Grid1D, charge_density : ArrayView[Double]) -> Double

    total_particle_charge

    fn total_particle_charge(particles : ArrayView[Particle]) -> Double

    trace_field_line

    fn trace_field_line(position : Vector3, field : MagneticField3D, step : Double, count : Int) -> Array[Vector3]

    trace_pic

    fn trace_pic(state : PicState, dt : Double, steps : Int, every? : Int) -> Array[PicDiagnostics]

    trace_pic_diagnostics

    fn trace_pic_diagnostics(state : PicState, dt : Double, steps : Int) -> Array[PicDiagnostics]

    translate_particles

    fn translate_particles(particles : ArrayView[Particle], shift : Double) -> Array[Particle]

    trapezoid_integral

    fn trapezoid_integral(grid : Grid1D, values : ArrayView[Double]) -> Double

    trapezoid_integral_uniform

    fn trapezoid_integral_uniform(values : ArrayView[Double], spacing : Double) -> Double

    tridiagonal_jacobi

    fn tridiagonal_jacobi(diagonal : ArrayView[Double], lower : ArrayView[Double], upper : ArrayView[Double], rhs : ArrayView[Double], iterations : Int) -> RelaxationResult

    tridiagonal_residual

    fn tridiagonal_residual(diagonal : ArrayView[Double], lower : ArrayView[Double], upper : ArrayView[Double], solution : ArrayView[Double], rhs : ArrayView[Double]) -> Array[Double]

    two_stream_particles

    fn two_stream_particles(count : Int, length : Double, speed : Double) -> Array[Particle]

    uniform_magnetic_field

    fn uniform_magnetic_field(field : Vector3) -> MagneticField3D

    vacuum_permittivity

    let vacuum_permittivity : Double

    validate_count

    fn validate_count(value : Int, name : String) -> ValidationReport

    validate_grid

    fn validate_grid(cells : Int, length : Double) -> ValidationReport

    validate_non_negative

    fn validate_non_negative(value : Double, name : String) -> ValidationReport

    validate_positive

    fn validate_positive(value : Double, name : String) -> ValidationReport

    validate_range

    fn validate_range(value : Double, low : Double, high : Double, name : String) -> ValidationReport

    validate_simulation_inputs

    fn validate_simulation_inputs(grid : Grid1D, dt : Double, particles : Int, steps : Int) -> ValidationReport

    validation_health

    fn validation_health(report : ValidationReport) -> HealthCheck

    validation_message

    fn validation_message(report : ValidationReport) -> String

    vector_distance

    fn vector_distance(a : ArrayView[Double], b : ArrayView[Double]) -> Double

    velocity_marginal

    fn velocity_marginal(state : VlasovState) -> Array[Double]

    velocity_mean

    fn velocity_mean(particles : ArrayView[Particle]) -> Double

    velocity_variance

    fn velocity_variance(particles : ArrayView[Particle]) -> Double

    verification_bundle_check_count

    fn verification_bundle_check_count(bundle : VerificationBundle) -> Int

    verification_bundle_checksum

    fn verification_bundle_checksum(bundle : VerificationBundle) -> Int

    verification_bundle_expected_work

    fn verification_bundle_expected_work(bundle : VerificationBundle) -> Int

    verification_bundle_is_deterministic

    fn verification_bundle_is_deterministic(scenario : SimulationScenario, toolchain : String) -> Bool

    verification_bundle_matches_work

    fn verification_bundle_matches_work(bundle : VerificationBundle) -> Bool

    verification_bundle_passes_thresholds

    fn verification_bundle_passes_thresholds(bundle : VerificationBundle, charge : Double, energy : Double) -> Bool

    verification_bundle_records

    fn verification_bundle_records(bundle : VerificationBundle) -> Array[QualityMetric]

    verification_bundle_schema

    fn verification_bundle_schema() -> String

    verification_bundle_status

    fn verification_bundle_status(bundle : VerificationBundle) -> String

    verification_bundle_to_text

    fn verification_bundle_to_text(bundle : VerificationBundle) -> String

    vlasov_advect_x

    fn vlasov_advect_x(state : VlasovState, velocity : Double) -> VlasovState

    vlasov_cfl

    fn vlasov_cfl(config : VlasovConfig) -> Double

    vlasov_charge_from_density

    fn vlasov_charge_from_density(_state : VlasovState, density : ArrayView[Double]) -> Array[Double]

    vlasov_clip_negative

    fn vlasov_clip_negative(state : VlasovState) -> VlasovState

    vlasov_conservative_mass_correction

    fn vlasov_conservative_mass_correction(state : VlasovState, reference_mass : Double) -> VlasovState

    vlasov_density

    fn vlasov_density(config : VlasovConfig, distribution : ArrayView[Double]) -> Array[Double]

    vlasov_density_error

    fn vlasov_density_error(state : VlasovState, expected : Double) -> Double

    vlasov_distribution_difference

    fn vlasov_distribution_difference(first : VlasovState, second : VlasovState) -> Array[Double]

    vlasov_invariants

    fn vlasov_invariants(state : VlasovState, expected_mass : Double) -> Array[InvariantCheck]

    vlasov_is_normalized

    fn vlasov_is_normalized(state : VlasovState, expected : Double, tolerance : Double) -> Bool

    vlasov_is_positive

    fn vlasov_is_positive(state : VlasovState) -> Bool

    vlasov_l2_difference

    fn vlasov_l2_difference(first : VlasovState, second : VlasovState) -> Double

    vlasov_mass_error

    fn vlasov_mass_error(first : VlasovState, second : VlasovState) -> Double

    vlasov_moments

    fn vlasov_moments(state : VlasovState) -> Moments1D

    vlasov_report_to_csv

    fn vlasov_report_to_csv(reports : ArrayView[VlasovStepReport]) -> String

    vlasov_rescale_mass

    fn vlasov_rescale_mass(state : VlasovState, target : Double) -> VlasovState

    vlasov_run_reports

    fn vlasov_run_reports(state : VlasovState, steps : Int) -> Array[VlasovStepReport]

    vlasov_shift_distribution

    fn vlasov_shift_distribution(state : VlasovState, shift : Double) -> VlasovState

    vlasov_snapshot_to_csv

    fn vlasov_snapshot_to_csv(state : VlasovState) -> String

    vlasov_step_report

    fn vlasov_step_report(state : VlasovState) -> VlasovStepReport

    vlasov_summary_to_csv

    fn vlasov_summary_to_csv(values : ArrayView[VlasovSummary]) -> String

    vlasov_time_series

    fn vlasov_time_series(state : VlasovState, steps : Int) -> Array[VlasovSummary]

    wave_group_speed

    fn wave_group_speed(omega_first : Double, omega_second : Double, wave_first : Double, wave_second : Double) -> Double

    wave_phase_speed

    fn wave_phase_speed(omega : Double, wave_number : Double) -> Double

    wavelength_from_wavenumber

    fn wavelength_from_wavenumber(wave_number : Double) -> Double

    wavenumber_from_wavelength

    fn wavenumber_from_wavelength(wavelength : Double) -> Double

    weighted_histogram_particles

    fn weighted_histogram_particles(grid : PhaseSpaceGrid, particles : ArrayView[Particle]) -> Array[Double]

    weighted_mean

    fn weighted_mean(values : ArrayView[Double], weights : ArrayView[Double]) -> Double

    weighted_sum

    fn weighted_sum(values : ArrayView[Double], weights : ArrayView[Double]) -> Double

    window_means

    fn window_means(values : ArrayView[Double], width : Int, stride : Int) -> Array[Double]

    z_scores

    fn z_scores(values : ArrayView[Double]) -> Array[Double]

    zeros

    fn zeros(n : Int) -> Array[Double]