55 const Teuchos::RCP<const Epetra_BlockMap>& block_map) :
65 const Teuchos::RCP<const Epetra_BlockMap>& block_map,
66 const Teuchos::RCP<const Epetra_BlockMap>& coeff_map,
67 const Teuchos::RCP<const EpetraExt::MultiComm>& product_comm) :
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) :
90 const Teuchos::RCP<const Epetra_BlockMap>& block_map,
91 const Teuchos::RCP<const Epetra_BlockMap>& coeff_map,
92 const Teuchos::RCP<const Epetra_BlockMap>& product_map,
93 const Teuchos::RCP<const EpetraExt::MultiComm>& product_comm,
126 const Teuchos::RCP<const Epetra_BlockMap>& block_map,
127 const Teuchos::RCP<const Epetra_BlockMap>& coeff_map,
128 const Teuchos::RCP<const EpetraExt::MultiComm>& product_comm)
131 this->basis_ = new_basis;
138 const Teuchos::RCP<const Epetra_BlockMap>& block_map,
139 const Teuchos::RCP<const Epetra_BlockMap>& coeff_map,
140 const Teuchos::RCP<const Epetra_BlockMap>& product_map,
141 const Teuchos::RCP<const EpetraExt::MultiComm>& product_comm)
144 this->basis_ = new_basis;
151 if (this->map_->Comm().NumProc() == 1 || !this->map_->DistributedGlobal()) {
152 v.
Scale(1.0, *(this->coeff_[0]));
159 this->map_->RemoteIDList(1, &gid, &root, &lid);
160 if (this->map_->Comm().MyPID() == root) {
161 v.
Scale(1.0, *(this->coeff_[lid]));
171 bool is_parallel = (this->map_->Comm().NumProc() > 1) &&
179 const Teuchos::Array<double>& nrm2 = this->basis_->norm_squared();
182 for (
int i=0; i<this->size(); i++) {
183 i_gid = this->map_->GID(i);
185 v_local->
Multiply(nrm2[i_gid], *(this->coeff_[i]), *(this->coeff_[i]),