v0.14.0
src
boundary_conditions
Natural.hpp
Go to the documentation of this file.
1
/**
2
* @file Natural.hpp
3
* @brief Setting natural boundary conditions
4
* @version 0.13.1
5
* @date 2022-08-12
6
*
7
* @copyright Copyright (c) 2022a
8
*
9
*/
10
11
#ifndef _NATURAL_BC_
12
#define _NATURAL_BC_
13
14
namespace
MoFEM
{
15
16
/**
17
* @brief Vector of time scaling methods
18
*
19
*/
20
using
VecOfTimeScalingMethods
= std::vector<boost::shared_ptr<ScalingMethod>>;
21
22
/**
23
* @brief Vector of time vector scaling methods
24
*
25
*/
26
template
<
int
FIELD_DIM>
27
using
VecOfTimeVectorScalingMethods
=
28
std::vector<boost::shared_ptr<TimeScaleVector<FIELD_DIM>>>;
29
30
/**
31
* @brief Wrapper to generate natural b.c. specialisation based on operator type
32
*
33
* @tparam OP
34
*/
35
template
<
typename
OP>
struct
FluxOpType
{};
36
37
template
<
typename
T,
int
BASE_DIM
,
int
FIELD_DIM
,
AssemblyType
A
,
38
IntegrationType
I
,
typename
OpBase
>
39
struct
OpFluxRhsImpl
;
40
41
template
<
typename
T,
int
BASE_DIM
,
int
FIELD_DIM
,
AssemblyType
A
,
42
IntegrationType
I
,
typename
OpBase
>
43
struct
OpFluxLhsImpl
;
44
45
template
<
typename
T, AssemblyType A, IntegrationType I,
typename
OpBase>
46
struct
AddFluxToRhsPipelineImpl
;
47
48
template
<
typename
T, AssemblyType A, IntegrationType I,
typename
OpBase>
49
struct
AddFluxToLhsPipelineImpl
;
50
51
/**
52
* @brief Natural boundary conditions
53
* @ingroup mofem_forms
54
*
55
* @tparam EleOp
56
*/
57
template
<
typename
EleOp>
struct
NaturalBC
{
58
59
/**
60
* @brief Assembly methods
61
* @ingroup mofem_forms
62
*
63
* @tparam A
64
*/
65
template
<AssemblyType A>
struct
Assembly
{
66
67
template
<IntegrationType I>
struct
LinearForm
{
68
template
<
typename
T,
int
BASE_DIM,
int
FIELD_DIM>
69
using
OpFlux
=
OpFluxRhsImpl<T, BASE_DIM, FIELD_DIM, A, I, EleOp>
;
70
template
<
typename
T>
71
using
AddFluxToPipeline
=
AddFluxToRhsPipelineImpl<T, A, I, EleOp>
;
72
};
73
74
template
<IntegrationType I>
struct
BiLinearForm
{
75
76
template
<
typename
T,
int
BASE_DIM,
int
FIELD_DIM>
77
using
OpFlux
=
OpFluxLhsImpl<T, BASE_DIM, FIELD_DIM, A, I, EleOp>
;
78
template
<
typename
T>
79
using
AddFluxToPipeline
=
AddFluxToLhsPipelineImpl<T, A, I, EleOp>
;
80
};
81
82
};
// Assembly
83
};
84
85
}
// namespace MoFEM
86
87
#endif //_NATURAL_BC_
MoFEM::NaturalBC::Assembly::LinearForm
Definition:
Natural.hpp:67
MoFEM::OpFluxRhsImpl
Definition:
Natural.hpp:39
MoFEM::NaturalBC::Assembly::BiLinearForm
Definition:
Natural.hpp:74
MoFEM::NaturalBC
Natural boundary conditions.
Definition:
Natural.hpp:57
A
constexpr AssemblyType A
Definition:
operators_tests.cpp:30
BASE_DIM
constexpr int BASE_DIM
Definition:
dg_projection.cpp:15
FIELD_DIM
constexpr int FIELD_DIM
Definition:
child_and_parent.cpp:15
MoFEM::OpFluxLhsImpl
Definition:
Natural.hpp:43
I
constexpr IntegrationType I
Definition:
operators_tests.cpp:31
MoFEM::OpBaseImpl
Definition:
FormsIntegrators.hpp:178
MoFEM
implementation of Data Operators for Forces and Sources
Definition:
Common.hpp:10
MoFEM::FluxOpType
Wrapper to generate natural b.c. specialisation based on operator type.
Definition:
Natural.hpp:35
MoFEM::AddFluxToLhsPipelineImpl
Definition:
Natural.hpp:49
MoFEM::AddFluxToRhsPipelineImpl
Definition:
Natural.hpp:46
MoFEM::IntegrationType
IntegrationType
Form integrator integration types.
Definition:
FormsIntegrators.hpp:136
MoFEM::NaturalBC::Assembly
Assembly methods.
Definition:
Natural.hpp:65
MoFEM::AssemblyType
AssemblyType
[Storage and set boundary conditions]
Definition:
FormsIntegrators.hpp:104
MoFEM::VecOfTimeScalingMethods
std::vector< boost::shared_ptr< ScalingMethod > > VecOfTimeScalingMethods
Vector of time scaling methods.
Definition:
Natural.hpp:20
MoFEM::VecOfTimeVectorScalingMethods
std::vector< boost::shared_ptr< TimeScaleVector< FIELD_DIM > >> VecOfTimeVectorScalingMethods
Vector of time vector scaling methods.
Definition:
Natural.hpp:28
Generated by
Doxygen
1.8.17 and hosted at