PDEVisualizer Documentation

PyPI version Python 3.10+ License: MIT

A lightweight, high-performance Python library for prototyping and visualizing partial differential equations (PDEs). Built for researchers, educators, and students who need fast, beautiful PDE simulations without the complexity of full-scale finite element frameworks.

Features

Core Capabilities

  • Heat Equation Solver - Diffusion and thermal dynamics simulations

  • Wave Equation Solver - Acoustic and seismic wave propagation

  • Unified API - Clean, consistent interface for all PDE types

  • Numba-Accelerated - JIT-compiled kernels for high performance

Boundary Conditions

  • Dirichlet - Fixed value boundaries

  • Neumann - Fixed flux/gradient (insulated boundaries)

  • Periodic - Wraparound boundaries

Visualization Tools

  • Animated Exports - GIF/MP4 output with matplotlib

  • Contour Plots - Beautiful contour visualizations

  • Multi-Panel Comparisons - Side-by-side solution comparisons

  • Evolution Tracking - Solution development over time

Parameter Exploration

  • Parameter Sweeps - Single parameter analysis

  • Parameter Grids - 2D parameter space exploration

  • Sensitivity Analysis - Understanding parameter effects

  • Automated Metrics - Max/min values, energy tracking

  • Professional Visualizations - Publication-quality plots

Quick Start

Installation

pip install pdevisualizer

Basic Heat Equation

import numpy as np
from pdevisualizer import PDESolver, InitialConditions, BoundaryCondition

# Create solver for heat equation on 50x50 grid
solver = PDESolver('heat', grid_shape=(50, 50))

# Set Gaussian initial temperature distribution
u0 = InitialConditions.gaussian_pulse(
    (50, 50), center=(25, 25), sigma=5, amplitude=100
)
solver.set_initial_conditions(u0)

# Configure parameters
solver.set_parameters(alpha=0.5, dt=0.1)

# Set boundary conditions
solver.set_boundary_conditions(BoundaryCondition.dirichlet(0.0))

# Solve and create animation
solution = solver.solve(steps=200)
animation = solver.animate(steps=5, frames=100, interval=50)
animation.save('heat_diffusion.gif', writer='pillow')

Wave Equation Example

# 2D wave propagation
wave_solver = PDESolver('wave', grid_shape=(100, 100))

# Circular wave source
u0 = InitialConditions.circular_wave(
    (100, 100), center=(50, 50), radius=10, amplitude=50
)
wave_solver.set_initial_conditions(u0)
wave_solver.set_parameters(c=1.0, dt=0.01)
wave_solver.set_boundary_conditions(BoundaryCondition.periodic())

# Simulate
solution = wave_solver.solve(steps=500)

Parameter Exploration

from pdevisualizer.parameter_exploration import ParameterExplorer

# Explore thermal diffusivity effects
explorer = ParameterExplorer('heat', grid_shape=(50, 50))
explorer.set_initial_conditions(u0)

# Sweep alpha from 0.1 to 1.0
alpha_values = np.linspace(0.1, 1.0, 10)
results = explorer.parameter_sweep(
    'alpha', alpha_values, custom_params={'steps': 200}
)

# Visualize results
from pdevisualizer.parameter_exploration import ParameterVisualizer
visualizer = ParameterVisualizer()
fig = visualizer.plot_parameter_sweep(results, metric='max_value')

Contents

Performance

  • Numba JIT compilation for computational kernels

  • Efficient finite difference implementations

  • Optimized for 2D grids up to 500x500

  • Typical solve time: <1 second for 100x100 grid, 100 steps

Use Cases

Research

Rapid prototyping of PDE models for scientific investigations.

Education

Interactive demonstrations of PDE concepts for teaching.

Exploration

Parameter sensitivity studies and model optimization.

Visualization

Publication-quality animations and plots for papers and presentations.

Indices and tables