00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef TPETRA_IMPORTEXPORTDATA_HPP
00030 #define TPETRA_IMPORTEXPORTDATA_HPP
00031
00032 #include <Teuchos_RCP.hpp>
00033 #include <Teuchos_OrdinalTraits.hpp>
00034 #include <Teuchos_Array.hpp>
00035 #include <Teuchos_ArrayRCP.hpp>
00036 #include <Teuchos_Object.hpp>
00037
00038 namespace Tpetra {
00039
00040 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00041
00042 template<typename Ordinal> class Import;
00043 template<typename Ordinal> class Export;
00044 #endif
00045
00046 template<typename Ordinal>
00047 class ImportExportData : public Teuchos::Object {
00048 friend class Import<Ordinal>;
00049 friend class Export<Ordinal>;
00050 public:
00051 ImportExportData(const Map<Ordinal> & source, const Map<Ordinal> & target);
00052 ~ImportExportData();
00053
00054 protected:
00055
00056 Teuchos::Array<Ordinal> permuteToLIDs_;
00057 Teuchos::Array<Ordinal> permuteFromLIDs_;
00058 Teuchos::Array<Ordinal> remoteLIDs_;
00059 Teuchos::Array<Ordinal> remoteGIDs_;
00060 Teuchos::ArrayRCP<Ordinal> exportLIDs_;
00061 Teuchos::ArrayRCP<Ordinal> exportGIDs_;
00062 Teuchos::ArrayRCP<Ordinal> exportImageIDs_;
00063
00064
00065 Ordinal numSameIDs_;
00066 Ordinal numPermuteIDs_;
00067 Ordinal numRemoteIDs_;
00068 Ordinal numExportIDs_;
00069
00070
00071 const Map<Ordinal> source_;
00072 const Map<Ordinal> target_;
00073
00074
00075 Teuchos::RCP<const Platform<Ordinal> > platform_;
00076 Distributor<Ordinal> distributor_;
00077
00078 private:
00080 ImportExportData(ImportExportData<Ordinal> const& rhs);
00082 ImportExportData<Ordinal>& operator = (ImportExportData<Ordinal> const& rhs);
00083 };
00084
00085
00086 template <typename Ordinal>
00087 ImportExportData<Ordinal>::ImportExportData(const Map<Ordinal> & source, const Map<Ordinal> & target)
00088 : Teuchos::Object("Tpetra::ImportExportData")
00089 , numSameIDs_(Teuchos::OrdinalTraits<Ordinal>::zero())
00090 , numPermuteIDs_(Teuchos::OrdinalTraits<Ordinal>::zero())
00091 , numRemoteIDs_(Teuchos::OrdinalTraits<Ordinal>::zero())
00092 , numExportIDs_(Teuchos::OrdinalTraits<Ordinal>::zero())
00093 , source_(source)
00094 , target_(target)
00095 , platform_(source.getPlatform()->clone())
00096 , distributor_(platform_->createComm())
00097 {}
00098
00099 template <typename Ordinal>
00100 ImportExportData<Ordinal>::~ImportExportData()
00101 {}
00102
00103 }
00104
00105 #endif // TPETRA_IMPORTEXPORTDATA_HPP