Panzer
Version of the Day
Loading...
Searching...
No Matches
disc-fe
src
Panzer_BCStrategy_Factory_Defines.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
#include <iostream>
12
#include "Teuchos_RCP.hpp"
13
#include "
Panzer_BC.hpp
"
14
#include "
Panzer_BCStrategy_TemplateManager.hpp
"
15
16
#undef PANZER_DECLARE_BCSTRATEGY_TEMPLATE_BUILDER
17
#define PANZER_DECLARE_BCSTRATEGY_TEMPLATE_BUILDER(fClass, fType) \
18
\
19
struct fType ## _TemplateBuilder \
20
{ \
21
const panzer::BC& m_bc; \
22
const Teuchos::RCP<panzer::GlobalData> m_global_data; \
23
fType ## _TemplateBuilder( \
24
const panzer::BC& bc, \
25
const Teuchos::RCP<panzer::GlobalData>& global_data) \
26
: \
27
m_bc(bc), \
28
m_global_data(global_data) \
29
{ \
30
} \
31
\
32
template<typename EvalT> \
33
Teuchos::RCP<panzer::BCStrategyBase> build() const \
34
{ \
35
fClass<EvalT>* ptr = new fClass<EvalT>(m_bc, m_global_data); \
36
return Teuchos::rcp(ptr); \
37
} \
38
\
39
};
40
41
#define PANZER_DECLARE_BCSTRATEGY_TEMPLATE_BUILDER_EXTRA(fClass, fType, \
42
extraSteps) \
43
\
44
struct fType ## _TemplateBuilder \
45
{ \
46
const panzer::BC& m_bc; \
47
const Teuchos::RCP<panzer::GlobalData> m_global_data; \
48
fType ## _TemplateBuilder( \
49
const panzer::BC& bc, \
50
const Teuchos::RCP<panzer::GlobalData>& global_data) \
51
: \
52
m_bc(bc), \
53
m_global_data(global_data) \
54
{ \
55
} \
56
\
57
template<typename EvalT> \
58
Teuchos::RCP<panzer::BCStrategyBase> build() const \
59
{ \
60
fClass<EvalT>* ptr = new fClass<EvalT>(m_bc, m_global_data); \
61
{ \
62
extraSteps \
63
} \
64
return Teuchos::rcp(ptr); \
65
} \
66
\
67
};
68
69
#undef PANZER_BUILD_BCSTRATEGY_OBJECTS
70
#define PANZER_BUILD_BCSTRATEGY_OBJECTS(key, fType) \
71
if (bc.strategy() == key) \
72
{ \
73
fType ## _TemplateBuilder builder(bc, global_data); \
74
bcs_tm->buildObjects(builder); \
75
found = true; \
76
}
Panzer_BCStrategy_TemplateManager.hpp
Panzer_BC.hpp
Generated by
1.9.8