Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • A amdis-core
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Graph
    • Compare revisions
  • Issues 6
    • Issues 6
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 6
    • Merge requests 6
  • Deployments
    • Deployments
    • Releases
  • External wiki
    • External wiki
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • amdis
  • amdis-core
  • Merge requests
  • !136

Matrix-Vector facade class

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Praetorius, Simon requested to merge issue/matvec_facade into master Dec 28, 2019
  • Overview 0
  • Commits 42
  • Changes 59

This MR redesigns the matrix and vector front-/backend. Therefore, the MatrixBase and VectorBase classes are renamed to xxxFacade classes, where the actual backend is passed by template-template parameter, instantiated with just the value-type of the coefficients to store in the matrix/vector. This reduces the length of the template parameter list and releases the backend from basis dependency. Also, the facade classes do not directly depend on the basis type, but get the basis as constructor argument that allows to, e.g. construct the matrix pattern, or to store a type-erased sizeInfo of the basis. This type-erasure is used in several places by just using std::functions

Also, we have added a sparsity pattern argument to the matrix init() method, where the actual pattern is initialized in the facade class to allow block patterns to be initialized at a central location.

The facade class performs several (concept) checks on the input and just forwards the necessary data and ranges to the backend implementation.

The DOFVector, LinearForm and BiLinearForm are now parametrized with the BackendTraits type, to allow user-defined traits with own backend implementations to be passed to the facade classes.

Edited Dec 29, 2019 by Praetorius, Simon
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: issue/matvec_facade