Skip to content
Snippets Groups Projects

Feature/dynamicpolymorphism

Merged Christian Engwer requested to merge feature/dynamicpolymorphism into master

This is the first MR in a series to implement #26 (closed).

The solver interfaces use dynamic polymorphism, but currently it is not possible to fully benefit from this feature. We want to allow the user to take full benefit from a dynamic interface for solver/precoditioner/scalarproduct/linearoperator.

The main change is that the category isn't an enum anymore, but virtual method catergory().

This MR contains the following changes:

  • new method category() to check for the same SolverCategory of different components at run time. This is a slight drawback compared to the current compile time checks, but it adds a lot of flexibility as we will be able to write factory classes for solvers and compose/exchange solvers at runtime.
  • add SolverCategory::category(object) to be be backwards compatible
  • add a cmake switch to enable/disable the backwards compatibility
  • update solvers to the new interface
  • update preconditioners to the new interface
  • update scalar products to the new interface
  • update operators to the new interface
  • update AMG implementation to the new interface
    • remove static dependency of PropertiesGraphCreator on the category

This MR partially incorporates commits from !5 (closed) and !1 (closed).

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Markus Blatt
  • Markus Blatt
  • added 1 commit

    • 08f4c432 - [doc] document the IterativeSolver base class

    Compare with previous version

  • Christian Engwer resolved all discussions

    resolved all discussions

  • added 1 commit

    • da90011f - [amg] reenable category check of MatrixHierarchy

    Compare with previous version

  • I'll take a look at it tomorrow.

  • please note that several things we discussed are not part of this MR. Some are in !85 (closed) and some have to follow afterwards

  • As there were no further comments, I'll rebase and merge, before we have an other major clash...

  • Christian Engwer added 28 commits

    added 28 commits

    • da90011f...5b611cda - 3 commits from branch master
    • 24f0ac35 - [test] We removed the deprecated constructors of RestartedGMResSolver. Don't tes…
    • b022944a - [dynamic polymorphism] add dynamic interface for category check
    • d362f37d - [dynamic polymorphism] make the new category interface backward compatible
    • 28492dbc - [compatibility] allow to disable the compatibility layer
    • 877c5a2a - [dynampic polymorphism] update the category implementation of the eigenvalue solvers
    • 007cec15 - [dynampic polymorphism] Add categories to spqr, ldl and umfpack
    • c2ab3f69 - [dynamic polymorphism] update the category implementation of pardiso
    • cb40ed6a - [dynamic polymorphism] Add dynamic category to SuperLU
    • 58b78df6 - [dynamic polymorphism] update solvers to store shared_ptr instead of references
    • 8dc8ac2f - [test] update inverseoperator2prectest to new category interface
    • f7864cba - [dynamic polymorphism] update schwarz.hh to the new interface
    • ecfc4c87 - [dynamic polymorphism] update overlappingschwarz.hh to the new interface
    • 7f163651 - [dynamic polymorphism] update novlschwarz.hh to the new interface
    • 4dd4b441 - [dynamic polymorphism] update twolevelmethod.hh to the new interface
    • b03d74ff - [amg] remove enum category from SequentialInformation
    • 6381cf10 - [dynamic polymorphism] specialize category(...) for getSolverCategory()
    • 6c191afa - [amg] add missing methods dot and norm to SequentialInformation
    • ae4927cd - [amg] make hierarchy creation dynamic
    • 03161dba - [dynamic polymorphism][amg] make AMG use a dynamic category
    • ee6dd91f - [dynamic polymorphism][amg] make FastAMG use a dynamic category
    • b646d9cd - [dynamic polymorphism][amg] make KAMG use a dynamic category
    • cd32eb81 - [dynamic polymorphism][amg] make TwoLevelMethod use a dynamic category
    • cb141c89 - [dynamic polymorphism] replace ScalarProductChooser by a dynamic factory function
    • 3686ed2d - [doc] document the IterativeSolver base class
    • eae6d17e - [amg] reenable category check of MatrixHierarchy

    Compare with previous version

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Please register or sign in to reply
    Loading