43 #ifndef PANZER_STK_MODEL_EVALUATOR_FACTORY_HPP 
   44 #define PANZER_STK_MODEL_EVALUATOR_FACTORY_HPP 
   51 #include "Teuchos_Ptr.hpp" 
   52 #include "Teuchos_Comm.hpp" 
   55 #include "Teuchos_ParameterListAcceptorDefaultBase.hpp" 
   57 #include "PanzerAdaptersSTK_config.hpp" 
   71 #include "Thyra_EpetraModelEvaluator.hpp" 
   73 #ifdef PANZER_HAVE_TEKO 
   74 #include "Teko_RequestHandler.hpp" 
   82   template<
typename ScalarT> 
class ModelEvaluator;
 
   83   template<
typename ScalarT> 
class LinearOpWithSolveFactoryBase;
 
   89   template <
typename> 
class LinearObjFactory;
 
   91   class BlockedDOFManager;
 
   96 namespace panzer_stk {
 
   99   class NOXObserverFactory;
 
  100   class RythmosObserverFactory;
 
  101   class WorksetFactory;
 
  103   template<
typename ScalarT>
 
  127                       bool meConstructionOn=
true);
 
  138     template <
typename BuilderT>
 
  139     int addResponse(
const std::string & responseName,
const std::vector<panzer::WorksetDescriptor> & wkstDesc,
const BuilderT & builder);
 
  142                         const bool write_graphviz_file=
false,
 
  143                         const std::string& graphviz_file_prefix=
"");
 
  161     const std::vector<Teuchos::RCP<panzer::PhysicsBlock> > & 
getPhysicsBlocks() 
const;
 
  195                               bool is_transient,
bool is_explicit,
 
  210                                 bool write_dot_files,
const std::string & dot_file_prefix) 
const;
 
  224                                 int workset_size) 
const;
 
  237                         bool is_transient,
double t_init) 
const;
 
  257                      #ifdef PANZER_HAVE_TEKO
 
  282                              const std::vector<panzer::BC> & bcs,
 
  290                              bool writeGraph,
const std::string & graphPrefix,
 
  291            bool write_field_managers,
const std::string & field_manager_prefix) 
const;
 
  336 template<
typename ScalarT>
 
  337 template <
