BEAST.jl icon indicating copy to clipboard operation
BEAST.jl copied to clipboard

Press Align 2D-Helmholtz code and introduce 1D-SauterSchwab

Open PioterAdam opened this issue 1 year ago • 1 comments

First step in refactoring Helmholtz2D matching the structure of Helmholtz3D code: For now limited to providing a module based interface similar to BEAST.Helmholtz3D

TODO:

  • Match operator types to Helmholtz3D case (i.e., SingleLayer -> HH2DSingleLayerFDBIO etc)
  • Provide alpha (and beta) pre-factor for operators
  • Use gamma instead of wavenumber WARNING: Unlike 3D case, we have different kernels for gamma = 0 and gamma =
  • Excitations need to be adapted
  • Evaluation of potentials is entirely missing

Use Ma-Rokhlin-Wandzura and Sauter-Schwab for 2D Integral Operators

Sauter and Schwab describe in Example 5.2.3 a technique to remove the singularity from a 2D-Kernel (as a motivation for the 3D surface integral equation technique).

However, due to the logarithmic singularity, the higher-order derivatives still contain a singularity. We therefore combine there technique with the Ma-Rokhlin-Wandzura quadrature.

Similar ideas have been presented in the Master thesis "2D Electromagnetic field MoM calculations using well-conditioned higher order polynomials" by Denturck under the supervision of Bogaert.

PioterAdam avatar Apr 17 '25 14:04 PioterAdam

This looks great. Is there any way to avoid the seemingly identical duplications in sauterschwabint.jl?

krcools avatar Apr 17 '25 15:04 krcools

Thanks, at first I wanted to reuse the code as much as possible, but then I noticed some problems ... we can discuss it with Simon

PioterAdam avatar Apr 22 '25 18:04 PioterAdam

I have add a 1D version of permute_vertices in CompScienceMeshes (See https://github.com/krcools/CompScienceMeshes.jl/pull/49)

I think once this is merged we are able to reuse all of the code.

sbadrian avatar Apr 24 '25 11:04 sbadrian