Directory: | ./ |
---|---|
File: | Core/felisceParam.cpp |
Date: | 2024-04-14 07:32:34 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 1143 | 1426 | 80.2% |
Branches: | 1074 | 2438 | 44.1% |
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 & J-F. Gerbeau & V. Martin | ||
13 | // | ||
14 | |||
15 | // System includes | ||
16 | #include <iomanip> | ||
17 | #include <ctime> | ||
18 | #include <regex> | ||
19 | #include <numeric> | ||
20 | |||
21 | // External includes | ||
22 | |||
23 | // Project includes | ||
24 | #include "Core/felisceParam.hpp" | ||
25 | #include "Hyperelasticity/pressureDataIncompressible.hpp" | ||
26 | |||
27 | namespace felisce | ||
28 | { | ||
29 | ✗ | FelisceParam::FelisceParam() | |
30 | { | ||
31 | } | ||
32 | |||
33 | /***********************************************************************************/ | ||
34 | /***********************************************************************************/ | ||
35 | |||
36 | ✗ | FelisceParam::~FelisceParam() | |
37 | { | ||
38 | } | ||
39 | |||
40 | /***********************************************************************************/ | ||
41 | /***********************************************************************************/ | ||
42 | |||
43 | 490 | UniqueFelisceParam::UniqueFelisceParam(const std::size_t instanceIndex): | |
44 | 490 | mInstanceIndex(instanceIndex), | |
45 |
1/2✓ Branch 2 taken 490 times.
✗ Branch 3 not taken.
|
490 | timer(false) |
46 | { | ||
47 | 490 | } | |
48 | |||
49 | /***********************************************************************************/ | ||
50 | /***********************************************************************************/ | ||
51 | |||
52 | ✗ | UniqueFelisceParam::~UniqueFelisceParam() | |
53 | { | ||
54 | ✗ | for (auto it = elementFieldDynamicValueMap.begin(); it != elementFieldDynamicValueMap.end(); it++) { | |
55 | ✗ | delete it->second; | |
56 | } | ||
57 | } | ||
58 | |||
59 | /***********************************************************************************/ | ||
60 | /***********************************************************************************/ | ||
61 | |||
62 | 300 | CommandLineOption UniqueFelisceParam::initialize(const int argc, const char** argv) | |
63 | { | ||
64 | 300 | auto opt = CommandLineOption(argc, argv, mInstanceIndex); | |
65 |
1/2✓ Branch 1 taken 300 times.
✗ Branch 2 not taken.
|
300 | this->initialize(opt); |
66 | 300 | return opt; | |
67 | } | ||
68 | |||
69 | /***********************************************************************************/ | ||
70 | /***********************************************************************************/ | ||
71 | |||
72 | 465 | void UniqueFelisceParam::initialize(CommandLineOption& opt) | |
73 | { | ||
74 |
1/2✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | parseInputFile(opt.argcFelisce(), opt.argvFelisce(), opt.dataFileName()); |
75 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 465 times.
|
465 | if (opt.printHelp()) { |
76 | ✗ | printHelp(); | |
77 | ✗ | exit(0); | |
78 | } | ||
79 | 465 | } | |
80 | |||
81 | /***********************************************************************************/ | ||
82 | /***********************************************************************************/ | ||
83 | |||
84 | 465 | void UniqueFelisceParam::parseInputFile(int argc, char** argv,std::string filename) | |
85 | { | ||
86 | // Create out customized parser | ||
87 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | GetPotCustomized gpc; |
88 |
2/4✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 465 times.
✗ Branch 5 not taken.
|
465 | gpc.initialize(argc, argv, filename); |
89 | |||
90 | // Debug | ||
91 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("debug"); |
92 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(m_verbose,"verbose", 0,""); |
93 | |||
94 | // Chrono | ||
95 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("chrono"); |
96 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(chronoToScreen,"toScreen",false,"Output chrono to screen"); |
97 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(chronoToFile,"toFile",false,"Write chrono measures to file <resultDir>/chrono.md"); |
98 |
2/4✓ Branch 0 taken 465 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 465 times.
|
465 | if ( chronoToScreen || chronoToFile ) |
99 | ✗ | timer.State() = true; | |
100 | |||
101 | // Data | ||
102 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("data"); |
103 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(inputDirRaw,"inputDirectory","./","Directory where to read data. " |
104 | "Accept envrionment variables: HOME, FELISCE_DATA_DIR, FELISCE_INRIA_DATA_DIR, FELISCE_RESULT_DIR"); | ||
105 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | inputDirectory = inputDirRaw; |
106 |
2/6✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
465 | if (inputDirectory.at(inputDirectory.length()-1) != '/') inputDirectory += '/'; |
107 |
5/10✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 465 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 465 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 465 times.
✗ Branch 16 not taken.
|
465 | inputDirectory = expandEnvironmentVariables(filename,"data","inputDirectory",inputDirectory); |
108 |
2/4✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 465 times.
✗ Branch 5 not taken.
|
465 | FEL_WARNING_IF_NO_DIRECTORY(inputDirectory); |
109 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(inputFile,"inputFile", "none",""); |
110 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(podBasisFile,"podBasisFile","non","File containing the POD basis to be used."); |
111 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(timeMaxCaseFile,"timeMaxCaseFile",0,"Maximum time of the case file- to do: delete and read directly in the file"); |
112 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(readDisplFromFile,"readDisplFromFile",false,"Bool variable to impose external movement to the mesh."); |
113 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(readPreStressedDisplFromFile,"readPreStressedDisplFromFile",false,"Bool variable to impose pre-stressed displacement in an FSI simulation."); |
114 | |||
115 | // Transient | ||
116 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("transient"); |
117 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(timeStep,"timeStep",0.1,"Time step beetween two iterations."); |
118 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(timeMax,"timeMax",0.,"Maximum time"); |
119 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(time,"time",0.,"Physical time"); |
120 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(timeStepCharact,"timeStepCharact",0.01,"Time step tolerated while backtracking the characteristic lines"); |
121 | 465 | iteration = 0; | |
122 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(timeIterationMax,"timeIterationMax",1,"Maximum number of time iterations"); |
123 | // iterationMax = (int)((timeMax - time) / timeStep); | ||
124 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(frequencyWriteSolution, "frequencyWriteSolution", 1,""); |
125 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(periodNbSteps, "periodNbSteps", 1,""); |
126 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(intervalWriteSolution, "intervalWriteSolution", "0 0",""); |
127 |
1/2✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
|
465 | FEL_ASSERT_EQUAL(intervalWriteSolution.size(),2); |
128 | //FEL_CHECK(intervalWriteSolution.size()==2, "intervalWriteSolution must be an interval, with a size equal to 2") | ||
129 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(integrationTimeMethod,"integrationTimeMethod", "EXPLICIT_EULER", "Time integration method - used for instance in ALPmodel and thin-walled solid models."); |
130 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(writeSolutionMeshes,"writeSolutionMeshes",false,"call writeSolutionAndMeshes() write .geo in time"); |
131 | |||
132 | // Variable | ||
133 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("variable"); |
134 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.assertSameLength(2,"variable","typeOfFiniteElement"); |
135 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nameVariable,"variable","None",""); |
136 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(idMesh, "idMesh", "0", "id of the mesh associated to the variable"); |
137 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(typeOfFiniteElement,"typeOfFiniteElement","None","0:linear, 1:quadratic, 2:bubble"); |
138 |
2/2✓ Branch 1 taken 743 times.
✓ Branch 2 taken 465 times.
|
1208 | for (std::size_t i=0; i<typeOfFiniteElement.size(); ++i) { |
139 | 743 | const auto value = typeOfFiniteElement[i]; | |
140 |
2/2✓ Branch 0 taken 60 times.
✓ Branch 1 taken 683 times.
|
743 | if (value == 1) { |
141 | 60 | non_p1_mesh = true; | |
142 | } | ||
143 |
3/6✓ Branch 1 taken 743 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 743 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 743 times.
|
743 | if (typeOfFiniteElement[i] < 0 || typeOfFiniteElement[i] > 2) { |
144 | ✗ | std::ostringstream msg; | |
145 | msg << "In section variable, typeOfFiniteElement " | ||
146 | << "must be an array of 0 (linear) or 1 (quadratic) or 2 (bubble), " | ||
147 | ✗ | << "but " << i << "st " << "element value is : " | |
148 | ✗ | << typeOfFiniteElement[i] << std::endl; | |
149 | ✗ | FEL_ERROR(msg.str().c_str()); | |
150 | } | ||
151 | } | ||
152 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(degreeOfExactness,"degreeOfExactness","2","The degree of exactness in the FE Gauss integration"); |
153 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(decomposePlaneTransverse,"decomposePlaneTransverse","false","If the integration is decomposed in plane-transverse integration"); |
154 |
1/2✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
|
465 | std::string auxiliar_string_exactness = std::to_string(degreeOfExactness[0]); |
155 |
2/2✓ Branch 1 taken 278 times.
✓ Branch 2 taken 465 times.
|
743 | for (std::size_t i = 1; i < nameVariable.size(); i++) { |
156 |
1/2✓ Branch 1 taken 278 times.
✗ Branch 2 not taken.
|
278 | auxiliar_string_exactness += " "; |
157 |
2/4✓ Branch 2 taken 278 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 278 times.
✗ Branch 6 not taken.
|
278 | auxiliar_string_exactness += std::to_string(degreeOfExactness[i]); |
158 | } | ||
159 |
1/2✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
|
465 | gpc.get(planeDegreeOfExactness,"planeDegreeOfExactness",auxiliar_string_exactness.c_str(),"Same default as global degreeOfExactness"); |
160 |
1/2✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
|
465 | gpc.get(transverseDegreeOfExactness,"transverseDegreeOfExactness",auxiliar_string_exactness.c_str(),"Same default as global degreeOfExactness"); |
161 | 465 | physicalVariable.clear(); | |
162 | // TODO: Replace with switch | ||
163 |
2/2✓ Branch 1 taken 743 times.
✓ Branch 2 taken 465 times.
|
1208 | for ( std::size_t i = 0; i < nameVariable.size(); i++) { |
164 | |||
165 |
2/2✓ Branch 2 taken 83 times.
✓ Branch 3 taken 660 times.
|
743 | if (nameVariable[i] == "temperature") |
166 |
1/2✓ Branch 1 taken 83 times.
✗ Branch 2 not taken.
|
83 | physicalVariable.push_back(temperature); |
167 | |||
168 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 660 times.
|
660 | else if (nameVariable[i] == "velocityAdvection") |
169 | ✗ | physicalVariable.push_back(velocityAdvection); | |
170 | |||
171 |
2/2✓ Branch 2 taken 88 times.
✓ Branch 3 taken 572 times.
|
660 | else if (nameVariable[i] == "velocity") |
172 |
1/2✓ Branch 1 taken 88 times.
✗ Branch 2 not taken.
|
88 | physicalVariable.push_back(velocity); |
173 | |||
174 |
2/2✓ Branch 2 taken 90 times.
✓ Branch 3 taken 482 times.
|
572 | else if (nameVariable[i] == "pressure") |
175 |
1/2✓ Branch 1 taken 90 times.
✗ Branch 2 not taken.
|
90 | physicalVariable.push_back(pressure); |
176 | |||
177 |
2/2✓ Branch 2 taken 4 times.
✓ Branch 3 taken 478 times.
|
482 | else if (nameVariable[i] == "velocityDiv") |
178 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | physicalVariable.push_back(velocityDiv); |
179 | |||
180 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 478 times.
|
478 | else if (nameVariable[i] == "potExtraCell") |
181 | ✗ | physicalVariable.push_back(potExtraCell); | |
182 | |||
183 |
2/2✓ Branch 2 taken 1 times.
✓ Branch 3 taken 477 times.
|
478 | else if (nameVariable[i] == "potTransMemb") |
184 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | physicalVariable.push_back(potTransMemb); |
185 | |||
186 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 477 times.
|
477 | else if (nameVariable[i] == "section") |
187 | ✗ | physicalVariable.push_back(section); | |
188 | |||
189 |
2/2✓ Branch 2 taken 325 times.
✓ Branch 3 taken 152 times.
|
477 | else if (nameVariable[i] == "displacement") |
190 |
1/2✓ Branch 1 taken 325 times.
✗ Branch 2 not taken.
|
325 | physicalVariable.push_back(displacement); |
191 | |||
192 |
2/2✓ Branch 2 taken 140 times.
✓ Branch 3 taken 12 times.
|
152 | else if (nameVariable[i] == "rotation") |
193 |
1/2✓ Branch 1 taken 140 times.
✗ Branch 2 not taken.
|
140 | physicalVariable.push_back(rotation); |
194 | |||
195 |
2/2✓ Branch 2 taken 8 times.
✓ Branch 3 taken 4 times.
|
12 | else if (nameVariable[i] == "potThorax") |
196 |
1/2✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
|
8 | physicalVariable.push_back(potThorax); |
197 | |||
198 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
|
4 | else if (nameVariable[i] == "turbulenceK") |
199 | ✗ | physicalVariable.push_back(turbulenceK); | |
200 | |||
201 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
|
4 | else if (nameVariable[i] == "turbulenceOM") |
202 | ✗ | physicalVariable.push_back(turbulenceOM); | |
203 | |||
204 |
1/2✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
|
4 | else if (nameVariable[i] == "iop") |
205 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | physicalVariable.push_back(iop); |
206 | |||
207 | ✗ | else if (nameVariable[i] == "vorticity") | |
208 | ✗ | physicalVariable.push_back(vorticity); | |
209 | |||
210 | ✗ | else if (nameVariable[i] == "velocity_square") | |
211 | ✗ | physicalVariable.push_back(velocity_square); | |
212 | |||
213 | ✗ | else if (nameVariable[i] == "stressX") | |
214 | ✗ | physicalVariable.push_back(stressX); | |
215 | |||
216 | ✗ | else if (nameVariable[i] == "stressY") | |
217 | ✗ | physicalVariable.push_back(stressY); | |
218 | |||
219 | ✗ | else if (nameVariable[i] == "stressZ") | |
220 | ✗ | physicalVariable.push_back(stressZ); | |
221 | |||
222 | ✗ | else if (nameVariable[i] == "stressDotNormal") | |
223 | ✗ | physicalVariable.push_back(stressDotNormal); | |
224 | |||
225 | ✗ | else if (nameVariable[i] == "WG") | |
226 | ✗ | physicalVariable.push_back(WG); | |
227 | |||
228 | ✗ | else if (nameVariable[i] == "wallShearStress") | |
229 | ✗ | physicalVariable.push_back(wallShearStress); | |
230 | |||
231 | ✗ | else if (nameVariable[i] == "pressureDarcy") | |
232 | ✗ | physicalVariable.push_back(pressureDarcy); | |
233 | |||
234 | ✗ | else if (nameVariable[i] == "lagMultiplier") | |
235 | ✗ | physicalVariable.push_back(lagMultiplier); | |
236 | |||
237 | ✗ | else if (nameVariable[i] == "None") | |
238 | ; | ||
239 | |||
240 | else { | ||
241 | ✗ | std::cout << "Physical variable = " << nameVariable[i] << std::endl; | |
242 | ✗ | FEL_ERROR("This physical is not in the Felisce database"); | |
243 | } | ||
244 | } | ||
245 | |||
246 | // Mesh | ||
247 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("mesh"); |
248 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(meshDirRaw,"meshDir","./","Directory where to read data. " "Accept envrionment variables: HOME, FELISCE_DATA_DIR, FELISCE_INRIA_DATA_DIR, FELISCE_RESULT_DIR"); |
249 | { | ||
250 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | meshDir = meshDirRaw; |
251 |
2/6✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
465 | if (meshDir.at(meshDir.length()-1) != '/') meshDir += '/'; |
252 |
5/10✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 465 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 465 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 465 times.
✗ Branch 16 not taken.
|
465 | meshDir = expandEnvironmentVariables(filename,"mesh","meshDir",meshDir); |
253 |
2/4✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 465 times.
✗ Branch 5 not taken.
|
465 | FEL_WARNING_IF_NO_DIRECTORY(meshDir); |
254 | } | ||
255 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(inputMesh, "inputMesh","default.mesh","Input Mesh file name"); |
256 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(resultDirRaw,"resultDir","./","Directory where to write data. " "Accept envrionment variables: HOME, FELISCE_DATA_DIR, FELISCE_INRIA_DATA_DIR, FELISCE_RESULT_DIR"); |
257 | { | ||
258 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | resultDir = resultDirRaw; |
259 |
4/6✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 58 times.
✓ Branch 5 taken 407 times.
✓ Branch 7 taken 58 times.
✗ Branch 8 not taken.
|
465 | if (resultDir.at(resultDir.length()-1) != '/') resultDir += '/'; |
260 |
5/10✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 465 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 465 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 465 times.
✗ Branch 16 not taken.
|
465 | resultDir = expandEnvironmentVariables(filename,"mesh","resultDir",resultDir); |
261 | } | ||
262 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(outputMesh, "outputMesh","out.geo","Ouput Mesh file name"); |
263 | { | ||
264 |
1/6✗ Branch 2 not taken.
✓ Branch 3 taken 465 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
|
465 | FEL_CHECK(inputMesh.size() == outputMesh.size(), "inputMesh and outputMesh must be the same sizes"); |
265 | } | ||
266 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(prefixName,"prefixName","default","?"); |
267 | { | ||
268 |
1/6✗ Branch 2 not taken.
✓ Branch 3 taken 465 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
|
465 | FEL_CHECK(prefixName.size() == inputMesh.size(), "prefixName, inputMesh and outputMesh must have the same size"); |
269 | } | ||
270 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(resultDirStressesRaw,"resultDirStresses","./","Directory where to write data. " "Accept envrionment variables: HOME, FELISCE_DATA_DIR, FELISCE_INRIA_DATA_DIR, FELISCE_RESULT_DIR"); |
271 | { | ||
272 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | resultDirStresses= resultDirStressesRaw; |
273 |
2/6✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
465 | if (resultDirStresses.at(resultDirStresses.length()-1) != '/') resultDirStresses += '/'; |
274 |
5/10✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 465 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 465 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 465 times.
✗ Branch 16 not taken.
|
465 | resultDirStresses = expandEnvironmentVariables(filename,"mesh","resultDirStresses",resultDirStresses); |
275 | } | ||
276 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(outputFileFormat, "outputFileFormat", 0, "0 = ensight6, 1 = ensight gold, 2 = binary ensight6"); // TODO D.C. same for every mesh? or depends on the variables |
277 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(reinterpolation,"reinterpolation",false,"true if you treat the Numerical Locking"); // TODO D.C. same for every mesh? does it depend on the mesh or on the FE used (in this case maybe move in appropriate section) |
278 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(extendToLowerDimensions,"extendToLowerDimensions",false,"true if we consider lower order identities as boundaries"); // TODO D.C. same for every mesh? |
279 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(choiceDirectionTangent,"choiceDirectionTangent","e1"," choice direction to build Tangents vectors to shell model ; 1-> e=x, 2-> e=y, 3-> e=z "); // TODO D.C. same for every mesh? |
280 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(whenExtrudePreserveOriginalCoordinates,"whenExtrudePreserveOriginalCoordinates",true,"If we preserve the original coordinates when extruding"); // TODO D.C. same for every mesh? |
281 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(checkVolumeOrientation,"checkVolumeOrientation",false,"Check if the elements are inverted or not"); // TODO D.C. same for every mesh? |
282 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(checkNormalOrientation,"checkNormalOrientation",false,"Checks if the normals are properly oriented"); // TODO D.C. same for every mesh? |
283 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(CVGraphInterface,"CVGraphInterface","default","Matching file for coupling"); // TODO D.C. same for every mesh? |
284 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(duplicateSupportDof, "duplicateSupportDof", false, "Set to true if some support dof are to be duplicated"); // TODO D.C. same for every mesh? this ooes not really depend only on the meshes, it involves meshes variales solutions etc... |
285 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(effective2dGEOmesh, "effective2dGEOmesh", false, "Set to true if GEO file, which is 3D, is effectively 2D for XFEM, etc."); // TODO D.C. same for every mesh? |
286 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(flipNormal, "flipNormal", false, "if set to true it will flip all the normals"); // TODO D.C. same for every mesh? |
287 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(readNodesReferences, "readNodesReferences", false, "if we read the ids of the nodes"); // TODO D.C. same for every mesh? |
288 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(notBoundarySurfaceLabels, "notBoundarySurfaceLabels", "", "Labels of surface element that are part of the domain but are not boundary"); // TODO D.C. same for every mesh? the real question is: can different meshes have the same labels??? |
289 | |||
290 | 465 | std::string section; | |
291 | 465 | std::vector<int> mesh_label; | |
292 | 465 | std::vector<std::string> mesh_stringLabel; | |
293 | |||
294 | //iterating over elements type (eg: Nodes, Segments2, Triangles3, Triangles6, Tetrahedra4,...) | ||
295 |
1/6✗ Branch 1 not taken.
✓ Branch 2 taken 465 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
465 | FEL_CHECK((std::size_t)GeometricMeshRegion::m_numTypesOfElement==GeometricMeshRegion::eltEnumToFelNameGeoEle.size(),"missing some elements"); |
296 |
2/2✓ Branch 0 taken 11625 times.
✓ Branch 1 taken 465 times.
|
12090 | for (int i=0 ; i< GeometricMeshRegion::m_numTypesOfElement ; i++) { |
297 |
1/2✓ Branch 2 taken 11625 times.
✗ Branch 3 not taken.
|
11625 | section = GeometricMeshRegion::eltEnumToFelNameGeoEle[i].first; |
298 |
2/4✓ Branch 3 taken 11625 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 11625 times.
✗ Branch 7 not taken.
|
11625 | gpc.moveToSection(section.c_str()); |
299 |
1/2✓ Branch 1 taken 11625 times.
✗ Branch 2 not taken.
|
11625 | gpc.get(mesh_label,"label","","label indice"); |
300 |
1/2✓ Branch 1 taken 11625 times.
✗ Branch 2 not taken.
|
11625 | gpc.get(mesh_stringLabel,"stringLabel","","label name associated to label indice"); |
301 | |||
302 | //iteration over label and stringLabel | ||
303 |
2/2✓ Branch 3 taken 260 times.
✓ Branch 4 taken 11625 times.
|
11885 | for (unsigned int j=0; j<std::min(mesh_label.size(),mesh_stringLabel.size()) ; j++) |
304 |
3/6✓ Branch 2 taken 260 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 260 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 260 times.
✗ Branch 10 not taken.
|
260 | felName2MapintRef2DescLine[ section ][ mesh_label[j] ] = mesh_stringLabel[j]; |
305 | |||
306 |
2/2✓ Branch 1 taken 260 times.
✓ Branch 2 taken 11625 times.
|
11885 | for (unsigned int j=0; j< mesh_stringLabel.size(); j++) |
307 |
2/4✓ Branch 2 taken 260 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 260 times.
✗ Branch 7 not taken.
|
260 | GeometricMeshRegion::descriptionLineEnsightToListLabel[mesh_stringLabel[j]].insert(mesh_label[j]); // TODO D.C. only one? the real question is: can different meshes have the same labels??? |
308 | |||
309 | 11625 | mesh_label.clear(); | |
310 | 11625 | mesh_stringLabel.clear(); | |
311 | } | ||
312 | // TODO D.C. for multiple meshes | ||
313 | //iterating over elements type (eg: Nodes, Segments2, Triangles3, Triangles6, Tetrahedra4,...) | ||
314 | // felName2MapintRef2DescLine.resize(inputMesh.size()); | ||
315 | // for (std::size_t iMesh = 0; iMesh < inputMesh.size(); ++iMesh) { | ||
316 | // std::stringstream iMeshString; | ||
317 | // iMeshString << iMesh; | ||
318 | |||
319 | // for (int i=0 ; i< GeometricMeshRegion::m_numTypesOfElement ; i++) { | ||
320 | // section = GeometricMeshRegion::eltEnumToFelNameGeoEle[i].first; | ||
321 | // gpc.moveToSection(section.c_str()+iMeshString.str().c_str()); | ||
322 | // gpc.get(mesh_label,"label","","label indice"); | ||
323 | // gpc.get(mesh_stringLabel,"stringLabel","","label name associated to label indice"); | ||
324 | |||
325 | // //iteration over label and stringLabel | ||
326 | // for (unsigned int j=0; j<std::min(mesh_label.size(),mesh_stringLabel.size()) ; j++) | ||
327 | // felName2MapintRef2DescLine[iMesh][ section ][ mesh_label[j] ] = mesh_stringLabel[j]; | ||
328 | |||
329 | // for (unsigned int j=0; j< mesh_stringLabel.size(); j++) | ||
330 | // GeometricMeshRegion::descriptionLineEnsightToListLabel[mesh_stringLabel[j]].insert(mesh_label[j]); | ||
331 | |||
332 | // mesh_label.clear(); | ||
333 | // mesh_stringLabel.clear(); | ||
334 | // } | ||
335 | // } | ||
336 | |||
337 | // Geometry | ||
338 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("geometry"); |
339 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(Geo.tolrescaling, "tolrescaling", 1., "Rescaling factor for the default geometric tolerance."); |
340 | |||
341 | // Physics | ||
342 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("physics"); |
343 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(unit,"unit",1,"?"); |
344 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(spaceUnit,"spaceUnit",1.,"This number multiplies the coordinates of the mesh"); |
345 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(testCase,"testCase",1,"Test case number"); |
346 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(model,"model","model","Model name"); |
347 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(u_max_inlet,"u_max_inlet", 1., "Maximum velocity at the inlet when parabolic case is chosen"); |
348 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(max_flow_scaling,"max_flow_scaling", 1., "Parameter to scale unitary flow inlet"); |
349 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(T_sis, "T_sis", 0.25, "systolic time"); |
350 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(T, "T", 0.8, "Duration of one cardiac cycle"); |
351 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(symmetry, "symmetry", 0., "Factor to control symmetry of bc at inlet"); |
352 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(dimension, "dimension", "", "Physical dimesion for every problem"); |
353 | |||
354 | //POD | ||
355 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("POD"); |
356 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nbTestCase,"nbTestCase", 16, "number of testCase to consider (the first nbTestCase of the list)"); |
357 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(snap_centered,"snap_centered",0,"Consider the snapshots centered with respect to the temporal mean"); |
358 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(L2Mass,"L2Mass",0,"Comparison between POD and full model is performed by mass matrix"); |
359 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(output_dir, "output_dir", "./PODBasis", "directory where the pod basis will be write"); |
360 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(output_file, "output_file", "PODbasis", "pod basis filename (filename.dim, filename.mean filename.pod)"); |
361 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(case_dir,"case_dir","../../rb_offline_phase/offline_data_base/SIM#0", "list of the directory where find the case_file"); |
362 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(case_file_name, "case_file_name", "NavierStokes.case", "name of the case file corresponding to the case_dir directory"); |
363 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(snap_interval, "snap_interval", "[0,1,200]", "for each testCase associate the following: [start,step,end];"); |
364 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(variable_name, "variable_name", "pressure", "the name of the variables in ensight"); |
365 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(verbose_ensight, "verbose_ensight", true, "verbosity of ensight reader"); |
366 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(podFolder, "podFolder", "./POD", "POD folder"); |
367 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(timeStepSnap, "timeStepSnap", 1, "time difference between snapshots"); |
368 | |||
369 | //Optimal Reconstruction | ||
370 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("optrec"); |
371 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(targetHR,"targetHR", 0.0, "target heart rate of patient"); |
372 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(HRwindowSize, "HRwindowSize", 0.0, " "); |
373 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(image_modality, "image_modality", "CFI", " "); |
374 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(patients_data_dir, "patients_data_dir", "/", " "); |
375 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(sistolicTime, "sistolicTime", 0.0, " "); |
376 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(timeWindowSize,"timeWindowSize", 0.0, "size of time window to do model reduction"); |
377 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nbMeasures, "nbMeasures", -1, "number of sample volumes"); |
378 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(modelReductionTechnique,"modelReductionTechnique", "--", "Either POD or MBOMP"); |
379 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nbModes,"nbModes",10,"number of modes used in the reconstruction"); |
380 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(targetTime, "targetTime","[0,0.01,0.5]", " "); |
381 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useField2Measures, "useField2Measures", true, "bool to std::set measures origin"); |
382 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(doSnapshotsSVD, "doSnapshotsSVD", true, "bool to std::set is the POD have to be done"); |
383 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(calculateRieszRepresenters, "calculateRieszRepresenters", true, "bool to std::set if the Riesz representers have to be calculated calculated"); |
384 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(measuresFile, "measuresFile", "./velocityMeasures", "file of measures"); |
385 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(targetSim, "targetSim", "./targetSim", ".vct file with target simulation"); |
386 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(rrFolder, "rrFolder", "./RieszRep", "path to save Riesz representers"); |
387 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(fieldFolder, "fieldFolder", "./uReconst", "path to save reconstructed field"); |
388 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hashTableMesh, "hashTableMesh", "hashTable.mesh", "unestructured mesh representing hash table to locate points in the domain"); |
389 | |||
390 | //PressureEstimation | ||
391 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("PressureEstimation"); |
392 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(inletBoundaryLabel,"inletBoundaryLabel", 0, "Inlet boudary label. Pressyre drops will be calculated respect to this label."); |
393 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(wallBoundaryLabel,"wallBoundaryLabel", 0, "Wall boundary label."); |
394 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(outletBoundaryLabels,"outletBoundaryLabels", "", "Outlet boundary labels."); |
395 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(testFunctionsPath, "testFunctionsPath", "", "Path of functions to test momentum conservation equation."); |
396 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(uStarPath, "uStarPath", "", "Path to u*"); |
397 | |||
398 | //PostProcCFD | ||
399 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("PostProcCFD"); |
400 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(caseDirCFD, "caseDirCFD", "./Solution", "Case file directory"); |
401 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(caseFileNameCFD, "caseFileNameCFD", "./ns", "Case file name"); |
402 | |||
403 | //Rom | ||
404 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("rom"); |
405 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(ROMmethod,"ROMmethod","ROMmethod","ROM method: ALP, ALP-DEIM, POD."); |
406 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(solveEigenProblem,"solveEigenProblem",false,"Set to true if solve an eigenvalues problem."); |
407 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(optimizePotential,"optimizePotential",false,"Set to true if the initial potential is optimized to minimize the initial error in the solution."); |
408 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(chiSchrodinger,"chiSchrodinger",0.0,"Parameter of Schrodinger operator when solving ALP eigen problem."); |
409 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useROM,"useROM",false,"Set to true if use a reduced order model."); |
410 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(dimRomBasis,"dimRomBasis",0,"Dimension of reduced model basis."); |
411 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(dimCollocationPts,"dimCollocationPts",0,"Number of collocation points for ALP-DEIM-ROM method."); |
412 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(numApproxMode,"numApproxMode",0,"Number of modes used to fix initial potential."); |
413 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nCutOff,"nCutOff",0,"Size of the space = dimCollocationPts in ALP-DEIM case."); |
414 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(collocationPtsFile,"collocationPtsFile","collocationPtsFile","File containing collocation points id for ALP-DEIM-ROM method."); |
415 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useImprovedRec,"useImprovedRec",false,"Set to true if you want to use the improved reconstruction"); |
416 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(dimOrthComp,"dimOrthComp",0,"Dimension of orthogonal complement to improve the reconstruction"); |
417 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(orderALP,"orderALP",0,"Order of ALP tensors."); |
418 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(readBasisFromFile,"readBasisFromFile",false,"Read basis from ensight files or calculate a new RO basis."); |
419 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(writeBasisEvolution,"writeBasisEvolution",false,"Write basis in ensight files at each time step."); |
420 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasSource,"hasSource",false,"Has a term source."); |
421 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(numberOfSource,"numberOfSource",0,"Number of source terms."); |
422 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(numberOfSnapshot, "numberOfSnapshot",0,"Number of snapshots."); |
423 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(samplingFrequency,"samplingFrequency",0,"Sampling Frequency."); |
424 | |||
425 | // Fluid | ||
426 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("fluid"); |
427 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(orderBdfNS, "orderBdfNS",1,"Bdf order for NS model."); |
428 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(orderBdfFS, "orderBdfFS",1,"Bdf order for fractional step model."); |
429 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(quasistatic, "quasistatic", false, "When true the term rho/dt in the NS system is std::set to zero. Everywhere else (Windkessel, stabilization, ...) nothing is changed"); |
430 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(density,"density",1.,"Fluid density."); |
431 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(viscosity,"viscosity",1.,"Fluid Viscosity."); |
432 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(NS_alpha,"NS_alpha",0.,"like a capacitance in Rp,C,Rd lumpedModelBC model"); |
433 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(NS_beta,"NS_beta",0.,"like inverse of distal resistance in Rp,C,Rd lumpedModelBC model"); |
434 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(NS_gamma,"NS_gamma",0.,"like proximal resistance in Rp,C,Rd lumpedModelBC model"); |
435 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(NSmodifFlag,"NSmodifFlag",0,"Flag: 0 = no modified NS model"); |
436 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(NS_modifLabel,"NS_modifLabel",1492817,"label where we apply modified NS"); |
437 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(characteristicMethod,"characteristicMethod",0,"to switch from semi-implicit resolution (= 0) to method of characteristics (= 1 with RK4 scheme, else with Euler scheme)"); |
438 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(addedBoundaryFlag,"addedBoundaryFlag",0,"Flag to add scpecific boundary terms: 0= add nothing, 1 = RIS model, 2 = outflow stab, 3 = cardiac cycle"); |
439 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(stabilizationLabel,"stabilizationLabel","","Label where we use stabilization"); |
440 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(stabilizationCoef,"stabilizationCoef",0.,"Coef used in stabilization function"); |
441 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(inletLabel,"inletLabel",0,"Label of an inlet of interest"); |
442 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(outletLabel,"outletLabel",0,"Label of an outlet of interest"); |
443 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(referenceValue1,"referenceValue1",1.,"General purpose reference value"); |
444 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(referenceValue2,"referenceValue2",1.,"General purpose reference value"); |
445 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(referenceValue3,"referenceValue3",1.,"General purpose reference value"); |
446 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(referenceValue4,"referenceValue4",1.,"General purpose reference value"); |
447 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(explicitAdvection,"explicitAdvection",0,"Advection in Fractional Step."); |
448 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(CVGraphInterfaceVariationalBC,"CVGraphInterfaceVariationalBC",0,"Apply variational BC in RHS for coupling"); |
449 | |||
450 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(NitscheStabilizParam,"NitscheStabilizParam",0.,"Stabilization parameter for Nitsche's formulation"); |
451 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(NitschePenaltyParam,"NitschePenaltyParam",0.,"Penalty parameter for Nitsche's formulation"); |
452 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(ContactTolerance, "ContactTolerance", 0.01, "Tolerance value for the contact with a simple straight wall handled by the structure"); |
453 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useALEformulation,"useALEformulation",0,"Use the NS ALE formulation: 0: no ALE 1: standard ALE, 2: stabilized ALE"); |
454 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(bcInRefConfiguration,"bcInRefConfiguration",false,"BC applied in the ALE reference configuration"); |
455 | |||
456 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useElasticExtension,"useElasticExtension",false,"Use a linear elastic extension to construct the ALE map (By default, an harmonic ext. is used)"); |
457 | |||
458 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(initALEDispByFile,"initALEDispByFile",false,"Initial ALE mesh displacement read from file"); |
459 | |||
460 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(updateMeshByVelocity,"updateMeshByVelocity",false,"Harmonic extension evaluated on the velocity"); |
461 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useSymmetricStress,"useSymmetricStress",false,"Use the symmetric stress in the variational formulation"); |
462 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(NSequationFlag,"NSequationFlag",1,"Implementation method of convective term"); |
463 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(stabSUPG,"stabSUPG",0.1,"SUPG stabilization parameter"); |
464 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(stabdiv,"stabdiv",1.,"div stabilization parameter"); |
465 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(typeSUPG,"typeSUPG",1,"SUPG stabilization type"); |
466 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(NSStabType, "NSStabType", 0, "0 : SUPG, 1: Face-oriented"); |
467 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(stabFOVel, "stabFOVel", 0.01, "velocity jump coefficient for face-oriented stabilization"); |
468 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(stabFOPre, "stabFOPre", 0.01, "pressure jump coefficient for face-oriented stabilization"); |
469 | |||
470 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(orderPressureExtrapolation, "orderPressureExtrapolation", 0, "NSFracStep pressure extrapolation"); |
471 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(incrementalFS, "incrementalFS", 0, "Flag for FracStep incremental scheme"); |
472 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(coefRotScheme, "coefRotScheme", 0., "NSFracStep rotational incremental coef"); |
473 | |||
474 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(theta,"theta",1.,"Theta parameter in the theta method: 1: (default) Backward Euler, 0.5: Crank Nicolson"); |
475 | |||
476 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nonLinearFluid, "nonLinearFluid", false, "activation / deactivation non linear solver"); |
477 | |||
478 | |||
479 | |||
480 | // Fluid-Structure Interaction (FSI) | ||
481 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("fsi"); |
482 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(fsiCoupling,"fsiCoupling",false,"Enable tools for fsi coupling (residual computation, etc.)"); |
483 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(typeOfInterface,"typeOfInterface","conform","conform (ALE) or immersed"); |
484 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(fsiRNscheme,"fsiRNscheme",-1000,"-1: RN inner-iterations, 0: RN no-extrap, 1: RN 1st-order extrap, 2: RN 2nd-order extrap"); |
485 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gammaRN,"gammaRN",1.,"Robin parameter for RN iterations"); |
486 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useLumpedMassRN,"useLumpedMassRN",false,"Penalization of the structure edges to impose homogeneous boundary conditions"); |
487 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useMassLumping, "useMassLumping", false, "Penalization of the matrix mass with fe.measure()/fe.numDof() to fit the fsi coupling into the FictitiousDomain-RN explicit scheme"); |
488 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(fsiInterfaceLabel,"fsiInterfaceLabel","1","Label(s) of the solid interface surface in a FSI problem"); |
489 | // These parameters control the domain decomposition loop implemented in IOPcouplModel and in stokesLinearElasticityCoupledModel | ||
490 | // However, the different accelerations of the fixed point scheme are implemented in linearProblem | ||
491 | // and the parameters can be used in other different models. | ||
492 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(domainDecompositionToll,"domainDecompositionToll",1.e-4,"Tollerance on the relative error. Used, for instance, in stokesLinearElasticityCoupledModel"); |
493 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(domainDecompositionMaxIt,"domainDecompositionMaxIt",100,"Maximum number of . Used, for instance, in stokesLinearElasticityCoupledModel"); |
494 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(accelerationMethod,"accelerationMethod",0,"acceleration method for coupling. 0: default fixed point ( no acceleration indeed ), 1: relaxation, you have to give a parameter omegaAcceleration, 2: aitken 3: aitken modified"); |
495 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(omegaAcceleration,"omegaAcceleration",1,"see accelerationMethod"); |
496 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasOldMaster,"hasOldMaster",false,"old version of MasterFSI"); |
497 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(betaNormalized,"betaNormalized","1.","?"); |
498 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(sectionAtRest,"sectionAtRest","1.","?"); |
499 | |||
500 | // ZeroMQ | ||
501 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("ZeroMQ"); |
502 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(socketTransport, "socketTransport", "tcp", "communication transport protocol"); |
503 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(socketAddress, "socketAddress", "127.0.0.1", "transport-specific address (interface) to connect to"); |
504 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(socketPort, "socketPort", "5555", "for tcp transport, specifies the port on the interface"); |
505 | |||
506 | // Immersed data for the structure penalisation | ||
507 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("immersedData"); |
508 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasImmersedData,"hasImmersedData",false,""); |
509 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(meshDirImmersedStruct, "meshDirImmersedStruct", "./", "directory where to read data"); |
510 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(meshFileImmersedStruct, "meshFileImmersedStruct", "", "name of the mesh file"); |
511 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(penaltyCoeffImmersedStruct, "penaltyCoeffImmersedStruct", 1.e-6, "value of the penalisation coefficient"); |
512 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(allowProjectionImmersedStruct, "allowProjectionImmersedStruct", 0, "boolean to specify the projection"); |
513 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(valueSourceImmersedStruct, "valueSourceImmersedStruct", 0., "value used for the additional term in the source term"); |
514 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useMassMatrix, "useMassMatrix", 1, "Specify the content of the fourth block of the fluid matrix for the implicit immersed problems. 1: Penalisation coefficient * Mass matrix of the structure. 0: Penalisation coefficient."); |
515 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasDivDivStab,"hasDivDivStab",false,""); |
516 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(localDivDivPenalty,"localDivDivPenalty",1.,"local penalty coefficient for the div div stabilization."); |
517 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(divDivStabPostProcess,"divDivStabPostProcess",false,"boolean to print the results relative to the intersection of the structure mesh with the fluid mesh in files \"intersection.****.scl\""); |
518 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(intersectedSubElementsPostProcess,"intersectedSubElementsPostProcess",false,"boolean to print the results relative to the edges of the fluid mesh intersected by the structure mesh in files \"intersectedEdges.****.scl\""); |
519 | |||
520 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useFDlagrangeMult,"useFDlagrangeMult",false,""); |
521 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(massConstraint,"massConstraint",false,""); |
522 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(japanLabels, "japanLabels", "", "Labels of the boundary elements use to compute Japan constraint"); |
523 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(BHstab,"BHstab",false,""); |
524 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(BPstab,"BPstab",false,""); |
525 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(stabCoeffLag,"stabCoeffLag",1,""); |
526 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useFicItf,"useFicItf",false,""); |
527 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(flipItfNormal,"flipItfNormal",false,""); |
528 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useAverageNormal,"useAverageNormal",false,""); |
529 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
|
465 | FEL_CHECK( (BHstab != true) || (BPstab != true), "Choose only one stabilization between Barbosa-Hughes and Brezzi-Pitkaranta" ); |
530 |
2/8✓ Branch 0 taken 465 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 465 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
|
465 | FEL_CHECK( !((massConstraint == false) && (useFicItf == true)), "If massConstraint is false then useFicItf msut be false" ); |
531 | |||
532 | // Interface to M1G library | ||
533 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("M1G"); |
534 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(M1G.enable,"enable",false,"Set to true to use M1G module (provided with libXfm)"); |
535 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(M1G.verbose,"verbose",0,"Set verbosity level"); |
536 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(M1G.labelPhys,"labelPhys","","Edges labels of the physical interface to be linked with the fictitious interface"); |
537 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(M1G.labelFict,"labelFict","","Edges labels of the fictitious interface to be linked with the physical interface"); |
538 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(M1G.triLst,"triLst","","List of vertices composing the germ triangles for M1G module"); |
539 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(M1G.verLst,"verLst","","List of germ vertices for M1G module"); |
540 |
1/2✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
|
465 | gpc.get(M1G.outdir,"outdir",resultDir.data(),"Directory where to write data." "Accept envrionment variables: HOME, FELISCE_DATA_DIR, FELISCE_INRIA_DATA_DIR, FELISCE_RESULT_DIR"); |
541 | { | ||
542 |
2/6✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
465 | if ( M1G.outdir.at(M1G.outdir.length()-1) != '/') M1G.outdir += '/'; |
543 |
5/10✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 465 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 465 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 465 times.
✗ Branch 16 not taken.
|
465 | M1G.outdir = expandEnvironmentVariables(filename,"M1G","outdir",M1G.outdir); |
544 | } | ||
545 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(M1G.writeM1Gmeshes,"writeM1Gmeshes",false,""); |
546 |
1/6✗ Branch 1 not taken.
✓ Branch 2 taken 465 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
465 | FEL_CHECK(M1G.triLst.size() % 3 == 0, "M1G.triLst, size must be multiple of 3 (since every triangle has 3 vertices...)"); |
547 | |||
548 | // Solid | ||
549 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("solid"); |
550 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(densitySolid,"densitySolid",1.,"Solid density"); |
551 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(young,"young",-1.,"Young coefficient."); |
552 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(poisson,"poisson",-1.,"Poisson coefficient."); |
553 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(coeffReaction,"coeffReaction",-1.,"coeffReaction."); |
554 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lambda_lame,"lambda_lame",-1.,"Lame Lambda coefficient."); |
555 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(mu_lame,"mu_lame",-1.,"Lame mu coefficient."); |
556 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(thickness,"thickness",0.,"Thickness."); |
557 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(alpha_rayleigh,"alpha_rayleigh",0.,"Mass Rayleigh damping coefficient."); |
558 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(beta_rayleigh,"beta_rayleigh",0.,"Beta Rayleigh damping coefficient."); |
559 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasRayleighDamping,"hasRayleighDamping",false,"Rayleigh damping matrix."); |
560 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(planeStressStrain, "planeStressStrain", -1, "Kinematic parameter; 1 -> plane stress; 2 -> plane strain"); |
561 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(volumicOrSurfacicForce, "volumicOrSurfacicForce", -1, "1 for a volumic force is applied, 2 for a surfacic one"); |
562 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(CiarletGeymonat.kappa1, "kappa1", -1., "Ciarlet-Geymonat kappa1 parameter"); |
563 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(CiarletGeymonat.kappa2, "kappa2", -1., "Ciarlet-Geymonat kappa2 parameter"); |
564 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hyperelastic_bulk, "bulk", 1.0e24, "Ciarlet-Geymonat or St Venant Kirchhoff parameter"); |
565 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(Ogden.C1, "C1", -1., "Ogden C1 parameter"); |
566 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(Ogden.C2, "C2", -1., "Ogden C2 parameter"); |
567 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(Ogden.a, "a" , -1., "Ogden a parameter"); |
568 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(volumic_mass, "volumic_mass", -1., "Volumic mass"); |
569 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasSolidMidpoint, "hasSolidMidpoint", false, "Midpoint time integration in the structure solver"); |
570 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(solidRadius, "solidRadius", 0., "Radius of a cylinder."); |
571 | |||
572 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nbSubRegions, "nbSubRegions", -1., "number of terminal regions."); |
573 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(flagJacobi, "flagJacobi", -1., "flag 0 is system diagonal is computed at each time step for Jacobi peconditionning, else if only the first time step diagonal is used all over the simulation"); |
574 | |||
575 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(typeOfElasticityModel, "typeOfElasticityModel", "nonLinear", "type of elasticity used for the solid model"); |
576 | // for thin shell models | ||
577 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(typeOfShellModel, "typeOfShellModel", "Mitc3", "type of model used for the thin shell structure solver"); |
578 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(contactLabelPair,"contactLabelPair","","contact labels"); |
579 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(rayOrientation,"rayOrientation",""," 1 or -1 w.r.t to the element normal"); |
580 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(contactGap, "contactGap", 0., "minimal distance between 2 solids."); |
581 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(evalEnergy, "evalEnergy",false, "evaluate mechanical energy for contact problems"); |
582 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(velocityConstrained, "velocityConstrained",false, "add a velocity constraint for FSI with enclosed domains"); |
583 | |||
584 | // For linear elasticity | ||
585 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(timeScheme,"timeScheme",0,"0: standard finite difference, 1: newmark scheme"); |
586 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gammaNM,"gamma",0.5,"Gamma parameter in the newmark method method."); |
587 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(betaNM,"beta",0.25,"Beta parameter in the newmark method"); |
588 | |||
589 | // Beam | ||
590 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("beam"); |
591 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(beam.sub_integration,"sub_integration",1,"If we consider subintegrated formulation"); |
592 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(beam.timoshenko,"timoshenko",true,"If we consider Timoshenko formulation"); |
593 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(beam.diameter,"diameter",-1.0,"Diameter of the beam."); |
594 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(beam.inner_diameter,"inner_diameter",-1.0,"Inner diameter of the beam."); |
595 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(beam.depth,"depth",1.0,"Depth of the beam."); |
596 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(beam.cross_area,"cross_area",0.0,"The cross area of the beam. It's relative to the axial deformation"); |
597 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(beam.effective_area_y,"effective_area_y",0.0,"The effective cross area of the beam to the shear in the y direction"); |
598 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(beam.effective_area_z,"effective_area_z",0.0,"The efffective cross area of the beam to the shear in the z direction"); |
599 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(beam.moment_of_intertia_y,"moment_of_intertia_y",0.0,"This is the moment of inertia of the beam in the y axis"); |
600 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(beam.moment_of_intertia_z,"moment_of_intertia_z",0.0,"This is the moment of inertia of the beam in the z axis"); |
601 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(beam.torsional_inertia,"torsional_inertia",0.0,"This is the torsional inertia of the beam"); |
602 | |||
603 |
2/2✓ Branch 0 taken 16 times.
✓ Branch 1 taken 449 times.
|
465 | if (beam.diameter > 0.0) { // Considering circular section |
604 | 16 | beam.cross_area = M_PI/4.0 * std::pow(beam.diameter, 2); | |
605 | 16 | beam.effective_area_y = 0.9 * M_PI/4.0 * std::pow(beam.diameter, 2); | |
606 | 16 | beam.effective_area_z = beam.effective_area_y; | |
607 | 16 | beam.moment_of_intertia_y = M_PI/64.0 * std::pow(beam.diameter, 4); | |
608 | 16 | beam.moment_of_intertia_z = beam.moment_of_intertia_y; | |
609 | 16 | beam.torsional_inertia = 2.0 * beam.moment_of_intertia_y; | |
610 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 16 times.
|
16 | if (beam.inner_diameter > 0.0) { // Considering hole in the circular section |
611 | ✗ | beam.cross_area -= M_PI/4.0 * std::pow(beam.inner_diameter, 2); | |
612 | ✗ | beam.effective_area_y -= 0.9 * M_PI/4.0 * std::pow(beam.inner_diameter, 2); | |
613 | ✗ | beam.effective_area_z = beam.effective_area_y; | |
614 | ✗ | beam.moment_of_intertia_y -= M_PI/64.0 * std::pow(beam.inner_diameter, 4); | |
615 | ✗ | beam.moment_of_intertia_z = beam.moment_of_intertia_y; | |
616 | ✗ | beam.torsional_inertia = 2.0 * beam.moment_of_intertia_y; | |
617 | } | ||
618 |
3/4✓ Branch 0 taken 449 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 217 times.
✓ Branch 3 taken 232 times.
|
449 | } else if (beam.depth > 0.0 && thickness > 0.0) { // Considering rectangular section |
619 | 217 | beam.cross_area = beam.depth * thickness; | |
620 | 217 | beam.effective_area_y = 5.0/6.0 * beam.depth * thickness; | |
621 | 217 | beam.effective_area_z = beam.effective_area_y; | |
622 | 217 | beam.moment_of_intertia_y = 1.0/12.0 * std::pow(beam.depth, 3) * thickness; | |
623 | 217 | beam.moment_of_intertia_z = 1.0/12.0 * beam.depth * std::pow(thickness, 3); | |
624 | //beam.torsional_inertia = (thickness * beam.depth * (std::pow(thickness, 2) + std::pow(beam.depth, 2)))/12.0; | ||
625 |
2/2✓ Branch 0 taken 88 times.
✓ Branch 1 taken 129 times.
|
217 | const double h = thickness > beam.depth ? thickness : beam.depth; |
626 |
2/2✓ Branch 0 taken 96 times.
✓ Branch 1 taken 121 times.
|
217 | const double w = thickness < beam.depth ? thickness : beam.depth; |
627 | 217 | beam.torsional_inertia = 1.0/16.0 * h * std::pow(w, 3) * (16.0/3.0 - 3.36 * w/h * (1.0 - std::pow(w, 4)/(12.0 * std::pow(h, 4)))); | |
628 | } | ||
629 | |||
630 | // Poroelasticity | ||
631 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("poroElasticity"); |
632 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(biotCoefficient,"biotCoefficient",1.,"Coefficient b in the linear poroelastic formulation"); |
633 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(biotModulus,"biotModulus",1.,"Modulus M in the linear poroelastic formulation, in Pascal"); |
634 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(isoPermeab,"isoPermeab",1.,"k0 in the poroelastic model"); |
635 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(anisoPermeab,"anisoPermeab",1.,"k1 in the poroelastic model"); |
636 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(validationTest,"validationTest",0,"id of the validation test to run"); |
637 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(scalePressureEq,"scalePressureEq",false,"to scale (or not) the pressure equations"); |
638 | |||
639 | // fkpp | ||
640 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("fkpp"); |
641 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(sourcePos, "sourcePos", "", "position of the source"); |
642 | |||
643 | // Nitsche-XFEM formulation | ||
644 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("nitscheXFEM"); |
645 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useDynamicStructure, "useDynamicStructure", true, "Dynamic structure or not"); |
646 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useGhostPenalty, "useGhostPenalty", true, "Use the ghost penalty stabilization"); |
647 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(coefGhostPenalty, "coefGhostPenalty", 1., "Set the coefficient for the ghost penalty stabilization"); |
648 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useProjectionForNitscheXFEM, "useProjectionForNitscheXFEM", true, "use a projection of the solution from one supportDofMesh to another between time step"); |
649 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useInterfaceFlowStab, "useInterfaceFlowStab", false, "stabilized the convection at the interface"); |
650 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(couplingSchemeStoppingCriteria, "couplingSchemeStoppingCriteria", 0, "0 = fix number of iteration, 1= relative error of velocity of structure"); |
651 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useODESolve, "useODESolve", false, "true = different solve function for contact problems, false = classic solve function"); |
652 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(usePenaltyFreeNitscheMethod, "usePenaltyFreeNitscheMethod", false, "false = classic Nitsche's formulation, true = penalty free Nitsche's formulation"); |
653 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(contactDarcy, "contactDarcy", 0, "0 = porous media non considered, 1 = porous media with zero tangential traction, 2 = BJS condition for tangential traction"); |
654 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(epsDarcy, "epsDarcy", 0. , "Set the coefficient for the darcy problem"); |
655 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(kDarcy, "kDarcy", 0. , "Set the coefficient for the darcy problem"); |
656 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(writeXFEMmeshes, "writeXFEMmeshes", false, "Print intersected meshes or not"); |
657 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(confIntersection,"confIntersection",false,"Conformal intersection algorithm"); |
658 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(structures,"structures","","Structure label (mesh file)."); |
659 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(numficxstr,"numficxstr","","Number of fictitious structure per structure"); |
660 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(fictitious,"fictitious","","Fictitious structure label (mesh file)(one or more for evry structure)"); |
661 |
1/6✗ Branch 2 not taken.
✓ Branch 3 taken 465 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
|
465 | FEL_CHECK(structures.size() == numficxstr.size(), "Error in input file: the dimensions of 'structures' and 'numficxstr' differ"); |
662 |
1/6✗ Branch 4 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
465 | FEL_CHECK(std::accumulate(numficxstr.begin(), numficxstr.end(), 0u) == fictitious.size(), "Error in input file: 'fictitious' size does not match the size indicated in numficxstr"); |
663 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(meanLabel,"meanLabel","",""); |
664 | |||
665 | |||
666 | |||
667 | |||
668 | //elec | ||
669 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("elec"); |
670 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasCoupledAtriaVent,"hasCoupledAtriaVent",false,"Bool variable to couple atria and ventricles."); |
671 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(orderBdfEdp, "orderBdfEdp",1,"Bdf order for system solver."); |
672 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(orderBdfIonic, "orderBdfIonic",1,"Bdf order for ionic solver."); |
673 | //elec - parameters | ||
674 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(typeOfIonicModel,"typeOfIonicModel","schaf","Type of ionic model : 'schaf'=Mitchell-Schaeffer, 'fhn'=Fitzhugh-Nagumo, 'court'=Courtemanche-Ramirez-Nattel, 'courtAtriaSchafVent'=Courtemanche-Ramirez-Nattel for Atria and Mitchell-Schaeffer for ventricles, 'MV'=minimal ventricular, 'Paci'=Paci."); |
675 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(spontaneous,"spontaneous",true); |
676 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(printIonicVar,"printIonicVar",false,"Bool variable to print the ionic variable in an ensight file with its own case file."); |
677 | //elec - Schaf solver | ||
678 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tauOpen,"tauOpen",300.,"tau_open parameter for second Mitchell and Schaeffer equation."); |
679 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasHeteroTauClose,"hasHeteroTauClose",false,"Bool variable to std::set heterogeneous tau_close."); |
680 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasHeteroCourtPar,"hasHeteroCourtPar",false,"Bool variable to std::set heterogeneous parameters in Courtemanche model."); |
681 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasHeteroCondAtria,"hasHeteroCondAtria",false,"Bool variable to std::set heterogeneous conductivities in Atria (BB, CT, F0 ...)."); |
682 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tauClose,"tauClose",100.,"Homogeneous tau_close parameter for second Mitchell and Schaeffer equation."); |
683 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tauCloseEndo,"tauCloseEndo",130.,"In case of hasHeteroTauClose=true, left ventricle endocardial value."); |
684 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tauCloseCell,"tauCloseCell",140.,"In case of hasHeteroTauClose=true, left ventricle median cells value."); |
685 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tauCloseEpi,"tauCloseEpi",90.,"In case of hasHeteroTauClose=true, left ventricle epicardial value."); |
686 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tauCloseRV,"tauCloseRV",120.,"In case of hasHeteroTauClose=true, right ventricle value."); |
687 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tauIn,"tauIn",8.,"tau_in parameter for first Mitchell and Schaeffer equation."); |
688 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tauOut,"tauOut",180.,"tau_out parameter for first Mitchell and Schaeffer equation."); |
689 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(kTanhMSR,"kTanhMSR",1.,"k parameter for tanh of the second Mitchell and Schaeffer Revised equation."); |
690 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(vMin,"vMin",-80.,"Minimal value of transmembrane potential."); |
691 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(vMax,"vMax",20.,"Minimal value of transmembrane potential."); |
692 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(vGate, "vGate",-67.,"Gate value of transmembrane potential for Mitchell and Schaeffer model."); |
693 | //elec - FhN solver | ||
694 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(epsilon, "epsilon",0.0032,"epsilon parameter for fHn Model (warning: usually epsilon<<1)."); |
695 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(beta, "beta",1.0,"beta parameter for fHn Model, multipliyng w in ionic eq. (if different to 1: Aliev-Panfilov model)."); |
696 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gammaEl, "gammaEl",0.32,"gamma parameter for fHn Model (multipliyng Vm)."); |
697 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(f0, "f0",1.0,"Amplification factor of ionic current "); |
698 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(alpha, "alpha",0.25,"alpha parameter of ion current (f0*v(v-a)(1-v)) "); |
699 | //elec - MV solver parameters for inverse problem | ||
700 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tau_so_1_epi, "tau_so_1_epi",-1.,"tau_so_1 parameter for MV model in epicardium. "); |
701 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tau_so_1_endo, "tau_so_1_endo",-1.,"tau_so_1 parameter for MV model in endocardium. "); |
702 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tau_so_1_mcel, "tau_so_1_mcel",-1.,"tau_so_1 parameter for MV model in midmiocardium. "); |
703 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tau_so_1_rv, "tau_so_1_rv",-1.,"tau_so_1 parameter for MV model in right ventricle. "); |
704 | //elec - MV conductance parameters | ||
705 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gfi_rv,"gfi_rv",1.,"Jfi multiplication factor for MV model in right ventricle. "); |
706 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gso_rv,"gso_rv",1.,"Jso multiplication factor for MV model in right ventricle. "); |
707 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gsi_rv,"gsi_rv",1.,"Jsi multiplication factor for MV model in right ventricle. "); |
708 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gfi_endo,"gfi_endo",1.,"Jfi multiplication factor for MV model in LV endocardium. "); |
709 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gso_endo,"gso_endo",1.,"Jso multiplication factor for MV model in LV endocardium. "); |
710 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gsi_endo,"gsi_endo",1.,"Jsi multiplication factor for MV model in LV endocardium. "); |
711 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gfi_mid,"gfi_mid",1.,"Jfi multiplication factor for MV model in LV mid-myocardium. "); |
712 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gso_mid,"gso_mid",1.,"Jso multiplication factor for MV model in LV mid-myocardium. "); |
713 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gsi_mid,"gsi_mid",1.,"Jsi multiplication factor for MV model in LV mid-myocardium. "); |
714 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gfi_epi,"gfi_epi",1.,"Jfi multiplication factor for MV model in LV epicardium. "); |
715 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gso_epi,"gso_epi",1.,"Jso multiplication factor for MV model in LV epicardium. "); |
716 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gsi_epi,"gsi_epi",1.,"Jsi multiplication factor for MV model in LV epicardium. "); |
717 | //elec - Courtemanche solver parameters for inverse problem (see HeteroCourtModelMultCoeff::CourtCondMultCoeff in cardiacFunction.cpp for default values) | ||
718 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(g_Na_PM, "g_Na_PM",-1.,"g_Na parameter in Courtemanche ionic model, multiplicative factor in Pectinate Muscles : g_Na_RegTissue*g_Na_PM."); |
719 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(g_Na_CT, "g_Na_CT",-1.,"g_Na parameter in Courtemanche ionic model, multiplicative factor in Crista Terminalis : g_Na_RegTissue*g_Na_CT."); |
720 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(g_Na_BB, "g_Na_BB",-1.,"g_Na parameter in Courtemanche ionic model, multiplicative factor in Bachmann Bundle : g_Na_RegTissue*g_Na_BB."); |
721 | // elec-params | ||
722 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(Am, "Am",200.,"Rate of membrane area per volume unit."); |
723 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(Cm, "Cm",0.001,"Membrane capacitance."); |
724 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(extraTransvTensor, "extraTransvTensor",0.0012,"Extracellular conductivity in the transverse direction of fibers."); |
725 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(intraTransvTensor, "intraTransvTensor",0.0003,"Intracellular conductivity in the transverse direction of fibers."); |
726 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(extraFiberTensor, "extraFiberTensor",0.003,"Extracellular conductivity along fibers direction."); |
727 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(intraFiberTensor, "intraFiberTensor",0.003,"Intracellular conductivity along fibers direction."); |
728 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(extraTransvTensorAtria, "extraTransvTensorAtria",0.0012,"Extracellular conductivity in the transverse direction of fibers for the atria."); |
729 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(intraTransvTensorAtria, "intraTransvTensorAtria",0.0003,"Intracellular conductivity in the transverse direction of fibers for the atria."); |
730 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(extraFiberTensorAtria, "extraFiberTensorAtria",0.003,"Extracellular conductivity along fibers direction for the atria."); |
731 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(intraFiberTensorAtria, "intraFiberTensorAtria",0.003,"Intracellular conductivity along fibers direction for the atria."); |
732 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(extraTransvTensorVent, "extraTransvTensorVent",0.0012,"Extracellular conductivity in the transverse direction of fibers for the ventricles."); |
733 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(intraTransvTensorVent, "intraTransvTensorVent",0.0003,"Intracellular conductivity in the transverse direction of fibers for the ventricles."); |
734 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(extraFiberTensorVent, "extraFiberTensorVent",0.003,"Extracellular conductivity along fibers direction for the ventricles."); |
735 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(intraFiberTensorVent, "intraFiberTensorVent",0.003,"Intracellular conductivity along fibers direction for the ventricles."); |
736 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(monodomain, "monodomain",false,"Tells if monodomain or bidomain will be solved (default: bidomain)."); |
737 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(sigmaThorax,"sigmaThorax",0.0006,"Thorax tissue conductivity."); |
738 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(sigmaLung,"sigmaLung",0.00024,"Lungs tissue conductivity."); |
739 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(sigmaBone,"sigmaBone",0.00004,"Bones conductivity."); |
740 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(CellsType,"CellsType","epi","Type of cell"); |
741 | //elec - applied current | ||
742 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(typeOfAppliedCurrent,"typeOfAppliedCurrent","","Type of applied current: 'ellibi'=normal, 'Qwave'=can simulate Q-wave - need delay, 'constant'=homogeneous on the domain, 'multiple'=for accelerated beats, 'BBB'=boundle brunch block, 'sphere'=a sphere centered in x0,y0,z0, 'zygote'=non-pathological case for zygote geometry..."); |
743 | |||
744 | //For MEA | ||
745 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(NbElectrodes,"NbElectrodes",1,"Number of electrodes"); |
746 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(ElecStim,"ElecStim","1","Number of electrode stimulation"); |
747 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(pulseValues,"pulseValues","10.","Values of pulses"); |
748 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(pulseValuesDuration,"pulseValuesDuration","1.","Duration of pulse"); |
749 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(pulseType,"pulseType","monophasic","Type of pulse"); |
750 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(timePeriodMEA,"timePeriodMEA","500.","Time period for a new pulse"); |
751 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(timePeriodMEAtrain,"timePeriodMEAtrain","0.","Time period for a new train"); |
752 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(trainDuration,"trainDuration","0.","Duration of one train"); |
753 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tMaxStim,"tMaxStim","0.","time max for stimulations"); |
754 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(Ri,"Ri","0.","Internal Resistances"); |
755 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(Rel,"Rel","0.","Electrodes Resistances"); |
756 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(Cel,"Cel","0.","Electrodes Capacitances"); |
757 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(Diam,"Diam","0.","Electrodes diameters"); |
758 | |||
759 | |||
760 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasAppliedExteriorCurrent,"hasAppliedExteriorCurrent",false,"Bool variable to have an exterior applied current."); |
761 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(typeOfAppliedCurrentExt,"typeOfAppliedCurrentExt","","Type of applied current."); |
762 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(timePeriod, "timePeriod",700.,"Stimulation frequency."); |
763 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(timePeriodVentricle, "timePeriodVentricle",700.,"Ventricles stimulation frequency."); |
764 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(timePeriodAtria, "timePeriodAtria",700.,"Atria stimulation frequency."); |
765 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(beatNumber, "beatNumber", 1,"In case of typeOfAppliedCurrent=true, number of beats."); |
766 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(beatDecreasing, "beatDecreasing", 0.,"In case of acceleratedBeat=true, time decrease between beats."); |
767 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(delayStim, "delayStim","0.","Stimulation delay."); |
768 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(delayStimVentricles, "delayStimVentricles","0.","Ventricles stimulation delay, useful for ventricles-atria coupled heart."); |
769 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(stimTime, "stimTime",10.,"Time of stimulation."); |
770 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(stimTimeLV, "stimTimeLV",10.,"Time of stimulation in left ventricle."); |
771 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(stimTimeRV, "stimTimeRV",6.,"Time of stimulation in right ventricle."); |
772 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(Iapp_x_coord, "Iapp_x_coord",0.,"x coordinate center of applied current."); |
773 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(Iapp_y_coord, "Iapp_y_coord",0.,"y coordinate center of applied current."); |
774 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(Iapp_z_coord, "Iapp_z_coord",0.,"z coordinate center of applied current."); |
775 | //elec - infarct | ||
776 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasInfarct,"hasInfarct",false,"Bool variable to std::set infarction simulation."); |
777 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(x_infarct,"x_infarct",0.,"In case of hasInfarct=true, x variable value of infarct center."); |
778 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(y_infarct,"y_infarct",0.,"In case of hasInfarct=true, y variable value of infarct center."); |
779 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(z_infarct,"z_infarct",0.,"In case of hasInfarct=true, z variable value of infarct center."); |
780 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(radius_infarct,"radius_infarct",0.,"In case of hasInfarct=true, infarct radius."); |
781 | //elec - BBB | ||
782 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasVentriclesBundleBrunchBlock,"hasVentriclesBundleBrunchBlock",false,"Ventricles Bundle Brunch Block Left or Right."); |
783 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(sideOfBBB,"sideOfBBB","left","In case of typeOfAppliedCurrent=BBB, side of BBB : 'left' or 'right'"); |
784 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(BBBwithDelay,"BBBwithDelay",false,"In case of typeOfAppliedCurrent=BBB, bool variable to simulate BB with a time delay in stimulation."); |
785 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(BBBwithAngleBlock,"BBBwithAngleBlock",false,"In case of typeOfAppliedCurrent=BBB, bool variable to simulate BB with a block of the angle of stimulation."); |
786 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(BBBDelayStim,"BBBDelayStim",0.,"In case of typeOfAppliedCurrent=BBB and BBwithDelay=true, time delay in applied current for left or right BBB"); |
787 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(angleIappBBB, "angleIappBBB",360.,"In case of typeOfAppliedCurrent=BBB and BBwithAngleBlock=true, maximum angle of applied stimulus in left or right ventricle."); |
788 | //elec - Bachmann Bundle Block | ||
789 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasPartialBachmannBundleBlock,"hasPartialBachmannBundleBlock",false,"Bool variable to have a bachmann bundle block."); |
790 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(valueBBBlock, "valueBBBlock",1.0,"The value of Bachmann Bundle Block (without BBBlock the value equals to 6.0)."); |
791 | //elec - Wenckebach Atrioventricular Block | ||
792 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasWenckebachBlock,"hasWenckebachBlock",false,"Bool variable to have a Wenckebach Atrioventricular Block."); |
793 | //elec - Kent Bundle | ||
794 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasKentBundle,"hasKentBundle",false,"Bool variable to have a Kent bundle."); |
795 | //elec - Torsades de pointe | ||
796 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(torsade,"torsade",false,"Bool variable to simulate a Torades de pointe."); |
797 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(torsadeTimeBegin,"torsadeTimeBegin",0.,"Initial time of long-QT segment phase - due for instance to some medicine."); |
798 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(torsadeTimeEnd,"torsadeTimeEnd",0.,"End time of long-QT segment phase - due for instance to some medicine."); |
799 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tauCloseTorsade,"tauCloseTorsade",100.,"Tau_close during long-QT segment phase - due for instance to some medicine."); |
800 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tauCloseEndoTorsade,"tauCloseEndoTorsade",130.,"Tau_close endocardium during long-QT segment phase - due for instance to some medicine."); |
801 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tauCloseCellTorsade,"tauCloseCellTorsade",140.,"Tau_close m-cells during long-QT segment phase - due for instance to some medicine."); |
802 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tauCloseEpiTorsade,"tauCloseEpiTorsade",90.,"Tau_close epicardium during long-QT segment phase - due for instance to some medicine."); |
803 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tauCloseRVTorsade,"tauCloseRVTorsade",120.,"Tau_close right venticle during long-QT segment phase - due for instance to some medicine."); |
804 | //elec - ECG | ||
805 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(writeECG,"writeECG",false,"Bool variable to call createECG function for Bidomain problem (heart)."); |
806 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(writeElectrodesMeas,"writeElectrodesMeas",false,"Bool variable to evaluate electrodes meausures using a heart-torso transfer matrix (bidomain-heart problem)."); |
807 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(writeElectrodesMean,"writeElectrodesMean",false,"Bool variable to evaluate electrodes mean meausures."); |
808 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(writeMatrixECG,"writeMatrixECG",false,"Bool variable to create heart-torso tranfer matrix (bifomain-thorax problem)."); |
809 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(ECGmatchFile,"ECGmatchFile","heart.match","Match file name for ECG writer."); |
810 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(ECGThoraxmatchFile,"ECGThoraxmatchFile","thorax.match","Match file name for ECG transfer matrix."); |
811 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(ECGmatrixFile,"ECGmatrixFile","matrix_transpose","Transfer matrix file name for ECG writer."); |
812 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(ECGelectrodeFile,"ECGelectrodeFile","electrode","Electrodes id file name."); |
813 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(ECGfileName,"ECGfileName","ecg","Output ECG writer file name."); |
814 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(ECGtabHeader,"ECGtabHeader",true,"Bool variable to std::set or not ecg.tab file header."); |
815 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(ECGcreateFigure,"ECGcreateFigure",false,"Bool variable to std::set default creation of .eps file."); |
816 | |||
817 | //elec - dataAssimilation | ||
818 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(dataAssimilation,"dataAssimilation",false,"Bool variable to have the data assimilation."); |
819 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(minLSPotTM,"minLSPotTM",-1.0,"The minimal value of the level std::set of the transmembrane potential."); |
820 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(maxLSPotTM,"maxLSPotTM",1.0,"The maximal value of the level std::set of the transmembrane potential."); |
821 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(insidePar,"insidePar",100.0,"The data parameter before the inside data."); |
822 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(outsidePar,"outsidePar",100.0,"The data parameter before the outside data."); |
823 | |||
824 | //elec - state filter | ||
825 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("elecEstim"); |
826 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(stateFilter,"stateFilter",false,"Bool variable to std::set or Luenberger state filter"); |
827 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(schroFilter,"schroFilter",false,"Bool variable to std::set or Luenberger state filter based on Schrodinger modes"); |
828 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(electrodeControl,"electrodeControl",false,"Bool variable to std::set or Luenberger state filter -- control with electrodes measures."); |
829 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(aFilter,"aFilter",0.0,"Coeff a of -aX^t for ALP stabilization."); |
830 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gain,"gain",0.0,"Add a diagonal matrix of value gain to the stabilization term"); |
831 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(observDir,"observDir","./SolutionDir","Tell where observations reside"); |
832 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(observFileName,"observFile","bidomain","Prefix of the observation file. Warning: up to now only ensight files"); |
833 | |||
834 | |||
835 | // Initial condition | ||
836 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("initialCondition"); |
837 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasInitialCondition,"hasInitialCondition",false,"Bool variable to std::set or not initial conditions."); |
838 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(restartSolution,"restartSolution",false,"Bool variable to std::set or not restart solution."); |
839 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(restartSolutionDirRaw,"restartSolutionDir","./","Directory of initial conditions." |
840 | "Accept envrionment variables: HOME, FELISCE_DATA_DIR, FELISCE_INRIA_DATA_DIR, FELISCE_RESULT_DIR"); | ||
841 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | restartSolutionDir = restartSolutionDirRaw; |
842 |
2/6✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
465 | if (restartSolutionDir.at(restartSolutionDir.length()-1) != '/') restartSolutionDir += '/'; |
843 |
5/10✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 465 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 465 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 465 times.
✗ Branch 16 not taken.
|
465 | restartSolutionDir = expandEnvironmentVariables(filename,"data","restartSolutionDir",restartSolutionDir); |
844 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 465 times.
|
465 | if (restartSolution) { |
845 | ✗ | FEL_WARNING_IF_NO_DIRECTORY(restartSolutionDir); | |
846 | } | ||
847 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(restartSolutionIter,"restartSolutionIter",0,"Iteration of backup solution used by the restart."); |
848 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nameVariableInitCond,"nameVariableInitCond","default","Variable name the initial condition apply to"); |
849 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(componentInitCond,"componentInitCond","default","Comp1, Comp2 or Comp3"); |
850 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(valueInitCond,"valueInitCond","0.","Initial value for this variable."); |
851 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(frequencyBackup, "frequencyBackup", 0,"Frequency of backup copies, if == 0 not doing the backup."); |
852 | |||
853 | // Move mesh | ||
854 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("moveMesh"); |
855 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasMoveMesh,"hasMoveMesh",false,"Bool variable to have a dynamic mesh."); |
856 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasMoveFibers,"hasMoveFibers",false,"Bool variable to have a dynamic fibers in eletrophysiology."); |
857 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(MoveMeshMatchFile,"MoveMeshMatchFile","displacement.match","Match file name for move mesh."); |
858 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(scaleCoeff,"scaleCoeff",1.,"scaling coefficient"); |
859 | |||
860 | // Boundary condition | ||
861 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("boundaryCondition"); |
862 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(essentialBoundaryConditionsMethod,"essentialBoundaryConditionsMethod", 0, "0: non-symmetric pseudo-elimination, 1: symmetric pseudo-elimination, 2:penalization"); |
863 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(type,"type","","Dirichlet or Neumann"); |
864 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(typeValue,"typeValue","","Constant, Vector, FunctionT (depend on time), FunctionS (depend on space), FunctionTS (depend on time and space) or EnsightFile (read Dof values from an Ensight file)."); |
865 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(numLabel,"numLabel","","Removed in new version?"); |
866 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(label,"label","","Apply boundary condition on elements with this label"); |
867 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(labelName,"labelName","","used only in the std::cout of this file, could improve readability."); |
868 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(variable,"variable","","Variable name the boundary condition apply to"); |
869 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(component,"component","","Comp1, Comp2 or Comp3"); |
870 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(value,"value","","Variable value at this boundary."); |
871 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(userParameter, "userParameter", "-1.","?"); |
872 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(alphaRobin,"alphaRobin","","Coeff before variable of Robin BC: betaRobin * grad u dot n + alphaRobin * u = g"); |
873 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(betaRobin,"betaRobin","","Coeff before normal derivative of the variable of Robin BC: betaRobin * grad u dot n + alphaRobin * u = g"); |
874 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(alphaRobinNormal,"alphaRobinNormal","0.","Coeff before variable of Robin Normal BC"); |
875 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(penValueForEmbedFSI,"penValueForEmbedFSI",1e20,"Penalization coefficient in EmbedFSI boundary condition."); |
876 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useEssDerivedBoundaryCondition,"useEssDerivedBoundaryCondition",false,"true if you want to use essential BC DERIVED, even without having any dirichlet BC"); // added for embedFSI, to impose 0 displacement at the surface boundaries |
877 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(modeLung,"modeLung","","type of BC"); |
878 | 465 | unsigned int countRobinBC(0); | |
879 |
2/2✓ Branch 1 taken 1150 times.
✓ Branch 2 taken 465 times.
|
1615 | for ( std::size_t itBC(0); itBC<type.size(); ++itBC) { |
880 |
2/2✓ Branch 2 taken 4 times.
✓ Branch 3 taken 1146 times.
|
1150 | if ( type[itBC] == "Robin" ) |
881 | 4 | ++countRobinBC; | |
882 | } | ||
883 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 465 times.
|
465 | FEL_ASSERT ( countRobinBC == alphaRobin.size() ); |
884 |
2/6✗ Branch 2 not taken.
✓ Branch 3 taken 465 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 465 times.
|
465 | if ( betaRobin.size() != alphaRobin.size() && ( betaRobin.size() >1 ) ) { |
885 | ✗ | FEL_ERROR("Something wrong with BC"); | |
886 |
2/2✓ Branch 1 taken 461 times.
✓ Branch 2 taken 4 times.
|
465 | } else if ( betaRobin.size() == 0 ) { |
887 |
1/2✓ Branch 2 taken 461 times.
✗ Branch 3 not taken.
|
461 | betaRobin.resize(alphaRobin.size(),1.); |
888 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | } else if (betaRobin.size() == 1){ |
889 | 4 | double aus(betaRobin[0]); | |
890 |
1/2✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
|
4 | betaRobin.resize(alphaRobin.size(),aus); |
891 | } | ||
892 | |||
893 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(bc_potExtraCell,"bc_potExtraCell","Rien","Boundary Condition for the Extracellular Potential"); |
894 | |||
895 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(bcCondDirRaw,"bcCondDir","./","directory of input boundary values files (ensight files)." |
896 | "Accept envrionment variables: HOME, FELISCE_DATA_DIR, FELISCE_INRIA_DATA_DIR, FELISCE_RESULT_DIR"); | ||
897 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | bcCondDir = bcCondDirRaw; |
898 |
2/6✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
465 | if (bcCondDir.at(bcCondDir.length()-1) != '/') bcCondDir += '/'; |
899 |
5/10✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 465 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 465 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 465 times.
✗ Branch 16 not taken.
|
465 | bcCondDir = expandEnvironmentVariables(filename,"boundaryCondition","bcCondDir",bcCondDir); |
900 |
2/4✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 465 times.
✗ Branch 5 not taken.
|
465 | FEL_WARNING_IF_NO_DIRECTORY(bcCondDir); |
901 | |||
902 | //bc - check size | ||
903 |
1/2✓ Branch 3 taken 465 times.
✗ Branch 4 not taken.
|
465 | FEL_ASSERT_EQUAL(numLabel.size(),type.size()); |
904 |
1/2✓ Branch 3 taken 465 times.
✗ Branch 4 not taken.
|
465 | FEL_ASSERT_EQUAL(numLabel.size(),typeValue.size()); |
905 |
1/2✓ Branch 3 taken 465 times.
✗ Branch 4 not taken.
|
465 | FEL_ASSERT_EQUAL(numLabel.size(),variable.size()); |
906 |
1/2✓ Branch 3 taken 465 times.
✗ Branch 4 not taken.
|
465 | FEL_ASSERT_EQUAL(numLabel.size(),component.size()); |
907 | |||
908 | //bc - lumpedModel | ||
909 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedModelBCType,"lumpedModelBCType","","1: RCR,R ; 2: RC."); |
910 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedModelBCAlgo,"lumpedModelBCAlgo","","1: explicit, 2: implicit"); |
911 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedModelBCLabel,"lumpedModelBCLabel","","?"); |
912 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedModelBCName,"lumpedModelBCName","","name of the region where the lumped model applies"); |
913 | |||
914 |
2/2✓ Branch 2 taken 8 times.
✓ Branch 3 taken 465 times.
|
473 | while( lumpedModelBCAlgo.size() < lumpedModelBCLabel.size() ) |
915 |
1/2✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
|
8 | lumpedModelBCAlgo.push_back( lumpedModelBCAlgo[0] ); |
916 |
2/2✓ Branch 2 taken 8 times.
✓ Branch 3 taken 465 times.
|
473 | while( lumpedModelBCType.size() < lumpedModelBCLabel.size() ) |
917 |
1/2✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
|
8 | lumpedModelBCType.push_back( lumpedModelBCType[0] ); |
918 |
2/2✓ Branch 2 taken 40 times.
✓ Branch 3 taken 465 times.
|
505 | while( lumpedModelBCName.size() < lumpedModelBCLabel.size() ) |
919 |
3/6✓ Branch 2 taken 40 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 40 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 40 times.
✗ Branch 9 not taken.
|
40 | lumpedModelBCName.push_back( "Lumped" + std::to_string(lumpedModelBCName.size()) ); |
920 | |||
921 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedModelBC_Rprox,"lumpedModelBC_Rprox","","?"); |
922 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedModelBC_Rdist,"lumpedModelBC_Rdist","","?"); |
923 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedModelBC_C,"lumpedModelBC_C","","?"); |
924 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedModelBC_Pvenous,"lumpedModelBC_Pvenous","","?"); |
925 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedModelBC_Pdist_init,"lumpedModelBC_Pdist_init","","?"); |
926 | |||
927 | // bc - linear/non linear compliance (C=C(V)) | ||
928 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedModelBC_C_type,"lumpedModelBC_C_type",1,"1: linear, 2: non-linear C=C(V)"); |
929 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(powerNonLinearCompliance,"powerNonLinearCompliance",1,"powerNonLinearCompliance"); |
930 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedModelBC_volumeMax,"lumpedModelBC_volumeMax",0.,"Vmax"); |
931 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedModelBC_volumeMin,"lumpedModelBC_volumeMin",0.,"Vmin"); |
932 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedModelBC_volume0,"lumpedModelBC_volume0",0.,"V0"); |
933 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedModelBC_referenceVolume0,"lumpedModelBC_referenceVolume0",2500.,"V0ref"); |
934 | |||
935 | //bc - fluid bc (user parameters) | ||
936 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(inflowPressureMaxQuiteInspi,"inflowPressureMaxQuiteInspi",-100.,"inflowPressureMaxQuiteInspi"); |
937 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(inflowPressureMaxSpiroInspi,"inflowPressureMaxSpiroInspi",-20.,"inflowPressureMaxSpiroInspi"); |
938 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(inflowPressureMaxSpiroExpi,"inflowPressureMaxSpiroExpi",30.,"inflowPressureMaxSpiroExpi"); |
939 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(inflowLabel,"inflowLabel",-1,"Label of the inflow"); |
940 | |||
941 | // bc - to impose the tangential component of the velocity std::vector equal to 0 | ||
942 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(compTangBClabel,"compTangBClabel","","?"); |
943 | |||
944 | //bc - label for cardiac cycle | ||
945 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(CardiacCycleLabel,"CardiacCycleLabel",-1,"label in wich impose the cardiac cycle input function"); |
946 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 465 times.
|
465 | if(CardiacCycleLabel !=- 1) { |
947 | ✗ | addedBoundaryFlag = 3; | |
948 | ✗ | CardiacCycle = true; | |
949 | } else { | ||
950 | 465 | CardiacCycle = false; | |
951 | } | ||
952 | |||
953 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(duration_ejection,"duration_ejection",0.,"duration of the ejection phase"); |
954 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(duration_isovol_relax,"duration_isovol_relax",0.,"duration of the isovolumetric relaxation phase"); |
955 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(duration_filling,"duration_filling",0.,"duration of the filling phase"); |
956 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(duration_isovol_contract,"duration_isovol_contract",0.,"duration of the isovolumetric contraction phase"); |
957 | |||
958 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(cardiacOutput,"cardiacOutput",5.,"in liter per minute"); |
959 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(heartRate,"heartRate",60,"number of heart beats per minute"); |
960 | |||
961 | //BCdata x SimplifiedFSI model and boundary condition. | ||
962 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("SimplifiedFSI"); |
963 | |||
964 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(switchSimplFSIOff,"switchSimplFSIOff",false,"switch everything off"); |
965 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tssParam,"tssParam",0.,"stabilization parameter for tss (transpiration surface stabilization"); |
966 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tssConsistent,"tssConsistent",true, "wether to use or not the consistent version of the tss"); |
967 | |||
968 | //common properties | ||
969 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nonLinearKoiterModel,"nonLinearKoiterModel",false,"false: linear Koiter model, true: non linear Koiter model"); |
970 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(zeroDisplacementAtBoarders, "zeroDisplacementAtBoarders",false,"true if you want to impose zero dirichlet on the displacement"); //TODO boarder -> boundary. |
971 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(densityStructure,"densityStructure",1.,"density of the whole structure, both shell and fibers"); |
972 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(viscosityStructure,"viscosityStructure",0.,"viscosity parameter for the structure in front of the term dot eta"); |
973 | |||
974 | //properties of the shell | ||
975 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(youngShell,"youngShell",0.0,"Young modulus of the shell layer"); |
976 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(poissonShell,"poissonShell",0.5,"Poisson coefficient of the shell layer"); |
977 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(widthShell,"widthShell",0.0,"Width of the shell layer"); |
978 | |||
979 | //property of the fiber layer | ||
980 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(widthFiber,"widthFiber",0.0,"Width of the fiber layer"); |
981 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(preStressFibers,"preStressFibers",0.0,"Pre-stress the fibers"); |
982 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(youngFibers,"youngFibers",0.,"Young modulus of the fibers"); |
983 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(fiberDensity,"fiberDensity","","Density of fibers by label (coefficient multiplying (preStressFibers+extraTension) and youngFibers)"); |
984 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(fiberDispersionParameter,"fiberDispersionParameter",0.2,"double: 0-> fibers all in the principal direction of curvature, 1-> fibers equally distributed over all the directions"); |
985 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(outsidePressure,"outsidePressure",0.,"pressure outside the vessel wall, it is associated with no displacement"); |
986 | |||
987 | //property in case of a 2D domain | ||
988 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(radius,"radius",0.0,"Radius of a cylinder, used a scale parameter in the structural model for the 2D test"); |
989 | |||
990 | //otherdata TODO move them to another section | ||
991 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(idCase,"idCase", 3, "id of the case for user"); |
992 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nameTest,"nameTest","noName", "name of the test"); |
993 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(incomingPressure, "incomingPressure",28,"mean pressure at the inlet"); |
994 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(propCardiacCycle, "propCardiacCycle",0.1,"for inflow data"); |
995 | |||
996 | //Section for linearProblemNSHeat | ||
997 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("NSHeat"); |
998 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(coeffOfThermalExpansion,"coeffOfThermalExpansion",3.e-4,"coefficient of thermal expansion"); |
999 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(thermalDiffusion,"thermalDiffusion",1.,"coefficient of the thermal diffusion"); |
1000 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(initialTemperature,"initialTemperature",303.15,"Constant initial temperature of the system, in Kelvin"); |
1001 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(referenceTemperature,"referenceTemperature",303.15,"reference temperature, in Kelvin"); |
1002 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gravity,"gravity","0 -10","Gravity"); |
1003 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(stevinoLabels, "stevinoLabels", "", "Labels of the bounadry where we impose also the hydrostatic pressure (rho g z)"); |
1004 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(flowRate,"flowRate",0,"flowRate used to compute a velocity bc in userNSHeat"); |
1005 | |||
1006 | //Section with retinal autoregulation parameters | ||
1007 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("autoregulation"); |
1008 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(autoregulated,"autoregulated",false,"used in autoregulation.cpp"); |
1009 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(maxT,"maxT", 1.e3,"maximum fibers active pressure in the control function"); |
1010 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(q,"q",0.95,"shape parameter of the control function "); |
1011 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(up,"up",1000,"upper limit of the range for the control"); |
1012 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(down,"down",0,"lower limit of the range for the control"); |
1013 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nominalPressure, "nominalPressure",35.," reference value of pressure associated with no control"); |
1014 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useRegulationInWindkessel, "useRegulationInWindkessel", false, "if true winkdessel changes during the simulation to regulate blood flow"); |
1015 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedModelBC_regParam,"lumpedModelBC_RMax","","Maximum increment of the pressure due to regulation"); |
1016 |
4/6✓ Branch 2 taken 16 times.
✓ Branch 3 taken 449 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 16 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 465 times.
|
465 | if ( lumpedModelBC_regParam.size() != lumpedModelBCType.size() && useRegulationInWindkessel ) { |
1017 | ✗ | std::size_t oldSize( lumpedModelBC_regParam.size() ); | |
1018 | ✗ | double regValue( lumpedModelBC_regParam.back() ); | |
1019 | |||
1020 | ✗ | std::cout<<" autoregulation parameter std::set for only : "<< oldSize <<" outlets"<<std::endl; | |
1021 | ✗ | std::cout<<" extending the last value: "<< regValue <<" to the others"<<std::endl; | |
1022 | ✗ | for ( std::size_t k( oldSize ); k < lumpedModelBCType.size(); ++k ) { | |
1023 | ✗ | lumpedModelBC_regParam.push_back(regValue); | |
1024 | } | ||
1025 | ✗ | FEL_ASSERT( lumpedModelBC_regParam.size() == lumpedModelBCType.size()); | |
1026 | } | ||
1027 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(windkesselProp, "windkesselProp",0.46,"amount of resistance with no autoregulation"); |
1028 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(idControlFreeCase,"idControlFreeCase",0,"id of the control free case for user"); |
1029 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportPrincipalDirectionsAndCurvature,"exportPrincipalDirectionsAndCurvature",false,"true if you want to take a look at the principal direction of curvature"); //TODO move it elsewhere |
1030 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportDofPartition,"exportDofPartition",false,"true if you want to take a look at the partition"); |
1031 | |||
1032 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("IOPcoupling"); |
1033 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(labelIOPMesh,"labelIOPMesh","","labels on the IOP mesh that are part of the interface"); |
1034 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(labelNSMesh,"labelNSMesh","","labels on the IOP mesh that are part of the interface"); |
1035 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(porousParam,"porousParam",-1.,"if negative we are considering the fluid as potential if not as a porous media and this coefficient is related to the permeability"); |
1036 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(computeSteklov,"computeSteklov",false,"true if you want to compute the steklov-poincare operator"); |
1037 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(relaxationParam,"relaxationParam",0,"relaxation parameter when solving a fully neumann problem"); |
1038 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportSteklovData,"exportSteklovData",false,"exporting inputs and outputs of the steklov operator");//TODO: remove it! |
1039 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(optionForSteklov,"optionForSteklov",1,"0=load it, 1=compute it, 2=compute and save it"); |
1040 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(steklovDataDirRaw,"steklovDataDir","./","Directory where to read/save steklov matrix. " |
1041 | "Accept envrionment variables: HOME, FELISCE_DATA_DIR, FELISCE_INRIA_DATA_DIR, FELISCE_RESULT_DIR"); | ||
1042 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | steklovDataDir = steklovDataDirRaw; |
1043 |
2/6✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
465 | if (steklovDataDir.at(steklovDataDir.length()-1) != '/') steklovDataDir += '/'; |
1044 |
5/10✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 465 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 465 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 465 times.
✗ Branch 16 not taken.
|
465 | steklovDataDir = expandEnvironmentVariables(filename,"IOPcoupling","steklovDataDir",steklovDataDir); |
1045 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 465 times.
|
465 | if ( optionForSteklov == 0 ) |
1046 | ✗ | FEL_WARNING_IF_NO_DIRECTORY(steklovDataDir); | |
1047 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(steklovMatrixName,"steklovMatrixName","","name of the file containing steklovMatrix"); |
1048 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lumpedTest,"lumpedTest",false,"if you std::set it true then the test quantities will be computed using only the diagonal of the mass matrix (for the L2 scalar product) ");//remove this option.. |
1049 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(notConnectedCylinders,"notConnectedCylinders",false,"true if you are computing the eigenfunctions on a non connected domain"); |
1050 | |||
1051 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("ROSteklov"); |
1052 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useRoSteklov,"useRoSteklov",false,"whether to assemble and use the reduced order steklov operator instead of the real one."); |
1053 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nbOfLaplacianEigenFunction,"nbOfLaplacianEigenFunction",10,"used in linearProblemPerfectFluid, it is the number of the surface laplacian eigenpairs that will be approximated"); |
1054 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(percentageOfExtraEig,"percentageOfExtraEig",10.0,"If it is std::set, for instance, to 25 the required number of laplacianEigenFunction requested to SLEPc will be ceil(1.25*nbOfLaplacian.. "); |
1055 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(lowRank,"lowRank",5,"used in linearProblemPerfectFluid, rank of the reduced order steklov operator."); |
1056 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 465 times.
|
465 | FEL_ASSERT( lowRank <= nbOfLaplacianEigenFunction); |
1057 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(tryAcceleration,"tryAcceleration",false,"used in perfectfluid"); |
1058 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(projOnlineRatio,"projOnlineRatio",0.995,"used in perfectfluid"); |
1059 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(onlyConstResp,"onlyConstResp",false," true if you do want to use only the constant response and not the off-line basis part"); |
1060 | // export configuration for post-processing. | ||
1061 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("export"); |
1062 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportP1Normal, "exportP1Normal", false, "true if you want to export the P1 field"); |
1063 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(labelExportP1Normal, "labelExportP1Normal","","Labels of the boundary for you want to export the normal."); |
1064 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportAll, "exportAll", false, "true if you want to overwrite the behavior of all the other flag of this section"); //TODO change the name in ExportAll Steklov |
1065 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportLaplacianEigenValues, "exportLaplacianEigenValues", false, "true if you want to export the approximated eigenvalues of the laplacian operator"); |
1066 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportLaplacianEigenVectors, "exportLaplacianEigenVectors", false, "true if you want to export the approximated eigenvectors of the laplacian operator"); |
1067 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportSteklovEigenValues, "exportSteklovEigenValues", false, "true if you want to export the approximated eigenvalues of the steklov operator"); |
1068 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportSteklovEigenVectors, "exportSteklovEigenVectors", false, "true if you want to export the approximated eigenvectors of the steklov operator"); |
1069 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportFTOfSteklovEigenVectors, "exportFTOfSteklovEigenVectors", false, "true if you want to export the Fourier Transform of the Steklov EigenVectors w.r.t the Laplacian eigenVector"); |
1070 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportInputOfSteklov, "exportInputOfSteklov", false, "true if you want to export the input vectors to the steklov operator"); |
1071 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportOutputOfSteklov, "exportOutputOfSteklov", false, "true if you want to export the output vectors to the steklov operator" ); |
1072 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportOnlyLastInput, "exportOnlyLastInput", true, "false if you want to export all the input through the domain decomposition iterations"); |
1073 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportOnlyLastOutput, "exportOnlyLastOutput", true, "false if you want to export all the input through the domain decomposition iterations"); |
1074 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportMassMatrix, "exportMassMatrix", false, "true if you want to export the mass matrix"); |
1075 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportLaplacianMatrix, "exportLaplacianMatrix", false, "true if you want to export the Laplacian matrix"); |
1076 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportSteklovMatrix, "exportSteklovMatrix", false, "true if you want to export the Steklov matrix"); |
1077 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportReducedEigenMatrix, "exportReducedEigenMatrix", false,"true if you want to export the matrix of the steklov eigen problem written w.r.t the the laplacian eigenvectors"); |
1078 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportOffLineVolumeSolution, "exportOffLineVolumeSolution", false, "true to export the volume solution computed during the offline phase of the reduced steklov"); |
1079 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exportFiltrationVelocity, "exportFiltrationVelocity", false, "true if you want to compute and export the filtration velocity (in poro-elasticity)"); |
1080 | |||
1081 | |||
1082 |
2/4✓ Branch 0 taken 465 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 465 times.
|
465 | if ( exportAll || exportSteklovData ) { //exportSteklovData should be removed |
1083 | ✗ | exportLaplacianEigenValues = true; | |
1084 | ✗ | exportLaplacianEigenVectors = true; | |
1085 | ✗ | exportSteklovEigenValues = true; | |
1086 | ✗ | exportSteklovEigenVectors = true; | |
1087 | ✗ | exportFTOfSteklovEigenVectors = true; | |
1088 | ✗ | exportInputOfSteklov = true; | |
1089 | ✗ | exportOutputOfSteklov = true; | |
1090 | ✗ | exportOnlyLastInput = false; | |
1091 | ✗ | exportOnlyLastOutput = false; | |
1092 | ✗ | exportMassMatrix = true; | |
1093 | ✗ | exportLaplacianMatrix = true; | |
1094 | ✗ | exportSteklovMatrix = true; | |
1095 | ✗ | exportReducedEigenMatrix = true; | |
1096 | ✗ | exportFiltrationVelocity = true; | |
1097 | } | ||
1098 | |||
1099 | //dofs fusion (ex. periodic bundary conditions) | ||
1100 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("FusionDof"); |
1101 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(FusionDof,"FusionDof",false,"fuion or not fusion dofs"); |
1102 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(FusionVariable,"variable","default","Variable name to be fusioned"); |
1103 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(FusionNumLabel,"numLabel","0","number of pairs of label to fusion"); |
1104 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(FusionLabel,"label","-1","Fusion dofs of first label in the second, dofLabel1 == dofLabel2"); |
1105 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(FusionTolerance,"tolerance",1.e-12,"Mininum distance between supportDOF nodes to enable fusion"); |
1106 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(AllToOne,"allToOne","false","All dofs fusioned into a single one"); |
1107 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(AllInLabelToOne,"allInLabelToOne",false,"All dofs of a label fusioned into a single one"); |
1108 | |||
1109 | //Embedded interface matching | ||
1110 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("EmbeddedInterface"); |
1111 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(EmbeddedInterface,"EmbeddedInterface",false,"activation / desactivation EmbeddedInterface"); |
1112 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(EmbeddedVariable,"embeddedVariable","default","Variable name to be matched"); |
1113 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(EmbeddedNumInterface,"numEmbeddedInterface","-1","number of pairs of labels to match"); |
1114 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(EmbeddedLabelPairs,"embeddedLabelPairs","-1","Label pairs defining the embedded interface"); |
1115 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(EmbeddedMatchTolerance,"embeddedMatchTolerance",1.e-12,"Mininum distance between supportDOF nodes to match"); |
1116 | |||
1117 | // Crack point | ||
1118 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("CrackInterface"); |
1119 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hasCrack,"hasCrack",false,"crack or no"); |
1120 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(CrackVariable,"crackVariable","default","Variable name to be crack model"); |
1121 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(CrackNum,"numCracks","-1","number of pairs of labels to crack"); |
1122 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(CrackLabelPairs,"crackLabelPairs","-1","Label pairs defining the crack point"); |
1123 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(CrackElemID,"crackElemID","-1","True ID for geo file [not bdry label] corresponding to crackLabel"); |
1124 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(CrackConstantBefore,"crackConstantBefore",1e4,"Crack spring constant before"); |
1125 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(CrackConstantAfter,"crackConstantAfter",1e-4,"Crack spring constant after"); |
1126 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(CrackTolerance,"crackTolerance",1.e-12,"Mininum distance between supportDOF nodes"); |
1127 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(CrackStressTolerance,"crackStressTolerance",1.e12,"Stress tolerance on crack point before cracking"); |
1128 | |||
1129 | //std::set initial crack constant | ||
1130 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(CrackConstant,"crackConstantBefore",1e16,"Crack spring constant"); |
1131 | |||
1132 | //Penalization Method | ||
1133 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("PenalizationValves"); |
1134 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(PenalizationMethod, "PenalizationMethod", false, "activation / deactivation penalization method (non linear solver)"); |
1135 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(closed_penalization, "closed_penalization", "-1 -1", "close surface penalization"); |
1136 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(Gamma_penalization, "Gamma_penalization", 1.e-5, "value of the penalization"); |
1137 | |||
1138 | //RISmodel (ex.valves) | ||
1139 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("RISModels"); |
1140 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(RISModels, "RISModels",false,"activation / deactivation RIS models"); |
1141 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(initiallyOpenedValveIndex, "initiallyOpenedValveIndex", 0, "index of which valve is initially open. By default, the first valve is open"); |
1142 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(crashIfStatusNotAdmissible, "crashIfStatusNotAdmissible", 1, "variable to specify if the simulation must stop when a status is not admissible"); |
1143 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(closed_surf, "closed_surf", "-1", "closed surfaces"); |
1144 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(open_surf, "open_surf", "-1", "open surfaces"); |
1145 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(fake_surf, "fake_surf", "-1", "fake surfaces"); |
1146 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nbTimeSteps_refractory_time, "nbTimeSteps_refractory_time", 5, "number of time steps used for defining the refractory time"); |
1147 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nbTimeSteps_linear_transition, "nbTimeSteps_linear_transition", 0, "number of time steps used for defining the linear evolution in the value of the resistances"); |
1148 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nbTimeSteps_linear_transition_twoValves, "nbTimeSteps_linear_transition_twoValves", "0. 0.", "number of time steps used for defining the linear evolution in the value of the resistances of the proximal and distal valves"); |
1149 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(R_active_surf, "R_active_surf", 1.e5, "resistance of closed valve"); |
1150 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(R_inactive_surf, "R_inactive_surf", 0., "resistance of open valve"); |
1151 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(R_activeClosed_TwoValves_Intermediate, "R_activeClosed_TwoValves_Intermediate", 1.e4, "resistance of closed valve just after the closing - only used for two valves"); |
1152 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(R_activeClosed_TwoValves_Final, "R_activeClosed_TwoValves_Final", 1.e6, "final resistance of closed valve after several iterations after the closing - only used for two valves"); |
1153 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(R_FirstValve_ClosingSpeed, "R_FirstValve_ClosingSpeed", 40., "rate of speed for the evolution of the resistance of the closed surface of the first valve from R_Intermediate to R_Final - only used for two valves"); |
1154 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(R_SecondValve_ClosingSpeed, "R_SecondValve_ClosingSpeed", 30., "rate of speed for the evolution of the resistance of the closed surface of the second valve from R_Intermediate to R_Final - only used for two valves"); |
1155 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(flow_ref_oneValve, "flow_ref_oneValve", 1.e-2, "flow reference for one valve"); |
1156 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(flow_ref_twoValves, "flow_ref_twoValves", "-2. 0.", "flow reference for two valves"); |
1157 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(preventValvesFromOpeningTooFast, "preventValvesFromOpeningTooFast", 0, "specify if a closed valve should be prevented from opening if another valve has recently closed"); |
1158 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
465 | if ( (preventValvesFromOpeningTooFast != 0) && (preventValvesFromOpeningTooFast != 1) ) { |
1159 | ✗ | FEL_ERROR("ERROR OF DATA: error of value for preventValvesFromOpeningTooFast: unknown value!"); | |
1160 | } | ||
1161 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(nbIterationsPreventValvesFromOpeningTooFast, "nbIterationsPreventValvesFromOpeningTooFast", 10, "number of iterations during a closed valve cannot open whereas another valve has recently closed"); |
1162 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(verboseRIS, "verboseRIS", 1, "verbose for the RIS model"); |
1163 | |||
1164 | //Pressure correction for full closed cavity where only displacements are imposed on its boundaries | ||
1165 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("PressureCorrection"); |
1166 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(useElectroMechanicalPressure, "useElectroMechanicalPressure", false, "introducing electromechanical pressure"); |
1167 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(usePressureCorrection, "usePressureCorrection", false, "introducing pressure correction"); |
1168 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(correctionExternalPressure, "correctionExternalPressure", false, "introducing external pressure correction"); |
1169 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(correctionALEPressure, "correctionALEPressure", false, "introducing ALE pressure correction"); |
1170 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(typeOfPressureCorrection, "typeOfPressureCorrection", 0, "type of pressure correction. 0 for enabling the pressure correction anytime, 1 only when all the valves are closed"); |
1171 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(labelsToCorrectPressure, "labelsToCorrectPressure", "", "labels where the pressure correction is applied. CONVENTION: Always mitral valve first then aortic valve!!"); |
1172 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(signPressureCorrection, "signPressureCorrection", "", "sign of the pressure correction. either equal to -1 or 1"); |
1173 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(labelsToComputeMeanPressure, "labelsToComputeMeanPressure", "", "labels where the mean pressure is computed and used for the pressure correction"); |
1174 |
4/8✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 465 times.
✗ Branch 7 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 465 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 465 times.
|
465 | if ( ((signPressureCorrection.size()) != (labelsToCorrectPressure.size())) || ((signPressureCorrection.size()) != (labelsToComputeMeanPressure.size())) || ((labelsToCorrectPressure.size()) != (labelsToComputeMeanPressure.size())) ) { |
1175 | ✗ | FEL_ERROR("ERROR OF DATA: error of size for labelsToCorrectPressure, signPressureCorrection and labelsToComputeMeanPressure: it should be the same!"); | |
1176 | } | ||
1177 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(labelsToComputeFluxThrough, "labelsToComputeFluxThrough", "", "std::vector of labels where the flux through is computed and used for the ALE pressure correction. CONVENTION: Always mitral valve first then aortic valve and at the end ventricle wall!"); |
1178 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(exteriorNormalOfLabelsToComputeFluxThrough, "exteriorNormalOfLabelsToComputeFluxThrough", "", "// std::vector of orientation of the exterior normals of the labels where the flux through is computed and used for the ALE pressure correction. either equal to -1 or 1"); |
1179 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 465 times.
|
465 | if ( (labelsToComputeFluxThrough.size()) != (exteriorNormalOfLabelsToComputeFluxThrough.size())) { |
1180 | ✗ | FEL_ERROR("ERROR OF DATA: error of size for labelsToComputeFluxThrough and exteriorNormalOfLabelsToComputeFluxThrough: it should be the same!"); | |
1181 | } | ||
1182 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(forbiddenLabelsForCorrection, "forbiddenLabelsForCorrection", "", "std::vector of labels where the resistive term called in computeElementArrayBoundaryCondition will not be applied in order to avoid duplications"); |
1183 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(verbosePressureCorrection, "verbosePressureCorrection", 1, "verbose for the pressure correction"); |
1184 | |||
1185 | // Stiffening | ||
1186 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("stiffening"); |
1187 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(stiffening, "stiffening", false, "Introducing stiffening"); |
1188 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(stiffeningLabels, "stiffeningLabels", "", "Surface labels requiring stiffening"); |
1189 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(skipStiffeningFirstIteration, "skipStiffeningFirstIteration", 0, "Boolean for the specific stiffening during the first iteration"); |
1190 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(initStiff, "initStiff", 200., "Initial stiffening coefficient"); |
1191 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(finalStiff, "finalStiff", 200., "Final stiffening coefficient"); |
1192 | |||
1193 | // Regurgitation | ||
1194 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("Regurgitation"); |
1195 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(regurgitation,"regurgitation",false, "Introducing regurgitation"); |
1196 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(regurgitationType, "regurgitationType", 0, "Regurgitation type (0: Ball, 1: regurgitation curve, 2: Ball at first iteration only"); |
1197 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(regurgitationPosition,"regurgitationPosition", "0. 0. 0.", "regurgitation center"); |
1198 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(regurgitationLabels,"regurgitationLabels", "", "regurgitation labels"); |
1199 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(regurgitationRadius,"regurgitationRadius", 0.3,"regurgitation radius"); |
1200 | |||
1201 | // PETSc | ||
1202 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("petsc"); |
1203 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(linearSolverVerbose,"linearSolverVerbose",0,"Verbosity of the linear systems petsc solvers"); |
1204 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(solver,"solver","gmres","gmres or ..."); |
1205 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(gmresRestart,"gmresRestart","200",""); |
1206 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 465 times.
|
465 | while(gmresRestart.size() < solver.size()){ |
1207 | ✗ | gmresRestart.push_back(200); | |
1208 | } | ||
1209 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(preconditioner,"preconditioner","ilu","ilu or .."); |
1210 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(setPreconditionerOption,"setPreconditionerOption","SAME_NONZERO_PATTERN","SAME_PRECONDITIONER,SAME_NONZERO_PATTERN or DIFFERENT_NONZERO_PATTERN"); |
1211 |
2/2✓ Branch 2 taken 10 times.
✓ Branch 3 taken 465 times.
|
475 | while ( setPreconditionerOption.size() < solver.size()) { |
1212 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
10 | setPreconditionerOption.emplace_back("SAME_NONZERO_PATTERN"); |
1213 | } | ||
1214 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(relativeTolerance,"relativeTolerance","1e-9","Relative tolerance."); |
1215 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 465 times.
|
465 | while(relativeTolerance.size() < solver.size()){ |
1216 | ✗ | relativeTolerance.push_back(1e-9); | |
1217 | } | ||
1218 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(absoluteTolerance,"absoluteTolerance","1e-50","Absolute tolerance."); |
1219 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 465 times.
|
465 | while(absoluteTolerance.size() < solver.size()){ |
1220 | ✗ | absoluteTolerance.push_back(1e-50); | |
1221 | } | ||
1222 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(solutionTolerance,"solutionTolerance","-2","Convergence tolerance in terms of the norm of the change in the solution between steps, || delta x || < stol*|| x || "); |
1223 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 465 times.
|
465 | while(solutionTolerance.size() < solver.size()){ |
1224 | ✗ | solutionTolerance.push_back(-2); | |
1225 | } | ||
1226 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(divergenceTolerance,"divergenceTolerance","-1.0","Divergence tolerance. If negative will not be changed"); |
1227 |
2/2✓ Branch 2 taken 10 times.
✓ Branch 3 taken 465 times.
|
475 | while(divergenceTolerance.size() < solver.size()){ |
1228 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
10 | divergenceTolerance.push_back(-1.0); |
1229 | } | ||
1230 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(maxIteration,"maxIteration", "1000","Maximum iteration (to solve linear system)"); |
1231 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 465 times.
|
465 | while(maxIteration.size() < solver.size()){ |
1232 | ✗ | maxIteration.push_back(1000); | |
1233 | } | ||
1234 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(maxIterationSNES,"maxIterationSNES", "50","Maximum iteration to SNES (to solve non linear system)"); |
1235 |
2/2✓ Branch 2 taken 10 times.
✓ Branch 3 taken 465 times.
|
475 | while(maxIterationSNES.size() < solver.size()){ |
1236 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
10 | maxIterationSNES.push_back(50); |
1237 | } | ||
1238 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(maxFunctionEvaluatedSNES,"maxFunctionEvaluatedSNES", "-1","Maximum number of function evaluations (-1 indicates no limit) "); |
1239 |
2/2✓ Branch 2 taken 10 times.
✓ Branch 3 taken 465 times.
|
475 | while(maxFunctionEvaluatedSNES.size() < solver.size()){ |
1240 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
10 | maxFunctionEvaluatedSNES.push_back(-1); |
1241 | } | ||
1242 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(initSolverWithPreviousSolution,"initSolverWithPreviousSolution","","Init solver with previous solution"); |
1243 |
2/2✓ Branch 2 taken 396 times.
✓ Branch 3 taken 465 times.
|
861 | while ( initSolverWithPreviousSolution.size() < solver.size()) { |
1244 |
1/2✓ Branch 1 taken 396 times.
✗ Branch 2 not taken.
|
396 | initSolverWithPreviousSolution.push_back(false); |
1245 | } | ||
1246 | //Petsc check size | ||
1247 |
1/2✓ Branch 3 taken 465 times.
✗ Branch 4 not taken.
|
465 | FEL_ASSERT_EQUAL(gmresRestart.size(), solver.size()); |
1248 |
1/2✓ Branch 3 taken 465 times.
✗ Branch 4 not taken.
|
465 | FEL_ASSERT_EQUAL(preconditioner.size(), solver.size()); |
1249 |
1/2✓ Branch 3 taken 465 times.
✗ Branch 4 not taken.
|
465 | FEL_ASSERT_EQUAL(setPreconditionerOption.size(), solver.size()); |
1250 |
1/2✓ Branch 3 taken 465 times.
✗ Branch 4 not taken.
|
465 | FEL_ASSERT_EQUAL(relativeTolerance.size(), solver.size()); |
1251 |
1/2✓ Branch 3 taken 465 times.
✗ Branch 4 not taken.
|
465 | FEL_ASSERT_EQUAL(absoluteTolerance.size(), solver.size()); |
1252 |
1/2✓ Branch 3 taken 465 times.
✗ Branch 4 not taken.
|
465 | FEL_ASSERT_EQUAL(solutionTolerance.size(), solver.size()); |
1253 |
1/2✓ Branch 3 taken 465 times.
✗ Branch 4 not taken.
|
465 | FEL_ASSERT_EQUAL(divergenceTolerance.size(), solver.size()); |
1254 |
1/2✓ Branch 3 taken 465 times.
✗ Branch 4 not taken.
|
465 | FEL_ASSERT_EQUAL(maxIteration.size(), solver.size()); |
1255 |
1/2✓ Branch 3 taken 465 times.
✗ Branch 4 not taken.
|
465 | FEL_ASSERT_EQUAL(maxIterationSNES.size(), solver.size()); |
1256 |
1/2✓ Branch 3 taken 465 times.
✗ Branch 4 not taken.
|
465 | FEL_ASSERT_EQUAL(maxFunctionEvaluatedSNES.size(), solver.size()); |
1257 |
1/2✓ Branch 3 taken 465 times.
✗ Branch 4 not taken.
|
465 | FEL_ASSERT_EQUAL(initSolverWithPreviousSolution.size(), solver.size()); |
1258 | |||
1259 | //Verdandi | ||
1260 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("verdandi"); |
1261 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(stateErrorVarianceValue,"stateErrorVarianceValue",1.,"?"); |
1262 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(Kparameter,"Kparameter",1.,"?"); |
1263 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(RHSparameter,"RHSparameter",1.,"?"); |
1264 | |||
1265 | //CVGraph | ||
1266 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("cvgraph"); |
1267 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(compartmentName,"compartmentName","none","The name of the current compartment"); |
1268 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(dataFileCVG,"dataFileCVG","./dataCVG","The cvgraph data file."); |
1269 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(interfaceLabels,"interfaceLabels", "","The labels of the interface"); |
1270 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(correspondingInterfaceLabels,"correspondingInterfaceLabels", "","Same labels as interfaceLabels but on the other mesh"); |
1271 | // If correspondingInterfaceLabels is not specified, we assume a 1 to 1 correspondance. | ||
1272 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | if ( correspondingInterfaceLabels.size() == 0 ) { |
1273 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | correspondingInterfaceLabels = interfaceLabels; |
1274 | } | ||
1275 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(withCVG,"withCVG",false," with cvgraph "); |
1276 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(interpolatorThreshold,"interpolatorThreshold",1.e-8,"Threshold used for determining whether a point lies inside or outside a triangle"); |
1277 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(maxDepth,"maxDepth",1,"Max depth for used for recursive search in getClosestSurfaceElement (used in interpolator)"); |
1278 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(idVarToExchange,"idVarToExchange",0,"The ID of the variable to send/receive (used in cvgMainSlave::buildInterpolator)."); |
1279 | |||
1280 | // Hyperelastic | ||
1281 |
2/4✓ Branch 2 taken 465 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 465 times.
✗ Branch 6 not taken.
|
465 | gpc.moveToSection("Hyperelastic"); |
1282 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hyperElasticLaw.type,"type","","StVenantKirchhoff or CiarletGeymonat or Ogden"); |
1283 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hyperElasticLaw.numLabel,"numLabel","","Number of labels"); |
1284 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(hyperElasticLaw.label,"label","","Apply boundary condition on elements with this label"); |
1285 | 465 | std::string time_scheme; | |
1286 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(time_scheme,"TimeScheme","half_sum","The time scheme considered for the hyperelastic law, half_sum by default"); |
1287 |
2/2✓ Branch 1 taken 457 times.
✓ Branch 2 taken 8 times.
|
465 | hyperElasticLaw.timeSchemeHyperelasticity = time_scheme == "half_sum" ? HyperelasticityNS::half_sum : HyperelasticityNS::midpoint; |
1288 | bool is_incompressible; | ||
1289 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.get(is_incompressible,"IsIncompressible",false,"If the hyperlastic law considered is compressible or not"); |
1290 |
3/10✗ Branch 0 not taken.
✓ Branch 1 taken 465 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 7 taken 465 times.
✗ Branch 8 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 465 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
465 | hyperElasticLaw.pressureData = is_incompressible ? felisce::make_shared<Private::Hyperelasticity::PressureDataIncompressible>() : felisce::make_shared<Private::Hyperelasticity::PressureData>(); |
1291 |
2/2✓ Branch 1 taken 32 times.
✓ Branch 2 taken 433 times.
|
465 | if (hyperElasticLaw.type.size() > 0) { |
1292 |
1/2✓ Branch 1 taken 32 times.
✗ Branch 2 not taken.
|
32 | hyperElasticLaw.hyperElasticLaws = felisce::make_shared<HyperElasticityLawManager>(); |
1293 | } else { | ||
1294 | 433 | hyperElasticLaw.hyperElasticLaws = nullptr; | |
1295 | } | ||
1296 | |||
1297 | // Read elementFieldDynamicValue | ||
1298 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | auto elementFieldSectionList = gpc.getElementFieldSection(); |
1299 | 465 | std::string name; | |
1300 | |||
1301 |
2/2✓ Branch 3 taken 6 times.
✓ Branch 4 taken 465 times.
|
471 | for (auto isection = elementFieldSectionList.begin() ;isection != elementFieldSectionList.end() ; ++isection ) { |
1302 |
2/4✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 6 times.
✗ Branch 6 not taken.
|
6 | name = gpc.elementFieldNameFromSection(*isection); |
1303 |
3/6✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 6 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 6 times.
✗ Branch 9 not taken.
|
6 | elementFieldDynamicValueMap[name] = gpc.getElementFieldDynamicValue(*isection); |
1304 | } | ||
1305 | |||
1306 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | this->userParseInputFile(gpc); |
1307 | |||
1308 | // Check for undefined variable | ||
1309 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | gpc.checkUndefinedVariable(); |
1310 | |||
1311 | // Help | ||
1312 |
1/2✓ Branch 1 taken 465 times.
✗ Branch 2 not taken.
|
465 | m_help = gpc.getHelp(); |
1313 | 465 | } | |
1314 | |||
1315 | /***********************************************************************************/ | ||
1316 | /***********************************************************************************/ | ||
1317 | |||
1318 | 462 | void UniqueFelisceParam::print(int aVerbose, std::ostream& outstr) const { | |
1319 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 458 times.
|
462 | if(aVerbose>2) { |
1320 | 4 | std::cout << "# -*- getpot -*-" << std::endl; | |
1321 | 4 | std::cout << std::endl; | |
1322 | |||
1323 | 4 | std::cout << "[debug]" << std::endl; | |
1324 | 4 | std::cout << "verbose = " << aVerbose << std::endl; | |
1325 | 4 | std::cout << std::endl; | |
1326 | |||
1327 | 4 | std::cout << "[chrono]" << std::endl; | |
1328 | 4 | std::cout << "toFile = " << chronoToFile << std::endl; | |
1329 | 4 | std::cout << std::endl; | |
1330 | |||
1331 | 4 | std::cout << "[data]" << std::endl; | |
1332 | 4 | std::cout << "inputDirectory = " << inputDirectory << std::endl; | |
1333 | 4 | std::cout << "inputFile = " << inputFile << std::endl; | |
1334 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
|
4 | if (useROM) std::cout << "podBasisFile = " << podBasisFile << std::endl; |
1335 | 4 | std::cout << std::endl; | |
1336 | |||
1337 | 4 | std::cout << "[transient]" << std::endl; | |
1338 | 4 | std::cout << "timeStep = " << timeStep << std::endl ; | |
1339 | 4 | std::cout << "time = " << time << std::endl ; | |
1340 | 4 | std::cout << "timeMax = " << timeMax << std::endl ; | |
1341 | 4 | std::cout << "timeStepCharact = " << timeStepCharact << std::endl ; | |
1342 | 4 | std::cout << "iteration = " << iteration << std::endl ; | |
1343 | 4 | std::cout << "timeIterationMax = " << timeIterationMax << std::endl ; | |
1344 | 4 | std::cout << "frequencyWriteSolution = " << frequencyWriteSolution << std::endl; | |
1345 | |||
1346 | 4 | std::cout << "periodNbSteps = " << periodNbSteps << std::endl; | |
1347 | 4 | std::cout << "intervalWriteSolution : [ " << std::endl; | |
1348 | |||
1349 | 4 | std::cout << "intervalWriteSolution : [ " << std::endl; | |
1350 | |||
1351 |
2/2✓ Branch 1 taken 8 times.
✓ Branch 2 taken 4 times.
|
12 | for (std::size_t i = 0; i < intervalWriteSolution.size(); i++) { |
1352 | 8 | std::cout << intervalWriteSolution[i] << " " ; | |
1353 | } | ||
1354 | 4 | std::cout << " ] " << std::endl; | |
1355 | |||
1356 | 4 | std::cout << "integrationTimeMethod = " << integrationTimeMethod << std::endl; | |
1357 | 4 | std::cout << std::endl; | |
1358 | |||
1359 | 4 | std::cout << "[variable]" << std::endl; | |
1360 |
2/2✓ Branch 1 taken 8 times.
✓ Branch 2 taken 4 times.
|
12 | for (std::size_t i = 0; i < nameVariable.size(); i++) { |
1361 | 8 | std::cout << nameVariable[i] << " physcial variable: " ; | |
1362 | 8 | std::cout << physicalVariable[i] ; | |
1363 | 8 | std::cout << " with the finite element type " << typeOfFiniteElement[i] ; | |
1364 | 8 | std::cout << " with the degree of exactness " << degreeOfExactness[i] ; | |
1365 | } | ||
1366 | 4 | std::cout << std::endl; | |
1367 | |||
1368 | 4 | std::cout << "[mesh]" << std::endl; | |
1369 | 4 | std::cout << "meshDirRaw = " << meshDirRaw << std::endl; | |
1370 | 4 | std::cout << "meshDir = " << meshDir << std::endl; | |
1371 | 4 | std::cout << "inputMeshes = " << std::endl; | |
1372 |
2/2✓ Branch 1 taken 4 times.
✓ Branch 2 taken 4 times.
|
8 | for(std::size_t ii=0; ii<inputMesh.size(); ++ii) |
1373 | 4 | std::cout << ii << " -> " << inputMesh[ii] << std::endl; | |
1374 | 4 | std::cout << std::endl; | |
1375 | 4 | std::cout << "outputMesh = " << std::endl; | |
1376 |
2/2✓ Branch 1 taken 4 times.
✓ Branch 2 taken 4 times.
|
8 | for(std::size_t ii=0; ii<outputMesh.size(); ++ii) |
1377 | 4 | std::cout << ii << " -> " << outputMesh[ii] << std::endl; | |
1378 | 4 | std::cout << std::endl; | |
1379 | 4 | std::cout << "idMesh = "; | |
1380 |
2/2✓ Branch 1 taken 4 times.
✓ Branch 2 taken 4 times.
|
8 | for(std::size_t ii=0; ii<idMesh.size(); ++ii) |
1381 | 4 | std::cout << idMesh[ii] << " "; | |
1382 | 4 | std::cout << std::endl; | |
1383 | 4 | std::cout << "resultDir = " << resultDir << std::endl; | |
1384 | 4 | std::cout << "prefixNames = "; | |
1385 |
2/2✓ Branch 1 taken 4 times.
✓ Branch 2 taken 4 times.
|
8 | for(std::size_t i=0; i<prefixName.size(); ++i) |
1386 | 4 | std::cout << prefixName[i] << " "; | |
1387 | 4 | std::cout << std::endl; | |
1388 | 4 | std::cout << "CVGraphInterface = " << CVGraphInterface << std::endl; | |
1389 | 4 | std::cout << std::endl; | |
1390 | |||
1391 | 4 | std::cout << "flipNormal = "<< flipNormal << std::endl; | |
1392 | |||
1393 | // Iterating over elements type (eg: Nodes, Segments2, Triangles3, ...) | ||
1394 |
1/2✗ Branch 4 not taken.
✓ Branch 5 taken 4 times.
|
4 | for ( auto it_map = felName2MapintRef2DescLine.begin(); it_map != felName2MapintRef2DescLine.end(); it_map++) { |
1395 | |||
1396 | ✗ | std::cout << it_map->first << std::endl ; | |
1397 | |||
1398 | //iterating over label and stringLabel | ||
1399 | ✗ | std::cout << std::setiosflags(std::ios::left) << std::setw(10) << "label" << "stringLabel" << std::endl; | |
1400 | ✗ | for ( auto it_map2 = it_map->second.begin(); it_map2 != it_map->second.end(); it_map2++) { | |
1401 | ✗ | std::cout << std::setiosflags(std::ios::left) << std::setw(10) << it_map2->first << it_map2->second << std::endl; | |
1402 | } | ||
1403 | |||
1404 | ✗ | std::cout << std::endl; | |
1405 | |||
1406 | } | ||
1407 | 4 | std::cout << std::endl; | |
1408 | |||
1409 | 4 | std::cout << "[physics]" << std::endl; | |
1410 | 4 | std::cout << "unit = " << unit << " # physical units 1: SI, 2: CGS "<< std::endl; | |
1411 | 4 | std::cout << "model = " << model << std::endl; | |
1412 | |||
1413 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
|
4 | if (useROM) { |
1414 | ✗ | std::cout << "[rom]" << std::endl; | |
1415 | ✗ | std::cout << "ROMmethod = " << ROMmethod << std::endl; | |
1416 | ✗ | std::cout << "solveEigenProblem = " << solveEigenProblem << std::endl; | |
1417 | ✗ | std::cout << "optimizePotential = " << optimizePotential << std::endl; | |
1418 | ✗ | if (solveEigenProblem) std::cout << "chiSchrodinger = " << chiSchrodinger << std::endl; | |
1419 | ✗ | std::cout << "useROM = " << useROM << std::endl; | |
1420 | ✗ | std::cout << "dimRomBasis" << dimRomBasis << std::endl; | |
1421 | ✗ | std::cout << "dimCollocationPts" << dimCollocationPts << std::endl; | |
1422 | ✗ | std::cout << "numApproxMode" << numApproxMode << std::endl; | |
1423 | ✗ | std::cout << "nCutOff" << nCutOff << std::endl; | |
1424 | ✗ | std::cout << "orderALP" << orderALP << std::endl; | |
1425 | ✗ | std::cout << "readBasisFromFile" << readBasisFromFile << std::endl; | |
1426 | ✗ | std::cout << "writeBasisEvolution" << writeBasisEvolution << std::endl; | |
1427 | ✗ | std::cout << "hasSource" << hasSource << std::endl; | |
1428 | ✗ | std::cout << "numberOfSource" << numberOfSource << std::endl; | |
1429 | |||
1430 | } | ||
1431 | |||
1432 | 4 | std::cout << "[fluid]" << std::endl; | |
1433 | 4 | std::cout << "orderBdfNS = " << orderBdfNS << "# fluid bdf order for NS model (default : 1)" << std::endl; | |
1434 | 4 | std::cout << "orderBdfFS = " << orderBdfFS << "# fluid bdf order for fractional step (default : 1)" << std::endl; | |
1435 | 4 | std::cout << "density = " << density << " # fluid density"<< std::endl; | |
1436 | 4 | std::cout << "viscosity = " << viscosity << " # fluid viscosity"<< std::endl; | |
1437 | 4 | std::cout << "explicitAdvection = " << explicitAdvection << " # explicit Advection scheme (FracStep)"<< std::endl; | |
1438 | |||
1439 | 4 | std::cout << "NSmodifFlag = " << NSmodifFlag << " # Flag for modified NS model 0 => no modified NS model" << std::endl; | |
1440 | 4 | std::cout << "NS_modifLabel = " << NS_modifLabel << " # Label where we apply modified NS"<< std::endl; | |
1441 | 4 | std::cout << "characteristicMethod = " << characteristicMethod << " # 0 => semi-implicit, if != 0 method of characteristics (= 1 RK4 scheme, else Euler scheme)" << std::endl; | |
1442 | 4 | std::cout << "NS_alpha like a capacitance in Rp,C,Rd LumpedModelBC model = " << NS_alpha << " # C/Volume"<< std::endl; | |
1443 | 4 | std::cout << "NS_beta like inverse of distal resistance in Rp,C,Rd LumpedModelBC model = " << NS_beta << " # 1/(Rd*Volume)"<< std::endl; | |
1444 | 4 | std::cout << "NS_gamma like proximal resistance in Rp,C,Rd LumpedModelBC model = " << NS_gamma << " # Rp*Surface/Long"<< std::endl; | |
1445 | |||
1446 | 4 | std::cout << "addedBoundaryFlag = " << addedBoundaryFlag << " # Flag to add scpecific boundary terms: 0= add nothing, 1 = RIS model, 2 = outflow stab, 3 = cardiac cycle" << std::endl; | |
1447 | 4 | std::cout << "stabilizationLabel = "; | |
1448 | 4 | std::cout << "inletLabel = " << inletLabel << std::endl; | |
1449 | 4 | std::cout << "outletLabel = " << outletLabel << std::endl; | |
1450 | 4 | std::cout << "referenceValue1 = " << referenceValue1 << std::endl; | |
1451 | 4 | std::cout << "referenceValue2 = " << referenceValue2 << std::endl; | |
1452 | 4 | std::cout << "referenceValue3 = " << referenceValue3 << std::endl; | |
1453 | 4 | std::cout << "referenceValue4 = " << referenceValue4 << std::endl; | |
1454 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
|
4 | for(std::size_t ilab=0; ilab<stabilizationLabel.size(); ilab++) { |
1455 | ✗ | std::cout << stabilizationLabel[ilab] << " "; | |
1456 | } | ||
1457 | 4 | std::cout << std::endl; | |
1458 | 4 | std::cout << "stabilizationCoef = " << stabilizationCoef << " # Coef for stabilization default = 0.5 " << std::endl; | |
1459 | 4 | std::cout << "NSequationFlag = " << NSequationFlag << " 0 => Stokes, 1 => (default value) normal component of stress as natural boundary condition, 2 => total pressure with rotational formulation as natural boundary condition, 3 => total pressure without rotational formulation as natural boundary condition " << std::endl; | |
1460 | 4 | std::cout << "stabSUPG = " << stabSUPG << " # SUPG stabilization parameter " << std::endl; | |
1461 | 4 | std::cout << "stabdiv = " << stabdiv << " # div stabilization parameter " << std::endl; | |
1462 | 4 | std::cout << "typeSUPG = " << typeSUPG << " # type SUPG stabilization " << std::endl; | |
1463 | 4 | std::cout << "gammaRN = " << gammaRN << " # Robin parameter for RN iterations " << std::endl; | |
1464 | 4 | std::cout << "orderPressureExtrapolation = " << orderPressureExtrapolation << " # NSFracStep pressure extrapolation order" << std::endl; | |
1465 | 4 | std::cout << "incrementalFS = " << incrementalFS << " # Flag for FracStep incremental scheme" << std::endl; | |
1466 | 4 | std::cout << "coefRotScheme = " << coefRotScheme << " # NSFracStep rotational incremental coef" << std::endl; | |
1467 | |||
1468 | |||
1469 | 4 | std::cout << "[fsi]" << std::endl; | |
1470 |
2/2✓ Branch 1 taken 4 times.
✓ Branch 2 taken 4 times.
|
8 | for (unsigned int i = 0; i < betaNormalized.size(); i++) { |
1471 | 4 | std::cout << "beta/rho on branch"<< i << " = " << betaNormalized[i] << ", "; | |
1472 | 4 | std::cout << "section at rest on branch "<< i << " = " << sectionAtRest[i] << ", "; | |
1473 | 4 | std::cout << std::endl; | |
1474 | } | ||
1475 | |||
1476 | 4 | std::cout << "[solid]" << std::endl; | |
1477 | 4 | std::cout << "densitySolid = " << densitySolid << " # Solid density"<< std::endl; | |
1478 | 4 | std::cout << "young = " << young << " # solid Young's modulus"<< std::endl; | |
1479 | 4 | std::cout << "poisson = " << poisson << " # solid Poisson's coefficient"<< std::endl; | |
1480 | 4 | std::cout << "coeffReaction = " << coeffReaction << " # coeffReaction"<< std::endl; | |
1481 | 4 | std::cout << "thickness = " << thickness << " # solid thickness (std::string model)"<< std::endl; | |
1482 | 4 | std::cout << "alpha_rayleigh = " <<alpha_rayleigh << " # solid mass Rayleigh damping coefficient"<< std::endl; | |
1483 | 4 | std::cout << "beta_rayleigh = " << beta_rayleigh << " # solid stiffness Rayleigh damping coefficient"<< std::endl; | |
1484 | 4 | std::cout << "planeStressStrain = " << planeStressStrain << " # plane Stress (1) or Strain assumption (2) "<< std::endl; | |
1485 | |||
1486 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 4 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 4 times.
|
4 | if ((model=="Bidomain") || (model=="BidomainDecoupled") || (model=="BidomainThorax")) { |
1487 | ✗ | std::cout << "[elec]" << std::endl; | |
1488 | //elec | ||
1489 | ✗ | std::cout << "orderBdfEdp = " << orderBdfEdp << "# elec orderBdfEdp" << std::endl; | |
1490 | ✗ | std::cout << "orderBdfIonic = " << orderBdfIonic << "# elec oderBdfIonic" << std::endl; | |
1491 | //elec - parameters | ||
1492 | ✗ | std::cout << "typeOfIonicModel = " << typeOfIonicModel << "# elec typeOfIonicModel" << std::endl; | |
1493 | ✗ | std::cout << "hasHeteroTauClose = " << hasHeteroTauClose << "# elec hasHeteroTauClose" << std::endl; | |
1494 | ✗ | std::cout << "hasAppliedExteriorCurrent = " << hasAppliedExteriorCurrent << "# elec hasAppliedExteriorCurrent" << std::endl; | |
1495 | ✗ | if(typeOfIonicModel=="schaf") { | |
1496 | ✗ | std::cout << "printIonicVar" << printIonicVar << "# elec printIonicVar" << std::endl; | |
1497 | ✗ | std::cout << "tauOpen = " << tauOpen << "# elec tauOpen" << std::endl; | |
1498 | ✗ | std::cout << "tauClose = " << tauClose << "# elec tauClose" << std::endl; | |
1499 | ✗ | std::cout << "tauCloseEndo = " << tauCloseEndo << "# elec tauCloseEndo" << std::endl; | |
1500 | ✗ | std::cout << "tauCloseCell = " << tauCloseCell << "# elec tauCloseCell" << std::endl; | |
1501 | ✗ | std::cout << "tauCloseEpi = " << tauCloseEpi << "# elec tauCloseEpi" << std::endl; | |
1502 | ✗ | std::cout << "tauCloseRV = " << tauCloseRV << "# elec tauCloseRV" << std::endl; | |
1503 | ✗ | std::cout << "tauIn = " << tauIn << "# elec tauIn" << std::endl; | |
1504 | ✗ | std::cout << "tauOut = " << tauOut << "# elec tauOut" << std::endl; | |
1505 | ✗ | std::cout << "kTanhMSR = " << kTanhMSR << "# elec kTanhMSR" << std::endl; | |
1506 | ✗ | std::cout << "vGate = " << vGate << "# elec vGate" << std::endl; | |
1507 | } | ||
1508 | |||
1509 | ✗ | else if(typeOfIonicModel=="fhn") { | |
1510 | ✗ | std::cout << "printIonicVar" << printIonicVar << "# elec printIonicVar" << std::endl; | |
1511 | ✗ | std::cout << "epsilon = " << epsilon << "# elec epsilon" << std::endl; | |
1512 | ✗ | std::cout << "beta = " << beta << "# elec beta" << std::endl; | |
1513 | ✗ | std::cout << "gammaEl = " << gammaEl << "# elec gammaEl" << std::endl; | |
1514 | ✗ | std::cout << "f0 = " << f0 << "# elec f0" << std::endl; | |
1515 | ✗ | std::cout << "alpha = " << alpha << "# alpha" << std::endl; | |
1516 | } | ||
1517 | ✗ | std::cout << "vMin = " << vMin << "# elec vMin" << std::endl; | |
1518 | ✗ | std::cout << "vMax = " << vMax << "# elec vMax" << std::endl; | |
1519 | ✗ | std::cout << "Am = " << Am << "# elec Am" << std::endl; | |
1520 | ✗ | std::cout << "Cm = " << Cm << "# elec Cm" << std::endl; | |
1521 | ✗ | std::cout << "extraFiberTensor = " << extraFiberTensor << "# elec extraFiberTensor" << std::endl; | |
1522 | ✗ | std::cout << "intraFiberTensor = " << intraFiberTensor << "# elec intraFiberTensor" << std::endl; | |
1523 | ✗ | std::cout << "extraTransvTensor = " << extraTransvTensor << "# elec extraTransvTensor" << std::endl; | |
1524 | ✗ | std::cout << "intraTransvTensor = " << intraTransvTensor << "# elec intraTransvTensor" << std::endl; | |
1525 | ✗ | std::cout << "extraFiberTensorAtria = " << extraFiberTensorAtria << "# elec extraFiberTensor" << std::endl; | |
1526 | ✗ | std::cout << "intraFiberTensorAtria = " << intraFiberTensorAtria << "# elec intraFiberTensor" << std::endl; | |
1527 | ✗ | std::cout << "extraTransvTensorAtria = " << extraTransvTensorAtria << "# elec extraTransvTensor" << std::endl; | |
1528 | ✗ | std::cout << "intraTransvTensorAtria = " << intraTransvTensorAtria << "# elec intraTransvTensor" << std::endl; | |
1529 | ✗ | std::cout << "extraFiberTensorVent = " << extraFiberTensorVent << "# elec extraFiberTensorVent" << std::endl; | |
1530 | ✗ | std::cout << "intraFiberTensorVent = " << intraFiberTensorVent << "# elec intraFiberTensorVent" << std::endl; | |
1531 | ✗ | std::cout << "extraTransvTensorVent = " << extraTransvTensorVent << "# elec extraTransvTensorVent" << std::endl; | |
1532 | ✗ | std::cout << "intraTransvTensorVent = " << intraTransvTensorVent << "# elec intraTransvTensorVent" << std::endl; | |
1533 | ✗ | if(monodomain==1) { | |
1534 | ✗ | std::cout << "monodomain model" << std::endl; | |
1535 | } else { | ||
1536 | ✗ | std::cout << "bidomain model" << std::endl; | |
1537 | } | ||
1538 | ✗ | std::cout << "sigmaThorax = " << sigmaThorax << "# elec sigmaThorax" << std::endl; | |
1539 | ✗ | std::cout << "sigmaLung = " << sigmaLung << "# elec sigmaLung" << std::endl; | |
1540 | ✗ | std::cout << "sigmaBone = " << sigmaBone << "# elec sigmaBone" << std::endl; | |
1541 | //elec - applied current | ||
1542 | ✗ | std::cout << "typeOfAppliedCurrent = " << typeOfAppliedCurrent << "# elec typeOfAppliedCurrent" << std::endl; | |
1543 | ✗ | std::cout << "typeOfAppliedCurrentExt = " << typeOfAppliedCurrentExt << "# elec typeOfAppliedCurrentExt" << std::endl; | |
1544 | ✗ | std::cout << "timePeriod = " << timePeriod << "# elec timePeriod" << std::endl; | |
1545 | ✗ | std::cout << "timePeriodVentricle = " << timePeriodVentricle << "# elec timePeriodVentricle" << std::endl; | |
1546 | ✗ | std::cout << "timePeriodAtria = " << timePeriodAtria << "# elec timePeriodAtria" << std::endl; | |
1547 | ✗ | if (typeOfAppliedCurrent=="multiple") { | |
1548 | ✗ | std::cout << "beatNumber = " << beatNumber << "# elec beatNumber" << std::endl; | |
1549 | ✗ | std::cout << "beatDecreasing = " << beatDecreasing << "# elec beatDecreasing" << std::endl; | |
1550 | } | ||
1551 | ✗ | std::cout << "delayStim: "; | |
1552 | ✗ | for (unsigned int i = 0; i < delayStim.size(); i++) | |
1553 | ✗ | std::cout << delayStim[i] << ", "; | |
1554 | ✗ | std::cout << std::endl; | |
1555 | ✗ | std::cout << "delayStimVentricles: "; | |
1556 | ✗ | for (unsigned int i = 0; i < delayStimVentricles.size(); i++) | |
1557 | ✗ | std::cout << delayStimVentricles[i] << ", "; | |
1558 | ✗ | std::cout << std::endl; | |
1559 | ✗ | std::cout << "stimTime = " << stimTime << "# elec stimTime" << std::endl; | |
1560 | ✗ | std::cout << "stimTimeLV = " << stimTimeLV << "# elec stimTimeLV" << std::endl; | |
1561 | ✗ | std::cout << "stimTimeRV = " << stimTimeRV << "# elec stimTimeRV" << std::endl; | |
1562 | //elec - infarct | ||
1563 | ✗ | std::cout << "hasInfarct = " << hasInfarct << "# elec hasInfarct" << std::endl; | |
1564 | ✗ | if (hasInfarct) { | |
1565 | ✗ | std::cout << "x_infarct = " << x_infarct << "# elec x_infarct" << std::endl; | |
1566 | ✗ | std::cout << "y_infarct = " << y_infarct << "# elec y_infarct" << std::endl; | |
1567 | ✗ | std::cout << "z_infarct = " << z_infarct << "# elec z_infarct" << std::endl; | |
1568 | ✗ | std::cout << "radius_infarct = " << radius_infarct << "# elec radius_infarct" << std::endl; | |
1569 | } | ||
1570 | //elec - BBB | ||
1571 | ✗ | if (typeOfAppliedCurrent=="BBB") { | |
1572 | ✗ | std::cout << "hasVentriclesBundleBrunchBlock" << hasVentriclesBundleBrunchBlock << "# elec hasVentriclesBundleBrunchBlock" << std::endl; | |
1573 | ✗ | std::cout << "sideOfBBB = " << sideOfBBB << "# elec sideOfBBB" << std::endl; | |
1574 | ✗ | std::cout << "BBBwithDelay = " << BBBwithDelay << "# elec BBBwithDelay" << std::endl; | |
1575 | ✗ | std::cout << "BBBwithAngleBlock = " << BBBwithAngleBlock << "# elec BBBwithAngleBlock" << std::endl; | |
1576 | ✗ | std::cout << "BBBDelayStim = " << BBBDelayStim << "# elec BBBDelayStim" << std::endl; | |
1577 | ✗ | std::cout << "angleIappBBB = " << angleIappBBB << "# elec angleIappBBB" << std::endl; | |
1578 | } | ||
1579 | //elec - Bachmann Bundle Block | ||
1580 | ✗ | if (hasPartialBachmannBundleBlock) { | |
1581 | ✗ | std::cout << "hasPartialBachmannBundleBlock = " << hasPartialBachmannBundleBlock << "# elec hasPartialBachmannBundleBlock" << std::endl; | |
1582 | ✗ | std::cout << "valueBBBlock = " << valueBBBlock << "# elec valueBBBlock" << std::endl; | |
1583 | } | ||
1584 | //elec - Kent Bundle | ||
1585 | ✗ | if (hasKentBundle) { | |
1586 | ✗ | std::cout << "hasKentBundle = " << hasKentBundle << "#elec hasKentBundle" << std::endl; | |
1587 | } | ||
1588 | //elec - Torsades de pointe | ||
1589 | ✗ | if (torsade) { | |
1590 | ✗ | std::cout << "torsade = " << torsade << "#elec torsade" << std::endl; | |
1591 | ✗ | std::cout << "torsadeTimeBegin = " << torsadeTimeBegin << "#elec torsadeTimeBegin" << std::endl; | |
1592 | ✗ | std::cout << "torsadeTimeEnd = " << torsadeTimeEnd << "#elec torsadeTimeEnd" << std::endl; | |
1593 | ✗ | std::cout << "tauCloseTorsade = " << tauCloseTorsade << "#elec tauCloseTorsade" << std::endl; | |
1594 | ✗ | std::cout << "tauCloseEndoTorsade = " << tauCloseEndoTorsade << "#elec tauCloseEndoTorsade" << std::endl; | |
1595 | ✗ | std::cout << "tauCloseCellTorsade = " << tauCloseCellTorsade << "#elec tauCloseCellTorsade" << std::endl; | |
1596 | ✗ | std::cout << "tauCloseEpiTorsade = " << tauCloseEpiTorsade << "#elec tauCloseEpiTorsade" << std::endl; | |
1597 | ✗ | std::cout << "tauCloseRVTorsade = " << tauCloseRVTorsade << "#elec tauCloseRVTorsade" << std::endl; | |
1598 | } | ||
1599 | //elec - ECG | ||
1600 | ✗ | std::cout << "writeECG = " << writeECG << "# elec writeECG" << std::endl; | |
1601 | ✗ | std::cout << "writeElectrodesMeas = " << writeElectrodesMeas << "# elec writeElectrodesMeas" << std::endl; | |
1602 | ✗ | std::cout << "writeMatrixECG = " << writeMatrixECG << "# elec writeMatrixECG" << std::endl; | |
1603 | ✗ | if(writeECG | writeElectrodesMeas | writeMatrixECG) { | |
1604 | ✗ | std::cout << "ECGmatchFile = " << ECGmatchFile << "# elec ECGmatchFile" << std::endl; | |
1605 | ✗ | std::cout << "ECGThoraxmatchFile = " << ECGThoraxmatchFile << "# elec ECGThoraxmatchFile" << std::endl; | |
1606 | ✗ | std::cout << "ECGmatrixFile = " << ECGmatrixFile << "# elec ECGmatrixFile" << std::endl; | |
1607 | ✗ | std::cout << "ECGfileName = " << ECGfileName << "# elec ECGfileName" << std::endl; | |
1608 | ✗ | std::cout << "ECGtabHeader = " << ECGtabHeader << "# elec ECGtabHeader" << std::endl; | |
1609 | ✗ | std::cout << "ECGcreateFigure = " << ECGcreateFigure << "# elec ECGcreateFigure" << std::endl; | |
1610 | } | ||
1611 | ✗ | std::cout << std::endl; | |
1612 | } | ||
1613 | |||
1614 | |||
1615 | 4 | std::cout << "[initialCondition]" << std::endl; | |
1616 | 4 | std::cout << "Initial condition imposed on " << valueInitCond.size() << " variables:" << std::endl; | |
1617 | |||
1618 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
|
4 | if (hasInitialCondition) { |
1619 | ✗ | for (std::size_t i = 0; i < valueInitCond.size(); i++) { | |
1620 | ✗ | std::cout << nameVariableInitCond[i] << " on components :" << componentInitCond[i] << ", with values : " << valueInitCond[i]<< std::endl; | |
1621 | } | ||
1622 | ✗ | std::cout << "restartSolution = " << restartSolution << std::endl; | |
1623 | ✗ | if (restartSolution) { | |
1624 | ✗ | std::cout << "restartSolutionDir = " << restartSolutionDir << std::endl; | |
1625 | ✗ | std::cout << "restartSolutionIter = " << restartSolutionIter << std::endl; | |
1626 | } | ||
1627 | ✗ | std::cout << "frequencyBackup = " << frequencyBackup << std::endl; | |
1628 | } else { | ||
1629 | 4 | std::cout << "no variable has imposed initial condition." << std::endl; | |
1630 | } | ||
1631 | |||
1632 | 4 | std::cout << "[boundary condition]" << std::endl; | |
1633 | 4 | std::cout << "Boundary condition applied by: "; | |
1634 |
1/4✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
4 | switch (essentialBoundaryConditionsMethod) { |
1635 | 4 | case 0: | |
1636 | 4 | std::cout << "non- symmetric pseudo-elimination. "; | |
1637 | 4 | break; | |
1638 | ✗ | case 1: | |
1639 | ✗ | std::cout << "symmetric pseudo-elimination."; | |
1640 | ✗ | break; | |
1641 | ✗ | case 2: | |
1642 | ✗ | std::cout << "penalization. "; | |
1643 | ✗ | break; | |
1644 | ✗ | default: | |
1645 | ✗ | FEL_ERROR("This method for boundary condition doesn't exist."); | |
1646 | break; | ||
1647 | } | ||
1648 | 4 | std::cout << "They are: \n"; | |
1649 | 4 | int cptValue = 0; | |
1650 | 4 | int start = 0; | |
1651 |
2/2✓ Branch 1 taken 8 times.
✓ Branch 2 taken 4 times.
|
12 | for (std::size_t i = 0; i < type.size(); i++) { |
1652 | 8 | std::cout << type[i] ; | |
1653 | 8 | std::cout << " for " << variable[i] ; | |
1654 | 8 | std::cout << " and on components: " << component[i]; | |
1655 | 8 | std::cout << " with value type: " << typeValue[i] ; | |
1656 |
1/2✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
|
8 | if ( label.size() > labelName.size() ) { |
1657 | 8 | std::cout << " on elements with labels: "; | |
1658 |
2/2✓ Branch 1 taken 8 times.
✓ Branch 2 taken 8 times.
|
16 | for (int j = 0; j<numLabel[i]; j++) |
1659 | 8 | std::cout << label[j+start] << " " ; | |
1660 | 8 | start +=numLabel[i]; | |
1661 | } else { | ||
1662 | ✗ | std::cout << " on elements with label name: "; | |
1663 | ✗ | for (int j = 0; j<numLabel[i]; j++) | |
1664 | ✗ | std::cout << labelName[j+start] << " ("<<label[j+start] <<") "; | |
1665 | ✗ | start += numLabel[i]; | |
1666 | } | ||
1667 |
1/2✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
|
8 | if (typeValue[i]=="Constant") { |
1668 | 8 | std::cout << " with value: \n"; | |
1669 |
2/2✓ Branch 2 taken 4 times.
✓ Branch 3 taken 4 times.
|
8 | if ( component[i] == "Comp1") { |
1670 | 4 | outstr << "on x:" << value[cptValue] << std::endl; | |
1671 | 4 | cptValue += 1; | |
1672 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
|
4 | } else if ( component[i] == "Comp2" ) { |
1673 | ✗ | outstr << "on y:" << value[cptValue] << std::endl; | |
1674 | ✗ | cptValue += 1; | |
1675 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
|
4 | } else if ( component[i] == "Comp3" ) { |
1676 | ✗ | outstr << "on z:" << value[cptValue] << std::endl; | |
1677 | ✗ | cptValue += 1; | |
1678 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
|
4 | } else if ( component[i] == "Comp12" ) { |
1679 | ✗ | outstr << "on x:" << value[cptValue] << ", on y:" << value[cptValue+1] << std::endl; | |
1680 | ✗ | cptValue += 2; | |
1681 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
|
4 | } else if ( component[i] == "Comp13" ) { |
1682 | ✗ | outstr << "on x: "<< value[cptValue] << ", on z:" << value[cptValue+1] << std::endl; | |
1683 | ✗ | cptValue += 2; | |
1684 |
1/2✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
|
4 | } else if ( component[i] == "Comp23" ) { |
1685 | ✗ | outstr << "on y: "<< value[cptValue] << ", on z:" << value[cptValue+1] << std::endl; | |
1686 | ✗ | cptValue += 2; | |
1687 |
1/2✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
|
4 | } else if ( component[i] == "Comp123" ) { |
1688 | 4 | outstr << "on x: "<< value[cptValue] << ", on y:" << value[cptValue+1] << " ,on z: " << value[cptValue+2]; | |
1689 | 4 | cptValue += 3; | |
1690 | ✗ | } else if ( component[i] == "CompNA" ) { | |
1691 | ✗ | outstr << value[cptValue]; | |
1692 | ✗ | cptValue += 1; | |
1693 | } else | ||
1694 | ✗ | FEL_ERROR("problem with components."); | |
1695 | } | ||
1696 | 8 | std::cout << std::endl; | |
1697 | } | ||
1698 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | if (lumpedModelBCLabel.size()>0) { |
1699 | 4 | std::cout << "and lumpedModelBC : \n"; | |
1700 |
2/2✓ Branch 1 taken 8 times.
✓ Branch 2 taken 4 times.
|
12 | for (std::size_t i = 0; i < lumpedModelBCLabel.size(); i++) { |
1701 | 8 | std::cout << "lumpedModelBC " << i+1 << " -> " ; | |
1702 | 8 | std::cout << "Type lumpedModelBC = " ; | |
1703 |
1/3✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
8 | switch (lumpedModelBCType[i]) { |
1704 | 8 | case 1: // RCR | |
1705 | 8 | std::cout<< "RCR or R" ; | |
1706 | 8 | break; | |
1707 | ✗ | case 2: // RC | |
1708 | ✗ | std::cout<< "RC" ; | |
1709 | ✗ | break; | |
1710 | } | ||
1711 | 8 | std::cout<< " // Algo lumpedModelBC = " ; | |
1712 |
1/3✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
8 | switch (lumpedModelBCAlgo[i]) { |
1713 | 8 | case 1: | |
1714 | 8 | std::cout<< "explicit" << std::endl; | |
1715 | 8 | break; | |
1716 | ✗ | case 2: | |
1717 | ✗ | std::cout<< "implicit" << std::endl; | |
1718 | ✗ | break; | |
1719 | } | ||
1720 | 8 | std::cout << " on elements with label name: " << lumpedModelBCLabel[i] << " // "; | |
1721 | 8 | std::cout << "Name = " << lumpedModelBCName[i] << " //" ; | |
1722 | 8 | std::cout<< "Rd = " << lumpedModelBC_Rdist[i] << " // " ; | |
1723 | 8 | std::cout<< "Rp = " << lumpedModelBC_Rprox[i] << " // " ; | |
1724 | 8 | std::cout<< "C = " << lumpedModelBC_C[i] << " // " ; | |
1725 | 8 | std::cout<< "Pv = " << lumpedModelBC_Pvenous[i] << " // " ; | |
1726 | 8 | std::cout<< "Pd0 = " << lumpedModelBC_Pdist_init[i] ; | |
1727 | 8 | std::cout << std::endl; | |
1728 | } | ||
1729 | } | ||
1730 | |||
1731 | 4 | std::cout << "Additionnal parameters: "; | |
1732 |
2/2✓ Branch 1 taken 4 times.
✓ Branch 2 taken 4 times.
|
8 | for (unsigned int i = 0; i < userParameter.size(); i++) |
1733 | 4 | std::cout << userParameter[i] << ", "; | |
1734 | 4 | std::cout << std::endl; | |
1735 | |||
1736 | 4 | std::cout << "alphaRobin -- Coeff in front of variable for Robin BC: "; | |
1737 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
|
4 | for (unsigned int i = 0; i < alphaRobin.size(); i++) |
1738 | ✗ | std::cout << alphaRobin[i] << ", "; | |
1739 | 4 | std::cout << std::endl; | |
1740 | |||
1741 | 4 | std::cout << "betaRobin -- Coeff of normal derivative for Robin BC: "; | |
1742 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
|
4 | for (unsigned int i = 0; i < betaRobin.size(); i++) |
1743 | ✗ | std::cout << betaRobin[i] << ", "; | |
1744 | 4 | std::cout << std::endl; | |
1745 | |||
1746 | |||
1747 | 4 | std::cout << "Coeff for Robin Normal BC: "; | |
1748 |
2/2✓ Branch 1 taken 4 times.
✓ Branch 2 taken 4 times.
|
8 | for (unsigned int i = 0; i < alphaRobinNormal.size(); i++) |
1749 | 4 | std::cout << alphaRobinNormal[i] << ", "; | |
1750 | 4 | std::cout << std::endl; | |
1751 | |||
1752 | |||
1753 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
|
4 | if ( nonLinearKoiterModel ) { |
1754 | ✗ | std::cout << " Strucutre model via a non Linear Koiter Membrane"<< std::endl; | |
1755 | } else { | ||
1756 | 4 | std::cout << " Strucutre model via a Linear Koiter Membrane"<< std::endl; | |
1757 | } | ||
1758 | 4 | std::cout <<"Penalization coefficient for EmbedFSI: "<<penValueForEmbedFSI<<std::endl; | |
1759 | 4 | std::cout <<"Data for EmbedFSI boundary condition: "<<std::endl; | |
1760 | 4 | std::cout <<" shell young modulus: "<<youngShell<<std::endl; | |
1761 | 4 | std::cout <<" fiber preStress: "<<preStressFibers<<std::endl; | |
1762 | 4 | std::cout <<" fiber Young modulus: "<<youngFibers<<std::endl; | |
1763 | 4 | std::cout <<" Density of fiber per EmbedFSI label: "; | |
1764 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
|
4 | for ( std::size_t i = 0; i< fiberDensity.size(); i++) { |
1765 | ✗ | std::cout<<fiberDensity[i]<<" "; | |
1766 | } | ||
1767 | 4 | std::cout<<std::endl; | |
1768 | 4 | std::cout <<" shell poisson coefficient: "<<poissonShell<<std::endl; | |
1769 | 4 | std::cout <<" density of the structure: "<<densityStructure<<std::endl; | |
1770 | 4 | std::cout <<" width of the shell: "<<widthShell<<std::endl; | |
1771 | 4 | std::cout <<" reference pressure: "<<outsidePressure<<std::endl; | |
1772 | 4 | std::cout <<" current case Test: "<<idCase<<std::endl; | |
1773 | 4 | std::cout <<" name of this simulation: "<<nameTest<<std::endl; | |
1774 | 4 | std::cout <<" incoming averaged pressure: "<<incomingPressure<<std::endl; | |
1775 | 4 | std::cout <<"shape param for pressure input: "<<propCardiacCycle<<std::endl; | |
1776 | 4 | std::cout <<std::endl; | |
1777 | 4 | std::cout <<"Parameters for autoregulation: "<<std::endl; | |
1778 | 4 | std::cout <<"Maximum active pressure: "<<maxT<<std::endl; | |
1779 | 4 | std::cout <<"Shape parameter defining the range: "<<q<<std::endl; | |
1780 | 4 | std::cout <<"Range of the regulation: [ "<<down<<" : "<<up<<" ] "<<std::endl; | |
1781 | 4 | std::cout <<"Nominal pressure value: "<<nominalPressure<<std::endl; | |
1782 | 4 | std::cout <<"Wheter you are regulating flow with outlet condition: "<<useRegulationInWindkessel<<std::endl; | |
1783 | 4 | std::cout <<"Proportion of total distal resistance due to capillaries and veins: "<<windkesselProp<<std::endl; | |
1784 | 4 | std::cout <<"Parameter for oulet regulation: "; | |
1785 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
|
4 | for ( std::size_t i = 0; i< lumpedModelBC_regParam.size(); i++) { |
1786 | ✗ | std::cout<<lumpedModelBC_regParam[i]<<" "; | |
1787 | } | ||
1788 | 4 | std::cout<<std::endl; | |
1789 | 4 | std::cout<<"id of the case where control is not used: "<<idControlFreeCase<<std::endl; | |
1790 | 4 | std::cout<<std::endl; | |
1791 | |||
1792 | 4 | std::cout << "cardiacOutput = " << cardiacOutput << std::endl; | |
1793 | 4 | std::cout << "heartRate = " << heartRate << std::endl; | |
1794 | 4 | std::cout << "[petsc section]"<< std::endl; | |
1795 | 4 | std::cout << "linearSolverVerbose" << linearSolverVerbose << std::endl; | |
1796 |
2/2✓ Branch 1 taken 4 times.
✓ Branch 2 taken 4 times.
|
8 | for (std::size_t i = 0; i < solver.size(); i++) { |
1797 | 4 | std::cout << "[petsc configuration for " << i << "th linearProblem]" << std::endl; | |
1798 | |||
1799 | 4 | std::cout << "Name of the solver: " << solver[i] << " # gmres bicgstab " << std::endl; | |
1800 | 4 | std::cout << "Name of the preconditioner: " << preconditioner[i] << std::endl; | |
1801 | 4 | std::cout << "Option for re-use of preconditioner : " << setPreconditionerOption[i] << std::endl; | |
1802 | 4 | std::cout << "Relative tolerance: " << relativeTolerance[i] << std::endl; | |
1803 | 4 | std::cout << "Absolute tolerance: " << absoluteTolerance[i] << std::endl; | |
1804 | 4 | std::cout << "Number maximum of iteration to solve the system: " << maxIteration[i] << std::endl; | |
1805 | 4 | std::cout << "Restart for gmres: " << gmresRestart[i] << std::endl; | |
1806 | 4 | std::cout << "Initialize solver with solution in previous timestep: " << initSolverWithPreviousSolution[i] << std::endl; | |
1807 | 4 | std::cout << std::endl; | |
1808 | } | ||
1809 | |||
1810 | 4 | std::cout << "[verdandi]" << std::endl; | |
1811 | 4 | std::cout << "Diagonal value of the backgroung error variance: " << stateErrorVarianceValue << std::endl; | |
1812 | 4 | std::cout << "Coefficient use on heat equation to do parameter assimilation "; | |
1813 | 4 | std::cout << "before laplacian matrix: " << Kparameter << std::endl; | |
1814 | 4 | std::cout << "Coefficient use on heat equation to do parameter assimilation "; | |
1815 | 4 | std::cout << "before source term: " << RHSparameter << std::endl; | |
1816 | 4 | std::cout << std::endl; | |
1817 | |||
1818 | // ElementFieldDynamicValue | ||
1819 | 4 | std::cout << "[elementFieldValueMap]" << std::endl; | |
1820 |
1/2✗ Branch 4 not taken.
✓ Branch 5 taken 4 times.
|
4 | for (auto it = elementFieldDynamicValueMap.begin(); it != elementFieldDynamicValueMap.end(); it++) { |
1821 | ✗ | it->second->display(); | |
1822 | ✗ | std::cout << std::endl; | |
1823 | } | ||
1824 | } | ||
1825 | 462 | } | |
1826 | |||
1827 | /***********************************************************************************/ | ||
1828 | /***********************************************************************************/ | ||
1829 | |||
1830 | ✗ | void UniqueFelisceParam::printHelp() { | |
1831 | ✗ | for (auto section = m_help.begin(); section != m_help.end (); ++section) { | |
1832 | ✗ | std::cout << "[" << section->first << "]\n\n"; | |
1833 | |||
1834 | ✗ | for (auto param = section->second.begin(); param != section->second.end(); ++param) | |
1835 | ✗ | std::cout << *param << std::endl; | |
1836 | } | ||
1837 | } | ||
1838 | |||
1839 | /***********************************************************************************/ | ||
1840 | /***********************************************************************************/ | ||
1841 | |||
1842 | 82 | ElementFieldDynamicValue* UniqueFelisceParam::elementFieldDynamicValue(const char* name) { | |
1843 |
2/4✓ Branch 2 taken 82 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 82 times.
✗ Branch 6 not taken.
|
82 | auto it = elementFieldDynamicValueMap.find(name); |
1844 | |||
1845 |
2/2✓ Branch 2 taken 72 times.
✓ Branch 3 taken 10 times.
|
82 | if (it == elementFieldDynamicValueMap.end()) { |
1846 | 72 | return nullptr; | |
1847 | |||
1848 | } else { | ||
1849 | 10 | return it->second; | |
1850 | } | ||
1851 | } | ||
1852 | |||
1853 | /***********************************************************************************/ | ||
1854 | /***********************************************************************************/ | ||
1855 | |||
1856 | 3720 | std::string UniqueFelisceParam::expandEnvironmentVariables( | |
1857 | const std::string datafile, const std::string section, | ||
1858 | const std::string variableName, const std::string variableValue) { | ||
1859 | 3720 | std::vector<std::string> allowed_envvar; | |
1860 |
1/2✓ Branch 1 taken 3720 times.
✗ Branch 2 not taken.
|
3720 | allowed_envvar.emplace_back("HOME"); |
1861 |
1/2✓ Branch 1 taken 3720 times.
✗ Branch 2 not taken.
|
3720 | allowed_envvar.emplace_back("FELISCE_DATA_DIR"); |
1862 |
1/2✓ Branch 1 taken 3720 times.
✗ Branch 2 not taken.
|
3720 | allowed_envvar.emplace_back("FELISCE_INRIA_DATA_DIR"); |
1863 |
1/2✓ Branch 1 taken 3720 times.
✗ Branch 2 not taken.
|
3720 | allowed_envvar.emplace_back("FELISCE_RESULT_DIR"); |
1864 | |||
1865 | // For now it's simpler to create the regex here (evaluated every time | ||
1866 | // the function is called). It's not time-consuming because will call | ||
1867 | // this function only a few time at the start of FELiScE. If the function | ||
1868 | // become called many times, the regex should become an attribute of | ||
1869 | // UniqueFelisceParam, evaluated in the constructors. | ||
1870 | |||
1871 | // A environment variable name is introduced by the dollar sign $, | ||
1872 | // has letter as first character, and then possibly multiple letters, | ||
1873 | // digits and underscores. | ||
1874 | // We extract the environment variable name without the dollar sign, | ||
1875 | // as well as the prefix and suffix (part of the path before and after | ||
1876 | // the environment variable. | ||
1877 | // Environment variable name may be enclosed in parentheses: $(...). | ||
1878 | // for example: path = "/path/to/$ENV_VAR/some/dir" | ||
1879 | // <-------> <-----><-------> | ||
1880 | // prefix envvar suffix | ||
1881 | std::regex environmentVariableRegex( | ||
1882 | "(.*)" // group 1: prefix: "/path/to/" | ||
1883 | "\\$" // dollar sign: "$" | ||
1884 | "\\([a-z]\\):\\([0-9]\\)" // group 2: One or zero opening parenthese | ||
1885 | "([a-zA-Z_][a-zA-Z0-9_]*)" // group 3: environment variable name: "ENV_VAR" | ||
1886 | "(.*)" // group 4: suffix: "/some/dir" | ||
1887 |
1/2✓ Branch 1 taken 3720 times.
✗ Branch 2 not taken.
|
3720 | ); |
1888 | |||
1889 | // Some debug info included in error messages. | ||
1890 |
1/2✓ Branch 1 taken 3720 times.
✗ Branch 2 not taken.
|
3720 | std::ostringstream errinfo; |
1891 | errinfo << "In data file <" << datafile << ">, " | ||
1892 | << "section <" << section << ">, " | ||
1893 | << "variable <" << variableName << "> " | ||
1894 |
12/24✓ Branch 1 taken 3720 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3720 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3720 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 3720 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 3720 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 3720 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3720 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 3720 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 3720 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 3720 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 3720 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 3720 times.
✗ Branch 35 not taken.
|
3720 | << "has value <" << variableValue << "> "; |
1895 | |||
1896 | 3720 | std::match_results<std::string::const_iterator> results; | |
1897 |
1/2✓ Branch 1 taken 3720 times.
✗ Branch 2 not taken.
|
3720 | std::ostringstream msg; |
1898 |
1/2✓ Branch 1 taken 3720 times.
✗ Branch 2 not taken.
|
3720 | std::string pathExpanded = variableValue; |
1899 | 3720 | std::string prefix, envvar, suffix; | |
1900 | char* envvar_value_pchar; | ||
1901 | unsigned int iter; | ||
1902 | 3720 | bool normal_loop_exit = false; | |
1903 | |||
1904 |
1/2✓ Branch 0 taken 3720 times.
✗ Branch 1 not taken.
|
3720 | for (iter=0 ; iter<=50 ; iter++) { |
1905 | // Continue until all environment variables have been expanded. | ||
1906 |
2/4✓ Branch 1 taken 3720 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 3720 times.
✗ Branch 4 not taken.
|
3720 | if (! std::regex_search(pathExpanded, results, environmentVariableRegex)) { |
1907 | 3720 | normal_loop_exit = true; | |
1908 | 3720 | break; | |
1909 | } | ||
1910 | |||
1911 | // Extract parts of the regular expression match. | ||
1912 | ✗ | prefix = results[1]; | |
1913 | ✗ | envvar = results[3]; | |
1914 | ✗ | suffix = results[4]; | |
1915 | |||
1916 | // Error if env var not allowed. | ||
1917 | ✗ | if (! vector_string_contains(allowed_envvar,envvar) ) { | |
1918 | msg << "Not allowed environment variable " | ||
1919 | << "<" << envvar << ">. " | ||
1920 | ✗ | << errinfo.str() | |
1921 | << "which contains environment variable <" << envvar << ">, " | ||
1922 | ✗ | << "but only those environment variables are allowed: "; | |
1923 | ✗ | for (unsigned int i=0 ; i<allowed_envvar.size()-1 ; i++) { | |
1924 | ✗ | msg << "<" << allowed_envvar[i] << ">, "; | |
1925 | } | ||
1926 | ✗ | msg << "<" << allowed_envvar[allowed_envvar.size()-1] << ">."; | |
1927 | ✗ | FEL_ERROR(msg.str().c_str()); | |
1928 | } | ||
1929 | |||
1930 | // Error if env var not defined. | ||
1931 | ✗ | envvar_value_pchar = getenv(envvar.c_str()); | |
1932 | ✗ | if (envvar_value_pchar==nullptr) { | |
1933 | msg << "Undefined environment variable " | ||
1934 | << "<" << envvar << ">. " | ||
1935 | ✗ | << errinfo.str() | |
1936 | << "which contains environment variable <" << envvar << ">, " | ||
1937 | ✗ | << "which is not defined."; | |
1938 | ✗ | FEL_ERROR(msg.str().c_str()); | |
1939 | } | ||
1940 | |||
1941 | // Error if env var contains only white characters. | ||
1942 | ✗ | std::string envvar_value = (std::string) envvar_value_pchar; | |
1943 | ✗ | if (envvar_value.find_first_not_of("\t\n ") == std::string::npos) { | |
1944 | msg << "Empty environment variable " | ||
1945 | << "<" << envvar << ">. " | ||
1946 | ✗ | << errinfo.str() | |
1947 | << "which contains environment variable <" << envvar << ">, " | ||
1948 | ✗ | << "which contains only white charaters."; | |
1949 | |||
1950 | ✗ | FEL_ERROR(msg.str().c_str()); | |
1951 | } | ||
1952 | ✗ | pathExpanded = prefix + envvar_value + suffix; | |
1953 | } | ||
1954 | |||
1955 | // Error if infinite loop (should be because by a recursive | ||
1956 | // situation: FOO='$FOO') | ||
1957 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 3720 times.
|
3720 | if (! normal_loop_exit) { |
1958 | msg << "Infinite loop. " | ||
1959 | ✗ | << errinfo.str() | |
1960 | << "which caused an infinte loop: " | ||
1961 | ✗ | << "Does an environment variable reference itself?"; | |
1962 | ✗ | FEL_ERROR(msg.str().c_str()); | |
1963 | } | ||
1964 | |||
1965 | // Error if of a miss-formatted environment variable. | ||
1966 |
3/6✓ Branch 2 taken 3720 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 3720 times.
✗ Branch 6 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 3720 times.
|
3720 | if (string_contains_substring(pathExpanded,"$")) { |
1967 | msg << "Miss-formatted environment variable. " | ||
1968 | ✗ | << errinfo.str() | |
1969 | << "Which contains '$' sign, but the syntax does not " | ||
1970 | ✗ | << "match a regular expression."; | |
1971 | ✗ | FEL_ERROR(msg.str().c_str()); | |
1972 | } | ||
1973 | |||
1974 | 7440 | return pathExpanded; | |
1975 | 3720 | } | |
1976 | } | ||
1977 |