Skip to main content

A Finite-Difference PDE solver.

Project description

PDEPy

Supported Python versions PyPI version Build Status Coverage Status Code style: black

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

Usage

Installation

pip install pdepy

Examples

Laplace's Equation

import numpy as np
from pdepy import laplace

xn, xf, yn, yf = 30, 3.0, 40, 4.0

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.0, 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.0, 40, 1.0

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")

Development

Create virtual environment and install requirements:

bin/setup_venv

Other commands

Run command in virtual environment:

bin/run <command>

Install requirements:

bin/install_requirements

Format codebase:

bin/format

Lint codebase:

bin/lint

Run unit tests:

bin/test

Publish

Package and distribute:

bin/publish

Project details


Download files

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

Files for pdepy, version 1.0.4
Filename, size File type Python version Upload date Hashes
Filename, size pdepy-1.0.4-py3-none-any.whl (8.0 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size pdepy-1.0.4.tar.gz (6.3 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page