VertexCFD  0.0-dev
VertexCFD_LinearSolvers_LocalDirectSolver.hpp
1 #ifndef VERTEXCFD_LINEARSOLVERS_LOCALDIRECTSOLVER_HPP
2 #define VERTEXCFD_LINEARSOLVERS_LOCALDIRECTSOLVER_HPP
3 
4 #include <Teuchos_FancyOStream.hpp>
5 #include <Teuchos_RCP.hpp>
6 #include <Tpetra_MultiVector.hpp>
7 #include <Tpetra_RowMatrix.hpp>
8 
9 #include <vector>
10 
11 namespace VertexCFD
12 {
13 namespace LinearSolvers
14 {
15 //---------------------------------------------------------------------------//
16 // Base class for solvers performing local (non-MPI) sparse direct solves
17 //---------------------------------------------------------------------------//
19 {
20  public:
21  // Constructor
22  LocalDirectSolver() = default;
23 
24  // Set or change local matrix
25  virtual void setMatrix(Teuchos::RCP<const Tpetra::RowMatrix<>> A) = 0;
26 
27  // Perform one-time initialization (e.g., symbolic factorization)
28  virtual void initialize() = 0;
29 
30  // Compute factorization (every time matrix changes)
31  virtual void compute() = 0;
32 
33  // Given RHS vector b, solve for x
34  virtual void solve(const Tpetra::MultiVector<>& b, Tpetra::MultiVector<>& x)
35  = 0;
36 };
37 
38 //---------------------------------------------------------------------------//
39 
40 } // namespace LinearSolvers
41 } // namespace VertexCFD
42 
43 #endif // VERTEXCFD_LINEARSOLVERS_LOCALDIRECTSOLVER_HPP
VertexCFD
Definition: tstMethodManufacturedSolutionBC.cpp:23
VertexCFD::LinearSolvers::LocalDirectSolver
Definition: VertexCFD_LinearSolvers_LocalDirectSolver.hpp:19