00001 /* @HEADER@ */ 00002 // 00003 /* @HEADER@ */ 00004 00005 #ifndef PLAYA_EPETRAGHOSTIMPORTER_HPP 00006 #define PLAYA_EPETRAGHOSTIMPORTER_HPP 00007 00008 #include "PlayaDefs.hpp" 00009 #include "PlayaGhostImporter.hpp" 00010 #include "PlayaGhostView.hpp" 00011 #include "Epetra_Map.h" 00012 #include "Epetra_Import.h" 00013 #include "Teuchos_Utils.hpp" 00014 00015 00016 00017 namespace Playa 00018 { 00019 using namespace Teuchos; 00020 00021 00022 /** 00023 * Ghost element importer for Epetra vectors 00024 */ 00025 class EpetraGhostImporter : public GhostImporter<double> 00026 { 00027 public: 00028 /** */ 00029 EpetraGhostImporter(const RCP<const Epetra_Map>& epetraMap, 00030 int nGhost, 00031 const int* ghostElements); 00032 /** virtual dtor */ 00033 virtual ~EpetraGhostImporter() {;} 00034 00035 /** 00036 * Import the ghost elements of the given vector 00037 * as specified during construction of this object. 00038 */ 00039 virtual void importView(const Vector<double>& x, 00040 RCP<GhostView<double> >& ghostView) const ; 00041 00042 private: 00043 RCP<const Epetra_Map> localMap_; 00044 00045 RCP<const Epetra_Map> ghostMap_; 00046 00047 RCP<Epetra_Import> importer_; 00048 }; 00049 00050 } 00051 00052 #endif