# ApproxFun.jl for Helmholtz equation on cylinder

**URL:** <https://discourse.julialang.org/t/approxfun-jl-for-helmholtz-equation-on-cylinder/14864>\
**Category:** Numerics\
**Created:** [September 12, 2018, 3:29pm UTC](https://discourse.julialang.org/t/approxfun-jl-for-helmholtz-equation-on-cylinder/14864 "2018-09-12T15:29:33Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![mitkoge](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mitkoge/32/6920_2.png) [@mitkoge](https://discourse.julialang.org/u/mitkoge)\
**Post date:** [September 12, 2018, 3:29pm UTC](https://discourse.julialang.org/t/approxfun-jl-for-helmholtz-equation-on-cylinder/14864/1 "2018-09-12T15:29:33Z")

</div>

I am trying to figure out if ApproxFun can be used for solving Helmholtz equation on cylindrical domain.  
Naively i hoped for something like Bessel spaces readily available.

May be i have to construct cylinder domain using disk domain?  
Could ultraspherical spaces be used insead or may be is there some kind of transfornmation?

I guess my quiestion is very entry level and am sorry for this.

---

<div class="post-metadata">

**Author:** ![dlfivefifty](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlfivefifty/32/1959_2.png) [@dlfivefifty](https://discourse.julialang.org/u/dlfivefifty)\
**Post date:** [September 13, 2018, 8:41am UTC](https://discourse.julialang.org/t/approxfun-jl-for-helmholtz-equation-on-cylinder/14864/2 "2018-09-13T08:41:06Z")

</div>

Short answer: no.

Long answer:

A `BesselSpace` may be a bad idea because it has slow convergence. (This is the same situation as using cos/sin for non-periodic functions.) Though perhaps this is worth it in the high-frequency setting. If you wanted to create your own `BesselSpace`, I’d be happy to walk you through the process.

Otherwise, there used to be a `DiskSpace` based on a [hierarchy of Zernike-like polynomials](https://arxiv.org/pdf/1509.07624.pdf) but the [code](https://github.com/JuliaApproximation/MultivariateOrthogonalPolynomials.jl/blob/master/src/DiskSpace.jl) has gone dormant. I’d be keen to get it working again but have limited time at the moment. @MikaelSlevinsky [FastTransforms](https://github.com/MikaelSlevinsky/FastTransforms) gives a fast and stable way of expanding functions in this basis which should be incorporated.

For cylinders, one would then need to tensor `DiskSpace` with `Chebyshev`. This is almost functioning.  
Even then, one needs to solve the resulting system efficiently. Helmholtz has the nice property that it’s radially symmetric so this reduces to 2-dimensional solves involving `BandedBlockBandedMatrix`, so hopefully that should be efficient. For high frequencies this will break down, but [Euan Spence](http://people.bath.ac.uk/eas25/) has some nice work on preconditioners for high frequency Helmholtz.

---

<div class="post-metadata">

**Author:** ![mitkoge](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mitkoge/32/6920_2.png) [@mitkoge](https://discourse.julialang.org/u/mitkoge)\
**Post date:** [September 14, 2018, 11:37am UTC](https://discourse.julialang.org/t/approxfun-jl-for-helmholtz-equation-on-cylinder/14864/3 "2018-09-14T11:37:40Z")

</div>

Thhank You for the directions!  
While been fascinated by your polished work,  
i think, as an experimental physicist, am far from understanding how your magic works.  
But will take my time to try reaching user level.

---

<div class="post-metadata">

**Author:** ![parb](https://avatars.discourse-cdn.com/v4/letter/p/4da419/32.png) [@parb](https://discourse.julialang.org/u/parb)\
**Post date:** [October 27, 2023, 4:05pm UTC](https://discourse.julialang.org/t/approxfun-jl-for-helmholtz-equation-on-cylinder/14864/4 "2023-10-27T16:05:30Z")

</div>

Any progress on this?

Currently looking at solving the Helmholtz equation on a cylinder with Dirichlet boundary conditions on three boundaries, but a homogenous Neumann on the “top” of the cylinder. Would be great if this was as easy as the Helmholtz solution given in the documentation!
