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,766 @@
1
+ # coding: utf-8
2
+ """RMSAPI (former Roxar API) functions for XTGeo Points/Polygons, i.e. XYZ data."""
3
+
4
+ from __future__ import annotations
5
+
6
+ from enum import Enum
7
+ from typing import Any, Literal, Type, cast
8
+
9
+ import numpy as np
10
+ import pandas as pd
11
+
12
+ from xtgeo.common._xyz_enum import _AttrName, _XYZType
13
+ from xtgeo.common.constants import UNDEF, UNDEF_INT, UNDEF_INT_LIMIT, UNDEF_LIMIT
14
+ from xtgeo.common.log import null_logger
15
+ from xtgeo.roxutils import RoxUtils
16
+ from xtgeo.roxutils._roxar_loader import RoxarType, roxar, roxar_well_picks
17
+ from xtgeo.xyz import points, polygons
18
+
19
+ if roxar:
20
+ roxwp = roxar_well_picks
21
+
22
+ logger = null_logger(__name__)
23
+
24
+
25
+ class STYPE(str, Enum):
26
+ HORIZONS = "horizons"
27
+ ZONES = "zones"
28
+ CLIPBOARD = "clipboard"
29
+ GENERAL2D_DATA = "general2d_data"
30
+ FAULTS = "faults"
31
+ WELL_PICKS = "well_picks"
32
+
33
+ @classmethod
34
+ def _missing_(cls: Type[STYPE], value: object) -> None:
35
+ valid_values = [m.value for m in cls]
36
+ raise ValueError(f"Invalid stype {value}. Valid entries are {valid_values}")
37
+
38
+
39
+ XYZ_COLUMNS = [_AttrName.XNAME.value, _AttrName.YNAME.value, _AttrName.ZNAME.value]
40
+ REQUIRED_WELL_PICK_ATTRIBUTES = [
41
+ _AttrName.M_MD_NAME.value,
42
+ _AttrName.WELLNAME.value,
43
+ _AttrName.TRAJECTORY.value,
44
+ ]
45
+ VALID_WELL_PICK_TYPES = ["fault", "horizon"] # note, not plural as in STYPE
46
+
47
+
48
+ def _check_input_and_version_requirement(
49
+ roxutils: RoxUtils,
50
+ stype: STYPE,
51
+ category: str | list[str] | None,
52
+ attributes: list[str] | bool | None,
53
+ xyztype: _XYZType,
54
+ mode: Literal["set", "get"],
55
+ ) -> None:
56
+ """General check of some input values."""
57
+
58
+ if attributes is not None:
59
+ if mode == "get" and not isinstance(attributes, (list, bool)):
60
+ raise TypeError("'attributes' argument can only be of type list or bool")
61
+ if mode == "set" and not isinstance(attributes, bool):
62
+ raise TypeError("'attributes' argument can only be of type bool")
63
+
64
+ logger.info("The stype is: %s", stype.value)
65
+
66
+ # note: check of clipboard va Roxar API 1.2 is now removed as usage of
67
+ # such old API versions is obsolute.
68
+ if stype in (
69
+ STYPE.GENERAL2D_DATA,
70
+ STYPE.WELL_PICKS,
71
+ ) and not roxutils.version_required("1.6"):
72
+ raise NotImplementedError(
73
+ f"API Support for {stype.value} is missing in this RMS version "
74
+ f"(current API version is {roxutils.roxversion} - required is 1.6)"
75
+ )
76
+
77
+ if stype == STYPE.WELL_PICKS:
78
+ if category not in VALID_WELL_PICK_TYPES:
79
+ raise ValueError(
80
+ f"Invalid {category=}. Valid entries are {VALID_WELL_PICK_TYPES}"
81
+ )
82
+ if xyztype == _XYZType.POLYGONS.value:
83
+ raise ValueError(f"Polygons does not support stype={stype.value}.")
84
+
85
+
86
+ def _check_presence_in_project(
87
+ rox: RoxUtils,
88
+ name: str,
89
+ category: str | list[str] | None,
90
+ stype: STYPE,
91
+ realisation: int,
92
+ mode: Literal["set", "get"] = "get",
93
+ ) -> None:
94
+ """Helper to check if valid placeholder' whithin RMS."""
95
+
96
+ logger.warning("Realisation %s not in use", realisation)
97
+
98
+ project_attr = getattr(rox.project, stype)
99
+
100
+ if stype in [STYPE.HORIZONS, STYPE.ZONES, STYPE.FAULTS]:
101
+ if name not in project_attr:
102
+ raise ValueError(f"Cannot access {name=} in {stype.value}")
103
+ if category is None:
104
+ raise ValueError("Need to specify category for horizons, zones and faults")
105
+ if isinstance(category, list) or category not in project_attr.representations:
106
+ raise ValueError(f"Cannot access {category=} in {stype.value}")
107
+ if mode == "get" and project_attr[name][category].is_empty():
108
+ raise RuntimeError(f"'{name}' is empty for {stype.value} {category=}")
109
+
110
+ # only need to check presence in clipboard/general2d_data/well_picks if mode = get.
111
+ if mode == "get":
112
+ if stype in [STYPE.CLIPBOARD, STYPE.GENERAL2D_DATA]:
113
+ folders = _get_rox_clipboard_folders(category)
114
+
115
+ try:
116
+ rox_folder = project_attr.folders[folders]
117
+ except KeyError as keyerr:
118
+ raise ValueError(
119
+ "Cannot access clipboards folder (not existing?)"
120
+ ) from keyerr
121
+
122
+ if name not in rox_folder:
123
+ raise ValueError(f"Name {name} is not within Clipboard...")
124
+
125
+ if stype == STYPE.WELL_PICKS and name not in project_attr.sets:
126
+ raise ValueError(f"Well pick set {name} is not within Well Picks.")
127
+
128
+
129
+ def load_xyz_from_rms(
130
+ project: RoxarType.project,
131
+ name: str,
132
+ category: str | list[str],
133
+ stype: str = STYPE.HORIZONS.value,
134
+ realisation: int = 0,
135
+ attributes: list[str] | bool | None = False,
136
+ xyztype: str = _XYZType.POINTS.value,
137
+ ) -> dict[str, Any]:
138
+ """Import a Points or Polygons item via ROXAR API spec.
139
+
140
+ 'Import' means transfer of data from Roxar API memory space to XTGeo memory space.
141
+
142
+ ~ a part of a classmethod, and it will return the following kwargs to __init__()::
143
+
144
+ xname
145
+ yname
146
+ zname
147
+ pname # optional for Polygons
148
+ name
149
+ dataframe
150
+ values=None # since dataframe is set
151
+ filesrc
152
+ """
153
+
154
+ rox = RoxUtils(project, readonly=True)
155
+ stype = STYPE(stype.lower())
156
+
157
+ _check_input_and_version_requirement(
158
+ rox, stype, category, attributes, xyztype, mode="get"
159
+ )
160
+ _check_presence_in_project(rox, name, category, stype, realisation, mode="get")
161
+
162
+ if stype == STYPE.WELL_PICKS:
163
+ category = cast("Literal['fault', 'horizon']", category)
164
+ result = _load_wellpicks_from_rms(
165
+ rox=rox,
166
+ well_pick_set=name,
167
+ wp_category=category,
168
+ attributes=attributes,
169
+ )
170
+ else:
171
+ result = _load_xyz_from_rms(
172
+ rox, name, category, stype, realisation, xyztype, attributes
173
+ )
174
+
175
+ rox.safe_close()
176
+ return result
177
+
178
+
179
+ def _load_xyz_from_rms(
180
+ rox: RoxUtils,
181
+ name: str,
182
+ category: str | list[str] | None,
183
+ stype: STYPE,
184
+ realisation: int,
185
+ xyztype: str,
186
+ attributes: bool | list[str],
187
+ ) -> dict[str, str | dict | pd.DataFrame]:
188
+ """From RMS Points, Polygons, Picks to XTGeo"""
189
+
190
+ kwargs: dict[str, str | dict | pd.DataFrame] = {
191
+ "xname": _AttrName.XNAME.value,
192
+ "yname": _AttrName.YNAME.value,
193
+ "zname": _AttrName.ZNAME.value,
194
+ }
195
+
196
+ if xyztype == _XYZType.POLYGONS.value:
197
+ kwargs["pname"] = _AttrName.PNAME.value
198
+
199
+ roxxyz = _get_roxitem(
200
+ rox,
201
+ name,
202
+ category,
203
+ stype,
204
+ mode="get",
205
+ xyztype=xyztype,
206
+ )
207
+ values = _get_roxvalues(roxxyz, realisation=realisation)
208
+
209
+ dfr = _rmsapi_xyz_to_dataframe(values, xyztype)
210
+
211
+ # handling attributes for points and polygons/polylines, from Roxar API version 1.6
212
+ if attributes:
213
+ attr_names = roxxyz.get_attributes_names(realisation=realisation)
214
+ if isinstance(attributes, list):
215
+ attr_names = [a for a in attr_names if a in attributes]
216
+ logger.info("XYZ attribute names are: %s", attr_names)
217
+ attr_dict = _get_rox_attrvalues(roxxyz, attr_names, realisation=realisation)
218
+
219
+ poly_id = None if xyztype == _XYZType.POINTS.value else kwargs["pname"]
220
+
221
+ dfr, datatypes = _add_attributes_to_dataframe(dfr, attr_dict, xyztype, poly_id)
222
+ kwargs["attributes"] = datatypes
223
+
224
+ kwargs["values"] = dfr
225
+ return kwargs
226
+
227
+
228
+ def _rmsapi_xyz_to_dataframe(
229
+ roxxyz: list[np.ndarray] | np.ndarray, xyztype: str = _XYZType.POINTS.value
230
+ ) -> pd.DataFrame:
231
+ """Transforming some XYZ from ROXAPI/RMSAPI to a Pandas dataframe."""
232
+
233
+ # In ROXAPI, polygons/polylines are a list of numpies, while
234
+ # points is just a numpy array. Hence a polyg* may be identified
235
+ # by being a list after import
236
+
237
+ if xyztype == _XYZType.POLYGONS.value and isinstance(roxxyz, list):
238
+ # polylines/-gons
239
+ dfs = []
240
+ for idx, poly in enumerate(roxxyz):
241
+ dataset = pd.DataFrame.from_records(poly, columns=XYZ_COLUMNS)
242
+ dataset["POLY_ID"] = idx
243
+ dfs.append(dataset)
244
+
245
+ dfr = pd.concat(dfs)
246
+
247
+ elif xyztype == _XYZType.POINTS.value and isinstance(roxxyz, np.ndarray):
248
+ # points
249
+ dfr = pd.DataFrame.from_records(roxxyz, columns=XYZ_COLUMNS)
250
+
251
+ else:
252
+ raise RuntimeError(f"Unknown error in getting data from RMS: {type(roxxyz)}")
253
+
254
+ dfr.reset_index(drop=True, inplace=True)
255
+ return dfr
256
+
257
+
258
+ def _infer_type(values: np.array) -> Literal["str", "float", "int"]:
259
+ """Helper function for points/polygons attributes type."""
260
+ dtype = str(values.dtype)
261
+ if "int" in dtype:
262
+ return "int"
263
+ if "float" in dtype:
264
+ return "float"
265
+ return "str"
266
+
267
+
268
+ def _add_attributes_to_dataframe(
269
+ dfr: pd.DataFrame,
270
+ attributes: dict,
271
+ xyztype: _XYZType,
272
+ poly_id_name: str = _AttrName.PNAME.value,
273
+ ) -> tuple[pd.DataFrame, dict[str, str]]:
274
+ """Add attributes to dataframe (points and polygons) for Roxar API ver 1.6+
275
+
276
+ Note that Points and Polygons behave a bit different, as for Polygons only
277
+ a value per POLY_ID is given in a list, while Points deals with numpy arrays.
278
+ """
279
+
280
+ logger.info("Attributes adding to dataframe...")
281
+ newdfr = dfr.copy()
282
+
283
+ datatypes = {}
284
+ for name, values in attributes.items():
285
+ datatypes[name] = _infer_type(values)
286
+
287
+ fill_value = (
288
+ UNDEF_INT
289
+ if datatypes[name] == "int"
290
+ else UNDEF
291
+ if datatypes[name] == "float"
292
+ else "UNDEF"
293
+ )
294
+
295
+ if xyztype == _XYZType.POLYGONS.value:
296
+ id_to_name = {id_no: value for id_no, value in enumerate(values)} # noqa: C416
297
+ newdfr[name] = newdfr[poly_id_name].map(id_to_name)
298
+ else:
299
+ newdfr[name] = np.ma.filled(values, fill_value=fill_value)
300
+
301
+ return newdfr, datatypes
302
+
303
+
304
+ def save_xyz_to_rms(
305
+ self: points.Points | polygons.Polygons,
306
+ project: RoxarType.Project,
307
+ name: str,
308
+ category: str | list[str] | None,
309
+ stype: str,
310
+ pfilter: dict[str, list],
311
+ realisation: int,
312
+ attributes: bool = False,
313
+ ) -> None:
314
+ """Export (store) a XYZ item from XTGeo to RMS via ROXAR API spec."""
315
+
316
+ rox = RoxUtils(project, readonly=False)
317
+ stype = STYPE(stype.lower())
318
+
319
+ _check_input_and_version_requirement(
320
+ rox, stype, category, attributes, self._xyztype, mode="set"
321
+ )
322
+ _check_presence_in_project(rox, name, category, stype, realisation, mode="set")
323
+
324
+ if stype == STYPE.WELL_PICKS:
325
+ assert isinstance(self, points.Points)
326
+ category = cast("Literal['fault', 'horizon']", category)
327
+ _save_well_picks_to_rms(self, rox, name, category, attributes, pfilter)
328
+ else:
329
+ _save_xyz_to_rms(
330
+ self, rox, name, category, stype, pfilter, realisation, attributes
331
+ )
332
+
333
+ if rox._roxexternal:
334
+ rox.project.save()
335
+
336
+ rox.safe_close()
337
+
338
+
339
+ def _save_xyz_to_rms(
340
+ self: points.Points | polygons.Polygons,
341
+ rox: RoxUtils,
342
+ name: str,
343
+ category: str | list[str] | None,
344
+ stype: STYPE,
345
+ pfilter: dict[str, list] | None,
346
+ realisation: int,
347
+ attributes: bool,
348
+ ) -> None:
349
+ logger.warning("Realisation %s not in use", realisation)
350
+
351
+ df = self.get_dataframe()
352
+ if df is None or df.empty:
353
+ logger.warning("Empty dataframe! Skipping object update...")
354
+ return
355
+
356
+ xyz_columns = [self.xname, self.yname, self.zname]
357
+ if not set(xyz_columns).issubset(df.columns):
358
+ raise ValueError(
359
+ f"One or all {xyz_columns=} are missing in the dataframe, "
360
+ f"available columns are {list(df.columns)}! "
361
+ "Rename your columns or update the corresponding 'xname', "
362
+ "'yname' and 'zname' attributes to columns in your dataframe."
363
+ )
364
+
365
+ roxxyz = _get_roxitem(
366
+ rox,
367
+ name,
368
+ category,
369
+ stype,
370
+ mode="set",
371
+ xyztype=self._xyztype,
372
+ )
373
+
374
+ df = _apply_pfilter_to_dataframe(df, pfilter)
375
+ if df.empty:
376
+ logger.warning("Empty dataframe after filtering! Skipping object update...")
377
+ return
378
+
379
+ arrxyz = (
380
+ [polydf[xyz_columns].to_numpy() for _, polydf in df.groupby(self.pname)]
381
+ if self._xyztype == _XYZType.POLYGONS.value
382
+ else df[xyz_columns].to_numpy()
383
+ )
384
+
385
+ roxxyz.set_values(arrxyz)
386
+
387
+ if attributes:
388
+ if self._xyztype == _XYZType.POINTS.value:
389
+ for attr in _get_attribute_names_from_dataframe(df, xyz_columns):
390
+ values = _replace_undefined_values(
391
+ values=df[attr].values, dtype=self._attrs.get(attr), asmasked=True
392
+ )
393
+
394
+ logger.info("Store Point attribute %s to Roxar API", name)
395
+ roxxyz.set_attribute_values(attr, values)
396
+ elif self._xyztype == _XYZType.POLYGONS.value:
397
+ raise NotImplementedError(
398
+ "Setting attributes for Polygons is not implemented in RMS API"
399
+ )
400
+
401
+
402
+ def _get_attribute_names_from_dataframe(
403
+ df: pd.DataFrame, xyz_columns: list[str] | None = None
404
+ ) -> list[str]:
405
+ xyz_columns = xyz_columns or XYZ_COLUMNS
406
+ return [col for col in df.columns if col not in xyz_columns]
407
+
408
+
409
+ def _get_attribute_type_from_values(values: np.ndarray) -> str:
410
+ if "float" in str(values.dtype):
411
+ return "float"
412
+ if "int" in str(values.dtype):
413
+ return "int"
414
+ return "str"
415
+
416
+
417
+ def _replace_undefined_values(
418
+ values: np.ndarray,
419
+ dtype: str | None = None,
420
+ asmasked: bool = False,
421
+ ) -> np.ndarray | np.ma.MaskedArray:
422
+ """
423
+ Set xtgeo UNDEF values to np.nan or empty string dependent on type.
424
+ With option to return array with masked values instead of np.nan.
425
+ """
426
+ values = pd.to_numeric(values, errors="ignore")
427
+
428
+ dtype = dtype or _get_attribute_type_from_values(values)
429
+
430
+ if dtype == "float":
431
+ if asmasked:
432
+ return np.ma.masked_greater(values, UNDEF_LIMIT)
433
+ return np.where(values > UNDEF_LIMIT, np.nan, values)
434
+
435
+ if dtype == "int":
436
+ if asmasked:
437
+ return np.ma.masked_greater(values, UNDEF_INT_LIMIT)
438
+ return np.where(values > UNDEF_INT_LIMIT, np.nan, values)
439
+
440
+ # string attributes does not support nan values
441
+ # and requires string type array returned
442
+ values = values.astype(str)
443
+ return np.where(np.isin(values, ["UNDEF", "nan"]), "", values)
444
+
445
+
446
+ def _apply_pfilter_to_dataframe(
447
+ df: pd.DataFrame, pfilter: dict[str, list] | None
448
+ ) -> pd.DataFrame:
449
+ if pfilter is not None:
450
+ for key, val in pfilter.items():
451
+ if key not in df:
452
+ raise KeyError(
453
+ f"The requested pfilter key {key} was not found in dataframe. "
454
+ f"Valid keys are {list(df.columns)}"
455
+ )
456
+ df = df.loc[df[key].isin(val)]
457
+ return df
458
+
459
+
460
+ def _get_rox_clipboard_folders(category: str | list[str] | None) -> list[str]:
461
+ if category is None or category == "":
462
+ return []
463
+
464
+ if isinstance(category, list):
465
+ return category
466
+
467
+ if isinstance(category, str):
468
+ if "|" in category:
469
+ return category.split("|")
470
+ if "/" in category:
471
+ return category.split("/")
472
+ return [category]
473
+
474
+ raise RuntimeError(f"Cannot parse category: {category}, see documentation!")
475
+
476
+
477
+ def _get_roxitem(
478
+ rox: RoxUtils,
479
+ name: str,
480
+ category: str | list[str] | None,
481
+ stype: STYPE,
482
+ mode: Literal["set", "get"] = "set",
483
+ xyztype: str = _XYZType.POINTS.value,
484
+ ) -> Any:
485
+ """Get the correct rox_xyz which is some pointer to a RoxarAPI structure."""
486
+
487
+ project_attr = getattr(rox.project, stype)
488
+
489
+ if stype not in [STYPE.CLIPBOARD, STYPE.GENERAL2D_DATA]:
490
+ return project_attr[name][category]
491
+
492
+ folders = _get_rox_clipboard_folders(category)
493
+ if mode == "get":
494
+ return project_attr.folders[folders][name]
495
+
496
+ # clipboard folders will be created if not present, and overwritten else
497
+ return (
498
+ project_attr.create_polylines(name, folders)
499
+ if xyztype == _XYZType.POLYGONS.value
500
+ else project_attr.create_points(name, folders)
501
+ )
502
+
503
+
504
+ def _get_roxvalues(rox_xyz: Any, realisation: int = 0) -> list[np.ndarray] | np.ndarray:
505
+ """Return primary values from the Roxar API, numpy (Points) or list (Polygons)."""
506
+ try:
507
+ roxitem = rox_xyz.get_values(realisation)
508
+ logger.info(roxitem)
509
+ except KeyError as kwe:
510
+ logger.error(kwe)
511
+
512
+ return roxitem
513
+
514
+
515
+ def _get_rox_attrvalues(
516
+ rox_xyz: Any, attrnames: list[str], realisation: int = 0
517
+ ) -> dict[str, list[np.ndarray] | np.ndarray]:
518
+ """Return attributes from the Roxar API, numpy (Points) or list (Polygons)."""
519
+ roxitems = {}
520
+ for attrname in attrnames:
521
+ values = rox_xyz.get_attribute_values(attrname, realisation=realisation)
522
+ roxitems[attrname] = values
523
+ return roxitems
524
+
525
+
526
+ def _load_wellpicks_from_rms(
527
+ rox: RoxUtils,
528
+ well_pick_set: str,
529
+ wp_category: Literal["fault", "horizon"] = "horizon",
530
+ attributes: bool | list[str] = False,
531
+ ) -> dict[str, str | pd.DataFrame | dict]:
532
+ """From RMS to XTGeo"""
533
+
534
+ rox_wp = rox.project.well_picks
535
+ rox_wp_set = rox_wp.sets[well_pick_set]
536
+
537
+ well_picks = [wp for wp in rox_wp_set if wp.type.name == wp_category]
538
+ if len(well_picks) == 0:
539
+ raise ValueError(
540
+ f"No well picks of type '{wp_category}' found in {well_pick_set=}."
541
+ )
542
+
543
+ attribute_types = {}
544
+ if attributes:
545
+ rox_attributes = well_picks[0].attributes # first one is valid for all
546
+ for rox_attr in rox_attributes:
547
+ if isinstance(attributes, list) and rox_attr.name not in attributes:
548
+ continue
549
+ attribute_types[rox_attr.name] = rox_attr.type.name
550
+
551
+ dfr = _create_dataframe_from_wellpicks(well_picks, wp_category, attribute_types)
552
+
553
+ return {
554
+ "xname": _AttrName.XNAME.value,
555
+ "yname": _AttrName.YNAME.value,
556
+ "zname": _AttrName.ZNAME.value,
557
+ "values": dfr,
558
+ "attributes": attribute_types,
559
+ }
560
+
561
+
562
+ def _create_dataframe_from_wellpicks(
563
+ well_picks: list[RoxarType.well_picks.WellPick],
564
+ wp_category: Literal["fault", "horizon"],
565
+ attribute_types: dict[str, str],
566
+ ) -> pd.DataFrame:
567
+ """Create a dataframe from a well pick set, and selected attributes."""
568
+
569
+ items = []
570
+ for wp in well_picks:
571
+ wp_attributes = {attr.name: val for attr, val in wp.get_values().items()}
572
+
573
+ data = {
574
+ _AttrName.XNAME.value: wp_attributes["East"],
575
+ _AttrName.YNAME.value: wp_attributes["North"],
576
+ _AttrName.ZNAME.value: wp_attributes["TVD_MSL"],
577
+ _AttrName.M_MD_NAME.value: wp_attributes["MD"],
578
+ "WELLNAME": wp.trajectory.wellbore.well.name,
579
+ "TRAJECTORY": wp.trajectory.name,
580
+ wp_category.upper(): wp.intersection_object.name,
581
+ }
582
+
583
+ for attr, dtype in attribute_types.items():
584
+ if attr in wp_attributes:
585
+ if wp_attributes[attr] is not None:
586
+ data[attr] = wp_attributes[attr]
587
+ else:
588
+ if dtype == "float":
589
+ data[attr] = UNDEF
590
+ elif dtype == "int":
591
+ data[attr] = UNDEF_INT
592
+ else:
593
+ data[attr] = "UNDEF"
594
+
595
+ items.append(data)
596
+
597
+ return pd.DataFrame(items)
598
+
599
+
600
+ def _save_well_picks_to_rms(
601
+ self: points.Points,
602
+ rox: RoxUtils,
603
+ well_pick_set: str,
604
+ wp_category: Literal["horizon", "fault"],
605
+ attributes: bool,
606
+ pfilter: dict[str, list] | None,
607
+ ) -> None:
608
+ """
609
+ Export/store as RMS well picks; this is only valid if points belong to wells
610
+ """
611
+
612
+ df = self.get_dataframe()
613
+ if df is None or df.empty:
614
+ logger.warning("Empty dataframe! Skipping object update...")
615
+ return
616
+
617
+ project_attr = getattr(rox.project, f"{wp_category}s")
618
+ rox_wp_type = getattr(roxar.WellPickType, wp_category)
619
+
620
+ df = _apply_pfilter_to_dataframe(df, pfilter)
621
+ if df.empty:
622
+ logger.warning("Empty dataframe after filtering! Skipping object update...")
623
+ return
624
+
625
+ required_columns = REQUIRED_WELL_PICK_ATTRIBUTES + [wp_category.upper()]
626
+ for column in required_columns:
627
+ if column not in df:
628
+ raise ValueError(f"Required {column=} missing in the dataframe.")
629
+ if df[column].isnull().any():
630
+ raise ValueError(f"The required {column=} contains undefined values.")
631
+
632
+ if attributes:
633
+ attr_types = self._attrs
634
+
635
+ attr_types = {}
636
+ for attr in _get_attribute_names_from_dataframe(df):
637
+ if attr not in required_columns:
638
+ if attr in self._attrs:
639
+ attr_types[attr] = self._attrs[attr]
640
+ else:
641
+ attr_types[attr] = _get_attribute_type_from_values(df[attr])
642
+
643
+ rox_wp_attributes = _get_writeable_well_pick_attributes(
644
+ rox, attr_types, rox_wp_type
645
+ )
646
+ for attr in rox_wp_attributes:
647
+ df[attr] = _replace_undefined_values(
648
+ values=df[attr].values, dtype=attr_types.get(attr), asmasked=False
649
+ )
650
+
651
+ mypicks = []
652
+ for well, wp_df in df.groupby("WELLNAME"):
653
+ rox_well_traj = rox.project.wells[well].wellbore.trajectories
654
+
655
+ for _, wp_row in wp_df.iterrows():
656
+ intersection_object_name = wp_row[wp_category.upper()]
657
+ if intersection_object_name not in project_attr:
658
+ raise ValueError(
659
+ f"{wp_category} '{intersection_object_name}' not in project"
660
+ )
661
+ traj_name = wp_row["TRAJECTORY"]
662
+ if traj_name not in rox_well_traj:
663
+ raise ValueError(
664
+ f"Trajectory name '{traj_name}' not present for {well=}"
665
+ )
666
+ wp = roxar.well_picks.WellPick.create(
667
+ intersection_object=project_attr[intersection_object_name],
668
+ trajectory=rox_well_traj[traj_name],
669
+ md=wp_row[_AttrName.M_MD_NAME.value],
670
+ )
671
+ if attributes:
672
+ for attr, rox_attr in rox_wp_attributes.items():
673
+ try:
674
+ wp.set_values({rox_attr: wp_row[attr]})
675
+ except ValueError as err:
676
+ raise ValueError(
677
+ f"Could not assign value '{wp_row[attr]}' to attribute "
678
+ f"'{attr}'. The value type {type(wp_row[attr])} might be "
679
+ f"incompatible with dtype of attribute '{rox_attr.type}'"
680
+ ) from err
681
+
682
+ mypicks.append(wp)
683
+
684
+ rox_wps = _get_well_pick_set(rox, well_pick_set, rox_wp_type)
685
+ rox_wps.append(mypicks)
686
+
687
+
688
+ def _get_well_pick_set(
689
+ rox: RoxUtils, well_pick_set: str, rox_wp_type: RoxarType.WellPickType
690
+ ) -> RoxarType.well_picks.WellPickSet:
691
+ """
692
+ Function to retrieve a well pick set object. If the given well pick set
693
+ name is not present, it will be created. Otherwise the current well pick
694
+ set will be emptied for the given well pick type.
695
+ """
696
+ well_pick_sets = rox.project.well_picks.sets
697
+ if well_pick_set not in well_pick_sets:
698
+ well_pick_sets.create(well_pick_set)
699
+
700
+ rox_wps = well_pick_sets[well_pick_set]
701
+
702
+ rox_wps.delete_at([idx for idx, wp in enumerate(rox_wps) if wp.type == rox_wp_type])
703
+ return rox_wps
704
+
705
+
706
+ def _get_writeable_well_pick_attributes(
707
+ rox: RoxUtils,
708
+ attribute_types: dict[str, str],
709
+ rox_wp_type: RoxarType.WellPickType,
710
+ ) -> dict[str, RoxarType.well_picks.WellPickAttribute]:
711
+ """
712
+ Function to retrive a dictionary of regular and user-defined
713
+ roxar WellPickAttribute's. Only writable attributes are
714
+ returned (i.e. not read_only). Attributes not present in the
715
+ project will be created as user-defined attributes.
716
+ """
717
+ attributes_with_value_constraints = [
718
+ "Structural model",
719
+ "Lock",
720
+ "Quality",
721
+ "Wellpick Symbol - Horizon",
722
+ ]
723
+ regular_attributes = {x.name: x for x in roxwp.WellPick.get_attributes(rox_wp_type)}
724
+ user_attributes = {
725
+ x.name: x
726
+ for x in rox.project.well_picks.user_attributes.get_subset(rox_wp_type)
727
+ }
728
+
729
+ rox_attributes = {}
730
+ for attr, dtype in attribute_types.items():
731
+ rox_dtype = getattr(roxar.WellPickAttributeType, dtype)
732
+
733
+ if attr in regular_attributes:
734
+ if (
735
+ regular_attributes[attr].read_only
736
+ or attr in attributes_with_value_constraints
737
+ ):
738
+ logger.debug("Skipping read-only attribute %s", attr)
739
+ continue
740
+ rox_attributes[attr] = regular_attributes[attr]
741
+
742
+ elif attr in user_attributes:
743
+ if user_attributes[attr].type != rox_dtype:
744
+ raise ValueError(
745
+ f"Attribute type provided for '{attr}': {dtype}, is different "
746
+ f" from existing type in project: {user_attributes[attr].type}.\n"
747
+ "Either delete user defined attribute up-front, "
748
+ "or rename to a new unique attribute name."
749
+ )
750
+ rox_attributes[attr] = user_attributes[attr]
751
+
752
+ else:
753
+ # roxar only supports creating string or float attributes
754
+ if dtype not in ["str", "float"]:
755
+ raise ValueError(
756
+ "Only 'float' or 'str' are valid options for user-defined "
757
+ f"attributes. Found type {dtype} for attribute '{attr}'."
758
+ )
759
+ logger.info("Creating user-defined attribute %s", attr)
760
+ rox_attributes[attr] = rox.project.well_picks.user_attributes.create(
761
+ name=attr,
762
+ pick_type=rox_wp_type,
763
+ data_type=rox_dtype,
764
+ )
765
+
766
+ return rox_attributes