GCC Code Coverage Report


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