An executable introduction to finite-element Helmholtz and wave problems with infinity as a computational boundary.
Published book: https://markuswess.github.io/hypFEM
The notebooks require Python 3.12 and NGSolve. A tested environment can be created with
conda create -n hypfem python=3.12
conda activate hypfem
python -m pip install -r requirements.txtBuild with the execution cache:
makeFor review, publication, or continuous integration, use a clean build that executes every notebook from the current source:
make fullThe HTML entry point is _build/html/index.html. The clean build is the reproducibility check: a normal cached build can legitimately reuse results from an earlier execution.
After committing and pushing the reviewed source branch, publish the clean build with:
./publish.shThe script stops if the clean execution fails and only then updates the gh-pages branch.
- Time dependence is
exp(-i k t), soexp(i k r)is outgoing. - Frequency-domain notebooks solve for the physical scattered field with boundary data
-U_inc. - The main weak form uses
U = Omega^((d-1)/2) exp(i k h) u. - The characteristic benchmark additionally uses the bounded standard far-field scaling
u_char = rho^((d-1)/2) u.