JuliaPDE: Survey of PDE Packages

Request for comment:

The survey is certainly far from complete. Hence my request: If you think something was missed, if you’d like to amend or complement the information, or if, for any reason, you wish your software not to be included, file an issue, or even better, make it a PR.

The maintainers look forward to hearing from you.

Update 03/11: Several packages added. But there are sure to be some holes. Do help me to fill them in please.

13 Likes

Thanks. Is there any sort of community roadmap to when we expect an automated pde package?
Also: you forgot https://github.com/matthieugomez/EconPDEs.jl

1 Like

Ask the guy who’s gonna write it.

2 Likes

Combining:
https://github.com/matthieugomez/EconPDEs.jl
GitHub - ABAtanasov/GalerkinSparseGrids.jl: Sparse Grid Discretization with the Discontinuous Galerkin Method for solving PDEs
https://github.com/JerryLingjieMei/NonlinearPDE
https://github.com/DanPSilva/Partial-Differential-Equations
https://github.com/ooreilly/sbp.jl
GitHub - FourierFlows/FourierFlows.jl: Tools for building fast, hackable, pseudospectral partial differential equation solvers on periodic domains
https://github.com/PtFEM/PtFEM.jl
https://github.com/samuelpowell/LibTOAST.jl
https://github.com/Paulms/HDiscontinuousGalerkin.jl

2 Likes

Thanks for the pointers. Much appreciated.

About the automated PDE package: Comsol comes to mind. I used to know it when it was still called Femlab, perhaps 15 years ago. Even then there was several dozen man-years in the software. So throw in several dozen more, and we are getting up to some serious effort.

I must ask: What is the point of an automated PDE package? I mean for someone who likes to tinker with Julia? Is it for the person who just likes to get up in the morning and solve a PDE? Or for someone who does that as part of their job description? I think the former would be quite happy to hack on their own tool using whatever Julia provides, and does not need a bells and-whistles, kitchen sink included (pardon the mixed metaphor) grab bag, and the latter should probably get the employer to pay for a commercial package. Just my two cents worth…

3 Likes

About a year. We’re finishing DiffEqOperators for finite difference this summer, finishing the universal PDE interface is finishing this summer as well with the first thing supporting it likely being a neural network approach. After that we plan to hook in the finite difference and pseudospectral methods, and then hook in FEniCS. Then build FVM tools and hook up with whatever Julia FEM library fits well.

That’s the plan at least.

(One other huge portion is a revision of the nonlinear solver interface of DifferentialEquaitons so that it can better specialize on linearity: something that never shows up in normal ODE contexts but shows up in large PDEs)

7 Likes

I want an automated PDE solver for the same reason I want an automated ODE solver.
Currently, I use Mathematica’s DSolve & NDSolve.
For ODEs & BVPs I find Julia to kick ass & outperform the competition.
I bet it will be the same when a pde solver is ready.

As a side note, for DAEs both Mathematica & Matlab can only solve IVPs. The only BVP solve for DAEs I know is Fortran’s coldae. Not sure if Julia has this yet…

Thanks for the survey. I have three remarks:

1 Like

Excellent, thank you. My mistake, I will fix it.

This is a very nice list, thank you for putting it together! I’d argue for inclusion only of packages that have been updated in the last six months or so. Could also be interesting to list applications (ie programs that solve a particular PDE), I know of a few but I’d be interested to see how many there are.

On the one hand, this intuitively makes sense. However what if there is a stable library that doesn’t take much maintenance, and would be excluded by such a rule?

Good idea, thanks. About that list: would you share please?

1 Like

Unfortunately things don’t seem to work out this way… Either packages get updated regularly, or they bitrot.

Regarding applications, there are at least

https://github.com/climate-machine/Oceananigans.jl
https://github.com//JuliaMolSim/DFTK.jl/
But I’m sure there are plenty more

2 Likes

How would you classify the latter? It appears you are it’s co-author :slight_smile:

Of course, that’s why I’m talking about applications :-p Essentially it’s an engine to solve nonlinear eigenvector equations discretized in a Fourier basis, applied to the Kohn-Sham equations of electronic structure theory (as well as a couple of others).

There’s also https://qojulia.org/, and a couple more at https://github.com/climate-machine

Very cool! Thanks.

I think it is clear why the input of many people will be required to construct the list of relevant PDE packages. I only know my little neck of the woods well, so the more we hear from developers from other areas the better.

2 Likes

The more I dig into what has been done in Julia already, the more impressed I am. There are so many great projects out there!

1 Like

@rveltz

2 Likes

For formally working with operators and to build matrix-free applies there is also:

and

and for playing with low-rank factorisations there is

2 Likes
1 Like

Thank you all who posted above. Please keep the suggestions coming. PRs at https://github.com/JuliaPDE/SurveyofPDEPackages are welcome!