11#ifndef PANZER_EQUATION_SET_DEFAULTIMPL_DECL_HPP
12#define PANZER_EQUATION_SET_DEFAULTIMPL_DECL_HPP
25 template<
typename Traits>
class FieldManager;
30 template <
typename EvalT>
37 const int& default_integration_order,
39 const Teuchos::RCP<panzer::GlobalData>& global_data,
40 const bool build_transient_support);
47 const Teuchos::ParameterList& user_data)
const;
52 const Teuchos::ParameterList& user_data)
const;
56 const Teuchos::ParameterList& user_data)
const = 0;
60 const Teuchos::RCP<panzer::IntegrationRule>& ir,
62 const Teuchos::ParameterList& user_data)
const;
66 const Teuchos::RCP<panzer::IntegrationRule>& ir,
68 const Teuchos::ParameterList& models,
69 const Teuchos::ParameterList& user_data)
const;
73 const Teuchos::RCP<panzer::IntegrationRule>& ir,
75 const std::string & model_name,
76 const Teuchos::ParameterList& models,
77 const Teuchos::ParameterList& user_data)
const;
82 const std::string& model_name,
83 const Teuchos::ParameterList& models,
85 const Teuchos::ParameterList& user_data)
const;
89 virtual const std::vector<std::pair<std::string,Teuchos::RCP<panzer::PureBasis> > > &
getProvidedDOFs()
const;
93 virtual const std::map<int,Teuchos::RCP<panzer::IntegrationRule> > &
getIntegrationRules()
const;
99 virtual std::string
getType()
const;
112 void getAddedDOFs(std::vector<std::string> & dofNames)
const;
128 void updateDOF(
const std::string & dofName,
130 int integrationOrder = -1);
179 void addDOF(
const std::string & dofName,
180 const std::string & basisType,
181 const int & basisOrder,
182 const int integrationOrder = -1,
183 const std::string residualName =
"",
184 const std::string scatterName =
"");
195 const std::string & gradName =
"");
206 const std::string & curlName =
"");
216 void addDOFDiv(
const std::string & dofName,
217 const std::string & divName =
"");
228 const std::string & dotName =
"");
255 Teuchos::RCP<panzer::PureBasis>
getBasisForDOF(
const std::string& dof_name)
const;
258 Teuchos::RCP<panzer::IntegrationRule>
getIntRuleForDOF(
const std::string& dof_name)
const;
277 const std::string dof_name,
278 const std::vector<std::string>& residual_contributions,
279 const std::string residual_field_name =
"")
const;
297 const std::string dof_name,
298 const std::vector<std::string>& residual_contributions,
299 const std::vector<double>& scale_contributions,
300 const std::string residual_field_name =
"")
const;
316 ,
grad(
std::make_pair(false,
""))
317 ,
curl(
std::make_pair(false,
""))
318 ,
div(
std::make_pair(false,
""))
324 Teuchos::RCP<panzer::PureBasis>
basis;
326 Teuchos::RCP<panzer::IntegrationRule>
intRule;
329 std::pair<bool,std::string>
grad;
330 std::pair<bool,std::string>
curl;
331 std::pair<bool,std::string>
div;
334 void print(std::ostream & os)
const {
335 os <<
"DOF Desc = \"" <<
dofName <<
"\": "
338 <<
"Grad = (" <<
grad.first <<
", \"" <<
grad.second <<
"\"), "
339 <<
"Curl = (" <<
curl.first <<
", \"" <<
curl.second <<
"\"), "
340 <<
"Div = (" <<
div.first <<
", \"" <<
div.second <<
"\"), "
367 std::map<std::string,std::pair<Teuchos::RCP<panzer::PureBasis>,Teuchos::RCP<std::vector<std::string> > > >
m_basis_to_dofs;
370 typedef typename std::map<std::string,std::pair<Teuchos::RCP<panzer::PureBasis>,Teuchos::RCP<std::vector<std::string> > > >::const_iterator
BasisIterator;
378 std::vector<std::pair<std::string,Teuchos::RCP<panzer::PureBasis> > >
m_provided_dofs;
Data for determining cell topology and dimensionality.
virtual std::string getElementBlockId() const
std::map< std::string, Teuchos::RCP< panzer::PureBasis > > m_unique_bases
Key is the basis name from panzer::PureBasis::name() and value is the corresponding PureBasis.
void addDOFGrad(const std::string &dofName, const std::string &gradName="")
void addDOFCurl(const std::string &dofName, const std::string &curlName="")
int getBasisOrder(const std::string &dofName) const
Get the basis order for an existing degree of freedom.
virtual void buildAndRegisterGatherAndOrientationEvaluators(PHX::FieldManager< panzer::Traits > &fm, const panzer::FieldLibrary &fl, const LinearObjFactory< panzer::Traits > &lof, const Teuchos::ParameterList &user_data) const
std::map< std::string, std::pair< Teuchos::RCP< panzer::PureBasis >, Teuchos::RCP< std::vector< std::string > > > >::const_iterator BasisIterator
For convenience, declare a basis iterator.
const bool m_build_transient_support
int getIntegrationOrder(const std::string &dofName) const
Get the integration order for an existing degree of freedom.
const panzer::CellData m_cell_data
void addClosureModel(const std::string &closure_model)
Teuchos::RCP< panzer::PureBasis > getBasisForDOF(const std::string &dof_name) const
Returns the PureBasis associated with the residual contributions for the dof_name.
void setCoordinateDOFs(const std::vector< std::string > &dofNames)
std::vector< std::string > m_closure_model_ids
std::map< int, Teuchos::RCP< panzer::IntegrationRule > > m_int_rules
Key is the integration rule order and the value is the corresponding integration rule.
virtual const std::vector< std::pair< std::string, Teuchos::RCP< panzer::PureBasis > > > & getProvidedDOFs() const
Return the Basis for the equation set, key is the DOF name (note coordinate DOFs are NOT included)
void setupDeprecatedDOFsSupport()
void buildAndRegisterResidualSummationEvaluator(PHX::FieldManager< panzer::Traits > &fm, const std::string dof_name, const std::vector< std::string > &residual_contributions, const std::string residual_field_name="") const
Teuchos::RCP< Teuchos::ParameterList > getEquationSetParameterList() const
Returns the parameter list used to build this equation set.
virtual const std::map< int, Teuchos::RCP< panzer::IntegrationRule > > & getIntegrationRules() const
Return a map of unique integration rules for the equation set, key is the integration order.
virtual void setupDOFs()
Builds the integration rule, basis, DOFs, and default parameter list. This MUST be called in the cons...
Teuchos::RCP< panzer::BasisIRLayout > getBasisIRLayoutForDOF(const std::string &dof_name) const
Returns the BasisIRLayout for the dof_name.
void updateDOF(const std::string &dofName, int basisOrder, int integrationOrder=-1)
Modifying an existing DOF's basis function and integration rule.
virtual void buildAndRegisterEquationSetEvaluators(PHX::FieldManager< panzer::Traits > &fm, const panzer::FieldLibrary &fl, const Teuchos::ParameterList &user_data) const =0
virtual void buildAndRegisterDOFProjectionsToIPEvaluators(PHX::FieldManager< panzer::Traits > &fm, const panzer::FieldLayoutLibrary &fl, const Teuchos::RCP< panzer::IntegrationRule > &ir, const Teuchos::Ptr< const panzer::LinearObjFactory< panzer::Traits > > &lof, const Teuchos::ParameterList &user_data) const
bool buildTransientSupport() const
Returns true if transient support should be enabled in the equation set.
virtual std::string getType() const
Returns the type of the equation set object. Corresponds to the keyword used by the equation set fact...
void getAddedDOFs(std::vector< std::string > &dofNames) const
virtual const Teuchos::RCP< Teuchos::ParameterList > getEvaluatorParameterList() const
Returns the parameter list that will be passed off from the equaiton set to the closure model evaluat...
std::vector< std::vector< std::string > > m_coordinate_dofs
virtual ~EquationSet_DefaultImpl()
void addDOF(const std::string &dofName, const std::string &basisType, const int &basisOrder, const int integrationOrder=-1, const std::string residualName="", const std::string scatterName="")
std::vector< std::pair< std::string, Teuchos::RCP< panzer::PureBasis > > > m_provided_dofs
Key is the dof name and the value is the corresponding basis.
virtual void buildAndRegisterClosureModelEvaluators(PHX::FieldManager< panzer::Traits > &fm, const panzer::FieldLayoutLibrary &fl, const Teuchos::RCP< panzer::IntegrationRule > &ir, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &factory, const Teuchos::ParameterList &models, const Teuchos::ParameterList &user_data) const
Register closure model evaluators with the model name internally specified by the equation set.
virtual const std::vector< std::vector< std::string > > & getCoordinateDOFs() const
Return a vector of vectors that correspond to DOFs set as coordinate fields.
int m_default_integration_order
void addDOFTimeDerivative(const std::string &dofName, const std::string &dotName="")
Teuchos::RCP< panzer::IntegrationRule > getIntRuleForDOF(const std::string &dof_name) const
Returns the integration rule associated with the residual contributions for the dof_name.
virtual void setTangentParamNames(const std::vector< std::string > &tangent_param_names)
Set the list of tangent parameter names.
virtual void setElementBlockId(const std::string &blockId)
Teuchos::RCP< Teuchos::ParameterList > m_eval_plist
std::map< std::string, std::pair< Teuchos::RCP< panzer::PureBasis >, Teuchos::RCP< std::vector< std::string > > > > m_basis_to_dofs
Map that links a common basis to a vector of dof names. Key is the unique basis name,...
virtual void buildAndRegisterInitialConditionEvaluators(PHX::FieldManager< panzer::Traits > &fm, const panzer::FieldLibrary &fl, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &factory, const std::string &model_name, const Teuchos::ParameterList &models, const LinearObjFactory< panzer::Traits > &lof, const Teuchos::ParameterList &user_data) const
std::vector< std::pair< std::string, Teuchos::RCP< panzer::PureBasis > > > m_provided_coord_prefixes
Key is the coordinate prefix name and the value is the corresponding basis.
std::vector< std::string > m_tangent_param_names
virtual void buildAndRegisterScatterEvaluators(PHX::FieldManager< panzer::Traits > &fm, const panzer::FieldLibrary &fl, const LinearObjFactory< panzer::Traits > &lof, const Teuchos::ParameterList &user_data) const
const Teuchos::RCP< Teuchos::ParameterList > m_input_params
void addDOFDiv(const std::string &dofName, const std::string &divName="")
std::map< std::string, DOFDescriptor > m_provided_dofs_desc
Maps the dof name into a DOFDescriptor. Should be private, but is protected so that the aux equaiton ...
std::map< std::string, DOFDescriptor >::const_iterator DescriptorIterator
For convenience, declare the DOFDescriptor iterator.
void setDefaultValidParameters(Teuchos::ParameterList &valid_parameters)
Default implementation for accessing the GlobalData object.
std::pair< bool, std::string > timeDerivative
Teuchos::RCP< panzer::IntegrationRule > intRule
std::pair< bool, std::string > grad
void print(std::ostream &os) const
std::pair< bool, std::string > div
Teuchos::RCP< panzer::PureBasis > basis
std::pair< bool, std::string > residualName
std::pair< bool, std::string > curl