43 #include "PanzerAdaptersSTK_config.hpp"
45 #include "Panzer_STK_IOClosureModel_Factory.hpp"
46 #include "Panzer_STK_ScatterCellAvgQuantity.hpp"
47 #include "Panzer_STK_ScatterCellAvgVector.hpp"
48 #include "Panzer_STK_ScatterCellQuantity.hpp"
49 #include "Panzer_STK_ScatterFields.hpp"
70 userCMF_->buildClosureModels(model_id,models,fl,ir,default_params,user_data,global_data,fm);
74 rcp(
new std::vector<
RCP<Evaluator<panzer::Traits> > > );
77 std::string block_id = default_params.
get<std::string>(
"Block ID");
79 if(!blockIdEvaluated_[block_id]) {
80 typedef std::map<std::string,std::vector<std::string> > BlockIdToFields;
82 int worksetsize = ir->
dl_scalar->extent(0);
86 if (user_data.
isParameter(
"Variable Scale Factors Map"))
92 BlockIdToFields::const_iterator cellAvgItr = blockIdToCellAvgFields_.find(block_id);
93 if(cellAvgItr!=blockIdToCellAvgFields_.end() ) {
100 pl.
set(
"Field Names",fieldNames);
101 pl.
set(
"Scatter Name", block_id+
"_Cell_Avg_Fields");
102 pl.
set(
"Variable Scale Factors Map", varScaleFactors);
108 evaluators->push_back(eval);
110 blockIdEvaluated_[block_id] =
true;
114 BlockIdToFields::const_iterator cellAvgVecItr = blockIdToCellAvgVectors_.find(block_id);
115 if(cellAvgVecItr != blockIdToCellAvgVectors_.end() ) {
120 pl.
set(
"Mesh",mesh_);
122 pl.
set(
"Field Names",fieldNames);
123 pl.
set(
"Scatter Name", block_id+
"_Cell_Avg_Vectors");
124 pl.
set(
"Variable Scale Factors Map", varScaleFactors);
130 evaluators->push_back(eval);
132 blockIdEvaluated_[block_id] =
true;
136 BlockIdToFields::const_iterator cellItr = blockIdToCellFields_.find(block_id);
137 if(cellItr!=blockIdToCellFields_.end() ) {
142 pl.
set(
"Mesh",mesh_);
143 pl.
set(
"Workset Size",worksetsize);
144 pl.
set(
"Field Names",fieldNames);
145 pl.
set(
"Scatter Name", block_id+
"_Cell_Fields");
146 pl.
set(
"Variable Scale Factors Map", varScaleFactors);
152 evaluators->push_back(eval);
154 blockIdEvaluated_[block_id] =
true;
158 BlockIdToFields::const_iterator nodalItr = blockIdToNodalFields_.find(block_id);
159 if(nodalItr!=blockIdToNodalFields_.end() ) {
165 std::vector<double> scale_factors_(fieldNames->size(),1.0);
166 if (!varScaleFactors.
is_null()) {
167 for(
size_t f=0; f < fieldNames->size(); ++f) {
168 std::map<std::string,double>::const_iterator f2s_itr = varScaleFactors->find((*fieldNames)[f]);
169 if(f2s_itr != varScaleFactors->end()) {
170 scale_factors_[f] = f2s_itr->second;
181 evaluators->push_back(eval);
183 blockIdEvaluated_[block_id] =
true;
187 evaluators->insert(evaluators->end(),user_evals->begin(),user_evals->end());
192 #ifdef HAVE_PANZER_EXPLICIT_INSTANTIATION
T & get(const std::string &name, T def_value)
ParameterList & set(std::string const &name, T const &value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
#define PANZER_INSTANTIATE_TEMPLATE_CLASS_ONE_T(name)
bool isParameter(const std::string &name) const
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Teuchos::RCP< PHX::DataLayout > dl_scalar
Data layout for scalar fields.
Teuchos::RCP< const shards::CellTopology > topology
Description and data layouts associated with a particular basis.
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