38 const Teuchos::ParameterList& models,
40 const Teuchos::RCP<panzer::IntegrationRule>& ir,
41 const Teuchos::ParameterList& default_params,
42 const Teuchos::ParameterList& user_data,
43 const Teuchos::RCP<panzer::GlobalData>& global_data,
51 using Teuchos::ParameterList;
54 RCP< vector< RCP<Evaluator<panzer::Traits> > > > evaluators =
55 rcp(
new vector< RCP<Evaluator<panzer::Traits> > > );
57 if (!models.isSublist(model_id)) {
58 std::stringstream msg;
59 msg <<
"Falied to find requested model, \"" << model_id
60 <<
"\" for equation set:\n" << std::endl;
61 TEUCHOS_TEST_FOR_EXCEPTION(!models.isSublist(model_id), std::logic_error, msg.str());
64 const ParameterList& my_model = models.sublist(model_id);
68 Teuchos::ParameterList nonlist_params(models.name());
69 for (ParameterList::ConstIterator model_it = models.begin();
70 model_it != models.end(); ++model_it) {
72 std::string key = model_it->first;
73 if(!model_it->second.isList())
74 nonlist_params.setEntry(key,model_it->second);
79 ParameterList copy_of_my_model = nonlist_params;
80 copy_of_my_model.sublist(model_id) = my_model;
85 (*factory)->getAsObject<EvalT>()->setThrowOnModelNotFound(
false);
86 RCP< vector< RCP<Evaluator<panzer::Traits> > > > tmp_evaluators =
87 (*factory)->getAsObject<EvalT>()->buildClosureModels(model_id,copy_of_my_model,fl,ir,default_params,user_data,global_data,fm);
89 if (tmp_evaluators->size() > 0) {
90 for (vector< RCP<Evaluator<panzer::Traits> > >::const_iterator eval = tmp_evaluators->begin(); eval != tmp_evaluators->end(); ++eval)
91 evaluators->push_back(*eval);
Teuchos::RCP< std::vector< Teuchos::RCP< PHX::Evaluator< panzer::Traits > > > > buildClosureModels(const std::string &model_id, const Teuchos::ParameterList &models, const panzer::FieldLayoutLibrary &fl, const Teuchos::RCP< panzer::IntegrationRule > &ir, const Teuchos::ParameterList &default_params, const Teuchos::ParameterList &user_data, const Teuchos::RCP< panzer::GlobalData > &global_data, PHX::FieldManager< panzer::Traits > &fm) const