116 void setParameterList(Teuchos::RCP<Teuchos::ParameterList>
const& paramList);
128 void buildObjects(
const Teuchos::RCP<
const Teuchos::Comm<int> >& comm,
129 const Teuchos::RCP<panzer::GlobalData>& global_data,
130 const Teuchos::RCP<const panzer::EquationSetFactory>& eqset_factory,
133 bool meConstructionOn=
true);
140 void setNOXObserverFactory(
const Teuchos::RCP<const panzer_stk::NOXObserverFactory>& nox_observer_factory);
142#ifdef PANZER_HAVE_TEMPUS
143 void setTempusObserverFactory(
const Teuchos::RCP<const panzer_stk::TempusObserverFactory>& tempus_observer_factory);
146 template <
typename BuilderT>
147 int addResponse(
const std::string & responseName,
const std::vector<panzer::WorksetDescriptor> & wkstDesc,
const BuilderT & builder);
150 const bool write_graphviz_file=
false,
151 const std::string& graphviz_file_prefix=
"");
155 Teuchos::RCP<Thyra::ModelEvaluator<ScalarT> >
157 const Teuchos::RCP<panzer::GlobalData>& global_data,
158#ifdef PANZER_HAVE_TEMPUS
159 const Teuchos::RCP<Piro::TempusSolverForwardOnly<ScalarT> > tempusSolver = Teuchos::null,
161 const Teuchos::Ptr<const panzer_stk::NOXObserverFactory> & in_nox_observer_factory=Teuchos::null
162#ifdef PANZER_HAVE_TEMPUS
163 ,
const Teuchos::Ptr<const panzer_stk::TempusObserverFactory> & in_tempus_observer_factory=Teuchos::null
174 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> > &
getPhysicsBlocks()
const;
177 Teuchos::RCP<panzer_stk::STK_Interface>
getMesh()
const
202 Teuchos::RCP<Thyra::ModelEvaluator<double> >
204 const Teuchos::RCP<Teuchos::ParameterList> & physics_block_plist,
205 const Teuchos::RCP<const panzer::EquationSetFactory>& eqset_factory,
208 bool is_transient,
bool is_explicit,
209 const Teuchos::Ptr<const Teuchos::ParameterList> & bc_list=Teuchos::null,
217 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
220 const Teuchos::ParameterList & closure_pl,
221 const Teuchos::ParameterList & initial_cond_pl,
222 const Teuchos::ParameterList & user_data_pl,
223 bool write_dot_files,
const std::string & dot_file_prefix)
const;
229 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
230 const Teuchos::RCP<panzer::WorksetContainer> & wc,
231 const Teuchos::RCP<const panzer::GlobalIndexer> & ugi,
233 const Teuchos::RCP<panzer_stk::STK_Interface> & mesh,
235 const Teuchos::ParameterList & closure_model_pl,
236 const Teuchos::ParameterList & user_data_pl,
237 int workset_size)
const;
241 Teuchos::RCP<Thyra::ModelEvaluatorDefaultBase<double> >
243 const Teuchos::RCP<panzer::FieldManagerBuilder> & fmb,
246 const std::vector<Teuchos::RCP<Teuchos::Array<std::string> > > & p_names,
247 const std::vector<Teuchos::RCP<Teuchos::Array<double> > > & p_values,
249 const Teuchos::RCP<panzer::GlobalData> & global_data,
250 bool is_transient,
double t_init)
const;
261 double getInitialTime(Teuchos::ParameterList& transient_ic_params,
264 Teuchos::RCP<Thyra::LinearOpWithSolveFactoryBase<double> >
266 const Teuchos::RCP<const panzer::GlobalIndexer> & globalIndexer,
267 const Teuchos::RCP<panzer::ConnManager> & conn_manager,
268 const Teuchos::RCP<panzer_stk::STK_Interface> & mesh,
270 #ifdef PANZER_HAVE_TEKO
271 ,
const Teuchos::RCP<Teko::RequestHandler> & req_handler=Teuchos::null
283 Teuchos::RCP<STK_MeshFactory>
buildSTKMeshFactory(
const Teuchos::ParameterList & mesh_params)
const;
286 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> > & physicsBlocks,
292 Teuchos::RCP<panzer::FieldManagerBuilder>
294 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> >& physicsBlocks,
295 const std::vector<panzer::BC> & bcs,
300 const Teuchos::ParameterList& closure_models,
302 const Teuchos::ParameterList& user_data,
303 bool writeGraph,
const std::string & graphPrefix,
304 bool write_field_managers,
const std::string & field_manager_prefix)
const;
309 const Teuchos::RCP<panzer::WorksetContainer> & wc,
310 const Teuchos::RCP<const panzer::GlobalIndexer> & ugi,
312 const Teuchos::RCP<panzer_stk::STK_Interface> & mesh)
const;
317 const std::vector<Teuchos::RCP<panzer::PhysicsBlock> > & physicsBlocks,
319 const Teuchos::ParameterList & closure_models,
320 int workset_size, Teuchos::ParameterList & user_data)
const;
326 Teuchos::RCP<Thyra::ModelEvaluator<ScalarT> >
m_rome_me;
331 Teuchos::RCP<panzer_stk::STK_Interface>
m_mesh;
342#ifdef PANZER_HAVE_TEMPUS
343 Teuchos::RCP<const panzer_stk::TempusObserverFactory> m_tempus_observer_factory;
354addResponse(
const std::string & responseName,
const std::vector<panzer::WorksetDescriptor> & wkstDesc,
const BuilderT & builder)
358#ifdef PANZER_HAVE_EPETRA_STACK
359 Teuchos::RCP<Thyra::EpetraModelEvaluator> thyra_ep_me = Teuchos::rcp_dynamic_cast<Thyra::EpetraModelEvaluator>(
m_physics_me);
360 Teuchos::RCP<PanzerME> panzer_me = Teuchos::rcp_dynamic_cast<PanzerME>(
m_physics_me);
362 if(thyra_ep_me!=Teuchos::null && panzer_me==Teuchos::null) {
364 Teuchos::RCP<EpetraExt::ModelEvaluator> ep_me = Teuchos::rcp_const_cast<EpetraExt::ModelEvaluator>(thyra_ep_me->getEpetraModel());
365 Teuchos::RCP<panzer::ModelEvaluator_Epetra> ep_panzer_me = Teuchos::rcp_dynamic_cast<panzer::ModelEvaluator_Epetra>(ep_me);
367 return ep_panzer_me->addResponse(responseName,wkstDesc,builder);
369 else if(panzer_me!=Teuchos::null && thyra_ep_me==Teuchos::null) {
370 return panzer_me->addResponse(responseName,wkstDesc,builder);
373 Teuchos::RCP<PanzerME> panzer_me = Teuchos::rcp_dynamic_cast<PanzerME>(
m_physics_me);
374 if(panzer_me!=Teuchos::null) {
375 return panzer_me->addResponse(responseName,wkstDesc,builder);
379 TEUCHOS_ASSERT(
false);
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