GCC Code Coverage Report


Directory: ./
File: DegreeOfFreedom/boundaryConditionList.cpp
Date: 2024-04-14 07:32:34
Exec Total Coverage
Lines: 65 75 86.7%
Branches: 14 26 53.8%

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 // System includes
17
18 // External includes
19
20 // Project includes
21 #include "Core/felisce.hpp"
22 #include "DegreeOfFreedom/boundaryConditionList.hpp"
23 #include "DegreeOfFreedom/boundaryCondition.hpp"
24
25 namespace felisce
26 {
27 518 BoundaryConditionList::BoundaryConditionList():
28 518 m_numberOfBoundaryCondition(0),
29 518 m_naturalBoundaryCondition(false),
30 518 m_essentialBoundaryCondition(false)
31 {
32
33 518 }
34
35 /***********************************************************************************/
36 /***********************************************************************************/
37
38 518 BoundaryConditionList::~BoundaryConditionList()
39 {
40
2/2
✓ Branch 1 taken 1198 times.
✓ Branch 2 taken 518 times.
1716 for (std::size_t i = 0; i < m_boundaryConditionList.size(); i++) {
41
1/2
✓ Branch 1 taken 1198 times.
✗ Branch 2 not taken.
1198 delete m_boundaryConditionList[i];
42 }
43 518 }
44
45 /***********************************************************************************/
46 /***********************************************************************************/
47
48 1198 void BoundaryConditionList::add(BoundaryCondition* bc) {
49
50 1198 m_boundaryConditionList.push_back(bc);
51
52 // here is important to write, e.g., felisce::neumann to avoid name crash with BoundaryConditionList::neumann() the function Teo 29/01
53
8/10
✓ Branch 1 taken 1006 times.
✓ Branch 2 taken 60 times.
✓ Branch 3 taken 56 times.
✓ Branch 4 taken 4 times.
✓ Branch 5 taken 12 times.
✓ Branch 6 taken 12 times.
✓ Branch 7 taken 24 times.
✓ Branch 8 taken 24 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
1198 switch (bc->typeBC()) {
54 1006 case felisce::Dirichlet:
55 1006 m_idOfDirichletBoundaryCondition.push_back(m_numberOfBoundaryCondition);
56 1006 m_essentialBoundaryCondition = true;
57 1006 break;
58 60 case felisce::Neumann:
59 60 m_idOfNeumannBoundaryCondition.push_back(m_numberOfBoundaryCondition);
60 60 m_naturalBoundaryCondition = true;
61 60 break;
62 56 case felisce::NeumannNormal:
63 56 m_idOfNeumannNormalBoundaryCondition.push_back(m_numberOfBoundaryCondition);
64 56 m_naturalBoundaryCondition = true;
65 56 break;
66 4 case felisce::Robin:
67 4 m_idOfRobinBoundaryCondition.push_back(m_numberOfBoundaryCondition);
68 4 m_naturalBoundaryCondition = true;
69 4 break;
70 12 case felisce::RobinNormal:
71 12 m_idOfRobinNormalBoundaryCondition.push_back(m_numberOfBoundaryCondition);
72 12 m_naturalBoundaryCondition = true;
73 12 break;
74 12 case felisce::EmbedFSI:
75 12 m_idOfEmbedFSIBoundaryCondition.push_back(m_numberOfBoundaryCondition);
76 12 m_naturalBoundaryCondition = true;
77 12 break;
78 24 case felisce::EssentialLumpedModelBC:
79 24 m_idOfEssentialLumpedModelBoundaryCondition.push_back(m_numberOfBoundaryCondition);
80 24 m_essentialBoundaryCondition = true;
81 24 break;
82 24 case felisce::NaturalLumpedModelBC:
83 24 m_idOfNaturalLumpedModelBoundaryCondition.push_back(m_numberOfBoundaryCondition);
84 24 m_naturalBoundaryCondition = true;
85 24 break;
86 case felisce::BackflowStab:
87 m_idOfBackflowStabBoundaryCondition.push_back(m_numberOfBoundaryCondition);
88 m_naturalBoundaryCondition = true;
89 break;
90 // Default case should appear with a warning at compile time instead of an error in runtime
91 // (that's truly the point of using enums as switch cases)
92 // default:
93 // FEL_ERROR("This type of condition limit doesn't manage.");
94 // break;
95 }
96 1198 m_numberOfBoundaryCondition++;
97
98 1198 }
99
100 /***********************************************************************************/
101 /***********************************************************************************/
102
103 void BoundaryConditionList::fixUnknownIdForEachBC(const ListVariable& listVariable) {
104 for ( std::size_t iBoundaryCondition = 0; iBoundaryCondition <
105 m_boundaryConditionList.size(); iBoundaryCondition++) {
106 for ( std::size_t iVar = 0; iVar < listVariable.size(); iVar++) {
107 if (!strcmp(listVariable[iVar].name().c_str(),m_boundaryConditionList[iBoundaryCondition]->getVariable().name().c_str()))
108 m_boundaryConditionList[iBoundaryCondition]->getUnknown() = static_cast<int>(iVar);
109 }
110 }
111 }
112
113 /***********************************************************************************/
114 /***********************************************************************************/
115
116 80 void BoundaryConditionList::print(int verbose, std::ostream& outstr) const {
117
1/2
✓ Branch 0 taken 80 times.
✗ Branch 1 not taken.
80 if (verbose) {
118 80 outstr << "Number of BC: " << m_numberOfBoundaryCondition << std::endl;
119 80 outstr << "Number of Dirichlet BC: " << m_idOfDirichletBoundaryCondition.size() << std::endl;
120 80 outstr << "Number of Neumann BC: " << m_idOfNeumannBoundaryCondition.size() << std::endl;
121 80 outstr << "Number of Neumann Normal BC: " << m_idOfNeumannNormalBoundaryCondition.size() << std::endl;
122 80 outstr << "Number of Robin BC: " << m_idOfRobinBoundaryCondition.size() << std::endl;
123 80 outstr << "Number of RobinNormal BC: " << m_idOfRobinNormalBoundaryCondition.size() << std::endl;
124 80 outstr << "Number of EmbedFSI BC: " << m_idOfEmbedFSIBoundaryCondition.size() << std::endl;
125 80 outstr << "Number of Essential LumpedModelBC: " << m_idOfEssentialLumpedModelBoundaryCondition.size() << std::endl;
126 80 outstr << "Number of Natural LumpedModelBC: " << m_idOfNaturalLumpedModelBoundaryCondition.size() << std::endl;
127 80 outstr << "Number of Backflow stabilization: " << m_idOfBackflowStabBoundaryCondition.size() << std::endl;
128
2/2
✓ Branch 0 taken 320 times.
✓ Branch 1 taken 80 times.
800 for ( std::size_t iBoundaryCondition = 0; iBoundaryCondition <
129 400 m_boundaryConditionList.size(); iBoundaryCondition++)
130 320 m_boundaryConditionList[iBoundaryCondition]->print(verbose);
131 80 outstr << std::endl;
132 }
133 80 }
134
135 /***********************************************************************************/
136 /***********************************************************************************/
137
138 1150 std::size_t BoundaryConditionList::size() {
139 1150 return m_boundaryConditionList.size();
140 }
141 }
142