-
Notifications
You must be signed in to change notification settings - Fork 63
Open
Labels
status: in progressIssues that are currently being worked onIssues that are currently being worked ontaskforce: tpetraIssues related to the migration from Epetra to TpetraIssues related to the migration from Epetra to Tpetratype: enhancementA new feature or enhancement to be implementedA new feature or enhancement to be implemented
Milestone
Description
Description
Currently our LinAlg::SparseOperator inherits from Epetra_Operator, which brings a few difficulties with it. I would propose to remove this inheritance and provide just an abstract LinAlg::SparseOperator interface with necessary methods we need. The actual implementations, namely LinAlg::SparseMatrix and LinAlg::BlockSparseMatrix should internally hold the respective Epetra related object (similar to our other wrappers).
Possible Solution and Definition of Done
- Remove the inheritance to
Epetra_OperatorofLinAlg::SparseOperator(see [LinAlg] Remove the inheritance ofEpetra_OperatorfromSparseOperator#1524). - Remove the inhertiance to to
Epetra_OperatorofLinAlg::BlockSparseMatrix. The only (??) thing that prevents this is theepetra_operator()call in the iterative solver that needs the inheritance to be able to overwriteApply()andApplyInverse(). With [solver] Move internals toThyraobjects #1400 resolved, we should be able to cut the inheritance. - Move member functions related to matrix addition to free functions (see [EpetraExt] Evaluate the sparse matrix addition methods #136)
Refactor LinAlg::SparseMatrix wrapper
- Think about how the wrapper could hold an
Epetra_CrsMatrixas private member. - Remove as many
Epetra_CrsMatrixoccurences in the code and replace byCore::LinAlg::SparseMatrix - One more instance of
get_epetra_exportcall remains: need our ownImportimplementation forEpetra_CrsMatrix. (see [Epetra] Cleanup some related calls #1107) - Add a conversion utility function, which returns a
Thyra::LinearOpwrapping theEpetra_CrsMatrix - Turn on
StaticProfiletotrue(see [LinAlg] Static sparsity layout for sparse matrices #1544)
Refactor LinAlg::BlockSparseMatrix implementation (see #1525)
- Remove the method
Core::LinAlg::block_matrix2x2(), which is only used once inxfluid - Remove the method
Core::LinAlg::BlockSparseMatrixBase::get_partial_extractor(), which is not used - Add a conversion utility function, which fills a
Thyra::PhysicallyBlockedLinearOpand returns aThyra::LinearOp
Interested Parties
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
status: in progressIssues that are currently being worked onIssues that are currently being worked ontaskforce: tpetraIssues related to the migration from Epetra to TpetraIssues related to the migration from Epetra to Tpetratype: enhancementA new feature or enhancement to be implementedA new feature or enhancement to be implemented