void PHX::EvaluatorWithBaseImpl<Traits>:: addEvaluatedField(const PHX::FieldTag& ft) { PHX::FTPredRef pred(ft); std::vector< Teuchos::RCP<FieldTag> >::iterator test = std::find_if(evaluated_.begin(), evaluated_.end(), pred); if ( test == evaluated_.end() ) evaluated_.push_back(ft.clone()); }
PHX::any PHX::EvaluationContainer<EvalT, Traits>::getFieldData(const PHX::FieldTag& f) { //return fields_[f.identifier()]; std::unordered_map<std::string,PHX::any>::iterator a= fields_.find(f.identifier()); if (a==fields_.end()){ std::cout << " PHX::EvaluationContainer<EvalT, Traits>::getFieldData can't find an f.identifier() "<< f.identifier() << std::endl; } return a->second; }
void PHX::DagManager<Traits>:: requireField(const PHX::FieldTag& t) { FTPredRef pred(t); std::vector< Teuchos::RCP<PHX::FieldTag> >::iterator i = std::find_if(required_fields_.begin(), required_fields_.end(), pred); if (i == required_fields_.end()) required_fields_.push_back(t.clone()); }
PHX::any PHX::EvaluationContainer<EvalT, Traits>::getFieldData(const PHX::FieldTag& f) { //return fields_[f.identifier()]; auto a = fields_.find(f.identifier()); if (a==fields_.end()){ std::cout << " PHX::EvaluationContainer<EvalT, Traits>::getFieldData can't find an f.identifier() "<< f.identifier() << std::endl; } return a->second; }
void PHX::EvaluationContainer<EvalT, Traits>:: bindField(const PHX::FieldTag& f, const PHX::any& a) { auto s = fields_.find(f.identifier()); if (s == fields_.end()) { std::stringstream st; st << "\n ERROR in PHX::EvaluationContainer<EvalT, Traits>::bindField():\n" << " Failed to bind field: \"" << f.identifier() << "\"\n" << " for evaluation type \"" << PHX::typeAsString<EvalT>() << "\".\n" << " This field is not used in the Evaluation DAG.\n"; throw std::runtime_error(st.str()); } // Set the new memory fields_[f.identifier()] = a; // Loop through evalautors and rebind the field auto& evaluators = this->dag_manager_.getEvaluatorsBindingField(f); for (auto& e : evaluators) e->bindField(f,a); }
bool PHX::Tag<DataT>::operator==(const PHX::FieldTag& t) const { return ( (this->name() == t.name()) && (this->dataLayout() == t.dataLayout()) && (this->dataTypeInfo() == t.dataTypeInfo()) ); }