FEI Version of the Day
fei_Trilinos_Helpers.hpp
00001 /*--------------------------------------------------------------------*/
00002 /*    Copyright 2006 Sandia Corporation.                              */
00003 /*    Under the terms of Contract DE-AC04-94AL85000, there is a       */
00004 /*    non-exclusive license for use of this work by or on behalf      */
00005 /*    of the U.S. Government.  Export of this program may require     */
00006 /*    a license from the United States Government.                    */
00007 /*--------------------------------------------------------------------*/
00008 
00009 #ifndef _fei_Trilinos_Helpers_hpp_
00010 #define _fei_Trilinos_Helpers_hpp_
00011 
00012 #include "fei_trilinos_macros.hpp"
00013 #include "fei_fwd.hpp"
00014 
00015 #include <fei_Include_Trilinos.hpp>
00016 
00017 #include <fei_mpi.h>
00018 #include <fei_SharedPtr.hpp>
00019 
00020 #include <fei_LinearProblemManager.hpp>
00021 #include <fei_VectorSpace.hpp>
00022 #include <fei_Reducer.hpp>
00023 #include <fei_MatrixGraph.hpp>
00024 
00025 namespace Trilinos_Helpers {
00026 
00027 #ifdef HAVE_FEI_EPETRA
00028 
00034   Epetra_Map create_Epetra_Map(MPI_Comm comm,
00035                                const std::vector<int>& local_eqns);
00036 
00042   Epetra_BlockMap
00043     create_Epetra_BlockMap(const fei::SharedPtr<fei::VectorSpace>& vecspace);
00044 
00045   Epetra_CrsGraph
00046     create_Epetra_CrsGraph(const fei::SharedPtr<fei::MatrixGraph>& matgraph,
00047                            bool blockEntries,
00048                            bool orderRowsWithLocalColsFirst=false);
00049 
00050   fei::SharedPtr<fei::Matrix>
00051     create_from_Epetra_Matrix(fei::SharedPtr<fei::MatrixGraph> matrixGraph,
00052                               bool blockEntryMatrix,
00053                               fei::SharedPtr<fei::Reducer> reducer,
00054                               bool orderRowsWithLocalColsFirst=false);
00055 
00056   fei::SharedPtr<fei::Matrix>
00057     create_from_LPM_EpetraBasic(fei::SharedPtr<fei::MatrixGraph> matrixGraph,
00058                                  bool blockEntryMatrix,
00059                                  fei::SharedPtr<fei::Reducer> reducer,
00060                                  fei::SharedPtr<fei::LinearProblemManager>
00061                                    lpm_epetrabasic);
00062 #endif
00063 
00067   void copy_parameterset(const fei::ParameterSet& paramset,
00068                          Teuchos::ParameterList& paramlist);
00069 
00073   void copy_parameterlist(const Teuchos::ParameterList& paramlist,
00074                           fei::ParameterSet& paramset);
00075 
00076 #ifdef HAVE_FEI_EPETRA
00077 
00080   Epetra_MultiVector*
00081     get_Epetra_MultiVector(fei::Vector* feivec, bool soln_vec);
00082 
00086   Epetra_VbrMatrix* get_Epetra_VbrMatrix(fei::Matrix* feimat);
00087 
00091   Epetra_CrsMatrix* get_Epetra_CrsMatrix(fei::Matrix* feimat);
00092 
00097   void get_Epetra_pointers(fei::SharedPtr<fei::Matrix> feiA,
00098                            fei::SharedPtr<fei::Vector> feix,
00099                            fei::SharedPtr<fei::Vector> feib,
00100                            Epetra_CrsMatrix*& crsA,
00101                            Epetra_Operator*& opA,
00102                            Epetra_MultiVector*& x,
00103                            Epetra_MultiVector*& b);
00104 
00106   int zero_Epetra_VbrMatrix(Epetra_VbrMatrix* mat);
00107 
00108 #endif // HAVE_FEI_EPETRA
00109 
00110 }//namespace Trilinos_Helpers
00111 
00112 #endif // _Trilinos_Helpers_hpp_
00113 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends