Skip to content

Feature/observer

Müller, Felix requested to merge feature/observer into master

This MR replaces the current mechanism for automatic updates of Dune-bases and DOFVectors with an observer pattern mixin.

Adds:

  • AdaptiveGrid wrapper class to be handed out to the user. This allows addition of functionality to Dune-grid types. It is expected to be used instead of a regular grid by the user whenever possible.
  • ParallelGlobalBasis class expected to be used instead of a regular Dune-basis. The Communication object is now paired directly with a basis within this object.
  • Mixin classes Observer and Signals for adding automatic update functionality to other classes.
  • Observer unit test
  • SharedPtr.hpp providing wrapping of objects and shared_ptr/unique_ptr into shared_ptrs
  • free function makeGlobalBasis to generate a ParallelGlobalBasis from a prebasis

Removes:

  • GridTransfer[Manager].hpp since those are no longer used.
  • DOFVectorInterface.hpp

Changes:

  • Lots of changes due to feature/petsc_backend, see !78 (merged).
  • Interface changes to several classes to use the new Observed[Grid, Basis] objects when needed.
  • DOFVector now creates a new DataTransfer on copy. This change is independent of this MR and may be cherry-picked.
  • Restructured preAdapt/adapt/postAdapt callbacks in DataTransfer and DOFVector
  • MeshCreator now returns an AdaptiveGrid

TODOs:

  • Cleanup of initial commit
  • Clearer names for the new classes
  • Test of Observer hierarchy (skipped subjects, multiple subjects) - see discussion below
Edited by Müller, Felix

Merge request reports