DUNE Numerics

Protocol Dune Developer Meeting

Place: RWTH Aachen

Day 1, 2013-09-26

Attendants: Stefan Girke, Oliver Sander, Christian Engwer, Jorrit Fahlke, Stefan Lang, Markus Blatt, Martin Nolte, Steffen Müthing, Peter Bastian, Andreas Dedner (until 17:15), Tobias Malkmus, Christoph Gersbacher, Dominic Kempf, Christoph Grüninger, Didrik Jonassen (until 16:30), Carsten Gräser, Robert Kloefkorn (via Skype)
Transcript writer: Christoph Grüninger

Limit number of core developer?

The following points were suggested:

  • the decision processes of Dune core development are not optimal
  • May the large number of core developers be part of the problem?
  • use/improve vote system

The following point was decided upon:

  • do not add new core developers until discussed

New core developers

There were two nominations for new core developers:

  • Steffen Müthing (Universität Heidelberg)
  • Christoph Gersbacher (Universität Freiburg)

Both nominations were approved, and Steffen and Christoph are now core
developers

  • Steffen Müthing (yes: 8, abstaintion: 1, no: 0, not here: 1)
  • Christoph Gersbacher (yes: 6, abstention: 3, no: 0, not here: 1)

New release 2.3

Markus Blatt volunteered to be the manager for the next release.
Christoph Grüninger volunteered to help him.

The new release will be 2.3, and is planned to appear before Christmas 2013

It is likely that afterwards there will be a 3.0 release, which may introduce
a few non-backward-compatible changes.

Structured grids in dune-grid

OS stated the opinion that the structured grids in dune-grid are in a unsatisfactory state:
Both SGrid and YaspGrid have interesting features that the other one doesn’t have. Instead
of one really good structured grid there are two mediocre ones. There was no general consensus
on this matter.

In any case, there was agreement that SGrid cannot be dropped until another dune-grid grid
fully implements the interface and all features of SGrid.

One suggested solutions was to move SPGrid into dune-grid. This issue has not been decided
upon; the SPGrid developers did not appear to like the idea.

PB mentioned that he will hire a hiwi in the near future, who may be told to implement some
more of the missing features in YaspGrid (in particular, entities of codimensions other than
0 and the grid dimension).

dune-grid-dev-howto

The dune-grid-dev-howto only contains the IdentityGrid implementation, which exists for
teaching purposes only. The module gets little attention, and therefore the IdentityGrid
code is subject to frequent bitrot. It was originally planned that dune-grid-dev-howto
should also contain a text on how to write a dune grid. However, that text has not been
written yet.

A book on Dune is in the works, written by a number of the Dune developers. It is planned
that this book will contain a chapter on how to write a grid. If this works out there is
no reason why the text should also appear in dune-grid-dev-howto.

In light of this situation, OS proposed to move IdentityGrid into dune-grid itself, and get
rid of dune-grid-dev-howto altogether. This was voted upon, with the following result:
yes: 6, abstention: 2, no: 3.
Hence the proposed changes will be put into effect, but only after the 2.3 release.
OS volunteered to maintain IdentityGrid in dune-grid.

  • Adding teaching grids in dune-grid-dev-howto, they do not need to match expectations on quality

dune-functions

It was briefly explained that there has been an effort to design a new module dune-functions.
This module should combine the knowledge from dune-pdelab, dune-fem, and dune-fufem, and define
interfaces for functions on grids, and discrete function spaces. A first meeting has taken place
in Münster, attendants being:

  • Christian Engwer, Steffen Müthing (for dune-pdelab)
  • Christoph Gersbacher, Stefan Girke (for dune-fem)
  • Carsten Gräser, Oliver Sander (for dune-fufem)

There has been good progress, but the results are not suitable for a wider audience yet.

misc.hh

