|
Janus 2.0.0
High-performance C++20 dual-mode numerical framework
|
ODE integration for Janus framework. More...
#include "janus/core/JanusConcepts.hpp"#include "janus/core/JanusError.hpp"#include "janus/core/JanusTypes.hpp"#include "janus/math/Arithmetic.hpp"#include "janus/math/IntegratorStep.hpp"#include "janus/math/Linalg.hpp"#include "janus/math/Quadrature.hpp"#include "janus/math/Spacing.hpp"#include <Eigen/Dense>#include <casadi/casadi.hpp>#include <functional>#include <limits>#include <optional>#include <string>#include <vector>

Go to the source code of this file.
Classes | |
| struct | janus::OdeResult< Scalar > |
| Result structure for ODE solvers. More... | |
| struct | janus::SecondOrderOdeResult< Scalar > |
| Result structure for second-order IVP solvers. More... | |
| struct | janus::SecondOrderIvpOptions |
| Options for second-order structure-preserving trajectory integration. More... | |
| struct | janus::MassMatrixIvpOptions |
| Options for stiff mass-matrix integration. More... | |
| struct | janus::QuadResult< Scalar > |
| Result structure for quadrature (definite integration). More... | |
Namespaces | |
| namespace | janus |
| namespace | janus::detail |
| Smooth approximation of ReLU function: softplus(x) = (1/beta) * log(1 + exp(beta * x)). | |
Enumerations | |
| enum class | janus::SecondOrderIntegratorMethod { janus::StormerVerlet , janus::RungeKuttaNystrom4 } |
| Stepper selection for second-order systems q'' = a(t, q). More... | |
| enum class | janus::MassMatrixIntegratorMethod { janus::RosenbrockEuler , janus::Bdf1 } |
| Stepper selection for mass-matrix systems M(t, y) y' = f(t, y). More... | |
Functions | |
| NumericVector | janus::detail::to_numeric_vector (std::initializer_list< double > init) |
| const char * | janus::detail::method_name (SecondOrderIntegratorMethod method) |
| const char * | janus::detail::method_name (MassMatrixIntegratorMethod method) |
| void | janus::detail::validate_eval_count (const std::string &context, int n_eval) |
| void | janus::detail::validate_second_order_options (const SecondOrderIvpOptions &opts, const std::string &context) |
| void | janus::detail::validate_mass_matrix_options (const MassMatrixIvpOptions &opts, const std::string &context) |
| void | janus::detail::validate_second_order_initial_state (const NumericVector &q0, const NumericVector &v0) |
| double | janus::detail::inf_norm (const NumericVector &x) |
| bool | janus::detail::is_constant_zero (const SymbolicScalar &expr) |
| template<typename VectorFunc> | |
| NumericMatrix | janus::detail::finite_difference_jacobian (VectorFunc &&func, const NumericVector &x, double epsilon) |
| template<typename MassFunc> | |
| NumericMatrix | janus::detail::evaluate_mass_matrix (MassFunc &&mass_matrix, double t, const NumericVector &y, const std::string &context) |
| template<typename RhsFunc, typename MassFunc> | |
| NumericVector | janus::detail::rosenbrock_euler_step (RhsFunc &&rhs, MassFunc &&mass_matrix, const NumericVector &y, double t, double dt, const MassMatrixIvpOptions &opts) |
| template<typename RhsFunc, typename MassFunc> | |
| NumericVector | janus::detail::bdf1_step (RhsFunc &&rhs, MassFunc &&mass_matrix, const NumericVector &y, double t, double dt, const MassMatrixIvpOptions &opts) |
| template<typename Func, typename T> | |
| QuadResult< T > | janus::quad (Func &&func, T a, T b, double abstol=1e-8, double reltol=1e-6) |
| Compute definite integral using adaptive quadrature (numeric) or CVODES (symbolic). | |
| QuadResult< SymbolicScalar > | janus::quad (const SymbolicScalar &expr, const SymbolicScalar &variable, double a, double b, double abstol=1e-8, double reltol=1e-6) |
| Compute definite integral of a symbolic expression using CasADi CVODES. | |
| template<typename Func> | |
| OdeResult< double > | janus::solve_ivp (Func &&fun, std::pair< double, double > t_span, const NumericVector &y0, int n_eval=100, double abstol=1e-8, double reltol=1e-6) |
| Solve initial value problem: dy/dt = f(t, y), y(t0) = y0. | |
| template<typename Func> | |
| OdeResult< double > | janus::solve_ivp (Func &&fun, std::pair< double, double > t_span, std::initializer_list< double > y0_init, int n_eval=100, double abstol=1e-8, double reltol=1e-6) |
| Convenience overload: solve_ivp with initializer list for y0. | |
| template<typename AccelFunc> | |
| SecondOrderOdeResult< double > | janus::solve_second_order_ivp (AccelFunc &&acceleration, std::pair< double, double > t_span, const NumericVector &q0, const NumericVector &v0, int n_eval=100, const SecondOrderIvpOptions &opts={}) |
| Solve a second-order IVP q'' = a(t, q), q(t0) = q0, v(t0) = v0. | |
| template<typename AccelFunc> | |
| SecondOrderOdeResult< double > | janus::solve_second_order_ivp (AccelFunc &&acceleration, std::pair< double, double > t_span, std::initializer_list< double > q0_init, std::initializer_list< double > v0_init, int n_eval=100, const SecondOrderIvpOptions &opts={}) |
| Convenience overload for second-order IVPs using initializer lists. | |
| template<typename RhsFunc, typename MassFunc> | |
| OdeResult< double > | janus::solve_ivp_mass_matrix (RhsFunc &&rhs, MassFunc &&mass_matrix, std::pair< double, double > t_span, const NumericVector &y0, int n_eval=100, const MassMatrixIvpOptions &opts={}) |
| Solve M(t, y) y' = f(t, y) with a native numeric stiff integrator. | |
| template<typename RhsFunc, typename MassFunc> | |
| OdeResult< double > | janus::solve_ivp_mass_matrix (RhsFunc &&rhs, MassFunc &&mass_matrix, std::pair< double, double > t_span, std::initializer_list< double > y0_init, int n_eval=100, const MassMatrixIvpOptions &opts={}) |
| Convenience overload for mass-matrix IVPs using initializer lists. | |
| OdeResult< double > | janus::solve_ivp_mass_matrix_expr (const SymbolicScalar &rhs_expr, const SymbolicScalar &mass_expr, const SymbolicScalar &t_var, const SymbolicScalar &y_var, std::pair< double, double > t_span, const NumericVector &y0, int n_eval=100, const MassMatrixIvpOptions &opts={}) |
| Solve a symbolic mass-matrix IVP using CasADi IDAS. | |
| template<typename Func> | |
| OdeResult< SymbolicScalar > | janus::solve_ivp_symbolic (Func &&fun, std::pair< double, double > t_span, const Eigen::VectorXd &y0, int n_eval=100, double abstol=1e-8, double reltol=1e-6) |
| Solve IVP with symbolic ODE function (CasADi CVODES backend). | |
| OdeResult< double > | janus::solve_ivp_expr (const SymbolicScalar &ode_expr, const SymbolicScalar &t_var, const SymbolicScalar &y_var, std::pair< double, double > t_span, const NumericVector &y0, int n_eval=100, double abstol=1e-8, double reltol=1e-6) |
| Solve IVP with a symbolic expression directly (expression-based API). | |
ODE integration for Janus framework.
Provides quad (definite integration) and solve_ivp (initial value problem) with dual-backend support: numeric fallback and CasADi CVODES for symbolic graphs.
See also IntegratorStep.hpp for single-step integrators (euler_step, rk4_step, etc.)