PDEVisualizer Documentation
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
User Guide
API Reference
Development
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.