Skip to content

Commit 0696387

Browse files
libCEED-0.6
Co-authored-by: Valeria Barra <valeriabarra21@gmail.com>
1 parent 46defcf commit 0696387

File tree

4 files changed

+79
-42
lines changed

4 files changed

+79
-42
lines changed

Doxyfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ PROJECT_NAME = "libCEED"
3838
# could be handy for archiving the generated documentation or if some version
3939
# control system is used.
4040

41-
PROJECT_NUMBER = v0.5
41+
PROJECT_NUMBER = v0.6
4242

4343
# Using the PROJECT_BRIEF tag one can provide an optional one line description
4444
# for a project that appears at the top of each page and should give viewer a

ceed.pc.template

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ libdir=${prefix}/lib
44

55
Name: CEED
66
Description: Code for Efficient Extensible Discretization
7-
Version: 0.5
7+
Version: 0.6
88
Cflags: -I${includedir}
99
Libs: -L${libdir} -lceed

doc/sphinx/source/conf.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,10 @@
249249

250250

251251
# Example configuration for intersphinx: refer to the Python standard library.
252-
intersphinx_mapping = {'https://docs.python.org/': None}
252+
intersphinx_mapping = {
253+
'python': ('https://docs.python.org', None),
254+
'numpy': ('https://numpy.org/devdocs', None),
255+
}
253256

254257

255258
# -- Options for breathe --------------------------------------------------

doc/sphinx/source/releasenotes.rst

Lines changed: 73 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -10,45 +10,79 @@ for each release of libCEED.
1010
v0.6 (Mar 29, 2020)
1111
----------------------------------------
1212

