## Where communities thrive

• Join over 1.5M+ people
• Join over 100K+ communities
• Free without limits
##### Activity
Jones-IHF
@Jones-IHF
Hello, I'm trying to solve the Helmholtz eqn for arbitrary wavenumber, building on the example in the readme.
Jones-IHF
@Jones-IHF
using ApproxFun, Plots, LinearAlgebra
const c₀ = 3.0*10^8
d = Circle(0.0, 1.0, true)                         # Defines a circle
Δ = Laplacian(d)                            # Represent the Laplacian
f = ones(∂(d))                              # one at the boundary

ω = Interval(0.0..10.0^9)
k = ω/c₀

u = \([Dirichlet(d); Δ+k*I], [f;0.];       # Solve the PDE
tolerance=1E-5)

surface(u)                                  # Surface plot

I get the error 'Implement Laplacian(Laurant(:clock:), 1)'

When looking in to the code for ApproxFun, i can find no reference to the laplacian, only a confusing macro for implementing general derivative operators.
Where would I go to work out how to implement new Operators?

I was also wondering if it was yet possible to build spaces of arbitrary dimension to solve 3D PDEs, possibly with extra non spatial dimensions to represent free parameters

Sheehan Olver
@dlfivefifty
do you actually want a Disk()? That sort of existed at one point but the code is crusty. We do have a version in MultivariateOrthogonalPolynomials.jl which uses @MikaelSlevinsky’s awesome FastTransform to do function approximation on the disk, but there’s no build script for that
For 3D, we’re starting to implement that in MultivariateOrthogonalPolynomials.jl for the cone (random yes, it’s because I’m writing a paper about the cone with Yuan Xu)
But honestly ApproxFun needs a significant refactor before 3D can be tackled seriously: it’s possible to get it working but requires fighting hacky code the whole way, and is not amendable to high performance
There is work behind the scenes on ContinuumArrays.jl to provide a more sound underpinning that scales to 3D, but it won’t be worked on seriously in the next 6 months or so
If you are interested in helping with that I’m happy to talk more.
Rodney Polkinghorne
@thisrod
Hi. I'm working with the Gross-Pitaevskii Equation in two dimensions, with periodic boundary conditions, and I'm trying out the periodic parts of ApproxFun. Could someone please remake the ApproxFun manual? Apparently it's been 10 months since PeriodicInterval was updated to PeriodicSegment in the source tree, but the Latest version at github.io is that out of date.
Rodney Polkinghorne
@thisrod
This is a great package by the way. Over the years, I must have written 4 or 5 half-baked versions of parts of it.
Sheehan Olver
@dlfivefifty
Thanks! I’m busy right now but will accept any PRs to fix the manual.
Rodney Polkinghorne
@thisrod
I think I've found the bug. The script docs/travis.sh is missing a "using Pkg". PR coming up.
Sheehan Olver
@dlfivefifty
Thanks!!
Rodney Polkinghorne
@thisrod
There should be a metatest to check for errors when that part of the test runs.
Sheehan Olver
@dlfivefifty
It’s possible to run the doctests automatically, I think BlockArrays.jl does this
Rodney Polkinghorne
@thisrod
Now that docs/travis.sh is working, I'm updating docs/make.jl to be consistent with the split into ApproxFunBase etc.
I've noticed that ApproxFun doesn't reexport DomainSets. So the manual describes ProductDomain and UnionDomain, but these aren't exported by ApproxFun.
Is this a bug or a documentation error? I.e., was the intention to export those symbols from ApproxFun, or should the manual say that you need a "using DomainSets" to access them?
Also, there doesn't seem to be any documentation for boundary. I'll raise an issue for that.
Sheehan Olver
@dlfivefifty
Ah, this is because these types used to be inside ApproxFun. Since these are a bit esoteric it might be better for the manual to say using DomainSets
Rodney Polkinghorne
@thisrod
Drat. The moment I fix the Travis script, they break Documenter. I'll file an issue.
Stefanos Carlström
@jagot
Are you sure it's Documenters fault? Looks like a stack overflow on 1.2:
Sheehan Olver
@dlfivefifty
That bug on 1.2 is already fixed in the back ports branch of Julia
Rodney Polkinghorne
@thisrod
It crashes on my desktop too, and I'm using 1.1.