Feature/dynamicpolymorphism
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 sameSolverCategory
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
Activity
added 48 commits
-
8c2718df...77390949 - 26 commits from branch
master
- 6fe14a18 - [test] We removed the deprecated constructors of RestartedGMResSolver. Don't tes…
- 0ebb52ce - [dynamic polymorphism] add dynamic interface for category check
- b558896c - [dynamic polymorphism] make the new category interface backward compatible
- 7d7db1ad - [compatibility] allow to disable the compatibility layer
- d0d45feb - [dynampic polymorphism] update the category implementation of the eigenvalue solvers
- 0addb9bb - [dynampic polymorphism] Add categories to spqr, ldl and umfpack
- d0fc3366 - [dynamic polymorphism] update the category implementation of pardiso
- ccd44e01 - [dynamic polymorphism] Add dynamic category to SuperLU
- 3dd3e5df - [dynamic polymorphism] update solvers to store shared_ptr instead of references
- 6ccca009 - [test] update inverseoperator2prectest to new category interface
- 9c017e58 - [dynamic polymorphism] update schwarz.hh to the new interface
- dc26c962 - [dynamic polymorphism] update overlappingschwarz.hh to the new interface
- 705328fc - [dynamic polymorphism] update novlschwarz.hh to the new interface
- 3e118a21 - [dynamic polymorphism] update twolevelmethod.hh to the new interface
- f494a161 - [amg] remove enum category from SequentialInformation
- 9f20d53b - [dynamic polymorphism] specialize category(...) for getSolverCategory()
- 90cc28c4 - [amg] add missing methods dot and norm to SequentialInformation
- 33f7398d - [amg] make hierarchy creation dynamic
- 4cb23d90 - [dynamic polymorphism][amg] make AMG use a dynamic category
- a8a35d11 - [dynamic polymorphism][amg] make FastAMG use a dynamic category
- b97d9e48 - [dynamic polymorphism][amg] make KAMG use a dynamic category
- 46607e67 - [dynamic polymorphism][amg] make TwoLevelMethod use a dynamic category
Toggle commit list-
8c2718df...77390949 - 26 commits from branch
mentioned in merge request !85 (closed)
mentioned in merge request !5 (closed)
added 20 commits
- ba71efe8 - [compatibility] allow to disable the compatibility layer
- aef54c20 - [dynampic polymorphism] update the category implementation of the eigenvalue solvers
- b553e646 - [dynampic polymorphism] Add categories to spqr, ldl and umfpack
- 4d1af195 - [dynamic polymorphism] update the category implementation of pardiso
- 11cb86b3 - [dynamic polymorphism] Add dynamic category to SuperLU
- b3d733e6 - [dynamic polymorphism] update solvers to store shared_ptr instead of references
- e569bbf1 - [test] update inverseoperator2prectest to new category interface
- e8549ed3 - [dynamic polymorphism] update schwarz.hh to the new interface
- 60b2dc9a - [dynamic polymorphism] update overlappingschwarz.hh to the new interface
- 349bd0e9 - [dynamic polymorphism] update novlschwarz.hh to the new interface
- ddd1979e - [dynamic polymorphism] update twolevelmethod.hh to the new interface
- 762c8cbc - [amg] remove enum category from SequentialInformation
- b012c63f - [dynamic polymorphism] specialize category(...) for getSolverCategory()
- 70c12625 - [amg] add missing methods dot and norm to SequentialInformation
- 3209578d - [amg] make hierarchy creation dynamic
- b2e44205 - [dynamic polymorphism][amg] make AMG use a dynamic category
- ee064bfd - [dynamic polymorphism][amg] make FastAMG use a dynamic category
- 05a0ad9f - [dynamic polymorphism][amg] make KAMG use a dynamic category
- 48661315 - [dynamic polymorphism][amg] make TwoLevelMethod use a dynamic category
- 1945b555 - [dynamic polymorphism] replace ScalarProductChooser by a dynamic factory function
Toggle commit listmentioned in issue #26 (closed)
@smuething @markus.blatt please have a look. I'd like to merge soon.
@smuething @markus.blatt do you have a comment on this?
- Resolved by Christian Engwer
- Resolved by Christian Engwer
- Resolved by Christian Engwer
added 1 commit
- 08f4c432 - [doc] document the IterativeSolver base class
added 1 commit
- da90011f - [amg] reenable category check of MatrixHierarchy
please note that several things we discussed are not part of this MR. Some are in !85 (closed) and some have to follow afterwards
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
Toggle commit list-
da90011f...5b611cda - 3 commits from branch