44#include "Epetra_Map.h" 
   45#include "Epetra_Comm.h" 
   76    BaseMap_( Source.BaseMap_ ),
 
   77    Offset_( Source.Offset_ )
 
 
   89   long long IndexOffset = GlobalBlockRow * 
Offset_;
 
   97             std::cout << 
"Error in  BlockVector::GetBlock: " << i << 
" " 
   98                  << IndexOffset << 
" " << 
BaseMap_.GID64(i) << std::endl;
 
  101      BaseVector[i] = Values_[localIndex];
 
 
  110   long long IndexOffset = GlobalBlockRow * 
Offset_;
 
  117      if (localIndex==-1) {
 
  118             std::cout << 
"Error in  BlockVector::GetBlock: " << i << 
" " 
  119                  << IndexOffset << 
" " << 
BaseMap_.GID64(i) << std::endl;
 
  122      (*this)[localIndex] = BaseVector[i];
 
 
  128#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
  130                                          int* Indices, 
int GlobalBlockRow)
 
  132   long long IndexOffset = GlobalBlockRow * 
Offset_;
 
  137   for (
int i=0; i<NumIndices; i++) {
 
  138      localIndex = this->
Map().
LID((IndexOffset + Indices[i]));
 
  139      if (localIndex==-1) {
 
  140             std::cout << 
"Error in  BlockVector::BlockSumIntoGlobalValues: " << i
 
  141                  << 
" " << IndexOffset << 
" " << Indices[i] << std::endl;
 
  144      (*this)[localIndex] += theValues[i];
 
 
  151                                          int* Indices, 
int GlobalBlockRow)
 
  153   long long IndexOffset = GlobalBlockRow * 
Offset_;
 
  158   for (
int i=0; i<NumIndices; i++) {
 
  159      localIndex = this->
Map().
LID((IndexOffset + Indices[i]));
 
  160      if (localIndex==-1) {
 
  161             std::cout << 
"Error in  BlockVector::BlockReplaceGlobalValues: " << i
 
  162                  << 
" " << IndexOffset << 
" " << Indices[i] << std::endl;
 
  165      (*this)[localIndex] = theValues[i];
 
 
  172#ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 
  174                                          long long* Indices, 
long long GlobalBlockRow)
 
  176   long long IndexOffset = GlobalBlockRow * 
Offset_;
 
  181   for (
int i=0; i<NumIndices; i++) {
 
  182      localIndex = this->
Map().
LID((IndexOffset + Indices[i]));
 
  183      if (localIndex==-1) {
 
  184             std::cout << 
"Error in  BlockVector::BlockSumIntoGlobalValues: " << i
 
  185                  << 
" " << IndexOffset << 
" " << Indices[i] << std::endl;
 
  188      (*this)[localIndex] += theValues[i];
 
 
  195                                          long long* Indices, 
long long GlobalBlockRow)
 
  197   long long IndexOffset = GlobalBlockRow * 
Offset_;
 
  202   for (
int i=0; i<NumIndices; i++) {
 
  203      localIndex = this->
Map().
LID((IndexOffset + Indices[i]));
 
  204      if (localIndex==-1) {
 
  205             std::cout << 
"Error in  BlockVector::BlockReplaceGlobalValues: " << i
 
  206                  << 
" " << IndexOffset << 
" " << Indices[i] << std::endl;
 
  209      (*this)[localIndex] = theValues[i];
 
 
  216Teuchos::RCP<const Epetra_Vector>
 
  224Teuchos::RCP<Epetra_Vector>
 
int BlockReplaceGlobalValues(int NumIndices, double *Values, int *Indices, int BlockRow)
Load entries into BlockVector with base vector indices offset by BlockRow.
 
const Epetra_BlockMap & GetBaseMap() const
Return base map.
 
int ExtractBlockValues(Epetra_Vector &BaseVec, long long BlockRow) const
Extract a single block from a Block Vector: block row is global, not a stencil value.
 
virtual ~BlockVector()
Destructor.
 
int BlockSumIntoGlobalValues(int NumIndices, double *Values, int *Indices, int BlockRow)
Load entries into BlockVector with base vector indices offset by BlockRow.
 
BlockVector(const Epetra_BlockMap &BaseMap, const Epetra_BlockMap &GlobalMap)
BlockVector constuctor with one block row per processor.
 
Teuchos::RCP< const Epetra_Vector > GetBlock(long long BlockRow) const
Return Epetra_Vector for given block row.
 
int LoadBlockValues(const Epetra_Vector &BaseVec, long long BlockRow)
Load a single block into a Block Vector: block row is global, not a stencil value.
 
int NumMyElements() const
 
const Epetra_BlockMap & Map() const
 
EpetraExt::BlockCrsMatrix: A class for constructing a distributed block matrix.