Archimedes¶
Archimedes is an open-source Python framework designed to simplify complex modeling and simulation tasks, with the ultimate goal of making it possible to do practical hardware engineering with Python. It builds on the powerful symbolic computation capabilities of CasADi with an interface designed to be familiar to NumPy users.
Key features:
NumPy-compatible array API with automatic dispatch
Efficient execution of computational graphs in compiled C++
Automatic differentiation with forward- and reverse-mode sparse autodiff
Interface to “plugin” solvers for ODE/DAEs, root-finding, and nonlinear programming
Automated C code generation for embedded applications
JAX-style function transformations
PyTorch-style hierarchical data structures for parameters and dynamics modeling
Quick Example¶
import numpy as np
import archimedes as arc
def f(x):
return np.sin(x**2)
# Use automatic differentiation to compute df/dx
df = arc.grad(f)
np.allclose(df(1.0), 2.0 * np.cos(1.0)) # True
# Automatically generate C code
template_args = (0.0,) # Data type for C function
arc.codegen(df, "grad_f.c", template_args)
Documentation¶
Getting Started
Core Concepts
Examples
Reference
Development