43#include "Thyra_DefaultSpmdVectorSpace.hpp"
44#include "Thyra_DefaultSpmdMultiVector.hpp"
45#include "Thyra_DefaultSpmdVector.hpp"
46#include "Thyra_DetachedVectorView.hpp"
47#include "Thyra_DetachedMultiVectorView.hpp"
48#include "Thyra_VectorSpaceFactoryBase.hpp"
49#include "Thyra_ProductVectorSpaceBase.hpp"
58#include "Epetra_Map.h"
59#include "Epetra_Comm.h"
60#include "Epetra_SerialComm.h"
62# include "Epetra_MpiComm.h"
64#include "Epetra_MultiVector.h"
65#include "Epetra_Vector.h"
76unwrapSingleProductVectorSpace(
81 using Teuchos::rcp_dynamic_cast;
83 const RCP<const ProductVectorSpaceBase<double> > pvs =
84 rcp_dynamic_cast<const ProductVectorSpaceBase<double> >(vs_in);
87 return pvs->getBlock(0);
105 using Teuchos::rcp_dynamic_cast;
106 using Teuchos::set_extra_data;
133 return Teuchos::null;
148 "create_VectorSpace::initialize(...): Error!" );
154 Teuchos::set_extra_data(
epetra_map,
"epetra_map", inoutArg(
comm));
155 const Ordinal localSubDim =
epetra_map->NumMyElements();
170 Teuchos::set_extra_data(
epetra_map,
"epetra_map", inoutArg(
vs) );
182 using Teuchos::rcp_dynamic_cast;
209 return Teuchos::null;
223 Teuchos::inOutArg(
v) );
245 return Teuchos::null;
259 Teuchos::inOutArg(
v) );
271 using Teuchos::rcp_dynamic_cast;
290 return Teuchos::null;
291 if ( is_null(domain) ) {
315 epetra_mv,
"Epetra_MultiVector", Teuchos::inOutArg(
mv) );
327 using Teuchos::rcp_dynamic_cast;
346 return Teuchos::null;
347 if ( is_null(domain) ) {
371 epetra_mv,
"Epetra_MultiVector", Teuchos::inOutArg(
mv) );
381 using Teuchos::ptrFromRef;
382 using Teuchos::ptr_dynamic_cast;
402 "SPMD std::vector space has a communicator that is "
403 "neither a serial comm nor an MPI comm");
415 "SPMD std::vector space has a communicator that is "
416 "neither a serial comm nor an MPI comm");
423 "null communicator created");
436 using Teuchos::rcpFromRef;
437 using Teuchos::rcpFromPtr;
438 using Teuchos::rcp_dynamic_cast;
439 using Teuchos::ptrFromRef;
440 using Teuchos::ptr_dynamic_cast;
451 "Error, the concrete VectorSpaceBase object of type "
453 " SpmdVectorSpaceBase or the ProductVectorSpaceBase interfaces!" );
483#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
498#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
531 "Error! No RCP Epetra_Map attached to the input vector space RCP, "
532 "and the input comm RCP is null.\n");
543 using Teuchos::get_optional_extra_data;
548 "Thyra::get_Epetra_Vector(map,v)", *
epetra_vs, *
v->space() );
571 const Ordinal localOffset = (
mpi_vs ?
mpi_vs->localOffset() : 0 );
572 const Ordinal localSubDim = (
mpi_vs ?
mpi_vs->localSubDim() :
vs.dim() );
590 ,Range1D(localOffset,localOffset+localSubDim-1)
601 ,
const_cast<double*
>(
emvv->values())
609 Teuchos::set_extra_data(
emvv,
"emvv", Teuchos::inOutArg(
epetra_v),
638 "Error! No RCP Epetra_Vector attached to the input vector RCP, "
639 "and the input map RCP is null.\n");
650 using Teuchos::get_optional_extra_data;
655 "Thyra::get_Epetra_Vector(map,v)", *
epetra_vs, *
v->space() );
681 const Ordinal localOffset = (
mpi_vs ?
mpi_vs->localOffset() : 0 );
682 const Ordinal localSubDim = (
mpi_vs ?
mpi_vs->localSubDim() :
vs.dim() );
689 ,Range1D(localOffset,localOffset+localSubDim-1)
700 ,
const_cast<double*
>(
evv->values())
708 Teuchos::set_extra_data(
evv,
"evv", Teuchos::inOutArg(
epetra_v),
737 "Error! No RCP to Epetra_Vector attached to the input vector RCP, "
738 "and the input map RCP is null.\n");
749 using Teuchos::get_optional_extra_data;
754 "Thyra::get_Epetra_MultiVector(map,mv)", *
epetra_vs, *
mv->range() );
762 mv,
"Epetra_MultiVector");
777 const Ordinal localOffset = (
mpi_vs ?
mpi_vs->localOffset() : 0 );
778 const Ordinal localSubDim = (
mpi_vs ?
mpi_vs->localSubDim() :
vs.dim() );
793 ,Range1D(localOffset,localOffset+localSubDim-1)
803 ,
const_cast<double*
>(
emmvv->values())
814 Teuchos::set_extra_data(
emmvv,
"emmvv", Teuchos::inOutArg(
epetra_mv),
817 Teuchos::set_extra_data(
mv,
"mv", Teuchos::inOutArg(
epetra_mv) );
836 mv,
"Epetra_MultiVector");
845 "Error! No RCP to Epetra_MultiVector attached to the input vector RCP, "
846 "and the input map RCP is null.\n");
857 using Teuchos::get_optional_extra_data;
864 "Thyra::get_Epetra_MultiVector(map,mv)",
875 mv,
"Epetra_MultiVector" );
888 const Ordinal localOffset = (
mpi_vs ?
mpi_vs->localOffset() : 0 );
889 const Ordinal localSubDim = (
mpi_vs ?
mpi_vs->localSubDim() :
vs.dim() );
896 ,Range1D(localOffset,localOffset+localSubDim-1)
907 ,
const_cast<double*
>(
emvv->values())
918 Teuchos::set_extra_data(
emvv,
"emvv", Teuchos::inOutArg(
epetra_mv),
921 Teuchos::set_extra_data(
mv,
"mv", Teuchos::inOutArg(
epetra_mv) );
941 mv,
"Epetra_MultiVector");
950 "Error! No RCP to Epetra_MultiVector attached to the input vector RCP, "
951 "and the input map RCP is null.\n");
962 using Teuchos::rcpWithEmbeddedObj;
963 using Teuchos::ptrFromRef;
964 using Teuchos::ptr_dynamic_cast;
965 using Teuchos::outArg;
976 return rcpWithEmbeddedObj(
991 using Teuchos::rcpWithEmbeddedObj;
992 using Teuchos::ptrFromRef;
993 using Teuchos::ptr_dynamic_cast;
994 using Teuchos::outArg;
1005 return rcpWithEmbeddedObj(
bool is_null(const RCP< T > &p)
const RCP< T > & assert_not_null() const
RCP< const Epetra_Comm > get_Epetra_Comm(const Teuchos::Comm< Ordinal > &comm)
Get (or create) and Epetra_Comm given a Teuchos::Comm object.
RCP< VectorBase< double > > create_Vector(const RCP< Epetra_Vector > &epetra_v, const RCP< const VectorSpaceBase< double > > &space=Teuchos::null)
Create a non-const VectorBase object from a non-const Epetra_Vector object.
RCP< MultiVectorBase< double > > create_MultiVector(const RCP< Epetra_MultiVector > &epetra_mv, const RCP< const VectorSpaceBase< double > > &range=Teuchos::null, const RCP< const VectorSpaceBase< double > > &domain=Teuchos::null)
Create a non-const MultiVectorBase object from a non-const Epetra_MultiVector object.
RCP< const Teuchos::Comm< Ordinal > > create_Comm(const RCP< const Epetra_Comm > &epetraComm)
Given an Epetra_Comm object, return an equivalent Teuchos::Comm object.
RCP< const VectorSpaceBase< double > > create_VectorSpace(const RCP< const Epetra_Map > &epetra_map)
Create an VectorSpaceBase object given an Epetra_Map object.
RCP< Epetra_Vector > get_Epetra_Vector(const Epetra_Map &map, const RCP< VectorBase< double > > &v)
Get a non-const Epetra_Vector view from a non-const VectorBase object if possible.
RCP< const Epetra_Map > get_Epetra_Map(const VectorSpaceBase< double > &vs, const RCP< const Epetra_Comm > &comm)
Get (or create) an Epetra_Map object given an VectorSpaceBase object an optionally an extra Epetra_Co...
RCP< Epetra_MultiVector > get_Epetra_MultiVector(const Epetra_Map &map, const RCP< MultiVectorBase< double > > &mv)
Get a non-const Epetra_MultiVector view from a non-const MultiVectorBase object if possible.
RCP< const VectorSpaceBase< double > > create_LocallyReplicatedVectorSpace(const RCP< const VectorSpaceBase< double > > &parentSpace, const int dim)
Create a VectorSpaceBase object that creates locally replicated vector objects.
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
#define TEUCHOS_ASSERT_EQUALITY(val1, val2)
bool nonnull(const boost::shared_ptr< T > &p)
TypeTo as(const TypeFrom &t)
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
TEUCHOSCORE_LIB_DLL_EXPORT std::string demangleName(const std::string &mangledName)