xtgeo 4.14.1__cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_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.

Potentially problematic release.


This version of xtgeo might be problematic. Click here for more details.

Files changed (658) hide show
  1. cxtgeo.py +558 -0
  2. cxtgeoPYTHON_wrap.c +19537 -0
  3. xtgeo/__init__.py +248 -0
  4. xtgeo/_cxtgeo.cpython-310-x86_64-linux-gnu.so +0 -0
  5. xtgeo/_internal.cpython-310-x86_64-linux-gnu.so +0 -0
  6. xtgeo/common/__init__.py +19 -0
  7. xtgeo/common/_angles.py +29 -0
  8. xtgeo/common/_xyz_enum.py +50 -0
  9. xtgeo/common/calc.py +396 -0
  10. xtgeo/common/constants.py +30 -0
  11. xtgeo/common/exceptions.py +42 -0
  12. xtgeo/common/log.py +93 -0
  13. xtgeo/common/sys.py +166 -0
  14. xtgeo/common/types.py +18 -0
  15. xtgeo/common/version.py +34 -0
  16. xtgeo/common/xtgeo_dialog.py +604 -0
  17. xtgeo/cube/__init__.py +9 -0
  18. xtgeo/cube/_cube_export.py +214 -0
  19. xtgeo/cube/_cube_import.py +532 -0
  20. xtgeo/cube/_cube_roxapi.py +180 -0
  21. xtgeo/cube/_cube_utils.py +287 -0
  22. xtgeo/cube/_cube_window_attributes.py +273 -0
  23. xtgeo/cube/cube1.py +1023 -0
  24. xtgeo/grid3d/__init__.py +15 -0
  25. xtgeo/grid3d/_ecl_grid.py +778 -0
  26. xtgeo/grid3d/_ecl_inte_head.py +152 -0
  27. xtgeo/grid3d/_ecl_logi_head.py +71 -0
  28. xtgeo/grid3d/_ecl_output_file.py +81 -0
  29. xtgeo/grid3d/_egrid.py +1004 -0
  30. xtgeo/grid3d/_find_gridprop_in_eclrun.py +625 -0
  31. xtgeo/grid3d/_grdecl_format.py +309 -0
  32. xtgeo/grid3d/_grdecl_grid.py +400 -0
  33. xtgeo/grid3d/_grid3d.py +29 -0
  34. xtgeo/grid3d/_grid3d_fence.py +284 -0
  35. xtgeo/grid3d/_grid3d_utils.py +228 -0
  36. xtgeo/grid3d/_grid_boundary.py +76 -0
  37. xtgeo/grid3d/_grid_etc1.py +1683 -0
  38. xtgeo/grid3d/_grid_export.py +222 -0
  39. xtgeo/grid3d/_grid_hybrid.py +50 -0
  40. xtgeo/grid3d/_grid_import.py +79 -0
  41. xtgeo/grid3d/_grid_import_ecl.py +101 -0
  42. xtgeo/grid3d/_grid_import_roff.py +135 -0
  43. xtgeo/grid3d/_grid_import_xtgcpgeom.py +375 -0
  44. xtgeo/grid3d/_grid_refine.py +258 -0
  45. xtgeo/grid3d/_grid_roxapi.py +292 -0
  46. xtgeo/grid3d/_grid_translate_coords.py +154 -0
  47. xtgeo/grid3d/_grid_wellzone.py +165 -0
  48. xtgeo/grid3d/_gridprop_export.py +202 -0
  49. xtgeo/grid3d/_gridprop_import_eclrun.py +164 -0
  50. xtgeo/grid3d/_gridprop_import_grdecl.py +132 -0
  51. xtgeo/grid3d/_gridprop_import_roff.py +52 -0
  52. xtgeo/grid3d/_gridprop_import_xtgcpprop.py +168 -0
  53. xtgeo/grid3d/_gridprop_lowlevel.py +171 -0
  54. xtgeo/grid3d/_gridprop_op1.py +272 -0
  55. xtgeo/grid3d/_gridprop_roxapi.py +301 -0
  56. xtgeo/grid3d/_gridprop_value_init.py +140 -0
  57. xtgeo/grid3d/_gridprops_import_eclrun.py +344 -0
  58. xtgeo/grid3d/_gridprops_import_roff.py +83 -0
  59. xtgeo/grid3d/_roff_grid.py +470 -0
  60. xtgeo/grid3d/_roff_parameter.py +303 -0
  61. xtgeo/grid3d/grid.py +3010 -0
  62. xtgeo/grid3d/grid_properties.py +699 -0
  63. xtgeo/grid3d/grid_property.py +1313 -0
  64. xtgeo/grid3d/types.py +15 -0
  65. xtgeo/include/eigen3/Eigen/Cholesky +45 -0
  66. xtgeo/include/eigen3/Eigen/CholmodSupport +48 -0
  67. xtgeo/include/eigen3/Eigen/Core +384 -0
  68. xtgeo/include/eigen3/Eigen/Dense +7 -0
  69. xtgeo/include/eigen3/Eigen/Eigen +2 -0
  70. xtgeo/include/eigen3/Eigen/Eigenvalues +60 -0
  71. xtgeo/include/eigen3/Eigen/Geometry +59 -0
  72. xtgeo/include/eigen3/Eigen/Householder +29 -0
  73. xtgeo/include/eigen3/Eigen/IterativeLinearSolvers +48 -0
  74. xtgeo/include/eigen3/Eigen/Jacobi +32 -0
  75. xtgeo/include/eigen3/Eigen/KLUSupport +41 -0
  76. xtgeo/include/eigen3/Eigen/LU +47 -0
  77. xtgeo/include/eigen3/Eigen/MetisSupport +35 -0
  78. xtgeo/include/eigen3/Eigen/OrderingMethods +70 -0
  79. xtgeo/include/eigen3/Eigen/PaStiXSupport +49 -0
  80. xtgeo/include/eigen3/Eigen/PardisoSupport +35 -0
  81. xtgeo/include/eigen3/Eigen/QR +50 -0
  82. xtgeo/include/eigen3/Eigen/QtAlignedMalloc +39 -0
  83. xtgeo/include/eigen3/Eigen/SPQRSupport +34 -0
  84. xtgeo/include/eigen3/Eigen/SVD +50 -0
  85. xtgeo/include/eigen3/Eigen/Sparse +34 -0
  86. xtgeo/include/eigen3/Eigen/SparseCholesky +37 -0
  87. xtgeo/include/eigen3/Eigen/SparseCore +69 -0
  88. xtgeo/include/eigen3/Eigen/SparseLU +50 -0
  89. xtgeo/include/eigen3/Eigen/SparseQR +36 -0
  90. xtgeo/include/eigen3/Eigen/StdDeque +27 -0
  91. xtgeo/include/eigen3/Eigen/StdList +26 -0
  92. xtgeo/include/eigen3/Eigen/StdVector +27 -0
  93. xtgeo/include/eigen3/Eigen/SuperLUSupport +64 -0
  94. xtgeo/include/eigen3/Eigen/UmfPackSupport +40 -0
  95. xtgeo/include/eigen3/Eigen/src/Cholesky/LDLT.h +688 -0
  96. xtgeo/include/eigen3/Eigen/src/Cholesky/LLT.h +558 -0
  97. xtgeo/include/eigen3/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
  98. xtgeo/include/eigen3/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
  99. xtgeo/include/eigen3/Eigen/src/Core/ArithmeticSequence.h +413 -0
  100. xtgeo/include/eigen3/Eigen/src/Core/Array.h +417 -0
  101. xtgeo/include/eigen3/Eigen/src/Core/ArrayBase.h +226 -0
  102. xtgeo/include/eigen3/Eigen/src/Core/ArrayWrapper.h +209 -0
  103. xtgeo/include/eigen3/Eigen/src/Core/Assign.h +90 -0
  104. xtgeo/include/eigen3/Eigen/src/Core/AssignEvaluator.h +1010 -0
  105. xtgeo/include/eigen3/Eigen/src/Core/Assign_MKL.h +178 -0
  106. xtgeo/include/eigen3/Eigen/src/Core/BandMatrix.h +353 -0
  107. xtgeo/include/eigen3/Eigen/src/Core/Block.h +448 -0
  108. xtgeo/include/eigen3/Eigen/src/Core/BooleanRedux.h +162 -0
  109. xtgeo/include/eigen3/Eigen/src/Core/CommaInitializer.h +164 -0
  110. xtgeo/include/eigen3/Eigen/src/Core/ConditionEstimator.h +175 -0
  111. xtgeo/include/eigen3/Eigen/src/Core/CoreEvaluators.h +1741 -0
  112. xtgeo/include/eigen3/Eigen/src/Core/CoreIterators.h +132 -0
  113. xtgeo/include/eigen3/Eigen/src/Core/CwiseBinaryOp.h +183 -0
  114. xtgeo/include/eigen3/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
  115. xtgeo/include/eigen3/Eigen/src/Core/CwiseTernaryOp.h +197 -0
  116. xtgeo/include/eigen3/Eigen/src/Core/CwiseUnaryOp.h +103 -0
  117. xtgeo/include/eigen3/Eigen/src/Core/CwiseUnaryView.h +132 -0
  118. xtgeo/include/eigen3/Eigen/src/Core/DenseBase.h +701 -0
  119. xtgeo/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h +685 -0
  120. xtgeo/include/eigen3/Eigen/src/Core/DenseStorage.h +652 -0
  121. xtgeo/include/eigen3/Eigen/src/Core/Diagonal.h +258 -0
  122. xtgeo/include/eigen3/Eigen/src/Core/DiagonalMatrix.h +391 -0
  123. xtgeo/include/eigen3/Eigen/src/Core/DiagonalProduct.h +28 -0
  124. xtgeo/include/eigen3/Eigen/src/Core/Dot.h +318 -0
  125. xtgeo/include/eigen3/Eigen/src/Core/EigenBase.h +160 -0
  126. xtgeo/include/eigen3/Eigen/src/Core/ForceAlignedAccess.h +150 -0
  127. xtgeo/include/eigen3/Eigen/src/Core/Fuzzy.h +155 -0
  128. xtgeo/include/eigen3/Eigen/src/Core/GeneralProduct.h +465 -0
  129. xtgeo/include/eigen3/Eigen/src/Core/GenericPacketMath.h +1040 -0
  130. xtgeo/include/eigen3/Eigen/src/Core/GlobalFunctions.h +194 -0
  131. xtgeo/include/eigen3/Eigen/src/Core/IO.h +258 -0
  132. xtgeo/include/eigen3/Eigen/src/Core/IndexedView.h +237 -0
  133. xtgeo/include/eigen3/Eigen/src/Core/Inverse.h +117 -0
  134. xtgeo/include/eigen3/Eigen/src/Core/Map.h +171 -0
  135. xtgeo/include/eigen3/Eigen/src/Core/MapBase.h +310 -0
  136. xtgeo/include/eigen3/Eigen/src/Core/MathFunctions.h +2057 -0
  137. xtgeo/include/eigen3/Eigen/src/Core/MathFunctionsImpl.h +200 -0
  138. xtgeo/include/eigen3/Eigen/src/Core/Matrix.h +565 -0
  139. xtgeo/include/eigen3/Eigen/src/Core/MatrixBase.h +547 -0
  140. xtgeo/include/eigen3/Eigen/src/Core/NestByValue.h +85 -0
  141. xtgeo/include/eigen3/Eigen/src/Core/NoAlias.h +109 -0
  142. xtgeo/include/eigen3/Eigen/src/Core/NumTraits.h +335 -0
  143. xtgeo/include/eigen3/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  144. xtgeo/include/eigen3/Eigen/src/Core/PermutationMatrix.h +605 -0
  145. xtgeo/include/eigen3/Eigen/src/Core/PlainObjectBase.h +1128 -0
  146. xtgeo/include/eigen3/Eigen/src/Core/Product.h +191 -0
  147. xtgeo/include/eigen3/Eigen/src/Core/ProductEvaluators.h +1179 -0
  148. xtgeo/include/eigen3/Eigen/src/Core/Random.h +218 -0
  149. xtgeo/include/eigen3/Eigen/src/Core/Redux.h +515 -0
  150. xtgeo/include/eigen3/Eigen/src/Core/Ref.h +381 -0
  151. xtgeo/include/eigen3/Eigen/src/Core/Replicate.h +142 -0
  152. xtgeo/include/eigen3/Eigen/src/Core/Reshaped.h +454 -0
  153. xtgeo/include/eigen3/Eigen/src/Core/ReturnByValue.h +119 -0
  154. xtgeo/include/eigen3/Eigen/src/Core/Reverse.h +217 -0
  155. xtgeo/include/eigen3/Eigen/src/Core/Select.h +164 -0
  156. xtgeo/include/eigen3/Eigen/src/Core/SelfAdjointView.h +365 -0
  157. xtgeo/include/eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
  158. xtgeo/include/eigen3/Eigen/src/Core/Solve.h +188 -0
  159. xtgeo/include/eigen3/Eigen/src/Core/SolveTriangular.h +235 -0
  160. xtgeo/include/eigen3/Eigen/src/Core/SolverBase.h +168 -0
  161. xtgeo/include/eigen3/Eigen/src/Core/StableNorm.h +251 -0
  162. xtgeo/include/eigen3/Eigen/src/Core/StlIterators.h +463 -0
  163. xtgeo/include/eigen3/Eigen/src/Core/Stride.h +116 -0
  164. xtgeo/include/eigen3/Eigen/src/Core/Swap.h +68 -0
  165. xtgeo/include/eigen3/Eigen/src/Core/Transpose.h +464 -0
  166. xtgeo/include/eigen3/Eigen/src/Core/Transpositions.h +386 -0
  167. xtgeo/include/eigen3/Eigen/src/Core/TriangularMatrix.h +1001 -0
  168. xtgeo/include/eigen3/Eigen/src/Core/VectorBlock.h +96 -0
  169. xtgeo/include/eigen3/Eigen/src/Core/VectorwiseOp.h +784 -0
  170. xtgeo/include/eigen3/Eigen/src/Core/Visitor.h +381 -0
  171. xtgeo/include/eigen3/Eigen/src/Core/arch/AVX/Complex.h +372 -0
  172. xtgeo/include/eigen3/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
  173. xtgeo/include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
  174. xtgeo/include/eigen3/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
  175. xtgeo/include/eigen3/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  176. xtgeo/include/eigen3/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
  177. xtgeo/include/eigen3/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
  178. xtgeo/include/eigen3/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  179. xtgeo/include/eigen3/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
  180. xtgeo/include/eigen3/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
  181. xtgeo/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  182. xtgeo/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  183. xtgeo/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  184. xtgeo/include/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
  185. xtgeo/include/eigen3/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
  186. xtgeo/include/eigen3/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  187. xtgeo/include/eigen3/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
  188. xtgeo/include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  189. xtgeo/include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  190. xtgeo/include/eigen3/Eigen/src/Core/arch/Default/Half.h +942 -0
  191. xtgeo/include/eigen3/Eigen/src/Core/arch/Default/Settings.h +49 -0
  192. xtgeo/include/eigen3/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  193. xtgeo/include/eigen3/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
  194. xtgeo/include/eigen3/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  195. xtgeo/include/eigen3/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  196. xtgeo/include/eigen3/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  197. xtgeo/include/eigen3/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  198. xtgeo/include/eigen3/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  199. xtgeo/include/eigen3/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  200. xtgeo/include/eigen3/Eigen/src/Core/arch/NEON/Complex.h +584 -0
  201. xtgeo/include/eigen3/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  202. xtgeo/include/eigen3/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
  203. xtgeo/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
  204. xtgeo/include/eigen3/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  205. xtgeo/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h +351 -0
  206. xtgeo/include/eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
  207. xtgeo/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
  208. xtgeo/include/eigen3/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
  209. xtgeo/include/eigen3/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  210. xtgeo/include/eigen3/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  211. xtgeo/include/eigen3/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  212. xtgeo/include/eigen3/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  213. xtgeo/include/eigen3/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  214. xtgeo/include/eigen3/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  215. xtgeo/include/eigen3/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  216. xtgeo/include/eigen3/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  217. xtgeo/include/eigen3/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
  218. xtgeo/include/eigen3/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
  219. xtgeo/include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
  220. xtgeo/include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
  221. xtgeo/include/eigen3/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
  222. xtgeo/include/eigen3/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
  223. xtgeo/include/eigen3/Eigen/src/Core/functors/StlFunctors.h +166 -0
  224. xtgeo/include/eigen3/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
  225. xtgeo/include/eigen3/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
  226. xtgeo/include/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
  227. xtgeo/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
  228. xtgeo/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
  229. xtgeo/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
  230. xtgeo/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
  231. xtgeo/include/eigen3/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
  232. xtgeo/include/eigen3/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
  233. xtgeo/include/eigen3/Eigen/src/Core/products/Parallelizer.h +180 -0
  234. xtgeo/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
  235. xtgeo/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
  236. xtgeo/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
  237. xtgeo/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
  238. xtgeo/include/eigen3/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
  239. xtgeo/include/eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
  240. xtgeo/include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
  241. xtgeo/include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
  242. xtgeo/include/eigen3/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
  243. xtgeo/include/eigen3/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
  244. xtgeo/include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
  245. xtgeo/include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
  246. xtgeo/include/eigen3/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
  247. xtgeo/include/eigen3/Eigen/src/Core/util/BlasUtil.h +583 -0
  248. xtgeo/include/eigen3/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  249. xtgeo/include/eigen3/Eigen/src/Core/util/Constants.h +563 -0
  250. xtgeo/include/eigen3/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
  251. xtgeo/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
  252. xtgeo/include/eigen3/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  253. xtgeo/include/eigen3/Eigen/src/Core/util/IntegralConstant.h +272 -0
  254. xtgeo/include/eigen3/Eigen/src/Core/util/MKL_support.h +137 -0
  255. xtgeo/include/eigen3/Eigen/src/Core/util/Macros.h +1464 -0
  256. xtgeo/include/eigen3/Eigen/src/Core/util/Memory.h +1163 -0
  257. xtgeo/include/eigen3/Eigen/src/Core/util/Meta.h +812 -0
  258. xtgeo/include/eigen3/Eigen/src/Core/util/NonMPL2.h +3 -0
  259. xtgeo/include/eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
  260. xtgeo/include/eigen3/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  261. xtgeo/include/eigen3/Eigen/src/Core/util/StaticAssert.h +221 -0
  262. xtgeo/include/eigen3/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  263. xtgeo/include/eigen3/Eigen/src/Core/util/XprHelper.h +856 -0
  264. xtgeo/include/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
  265. xtgeo/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
  266. xtgeo/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
  267. xtgeo/include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
  268. xtgeo/include/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
  269. xtgeo/include/eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
  270. xtgeo/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
  271. xtgeo/include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
  272. xtgeo/include/eigen3/Eigen/src/Eigenvalues/RealQZ.h +657 -0
  273. xtgeo/include/eigen3/Eigen/src/Eigenvalues/RealSchur.h +558 -0
  274. xtgeo/include/eigen3/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
  275. xtgeo/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
  276. xtgeo/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
  277. xtgeo/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
  278. xtgeo/include/eigen3/Eigen/src/Geometry/AlignedBox.h +486 -0
  279. xtgeo/include/eigen3/Eigen/src/Geometry/AngleAxis.h +247 -0
  280. xtgeo/include/eigen3/Eigen/src/Geometry/EulerAngles.h +114 -0
  281. xtgeo/include/eigen3/Eigen/src/Geometry/Homogeneous.h +501 -0
  282. xtgeo/include/eigen3/Eigen/src/Geometry/Hyperplane.h +282 -0
  283. xtgeo/include/eigen3/Eigen/src/Geometry/OrthoMethods.h +235 -0
  284. xtgeo/include/eigen3/Eigen/src/Geometry/ParametrizedLine.h +232 -0
  285. xtgeo/include/eigen3/Eigen/src/Geometry/Quaternion.h +870 -0
  286. xtgeo/include/eigen3/Eigen/src/Geometry/Rotation2D.h +199 -0
  287. xtgeo/include/eigen3/Eigen/src/Geometry/RotationBase.h +206 -0
  288. xtgeo/include/eigen3/Eigen/src/Geometry/Scaling.h +188 -0
  289. xtgeo/include/eigen3/Eigen/src/Geometry/Transform.h +1563 -0
  290. xtgeo/include/eigen3/Eigen/src/Geometry/Translation.h +202 -0
  291. xtgeo/include/eigen3/Eigen/src/Geometry/Umeyama.h +166 -0
  292. xtgeo/include/eigen3/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  293. xtgeo/include/eigen3/Eigen/src/Householder/BlockHouseholder.h +110 -0
  294. xtgeo/include/eigen3/Eigen/src/Householder/Householder.h +176 -0
  295. xtgeo/include/eigen3/Eigen/src/Householder/HouseholderSequence.h +545 -0
  296. xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
  297. xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
  298. xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
  299. xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
  300. xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
  301. xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
  302. xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
  303. xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
  304. xtgeo/include/eigen3/Eigen/src/Jacobi/Jacobi.h +483 -0
  305. xtgeo/include/eigen3/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  306. xtgeo/include/eigen3/Eigen/src/LU/Determinant.h +117 -0
  307. xtgeo/include/eigen3/Eigen/src/LU/FullPivLU.h +877 -0
  308. xtgeo/include/eigen3/Eigen/src/LU/InverseImpl.h +432 -0
  309. xtgeo/include/eigen3/Eigen/src/LU/PartialPivLU.h +624 -0
  310. xtgeo/include/eigen3/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
  311. xtgeo/include/eigen3/Eigen/src/LU/arch/InverseSize4.h +351 -0
  312. xtgeo/include/eigen3/Eigen/src/MetisSupport/MetisSupport.h +137 -0
  313. xtgeo/include/eigen3/Eigen/src/OrderingMethods/Amd.h +435 -0
  314. xtgeo/include/eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
  315. xtgeo/include/eigen3/Eigen/src/OrderingMethods/Ordering.h +153 -0
  316. xtgeo/include/eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
  317. xtgeo/include/eigen3/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
  318. xtgeo/include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
  319. xtgeo/include/eigen3/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
  320. xtgeo/include/eigen3/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
  321. xtgeo/include/eigen3/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
  322. xtgeo/include/eigen3/Eigen/src/QR/HouseholderQR.h +434 -0
  323. xtgeo/include/eigen3/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
  324. xtgeo/include/eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
  325. xtgeo/include/eigen3/Eigen/src/SVD/BDCSVD.h +1366 -0
  326. xtgeo/include/eigen3/Eigen/src/SVD/JacobiSVD.h +812 -0
  327. xtgeo/include/eigen3/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
  328. xtgeo/include/eigen3/Eigen/src/SVD/SVDBase.h +376 -0
  329. xtgeo/include/eigen3/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
  330. xtgeo/include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
  331. xtgeo/include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
  332. xtgeo/include/eigen3/Eigen/src/SparseCore/AmbiVector.h +378 -0
  333. xtgeo/include/eigen3/Eigen/src/SparseCore/CompressedStorage.h +274 -0
  334. xtgeo/include/eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
  335. xtgeo/include/eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
  336. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseAssign.h +270 -0
  337. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseBlock.h +571 -0
  338. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseColEtree.h +206 -0
  339. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
  340. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
  341. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
  342. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
  343. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
  344. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseDot.h +98 -0
  345. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
  346. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseMap.h +305 -0
  347. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
  348. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
  349. xtgeo/include/eigen3/Eigen/src/SparseCore/SparsePermutation.h +178 -0
  350. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseProduct.h +181 -0
  351. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseRedux.h +49 -0
  352. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseRef.h +397 -0
  353. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
  354. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
  355. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
  356. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseTranspose.h +92 -0
  357. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
  358. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseUtil.h +186 -0
  359. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseVector.h +478 -0
  360. xtgeo/include/eigen3/Eigen/src/SparseCore/SparseView.h +254 -0
  361. xtgeo/include/eigen3/Eigen/src/SparseCore/TriangularSolver.h +315 -0
  362. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU.h +923 -0
  363. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
  364. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
  365. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
  366. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
  367. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
  368. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
  369. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
  370. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
  371. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
  372. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
  373. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
  374. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
  375. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
  376. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
  377. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
  378. xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
  379. xtgeo/include/eigen3/Eigen/src/SparseQR/SparseQR.h +758 -0
  380. xtgeo/include/eigen3/Eigen/src/StlSupport/StdDeque.h +116 -0
  381. xtgeo/include/eigen3/Eigen/src/StlSupport/StdList.h +106 -0
  382. xtgeo/include/eigen3/Eigen/src/StlSupport/StdVector.h +131 -0
  383. xtgeo/include/eigen3/Eigen/src/StlSupport/details.h +84 -0
  384. xtgeo/include/eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
  385. xtgeo/include/eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
  386. xtgeo/include/eigen3/Eigen/src/misc/Image.h +82 -0
  387. xtgeo/include/eigen3/Eigen/src/misc/Kernel.h +79 -0
  388. xtgeo/include/eigen3/Eigen/src/misc/RealSvd2x2.h +55 -0
  389. xtgeo/include/eigen3/Eigen/src/misc/blas.h +440 -0
  390. xtgeo/include/eigen3/Eigen/src/misc/lapack.h +152 -0
  391. xtgeo/include/eigen3/Eigen/src/misc/lapacke.h +16292 -0
  392. xtgeo/include/eigen3/Eigen/src/misc/lapacke_mangling.h +17 -0
  393. xtgeo/include/eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
  394. xtgeo/include/eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
  395. xtgeo/include/eigen3/Eigen/src/plugins/BlockMethods.h +1442 -0
  396. xtgeo/include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
  397. xtgeo/include/eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
  398. xtgeo/include/eigen3/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  399. xtgeo/include/eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
  400. xtgeo/include/eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
  401. xtgeo/include/eigen3/Eigen/src/plugins/ReshapedMethods.h +149 -0
  402. xtgeo/include/eigen3/signature_of_eigen3_matrix_library +1 -0
  403. xtgeo/include/eigen3/unsupported/Eigen/AdolcForward +159 -0
  404. xtgeo/include/eigen3/unsupported/Eigen/AlignedVector3 +234 -0
  405. xtgeo/include/eigen3/unsupported/Eigen/ArpackSupport +30 -0
  406. xtgeo/include/eigen3/unsupported/Eigen/AutoDiff +46 -0
  407. xtgeo/include/eigen3/unsupported/Eigen/BVH +95 -0
  408. xtgeo/include/eigen3/unsupported/Eigen/CXX11/Tensor +137 -0
  409. xtgeo/include/eigen3/unsupported/Eigen/CXX11/TensorSymmetry +42 -0
  410. xtgeo/include/eigen3/unsupported/Eigen/CXX11/ThreadPool +74 -0
  411. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/Tensor.h +554 -0
  412. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h +329 -0
  413. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h +247 -0
  414. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +1176 -0
  415. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h +1559 -0
  416. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h +1093 -0
  417. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h +518 -0
  418. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h +377 -0
  419. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h +1023 -0
  420. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h +73 -0
  421. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h +6 -0
  422. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h +1413 -0
  423. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h +575 -0
  424. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h +1650 -0
  425. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h +1679 -0
  426. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h +456 -0
  427. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h +1132 -0
  428. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolutionSycl.h +544 -0
  429. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h +214 -0
  430. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h +347 -0
  431. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h +137 -0
  432. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h +6 -0
  433. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h +104 -0
  434. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h +389 -0
  435. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h +1048 -0
  436. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h +409 -0
  437. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h +236 -0
  438. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h +490 -0
  439. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h +236 -0
  440. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h +983 -0
  441. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h +703 -0
  442. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h +388 -0
  443. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h +669 -0
  444. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h +379 -0
  445. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h +237 -0
  446. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h +191 -0
  447. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h +488 -0
  448. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h +302 -0
  449. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h +33 -0
  450. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaDefines.h +99 -0
  451. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaUndefines.h +44 -0
  452. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h +79 -0
  453. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h +603 -0
  454. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h +738 -0
  455. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h +247 -0
  456. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h +82 -0
  457. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h +263 -0
  458. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h +216 -0
  459. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h +98 -0
  460. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h +327 -0
  461. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h +311 -0
  462. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h +1102 -0
  463. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h +708 -0
  464. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +291 -0
  465. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h +322 -0
  466. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h +998 -0
  467. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h +6 -0
  468. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h +966 -0
  469. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h +582 -0
  470. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h +454 -0
  471. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h +465 -0
  472. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h +528 -0
  473. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScanSycl.h +513 -0
  474. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h +471 -0
  475. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h +161 -0
  476. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h +346 -0
  477. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTrace.h +303 -0
  478. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h +264 -0
  479. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h +249 -0
  480. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h +629 -0
  481. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h +293 -0
  482. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/StaticSymmetry.h +236 -0
  483. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/Symmetry.h +338 -0
  484. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/util/TemplateGroupTheory.h +669 -0
  485. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/Barrier.h +67 -0
  486. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h +249 -0
  487. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h +486 -0
  488. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h +236 -0
  489. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadCancel.h +23 -0
  490. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h +40 -0
  491. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h +301 -0
  492. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h +48 -0
  493. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h +20 -0
  494. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Meta.h +537 -0
  495. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h +88 -0
  496. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/util/EmulateArray.h +261 -0
  497. xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h +158 -0
  498. xtgeo/include/eigen3/unsupported/Eigen/EulerAngles +43 -0
  499. xtgeo/include/eigen3/unsupported/Eigen/FFT +419 -0
  500. xtgeo/include/eigen3/unsupported/Eigen/IterativeSolvers +51 -0
  501. xtgeo/include/eigen3/unsupported/Eigen/KroneckerProduct +36 -0
  502. xtgeo/include/eigen3/unsupported/Eigen/LevenbergMarquardt +49 -0
  503. xtgeo/include/eigen3/unsupported/Eigen/MPRealSupport +213 -0
  504. xtgeo/include/eigen3/unsupported/Eigen/MatrixFunctions +504 -0
  505. xtgeo/include/eigen3/unsupported/Eigen/MoreVectorization +24 -0
  506. xtgeo/include/eigen3/unsupported/Eigen/NonLinearOptimization +140 -0
  507. xtgeo/include/eigen3/unsupported/Eigen/NumericalDiff +56 -0
  508. xtgeo/include/eigen3/unsupported/Eigen/OpenGLSupport +322 -0
  509. xtgeo/include/eigen3/unsupported/Eigen/Polynomials +137 -0
  510. xtgeo/include/eigen3/unsupported/Eigen/Skyline +39 -0
  511. xtgeo/include/eigen3/unsupported/Eigen/SparseExtra +54 -0
  512. xtgeo/include/eigen3/unsupported/Eigen/SpecialFunctions +103 -0
  513. xtgeo/include/eigen3/unsupported/Eigen/Splines +35 -0
  514. xtgeo/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h +108 -0
  515. xtgeo/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +730 -0
  516. xtgeo/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h +220 -0
  517. xtgeo/include/eigen3/unsupported/Eigen/src/BVH/BVAlgorithms.h +293 -0
  518. xtgeo/include/eigen3/unsupported/Eigen/src/BVH/KdBVH.h +223 -0
  519. xtgeo/include/eigen3/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h +790 -0
  520. xtgeo/include/eigen3/unsupported/Eigen/src/EulerAngles/EulerAngles.h +355 -0
  521. xtgeo/include/eigen3/unsupported/Eigen/src/EulerAngles/EulerSystem.h +305 -0
  522. xtgeo/include/eigen3/unsupported/Eigen/src/FFT/ei_fftw_impl.h +261 -0
  523. xtgeo/include/eigen3/unsupported/Eigen/src/FFT/ei_kissfft_impl.h +449 -0
  524. xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +187 -0
  525. xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/DGMRES.h +511 -0
  526. xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/GMRES.h +335 -0
  527. xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IDRS.h +436 -0
  528. xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h +90 -0
  529. xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IterationController.h +154 -0
  530. xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/MINRES.h +267 -0
  531. xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/Scaling.h +193 -0
  532. xtgeo/include/eigen3/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h +305 -0
  533. xtgeo/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h +84 -0
  534. xtgeo/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h +202 -0
  535. xtgeo/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h +160 -0
  536. xtgeo/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h +188 -0
  537. xtgeo/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +396 -0
  538. xtgeo/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +441 -0
  539. xtgeo/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h +569 -0
  540. xtgeo/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h +373 -0
  541. xtgeo/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +705 -0
  542. xtgeo/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h +368 -0
  543. xtgeo/include/eigen3/unsupported/Eigen/src/MatrixFunctions/StemFunction.h +117 -0
  544. xtgeo/include/eigen3/unsupported/Eigen/src/MoreVectorization/MathFunctions.h +95 -0
  545. xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h +601 -0
  546. xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +657 -0
  547. xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/chkder.h +66 -0
  548. xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/covar.h +70 -0
  549. xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/dogleg.h +107 -0
  550. xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h +79 -0
  551. xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/lmpar.h +298 -0
  552. xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h +91 -0
  553. xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h +30 -0
  554. xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1updt.h +99 -0
  555. xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h +49 -0
  556. xtgeo/include/eigen3/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +130 -0
  557. xtgeo/include/eigen3/unsupported/Eigen/src/Polynomials/Companion.h +280 -0
  558. xtgeo/include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialSolver.h +428 -0
  559. xtgeo/include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialUtils.h +143 -0
  560. xtgeo/include/eigen3/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h +352 -0
  561. xtgeo/include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrix.h +862 -0
  562. xtgeo/include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +212 -0
  563. xtgeo/include/eigen3/unsupported/Eigen/src/Skyline/SkylineProduct.h +295 -0
  564. xtgeo/include/eigen3/unsupported/Eigen/src/Skyline/SkylineStorage.h +259 -0
  565. xtgeo/include/eigen3/unsupported/Eigen/src/Skyline/SkylineUtil.h +89 -0
  566. xtgeo/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h +122 -0
  567. xtgeo/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h +1079 -0
  568. xtgeo/include/eigen3/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h +404 -0
  569. xtgeo/include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h +282 -0
  570. xtgeo/include/eigen3/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h +247 -0
  571. xtgeo/include/eigen3/unsupported/Eigen/src/SparseExtra/RandomSetter.h +349 -0
  572. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsArrayAPI.h +286 -0
  573. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h +68 -0
  574. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h +357 -0
  575. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h +66 -0
  576. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h +1959 -0
  577. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsPacketMath.h +118 -0
  578. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h +67 -0
  579. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h +167 -0
  580. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h +58 -0
  581. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h +330 -0
  582. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h +58 -0
  583. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h +2045 -0
  584. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h +79 -0
  585. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/BesselFunctions.h +46 -0
  586. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/SpecialFunctions.h +16 -0
  587. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/BesselFunctions.h +46 -0
  588. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/SpecialFunctions.h +16 -0
  589. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/GPU/SpecialFunctions.h +369 -0
  590. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/BesselFunctions.h +54 -0
  591. xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/SpecialFunctions.h +34 -0
  592. xtgeo/include/eigen3/unsupported/Eigen/src/Splines/Spline.h +507 -0
  593. xtgeo/include/eigen3/unsupported/Eigen/src/Splines/SplineFitting.h +431 -0
  594. xtgeo/include/eigen3/unsupported/Eigen/src/Splines/SplineFwd.h +93 -0
  595. xtgeo/interfaces/rms/__init__.py +18 -0
  596. xtgeo/interfaces/rms/_regular_surface.py +460 -0
  597. xtgeo/interfaces/rms/_rms_base.py +100 -0
  598. xtgeo/interfaces/rms/_rmsapi_package.py +69 -0
  599. xtgeo/interfaces/rms/rmsapi_utils.py +438 -0
  600. xtgeo/io/__init__.py +1 -0
  601. xtgeo/io/_file.py +603 -0
  602. xtgeo/metadata/__init__.py +17 -0
  603. xtgeo/metadata/metadata.py +435 -0
  604. xtgeo/roxutils/__init__.py +7 -0
  605. xtgeo/roxutils/_roxar_loader.py +54 -0
  606. xtgeo/roxutils/_roxutils_etc.py +122 -0
  607. xtgeo/roxutils/roxutils.py +207 -0
  608. xtgeo/share/eigen3/cmake/Eigen3Config.cmake +37 -0
  609. xtgeo/share/eigen3/cmake/Eigen3ConfigVersion.cmake +65 -0
  610. xtgeo/share/eigen3/cmake/Eigen3Targets.cmake +106 -0
  611. xtgeo/share/eigen3/cmake/UseEigen3.cmake +6 -0
  612. xtgeo/share/pkgconfig/eigen3.pc +9 -0
  613. xtgeo/surface/__init__.py +20 -0
  614. xtgeo/surface/_regsurf_boundary.py +26 -0
  615. xtgeo/surface/_regsurf_cube.py +210 -0
  616. xtgeo/surface/_regsurf_cube_window.py +391 -0
  617. xtgeo/surface/_regsurf_cube_window_v2.py +297 -0
  618. xtgeo/surface/_regsurf_cube_window_v3.py +360 -0
  619. xtgeo/surface/_regsurf_export.py +388 -0
  620. xtgeo/surface/_regsurf_grid3d.py +275 -0
  621. xtgeo/surface/_regsurf_gridding.py +347 -0
  622. xtgeo/surface/_regsurf_ijxyz_parser.py +278 -0
  623. xtgeo/surface/_regsurf_import.py +347 -0
  624. xtgeo/surface/_regsurf_lowlevel.py +122 -0
  625. xtgeo/surface/_regsurf_oper.py +538 -0
  626. xtgeo/surface/_regsurf_utils.py +81 -0
  627. xtgeo/surface/_surfs_import.py +43 -0
  628. xtgeo/surface/_zmap_parser.py +138 -0
  629. xtgeo/surface/regular_surface.py +3043 -0
  630. xtgeo/surface/surfaces.py +276 -0
  631. xtgeo/well/__init__.py +24 -0
  632. xtgeo/well/_blockedwell_roxapi.py +241 -0
  633. xtgeo/well/_blockedwells_roxapi.py +68 -0
  634. xtgeo/well/_well_aux.py +30 -0
  635. xtgeo/well/_well_io.py +327 -0
  636. xtgeo/well/_well_oper.py +483 -0
  637. xtgeo/well/_well_roxapi.py +304 -0
  638. xtgeo/well/_wellmarkers.py +486 -0
  639. xtgeo/well/_wells_utils.py +158 -0
  640. xtgeo/well/blocked_well.py +220 -0
  641. xtgeo/well/blocked_wells.py +134 -0
  642. xtgeo/well/well1.py +1516 -0
  643. xtgeo/well/wells.py +211 -0
  644. xtgeo/xyz/__init__.py +6 -0
  645. xtgeo/xyz/_polygons_oper.py +272 -0
  646. xtgeo/xyz/_xyz.py +758 -0
  647. xtgeo/xyz/_xyz_data.py +646 -0
  648. xtgeo/xyz/_xyz_io.py +737 -0
  649. xtgeo/xyz/_xyz_lowlevel.py +42 -0
  650. xtgeo/xyz/_xyz_oper.py +613 -0
  651. xtgeo/xyz/_xyz_roxapi.py +766 -0
  652. xtgeo/xyz/points.py +698 -0
  653. xtgeo/xyz/polygons.py +827 -0
  654. xtgeo-4.14.1.dist-info/METADATA +146 -0
  655. xtgeo-4.14.1.dist-info/RECORD +658 -0
  656. xtgeo-4.14.1.dist-info/WHEEL +6 -0
  657. xtgeo-4.14.1.dist-info/licenses/LICENSE.md +165 -0
  658. xtgeo.libs/libgomp-e985bcbb.so.1.0.0 +0 -0
