11 #ifndef __Panzer_TpetraLinearObjFactory_impl_hpp__
12 #define __Panzer_TpetraLinearObjFactory_impl_hpp__
16 #ifdef PANZER_HAVE_EPETRA_STACK
23 #include "Thyra_TpetraVectorSpace.hpp"
24 #include "Thyra_TpetraLinearOp.hpp"
27 #include "Tpetra_MultiVector.hpp"
28 #include "Tpetra_Vector.hpp"
29 #include "Tpetra_CrsMatrix.hpp"
39 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
43 : comm_(comm), gidProvider_(gidProvider)
52 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
57 : comm_(comm), gidProvider_(gidProvider), colGidProvider_(colGidProvider)
66 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
74 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
84 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
94 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
109 globalToGhostTpetraVector(*t_in.
get_x(),*t_out.get_x(),
true);
112 globalToGhostTpetraVector(*t_in.
get_dxdt(),*t_out.get_dxdt(),
true);
115 globalToGhostTpetraVector(*t_in.
get_f(),*t_out.get_f(),
false);
118 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
134 ghostToGlobalTpetraVector(*t_in.
get_x(),*t_out.get_x(),
true);
137 ghostToGlobalTpetraVector(*t_in.
get_f(),*t_out.get_f(),
false);
140 ghostToGlobalTpetraMatrix(*t_in.
get_A(),*t_out.get_A());
143 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
147 Tpetra::Vector<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> & out,
bool col)
const
152 RCP<ExportType> exporter = col ? getGhostedColExport() : getGhostedExport();
154 out.doExport(in,*exporter,Tpetra::ADD);
157 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
161 Tpetra::CrsMatrix<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> & out)
const
169 out.setAllToScalar(0.0);
170 out.doExport(in,*exporter,Tpetra::ADD);
171 out.fillComplete(out.getDomainMap(),out.getRangeMap());
174 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
178 Tpetra::Vector<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT> & out,
bool col)
const
183 RCP<ImportType> importer = col ? getGhostedColImport() : getGhostedImport();
185 out.doImport(in,*importer,Tpetra::INSERT);
188 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
194 bool zeroVectorRows,
bool adjustX)
const
208 if(adjustX) f = t_ghosted.get_x();
212 const VectorType & global_bcs = *(t_globalBCRows.get_f());
217 for(Ordinal i=0;i<local_bcs_array.
size();i++) {
218 if(global_bcs_array[i]==0.0)
221 if(local_bcs_array[i]==0.0 || zeroVectorRows) {
228 std::size_t numEntries = 0;
229 std::size_t sz = A->getNumEntriesInLocalRow(i);
230 typename CrsMatrixType::nonconst_local_inds_host_view_type indices(
"indices", sz);
231 typename CrsMatrixType::nonconst_values_host_view_type values(
"values", sz);
233 A->getLocalRowCopy(i,indices,values,numEntries);
235 for(std::size_t c=0;c<numEntries;c++)
238 A->replaceLocalValues(i,indices,values);
244 double scaleFactor = global_bcs_array[i];
248 f_array[i] /= scaleFactor;
250 std::size_t numEntries = 0;
251 std::size_t sz = A->getNumEntriesInLocalRow(i);
252 typename CrsMatrixType::nonconst_local_inds_host_view_type indices(
"indices", sz);
253 typename CrsMatrixType::nonconst_values_host_view_type values(
"values", sz);
255 A->getLocalRowCopy(i,indices,values,numEntries);
257 for(std::size_t c=0;c<numEntries;c++)
258 values(c) /= scaleFactor;
260 A->replaceLocalValues(i,indices,values);
266 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
280 template<
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
281 typename GlobalOrdinalT,
typename NodeT>
288 LocalOrdinalT, GlobalOrdinalT, NodeT>;
289 auto ged =
rcp(
new TVROGED);
290 ged->initialize(getGhostedImport(), getGhostedColMap(), getColMap());
294 #ifdef PANZER_HAVE_EPETRA_STACK
300 template<
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
301 typename GlobalOrdinalT,
typename NodeT>
306 using std::logic_error;
309 auto ged =
rcp(
new EVWGED);
313 #endif // PANZER_HAVE_EPETRA_STACK
315 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
323 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
328 if(domainSpace_==Teuchos::null) {
330 domainSpace_ = Thyra::tpetraVectorSpace<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT>(getMap());
332 domainSpace_ = Thyra::tpetraVectorSpace<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT>(getColMap());
339 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
344 if(rangeSpace_==Teuchos::null)
345 rangeSpace_ = Thyra::tpetraVectorSpace<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT>(getMap());
351 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
356 return Thyra::tpetraLinearOp<ScalarT,LocalOrdinalT,GlobalOrdinalT,NodeT>(getThyraRangeSpace(),getThyraDomainSpace(),getTpetraMatrix());
362 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
368 initializeContainer(mem,tloc);
371 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
380 if((mem & LOC::X) == LOC::X)
381 loc.
set_x(getTpetraColVector());
383 if((mem & LOC::DxDt) == LOC::DxDt)
386 if((mem & LOC::F) == LOC::F)
387 loc.
set_f(getTpetraVector());
389 if((mem & LOC::Mat) == LOC::Mat)
390 loc.
set_A(getTpetraMatrix());
393 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
399 initializeGhostedContainer(mem,tloc);
402 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
411 if((mem & LOC::X) == LOC::X)
412 loc.
set_x(getGhostedTpetraColVector());
414 if((mem & LOC::DxDt) == LOC::DxDt)
415 loc.
set_dxdt(getGhostedTpetraColVector());
417 if((mem & LOC::F) == LOC::F) {
418 loc.
set_f(getGhostedTpetraVector());
422 if((mem & LOC::Mat) == LOC::Mat) {
423 loc.
set_A(getGhostedTpetraMatrix());
432 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
437 if(map_==Teuchos::null) map_ = buildMap();
443 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
448 if(cMap_==Teuchos::null) cMap_ = buildColMap();
453 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
458 if(ghostedMap_==Teuchos::null) ghostedMap_ = buildGhostedMap();
463 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
468 if(cGhostedMap_==Teuchos::null) cGhostedMap_ = buildGhostedColMap();
474 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
479 if(graph_==Teuchos::null) graph_ = buildGraph();
484 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
489 if(ghostedGraph_==Teuchos::null) ghostedGraph_ = buildGhostedGraph();
491 return ghostedGraph_;
494 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
499 if(ghostedImporter_==Teuchos::null)
502 return ghostedImporter_;
505 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
511 ghostedColImporter_ = getGhostedImport();
513 if(ghostedColImporter_==Teuchos::null)
516 return ghostedColImporter_;
519 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
524 if(ghostedExporter_==Teuchos::null)
527 return ghostedExporter_;
530 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
536 ghostedColExporter_ = getGhostedExport();
538 if(ghostedColExporter_==Teuchos::null)
541 return ghostedColExporter_;
547 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
552 std::vector<GlobalOrdinalT> indices;
555 gidProvider_->getOwnedIndices(indices);
560 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
568 std::vector<GlobalOrdinalT> indices;
571 colGidProvider_->getOwnedIndices(indices);
577 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
582 std::vector<GlobalOrdinalT> indices;
585 gidProvider_->getOwnedAndGhostedIndices(indices);
591 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
597 return buildGhostedMap();
599 std::vector<GlobalOrdinalT> indices;
602 colGidProvider_->getOwnedAndGhostedIndices(indices);
608 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
625 graph->doExport( *oGraph, *exporter, Tpetra::INSERT );
626 graph->fillComplete(cMap,rMap);
631 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
640 std::vector<std::string> elementBlockIds;
641 gidProvider_->getElementBlockIds(elementBlockIds);
644 colGidProvider = hasColProvider_ ? colGidProvider_ : gidProvider_;
650 std::vector<size_t> nEntriesPerRow(rMap->getLocalNumElements(), 0);
652 std::vector<std::string>::const_iterator blockItr;
653 for(blockItr=elementBlockIds.begin();blockItr!=elementBlockIds.end();++blockItr) {
654 std::string blockId = *blockItr;
657 const std::vector<LocalOrdinalT> & elements = gidProvider_->getElementBlock(blockId);
660 std::vector<GlobalOrdinalT> gids;
661 std::vector<GlobalOrdinalT> col_gids;
664 for(std::size_t i=0;i<elements.size();i++) {
665 gidProvider_->getElementGIDs(elements[i],gids);
670 for (
typename std::vector<LocalOrdinalT>::const_iterator eit = aes.begin();
671 eit != aes.end(); ++eit) {
672 std::vector<GlobalOrdinalT> other_col_gids;
674 col_gids.insert(col_gids.end(), other_col_gids.begin(), other_col_gids.end());
678 for(std::size_t j=0;j<gids.size();j++){
679 LocalOrdinalT lid = rMap->getLocalElement(gids[j]);
680 nEntriesPerRow[lid] += col_gids.size();
687 nEntriesPerRowView));
690 for(blockItr=elementBlockIds.begin();blockItr!=elementBlockIds.end();++blockItr) {
691 std::string blockId = *blockItr;
694 const std::vector<LocalOrdinalT> & elements = gidProvider_->getElementBlock(blockId);
697 std::vector<GlobalOrdinalT> gids;
698 std::vector<GlobalOrdinalT> col_gids;
701 for(std::size_t i=0;i<elements.size();i++) {
702 gidProvider_->getElementGIDs(elements[i],gids);
707 for (
typename std::vector<LocalOrdinalT>::const_iterator eit = aes.begin();
708 eit != aes.end(); ++eit) {
709 std::vector<GlobalOrdinalT> other_col_gids;
711 col_gids.insert(col_gids.end(), other_col_gids.begin(), other_col_gids.end());
715 for(std::size_t j=0;j<gids.size();j++)
716 graph->insertGlobalIndices(gids[j],col_gids);
721 graph->fillComplete(cMap,rMap);
726 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
735 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
744 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
753 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
762 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
769 tMat->fillComplete(tMat->getDomainMap(),tMat->getRangeMap());
774 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
781 tMat->fillComplete(tMat->getDomainMap(),tMat->getRangeMap());
786 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
794 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
804 template <
typename Traits,
typename ScalarT,
typename LocalOrdinalT,
typename GlobalOrdinalT,
typename NodeT>
811 A->fillComplete(A->getDomainMap(),A->getRangeMap());
816 #endif // __Panzer_TpetraLinearObjFactory_impl_hpp__
virtual const Teuchos::RCP< Tpetra::Export< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedExport() const
get exporter for converting an overalapped object to a "normal" object
virtual void globalToGhostContainer(const LinearObjContainer &container, LinearObjContainer &ghostContainer, int) const
Teuchos::RCP< Tpetra::Vector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > > getTpetraVector() const
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedColMap() const
const Teuchos::RCP< CrsMatrixType > get_A() const
virtual Teuchos::MpiComm< int > getComm() const
bool is_null(const boost::shared_ptr< T > &p)
virtual Teuchos::RCP< LinearObjContainer > buildGhostedLinearObjContainer() const
void initializeGhostedContainer(int, LinearObjContainer &loc) const
const Teuchos::RCP< VectorType > get_x() const
virtual Teuchos::RCP< ReadOnlyVector_GlobalEvaluationData > buildReadOnlyDomainContainer() const
Teuchos::RCP< Tpetra::Vector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedTpetraVector() const
virtual const Teuchos::RCP< Tpetra::CrsGraph< LocalOrdinalT, GlobalOrdinalT, NodeT > > buildGhostedGraph() const
void clear()
Wipe out stored data.
bool is_null(const std::shared_ptr< T > &p)
virtual Teuchos::RCP< const Thyra::VectorSpaceBase< ScalarT > > getThyraDomainSpace() const
Get the domain space.
Teuchos::RCP< Tpetra::CrsMatrix< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > > getTpetraMatrix() const
virtual const Teuchos::RCP< Tpetra::Import< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedImport() const
get importer for converting an overalapped object to a "normal" object
const Teuchos::RCP< VectorType > get_dxdt() const
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
void initializeContainer(int, LinearObjContainer &loc) const
Teuchos::RCP< Tpetra::Vector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > > getTpetraColVector() const
T_To & dyn_cast(T_From &from)
virtual void endFill(LinearObjContainer &loc) const
virtual const Teuchos::RCP< Tpetra::Import< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedColImport() const
virtual void beginFill(LinearObjContainer &loc) const
Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > MapType
virtual const Teuchos::RCP< const Teuchos::Comm< int > > getTeuchosComm() const
get exporter for converting an overalapped object to a "normal" object
Tpetra::Import< LocalOrdinalT, GlobalOrdinalT, NodeT > ImportType
virtual const Teuchos::RCP< Tpetra::Export< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedColExport() const
Teuchos::RCP< Tpetra::CrsMatrix< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedTpetraMatrix() const
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > getColMap() const
virtual void adjustForDirichletConditions(const LinearObjContainer &localBCRows, const LinearObjContainer &globalBCRows, LinearObjContainer &ghostedObjs, bool zeroVectorRows=false, bool adjustX=false) const
virtual const std::vector< LocalOrdinal > & getAssociatedNeighbors(const LocalOrdinal &el) const =0
void globalToGhostTpetraVector(const Tpetra::Vector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > &in, Tpetra::Vector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > &out, bool col) const
void set_x(const Teuchos::RCP< VectorType > &in)
void ghostToGlobalTpetraMatrix(const Tpetra::CrsMatrix< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > &in, Tpetra::CrsMatrix< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > &out) const
Tpetra::Export< LocalOrdinalT, GlobalOrdinalT, NodeT > ExportType
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Tpetra::CrsMatrix< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > CrsMatrixType
virtual Teuchos::RCP< LinearObjContainer > buildLinearObjContainer() const
void setRequiresDirichletAdjustment(bool b)
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedMap() const
get the ghosted map from the matrix
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > buildColMap() const
virtual const Teuchos::RCP< Tpetra::CrsGraph< LocalOrdinalT, GlobalOrdinalT, NodeT > > buildGraph() const
virtual Teuchos::RCP< const ConnManager > getConnManager() const =0
Returns the connection manager currently being used.
void set_dxdt(const Teuchos::RCP< VectorType > &in)
Teuchos::RCP< Tpetra::Vector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedTpetraColVector() const
virtual ~TpetraLinearObjFactory()
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > getMap() const
get the map from the matrix
This class provides a boundary exchange communication mechanism for vectors.
virtual const Teuchos::RCP< Tpetra::CrsGraph< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGraph() const
get the graph of the crs matrix
void set_A(const Teuchos::RCP< CrsMatrixType > &in)
TpetraLinearObjFactory(const Teuchos::RCP< const Teuchos::Comm< int > > &comm, const Teuchos::RCP< const GlobalIndexer > &gidProvider)
void set_f(const Teuchos::RCP< VectorType > &in)
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > buildMap() const
Teuchos::RCP< const GlobalIndexer > colGidProvider_
virtual Teuchos::RCP< const Thyra::VectorSpaceBase< ScalarT > > getThyraRangeSpace() const
Get the range space.
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > buildGhostedColMap() const
virtual void ghostToGlobalContainer(const LinearObjContainer &ghostContainer, LinearObjContainer &container, int) const
virtual void getElementGIDs(panzer::LocalOrdinal localElmtId, std::vector< panzer::GlobalOrdinal > &gids, const std::string &blockIdHint="") const =0
Get the global IDs for a particular element. This function overwrites the gids variable.
virtual bool hasAssociatedNeighbors() const =0
void buildGatherScatterEvaluators(const BuilderT &builder)
virtual Teuchos::RCP< Thyra::LinearOpBase< ScalarT > > getThyraMatrix() const
Get a matrix operator.
#define TEUCHOS_ASSERT(assertion_test)
void ghostToGlobalTpetraVector(const Tpetra::Vector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > &in, Tpetra::Vector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > &out, bool col) const
const Teuchos::RCP< VectorType > get_f() const
Tpetra::CrsGraph< LocalOrdinalT, GlobalOrdinalT, NodeT > CrsGraphType
Tpetra::Vector< ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT > VectorType
virtual const Teuchos::RCP< Tpetra::CrsGraph< LocalOrdinalT, GlobalOrdinalT, NodeT > > getGhostedGraph() const
get the ghosted graph of the crs matrix
virtual const Teuchos::RCP< Tpetra::Map< LocalOrdinalT, GlobalOrdinalT, NodeT > > buildGhostedMap() const
virtual void applyDirichletBCs(const LinearObjContainer &counter, LinearObjContainer &result) const