virtual void buildAndRegisterGatherAndOrientationEvaluators(PHX::FieldManager<panzer::Traits>& fm, const panzer::PhysicsBlock& side_pb, const LinearObjFactory<panzer::Traits> & lof, const Teuchos::ParameterList& user_data) const { side_pb.buildAndRegisterGatherAndOrientationEvaluators(fm,lof,user_data); side_pb.buildAndRegisterDOFProjectionsToIPEvaluators(fm,user_data); }
virtual void buildAndRegisterGatherAndOrientationEvaluators(PHX::FieldManager<panzer::Traits>& fm, const panzer::PhysicsBlock& side_pb, const LinearObjFactory<panzer::Traits> & lof, const Teuchos::ParameterList& user_data) const { using Teuchos::RCP; using Teuchos::rcp; side_pb.buildAndRegisterGatherAndOrientationEvaluators(fm,lof,user_data); side_pb.buildAndRegisterDOFProjectionsToIPEvaluators(fm,Teuchos::ptrFromRef(lof),user_data); // add in side normals const std::map<int,Teuchos::RCP<panzer::IntegrationRule> > & int_rules = side_pb.getIntegrationRules(); for(std::map<int,Teuchos::RCP<panzer::IntegrationRule> >::const_iterator itr=int_rules.begin(); itr!=int_rules.end();++itr) { std::stringstream s; s << "Side Normal:" << side_pb.cellData().side(); Teuchos::ParameterList p(s.str()); p.set<std::string>("Name","Side Normal"); p.set<int>("Side ID",side_pb.cellData().side()); p.set< Teuchos::RCP<panzer::IntegrationRule> >("IR", Teuchos::rcp_const_cast<panzer::IntegrationRule>(itr->second)); p.set<bool>("Normalize",true); RCP< PHX::Evaluator<panzer::Traits> > op = rcp(new panzer::Normals<EvalT,panzer::Traits>(p)); fm.template registerEvaluator<EvalT>(op); } }
void Example::BCStrategy_Interface_WeakDirichletMatch<EvalT>:: buildAndRegisterGatherAndOrientationEvaluators(PHX::FieldManager<panzer::Traits>& fm, const panzer::PhysicsBlock& pb, const panzer::LinearObjFactory<panzer::Traits> & lof, const Teuchos::ParameterList& user_data) const { using Teuchos::RCP; using Teuchos::rcp; using std::vector; using std::map; using std::string; using std::pair; // Gather pb.buildAndRegisterGatherAndOrientationEvaluators(fm,lof,user_data); }
void panzer::BCStrategy_Interface_DefaultImpl<EvalT>:: buildAndRegisterGatherAndOrientationEvaluators(PHX::FieldManager<panzer::Traits>& fm, const panzer::PhysicsBlock& pb, const panzer::LinearObjFactory<panzer::Traits> & lof, const Teuchos::ParameterList& user_data) const { using Teuchos::ParameterList; using Teuchos::RCP; using Teuchos::rcp; using std::vector; using std::map; using std::string; using std::pair; // Gather pb.buildAndRegisterGatherAndOrientationEvaluators(fm,lof,user_data); // Iterate over each residual contribution for (vector<boost::tuples::tuple<std::string,std::string,std::string,int,Teuchos::RCP<panzer::PureBasis>,Teuchos::RCP<panzer::IntegrationRule> > >::const_iterator eq = m_residual_contributions.begin(); eq != m_residual_contributions.end(); ++eq) { const string& residual_name = eq->get<0>(); const string& dof_name = eq->get<1>(); const string& flux_name = eq->get<2>(); //const int& integration_order = eq->get<3>(); const RCP<const panzer::PureBasis> basis = eq->get<4>(); const RCP<const panzer::IntegrationRule> ir = eq->get<5>(); // Normals evaluator { std::stringstream s; s << "Side Normal:" << pb.cellData().side(); ParameterList p(s.str()); p.set<std::string>("Name","Side Normal"); p.set<int>("Side ID",pb.cellData().side()); p.set< Teuchos::RCP<panzer::IntegrationRule> >("IR", Teuchos::rcp_const_cast<panzer::IntegrationRule>(ir)); p.set<bool>("Normalize",true); RCP< PHX::Evaluator<panzer::Traits> > op = rcp(new panzer::Normals<EvalT,panzer::Traits>(p)); this->template registerEvaluator<EvalT>(fm, op); } // Interface Residual evaluator: residual += phi n dot flux { ParameterList p("Interface Residual: " + residual_name + " to DOF: " + dof_name); p.set("Residual Name", residual_name); p.set("DOF Name",dof_name); p.set("Flux Name", flux_name); p.set("Normal Name", "Side Normal"); p.set("Basis", basis); p.set("IR", ir); RCP< PHX::Evaluator<panzer::Traits> > op = rcp(new panzer::InterfaceResidual<EvalT,panzer::Traits>(p)); this->template registerEvaluator<EvalT>(fm, op); } } }