|
virtual | ~LinearObjFactory () |
|
template<typename BuilderT > |
void | buildGatherScatterEvaluators (const BuilderT &builder) |
|
virtual void | readVector (const std::string &identifier, LinearObjContainer &loc, int id) const =0 |
|
virtual void | writeVector (const std::string &identifier, const LinearObjContainer &loc, int id) const =0 |
|
virtual Teuchos::RCP
< LinearObjContainer > | buildLinearObjContainer () const =0 |
|
virtual Teuchos::RCP
< LinearObjContainer > | buildPrimitiveLinearObjContainer () const =0 |
|
virtual Teuchos::RCP
< LinearObjContainer > | buildGhostedLinearObjContainer () const =0 |
|
virtual Teuchos::RCP
< LinearObjContainer > | buildPrimitiveGhostedLinearObjContainer () const =0 |
|
virtual Teuchos::RCP
< ReadOnlyVector_GlobalEvaluationData > | buildReadOnlyDomainContainer () const =0 |
|
virtual Teuchos::RCP
< WriteVector_GlobalEvaluationData > | buildWriteDomainContainer () const =0 |
|
virtual void | globalToGhostContainer (const LinearObjContainer &container, LinearObjContainer &ghostContainer, int) const =0 |
|
virtual void | ghostToGlobalContainer (const LinearObjContainer &ghostContainer, LinearObjContainer &container, int) const =0 |
|
virtual void | initializeContainer (int, LinearObjContainer &loc) const =0 |
|
virtual void | initializeGhostedContainer (int, LinearObjContainer &loc) const =0 |
|
virtual void | adjustForDirichletConditions (const LinearObjContainer &localBCRows, const LinearObjContainer &globalBCRows, LinearObjContainer &ghostedObjs, bool zeroVectorRows=false, bool adjustX=false) const =0 |
|
virtual void | applyDirichletBCs (const LinearObjContainer &counter, LinearObjContainer &result) const =0 |
|
virtual Teuchos::MpiComm< int > | getComm () const =0 |
|
template<typename EvalT > |
Teuchos::RCP< PHX::Evaluator
< Traits > > | buildScatter (const Teuchos::ParameterList &pl) const |
| Use preconstructed scatter evaluators. More...
|
|
template<typename EvalT > |
Teuchos::RCP< PHX::Evaluator
< Traits > > | buildGather (const Teuchos::ParameterList &pl) const |
| Use preconstructed gather evaluators. More...
|
|
template<typename EvalT > |
Teuchos::RCP< PHX::Evaluator
< Traits > > | buildGatherTangent (const Teuchos::ParameterList &pl) const |
| Use preconstructed gather evaluators. More...
|
|
template<typename EvalT > |
Teuchos::RCP< PHX::Evaluator
< Traits > > | buildGatherDomain (const Teuchos::ParameterList &pl) const |
| Use preconstructed gather evaluators. More...
|
|
template<typename EvalT > |
Teuchos::RCP< PHX::Evaluator
< Traits > > | buildGatherOrientation (const Teuchos::ParameterList &pl) const |
| Use preconstructed gather evaluators. More...
|
|
template<typename EvalT > |
Teuchos::RCP< PHX::Evaluator
< Traits > > | buildScatterDirichlet (const Teuchos::ParameterList &pl) const |
| Use preconstructed dirichlet scatter evaluators. More...
|
|
virtual Teuchos::RCP< const
panzer::GlobalIndexer > | getDomainGlobalIndexer () const =0 |
| Get the domain global indexer object associated with this factory. More...
|
|
virtual Teuchos::RCP< const
panzer::GlobalIndexer > | getRangeGlobalIndexer () const =0 |
| Get the range global indexer object associated with this factory. More...
|
|
virtual void | beginFill (LinearObjContainer &) const |
|
virtual void | endFill (LinearObjContainer &) const |
|
template<typename Traits>
class panzer::LinearObjFactory< Traits >
Abstract factory that builds the linear algebra objects required for the assembly including the gather/scatter evaluator objects.
The interface for construction of the gather scatter is externally very simple, but in fact under the hood it is quite complex. The user of this factory object simply calls buildGather(const Teuchos::ParameterList & pl) const
, buildScatter(const Teuchos::ParameterList & pl) const
, or buildScatterDirichlet(const Teuchos::ParameterList & pl) const
.
To implement a version of this class an author must overide all the linear algebra construction functions. The new version should also call the base class version of buildGatherScatterEvaluators
in the constructor with a reference to itself passed in as an argument. This requires the new version of the class to implement the following functions
This builds the correct scatter/gather/scatter-dirichlet evaluator objects and returns them as a CloneableEvaluator
(These evaluators must overide the CloneableEvaluator::clone
function which takes a parameter list). The cloned evaluators will be the ones actually returned from the buildGather(const Teuchos::ParameterList & pl) const
, buildGatherDomain(const Teuchos::ParameterList & pl) const
, buildGatherOrientation(const Teuchos::ParameterList & pl) const
, buildScatter(const Teuchos::ParameterList & pl) const
, or buildScatterDirichlet(const Teuchos::ParameterList & pl) const
functions.
Definition at line 103 of file Panzer_LinearObjFactory.hpp.
template<typename Traits>
Build a container with all the neccessary linear algebra objects, purely on the single physics. This gives linear algebra objects that are relevant for a single physics solve. In many cases this is simply a call to buildLinearObjContainer however, in a few important cases (for instance in stochastic galerkin methods) this will return a container for a single instantiation of the physics. This is the non-ghosted version.
Implemented in panzer::BlockedTpetraLinearObjFactory< Traits, ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT >, panzer::BlockedEpetraLinearObjFactory< Traits, LocalOrdinalT >, and panzer::TpetraLinearObjFactory< Traits, ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT >.
template<typename Traits>
Build a container with all the neccessary linear algebra objects, purely on the single physics. This gives linear algebra objects that are relevant for a single physics solve. In many cases this is simply a call to buildGhostedLinearObjContainer however, in a few important cases (for instance in stochastic galerkin methods) this will return a container for a single instantiation of the physics. This is the ghosted version.
Implemented in panzer::BlockedTpetraLinearObjFactory< Traits, ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT >, panzer::BlockedEpetraLinearObjFactory< Traits, LocalOrdinalT >, and panzer::TpetraLinearObjFactory< Traits, ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT >.
template<typename Traits>
Adjust the residual vector and Jacobian matrix (if they exist) for applied dirichlet conditions. The adjustment considers if a boundary condition was set globally and locally and based on that result adjust the ghosted matrix and residual vector so that when they are summed across processors they resulting Dirichlet condition is correct.
- Parameters
-
[in] | localBCRows | Linear object container uses the X vector to indicate locally set dirichlet conditions. The format is if an entry of the vector is nonzero then it was set as a dirichlet condition. |
[in] | globalBCRows | Linear object container uses the X vector to indicate globally set dirichlet conditions. The format is if an entry of the vector is nonzero then it was set as a dirichlet condition. |
[in,out] | ghostedObjs | Ghosted linear object container storing the residual and jacobian matrix for any boundary conditions set. The matrix will be modified by zeroing any rows that are set as nonzero in globalBCRows but zero in localBCRows (similarly for the vector). If a row is nonzero in both localBCRows and globalBCRows then those rows in both the matrix and the residual vector are devided by the corresponding entry in the globalBCRows . |
[in] | zeroVectorRows | Instead of preserving (and scaling) the vector rows, setting this to true will zero them instead. |
Implemented in panzer::BlockedTpetraLinearObjFactory< Traits, ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT >, panzer::BlockedEpetraLinearObjFactory< Traits, LocalOrdinalT >, and panzer::TpetraLinearObjFactory< Traits, ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT >.
template<typename Traits>
Adjust a vector by replacing selected rows with the value of the evaluated dirichlet conditions. This is handled through the standard container mechanism.
- Parameters
-
[in] | counter | Contains a counter vector (the "x" vector) indicating which rows contain dirichlet conditions by having a non zero entry. The dirichlet condition values are specified in the "f" vector. |
[in,out] | result | The vector to be modifed is the "f" vector. |
Implemented in panzer::BlockedTpetraLinearObjFactory< Traits, ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT >, panzer::BlockedEpetraLinearObjFactory< Traits, LocalOrdinalT >, and panzer::TpetraLinearObjFactory< Traits, ScalarT, LocalOrdinalT, GlobalOrdinalT, NodeT >.