Solver API

Unified API for PDE solving and visualization.

This module provides a clean, professional interface for solving different types of PDEs with flexible boundary conditions and initial conditions.

class pdevisualizer.solver.EquationType(value)[source]

Bases: Enum

Supported PDE types.

HEAT = 'heat'
WAVE = 'wave'
class pdevisualizer.solver.BoundaryCondition(boundary_type, value=0.0)[source]

Bases: object

Boundary condition specification - Enhanced version.

Methods

absorbing()

Absorbing boundary condition (for waves).

dirichlet([value])

Fixed value boundary condition.

neumann([flux])

Fixed flux boundary condition (insulated if flux=0).

periodic()

Periodic boundary condition.

to_boundary_spec()

Convert to BoundarySpec for the boundary_conditions module.

Parameters:
classmethod dirichlet(value=0.0)[source]

Fixed value boundary condition.

Parameters:

value (float)

classmethod neumann(flux=0.0)[source]

Fixed flux boundary condition (insulated if flux=0).

Parameters:

flux (float)

classmethod periodic()[source]

Periodic boundary condition.

classmethod absorbing()[source]

Absorbing boundary condition (for waves).

to_boundary_spec()[source]

Convert to BoundarySpec for the boundary_conditions module.

class pdevisualizer.solver.InitialConditions[source]

Bases: object

Helper class for creating common initial conditions.

Methods

circular_wave(shape, center, radius[, amplitude])

Circular wave initial condition.

constant(shape, value)

Constant field initial condition.

gaussian_pulse(shape, center, sigma[, amplitude])

Gaussian pulse initial condition.

multiple_sources(shape, sources)

Multiple point sources initial condition.

sine_wave(shape, wavelength[, amplitude, ...])

Sinusoidal wave initial condition.

zeros(shape)

Zero initial condition.

static zeros(shape)[source]

Zero initial condition.

Parameters:

shape (Tuple[int, int])

Return type:

ndarray

static constant(shape, value)[source]

Constant field initial condition.

Parameters:
Return type:

ndarray

static gaussian_pulse(shape, center, sigma, amplitude=1.0)[source]

Gaussian pulse initial condition.

Parameters:
Return type:

ndarray

static circular_wave(shape, center, radius, amplitude=1.0)[source]

Circular wave initial condition.

Parameters:
Return type:

ndarray

static multiple_sources(shape, sources)[source]

Multiple point sources initial condition.

Parameters:

shape (Tuple[int, int])

Return type:

ndarray

static sine_wave(shape, wavelength, amplitude=1.0, direction='x')[source]

Sinusoidal wave initial condition.

Parameters:
Return type:

ndarray

class pdevisualizer.solver.PDESolver(equation, grid_shape=(100, 100), spacing=(1.0, 1.0), boundary=None)[source]

Bases: object

Unified interface for solving 2D partial differential equations.

This class provides a clean, professional API for solving heat and wave equations with flexible boundary conditions and initial conditions.

Methods

animate([frames, interval, save_path])

Create an animation of the PDE solution.

get_stability_info()

Get stability condition information for current parameters.

info()

Get a summary of the current solver configuration.

set_initial_conditions(u0[, v0])

Set initial conditions for the PDE.

set_parameters(**params)

Set equation-specific parameters.

solve([steps])

Solve the PDE for the specified number of time steps.

validate_stability()

Validate that current parameters satisfy stability conditions.

Initialize the PDE solver.

Methods

animate([frames, interval, save_path])

Create an animation of the PDE solution.

get_stability_info()

Get stability condition information for current parameters.

info()

Get a summary of the current solver configuration.

set_initial_conditions(u0[, v0])

Set initial conditions for the PDE.

set_parameters(**params)

Set equation-specific parameters.

solve([steps])

Solve the PDE for the specified number of time steps.

validate_stability()

Validate that current parameters satisfy stability conditions.

Parameters:
__init__(equation, grid_shape=(100, 100), spacing=(1.0, 1.0), boundary=None)[source]

Initialize the PDE solver.

Parameters:
set_initial_conditions(u0, v0=None)[source]

Set initial conditions for the PDE.

Parameters:
set_parameters(**params)[source]

Set equation-specific parameters.

For heat equation: alpha (thermal diffusivity), dt (time step) For wave equation: c (wave speed), dt (time step)

get_stability_info()[source]

Get stability condition information for current parameters.

Return type:

Dict[str, Any]

validate_stability()[source]

Validate that current parameters satisfy stability conditions.

solve(steps=100)[source]

Solve the PDE for the specified number of time steps.

Parameters:

steps (int)

Return type:

ndarray

animate(frames=100, interval=50, save_path=None)[source]

Create an animation of the PDE solution.

Parameters:
  • frames (int)

  • interval (int)

  • save_path (str | None)

Return type:

FuncAnimation

