Module jacobian

Module jacobian 

Source
Expand description

Jacobian approximation and handling utilities for ODE solvers

This module provides tools for computing, updating, and reusing Jacobian matrices in implicit ODE solvers. It implements various approximation strategies, reuse logic, and specialized techniques for different problem types.

Re-exports§

pub use crate::ode::utils::common::finite_difference_jacobian;

Structs§

JacobianManager
Manages Jacobian computation, updates, and reuse
NewtonParameters
Newton solver parameters
NewtonResult
Result of a Newton solve
ParallelJacobianStrategy
Struct to manage parallel Jacobian computation strategy

Enums§

JacobianStrategy
Strategy for Jacobian approximation
JacobianStructure
Structure of the Jacobian matrix

Functions§

adaptive_jacobian
Jacobian strategy that uses autodiff when available and falls back to finite differences when not
autodiff_jacobian
Fallback implementation when autodiff feature is not enabled
block_update
Performs a block-update of the Jacobian using block structure
broyden_update
Update the Jacobian using Broyden’s method (rank-1 update) J_{k+1} = J_k + (df - J_k * dy) * dy^T / (dy^T * dy)
compute_banded_jacobian
Computes Jacobian for a banded system with specified number of lower and upper diagonals
compute_colored_jacobian
Group variables based on their interactions to minimize function evaluations
compute_diagonal_jacobian
Computes Jacobian for a system with diagonal or block-diagonal structure
compute_jacobian
Compute Jacobian using finite differences (for compatibility)
generate_banded_coloring
Generate a simple coloring for a banded matrix
is_autodiff_available
Check if autodiff is available
modified_newton_solve
Modified Newton solve that reuses the same Jacobian for multiple iterations
newton_solve
Solve a nonlinear system F(x) = 0 using Newton’s method
parallel_finite_difference_jacobian
Compute Jacobian matrix using parallel finite differences
parallel_sparse_jacobian
Compute sparse Jacobian matrix in parallel using coloring
should_use_parallel_jacobian
Determine if parallel Jacobian computation should be used