FEMTIC
AnalysisControl.h
Go to the documentation of this file.
1 //-------------------------------------------------------------------------------------------------------
2 // The MIT License (MIT)
3 //
4 // Copyright (c) 2021 Yoshiya Usui
5 //
6 // Permission is hereby granted, free of charge, to any person obtaining a copy
7 // of this software and associated documentation files (the "Software"), to deal
8 // in the Software without restriction, including without limitation the rights
9 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 // copies of the Software, and to permit persons to whom the Software is
11 // furnished to do so, subject to the following conditions:
12 //
13 // The above copyright notice and this permission notice shall be included in all
14 // copies or substantial portions of the Software.
15 //
16 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 // SOFTWARE.
23 //-------------------------------------------------------------------------------------------------------
24 #ifndef DBLDEF_ANALYSIS_CONTROL
25 #define DBLDEF_ANALYSIS_CONTROL
26 
27 #include <stdio.h>
28 #include <stdlib.h>
29 #include <time.h>
30 
31 #include <fstream>
32 #include <iostream>
33 #include <set>
34 #include <string>
35 
36 #include "Forward3D.h"
40 #include "Inversion.h"
41 #include "MeshData.h"
42 
43 // Class of Analysis Control
45  public:
46  // Type of boundary condition at the bottom of the model
48  0; // Boundary condition on which one dimensional relation holds for the EM field at the
49  // bottom
51  1; // Boundary condition on which electric field is null at the bottom
52 
53  // IDs of output parameter which can be outputed to VTK file
61  };
62 
63  // The way of numbering
64  enum numbering {
66  XYZ = 0,
67  YZX = 1,
68  ZXY = 2,
69  };
70 
71  // Flags specifing which backward or forward element is used for calculating EM field
75  };
76 
77  // Flags specifing the way of creating roughning matrix
83  EndOfTypeOfRoughningMatrix // This must be written at the end
84  };
85 
86  // Type of galvanic distortion
93  };
94 
95  // Flag of convergence behaviors
100  };
101 
105  };
106 
107  // Type of electric field used to calculate response functions
111  };
112 
113  // Type of owner element
117  };
118 
119  // Option about treatment of apparent resistivity & phase
123  };
124 
125  // Type of data space algorithm
129  };
130 
131 #ifdef _ANISOTOROPY
132  // Type of anisotropy
133  enum TypeOfAnisotropy {
134  NO_ANISOTROPY = 0,
135  AXIAL_ANISOTROPY = 1,
136  };
137 #endif
138 
139  // Return the the instance of the class
140  static AnalysisControl* getInstance();
141 
142  // Run analysis
143  void run();
144 
145  // Calculate and output elapsed time
146  std::string outputElapsedTime() const;
147 
148  // Get type of boundary condition at the bottom of the model
149  int getBoundaryConditionBottom() const;
150 
151  // Get order of finite element
152  int getOrderOfFiniteElement() const;
153 
154  // Get process ID
155  int getMyPE() const;
156 
157  // Get total number of processes
158  int getTotalPE() const;
159 
160  // Get total number of threads
161  int getNumThreads() const;
162 
163  // Get flag specifing either incore or out-of-core version of PARDISO is used
164  int getModeOfPARDISO() const;
165 
166  // Get flag specifing the way of numbering of edges or nodess
167  int getNumberingMethod() const;
168 
169  // Get flag specifing whether the results of 2D forward calculations are outputed
170  bool getIsOutput2DResult() const;
171 
172  // Get initial iteration number
173  int getIterationNumInit() const;
174 
175  // Get current iteration number
176  int getIterationNumCurrent() const;
177 
178  // Get maximum iteration number
179  int getIterationNumMax() const;
180 
181  // Get member variable specifing which backward or forward element is used for calculating EM
182  // field
183  const UseBackwardOrForwardElement getUseBackwardOrForwardElement() const;
184 
185  // Get whether the specified parameter is outputed to VTK file
186  bool doesOutputToVTK(const int paramID) const;
187 
188  // Get trade-off parameter for resistivity value
190 
191  // Get trade-off parameter for distortion matrix complexity
193 
194  // Get trade-off parameter for gains of distortion matrix
196 
197  // Get trade-off parameter for rotations of distortion matrix
199 
200  // Get current factor of step length damping
201  double getStepLengthDampingFactorCur() const;
202 
203  // Get maximum number of cutbacks.
204  int getNumCutbackMax() const;
205 
206  // Get flag whether memory of solver is held after forward calculation
207  bool holdMemoryForwardSolver() const;
208 
209  // Get type of mesh
210  int getTypeOfMesh() const;
211 
212  // Get flag specifing whether distortion matrix is estimated or not
213  bool estimateDistortionMatrix() const;
214 
215  // Get type of galvanic distortion
216  int getTypeOfDistortion() const;
217 
218  // Get flag specifing the way of creating roughning matrix
219  int geTypeOfRoughningMatrix() const;
220 
221  // Get type of the electric field used to calculate response functions
222  int getTypeOfElectricField() const;
223 
224  // Flag specifing whether type of the electric field of each site is specified indivisually
226 
227  // Tyep of owner element of observation sites
228  int getTypeOfOwnerElement() const;
229 
230  // Flag specifing whether the type of owner element of each site is specified indivisually
232 
233  // Get division number of right-hand sides at solve phase in forward calculation
235 
236  // Get division number of right-hand sides at solve phase in inversion
238 
239  // Get weighting factor of alpha
240  double getAlphaWeight(const int iDir) const;
241 
242  // Get flag specifing whether the coefficient matrix of the normal equation is positive definite
243  // or not
245 
246  // Get flag specifing whether output file for paraview is binary or ascii
247  bool writeBinaryFormat() const;
248 
249  // Get inversion method
250  int getInversionMethod() const;
251 
252  // Get flag specifing whether observation point is moved to the horizontal center of the element
253  // including it
254  int getIsObsLocMovedToCenter() const;
255 
256  // Get option about treatment of apparent resistivity & phase
258 
259  // Get flag specifing whether roughening matrix is outputted
260  bool getIsRougheningMatrixOutputted() const;
261 
262  // Get type of data space algorithm
263  int getTypeOfDataSpaceAlgorithm() const;
264 
265  // Get flag specifing whether Lp optimization with difference filter is used
266  bool useDifferenceFilter() const;
267 
268  // Get degree of Lp optimization
269  int getDegreeOfLpOptimization() const;
270 
271  // Get lower limit of the difference of log10(rho) for Lp optimization
273 
274  // Get upper limit of the difference of log10(rho) for Lp optimization
276 
277  // Get maximum iteration number of IRWLS for Lp optimization
279 
280  // Get threshold value for deciding convergence about IRWLS for Lp optimization
281  double getThresholdIRWLSForLpOptimization() const;
282 
283 #ifdef _ANISOTOROPY
284  // Get type of anisotropy
285  int getTypeOfAnisotropy() const;
286 
287  // Get flag specifing whether anisotropy of conductivity is taken into account
288  bool isAnisotropyConsidered() const;
289 #endif
290 
291  // Get pointer to the object of class MeshData
292  const MeshData* getPointerOfMeshData() const;
293 
294  // Get pointer to the object of class MeshDataBrickElement
296 
297  // Get pointer to the object of class MeshDataTetraElement
299 
300  // Get pointer to the object of class MeshDataNonConformingHexaElement
302 
303  private:
304  // Constructer
305  AnalysisControl();
306 
307  // Destructer
309 
310  // Copy constructer
312  std::cerr << "Error : Copy constructer of the class AnalysisControl is not implemented."
313  << std::endl;
314  exit(1);
315  };
316 
317  // Copy assignment operator
319  std::cerr << "Error : Assignment operator of the class AnalysisControl is not implemented."
320  << std::endl;
321  exit(1);
322  }
323 
324  // Read analysis control data from "control.dat"
325  void inputControlData();
326 
327  // Flag specifing whether each parameter has already read from control.dat
365 #ifdef _ANISOTOROPY
366  ANISOTROPY,
367 #endif
368  EndOfControlParameterID // This must be written at the end of controlParameterID
369  };
370 
371  // Total number of the parameters written in control.dat
373 
374  // Process ID
375  int m_myPE;
376 
377  // Total number of processes
379 
380  // Total number of threads
382 
383  // Type of boundary condition at the bottom of the model
385 
386  // Order of finite element
388 
389  // Flag specifing either incore or out-of-core version of PARDISO is used
391 
392  // Flag specifing the way of numbering of edges or nodess
394 
395  // Parameters to be outputed to the file for visualization
397 
398  // Flag specifing whether the results of 2D forward calculations are outputed
400 
402  // bool m_performForwardOnly;
403 
404  // Trade-off parameter for resistivity value
406 
407  // Trade-off parameter for distortion matrix complexity
409 
410  // Trade-off parameter for gains of distortion matrix
412 
413  // Trade-off parameter for rotation of distortion matrix
415 
416  // The time the class instanced
417  time_t m_startTime;
418 
419  // Member variable specifing which backward or forward element is used for calculating EM field
421 
422  // Initial iteration number
424 
425  // Maximun iteration number
427 
428  // Current iteration number
430 
431  // Threshold value for decreasing
433 
434  // Criterion of decrease ratio [%].
435  // Iteration If the objective functions and its components decrease by more than criterion,
436  // the inversion is considered to be converged.
438 
439  // Current factor of step length damping
441 
442  // Minimum factor of step length damping
444 
445  // Maximum factor of step length damping
447 
448  // If value of objective function decrease specified times in a row, factor of step length
449  // damping is increases.
451 
452  // Factor decreasing step length damping factor
454 
455  // Factor increasing step length damping factor
457 
458  // Maximum number of cutbacks.
460 
461  // Hold memory of solver after forward calculation
463 
464  // Pointer to the object of class Forward3DBrickElement0thOrder
466 
467  // Pointer to the object of class Forward3DTetraElement0thOrder
469 
470  // Pointer to the object of class Forward3DNonConformingHexaElement0thOrder
472 
473  // Pointer to the object of class Inversion
475 
476  // Value of objective functional of previous iteration
478 
479  // Data misifit of previous iteration
481 
482  // Model roughness of previous iteration
484 
485  // Norm of distortion matrix differences of previous iteration
487 
488  // Norm of the gains of distortion matrices of previous iteration
490 
491  // Norm of the rotations of distortion matrices of previous iteration
493 
494  // Number of consecutive iteration of which the value of objective functional decrase from the
495  // one of previous iteration
497 
498  // Flag specifing whether increment iteration without cutback
500 
501  // Maximum value of the memory used by out-of-core mode of PARDISO
503 
504  // Type of mesh
506 
507  // Flag specifing the way of creating roughning matrix
509 
510  // Type of the electric field used to calculated response functions
512 
513  // Flag specifing whether type of the electric field of each site is specified indivisually
515 
516  // Type of owner element of observation sites
518 
519  // Flag specifing whether the owner element (upper or lower) of each site is specified
520  // indivisually
522 
523  // Division number of right-hand sides at solve phase in forward calculation
525 
526  // Division number of right-hand sides at solve phase in inversion
528 
529  // Flag specifing whether output file for paraview is binary or ascii
531 
532  // Type of galvanic distortion
534 
535  // Weighting factor of alpha
536  double m_alphaWeight[3];
537 
538  // Flag specifing whether the coefficient matrix of the normal equation is positive definite or
539  // not
541 
542  // Inversion method
544 
545  // Flag specifing whether the observation point is moved to the center of the element
547 
548  // Option about treatment of apparent resistivity & phase
550 
551  // Flag specifing whether roughening matrix is outputed
553 
554  // Type of data space algorithm
556 
557  // Flag specifing whether Lp optimization with difference filter is used
559 
560  // Degree of Lp optimization
562 
563  // Lower limit of the difference of log10(rho) for Lp optimization
565 
566  // Upper limit of the difference of log10(rho) for Lp optimization
568 
569  // Maximum iteration number of IRWLS for Lp optimization
571 
572  // Threshold value for deciding convergence about IRWLS for Lp optimization
574 
575 #ifdef _ANISOTOROPY
576  // Type of anisotropy
577  int m_typeOfAnisotropy;
578 #endif
579 
580  // Calculate forward computation
581  void calcForwardComputation(const int iter);
582 
583  // Adjust factor of step length damping and output convergence data to cnv file
585  const int iCutbackCur);
586 
587  bool checkConvergence(const double objectFunctionalCur);
588 
589  bool checkConvergence(const double objectFunctionalCur, const double dataMisft,
590  const double modelRoughness, const double normDist1 = 0.0,
591  const double normDist2 = 0.0);
592 
593  // Return flag specifing whether sensitivity is calculated or not
594  bool doesCalculateSensitivity(const int iter) const;
595 
596  // Get pointer to the object of class Forward3D
598 };
599 
600 #endif
Definition: AnalysisControl.h:44
bool doesCalculateSensitivity(const int iter) const
Definition: AnalysisControl.cpp:2398
int getTypeOfDistortion() const
Definition: AnalysisControl.cpp:1877
const MeshDataBrickElement * getPointerOfMeshDataBrickElement() const
Definition: AnalysisControl.cpp:1994
bool m_continueWithoutCutback
Definition: AnalysisControl.h:499
Inversion * m_ptrInversion
Definition: AnalysisControl.h:474
double m_objectFunctionalPre
Definition: AnalysisControl.h:477
int m_orderOfFiniteElement
Definition: AnalysisControl.h:387
ConvergenceBehaviors
Definition: AnalysisControl.h:96
@ GO_TO_NEXT_ITERATION
Definition: AnalysisControl.h:98
@ DURING_RETRIALS
Definition: AnalysisControl.h:97
@ INVERSIN_CONVERGED
Definition: AnalysisControl.h:99
double m_normOfRotationsPre
Definition: AnalysisControl.h:492
bool isTypeOfElectricFieldSetIndivisually() const
Definition: AnalysisControl.cpp:1886
static const int BOUNDARY_BOTTOM_PERFECT_CONDUCTOR
Definition: AnalysisControl.h:50
double m_tradeOffParameterForResistivityValue
Definition: AnalysisControl.h:405
double m_factorDecreasingStepLength
Definition: AnalysisControl.h:453
int getTypeOfMesh() const
Definition: AnalysisControl.cpp:1869
int m_totalPE
Definition: AnalysisControl.h:378
Forward3DNonConformingHexaElement0thOrder * m_ptrForward3DNonConformingHexaElement0thOrder
Definition: AnalysisControl.h:471
bool m_useDifferenceFilter
Definition: AnalysisControl.h:558
BackwardOrForwardElement
Definition: AnalysisControl.h:72
@ BACKWARD_ELEMENT
Definition: AnalysisControl.h:73
@ FORWARD_ELEMENT
Definition: AnalysisControl.h:74
void inputControlData()
Definition: AnalysisControl.cpp:483
double m_normOfDistortionMatrixDifferencesPre
Definition: AnalysisControl.h:486
bool m_isObsLocMovedToCenter
Definition: AnalysisControl.h:546
int getIterationNumCurrent() const
Definition: AnalysisControl.cpp:1785
int m_numOfIterIncreaseStepLength
Definition: AnalysisControl.h:450
int m_typeOfDataSpaceAlgorithm
Definition: AnalysisControl.h:555
void run()
Definition: AnalysisControl.cpp:168
int getDivisionNumberOfMultipleRHSInForward() const
Definition: AnalysisControl.cpp:1899
int m_iterationNumMax
Definition: AnalysisControl.h:426
int m_myPE
Definition: AnalysisControl.h:375
int m_maxIterationIRWLSForLpOptimization
Definition: AnalysisControl.h:570
bool m_binaryOutput
Definition: AnalysisControl.h:530
bool isTypeOfOwnerElementSetIndivisually() const
Definition: AnalysisControl.cpp:1894
AnalysisControl(const AnalysisControl &rhs)
Definition: AnalysisControl.h:311
const MeshDataNonConformingHexaElement * getPointerOfMeshDataNonConformingHexaElement() const
Definition: AnalysisControl.cpp:2017
const MeshData * getPointerOfMeshData() const
Definition: AnalysisControl.cpp:1984
int getIterationNumMax() const
Definition: AnalysisControl.cpp:1788
double getLowerLimitOfDifflog10RhoForLpOptimization() const
Definition: AnalysisControl.cpp:1950
bool checkConvergence(const double objectFunctionalCur)
Definition: AnalysisControl.cpp:2339
double m_modelRoughnessPre
Definition: AnalysisControl.h:483
int getTotalPE() const
Definition: AnalysisControl.cpp:1767
TypeOfDataSpaceAlgorithm
Definition: AnalysisControl.h:126
@ NEW_DATA_SPACE_ALGORITHM
Definition: AnalysisControl.h:127
@ NEW_DATA_SPACE_ALGORITHM_USING_INV_RTR_MATRIX
Definition: AnalysisControl.h:128
Forward3DBrickElement0thOrder * m_ptrForward3DBrickElement0thOrder
Definition: AnalysisControl.h:465
Forward3D * getPointerOfForward3D() const
Definition: AnalysisControl.cpp:2403
double m_dataMisfitPre
Definition: AnalysisControl.h:480
bool getIsOutput2DResult() const
Definition: AnalysisControl.cpp:1779
int m_iterationNumCurrent
Definition: AnalysisControl.h:429
int geTypeOfRoughningMatrix() const
Definition: AnalysisControl.cpp:1880
int m_degreeOfLpOptimization
Definition: AnalysisControl.h:561
bool doesOutputToVTK(const int paramID) const
Definition: AnalysisControl.cpp:1825
const MeshDataTetraElement * getPointerOfMeshDataTetraElement() const
Definition: AnalysisControl.cpp:2005
void calcForwardComputation(const int iter)
Definition: AnalysisControl.cpp:2029
double m_thresholdIRWLSForLpOptimization
Definition: AnalysisControl.h:573
int m_numThreads
Definition: AnalysisControl.h:381
double m_stepLengthDampingFactorCur
Definition: AnalysisControl.h:440
int getApparentResistivityAndPhaseTreatmentOption() const
Definition: AnalysisControl.cpp:1931
double m_tradeOffParameterForDistortionGain
Definition: AnalysisControl.h:411
double m_thresholdValueForDecreasing
Definition: AnalysisControl.h:432
double getStepLengthDampingFactorCur() const
Definition: AnalysisControl.cpp:1858
double getTradeOffParameterForDistortionMatrixComplexity() const
Definition: AnalysisControl.cpp:1839
double m_upperLimitOfDifflog10RhoForLpOptimization
Definition: AnalysisControl.h:567
int getBoundaryConditionBottom() const
Definition: AnalysisControl.cpp:1758
double m_lowerLimitOfDifflog10RhoForLpOptimization
Definition: AnalysisControl.h:564
int getNumThreads() const
Definition: AnalysisControl.cpp:1770
int m_numConsecutiveIterFunctionalDecreasing
Definition: AnalysisControl.h:496
int m_modeOfPARDISO
Definition: AnalysisControl.h:390
const UseBackwardOrForwardElement getUseBackwardOrForwardElement() const
Definition: AnalysisControl.cpp:1819
double m_tradeOffParameterForDistortionMatrixComplexity
Definition: AnalysisControl.h:408
int m_apparentResistivityAndPhaseTreatmentOption
Definition: AnalysisControl.h:549
int getTypeOfOwnerElement() const
Definition: AnalysisControl.cpp:1891
int getNumberingMethod() const
Definition: AnalysisControl.cpp:1776
double m_alphaWeight[3]
Definition: AnalysisControl.h:536
int m_inversionMethod
Definition: AnalysisControl.h:543
int m_numberingMethod
Definition: AnalysisControl.h:393
numbering
Definition: AnalysisControl.h:64
@ ZXY
Definition: AnalysisControl.h:68
@ NOT_ASSIGNED
Definition: AnalysisControl.h:65
@ XYZ
Definition: AnalysisControl.h:66
@ YZX
Definition: AnalysisControl.h:67
bool m_positiveDefiniteNormalEqMatrix
Definition: AnalysisControl.h:540
static const int BOUNDARY_BOTTOM_ONE_DIMENSIONAL
Definition: AnalysisControl.h:47
int getMyPE() const
Definition: AnalysisControl.cpp:1764
double getTradeOffParameterForGainsOfDistortionMatrix() const
Definition: AnalysisControl.cpp:1845
AnalysisControl::ConvergenceBehaviors adjustStepLengthDampingFactor(const int iterCur, const int iCutbackCur)
Definition: AnalysisControl.cpp:2098
int m_boundaryConditionBottom
Definition: AnalysisControl.h:384
double m_stepLengthDampingFactorMin
Definition: AnalysisControl.h:443
int getTypeOfDataSpaceAlgorithm() const
Definition: AnalysisControl.cpp:1941
bool holdMemoryForwardSolver() const
Definition: AnalysisControl.cpp:1866
int getIsObsLocMovedToCenter() const
Definition: AnalysisControl.cpp:1928
std::string outputElapsedTime() const
Definition: AnalysisControl.cpp:1747
bool m_holdMemoryForwardSolver
Definition: AnalysisControl.h:462
int getOrderOfFiniteElement() const
Definition: AnalysisControl.cpp:1761
int m_typeOfMesh
Definition: AnalysisControl.h:505
bool writeBinaryFormat() const
Definition: AnalysisControl.cpp:1921
double getUpperLimitOfDifflog10RhoForLpOptimization() const
Definition: AnalysisControl.cpp:1955
bool m_isTypeOfOwnerElementSetIndivisually
Definition: AnalysisControl.h:521
double getAlphaWeight(const int iDir) const
Definition: AnalysisControl.cpp:1909
int m_typeOfOwnerElement
Definition: AnalysisControl.h:517
int m_maxMemoryPARDISO
Definition: AnalysisControl.h:502
int m_typeOfRoughningMatrix
Definition: AnalysisControl.h:508
bool getPositiveDefiniteNormalEqMatrix() const
Definition: AnalysisControl.cpp:1916
UseBackwardOrForwardElement m_useBackwardOrForwardElement
Definition: AnalysisControl.h:420
bool useDifferenceFilter() const
Definition: AnalysisControl.cpp:1944
int getTypeOfElectricField() const
Definition: AnalysisControl.cpp:1883
int m_iterationNumInit
Definition: AnalysisControl.h:423
~AnalysisControl()
Definition: AnalysisControl.cpp:147
AppResPhaseTreatmentOption
Definition: AnalysisControl.h:120
@ USE_Z_IF_SIGN_OF_RE_Z_DIFFER
Definition: AnalysisControl.h:122
@ NO_SPECIAL_TREATMENT_APP_AND_PHASE
Definition: AnalysisControl.h:121
int getDegreeOfLpOptimization() const
Definition: AnalysisControl.cpp:1947
AnalysisControl & operator=(const AnalysisControl &rhs)
Definition: AnalysisControl.h:318
bool m_isOutput2DResult
Definition: AnalysisControl.h:399
int m_divisionNumberOfMultipleRHSInInversion
Definition: AnalysisControl.h:527
double getThresholdIRWLSForLpOptimization() const
Definition: AnalysisControl.cpp:1965
double m_normOfGainsPre
Definition: AnalysisControl.h:489
int m_numCutbackMax
Definition: AnalysisControl.h:459
AnalysisControl()
Definition: AnalysisControl.cpp:59
int getDivisionNumberOfMultipleRHSInInversion() const
Definition: AnalysisControl.cpp:1904
Forward3DTetraElement0thOrder * m_ptrForward3DTetraElement0thOrder
Definition: AnalysisControl.h:468
int getNumCutbackMax() const
Definition: AnalysisControl.cpp:1863
int getInversionMethod() const
Definition: AnalysisControl.cpp:1924
int m_typeOfElectricField
Definition: AnalysisControl.h:511
int m_divisionNumberOfMultipleRHSInForward
Definition: AnalysisControl.h:524
double getTradeOffParameterForResistivityValue() const
Definition: AnalysisControl.cpp:1834
int getModeOfPARDISO() const
Definition: AnalysisControl.cpp:1773
int getMaxIterationIRWLSForLpOptimization() const
Definition: AnalysisControl.cpp:1960
int getIterationNumInit() const
Definition: AnalysisControl.cpp:1782
controlParameterID
Definition: AnalysisControl.h:328
@ APP_PHS_OPTION
Definition: AnalysisControl.h:362
@ STEP_LENGTH
Definition: AnalysisControl.h:342
@ BOUNDARY_CONDITION_BOTTOM
Definition: AnalysisControl.h:329
@ DATA_SPACE_METHOD
Definition: AnalysisControl.h:364
@ FWD_SOLVER
Definition: AnalysisControl.h:331
@ MOVE_OBS_LOC
Definition: AnalysisControl.h:360
@ DIV_NUM_RHS_INV
Definition: AnalysisControl.h:348
@ NUM_THREADS
Definition: AnalysisControl.h:330
@ EndOfControlParameterID
Definition: AnalysisControl.h:368
@ ITERATION
Definition: AnalysisControl.h:338
@ INV_MAT_POSITIVE_DEFINITE
Definition: AnalysisControl.h:353
@ OUTPUT_OPTION
Definition: AnalysisControl.h:335
@ BOUNDS_DIST_THLD
Definition: AnalysisControl.h:357
@ DIV_NUM_RHS_FWD
Definition: AnalysisControl.h:347
@ IDW
Definition: AnalysisControl.h:358
@ HOLD_FWD_MEM
Definition: AnalysisControl.h:351
@ DISTORTION
Definition: AnalysisControl.h:344
@ MEM_LIMIT
Definition: AnalysisControl.h:332
@ OUTPUT_ROUGH_MATRIX
Definition: AnalysisControl.h:363
@ BOTTOM_RESISTIVITY
Definition: AnalysisControl.h:354
@ ELEC_FIELD
Definition: AnalysisControl.h:346
@ ROUGH_MATRIX
Definition: AnalysisControl.h:345
@ SMALL_VALUE
Definition: AnalysisControl.h:359
@ BOTTOM_ROUGHNING_FACTOR
Definition: AnalysisControl.h:355
@ DECREASE_THRESHOLD
Definition: AnalysisControl.h:339
@ RETRIAL
Definition: AnalysisControl.h:341
@ MESH_TYPE
Definition: AnalysisControl.h:343
@ TRADE_OFF_PARAM
Definition: AnalysisControl.h:337
@ CONVERGE
Definition: AnalysisControl.h:340
@ NUMBERING_METHOD
Definition: AnalysisControl.h:334
@ OUTPUT_2D_RESULTS
Definition: AnalysisControl.h:336
@ OWNER_ELEMENT
Definition: AnalysisControl.h:361
@ RESISTIVITY_BOUNDS
Definition: AnalysisControl.h:349
@ OUTPUT_PARAM
Definition: AnalysisControl.h:333
@ INV_METHOD
Definition: AnalysisControl.h:356
@ OFILE_TYPE
Definition: AnalysisControl.h:350
@ ALPHA_WEIGHT
Definition: AnalysisControl.h:352
TypeOfDistortion
Definition: AnalysisControl.h:87
@ ESTIMATE_GAINS_ONLY
Definition: AnalysisControl.h:92
@ DISTORTION_TYPE_UNDEFINED
Definition: AnalysisControl.h:88
@ ESTIMATE_GAINS_AND_ROTATIONS
Definition: AnalysisControl.h:91
@ NO_DISTORTION
Definition: AnalysisControl.h:89
@ ESTIMATE_DISTORTION_MATRIX_DIFFERENCE
Definition: AnalysisControl.h:90
bool m_isRougheningMatrixOutputted
Definition: AnalysisControl.h:552
std::set< int > m_outputParametersForVis
Definition: AnalysisControl.h:396
double m_factorIncreasingStepLength
Definition: AnalysisControl.h:456
outputParameterIDsForVTK
Definition: AnalysisControl.h:54
@ OUTPUT_MAGNETIC_FIELD_VECTORS_TO_VTK
Definition: AnalysisControl.h:57
@ OUTPUT_SENSITIVITY_DENSITY
Definition: AnalysisControl.h:60
@ OUTPUT_ELECTRIC_FIELD_VECTORS_TO_VTK
Definition: AnalysisControl.h:56
@ OUTPUT_RESISTIVITY_VALUES_TO_VTK
Definition: AnalysisControl.h:55
@ OUTPUT_SENSITIVITY
Definition: AnalysisControl.h:59
@ OUTPUT_CURRENT_DENSITY
Definition: AnalysisControl.h:58
TypeOfElectricField
Definition: AnalysisControl.h:108
@ USE_TANGENTIAL_ELECTRIC_FIELD
Definition: AnalysisControl.h:110
@ USE_HORIZONTAL_ELECTRIC_FIELD
Definition: AnalysisControl.h:109
double m_stepLengthDampingFactorMax
Definition: AnalysisControl.h:446
static AnalysisControl * getInstance()
Definition: AnalysisControl.cpp:53
int m_typeOfDistortion
Definition: AnalysisControl.h:533
static const int numParamWrittenInControlFile
Definition: AnalysisControl.h:372
double getTradeOffParameterForRotationsOfDistortionMatrix() const
Definition: AnalysisControl.cpp:1852
double m_tradeOffParameterForDistortionRotation
Definition: AnalysisControl.h:414
TypeOfRoughningMatrix
Definition: AnalysisControl.h:78
@ USER_DEFINED_ROUGHNING
Definition: AnalysisControl.h:79
@ USE_RESISTIVITY_BLOCKS_SHARE_FACES
Definition: AnalysisControl.h:81
@ USE_ELEMENTS_SHARE_FACES
Definition: AnalysisControl.h:80
@ USE_ELEMENTS_SHARE_FACES_AREA_VOL_RATIO
Definition: AnalysisControl.h:82
@ EndOfTypeOfRoughningMatrix
Definition: AnalysisControl.h:83
time_t m_startTime
Definition: AnalysisControl.h:417
bool estimateDistortionMatrix() const
Definition: AnalysisControl.cpp:1872
bool getIsRougheningMatrixOutputted() const
Definition: AnalysisControl.cpp:1936
double m_decreaseRatioForConvegence
Definition: AnalysisControl.h:437
bool m_isTypeOfElectricFieldSetIndivisually
Definition: AnalysisControl.h:514
TypeOfOwnerElement
Definition: AnalysisControl.h:114
@ USE_UPPER_ELEMENT
Definition: AnalysisControl.h:116
@ USE_LOWER_ELEMENT
Definition: AnalysisControl.h:115
Definition: Forward3DBrickElement0thOrder.h:33
Definition: Forward3DNonConformingHexaElement0thOrder.h:32
Definition: Forward3DTetraElement0thOrder.h:33
Definition: Forward3D.h:37
Definition: Inversion.h:34
Definition: MeshDataBrickElement.h:31
Definition: MeshDataNonConformingHexaElement.h:31
Definition: MeshDataTetraElement.h:32
Definition: MeshData.h:31
Definition: AnalysisControl.h:102
enum BackwardOrForwardElement directionX
Definition: AnalysisControl.h:103
enum BackwardOrForwardElement directionY
Definition: AnalysisControl.h:104