@@ -10,45 +10,79 @@ for each release of libCEED.
1010v0.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