xtgeo 4.13.1__cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.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.
- cxtgeo.py +558 -0
- cxtgeoPYTHON_wrap.c +19537 -0
- xtgeo/__init__.py +246 -0
- xtgeo/_cxtgeo.cpython-310-aarch64-linux-gnu.so +0 -0
- xtgeo/_internal.cpython-310-aarch64-linux-gnu.so +0 -0
- xtgeo/common/__init__.py +19 -0
- xtgeo/common/_angles.py +29 -0
- xtgeo/common/_xyz_enum.py +50 -0
- xtgeo/common/calc.py +396 -0
- xtgeo/common/constants.py +30 -0
- xtgeo/common/exceptions.py +42 -0
- xtgeo/common/log.py +93 -0
- xtgeo/common/sys.py +166 -0
- xtgeo/common/types.py +18 -0
- xtgeo/common/version.py +34 -0
- xtgeo/common/xtgeo_dialog.py +604 -0
- xtgeo/cube/__init__.py +9 -0
- xtgeo/cube/_cube_export.py +214 -0
- xtgeo/cube/_cube_import.py +532 -0
- xtgeo/cube/_cube_roxapi.py +180 -0
- xtgeo/cube/_cube_utils.py +287 -0
- xtgeo/cube/_cube_window_attributes.py +273 -0
- xtgeo/cube/cube1.py +1023 -0
- xtgeo/grid3d/__init__.py +15 -0
- xtgeo/grid3d/_ecl_grid.py +774 -0
- xtgeo/grid3d/_ecl_inte_head.py +152 -0
- xtgeo/grid3d/_ecl_logi_head.py +71 -0
- xtgeo/grid3d/_ecl_output_file.py +81 -0
- xtgeo/grid3d/_egrid.py +1004 -0
- xtgeo/grid3d/_find_gridprop_in_eclrun.py +625 -0
- xtgeo/grid3d/_grdecl_format.py +309 -0
- xtgeo/grid3d/_grdecl_grid.py +400 -0
- xtgeo/grid3d/_grid3d.py +29 -0
- xtgeo/grid3d/_grid3d_fence.py +284 -0
- xtgeo/grid3d/_grid3d_utils.py +228 -0
- xtgeo/grid3d/_grid_boundary.py +76 -0
- xtgeo/grid3d/_grid_etc1.py +1595 -0
- xtgeo/grid3d/_grid_export.py +222 -0
- xtgeo/grid3d/_grid_hybrid.py +50 -0
- xtgeo/grid3d/_grid_import.py +79 -0
- xtgeo/grid3d/_grid_import_ecl.py +101 -0
- xtgeo/grid3d/_grid_import_roff.py +135 -0
- xtgeo/grid3d/_grid_import_xtgcpgeom.py +375 -0
- xtgeo/grid3d/_grid_refine.py +258 -0
- xtgeo/grid3d/_grid_roxapi.py +292 -0
- xtgeo/grid3d/_grid_translate_coords.py +154 -0
- xtgeo/grid3d/_grid_wellzone.py +165 -0
- xtgeo/grid3d/_gridprop_export.py +202 -0
- xtgeo/grid3d/_gridprop_import_eclrun.py +164 -0
- xtgeo/grid3d/_gridprop_import_grdecl.py +130 -0
- xtgeo/grid3d/_gridprop_import_roff.py +52 -0
- xtgeo/grid3d/_gridprop_import_xtgcpprop.py +168 -0
- xtgeo/grid3d/_gridprop_lowlevel.py +171 -0
- xtgeo/grid3d/_gridprop_op1.py +272 -0
- xtgeo/grid3d/_gridprop_roxapi.py +301 -0
- xtgeo/grid3d/_gridprop_value_init.py +140 -0
- xtgeo/grid3d/_gridprops_import_eclrun.py +344 -0
- xtgeo/grid3d/_gridprops_import_roff.py +83 -0
- xtgeo/grid3d/_roff_grid.py +470 -0
- xtgeo/grid3d/_roff_parameter.py +303 -0
- xtgeo/grid3d/grid.py +2957 -0
- xtgeo/grid3d/grid_properties.py +699 -0
- xtgeo/grid3d/grid_property.py +1313 -0
- xtgeo/grid3d/types.py +15 -0
- xtgeo/include/eigen3/Eigen/Cholesky +45 -0
- xtgeo/include/eigen3/Eigen/CholmodSupport +48 -0
- xtgeo/include/eigen3/Eigen/Core +384 -0
- xtgeo/include/eigen3/Eigen/Dense +7 -0
- xtgeo/include/eigen3/Eigen/Eigen +2 -0
- xtgeo/include/eigen3/Eigen/Eigenvalues +60 -0
- xtgeo/include/eigen3/Eigen/Geometry +59 -0
- xtgeo/include/eigen3/Eigen/Householder +29 -0
- xtgeo/include/eigen3/Eigen/IterativeLinearSolvers +48 -0
- xtgeo/include/eigen3/Eigen/Jacobi +32 -0
- xtgeo/include/eigen3/Eigen/KLUSupport +41 -0
- xtgeo/include/eigen3/Eigen/LU +47 -0
- xtgeo/include/eigen3/Eigen/MetisSupport +35 -0
- xtgeo/include/eigen3/Eigen/OrderingMethods +70 -0
- xtgeo/include/eigen3/Eigen/PaStiXSupport +49 -0
- xtgeo/include/eigen3/Eigen/PardisoSupport +35 -0
- xtgeo/include/eigen3/Eigen/QR +50 -0
- xtgeo/include/eigen3/Eigen/QtAlignedMalloc +39 -0
- xtgeo/include/eigen3/Eigen/SPQRSupport +34 -0
- xtgeo/include/eigen3/Eigen/SVD +50 -0
- xtgeo/include/eigen3/Eigen/Sparse +34 -0
- xtgeo/include/eigen3/Eigen/SparseCholesky +37 -0
- xtgeo/include/eigen3/Eigen/SparseCore +69 -0
- xtgeo/include/eigen3/Eigen/SparseLU +50 -0
- xtgeo/include/eigen3/Eigen/SparseQR +36 -0
- xtgeo/include/eigen3/Eigen/StdDeque +27 -0
- xtgeo/include/eigen3/Eigen/StdList +26 -0
- xtgeo/include/eigen3/Eigen/StdVector +27 -0
- xtgeo/include/eigen3/Eigen/SuperLUSupport +64 -0
- xtgeo/include/eigen3/Eigen/UmfPackSupport +40 -0
- xtgeo/include/eigen3/Eigen/src/Cholesky/LDLT.h +688 -0
- xtgeo/include/eigen3/Eigen/src/Cholesky/LLT.h +558 -0
- xtgeo/include/eigen3/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
- xtgeo/include/eigen3/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
- xtgeo/include/eigen3/Eigen/src/Core/ArithmeticSequence.h +413 -0
- xtgeo/include/eigen3/Eigen/src/Core/Array.h +417 -0
- xtgeo/include/eigen3/Eigen/src/Core/ArrayBase.h +226 -0
- xtgeo/include/eigen3/Eigen/src/Core/ArrayWrapper.h +209 -0
- xtgeo/include/eigen3/Eigen/src/Core/Assign.h +90 -0
- xtgeo/include/eigen3/Eigen/src/Core/AssignEvaluator.h +1010 -0
- xtgeo/include/eigen3/Eigen/src/Core/Assign_MKL.h +178 -0
- xtgeo/include/eigen3/Eigen/src/Core/BandMatrix.h +353 -0
- xtgeo/include/eigen3/Eigen/src/Core/Block.h +448 -0
- xtgeo/include/eigen3/Eigen/src/Core/BooleanRedux.h +162 -0
- xtgeo/include/eigen3/Eigen/src/Core/CommaInitializer.h +164 -0
- xtgeo/include/eigen3/Eigen/src/Core/ConditionEstimator.h +175 -0
- xtgeo/include/eigen3/Eigen/src/Core/CoreEvaluators.h +1741 -0
- xtgeo/include/eigen3/Eigen/src/Core/CoreIterators.h +132 -0
- xtgeo/include/eigen3/Eigen/src/Core/CwiseBinaryOp.h +183 -0
- xtgeo/include/eigen3/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
- xtgeo/include/eigen3/Eigen/src/Core/CwiseTernaryOp.h +197 -0
- xtgeo/include/eigen3/Eigen/src/Core/CwiseUnaryOp.h +103 -0
- xtgeo/include/eigen3/Eigen/src/Core/CwiseUnaryView.h +132 -0
- xtgeo/include/eigen3/Eigen/src/Core/DenseBase.h +701 -0
- xtgeo/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h +685 -0
- xtgeo/include/eigen3/Eigen/src/Core/DenseStorage.h +652 -0
- xtgeo/include/eigen3/Eigen/src/Core/Diagonal.h +258 -0
- xtgeo/include/eigen3/Eigen/src/Core/DiagonalMatrix.h +391 -0
- xtgeo/include/eigen3/Eigen/src/Core/DiagonalProduct.h +28 -0
- xtgeo/include/eigen3/Eigen/src/Core/Dot.h +318 -0
- xtgeo/include/eigen3/Eigen/src/Core/EigenBase.h +160 -0
- xtgeo/include/eigen3/Eigen/src/Core/ForceAlignedAccess.h +150 -0
- xtgeo/include/eigen3/Eigen/src/Core/Fuzzy.h +155 -0
- xtgeo/include/eigen3/Eigen/src/Core/GeneralProduct.h +465 -0
- xtgeo/include/eigen3/Eigen/src/Core/GenericPacketMath.h +1040 -0
- xtgeo/include/eigen3/Eigen/src/Core/GlobalFunctions.h +194 -0
- xtgeo/include/eigen3/Eigen/src/Core/IO.h +258 -0
- xtgeo/include/eigen3/Eigen/src/Core/IndexedView.h +237 -0
- xtgeo/include/eigen3/Eigen/src/Core/Inverse.h +117 -0
- xtgeo/include/eigen3/Eigen/src/Core/Map.h +171 -0
- xtgeo/include/eigen3/Eigen/src/Core/MapBase.h +310 -0
- xtgeo/include/eigen3/Eigen/src/Core/MathFunctions.h +2057 -0
- xtgeo/include/eigen3/Eigen/src/Core/MathFunctionsImpl.h +200 -0
- xtgeo/include/eigen3/Eigen/src/Core/Matrix.h +565 -0
- xtgeo/include/eigen3/Eigen/src/Core/MatrixBase.h +547 -0
- xtgeo/include/eigen3/Eigen/src/Core/NestByValue.h +85 -0
- xtgeo/include/eigen3/Eigen/src/Core/NoAlias.h +109 -0
- xtgeo/include/eigen3/Eigen/src/Core/NumTraits.h +335 -0
- xtgeo/include/eigen3/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
- xtgeo/include/eigen3/Eigen/src/Core/PermutationMatrix.h +605 -0
- xtgeo/include/eigen3/Eigen/src/Core/PlainObjectBase.h +1128 -0
- xtgeo/include/eigen3/Eigen/src/Core/Product.h +191 -0
- xtgeo/include/eigen3/Eigen/src/Core/ProductEvaluators.h +1179 -0
- xtgeo/include/eigen3/Eigen/src/Core/Random.h +218 -0
- xtgeo/include/eigen3/Eigen/src/Core/Redux.h +515 -0
- xtgeo/include/eigen3/Eigen/src/Core/Ref.h +381 -0
- xtgeo/include/eigen3/Eigen/src/Core/Replicate.h +142 -0
- xtgeo/include/eigen3/Eigen/src/Core/Reshaped.h +454 -0
- xtgeo/include/eigen3/Eigen/src/Core/ReturnByValue.h +119 -0
- xtgeo/include/eigen3/Eigen/src/Core/Reverse.h +217 -0
- xtgeo/include/eigen3/Eigen/src/Core/Select.h +164 -0
- xtgeo/include/eigen3/Eigen/src/Core/SelfAdjointView.h +365 -0
- xtgeo/include/eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
- xtgeo/include/eigen3/Eigen/src/Core/Solve.h +188 -0
- xtgeo/include/eigen3/Eigen/src/Core/SolveTriangular.h +235 -0
- xtgeo/include/eigen3/Eigen/src/Core/SolverBase.h +168 -0
- xtgeo/include/eigen3/Eigen/src/Core/StableNorm.h +251 -0
- xtgeo/include/eigen3/Eigen/src/Core/StlIterators.h +463 -0
- xtgeo/include/eigen3/Eigen/src/Core/Stride.h +116 -0
- xtgeo/include/eigen3/Eigen/src/Core/Swap.h +68 -0
- xtgeo/include/eigen3/Eigen/src/Core/Transpose.h +464 -0
- xtgeo/include/eigen3/Eigen/src/Core/Transpositions.h +386 -0
- xtgeo/include/eigen3/Eigen/src/Core/TriangularMatrix.h +1001 -0
- xtgeo/include/eigen3/Eigen/src/Core/VectorBlock.h +96 -0
- xtgeo/include/eigen3/Eigen/src/Core/VectorwiseOp.h +784 -0
- xtgeo/include/eigen3/Eigen/src/Core/Visitor.h +381 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/AVX/Complex.h +372 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/Default/Half.h +942 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/Default/Settings.h +49 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/MSA/Complex.h +648 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/NEON/Complex.h +584 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h +351 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
- xtgeo/include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
- xtgeo/include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
- xtgeo/include/eigen3/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
- xtgeo/include/eigen3/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
- xtgeo/include/eigen3/Eigen/src/Core/functors/StlFunctors.h +166 -0
- xtgeo/include/eigen3/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
- xtgeo/include/eigen3/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/Parallelizer.h +180 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
- xtgeo/include/eigen3/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/BlasUtil.h +583 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/Constants.h +563 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/IntegralConstant.h +272 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/MKL_support.h +137 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/Macros.h +1464 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/Memory.h +1163 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/Meta.h +812 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/NonMPL2.h +3 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/StaticAssert.h +221 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/SymbolicIndex.h +293 -0
- xtgeo/include/eigen3/Eigen/src/Core/util/XprHelper.h +856 -0
- xtgeo/include/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
- xtgeo/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
- xtgeo/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
- xtgeo/include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
- xtgeo/include/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
- xtgeo/include/eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
- xtgeo/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
- xtgeo/include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
- xtgeo/include/eigen3/Eigen/src/Eigenvalues/RealQZ.h +657 -0
- xtgeo/include/eigen3/Eigen/src/Eigenvalues/RealSchur.h +558 -0
- xtgeo/include/eigen3/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
- xtgeo/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
- xtgeo/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
- xtgeo/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
- xtgeo/include/eigen3/Eigen/src/Geometry/AlignedBox.h +486 -0
- xtgeo/include/eigen3/Eigen/src/Geometry/AngleAxis.h +247 -0
- xtgeo/include/eigen3/Eigen/src/Geometry/EulerAngles.h +114 -0
- xtgeo/include/eigen3/Eigen/src/Geometry/Homogeneous.h +501 -0
- xtgeo/include/eigen3/Eigen/src/Geometry/Hyperplane.h +282 -0
- xtgeo/include/eigen3/Eigen/src/Geometry/OrthoMethods.h +235 -0
- xtgeo/include/eigen3/Eigen/src/Geometry/ParametrizedLine.h +232 -0
- xtgeo/include/eigen3/Eigen/src/Geometry/Quaternion.h +870 -0
- xtgeo/include/eigen3/Eigen/src/Geometry/Rotation2D.h +199 -0
- xtgeo/include/eigen3/Eigen/src/Geometry/RotationBase.h +206 -0
- xtgeo/include/eigen3/Eigen/src/Geometry/Scaling.h +188 -0
- xtgeo/include/eigen3/Eigen/src/Geometry/Transform.h +1563 -0
- xtgeo/include/eigen3/Eigen/src/Geometry/Translation.h +202 -0
- xtgeo/include/eigen3/Eigen/src/Geometry/Umeyama.h +166 -0
- xtgeo/include/eigen3/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
- xtgeo/include/eigen3/Eigen/src/Householder/BlockHouseholder.h +110 -0
- xtgeo/include/eigen3/Eigen/src/Householder/Householder.h +176 -0
- xtgeo/include/eigen3/Eigen/src/Householder/HouseholderSequence.h +545 -0
- xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
- xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
- xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
- xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
- xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
- xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
- xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
- xtgeo/include/eigen3/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
- xtgeo/include/eigen3/Eigen/src/Jacobi/Jacobi.h +483 -0
- xtgeo/include/eigen3/Eigen/src/KLUSupport/KLUSupport.h +358 -0
- xtgeo/include/eigen3/Eigen/src/LU/Determinant.h +117 -0
- xtgeo/include/eigen3/Eigen/src/LU/FullPivLU.h +877 -0
- xtgeo/include/eigen3/Eigen/src/LU/InverseImpl.h +432 -0
- xtgeo/include/eigen3/Eigen/src/LU/PartialPivLU.h +624 -0
- xtgeo/include/eigen3/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
- xtgeo/include/eigen3/Eigen/src/LU/arch/InverseSize4.h +351 -0
- xtgeo/include/eigen3/Eigen/src/MetisSupport/MetisSupport.h +137 -0
- xtgeo/include/eigen3/Eigen/src/OrderingMethods/Amd.h +435 -0
- xtgeo/include/eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
- xtgeo/include/eigen3/Eigen/src/OrderingMethods/Ordering.h +153 -0
- xtgeo/include/eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
- xtgeo/include/eigen3/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
- xtgeo/include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
- xtgeo/include/eigen3/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
- xtgeo/include/eigen3/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
- xtgeo/include/eigen3/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
- xtgeo/include/eigen3/Eigen/src/QR/HouseholderQR.h +434 -0
- xtgeo/include/eigen3/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
- xtgeo/include/eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
- xtgeo/include/eigen3/Eigen/src/SVD/BDCSVD.h +1366 -0
- xtgeo/include/eigen3/Eigen/src/SVD/JacobiSVD.h +812 -0
- xtgeo/include/eigen3/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
- xtgeo/include/eigen3/Eigen/src/SVD/SVDBase.h +376 -0
- xtgeo/include/eigen3/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
- xtgeo/include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
- xtgeo/include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/AmbiVector.h +378 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/CompressedStorage.h +274 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseAssign.h +270 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseBlock.h +571 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseColEtree.h +206 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseDot.h +98 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseMap.h +305 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparsePermutation.h +178 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseProduct.h +181 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseRedux.h +49 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseRef.h +397 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseTranspose.h +92 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseUtil.h +186 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseVector.h +478 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/SparseView.h +254 -0
- xtgeo/include/eigen3/Eigen/src/SparseCore/TriangularSolver.h +315 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU.h +923 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
- xtgeo/include/eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
- xtgeo/include/eigen3/Eigen/src/SparseQR/SparseQR.h +758 -0
- xtgeo/include/eigen3/Eigen/src/StlSupport/StdDeque.h +116 -0
- xtgeo/include/eigen3/Eigen/src/StlSupport/StdList.h +106 -0
- xtgeo/include/eigen3/Eigen/src/StlSupport/StdVector.h +131 -0
- xtgeo/include/eigen3/Eigen/src/StlSupport/details.h +84 -0
- xtgeo/include/eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
- xtgeo/include/eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
- xtgeo/include/eigen3/Eigen/src/misc/Image.h +82 -0
- xtgeo/include/eigen3/Eigen/src/misc/Kernel.h +79 -0
- xtgeo/include/eigen3/Eigen/src/misc/RealSvd2x2.h +55 -0
- xtgeo/include/eigen3/Eigen/src/misc/blas.h +440 -0
- xtgeo/include/eigen3/Eigen/src/misc/lapack.h +152 -0
- xtgeo/include/eigen3/Eigen/src/misc/lapacke.h +16292 -0
- xtgeo/include/eigen3/Eigen/src/misc/lapacke_mangling.h +17 -0
- xtgeo/include/eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
- xtgeo/include/eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
- xtgeo/include/eigen3/Eigen/src/plugins/BlockMethods.h +1442 -0
- xtgeo/include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
- xtgeo/include/eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
- xtgeo/include/eigen3/Eigen/src/plugins/IndexedViewMethods.h +262 -0
- xtgeo/include/eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
- xtgeo/include/eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
- xtgeo/include/eigen3/Eigen/src/plugins/ReshapedMethods.h +149 -0
- xtgeo/include/eigen3/signature_of_eigen3_matrix_library +1 -0
- xtgeo/include/eigen3/unsupported/Eigen/AdolcForward +159 -0
- xtgeo/include/eigen3/unsupported/Eigen/AlignedVector3 +234 -0
- xtgeo/include/eigen3/unsupported/Eigen/ArpackSupport +30 -0
- xtgeo/include/eigen3/unsupported/Eigen/AutoDiff +46 -0
- xtgeo/include/eigen3/unsupported/Eigen/BVH +95 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/Tensor +137 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/TensorSymmetry +42 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/ThreadPool +74 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/Tensor.h +554 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h +329 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h +247 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h +1176 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h +1559 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h +1093 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h +518 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h +377 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h +1023 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h +73 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h +6 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionGpu.h +1413 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h +575 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionSycl.h +1650 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h +1679 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h +456 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h +1132 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolutionSycl.h +544 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h +214 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h +347 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h +137 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h +6 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h +104 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceGpu.h +389 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h +1048 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h +409 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h +236 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h +490 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h +236 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h +983 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h +703 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h +388 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h +669 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h +379 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h +237 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h +191 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h +488 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h +302 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h +33 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaDefines.h +99 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGpuHipCudaUndefines.h +44 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h +79 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h +603 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h +738 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h +247 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h +82 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h +263 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h +216 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h +98 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h +327 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h +311 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h +1102 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h +708 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h +291 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h +322 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h +998 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h +6 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionGpu.h +966 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h +582 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h +454 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h +465 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h +528 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScanSycl.h +513 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h +471 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h +161 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h +346 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTrace.h +303 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h +264 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h +249 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h +629 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h +293 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/StaticSymmetry.h +236 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/Symmetry.h +338 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/util/TemplateGroupTheory.h +669 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/Barrier.h +67 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h +249 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h +486 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h +236 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadCancel.h +23 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h +40 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h +301 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h +48 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h +20 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Meta.h +537 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h +88 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/util/EmulateArray.h +261 -0
- xtgeo/include/eigen3/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h +158 -0
- xtgeo/include/eigen3/unsupported/Eigen/EulerAngles +43 -0
- xtgeo/include/eigen3/unsupported/Eigen/FFT +419 -0
- xtgeo/include/eigen3/unsupported/Eigen/IterativeSolvers +51 -0
- xtgeo/include/eigen3/unsupported/Eigen/KroneckerProduct +36 -0
- xtgeo/include/eigen3/unsupported/Eigen/LevenbergMarquardt +49 -0
- xtgeo/include/eigen3/unsupported/Eigen/MPRealSupport +213 -0
- xtgeo/include/eigen3/unsupported/Eigen/MatrixFunctions +504 -0
- xtgeo/include/eigen3/unsupported/Eigen/MoreVectorization +24 -0
- xtgeo/include/eigen3/unsupported/Eigen/NonLinearOptimization +140 -0
- xtgeo/include/eigen3/unsupported/Eigen/NumericalDiff +56 -0
- xtgeo/include/eigen3/unsupported/Eigen/OpenGLSupport +322 -0
- xtgeo/include/eigen3/unsupported/Eigen/Polynomials +137 -0
- xtgeo/include/eigen3/unsupported/Eigen/Skyline +39 -0
- xtgeo/include/eigen3/unsupported/Eigen/SparseExtra +54 -0
- xtgeo/include/eigen3/unsupported/Eigen/SpecialFunctions +103 -0
- xtgeo/include/eigen3/unsupported/Eigen/Splines +35 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h +108 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h +730 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h +220 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/BVH/BVAlgorithms.h +293 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/BVH/KdBVH.h +223 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h +790 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/EulerAngles/EulerAngles.h +355 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/EulerAngles/EulerSystem.h +305 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/FFT/ei_fftw_impl.h +261 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/FFT/ei_kissfft_impl.h +449 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h +187 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/DGMRES.h +511 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/GMRES.h +335 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IDRS.h +436 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h +90 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IterationController.h +154 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/MINRES.h +267 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/IterativeSolvers/Scaling.h +193 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h +305 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h +84 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h +202 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h +160 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h +188 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h +396 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +441 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h +569 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h +373 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +705 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h +368 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/MatrixFunctions/StemFunction.h +117 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/MoreVectorization/MathFunctions.h +95 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h +601 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h +657 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/chkder.h +66 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/covar.h +70 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/dogleg.h +107 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h +79 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/lmpar.h +298 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h +91 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h +30 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1updt.h +99 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h +49 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +130 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/Polynomials/Companion.h +280 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialSolver.h +428 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialUtils.h +143 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h +352 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrix.h +862 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h +212 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/Skyline/SkylineProduct.h +295 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/Skyline/SkylineStorage.h +259 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/Skyline/SkylineUtil.h +89 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h +122 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h +1079 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h +404 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h +282 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h +247 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SparseExtra/RandomSetter.h +349 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsArrayAPI.h +286 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsBFloat16.h +68 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsFunctors.h +357 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsHalf.h +66 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsImpl.h +1959 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/BesselFunctionsPacketMath.h +118 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/HipVectorCompatibility.h +67 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h +167 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsBFloat16.h +58 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h +330 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h +58 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h +2045 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h +79 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/BesselFunctions.h +46 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX/SpecialFunctions.h +16 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/BesselFunctions.h +46 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/AVX512/SpecialFunctions.h +16 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/GPU/SpecialFunctions.h +369 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/BesselFunctions.h +54 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/NEON/SpecialFunctions.h +34 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/Splines/Spline.h +507 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/Splines/SplineFitting.h +431 -0
- xtgeo/include/eigen3/unsupported/Eigen/src/Splines/SplineFwd.h +93 -0
- xtgeo/io/__init__.py +1 -0
- xtgeo/io/_file.py +594 -0
- xtgeo/metadata/__init__.py +17 -0
- xtgeo/metadata/metadata.py +435 -0
- xtgeo/roxutils/__init__.py +7 -0
- xtgeo/roxutils/_roxar_loader.py +54 -0
- xtgeo/roxutils/_roxutils_etc.py +122 -0
- xtgeo/roxutils/roxutils.py +207 -0
- xtgeo/share/eigen3/cmake/Eigen3Config.cmake +37 -0
- xtgeo/share/eigen3/cmake/Eigen3ConfigVersion.cmake +65 -0
- xtgeo/share/eigen3/cmake/Eigen3Targets.cmake +106 -0
- xtgeo/share/eigen3/cmake/UseEigen3.cmake +6 -0
- xtgeo/share/pkgconfig/eigen3.pc +9 -0
- xtgeo/surface/__init__.py +18 -0
- xtgeo/surface/_regsurf_boundary.py +26 -0
- xtgeo/surface/_regsurf_cube.py +210 -0
- xtgeo/surface/_regsurf_cube_window.py +391 -0
- xtgeo/surface/_regsurf_cube_window_v2.py +297 -0
- xtgeo/surface/_regsurf_cube_window_v3.py +360 -0
- xtgeo/surface/_regsurf_export.py +388 -0
- xtgeo/surface/_regsurf_grid3d.py +275 -0
- xtgeo/surface/_regsurf_gridding.py +347 -0
- xtgeo/surface/_regsurf_ijxyz_parser.py +278 -0
- xtgeo/surface/_regsurf_import.py +347 -0
- xtgeo/surface/_regsurf_lowlevel.py +122 -0
- xtgeo/surface/_regsurf_oper.py +538 -0
- xtgeo/surface/_regsurf_roxapi.py +241 -0
- xtgeo/surface/_regsurf_utils.py +81 -0
- xtgeo/surface/_surfs_import.py +43 -0
- xtgeo/surface/_zmap_parser.py +138 -0
- xtgeo/surface/regular_surface.py +2962 -0
- xtgeo/surface/surfaces.py +276 -0
- xtgeo/well/__init__.py +24 -0
- xtgeo/well/_blockedwell_roxapi.py +241 -0
- xtgeo/well/_blockedwells_roxapi.py +68 -0
- xtgeo/well/_well_aux.py +30 -0
- xtgeo/well/_well_io.py +327 -0
- xtgeo/well/_well_oper.py +483 -0
- xtgeo/well/_well_roxapi.py +304 -0
- xtgeo/well/_wellmarkers.py +486 -0
- xtgeo/well/_wells_utils.py +158 -0
- xtgeo/well/blocked_well.py +220 -0
- xtgeo/well/blocked_wells.py +134 -0
- xtgeo/well/well1.py +1516 -0
- xtgeo/well/wells.py +211 -0
- xtgeo/xyz/__init__.py +6 -0
- xtgeo/xyz/_polygons_oper.py +272 -0
- xtgeo/xyz/_xyz.py +758 -0
- xtgeo/xyz/_xyz_data.py +646 -0
- xtgeo/xyz/_xyz_io.py +737 -0
- xtgeo/xyz/_xyz_lowlevel.py +42 -0
- xtgeo/xyz/_xyz_oper.py +613 -0
- xtgeo/xyz/_xyz_roxapi.py +766 -0
- xtgeo/xyz/points.py +698 -0
- xtgeo/xyz/polygons.py +827 -0
- xtgeo-4.13.1.dist-info/METADATA +146 -0
- xtgeo-4.13.1.dist-info/RECORD +654 -0
- xtgeo-4.13.1.dist-info/WHEEL +6 -0
- xtgeo-4.13.1.dist-info/licenses/LICENSE.md +165 -0
- xtgeo.libs/libgomp-a49a47f9.so.1.0.0 +0 -0
xtgeo/xyz/_xyz_data.py
ADDED
|
@@ -0,0 +1,646 @@
|
|
|
1
|
+
"""Module for private _XYZData class.
|
|
2
|
+
|
|
3
|
+
Note that that the design of this targets Well and general XYZ data (Points/Polygons),
|
|
4
|
+
hence the intentions is to let this work as a general 'engine' for dataframe'ish data
|
|
5
|
+
in xtgeo, at least Well, Points, Polygons. (But in the first round, it is implemented
|
|
6
|
+
for Wells only). Dataframes looks like:
|
|
7
|
+
|
|
8
|
+
X_UTME Y_UTMN Z_TVDSS MDepth PHIT KLOGH Sw
|
|
9
|
+
0 463256.911 5930542.294 -49.0000 0.0000 NaN NaN NaN ...
|
|
10
|
+
1 463256.912 5930542.295 -48.2859 0.5000 NaN NaN NaN ...
|
|
11
|
+
2 463256.913 5930542.296 -47.5735 1.0000 NaN NaN NaN ...
|
|
12
|
+
3 463256.914 5930542.299 -46.8626 1.5000 NaN NaN NaN ...
|
|
13
|
+
4 463256.916 5930542.302 -46.1533 2.0000 NaN NaN NaN ...
|
|
14
|
+
... ... ... ... ... ... ...
|
|
15
|
+
|
|
16
|
+
Where each attr (log) has a attr_types dictionary, telling if the columns are treated
|
|
17
|
+
as discrete (DISC) or continuous (CONT). In addition there is a attr_records
|
|
18
|
+
dict, storing the unit+scale for continuous logs/attr (defaulted to tuple ("", "")) or a
|
|
19
|
+
dictionary of codes (defaulted to {}, if the column if DISC type (this is optional,
|
|
20
|
+
and perhaps only relevant for Well data).
|
|
21
|
+
|
|
22
|
+
The 3 first columns are the XYZ coordinates or XY coordinates + value:
|
|
23
|
+
X, Y, Z or X, Y, V. An optional fourth column as also possible as polygon_id.
|
|
24
|
+
All the rest are free 'attributes', which for wells will be well logs. Hence:
|
|
25
|
+
|
|
26
|
+
attr_types ~ refer to attr_types for XYZ and Well data
|
|
27
|
+
attr_records ~ refer to attr_records for Well data and possibly Points/Polygons
|
|
28
|
+
|
|
29
|
+
If a column is added to the dataframe, then the methods here will try to guess the
|
|
30
|
+
attr_type and attr_record, and add those; similarly of a column is removed, the
|
|
31
|
+
corresponding entries in attr_types and attr_records will be deleted.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
from __future__ import annotations
|
|
35
|
+
|
|
36
|
+
import math
|
|
37
|
+
from copy import deepcopy
|
|
38
|
+
from typing import TYPE_CHECKING, Literal
|
|
39
|
+
|
|
40
|
+
import numpy as np
|
|
41
|
+
import pandas as pd
|
|
42
|
+
from joblib import hash as jhash
|
|
43
|
+
|
|
44
|
+
from xtgeo import _cxtgeo
|
|
45
|
+
from xtgeo._cxtgeo import XTGeoCLibError
|
|
46
|
+
from xtgeo.common._xyz_enum import _AttrName, _AttrType, _XYZType
|
|
47
|
+
from xtgeo.common.constants import UNDEF_CONT, UNDEF_DISC
|
|
48
|
+
from xtgeo.common.log import null_logger
|
|
49
|
+
from xtgeo.common.sys import _convert_carr_double_np, _get_carray
|
|
50
|
+
|
|
51
|
+
if TYPE_CHECKING:
|
|
52
|
+
from collections.abc import Sequence
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
logger = null_logger(__name__)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
CONT_DEFAULT_RECORD = ("", "") # unit and scale, where emptry string indicates ~unknown
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class _XYZData:
|
|
62
|
+
"""Private class for the XYZ and Well log data, where a Pandas dataframe is core.
|
|
63
|
+
|
|
64
|
+
The data are stored in pandas dataframes, and by default, all columns are float, and
|
|
65
|
+
np.nan defines undefined values. Even if they are DISC. The reason for this is
|
|
66
|
+
restrictions in older versions of Pandas.
|
|
67
|
+
|
|
68
|
+
All values in the dataframe shall be numbers.
|
|
69
|
+
|
|
70
|
+
The attr_types is on form {"PHIT": CONT, "FACIES": DISC, ...}
|
|
71
|
+
|
|
72
|
+
The attr_records is somewhat heterogeneous, on form:
|
|
73
|
+
{"PHIT": ("unit", "scale"), "FACIES": {0:BG, 2: "SST", 4: "CALC"}}
|
|
74
|
+
Hence the CONT logs hold a tuple or list with 2 str members, or None, while DISC
|
|
75
|
+
log holds a dict where the key is an int and the value is a string.
|
|
76
|
+
"""
|
|
77
|
+
|
|
78
|
+
def __init__(
|
|
79
|
+
self,
|
|
80
|
+
dataframe: pd.DataFrame,
|
|
81
|
+
attr_types: dict[str, str] | None = None,
|
|
82
|
+
attr_records: dict[str, dict[int, str] | Sequence[str]] | None = None,
|
|
83
|
+
xname: str = _AttrName.XNAME.value,
|
|
84
|
+
yname: str = _AttrName.YNAME.value,
|
|
85
|
+
zname: str = _AttrName.ZNAME.value,
|
|
86
|
+
idname: str | None = None, # Well, Polygon, ...
|
|
87
|
+
undef: float | Sequence[float, float] = -999.0,
|
|
88
|
+
xyztype: Literal["well", "points", "polygons"] = "well",
|
|
89
|
+
floatbits: Literal["float32", "float64"] = "float64",
|
|
90
|
+
):
|
|
91
|
+
logger.info("Running init for: %s", __name__)
|
|
92
|
+
self._df = dataframe
|
|
93
|
+
|
|
94
|
+
self._attr_types = {}
|
|
95
|
+
if isinstance(attr_types, dict):
|
|
96
|
+
for name, atype in attr_types.items():
|
|
97
|
+
use_atype = "DISC" if atype.upper() in ("DISC", "INT") else "CONT"
|
|
98
|
+
self._attr_types[name] = _AttrType[use_atype]
|
|
99
|
+
|
|
100
|
+
self._attr_records = attr_records if attr_records is not None else {}
|
|
101
|
+
self._xname = xname
|
|
102
|
+
self._yname = yname
|
|
103
|
+
self._zname = zname
|
|
104
|
+
self._idname = idname
|
|
105
|
+
self._floatbits = (
|
|
106
|
+
floatbits if floatbits in ["float32", "float64"] else "float64"
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
# undefined data are given by a value, that may be different for cont vs disc
|
|
110
|
+
if isinstance(undef, list):
|
|
111
|
+
self._undef_disc = undef[0]
|
|
112
|
+
self._undef_cont = undef[1]
|
|
113
|
+
else:
|
|
114
|
+
self._undef_disc = undef
|
|
115
|
+
self._undef_cont = undef
|
|
116
|
+
|
|
117
|
+
if xyztype == "well":
|
|
118
|
+
self._xyztype = _XYZType.WELL
|
|
119
|
+
|
|
120
|
+
self._hash = ("0", "0", "0")
|
|
121
|
+
|
|
122
|
+
logger.debug("Initial _attr_types: %s", self._attr_types)
|
|
123
|
+
logger.debug("Initial _attr_records: %s", self._attr_records)
|
|
124
|
+
self.ensure_consistency()
|
|
125
|
+
logger.debug("Initial after consistency chk _attr_types: %s", self._attr_types)
|
|
126
|
+
logger.debug(
|
|
127
|
+
"Initial after consistency chk _attr_records: %s", self._attr_records
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
@property
|
|
131
|
+
def dataframe(self):
|
|
132
|
+
return self._df
|
|
133
|
+
|
|
134
|
+
data = dataframe # alias
|
|
135
|
+
|
|
136
|
+
@property
|
|
137
|
+
def attr_types(self):
|
|
138
|
+
return self._attr_types
|
|
139
|
+
|
|
140
|
+
@property
|
|
141
|
+
def attr_records(self):
|
|
142
|
+
return self._attr_records
|
|
143
|
+
|
|
144
|
+
@property
|
|
145
|
+
def xname(self):
|
|
146
|
+
return self._xname
|
|
147
|
+
|
|
148
|
+
@xname.setter
|
|
149
|
+
def xname(self, name: str):
|
|
150
|
+
if isinstance(name, str):
|
|
151
|
+
self._xname = name
|
|
152
|
+
else:
|
|
153
|
+
raise ValueError(f"Input name is not a string: {name}")
|
|
154
|
+
|
|
155
|
+
@property
|
|
156
|
+
def yname(self):
|
|
157
|
+
return self._yname
|
|
158
|
+
|
|
159
|
+
@yname.setter
|
|
160
|
+
def yname(self, name: str):
|
|
161
|
+
if isinstance(name, str):
|
|
162
|
+
self._yname = name
|
|
163
|
+
else:
|
|
164
|
+
raise ValueError(f"Input name is not a string: {name}")
|
|
165
|
+
|
|
166
|
+
@property
|
|
167
|
+
def zname(self):
|
|
168
|
+
return self._zname
|
|
169
|
+
|
|
170
|
+
@zname.setter
|
|
171
|
+
def zname(self, name: str):
|
|
172
|
+
if isinstance(name, str):
|
|
173
|
+
self._zname = name
|
|
174
|
+
else:
|
|
175
|
+
raise ValueError(f"Input name is not a string: {name}")
|
|
176
|
+
|
|
177
|
+
def _infer_attr_dtypes(self):
|
|
178
|
+
"""Return as dict on form {"X_UTME": _AttrType.CONT, "FACIES": _AttrType.DISC}.
|
|
179
|
+
|
|
180
|
+
There are some important restrictions:
|
|
181
|
+
* The first 3 columns (X Y Z) are always CONT, even if input appears as DISC.
|
|
182
|
+
* A check is made towards existing attr_types; if the key,value pair exists
|
|
183
|
+
already, this function will *not* force a change but keep as is.
|
|
184
|
+
"""
|
|
185
|
+
|
|
186
|
+
# pandas function that e.g. will convert integer'ish floats to int:
|
|
187
|
+
new_df = self._df.convert_dtypes()
|
|
188
|
+
|
|
189
|
+
dlist = new_df.dtypes.to_dict()
|
|
190
|
+
logger.debug("Initial attr_type: %s", self._attr_types)
|
|
191
|
+
|
|
192
|
+
datatypes = {}
|
|
193
|
+
for name, dtype in dlist.items():
|
|
194
|
+
if name in self._attr_types:
|
|
195
|
+
# do not change already set attr_types
|
|
196
|
+
datatypes[name] = self._attr_types[name]
|
|
197
|
+
continue
|
|
198
|
+
|
|
199
|
+
if name in (self._xname, self._yname, self._zname):
|
|
200
|
+
# force coordinates, first 3 columns, to be CONT
|
|
201
|
+
datatypes[name] = _AttrType.CONT
|
|
202
|
+
continue
|
|
203
|
+
|
|
204
|
+
if "float" in str(dtype).lower():
|
|
205
|
+
datatypes[name] = _AttrType.CONT
|
|
206
|
+
elif "int" in str(dtype).lower():
|
|
207
|
+
# although it looks like int, we keep as float since it is not
|
|
208
|
+
# _explicitly_ set, to preserve backward compatibility.
|
|
209
|
+
datatypes[name] = _AttrType.CONT # CONT being INTENTIONAL!
|
|
210
|
+
else:
|
|
211
|
+
raise RuntimeError(
|
|
212
|
+
"Log type seems to be something else than float or int for "
|
|
213
|
+
f"{name}: {dtype}"
|
|
214
|
+
)
|
|
215
|
+
self._attr_types = datatypes
|
|
216
|
+
logger.debug("Processed attr_type: %s", self._attr_types)
|
|
217
|
+
|
|
218
|
+
def _ensure_consistency_attr_types(self):
|
|
219
|
+
"""Ensure that dataframe and attr_types are consistent.
|
|
220
|
+
|
|
221
|
+
attr_types are on form {"GR": "CONT", "ZONES": "DISC", ...}
|
|
222
|
+
|
|
223
|
+
The column data in the dataframe takes precedence; i.e. if a column is removed
|
|
224
|
+
in a pandas operation, then attr_types are adapted silently by removing the item
|
|
225
|
+
from the dict.
|
|
226
|
+
"""
|
|
227
|
+
# check first if an attr. is removed in dataframe (e.g. by pandas operations)
|
|
228
|
+
logger.debug("Ensure consistency attr_types...")
|
|
229
|
+
for attr_name in list(self._attr_types.keys()):
|
|
230
|
+
if attr_name not in self._df.columns[3:]:
|
|
231
|
+
del self._attr_types[attr_name]
|
|
232
|
+
|
|
233
|
+
self._infer_attr_dtypes()
|
|
234
|
+
|
|
235
|
+
def _infer_automatic_record(self, attr_name: str):
|
|
236
|
+
"""Establish automatic record from name, type and values as first attempt."""
|
|
237
|
+
if self.get_attr_type(attr_name) == _AttrType.CONT.value:
|
|
238
|
+
self._attr_records[attr_name] = CONT_DEFAULT_RECORD
|
|
239
|
+
else:
|
|
240
|
+
# it is a discrete log with missing record; try to find
|
|
241
|
+
# a default one based on current values...
|
|
242
|
+
lvalues = self._df[attr_name].to_numpy().round(decimals=0)
|
|
243
|
+
lvalues = lvalues[~np.isnan(lvalues)] # remove Nans
|
|
244
|
+
|
|
245
|
+
if len(lvalues) > 0:
|
|
246
|
+
lvalues = lvalues.astype("int")
|
|
247
|
+
unique = np.unique(lvalues).tolist()
|
|
248
|
+
codes = {value: str(value) for value in unique}
|
|
249
|
+
if self._undef_disc in codes:
|
|
250
|
+
del codes[self._undef_disc]
|
|
251
|
+
if UNDEF_DISC in codes:
|
|
252
|
+
del codes[UNDEF_DISC]
|
|
253
|
+
else:
|
|
254
|
+
codes = None
|
|
255
|
+
|
|
256
|
+
self._attr_records[attr_name] = codes
|
|
257
|
+
|
|
258
|
+
def _ensure_consistency_attr_records(self):
|
|
259
|
+
"""Ensure that data and attr_records are consistent; cf attr_types.
|
|
260
|
+
|
|
261
|
+
Important that input attr_types are correct; i.e. run
|
|
262
|
+
_ensure_consistency_attr_types() first!
|
|
263
|
+
"""
|
|
264
|
+
for attr_name, dtype in self._attr_types.items():
|
|
265
|
+
logger.debug("attr_name: %s, and dtype: %s", attr_name, dtype)
|
|
266
|
+
if attr_name not in self._attr_records or not isinstance(
|
|
267
|
+
self._attr_records[attr_name],
|
|
268
|
+
(dict, list, tuple),
|
|
269
|
+
):
|
|
270
|
+
self._infer_automatic_record(attr_name)
|
|
271
|
+
|
|
272
|
+
# correct when attr_types is CONT but attr_records for that entry is a dict
|
|
273
|
+
if (
|
|
274
|
+
attr_name in self._attr_records
|
|
275
|
+
and self._attr_types[attr_name] == _AttrType.CONT
|
|
276
|
+
and isinstance(self._attr_records[attr_name], dict)
|
|
277
|
+
):
|
|
278
|
+
self._attr_records[attr_name] = CONT_DEFAULT_RECORD
|
|
279
|
+
|
|
280
|
+
def _ensure_consistency_df_dtypes(self):
|
|
281
|
+
"""Ensure that dataframe float32/64 for all logs, except for XYZ -> float64.
|
|
282
|
+
|
|
283
|
+
Whether it is float32 or float64 is set by self._floatbits. Float32 will save
|
|
284
|
+
memory but loose some precision. For backward compatibility, float64 is default.
|
|
285
|
+
"""
|
|
286
|
+
|
|
287
|
+
col = list(self._df)
|
|
288
|
+
logger.debug("columns: %s", col)
|
|
289
|
+
|
|
290
|
+
coords_dtypes = [str(entry) for entry in self._df[col[0:3]].dtypes]
|
|
291
|
+
|
|
292
|
+
if not all("float64" in entry for entry in coords_dtypes):
|
|
293
|
+
self._df[col[0:3]] = self._df.iloc[:, 0:3].astype("float64")
|
|
294
|
+
|
|
295
|
+
attr_dtypes = [str(entry) for entry in self._df[col[3:]].dtypes]
|
|
296
|
+
|
|
297
|
+
if not all(self._floatbits in entry for entry in attr_dtypes):
|
|
298
|
+
self._df[col[3:]] = self._df.iloc[:, 3:].astype(self._floatbits)
|
|
299
|
+
|
|
300
|
+
for name, attr_type in self._attr_types.items():
|
|
301
|
+
if attr_type == _AttrType.CONT.value:
|
|
302
|
+
logger.debug("Replacing CONT undef...")
|
|
303
|
+
self._df.loc[:, name] = self._df[name].replace(
|
|
304
|
+
self._undef_cont,
|
|
305
|
+
np.float64(UNDEF_CONT).astype(self._floatbits),
|
|
306
|
+
)
|
|
307
|
+
else:
|
|
308
|
+
logger.debug("Replacing INT undef...")
|
|
309
|
+
self._df.loc[:, name] = self._df[name].replace(
|
|
310
|
+
self._undef_disc, np.int32(UNDEF_DISC)
|
|
311
|
+
)
|
|
312
|
+
logger.info("Processed dataframe: %s", list(self._df.dtypes))
|
|
313
|
+
|
|
314
|
+
def ensure_consistency(self) -> bool:
|
|
315
|
+
"""Ensure that data and attr* are consistent.
|
|
316
|
+
|
|
317
|
+
This is important for many operations on the dataframe, an should keep
|
|
318
|
+
attr_types and attr_records 'in sync' with the dataframe.
|
|
319
|
+
|
|
320
|
+
* When adding one or columns to the dataframe
|
|
321
|
+
* When removing one or more columns from the dataframe
|
|
322
|
+
* ...
|
|
323
|
+
|
|
324
|
+
Returns True is consistency is ran, while False means that no changes have
|
|
325
|
+
occured, hence no consistency checks are done
|
|
326
|
+
"""
|
|
327
|
+
|
|
328
|
+
# the purpose of this hash check is to avoid spending time on consistency
|
|
329
|
+
# checks if no changes
|
|
330
|
+
hash_proposed = (
|
|
331
|
+
jhash(self._df),
|
|
332
|
+
jhash(self._attr_types),
|
|
333
|
+
jhash(self._attr_records),
|
|
334
|
+
)
|
|
335
|
+
if self._hash == hash_proposed:
|
|
336
|
+
return False
|
|
337
|
+
|
|
338
|
+
if list(self._df.columns[:3]) != [self._xname, self._yname, self._zname]:
|
|
339
|
+
raise ValueError(
|
|
340
|
+
f"Dataframe must include '{self._xname}', '{self._yname}' "
|
|
341
|
+
f"and '{self._zname}', got {list(self._df.columns[:3])}"
|
|
342
|
+
)
|
|
343
|
+
|
|
344
|
+
# order matters:
|
|
345
|
+
self._ensure_consistency_attr_types()
|
|
346
|
+
self._ensure_consistency_attr_records()
|
|
347
|
+
self._ensure_consistency_df_dtypes()
|
|
348
|
+
self._df.reset_index(drop=True, inplace=True)
|
|
349
|
+
|
|
350
|
+
self._hash = (
|
|
351
|
+
jhash(self._df),
|
|
352
|
+
jhash(self._attr_types),
|
|
353
|
+
jhash(self._attr_records),
|
|
354
|
+
)
|
|
355
|
+
|
|
356
|
+
return True
|
|
357
|
+
|
|
358
|
+
def get_attr_type(self, name: str) -> str:
|
|
359
|
+
"""Get the attr_type as string"""
|
|
360
|
+
return self._attr_types[name].name
|
|
361
|
+
|
|
362
|
+
def set_attr_type(self, name: str, attrtype: str) -> None:
|
|
363
|
+
"""Set a type (DISC, CONT) for a named attribute.
|
|
364
|
+
|
|
365
|
+
A bit flexibility is added for attrtype, e.g. allowing "float*" for CONT
|
|
366
|
+
etc, and allow lowercase "cont" for CONT
|
|
367
|
+
|
|
368
|
+
"""
|
|
369
|
+
logger.debug("Set the attribute type for %s as %s", name, attrtype)
|
|
370
|
+
apply_attrtype = attrtype.upper()
|
|
371
|
+
|
|
372
|
+
# allow for optionally using INT and FLOAT in addation to DISC and CONT
|
|
373
|
+
if "FLOAT" in apply_attrtype:
|
|
374
|
+
apply_attrtype = _AttrType.CONT.value
|
|
375
|
+
if "INT" in apply_attrtype:
|
|
376
|
+
apply_attrtype = _AttrType.DISC.value
|
|
377
|
+
|
|
378
|
+
if name not in self._attr_types:
|
|
379
|
+
raise ValueError(f"No such log name present: {name}")
|
|
380
|
+
|
|
381
|
+
if self.get_attr_type(name) == apply_attrtype:
|
|
382
|
+
logger.debug("Same attr_type as existing, return")
|
|
383
|
+
return
|
|
384
|
+
|
|
385
|
+
if apply_attrtype in _AttrType.__members__:
|
|
386
|
+
self._attr_types[name] = _AttrType[apply_attrtype]
|
|
387
|
+
else:
|
|
388
|
+
raise ValueError(
|
|
389
|
+
f"Cannot set wlogtype as {attrtype}, not in "
|
|
390
|
+
f"{list(_AttrType.__members__)}"
|
|
391
|
+
)
|
|
392
|
+
|
|
393
|
+
# need to update records with defaults
|
|
394
|
+
self._infer_automatic_record(name)
|
|
395
|
+
|
|
396
|
+
self.ensure_consistency()
|
|
397
|
+
|
|
398
|
+
def get_attr_record(self, name: str):
|
|
399
|
+
"""Get a record for a named attribute."""
|
|
400
|
+
return self._attr_records[name]
|
|
401
|
+
|
|
402
|
+
def set_attr_record(self, name: str, record: dict | None) -> None:
|
|
403
|
+
"""Set a record for a named log."""
|
|
404
|
+
|
|
405
|
+
if name not in self._attr_types:
|
|
406
|
+
raise ValueError(f"No such attr_name: {name}")
|
|
407
|
+
|
|
408
|
+
if record is None and self._attr_types[name] == _AttrType.DISC:
|
|
409
|
+
record = {}
|
|
410
|
+
elif record is None and self._attr_types[name] == _AttrType.CONT:
|
|
411
|
+
record = CONT_DEFAULT_RECORD
|
|
412
|
+
|
|
413
|
+
if self._attr_types[name] == _AttrType.CONT and isinstance(
|
|
414
|
+
record, (list, tuple)
|
|
415
|
+
):
|
|
416
|
+
if len(record) == 2:
|
|
417
|
+
self._attr_records[name] = tuple(record) # prefer as tuple
|
|
418
|
+
elif self._attr_types[name] == _AttrType.CONT and isinstance(record, dict):
|
|
419
|
+
raise ValueError(
|
|
420
|
+
"Cannot set a log record for a continuous log: input record is "
|
|
421
|
+
"dictionary, not a list or tuple"
|
|
422
|
+
)
|
|
423
|
+
elif self._attr_types[name] == _AttrType.DISC and isinstance(record, dict):
|
|
424
|
+
self._attr_records[name] = record
|
|
425
|
+
elif self._attr_types[name] == _AttrType.DISC and not isinstance(record, dict):
|
|
426
|
+
raise ValueError(
|
|
427
|
+
"Input is not a dictionary. Cannot set a log record for a discrete log"
|
|
428
|
+
)
|
|
429
|
+
else:
|
|
430
|
+
raise ValueError(
|
|
431
|
+
"Something went wrong when setting logrecord: "
|
|
432
|
+
f"({self._attr_types[name]} {type(record)})."
|
|
433
|
+
)
|
|
434
|
+
|
|
435
|
+
self.ensure_consistency()
|
|
436
|
+
|
|
437
|
+
def get_dataframe_copy(
|
|
438
|
+
self,
|
|
439
|
+
infer_dtype: bool = False,
|
|
440
|
+
filled=False,
|
|
441
|
+
fill_value=UNDEF_CONT,
|
|
442
|
+
fill_value_int=UNDEF_DISC,
|
|
443
|
+
):
|
|
444
|
+
"""Get a deep copy of the dataframe, with options.
|
|
445
|
+
|
|
446
|
+
If infer_dtype is True, then DISC columns will be of "int32" type, but
|
|
447
|
+
since int32 do not support np.nan, the value for undefined values will be
|
|
448
|
+
``fill_value_int``
|
|
449
|
+
"""
|
|
450
|
+
dfr = self._df.copy(deep=True)
|
|
451
|
+
if infer_dtype:
|
|
452
|
+
for name, attrtype in self._attr_types.items():
|
|
453
|
+
if attrtype.name == _AttrType.DISC.value:
|
|
454
|
+
dfr[name] = dfr[name].fillna(fill_value_int)
|
|
455
|
+
dfr[name] = dfr[name].astype("int32")
|
|
456
|
+
|
|
457
|
+
if filled:
|
|
458
|
+
dfill = {}
|
|
459
|
+
for attrname in self._df:
|
|
460
|
+
if self._attr_types[attrname] == _AttrType.DISC:
|
|
461
|
+
dfill[attrname] = fill_value_int
|
|
462
|
+
else:
|
|
463
|
+
dfill[attrname] = fill_value
|
|
464
|
+
|
|
465
|
+
dfr = dfr.fillna(dfill)
|
|
466
|
+
|
|
467
|
+
return dfr
|
|
468
|
+
|
|
469
|
+
def get_dataframe(self, copy=True):
|
|
470
|
+
"""Get the dataframe, as view or deep copy."""
|
|
471
|
+
if copy:
|
|
472
|
+
return self._df.copy(deep=True)
|
|
473
|
+
|
|
474
|
+
return self._df
|
|
475
|
+
|
|
476
|
+
def set_dataframe(self, dfr: pd.DataFrame):
|
|
477
|
+
"""Set the dataframe in a controlled manner, shall be used"""
|
|
478
|
+
# TODO: more checks, and possibly acceptance of lists, dicts?
|
|
479
|
+
if isinstance(dfr, pd.DataFrame):
|
|
480
|
+
self._df = dfr
|
|
481
|
+
else:
|
|
482
|
+
raise ValueError("Input dfr is not a pandas dataframe")
|
|
483
|
+
self.ensure_consistency()
|
|
484
|
+
|
|
485
|
+
def rename_attr(self, attrname: str, newname: str):
|
|
486
|
+
"""Rename a attribute, e.g. Poro to PORO."""
|
|
487
|
+
|
|
488
|
+
if attrname not in list(self._df):
|
|
489
|
+
raise ValueError("Input log does not exist")
|
|
490
|
+
|
|
491
|
+
if newname in list(self._df):
|
|
492
|
+
raise ValueError("New log name exists already")
|
|
493
|
+
|
|
494
|
+
# rename in dataframe
|
|
495
|
+
self._df.rename(index=str, columns={attrname: newname}, inplace=True)
|
|
496
|
+
|
|
497
|
+
self._attr_types[newname] = self._attr_types.pop(attrname)
|
|
498
|
+
self._attr_records[newname] = self._attr_records.pop(attrname)
|
|
499
|
+
|
|
500
|
+
self.ensure_consistency()
|
|
501
|
+
|
|
502
|
+
def create_attr(
|
|
503
|
+
self,
|
|
504
|
+
attrname: str,
|
|
505
|
+
attr_type: str = Literal[
|
|
506
|
+
_AttrType.CONT.value, # type: ignore
|
|
507
|
+
_AttrType.DISC.value, # type: ignore
|
|
508
|
+
],
|
|
509
|
+
attr_record: dict | None = None,
|
|
510
|
+
value: float = 0.0,
|
|
511
|
+
force: bool = True,
|
|
512
|
+
force_reserved: bool = False,
|
|
513
|
+
) -> bool:
|
|
514
|
+
"""Create a new attribute, e.g. a log."""
|
|
515
|
+
|
|
516
|
+
if attrname in list(self._df) and force is False:
|
|
517
|
+
return False
|
|
518
|
+
|
|
519
|
+
if attrname in _AttrName.list() and not force_reserved:
|
|
520
|
+
raise ValueError(
|
|
521
|
+
f"The proposed name {attrname} is a reserved name; try another or "
|
|
522
|
+
"set keyword ``force_reserved`` to True ."
|
|
523
|
+
f"Note that the follwoing names are reserved: {_AttrName.list()}"
|
|
524
|
+
)
|
|
525
|
+
|
|
526
|
+
self._attr_types[attrname] = _AttrType[attr_type]
|
|
527
|
+
self._attr_records[attrname] = attr_record
|
|
528
|
+
|
|
529
|
+
# make a new column
|
|
530
|
+
self._df[attrname] = float(value)
|
|
531
|
+
self.ensure_consistency()
|
|
532
|
+
return True
|
|
533
|
+
|
|
534
|
+
def copy_attr(self, attrname: str, new_attrname: str, force: bool = True) -> bool:
|
|
535
|
+
"""Copy a attribute to a new name."""
|
|
536
|
+
|
|
537
|
+
if new_attrname in list(self._df) and force is False:
|
|
538
|
+
return False
|
|
539
|
+
|
|
540
|
+
self._attr_types[new_attrname] = deepcopy(self._attr_types[attrname])
|
|
541
|
+
self._attr_records[new_attrname] = deepcopy(self._attr_records[attrname])
|
|
542
|
+
|
|
543
|
+
# make a new column
|
|
544
|
+
self._df[new_attrname] = self._df[attrname].copy()
|
|
545
|
+
self.ensure_consistency()
|
|
546
|
+
return True
|
|
547
|
+
|
|
548
|
+
def delete_attr(self, attrname: str | list[str]) -> int:
|
|
549
|
+
"""Delete/remove an existing attribute, or list of attributes.
|
|
550
|
+
|
|
551
|
+
Returns number of logs deleted
|
|
552
|
+
"""
|
|
553
|
+
if not isinstance(attrname, list):
|
|
554
|
+
attrname = [attrname]
|
|
555
|
+
|
|
556
|
+
lcount = 0
|
|
557
|
+
for logn in attrname:
|
|
558
|
+
if logn not in list(self._df):
|
|
559
|
+
continue
|
|
560
|
+
|
|
561
|
+
lcount += 1
|
|
562
|
+
logger.debug("Actually deleting %s", logn)
|
|
563
|
+
self._df.drop(logn, axis=1, inplace=True)
|
|
564
|
+
|
|
565
|
+
self.ensure_consistency()
|
|
566
|
+
|
|
567
|
+
return lcount
|
|
568
|
+
|
|
569
|
+
def create_relative_hlen(self):
|
|
570
|
+
"""Make a relative length of e.g. a well, as a attribute (log)."""
|
|
571
|
+
# extract numpies from XYZ trajectory logs
|
|
572
|
+
xv = self._df[self._xname].values
|
|
573
|
+
yv = self._df[self._yname].values
|
|
574
|
+
|
|
575
|
+
distance = []
|
|
576
|
+
previous_x, previous_y = xv[0], yv[0]
|
|
577
|
+
for _, (x, y) in enumerate(zip(xv, yv)):
|
|
578
|
+
distance.append(math.hypot((previous_x - x), (y - previous_y)))
|
|
579
|
+
previous_x, previous_y = x, y
|
|
580
|
+
|
|
581
|
+
self._df.loc[:, _AttrName.R_HLEN_NAME.value] = pd.Series(
|
|
582
|
+
np.cumsum(distance), index=self._df.index
|
|
583
|
+
)
|
|
584
|
+
self.ensure_consistency()
|
|
585
|
+
|
|
586
|
+
def geometrics(self):
|
|
587
|
+
"""Compute geometrical arrays MD, INCL, AZI, as attributes (logs) (~well data).
|
|
588
|
+
|
|
589
|
+
These are kind of quasi measurements hence the attributes (logs) will named
|
|
590
|
+
with a Q in front as Q_MDEPTH, Q_INCL, and Q_AZI.
|
|
591
|
+
|
|
592
|
+
These attributes will be added to the dataframe.
|
|
593
|
+
|
|
594
|
+
TODO: If the mdlogname
|
|
595
|
+
attribute does not exist in advance, it will be set to 'Q_MDEPTH'.
|
|
596
|
+
|
|
597
|
+
Returns:
|
|
598
|
+
False if geometrics cannot be computed
|
|
599
|
+
|
|
600
|
+
"""
|
|
601
|
+
# TODO: rewrite in pure python?
|
|
602
|
+
if self._df.shape[0] < 3:
|
|
603
|
+
raise ValueError(
|
|
604
|
+
f"Cannot compute geometrics. Not enough "
|
|
605
|
+
f"trajectory points (need >3, have: {self._df.shape[0]})"
|
|
606
|
+
)
|
|
607
|
+
|
|
608
|
+
# extract numpies from XYZ trajetory logs
|
|
609
|
+
ptr_xv = _get_carray(self._df, self._attr_types, self._xname)
|
|
610
|
+
ptr_yv = _get_carray(self._df, self._attr_types, self._yname)
|
|
611
|
+
ptr_zv = _get_carray(self._df, self._attr_types, self._zname)
|
|
612
|
+
|
|
613
|
+
# get number of rows in pandas
|
|
614
|
+
nlen = len(self._df)
|
|
615
|
+
|
|
616
|
+
ptr_md = _cxtgeo.new_doublearray(nlen)
|
|
617
|
+
ptr_incl = _cxtgeo.new_doublearray(nlen)
|
|
618
|
+
ptr_az = _cxtgeo.new_doublearray(nlen)
|
|
619
|
+
|
|
620
|
+
ier = _cxtgeo.well_geometrics(
|
|
621
|
+
nlen, ptr_xv, ptr_yv, ptr_zv, ptr_md, ptr_incl, ptr_az, 0
|
|
622
|
+
)
|
|
623
|
+
|
|
624
|
+
if ier != 0:
|
|
625
|
+
raise XTGeoCLibError(f"XYZ/well_geometrics failed with error code: {ier}")
|
|
626
|
+
|
|
627
|
+
dnumpy = _convert_carr_double_np(len(self._df), ptr_md)
|
|
628
|
+
self._df[_AttrName.Q_MD_NAME.value] = pd.Series(dnumpy, index=self._df.index)
|
|
629
|
+
|
|
630
|
+
dnumpy = _convert_carr_double_np(len(self._df), ptr_incl)
|
|
631
|
+
self._df[_AttrName.Q_INCL_NAME.value] = pd.Series(dnumpy, index=self._df.index)
|
|
632
|
+
|
|
633
|
+
dnumpy = _convert_carr_double_np(len(self._df), ptr_az)
|
|
634
|
+
self._df[_AttrName.Q_AZI_NAME.value] = pd.Series(dnumpy, index=self._df.index)
|
|
635
|
+
|
|
636
|
+
# delete tmp pointers
|
|
637
|
+
_cxtgeo.delete_doublearray(ptr_xv)
|
|
638
|
+
_cxtgeo.delete_doublearray(ptr_yv)
|
|
639
|
+
_cxtgeo.delete_doublearray(ptr_zv)
|
|
640
|
+
_cxtgeo.delete_doublearray(ptr_md)
|
|
641
|
+
_cxtgeo.delete_doublearray(ptr_incl)
|
|
642
|
+
_cxtgeo.delete_doublearray(ptr_az)
|
|
643
|
+
|
|
644
|
+
self.ensure_consistency()
|
|
645
|
+
|
|
646
|
+
return True
|