13-
libCEED v0.6 was made again publicly available in the third full CEED software
14-
distribution, release CEED 3.0. This release contained notable features, and
15-
substantial additions in the examples suite. Some API changes were introduced,
16-
including the change from ``CeedElemRestrictionCreateIdentity()`` to
17-
``CeedElemRestrictionCreateStrided()``
18-
and the addition of ``ElemRestriction`` layout mode. The latter change
19-
requires changing use of ``CEED_TRANSPOSE`` and ``CEED_NOTRANSPOSE`` to
20-
``CEED_LAYOUT_NODE_COMPONENT`` and ``CEED_LAYOUT_COMPONENT_NODE``,
21-
respectively, for ``CeedElemRestriction lmode`` in ``CeedElemRestrictionCreate*``.
22-
The user still has the choice of interlacing fields by node, or viceversa,
23-
interlacing nodes by fields, but this choice now is not declared when the
24-
different ``CeedOperator`` fields are set with the ``CeedOperatorSetField()``,
25-
rather when the restriction is created with ``CeedElemRestrictionCreate()``.
26-
27-
For this release, the libCEED team has deployed libCEED's very first
28-
`user manual <https://libceed.readthedocs.io/en/latest/>`_!
29-
And a C/Python interface, developed using the C Foreign Function Interface
30-
(`CFFI <https://cffi.readthedocs.io/en/latest/>`_)
31-
for Python. CFFI allows to reuse most of the C declarations and requires only a
32-
minimal adaptation of some of them. The C and Python APIs are mapped in a nearly
33-
1:1 correspondence. For instance, data stored in the CeedVector structure are
34-
associated to arrays defined via the numpy package. In fact, since libCEED heavily
35-
relies on pointers and arrays to handle the data, a Python structure that resembles
36-
the C arrays is needed. In details, numpy arrays allow this correspondence obtained
37-
by passing the numpy array memory address as pointers to the libCEED C API.
38-
39-
Moreover, in this release, libCEED's suite of PETSc application examples has
40-
significantly expanded, including: An expanded Navier-Stokes miniapp, which now
41-
features an implicit time-integration formulation, SU/SUPG stabilization methods,
42-
free slip boundary conditions and quasi-2D computational domain for faster
43-
execution; A Continuum Mechanics example, which features different constitutive
44-
models, such as linear elasticity and hyperelasticity both at small and finite
45-
strain; Calculation of surface areas including the case of the surface of a
46-
cube and a cubed-sphere; And finally, the expansion of the set of PETSc Bakeoff
47-
Problems (BPs) on the cubed-sphere. In what follows, we provide a detailed
48-
description of the added examples.
49-
50-
Backends available in this release, are the same ones available in :ref:`v0.5`.
51-
13+
libCEED v0.6 contains numerous new features and examples, as well as expanded
14+
documentation in `this new website <https://libceed.readthedocs.io>`_.
15+
16+
New features
17+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
18+
* New Python interface using `CFFI <https://cffi.readthedocs.io/>`_ provides a nearly
19+
1-1 correspondence with the C interface, plus some convenience features. For instance,
20+
data stored in the :cpp:type:`CeedVector` structure are available without copy as
21+
:py:class:`numpy.ndarray`. Short tutorials are provided in
22+
`Binder <https://mybinder.org/v2/gh/CEED/libCEED/master?urlpath=lab/tree/examples/tutorials/>`_.
23+
* Linear QFunctions can be assembled as block-diagonal matrices (per quadrature point,
24+
:cpp:func:`CeedOperatorAssembleLinearQFunction`) or to evaluate the diagonal
25+
(:cpp:func:`CeedOperatorAssembleLinearDiagonal`). These operations are useful for
26+
preconditioning ingredients and are used in the libCEED's multigrid examples.
27+
* The inverse of separable operators can be obtained using
28+
:cpp:func:`CeedOperatorCreateFDMElementInverse` and applied with
29+
:cpp:func:`CeedOperatorApply`. This is a useful preconditioning ingredient,
30+
especially for Laplacians and related operators.
31+
* New functions: :cpp:func:`CeedVectorNorm`, :cpp:func:`CeedOperatorApplyAdd`,
32+
:cpp:func:`CeedQFunctionView`, :cpp:func:`CeedOperatorView`.
33+
* Make public accessors for various attributes to facilitate writing composable code.
34+
* New backend: ``/cpu/self/memcheck/serial``.
35+
* QFunctions using variable-length array (VLA) pointer constructs can be used with CUDA
36+
backends. (Single source is coming soon for OCCA backends.)
37+
* Fix some missing edge cases in CUDA backend.
38+
39+
Performance Improvements
40+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
41+
* MAGMA backend performance optimization and non-tensor bases.
42+
* No-copy optimization in :cpp:func:`CeedOperatorApply`.
43+
44+
Interface changes
45+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
46+
* Replace :code:`CeedElemRestrictionCreateIdentity` and
47+
:code:`CeedElemRestrictionCreateBlocked` with more flexible
48+
:cpp:func:`CeedElemRestrictionCreateStrided` and
49+
:cpp:func:`CeedElemRestrictionCreateBlockedStrided`.
50+
* Add arguments to :cpp:func:`CeedQFunctionCreateIdentity`.
51+
* Replace ambiguous uses of :cpp:enum:`CeedTransposeMode` for L-vector identification
52+
with :cpp:enum:`CeedInterlaceMode`. This is now an attribute of the
53+
:cpp:type:`CeedElemRestriction` (see :cpp:func:`CeedElemRestrictionCreate`) and no
54+
longer passed as ``lmode`` arguments to :cpp:func:`CeedOperatorSetField` and
55+
:cpp:func:`CeedElemRestrictionApply`.
56+
57+
Examples
58+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
59+
60+
libCEED-0.6 contains greatly expanded examples with :ref:`new documentation <Examples>`.
61+
Notable additions include:
62+
63+
* Standalone :ref:`ex2-surface` (:file:`examples/ceed/ex2-surface`): compute the area of
64+
a domain in 1, 2, and 3 dimensions by applying a Laplacian.
65+
* PETSc :ref:`example-petsc-area` (:file:`examples/petsc/area.c`): computes surface area
66+
of domains (like the cube and sphere) by direct integration on a surface mesh;
67+
demonstrates geometric dimension different from topological dimension.
68+
* PETSc :ref:`example-petsc-bps`:
69+
70+
* :file:`examples/petsc/bpsraw.c` (formerly ``bps.c``): transparent CUDA support.
71+
* :file:`examples/petsc/bps.c` (formerly ``bpsdmplex.c``): performance improvements
72+
and transparent CUDA support.
73+
* :ref:`example-petsc-bps-sphere` (:file:`examples/petsc/bpssphere.c`):
74+
generalizations of all CEED BPs to the surface of the sphere; demonstrates geometric
75+
dimension different from topological dimension.
76+
77+
* :ref:`example-petsc-multigrid` (:file:`examples/petsc/multigrid.c`): new p-multigrid
78+
solver with algebraic multigrid coarse solve.
79+
* :ref:`example-petsc-navier-stokes` (:file:`examples/fluids/navierstokes.c`; formerly
80+
``examples/navier-stokes``): unstructured grid support (using PETSc's ``DMPlex``),
81+
implicit time integration, SU/SUPG stabilization, free-slip boundary conditions, and
82+
quasi-2D computational domain support.
83+
* :ref:`example-petsc-elasticity` (:file:`examples/solids/elasticity.c`): new solver for
84+
linear elasticity, small-strain hyperelasticity, and globalized finite-strain
85+
hyperelasticity using p-multigrid with algebraic multigrid coarse solve.
5286

5387
.. _v0.5:
5488

0 commit comments

Comments
 (0)