forgeo-gmlib 0.6.2__cp310-cp310-musllinux_1_2_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (554) hide show
  1. forgeo/gmlib/GeologicalModel3D.py +758 -0
  2. forgeo/gmlib/__init__.py +9 -0
  3. forgeo/gmlib/_version.py +34 -0
  4. forgeo/gmlib/architecture/__init__.py +1 -0
  5. forgeo/gmlib/architecture/core.py +130 -0
  6. forgeo/gmlib/common.cpython-310-x86_64-linux-gnu.so +0 -0
  7. forgeo/gmlib/fault_network.py +171 -0
  8. forgeo/gmlib/geomodeller_data.py +101 -0
  9. forgeo/gmlib/geomodeller_project.py +396 -0
  10. forgeo/gmlib/myxmltools.py +30 -0
  11. forgeo/gmlib/pypotential2D.cpython-310-x86_64-linux-gnu.so +0 -0
  12. forgeo/gmlib/pypotential3D.cpython-310-x86_64-linux-gnu.so +0 -0
  13. forgeo/gmlib/tesselate.py +236 -0
  14. forgeo/gmlib/tesselate_deprecated.py +249 -0
  15. forgeo/gmlib/topography_reader.py +198 -0
  16. forgeo/gmlib/utils/__init__.py +0 -0
  17. forgeo/gmlib/utils/append_data.py +508 -0
  18. forgeo/gmlib/utils/export.py +45 -0
  19. forgeo/gmlib/utils/normalized_gradient.py +40 -0
  20. forgeo/gmlib/utils/tools.py +35 -0
  21. forgeo_gmlib-0.6.2.dist-info/METADATA +23 -0
  22. forgeo_gmlib-0.6.2.dist-info/RECORD +554 -0
  23. forgeo_gmlib-0.6.2.dist-info/WHEEL +5 -0
  24. forgeo_gmlib-0.6.2.dist-info/licenses/LICENSE +661 -0
  25. include/eigen3/Eigen/Cholesky +45 -0
  26. include/eigen3/Eigen/CholmodSupport +48 -0
  27. include/eigen3/Eigen/Core +385 -0
  28. include/eigen3/Eigen/Dense +7 -0
  29. include/eigen3/Eigen/Eigen +2 -0
  30. include/eigen3/Eigen/Eigenvalues +60 -0
  31. include/eigen3/Eigen/Geometry +59 -0
  32. include/eigen3/Eigen/Householder +29 -0
  33. include/eigen3/Eigen/IterativeLinearSolvers +48 -0
  34. include/eigen3/Eigen/Jacobi +32 -0
  35. include/eigen3/Eigen/KLUSupport +41 -0
  36. include/eigen3/Eigen/LU +47 -0
  37. include/eigen3/Eigen/MetisSupport +35 -0
  38. include/eigen3/Eigen/OrderingMethods +70 -0
  39. include/eigen3/Eigen/PaStiXSupport +49 -0
  40. include/eigen3/Eigen/PardisoSupport +35 -0
  41. include/eigen3/Eigen/QR +50 -0
  42. include/eigen3/Eigen/QtAlignedMalloc +39 -0
  43. include/eigen3/Eigen/SPQRSupport +34 -0
  44. include/eigen3/Eigen/SVD +50 -0
  45. include/eigen3/Eigen/Sparse +34 -0
  46. include/eigen3/Eigen/SparseCholesky +37 -0
  47. include/eigen3/Eigen/SparseCore +69 -0
  48. include/eigen3/Eigen/SparseLU +48 -0
  49. include/eigen3/Eigen/SparseQR +36 -0
  50. include/eigen3/Eigen/StdDeque +27 -0
  51. include/eigen3/Eigen/StdList +26 -0
  52. include/eigen3/Eigen/StdVector +27 -0
  53. include/eigen3/Eigen/SuperLUSupport +64 -0
  54. include/eigen3/Eigen/UmfPackSupport +40 -0
  55. include/eigen3/Eigen/src/Cholesky/LDLT.h +688 -0
  56. include/eigen3/Eigen/src/Cholesky/LLT.h +558 -0
  57. include/eigen3/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
  58. include/eigen3/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
  59. include/eigen3/Eigen/src/Core/ArithmeticSequence.h +406 -0
  60. include/eigen3/Eigen/src/Core/Array.h +425 -0
  61. include/eigen3/Eigen/src/Core/ArrayBase.h +226 -0
  62. include/eigen3/Eigen/src/Core/ArrayWrapper.h +209 -0
  63. include/eigen3/Eigen/src/Core/Assign.h +90 -0
  64. include/eigen3/Eigen/src/Core/AssignEvaluator.h +1010 -0
  65. include/eigen3/Eigen/src/Core/Assign_MKL.h +178 -0
  66. include/eigen3/Eigen/src/Core/BandMatrix.h +353 -0
  67. include/eigen3/Eigen/src/Core/Block.h +463 -0
  68. include/eigen3/Eigen/src/Core/BooleanRedux.h +164 -0
  69. include/eigen3/Eigen/src/Core/CommaInitializer.h +164 -0
  70. include/eigen3/Eigen/src/Core/ConditionEstimator.h +175 -0
  71. include/eigen3/Eigen/src/Core/CoreEvaluators.h +1741 -0
  72. include/eigen3/Eigen/src/Core/CoreIterators.h +132 -0
  73. include/eigen3/Eigen/src/Core/CwiseBinaryOp.h +183 -0
  74. include/eigen3/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
  75. include/eigen3/Eigen/src/Core/CwiseTernaryOp.h +197 -0
  76. include/eigen3/Eigen/src/Core/CwiseUnaryOp.h +103 -0
  77. include/eigen3/Eigen/src/Core/CwiseUnaryView.h +132 -0
  78. include/eigen3/Eigen/src/Core/DenseBase.h +701 -0
  79. include/eigen3/Eigen/src/Core/DenseCoeffsBase.h +685 -0
  80. include/eigen3/Eigen/src/Core/DenseStorage.h +652 -0
  81. include/eigen3/Eigen/src/Core/Diagonal.h +259 -0
  82. include/eigen3/Eigen/src/Core/DiagonalMatrix.h +391 -0
  83. include/eigen3/Eigen/src/Core/DiagonalProduct.h +28 -0
  84. include/eigen3/Eigen/src/Core/Dot.h +313 -0
  85. include/eigen3/Eigen/src/Core/EigenBase.h +160 -0
  86. include/eigen3/Eigen/src/Core/ForceAlignedAccess.h +150 -0
  87. include/eigen3/Eigen/src/Core/Fuzzy.h +155 -0
  88. include/eigen3/Eigen/src/Core/GeneralProduct.h +465 -0
  89. include/eigen3/Eigen/src/Core/GenericPacketMath.h +1040 -0
  90. include/eigen3/Eigen/src/Core/GlobalFunctions.h +194 -0
  91. include/eigen3/Eigen/src/Core/IO.h +258 -0
  92. include/eigen3/Eigen/src/Core/IndexedView.h +247 -0
  93. include/eigen3/Eigen/src/Core/Inverse.h +117 -0
  94. include/eigen3/Eigen/src/Core/Map.h +171 -0
  95. include/eigen3/Eigen/src/Core/MapBase.h +310 -0
  96. include/eigen3/Eigen/src/Core/MathFunctions.h +2212 -0
  97. include/eigen3/Eigen/src/Core/MathFunctionsImpl.h +200 -0
  98. include/eigen3/Eigen/src/Core/Matrix.h +578 -0
  99. include/eigen3/Eigen/src/Core/MatrixBase.h +541 -0
  100. include/eigen3/Eigen/src/Core/NestByValue.h +85 -0
  101. include/eigen3/Eigen/src/Core/NoAlias.h +109 -0
  102. include/eigen3/Eigen/src/Core/NumTraits.h +351 -0
  103. include/eigen3/Eigen/src/Core/PartialReduxEvaluator.h +237 -0
  104. include/eigen3/Eigen/src/Core/PermutationMatrix.h +605 -0
  105. include/eigen3/Eigen/src/Core/PlainObjectBase.h +1128 -0
  106. include/eigen3/Eigen/src/Core/Product.h +191 -0
  107. include/eigen3/Eigen/src/Core/ProductEvaluators.h +1179 -0
  108. include/eigen3/Eigen/src/Core/Random.h +218 -0
  109. include/eigen3/Eigen/src/Core/Redux.h +515 -0
  110. include/eigen3/Eigen/src/Core/Ref.h +381 -0
  111. include/eigen3/Eigen/src/Core/Replicate.h +142 -0
  112. include/eigen3/Eigen/src/Core/Reshaped.h +454 -0
  113. include/eigen3/Eigen/src/Core/ReturnByValue.h +119 -0
  114. include/eigen3/Eigen/src/Core/Reverse.h +217 -0
  115. include/eigen3/Eigen/src/Core/Select.h +164 -0
  116. include/eigen3/Eigen/src/Core/SelfAdjointView.h +365 -0
  117. include/eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
  118. include/eigen3/Eigen/src/Core/Solve.h +188 -0
  119. include/eigen3/Eigen/src/Core/SolveTriangular.h +235 -0
  120. include/eigen3/Eigen/src/Core/SolverBase.h +168 -0
  121. include/eigen3/Eigen/src/Core/StableNorm.h +251 -0
  122. include/eigen3/Eigen/src/Core/StlIterators.h +463 -0
  123. include/eigen3/Eigen/src/Core/Stride.h +120 -0
  124. include/eigen3/Eigen/src/Core/Swap.h +68 -0
  125. include/eigen3/Eigen/src/Core/Transpose.h +464 -0
  126. include/eigen3/Eigen/src/Core/Transpositions.h +386 -0
  127. include/eigen3/Eigen/src/Core/TriangularMatrix.h +994 -0
  128. include/eigen3/Eigen/src/Core/VectorBlock.h +96 -0
  129. include/eigen3/Eigen/src/Core/VectorwiseOp.h +784 -0
  130. include/eigen3/Eigen/src/Core/Visitor.h +381 -0
  131. include/eigen3/Eigen/src/Core/arch/AVX/Complex.h +368 -0
  132. include/eigen3/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
  133. include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h +1588 -0
  134. include/eigen3/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
  135. include/eigen3/Eigen/src/Core/arch/AVX512/Complex.h +384 -0
  136. include/eigen3/Eigen/src/Core/arch/AVX512/MathFunctions.h +361 -0
  137. include/eigen3/Eigen/src/Core/arch/AVX512/PacketMath.h +2270 -0
  138. include/eigen3/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  139. include/eigen3/Eigen/src/Core/arch/AltiVec/Complex.h +415 -0
  140. include/eigen3/Eigen/src/Core/arch/AltiVec/MathFunctions.h +119 -0
  141. include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2776 -0
  142. include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +159 -0
  143. include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +627 -0
  144. include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixVectorProduct.h +2400 -0
  145. include/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h +2743 -0
  146. include/eigen3/Eigen/src/Core/arch/CUDA/Complex.h +269 -0
  147. include/eigen3/Eigen/src/Core/arch/Default/BFloat16.h +688 -0
  148. include/eigen3/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
  149. include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1662 -0
  150. include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +116 -0
  151. include/eigen3/Eigen/src/Core/arch/Default/Half.h +950 -0
  152. include/eigen3/Eigen/src/Core/arch/Default/Settings.h +49 -0
  153. include/eigen3/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  154. include/eigen3/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
  155. include/eigen3/Eigen/src/Core/arch/GPU/PacketMath.h +1646 -0
  156. include/eigen3/Eigen/src/Core/arch/GPU/TypeCasting.h +79 -0
  157. include/eigen3/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  158. include/eigen3/Eigen/src/Core/arch/MSA/Complex.h +645 -0
  159. include/eigen3/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  160. include/eigen3/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  161. include/eigen3/Eigen/src/Core/arch/NEON/Complex.h +560 -0
  162. include/eigen3/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  163. include/eigen3/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
  164. include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h +4653 -0
  165. include/eigen3/Eigen/src/Core/arch/NEON/TypeCasting.h +1424 -0
  166. include/eigen3/Eigen/src/Core/arch/SSE/Complex.h +338 -0
  167. include/eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
  168. include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
  169. include/eigen3/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
  170. include/eigen3/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  171. include/eigen3/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  172. include/eigen3/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  173. include/eigen3/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  174. include/eigen3/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  175. include/eigen3/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  176. include/eigen3/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  177. include/eigen3/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  178. include/eigen3/Eigen/src/Core/arch/ZVector/Complex.h +428 -0
  179. include/eigen3/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
  180. include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
  181. include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
  182. include/eigen3/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
  183. include/eigen3/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
  184. include/eigen3/Eigen/src/Core/functors/StlFunctors.h +166 -0
  185. include/eigen3/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
  186. include/eigen3/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
  187. include/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
  188. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
  189. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +322 -0
  190. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
  191. include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
  192. include/eigen3/Eigen/src/Core/products/GeneralMatrixVector.h +523 -0
  193. include/eigen3/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
  194. include/eigen3/Eigen/src/Core/products/Parallelizer.h +180 -0
  195. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
  196. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
  197. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
  198. include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
  199. include/eigen3/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
  200. include/eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
  201. include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
  202. include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
  203. include/eigen3/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
  204. include/eigen3/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
  205. include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
  206. include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
  207. include/eigen3/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
  208. include/eigen3/Eigen/src/Core/util/BlasUtil.h +583 -0
  209. include/eigen3/Eigen/src/Core/util/ConfigureVectorization.h +521 -0
  210. include/eigen3/Eigen/src/Core/util/Constants.h +563 -0
  211. include/eigen3/Eigen/src/Core/util/DisableStupidWarnings.h +138 -0
  212. include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
  213. include/eigen3/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  214. include/eigen3/Eigen/src/Core/util/IntegralConstant.h +272 -0
  215. include/eigen3/Eigen/src/Core/util/MKL_support.h +137 -0
  216. include/eigen3/Eigen/src/Core/util/Macros.h +1511 -0
  217. include/eigen3/Eigen/src/Core/util/Memory.h +1202 -0
  218. include/eigen3/Eigen/src/Core/util/Meta.h +812 -0
  219. include/eigen3/Eigen/src/Core/util/NonMPL2.h +3 -0
  220. include/eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
  221. include/eigen3/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  222. include/eigen3/Eigen/src/Core/util/StaticAssert.h +221 -0
  223. include/eigen3/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  224. include/eigen3/Eigen/src/Core/util/XprHelper.h +856 -0
  225. include/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h +345 -0
  226. include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
  227. include/eigen3/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
  228. include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
  229. include/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +417 -0
  230. include/eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
  231. include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
  232. include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
  233. include/eigen3/Eigen/src/Eigenvalues/RealQZ.h +657 -0
  234. include/eigen3/Eigen/src/Eigenvalues/RealSchur.h +557 -0
  235. include/eigen3/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
  236. include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
  237. include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
  238. include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h +560 -0
  239. include/eigen3/Eigen/src/Geometry/AlignedBox.h +486 -0
  240. include/eigen3/Eigen/src/Geometry/AngleAxis.h +247 -0
  241. include/eigen3/Eigen/src/Geometry/EulerAngles.h +114 -0
  242. include/eigen3/Eigen/src/Geometry/Homogeneous.h +501 -0
  243. include/eigen3/Eigen/src/Geometry/Hyperplane.h +282 -0
  244. include/eigen3/Eigen/src/Geometry/OrthoMethods.h +235 -0
  245. include/eigen3/Eigen/src/Geometry/ParametrizedLine.h +232 -0
  246. include/eigen3/Eigen/src/Geometry/Quaternion.h +870 -0
  247. include/eigen3/Eigen/src/Geometry/Rotation2D.h +199 -0
  248. include/eigen3/Eigen/src/Geometry/RotationBase.h +206 -0
  249. include/eigen3/Eigen/src/Geometry/Scaling.h +188 -0
  250. include/eigen3/Eigen/src/Geometry/Transform.h +1566 -0
  251. include/eigen3/Eigen/src/Geometry/Translation.h +202 -0
  252. include/eigen3/Eigen/src/Geometry/Umeyama.h +168 -0
  253. include/eigen3/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  254. include/eigen3/Eigen/src/Householder/BlockHouseholder.h +110 -0
  255. include/eigen3/Eigen/src/Householder/Householder.h +176 -0
  256. include/eigen3/Eigen/src/Householder/HouseholderSequence.h +553 -0
  257. include/eigen3/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
  258. include/eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
  259. include/eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +227 -0
  260. include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
  261. include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
  262. include/eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
  263. include/eigen3/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
  264. include/eigen3/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
  265. include/eigen3/Eigen/src/Jacobi/Jacobi.h +483 -0
  266. include/eigen3/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  267. include/eigen3/Eigen/src/LU/Determinant.h +117 -0
  268. include/eigen3/Eigen/src/LU/FullPivLU.h +877 -0
  269. include/eigen3/Eigen/src/LU/InverseImpl.h +432 -0
  270. include/eigen3/Eigen/src/LU/PartialPivLU.h +624 -0
  271. include/eigen3/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
  272. include/eigen3/Eigen/src/LU/arch/InverseSize4.h +363 -0
  273. include/eigen3/Eigen/src/MetisSupport/MetisSupport.h +137 -0
  274. include/eigen3/Eigen/src/OrderingMethods/Amd.h +435 -0
  275. include/eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
  276. include/eigen3/Eigen/src/OrderingMethods/Ordering.h +153 -0
  277. include/eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
  278. include/eigen3/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
  279. include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
  280. include/eigen3/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
  281. include/eigen3/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
  282. include/eigen3/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
  283. include/eigen3/Eigen/src/QR/HouseholderQR.h +434 -0
  284. include/eigen3/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
  285. include/eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
  286. include/eigen3/Eigen/src/SVD/BDCSVD.h +1377 -0
  287. include/eigen3/Eigen/src/SVD/JacobiSVD.h +813 -0
  288. include/eigen3/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
  289. include/eigen3/Eigen/src/SVD/SVDBase.h +376 -0
  290. include/eigen3/Eigen/src/SVD/UpperBidiagonalization.h +415 -0
  291. include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
  292. include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
  293. include/eigen3/Eigen/src/SparseCore/AmbiVector.h +378 -0
  294. include/eigen3/Eigen/src/SparseCore/CompressedStorage.h +274 -0
  295. include/eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
  296. include/eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
  297. include/eigen3/Eigen/src/SparseCore/SparseAssign.h +270 -0
  298. include/eigen3/Eigen/src/SparseCore/SparseBlock.h +566 -0
  299. include/eigen3/Eigen/src/SparseCore/SparseColEtree.h +206 -0
  300. include/eigen3/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
  301. include/eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
  302. include/eigen3/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
  303. include/eigen3/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
  304. include/eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
  305. include/eigen3/Eigen/src/SparseCore/SparseDot.h +98 -0
  306. include/eigen3/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
  307. include/eigen3/Eigen/src/SparseCore/SparseMap.h +306 -0
  308. include/eigen3/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
  309. include/eigen3/Eigen/src/SparseCore/SparseMatrixBase.h +399 -0
  310. include/eigen3/Eigen/src/SparseCore/SparsePermutation.h +178 -0
  311. include/eigen3/Eigen/src/SparseCore/SparseProduct.h +182 -0
  312. include/eigen3/Eigen/src/SparseCore/SparseRedux.h +49 -0
  313. include/eigen3/Eigen/src/SparseCore/SparseRef.h +397 -0
  314. include/eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
  315. include/eigen3/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
  316. include/eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
  317. include/eigen3/Eigen/src/SparseCore/SparseTranspose.h +92 -0
  318. include/eigen3/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
  319. include/eigen3/Eigen/src/SparseCore/SparseUtil.h +186 -0
  320. include/eigen3/Eigen/src/SparseCore/SparseVector.h +480 -0
  321. include/eigen3/Eigen/src/SparseCore/SparseView.h +254 -0
  322. include/eigen3/Eigen/src/SparseCore/TriangularSolver.h +315 -0
  323. include/eigen3/Eigen/src/SparseLU/SparseLU.h +925 -0
  324. include/eigen3/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
  325. include/eigen3/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
  326. include/eigen3/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
  327. include/eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +374 -0
  328. include/eigen3/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
  329. include/eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
  330. include/eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
  331. include/eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
  332. include/eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +121 -0
  333. include/eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +129 -0
  334. include/eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h +222 -0
  335. include/eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
  336. include/eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
  337. include/eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
  338. include/eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
  339. include/eigen3/Eigen/src/SparseQR/SparseQR.h +758 -0
  340. include/eigen3/Eigen/src/StlSupport/StdDeque.h +116 -0
  341. include/eigen3/Eigen/src/StlSupport/StdList.h +106 -0
  342. include/eigen3/Eigen/src/StlSupport/StdVector.h +131 -0
  343. include/eigen3/Eigen/src/StlSupport/details.h +84 -0
  344. include/eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
  345. include/eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
  346. include/eigen3/Eigen/src/misc/Image.h +82 -0
  347. include/eigen3/Eigen/src/misc/Kernel.h +79 -0
  348. include/eigen3/Eigen/src/misc/RealSvd2x2.h +55 -0
  349. include/eigen3/Eigen/src/misc/blas.h +440 -0
  350. include/eigen3/Eigen/src/misc/lapack.h +152 -0
  351. include/eigen3/Eigen/src/misc/lapacke.h +16292 -0
  352. include/eigen3/Eigen/src/misc/lapacke_mangling.h +17 -0
  353. include/eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h +431 -0
  354. include/eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
  355. include/eigen3/Eigen/src/plugins/BlockMethods.h +1442 -0
  356. include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
  357. include/eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
  358. include/eigen3/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  359. include/eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h +184 -0
  360. include/eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
  361. include/eigen3/Eigen/src/plugins/ReshapedMethods.h +149 -0
  362. include/eigen3/signature_of_eigen3_matrix_library +1 -0
  363. include/eigen3/unsupported/Eigen/AdolcForward +159 -0
  364. include/eigen3/unsupported/Eigen/AlignedVector3 +234 -0
  365. include/eigen3/unsupported/Eigen/ArpackSupport +30 -0
  366. include/eigen3/unsupported/Eigen/AutoDiff +48 -0
  367. include/eigen3/unsupported/Eigen/BVH +95 -0
  368. include/eigen3/unsupported/Eigen/CXX11/Tensor +137 -0
  369. include/eigen3/unsupported/Eigen/CXX11/TensorSymmetry +42 -0
  370. include/eigen3/unsupported/Eigen/CXX11/ThreadPool +74 -0
  371. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/Tensor.h +554 -0
  372. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h +327 -0
  373. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h +242 -0
  374. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +1176 -0
  375. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h +1559 -0
  376. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h +1083 -0
  377. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h +510 -0
  378. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h +373 -0
  379. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h +1019 -0
  380. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h +73 -0
  381. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h +6 -0
  382. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h +1413 -0
  383. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h +575 -0
  384. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h +1650 -0
  385. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h +1679 -0
  386. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h +455 -0
  387. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h +1126 -0
  388. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolutionSycl.h +536 -0
  389. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h +213 -0
  390. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h +342 -0
  391. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h +137 -0
  392. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h +6 -0
  393. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h +104 -0
  394. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h +389 -0
  395. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h +1048 -0
  396. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h +409 -0
  397. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h +234 -0
  398. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h +493 -0
  399. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h +229 -0
  400. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h +980 -0
  401. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h +701 -0
  402. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h +389 -0
  403. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h +669 -0
  404. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h +377 -0
  405. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h +232 -0
  406. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h +191 -0
  407. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h +488 -0
  408. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h +297 -0
  409. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h +33 -0
  410. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaDefines.h +99 -0
  411. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaUndefines.h +44 -0
  412. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h +79 -0
  413. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h +602 -0
  414. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h +735 -0
  415. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h +244 -0
  416. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h +82 -0
  417. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h +257 -0
  418. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h +213 -0
  419. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h +98 -0
  420. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h +327 -0
  421. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h +311 -0
  422. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h +1098 -0
  423. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h +705 -0
  424. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +286 -0
  425. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h +317 -0
  426. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h +1000 -0
  427. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h +6 -0
  428. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h +973 -0
  429. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h +582 -0
  430. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h +454 -0
  431. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h +462 -0
  432. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h +528 -0
  433. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScanSycl.h +513 -0
  434. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h +466 -0
  435. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h +157 -0
  436. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h +341 -0
  437. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTrace.h +299 -0
  438. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h +264 -0
  439. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h +249 -0
  440. include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h +628 -0
  441. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h +293 -0
  442. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/StaticSymmetry.h +236 -0
  443. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/Symmetry.h +338 -0
  444. include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/util/TemplateGroupTheory.h +669 -0
  445. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/Barrier.h +67 -0
  446. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h +249 -0
  447. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h +486 -0
  448. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h +236 -0
  449. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadCancel.h +23 -0
  450. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h +40 -0
  451. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h +301 -0
  452. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h +48 -0
  453. include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h +20 -0
  454. include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Meta.h +538 -0
  455. include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h +88 -0
  456. include/eigen3/unsupported/Eigen/CXX11/src/util/EmulateArray.h +261 -0
  457. include/eigen3/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h +158 -0
  458. include/eigen3/unsupported/Eigen/EulerAngles +43 -0
  459. include/eigen3/unsupported/Eigen/FFT +420 -0
  460. include/eigen3/unsupported/Eigen/IterativeSolvers +51 -0
  461. include/eigen3/unsupported/Eigen/KroneckerProduct +36 -0
  462. include/eigen3/unsupported/Eigen/LevenbergMarquardt +49 -0
  463. include/eigen3/unsupported/Eigen/MPRealSupport +213 -0
  464. include/eigen3/unsupported/Eigen/MatrixFunctions +504 -0
  465. include/eigen3/unsupported/Eigen/MoreVectorization +24 -0
  466. include/eigen3/unsupported/Eigen/NonLinearOptimization +140 -0
  467. include/eigen3/unsupported/Eigen/NumericalDiff +56 -0
  468. include/eigen3/unsupported/Eigen/OpenGLSupport +322 -0
  469. include/eigen3/unsupported/Eigen/Polynomials +137 -0
  470. include/eigen3/unsupported/Eigen/Skyline +39 -0
  471. include/eigen3/unsupported/Eigen/SparseExtra +54 -0
  472. include/eigen3/unsupported/Eigen/SpecialFunctions +103 -0
  473. include/eigen3/unsupported/Eigen/Splines +35 -0
  474. include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h +108 -0
  475. include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +730 -0
  476. include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h +220 -0
  477. include/eigen3/unsupported/Eigen/src/BVH/BVAlgorithms.h +293 -0
  478. include/eigen3/unsupported/Eigen/src/BVH/KdBVH.h +223 -0
  479. include/eigen3/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h +790 -0
  480. include/eigen3/unsupported/Eigen/src/EulerAngles/EulerAngles.h +356 -0
  481. include/eigen3/unsupported/Eigen/src/EulerAngles/EulerSystem.h +306 -0
  482. include/eigen3/unsupported/Eigen/src/FFT/ei_fftw_impl.h +261 -0
  483. include/eigen3/unsupported/Eigen/src/FFT/ei_kissfft_impl.h +449 -0
  484. include/eigen3/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +187 -0
  485. include/eigen3/unsupported/Eigen/src/IterativeSolvers/DGMRES.h +511 -0
  486. include/eigen3/unsupported/Eigen/src/IterativeSolvers/GMRES.h +335 -0
  487. include/eigen3/unsupported/Eigen/src/IterativeSolvers/IDRS.h +436 -0
  488. include/eigen3/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h +90 -0
  489. include/eigen3/unsupported/Eigen/src/IterativeSolvers/IterationController.h +154 -0
  490. include/eigen3/unsupported/Eigen/src/IterativeSolvers/MINRES.h +267 -0
  491. include/eigen3/unsupported/Eigen/src/IterativeSolvers/Scaling.h +193 -0
  492. include/eigen3/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h +305 -0
  493. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h +84 -0
  494. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h +202 -0
  495. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h +160 -0
  496. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h +188 -0
  497. include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +396 -0
  498. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +441 -0
  499. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h +569 -0
  500. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h +373 -0
  501. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +705 -0
  502. include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h +368 -0
  503. include/eigen3/unsupported/Eigen/src/MatrixFunctions/StemFunction.h +117 -0
  504. include/eigen3/unsupported/Eigen/src/MoreVectorization/MathFunctions.h +95 -0
  505. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h +601 -0
  506. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +657 -0
  507. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/chkder.h +66 -0
  508. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/covar.h +70 -0
  509. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/dogleg.h +107 -0
  510. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h +79 -0
  511. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/lmpar.h +298 -0
  512. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h +91 -0
  513. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h +30 -0
  514. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1updt.h +99 -0
  515. include/eigen3/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h +49 -0
  516. include/eigen3/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +130 -0
  517. include/eigen3/unsupported/Eigen/src/Polynomials/Companion.h +280 -0
  518. include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialSolver.h +429 -0
  519. include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialUtils.h +143 -0
  520. include/eigen3/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h +352 -0
  521. include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrix.h +862 -0
  522. include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +212 -0
  523. include/eigen3/unsupported/Eigen/src/Skyline/SkylineProduct.h +295 -0
  524. include/eigen3/unsupported/Eigen/src/Skyline/SkylineStorage.h +259 -0
  525. include/eigen3/unsupported/Eigen/src/Skyline/SkylineUtil.h +89 -0
  526. include/eigen3/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h +122 -0
  527. include/eigen3/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h +1079 -0
  528. include/eigen3/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h +404 -0
  529. include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h +282 -0
  530. include/eigen3/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h +247 -0
  531. include/eigen3/unsupported/Eigen/src/SparseExtra/RandomSetter.h +349 -0
  532. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsArrayAPI.h +286 -0
  533. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h +68 -0
  534. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h +357 -0
  535. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h +66 -0
  536. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h +1959 -0
  537. include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsPacketMath.h +118 -0
  538. include/eigen3/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h +67 -0
  539. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h +167 -0
  540. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h +58 -0
  541. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h +330 -0
  542. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h +58 -0
  543. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h +2051 -0
  544. include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h +79 -0
  545. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/BesselFunctions.h +46 -0
  546. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/SpecialFunctions.h +16 -0
  547. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/BesselFunctions.h +51 -0
  548. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/SpecialFunctions.h +16 -0
  549. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/GPU/SpecialFunctions.h +369 -0
  550. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/BesselFunctions.h +54 -0
  551. include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/SpecialFunctions.h +34 -0
  552. include/eigen3/unsupported/Eigen/src/Splines/Spline.h +507 -0
  553. include/eigen3/unsupported/Eigen/src/Splines/SplineFitting.h +431 -0
  554. include/eigen3/unsupported/Eigen/src/Splines/SplineFwd.h +93 -0