info()[source]

Get a summary of the current solver configuration.

Return type:

str

PDESolver Class

class pdevisualizer.solver.PDESolver(equation, grid_shape=(100, 100), spacing=(1.0, 1.0), boundary=None)[source]

Bases: object

Unified interface for solving 2D partial differential equations.

This class provides a clean, professional API for solving heat and wave equations with flexible boundary conditions and initial conditions.

Methods

animate([frames, interval, save_path])

Create an animation of the PDE solution.

get_stability_info()

Get stability condition information for current parameters.

info()

Get a summary of the current solver configuration.

set_initial_conditions(u0[, v0])

Set initial conditions for the PDE.

set_parameters(**params)

Set equation-specific parameters.

solve([steps])

Solve the PDE for the specified number of time steps.

validate_stability()

Validate that current parameters satisfy stability conditions.

Initialize the PDE solver.

Methods

animate([frames, interval, save_path])

Create an animation of the PDE solution.

get_stability_info()

Get stability condition information for current parameters.

info()

Get a summary of the current solver configuration.

set_initial_conditions(u0[, v0])

Set initial conditions for the PDE.

set_parameters(**params)

Set equation-specific parameters.

solve([steps])

Solve the PDE for the specified number of time steps.

validate_stability()

Validate that current parameters satisfy stability conditions.

Parameters:
__init__(equation, grid_shape=(100, 100), spacing=(1.0, 1.0), boundary=None)[source]

Initialize the PDE solver.

Parameters:
set_initial_conditions(u0, v0=None)[source]

Set initial conditions for the PDE.

Parameters:
set_parameters(**params)[source]

Set equation-specific parameters.

For heat equation: alpha (thermal diffusivity), dt (time step) For wave equation: c (wave speed), dt (time step)

get_stability_info()[source]

Get stability condition information for current parameters.

Return type:

Dict[str, Any]

validate_stability()[source]

Validate that current parameters satisfy stability conditions.

solve(steps=100)[source]

Solve the PDE for the specified number of time steps.

Parameters:

steps (int)

Return type:

ndarray

animate(frames=100, interval=50, save_path=None)[source]

Create an animation of the PDE solution.

Parameters:
  • frames (int)

  • interval (int)

  • save_path (str | None)

Return type:

FuncAnimation

info()[source]

Get a summary of the current solver configuration.

Return type:

str

EquationType

class pdevisualizer.solver.EquationType(value)[source]

Supported PDE types.

HEAT = 'heat'
WAVE = 'wave'

BoundaryCondition

class pdevisualizer.solver.BoundaryCondition(boundary_type, value=0.0)[source]

Boundary condition specification - Enhanced version.

Methods

absorbing()

Absorbing boundary condition (for waves).

dirichlet([value])

Fixed value boundary condition.

neumann([flux])

Fixed flux boundary condition (insulated if flux=0).

periodic()

Periodic boundary condition.

to_boundary_spec()

Convert to BoundarySpec for the boundary_conditions module.

Parameters:
classmethod dirichlet(value=0.0)[source]

Fixed value boundary condition.

Parameters:

value (float)

classmethod neumann(flux=0.0)[source]

Fixed flux boundary condition (insulated if flux=0).

Parameters:

flux (float)

classmethod periodic()[source]

Periodic boundary condition.

classmethod absorbing()[source]

Absorbing boundary condition (for waves).

to_boundary_spec()[source]

Convert to BoundarySpec for the boundary_conditions module.

InitialConditions

class pdevisualizer.solver.InitialConditions[source]

Helper class for creating common initial conditions.

Methods

circular_wave(shape, center, radius[, amplitude])

Circular wave initial condition.

constant(shape, value)

Constant field initial condition.

gaussian_pulse(shape, center, sigma[, amplitude])

Gaussian pulse initial condition.

multiple_sources(shape, sources)

Multiple point sources initial condition.

sine_wave(shape, wavelength[, amplitude, ...])

Sinusoidal wave initial condition.

zeros(shape)

Zero initial condition.

static zeros(shape)[source]

Zero initial condition.

Parameters:

shape (Tuple[int, int])

Return type:

ndarray

static constant(shape, value)[source]

Constant field initial condition.

Parameters:
Return type:

ndarray

static gaussian_pulse(shape, center, sigma, amplitude=1.0)[source]

Gaussian pulse initial condition.

Parameters:
Return type:

ndarray

static circular_wave(shape, center, radius, amplitude=1.0)[source]

Circular wave initial condition.

Parameters:
Return type:

ndarray

static multiple_sources(shape, sources)[source]

Multiple point sources initial condition.

Parameters:

shape (Tuple[int, int])

Return type:

ndarray

static sine_wave(shape, wavelength, amplitude=1.0, direction='x')[source]

Sinusoidal wave initial condition.

Parameters:
Return type:

ndarray