Thyra Package Browser (Single Doxygen Collection) Version of the Day
Private Member Functions | Private Attributes
Thyra::DefaultSpmdMultiVector< Scalar > Class Template Reference

Efficient concrete implementation subclass for SPMD multi-vectors. More...

#include <Thyra_DefaultSpmdMultiVector_decl.hpp>

Inheritance diagram for Thyra::DefaultSpmdMultiVector< Scalar >:
Inheritance graph
[legend]

List of all members.

Private Member Functions

ArrayRCP< Scalar > createContiguousCopy (const ArrayView< const int > &cols) const

Private Attributes

RCP< const SpmdVectorSpaceBase
< Scalar > > 
spmdRangeSpace_
RCP< const
ScalarProdVectorSpaceBase
< Scalar > > 
domainSpace_
ArrayRCP< Scalar > localValues_
Ordinal leadingDim_

Constructors/initializers/accessors

 DefaultSpmdMultiVector ()
 Construct to uninitialized.
 DefaultSpmdMultiVector (const RCP< const SpmdVectorSpaceBase< Scalar > > &spmdRangeSpace, const RCP< const ScalarProdVectorSpaceBase< Scalar > > &domainSpace)
 Calls initialize()
 DefaultSpmdMultiVector (const RCP< const SpmdVectorSpaceBase< Scalar > > &spmdRangeSpace, const RCP< const ScalarProdVectorSpaceBase< Scalar > > &domainSpace, const ArrayRCP< Scalar > &localValues, const Ordinal leadingDim=-1)
 Calls initialize()
void initialize (const RCP< const SpmdVectorSpaceBase< Scalar > > &spmdRangeSpace, const RCP< const ScalarProdVectorSpaceBase< Scalar > > &domainSpace)
 Initialize only with vector spaces where storage is allocated internally..
void initialize (const RCP< const SpmdVectorSpaceBase< Scalar > > &spmdRangeSpace, const RCP< const ScalarProdVectorSpaceBase< Scalar > > &domainSpace, const ArrayRCP< Scalar > &localValues, const Ordinal leadingDim=-1)
 Initialize using externally allocated storage.
void uninitialize (RCP< const SpmdVectorSpaceBase< Scalar > > *spmdRangeSpace=NULL, RCP< const ScalarProdVectorSpaceBase< Scalar > > *domainSpace=NULL, ArrayRCP< Scalar > *localValues=NULL, Ordinal *leadingDim=NULL)
 Set to an uninitialized state.
RCP< const
ScalarProdVectorSpaceBase
< Scalar > > 
domainScalarProdVecSpc () const
 

Overridden public functions from SpmdMultiVectorBase

RCP< const SpmdVectorSpaceBase
< Scalar > > 
spmdSpace () const
 

Overridden protected functions from MultiVectorBase

RCP< VectorBase< Scalar > > nonconstColImpl (Ordinal j)
 
RCP< const MultiVectorBase
< Scalar > > 
contigSubViewImpl (const Range1D &colRng) const
 
RCP< MultiVectorBase< Scalar > > nonconstContigSubViewImpl (const Range1D &colRng)
 
RCP< const MultiVectorBase
< Scalar > > 
nonContigSubViewImpl (const ArrayView< const int > &cols) const
 
RCP< MultiVectorBase< Scalar > > nonconstNonContigSubViewImpl (const ArrayView< const int > &cols)
 

Overridden protected functions from SpmdMultiVectorBase

void getNonconstLocalDataImpl (const Ptr< ArrayRCP< Scalar > > &localValues, const Ptr< Ordinal > &leadingDim)
 
void getLocalDataImpl (const Ptr< ArrayRCP< const Scalar > > &localValues, const Ptr< Ordinal > &leadingDim) const
 

Detailed Description

template<class Scalar>
class Thyra::DefaultSpmdMultiVector< Scalar >

Efficient concrete implementation subclass for SPMD multi-vectors.

This subclass provides a very efficient and very general concrete implementation of a Thyra::MultiVectorBase object.

