Panzer Version of the Day
Loading...
Searching...
No Matches
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
22namespace panzer {
23 class FieldManagerBuilder;
24 class AssemblyEngineInArgs;
25}
26
27namespace panzer {
28
30 template <typename EvalT>
32
33 public:
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
48 AssemblyEngine(const Teuchos::RCP<panzer::FieldManagerBuilder>& fmb,
49 const Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > & lof);
50
52
53 void evaluateVolume(const panzer::AssemblyEngineInArgs& input_arguments);
54
60 Teuchos::RCP<LinearObjContainer> evaluateOnlyDirichletBCs(const panzer::AssemblyEngineInArgs& input_arguments);
61
62 void evaluateNeumannBCs(const panzer::AssemblyEngineInArgs& input_arguments);
63
64 void evaluateInterfaceBCs(const panzer::AssemblyEngineInArgs& input_arguments);
65
67 Teuchos::RCP<LinearObjContainer> evaluateDirichletBCs(const panzer::AssemblyEngineInArgs& input_arguments);
68
69 Teuchos::RCP<panzer::FieldManagerBuilder> getManagerBuilder()
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
87 Teuchos::RCP<panzer::FieldManagerBuilder> m_field_manager_builder;
88
89 Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> > m_lin_obj_factory;
90
91 // These members improve performance by ensuring that "buildPrimitiveGhostedLinearObjContainer"
92 // is not called uneccessarily often
94 Teuchos::RCP<LinearObjContainer> localCounter_;
95 Teuchos::RCP<LinearObjContainer> globalCounter_;
96 Teuchos::RCP<LinearObjContainer> summedGhostedCounter_;
97 };
98
99}
100
101// #include "Panzer_AssemblyEngine_impl.hpp"
102
103#endif
Class for the matrix and residual fill.
Teuchos::RCP< LinearObjContainer > evaluateOnlyDirichletBCs(const panzer::AssemblyEngineInArgs &input_arguments)
void evaluate(const panzer::AssemblyEngineInArgs &input_arguments, const EvaluationFlags flags=EvaluationFlags(EvaluationFlags::All))
Teuchos::RCP< panzer::FieldManagerBuilder > m_field_manager_builder
void evaluateVolume(const panzer::AssemblyEngineInArgs &input_arguments)
void evaluateNeumannBCs(const panzer::AssemblyEngineInArgs &input_arguments)
Teuchos::RCP< LinearObjContainer > summedGhostedCounter_
void evaluateInterfaceBCs(const panzer::AssemblyEngineInArgs &input_arguments)
Teuchos::RCP< panzer::FieldManagerBuilder > getManagerBuilder()
Teuchos::RCP< LinearObjContainer > localCounter_
Teuchos::RCP< LinearObjContainer > globalCounter_
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)
Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > m_lin_obj_factory
Non-templated empty base class for template managers.
BCType
Type of boundary condition.
Definition Panzer_BC.hpp:41