Unverified Commit 83e8dfb6 authored by trilinos-autotester's avatar trilinos-autotester Committed by GitHub
Browse files

Merge Pull Request #5067 from trilinos/Trilinos/csiefer-1dd3edd5

Automatically Merged using Trilinos Pull Request AutoTester
PR Title: Xpetra: Redoing Import
PR Author: csiefer2
parents 14d29033 1dd3edd5
......@@ -67,12 +67,22 @@ SET(XPETRA_ETI_CPP_SOURCES "")
##
IF(${PACKAGE_NAME}_ENABLE_EXPLICIT_INSTANTIATION)
##
## XPETRA_SC_LO_GO_NO_ETI_CLASSES is a list of all class names which ETI
## XPETRA_(Something)_ETI_CLASSES is a list of all class names which ETI
## *.cpp files have to be generated for.
##
GLOBAL_SET(XPETRA_LO_GO_NO_ETI_CLASSES )
INCLUDE(Utils/ExplicitInstantiation/ETI_LO_GO_NO_classes.cmake)
XPETRA_PROCESS_ETI_TEMPLATE(
"${XPETRA_LO_GO_NO_ETI_CLASSES}"
Utils/ExplicitInstantiation/Xpetra_ETI_LO_GO_NO.tmpl
"Utils/ExplicitInstantiation/CLASS_FILE_NAME.cpp"
Xpetra_ETI_LO_GO_NO_SRC)
LIST(APPEND XPETRA_ETI_CPP_SOURCES ${Xpetra_ETI_LO_GO_NO_SRC})
GLOBAL_SET(XPETRA_SC_LO_GO_NO_ETI_CLASSES )
INCLUDE(Utils/ExplicitInstantiation/ETI_SC_LO_GO_NO_classes.cmake)
XPETRA_PROCESS_ETI_TEMPLATE(
"${XPETRA_SC_LO_GO_NO_ETI_CLASSES}"
Utils/ExplicitInstantiation/Xpetra_ETI_SC_LO_GO_NO.tmpl
......@@ -83,7 +93,6 @@ IF(${PACKAGE_NAME}_ENABLE_EXPLICIT_INSTANTIATION)
GLOBAL_SET(XPETRA_MULTIVECTOR_ETI_CLASSES )
INCLUDE(Utils/ExplicitInstantiation/ETI_MULTIVECTOR_classes.cmake)
XPETRA_PROCESS_ETI_TEMPLATE(
"${XPETRA_MULTIVECTOR_ETI_CLASSES}"
Utils/ExplicitInstantiation/Xpetra_ETI_MULTIVECTOR.tmpl
......@@ -130,6 +139,7 @@ ENDIF()
TRILINOS_CREATE_CLIENT_TEMPLATE_HEADERS(${CMAKE_CURRENT_SOURCE_DIR}/CrsMatrix NOSIERRABJAM)
TRILINOS_CREATE_CLIENT_TEMPLATE_HEADERS(${CMAKE_CURRENT_SOURCE_DIR}/MultiVector NOSIERRABJAM)
TRILINOS_CREATE_CLIENT_TEMPLATE_HEADERS(${CMAKE_CURRENT_SOURCE_DIR}/Vector NOSIERRABJAM)
TRILINOS_CREATE_CLIENT_TEMPLATE_HEADERS(${CMAKE_CURRENT_SOURCE_DIR}/Import NOSIERRABJAM)
#SET_AND_INC_DIRS(DIR ${CMAKE_CURRENT_SOURCE_DIR})
......
// @HEADER
//
// ***********************************************************************
//
// Xpetra: A linear algebra interface package
// Copyright 2012 Sandia Corporation
//
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
// the U.S. Government retains certain rights in this software.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// 3. Neither the name of the Corporation nor the names of the
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Questions? Contact
// Jonathan Hu (jhu@sandia.gov)
// Andrey Prokopenko (aprokop@sandia.gov)
// Ray Tuminaro (rstumin@sandia.gov)
//
// ***********************************************************************
//
// @HEADER
#ifndef XPETRA_TPETRAIMPORT_DECL_HPP
#define XPETRA_TPETRAIMPORT_DECL_HPP
/* this file is automatically generated - do not edit (see script/tpetra.py) */
#include "Xpetra_TpetraConfigDefs.hpp"
#include "Xpetra_Import.hpp"
#include "Xpetra_Exceptions.hpp"
#include "Xpetra_TpetraMap.hpp"
#include "Tpetra_Import.hpp"
namespace Xpetra {
template <class LocalOrdinal = Import<>::local_ordinal_type,
class GlobalOrdinal = typename Import<LocalOrdinal>::global_ordinal_type,
class Node = typename Import<LocalOrdinal, GlobalOrdinal>::node_type>
class TpetraImport
: public Import<LocalOrdinal, GlobalOrdinal, Node>
{
public:
//! The specialization of Map used by this class.
typedef Map<LocalOrdinal,GlobalOrdinal,Node> map_type;
//! @name Constructor/Destructor Methods
//@{
//! Construct an Import from the source and target Maps.
TpetraImport(const Teuchos::RCP< const map_type > &source, const Teuchos::RCP< const map_type > &target);
//! Constructor (with list of parameters).
TpetraImport(const Teuchos::RCP< const map_type > &source, const Teuchos::RCP< const map_type > &target, const Teuchos::RCP< Teuchos::ParameterList > &plist);
//! Copy constructor.
TpetraImport(const Import< LocalOrdinal, GlobalOrdinal, Node > &import);
//! Destructor.
~TpetraImport();
//@}
//! @name Import Attribute Methods
//@{
//! Number of initial identical IDs.
size_t getNumSameIDs() const;
//! Number of IDs to permute but not to communicate.
size_t getNumPermuteIDs() const;
//! List of local IDs in the source Map that are permuted.
ArrayView< const LocalOrdinal > getPermuteFromLIDs() const;
//! List of local IDs in the target Map that are permuted.
ArrayView< const LocalOrdinal > getPermuteToLIDs() const;
//! Number of entries not on the calling process.
size_t getNumRemoteIDs() const;
//! List of entries in the target Map to receive from other processes.
ArrayView< const LocalOrdinal > getRemoteLIDs() const;
//! Number of entries that must be sent by the calling process to other processes.
size_t getNumExportIDs() const;
//! List of entries in the source Map that will be sent to other processes.
ArrayView< const LocalOrdinal > getExportLIDs() const;
//! List of processes to which entries will be sent.
ArrayView< const int > getExportPIDs() const;
//! The Source Map used to construct this Import object.
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getSourceMap() const;
//! The Target Map used to construct this Import object.
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getTargetMap() const;
//@}
//! @name I/O Methods
//@{
//! Print the Import's data to the given output stream.
void print(std::ostream &os) const;
//@}
//! @name Xpetra specific
//@{
//! TpetraImport constructor to wrap a Tpetra::Import object
TpetraImport(const RCP<const Tpetra::Import< LocalOrdinal, GlobalOrdinal, Node > > &import);
RCP< const Tpetra::Import< LocalOrdinal, GlobalOrdinal, Node > > getTpetra_Import() const;
//@}
private:
RCP<const Tpetra::Import< LocalOrdinal, GlobalOrdinal, Node > > import_;
}; // TpetraImport class
// TODO: move that elsewhere
template <class LocalOrdinal, class GlobalOrdinal, class Node>
const Tpetra::Import<LocalOrdinal,GlobalOrdinal,Node> & toTpetra(const Import<LocalOrdinal,GlobalOrdinal,Node> &import) {
// TODO: throw exception
const TpetraImport<LocalOrdinal,GlobalOrdinal,Node> & tpetraImport = dynamic_cast<const TpetraImport<LocalOrdinal,GlobalOrdinal,Node> &>(import);
return *tpetraImport.getTpetra_Import();
}
template <class LocalOrdinal, class GlobalOrdinal, class Node>
RCP<const Import<LocalOrdinal,GlobalOrdinal,Node> > toXpetra(const RCP< const Tpetra::Import<LocalOrdinal,GlobalOrdinal,Node > >& import) {
if (!import.is_null())
return rcp(new TpetraImport<LocalOrdinal,GlobalOrdinal,Node>(import));
return Teuchos::null;
}
} // Xpetra namespace
#endif // XPETRA_TPETRAIMPORT_HPP
......@@ -43,14 +43,12 @@
// ***********************************************************************
//
// @HEADER
#ifndef XPETRA_TPETRAIMPORT_HPP
#define XPETRA_TPETRAIMPORT_HPP
/* this file is automatically generated - do not edit (see script/tpetra.py) */
#ifndef XPETRA_TPETRAIMPORT_DEF_HPP
#define XPETRA_TPETRAIMPORT_DEF_HPP
#include "Xpetra_TpetraConfigDefs.hpp"
#include "Xpetra_Import.hpp"
#include "Xpetra_TpetraImport_decl.hpp"
#include "Xpetra_Exceptions.hpp"
#include "Xpetra_TpetraMap.hpp"
......@@ -58,107 +56,78 @@
namespace Xpetra {
// TODO: move that elsewhere
template <class LocalOrdinal, class GlobalOrdinal, class Node>
const Tpetra::Import<LocalOrdinal,GlobalOrdinal,Node> & toTpetra(const Import<LocalOrdinal,GlobalOrdinal,Node> &);
template <class LocalOrdinal, class GlobalOrdinal, class Node>
RCP<const Import<LocalOrdinal,GlobalOrdinal,Node> > toXpetra(const RCP<const Tpetra::Import<LocalOrdinal,GlobalOrdinal,Node> > &import);
//
template <class LocalOrdinal = Import<>::local_ordinal_type,
class GlobalOrdinal = typename Import<LocalOrdinal>::global_ordinal_type,
class Node = typename Import<LocalOrdinal, GlobalOrdinal>::node_type>
class TpetraImport
: public Import<LocalOrdinal, GlobalOrdinal, Node>
{
public:
//! The specialization of Map used by this class.
typedef Map<LocalOrdinal,GlobalOrdinal,Node> map_type;
//! @name Constructor/Destructor Methods
//@{
//! Construct an Import from the source and target Maps.
TpetraImport(const Teuchos::RCP< const map_type > &source, const Teuchos::RCP< const map_type > &target)
: import_(Teuchos::rcp(new Tpetra::Import< LocalOrdinal, GlobalOrdinal, Node >(toTpetra(source), toTpetra(target)))) { }
//! Constructor (with list of parameters).
TpetraImport(const Teuchos::RCP< const map_type > &source, const Teuchos::RCP< const map_type > &target, const Teuchos::RCP< Teuchos::ParameterList > &plist)
: import_(Teuchos::rcp(new Tpetra::Import< LocalOrdinal, GlobalOrdinal, Node >(toTpetra(source), toTpetra(target), plist))) { }
//! Copy constructor.
TpetraImport(const Import< LocalOrdinal, GlobalOrdinal, Node > &import)
: import_(Teuchos::rcp(new Tpetra::Import< LocalOrdinal, GlobalOrdinal, Node >(toTpetra(import)))) { }
//! Destructor.
~TpetraImport() { }
//@}
//! @name Import Attribute Methods
//@{
//! Number of initial identical IDs.
size_t getNumSameIDs() const { XPETRA_MONITOR("TpetraImport::getNumSameIDs"); return import_->getNumSameIDs(); }
//! Number of IDs to permute but not to communicate.
size_t getNumPermuteIDs() const { XPETRA_MONITOR("TpetraImport::getNumPermuteIDs"); return import_->getNumPermuteIDs(); }
//! List of local IDs in the source Map that are permuted.
ArrayView< const LocalOrdinal > getPermuteFromLIDs() const { XPETRA_MONITOR("TpetraImport::getPermuteFromLIDs"); return import_->getPermuteFromLIDs(); }
//! List of local IDs in the target Map that are permuted.
ArrayView< const LocalOrdinal > getPermuteToLIDs() const { XPETRA_MONITOR("TpetraImport::getPermuteToLIDs"); return import_->getPermuteToLIDs(); }
template<class LocalOrdinal, class GlobalOrdinal, class Node>
TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::TpetraImport(const Teuchos::RCP< const map_type > &source, const Teuchos::RCP< const map_type > &target):import_(Teuchos::rcp(new Tpetra::Import< LocalOrdinal, GlobalOrdinal, Node >(toTpetra(source), toTpetra(target))))
{ }
//! Number of entries not on the calling process.
size_t getNumRemoteIDs() const { XPETRA_MONITOR("TpetraImport::getNumRemoteIDs"); return import_->getNumRemoteIDs(); }
template<class LocalOrdinal, class GlobalOrdinal, class Node>
TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::TpetraImport(const Teuchos::RCP< const map_type > &source, const Teuchos::RCP< const map_type > &target, const Teuchos::RCP< Teuchos::ParameterList > &plist):import_(Teuchos::rcp(new Tpetra::Import< LocalOrdinal, GlobalOrdinal, Node >(toTpetra(source), toTpetra(target), plist)))
{ }
//! List of entries in the target Map to receive from other processes.
ArrayView< const LocalOrdinal > getRemoteLIDs() const { XPETRA_MONITOR("TpetraImport::getRemoteLIDs"); return import_->getRemoteLIDs(); }
template<class LocalOrdinal, class GlobalOrdinal, class Node>
TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::TpetraImport(const Import< LocalOrdinal, GlobalOrdinal, Node > &import):import_(Teuchos::rcp(new Tpetra::Import< LocalOrdinal, GlobalOrdinal, Node >(toTpetra(import))))
{ }
//! Number of entries that must be sent by the calling process to other processes.
size_t getNumExportIDs() const { XPETRA_MONITOR("TpetraImport::getNumExportIDs"); return import_->getNumExportIDs(); }
template<class LocalOrdinal, class GlobalOrdinal, class Node>
TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::~TpetraImport()
{ }
//! List of entries in the source Map that will be sent to other processes.
ArrayView< const LocalOrdinal > getExportLIDs() const { XPETRA_MONITOR("TpetraImport::getExportLIDs"); return import_->getExportLIDs(); }
template<class LocalOrdinal, class GlobalOrdinal, class Node>
size_t TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::getNumSameIDs() const
{ XPETRA_MONITOR("TpetraImport::getNumSameIDs"); return import_->getNumSameIDs(); }
//! List of processes to which entries will be sent.
ArrayView< const int > getExportPIDs() const { XPETRA_MONITOR("TpetraImport::getExportPIDs"); return import_->getExportPIDs(); }
template<class LocalOrdinal, class GlobalOrdinal, class Node>
size_t TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::getNumPermuteIDs() const
{ XPETRA_MONITOR("TpetraImport::getNumPermuteIDs"); return import_->getNumPermuteIDs(); }
//! The Source Map used to construct this Import object.
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getSourceMap() const { XPETRA_MONITOR("TpetraImport::getSourceMap"); return toXpetra(import_->getSourceMap()); }
template<class LocalOrdinal, class GlobalOrdinal, class Node>
ArrayView< const LocalOrdinal > TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::getPermuteFromLIDs() const
{ XPETRA_MONITOR("TpetraImport::getPermuteFromLIDs"); return import_->getPermuteFromLIDs(); }
//! The Target Map used to construct this Import object.
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getTargetMap() const { XPETRA_MONITOR("TpetraImport::getTargetMap"); return toXpetra(import_->getTargetMap()); }
template<class LocalOrdinal, class GlobalOrdinal, class Node>
ArrayView< const LocalOrdinal > TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::getPermuteToLIDs() const
{ XPETRA_MONITOR("TpetraImport::getPermuteToLIDs"); return import_->getPermuteToLIDs(); }
//@}
template<class LocalOrdinal, class GlobalOrdinal, class Node>
size_t TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::getNumRemoteIDs() const
{ XPETRA_MONITOR("TpetraImport::getNumRemoteIDs"); return import_->getNumRemoteIDs(); }
//! @name I/O Methods
//@{
template<class LocalOrdinal, class GlobalOrdinal, class Node>
ArrayView< const LocalOrdinal > TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::getRemoteLIDs() const
{ XPETRA_MONITOR("TpetraImport::getRemoteLIDs"); return import_->getRemoteLIDs(); }
//! Print the Import's data to the given output stream.
void print(std::ostream &os) const { XPETRA_MONITOR("TpetraImport::print"); import_->print(os); }
template<class LocalOrdinal, class GlobalOrdinal, class Node>
size_t TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::getNumExportIDs() const
{ XPETRA_MONITOR("TpetraImport::getNumExportIDs"); return import_->getNumExportIDs(); }
//@}
template<class LocalOrdinal, class GlobalOrdinal, class Node>
ArrayView< const LocalOrdinal > TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::getExportLIDs() const
{ XPETRA_MONITOR("TpetraImport::getExportLIDs"); return import_->getExportLIDs(); }
//! @name Xpetra specific
//@{
template<class LocalOrdinal, class GlobalOrdinal, class Node>
ArrayView< const int > TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::getExportPIDs() const
{ XPETRA_MONITOR("TpetraImport::getExportPIDs"); return import_->getExportPIDs(); }
//! TpetraImport constructor to wrap a Tpetra::Import object
TpetraImport(const RCP<const Tpetra::Import< LocalOrdinal, GlobalOrdinal, Node > > &import) : import_(import) { }
template<class LocalOrdinal, class GlobalOrdinal, class Node>
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::getSourceMap() const
{ XPETRA_MONITOR("TpetraImport::getSourceMap"); return toXpetra(import_->getSourceMap()); }
RCP< const Tpetra::Import< LocalOrdinal, GlobalOrdinal, Node > > getTpetra_Import() const { return import_; }
template<class LocalOrdinal, class GlobalOrdinal, class Node>
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::getTargetMap() const
{ XPETRA_MONITOR("TpetraImport::getTargetMap"); return toXpetra(import_->getTargetMap()); }
//@}
template<class LocalOrdinal, class GlobalOrdinal, class Node>
void TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::print(std::ostream &os) const
{ XPETRA_MONITOR("TpetraImport::print"); import_->print(os); }
private:
template<class LocalOrdinal, class GlobalOrdinal, class Node>
TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::TpetraImport(const RCP<const Tpetra::Import< LocalOrdinal, GlobalOrdinal, Node > > &import) : import_(import)
{ }
RCP<const Tpetra::Import< LocalOrdinal, GlobalOrdinal, Node > > import_;
template<class LocalOrdinal, class GlobalOrdinal, class Node>
RCP< const Tpetra::Import< LocalOrdinal, GlobalOrdinal, Node > > TpetraImport<LocalOrdinal,GlobalOrdinal,Node>::getTpetra_Import() const
{ return import_; }
}; // TpetraImport class
#ifdef HAVE_XPETRA_EPETRA
......@@ -364,24 +333,6 @@ namespace Xpetra {
#endif // HAVE_XPETRA_EPETRA
// TODO: move that elsewhere
template <class LocalOrdinal, class GlobalOrdinal, class Node>
const Tpetra::Import<LocalOrdinal,GlobalOrdinal,Node> & toTpetra(const Import<LocalOrdinal,GlobalOrdinal,Node> &import) {
// TODO: throw exception
const TpetraImport<LocalOrdinal,GlobalOrdinal,Node> & tpetraImport = dynamic_cast<const TpetraImport<LocalOrdinal,GlobalOrdinal,Node> &>(import);
return *tpetraImport.getTpetra_Import();
}
template <class LocalOrdinal, class GlobalOrdinal, class Node>
RCP<const Import<LocalOrdinal,GlobalOrdinal,Node> > toXpetra(const RCP< const Tpetra::Import<LocalOrdinal,GlobalOrdinal,Node > >& import) {
if (!import.is_null())
return rcp(new TpetraImport<LocalOrdinal,GlobalOrdinal,Node>(import));
return Teuchos::null;
}
} // Xpetra namespace
#define XPETRA_TPETRAIMPORT_SHORT
#endif // XPETRA_TPETRAIMPORT_HPP
#endif
......@@ -15,5 +15,5 @@
##TpetraBlockMap
#TpetraCrsGraph
#TpetraExport
#TpetraImport
TpetraImport
#TpetraMap
# This file is automatically generated by xpetra/src/Utils/ExplicitInstantiation/genClassLists.sh
APPEND_SET(XPETRA_LO_GO_NO_ETI_CLASSES Xpetra::TpetraImport )
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment