v0.15.0
Loading...
Searching...
No Matches
LinearFormsIntegrators.hpp
Go to the documentation of this file.
1/** \file LinearFormsIntegrators.hpp
2 * \brief Linear forms integrators
3 * \ingroup mofem_form
4
5*/
6
7#ifndef __LINEAR_FORMS_INTEGRATORS_HPP__
8#define __LINEAR_FORMS_INTEGRATORS_HPP__
9
10
11
12namespace MoFEM {
13
14/**
15 * @brief Linear integrator form
16 * @ingroup mofem_forms
17 *
18 * @tparam EleOp
19 * @tparam A
20 * @tparam I
21 */
22template <typename EleOp>
23template <AssemblyType A>
24template <IntegrationType I>
25struct FormsIntegrators<EleOp>::Assembly<A>::LinearForm {
26
27 /**
28 * @brief Integrate \f$(v,f(\mathbf{x}))_\Omega\f$, f is a scalar
29 * @ingroup mofem_forms
30 *
31 * @note \f$f(\mathbf{x})\$ is scalar function of coordinates
32 *
33 * @tparam BASE_DIM
34 * @tparam FIELD_DIM
35 */
36 template <int BASE_DIM, int FIELD_DIM,
37 typename S = SourceFunctionSpecialization>
38 using OpSource =
39 OpSourceImpl<BASE_DIM, FIELD_DIM, I, typename S::template S<OpBase>>;
40
41 /**
42 * @brief Vector field integrator \f$(v_i,f)_\Omega\f$, f is a vector
43 * @ingroup mofem_forms
44 *
45 * @tparam BASE_DIM
46 */
47 template <int BASE_DIM, int S = 1>
48 using OpBaseTimesScalar = OpBaseTimesScalarImpl<BASE_DIM, S, I, OpBase>;
49
50 /** @deprecated use instead OpBaseTimesScalar
51 */
52 template <int BASE_DIM, int S = 1>
53 using OpBaseTimesScalarField = OpBaseTimesScalar<BASE_DIM, S>;
54
55 /**
56 * @brief Vector field integrator \f$(v,f_i)_\Omega\f$, f is a vector
57 * @ingroup mofem_forms
58 *
59 * @tparam BASE_DIM
60 * @tparam FIELD_DIM
61 * @tparam 0
62 */
63 template <int BASE_DIM, int FIELD_DIM, int S>
64 using OpBaseTimesVector =
65 OpBaseTimesVectorImpl<BASE_DIM, FIELD_DIM, S, I, OpBase>;
66 //! [Source operator]
67
68 //! [Grad times tensor]
69
70 /**
71 * @brief Integrate \f$(v_{,i},f_{ij})_\Omega\f$, f is a vector
72 * @ingroup mofem_forms
73 *
74 * @note \f$f_{ij}\$ is tensor at integration points
75 *
76 * @tparam BASE_DIM
77 * @tparam FIELD_DIM
78 * @tparam SPACE_DIM
79 */
80 template <int BASE_DIM, int FIELD_DIM, int SPACE_DIM, int S = 1>
83
84 /**
85 * @brief Integrate \f$(v_{,i},f_{ij})_\Omega\f$, f is symmetric tensor
86 * @ingroup mofem_forms
87 *
88 * @note \f$f_{ij}\$ is tensor at integration points
89 *
90 * @tparam BASE_DIM
91 * @tparam FIELD_DIM
92 * @tparam SPACE_DIM
93 */
94 template <int BASE_DIM, int FIELD_DIM, int SPACE_DIM, int S = 1>
95 using OpGradTimesSymTensor =
97
98 /**
99 * @brief Integrate \f$(\lambda_{ij,j},u_{i})_\Omega\f$
100 *
101 * @tparam BASE_DIM
102 * @tparam FIELD_DIM
103 * @tparam SPACE_DIM
104 */
105 template <int BASE_DIM, int FIELD_DIM, int SPACE_DIM,
106 CoordinateTypes CoordSys = CARTESIAN>
107 using OpMixDivTimesU =
109
110 /**
111 * @brief Integrate \f$(\lambda_{ij},u_{i,j})_\Omega\f$
112 *
113 * @tparam SPACE_DIM
114 */
115 template <int SPACE_DIM>
116 using OpMixTensorTimesGradU = OpMixTensorTimesGradUImpl<SPACE_DIM, I, OpBase>;
117
118 /**
119 * @brief Integrate \f$(u_{i},\lambda_{ij,j})_\Omega\f$
120 *
121 * @tparam SPACE_DIM
122 */
123 template <int SPACE_DIM>
124 using OpMixVecTimesDivLambda =
126
127 /**
128 * @brief Multiply vector times normal on the face times scalar function
129 *
130 * This operator typically will be used to evaluate natural boundary
131 * conditions for mixed formulation.
132 *
133 * @tparam BASE_DIM
134 * @tparam SPACE_DIM
135 * @tparam OpBase
136 */
137 template <int SPACE_DIM>
138 using OpNormalMixVecTimesScalar =
140
141 /**
142 * @brief Multiply vector times normal on the face times vector field
143 *
144 * This operator typically will be used to evaluate natural boundary
145 * conditions for mixed formulation.
146 *
147 * @tparam BASE_DIM
148 * @tparam SPACE_DIM
149 * @tparam OpBase
150 */
151 template <int SPACE_DIM>
152 using OpNormalMixVecTimesVectorField =
154
155 /**
156 * @brief Convective term
157 *
158 * \f[
159 * (v, u_i \mathbf{y}_{,i})
160 * \f]
161 * where \f$\mathbf{y}\$ can be scalar or vector.
162 *
163 * @tparam BASE_DIM
164 * @tparam FIELD_DIM
165 * @tparam SPACE_DIM
166 */
167 template <int BASE_DIM, int FIELD_DIM, int SPACE_DIM>
170
171 /**
172 * @brief Assemble Rhs for constraint matrix C while hybridisation.
173 *
174 * @tparam FIELD_DIM dimension of the field
175 */
176 template <int FIELD_DIM>
179
180 /**
181 * @brief Assemble Rhs for contraint matrix C^T whole hybridisation
182 *
183 * @tparam FIELD_DIM
184 */
185 template <int FIELD_DIM>
188};
189
190} // namespace MoFEM
191
192#endif // __LINEAR_FORMS_INTEGRATORS_HPP__
constexpr int SPACE_DIM
constexpr int FIELD_DIM
CoordinateTypes
Coodinate system.
@ CARTESIAN
constexpr int BASE_DIM
implementation of Data Operators for Forces and Sources
Definition Common.hpp:10
Tensor field time gradient of vector field.
Vector field time divergence of tensor.
Multiply vector times normal on the face times scalar function.
Multiply vector times normal on the face times vector field.