Boundary Conditions
Flexible boundary condition implementations for 2D PDEs.
This module provides functions to apply different types of boundary conditions to 2D fields, supporting Dirichlet, Neumann, periodic, and absorbing boundaries.
- class pdevisualizer.boundary_conditions.BoundaryType(value)[source]
Bases:
EnumTypes of boundary conditions.
- DIRICHLET = 'dirichlet'
- NEUMANN = 'neumann'
- PERIODIC = 'periodic'
- ABSORBING = 'absorbing'
- class pdevisualizer.boundary_conditions.BoundarySpec(left=None, right=None, top=None, bottom=None)[source]
Bases:
objectSpecification for boundary conditions on all four edges.
Methods
Create absorbing boundary conditions.
dirichlet([value])Create Dirichlet boundary conditions on all edges.
neumann([flux])Create Neumann boundary conditions on all edges.
periodic()Create periodic boundary conditions.
uniform(boundary_type[, value])Create uniform boundary conditions on all edges.
Initialize boundary specification.
Methods
Create absorbing boundary conditions.
dirichlet([value])Create Dirichlet boundary conditions on all edges.
neumann([flux])Create Neumann boundary conditions on all edges.
periodic()Create periodic boundary conditions.
uniform(boundary_type[, value])Create uniform boundary conditions on all edges.
- pdevisualizer.boundary_conditions.apply_dirichlet_boundary(u, value)[source]
Apply Dirichlet boundary condition (fixed value).
- pdevisualizer.boundary_conditions.apply_neumann_boundary(u, flux, dx, dy)[source]
Apply Neumann boundary condition (fixed flux/derivative).
- pdevisualizer.boundary_conditions.apply_periodic_boundary(u)[source]
Apply periodic boundary condition (wrap-around).
- pdevisualizer.boundary_conditions.apply_absorbing_boundary_first_order(u, u_prev, c, dt, dx, dy)[source]
Apply first-order absorbing boundary condition for waves.
Uses the Sommerfeld radiation condition: ∂u/∂t + c·∂u/∂n = 0 at boundaries
This prevents wave reflections at boundaries.
- pdevisualizer.boundary_conditions.apply_boundary_conditions(u, boundary_spec, dx=1.0, dy=1.0, u_prev=None, c=1.0, dt=0.1)[source]
Apply boundary conditions to a 2D field.
- pdevisualizer.boundary_conditions.step_heat_with_boundaries(u, α, dt, dx, dy, boundary_spec_type, boundary_value)[source]
Heat equation time step with flexible boundary conditions.
This is an enhanced version of the original step_heat function.
- pdevisualizer.boundary_conditions.step_wave_with_boundaries(u, u_prev, c, dt, dx, dy, boundary_spec_type, boundary_value)[source]
Wave equation time step with flexible boundary conditions.
This is an enhanced version of the original step_wave function.