Panzer  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Panzer_AssemblyEngine.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_ASSEMBLY_ENGINE_HPP
12 #define PANZER_ASSEMBLY_ENGINE_HPP
13 
14 #include "Teuchos_RCP.hpp"
15 
16 #include "Panzer_Base.hpp"
17 #include "Panzer_BC.hpp"
18 #include "Panzer_Traits.hpp"
21 
22 namespace panzer {
23  class FieldManagerBuilder;
24  class AssemblyEngineInArgs;
25 }
26 
27 namespace panzer {
28 
30  template <typename EvalT>
31  class AssemblyEngine : public panzer::Base {
32 
33  public:
34  struct EvaluationFlags {
35  EvaluationFlags(int flags) : value_(flags) {
36  TEUCHOS_ASSERT(flags>0 && flags <= EvaluationFlags::All);
37  }
38  static constexpr int Initialize=1;
39  static constexpr int VolumetricFill=2;
40  static constexpr int BoundaryFill=4;
41  static constexpr int Scatter=8;
42  static constexpr int All=15;
43  int getValue() const {return value_;}
44  protected:
45  int value_;
46  };
47 
50 
52 
53  void evaluateVolume(const panzer::AssemblyEngineInArgs& input_arguments);
54 
61 
62  void evaluateNeumannBCs(const panzer::AssemblyEngineInArgs& input_arguments);
63 
64  void evaluateInterfaceBCs(const panzer::AssemblyEngineInArgs& input_arguments);
65 
68 
70  { return m_field_manager_builder; }
71 
72  protected:
73 
81  void evaluateBCs(const panzer::BCType bc_type,
82  const panzer::AssemblyEngineInArgs& input_arguments,
83  const Teuchos::RCP<LinearObjContainer> preEval_loc=Teuchos::null);
84 
85  protected:
86 
88 
90 
91  // These members improve performance by ensuring that "buildPrimitiveGhostedLinearObjContainer"
92  // is not called uneccessarily often
97  };
98 
99 }
100 
101 // #include "Panzer_AssemblyEngine_impl.hpp"
102 
103 #endif
BCType
Type of boundary condition.
Definition: Panzer_BC.hpp:41
Teuchos::RCP< LinearObjContainer > globalCounter_
Teuchos::RCP< panzer::FieldManagerBuilder > getManagerBuilder()
Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > m_lin_obj_factory
Non-templated empty base class for template managers.
Definition: Panzer_Base.hpp:17
void evaluate(const panzer::AssemblyEngineInArgs &input_arguments, const EvaluationFlags flags=EvaluationFlags(EvaluationFlags::All))
void evaluateInterfaceBCs(const panzer::AssemblyEngineInArgs &input_arguments)
void evaluateVolume(const panzer::AssemblyEngineInArgs &input_arguments)
Teuchos::RCP< LinearObjContainer > evaluateDirichletBCs(const panzer::AssemblyEngineInArgs &input_arguments)
This method returns the global counter used to indicate which rows are boundary conditions.
void evaluateBCs(const panzer::BCType bc_type, const panzer::AssemblyEngineInArgs &input_arguments, const Teuchos::RCP< LinearObjContainer > preEval_loc=Teuchos::null)
AssemblyEngine(const Teuchos::RCP< panzer::FieldManagerBuilder > &fmb, const Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > &lof)
Teuchos::RCP< LinearObjContainer > summedGhostedCounter_
Teuchos::RCP< panzer::FieldManagerBuilder > m_field_manager_builder
#define TEUCHOS_ASSERT(assertion_test)
Teuchos::RCP< LinearObjContainer > localCounter_
Teuchos::RCP< LinearObjContainer > evaluateOnlyDirichletBCs(const panzer::AssemblyEngineInArgs &input_arguments)
Class for the matrix and residual fill.
void evaluateNeumannBCs(const panzer::AssemblyEngineInArgs &input_arguments)