PHX::EvaluatorManager< Traits > Class Template Reference

Class to sort which Evaluators should be called and the order in which to call them such that all dependencies are met. More...

#include <Phalanx_Evaluator_Manager.hpp>

List of all members.

Public Member Functions

 EvaluatorManager (const std::string &evaluator_type_name="???")
 ~EvaluatorManager ()
void requireField (const PHX::FieldTag &v)
 Require a variable to be evaluated.
void registerEvaluator (const Teuchos::RCP< PHX::Evaluator< Traits > > &p)
 Registers a variable provider with the manager.
void sortAndOrderEvaluators ()
void postRegistrationSetup (PHX::FieldManager< Traits > &vm)
void evaluateFields (typename Traits::EvalData d)
 Compute the required variables for the fill on the specific element.
void preEvaluate (typename Traits::PreEvalData d)
 This routine is called before each residual/Jacobian fill.
void postEvaluate (typename Traits::PostEvalData d)
 This routine is called after each residual/Jacobian fill.
void setEvaluationTypeName (const std::string &evaluation_type_name)
const std::vector
< Teuchos::RCP< PHX::FieldTag > > & 
getFieldTags ()
bool sortingCalled () const
void print (std::ostream &os) const
 Printing.

Protected Member Functions

void createProviderEvaluationOrder ()
 Create and arrange the dependency list in the correct order it should be evaluated.

Protected Attributes

std::vector< Teuchos::RCP
< PHX::FieldTag > > 
fields_
 Fields required by the user.
std::string evaluation_type_name_
bool sorting_called_
 Flag to tell the setup has been called.
Evaluator Objects
Stores information about variable provider objects.

std::vector< Teuchos::RCP
< PHX::Evaluator< Traits > > > 
varProviders
std::vector< std::vector
< Teuchos::RCP< PHX::FieldTag > > > 
providerVariables
std::vector< std::vector
< Teuchos::RCP< PHX::FieldTag > > > 
providerRequirements
std::vector< std::string > providerNames
Evaluation Order Objects
Stores information about the order that providers need to be called to evaluate fields correctly.

std::vector< int > providerEvalOrderIndex


Detailed Description

template<typename Traits>
class PHX::EvaluatorManager< Traits >

Class to sort which Evaluators should be called and the order in which to call them such that all dependencies are met.

Constructor & Destructor Documentation

template<typename Traits >
PHX::EvaluatorManager< Traits >::EvaluatorManager ( const std::string &  evaluator_type_name = "???"  )  [inline]

template<typename Traits >
PHX::EvaluatorManager< Traits >::~EvaluatorManager (  )  [inline]


Member Function Documentation

template<typename Traits >
void PHX::EvaluatorManager< Traits >::createProviderEvaluationOrder (  )  [inline, protected]

template<typename Traits >
void PHX::EvaluatorManager< Traits >::evaluateFields ( typename Traits::EvalData  d  )  [inline]

Compute the required variables for the fill on the specific element.

References PHX::EvaluatorManager< Traits >::providerEvalOrderIndex, and PHX::EvaluatorManager< Traits >::varProviders.

template<typename Traits >
const std::vector< Teuchos::RCP< PHX::FieldTag > > & PHX::EvaluatorManager< Traits >::getFieldTags (  )  [inline]

template<typename Traits >
void PHX::EvaluatorManager< Traits >::postEvaluate ( typename Traits::PostEvalData  d  )  [inline]

This routine is called after each residual/Jacobian fill.

This routine is called ONCE on the provider after the fill loop over elements is completed. This allows us to evaluate any post fill data. An example is to print out some statistics such as the maximum grid peclet number in a cell.

References PHX::EvaluatorManager< Traits >::providerEvalOrderIndex, and PHX::EvaluatorManager< Traits >::varProviders.

template<typename Traits >
void PHX::EvaluatorManager< Traits >::postRegistrationSetup ( PHX::FieldManager< Traits > &  vm  )  [inline]

Calls post registration setup on all variable providers.

