An elliptic PDE solver built with machine learning in mind
Project description
jaxhps
A JAX package implementing hardware acceleration for HPS methods in two and three dimensions.
See our preprint on arXiv: Hardware Acceleration for HPS Methods in Two and Three Dimensions
Installation
To install, you can use pip:
pip install jaxhps
The examples require additional packages matplotlib and h5py. If you want to install them automatically, use:
pip install jaxhps[examples]
More installation instructions, including installation for a GPU system, are available in the documentation.
Documentation
https://jaxhps.readthedocs.io/en/latest/
Examples
hp convergence on 2D problems with known solutions
Shows convergence using uniform quadtrees using both DtN matrices and ItI matrices.
python examples/hp_convergence_2D_problems.py --DtN --ItI
High-wavenumber scattering problem
To run the example, you will need exterior single and double-layer potential matrices. These matrices are necessary to define a boundary integral equation for the scattering problem. You can download these matrices from Zenodo: https://doi.org/10.5281/zenodo.17259087.
Alternatively, you can run the matlab script examples/driver_gen_SD_matrices.m. This will generate and save the exterior single and double-layer potential matrices; you can also use this script to generate new potential matrices for different domain sizes, discretization levels, and wavenumbers. Once the matrices are in place, we can run the script:
python examples/wave_scattering_compute_reference_soln.py --scattering_potential gauss_bumps -k 100 --plot_utot
This will generate plots which looks like this, showing the scattering potential and real part and modulus of the total field:
Adaptive discretization on a 3D problem with known solution
We have a script for generating adaptive discretizations on the wavefront problem presented in our paper:
python examples/wavefront_adaptive_discretization_3D.py -p 10 --tol 1e-02 1e-05
This should produce an image showing the computed solution, generated grid, and error map:
Inverse wave scattering using automatic differentiation
We have an implementation of a low-dimensional optimization problem using automatic differentiation:
python examples/inverse_wave_scattering.py --n_iter 25
This is an inverse scattering problem where we try to recover the low-frequency basis coefficients of the scattering potential from the earlier example. Running the code should produce a plot showing the convergence of the objective function:
Linearized Poisson--Boltzmann equation
Our method can be used to solve the a linearized Poisson-Boltzmann equation, which models the electrostatic properties of a molecule in solution.
python examples/poisson_boltzmann_example.py --tol 1e-01 1e-03 -p 10
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jaxhps-0.2.tar.gz.
File metadata
- Download URL: jaxhps-0.2.tar.gz
- Upload date:
- Size: 709.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6f523368dbb8ce3778532b5754b087f19413f3a27c08c1f1f9b3627f302946a
|
|
| MD5 |
bc62ea09871addfaabe23734344f73e7
|
|
| BLAKE2b-256 |
64d0b14dbe7c9508db7a0294290dc7c210b7b03544dfbacf3dff4e217f19722b
|
File details
Details for the file jaxhps-0.2-py3-none-any.whl.
File metadata
- Download URL: jaxhps-0.2-py3-none-any.whl
- Upload date:
- Size: 124.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b71f921c9fcf2a70a337632adbe027d6ce17948db763e8d8a980ee68ddfb403
|
|
| MD5 |
893e4e366cb3c06d39d1166fc781404c
|
|
| BLAKE2b-256 |
63a7e9dcd274757152c4e34e20b28a5cb66df47b795e47610e7d9336c3431078
|