43#include "EpetraExt_BlockUtility.h"
60 const Teuchos::RCP<const Epetra_BlockMap>& block_map,
61 const Teuchos::RCP<const Epetra_BlockMap>& coeff_map_,
62 const Teuchos::RCP<const EpetraExt::MultiComm>& product_comm_,
71 for (
int i=0; i<this->
size(); i++)
77 const Teuchos::RCP<const Epetra_BlockMap>& block_map,
78 const Teuchos::RCP<const Epetra_BlockMap>& coeff_map_,
79 const Teuchos::RCP<const Epetra_BlockMap>& product_map_,
80 const Teuchos::RCP<const EpetraExt::MultiComm>& product_comm_,
89 for (
int i=0; i<this->
size(); i++)
95 const Teuchos::RCP<const Epetra_BlockMap>& block_map,
96 const Teuchos::RCP<const Epetra_BlockMap>& coeff_map_,
97 const Teuchos::RCP<const Epetra_BlockMap>& product_map_,
98 const Teuchos::RCP<const EpetraExt::MultiComm>& product_comm_,
108 for (
int i=0; i<this->
size(); i++)
139 if (this->
size() > 0) {
140 if (
bv != Teuchos::null)
141 bv->Update(1.0, v, 0.0);
144 for (
int i=0; i<this->
size(); i++)
145 *(
coeff_[i]) = *(block_v.GetBlock(i));
155 if (this->
size() > 0) {
156 if (
bv != Teuchos::null)
160 for (
int i=0; i<this->
size(); i++)
161 *(block_v.GetBlock(i)) = *(
coeff_[i]);
170 if (this->
size() > 0) {
171 if (
bv != Teuchos::null)
172 bv->Update(1.0, v, 0.0);
175 for (
int i=0; i<this->
size(); i++)
176 *(
coeff_[i]) = *(block_v.GetBlock(i));
181Teuchos::RCP<const Epetra_BlockMap>
187Teuchos::RCP<const Epetra_BlockMap>
193Teuchos::RCP<const EpetraExt::MultiComm>
202 if (
bv != Teuchos::null)
203 return bv->NumVectors();
204 else if (this->
size() > 0 && this->
coeff_[0] != Teuchos::null)
205 return this->
coeff_[0]->NumVectors();
211reset(
const Teuchos::RCP<const Epetra_BlockMap>& block_map,
212 const Teuchos::RCP<const Epetra_BlockMap>& coeff_map_,
213 const Teuchos::RCP<const EpetraExt::MultiComm>& product_comm_,
220 Teuchos::rcp(EpetraExt::BlockUtility::GenerateBlockMap(*
coeff_map,
225 for (
int i=0; i<this->
size(); i++)
231reset(
const Teuchos::RCP<const Epetra_BlockMap>& block_map,
232 const Teuchos::RCP<const Epetra_BlockMap>& coeff_map_,
233 const Teuchos::RCP<const Epetra_BlockMap>& product_map_,
234 const Teuchos::RCP<const EpetraExt::MultiComm>& product_comm_,
243 for (
int i=0; i<this->
size(); i++)
253 Teuchos::rcp(
new EpetraExt::BlockMultiVector(CV, *
coeff_map, block_vector));
254 for (
int i=0; i<this->
size(); i++)
258Teuchos::RCP<EpetraExt::BlockMultiVector>
265Teuchos::RCP<const EpetraExt::BlockMultiVector>
277 for (
int i=0; i<this->
size(); i++)
int Update(double ScalarA, const Epetra_MultiVector &A, double ScalarThis)
Teuchos::Array< Teuchos::RCP< Epetra_MultiVector > > coeff_
void reset(const Teuchos::RCP< const Epetra_BlockMap > &map)
Resize to new map map.
ProductContainer & operator=(const ProductContainer &)
Assignment.
ordinal_type size() const
void setCoeffPtr(ordinal_type i, const Teuchos::RCP< Epetra_MultiVector > &c)
A container class storing products of Epetra_MultiVector's.
Teuchos::RCP< const Epetra_BlockMap > coeff_map
Product map of block vector.
Teuchos::RCP< const Epetra_BlockMap > product_map
Product map of block vector.
Teuchos::RCP< const EpetraExt::MultiComm > product_comm
Product multi-level communicator.
int numVectors() const
Get number of vectors.
Teuchos::RCP< EpetraExt::BlockMultiVector > bv
Block vector storing coefficients.
void assignFromBlockMultiVector(const Epetra_MultiVector &v)
Assignment.
virtual ~ProductEpetraMultiVector()
Destructor.
ProductEpetraMultiVector & operator=(const ProductEpetraMultiVector &v)
Assignment.
void resetCoefficients(Epetra_DataAccess CV, const Epetra_MultiVector &block_vector)
Reset vector cofficients.
void setBlockMultiVector(const Teuchos::RCP< EpetraExt::BlockMultiVector > &block_vec)
Set block vector.
Teuchos::RCP< const Epetra_BlockMap > productMap() const
Get product map.
Teuchos::RCP< EpetraExt::BlockMultiVector > getBlockMultiVector()
Get block vector.
void assignToBlockMultiVector(Epetra_MultiVector &v) const
Assignment.
void reset(const Teuchos::RCP< const Epetra_BlockMap > &block_map, const Teuchos::RCP< const Epetra_BlockMap > &coeff_map, const Teuchos::RCP< const EpetraExt::MultiComm > &product_comm, int num_vectors)
Reset to a new size.
ProductEpetraMultiVector()
Default constructor.
Teuchos::RCP< const EpetraExt::MultiComm > productComm() const
Get product comm.
Teuchos::RCP< const Epetra_BlockMap > coefficientMap() const
Get coefficient map.