Skip to main content

PyHelmholtz is a framework for benchmarking absorbing boundary methods for 2D Helmholtz equation.

Project description

PyHelmholtz

A Python package for solving the 2D Helmholtz equation and benchmarking absorbing boundary methods.

Features

  • Fast frequency-domain wave propagation modeling.
  • Support for standard sparse direct solvers via SciPy.
  • Optional high-performance nested dissection algorithms via SuiteSparse.
  • Optional parallel direct solver acceleration via MUMPS.

Installation

PyHelmholtz provides three installation tiers depending on your performance needs and platform.

1. Standard Installation (Recommended)

If you only need standard solvers using SciPy's spsolve(), you can install PyHelmholtz instantly with no external C-library or compiler requirements:

pip install pyhelmholtz

2. With Nested Dissection Support (Optional)

To enable advanced nested dissection algorithms, the package requires scikit-sparse. Because this depends on underlying SuiteSparse C-libraries, it is highly recommended to install the dependencies via Conda first to avoid compilation issues (especially on Windows):

# Install the C-libraries and pre-compiled wrapper via Conda
conda install -c conda-forge scikit-sparse

# Install PyHelmholtz with the optional suitesparse feature flag
pip install pyhelmholtz[suitesparse]

3. With MUMPS Acceleration (Optional, Linux only)

For large-scale problems requiring parallel direct solvers, PyHelmholtz interfaces with MUMPS via PyMUMPS.

Because this relies on compiled Fortran, MPI, and BLAS/LAPACK binaries, you must install the system MUMPS libraries first before installing the Python package:

# Install system MUMPS and MPI development libraries (Ubuntu/Debian)
sudo apt-get update
sudo apt-get install libmumps-dev

# Install PyHelmholtz with the optional mumps feature flag
pip install pyhelmholtz[mumps]

Quick Start

Here is a quick example of how to initialize a basic setup and let PyHelmholtz automatically fall back to SciPy if scikit-sparse isn't installed.

import pyhelmholtz as ph
ho = ph. Helmholtz () # create an Helmholtz object with default parameters
ho. solve ()          # SciPy ’s spsolve () is used by default as the sparse linear solver
ho. viz ()            # visualize the real part of the wave field u

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

pyhelmholtz-0.1.1.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyhelmholtz-0.1.1-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file pyhelmholtz-0.1.1.tar.gz.

File metadata

  • Download URL: pyhelmholtz-0.1.1.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.19

File hashes

Hashes for pyhelmholtz-0.1.1.tar.gz
Algorithm Hash digest
SHA256 399927cf7e98a89f7283e452477c0b16b995178938c6557bc150840bdded726b
MD5 3db2920b6ee599ad9bb2552818463015
BLAKE2b-256 d1ae38ae682682f6aa4c76a2c4c85dc9cb753bd38201bffe792d9e050e562d89

See more details on using hashes here.

File details

Details for the file pyhelmholtz-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pyhelmholtz-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 17.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.19

File hashes

Hashes for pyhelmholtz-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bb94f5747cc9178312aac4cadaf27ba796a8eef3d67d9da403415943570c1bc8
MD5 8215cebc1981ddb24c3d2a72fd32c6c0
BLAKE2b-256 225007d106e202697fc0f6a251f29a4568c5c547ae6307a57b558e9794ca689f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page