Skip to content

martinlicht/simplefem

Repository files navigation

C/C++ CI Basic Unit tests Solverfem unit test

              [ FFFFF EEEEE EEEEE  CCCC    +       +   ]
              [ F     E     E     C        +       +   ]
              [ FFFF  EEEE  EEEE  C     +++++++ +++++++]
              [ F     E     E     C        +       +   ]
              [ F     EEEEE EEEEE  CCCC    +       +   ]

             [ C++ Finite element library based on FEEC ]
                [www.github.com/martinlicht/simplefem]

Cpp

FEEC++ is a C++ library for finite element methods in the spirit of finite element exterior calculus (FEEC). Its goal is to enable easy prototyping for fundamental research in numerical PDE with a FEEC point-of-view.

FEEC++ implements finite element differential forms of arbitrary (uniform) polynomial degree over simplicial meshes, including Whitney forms and Sullivans forms, together with the relevant algebraic and metric operations. It comes with linear algebra implementations and supports uniform refinement and longest edge bisection.

FEEC++ builds and runs on Linux, Windows (Cygwin), and MacOS. The only necessary prerequisites are a C++14 compiler (such as GCC and Clang) and GNU Make.

Most important features:

  • Written in C++
  • Minimal dependencies: C++14 compiler and GNU make
  • Compiles and runs on Linux, Windows & Cygwin, or Windows & MinGW-w64

Finite element features:

  • Meshes in dimension 1, 2, and 3
  • uniform mesh refinement and longest edge bisection
  • Whitney and Sullivan k-forms of any polynomial degree in any dimension
  • Exterior derivative, traces, exterior and interior products
  • Metric linear operations such as mass operator and Hodge star operator
  • Mass matrices with constant or non-uniform coefficients

C++ design guidelines:

  • C++14 with optional C++17 enhancements
  • Minimal dependencies: C++14 compiler and GNU Make
  • Minimal requirements and fast compilation
  • Any necessary external library included
  • Fail-fast philosophy

Planned finite element features:

  • Different bases of finite element differential forms
  • Polynomial multigrid
  • Curved geometries (surfaces supported already)
  • Finite element spaces with non-uniform polynomial degree
  • Duality-based error estimators and adaptive strategies

This codebase aims for facilitating easy proof-of-concept implementations for finite element methods not found in the standard textbooks, with minimal dependencies and easily portable with regard to OS and machine power.

This project has some explicit non-goals: the project does neither aim for massively distributed-memory parallelism nor for peak high-performance computing.

About

Finite element library

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published