numra-ide 0.1.1

Volterra integro-differential equation solvers for Numra: general quadrature solver plus Prony-series fast path for exponential kernels.
Documentation

numra-ide

Volterra integro-differential equation solvers for the Numra workspace — general quadrature solver plus a Prony-series fast path for exponential kernels.

Crates.io docs.rs

Solves Volterra IDEs y'(t) = f(t, y) + ∫₀ᵗ K(t, s, y(s)) ds for history-dependent dynamics. The general VolterraSolver handles arbitrary memory kernels via quadrature; the specialized PronySolver exploits sums of exponentials for an O(N) rather than O(N²) step cost.

Example

use numra_ide::kernels::ExponentialKernel;
use numra_ide::{IdeOptions, IdeSolver, IdeSystem, Kernel, VolterraSolver};

// Viscoelastic: y' = -k·y + ∫ K(t-s)·y(s) ds with exponential kernel
struct Viscoelastic {
    k: f64,
    kernel: ExponentialKernel<f64>,
}

impl IdeSystem<f64> for Viscoelastic {
    fn dim(&self) -> usize { 1 }
    fn rhs(&self, _t: f64, y: &[f64], f: &mut [f64]) {
        f[0] = -self.k * y[0];
    }
    fn kernel(&self, t: f64, s: f64, y: &[f64], k: &mut [f64]) {
        k[0] = self.kernel.evaluate(t - s) * y[0];
    }
}

What's in this crate

Solvers:

  • VolterraSolver — general Volterra IDE solver using quadrature
  • VolterraRK4Solver — RK4-based variant
  • PronySolverO(N) fast path for sum-of-exponentials kernels via Prony reduction

Kernels:

  • ExponentialKernelK(t, s) = a · exp(-b(t-s))
  • PowerLawKernelK(t, s) = (t-s)^{-α}, fractional memory
  • PronyKernel — sum-of-exponentials representation
  • Kernel trait — user-defined kernels

Composes with

  • numra-fde — power-law kernels share the long-memory machinery of fractional derivatives
  • numra-interp for post-hoc resampling of viscoelastic relaxation curves
  • numra-fit for fitting Prony coefficients to measured kernel responses

See cross-formalism tests for IDE-reduces-to-ODE consistency and memory-kernel composition.

Install

[dependencies]
numra-ide = "0.1"

Or via the umbrella crate:

[dependencies]
numra = "0.1"

Documentation

License

Numra Academic & Research License (Non-Commercial). Academic and research use is free; commercial use requires a separate license — contact contact@spectralautomata.com. See LICENSE.