Acoustic Horn Design – The Easy Way (Ath4)

Hi, i'm having issues in importing the ABEC project in AKABAK.
I convert the .msh file inside ABEC_FreeStanding folder in a "version 2 ASCII" format, then I try to import the Project.abec in AKABAK but it gives me the "Range check error". It gives the same error even if I try to import the mesh file in an empty Akabak project.
Anyway, seems that the mesh file is imported correctly but all the other settings defined in the .cfg file are not present.

Do you have any solution or I have to switch to ABEC ?
 
Beautiful. I wonder if the 280mm geometry would allow it to be printed as a 1/2 diagonally across the bed of my very basic Ender 3 pro (with a 220mm x 220mm print surface - with a hypotenuse of 311mm).
Yes, the bounding cube is 205 x 205 x 140 mm. Very little of supports needed.

1705488979701.png
1705489118319.png
 
  • Like
Reactions: 1 users
Member
Joined 2004
Paid Member
I got info from Joerg Panzer, the author of ABEC and AKABAK, that the import function in AKABAK should improve with some following version, so I expect it will be possible to use Ath with AKABAK smoothly. He is definitely aware of Ath existing.

The planned implementation of the BEM solver alone as a library is also quite exciting. I could then finally imagine Ath as a GUI application with the solver incorporated (including an optimization, etc.) -

1705511633162.png
1705511664963.png


- There are probably other, even open-source BEM packages that could be used. I just never got into any of those, as ABEC worked so well for me from the beginning. Honestly, I slightly hoped that someone else would do that in the meantime.
 
Last edited:
  • Like
Reactions: 4 users
There are probably other, even open-source BEM packages that could be used. I just never got into any of those, as ABEC worked so well for me from the beginning. Honestly, I slightly hoped that someone else would do that in the meantime.
Shower thoughts... chain something like https://github.com/exafmm/exafmm-t (to harness a GPU and hopefully bring the computation time by at least an order of magnitude) together with ATH and a genetic algorithm.
 
- There are probably other, even open-source BEM packages that could be used. I just never got into any of those, as ABEC worked so well for me from the beginning. Honestly, I slightly hoped that someone else would do that in the meantime.

The main disadvantage of ABEC3/Akabak is that it cannot use more than 64 cores and work with NUMA topology. Perhaps for optimization of some axisymmetric horns this will not be a problem, but for optimization of 3D horns it will be a significant limitation.
 
Last edited:
  • Like
Reactions: 1 users
Literally just a shower thought. No idea how feasible this would be.

Anyway, thanx for sharing the link.

I performed a quick benchmark BEMPP vs ABEC3 using the loudspeaker form BEMPP loudspeaker tutorial. I modified original GMSH geo file to increase the mesh density
(
Mesh.MeshSizeMin = 0.003;
Mesh.MeshSizeMax = 0.01;
)

The both benchmarks were run for single 1000Hz frequency. It seems that BEMPP uses much more faster solver (iterative GMRES) than ABEC3. It took ~15.5 s to solve the problem on my 14 cores workstation in BEMPP. Whereas ABEC3 spent approximately 1127s to solve the same problem. It should be noted, that ABEC3 use single core to solve single frequency, whereas BEMPP use all cores. For an ideally parallelizable problem, the BEMM should be faster only by a factor of 14 because my workstation has 14 cores. However BEMPP is actually faster by a factor of 73 ! Which suggests that BEMPP uses a much more efficient solver.

I'll try to figure out BEMPP settings to run the same benchmark on a single core for a solver efficiency comparison vs. ABEC3.
 

Attachments

  • Abec3 vs BEMPP.png
    Abec3 vs BEMPP.png
    51.3 KB · Views: 74
  • Like
Reactions: 3 users
Would it not be more fair to compare over 14 frequencies, allowing abec to use all cores?

I suppose calculating 14 frequencies in parallel will take the same amount of time, or even a little slower, since the core clock speed in single-threaded mode is always higher than in multithreaded mode :). But in general I agree. This was actually my first time running BEMPP. I need to read BEMPP manual to figure out how how to change a number of threads.
 
And bempp supports computation using a GPU via OpenCL :D

Moreover, it seems that BEMPP can use the Fast Multipole Method solver, which can significantly speed up calculations at high frequencies, where very dense meshes are usually needed.
For larger problems, dense assembly using OpenCL or Numba become very expensive, both in terms of computation time and memory consumption. In such cases, Bempp can use the fast multipole method (FMM) to speed up its calculations and reduce memory usage.

Internally, Bempp uses the ExaFMM library to carry out its FMM computations.
 
  • Like
Reactions: 1 user
Moreover, it seems that BEMPP can use the Fast Multipole Method solver, which can significantly speed up calculations at high frequencies, where very dense meshes are usually needed.
Woop, bempp-t also supports CUDA... time to wangle some access to a big GPU.

@Dmitrij_S how did your RAM usage look during computation? Guessing one will need a lot of VRAM if going to GPU route.

Anyone have an idea how important doing these calculations with FP64 is? Would be very nice if it could be paired down to BF16.
 
This is very interesting! Sadly not that much time to play right now.

Having recently "optimized" a 3D horn in an enclosure to the best of my current understanding, i can recommend splitting the task in portions.
The number of frequencies and frequency range has a big influence on computing time.
First i did a rough calculation, something like 20 frequencies from 500 Hz to 15kHz with a pretty rough mesh, to get a general impression. Then i focused on a specific area, to improve transition from horn into baffle for example, choosing corresponding frequencies and mesh resolution and ran a number of optimizations.
With some experience you start to learn which parameters influence which part of the frequency range and you get pretty good results quickly.
In the end i ran a highly detailed simulation using a ton of RAM that took some hours to solve, but it turned out pretty much the way i expected..
 
  • Like
Reactions: 1 users