Helmholtz Exterior Neumann (sound hard) solver for loudspeaker modeling ?

110 views
Skip to first unread message

perri...@gmail.com

unread,
Jul 13, 2020, 8:49:46 PM7/13/20
to bempp
I am interested in simulating loudspeakers using bempp-cl.  Is it possible to create a combined single + double layer solver (to avoid the spurious internal resonance problem with a single layer only approach) to solve the sound hard exterior radiation problem? Browsing through the python code, I notice references to the hypersingular operator, so any simple example code would be greatly appreciated (i.e how to regularize, etc).  I'm of course open to othe r approches as well. Attached is an example GMSH flat triangle mesh of a trapezoidal loudspeaker (i.e. the woofer would have non-zero surface velocity, the rest would be zero velocity (sound hard)). I can email the GMSH mesh if that would be helpful. 

In graduate school I used SYSNOISE (BEM code originally from Belgium), so I am familiar with BEM codes.  (at the time) SYNOISE was single layer only, so the way to remove spurious resonances was to add internal points and then solve a least-squares problem). 

Thank you

Perrin Meyer

loudspeaker.png




Matthew Scroggs

unread,
Jul 14, 2020, 4:47:16 AM7/14/20
to bempp
Hello,

You might find this example problem helpful:


it is for Helmholtz scattering from a sphere using a combined formulation. I don't think it's exactly the formulation you're looking for, but it should give you a good idea how to get started.

All the best,
Matthew

Jonathan Hargreaves

unread,
Jul 14, 2020, 9:34:24 AM7/14/20
to bempp
I'm happy to discuss this too. It should be fairly straightforward. See my related paper http://usir.salford.ac.uk/id/eprint/49824/


On Tuesday, 14 July 2020 01:49:46 UTC+1, perri...@gmail.com wrote:

perri...@gmail.com

unread,
Jul 14, 2020, 3:50:51 PM7/14/20
to bempp
Thank you for your quick reply. 

Is this a sound hard scattering example?  I don't see any reference in the python notebook code to a hypersingular operator, which in my understanding would be required if this was a single plus double layer solution to the exterior Neumman Helmholtz equation.   I've also read some papers that use Calderon identities recast the hypersingular operator into a set of PDF's, but I don't think that is what is going on in this example.  From reading a lot of papers, I'm aware that the hypersingular operator is tricky (difficult quadratures, ill conditioning of resulting matrix, etc.) which is why I'm looking for example code or code snippets. 

Thanks again

Perrin 

perri...@gmail.com

unread,
Jul 14, 2020, 4:05:14 PM7/14/20
to bempp
Thank you for your offer of help.  Glancing at your very interesting paper, it certainly appears to use a combined single/double layer (with hypersingular operator), which is indeed what I'm looking for. 

Also, Looking through the jupyter notebooks, I don't see any example of importing a GMSH mesh and setting boundary conditions based on gmsh physical properties, although from browsing the API and papers there clearly is a GMSH interface. 

Thank you again. 

(I'm not used to gmail and google groups, apologies if I posted this twice.)

Perrin

luiz....@eac.ufsm.br

unread,
Jul 14, 2020, 6:13:45 PM7/14/20
to bempp

Hello, I have been doing my undergraduate work on diffusers and took a look at possible radiation problems, but maybe I could add something to setting the boundary conditions as should be similar to what I have been doing.

On Gmsh I separate surfaces with different properties using the Physical Groups. I then load the mesh in bempp with the import_grid function. To attribute a velocity BC, I create an array with velocity data for every physical group index, and then use it to create a grid function. Maybe the code snippet below could help. 

##
@bempp.api.complex_callable
def v_data(x, n, domain_index, result):
    with numba.objmode():
        result[0] = v[domain_index]

v_fun = bempp.api.GridFunction(space, fun=v_data)
##
Then I just use v_fun in the equations. I don't know if this was specifically your problem, but well, there it is anyway. I am sure there maybe other approaches, but this one seemed to have worked fine for me.

All the best.

Luiz Augusto Alvim.
Reply all
Reply to author
Forward
0 new messages