Julia's FEM Landscape: where should DifferentialEquations go?

We’re starting with the automated finite difference discretization operators in DiffEqOperators.jl and the symbolic specification framework of ModelingToolkit.jl. The next step is to setup an interface for specifying arbitrary PDEs and their discretizations via ModelingToolkit operators. If you’re a student looking for a summer project in this area, PM me.

1 Like

What do you wish to do? What problems do you intend to solve?

1 Like

I’d suggest designing an FEM code in a modular way: so a package for meshes, another package for quadrature, etc.

I’ve been looking for a nice way of working with meshes that captures the entire geometric structure (e.g. the ability to find elements adjoining an edge) but everything I’ve found is tied into a giant FEM framework. In my case I’m trying to make a coefficient-based p-FEM so the assumptions made by standard FEM don’t apply.

2 Likes

I hope to grow GeometryBasics into such a package.
It should be possible to define arbitrary structured meshes, with arbitrary per face/ per vertex attributes.
Let me know what’s missing and we can integrate it :slight_smile:

5 Likes

@sdanisch, I’m so happy to see this! I don’t work on PDEs, but I still find myself needing some form of generic meshing platform for bandstructure calculations, and GeometryBasics looks just like the kind of foundation I’d need. Do you plan to incorporate Delaunay triangulation routines here? How about periodic boundary conditions to meshes?

(Sorry for the slightly off-topic post).

1 Like

TetGen uses GeometryBasics, so I’d say yes :wink:
https://github.com/JuliaGeometry/Tetgen.jl

But TetGen is strictly for 2D and 3D meshing, right? It is also not MIT-licensed. Your GeometryBasics seems dimension-agnostic, which I like (need).

Yeah, any other Delaunay triangulation needs to be implemented/wrapped by someone else :wink:

1 Like

I might look into bindings to Triangle (2D triangle meshing) over the few months. Don’t hold you breath though.

See GitHub - konsim83/TriangleMesh.jl: Generate and refine unstructured 2D triangular meshes from polygons with Julia and GitHub - cvdlab/Triangle.jl: A Julia interface to Jonathan Richard Shewchuk's Triangle library..

1 Like

Last I looked into this, the qhull library was still a standard for higher dimensional Voroni diagrams and Delaunay triangulations. There’s a (partial?) julia wrapper but it depends on pycall.

Yes, I think qhull → pycall → Julia is our only option for high-dimensional Delaunay at the moment. I’m sure this is a gap that we will be able to fill with a pure Julia solution at some point. I want to tackle the problem myself, but as it is not straightforward I’m having difficulties to find the time (and courage) :smiley:

1 Like

Could I mention the existence of:

https://github.com/krcools/CompScienceMeshes.jl

I use it for boundary elements mostly, but it is trivial to generate adjacency information etc.

3 Likes

I am certainly misunderstanding the issue you are mentioning, but… if you just need to find all elements adjoining an edge why not store the element/edge incidence matrix in a CSC sparse format and access it by column ?

Does anyone know what happened to JuliaFEM? To me, it seems like there hasn’t been much development over the last months.
@ChrisRackauckas can you tell something about the roadmap of DifferentialEquations.jl, with respect to the FEM development?
Is the FENICS now the way to go or is it only an intermediate step?

Have you seen gridap.jl? It is a Julia native Fenics like package.

5 Likes

Not yet. Thx, it looks quite promising.

Yes, Gridap.jl is taking the helm for FEM and we’ll be adding support for it in ModelingToolkit, but the discretizations will come from them.

3 Likes