GCC Code Coverage Report


Directory: ./
File: DegreeOfFreedom/boundaryConditionList.hpp
Date: 2024-04-14 07:32:34
Exec Total Coverage
Lines: 59 63 93.7%
Branches: 2 4 50.0%

Line Branch Exec Source
1 // ______ ______ _ _ _____ ______
2 // | ____| ____| | (_)/ ____| | ____|
3 // | |__ | |__ | | _| (___ ___| |__
4 // | __| | __| | | | |\___ \ / __| __|
5 // | | | |____| |____| |____) | (__| |____
6 // |_| |______|______|_|_____/ \___|______|
7 // Finite Elements for Life Sciences and Engineering
8 //
9 // License: LGL2.1 License
10 // FELiScE default license: LICENSE in root folder
11 //
12 // Main authors: J. Foulon
13 //
14 //
15
16 #ifndef _BOUNDARYCONDITIONLIST_HPP
17 #define _BOUNDARYCONDITIONLIST_HPP
18
19 // System includes
20 #include <vector>
21 #include <ostream>
22
23 // External includes
24
25 // Project includes
26 #include "DegreeOfFreedom/listVariable.hpp"
27
28 namespace felisce
29 {
30 ///@name felisce Globals
31 ///@{
32
33 ///@}
34 ///@name Type Definitions
35 ///@{
36
37 ///@}
38 ///@name Enum's
39 ///@{
40
41 ///@}
42 ///@name Functions
43 ///@{
44
45 ///@}
46 ///@name felisce Classes
47 ///@{
48 class BoundaryCondition;
49
50 class BoundaryConditionList
51 {
52 public:
53 ///@name Type Definitions
54 ///@{
55
56 ///@}
57 ///@name Life Cycle
58 ///@{
59
60 /// Defaut constructor
61 BoundaryConditionList();
62
63 /// Default destructor
64 ~BoundaryConditionList();
65
66 ///@}
67 ///@name Operators
68 ///@{
69
70 4176 inline BoundaryCondition* operator[](const int i) {
71 4176 return m_boundaryConditionList[i];
72 }
73
74 ///@}
75 ///@name Operations
76 ///@{
77
78 void add(BoundaryCondition* bc);
79
80 std::size_t size();
81
82 void fixUnknownIdForEachBC(const ListVariable& listVariable);
83
84 // two functions to, temporary, set to zero the constant values
85 4 inline void temporarySetBCValuesToZero() {
86 4 m_tmpValues = FelisceParam::instance().value;
87
2/4
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 4 times.
✗ Branch 7 not taken.
4 FelisceParam::instance().value = std::vector<double>(m_tmpValues.size(),0.0);
88 4 }
89 4 inline void restoreBCValues() {
90 4 FelisceParam::instance().value = m_tmpValues;
91 4 };
92
93 ///@}
94 ///@name Access
95 ///@{
96
97 86663 inline std::size_t numDirichletBoundaryCondition() const {
98 86663 return m_idOfDirichletBoundaryCondition.size();
99 }
100
101 903039 inline std::size_t numNeumannBoundaryCondition() const {
102 903039 return m_idOfNeumannBoundaryCondition.size();
103 }
104
105 1507437 inline std::size_t numNeumannNormalBoundaryCondition() const {
106 1507437 return m_idOfNeumannNormalBoundaryCondition.size();
107 }
108
109 745713 inline std::size_t numRobinBoundaryCondition() const {
110 745713 return m_idOfRobinBoundaryCondition.size();
111 }
112
113 865825 inline std::size_t numRobinNormalBoundaryCondition() const {
114 865825 return m_idOfRobinNormalBoundaryCondition.size();
115 }
116
117 1294759 inline std::size_t numEmbedFSIBoundaryCondition() const {
118 1294759 return m_idOfEmbedFSIBoundaryCondition.size();
119 }
120
121 908 inline std::size_t numEssentialLumpedModelBoundaryCondition() const {
122 908 return m_idOfEssentialLumpedModelBoundaryCondition.size();
123 }
124
125 inline std::size_t numNaturalLumpedModelBoundaryCondition() const {
126 return m_idOfNaturalLumpedModelBoundaryCondition.size();
127 }
128
129 686345 inline std::size_t numBackflowStabBoundaryCondition() const {
130 686345 return m_idOfBackflowStabBoundaryCondition.size();
131 }
132
133 1228 inline int idBCOfDirichlet(const int i) const {
134 1228 return m_idOfDirichletBoundaryCondition[i];
135 }
136
137 2666 inline int idBCOfNeumann(const int i) const {
138 2666 return m_idOfNeumannBoundaryCondition[i];
139 }
140
141 2868 inline int idBCOfNeumannNormal(const int i) const {
142 2868 return m_idOfNeumannNormalBoundaryCondition[i];
143 }
144
145 328 inline int idBCOfRobin(const int i) const {
146 328 return m_idOfRobinBoundaryCondition[i];
147 }
148
149 280 inline int idBCOfRobinNormal(const int i) const {
150 280 return m_idOfRobinNormalBoundaryCondition[i];
151 }
152
153 204 inline int idBCOfEmbedFSI(const int i) const {
154 204 return m_idOfEmbedFSIBoundaryCondition[i];
155 }
156
157 inline int idBCOfEssentialLumpedModel(const int i) const {
158 return m_idOfEssentialLumpedModelBoundaryCondition[i];
159 }
160
161 inline int idBCOfNaturalLumpedModel(const int i) const {
162 return m_idOfNaturalLumpedModelBoundaryCondition[i];
163 }
164
165 inline int idBCOfBackflowStab(const int i) const {
166 return m_idOfBackflowStabBoundaryCondition[i];
167 }
168
169 inline const BoundaryCondition* Dirichlet(const int i) const {
170 return m_boundaryConditionList[m_idOfDirichletBoundaryCondition[i]];
171 }
172 57582 inline BoundaryCondition* Dirichlet(const int i) {
173 57582 return m_boundaryConditionList[m_idOfDirichletBoundaryCondition[i]];
174 }
175
176 inline const BoundaryCondition* Neumann(const int i) const {
177 return m_boundaryConditionList[m_idOfNeumannBoundaryCondition[i]];
178 }
179 196958 inline BoundaryCondition* Neumann(const int i) {
180 196958 return m_boundaryConditionList[m_idOfNeumannBoundaryCondition[i]];
181 }
182
183 inline const BoundaryCondition* NeumannNormal(const int i) const {
184 return m_boundaryConditionList[m_idOfNeumannNormalBoundaryCondition[i]];
185 }
186 618692 inline BoundaryCondition* NeumannNormal(const int i) {
187 618692 return m_boundaryConditionList[m_idOfNeumannNormalBoundaryCondition[i]];
188 }
189
190 inline const BoundaryCondition* Robin(const int i) const {
191 return m_boundaryConditionList[m_idOfRobinBoundaryCondition[i]];
192 }
193 39688 inline BoundaryCondition* Robin(const int i) {
194 39688 return m_boundaryConditionList[m_idOfRobinBoundaryCondition[i]];
195 }
196
197 inline const BoundaryCondition* RobinNormal(const int i) const {
198 return m_boundaryConditionList[m_idOfRobinNormalBoundaryCondition[i]];
199 }
200 179480 inline BoundaryCondition* RobinNormal(const int i) {
201 179480 return m_boundaryConditionList[m_idOfRobinNormalBoundaryCondition[i]];
202 }
203
204 inline const BoundaryCondition* EmbedFSI(const int i) const {
205 return m_boundaryConditionList[m_idOfEmbedFSIBoundaryCondition[i]];
206 }
207 404968 inline BoundaryCondition* EmbedFSI(const int i) {
208 404968 return m_boundaryConditionList[m_idOfEmbedFSIBoundaryCondition[i]];
209 }
210
211 inline const BoundaryCondition* EssentialLumpedModelBC(const int i) const {
212 return m_boundaryConditionList[m_idOfEssentialLumpedModelBoundaryCondition[i]];
213 }
214 520 inline BoundaryCondition* EssentialLumpedModelBC(const int i) {
215 520 return m_boundaryConditionList[m_idOfEssentialLumpedModelBoundaryCondition[i]];
216 }
217
218 inline const BoundaryCondition* NaturalLumpedModelBC(const int i) const {
219 return m_boundaryConditionList[m_idOfNaturalLumpedModelBoundaryCondition[i]];
220 }
221 inline BoundaryCondition* NaturalLumpedModelBC(const int i) {
222 return m_boundaryConditionList[m_idOfNaturalLumpedModelBoundaryCondition[i]];
223 }
224
225 inline const BoundaryCondition* BackflowStabBC(const int i) const {
226 return m_boundaryConditionList[m_idOfBackflowStabBoundaryCondition[i]];
227 }
228
229 inline BoundaryCondition* BackflowStabBC(const int i) {
230 return m_boundaryConditionList[m_idOfBackflowStabBoundaryCondition[i]];
231 }
232
233 9752 inline int startIndiceOfValue(const int i) const {
234 9752 return m_startIndiceOfValue[i];
235 }
236 1653 inline std::vector<int>& startIndiceOfValue() {
237 1653 return m_startIndiceOfValue;
238 }
239
240 inline bool NaturalBoundaryCondition() const {
241 return m_naturalBoundaryCondition;
242 }
243 25769 inline bool NaturalBoundaryCondition() {
244 25769 return m_naturalBoundaryCondition;
245 }
246
247 inline bool EssentialBoundaryCondition() const {
248 return m_essentialBoundaryCondition;
249 }
250 30117 inline bool EssentialBoundaryCondition() {
251 30117 return m_essentialBoundaryCondition;
252 }
253
254 ///@}
255 ///@name Inquiry
256 ///@{
257
258 ///@}
259 ///@name Input and output
260 ///@{
261
262 void print(int verbose = 0, std::ostream& outstr = std::cout) const;
263
264 ///@}
265 ///@name Friends
266 ///@{
267
268 ///@}
269 protected:
270 ///@name Protected static Member Variables
271 ///@{
272
273 ///@}
274 ///@name Protected member Variables
275 ///@{
276
277 ///@}
278 ///@name Protected Operators
279 ///@{
280
281 ///@}
282 ///@name Protected Operations
283 ///@{
284
285 ///@}
286 ///@name Protected Access
287 ///@{
288
289 ///@}
290 ///@name Protected Inquiry
291 ///@{
292
293 ///@}
294 ///@name Protected LifeCycle
295 ///@{
296
297 ///@}
298 private:
299 ///@name Private static Member Variables
300 ///@{
301
302 ///@}
303 ///@name Private member Variables
304 ///@{
305
306 std::vector<BoundaryCondition*> m_boundaryConditionList;
307 std::vector<int> m_idOfDirichletBoundaryCondition;
308 std::vector<int> m_idOfNeumannBoundaryCondition;
309 std::vector<int> m_idOfNeumannNormalBoundaryCondition;
310 std::vector<int> m_idOfRobinBoundaryCondition;
311 std::vector<int> m_idOfRobinNormalBoundaryCondition;
312 std::vector<int> m_idOfEmbedFSIBoundaryCondition;
313 std::vector<int> m_idOfEssentialLumpedModelBoundaryCondition;
314 std::vector<int> m_idOfNaturalLumpedModelBoundaryCondition;
315 std::vector<int> m_idOfBackflowStabBoundaryCondition;
316
317 std::vector<int> m_startIndiceOfValue;
318 int m_numberOfBoundaryCondition;
319 bool m_naturalBoundaryCondition;
320 bool m_essentialBoundaryCondition;
321
322 std::vector<double> m_tmpValues;
323
324 ///@}
325 ///@name Private Operators
326 ///@{
327
328 ///@}
329 ///@name Private Operations
330 ///@{
331
332 ///@}
333 ///@name Private Access
334 ///@{
335
336 ///@}
337 ///@name Private Inquiry
338 ///@{
339
340 ///@}
341 ///@name Private LifeCycle
342 ///@{
343
344 ///@}
345 };
346 ///@}
347 ///@name Type Definitions
348 ///@{
349
350 ///@}
351 } /* namespace felisce.*/
352
353 #endif
354