typename BuilderT>
 
  339 addResponse(
const std::string & responseName,
const std::vector<panzer::WorksetDescriptor> & wkstDesc,
const BuilderT & builder)
 
  346   if(thyra_ep_me!=Teuchos::null && panzer_me==Teuchos::null) {
 
  351     return ep_panzer_me->
addResponse(responseName,wkstDesc,builder);
 
  353   else if(panzer_me!=Teuchos::null && thyra_ep_me==Teuchos::null) {
 
  354     return panzer_me->addResponse(responseName,wkstDesc,builder);
 
void setRythmosObserverFactory(const Teuchos::RCP< const panzer_stk::RythmosObserverFactory > &rythmos_observer_factory)
 
Interface for constructing a BCStrategy_TemplateManager. 
 
int addResponse(const std::string &responseName, const std::vector< WorksetDescriptor > &wkst_desc, const ResponseEvaluatorFactory_BuilderT &builder)
 
Teuchos::RCP< const panzer_stk::RythmosObserverFactory > m_rythmos_observer_factory
 
Allocates and initializes an equation set template manager. 
 
bool isBlockedAssembly() const 
Is blocked assembly? 
 
Teuchos::RCP< panzer::LinearObjFactory< panzer::Traits > > m_lin_obj_factory
 
Teuchos::RCP< panzer::ResponseLibrary< panzer::Traits > > m_response_library
 
Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > getPhysicsModelEvaluator()
 
bool useDynamicCoordinates() const 
 
Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > m_rome_me
 
Teuchos::RCP< panzer::GlobalIndexer > m_global_indexer
 
Teuchos::RCP< panzer::WorksetContainer > getWorksetContainer() const 
Get the workset container associated with the mesh database. 
 
Teuchos::RCP< panzer_stk::STK_Interface > m_mesh
 
Teuchos::RCP< Thyra::LinearOpWithSolveFactoryBase< double > > buildLOWSFactory(bool blockedAssembly, const Teuchos::RCP< const panzer::GlobalIndexer > &globalIndexer, const Teuchos::RCP< panzer::ConnManager > &conn_manager, const Teuchos::RCP< panzer_stk::STK_Interface > &mesh, const Teuchos::RCP< const Teuchos::MpiComm< int > > &mpi_comm) const 
 
void finalizeSolnWriterResponseLibrary(panzer::ResponseLibrary< panzer::Traits > &rl, const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const Teuchos::ParameterList &closure_models, int workset_size, Teuchos::ParameterList &user_data) const 
 
Teuchos::RCP< panzer::ConnManager > m_conn_manager
 
Teuchos::RCP< STK_MeshFactory > buildSTKMeshFactory(const Teuchos::ParameterList &mesh_params) const 
build STK mesh factory from a mesh parameter list 
 
int addResponse(const std::string &responseName, const std::vector< panzer::WorksetDescriptor > &wkstDesc, const BuilderT &builder)
 
Teuchos::RCP< panzer::WorksetContainer > m_wkstContainer
 
void setParameterList(Teuchos::RCP< Teuchos::ParameterList > const ¶mList)
 
Teuchos::RCP< panzer_stk::WorksetFactory > m_user_wkst_factory
 
Class that provides access to worksets on each element block and side set. 
 
Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > buildResponseOnlyModelEvaluator(const Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > &thyra_me, const Teuchos::RCP< panzer::GlobalData > &global_data, const Teuchos::RCP< Piro::RythmosSolver< ScalarT > > rythmosSolver=Teuchos::null, const Teuchos::Ptr< const panzer_stk::NOXObserverFactory > &in_nox_observer_factory=Teuchos::null, const Teuchos::Ptr< const panzer_stk::RythmosObserverFactory > &in_rythmos_observer_factory=Teuchos::null)
 
Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > getResponseOnlyModelEvaluator()
 
Teuchos::RCP< panzer::GlobalData > m_global_data
 
Teuchos::RCP< Thyra::ModelEvaluator< double > > cloneWithNewPhysicsBlocks(const Teuchos::RCP< Thyra::LinearOpWithSolveFactoryBase< ScalarT > > &solverFactory, const Teuchos::RCP< Teuchos::ParameterList > &physics_block_plist, const Teuchos::RCP< const panzer::EquationSetFactory > &eqset_factory, const panzer::BCStrategyFactory &bc_factory, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &user_cm_factory, bool is_transient, bool is_explicit, const Teuchos::Ptr< const Teuchos::ParameterList > &bc_list=Teuchos::null, const Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > &physics_me=Teuchos::null) const 
 
Teuchos::RCP< panzer_stk::STK_Interface > getMesh() const 
Get mesh object used to build model evaluator. 
 
Teuchos::RCP< const panzer_stk::NOXObserverFactory > m_nox_observer_factory
 
void addUserFieldsToMesh(panzer_stk::STK_Interface &mesh, const Teuchos::ParameterList &output_list) const 
Add the user fields specified by output_list to the mesh. 
 
void setNOXObserverFactory(const Teuchos::RCP< const panzer_stk::NOXObserverFactory > &nox_observer_factory)
 
void buildObjects(const Teuchos::RCP< const Teuchos::Comm< int > > &comm, const Teuchos::RCP< panzer::GlobalData > &global_data, const Teuchos::RCP< const panzer::EquationSetFactory > &eqset_factory, const panzer::BCStrategyFactory &bc_factory, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, bool meConstructionOn=true)
Builds the model evaluators for a panzer assembly. 
 
void buildResponses(const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const bool write_graphviz_file=false, const std::string &graphviz_file_prefix="")
 
bool useDynamicCoordinates_
 
const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > & getPhysicsBlocks() const 
 
Teuchos::RCP< Thyra::ModelEvaluator< ScalarT > > m_physics_me
 
Teuchos::RCP< panzer::LinearObjFactory< panzer::Traits > > getLinearObjFactory() const 
Get linear object factory used to build model evaluator. 
 
void finalizeMeshConstruction(const STK_MeshFactory &mesh_factory, const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const Teuchos::MpiComm< int > mpi_comm, STK_Interface &mesh) const 
 
void writeInitialConditions(const Thyra::ModelEvaluator< ScalarT > &model, const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const Teuchos::RCP< panzer::WorksetContainer > &wc, const Teuchos::RCP< const panzer::GlobalIndexer > &ugi, const Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > &lof, const Teuchos::RCP< panzer_stk::STK_Interface > &mesh, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const Teuchos::ParameterList &closure_model_pl, const Teuchos::ParameterList &user_data_pl, int workset_size) const 
Write the initial conditions to exodus. Note that this is entirely self contained. 
 
Teuchos::RCP< panzer::ResponseLibrary< panzer::Traits > > initializeSolnWriterResponseLibrary(const Teuchos::RCP< panzer::WorksetContainer > &wc, const Teuchos::RCP< const panzer::GlobalIndexer > &ugi, const Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > &lof, const Teuchos::RCP< panzer_stk::STK_Interface > &mesh) const 
 
#define TEUCHOS_ASSERT(assertion_test)
 
void setupInitialConditions(Thyra::ModelEvaluator< ScalarT > &model, panzer::WorksetContainer &wkstContainer, const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &cm_factory, const panzer::LinearObjFactory< panzer::Traits > &lof, const Teuchos::ParameterList &closure_pl, const Teuchos::ParameterList &initial_cond_pl, const Teuchos::ParameterList &user_data_pl, bool write_dot_files, const std::string &dot_file_prefix) const 
Setup the initial conditions in a model evaluator. Note that this is entirely self contained...
 
Teuchos::RCP< panzer::FieldManagerBuilder > buildFieldManagerBuilder(const Teuchos::RCP< panzer::WorksetContainer > &wc, const std::vector< Teuchos::RCP< panzer::PhysicsBlock > > &physicsBlocks, const std::vector< panzer::BC > &bcs, const panzer::EquationSetFactory &eqset_factory, const panzer::BCStrategyFactory &bc_factory, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &volume_cm_factory, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &bc_cm_factory, const Teuchos::ParameterList &closure_models, const panzer::LinearObjFactory< panzer::Traits > &lo_factory, const Teuchos::ParameterList &user_data, bool writeGraph, const std::string &graphPrefix, bool write_field_managers, const std::string &field_manager_prefix) const 
 
Teuchos::RCP< panzer::GlobalIndexer > getGlobalIndexer() const 
Get global indexer used to build model evaluator. 
 
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const 
 
Teuchos::RCP< const panzer::EquationSetFactory > m_eqset_factory
 
std::vector< Teuchos::RCP< panzer::PhysicsBlock > > m_physics_blocks
 
void setUserWorksetFactory(Teuchos::RCP< panzer_stk::WorksetFactory > &user_wkst_factory)
Set user defined workset factory. 
 
Teuchos::RCP< panzer::ConnManager > getConnManager() const 
Get connection manager. 
 
double getInitialTime(Teuchos::ParameterList &transient_ic_params, const panzer_stk::STK_Interface &mesh) const 
Gets the initial time from either the input parameter list or an exodus file. 
 
Teuchos::RCP< panzer::ResponseLibrary< panzer::Traits > > getResponseLibrary()
 
Teuchos::RCP< Thyra::ModelEvaluatorDefaultBase< double > > buildPhysicsModelEvaluator(bool buildThyraME, const Teuchos::RCP< panzer::FieldManagerBuilder > &fmb, const Teuchos::RCP< panzer::ResponseLibrary< panzer::Traits > > &rLibrary, const Teuchos::RCP< panzer::LinearObjFactory< panzer::Traits > > &lof, const std::vector< Teuchos::RCP< Teuchos::Array< std::string > > > &p_names, const std::vector< Teuchos::RCP< Teuchos::Array< double > > > &p_values, const Teuchos::RCP< Thyra::LinearOpWithSolveFactoryBase< ScalarT > > &solverFactory, const Teuchos::RCP< panzer::GlobalData > &global_data, bool is_transient, double t_init) const