Skip to main content

A Finite-Difference PDE solver.

Project description

https://img.shields.io/pypi/v/pdepy.svg https://travis-ci.org/olivertso/pdepy.svg?branch=master https://coveralls.io/repos/github/olivertso/pdepy/badge.svg?branch=master

Overview

Disclaimer: Use at your own risk. I have a bachelor’s degree in applied and computational mathematics, but never worked professionally in the field.

A python 3 library for solving initial and boundary value problems of some linear partial differential equations using finite-difference methods:

  • Laplace

    • implicit central

  • Parabolic

    • explicit central

    • explicit upwind

    • implicit central

    • implicit upwind

  • Wave

    • explicit

    • implicit

Getting Started

Installing

pip install pdepy

Examples

Laplace’s Equation:

import numpy as np
from pdepy import laplace

xn, xf, yn, yf = 30, 3., 40, 4.

x = np.linspace(0, xf, xn+1)
y = np.linspace(0, yf, yn+1)

f = lambda x, y: (x-1)**2 - (y-2)**2
bound_x0 = f(0, y)
bound_xf = f(xf, y)
bound_y0 = f(x, 0)
bound_yf = f(x, yf)

axis  = (x, y)
conds = (bound_x0, bound_xf, bound_y0, bound_yf)

laplace.solve(axis, conds, method='ic')

Parabolic Equation:

import numpy as np
from pdepy import parabolic

xn, xf, yn, yf = 40, 4., 50, 0.5

x = np.linspace(0, xf, xn+1)
y = np.linspace(0, yf, yn+1)

init  = x**2 - 4*x + 5
bound = 5 * np.exp(-y)

p, q, r, s = 1, 1, -3, 3

axis   = (x, y)
conds  = (init, bound, bound)
params = (p, q, r, s)

parabolic.solve(axis, params, conds, method='iu')

Wave Equation:

import numpy as np
from pdepy import wave

xn, xf, yn, yf = 40, 1., 40, 1.

x = np.linspace(0, xf, xn+1)
y = np.linspace(0, yf, yn+1)

d_init = 1
init   = x * (1-x)
bound  = y * (1-y)

axis  = (x, y)
conds = (d_init, init, bound, bound)

wave.solve(axis, conds, method='i')

Developing and Testing

pip install tox
pip install -e .

# Testing.
tox

# Always remove .tox/ after changing the files in ./requirements.
rm -rf .tox/

Packaging and Distributing

Do not forget to update the version field in setup.py.

pip install twine

# Packaging.
python setup.py sdist
python setup.py bdist_wheel

# Distributing.
twine upload dist/*

More about packaging and distributing here.

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

pdepy-1.0.3.tar.gz (6.0 kB view hashes)

Uploaded Source

Built Distribution

pdepy-1.0.3-py3-none-any.whl (9.5 kB view hashes)

Uploaded Python 3

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