Xpetra_TpetraCrsMatrix_def.hpp
Go to the documentation of this file.
1 // @HEADER
2 //
3 // ***********************************************************************
4 //
5 // Xpetra: A linear algebra interface package
6 // Copyright 2012 Sandia Corporation
7 //
8 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9 // the U.S. Government retains certain rights in this software.
10 //
11 // Redistribution and use in source and binary forms, with or without
12 // modification, are permitted provided that the following conditions are
13 // met:
14 //
15 // 1. Redistributions of source code must retain the above copyright
16 // notice, this list of conditions and the following disclaimer.
17 //
18 // 2. Redistributions in binary form must reproduce the above copyright
19 // notice, this list of conditions and the following disclaimer in the
20 // documentation and/or other materials provided with the distribution.
21 //
22 // 3. Neither the name of the Corporation nor the names of the
23 // contributors may be used to endorse or promote products derived from
24 // this software without specific prior written permission.
25 //
26 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 //
38 // Questions? Contact
39 // Jonathan Hu (jhu@sandia.gov)
40 // Andrey Prokopenko (aprokop@sandia.gov)
41 // Ray Tuminaro (rstumin@sandia.gov)
42 //
43 // ***********************************************************************
44 //
45 // @HEADER
46 #ifndef XPETRA_TPETRACRSMATRIX_DEF_HPP
47 #define XPETRA_TPETRACRSMATRIX_DEF_HPP
48 
50 
51 namespace Xpetra {
52 
53  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
55  : mtx_ (Teuchos::rcp (new Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> (toTpetra(rowMap), maxNumEntriesPerRow, toTpetra(pftype), params))) { }
56 
57  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
59  : mtx_(Teuchos::rcp(new Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> (toTpetra(rowMap), NumEntriesPerRowToAlloc(), toTpetra(pftype), params))) { }
60 
61  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
63  : mtx_(Teuchos::rcp(new Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>(toTpetra(rowMap), toTpetra(colMap), maxNumEntriesPerRow, toTpetra(pftype), params))) { }
64 
65  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
67  : mtx_(Teuchos::rcp(new Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >(toTpetra(rowMap), toTpetra(colMap), NumEntriesPerRowToAlloc(), toTpetra(pftype), params))) { }
68 
69  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
71  : mtx_(Teuchos::rcp(new Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >(toTpetra(graph), params))) { }
72 
73 
74 
75  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
78  const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >& domainMap,
79  const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >& rangeMap,
81  {
82  typedef Tpetra::CrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node> MyTpetraCrsMatrix;
83  XPETRA_DYNAMIC_CAST(const TpetraCrsMatrixClass, *sourceMatrix, tSourceMatrix, "Xpetra::TpetraCrsMatrix constructor only accepts Xpetra::TpetraCrsMatrix as the input argument.");//TODO: remove and use toTpetra()
84  RCP< const Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> > v = tSourceMatrix.getTpetra_CrsMatrix();
85 
86  RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > myDomainMap = domainMap!=Teuchos::null ? toTpetra(domainMap) : Teuchos::null;
87  RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > myRangeMap = rangeMap!=Teuchos::null ? toTpetra(rangeMap) : Teuchos::null;
88  mtx_=Tpetra::importAndFillCompleteCrsMatrix<MyTpetraCrsMatrix>(tSourceMatrix.getTpetra_CrsMatrix(),toTpetra(importer),myDomainMap,myRangeMap,params);
89  bool restrictComm=false;
90  if(!params.is_null()) restrictComm = params->get("Restrict Communicator",restrictComm);
91  if(restrictComm && mtx_->getRowMap().is_null()) mtx_=Teuchos::null;
92 
93  }
94 
95  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
98  const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >& domainMap,
99  const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >& rangeMap,
101  {
102  typedef Tpetra::CrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node> MyTpetraCrsMatrix;
103  XPETRA_DYNAMIC_CAST(const TpetraCrsMatrixClass, *sourceMatrix, tSourceMatrix, "Xpetra::TpetraCrsMatrix constructor only accepts Xpetra::TpetraCrsMatrix as the input argument.");//TODO: remove and use toTpetra()
104  RCP< const Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> > v = tSourceMatrix.getTpetra_CrsMatrix();
105 
106  RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > myDomainMap = domainMap!=Teuchos::null ? toTpetra(domainMap) : Teuchos::null;
107  RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > myRangeMap = rangeMap!=Teuchos::null ? toTpetra(rangeMap) : Teuchos::null;
108  mtx_=Tpetra::exportAndFillCompleteCrsMatrix<MyTpetraCrsMatrix>(tSourceMatrix.getTpetra_CrsMatrix(),toTpetra(exporter),myDomainMap,myRangeMap,params);
109 
110  }
111 
112  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
114  const Import<LocalOrdinal,GlobalOrdinal,Node> & RowImporter,
115  const Teuchos::RCP<const Import<LocalOrdinal,GlobalOrdinal,Node> > DomainImporter,
116  const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >& domainMap,
117  const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >& rangeMap,
119  {
120  typedef Tpetra::CrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node> MyTpetraCrsMatrix;
121  XPETRA_DYNAMIC_CAST(const TpetraCrsMatrixClass, *sourceMatrix, tSourceMatrix, "Xpetra::TpetraCrsMatrix constructor only accepts Xpetra::TpetraCrsMatrix as the input argument.");//TODO: remove and use toTpetra()
122  RCP< const Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> > v = tSourceMatrix.getTpetra_CrsMatrix();
123 
124  RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > myDomainMap = domainMap!=Teuchos::null ? toTpetra(domainMap) : Teuchos::null;
125  RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > myRangeMap = rangeMap!=Teuchos::null ? toTpetra(rangeMap) : Teuchos::null;
126 
127  mtx_=Tpetra::importAndFillCompleteCrsMatrix<MyTpetraCrsMatrix>(tSourceMatrix.getTpetra_CrsMatrix(),toTpetra(RowImporter),toTpetra(*DomainImporter),myDomainMap,myRangeMap,params);
128  bool restrictComm=false;
129  if(!params.is_null()) restrictComm = params->get("Restrict Communicator",restrictComm);
130  if(restrictComm && mtx_->getRowMap().is_null()) mtx_=Teuchos::null;
131  }
132 
133  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
135  const Export<LocalOrdinal,GlobalOrdinal,Node> & RowExporter,
136  const Teuchos::RCP<const Export<LocalOrdinal,GlobalOrdinal,Node> > DomainExporter,
137  const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >& domainMap,
138  const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >& rangeMap,
140  {
141  typedef Tpetra::CrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node> MyTpetraCrsMatrix;
142  XPETRA_DYNAMIC_CAST(const TpetraCrsMatrixClass, *sourceMatrix, tSourceMatrix, "Xpetra::TpetraCrsMatrix constructor only accepts Xpetra::TpetraCrsMatrix as the input argument.");//TODO: remove and use toTpetra()
143  RCP< const Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> > v = tSourceMatrix.getTpetra_CrsMatrix();
144 
145  RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > myDomainMap = domainMap!=Teuchos::null ? toTpetra(domainMap) : Teuchos::null;
146  RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> > myRangeMap = rangeMap!=Teuchos::null ? toTpetra(rangeMap) : Teuchos::null;
147 
148  mtx_=Tpetra::exportAndFillCompleteCrsMatrix<MyTpetraCrsMatrix>(tSourceMatrix.getTpetra_CrsMatrix(),toTpetra(RowExporter),toTpetra(*DomainExporter),myDomainMap,myRangeMap,params);
149  }
150 
152 
153 
154 #ifdef HAVE_XPETRA_KOKKOS_REFACTOR
155 #ifdef HAVE_XPETRA_TPETRA
156  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
159  const local_matrix_type& lclMatrix,
161  : mtx_(Teuchos::rcp(new Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>(toTpetra(rowMap), toTpetra(colMap), lclMatrix, params))) { }
162 
163  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
165  const local_matrix_type& lclMatrix,
166  const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >& rowMap,
167  const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >& colMap,
168  const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >& domainMap,
169  const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >& rangeMap,
171  : mtx_(Teuchos::rcp(new Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>(lclMatrix, toTpetra(rowMap), toTpetra(colMap), toTpetra(domainMap), toTpetra(rangeMap), params))) { }
172 #endif
173 #endif
174 
175  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
177 
178  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
179  void TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::insertGlobalValues(GlobalOrdinal globalRow, const ArrayView< const GlobalOrdinal > &cols, const ArrayView< const Scalar > &vals) { XPETRA_MONITOR("TpetraCrsMatrix::insertGlobalValues"); mtx_->insertGlobalValues(globalRow, cols, vals); }
180 
181  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
182  void TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::insertLocalValues(LocalOrdinal localRow, const ArrayView< const LocalOrdinal > &cols, const ArrayView< const Scalar > &vals) { XPETRA_MONITOR("TpetraCrsMatrix::insertLocalValues"); mtx_->insertLocalValues(localRow, cols, vals); }
183 
184  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
185  void TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::replaceGlobalValues(GlobalOrdinal globalRow, const ArrayView< const GlobalOrdinal > &cols, const ArrayView< const Scalar > &vals) { XPETRA_MONITOR("TpetraCrsMatrix::replaceGlobalValues"); mtx_->replaceGlobalValues(globalRow, cols, vals); }
186 
187  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
188  void
190  const ArrayView<const LocalOrdinal> &cols,
191  const ArrayView<const Scalar> &vals)
192  {
193  XPETRA_MONITOR("TpetraCrsMatrix::replaceLocalValues");
194  typedef typename ArrayView<const LocalOrdinal>::size_type size_type;
195  const LocalOrdinal numValid =
196  mtx_->replaceLocalValues (localRow, cols, vals);
198  static_cast<size_type> (numValid) != cols.size (), std::runtime_error,
199  "replaceLocalValues returned " << numValid << " != cols.size() = " <<
200  cols.size () << ".");
201  }
202 
203  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
204  void TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::setAllToScalar(const Scalar &alpha) { XPETRA_MONITOR("TpetraCrsMatrix::setAllToScalar"); mtx_->setAllToScalar(alpha); }
205 
206  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
207  void TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::scale(const Scalar &alpha) { XPETRA_MONITOR("TpetraCrsMatrix::scale"); mtx_->scale(alpha); }
208 
209  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
211  { XPETRA_MONITOR("TpetraCrsMatrix::allocateAllValues"); rowptr.resize(getNodeNumRows()+1); colind.resize(numNonZeros); values.resize(numNonZeros);}
212 
213  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
215  { XPETRA_MONITOR("TpetraCrsMatrix::setAllValues"); mtx_->setAllValues(rowptr,colind,values); }
216 
217  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
219  { XPETRA_MONITOR("TpetraCrsMatrix::getAllValues"); mtx_->getAllValues(rowptr,colind,values); }
220 
221  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
223  { return mtx_->haveGlobalConstants();}
224 
225  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
226  void TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::resumeFill(const RCP< ParameterList > &params) { XPETRA_MONITOR("TpetraCrsMatrix::resumeFill"); mtx_->resumeFill(params); }
227 
228  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
229  void TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::fillComplete(const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &domainMap, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rangeMap, const RCP< ParameterList > &params) { XPETRA_MONITOR("TpetraCrsMatrix::fillComplete"); mtx_->fillComplete(toTpetra(domainMap), toTpetra(rangeMap), params); }
230 
231  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
232  void TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::fillComplete(const RCP< ParameterList > &params) { XPETRA_MONITOR("TpetraCrsMatrix::fillComplete"); mtx_->fillComplete(params); }
233 
234 
235  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
237  XPETRA_MONITOR("TpetraCrsMatrix::replaceDomainMapAndImporter");
238  XPETRA_DYNAMIC_CAST( const TpetraImportClass , *newImporter, tImporter, "Xpetra::TpetraCrsMatrix::replaceDomainMapAndImporter only accepts Xpetra::TpetraImport.");
239  RCP<const Tpetra::Import<LocalOrdinal,GlobalOrdinal,Node> > myImport = tImporter.getTpetra_Import();
240  mtx_->replaceDomainMapAndImporter( toTpetra(newDomainMap),myImport);
241  }
242 
243  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
245  const RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> > & rangeMap,
246  const RCP<const Import<LocalOrdinal,GlobalOrdinal,Node> > &importer,
247  const RCP<const Export<LocalOrdinal,GlobalOrdinal,Node> > &exporter,
248  const RCP<ParameterList> &params) {
249  XPETRA_MONITOR("TpetraCrsMatrix::expertStaticFillComplete");
252 
253  if(importer!=Teuchos::null) {
254  XPETRA_DYNAMIC_CAST( const TpetraImportClass , *importer, tImporter, "Xpetra::TpetraCrsMatrix::expertStaticFillComplete only accepts Xpetra::TpetraImport.");
255  myImport = tImporter.getTpetra_Import();
256  }
257  if(exporter!=Teuchos::null) {
258  XPETRA_DYNAMIC_CAST( const TpetraExportClass , *exporter, tExporter, "Xpetra::TpetraCrsMatrix::expertStaticFillComplete only accepts Xpetra::TpetraExport.");
259  myExport = tExporter.getTpetra_Export();
260  }
261 
262  mtx_->expertStaticFillComplete(toTpetra(domainMap),toTpetra(rangeMap),myImport,myExport,params);
263  }
264 
265  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
267 
268  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
270 
271  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
273 
274  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
275  global_size_t TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getGlobalNumRows() const { XPETRA_MONITOR("TpetraCrsMatrix::getGlobalNumRows"); return mtx_->getGlobalNumRows(); }
276 
277  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
278  global_size_t TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getGlobalNumCols() const { XPETRA_MONITOR("TpetraCrsMatrix::getGlobalNumCols"); return mtx_->getGlobalNumCols(); }
279 
280  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
281  size_t TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getNodeNumRows() const { XPETRA_MONITOR("TpetraCrsMatrix::getNodeNumRows"); return mtx_->getNodeNumRows(); }
282 
283  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
284  size_t TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getNodeNumCols() const { XPETRA_MONITOR("TpetraCrsMatrix::getNodeNumCols"); return mtx_->getNodeNumCols(); }
285 
286  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
287  global_size_t TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getGlobalNumEntries() const { XPETRA_MONITOR("TpetraCrsMatrix::getGlobalNumEntries"); return mtx_->getGlobalNumEntries(); }
288 
289  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
290  size_t TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getNodeNumEntries() const { XPETRA_MONITOR("TpetraCrsMatrix::getNodeNumEntries"); return mtx_->getNodeNumEntries(); }
291 
292  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
293  size_t TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getNumEntriesInLocalRow(LocalOrdinal localRow) const { XPETRA_MONITOR("TpetraCrsMatrix::getNumEntriesInLocalRow"); return mtx_->getNumEntriesInLocalRow(localRow); }
294 
295  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
296  size_t TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const { XPETRA_MONITOR("TpetraCrsMatrix::getNumEntriesInGlobalRow"); return mtx_->getNumEntriesInGlobalRow(globalRow); }
297 
298  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
299  size_t TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getGlobalMaxNumRowEntries() const { XPETRA_MONITOR("TpetraCrsMatrix::getGlobalMaxNumRowEntries"); return mtx_->getGlobalMaxNumRowEntries(); }
300 
301  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
302  size_t TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getNodeMaxNumRowEntries() const { XPETRA_MONITOR("TpetraCrsMatrix::getNodeMaxNumRowEntries"); return mtx_->getNodeMaxNumRowEntries(); }
303 
304  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
305  bool TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::isLocallyIndexed() const { XPETRA_MONITOR("TpetraCrsMatrix::isLocallyIndexed"); return mtx_->isLocallyIndexed(); }
306 
307  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
308  bool TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::isGloballyIndexed() const { XPETRA_MONITOR("TpetraCrsMatrix::isGloballyIndexed"); return mtx_->isGloballyIndexed(); }
309 
310  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
311  bool TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::isFillComplete() const { XPETRA_MONITOR("TpetraCrsMatrix::isFillComplete"); return mtx_->isFillComplete(); }
312 
313  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
314  bool TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::isFillActive() const { XPETRA_MONITOR("TpetraCrsMatrix::isFillActive"); return mtx_->isFillActive(); }
315 
316  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
317  typename ScalarTraits< Scalar >::magnitudeType TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getFrobeniusNorm() const { XPETRA_MONITOR("TpetraCrsMatrix::getFrobeniusNorm"); return mtx_->getFrobeniusNorm(); }
318 
319  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
320  bool TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::supportsRowViews() const { XPETRA_MONITOR("TpetraCrsMatrix::supportsRowViews"); return mtx_->supportsRowViews(); }
321 
322  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
323  void TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getLocalRowCopy(LocalOrdinal LocalRow, const ArrayView< LocalOrdinal > &Indices, const ArrayView< Scalar > &Values, size_t &NumEntries) const { XPETRA_MONITOR("TpetraCrsMatrix::getLocalRowCopy"); mtx_->getLocalRowCopy(LocalRow, Indices, Values, NumEntries); }
324 
325  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
326  void TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView< const GlobalOrdinal > &indices, ArrayView< const Scalar > &values) const { XPETRA_MONITOR("TpetraCrsMatrix::getGlobalRowView"); mtx_->getGlobalRowView(GlobalRow, indices, values); }
327 
328  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
329  void TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getGlobalRowCopy(GlobalOrdinal GlobalRow, const ArrayView< GlobalOrdinal > &indices, const ArrayView< Scalar > &values, size_t &numEntries) const { XPETRA_MONITOR("TpetraCrsMatrix::getGlobalRowCopy"); mtx_->getGlobalRowCopy(GlobalRow, indices, values, numEntries); }
330 
331  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
332  void TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getLocalRowView(LocalOrdinal LocalRow, ArrayView< const LocalOrdinal > &indices, ArrayView< const Scalar > &values) const { XPETRA_MONITOR("TpetraCrsMatrix::getLocalRowView"); mtx_->getLocalRowView(LocalRow, indices, values); }
333 
334  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
336 
337  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
339 
340  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
342 
343  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
344  std::string TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::description() const { XPETRA_MONITOR("TpetraCrsMatrix::description"); return mtx_->description(); }
345 
346  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
347  void TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const { XPETRA_MONITOR("TpetraCrsMatrix::describe"); mtx_->describe(out, verbLevel); }
348 
349  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
351  XPETRA_MONITOR("TpetraCrsMatrix::setObjectLabel");
353  mtx_->setObjectLabel(objectLabel);
354  }
355 
356 
357 
358  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
360  : mtx_(Teuchos::rcp(new Tpetra::CrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>(*(matrix.mtx_),Teuchos::Copy))) {}
361 
362  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
364  XPETRA_MONITOR("TpetraCrsMatrix::getLocalDiagCopy");
365  XPETRA_DYNAMIC_CAST(TpetraVectorClass, diag, tDiag, "Xpetra::TpetraCrsMatrix.getLocalDiagCopy() only accept Xpetra::TpetraVector as input arguments.");
366  mtx_->getLocalDiagCopy(*tDiag.getTpetra_Vector());
367  }
368 
369  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
371  XPETRA_MONITOR("TpetraCrsMatrix::getLocalDiagOffsets");
372  mtx_->getLocalDiagOffsets(offsets);
373  }
374 
375  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
377  XPETRA_MONITOR("TpetraCrsMatrix::getLocalDiagCopy");
378  mtx_->getLocalDiagCopy(*(toTpetra(diag)), offsets);
379  }
380 
381  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
383  XPETRA_MONITOR("TpetraCrsMatrix::replaceDiag");
384  Tpetra::replaceDiagonalCrsMatrix(*mtx_, *(toTpetra(diag)));
385  }
386 
387  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
389  XPETRA_MONITOR("TpetraCrsMatrix::leftScale");
390  mtx_->leftScale(*(toTpetra(x)));
391  }
392 
393  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
395  XPETRA_MONITOR("TpetraCrsMatrix::rightScale");
396  mtx_->rightScale(*(toTpetra(x)));
397  }
398 
399  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
401 
402  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
405  XPETRA_MONITOR("TpetraCrsMatrix::doImport");
406 
407  XPETRA_DYNAMIC_CAST(const TpetraCrsMatrixClass, source, tSource, "Xpetra::TpetraCrsMatrix::doImport only accept Xpetra::TpetraCrsMatrix as input arguments.");//TODO: remove and use toTpetra()
409  //mtx_->doImport(toTpetraCrsMatrix(source), *tImporter.getTpetra_Import(), toTpetra(CM));
410  mtx_->doImport(*v, toTpetra(importer), toTpetra(CM));
411  }
412 
414  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
417  XPETRA_MONITOR("TpetraCrsMatrix::doExport");
418 
419  XPETRA_DYNAMIC_CAST(const TpetraCrsMatrixClass, dest, tDest, "Xpetra::TpetraCrsMatrix::doImport only accept Xpetra::TpetraCrsMatrix as input arguments.");//TODO: remove and use toTpetra()
421  mtx_->doExport(*v, toTpetra(importer), toTpetra(CM));
422 
423  }
424 
425  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
428  XPETRA_MONITOR("TpetraCrsMatrix::doImport");
429 
430  XPETRA_DYNAMIC_CAST(const TpetraCrsMatrixClass, source, tSource, "Xpetra::TpetraCrsMatrix::doImport only accept Xpetra::TpetraCrsMatrix as input arguments.");//TODO: remove and use toTpetra()
432  mtx_->doImport(*v, toTpetra(exporter), toTpetra(CM));
433 
434  }
435 
436  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
439  XPETRA_MONITOR("TpetraCrsMatrix::doExport");
440 
441  XPETRA_DYNAMIC_CAST(const TpetraCrsMatrixClass, dest, tDest, "Xpetra::TpetraCrsMatrix::doImport only accept Xpetra::TpetraCrsMatrix as input arguments.");//TODO: remove and use toTpetra()
443  mtx_->doExport(*v, toTpetra(exporter), toTpetra(CM));
444 
445  }
446 
447  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
449  XPETRA_MONITOR("TpetraCrsMatrix::removeEmptyProcessesInPlace");
450  mtx_->removeEmptyProcessesInPlace(toTpetra(newMap));
451  }
452 
453  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
455  return ! mtx_.is_null ();
456  }
457 
458  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
459  TpetraCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>::TpetraCrsMatrix(const Teuchos::RCP<Tpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> > &mtx) : mtx_(mtx) { }
460 
461  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
463 
465  template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
467 
470 // End of TpetrCrsMatrix class definition //
473 
474 } // Xpetra namespace
475 
476 #endif // XPETRA_TPETRACRSMATRIX_DEF_HPP
Xpetra::TpetraCrsMatrix::getNumEntriesInGlobalRow
size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const
Returns the current number of entries in the (locally owned) global row.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:296
Xpetra::TpetraCrsMatrix::setObjectLabel
void setObjectLabel(const std::string &objectLabel)
Definition: Xpetra_TpetraCrsMatrix_def.hpp:350
Xpetra::TpetraImport
Definition: Xpetra_TpetraImport_decl.hpp:66
Xpetra::TpetraCrsMatrix::expertStaticFillComplete
void expertStaticFillComplete(const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &domainMap, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rangeMap, const RCP< const Import< LocalOrdinal, GlobalOrdinal, Node > > &importer=Teuchos::null, const RCP< const Export< LocalOrdinal, GlobalOrdinal, Node > > &exporter=Teuchos::null, const RCP< ParameterList > &params=Teuchos::null)
Expert static fill complete.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:244
Xpetra::TpetraCrsMatrix::supportsRowViews
bool supportsRowViews() const
Returns true if getLocalRowView() and getGlobalRowView() are valid for this class.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:320
Xpetra
Xpetra namespace
Definition: Xpetra_BlockedCrsMatrix.hpp:88
Xpetra::TpetraCrsMatrix::getRowMap
const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getRowMap() const
Returns the Map that describes the row distribution in this matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:266
Xpetra::TpetraCrsMatrix::getTpetra_CrsMatrix
RCP< const Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getTpetra_CrsMatrix() const
Get the underlying Tpetra matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:462
Xpetra::TpetraCrsMatrix::leftScale
void leftScale(const Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &x)
Left scale operator with given vector values.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:388
Xpetra::global_size_t
size_t global_size_t
Global size_t object.
Definition: Xpetra_ConfigDefs.hpp:174
Xpetra::TpetraCrsMatrix::doImport
void doImport(const DistObject< char, LocalOrdinal, GlobalOrdinal, Node > &source, const Import< LocalOrdinal, GlobalOrdinal, Node > &importer, CombineMode CM)
Import.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:403
Xpetra::toTpetra
RCP< const Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > toTpetra(const RCP< const CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > &graph)
Definition: Xpetra_TpetraCrsGraph_decl.hpp:378
Teuchos::LabeledObject::setObjectLabel
virtual void setObjectLabel(const std::string &objectLabel)
Xpetra::DistObject
Definition: Xpetra_DistObject.hpp:66
Xpetra::MultiVector
Definition: Xpetra_MultiVector.hpp:78
Xpetra::TpetraCrsMatrix::insertLocalValues
void insertLocalValues(LocalOrdinal localRow, const ArrayView< const LocalOrdinal > &cols, const ArrayView< const Scalar > &vals)
Insert matrix entries, using local IDs.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:182
Xpetra::TpetraCrsMatrix::getNumEntriesInLocalRow
size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const
Returns the current number of entries on this node in the specified local row.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:293
Xpetra::TpetraCrsMatrix::getFrobeniusNorm
ScalarTraits< Scalar >::magnitudeType getFrobeniusNorm() const
Returns the Frobenius norm of the matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:317
XPETRA_DYNAMIC_CAST
#define XPETRA_DYNAMIC_CAST(type, obj, newObj, exceptionMsg)
Definition: Xpetra_Exceptions.hpp:58
Teuchos::ArrayView::size_type
Ordinal size_type
Xpetra::TpetraCrsMatrix::replaceDiag
void replaceDiag(const Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &diag)
Replace the diagonal entries of the matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:382
Xpetra::TpetraCrsMatrix::getNodeNumEntries
size_t getNodeNumEntries() const
Returns the local number of entries in this matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:290
Xpetra::Export
Definition: Xpetra_Export.hpp:64
Xpetra::TpetraCrsMatrix::getLocalRowView
void getLocalRowView(LocalOrdinal LocalRow, ArrayView< const LocalOrdinal > &indices, ArrayView< const Scalar > &values) const
Extract a const, non-persisting view of local indices in a specified row of the matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:332
Xpetra::TpetraCrsMatrix::describe
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const
Print the object with some verbosity level to an FancyOStream object.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:347
Xpetra::TpetraCrsMatrix::getColMap
const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getColMap() const
Returns the Map that describes the column distribution in this matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:269
Xpetra::toXpetra
RCP< const CrsGraph< int, GlobalOrdinal, Node > > toXpetra(const Epetra_CrsGraph &g)
Definition: Xpetra_EpetraCrsGraph.cpp:168
Xpetra::TpetraCrsMatrix::getGlobalNumEntries
global_size_t getGlobalNumEntries() const
Returns the global number of entries in this matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:287
Xpetra::TpetraCrsMatrix::setAllToScalar
void setAllToScalar(const Scalar &alpha)
Set all matrix entries equal to scalarThis.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:204
rcp
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Teuchos::EVerbosityLevel
EVerbosityLevel
Xpetra::TpetraCrsMatrix::replaceGlobalValues
void replaceGlobalValues(GlobalOrdinal globalRow, const ArrayView< const GlobalOrdinal > &cols, const ArrayView< const Scalar > &vals)
Replace matrix entries, using global IDs.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:185
Xpetra::TpetraCrsMatrix::isGloballyIndexed
bool isGloballyIndexed() const
If matrix indices are in the global range, this function returns true. Otherwise, this function retur...
Definition: Xpetra_TpetraCrsMatrix_def.hpp:308
Teuchos::ArrayView
Xpetra::Map
Definition: Xpetra_Map_decl.hpp:91
Xpetra::Import
Definition: Xpetra_Import.hpp:64
Xpetra::CombineMode
CombineMode
Xpetra::Combine Mode enumerable type.
Definition: Xpetra_ConfigDefs.hpp:218
Xpetra::TpetraCrsMatrix::TpetraCrsMatrix
TpetraCrsMatrix(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rowMap, size_t maxNumEntriesPerRow, ProfileType pftype=DynamicProfile, const Teuchos::RCP< Teuchos::ParameterList > &params=Teuchos::null)
Constructor specifying fixed number of entries for each row.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:54
Teuchos::RCP
Xpetra::TpetraCrsMatrix::description
std::string description() const
A simple one-line description of this object.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:344
Xpetra::TpetraCrsMatrix::getLocalRowCopy
void getLocalRowCopy(LocalOrdinal LocalRow, const ArrayView< LocalOrdinal > &Indices, const ArrayView< Scalar > &Values, size_t &NumEntries) const
Extract a list of entries in a specified local row of the matrix. Put into storage allocated by calli...
Definition: Xpetra_TpetraCrsMatrix_def.hpp:323
Xpetra::TpetraExport
Definition: Xpetra_TpetraExport_decl.hpp:80
Xpetra::TpetraCrsMatrix::getGlobalRowView
void getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView< const GlobalOrdinal > &indices, ArrayView< const Scalar > &values) const
Extract a const, non-persisting view of global indices in a specified row of the matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:326
Xpetra::TpetraCrsMatrix::removeEmptyProcessesInPlace
void removeEmptyProcessesInPlace(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &newMap)
Definition: Xpetra_TpetraCrsMatrix_def.hpp:448
Xpetra::TpetraCrsMatrix
Definition: Xpetra_TpetraCrsMatrix_decl.hpp:75
Xpetra::TpetraCrsMatrix::resumeFill
void resumeFill(const RCP< ParameterList > &params=null)
Definition: Xpetra_TpetraCrsMatrix_def.hpp:226
Xpetra::TpetraCrsMatrix::getGlobalNumCols
global_size_t getGlobalNumCols() const
Number of global columns in the matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:278
Xpetra::Vector
Definition: Xpetra_Vector.hpp:62
Xpetra::TpetraCrsMatrix::apply
void apply(const MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, Scalar alpha=ScalarTraits< Scalar >::one(), Scalar beta=ScalarTraits< Scalar >::zero()) const
Computes the sparse matrix-multivector multiplication.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:335
Teuchos::ArrayRCP
Xpetra::TpetraCrsMatrix::getLocalDiagOffsets
void getLocalDiagOffsets(Teuchos::ArrayRCP< size_t > &offsets) const
Get offsets of the diagonal entries in the matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:370
Xpetra::TpetraCrsMatrix::getGlobalMaxNumRowEntries
size_t getGlobalMaxNumRowEntries() const
Returns the maximum number of entries across all rows/columns on all nodes.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:299
Teuchos::basic_FancyOStream
Teuchos::ArrayView::size
size_type size() const
Xpetra_TpetraCrsMatrix_decl.hpp
Xpetra::TpetraCrsMatrix::getCrsGraph
RCP< const CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > getCrsGraph() const
Returns the CrsGraph associated with this matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:272
Xpetra::TpetraCrsMatrix::allocateAllValues
void allocateAllValues(size_t numNonZeros, ArrayRCP< size_t > &rowptr, ArrayRCP< LocalOrdinal > &colind, ArrayRCP< Scalar > &values)
Allocates and returns ArrayRCPs of the Crs arrays — This is an Xpetra-only routine.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:210
Xpetra::CrsGraph
Definition: Xpetra_CrsGraph.hpp:86
Xpetra::TpetraMap
Definition: Xpetra_TpetraMap_decl.hpp:69
Xpetra::TpetraCrsMatrix::isFillComplete
bool isFillComplete() const
Returns true if the matrix is in compute mode, i.e. if fillComplete() has been called.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:311
Xpetra::TpetraCrsMatrix::getNodeMaxNumRowEntries
size_t getNodeMaxNumRowEntries() const
Returns the maximum number of entries across all rows/columns on this node.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:302
Xpetra::TpetraCrsMatrix::getTpetra_CrsMatrixNonConst
RCP< Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > getTpetra_CrsMatrixNonConst() const
Get the underlying Tpetra matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:466
Teuchos::RCP::is_null
bool is_null() const
Teuchos::ArrayRCP::resize
void resize(const size_type n, const T &val=T())
Xpetra::TpetraVector
Definition: Xpetra_TpetraVector_decl.hpp:82
Xpetra::TpetraCrsMatrix::haveGlobalConstants
bool haveGlobalConstants() const
Definition: Xpetra_TpetraCrsMatrix_def.hpp:222
Xpetra::TpetraCrsMatrix::getAllValues
void getAllValues(ArrayRCP< const size_t > &rowptr, ArrayRCP< const LocalOrdinal > &colind, ArrayRCP< const Scalar > &values) const
Gets the 1D pointer arrays of the graph.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:218
Xpetra::TpetraCrsMatrix::scale
void scale(const Scalar &alpha)
Scale the current values of a matrix, this = alpha*this.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:207
Xpetra::TpetraCrsMatrix::isLocallyIndexed
bool isLocallyIndexed() const
If matrix indices are in the local range, this function returns true. Otherwise, this function return...
Definition: Xpetra_TpetraCrsMatrix_def.hpp:305
Xpetra::TpetraCrsMatrix::replaceLocalValues
void replaceLocalValues(LocalOrdinal localRow, const ArrayView< const LocalOrdinal > &cols, const ArrayView< const Scalar > &vals)
Replace matrix entries, using local IDs.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:189
Xpetra::TpetraCrsMatrix::getNodeNumCols
size_t getNodeNumCols() const
Returns the number of columns connected to the locally owned rows of this matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:284
Xpetra::TpetraCrsMatrix::replaceDomainMapAndImporter
void replaceDomainMapAndImporter(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &newDomainMap, Teuchos::RCP< const Import< LocalOrdinal, GlobalOrdinal, Node > > &newImporter)
Replaces the current domainMap and importer with the user-specified objects.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:236
Xpetra::TpetraCrsMatrix::isFillActive
bool isFillActive() const
Returns true if the matrix is in edit mode.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:314
Xpetra::TpetraCrsMatrix::setAllValues
void setAllValues(const ArrayRCP< size_t > &rowptr, const ArrayRCP< LocalOrdinal > &colind, const ArrayRCP< Scalar > &values)
Sets the 1D pointer arrays of the graph.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:214
Xpetra::TpetraCrsMatrix::getGlobalRowCopy
void getGlobalRowCopy(GlobalOrdinal GlobalRow, const ArrayView< GlobalOrdinal > &indices, const ArrayView< Scalar > &values, size_t &numEntries) const
Extract a list of entries in a specified global row of this matrix. Put into pre-allocated storage.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:329
Xpetra::TpetraCrsMatrix::~TpetraCrsMatrix
virtual ~TpetraCrsMatrix()
Destructor.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:176
Teuchos::RCP::get
T * get() const
Teuchos::ScalarTraits::magnitudeType
T magnitudeType
Xpetra::TpetraCrsMatrix::getLocalDiagCopy
void getLocalDiagCopy(Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &diag) const
Get a copy of the diagonal entries owned by this node, with local row indices.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:363
Teuchos
Xpetra::TpetraCrsMatrix::getNodeNumRows
size_t getNodeNumRows() const
Returns the number of matrix rows owned on the calling node.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:281
Xpetra::TpetraCrsMatrix::hasMatrix
bool hasMatrix() const
Does this have an underlying matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:454
Xpetra::TpetraCrsMatrix::getGlobalNumRows
global_size_t getGlobalNumRows() const
Number of global elements in the row map of this matrix.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:275
Xpetra::TpetraCrsMatrix::getDomainMap
const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getDomainMap() const
Returns the Map associated with the domain of this operator. This will be null until fillComplete() i...
Definition: Xpetra_TpetraCrsMatrix_def.hpp:338
Xpetra::TpetraCrsMatrix::insertGlobalValues
void insertGlobalValues(GlobalOrdinal globalRow, const ArrayView< const GlobalOrdinal > &cols, const ArrayView< const Scalar > &vals)
Insert matrix entries, using global IDs.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:179
Xpetra::TpetraCrsMatrix::rightScale
void rightScale(const Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &x)
Right scale operator with given vector values.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:394
TEUCHOS_TEST_FOR_EXCEPTION
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
XPETRA_MONITOR
#define XPETRA_MONITOR(funcName)
Definition: Xpetra_ConfigDefs.hpp:132
Copy
Copy
Xpetra::TpetraCrsMatrix::fillComplete
void fillComplete(const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &domainMap, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rangeMap, const RCP< ParameterList > &params=null)
Signal that data entry is complete, specifying domain and range maps.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:229
Teuchos::ETransp
ETransp
Xpetra::TpetraCrsMatrix::doExport
void doExport(const DistObject< char, LocalOrdinal, GlobalOrdinal, Node > &dest, const Import< LocalOrdinal, GlobalOrdinal, Node > &importer, CombineMode CM)
Export.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:415
Xpetra::TpetraCrsMatrix::getRangeMap
const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getRangeMap() const
Definition: Xpetra_TpetraCrsMatrix_def.hpp:341
Xpetra::CrsMatrix
Definition: Xpetra_CrsMatrix.hpp:74
Xpetra::ProfileType
ProfileType
Definition: Xpetra_ConfigDefs.hpp:189
Xpetra::TpetraCrsMatrix::getMap
Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getMap() const
Implements DistObject interface.
Definition: Xpetra_TpetraCrsMatrix_def.hpp:400