FEniCS core developments

236 views
Skip to first unread message

Garth Wells

unread,
Feb 23, 2018, 6:53:26 AM2/23/18
to fenic...@googlegroups.com, fenics-...@googlegroups.com, fenics-stee...@googlegroups.com
Some core software components of FEniCS have been developed now for a
period of over 15 years. Over that time our understanding, experiences
and needs have changed, and the landscape of available tools that
FEniCS can build upon has changed dramatically. Much of the low-level
FEniCS code has become complex, and challenging to maintain and
develop.

To keep FEniCS at the leading edge of technology, usability and
performance, we have started a major re-write of some core FEniCS
components. Some key objectives in the redesign include:

- Making it straightforward to develop (specialised) modules that build
on or extend FEniCS/DOLFIN

- Simpler and faster-to-compile JIT, e.g. allowing users to write code
in Numba for high performance operations

- Support for specialised low-level hand-coded development from the
Python interface, e.g. custom elements or custom element kernels

- Proper use of modules, with a hierarchy of modules/functionality from
core through to high-level convenience interfaces and experimental
modules

- A smaller and easier-to-maintain C++ core for DOLFIN, with a ground-
up parallel design

- Improved performance, with special attention to vectorisation and
large-scale parallel computing

- Implementation of some long-planned functionality that has been
hindered by the current design, e.g. mesh views, block linear algebra
and complex number support

- Easier to generate and maintain documentation [3, 4]

It is anticipated that a cleaner, simpler core design will make it
easier for new developers to contribute to FEniCS.

The development repositories for the new components have been named
dolfinX [1] and ffcX [2] (for the time being). They are not yet ready
for mainstream use, but will be the focus of future development
activities. A Python module will be developed to replicate much of the
current DOLFIN Python interface.

We will be making a 2018.1 release of the existing components in the
near future. Some development of the existing libraries will continue,
but the focus of development efforts will shift to the new 'fenicsX'
components.


The FEniCS Project Steering Council

[1] https://bitbucket.org/fenics-project/dolfinx
[2] https://bitbucket.org/fenics-project/ffcx
[3] https://fenicsproject.org/docs/dolfinx/dev/python/
[4] https://fenicsproject.org/docs/dolfinx/dev/cpp/
Reply all
Reply to author
Forward
0 new messages