@@ -0,0 +1,758 @@
1
+ #
2
+ # This file is part of gmlib. It is free software.
3
+ # You can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3.
4
+ #
5
+
6
+ from collections import namedtuple
7
+ from dataclasses import dataclass
8
+ from pathlib import Path
9
+ from typing import Any
10
+
11
+ import numpy as np
12
+ import yaml
13
+
14
+ from forgeo.gmlib import geomodeller_project
15
+ from forgeo.gmlib import pypotential3D as pypotential
16
+ from forgeo.gmlib.common import CovarianceData
17
+ from forgeo.gmlib.geomodeller_data import GradientData
18
+ from forgeo.gmlib.pypotential3D import (
19
+ ConstantElevationSurface,
20
+ ElevationRaster,
21
+ ImplicitTopography,
22
+ Polyline,
23
+ VerticalSection,
24
+ )
25
+ from forgeo.gmlib.topography_reader import ImplicitDTM, ImplicitHorizontalPlane
26
+ from forgeo.gmlib.utils.tools import BBox3
27
+
28
+
29
+ @dataclass
30
+ class Intersection:
31
+ point: Any
32
+ field: Any
33
+ value: float = 0.0
34
+ fault: str = None
35
+
36
+
37
+ PileInfo = namedtuple("PileInfo", ["name", "color", "relation"])
38
+ Box = namedtuple("Box", ["xmin", "ymin", "zmin", "xmax", "ymax", "zmax"])
39
+ CRSInfo = namedtuple("CRSInfo", ["geomodeller", "qgis"])
40
+ SeriesInfo = namedtuple(
41
+ "SeriesInfo", ["field", "drifts", "active_faults", "interfaces"]
42
+ )
43
+
44
+ scalardt = pypotential.scalar_type()
45
+
46
+
47
+ # FIMXE: to be put elsewhere
48
+ def image_ratio(section, nu):
49
+ assert section.umax > section.umin
50
+ nv = int(((section.vmax - section.vmin) / (section.umax - section.umin)) * nu)
51
+ assert nv > 0, (
52
+ f"z ratio is to small: {(section.vmax - section.vmin) / (section.umax - section.umin)}"
53
+ )
54
+ return nu, nv
55
+
56
+
57
+ def covariance_data(potdata):
58
+ covmodel = potdata.covariance_model
59
+ return CovarianceData(
60
+ covmodel.gradient_variance,
61
+ covmodel.range,
62
+ covmodel.gradient_nugget,
63
+ covmodel.potential_nugget,
64
+ )
65
+
66
+
67
+ def gradient_data(potdata):
68
+ graddata = potdata.gradients
69
+ return pypotential.gradient_data(graddata.locations, graddata.values)
70
+
71
+
72
+ def interface_data(potdata):
73
+ return pypotential.interface_data(potdata.interfaces)
74
+
75
+
76
+ def drift_basis(potdata):
77
+ drift_order = potdata.covariance_model.drift_order
78
+ return pypotential.drift_basis(drift_order)
79
+
80
+
81
+ # FIXME this should be set elsewhere
82
+ # Version with np.array here is suboptimal
83
+ def point_between(p1, p2, field, v, precision=0.01):
84
+ squared_precision = precision**2
85
+ # Point = pypotential.Point
86
+ # p1 = pypotential.Point(p1)
87
+ # p2 = pypotential.Point(p2)
88
+ p1 = np.asarray(p1, dtype=scalardt)
89
+ p2 = np.asarray(p2, dtype=scalardt)
90
+ assert len(p1.shape) == 1
91
+ assert len(p2.shape) == 1
92
+ # print('-> point between', p1, p2)
93
+ v1, v2 = field(p1), field(p2)
94
+ if v1 == v:
95
+ return p1
96
+ if v2 == v:
97
+ return p2
98
+ # print('field values:', v1, v2, 'looking for', v)
99
+ # FIXME: minimum can't be found (might scan between potentials)
100
+ if (v - v1) * (v - v2) > 0:
101
+ return None
102
+ # previous = Point(p1) # copy is mandatory here
103
+ previous = np.copy(p1) # copy is mandatory here
104
+ while True:
105
+ # (v - v1)/(v2 - v1)<1 so p is in [p1, p2] and we have convergence
106
+ # print('-> TEST:', p1)
107
+ # print('-> TEST:', v1, v2, p2- p1)
108
+ # if v1==v:
109
+ # return p1
110
+ # if v2==v:
111
+ # return p2
112
+ # if v1==v2==v:
113
+ # return None
114
+ p = p1 + float((v - v1) / (v2 - v1)) * (p2 - p1)
115
+ # squared_length = (p - previous).squared_length
116
+ squared_length = np.sum((p - previous) ** 2)
117
+ if squared_length < squared_precision:
118
+ # print('-> FOUND', p)
119
+ return p
120
+ vp = field(p)
121
+ # print('field value:', vp)
122
+ # previous = Point(p) # copy is mandatory here
123
+ previous = np.copy(p) # copy is mandatory here
124
+ if (v - vp) * (v - v2) <= 0:
125
+ # Look for between vp and v2
126
+ v1 = vp
127
+ p1 = p
128
+ elif (v - vp) * (v - v1) <= 0:
129
+ # Look for between v1 and vp
130
+ v2 = vp
131
+ p2 = p
132
+ else:
133
+ raise AssertionError()
134
+ return None
135
+ return None
136
+
137
+
138
+ def distance(p1, p2):
139
+ x = p1[0] - p2[0]
140
+ y = p1[1] - p2[1]
141
+ z = p1[2] - p2[2]
142
+ return np.sqrt(x**2 + y**2 + z**2)
143
+
144
+
145
+ def extract_data_from_legacy_geomodeller_file(
146
+ filename, scalardt, skip_topography=False
147
+ ):
148
+ return geomodeller_project.extract_project_data(
149
+ filename, scalardt, skip_topography=skip_topography
150
+ )
151
+
152
+
153
+ def make_potential(cache, name, potdata, drifts=None):
154
+ params = (
155
+ covariance_data(potdata),
156
+ gradient_data(potdata),
157
+ interface_data(potdata),
158
+ drifts or drift_basis(potdata),
159
+ )
160
+ cached = cache[name]
161
+ if cached is None:
162
+ field = pypotential.potential_field(*params)
163
+ cache[name] = field.data().beta()
164
+ else:
165
+ field = pypotential.potential_field(*params, cached)
166
+ return field
167
+
168
+
169
+ def fault_potential(cache, name, data):
170
+ potdata = data.potential_data
171
+ assert len(potdata.interfaces) == 1, "inconsistent fault potential field"
172
+ return make_potential(cache, name, potdata)
173
+
174
+
175
+ def finite_fault(cache, name, data):
176
+ assert not data.infinite
177
+ potdata = data.potential_data
178
+ assert len(potdata.interfaces) == 1, "inconsistent fault potential field"
179
+ points = np.reshape(potdata.interfaces[0], (-1, 3))
180
+ center = None
181
+ if data.center_type == "mean_center":
182
+ center = np.mean(points, axis=0)
183
+ elif data.center_type == "databox_center":
184
+ center = np.array(
185
+ [0.5 * (points[:, axis].min() + points[:, axis].max()) for axis in range(3)]
186
+ )
187
+ else:
188
+ assert type(data.center_type) is tuple, "unknown fault center type" + str(
189
+ data.center_type
190
+ )
191
+ center = np.array(data.center_type)
192
+ center = np.asarray(center, dtype=scalardt)
193
+ assert center is not None
194
+ field = fault_potential(cache, name, data)
195
+ # The following is as in GeoModeller: might be improved?
196
+ # it is based on the idea that the fault geometry is close
197
+ # to a (planar!) disk
198
+ g = pypotential.gradient(field)(center)
199
+ g.shape = (3,)
200
+ assert np.linalg.norm(g) > 0
201
+ g /= np.linalg.norm(g)
202
+ u = v = None
203
+ if g[0] == g[1] == 0: # tangent plane is horizontal
204
+ u = np.array([1, 0, 0], dtype=scalardt) # somewhat arbitrary
205
+ else:
206
+ vertical = np.array([0, 0, 1], dtype=scalardt)
207
+ u = np.cross(vertical, g)
208
+ u /= np.linalg.norm(u)
209
+ v = np.cross(u, g) # the basis is not direct!
210
+ v /= np.linalg.norm(v)
211
+ g *= data.influence_radius
212
+ u *= data.lateral_extent
213
+ v *= data.vertical_extent
214
+ ellipsoid = pypotential.Ellipsoid(
215
+ pypotential.Point(*center),
216
+ (pypotential.Vector(*g), pypotential.Vector(*u), pypotential.Vector(*v)),
217
+ )
218
+ return field, ellipsoid
219
+
220
+
221
+ def recast(data):
222
+ box, pile, faults_data, topography, formations = data
223
+ box_center = np.array(
224
+ [0.5 * (box[s + "min"] + box[s + "max"]) for s in ("X", "Y", "Z")],
225
+ dtype=scalardt,
226
+ )
227
+ L = max([box[s + "max"] - box[s + "min"] for s in ("X", "Y", "Z")])
228
+ assert L > 0
229
+
230
+ def recast_axis(i, x):
231
+ return (x - box_center[i]) / L
232
+
233
+ def recast_z(z):
234
+ return recast_axis(2, z)
235
+
236
+ def recast_P(P):
237
+ return (np.asarray(P, dtype=scalardt) - box_center) / L
238
+
239
+ if type(topography) is ImplicitHorizontalPlane:
240
+ topography = ImplicitHorizontalPlane(recast_z(topography.z))
241
+ else:
242
+ assert type(topography) is ImplicitDTM
243
+ topography = ImplicitDTM(
244
+ recast_P(topography.origin), topography.steps / L, recast_z(zmap)
245
+ )
246
+ new_box = {}
247
+ for i, s in enumerate(("X", "Y", "Z")):
248
+ new_box[s + "min"] = recast_axis(i, box[s + "min"])
249
+ new_box[s + "max"] = recast_axis(i, box[s + "max"])
250
+
251
+ def rescale_potential_data(handle):
252
+ if handle.potential_data is not None:
253
+ potdata = handle.potential_data
254
+ potdata.interfaces = [
255
+ recast_P(interface) for interface in potdata.interfaces
256
+ ]
257
+ gradients = potdata.gradients
258
+ gradients = GradientData(
259
+ recast_P(gradients.locations),
260
+ gradients.values, # * L, # FIXME: scale effect *L
261
+ )
262
+ potdata.covariance_model.range /= L
263
+
264
+ for serie in pile.all_series:
265
+ if serie.potential_data is not None:
266
+ rescale_potential_data(serie)
267
+ for _name, fault in faults_data.items():
268
+ rescale_potential_data(fault)
269
+ return box, pile, faults_data, topography, formations
270
+
271
+
272
+ def compute_fault_stops_on(model):
273
+ relations = {}
274
+ for fault, data in model.faults_data.items():
275
+ assert len(data.potential_data.interfaces) == 1
276
+ points = data.potential_data.interfaces[0]
277
+ limits = []
278
+ for limit in data.stops_on:
279
+ # the potential field associated to the limit
280
+ # is used to determine where lie the points defining the fault
281
+ v = np.mean(model.faults[limit](points))
282
+ assert v != 0, f"inconsitent limit potential in {fault} stops on {limit}"
283
+ limits.append((limit, -1 if v < 0 else 1))
284
+ relations[fault] = limits
285
+ return relations
286
+
287
+
288
+ class CacheDir:
289
+ def __init__(self, data):
290
+ filepath = data["filepath"]
291
+ path = filepath.parent / (filepath.stem + ".cache")
292
+ path.mkdir(exist_ok=True)
293
+ origin = path / "origin"
294
+ valid = origin.exists()
295
+ if valid:
296
+ assert origin.is_file()
297
+ with origin.open() as f:
298
+ try:
299
+ _path = Path(f.readline().strip())
300
+ _timestamp = int(f.readline().strip())
301
+ valid = _path == filepath and _timestamp == data["timestamp"]
302
+ except Exception:
303
+ valid = False
304
+ if not valid:
305
+ with origin.open("w") as f:
306
+ print(data["filepath"].as_posix(), file=f)
307
+ print(data["timestamp"], file=f)
308
+ self.path = path
309
+ self.valid = valid
310
+
311
+ def _source_from_key(self, key):
312
+ return self.path / f"{key}.npy"
313
+
314
+ def __getitem__(self, key):
315
+ if not self.valid:
316
+ return None
317
+ source = self._source_from_key(key)
318
+ if not source.is_file():
319
+ return None
320
+ return np.load(source)
321
+
322
+ def __setitem__(self, key, a):
323
+ np.save(self._source_from_key(key), a)
324
+
325
+
326
+ class GeologicalModel:
327
+ @staticmethod
328
+ def extract_data(path, *, skip_topography=False, convert_to_yaml=None):
329
+ # print()
330
+ # print('Loading model from:', filename)
331
+ # print()
332
+ path = Path(path)
333
+ assert path.is_file(), f"could not find {path.as_posix()}"
334
+ if path.suffix == ".xml":
335
+ data = extract_data_from_legacy_geomodeller_file(
336
+ path, scalardt, skip_topography=skip_topography
337
+ )
338
+ if convert_to_yaml is not None:
339
+ with open(convert_to_yaml, "w") as f:
340
+ print(yaml.dump(data), file=f)
341
+ elif path.suffix == ".yaml":
342
+ with path.open() as f:
343
+ data = yaml.load(f)
344
+ else:
345
+ msg = "Unknown file extension."
346
+ raise OSError(msg)
347
+ assert "path" not in data
348
+ data["filepath"] = path
349
+ assert "timestamp" not in data
350
+ # last modification time in nanoseconds
351
+ data["timestamp"] = path.stat().st_mtime_ns
352
+ return data
353
+
354
+ def __init__(self, data, **kwargs):
355
+ if type(data) is str:
356
+ data = GeologicalModel.extract_data(data, **kwargs)
357
+ cache = CacheDir(data)
358
+ self.box = data["box"]
359
+ self.crs = CRSInfo(*data["crs"])
360
+ self.pile = data["pile"]
361
+ assert self.pile.reference in ("top", "base")
362
+ self.faults_data = data["faults_data"]
363
+ self.topography = data["topography"]
364
+ formations = data["formations"]
365
+ faults = {}
366
+ fault_ellipsoids = {}
367
+ fault_drifts = {}
368
+ faults_data = data["faults_data"]
369
+ for name, data in faults_data.items():
370
+ # print('Registering fault:', name)
371
+ field = None
372
+ ellipsoid = None
373
+ if data.infinite:
374
+ field = fault_potential(cache, f"fault-{name}", data)
375
+ else:
376
+ field, ellipsoid = finite_fault(cache, f"fault-{name}", data)
377
+ faults[name] = pypotential.Fault(field)
378
+ if ellipsoid is not None:
379
+ faults[name].stops_on(ellipsoid)
380
+ fault_ellipsoids[name] = ellipsoid
381
+ for name, data in faults_data.items():
382
+ fault = faults[name]
383
+ filtered_limits = []
384
+ for limit_name in data.stops_on:
385
+ if limit_name not in faults:
386
+ pass
387
+ else:
388
+ filtered_limits.append(limit_name)
389
+ data.stops_on = filtered_limits
390
+ for limit_name in data.stops_on:
391
+ fault.stops_on(faults[limit_name])
392
+ for name, fault in faults.items():
393
+ if name in fault_ellipsoids:
394
+ fault_drifts[name] = pypotential.make_finite_drift(
395
+ fault, fault_ellipsoids[name]
396
+ )
397
+ else:
398
+ fault_drifts[name] = pypotential.make_drift(fault)
399
+ fields = []
400
+ values = []
401
+ relations = []
402
+ formation_names = [f.name for f in formations]
403
+ pile_formations = []
404
+ series_info = {}
405
+
406
+ def register_pile_formation(formation):
407
+ assert formation in formation_names, (
408
+ "Unknown formation " + formation + " in stratigraphic column!"
409
+ )
410
+ pile_formations.append(formation)
411
+
412
+ found_dummy_formation = False
413
+ pile = self.pile
414
+ for Sk, serie in enumerate(pile.all_series):
415
+ potdata = serie.potential_data
416
+ if potdata:
417
+ active_faults = {}
418
+ drifts = drift_basis(potdata)
419
+ if serie.influenced_by_fault:
420
+ for name in serie.influenced_by_fault:
421
+ try:
422
+ drifts.append(fault_drifts[name])
423
+ active_faults[name] = len(drifts) - 1
424
+ except KeyError:
425
+ pass
426
+ # print('Field for serie', serie.name, 'has', len(drifts), 'drifts.')
427
+ # print('with covariance:', covariance_data(potdata))
428
+ field = make_potential(cache, serie.name, potdata, drifts)
429
+ interfaces = []
430
+ for i, interface in enumerate(potdata.interfaces):
431
+ if len(interface) == 0:
432
+ pass
433
+ else:
434
+ mean_field_value = np.mean(field(interface))
435
+ values.append(mean_field_value)
436
+ formation = serie.formations[i]
437
+ interfaces.append(
438
+ (pile.reference + "-" + formation, mean_field_value)
439
+ )
440
+ fields.append(field)
441
+ register_pile_formation(formation)
442
+ relations.append(serie.relation)
443
+ series_info[serie.name] = SeriesInfo(
444
+ field, drifts, active_faults, interfaces
445
+ )
446
+ else:
447
+
448
+ def register_single_formation():
449
+ assert len(serie.formations) == 1
450
+ # print('registering dummy formation', serie.formations)
451
+ register_pile_formation(serie.formations[0])
452
+
453
+ if (pile.reference == "base" and Sk == 0) or (
454
+ pile.reference == "top" and Sk == len(pile.all_series) - 1
455
+ ):
456
+ register_single_formation()
457
+ found_dummy_formation = True
458
+ else:
459
+ pass
460
+ if not found_dummy_formation:
461
+ dummy_formations = [f for f in formations if f.is_dummy]
462
+ # when importing a GeoModeller project the DefaultCover dummy formation is not exported
463
+ if len(dummy_formations) == 0:
464
+ assert pile.reference in {"top", "base"}, "Unknown pile reference"
465
+ dummy = geomodeller_project.Formation(
466
+ name="Default" + {"top": "Cover", "base": "Base"}[pile.reference],
467
+ color=(0.3,) * 3,
468
+ is_dummy=True,
469
+ )
470
+ formations.append(dummy)
471
+ dummy_formations = [dummy]
472
+ assert len(dummy_formations) == 1, "A dummy formation is needed!"
473
+ if pile.reference == "base":
474
+ pile_formations.insert(0, dummy_formations[0].name)
475
+ else:
476
+ pile_formations.append(dummy_formations[0].name)
477
+ assert len(fields) == len(relations)
478
+ assert len(fields) + 1 == len(pile_formations)
479
+ self.fields = fields
480
+ self.formations = formations
481
+ self.formation_colors = {f.name: f.color for f in formations}
482
+ self.pile_formations = pile_formations
483
+ self.series_info = series_info
484
+ self.values = values
485
+ self.relations = relations
486
+ self.faults = faults
487
+ self.fault_ellipsoids = fault_ellipsoids
488
+ self.fault_drifts = fault_drifts
489
+ self.fault_stops_on = compute_fault_stops_on(self)
490
+
491
+ def collect_pile_information(self):
492
+ relations = list(self.relations)
493
+ if self.pile.reference == "base":
494
+ relations.insert(0, "onlap")
495
+ else:
496
+ relations.append("onlap")
497
+ return [
498
+ PileInfo(formation, self.formation_colors[formation], relation)
499
+ for formation, relation in zip(self.pile_formations, relations)
500
+ ]
501
+
502
+ def nbformations(self):
503
+ return len(self.pile_formations)
504
+
505
+ def nbcontacts(self):
506
+ # FIXME: this should have to be define rigorously...
507
+ return len(self.fields)
508
+
509
+ def getbox(self):
510
+ xmin, xmax = (self.box["Xmin"], self.box["Xmax"])
511
+ ymin, ymax = (self.box["Ymin"], self.box["Ymax"])
512
+ zmin, zmax = (self.box["Zmin"], self.box["Zmax"])
513
+ return Box(xmin, ymin, zmin, xmax, ymax, zmax)
514
+
515
+ def bbox(self):
516
+ xmin, xmax = (self.box["Xmin"], self.box["Xmax"])
517
+ ymin, ymax = (self.box["Ymin"], self.box["Ymax"])
518
+ zmin, zmax = (self.box["Zmin"], self.box["Zmax"])
519
+ return BBox3(xmin, xmax, ymin, ymax, zmin, zmax)
520
+
521
+ def domain(self, x, y, z):
522
+ return self.rank((x, y, z))
523
+
524
+ def rank_without_topography(self, p):
525
+ n = len(self.fields)
526
+ j1 = 0
527
+ j2 = n
528
+ # parcourir les erode decroissants
529
+ erosion_surfaces = [i for i in range(n) if self.relations[i] == "erode"]
530
+ for i in reversed(erosion_surfaces):
531
+ field = self.fields[i]
532
+ vp = field(p)
533
+ vi = self.values[i]
534
+ if vp > vi:
535
+ j1 = i
536
+ break
537
+ j2 = i
538
+ # parcourir les onlap croissants dans l'intervalle j1 j2
539
+ rank = j1
540
+ assert j1 == 0 or (
541
+ self.relations[j1] == "erode" and self.fields[j1](p) > self.values[j1]
542
+ )
543
+ rank = j1
544
+ for i in range(j1, j2):
545
+ field = self.fields[i]
546
+ vp = field(p)
547
+ vi = self.values[i]
548
+ # when i=j1>0 we are sure that vp<vi (previous test)
549
+ if vp < vi:
550
+ break
551
+ rank += 1
552
+ # print ("Which domain:", p[0], p[1], p[2], rank+1)
553
+ return rank + 1
554
+
555
+ def rank(self, p, consider_topography=True):
556
+ if consider_topography and self.topography(p) > 0:
557
+ return 0
558
+ return self.rank_without_topography(p)
559
+
560
+ def intersect(
561
+ self,
562
+ p1,
563
+ p2,
564
+ consider_formations=True,
565
+ consider_faults=False,
566
+ consider_topography=True,
567
+ precision=0.01,
568
+ ):
569
+ # print('-> intersect', p1, p2)
570
+ p = point_between(p1, p2, self.topography, 0, precision)
571
+ if p is not None:
572
+ return Intersection(p, self.topography)
573
+ # print(' no topo')
574
+ # test fault potential fields
575
+ if consider_faults:
576
+ for name, fault in self.faults.items():
577
+ p = point_between(p1, p2, fault, 0, precision)
578
+ if p is not None:
579
+ if self.is_fault_point_valid(p, name, consider_topography):
580
+ return Intersection(p, fault, fault=name)
581
+ # test potential fields
582
+ # print(' no faults')
583
+ if consider_formations:
584
+ n = len(self.fields)
585
+ for i in range(n):
586
+ p = point_between(p1, p2, self.fields[i], self.values[i], precision)
587
+ if p is not None:
588
+ if self.is_valid(p, i, consider_topography):
589
+ # print(' Found:', n, p, 'shape:', p.shape)
590
+ return Intersection(p, self.fields[i], self.values[i])
591
+ # print(' Nothing!')
592
+ return None
593
+
594
+ def is_valid(self, p, rank, with_topography=True):
595
+ if with_topography and self.topography(p) > 0:
596
+ return False
597
+ n = len(self.fields)
598
+ for i in range(rank + 1, n):
599
+ Ri = self.relations[i]
600
+ if Ri == "erode":
601
+ field = self.fields[i]
602
+ vp = field(p)
603
+ vi = self.values[i]
604
+ if vp > vi:
605
+ return False
606
+ R = self.relations[rank]
607
+ if R == "onlap":
608
+ for i in reversed(range(rank)):
609
+ field = self.fields[i]
610
+ vp = field(p)
611
+ vi = self.values[i]
612
+ if vp < vi:
613
+ return False
614
+ Ri = self.relations[i]
615
+ if Ri == "erode":
616
+ break
617
+ return True
618
+
619
+ def is_fault_point_valid(self, p, fault, with_topography=True):
620
+ if with_topography and self.topography(p) > 0:
621
+ return False
622
+ if self.is_finite_fault(fault) and self.fault_ellipsoids[fault](p) >= 1:
623
+ return False
624
+ for limit_info in self.fault_stops_on[fault]:
625
+ limit, side = limit_info
626
+ if self.faults[limit](p) * side < 0:
627
+ return False
628
+ return True
629
+
630
+ def rank_colors(self):
631
+ for formation in self.pile_formation:
632
+ result.append(self.formation_colors[formation])
633
+ return result
634
+
635
+ def stats(self):
636
+ result = []
637
+ minimum_distances = []
638
+
639
+ def register(name, data):
640
+ ng = data.nb_gradients
641
+ nc = data.nb_contact_points
642
+ result.append(
643
+ f"{name} has {ng:d} gradients values "
644
+ f"and {nc:d} contact points which make {ng + 3 * nc} dof"
645
+ )
646
+ mdg, mdc = data.minimum_distances()
647
+ result.append(f"\tminimum distances {mdg:f} {mdc:f}")
648
+ minimum_distances.append((mdg, mdc))
649
+
650
+ for serie, info in self.series_info.items():
651
+ if info.field is None:
652
+ result.append(serie + "has no potential field")
653
+ else:
654
+ register(f"serie {serie}", info.field.data())
655
+ for fault, info in self.faults.items():
656
+ register(f"fault {fault}", info.potential_field.data())
657
+ md = np.array(minimum_distances)
658
+ mdg = md[:, 0]
659
+ mdc = md[:, 1]
660
+ if np.any(mdg >= 0):
661
+ result.append(
662
+ f"Minimum distance between gradients: {np.min(mdg[mdg >= 0]):f}"
663
+ )
664
+ if np.any(mdg < 0):
665
+ result.append(
666
+ f"There are {np.sum(mdg < 0):d} series with a single gradient data!"
667
+ )
668
+ if np.any(mdg == 0): # This shall not happen (kriging matrix would be singular)
669
+ result.append(
670
+ f"There are {np.sum(mdg == 0):d} with confunded gradient data!"
671
+ )
672
+ if np.any(mdc >= 0):
673
+ result.append(
674
+ f"Minimum distance between contacts: {np.min(mdc[mdc >= 0]):f}"
675
+ )
676
+ if np.any(mdc < 0):
677
+ result.append(
678
+ f"There are {np.sum(mdc < 0):d} series with a single contact data!"
679
+ )
680
+ if np.any(mdc == 0): # This shall not happen (kriging matrix would be singular)
681
+ result.append(
682
+ f"There are {np.sum(mdc == 0):d} series with a condunded contact data!"
683
+ )
684
+ return "\n".join(result)
685
+
686
+ def diagonal_section(self, flip=False):
687
+ box = self.getbox()
688
+ if flip:
689
+ diagonal = Polyline([[box.xmin, box.ymax, 0], [box.xmax, box.ymin, 0]])
690
+ else:
691
+ diagonal = Polyline([[box.xmin, box.ymin, 0], [box.xmax, box.ymax, 0]])
692
+ return VerticalSection(diagonal, box.zmin, box.zmax)
693
+
694
+ def x_section(self, x=None, flip=False):
695
+ box = self.getbox()
696
+ x = x or 0.5 * (box.xmin + box.xmax)
697
+ if flip:
698
+ path = Polyline([[x, box.ymax, 0], [x, box.ymin, 0]])
699
+ else:
700
+ path = Polyline([[x, box.ymin, 0], [x, box.ymax, 0]])
701
+ return VerticalSection(path, box.zmin, box.zmax)
702
+
703
+ def y_section(self, y=None, flip=False):
704
+ box = self.getbox()
705
+ y = y or 0.5 * (box.ymin + box.ymax)
706
+ if flip:
707
+ path = Polyline([[box.xmax, y, 0], [box.xmin, y, 0]])
708
+ else:
709
+ path = Polyline([[box.xmin, y, 0], [box.xmax, y, 0]])
710
+ return VerticalSection(path, box.zmin, box.zmax)
711
+
712
+ def ranks_to_rgb_picture(self, ranks, atmopshere_color=(0, 0, 0)):
713
+ picture = np.zeros((*ranks.shape, 3), dtype=np.uint8)
714
+ pile = self.collect_pile_information()
715
+ rank_color = [atmopshere_color] + [
716
+ [int(col * 255) for col in formation.color] for formation in pile
717
+ ]
718
+ assert np.all((ranks >= 0) & (ranks < len(rank_color))), (
719
+ "Inconsistency in domain indexing!"
720
+ )
721
+ for fi, color in enumerate(rank_color):
722
+ picture[ranks == fi] = color
723
+ return picture
724
+
725
+ def is_finite_fault(self, name):
726
+ return name in self.fault_ellipsoids
727
+
728
+ @property
729
+ def has_finite_faults(self):
730
+ return any(name in self.fault_ellipsoids for name in self.faults)
731
+
732
+ def rgb_picture(
733
+ self,
734
+ section,
735
+ width,
736
+ height=None,
737
+ atmopshere_color=(0, 0, 0),
738
+ return_ranks=False,
739
+ ):
740
+ if height is None:
741
+ width, height = image_ratio(section, width)
742
+ ranks = np.array([self.rank(p) for p in section.grid(width, height)])
743
+ ranks.shape = width, height
744
+ ranks = np.transpose(ranks)[::-1]
745
+ picture = self.ranks_to_rgb_picture(ranks, atmopshere_color)
746
+ if return_ranks:
747
+ return picture, ranks
748
+ return picture
749
+
750
+ def topography_as_elevation_surface(self):
751
+ topo = self.topography
752
+ if hasattr(topo, "origin"):
753
+ zmap = np.transpose(topo.z)[::-1]
754
+ return ElevationRaster(topo.origin, topo.steps, zmap)
755
+ return ConstantElevationSurface(topo.z)
756
+
757
+ def implicit_topography(self):
758
+ return ImplicitTopography(self.topography_as_elevation_surface())