Objects of this type generally should not be constructed directly by a client but instead by using the concrete vector space subclass Thyra::DefaultSpmdVectorSpace and using the function Thyra::createMembers().

The storage type can be anything since a Teuchos::ArrayRCP is used to pass in the local values pointer into the constructor and initialize().

Definition at line 55 of file Thyra_DefaultSpmdMultiVector_decl.hpp.


Constructor & Destructor Documentation

template<class Scalar >
Thyra::DefaultSpmdMultiVector< Scalar >::DefaultSpmdMultiVector ( )

Construct to uninitialized.

Definition at line 127 of file Thyra_DefaultSpmdMultiVector_def.hpp.

template<class Scalar >
Thyra::DefaultSpmdMultiVector< Scalar >::DefaultSpmdMultiVector ( const RCP< const SpmdVectorSpaceBase< Scalar > > &  spmdRangeSpace,
const RCP< const ScalarProdVectorSpaceBase< Scalar > > &  domainSpace 
)

Calls initialize()

Definition at line 133 of file Thyra_DefaultSpmdMultiVector_def.hpp.

template<class Scalar >
Thyra::DefaultSpmdMultiVector< Scalar >::DefaultSpmdMultiVector ( const RCP< const SpmdVectorSpaceBase< Scalar > > &  spmdRangeSpace,
const RCP< const ScalarProdVectorSpaceBase< Scalar > > &  domainSpace,
const ArrayRCP< Scalar > &  localValues,
const Ordinal  leadingDim = -1 
)

Calls initialize()

Definition at line 143 of file Thyra_DefaultSpmdMultiVector_def.hpp.


Member Function Documentation

template<class Scalar >
void Thyra::DefaultSpmdMultiVector< Scalar >::initialize ( const RCP< const SpmdVectorSpaceBase< Scalar > > &  spmdRangeSpace,
const RCP< const ScalarProdVectorSpaceBase< Scalar > > &  domainSpace 
)

Initialize only with vector spaces where storage is allocated internally..

Parameters:
spmdRangeSpace[in] Smart pointer to SpmdVectorSpaceBase object that defines the data distribution for spmdSpace() and range().
domainSpace[in] Smart pointer to VectorSpaceBase object that defines domain() space.

Preconditions:

  • spmdRangeSpace.get()!=NULL
  • domainSpace.get()!=NULL

Definition at line 155 of file Thyra_DefaultSpmdMultiVector_def.hpp.

template<class Scalar >
void Thyra::DefaultSpmdMultiVector< Scalar >::initialize ( const RCP< const SpmdVectorSpaceBase< Scalar > > &  spmdRangeSpace,
const RCP< const ScalarProdVectorSpaceBase< Scalar > > &  domainSpace,
const ArrayRCP< Scalar > &  localValues,
const Ordinal  leadingDim = -1 
)

Initialize using externally allocated storage.

Parameters:
spmdRangeSpace[in] Smart pointer to SpmdVectorSpaceBase object that defines the data distribution for spmdSpace() and range().
domainSpace[in] Smart pointer to VectorSpaceBase object that defines domain() space.
localValues[in] Smart pointer to beginning of Fortran-style column-major array that defines the local localValues in the multi-vector. This array must be at least of dimension spmdRangeSpace->localSubDim()*domainSpace->dim() and (&*localValues)[ i + j*leadingDim ] gives the local value of the zero-based entry (i,j) where i=0...spmdSpace()->localSubDim()-1 and j=0...domainSpace->dim()-1.
leadingDim[in] The leading dimension of the multi-vector. If -1, then is taken to be spmdRangeSpace->localSubDim().

Preconditions:

  • spmdRangeSpace.get()!=NULL
  • domainSpace.get()!=NULL
  • localValues.get()!=NULL
  • leadingDim >= spmdRangeSpace->localSubDim()

Definition at line 169 of file Thyra_DefaultSpmdMultiVector_def.hpp.

References is_null(), TEUCHOS_ASSERT, and TEUCHOS_ASSERT_INEQUALITY.

