forgeo-gmlib 0.6.2__cp314-cp314-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.abi3.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.abi3.so +0 -0
  12. forgeo/gmlib/pypotential3D.abi3.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,396 @@
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
+
7
+ import os
8
+ from collections import namedtuple
9
+
10
+ import numpy as np
11
+ from lxml.builder import ElementMaker
12
+
13
+ from forgeo.gmlib import myxmltools as mx
14
+ from forgeo.gmlib import topography_reader
15
+ from forgeo.gmlib.geomodeller_data import (
16
+ CovarianceModel,
17
+ FaultData,
18
+ GradientData,
19
+ Pile,
20
+ PotentialData,
21
+ SeriesData,
22
+ )
23
+
24
+ Formation = namedtuple("Formation", ["name", "color", "is_dummy"])
25
+ GmlCoord = namedtuple("GmlCoord", ["x", "y", "z"])
26
+ DrillHole = namedtuple("DrillHole", ["name", "total_depth", "collar"])
27
+
28
+ # FIXME: this sould not be static
29
+ nsmap = {"geo": "http://www.geomodeller.com/geo", "gml": "http://www.opengis.net/gml"}
30
+ geo = ElementMaker(namespace=nsmap["geo"])
31
+ gml = ElementMaker(namespace=nsmap["gml"])
32
+
33
+
34
+ def extract_coord(node, tag):
35
+ pts = []
36
+ coords = node.find(tag)
37
+ if coords is not None:
38
+ for coord in coords:
39
+ P = GmlCoord(
40
+ *tuple(
41
+ np.double(coord.find(axis).text)
42
+ for axis in (gml.X().tag, gml.Y().tag, gml.Z().tag)
43
+ )
44
+ )
45
+ pts.append(P)
46
+ return pts
47
+
48
+
49
+ def extract_crs(xml_root):
50
+ assert xml_root.tag == geo.Project3DEdit().tag
51
+ try:
52
+ gmcrs = xml_root.attrib["CoordSystem"]
53
+ except KeyError:
54
+ gmcrs = None
55
+ try:
56
+ qgiscrs = xml_root.attrib["QGisCRS"]
57
+ except KeyError:
58
+ qgiscrs = None
59
+ return gmcrs, qgiscrs
60
+
61
+
62
+ def read_box(xml_root):
63
+ extent = xml_root.find(geo.Extent3DOfProject().tag)
64
+ extentbox = extent.find(geo.ExtentBox3D().tag)
65
+ extent3D = extentbox.find(geo.Extent3D().tag)
66
+ xy = extent3D.find(geo.ExtentXY().tag)
67
+ limits = {}
68
+ for s, val in xy.items():
69
+ limits[s] = float(val)
70
+ z = extent3D.find(geo.ExtentZ().tag)
71
+ for s, val in z.items():
72
+ limits[s] = float(val)
73
+ return limits
74
+
75
+
76
+ def read_color(root):
77
+ color = None
78
+ graphic = root.find(geo.Graphic().tag)
79
+ if graphic is not None:
80
+ shading = graphic.find(geo.ColorShading().tag)
81
+ color = tuple(
82
+ int(shading.attrib[name]) / 255.0 # convert to float RGB
83
+ for name in ("Red", "Green", "Blue")
84
+ )
85
+ return color
86
+
87
+
88
+ def read_formations(xml_root):
89
+ formations = xml_root.find(geo.Formations().tag)
90
+ result = []
91
+
92
+ def extract_formation(formation, is_dummy=False):
93
+ name = formation.attrib["Name"]
94
+ color = read_color(formation)
95
+ return Formation(name, color, is_dummy)
96
+
97
+ if formations is not None:
98
+ for formation in formations.findall(geo.Formation().tag):
99
+ result.append(extract_formation(formation))
100
+ for formation in formations.findall(geo.DummyFormation().tag):
101
+ result.append(extract_formation(formation, True))
102
+ return result
103
+
104
+
105
+ def find_topography_sections(xml_root):
106
+ topography_sections = []
107
+ sections = xml_root.find(geo.Sections().tag)
108
+ if sections is not None:
109
+ for section in sections.findall(geo.Section().tag):
110
+ if "IsTopography" in section:
111
+ if section.attrib["IsTopography"] == "true":
112
+ topography_sections.append(section)
113
+ return topography_sections
114
+
115
+
116
+ def extract_drillholes(xml_root):
117
+ drillholes = []
118
+ dhs = xml_root.find(geo.DrillHoles().tag)
119
+ if dhs is not None:
120
+ for dh in dhs.findall(geo.DrillholeWithFields().tag):
121
+ name = dh.attrib["Name"]
122
+ total_depth = float(dh.attrib["TotalDepth"])
123
+ collar_pos = extract_coord(dh, geo.Collar().tag)
124
+ assert len(collar_pos) == 1
125
+ drillholes.append(DrillHole(name, total_depth, collar_pos[0]))
126
+ return drillholes
127
+
128
+
129
+ def read_topography_info(xml_root):
130
+ topography_sections = find_topography_sections(xml_root)
131
+ if not topography_sections:
132
+ return None
133
+ assert len(topography_sections) == 1 # only one topography section!!!
134
+ section = topography_sections[0]
135
+ shape = section.find(geo.Shape3DOfSection().tag)
136
+ return section.attrib["Name"], shape.attrib["FileName"]
137
+
138
+
139
+ def read_data(xml_root):
140
+ data = xml_root.findall(geo.Data().tag)
141
+ return [d.attrib["Name"] for d in data]
142
+
143
+
144
+ def read_potential_data(xml_root, box, scalardt, maximum_number_of_interfaces=None):
145
+ field = xml_root.find(geo.PotentialField().tag)
146
+ if field is None:
147
+ return None
148
+ glocs = []
149
+ gvals = []
150
+ interfaces = []
151
+ covariance_model = CovarianceModel(field.find(geo.covariance().tag), box)
152
+ constraints = field.find(geo.Constraints().tag)
153
+ if constraints is not None:
154
+ if any(constraint.attrib["value"] != "0" for constraint in constraints):
155
+ mess = "inequality constraints are not handled for now"
156
+ raise NotImplementedError(mess)
157
+ gradients = field.find(geo.Gradients().tag)
158
+ if gradients is not None:
159
+ for gradient in gradients.iterfind(geo.Gradient().tag):
160
+ V = tuple(scalardt.type(gradient.attrib[s]) for s in ("Gx", "Gy", "Gz"))
161
+ gvals.append(V)
162
+ P = tuple(scalardt.type(gradient.attrib[s]) for s in ("XGr", "YGr", "ZGr"))
163
+ glocs.append(P)
164
+ pts = extract_coord(field, geo.Points().tag)
165
+ interface_points = field.find(geo.InterfacePoints().tag)
166
+ for interface in interface_points:
167
+
168
+ def attr_as_int(s):
169
+ return int(interface.attrib[s])
170
+
171
+ interfaces.append((attr_as_int("pnt"), attr_as_int("npnt")))
172
+ if maximum_number_of_interfaces is not None:
173
+ assert len(interfaces) >= maximum_number_of_interfaces, (
174
+ "Not enough interfaces read."
175
+ )
176
+ del interfaces[maximum_number_of_interfaces:]
177
+
178
+ def array_of_scalars(v):
179
+ return np.array(v, dtype=scalardt)
180
+
181
+ potdata = PotentialData()
182
+ potdata.covariance_model = covariance_model
183
+ potdata.gradients = GradientData(array_of_scalars(glocs), array_of_scalars(gvals))
184
+ pts = array_of_scalars(pts)
185
+ potdata.interfaces = [pts[start : start + nb] for start, nb in interfaces]
186
+ return potdata
187
+
188
+
189
+ def extract_raw_faults_data(root, scalardt):
190
+ faults_data = {}
191
+ faults = root.find(geo.Faults().tag)
192
+ if faults is not None:
193
+ for fault in faults.findall(geo.Fault().tag):
194
+ data = FaultData(fault.attrib["Name"])
195
+ geology = fault.find(geo.FaultGeology().tag).attrib
196
+ if int(geology["FAULT_TYPE"]) == 1: # finite fault
197
+ data.infinite = False
198
+ data.center_type = None
199
+ center_type = geology["CENTER_TYPE"]
200
+ if center_type == "0":
201
+ data.center_type = "mean_center"
202
+ elif center_type == "1":
203
+ data.center_type = "databox_center"
204
+ else:
205
+ assert center_type == "2"
206
+ data.center_type = (
207
+ scalardt.type(geology["CENTERX"]),
208
+ scalardt.type(geology["CENTERY"]),
209
+ scalardt.type(geology["CENTERZ"]),
210
+ )
211
+ data.lateral_extent = scalardt.type(geology["LATERAL_EXTENT"])
212
+ data.vertical_extent = scalardt.type(geology["VERTICAL_EXTENT"])
213
+ data.influence_radius = scalardt.type(geology["RADIUS_OF_INFLUENCE"])
214
+ for other in fault.iterfind(geo.StopsOnFault().tag):
215
+ data.stops_on.append(other.attrib["Name"])
216
+ data.color = read_color(fault)
217
+ faults_data[data.name] = data
218
+ return faults_data
219
+
220
+
221
+ def read_modeled_faults_data(root, box, scalardt):
222
+ faults_data = extract_raw_faults_data(root, scalardt)
223
+ if faults_data:
224
+ model = root.find(geo.GeologicalModel().tag)
225
+ if model is not None:
226
+ modelfaults = model.find(geo.ModelFaults().tag)
227
+ if modelfaults is not None:
228
+ faultpotentials = modelfaults.findall(geo.PotentialFault().tag)
229
+ for fault in faultpotentials:
230
+ data = read_data(fault)
231
+ assert len(data) == 1
232
+ name = data[0]
233
+ potdata = read_potential_data(fault, box, scalardt)
234
+ faults_data[name].potential_data = potdata
235
+ deleted_faults = [
236
+ name for name, data in faults_data.items() if data.potential_data is None
237
+ ]
238
+ for name in deleted_faults:
239
+ del faults_data[name]
240
+ return faults_data
241
+
242
+
243
+ def read_pile(root, box, scalardt):
244
+ pile = None
245
+ model = root.find(geo.GeologicalModel().tag)
246
+ if model is not None:
247
+ project_column = model.find(geo.ProjectStratigraphicColumn().tag)
248
+ # modelseries = model.find(geo.ModelStratigraphicColumn().tag)
249
+ # for serie in modelseries:
250
+ # modelseries.find('geo:Data',ns)
251
+ # name = serie.attrib['Name']
252
+ # print (name)
253
+
254
+ reference = {"true": "base", "false": "top"}[project_column.attrib["IsBase"]]
255
+ pile = Pile(reference)
256
+ all_series = []
257
+ for serie in project_column:
258
+ # read data
259
+ name = serie.attrib["name"]
260
+ serie_data = SeriesData(name)
261
+ serie_data.relation = {"1": "onlap", "2": "erode"}[serie.attrib["relation"]]
262
+ serie_data.formations = read_data(serie)
263
+ all_influencing_faults = serie.findall(geo.InfluencedByFault().tag)
264
+ influenced_by_fault = [f.attrib["Name"] for f in all_influencing_faults]
265
+ if influenced_by_fault:
266
+ serie_data.influenced_by_fault = influenced_by_fault
267
+ serie_data.potential_data = read_potential_data(serie, box, scalardt)
268
+ if serie_data.potential_data is not None:
269
+ if len(serie_data.potential_data.interfaces) > len(
270
+ serie_data.formations
271
+ ):
272
+ if len(serie_data.formations) == 1:
273
+ pass
274
+ else:
275
+ pass
276
+ serie_data.potential_data = read_potential_data(
277
+ serie, box, scalardt, len(serie_data.formations)
278
+ )
279
+ assert serie_data.potential_data is None or len(
280
+ serie_data.potential_data.interfaces
281
+ ) == len(serie_data.formations), f"Inconsitent {name} series."
282
+ all_series.append(serie_data)
283
+ model_column = model.find(geo.ModelStratigraphicColumn().tag)
284
+ if model_column is not None:
285
+ selection = [data.attrib["Name"] for data in model_column]
286
+ series_selection = [
287
+ serie for serie in all_series if serie.name in selection
288
+ ]
289
+ for ref, loc in (("base", 0), ("top", -1)):
290
+ if pile.reference == ref:
291
+ dummy_serie = all_series[loc]
292
+ if (
293
+ dummy_serie.name not in selection
294
+ and dummy_serie.potential_data is None
295
+ ):
296
+ series_selection.insert(loc, dummy_serie)
297
+ all_series = series_selection
298
+ pile.all_series = all_series
299
+ return pile
300
+
301
+
302
+ def extract_tree(filepath):
303
+ if os.path.islink(filepath):
304
+ filepath = os.readlink(filepath)
305
+ filepath = os.path.realpath(filepath)
306
+ tree = mx.parse(filepath)
307
+ root = tree.getroot()
308
+ for ns, uri in nsmap.items():
309
+ assert ns in root.nsmap
310
+ assert root.nsmap[ns] == uri
311
+ return tree
312
+
313
+
314
+ def extract_project_data(filepath, scalardt=np.dtype("d"), skip_topography=False):
315
+ root = extract_tree(filepath).getroot()
316
+ crs = extract_crs(root)
317
+ box = read_box(root)
318
+ faults_data = read_modeled_faults_data(root, box, scalardt)
319
+ pile = read_pile(root, box, scalardt)
320
+ topography_info = None if skip_topography else read_topography_info(root)
321
+ if topography_info is None:
322
+ topography = topography_reader.ImplicitHorizontalPlane(box["Zmax"])
323
+ else:
324
+ _name, filename = topography_info
325
+ project_directory = os.path.split(filepath)[0]
326
+ topography = topography_reader.sec_extract(
327
+ os.path.join(project_directory, filename)
328
+ )
329
+ formations = read_formations(root)
330
+ return {
331
+ "box": box,
332
+ "crs": crs,
333
+ "pile": pile,
334
+ "faults_data": faults_data,
335
+ "topography": topography,
336
+ "formations": formations,
337
+ }
338
+
339
+
340
+ def extract_project_drillholes(filepath):
341
+ root = extract_tree(filepath).getroot()
342
+ return extract_drillholes(root)
343
+
344
+
345
+ def make_center(aSerie, xmin, xmax, ymin, ymax, zmin, zmax):
346
+ cx = (xmin + xmax) / 2
347
+ cy = (ymin + ymax) / 2
348
+ cz = (zmin + zmax) / 2
349
+ Themax = xmax - xmin
350
+ pts = aSerie.potential_data.interfaces.points
351
+ # interfaces
352
+ for p in pts:
353
+ x = 0.5 + (p[0] - cx) / Themax
354
+ y = 0.5 + (p[1] - cy) / Themax
355
+ z = 0.5 + (p[2] - cz) / Themax
356
+ p[0] = x
357
+ p[1] = y
358
+ p[2] = z
359
+
360
+ gpts = aSerie.potential_data.gradients.locations
361
+ # gradients
362
+ for p in gpts:
363
+ x = 0.5 + (p[0] - cx) / Themax
364
+ y = 0.5 + (p[1] - cy) / Themax
365
+ z = 0.5 + (p[2] - cz) / Themax
366
+ p[0] = x
367
+ p[1] = y
368
+ p[2] = z
369
+
370
+ cov = aSerie.potential_data.covariance_model
371
+ cov.range = cov.range / Themax
372
+
373
+
374
+ if __name__ == "__main__":
375
+ import sys
376
+
377
+ from matplotlib import pyplot as plt
378
+
379
+ if len(sys.argv) > 1:
380
+ projectfile = sys.argv[1]
381
+ if os.path.exists(projectfile):
382
+ assert not os.path.islink(projectfile)
383
+ data = extract_project_data(projectfile)
384
+ box, pile, faults_data, topography, fcolors = data
385
+ nx, ny = 200, 200
386
+ xmin, xmax = box["Xmin"], box["Xmax"]
387
+ ymin, ymax = box["Ymin"], box["Ymax"]
388
+ xy = np.meshgrid(
389
+ np.linspace(xmin, xmax, nx), np.linspace(ymin, ymax, ny), indexing="ij"
390
+ )
391
+ x, y = (a.ravel() for a in xy)
392
+ z = np.array([topography.evaluate_z((xi, yi)) for xi, yi in zip(x, y)])
393
+ z.shape = nx, ny
394
+ plt.gca().set_aspect("equal")
395
+ box = (xmin, xmax, ymin, ymax)
396
+ plt.imshow(np.transpose(z)[::-1], extent=box)
@@ -0,0 +1,30 @@
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
+ """
7
+ Created on Mon Jul 18 12:12:46 2016
8
+
9
+ @author: lopez
10
+ """
11
+
12
+ import os
13
+
14
+ from lxml import etree
15
+
16
+
17
+ def parse(filename):
18
+ assert os.path.exists(filename)
19
+ # cf. https://lxml.de/FAQ.html#why-doesn-t-the-pretty-print-option-reformat-my-xml-output
20
+ parser = etree.XMLParser(remove_blank_text=True)
21
+ return etree.parse(filename, parser)
22
+
23
+
24
+ def create_child_if_needed(parent, tag):
25
+ """The parent namespace will be used."""
26
+ qname = etree.QName(etree.QName(parent).namespace, tag)
27
+ child = parent.find(qname)
28
+ if child is None:
29
+ child = etree.SubElement(parent, qname)
30
+ return child
Binary file
Binary file
@@ -0,0 +1,236 @@
1
+ import contextlib
2
+ from collections import defaultdict
3
+ from pathlib import Path
4
+
5
+ import numpy as np
6
+ from pycgal.Polygon_mesh_processing import (
7
+ border_halfedges,
8
+ connected_components,
9
+ extract_zmap_corners_and_borders,
10
+ isotropic_remeshing,
11
+ remove_connected_components,
12
+ split,
13
+ split_long_edges,
14
+ triangulate_faces,
15
+ )
16
+ from pycgal.Surface_mesh import Edges, Surface_mesh
17
+ from skimage.measure import marching_cubes
18
+
19
+ from .GeologicalModel3D import GeologicalModel
20
+
21
+
22
+ def _remove_unvalid_side(S, limit, valid_side):
23
+ connected_components(S, "f:component")
24
+ components = S.face_property("f:component")
25
+ values = set()
26
+ faces = []
27
+ for f in S.faces():
28
+ compf = components[f]
29
+ if compf not in values:
30
+ values.add(compf)
31
+ face_center = np.array(S.centroid(f), copy=False)[None, :]
32
+ if valid_side * limit(face_center) <= 0:
33
+ faces.append(f)
34
+ remove_connected_components(S, faces)
35
+
36
+
37
+ def _split_border_edges(S, ds2):
38
+ """
39
+ Check that border edges are compliant for isotropic remeshing.
40
+ """
41
+ border_edges = Edges(S, border_halfedges(S))
42
+ split_long_edges(S, (4 / 3) * ds2, border_edges)
43
+
44
+
45
+ def _tesselate_horizontal_plane(box, z, target_squared_edge=None):
46
+ if box.zmin > z or box.zmax < z:
47
+ return Surface_mesh()
48
+ vertices = np.array(
49
+ [
50
+ (box.xmin, box.ymin, box.zmax),
51
+ (box.xmax, box.ymin, box.zmax),
52
+ (box.xmax, box.ymax, box.zmax),
53
+ (box.xmin, box.ymax, box.zmax),
54
+ ]
55
+ )
56
+ square = np.array([[0, 1, 2, 3]])
57
+ mesh = Surface_mesh(vertices, square)
58
+ corners, _borders = extract_zmap_corners_and_borders(mesh)
59
+ assert len(corners) == 4
60
+ triangulate_faces(mesh)
61
+ if target_squared_edge:
62
+ isotropic_remeshing(mesh, target_squared_edge, constrained_vertices=corners)
63
+ return mesh
64
+
65
+
66
+ class FaultTesselator:
67
+ def __init__(self, box, shape, model):
68
+ self.shape = nx, ny, nz = shape
69
+ self.ds2 = min(
70
+ (box.xmax - box.xmin) / nx,
71
+ (box.ymax - box.ymin) / ny,
72
+ (box.zmax - box.zmin) / nz,
73
+ )
74
+ steps = (
75
+ np.linspace(box.xmin, box.xmax, nx),
76
+ np.linspace(box.ymin, box.ymax, ny),
77
+ np.linspace(box.zmin, box.zmax, nz),
78
+ )
79
+ coordinates = np.meshgrid(*steps, indexing="ij")
80
+ grid_points = np.stack(coordinates, axis=-1)
81
+ grid_points.shape = (-1, 3)
82
+ self.model = model
83
+ self.box = box
84
+ self.grid_points = grid_points
85
+ self.fault_surfaces = None
86
+ self.tesselate()
87
+
88
+ def rescale_into_box(self, pts):
89
+ box = self.box
90
+ nx, ny, nz = self.shape
91
+ return pts * np.array(
92
+ [
93
+ (box.xmax - box.xmin) / (nx - 1),
94
+ (box.ymax - box.ymin) / (ny - 1),
95
+ (box.zmax - box.zmin) / (nz - 1),
96
+ ]
97
+ ) + np.array([box.xmin, box.ymin, box.zmin])
98
+
99
+ def tesselate_functor(self, f, target_level=0):
100
+ """Will tesellate the target_level isolevel surface of the scalar functor f
101
+ using the discretization parameters of the self instance (grid_points, ds2...).
102
+ :param target_level: defaults to 0
103
+ """
104
+ field_value = f(self.grid_points)
105
+ if np.all(field_value < target_level) or np.all(field_value > target_level):
106
+ return Surface_mesh()
107
+ field_value.shape = self.shape
108
+ isocontour = marching_cubes(field_value, level=target_level)
109
+ vertices, faces, *_ = isocontour
110
+ vertices = self.rescale_into_box(vertices)
111
+ S = Surface_mesh(vertices, faces)
112
+ _split_border_edges(S, self.ds2)
113
+ isotropic_remeshing(S, self.ds2, do_project=True, protect_constraints=True)
114
+ return S
115
+
116
+ def sort_faults(self):
117
+ """
118
+ Will sort faults from the most subordinated to the major ones.
119
+ There is only a partial order relation between faults.
120
+ """
121
+ # find the faults that a given fault limits (reverse of stops on)
122
+ fault_limits = defaultdict(set)
123
+ model = self.model
124
+ for name, fault_data in model.faults_data.items():
125
+ fault_limits[name].update(set())
126
+ for limit in fault_data.stops_on:
127
+ fault_limits[limit].add(name)
128
+ sorted_faults = []
129
+ faults = set(model.faults.keys())
130
+ while len(faults) > 0:
131
+ subordinated_faults = {
132
+ fault for fault, limits in fault_limits.items() if len(limits) == 0
133
+ }
134
+ for limits in fault_limits.values():
135
+ limits -= subordinated_faults
136
+ for fault in subordinated_faults:
137
+ fault_limits.pop(fault)
138
+ sorted_faults.extend(subordinated_faults)
139
+ faults -= subordinated_faults
140
+ return sorted_faults
141
+
142
+ def tesselate_topography(self):
143
+ model = self.model
144
+ # Retrieve the exact DTM
145
+ # topography = Surface_mesh(*model.topography.underlying_dtm())
146
+ # or use a topography approximation
147
+ try:
148
+ z_plane = model.topography.z
149
+ except AttributeError:
150
+ z_plane = None
151
+ if type(z_plane) is float:
152
+ topography = _tesselate_horizontal_plane(self.box, z_plane, self.ds2)
153
+ else:
154
+ topography = self.tesselate_functor(model.topography)
155
+ self.topography = topography
156
+
157
+ def tesselate(self):
158
+ self.tesselate_topography()
159
+ topography = self.topography
160
+ model = self.model
161
+
162
+ fault_surfaces = {}
163
+
164
+ for name, field in model.faults.items():
165
+ fault_surfaces[name] = self.tesselate_functor(field)
166
+
167
+ for name in self.sort_faults():
168
+ fault_data = model.faults_data[name]
169
+ S = fault_surfaces[name]
170
+ if S.is_empty():
171
+ continue
172
+ points = fault_data.potential_data.interfaces[0]
173
+ # Clip with topography
174
+ split(S, topography)
175
+ # FIXME: as defined here the depth functor maybe inaccurate
176
+ # we should project the point onto the tesselated DTM surface
177
+ _remove_unvalid_side(S, model.topography, -1)
178
+ # Clip with limiting faults
179
+ for limit in fault_data.stops_on:
180
+ FL = model.faults[limit]
181
+ SL = fault_surfaces[limit]
182
+ if SL.is_empty():
183
+ continue
184
+ split(S, SL)
185
+ _remove_unvalid_side(S, FL, np.mean(FL(points)))
186
+ # Clip finite faults at the end
187
+ # that makes that the *infinite extension of finite faults*
188
+ # can limit other faults
189
+ if not fault_data.infinite:
190
+ assert model.is_finite_fault(name)
191
+ ellipsoid = model.fault_ellipsoids[name]
192
+ E = self.tesselate_functor(ellipsoid)
193
+ if not E.is_empty():
194
+ split(S, E)
195
+ _remove_unvalid_side(S, ellipsoid, -1)
196
+
197
+ self.fault_surfaces = fault_surfaces
198
+
199
+
200
+ def tesselate_faults(box, shape, model, with_topography=False):
201
+ tesselator = FaultTesselator(box, shape, model)
202
+ if with_topography:
203
+ return tesselator.fault_surfaces, tesselator.topography
204
+ return tesselator.fault_surfaces
205
+
206
+
207
+ if __name__ == "__main__":
208
+ import sys
209
+
210
+ filepath = Path(sys.argv[1])
211
+ if filepath.exists():
212
+ model = GeologicalModel(str(filepath.absolute()))
213
+ else:
214
+ msg = f"{filepath} not found!"
215
+ raise OSError(msg)
216
+
217
+ shape = (20,) * 3
218
+ fault_surfaces, topography = tesselate_faults(
219
+ model.getbox(), shape, model, with_topography=True
220
+ )
221
+
222
+ vtkw = None
223
+ with contextlib.suppress(ModuleNotFoundError):
224
+ import vtkwriters as vtkw
225
+
226
+ if vtkw is not None:
227
+
228
+ def to_vtu(S, name):
229
+ if S.number_of_faces() == 0:
230
+ return
231
+ v, t = S.as_arrays()
232
+ vtkw.write_vtu(vtkw.vtu_doc(v, t[0]), f"{name}.vtu")
233
+
234
+ to_vtu(topography, f"{filepath.stem}_topography")
235
+ for name, S in fault_surfaces.items():
236
+ to_vtu(S, f"{filepath.stem}_fault_surface_{name}")