/[escript]/branches/trilinos_from_5897/trilinoswrap/src/TrilinosMatrixAdapter.h
ViewVC logotype

Diff of /branches/trilinos_from_5897/trilinoswrap/src/TrilinosMatrixAdapter.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6103 by caltinay, Wed Mar 2 04:13:26 2016 UTC revision 6104 by caltinay, Wed Mar 30 06:01:20 2016 UTC
# Line 38  public: Line 38  public:
38      */      */
39      TrilinosMatrixAdapter(escript::JMPI mpiInfo, int blocksize,      TrilinosMatrixAdapter(escript::JMPI mpiInfo, int blocksize,
40                            const escript::FunctionSpace& fs,                            const escript::FunctionSpace& fs,
41                            const_TrilinosGraph_ptr graph);                            const_TrilinosGraph_ptr graph, bool isComplex=false);
42    
43      virtual ~TrilinosMatrixAdapter() {}      virtual ~TrilinosMatrixAdapter() {}
44    
45      virtual void nullifyRowsAndCols(escript::Data& row_q,      virtual void nullifyRowsAndCols(escript::Data& row_q,
46                                      escript::Data& col_q,                                      escript::Data& col_q,
47                                      double mdv);                                        double mdv);  
48      
49      virtual void saveMM(const std::string& filename) const;      virtual void saveMM(const std::string& filename) const;
50      virtual void saveHB(const std::string& filename) const;      virtual void saveHB(const std::string& filename) const;
51      virtual void resetValues();      virtual void resetValues();
52    
53      /// notifies the matrix that changes are about to happen.      /// notifies the matrix that changes are about to happen.
54      void resumeFill() { mat->resumeFill(); }      inline void resumeFill()
55        {
56           if (m_isComplex)
57               cmat->resumeFill();
58           else
59               mat->resumeFill();
60        }
61    
62      /// notifies the matrix that a set of changes has occured.      /// notifies the matrix that a set of changes has occured.
63      void fillComplete(bool localOnly = true);      void fillComplete(bool localOnly = true);
64    
65      void add(const std::vector<LO>& rowIndex, const std::vector<double>& array);      template<typename ST>
66        void add(const std::vector<LO>& rowIndex, const std::vector<ST>& array);
67    
68      inline int getBlockSize() const { return getRowBlockSize(); }      inline int getBlockSize() const { return getRowBlockSize(); }
69    
70  private:  private:
     Teuchos::RCP<OpType> createPreconditioner(  
                                         const escript::SolverBuddy& sb) const;  
   
     Teuchos::RCP<SolverType> createSolver(const escript::SolverBuddy& sb) const;  
   
     Teuchos::RCP<DirectSolverType> createDirectSolver(  
                                       const escript::SolverBuddy& sb,  
                                       Teuchos::RCP<VectorType> X,  
                                       Teuchos::RCP<const VectorType> B) const;  
   
71      virtual void setToSolution(escript::Data& out, escript::Data& in,      virtual void setToSolution(escript::Data& out, escript::Data& in,
72                                 boost::python::object& options) const;                                 boost::python::object& options) const;
73    
74      virtual void ypAx(escript::Data& y, escript::Data& x) const;      virtual void ypAx(escript::Data& y, escript::Data& x) const;
75    
76        template<typename ST>
77        void addImpl(Teuchos::RCP<MatrixType<ST> > A,
78                     const std::vector<LO>& rowIdx, const std::vector<ST>& array);
79    
80      escript::JMPI m_mpiInfo;      escript::JMPI m_mpiInfo;
81      Teuchos::RCP<MatrixType> mat;      bool m_isComplex;
82        Teuchos::RCP<RealMatrix> mat;
83        Teuchos::RCP<ComplexMatrix> cmat;
84      Teuchos::RCP<const ImportType> importer;      Teuchos::RCP<const ImportType> importer;
85  };  };
86    

Legend:
Removed from v.6103  
changed lines
  Added in v.6104

  ViewVC Help
Powered by ViewVC 1.1.26