Skip to main content

Solverz

Documentation · Cookbook · API reference · PyPI

Solverz is an open-source, general-purpose modeling and simulation toolkit for Python. Define symbolic equations, generate numerical functions or compiled Python modules, and solve your models through a consistent interface.

Installation

Solverz requires Python 3.10 or later.

pip install Solverz

Model types

Solverz supports three equation types.

  • Algebraic Equations (AEs) $0=F(y,p)$
  • Finite Difference Algebraic Equations (FDAEs) $0=F(y,p,y_0)$
  • Differential Algebraic Equations (DAEs) $M\dot{y}=F(t,y,p)$

where $p$ is the parameter set of your models, $y_0$ is the previous time node value of $y$.

A first simulation

The following example models an object launched vertically from the ground. Its velocity and height satisfy

$$ \begin{aligned} &v'=-9.8\ &h'=v \end{aligned} $$

with $v(0)=20$ and $h(0)=0$, we can just type the codes

import matplotlib.pyplot as plt
import numpy as np
from Solverz import Model, Var, Ode, Opt, made_numerical, Rodas

# Declare a simulation model
m = Model()
# Declare variables and equations
m.h = Var('h', 0)
m.v = Var('v', 20)
m.f1 = Ode('f1', f=m.v, diff_var=m.h)
m.f2 = Ode('f2', f=-9.8, diff_var=m.v)
# Create the symbolic equation instance and the variable combination 
bball, y0 = m.create_instance()
# Transform symbolic equations to python numerical functions.
nbball = made_numerical(bball, y0, sparse=True)

# Define events, that is,  if the apple hits the ground then the simulation will cease.
def events(t, y):
    value = np.array([y[0]]) 
    isterminal = np.array([1]) 
    direction = np.array([-1]) 
    return value, isterminal, direction

# Solve the DAE
sol = Rodas(nbball,
            np.linspace(0, 30, 100), 
            y0, 
            Opt(event=events))

# Visualize
plt.plot(sol.T, sol.Y['h'][:, 0])
plt.xlabel('Time/s')
plt.ylabel('h/m')
plt.show()

The result is

Height of the object over time

Use the numerical interface

The example uses a Rosenbrock method. Solverz also exposes numerical functions for custom solvers. The following Newton–Raphson implementation solves algebraic equations.

@ae_io_parser
def nr_method(eqn: nAE,
              y: np.ndarray,
              opt: Opt = None):
    if opt is None:
        opt = Opt(ite_tol=1e-8)

    tol = opt.ite_tol
    p = eqn.p
    df = eqn.F(y, p)
    ite = 0
    # main loop
    while max(abs(df)) > tol:
        ite = ite + 1
        y = y - solve(eqn.J(y, p), df)
        df = eqn.F(y, p)
        if ite >= 100:
            print(f"Cannot converge within 100 iterations. Deviation: {max(abs(df))}!")
            break

    return aesol(y, ite)

The implementation of the NR solver just resembles the formulae you read in any numerical analysis book. This is because the numerical AE object eqn provides the $F(t,y,p)$ interface and its Jacobian $J(t,y,p)$, which is derived by symbolic differentiation.

Generate a reusable module

Save a model as an independent Python module when you need to reuse it.

from Solverz import module_printer

pyprinter = module_printer(bball,
                           y0,
                           'bounceball',
                           jit=True)
pyprinter.render()

Import the generated model with

from bounceball import mdl as nbball, y as y0

Resources

Cite Solverz

Chinese

[1] 俞睿智,顾伟,陆帅,张苏涵,徐一骏.面向综合能源系统的开源高性能仿真建模工具开发[J].中国电机工程学报,2026,46(9):3654-3665.DOI:10.13334/j.0258-8013.pcsee.242788.

English

[1] R. Yu, W. Gu, S. Lu, S. Zhang, Y. Xu and R. Wang, "Efficient and Generic Co-simulation Framework for Integrated Energy Systems with Renewable Energy Penetration," 2026 IEEE PES International Meeting (PES IM), Hong Kong, Hong Kong, 2026, pp. 1-5, doi: 10.1109/PESIM67009.2026.11439048.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

solverz-0.11.1.tar.gz (7.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

solverz-0.11.1-py3-none-any.whl (285.0 kB view details)

Uploaded Python 3

File details

Details for the file solverz-0.11.1.tar.gz.

File metadata

  • Download URL: solverz-0.11.1.tar.gz
  • Upload date:
  • Size: 7.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for solverz-0.11.1.tar.gz
Algorithm Hash digest
SHA256 d016efe7bc5b23e74abba1481e4f543733d2341c111ffa768b49702002992416
MD5 1784682bda25d977f529e11ecc1a5272
BLAKE2b-256 73b89118a6a35a94601e87e01229554c31baa16b32a41069fa499ecd0b4efcc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for solverz-0.11.1.tar.gz:

Publisher: ci-cd.yml on smallbunnies/Solverz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file solverz-0.11.1-py3-none-any.whl.

File metadata

  • Download URL: solverz-0.11.1-py3-none-any.whl
  • Upload date:
  • Size: 285.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for solverz-0.11.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d22c7535692fe36096ceb198419e952f068dfe8a1fe6067adf2e270d42851d09
MD5 d14737b419cccfa8aa58595a8537ae20
BLAKE2b-256 5516c9f97162c0cd6184b06589287afcbdebff09778366ce60941b5d359fe6d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for solverz-0.11.1-py3-none-any.whl:

Publisher: ci-cd.yml on smallbunnies/Solverz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.11.1 This release

2 files

0.11.0

2 files

0.10.2

2 files

0.10.1

2 files

0.10.0

2 files

0.9.0

2 files

0.8.5

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.1

2 files

0.6.0

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.1

2 files

0.2.0

2 files

0.1.0

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page