Fork me on GitHub

Finite elements, in pure Go.
Solved on a mesh, verified by a known answer.

go-fem is planned (wave 3 of the go-scikit roadmap): finite elements and PDE solvers, starting with Lagrange P1 and P2 elements, Poisson, heat and elasticity, validated by manufactured solutions and their observed convergence order. No repository holds code yet.

planned (wave 3)2 packages in the planCGO=0 pure Go
status
status    planned (wave 3)
package   fem (wave 3)
package   mms (wave 3)
plan      github.com/go-scikit/roadmap
2 repositories โ€” no library yet: planned, wave 3
What it will cover

Scope: finite elements and PDE solvers.

Nothing here is released. This is the scope of the plan, as PLAN.md states it: item 13 of wave 3 (go-geometry meshing and go-fem: P1/P2 elements, Poisson, heat, elasticity, validated by manufactured solutions).

โ–ณ

Lagrange elements

P1 and P2 elements on triangles, with tabulated symmetric quadrature rules of high degree and positive weights.

โˆ‘

Assembly and boundary conditions

An element, dofmap and assembler split after the FEniCS book, with Dirichlet, Neumann and periodic conditions.

โˆ‡ยฒ

Poisson first

Then heat, wave and elasticity, and Stokes later: the MATLAB PDE Toolbox and NDSolve surface is far larger, and the plan says so.

โœ“

Manufactured solutions

Pick the exact solution, derive the right-hand side and the boundary data, and report the observed convergence order on a refinement sequence.

๐Ÿ”—

Built on the fleet

Meshes from go-geometry, linear solvers from go-sparse, stiff time stepping from go-numerics: nothing is rewritten.

โš–๏ธ

Licences kept clean

MFEM (BSD-3-Clause) is the design reference; FEniCS and DOLFINx (LGPL) are oracles only.

What will be checked

3 kinds of check, each against the reference tool of the domain.

Every item of the plan is validated against the tools that are the reference in its domain, driven as oracles from Go. These are plans, taken from the roadmap's bibliography; no result exists yet.

Observed convergence order

Within 0.1 of theory: h^(p+1) in L2 and h^p in H1 for Pp elements, on a refinement sequence. (planned)

Error against the exact solution

Relative L2 error against the manufactured solution, and the relative residual of the linear solve. (planned)

Oracle on a shared mesh

P1/P2 Poisson solutions compared with FEniCS/DOLFINx on the same mesh, never node by node on different meshes. (planned)

Repositories and packages

What is here, and what is planned.

docs

site

The documentation (Hugo + Hextra): the scope, the plan and one page per planned package, with its references. Source โ†’

brand

assets

Logos and icons for the organization, in SVG / PNG / JPG / ICO / ICNS across colour, white and black variants.

fem

planned (wave 3)

Lagrange finite elements, quadrature, assembly, boundary conditions and the first PDE solvers. No repository yet; the name is a working name.

mms

planned (wave 3)

The shared method-of-manufactured-solutions convergence harness. No repository yet; the name is a working name.

Planned, in the open.

The plan and its progress are public: PLAN.md says what each domain covers and in which wave, STATUS.md says where each item stands. The documentation describes the planned packages and the references they will be validated against.

See the organization on GitHub โ†’