References PHX::EvaluatorManager< Traits >::providerEvalOrderIndex, and PHX::EvaluatorManager< Traits >::varProviders.

template<typename Traits >
void PHX::EvaluatorManager< Traits >::preEvaluate ( typename Traits::PreEvalData  d  )  [inline]

This routine is called before each residual/Jacobian fill.

This routine is called ONCE on the provider before the fill loop over elements is started. This allows us to reset global objects between each fill. An example is to reset a provider that monitors the maximum grid peclet number in a cell. This call would zero out the maximum for a new fill.

References PHX::EvaluatorManager< Traits >::providerEvalOrderIndex, and PHX::EvaluatorManager< Traits >::varProviders.

template<typename Traits >
void PHX::EvaluatorManager< Traits >::print ( std::ostream &  os  )  const [inline]

template<typename Traits >
void PHX::EvaluatorManager< Traits >::registerEvaluator ( const Teuchos::RCP< PHX::Evaluator< Traits > > &  p  )  [inline]

Registers a variable provider with the manager.

Todo:
RPP: need to add a check to make sure multiple providers can't supply the same variable.

References PHX::EvaluatorManager< Traits >::providerNames, PHX::EvaluatorManager< Traits >::providerRequirements, PHX::EvaluatorManager< Traits >::providerVariables, and PHX::EvaluatorManager< Traits >::varProviders.

template<typename Traits >
void PHX::EvaluatorManager< Traits >::requireField ( const PHX::FieldTag v  )  [inline]

Require a variable to be evaluated.

References PHX::FieldTag::clone(), and PHX::EvaluatorManager< Traits >::fields_.

Referenced by PHX::EvaluatorManager< Traits >::sortAndOrderEvaluators().

Here is the call graph for this function:

Here is the caller graph for this function:

template<typename Traits >
void PHX::EvaluatorManager< Traits >::setEvaluationTypeName ( const std::string &  evaluation_type_name  )  [inline]

template<typename Traits >
void PHX::EvaluatorManager< Traits >::sortAndOrderEvaluators (  )  [inline]

Sets up all field dependencies. This should only be called once all variables and DOFs have been added and all providers have been registered. Sorts variable and creates dependency lists and evaluation order

References PHX::EvaluatorManager< Traits >::createProviderEvaluationOrder(), PHX::EvaluatorManager< Traits >::providerEvalOrderIndex, PHX::EvaluatorManager< Traits >::providerVariables, PHX::EvaluatorManager< Traits >::requireField(), and PHX::EvaluatorManager< Traits >::sorting_called_.

Here is the call graph for this function:

template<typename Traits >
bool PHX::EvaluatorManager< Traits >::sortingCalled (  )  const [inline]


Member Data Documentation

template<typename Traits>
std::string PHX::EvaluatorManager< Traits >::evaluation_type_name_ [protected]

template<typename Traits>
std::vector< Teuchos::RCP<PHX::FieldTag> > PHX::EvaluatorManager< Traits >::fields_ [protected]

template<typename Traits>
std::vector<int> PHX::EvaluatorManager< Traits >::providerEvalOrderIndex [protected]

template<typename Traits>
std::vector<std::string> PHX::EvaluatorManager< Traits >::providerNames [protected]

template<typename Traits>
std::vector< std::vector< Teuchos::RCP<PHX::FieldTag> > > PHX::EvaluatorManager< Traits >::providerRequirements [protected]

template<typename Traits>
std::vector< std::vector< Teuchos::RCP<PHX::FieldTag> > > PHX::EvaluatorManager< Traits >::providerVariables [protected]

template<typename Traits>
bool PHX::EvaluatorManager< Traits >::sorting_called_ [protected]

template<typename Traits>
std::vector< Teuchos::RCP<PHX::Evaluator<Traits> > > PHX::EvaluatorManager< Traits >::varProviders [protected]


The documentation for this class was generated from the following files:

Generated on Thu Dec 17 11:06:22 2009 for Phalanx by  doxygen 1.5.9