Panzer Version of the Day
Loading...
Searching...
No Matches
Panzer_TpetraLinearObjFactory_decl.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Panzer: A partial differential equation assembly
4// engine for strongly coupled complex multiphysics systems
5//
6// Copyright 2011 NTESS and the Panzer contributors.
7// SPDX-License-Identifier: BSD-3-Clause
8// *****************************************************************************
9// @HEADER
10
11#ifndef __Panzer_TpetraLinearObjFactory_decl_hpp__
12#define __Panzer_TpetraLinearObjFactory_decl_hpp__
13
14#include <map>
15
16// Tpetra includes
17#include "Tpetra_Map.hpp"
18#include "Tpetra_CrsGraph.hpp"
19#include "Tpetra_CrsMatrix.hpp"
20#include "Tpetra_MultiVector.hpp"
21#include "Tpetra_Import.hpp"
22#include "Tpetra_Export.hpp"
23#include "Tpetra_FECrsGraph.hpp"
24#include "Tpetra_FECrsMatrix.hpp"
25#include "Tpetra_FEMultiVector.hpp"
26
27#include "PanzerDiscFE_config.hpp"
31#include "Panzer_ScatterResidual_Tpetra.hpp"
32#include "Panzer_ScatterDirichletResidual_Tpetra.hpp"
33#include "Panzer_GatherSolution_Tpetra.hpp"
34#include "Panzer_GatherTangent_Tpetra.hpp"
35#include "Panzer_GatherOrientation.hpp"
38
39#include"Panzer_NodeType.hpp"
40
41#include "Teuchos_RCP.hpp"
42#include "Teuchos_DefaultMpiComm.hpp"
43
44namespace panzer {
45
46template <typename Traits,typename ScalarT,typename LocalOrdinalT,typename GlobalOrdinalT,typename NodeT=panzer::TpetraNodeType>
48 , public ThyraObjFactory<ScalarT> {
49public:
51 typedef Tpetra::Vector<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> VectorType;
52 typedef Tpetra::MultiVector<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> MultiVectorType;
53 typedef Tpetra::CrsMatrix<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> CrsMatrixType;
54 typedef Tpetra::CrsGraph<LocalOrdinalT,GlobalOrdinalT,NodeT> CrsGraphType;
55 typedef Tpetra::Map<LocalOrdinalT,GlobalOrdinalT,NodeT> MapType;
56 typedef Tpetra::Import<LocalOrdinalT,GlobalOrdinalT,NodeT> ImportType;
57 typedef Tpetra::Export<LocalOrdinalT,GlobalOrdinalT,NodeT> ExportType;
58 typedef Tpetra::FECrsGraph<LocalOrdinalT,GlobalOrdinalT,NodeT> FECrsGraphType;
59 typedef Tpetra::FECrsMatrix<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> FECrsMatrixType;
60 typedef Tpetra::FEMultiVector<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> FEMultiVectorType;
61
66 TpetraLinearObjFactory(const Teuchos::RCP<const Teuchos::Comm<int> > & comm,
67 const Teuchos::RCP<const GlobalIndexer> & gidProvider,
68 bool useFEAssembly = false);
69
70 TpetraLinearObjFactory(const Teuchos::RCP<const Teuchos::Comm<int> > & comm,
71 const Teuchos::RCP<const GlobalIndexer> & rowProvider,
72 const Teuchos::RCP<const GlobalIndexer> & colProvider,
73 bool useFEAssembly = false);
74
76
77/*************** Linear object factory methods *******************/
78
79 virtual void readVector(const std::string & /* identifier */, LinearObjContainer & /* loc */, int /* id */) const
80 { TEUCHOS_ASSERT(false); }
81
82 virtual void writeVector(const std::string & /* identifier */, const LinearObjContainer & /* loc */, int /* id */) const
83 { TEUCHOS_ASSERT(false); }
84
85 virtual Teuchos::RCP<LinearObjContainer> buildLinearObjContainer() const;
86
87 virtual Teuchos::RCP<LinearObjContainer> buildPrimitiveLinearObjContainer() const
88 { return buildLinearObjContainer(); }
89
90 virtual Teuchos::RCP<LinearObjContainer> buildGhostedLinearObjContainer() const;
91
92 virtual Teuchos::RCP<LinearObjContainer> buildPrimitiveGhostedLinearObjContainer() const
94
95 virtual void globalToGhostContainer(const LinearObjContainer & container,
96 LinearObjContainer & ghostContainer,int) const;
97 virtual void ghostToGlobalContainer(const LinearObjContainer & ghostContainer,
98 LinearObjContainer & container,int) const;
99
106 virtual void adjustForDirichletConditions(const LinearObjContainer & localBCRows,
107 const LinearObjContainer & globalBCRows,
108 LinearObjContainer & ghostedObjs,
109 bool zeroVectorRows=false, bool adjustX=false) const;
110
114 virtual void applyDirichletBCs(const LinearObjContainer & counter,
115 LinearObjContainer & result) const;
116
121 virtual Teuchos::RCP<ReadOnlyVector_GlobalEvaluationData> buildReadOnlyDomainContainer() const;
122
123#ifdef PANZER_HAVE_EPETRA_STACK
128 virtual Teuchos::RCP<WriteVector_GlobalEvaluationData> buildWriteDomainContainer() const;
129#endif
130
133 virtual Teuchos::MpiComm<int> getComm() const;
134
136 template <typename EvalT>
137 Teuchos::RCP<panzer::CloneableEvaluator> buildScatter() const
139
141 template <typename EvalT>
142 Teuchos::RCP<panzer::CloneableEvaluator > buildGather() const
144
146 template <typename EvalT>
147 Teuchos::RCP<panzer::CloneableEvaluator > buildGatherTangent() const
149
151 template <typename EvalT>
152 Teuchos::RCP<panzer::CloneableEvaluator > buildGatherDomain() const
154
156 template <typename EvalT>
157 Teuchos::RCP<panzer::CloneableEvaluator > buildGatherOrientation() const
159
161 template <typename EvalT>
162 Teuchos::RCP<panzer::CloneableEvaluator> buildScatterDirichlet() const
164
165/*************** From ThyraObjFactory *******************/
166
168 virtual Teuchos::RCP<const Thyra::VectorSpaceBase<ScalarT> > getThyraDomainSpace() const;
169 virtual Teuchos::RCP<const Thyra::VectorSpaceBase<ScalarT> > getGhostedThyraDomainSpace() const;
170
172 virtual Teuchos::RCP<const Thyra::VectorSpaceBase<ScalarT> > getThyraRangeSpace() const;
173
175 virtual Teuchos::RCP<Thyra::LinearOpBase<ScalarT> > getThyraMatrix() const;
176
177/*************** Tpetra construction functions *******************/
178
179 Teuchos::RCP<Tpetra::Vector<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> > getGhostedTpetraVector() const;
180 Teuchos::RCP<Tpetra::Vector<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> > getGhostedTpetraColVector() const;
181 Teuchos::RCP<Tpetra::Vector<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> > getTpetraVector() const;
182 Teuchos::RCP<Tpetra::Vector<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> > getTpetraColVector() const;
183 Teuchos::RCP<Tpetra::CrsMatrix<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> > getTpetraMatrix() const;
184 Teuchos::RCP<Tpetra::CrsMatrix<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> > getGhostedTpetraMatrix() const;
185
186/*************** FE (finite-element) construction functions *******************/
187
189 bool useFEAssembly() const { return useFEAssembly_; }
190
192 Teuchos::RCP<FECrsGraphType> getFEGraph() const;
193
195 Teuchos::RCP<FECrsMatrixType> getFEMatrix() const;
196
198
204 Teuchos::RCP<FEMultiVectorType> getFEMultiVector(std::size_t numVectors=1) const;
205
211 Teuchos::RCP<FEMultiVectorType> getFEColMultiVector(std::size_t numVectors=1) const;
212
213/*************** Generic helper functions for container setup *******************/
214
220 void initializeContainer(int,LinearObjContainer & loc) const;
221
228
235
242
243/*************** Tpetra based methods *******************/
244
246 virtual const Teuchos::RCP<Tpetra::Map<LocalOrdinalT,GlobalOrdinalT,NodeT> > getMap() const;
247 virtual const Teuchos::RCP<Tpetra::Map<LocalOrdinalT,GlobalOrdinalT,NodeT> > getColMap() const;
248
250 virtual const Teuchos::RCP<Tpetra::Map<LocalOrdinalT,GlobalOrdinalT,NodeT> > getGhostedMap() const;
251 virtual const Teuchos::RCP<Tpetra::Map<LocalOrdinalT,GlobalOrdinalT,NodeT> > getGhostedColMap() const;
252
254 virtual const Teuchos::RCP<Tpetra::CrsGraph<LocalOrdinalT,GlobalOrdinalT,NodeT> > getGraph() const;
255
257 virtual const Teuchos::RCP<Tpetra::CrsGraph<LocalOrdinalT,GlobalOrdinalT,NodeT> > getGhostedGraph() const;
258
260 virtual const Teuchos::RCP<Tpetra::Import<LocalOrdinalT,GlobalOrdinalT,NodeT> > getGhostedImport() const;
261 virtual const Teuchos::RCP<Tpetra::Import<LocalOrdinalT,GlobalOrdinalT,NodeT> > getGhostedColImport() const;
262
264 virtual const Teuchos::RCP<Tpetra::Export<LocalOrdinalT,GlobalOrdinalT,NodeT> > getGhostedExport() const;
265 virtual const Teuchos::RCP<Tpetra::Export<LocalOrdinalT,GlobalOrdinalT,NodeT> > getGhostedColExport() const;
266
268 virtual const Teuchos::RCP<const Teuchos::Comm<int> > getTeuchosComm() const;
269
273 Teuchos::RCP<const panzer::GlobalIndexer> getDomainGlobalIndexer() const
275
277 Teuchos::RCP<const panzer::GlobalIndexer> getRangeGlobalIndexer() const
278 { return gidProvider_; }
279
280 virtual void beginFill(LinearObjContainer & loc) const;
281
287 virtual void beginFill(LinearObjContainer & ghostContainer,
288 const LinearObjContainer & container) const;
289
290 virtual void endFill(LinearObjContainer & loc) const;
291
297 virtual void endFill(LinearObjContainer & ghostContainer,
298 const LinearObjContainer & container) const;
299
300protected:
301
302 void ghostToGlobalTpetraVector(const Tpetra::MultiVector<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> & in,
303 Tpetra::MultiVector<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> & out, bool col) const;
304 void ghostToGlobalTpetraMatrix(const Tpetra::CrsMatrix<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> & in,
305 Tpetra::CrsMatrix<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> & out) const;
306 void globalToGhostTpetraVector(const Tpetra::MultiVector<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT>& in,
307 Tpetra::MultiVector<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> & out, bool col) const;
308
309 // get the map from the matrix
310 virtual const Teuchos::RCP<Tpetra::Map<LocalOrdinalT,GlobalOrdinalT,NodeT> > buildMap() const;
311 virtual const Teuchos::RCP<Tpetra::Map<LocalOrdinalT,GlobalOrdinalT,NodeT> > buildColMap() const;
312 virtual const Teuchos::RCP<Tpetra::Map<LocalOrdinalT,GlobalOrdinalT,NodeT> > buildGhostedMap() const;
313 virtual const Teuchos::RCP<Tpetra::Map<LocalOrdinalT,GlobalOrdinalT,NodeT> > buildGhostedColMap() const;
314
315 // get the graph of the crs matrix
316 virtual const Teuchos::RCP<Tpetra::CrsGraph<LocalOrdinalT,GlobalOrdinalT,NodeT> > buildGraph() const;
317 virtual const Teuchos::RCP<Tpetra::CrsGraph<LocalOrdinalT,GlobalOrdinalT,NodeT> > buildGhostedGraph() const;
318
319 // build the FE graph (owned+shared/owned unified via Tpetra::FECrsGraph)
320 virtual const Teuchos::RCP<FECrsGraphType> buildFEGraph() const;
321
322 // storage for Tpetra graphs and maps
323 Teuchos::RCP<const Teuchos::Comm<int> > comm_;
324 mutable Teuchos::RCP<Tpetra::Map<LocalOrdinalT,GlobalOrdinalT,NodeT> > map_;
325 mutable Teuchos::RCP<Tpetra::Map<LocalOrdinalT,GlobalOrdinalT,NodeT> > cMap_;
326 mutable Teuchos::RCP<Tpetra::Map<LocalOrdinalT,GlobalOrdinalT,NodeT> > ghostedMap_;
327 mutable Teuchos::RCP<Tpetra::Map<LocalOrdinalT,GlobalOrdinalT,NodeT> > cGhostedMap_;
328 mutable Teuchos::RCP<Tpetra::CrsGraph<LocalOrdinalT,GlobalOrdinalT,NodeT> > graph_;
329 mutable Teuchos::RCP<Tpetra::CrsGraph<LocalOrdinalT,GlobalOrdinalT,NodeT> > ghostedGraph_;
330 mutable Teuchos::RCP<FECrsGraphType> feGraph_;
331
345 mutable const FECrsMatrixType * feAssemblyOpenOn_ = nullptr;
346 mutable Teuchos::RCP<ImportType> ghostedImporter_;
347 mutable Teuchos::RCP<ImportType> ghostedColImporter_;
348 mutable Teuchos::RCP<ExportType> ghostedExporter_;
349 mutable Teuchos::RCP<ExportType> ghostedColExporter_;
350
351 Teuchos::RCP<const GlobalIndexer> gidProvider_;
352 Teuchos::RCP<const GlobalIndexer> colGidProvider_;
353
356
357 mutable Teuchos::RCP<const Thyra::VectorSpaceBase<double> > rangeSpace_;
358 mutable Teuchos::RCP<const Thyra::VectorSpaceBase<double> > domainSpace_;
359 mutable Teuchos::RCP<const Thyra::VectorSpaceBase<double> > ghostedDomainSpace_;
360};
361
362}
363
364#endif
PHX::MDField< ScalarT, panzer::Cell, panzer::IP > result
A field that will be used to build up the result of the integral we're performing.
Gathers orientations per field from the global indexer and stores them in the field manager.
Gathers solution values from the Newton solution vector into the nodal fields of the field manager.
Gathers tangent vectors dx/dp for computing df/dx*dx/dp + df/dp into the nodal fields of the field ma...
Abstract, linear-algebra-library-agnostic container for the vectors and matrix used in a nonlinear/tr...
Pushes residual values into the residual vector for a Newton-based solve.
Pushes residual values into the residual vector for a Newton-based solve.
Tpetra-backed implementation of LinearObjContainer.
void ghostToGlobalTpetraMatrix(const Tpetra::CrsMatrix< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > &in, Tpetra::CrsMatrix< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > &out) const
virtual const Teuchos::RCP< Tpetra::Export< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedExport() const
get exporter for converting an overalapped object to a "normal" object
Teuchos::RCP< const Thyra::VectorSpaceBase< double > > domainSpace_
void initializeContainer(int, LinearObjContainer &loc) const
bool useFEAssembly() const
True if this factory was constructed with FE assembly enabled.
Teuchos::RCP< panzer::CloneableEvaluator > buildScatter() const
Use preconstructed scatter evaluators.
virtual void applyDirichletBCs(const LinearObjContainer &counter, LinearObjContainer &result) const
virtual Teuchos::RCP< LinearObjContainer > buildGhostedLinearObjContainer() const
Tpetra::FEMultiVector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > FEMultiVectorType
virtual const Teuchos::RCP< const Teuchos::Comm< int > > getTeuchosComm() const
get exporter for converting an overalapped object to a "normal" object
Teuchos::RCP< panzer::CloneableEvaluator > buildScatterDirichlet() const
Use preconstructed dirichlet scatter evaluators.
Teuchos::RCP< panzer::CloneableEvaluator > buildGatherTangent() const
Use preconstructed gather evaluators.
Teuchos::RCP< Tpetra::Vector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedTpetraColVector() const
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > getColMap() const
Teuchos::RCP< FEMultiVectorType > getFEColMultiVector(std::size_t numVectors=1) const
Build a domain-space (solution-side) FE multivector.
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > buildGhostedColMap() const
virtual Teuchos::RCP< LinearObjContainer > buildPrimitiveGhostedLinearObjContainer() const
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedColMap() const
Teuchos::RCP< FEMultiVectorType > getFEMultiVector(std::size_t numVectors=1) const
Build a new Tpetra::FEMultiVector compatible with the FE graph.
virtual Teuchos::RCP< LinearObjContainer > buildPrimitiveLinearObjContainer() const
virtual const Teuchos::RCP< Tpetra::CrsGraph< LocalOrdinalT, GlobalOrdinalT, NodeT > > buildGraph() const
virtual const Teuchos::RCP< Tpetra::CrsGraph< LocalOrdinalT, GlobalOrdinalT, NodeT > > buildGhostedGraph() const
virtual void readVector(const std::string &, LinearObjContainer &, int) const
Teuchos::RCP< panzer::CloneableEvaluator > buildGatherOrientation() const
Use preconstructed gather evaluators.
Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > MapType
Teuchos::RCP< Tpetra::Vector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > > getTpetraVector() const
void globalToGhostTpetraVector(const Tpetra::MultiVector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > &in, Tpetra::MultiVector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > &out, bool col) const
virtual Teuchos::RCP< const Thyra::VectorSpaceBase< ScalarT > > getGhostedThyraDomainSpace() const
Get the domain space.
Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > cGhostedMap_
Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > cMap_
virtual const Teuchos::RCP< Tpetra::Export< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedColExport() const
virtual void beginFill(LinearObjContainer &loc) const
Open a container for filling. Takes either a ghosted or an owned container.
Teuchos::RCP< Tpetra::CrsGraph< LocalOrdinalT, GlobalOrdinalT, NodeT > > graph_
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedMap() const
get the ghosted map from the matrix
virtual void adjustForDirichletConditions(const LinearObjContainer &localBCRows, const LinearObjContainer &globalBCRows, LinearObjContainer &ghostedObjs, bool zeroVectorRows=false, bool adjustX=false) const
Tpetra::FECrsGraph< LocalOrdinalT, GlobalOrdinalT, NodeT > FECrsGraphType
TpetraLinearObjContainer< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > ContainerType
Tpetra::Export< LocalOrdinalT, GlobalOrdinalT, NodeT > ExportType
Teuchos::RCP< FECrsGraphType > getFEGraph() const
Get the (cached) FE graph, built via the Tpetra::FECrsGraph "V2" constructor.
Teuchos::RCP< const panzer::GlobalIndexer > getRangeGlobalIndexer() const
Get the domain global indexer this factory was created with.
virtual Teuchos::RCP< ReadOnlyVector_GlobalEvaluationData > buildReadOnlyDomainContainer() const
virtual Teuchos::RCP< Thyra::LinearOpBase< ScalarT > > getThyraMatrix() const
Get a matrix operator.
Tpetra::CrsGraph< LocalOrdinalT, GlobalOrdinalT, NodeT > CrsGraphType
Teuchos::RCP< const Thyra::VectorSpaceBase< double > > rangeSpace_
Teuchos::RCP< Tpetra::CrsMatrix< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedTpetraMatrix() const
void initializeGhostedContainer(int, LinearObjContainer &loc) const
Teuchos::RCP< const panzer::GlobalIndexer > getDomainGlobalIndexer() const
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > buildGhostedMap() const
Teuchos::RCP< panzer::CloneableEvaluator > buildGatherDomain() const
Use preconstructed gather evaluators.
Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > map_
Teuchos::RCP< Tpetra::Vector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedTpetraVector() const
virtual const Teuchos::RCP< Tpetra::CrsGraph< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGraph() const
get the graph of the crs matrix
Tpetra::FECrsMatrix< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > FECrsMatrixType
Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > ghostedMap_
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > buildMap() const
virtual void ghostToGlobalContainer(const LinearObjContainer &ghostContainer, LinearObjContainer &container, int) const
virtual void endFill(LinearObjContainer &loc) const
Close a container after filling. Takes either a ghosted or an owned container.
Tpetra::MultiVector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > MultiVectorType
virtual Teuchos::RCP< const Thyra::VectorSpaceBase< ScalarT > > getThyraDomainSpace() const
Get the domain space.
virtual Teuchos::RCP< LinearObjContainer > buildLinearObjContainer() const
Teuchos::RCP< const GlobalIndexer > colGidProvider_
Teuchos::RCP< Tpetra::Vector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > > getTpetraColVector() const
virtual const Teuchos::RCP< Tpetra::CrsGraph< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedGraph() const
get the ghosted graph of the crs matrix
Tpetra::CrsMatrix< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > CrsMatrixType
Teuchos::RCP< FECrsMatrixType > getFEMatrix() const
Build a new Tpetra::FECrsMatrix over the (cached) FE graph. Fresh object per call.
void ghostToGlobalTpetraVector(const Tpetra::MultiVector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > &in, Tpetra::MultiVector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > &out, bool col) const
virtual const Teuchos::RCP< Tpetra::Import< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedColImport() const
virtual Teuchos::RCP< const Thyra::VectorSpaceBase< ScalarT > > getThyraRangeSpace() const
Get the range space.
virtual Teuchos::MpiComm< int > getComm() const
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > getMap() const
get the map from the matrix
Teuchos::RCP< const Teuchos::Comm< int > > comm_
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > buildColMap() const
virtual void globalToGhostContainer(const LinearObjContainer &container, LinearObjContainer &ghostContainer, int) const
Teuchos::RCP< panzer::CloneableEvaluator > buildGather() const
Use preconstructed gather evaluators.
virtual const Teuchos::RCP< Tpetra::Import< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedImport() const
get importer for converting an overalapped object to a "normal" object
Teuchos::RCP< Tpetra::CrsGraph< LocalOrdinalT, GlobalOrdinalT, NodeT > > ghostedGraph_
Tpetra::Vector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > VectorType
virtual const Teuchos::RCP< FECrsGraphType > buildFEGraph() const
Tpetra::Import< LocalOrdinalT, GlobalOrdinalT, NodeT > ImportType
Teuchos::RCP< const Thyra::VectorSpaceBase< double > > ghostedDomainSpace_
Teuchos::RCP< Tpetra::CrsMatrix< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > > getTpetraMatrix() const
virtual void writeVector(const std::string &, const LinearObjContainer &, int) const
Teuchos::RCP< const GlobalIndexer > gidProvider_