Skip to main content

Numerical integrators using Numba

Project description

PyPI Package latest release PyPI Wheel Supported versions Supported implementations

Numba Integrators

Numba Integrators is collection numerical integrators based on the ones in SciPy. Aim is to make them faster and much more compatible with Numba.

Table of Contents

Quick start guide

Here's how you can start

The first steps

Installing

Install Numba Integrators with pip

pip install numba_integrators

Importing

Import name is the same as install name, numba_integrators.

import numba_integrators

Since the package is accessed often, abbreviation ni is used. The abbreviation is used throughout this document.

import numba_integrators as ni

Example

import numba as nb
import numba_integrators as ni
import numpy as np

@nb.njit(nb.float64[:](nb.float64, nb.float64[:]))
def f(t, y):
    '''Differential equation for sine wave'''
    return np.array((y[1], -y[0]))

y0 = np.array((0., 1.))

solver = ni.RK45(f, 0.0, y0,
                 t_bound = 1, atol = 1e-8, rtol = 1e-8)

t = []
y = []

while ni.step(solver):
    t.append(solver.t)
    y.append(solver.y)

print(t)
print(y)

Example of the advanced function

import numba as nb
import numba_integrators as ni
import numpy as np

@nb.njit
def f(t, y, parameters):
    '''Differential equation for sine wave'''
    auxiliary = parameters[0] * y[1]
    dy = np.array((auxiliary, -y[0])) + parameters[1]
    return dy, auxiliary

t0 = 0.
y0 = np.array((0., 1.))
parameters = (2., np.array((-1., 1.)))

# Numba type signatures
parameters_signature = nb.types.Tuple((nb.float64, nb.float64[:]))
auxiliary_signature = nb.float64
solver_type = ni.RK45

Solver = ni.Advanced(parameters_signature, auxiliary_signature, solver_type)
solver = Solver(f, t0, y0, parameters,
                t_bound = 1, atol = 1e-8, rtol = 1e-8)

t = []
y = []
auxiliary = []

while ni.step(solver):
    t.append(solver.t)
    y.append(solver.y)
    auxiliary.append(solver.auxiliary)

print(t)
print(y)
print(auxiliary)

Changelog

0.3.1 2024-07-17

  • Fast forward
  • Refactoring

0.2.2 2023-11-07

  • Dev tools update

0.2.1 2023-08-11

  • Advanced mode solver to handle functions with parameters and auxiliary output

0.1.2 2023-08-06

  • Fixes

0.1.1 2023-08-05

  • Initial working version

0.0.3 2023-05-14

  • Inital working state

Project details


Download files

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

Source Distribution

numba_integrators-0.3.1.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

numba_integrators-0.3.1-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

Details for the file numba_integrators-0.3.1.tar.gz.

File metadata

  • Download URL: numba_integrators-0.3.1.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for numba_integrators-0.3.1.tar.gz
Algorithm Hash digest
SHA256 9989757d456ea2ffad52fb724d23bd14a80a736d4fcf79e39b40ad810074e408
MD5 6af7b8212efb37c75bed3905fd20d776
BLAKE2b-256 30de955b734961c4a37a984e8dad085f98d9b9511cc05e30835c755c8bcff72b

See more details on using hashes here.

File details

Details for the file numba_integrators-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for numba_integrators-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1a445aa2e41884b78ef79a09de4fb02187b7e92cdd5b408cc6ce2151993a4f78
MD5 cc3a535aa3a1a24b7c26739749541690
BLAKE2b-256 d59a865fbeeaa530cc7c57ce1dc1abd8f47b12286c6e1676e190c3c63a46855c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page