CEED will build on the efforts of the Nek5000, MFEM, MAGMA, OCCA and PETSc projects to develop application program interfaces (APIs), both at high-level and at low-level. Multiple APIs are necessary to enable application to take advantage of CEED-developed high-order technologies at the level they are comfortable with. In addition, our high-level API will call internally low-level API functionality.

High level API

The CEED high-level API operates with global discretization concepts, specifying a global mesh, finite element spaces and PDE operators to be discretized with the point-wise physics representing the coefficients in these operators.

Given such inputs, CEED provides efficient discretization and evaluation of the requested operators, without the need for the application to be concerned with element-level operations. Internally, the high-level API relies on CEED's low-level API described below.

The global perspective also allows CEED to provide general unstructured adaptive mesh refinement support, with minimal impact in the application code.

This API is currently under development. Stay tuned for more details...

Low level API

The CEED low-level API operates with the foundational components of finite element operators, described by the following decomposition:

We take advantage of the tensor-product structure of both the finite element basis and the quadrature rule to efficiently apply the action of $B$ without necessarily computing its entries. This is generally know as sum factorization. In the case where we precompute and store the $D$ matrix, we call the algorithm partial assembly.

The low-level API can be used as the foundation for an efficient high-order operator format.

This API is currently under development. Stay tuned for more details...