v0.14.0
Essential.hpp
Go to the documentation of this file.
1 /**
2  * @file Essential.hpp
3  * @brief Setting essential boundary conditions
4  * @version 0.13.1
5  * @date 2022-08-12
6  *
7  * @copyright Copyright (c) 2022
8  *
9  */
10 
11 #ifndef _ESSENTIAL_BC_
12 #define _ESSENTIAL_BC_
13 
14 namespace MoFEM {
15 
16 
17 /**
18  * @brief Class (Function) to enforce essential constrains
19  *
20  * Class (Function) to enforce essential constrains for DOFs which were
21  * removed from the system
22  *
23  * @tparam T
24  */
25 template <typename T> struct EssentialPreProc;
26 
27 /**
28  * @brief Class (Function) to enforce essential constrains on the left hand side
29  * diagonal
30  *
31  * @tparam T
32  */
33 template <typename T> struct EssentialPostProcLhs;
34 
35 /**
36  * @brief Class (Function) to enforce essential constrains on the right hand
37  * side diagonal
38  *
39  * @tparam T
40  */
41 template <typename T> struct EssentialPostProcRhs;
42 
43 /**
44  * @brief Class (Function) to calculate residual
45  * side diagonal
46  *
47  * @tparam T
48  */
49 template <typename T> struct EssentialPreProcReaction;
50 
51 /**
52  * @brief Enforce essential constrains on rhs.
53  *
54  * This class is used when constrains are enforced by least square method.
55  *
56  * @tparam T
57  * @tparam BASE_DIM
58  * @tparam FIELD_DIM
59  * @tparam A
60  * @tparam I
61  * @tparam OpBase
62  */
63 template <typename T, int BASE_DIM, int FIELD_DIM, AssemblyType A,
64  IntegrationType I, typename OpBase>
66 
67 /**
68  * @brief Enforce essential constrains on lhs
69  *
70  * This class is used when constrains are enforced by least square method.
71  *
72  * @tparam T
73  * @tparam BASE_DIM
74  * @tparam FIELD_DIM
75  * @tparam A
76  * @tparam I
77  * @tparam OpBase
78  */
79 template <typename T, int BASE_DIM, int FIELD_DIM, AssemblyType A,
80  IntegrationType I, typename OpBase>
82 
83 /**
84  * @brief Function (factory) for setting operators for rhs pipeline
85  *
86  * @tparam T
87  * @tparam A
88  * @tparam I
89  * @tparam OpBase
90  */
91 template <typename T, AssemblyType A, IntegrationType I, typename OpBase>
93 
94 /**
95  * @brief Function (factory) for setting operators for lhs pipeline
96  *
97  * @tparam T
98  * @tparam A
99  * @tparam I
100  * @tparam OpBase
101  */
102 template <typename T, AssemblyType A, IntegrationType I, typename OpBase>
104 
105 /**
106  * @brief Essential boundary conditions
107  * @ingroup mofem_forms
108  *
109  * @tparam EleOp
110  */
111 template <typename EleOp> struct EssentialBC {
112 
113  /**
114  * @brief Assembly methods
115  * @ingroup mofem_forms
116  *
117  * @tparam A
118  */
119  template <AssemblyType A> struct Assembly {
120 
121  template <IntegrationType I> struct LinearForm {
122  template <typename T, int BASE_DIM, int FIELD_DIM>
123  using OpEssentialRhs =
125  template <typename T>
126  using AddEssentialToPipeline =
128  };
129 
130  template <IntegrationType I> struct BiLinearForm {
131  template <typename T, int BASE_DIM, int FIELD_DIM>
132  using OpEssentialLhs =
134  template <typename T>
135  using AddEssentialToPipeline =
137  };
138  };
139 };
140 
141 } // namespace MoFEM
142 
143 #endif //_ESSENTIAL_BC_
MoFEM::EssentialBC
Essential boundary conditions.
Definition: Essential.hpp:111
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
I
constexpr IntegrationType I
Definition: operators_tests.cpp:31
MoFEM::OpBaseImpl
Definition: FormsIntegrators.hpp:170
MoFEM
implementation of Data Operators for Forces and Sources
Definition: Common.hpp:10
MoFEM::OpEssentialLhsImpl
Enforce essential constrains on lhs.
Definition: Essential.hpp:81
MoFEM::AddEssentialToRhsPipelineImpl
Function (factory) for setting operators for rhs pipeline.
Definition: Essential.hpp:92
MoFEM::EssentialPostProcLhs
Class (Function) to enforce essential constrains on the left hand side diagonal.
Definition: Essential.hpp:33
MoFEM::AddEssentialToLhsPipelineImpl
Function (factory) for setting operators for lhs pipeline.
Definition: Essential.hpp:103
MoFEM::EssentialBC::Assembly::LinearForm
Definition: Essential.hpp:121
MoFEM::EssentialPreProcReaction
Class (Function) to calculate residual side diagonal.
Definition: Essential.hpp:49
MoFEM::EssentialPostProcRhs
Class (Function) to enforce essential constrains on the right hand side diagonal.
Definition: Essential.hpp:41
MoFEM::IntegrationType
IntegrationType
Form integrator integration types.
Definition: FormsIntegrators.hpp:128
MoFEM::OpEssentialRhsImpl
Enforce essential constrains on rhs.
Definition: Essential.hpp:65
MoFEM::AssemblyType
AssemblyType
[Storage and set boundary conditions]
Definition: FormsIntegrators.hpp:104
MoFEM::EssentialBC::Assembly::BiLinearForm
Definition: Essential.hpp:130
MoFEM::EssentialBC::Assembly
Assembly methods.
Definition: Essential.hpp:119
MoFEM::EssentialPreProc
Class (Function) to enforce essential constrains.
Definition: Essential.hpp:25