Panzer  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Panzer_BCStrategy_WeakDirichlet_DefaultImpl.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Panzer: A partial differential equation assembly
4 // engine for strongly coupled complex multiphysics systems
5 //
6 // Copyright 2011 NTESS and the Panzer contributors.
7 // SPDX-License-Identifier: BSD-3-Clause
8 // *****************************************************************************
9 // @HEADER
10 
11 #ifndef PANZER_BCSTRATEGY_WEAKDIRICHLET_DEFAULT_IMPL_DECL_HPP
12 #define PANZER_BCSTRATEGY_WEAKDIRICHLET_DEFAULT_IMPL_DECL_HPP
13 
14 #include <vector>
15 #include <string>
16 #include <tuple>
17 
18 #include "Teuchos_RCP.hpp"
19 
20 #include "Panzer_BCStrategy.hpp"
22 #include "Panzer_Traits.hpp"
23 
24 #include "Panzer_Traits.hpp"
25 #include "Phalanx_Evaluator_WithBaseImpl.hpp"
26 #include "Phalanx_FieldManager.hpp"
27 #include "Phalanx_MDField.hpp"
28 
30 
31 namespace panzer {
32 
33  template <typename EvalT>
36  public panzer::EvaluatorWithBaseImpl<panzer::Traits>
37  {
38 
39  public:
40 
42 
44 
46 
47 
48  virtual void setup(const panzer::PhysicsBlock& side_pb, const Teuchos::ParameterList& user_data) = 0;
49 
51  const panzer::PhysicsBlock& side_pb,
53  const Teuchos::ParameterList& models,
54  const Teuchos::ParameterList& user_data) const = 0;
55 
56  virtual void
58  const panzer::PhysicsBlock& side_pb,
60  const Teuchos::ParameterList& user_data) const;
61 
62  virtual void
64  const panzer::PhysicsBlock& side_pb,
66  const Teuchos::ParameterList& user_data) const;
67 
68  virtual void
70  const panzer::PhysicsBlock& side_pb,
72  const Teuchos::ParameterList& user_data) const;
74 
76 
77  virtual void postRegistrationSetup(typename Traits::SetupData d,
79 
80  virtual void evaluateFields(typename Traits::EvalData d) = 0;
82 
84 
85 
87  virtual void requireDOFGather(const std::string required_dof_name);
88 
97  virtual void addResidualContribution(const std::string residual_name,
98  const std::string dof_name,
99  const std::string flux_name,
100  const int integration_order,
101  const panzer::PhysicsBlock& side_pb);
102 
104  const std::vector<std::tuple<std::string,std::string,std::string,int,Teuchos::RCP<panzer::PureBasis>,Teuchos::RCP<panzer::IntegrationRule> > > getResidualContributionData() const;
105 
107 
108 
110 
111 
113  const panzer::BC bc() const;
114 
116 
117 
118  private:
119 
121 
122 
124  Teuchos::RCP<panzer::PureBasis> getBasis(const std::string dof_name,
125  const panzer::PhysicsBlock& side_pb) const;
126 
129  const panzer::PhysicsBlock& side_pb) const;
131 
132  private:
133 
149  std::vector<std::tuple<std::string,std::string,std::string,int,Teuchos::RCP<panzer::PureBasis>,Teuchos::RCP<panzer::IntegrationRule> > > m_residual_contributions;
150 
152  std::vector<std::string> m_required_dof_names;
153 
154  };
155 
156 }
157 
159 
160 #endif
virtual void requireDOFGather(const std::string required_dof_name)
Requires that a gather evaluator for the DOF be constructed.
virtual void buildAndRegisterEvaluators(PHX::FieldManager< panzer::Traits > &fm, const panzer::PhysicsBlock &side_pb, const panzer::ClosureModelFactory_TemplateManager< panzer::Traits > &factory, const Teuchos::ParameterList &models, const Teuchos::ParameterList &user_data) const =0
Object that contains information on the physics and discretization of a block of elements with the SA...
Default implementation for accessing the GlobalData object.
const panzer::BC bc() const
Returns the boundary condition data for this object.
virtual void postRegistrationSetup(typename Traits::SetupData d, PHX::FieldManager< Traits > &vm)=0
virtual void addResidualContribution(const std::string residual_name, const std::string dof_name, const std::string flux_name, const int integration_order, const panzer::PhysicsBlock &side_pb)
Adds a residual contribution for a neumann condition to a particular equation.
virtual void buildAndRegisterGatherScatterEvaluators(PHX::FieldManager< panzer::Traits > &fm, const panzer::PhysicsBlock &side_pb, const panzer::LinearObjFactory< panzer::Traits > &lof, const Teuchos::ParameterList &user_data) const
virtual void setup(const panzer::PhysicsBlock &side_pb, const Teuchos::ParameterList &user_data)=0
Teuchos::RCP< panzer::IntegrationRule > buildIntegrationRule(const int integration_order, const panzer::PhysicsBlock &side_pb) const
Allocates and returns the integration rule associated with an integration order and side physics bloc...
const std::vector< std::tuple< std::string, std::string, std::string, int, Teuchos::RCP< panzer::PureBasis >, Teuchos::RCP< panzer::IntegrationRule > > > getResidualContributionData() const
Returns information for the residual contribution integrations associated with this Neumann BC...
Wrapper to PHX::EvaluatorWithBaseImpl that implements Panzer-specific helpers.
Teuchos::RCP< panzer::PureBasis > getBasis(const std::string dof_name, const panzer::PhysicsBlock &side_pb) const
Finds the basis for the corresponding dof_name in the physics block.
std::vector< std::string > m_required_dof_names
All DOF field names needed by this BC: this vector is used to build gather evaluators for each DOF...
BCStrategy_WeakDirichlet_DefaultImpl(const panzer::BC &bc, const Teuchos::RCP< panzer::GlobalData > &global_data)
virtual void evaluateFields(typename Traits::EvalData d)=0
std::vector< std::tuple< std::string, std::string, std::string, int, Teuchos::RCP< panzer::PureBasis >, Teuchos::RCP< panzer::IntegrationRule > > > m_residual_contributions
A vector of tuples containing information for each residual contribution for a corresponding Neumann ...
virtual void buildAndRegisterGatherAndOrientationEvaluators(PHX::FieldManager< panzer::Traits > &fm, const panzer::PhysicsBlock &side_pb, const LinearObjFactory< panzer::Traits > &lof, const Teuchos::ParameterList &user_data) const
virtual void buildAndRegisterScatterEvaluators(PHX::FieldManager< panzer::Traits > &fm, const panzer::PhysicsBlock &side_pb, const LinearObjFactory< panzer::Traits > &lof, const Teuchos::ParameterList &user_data) const
Stores input information for a boundary condition.
Definition: Panzer_BC.hpp:48