It was decided that the file misc.hh in dune-common should be removed in an effort
to clean up the code (see FS#1338 )

It was decided to

  • move the math stuff in there to the file math.hh
  • deprecate/remove the method genfilename, because it is only needed by dune-fem
  • move string handling to a new file string.hh

OS volunteered to take care of this.

Remove BasicGeometry

It was decided to remove the BasicGeometry class from the dune-geometry module.
It is superseded by MultiLinearGeometry, which offers mostly the same functionality,
but which has much simpler code.

The class is deprecated already. MN volunteered to remove it after the 2.3 release.

It is the aim to remove the entire genericgeometry directory along with BasicGeometry,
but it is not entirely clear how much of the stuff in there is needed elsewhere.
This will be evaluated step by step.

Support request in FlySpray

It was decided that the category ‘Support request’ will disappear from the FlySpray
bugtracker, because the bugtracker should remain reserved for actual bugs only.

Vote: yes: 8, abstention: 3, no: 0

CE volunteered to take care of that.

Drop support for older compilers

It was decided after the 2.3 release we will cease to support gcc versions
older than 4.4.

Further, we will then state that the dune core modules will be

  • compatible with Clang 3.2 or newer but this is not actively tested
  • compatible with ICC 13 or newer, but this not actively tested

Christoph Grüninger will update the documentation accordingly

Use more C++11 features

We change our policy regarding C++11 features after the 2.3 release. Some feature are still not allowed, due to our compiler support (see above).

  • Drop compatibility code after dune 2.3: shared_ptr, array, tuple, some typetraits, static_assert
  • Pull std:: stuff to Dune namespace (UPDATE: namespace Dune::std:: [see below])
  • Allowed C++11 featured? (will be tested by Steffen Müthing)
    > * Rvalue references: work with noexcept, thus we introduce the macro DUNE_NOEXCEPT (Steffen Müthing will write Macro). Note: the feature maybe a problem with ICC 13.
    > * variadic templates
    > * static assert: drop fall back code, keep rest as it is
    > * decltype
    > * >>: we have no strong opinion and allow developers to write ClassNameA>
    > * default template arguments for function templates:
    > * strongly typed enums: postponed due to partial support in ICC 13
    > * deleted functions: with DUNE_DELETE
    > * inline namespaces:
  • Not allowed C++11 featured
    > * defaulted functions:
    > * auto: no until we drop GCC 4.4 because there are bugs
    > * initializer lists: add support to our classes, allow use inside dune core modules (supported by ICC 13?)
  • Write software in a way to be compatible with range based loops and lambda expressions

Alberta 2 support

  • Alberta 3.0 is almost finished
  • Testing Alberta 2 is a burden, Markus Blatt will include that in his testing system
  • Keep Alberta 2

SubEntity of all co-dimensions

  • All grids must provide SubEntities of all co-dimensions
  • These SubEntities do not necessarily provide Geometries, capability: hasGeometry
  • name of capability hasEntityIterator

Geometry of SubEntity

  • Geometry is fixed (globally unique) for all entities
  • for each SubEntity we provide (by some means) the geometric and topological mapping into the reference element of the entity
  • Carsten Gräser will provide test of consistency of subentity orientation FS#980

default constructor for EntitySeed

  • see FS#1221
  • add default constructor to EntitySeed
  • add function isValid() to EntitySeed
  • add explicit (with macro DUNE_EXPLICIT) bool cast to facade class
  • after dune 2.3 release
  • vote (yes: 11, no:0)

Type of jacobian(Inverse)Transposed

  • provides all const methods which are not element access
  • const dense matrix interface, no element access, no iterators
  • method returns a copy not a reference
  • can be casted to FieldMatrix
  • Christoph Gersbacher provides a test

Day 2, 2013-09-27

Attendants: Stefan Girke, Oliver Sander, Christian Engwer, Jorrith Falke, Markus Blatt, Martin Nolte, Steffen Müthing, Peter Bastian, Tobias Malkmus, Christoph Gersbacher, Dominic Kempf, Christoph Grüninger, Carsten Gräser, Robert Kloefkorn (from 14:30 on, via Skype)
Transcript writer: Christoph Grüninger

Replace rows() and cols() DenseMatrix and FieldMatrix

  • wanted? unclear name
  • Capability isStatic? Until constexpr is usable
  • subgroup (under the lead of Christian Engwer) will work out / decide

Introduce macro DUNE_CONSTEXPR

  • introduce macro DUNE_CONSTEXPR (Martin Nolte)
  • do not rely on it in core modules, for user code

Constructor for FieldVector

  • data initialized with default value (yes: 9, abstention: 0, no: 0)

Git workflow

  • get rid of old release branches, only one branch per x.y release, keep tags
  • stick to concept of private branches, please remove private branches if no longer used
  • use tags in squared brackets, add summary in first line of commit message
  • git push only secured over https

convenience method size() for the LocalFiniteElement

Currently, if you have an object foo of type LocalFiniteElement, you had to
either call foo.localBasis().size() or foo.localCoefficients().size() to obtain
the number of shape functions of the finite element. OS proposed to add a
convenience method to the LocalFiniteElement class itself, which would allow
to simply write foo.size();

This proposal was approved. The work will be done by OS.

Naming convention

While there are naming rules for methods, classes, etc., these are inconsistently applied.
The Dune developers declared their intention to straighten out some of the oddities.

  • The Dune naming scheme is CamelCase
  • Capitalization should never change inside an acronyms, e.g. getBCRSMatrix(), but bcrsMatrix
  • Exported types are not supposed to end in ‘Type’, e.g. Size instead of SizeType, Index instead of IndexType.
    The cases where exported types do end in ‘Type’ are considered bugs, and will be changed.
  • An exception is ‘ctype’. It does not follow the naming rules, but nobody came up
    with a good alternative name.

An exception will be made to classes that are very closely in spirit to classes found
in the STL (like, e.g., container classes).

  • It was decided that such classes should follow the pure STL naming style exclusively.
  • Examples are ReservedVector, BitSetVector, lru, etc.
  • Those not already using STL naming will be converted.
  • All classes following the STL style will be in a separate namespace Dune::std.
  • This was chosen from among three proposals: Dune::STD, Dune::Std, Dune::std
  • (vote (dislikes): STD: 5 (–4), Std: 5 (–3), std: 5 (–2))
  • vote: yes: 9, no: 0

Finally, there has been constant unhappiness for some people that while grids export a type
LeafGridView, the corresponding method is called leafView() (without the ‘Grid’). It was
decided to rename the method leafView to leafGridView, and levelView to levelGridView.
Deprecation of the old methods shall happen before the 2.3 release.

OS will supervise the effort.

Entity should no longer export ctype and dimworld

The Entity facade classes in the dune grid export types ‘ctype’ and the dimension
of the world space in ‘dimworld’. This is inconsistent design, because Entities
are supposed to only carry topological information, and ctype and dimworld are
both geometric in nature. OS proposed to remove these two exported types.

  • vote: yes: 8, abstention:1, no: 1

OS volunteers to remove the types.

CMake

  • Please test, works in general
  • Vague plan to make CMake the successor of autotools (Dune 3.0?)

GridTraits should get implementations instead of Traits

  • Oliver Sander will provide prototype

Singleton

  • Steffen Müthing will provide a macro DUNE_EXPORT

deprecate and remove lbegin/lend from Grid

  • deprecate and remove lbegin/lend from Grid, use from GridView instead
  • vote: yes: 9, no: 0

viewThreadSafe more precise definition

  • one thread can communicate while others can traverse the grid
  • IndexSet has to be obtained once before using in others threads, too
  • same for IdSets, GridView
  • Christian update(s/d) the documentation accordingly

Tuple library

boundaryId

  • move boundaryId to enable_grid_extension (Christoph Grüninger)
  • boundary problem is still an open problem, discussion should be picked up again

range based for loops over GridView

  • EntityRange does not provides contains()?
  • provides begin() and end()
  • member type iterator
  • Dune::entityRange() or GridView.entityRange()?
  • analog for Intersections?
  • follow up discussion needed (Flyspray, Martin Nolte)
Creative Commons License   |  Legal Statements / Impressum  |  generated with Hugo v0.30.2 (Jan 17, 01:19, 2019)