template<class Scalar >
void Thyra::DefaultSpmdMultiVector< Scalar >::uninitialize ( RCP< const SpmdVectorSpaceBase< Scalar > > *  spmdRangeSpace = NULL,
RCP< const ScalarProdVectorSpaceBase< Scalar > > *  domainSpace = NULL,
ArrayRCP< Scalar > *  localValues = NULL,
Ordinal leadingDim = NULL 
)

Set to an uninitialized state.

Postconditions:

Definition at line 195 of file Thyra_DefaultSpmdMultiVector_def.hpp.

References Teuchos::null.

template<class Scalar >
RCP< const ScalarProdVectorSpaceBase< Scalar > > Thyra::DefaultSpmdMultiVector< Scalar >::domainScalarProdVecSpc ( ) const [virtual]
template<class Scalar >
RCP< const SpmdVectorSpaceBase< Scalar > > Thyra::DefaultSpmdMultiVector< Scalar >::spmdSpace ( ) const [virtual]
template<class Scalar >
RCP< VectorBase< Scalar > > Thyra::DefaultSpmdMultiVector< Scalar >::nonconstColImpl ( Ordinal  j) [protected, virtual]

Implements Thyra::MultiVectorBase< Scalar >.

Definition at line 246 of file Thyra_DefaultSpmdMultiVector_def.hpp.

References Teuchos::rcp().

template<class Scalar >
RCP< const MultiVectorBase< Scalar > > Thyra::DefaultSpmdMultiVector< Scalar >::contigSubViewImpl ( const Range1D colRng) const [protected, virtual]
template<class Scalar >
RCP< MultiVectorBase< Scalar > > Thyra::DefaultSpmdMultiVector< Scalar >::nonconstContigSubViewImpl ( const Range1D colRng) [protected, virtual]

Reimplemented from Thyra::MultiVectorDefaultBase< Scalar >.

Definition at line 288 of file Thyra_DefaultSpmdMultiVector_def.hpp.

template<class Scalar >
RCP< const MultiVectorBase< Scalar > > Thyra::DefaultSpmdMultiVector< Scalar >::nonContigSubViewImpl ( const ArrayView< const int > &  cols) const [protected, virtual]
template<class Scalar >
RCP< MultiVectorBase< Scalar > > Thyra::DefaultSpmdMultiVector< Scalar >::nonconstNonContigSubViewImpl ( const ArrayView< const int > &  cols) [protected, virtual]
template<class Scalar >
void Thyra::DefaultSpmdMultiVector< Scalar >::getNonconstLocalDataImpl ( const Ptr< ArrayRCP< Scalar > > &  localValues,
const Ptr< Ordinal > &  leadingDim 
) [protected, virtual]
template<class Scalar >
void Thyra::DefaultSpmdMultiVector< Scalar >::getLocalDataImpl ( const Ptr< ArrayRCP< const Scalar > > &  localValues,
const Ptr< Ordinal > &  leadingDim 
) const [protected, virtual]
template<class Scalar >
ArrayRCP< Scalar > Thyra::DefaultSpmdMultiVector< Scalar >::createContiguousCopy ( const ArrayView< const int > &  cols) const [private]

Member Data Documentation

template<class Scalar >
RCP<const SpmdVectorSpaceBase<Scalar> > Thyra::DefaultSpmdMultiVector< Scalar >::spmdRangeSpace_ [private]

Definition at line 194 of file Thyra_DefaultSpmdMultiVector_decl.hpp.

template<class Scalar >
RCP<const ScalarProdVectorSpaceBase<Scalar> > Thyra::DefaultSpmdMultiVector< Scalar >::domainSpace_ [private]

Definition at line 195 of file Thyra_DefaultSpmdMultiVector_decl.hpp.

template<class Scalar >
ArrayRCP<Scalar> Thyra::DefaultSpmdMultiVector< Scalar >::localValues_ [private]

Definition at line 196 of file Thyra_DefaultSpmdMultiVector_decl.hpp.

template<class Scalar >
Ordinal Thyra::DefaultSpmdMultiVector< Scalar >::leadingDim_ [private]

Definition at line 197 of file Thyra_DefaultSpmdMultiVector_decl.hpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines