Stokhos Package Browser (Single Doxygen Collection)  Version of the Day
Stokhos_ProductEpetraMultiVectorOperator.cpp
Go to the documentation of this file.
1 // @HEADER
2 // ***********************************************************************
3 //
4 // Stokhos Package
5 // Copyright (2009) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8 // license for use of this work by or on behalf of the U.S. Government.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Eric T. Phipps (etphipp@sandia.gov).
38 //
39 // ***********************************************************************
40 // @HEADER
41 
44 #include "Epetra_LocalMap.h"
45 
49  bool is_multi_vec_transposed) :
50  ProductContainer<Epetra_Operator>(product_mv_->map()),
51  ProductEpetraOperator(product_mv_->map(),
52  product_mv_->productComm()),
53  product_mv(product_mv_)
54 {
55  // Create domain, range maps
56  Teuchos::RCP<const Epetra_Map> domain_map, range_map;
57  int nv = product_mv->numVectors();
58  const Epetra_Comm& coeff_comm = product_mv->productComm()->SubDomainComm();
60  Teuchos::rcp(new Epetra_LocalMap(nv, 0, coeff_comm));
61  if (is_multi_vec_transposed) {
62  domain_map =
63  Teuchos::rcp_dynamic_cast<const Epetra_Map>(product_mv->coefficientMap());
64  range_map = local_map;
65  }
66  else {
67  domain_map = local_map;
68  range_map =
69  Teuchos::rcp_dynamic_cast<const Epetra_Map>(product_mv->coefficientMap());
70  }
71  ProductEpetraOperator::setup(domain_map, range_map);
72 
73  // Set coefficients as operators
74  for (int i=0; i<this->size(); i++) {
77  product_mv->getCoeffPtr(i), is_multi_vec_transposed));
78  this->setCoeffPtr(i, op);
79  }
80 }
81 
87  product_mv(v.product_mv)
88 {
89 }
90 
93 
98  product_mv = v.product_mv;
99  return *this;
100 }
101 
105  return product_mv;
106 }
Stokhos::ProductEpetraMultiVectorOperator::productMultiVector
Teuchos::RCP< ProductEpetraMultiVector > productMultiVector() const
Get product multi vector.
Definition: Stokhos_ProductEpetraMultiVectorOperator.cpp:104
Stokhos::ProductEpetraMultiVectorOperator::product_mv
Teuchos::RCP< ProductEpetraMultiVector > product_mv
The product multi-vector.
Definition: Stokhos_ProductEpetraMultiVectorOperator.hpp:92
Epetra_LocalMap.h
Teuchos::rcp
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Epetra_Comm
Stokhos::ProductEpetraMultiVectorOperator::~ProductEpetraMultiVectorOperator
virtual ~ProductEpetraMultiVectorOperator()
Destructor.
Definition: Stokhos_ProductEpetraMultiVectorOperator.cpp:92
Teuchos::map
Teuchos::RCP< Stokhos::ProductEpetraMultiVector >
Stokhos::ProductContainer< Epetra_Operator >::setCoeffPtr
void setCoeffPtr(ordinal_type i, const Teuchos::RCP< Epetra_Operator > &c)
Set coefficient i to c.
Definition: Stokhos_ProductContainerImp.hpp:187
Stokhos_ProductEpetraMultiVectorOperator.hpp
Stokhos::ProductContainer
A product (in the mathematical sense) container class whose coefficients are vectors,...
Definition: Stokhos_ProductContainer.hpp:61
Stokhos::EpetraMultiVectorOperator
An adaptor that supplies the operator interface to a multi-vector.
Definition: Stokhos_EpetraMultiVectorOperator.hpp:68
Stokhos::ProductEpetraMultiVectorOperator
A container class for products of Epetra_Vector's.
Definition: Stokhos_ProductEpetraMultiVectorOperator.hpp:53
Stokhos_EpetraMultiVectorOperator.hpp
Stokhos::ProductContainer< Epetra_Operator >::size
ordinal_type size() const
Return size.
Definition: Stokhos_ProductContainerImp.hpp:139
Stokhos::ProductEpetraOperator::operator=
ProductEpetraOperator & operator=(const ProductEpetraOperator &v)
Assignment.
Definition: Stokhos_ProductEpetraOperator.cpp:93
Stokhos::ProductEpetraOperator::setup
void setup(const Teuchos::RCP< const Epetra_Map > &domain_base_map, const Teuchos::RCP< const Epetra_Map > &range_base_map)
Second stage of setup.
Definition: Stokhos_ProductEpetraOperator.cpp:216
Stokhos::ProductEpetraMultiVectorOperator::ProductEpetraMultiVectorOperator
ProductEpetraMultiVectorOperator(const Teuchos::RCP< ProductEpetraMultiVector > &product_mv, bool is_multi_vec_transposed)
Create ProductEpetraOperator out of ProductEpetraMultiVector.
Definition: Stokhos_ProductEpetraMultiVectorOperator.cpp:47
Stokhos::ProductEpetraOperator
A container class for products of Epetra_Vector's.
Definition: Stokhos_ProductEpetraOperator.hpp:55
Epetra_LocalMap
Stokhos::ProductEpetraMultiVectorOperator::operator=
ProductEpetraMultiVectorOperator & operator=(const ProductEpetraMultiVectorOperator &v)
Assignment.
Definition: Stokhos_ProductEpetraMultiVectorOperator.cpp:96
Epetra_Operator