@@ -0,0 +1,1313 @@
1
+ from __future__ import annotations
2
+
3
+ import copy
4
+ import functools
5
+ import hashlib
6
+ from types import FunctionType
7
+ from typing import TYPE_CHECKING, Any, Literal
8
+
9
+ import numpy as np
10
+ import numpy.typing as npt
11
+
12
+ import xtgeo
13
+ from xtgeo.common import XTGeoDialog, null_logger
14
+ from xtgeo.common.constants import UNDEF, UNDEF_INT, UNDEF_INT_LIMIT, UNDEF_LIMIT
15
+ from xtgeo.common.exceptions import InvalidFileFormatError
16
+ from xtgeo.common.types import Dimensions
17
+ from xtgeo.io._file import FileFormat, FileWrapper
18
+ from xtgeo.metadata.metadata import MetaDataCPProperty
19
+
20
+ from . import (
21
+ _gridprop_export,
22
+ _gridprop_lowlevel,
23
+ _gridprop_op1,
24
+ _gridprop_roxapi,
25
+ _gridprop_value_init,
26
+ )
27
+ from ._grid3d import _Grid3D
28
+ from ._gridprop_import_eclrun import (
29
+ import_gridprop_from_init,
30
+ import_gridprop_from_restart,
31
+ )
32
+ from ._gridprop_import_grdecl import import_bgrdecl_prop, import_grdecl_prop
33
+ from ._gridprop_import_roff import import_roff
34
+ from ._gridprop_import_xtgcpprop import import_xtgcpprop
35
+
36
+ xtg = XTGeoDialog()
37
+ logger = null_logger(__name__)
38
+
39
+ if TYPE_CHECKING:
40
+ from collections.abc import Callable
41
+ from typing import Union
42
+
43
+ import numpy.typing as npt
44
+
45
+ from xtgeo.common.types import FileLike
46
+ from xtgeo.xyz.polygons import Polygons
47
+
48
+ from ._gridprop_op1 import XYValueLists
49
+ from .grid import Grid
50
+
51
+ Roxar_DType = Union[type[np.uint8], type[np.uint16], type[np.float32]]
52
+
53
+ # --------------------------------------------------------------------------------------
54
+ # Comment on 'asmasked' vs 'activeonly:
55
+ #
56
+ # 'asmasked'=True will return a np.ma array, while 'asmasked' = False will
57
+ # return a np.ndarray
58
+ #
59
+ # The 'activeonly' will filter out masked entries, or use None or np.nan
60
+ # if 'activeonly' is False.
61
+ #
62
+ # Use word 'zerobased' for a bool regrading startcell basis is 1 or 0
63
+ #
64
+ # For functions with mask=... ,they should be replaced with asmasked=...
65
+ # --------------------------------------------------------------------------------------
66
+
67
+ # ======================================================================================
68
+ # Functions outside the class, for rapid access. Will be exposed as
69
+ # xxx = xtgeo.gridproperty_from_file.
70
+ # ======================================================================================
71
+
72
+
73
+ def _data_reader_factory(fformat: FileFormat) -> Callable:
74
+ if fformat in (FileFormat.ROFF_BINARY, FileFormat.ROFF_ASCII):
75
+ return import_roff
76
+ if fformat in (FileFormat.FINIT, FileFormat.INIT):
77
+ return import_gridprop_from_init
78
+ if fformat in (FileFormat.FUNRST, FileFormat.UNRST):
79
+ return functools.partial(import_gridprop_from_restart, fformat=fformat)
80
+ if fformat == FileFormat.GRDECL:
81
+ return import_grdecl_prop
82
+ if fformat == FileFormat.BGRDECL:
83
+ return import_bgrdecl_prop
84
+ if fformat == FileFormat.XTG:
85
+ return import_xtgcpprop
86
+
87
+ extensions = FileFormat.extensions_string(
88
+ [
89
+ FileFormat.ROFF_BINARY,
90
+ FileFormat.ROFF_ASCII,
91
+ FileFormat.INIT,
92
+ FileFormat.FINIT,
93
+ FileFormat.UNRST,
94
+ FileFormat.FUNRST,
95
+ FileFormat.GRDECL,
96
+ FileFormat.BGRDECL,
97
+ FileFormat.XTG,
98
+ ]
99
+ )
100
+ raise InvalidFileFormatError(
101
+ f"File format {fformat} is invalid for type GridProperty. "
102
+ f"Supported formats are {extensions}."
103
+ )
104
+
105
+
106
+ def gridproperty_from_file(
107
+ pfile: FileLike,
108
+ fformat: str | None = None,
109
+ **kwargs: dict[str, Any],
110
+ ) -> GridProperty:
111
+ """
112
+ Make a GridProperty instance directly from a file import.
113
+
114
+ Note that the the property may be linked to its geometrical grid
115
+ through the ``grid=`` option. Sometimes this is required, for instance
116
+ for most Eclipse input.
117
+
118
+ Args:
119
+ pfile: Name of file to be imported.
120
+ fformat: File format to be used (roff/init/unrst/grdecl).
121
+ Defaults to None and tries to infer from file extension.
122
+ name (str): Name of property to import
123
+ date (int or str): For restart files, date in YYYYMMDD format. Also
124
+ the YYYY-MM-DD form is allowed (string), and for Eclipse,
125
+ mnemonics like 'first', 'last' is also allowed.
126
+ grid (Grid, optional): Grid object for checks. Optional for
127
+ ROFF, required for Eclipse).
128
+ gridlink (bool): If True, and grid is not None, a link from the grid
129
+ instance to the property is made. If False, no such link is made.
130
+ Avoiding gridlink is recommended when running statistics of multiple
131
+ realisations of a property.
132
+ fracture (bool): Only applicable for DUAL POROSITY systems. If True
133
+ then the fracture property is read. If False then the matrix
134
+ property is read. Names will be appended with "M" or "F"
135
+ ijrange (list-like): A list of 4 numbers (i1, i2, j1, j2) for a subrange
136
+ of cells to read. Only applicable for xtgcpprop format.
137
+ zerobased (bool): Input if cells counts are zero- or one-based in
138
+ ijrange. Only applicable for xtgcpprop format.
139
+
140
+ Returns:
141
+ A GridProperty instance.
142
+
143
+ Examples::
144
+
145
+ import xtgeo
146
+ gprop = xtgeo.gridproperty_from_file("somefile.roff", fformat="roff")
147
+
148
+ # or
149
+
150
+ mygrid = xtgeo.grid_from_file("ECL.EGRID")
151
+ pressure_1 = xtgeo.gridproperty_from_file("ECL.UNRST", name="PRESSURE",
152
+ date="first", grid=mygrid)
153
+
154
+ """
155
+ return GridProperty._read_file(pfile, fformat, **kwargs)
156
+
157
+
158
+ def gridproperty_from_roxar(
159
+ project: Any, # project can be a path but also a magic variable in RMS
160
+ gname: str,
161
+ pname: str,
162
+ realisation: int = 0,
163
+ faciescodes: bool = False,
164
+ ) -> GridProperty:
165
+ """
166
+ Make a GridProperty instance directly inside RMS.
167
+
168
+ Args:
169
+ project: The Roxar project path or magical pre-defined variable in RMS
170
+ gname: Name of the grid model
171
+ pname: Name of the grid property
172
+ realisation: Realisation number (default 0; first)
173
+ faciescodes: If a Roxar property is of the special body_facies type
174
+ (e.g. result from a channel facies object modelling), the default
175
+ is to get the body code values. If faciescodes is True, the facies
176
+ code values will be read instead. For other roxar properties this
177
+ key is not relevant.
178
+
179
+ Returns:
180
+ A GridProperty instance.
181
+
182
+ Example::
183
+
184
+ import xtgeo
185
+ myporo = xtgeo.gridproperty_from_roxar(project, 'Geogrid', 'Poro')
186
+
187
+ """
188
+ return GridProperty._read_roxar(
189
+ project,
190
+ gname,
191
+ pname,
192
+ realisation=realisation,
193
+ faciescodes=faciescodes,
194
+ )
195
+
196
+
197
+ class GridProperty(_Grid3D):
198
+ """
199
+ Class for a single 3D grid property, e.g porosity or facies.
200
+
201
+ An GridProperty instance may or may not 'belong' to a grid (geometry) object.
202
+ E.g. for ROFF input, ncol, nrow, nlay are given in the import file and the grid
203
+ geometry file is not needed. For many Eclipse files, the grid geometry is needed
204
+ as this holds the active number indices (ACTNUM).
205
+
206
+ Normally the instance is created when importing a grid
207
+ property from file, but it can also be created directly, as e.g.::
208
+
209
+ poro = GridProperty(ncol=233, nrow=122, nlay=32)
210
+
211
+ The grid property values ``someinstance.values`` by themselves is a 3D masked
212
+ numpy usually as either float64 (double) or int32 (if discrete), and undefined
213
+ cells are displayed as masked. The internal array order is now C_CONTIGUOUS.
214
+ (i.e. not in Eclipse manner). A 1D view (C order) is achieved by the
215
+ values1d property, e.g.::
216
+
217
+ poronumpy = poro.values1d
218
+
219
+ .. versionchanged:: 2.6 Possible to make GridProperty instance directly from Grid
220
+ .. versionchanged:: 2.8 Possible to base it on existing GridProperty instance
221
+
222
+ """
223
+
224
+ def __init__(
225
+ self,
226
+ gridlike: Grid | GridProperty | None = None,
227
+ ncol: int | None = None,
228
+ nrow: int | None = None,
229
+ nlay: int | None = None,
230
+ name: str = "unknown",
231
+ discrete: bool = False,
232
+ date: str | None = None,
233
+ grid: Grid | None = None,
234
+ linkgeometry: bool = True,
235
+ fracture: bool = False,
236
+ codes: dict[int, str] | None = None,
237
+ dualporo: bool = False,
238
+ dualperm: bool = False,
239
+ roxar_dtype: Roxar_DType | None = None,
240
+ values: np.ndarray | float | int | None = None,
241
+ roxorigin: bool = False,
242
+ filesrc: str | None = None,
243
+ ) -> None:
244
+ """
245
+ Instantiating.
246
+
247
+ Args:
248
+ gridlike: Grid or GridProperty instance, or leave blank.
249
+ ncol: Number of columns (nx). Defaults to 4.
250
+ nrow: Number of rows (ny). Defaults to 3.
251
+ nlay: Number of layers (nz). Defaults to 5.
252
+ name: Name of property. Defaults to "unknown".
253
+ discrete: True or False. Defaults to False.
254
+ date: Date on YYYYMMDD form.
255
+ grid: Attached Grid object.
256
+ linkgeometry: If True, establish a link between GridProperty
257
+ and Grid. Defaults to True.
258
+ fracture: True if fracture option (relevant for flow simulator data).
259
+ Defaults to False.
260
+ codes: Codes in case a discrete property e.g. {1: "Sand", 4: "Shale"}.
261
+ dualporo: True if dual porosity system. Defaults to False.
262
+ dualperm: True if dual porosity and dual permeability system.
263
+ Defaults to False.
264
+ roxar_dtype: Specify Roxar datatype e.g. np.uint8.
265
+ values: Values to apply.
266
+ roxorigin: True if the object comes from Roxar API. Defaults to False.
267
+ filesrc: Where the file came from.
268
+
269
+ Raises:
270
+ RuntimeError: If something goes wrong (e.g. file not found).
271
+
272
+ Examples::
273
+
274
+ import xtgeo
275
+ myprop = xtgeo.gridproperty_from_file("emerald.roff", name="PORO")
276
+
277
+ # or
278
+
279
+ values = np.ma.ones((12, 17, 10), dtype=np.float64),
280
+ myprop = GridProperty(ncol=12, nrow=17, nlay=10,
281
+ values=values, discrete=False,
282
+ name="MyValue")
283
+
284
+ # or create properties from a Grid() instance
285
+
286
+ mygrid = xtgeo.grid_from_file("grid.roff")
287
+ myprop1 = xtgeo.GridProperty(mygrid, name="PORO")
288
+ myprop2 = xtgeo.GridProperty(mygrid, name="FACIES", discrete=True, values=1,
289
+ linkgeometry=True) # alternative 1
290
+ myprop2.geometry = mygrid # alternative 2 to link grid geometry to property
291
+
292
+ # from Grid instance:
293
+ grd = xtgeo.grid_from_file("somefile_grid_file")
294
+ myprop = GridProperty(grd, values=99, discrete=True) # based on grd
295
+
296
+ # or from existing GridProperty instance:
297
+ myprop2 = GridProperty(myprop, values=99, discrete=False) # based on myprop
298
+
299
+ """
300
+ super().__init__(ncol or 4, nrow or 3, nlay or 5)
301
+
302
+ # Instance attributes defaults:
303
+ self._name = name
304
+ self._date = date
305
+ self._isdiscrete = discrete
306
+ self._geometry = grid
307
+ self._fracture = fracture
308
+ self._codes = {} if codes is None else codes
309
+
310
+ # Not primary input:
311
+ self._dualporo = dualporo
312
+ self._dualperm = dualperm
313
+
314
+ self._filesrc = filesrc
315
+ self._roxorigin = roxorigin
316
+
317
+ if roxar_dtype is None:
318
+ self._roxar_dtype: Roxar_DType = np.uint8 if discrete else np.float32
319
+ else:
320
+ self.roxar_dtype = roxar_dtype
321
+
322
+ self._undef = UNDEF_INT if discrete else UNDEF
323
+
324
+ self._set_initial_dimensions(gridlike, (ncol, nrow, nlay))
325
+
326
+ self._values = _gridprop_value_init.gridproperty_non_dummy_values(
327
+ gridlike, self.dimensions, values, discrete
328
+ )
329
+
330
+ if isinstance(gridlike, xtgeo.grid3d.Grid):
331
+ if linkgeometry:
332
+ # Associate this grid property with a Grid instance. This is not default
333
+ # since sunch links may affect garbage collection
334
+ self.geometry = gridlike
335
+ gridlike.append_prop(self)
336
+
337
+ self._metadata: MetaDataCPProperty = MetaDataCPProperty()
338
+
339
+ def _set_initial_dimensions(
340
+ self,
341
+ gridlike: Grid | GridProperty | None,
342
+ input_dimensions: tuple[int | None, int | None, int | None],
343
+ ) -> None:
344
+ """
345
+ Sets the initial dimensions either from input, grid or default.
346
+
347
+ Args:
348
+ gridlike: Grid/GridProperty instance or leave blank.
349
+ input_dimensions: The (ncol, nrow, nlay) tuple describing the
350
+ dimensions.
351
+
352
+ If a gridlike is given, we use its dimensions, but make sure it matches
353
+ the input dimensions if given (not None). Otherwise, dimensions are either
354
+ set to the input dimensions or defaulted.
355
+
356
+ """
357
+ if gridlike is not None:
358
+ self._ncol = gridlike.ncol
359
+ self._nrow = gridlike.nrow
360
+ self._nlay = gridlike.nlay
361
+ self._check_dimensions_match(*input_dimensions)
362
+ else:
363
+ ncol, nrow, nlay = input_dimensions
364
+ if ncol is None:
365
+ self._ncol = 4
366
+ else:
367
+ self._ncol = ncol
368
+ if nrow is None:
369
+ self._nrow = 3
370
+ else:
371
+ self._nrow = nrow
372
+ if nlay is None:
373
+ self._nlay = 5
374
+ else:
375
+ self._nlay = nlay
376
+
377
+ def _check_dimensions_match(
378
+ self, ncol: int | None, nrow: int | None, nlay: int | None
379
+ ) -> None:
380
+ """
381
+ Checks that Grid/GridProperty dimensions match provided input dimensions.
382
+
383
+ Args:
384
+ input_dimensions: The (ncol, nrow, nlay) tuple describing the
385
+ dimensions.
386
+
387
+ Raises:
388
+ ValueError: If given dimensions are not None and do not
389
+ match dimensions of the GridProperty
390
+
391
+ """
392
+ if ncol is not None and self._ncol != ncol:
393
+ raise ValueError(
394
+ f"Mismatching column dimension given: {ncol} vs {self._ncol}"
395
+ )
396
+ if nrow is not None and self._nrow != nrow:
397
+ raise ValueError(f"Mismatching row dimension given: {nrow} vs {self._nrow}")
398
+ if nlay is not None and self._nlay != nlay:
399
+ raise ValueError(
400
+ f"Mismatching layer dimension given: {nlay} vs {self._nlay}"
401
+ )
402
+
403
+ def __del__(self) -> None:
404
+ logger.debug("DELETING property instance %s", self.name)
405
+
406
+ def __repr__(self) -> str:
407
+ return (
408
+ f"{self.__class__.__name__} (id={id(self)}) ncol={self._ncol!r}, "
409
+ f"nrow={self._nrow!r}, nlay={self._nlay!r}, filesrc={self._filesrc!r}"
410
+ )
411
+
412
+ def __str__(self) -> str:
413
+ return self.describe(flush=False)
414
+
415
+ # ==================================================================================
416
+ # Properties
417
+ # Some properties such as ncol, nrow, nlay are from _Grid3d
418
+ # ==================================================================================
419
+
420
+ @property
421
+ def metadata(self) -> MetaDataCPProperty:
422
+ """Get or set metadata object instance of type MetaDataCPProperty."""
423
+ return self._metadata
424
+
425
+ @metadata.setter
426
+ def metadata(self, metadata: MetaDataCPProperty) -> None:
427
+ if not isinstance(metadata, MetaDataCPProperty):
428
+ raise ValueError("Input metadata not an instance of MetaDataCPProperty")
429
+ # TODO: validate this?
430
+ self._metadata = metadata
431
+
432
+ @property
433
+ def name(self) -> str | None:
434
+ """Get or set the property name."""
435
+ return self._name
436
+
437
+ @name.setter
438
+ def name(self, name: str) -> None:
439
+ self._name = name
440
+
441
+ @property
442
+ def dimensions(self) -> Dimensions:
443
+ """Get the grid dimensions as a NamedTuple of 3 integers."""
444
+ return Dimensions(self.ncol, self.nrow, self.nlay)
445
+
446
+ @property
447
+ def nactive(self) -> int:
448
+ """Get the number of active cells."""
449
+ return len(self.actnum_indices)
450
+
451
+ @property
452
+ def geometry(self) -> Grid | None:
453
+ """Get or set the linked geometry, i.e. the Grid instance."""
454
+ return self._geometry
455
+
456
+ @geometry.setter
457
+ def geometry(self, grid: Grid | None) -> None:
458
+ if grid is None:
459
+ self._geometry = None
460
+ elif isinstance(grid, xtgeo.grid3d.Grid) and grid.dimensions == self.dimensions:
461
+ self._geometry = grid
462
+ else:
463
+ raise ValueError("Could not set geometry; wrong type or size")
464
+
465
+ @property
466
+ def actnum_indices(self) -> np.ndarray:
467
+ """
468
+ Get the 1D ndarray which holds the indices for active cells
469
+ given in 1D, C order.
470
+
471
+ """
472
+ gridprop = self.get_actnum()
473
+ actnumv = np.ravel(gridprop.values)
474
+ return np.flatnonzero(actnumv)
475
+
476
+ @property
477
+ def isdiscrete(self) -> bool:
478
+ """
479
+ Get or set whether this property is discrete.
480
+
481
+ This can also be used to convert from continuous to discrete
482
+ or from discrete to continuous::
483
+
484
+ myprop.isdiscrete = False
485
+
486
+ """
487
+ return self._isdiscrete
488
+
489
+ @isdiscrete.setter
490
+ def isdiscrete(self, flag: bool) -> None:
491
+ if not isinstance(flag, bool):
492
+ raise ValueError("Input to {__name__} must be a bool")
493
+
494
+ if flag is self._isdiscrete:
495
+ return
496
+
497
+ if flag is True and self._isdiscrete is False:
498
+ self.continuous_to_discrete()
499
+ else:
500
+ self.discrete_to_continuous()
501
+
502
+ @property
503
+ def dtype(self) -> npt.DTypeLike:
504
+ """
505
+ Get or set the ``values`` numpy dtype.
506
+
507
+ When setting, note that the the dtype must correspond to the
508
+ `isdiscrete` property. Hence dtype cannot alter isdiscrete status
509
+
510
+ Example::
511
+
512
+ if myprop.isdiscrete:
513
+ myprop.dtype = np.uint16
514
+
515
+ """
516
+ return self._values.dtype
517
+
518
+ @dtype.setter
519
+ def dtype(self, dtype: npt.DTypeLike) -> None:
520
+ allowed: list[npt.DTypeLike] = (
521
+ [np.uint8, np.uint16, np.int16, np.int32, np.int64]
522
+ if self.isdiscrete
523
+ else [np.float16, np.float32, np.float64]
524
+ )
525
+ if dtype not in allowed:
526
+ raise ValueError(
527
+ f"{__name__}: Wrong input for dtype. Use one of {allowed}!"
528
+ )
529
+ # https://github.com/numpy/numpy/issues/24392
530
+ self.values = self.values.astype(dtype) # type: ignore
531
+
532
+ @property
533
+ def filesrc(self) -> str | None:
534
+ """Get or set the GridProperty file src (if any)."""
535
+ return self._filesrc
536
+
537
+ @filesrc.setter
538
+ def filesrc(self, src: str) -> None:
539
+ self._filesrc = src
540
+
541
+ @property
542
+ def roxar_dtype(self) -> Roxar_DType:
543
+ """Get or set the roxar dtype (if any)."""
544
+ return self._roxar_dtype
545
+
546
+ @roxar_dtype.setter
547
+ def roxar_dtype(self, dtype: Roxar_DType) -> None:
548
+ allowed = [np.uint8, np.uint16, np.float32]
549
+ if dtype not in allowed:
550
+ raise ValueError(
551
+ f"{__name__}: Wrong input for roxar_dtype. Use one of {allowed}!"
552
+ )
553
+ self._roxar_dtype = dtype
554
+
555
+ @property
556
+ def date(self) -> str | None:
557
+ """Get or set the property date as string in YYYYMMDD format."""
558
+ return self._date
559
+
560
+ @date.setter
561
+ def date(self, date: str | None) -> None:
562
+ self._date = date
563
+
564
+ @property
565
+ def codes(self) -> dict[int, str]:
566
+ """Get or set the property codes as a dictionary."""
567
+ return self._codes
568
+
569
+ @codes.setter
570
+ def codes(self, codes: dict[int, str]) -> None:
571
+ if not isinstance(codes, dict):
572
+ raise ValueError(
573
+ "The codes must be a python dictionary, current input "
574
+ f"is type: {type(codes)}"
575
+ )
576
+ self._codes = copy.deepcopy(codes)
577
+
578
+ @property
579
+ def ncodes(self) -> int:
580
+ """Get number of codes if discrete grid property."""
581
+ return len(self._codes)
582
+
583
+ @property
584
+ def values(self) -> np.ma.MaskedArray:
585
+ """Get or set the grid property as a masked 3D numpy array."""
586
+ return self._values
587
+
588
+ @values.setter
589
+ def values(self, values: np.ndarray) -> None:
590
+ values = self.ensure_correct_values(self.ncol, self.nrow, self.nlay, values)
591
+ self._values = values
592
+
593
+ @property
594
+ def ntotal(self) -> int:
595
+ """Get total number of cells (ncol * nrow * nlay)."""
596
+ return self.ncol * self.nrow * self.nlay
597
+
598
+ @property
599
+ def roxorigin(self) -> bool:
600
+ """Get boolean value of True if the property comes from ROXAPI."""
601
+ return self._roxorigin
602
+
603
+ @roxorigin.setter
604
+ def roxorigin(self, val: bool) -> None:
605
+ if not isinstance(val, bool):
606
+ raise ValueError("Input to roxorigin must be True or False")
607
+ self._roxorigin = val
608
+
609
+ @property
610
+ def values1d(self) -> np.ma.MaskedArray:
611
+ """Get a masked 1D array view of values."""
612
+ return self._values.reshape(-1)
613
+
614
+ @property
615
+ def undef(self) -> float | int:
616
+ """Get the actual undef value for floats or ints in numpy arrays."""
617
+ if self._isdiscrete:
618
+ return UNDEF_INT
619
+ return UNDEF
620
+
621
+ @property
622
+ def undef_limit(self) -> float | int:
623
+ """
624
+ Get the undef limit number, which is slightly less than the
625
+ undef value.
626
+
627
+ Hence for numerical precision, one can force undef values
628
+ to a given number, e.g.::
629
+
630
+ x[x<x.undef_limit] = 999
631
+
632
+ Undef limit values cannot be changed (read only).
633
+
634
+ """
635
+ if self._isdiscrete:
636
+ return UNDEF_INT_LIMIT
637
+ return UNDEF_LIMIT
638
+
639
+ # ==================================================================================
640
+ # Class and special methods
641
+ # ==================================================================================
642
+
643
+ def generate_hash(self) -> str:
644
+ """
645
+ Generates a sha256 hash id representing a GridProperty.
646
+
647
+ Returns:
648
+ A unique hash id string.
649
+
650
+ .. versionadded:: 2.10
651
+
652
+ """
653
+ mhash = hashlib.sha256()
654
+ gid = (
655
+ f"{self._filesrc}{self._ncol}{self._nrow}{self._nlay}"
656
+ f"{self._values.mean()}{self._values.min()}{self._values.max()}"
657
+ )
658
+ mhash.update(gid.encode())
659
+ return mhash.hexdigest()
660
+
661
+ @classmethod
662
+ def methods(cls) -> str:
663
+ """
664
+ A list of methods in the class as a string.
665
+
666
+ Returns:
667
+ The names of the methods in the class.
668
+
669
+ Example::
670
+ >>> print(GridProperty.methods())
671
+ METHODS for GridProperty():
672
+ ======================
673
+ __init__
674
+ _reset
675
+ _set_initial_dimensions
676
+ _check_dimensions_match
677
+ ...
678
+
679
+ """
680
+ mets = [x for x, y in cls.__dict__.items() if isinstance(y, FunctionType)]
681
+
682
+ txt = "METHODS for GridProperty():\n======================\n"
683
+ for met in mets:
684
+ txt += str(met) + "\n"
685
+
686
+ return txt
687
+
688
+ def ensure_correct_values(
689
+ self,
690
+ ncol: int,
691
+ nrow: int,
692
+ nlay: int,
693
+ invalues: npt.ArrayLike,
694
+ ) -> np.ma.MaskedArray:
695
+ """
696
+ Ensures that values is a 3D masked numpy (ncol, nrol, nlay).
697
+
698
+ Args:
699
+ ncol: Number of columns.
700
+ nrow: Number of rows.
701
+ nlay: Number of layers.
702
+ invalues: Values to process.
703
+
704
+ Returns:
705
+ The values as a masked numpy array.
706
+
707
+ """
708
+ currentmask = (
709
+ np.ma.getmaskarray(self._values)
710
+ if self._values is not None and isinstance(self._values, np.ma.MaskedArray)
711
+ else None
712
+ )
713
+
714
+ if isinstance(invalues, (int, float)):
715
+ vals = np.ma.zeros((ncol, nrow, nlay), order="C", dtype=self.dtype)
716
+ vals = np.ma.array(vals, mask=currentmask)
717
+ values = vals + invalues
718
+ invalues = values
719
+
720
+ if not isinstance(invalues, np.ma.MaskedArray):
721
+ values = np.ma.array(invalues, mask=currentmask, order="C")
722
+ else:
723
+ values = invalues # new mask is possible
724
+
725
+ if values.shape != (ncol, nrow, nlay):
726
+ try:
727
+ values = np.ma.reshape(values, (ncol, nrow, nlay), order="C")
728
+ except ValueError as emsg:
729
+ xtg.error(f"Cannot reshape array: {emsg}")
730
+ raise
731
+
732
+ # replace any undef or nan with mask
733
+ values = np.ma.masked_greater(values, self.undef_limit)
734
+ values = np.ma.masked_invalid(values)
735
+
736
+ if not values.flags.c_contiguous:
737
+ mask = np.ma.getmaskarray(values)
738
+ mask = np.asanyarray(mask, order="C")
739
+ values = np.asanyarray(values, order="C")
740
+ values = np.ma.array(values, mask=mask, order="C")
741
+
742
+ # the self._isdiscrete property shall win over numpy dtype
743
+ if "int" in str(values.dtype) and not self._isdiscrete:
744
+ values = values.astype(np.float64)
745
+
746
+ if "float" in str(values.dtype) and self._isdiscrete:
747
+ values = values.astype(np.int32)
748
+
749
+ return values
750
+
751
+ # ==================================================================================
752
+ # Import and export
753
+ # ==================================================================================
754
+
755
+ @classmethod
756
+ def _read_file(
757
+ cls,
758
+ filelike: FileLike,
759
+ fformat: str | None = None,
760
+ **kwargs: Any,
761
+ ) -> GridProperty:
762
+ pfile = FileWrapper(filelike)
763
+ fmt = pfile.fileformat(fformat)
764
+ kwargs = _data_reader_factory(fmt)(pfile, **kwargs)
765
+ kwargs["filesrc"] = pfile.file
766
+ return cls(**kwargs)
767
+
768
+ def to_file(
769
+ self,
770
+ pfile: FileLike,
771
+ fformat: Literal["roff", "roffasc", "grdecl", "bgrdecl", "xtgcpprop"] = "roff",
772
+ name: str | None = None,
773
+ append: bool = False,
774
+ dtype: type[np.float32] | type[np.float64] | type[np.int32] | None = None,
775
+ fmt: str | None = None,
776
+ rle: bool = False,
777
+ ) -> None:
778
+ """
779
+ Export the grid property to file.
780
+
781
+ Args:
782
+ pfile: File name or pathlib.Path to export to.
783
+ fformat: The file format to be used. Default is
784
+ roff binary, else roff_ascii/grdecl/bgrdecl.
785
+ name: If provided, will explicitly give property name;
786
+ else the existing name of the instance will used.
787
+ append: Append to existing file, only for (b)grdecl formats.
788
+ dtype: The values data type. This is valid only for grdecl or bgrdecl
789
+ formats, where the default is None which means 'float32' for
790
+ floating point numbers and 'int32' for discrete properties.
791
+ Other choices are 'float64' which are 'DOUB' entries in
792
+ Eclipse formats.
793
+ fmt: Format for ascii grdecl format. Default is None. If specified,
794
+ the user is responsible for a valid format specifier, e.g. "%8.4f".
795
+ rle: Use run length encoding, only for grdecl format.
796
+
797
+ Example::
798
+
799
+ # This example demonstrates that file formats can be mixed
800
+ import xtgeo
801
+ rgrid = xtgeo.grid_from_file("reek.roff")
802
+ poro = GridProperty("reek_poro.grdecl", grid=rgrid, name='PORO')
803
+
804
+ poro.values += 0.05
805
+
806
+ poro.to_file("reek_export_poro.bgrdecl", format="bgrdecl")
807
+
808
+ .. versionadded:: 2.13 Key `fmt` was added and default format for float output
809
+ to grdecl is now "%e" if `fmt=None`
810
+
811
+ """
812
+ _gridprop_export.to_file(
813
+ self,
814
+ pfile,
815
+ fformat=fformat,
816
+ name=name,
817
+ append=append,
818
+ dtype=dtype,
819
+ fmt=fmt,
820
+ rle=rle,
821
+ )
822
+
823
+ @classmethod
824
+ def _read_roxar(
825
+ cls,
826
+ projectname: str,
827
+ gridname: str,
828
+ propertyname: str,
829
+ realisation: int = 0,
830
+ faciescodes: bool = False,
831
+ ) -> GridProperty:
832
+ return cls(
833
+ **_gridprop_roxapi.import_prop_roxapi(
834
+ projectname, gridname, propertyname, realisation, faciescodes
835
+ )
836
+ )
837
+
838
+ def to_roxar(
839
+ self,
840
+ projectname: str,
841
+ gridname: str,
842
+ propertyname: str,
843
+ realisation: int = 0,
844
+ casting: (
845
+ Literal["no", "equiv", "safe", "same_kind", "unsafe"] | None
846
+ ) = "unsafe",
847
+ ) -> None:
848
+ """
849
+ Store a grid model property into a RMS project.
850
+
851
+ Note:
852
+ When project is file path (direct access, outside RMS) then
853
+ ``to_roxar()`` will implicitly do a project save. Otherwise, the project
854
+ will not be saved until the user do an explicit project save action.
855
+
856
+ Note:
857
+ Beware values casting, see ``casting`` key.
858
+ Default is "unsafe" which may create issues if your property has
859
+ values that is outside the valid range. I.e. for float values XTGeo
860
+ normally use `float64` (8 byte) while roxar use `float32` (4 byte).
861
+ With extreme values, e.g. 10e40, such values will be truncated if
862
+ "unsafe" casting. More common is casting issues with discrete as
863
+ Roxar (RMS) often use `uint8` which only allow values in range 1..256.
864
+
865
+ Args:
866
+ projectname: Inside RMS use the magic 'project' string. Otherwise
867
+ use a path to an RMS project, or a project reference.
868
+ gridname: Name of grid model.
869
+ propertyname: Name of grid property.
870
+ realisation: Realisation number. Default is 0 (the first).
871
+ casting: This refers to numpy `astype(... casting=...)` settings.
872
+
873
+ .. versionchanged:: 2.10 Key `saveproject` has been removed and will
874
+ have no effect
875
+ .. versionadded:: 2.12 Key `casting` was added
876
+
877
+ """
878
+ _gridprop_roxapi.export_prop_roxapi(
879
+ self,
880
+ projectname,
881
+ gridname,
882
+ propertyname,
883
+ realisation=realisation,
884
+ casting=casting,
885
+ )
886
+
887
+ # ==================================================================================
888
+ # Various public methods
889
+ # ==================================================================================
890
+
891
+ def describe(self, flush: bool = True) -> str:
892
+ """
893
+ Describe a GridProperty instance by printing its properties
894
+ to stdout
895
+
896
+ Args:
897
+ flush: Print to stdout. True by default.
898
+
899
+ Returns:
900
+ A string description of the grid property instance.
901
+
902
+ """
903
+ from xtgeo.common import XTGDescription
904
+
905
+ dsc = XTGDescription()
906
+ dsc.title("Description of GridProperty instance")
907
+ dsc.txt("Object ID", id(self))
908
+ dsc.txt("Name", self.name)
909
+ dsc.txt("Date", self.date)
910
+ dsc.txt("File source", self._filesrc)
911
+ dsc.txt("Discrete status", self._isdiscrete)
912
+ dsc.txt("Codes", self._codes)
913
+ dsc.txt("Shape: NCOL, NROW, NLAY", self.ncol, self.nrow, self.nlay)
914
+ np.set_printoptions(threshold=16)
915
+ dsc.txt("Values", self._values.reshape(-1), self._values.dtype)
916
+ np.set_printoptions(threshold=1000)
917
+ dsc.txt(
918
+ "Values, mean, stdev, minimum, maximum",
919
+ self.values.mean(),
920
+ self.values.std(),
921
+ self.values.min(),
922
+ self.values.max(),
923
+ )
924
+ itemsize = self.values.itemsize
925
+ msize = float(self.values.size * itemsize) / (1024 * 1024 * 1024)
926
+ dsc.txt("Roxar datatype", self.roxar_dtype)
927
+ dsc.txt("Minimum memory usage of array (GB)", msize)
928
+
929
+ if flush:
930
+ dsc.flush()
931
+ return ""
932
+
933
+ return dsc.astext()
934
+
935
+ def get_npvalues3d(self, fill_value: npt.ArrayLike | None = None) -> np.ndarray:
936
+ """
937
+ Get a pure numpy copy (not masked) of the values in 3D shape.
938
+
939
+ Note that Numpy dtype will be reset; int32 if discrete or float64 if
940
+ continuous. The reason for this is to avoid inconsistensies regarding
941
+ UNDEF values.
942
+
943
+ If fill_value is not None, than the returning dtype is always `np.float64`.
944
+
945
+ Args:
946
+ fill_value: Value of masked entries. Default is None which
947
+ means the XTGeo UNDEF value (a high number). This UNDEF
948
+ value is different for a continuous or discrete property.
949
+
950
+ Returns:
951
+ Non-masked array copy of 3D-shaped values
952
+
953
+ """
954
+ fvalue: float | int
955
+ if fill_value is None:
956
+ if self._isdiscrete:
957
+ fvalue = UNDEF_INT
958
+ dtype: type[np.int32] | type[np.float64] = np.int32
959
+ else:
960
+ fvalue = UNDEF
961
+ dtype = np.float64
962
+ else:
963
+ # TODO: possible bug here
964
+ fvalue = fill_value # type: ignore
965
+ dtype = np.float64
966
+
967
+ val = self.values.copy().astype(dtype)
968
+ npv3d = np.ma.filled(val, fill_value=fvalue)
969
+ del val
970
+
971
+ return npv3d
972
+
973
+ def get_actnum(
974
+ self,
975
+ name: str = "ACTNUM",
976
+ asmasked: bool = False,
977
+ ) -> GridProperty:
978
+ """
979
+ Return an ACTNUM GridProperty object.
980
+
981
+ Note that this method is similar to, but not identical to,
982
+ the job with same name in Grid(). Here, the maskedarray of the values
983
+ is applied to deduce the ACTNUM array.
984
+
985
+ Args:
986
+ name: Name of property in the XTGeo GridProperty object.
987
+ Default is "ACTNUM".
988
+ asmasked: Default is False, so that actnum is returned with all cells
989
+ shown. Use asmasked=True to make 0 entries masked.
990
+
991
+ Returns:
992
+ The ACTNUM GridProperty object.
993
+
994
+ Example::
995
+
996
+ act = mygrid.get_actnum()
997
+ print('{}% cells are active'.format(act.values.mean() * 100))
998
+
999
+ """
1000
+ act = GridProperty(
1001
+ ncol=self._ncol, nrow=self._nrow, nlay=self._nlay, name=name, discrete=True
1002
+ )
1003
+
1004
+ orig = self.values
1005
+ vact = np.ma.ones(self.values.shape)
1006
+ vact[orig.mask] = 0
1007
+
1008
+ if asmasked:
1009
+ vact = np.ma.masked_equal(vact, 0)
1010
+
1011
+ act.values = vact.astype(np.int32)
1012
+ act.isdiscrete = True
1013
+ act.codes = {0: "0", 1: "1"}
1014
+
1015
+ return act
1016
+
1017
+ def get_active_npvalues1d(self) -> np.ma.MaskedArray:
1018
+ """
1019
+ Get the active cells as a 1D numpy masked array.
1020
+
1021
+ Returns:
1022
+ The grid property as a 1D numpy masked array, active cells only.
1023
+
1024
+ """
1025
+ return self.get_npvalues1d(activeonly=True)
1026
+
1027
+ def get_npvalues1d(
1028
+ self,
1029
+ activeonly: bool = False,
1030
+ fill_value: npt.ArrayLike = np.nan,
1031
+ order: Literal["C", "F"] = "C",
1032
+ ) -> np.ma.MaskedArray:
1033
+ """
1034
+ Return the grid property as a 1D numpy array (copy) for active or all
1035
+ cells, but inactive have a fill value.
1036
+
1037
+ Args:
1038
+ activeonly: If True, then only return active cells.
1039
+ Default is False.
1040
+ fill_value: Fill value for inactive cells. Default is `np.nan`.
1041
+ order: Array internal order. Default is "C", alternative is "F".
1042
+
1043
+ Returns:
1044
+ The grid property as a 1D numpy masked array.
1045
+
1046
+ .. versionadded:: 2.3
1047
+ .. versionchanged:: 2.8 Added `fill_value` and `order`
1048
+
1049
+ """
1050
+ vact = self.values1d.copy()
1051
+
1052
+ if order == "F":
1053
+ vact = _gridprop_lowlevel.c2f_order(self, vact)
1054
+
1055
+ if activeonly:
1056
+ return vact.compressed() # safer than vact[~vact.mask] if no masked
1057
+
1058
+ return vact.filled(fill_value)
1059
+
1060
+ def copy(self, newname: str | None = None) -> GridProperty:
1061
+ """
1062
+ Copy a GridProperty object to another instance.
1063
+
1064
+ Args:
1065
+ newname: Give the copied instance a new name.
1066
+
1067
+ Returns:
1068
+ A copy of the GridProperty instance.
1069
+
1070
+ ::
1071
+
1072
+ >>> import xtgeo
1073
+ >>> myporo = xtgeo.gridproperty_from_file(
1074
+ ... reek_dir + '/reek_sim_poro.roff',
1075
+ ... name="PORO"
1076
+ ... )
1077
+ >>> mycopy = myporo.copy(newname='XPROP')
1078
+ >>> print(mycopy.name)
1079
+ XPROP
1080
+
1081
+ """
1082
+ if newname is None:
1083
+ newname = self.name
1084
+ assert newname is not None
1085
+
1086
+ xprop = GridProperty(
1087
+ ncol=self._ncol,
1088
+ nrow=self._nrow,
1089
+ nlay=self._nlay,
1090
+ values=self._values.copy(),
1091
+ name=newname,
1092
+ )
1093
+
1094
+ xprop.geometry = self._geometry
1095
+ xprop.isdiscrete = self._isdiscrete
1096
+ xprop.codes = self._codes
1097
+ xprop.date = self._date
1098
+ xprop.roxorigin = self._roxorigin
1099
+ xprop.roxar_dtype = self.roxar_dtype
1100
+
1101
+ if self._filesrc:
1102
+ xprop.filesrc = self._filesrc
1103
+
1104
+ return xprop
1105
+
1106
+ def mask_undef(self) -> None:
1107
+ """Make UNDEF values masked."""
1108
+ if self._isdiscrete:
1109
+ self._values = np.ma.masked_greater(self._values, UNDEF_INT_LIMIT)
1110
+ else:
1111
+ self._values = np.ma.masked_greater(self._values, UNDEF_LIMIT)
1112
+
1113
+ def crop(
1114
+ self, spec: tuple[tuple[int, int], tuple[int, int], tuple[int, int]]
1115
+ ) -> None:
1116
+ """
1117
+ Crop a property between grid coordinates.
1118
+
1119
+ Args:
1120
+ spec: Provide a tuple of i, j, k lower and upper bounds
1121
+ to crop between, e.g. ((1, 3), (2, 4), (1, 5)) would
1122
+ crop a grid property such that only values from 1:3 in
1123
+ the i plane, 2:4 in the j plane, and 1:5 in the k plane
1124
+ would be present.
1125
+
1126
+ """
1127
+ (ic1, ic2), (jc1, jc2), (kc1, kc2) = spec
1128
+
1129
+ # Compute size of new cropped grid
1130
+ self._ncol = ic2 - ic1 + 1
1131
+ self._nrow = jc2 - jc1 + 1
1132
+ self._nlay = kc2 - kc1 + 1
1133
+
1134
+ newvalues = self.values.copy()
1135
+
1136
+ self.values = newvalues[ic1 - 1 : ic2, jc1 - 1 : jc2, kc1 - 1 : kc2]
1137
+
1138
+ def get_xy_value_lists(
1139
+ self, grid: Grid | None = None, activeonly: bool = True
1140
+ ) -> XYValueLists:
1141
+ """
1142
+ Get lists of xy coords and values for Webportal format.
1143
+
1144
+ The coordinates are on the form (two cells)::
1145
+
1146
+ [[[(x1,y1), (x2,y2), (x3,y3), (x4,y4)],
1147
+ [(x5,y5), (x6,y6), (x7,y7), (x8,y8)]]]
1148
+
1149
+ Args:
1150
+ grid: The XTGeo Grid object for the property. Defaults to None.
1151
+ activeonly: If True (default), active cells only,
1152
+ otherwise cell geometries will be listed and property will
1153
+ have value -999 in undefined cells.
1154
+
1155
+ Returns:
1156
+ A tuple of two lists, one being the xr coords, the other
1157
+ the values at those coords.
1158
+
1159
+
1160
+ Example::
1161
+
1162
+ import xtgeo
1163
+ grid = xtgeo.grid_from_file("../xtgeo-testdata/3dgrids/bri/b_grid.roff")
1164
+ prop = xtgeogridproperty_from_file(
1165
+ "../xtgeo-testdata/3dgrids/bri/b_poro.roff", grid=grid, name="PORO"
1166
+ )
1167
+
1168
+ clist, valuelist = prop.get_xy_value_lists(
1169
+ grid=grid, activeonly=False
1170
+ )
1171
+
1172
+ """
1173
+ clist, vlist = _gridprop_op1.get_xy_value_lists(
1174
+ self, grid=grid, mask=activeonly
1175
+ )
1176
+ return clist, vlist
1177
+
1178
+ def get_values_by_ijk(
1179
+ self, iarr: np.ndarray, jarr: np.ndarray, karr: np.ndarray, base: int = 1
1180
+ ) -> npt.NDArray | None:
1181
+ """
1182
+ Get a 1D ndarray of values by I J K arrays.
1183
+
1184
+ This could for instance be a well path where I J K
1185
+ exists as well logs.
1186
+
1187
+ Note that the input arrays have 1 as base as default
1188
+
1189
+ Args:
1190
+ iarr: Numpy array of I
1191
+ jarr: Numpy array of J
1192
+ karr: Numpy array of K
1193
+ base: Should be 1 or 0, dependent on what
1194
+ number base the input arrays has.
1195
+
1196
+ Returns:
1197
+ A 1D numpy array of property values,
1198
+ with NaN if undefined. Returns None
1199
+ on IndexErrors.
1200
+
1201
+ """
1202
+ res = np.zeros(iarr.shape, dtype="float64")
1203
+ res = np.ma.masked_equal(res, 0) # mask all
1204
+
1205
+ # get indices where defined (note the , after valids)
1206
+ (valids,) = np.where(~np.isnan(iarr))
1207
+
1208
+ iarr = iarr[~np.isnan(iarr)]
1209
+ jarr = jarr[~np.isnan(jarr)]
1210
+ karr = karr[~np.isnan(karr)]
1211
+
1212
+ try:
1213
+ res[valids] = self.values[
1214
+ iarr.astype("int") - base,
1215
+ jarr.astype("int") - base,
1216
+ karr.astype("int") - base,
1217
+ ]
1218
+ return np.ma.filled(res, fill_value=np.nan)
1219
+ except IndexError as ier:
1220
+ xtg.warn(f"Error {ier}, return None")
1221
+ return None
1222
+ except: # noqa
1223
+ xtg.warn("Unexpected error")
1224
+ raise
1225
+
1226
+ def discrete_to_continuous(self) -> None:
1227
+ """Convert from discrete to continuous values."""
1228
+ _gridprop_op1.discrete_to_continuous(self)
1229
+
1230
+ def continuous_to_discrete(self) -> None:
1231
+ """Convert from continuous to discrete values."""
1232
+ _gridprop_op1.continuous_to_discrete(self)
1233
+
1234
+ # ==================================================================================
1235
+ # Operations restricted to inside/outside polygons
1236
+ # ==================================================================================
1237
+
1238
+ def operation_polygons(
1239
+ self,
1240
+ poly: Polygons,
1241
+ value: float | int,
1242
+ opname: Literal["add", "sub", "mul", "div", "set"] = "add",
1243
+ inside: bool = True,
1244
+ ) -> None:
1245
+ """
1246
+ A generic function for doing 3D grid property operations
1247
+ restricted to inside or outside polygon(s).
1248
+
1249
+ This method requires that the property geometry is known
1250
+ (prop.geometry is set to a grid instance).
1251
+
1252
+ Args:
1253
+ poly: A XTGeo Polygons instance.
1254
+ value: Value to add, subtract etc.
1255
+ opname: Name of operation... "add", "sub", etc.
1256
+ Defaults to "add".
1257
+ inside: If True do operation inside polygons; else outside.
1258
+ Defaults to True.
1259
+
1260
+ """
1261
+ if self.geometry is None:
1262
+ msg = """
1263
+ You need to link the property to a grid geometry:"
1264
+
1265
+ myprop.geometry = mygrid
1266
+
1267
+ """
1268
+ xtg.warnuser(msg)
1269
+ raise ValueError("The geometry attribute is not set")
1270
+
1271
+ _gridprop_op1.operation_polygons(
1272
+ self, poly, value, opname=opname, inside=inside
1273
+ )
1274
+
1275
+ def add_inside(self, poly: Polygons, value: float | int) -> None:
1276
+ """Add a value (scalar) inside polygons."""
1277
+ self.operation_polygons(poly, value, opname="add", inside=True)
1278
+
1279
+ def add_outside(self, poly: Polygons, value: float | int) -> None:
1280
+ """Add a value (scalar) outside polygons."""
1281
+ self.operation_polygons(poly, value, opname="add", inside=False)
1282
+
1283
+ def sub_inside(self, poly: Polygons, value: float | int) -> None:
1284
+ """Subtract a value (scalar) inside polygons."""
1285
+ self.operation_polygons(poly, value, opname="sub", inside=True)
1286
+
1287
+ def sub_outside(self, poly: Polygons, value: float | int) -> None:
1288
+ """Subtract a value (scalar) outside polygons."""
1289
+ self.operation_polygons(poly, value, opname="sub", inside=False)
1290
+
1291
+ def mul_inside(self, poly: Polygons, value: float | int) -> None:
1292
+ """Multiply a value (scalar) inside polygons."""
1293
+ self.operation_polygons(poly, value, opname="mul", inside=True)
1294
+
1295
+ def mul_outside(self, poly: Polygons, value: float | int) -> None:
1296
+ """Multiply a value (scalar) outside polygons."""
1297
+ self.operation_polygons(poly, value, opname="mul", inside=False)
1298
+
1299
+ def div_inside(self, poly: Polygons, value: float | int) -> None:
1300
+ """Divide a value (scalar) inside polygons."""
1301
+ self.operation_polygons(poly, value, opname="div", inside=True)
1302
+
1303
+ def div_outside(self, poly: Polygons, value: float | int) -> None:
1304
+ """Divide a value (scalar) outside polygons."""
1305
+ self.operation_polygons(poly, value, opname="div", inside=False)
1306
+
1307
+ def set_inside(self, poly: Polygons, value: float | int) -> None:
1308
+ """Set a value (scalar) inside polygons."""
1309
+ self.operation_polygons(poly, value, opname="set", inside=True)
1310
+
1311
+ def set_outside(self, poly: Polygons, value: float | int) -> None:
1312
+ """Set a value (scalar) outside polygons."""
1313
+ self.operation_polygons(poly, value, opname="set", inside=False)