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.

Source Distribution

pdepy-1.0.4.tar.gz (6.3 kB view hashes)

Uploaded Source

Built Distribution

pdepy-1.0.4-py3-none-any.whl (8.0 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