Panzer
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
disc-fe
src
Panzer_AssemblyEngine.hpp
Go to the documentation of this file.
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Panzer: A partial differential equation assembly
5
// engine for strongly coupled complex multiphysics systems
6
// Copyright (2011) Sandia Corporation
7
//
8
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9
// the U.S. Government retains certain rights in this software.
10
//
11
// Redistribution and use in source and binary forms, with or without
12
// modification, are permitted provided that the following conditions are
13
// met:
14
//
15
// 1. Redistributions of source code must retain the above copyright
16
// notice, this list of conditions and the following disclaimer.
17
//
18
// 2. Redistributions in binary form must reproduce the above copyright
19
// notice, this list of conditions and the following disclaimer in the
20
// documentation and/or other materials provided with the distribution.
21
//
22
// 3. Neither the name of the Corporation nor the names of the
23
// contributors may be used to endorse or promote products derived from
24
// this software without specific prior written permission.
25
//
26
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
//
38
// Questions? Contact Roger P. Pawlowski (rppawlo@sandia.gov) and
39
// Eric C. Cyr (eccyr@sandia.gov)
40
// ***********************************************************************
41
// @HEADER
42
43
#ifndef PANZER_ASSEMBLY_ENGINE_HPP
44
#define PANZER_ASSEMBLY_ENGINE_HPP
45
46
#include "Teuchos_RCP.hpp"
47
48
#include "
Panzer_Base.hpp
"
49
#include "
Panzer_BC.hpp
"
50
#include "
Panzer_Traits.hpp
"
51
#include "
Panzer_LinearObjFactory.hpp
"
52
#include "
Panzer_LinearObjContainer.hpp
"
53
54
namespace
panzer
{
55
class
FieldManagerBuilder
;
56
class
AssemblyEngineInArgs
;
57
}
58
59
namespace
panzer
{
60
62
template
<
typename
EvalT>
63
class
AssemblyEngine
:
public
panzer::Base
{
64
65
public
:
66
struct
EvaluationFlags
{
67
EvaluationFlags
(
int
flags) :
value_
(flags) {
68
TEUCHOS_ASSERT(flags>0 && flags <=
EvaluationFlags::All
);
69
}
70
static
constexpr
int
Initialize
=1;
71
static
constexpr
int
VolumetricFill
=2;
72
static
constexpr
int
BoundaryFill
=4;
73
static
constexpr
int
Scatter
=8;
74
static
constexpr
int
All
=15;
75
int
getValue
()
const
{
return
value_
;}
76
protected
:
77
int
value_
;
78
};
79
80
AssemblyEngine
(
const
Teuchos::RCP<panzer::FieldManagerBuilder>& fmb,
81
const
Teuchos::RCP<
const
panzer::LinearObjFactory<panzer::Traits>
> & lof);
82
83
void
evaluate
(
const
panzer::AssemblyEngineInArgs
& input_arguments,
const
EvaluationFlags
flags=
EvaluationFlags
(
EvaluationFlags::All
));
84
85
void
evaluateVolume
(
const
panzer::AssemblyEngineInArgs
& input_arguments);
86
92
Teuchos::RCP<LinearObjContainer>
evaluateOnlyDirichletBCs
(
const
panzer::AssemblyEngineInArgs
& input_arguments);
93
94
void
evaluateNeumannBCs
(
const
panzer::AssemblyEngineInArgs
& input_arguments);
95
96
void
evaluateInterfaceBCs
(
const
panzer::AssemblyEngineInArgs
& input_arguments);
97
99
Teuchos::RCP<LinearObjContainer>
evaluateDirichletBCs
(
const
panzer::AssemblyEngineInArgs
& input_arguments);
100
101
Teuchos::RCP<panzer::FieldManagerBuilder>
getManagerBuilder
()
102
{
return
m_field_manager_builder
; }
103
104
protected
:
105
113
void
evaluateBCs
(
const
panzer::BCType
bc_type,
114
const
panzer::AssemblyEngineInArgs
& input_arguments,
115
const
Teuchos::RCP<LinearObjContainer> preEval_loc=Teuchos::null);
116
117
protected
:
118
119
Teuchos::RCP<panzer::FieldManagerBuilder>
m_field_manager_builder
;
120
121
Teuchos::RCP<const panzer::LinearObjFactory<panzer::Traits> >
m_lin_obj_factory
;
122
123
// These members improve performance by ensuring that "buildPrimitiveGhostedLinearObjContainer"
124
// is not called uneccessarily often
125
bool
countersInitialized_
;
126
Teuchos::RCP<LinearObjContainer>
localCounter_
;
127
Teuchos::RCP<LinearObjContainer>
globalCounter_
;
128
Teuchos::RCP<LinearObjContainer>
summedGhostedCounter_
;
129
};
130
131
}
132
133
// #include "Panzer_AssemblyEngine_impl.hpp"
134
135
#endif
Panzer_BC.hpp
Panzer_Base.hpp
Panzer_LinearObjContainer.hpp
Panzer_LinearObjFactory.hpp
Panzer_Traits.hpp
panzer::AssemblyEngineInArgs
Definition
Panzer_AssemblyEngine_InArgs.hpp:59
panzer::AssemblyEngine::evaluateOnlyDirichletBCs
Teuchos::RCP< LinearObjContainer > evaluateOnlyDirichletBCs(const panzer::AssemblyEngineInArgs &input_arguments)
Definition
Panzer_AssemblyEngine_impl.hpp:139
panzer::AssemblyEngine::evaluate
void evaluate(const panzer::AssemblyEngineInArgs &input_arguments, const EvaluationFlags flags=EvaluationFlags(EvaluationFlags::All))
Definition
Panzer_AssemblyEngine_impl.hpp:67
panzer::AssemblyEngine::m_field_manager_builder
Teuchos::RCP< panzer::FieldManagerBuilder > m_field_manager_builder
Definition
Panzer_AssemblyEngine.hpp:119
panzer::AssemblyEngine::evaluateVolume
void evaluateVolume(const panzer::AssemblyEngineInArgs &input_arguments)
Definition
Panzer_AssemblyEngine_impl.hpp:173
panzer::AssemblyEngine::evaluateNeumannBCs
void evaluateNeumannBCs(const panzer::AssemblyEngineInArgs &input_arguments)
Definition
Panzer_AssemblyEngine_impl.hpp:225
panzer::AssemblyEngine::summedGhostedCounter_
Teuchos::RCP< LinearObjContainer > summedGhostedCounter_
Definition
Panzer_AssemblyEngine.hpp:128
panzer::AssemblyEngine::evaluateInterfaceBCs
void evaluateInterfaceBCs(const panzer::AssemblyEngineInArgs &input_arguments)
Definition
Panzer_AssemblyEngine_impl.hpp:234
panzer::AssemblyEngine::getManagerBuilder
Teuchos::RCP< panzer::FieldManagerBuilder > getManagerBuilder()
Definition
Panzer_AssemblyEngine.hpp:101
panzer::AssemblyEngine::localCounter_
Teuchos::RCP< LinearObjContainer > localCounter_
Definition
Panzer_AssemblyEngine.hpp:126
panzer::AssemblyEngine::globalCounter_
Teuchos::RCP< LinearObjContainer > globalCounter_
Definition
Panzer_AssemblyEngine.hpp:127
panzer::AssemblyEngine::AssemblyEngine
AssemblyEngine(const Teuchos::RCP< panzer::FieldManagerBuilder > &fmb, const Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > &lof)
Definition
Panzer_AssemblyEngine_impl.hpp:56
panzer::AssemblyEngine::evaluateDirichletBCs
Teuchos::RCP< LinearObjContainer > evaluateDirichletBCs(const panzer::AssemblyEngineInArgs &input_arguments)
This method returns the global counter used to indicate which rows are boundary conditions.
Definition
Panzer_AssemblyEngine_impl.hpp:243
panzer::AssemblyEngine::evaluateBCs
void evaluateBCs(const panzer::BCType bc_type, const panzer::AssemblyEngineInArgs &input_arguments, const Teuchos::RCP< LinearObjContainer > preEval_loc=Teuchos::null)
Definition
Panzer_AssemblyEngine_impl.hpp:306
panzer::AssemblyEngine::countersInitialized_
bool countersInitialized_
Definition
Panzer_AssemblyEngine.hpp:125
panzer::AssemblyEngine::m_lin_obj_factory
Teuchos::RCP< const panzer::LinearObjFactory< panzer::Traits > > m_lin_obj_factory
Definition
Panzer_AssemblyEngine.hpp:121
panzer::Base
Non-templated empty base class for template managers.
Definition
Panzer_Base.hpp:50
panzer::FieldManagerBuilder
Definition
Panzer_FieldManagerBuilder.hpp:81
panzer::LinearObjFactory
Definition
Panzer_LinearObjFactory.hpp:104
panzer
Computes .
Definition
Panzer_BasisValues_Evaluator_decl.hpp:54
panzer::BCType
BCType
Type of boundary condition.
Definition
Panzer_BC.hpp:74
panzer::AssemblyEngine::EvaluationFlags
Definition
Panzer_AssemblyEngine.hpp:66
panzer::AssemblyEngine::EvaluationFlags::Initialize
static constexpr int Initialize
Definition
Panzer_AssemblyEngine.hpp:70
panzer::AssemblyEngine::EvaluationFlags::BoundaryFill
static constexpr int BoundaryFill
Definition
Panzer_AssemblyEngine.hpp:72
panzer::AssemblyEngine::EvaluationFlags::Scatter
static constexpr int Scatter
Definition
Panzer_AssemblyEngine.hpp:73
panzer::AssemblyEngine::EvaluationFlags::getValue
int getValue() const
Definition
Panzer_AssemblyEngine.hpp:75
panzer::AssemblyEngine::EvaluationFlags::EvaluationFlags
EvaluationFlags(int flags)
Definition
Panzer_AssemblyEngine.hpp:67
panzer::AssemblyEngine::EvaluationFlags::VolumetricFill
static constexpr int VolumetricFill
Definition
Panzer_AssemblyEngine.hpp:71
panzer::AssemblyEngine::EvaluationFlags::value_
int value_
Definition
Panzer_AssemblyEngine.hpp:77
panzer::AssemblyEngine::EvaluationFlags::All
static constexpr int All
Definition
Panzer_AssemblyEngine.hpp:74
Generated by
1.17.0