xtgeo 4.14.0__cp311-cp311-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.
- cxtgeo.py +558 -0
- cxtgeoPYTHON_wrap.c +19537 -0
- xtgeo/__init__.py +248 -0
- xtgeo/_cxtgeo.cpython-311-x86_64-linux-gnu.so +0 -0
- xtgeo/_internal.cpython-311-x86_64-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 +778 -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 +1683 -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 +3010 -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/interfaces/rms/__init__.py +18 -0
- xtgeo/interfaces/rms/_regular_surface.py +460 -0
- xtgeo/interfaces/rms/_rms_base.py +100 -0
- xtgeo/interfaces/rms/_rmsapi_package.py +69 -0
- xtgeo/interfaces/rms/rmsapi_utils.py +438 -0
- xtgeo/io/__init__.py +1 -0
- xtgeo/io/_file.py +603 -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 +20 -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_utils.py +81 -0
- xtgeo/surface/_surfs_import.py +43 -0
- xtgeo/surface/_zmap_parser.py +138 -0
- xtgeo/surface/regular_surface.py +3043 -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.14.0.dist-info/METADATA +146 -0
- xtgeo-4.14.0.dist-info/RECORD +658 -0
- xtgeo-4.14.0.dist-info/WHEEL +6 -0
- xtgeo-4.14.0.dist-info/licenses/LICENSE.md +165 -0
- xtgeo.libs/libgomp-e985bcbb.so.1.0.0 +0 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import warnings
|
|
4
|
+
from contextlib import contextmanager
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
from xtgeo.common import null_logger
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from collections.abc import Generator
|
|
13
|
+
from io import TextIOWrapper
|
|
14
|
+
|
|
15
|
+
from xtgeo.common.types import FileLike
|
|
16
|
+
|
|
17
|
+
logger = null_logger(__name__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def run_length_encoding(arr: np.ndarray) -> tuple[np.ndarray, np.ndarray]:
|
|
21
|
+
"""
|
|
22
|
+
Perform run-length encoding on a 1D NumPy array.
|
|
23
|
+
|
|
24
|
+
Run-length encoding is a data compression technique that represents
|
|
25
|
+
consecutive repeated values as a single value and its count.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
arr (np.ndarray): A 1D NumPy array to be encoded.
|
|
29
|
+
|
|
30
|
+
Returns:
|
|
31
|
+
tuple[np.ndarray, np.ndarray]: A tuple containing two 1D NumPy arrays:
|
|
32
|
+
- counts (np.ndarray): An array of counts representing the number
|
|
33
|
+
of consecutive occurrences of each unique value.
|
|
34
|
+
- values (np.ndarray): An array of the unique values corresponding to
|
|
35
|
+
the counts.
|
|
36
|
+
|
|
37
|
+
Examples:
|
|
38
|
+
>>> import numpy as np
|
|
39
|
+
>>> arr = np.array([1, 1, 2, 2, 2, 3, 3, 1, 1, 1])
|
|
40
|
+
>>> counts, values = run_length_encoding(arr)
|
|
41
|
+
>>> print(counts)
|
|
42
|
+
[2 3 2 3]
|
|
43
|
+
>>> print(values)
|
|
44
|
+
[1 2 3 1]
|
|
45
|
+
|
|
46
|
+
>>> arr = np.array([5, 5, 5, 5, 5])
|
|
47
|
+
>>> counts, values = run_length_encoding(arr)
|
|
48
|
+
>>> print(counts)
|
|
49
|
+
[5]
|
|
50
|
+
>>> print(values)
|
|
51
|
+
[5]
|
|
52
|
+
|
|
53
|
+
"""
|
|
54
|
+
change_indices = np.where(~np.isclose(arr[:-1], arr[1:]))[0] + 1
|
|
55
|
+
counts = np.diff(np.concatenate(([0], change_indices, [len(arr)])))
|
|
56
|
+
values = arr[np.concatenate(([0], change_indices))]
|
|
57
|
+
|
|
58
|
+
return counts, values
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def split_line(line: str) -> Generator[str, None, None]:
|
|
62
|
+
"""
|
|
63
|
+
split a keyword line inside a grdecl file. This splits the values of a
|
|
64
|
+
'simple' keyword into tokens. ie.
|
|
65
|
+
|
|
66
|
+
>>> list(split_line("3 1.0 3*4 PORO 3*INC 'HELLO WORLD ' 3*'NAME'"))
|
|
67
|
+
['3', '1.0', '3*4', 'PORO', '3*INC', "'HELLO WORLD '", "3*'NAME'"]
|
|
68
|
+
|
|
69
|
+
note that we do not require string literals to have delimiting space at the
|
|
70
|
+
end, but at the start. This is to be permissive at the end (as there is no
|
|
71
|
+
formal requirement for spaces at end of string literals), but no space at
|
|
72
|
+
the start of a string literal might indicate a repeating count.
|
|
73
|
+
|
|
74
|
+
>>> list(split_line("3'hello world'4"))
|
|
75
|
+
["3'hello world'", '4']
|
|
76
|
+
|
|
77
|
+
"""
|
|
78
|
+
value = ""
|
|
79
|
+
inside_str = False
|
|
80
|
+
for char in line:
|
|
81
|
+
if char == "'":
|
|
82
|
+
# Either the start or
|
|
83
|
+
# the end of a string literal
|
|
84
|
+
if inside_str:
|
|
85
|
+
yield value + char
|
|
86
|
+
value = ""
|
|
87
|
+
inside_str = False
|
|
88
|
+
else:
|
|
89
|
+
inside_str = True
|
|
90
|
+
value += char
|
|
91
|
+
elif inside_str:
|
|
92
|
+
# inside a string literal
|
|
93
|
+
value += char
|
|
94
|
+
elif value and value[-1] == "-" and char == "-":
|
|
95
|
+
# a comment
|
|
96
|
+
value = value[0:-1]
|
|
97
|
+
break
|
|
98
|
+
elif char.isspace():
|
|
99
|
+
# delimiting space
|
|
100
|
+
if value:
|
|
101
|
+
yield value
|
|
102
|
+
value = ""
|
|
103
|
+
else:
|
|
104
|
+
value += char
|
|
105
|
+
if value:
|
|
106
|
+
yield value
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def split_line_no_string(line: str) -> Generator[str, None, None]:
|
|
110
|
+
"""
|
|
111
|
+
Same as split_line, but does not handle string literals, instead
|
|
112
|
+
its quite a bit faster.
|
|
113
|
+
"""
|
|
114
|
+
for w in line.split():
|
|
115
|
+
if w.startswith("--"):
|
|
116
|
+
return
|
|
117
|
+
yield w
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def match_keyword(kw1: str, kw2: str) -> bool:
|
|
121
|
+
"""
|
|
122
|
+
Perhaps surprisingly, the eclipse input format considers keywords
|
|
123
|
+
as 8 character strings with space denoting end. So PORO, 'PORO ', and
|
|
124
|
+
'PORO ' are all considered the same keyword.
|
|
125
|
+
|
|
126
|
+
Note that spaces may also occur inside e.g. tracer keywords, hence 'G1 F' vs 'G1 S'
|
|
127
|
+
are different keywords.
|
|
128
|
+
|
|
129
|
+
>>> match_keyword("PORO", "PORO ")
|
|
130
|
+
True
|
|
131
|
+
>>> match_keyword("PORO", "PERM")
|
|
132
|
+
False
|
|
133
|
+
>>> match_keyword("MORETHAN8LETTERS1)", "MORETHAN8LETTER2")
|
|
134
|
+
True
|
|
135
|
+
>>> match_keyword("G1 F", "G1 S")
|
|
136
|
+
False
|
|
137
|
+
|
|
138
|
+
"""
|
|
139
|
+
return kw1[0:8].rstrip() == kw2[0:8].rstrip()
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def interpret_token(val: str) -> list[str]:
|
|
143
|
+
"""
|
|
144
|
+
Interpret a eclipse token, tries to interpret the
|
|
145
|
+
value in the following order:
|
|
146
|
+
* string literal
|
|
147
|
+
* keyword
|
|
148
|
+
* repreated keyword
|
|
149
|
+
* number
|
|
150
|
+
|
|
151
|
+
If the token cannot be matched, we default to returning
|
|
152
|
+
the uninterpreted token.
|
|
153
|
+
|
|
154
|
+
>>> interpret_token("3")
|
|
155
|
+
['3']
|
|
156
|
+
>>> interpret_token("1.0")
|
|
157
|
+
['1.0']
|
|
158
|
+
>>> interpret_token("'hello'")
|
|
159
|
+
['hello']
|
|
160
|
+
>>> interpret_token("PORO")
|
|
161
|
+
['PORO']
|
|
162
|
+
>>> interpret_token("3PORO")
|
|
163
|
+
['3PORO']
|
|
164
|
+
>>> interpret_token("3*PORO")
|
|
165
|
+
['PORO', 'PORO', 'PORO']
|
|
166
|
+
>>> interpret_token("3*'PORO '")
|
|
167
|
+
['PORO ', 'PORO ', 'PORO ']
|
|
168
|
+
>>> interpret_token("3'PORO '")
|
|
169
|
+
["3'PORO '"]
|
|
170
|
+
|
|
171
|
+
"""
|
|
172
|
+
if val[0] == "'" and val[-1] == "'":
|
|
173
|
+
# A string literal
|
|
174
|
+
return [val[1:-1]]
|
|
175
|
+
if val[0].isalpha():
|
|
176
|
+
# A keyword
|
|
177
|
+
return [val]
|
|
178
|
+
if "*" in val:
|
|
179
|
+
multiplicand, value = val.split("*")
|
|
180
|
+
return interpret_token(value) * int(multiplicand)
|
|
181
|
+
return [val]
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
IGNORE_ALL = None
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
@contextmanager
|
|
188
|
+
def open_grdecl(
|
|
189
|
+
grdecl_file: FileLike,
|
|
190
|
+
keywords: list[str],
|
|
191
|
+
simple_keywords: list[str] | None = None,
|
|
192
|
+
max_len: int | None = None,
|
|
193
|
+
ignore: list[str] | None = IGNORE_ALL,
|
|
194
|
+
strict: bool = True,
|
|
195
|
+
) -> Generator[Generator[tuple[str, list[str]], None, None], None, None]:
|
|
196
|
+
"""Generates tuples of keyword and values in records of a grdecl file.
|
|
197
|
+
|
|
198
|
+
The format of the file must be that of the GRID section of a eclipse input
|
|
199
|
+
DATA file.
|
|
200
|
+
|
|
201
|
+
The records looked for must be "simple" ie. start with the keyword, be
|
|
202
|
+
followed by single word values and ended by a slash ('/').
|
|
203
|
+
|
|
204
|
+
.. code-block:: none
|
|
205
|
+
|
|
206
|
+
KEYWORD
|
|
207
|
+
value value value /
|
|
208
|
+
|
|
209
|
+
reading the above file with :code:`open_grdecl("filename.grdecl",
|
|
210
|
+
keywords="KEYWORD")` will generate :code:`[("KEYWORD", ["value", "value",
|
|
211
|
+
"value"])]`
|
|
212
|
+
|
|
213
|
+
open_grdecl does not follow includes, obey skips, parse MESSAGE commands or
|
|
214
|
+
make exception for groups and subrecords.
|
|
215
|
+
|
|
216
|
+
Raises:
|
|
217
|
+
ValueError: when end of file is reached without terminating a keyword,
|
|
218
|
+
or the file contains an unrecognized (or ignored) keyword.
|
|
219
|
+
|
|
220
|
+
Args:
|
|
221
|
+
keywords (List[str]): Which keywords to look for, these are expected to
|
|
222
|
+
be at the start of a line in the file and the respective values
|
|
223
|
+
following on subsequent lines separated by whitespace. Reading of a
|
|
224
|
+
keyword is completed by a final '\'. See example above.
|
|
225
|
+
|
|
226
|
+
simple_keywords (List[str]): Similar to keywords, but faster and
|
|
227
|
+
cannot contain any string literals, such as the GRIDUNIT keyword
|
|
228
|
+
which can be followed by the string literal 'METRES '.
|
|
229
|
+
|
|
230
|
+
max_len (int): The maximum significant length of a keyword (Eclipse
|
|
231
|
+
uses 8) ignore (List[str]): Keywords that have no associated data, and
|
|
232
|
+
should be ignored, e.g. ECHO. Defaults to ignore all keywords that are
|
|
233
|
+
not part of the results.
|
|
234
|
+
|
|
235
|
+
ignore (List[str]): list of unmatched keywords to ignore, defaults to
|
|
236
|
+
ignoring all unmatched keywords. Any keyword not ignored and not in
|
|
237
|
+
the list of keywords looked for will give an error unless strict=False.
|
|
238
|
+
Although a keyword is ignored, if it has trailing values on new lines
|
|
239
|
+
those are interpreted as keywords, in order to ignore keywords with
|
|
240
|
+
trailing values, use strict=False and filter warnings. Alternatively,
|
|
241
|
+
add it to the list of expected keywords.
|
|
242
|
+
|
|
243
|
+
strict (boolean): Whether unmatched keywords should raise an error or
|
|
244
|
+
a warning.
|
|
245
|
+
"""
|
|
246
|
+
|
|
247
|
+
if simple_keywords is None:
|
|
248
|
+
simple_keywords = []
|
|
249
|
+
|
|
250
|
+
def read_grdecl(
|
|
251
|
+
grdecl_stream: TextIOWrapper,
|
|
252
|
+
) -> Generator[tuple[str, list[str]], None, None]:
|
|
253
|
+
words: list[str] = []
|
|
254
|
+
keyword = None
|
|
255
|
+
line_splitter = split_line
|
|
256
|
+
|
|
257
|
+
line_no = 1
|
|
258
|
+
line = grdecl_stream.readline()
|
|
259
|
+
|
|
260
|
+
while line:
|
|
261
|
+
if line is None:
|
|
262
|
+
break
|
|
263
|
+
|
|
264
|
+
if keyword is None:
|
|
265
|
+
snubbed = line[0 : min(max_len, len(line))] if max_len else line
|
|
266
|
+
simple_matched_keywords = [
|
|
267
|
+
kw for kw in simple_keywords if match_keyword(kw, snubbed)
|
|
268
|
+
]
|
|
269
|
+
matched_keywords = [kw for kw in keywords if match_keyword(kw, snubbed)]
|
|
270
|
+
if matched_keywords or simple_matched_keywords:
|
|
271
|
+
if matched_keywords:
|
|
272
|
+
keyword = matched_keywords[0]
|
|
273
|
+
line_splitter = split_line
|
|
274
|
+
else:
|
|
275
|
+
keyword = simple_matched_keywords[0]
|
|
276
|
+
line_splitter = split_line_no_string
|
|
277
|
+
logger.debug("Keyword %s found on line %d", keyword, line_no)
|
|
278
|
+
elif (
|
|
279
|
+
list(split_line(line)) # Not an empty line
|
|
280
|
+
and ignore is not IGNORE_ALL # Not ignoring all
|
|
281
|
+
and not any(
|
|
282
|
+
match_keyword(snubbed, i) for i in ignore
|
|
283
|
+
) # Not ignoring this
|
|
284
|
+
):
|
|
285
|
+
if strict:
|
|
286
|
+
raise ValueError(
|
|
287
|
+
f"Unrecognized keyword {repr(line)} on line {line_no}"
|
|
288
|
+
)
|
|
289
|
+
else:
|
|
290
|
+
warnings.warn(
|
|
291
|
+
f"Unrecognized keyword {repr(line)} on line {line_no}"
|
|
292
|
+
)
|
|
293
|
+
|
|
294
|
+
else:
|
|
295
|
+
for word in line_splitter(line):
|
|
296
|
+
if word == "/":
|
|
297
|
+
yield (keyword, words)
|
|
298
|
+
keyword = None
|
|
299
|
+
words = []
|
|
300
|
+
break
|
|
301
|
+
words += interpret_token(word)
|
|
302
|
+
line = grdecl_stream.readline()
|
|
303
|
+
line_no += 1
|
|
304
|
+
|
|
305
|
+
if keyword is not None:
|
|
306
|
+
raise ValueError(f"Reached end of stream while reading {keyword}")
|
|
307
|
+
|
|
308
|
+
with open(grdecl_file, "r") as stream:
|
|
309
|
+
yield read_grdecl(stream)
|
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Datastructure for the contents of grdecl files.
|
|
3
|
+
|
|
4
|
+
The grdecl file format is not specified in a strict manner
|
|
5
|
+
but in the most general sense it is a file that can be included
|
|
6
|
+
into the GRID section of a eclipse input file.
|
|
7
|
+
|
|
8
|
+
However, it is nearly impossible to support such a file format completely,
|
|
9
|
+
instead we narrow it down to the following subset of keywords:
|
|
10
|
+
|
|
11
|
+
* COORD
|
|
12
|
+
* ZCORN
|
|
13
|
+
* ACTNUM
|
|
14
|
+
* MAPAXES
|
|
15
|
+
* GRIDUNIT
|
|
16
|
+
* SPECGRID
|
|
17
|
+
* GDORIENT
|
|
18
|
+
|
|
19
|
+
And ignore ECHO and NOECHO keywords. see _grid_format for the details
|
|
20
|
+
of how these keywords are layed out in a text file, and see GrdeclGrid
|
|
21
|
+
for how the grid geometry is interpreted from these keywords.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
from __future__ import annotations
|
|
25
|
+
|
|
26
|
+
from dataclasses import dataclass
|
|
27
|
+
|
|
28
|
+
import numpy as np
|
|
29
|
+
import resfo
|
|
30
|
+
|
|
31
|
+
from xtgeo.common.types import Dimensions
|
|
32
|
+
from xtgeo.io._file import FileFormat
|
|
33
|
+
|
|
34
|
+
from ._ecl_grid import (
|
|
35
|
+
CoordinateType,
|
|
36
|
+
EclGrid,
|
|
37
|
+
GdOrient,
|
|
38
|
+
GrdeclKeyword,
|
|
39
|
+
GridRelative,
|
|
40
|
+
GridUnit,
|
|
41
|
+
MapAxes,
|
|
42
|
+
Units,
|
|
43
|
+
)
|
|
44
|
+
from ._grdecl_format import IGNORE_ALL, open_grdecl, run_length_encoding
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@dataclass
|
|
48
|
+
class SpecGrid(GrdeclKeyword):
|
|
49
|
+
"""The SPECGRID keyword gives the size of the grid.
|
|
50
|
+
|
|
51
|
+
The 3 first values is the number of cells in each dimension
|
|
52
|
+
of the grid. The next is the number of reservoirs in the file and
|
|
53
|
+
the last is the type of coordinates, see CoordinateType.
|
|
54
|
+
|
|
55
|
+
example:
|
|
56
|
+
"SPECGRID 10 10 10 1 T /" meaning 10x10x10 grid with 1 reservoir
|
|
57
|
+
and cylindrical coordinates.
|
|
58
|
+
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
ndivix: int = 1
|
|
62
|
+
ndiviy: int = 1
|
|
63
|
+
ndiviz: int = 1
|
|
64
|
+
numres: int = 1
|
|
65
|
+
coordinate_type: CoordinateType = CoordinateType.CARTESIAN
|
|
66
|
+
|
|
67
|
+
def to_grdecl(self):
|
|
68
|
+
return [
|
|
69
|
+
self.ndivix,
|
|
70
|
+
self.ndiviy,
|
|
71
|
+
self.ndiviz,
|
|
72
|
+
self.numres,
|
|
73
|
+
self.coordinate_type.to_grdecl(),
|
|
74
|
+
]
|
|
75
|
+
|
|
76
|
+
def to_bgrdecl(self):
|
|
77
|
+
return np.array(
|
|
78
|
+
[
|
|
79
|
+
self.ndivix,
|
|
80
|
+
self.ndiviy,
|
|
81
|
+
self.ndiviz,
|
|
82
|
+
self.numres,
|
|
83
|
+
self.coordinate_type.to_bgrdecl(),
|
|
84
|
+
],
|
|
85
|
+
dtype=np.int32,
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
@classmethod
|
|
89
|
+
def from_bgrdecl(cls, values):
|
|
90
|
+
ivalues = [int(v) for v in values[:4]]
|
|
91
|
+
if len(values) < 5:
|
|
92
|
+
return cls(*ivalues)
|
|
93
|
+
if len(values) == 5:
|
|
94
|
+
return cls(*ivalues, CoordinateType.from_bgrdecl(values[-1]))
|
|
95
|
+
raise ValueError("SPECGRID should have at most 5 values")
|
|
96
|
+
|
|
97
|
+
@classmethod
|
|
98
|
+
def from_grdecl(cls, values):
|
|
99
|
+
ivalues = [int(v) for v in values[:4]]
|
|
100
|
+
if len(values) < 5:
|
|
101
|
+
return cls(*ivalues)
|
|
102
|
+
if len(values) == 5:
|
|
103
|
+
return cls(*ivalues, CoordinateType.from_grdecl(values[-1]))
|
|
104
|
+
raise ValueError("SPECGRID should have at most 5 values")
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class GrdeclGrid(EclGrid):
|
|
108
|
+
"""
|
|
109
|
+
The main keywords that describe a grdecl grid is COORD, ZCORN and ACTNUM
|
|
110
|
+
and are described in xtgeo.grid3d._ecl_grid.
|
|
111
|
+
The remaining fields (SPECGRID, MAPAXES, MAPUNITS, GRIDUNIT, GDORIENT)
|
|
112
|
+
describe units, orientation and dimensions, see corresponding dataclasses.
|
|
113
|
+
The number of cells in each direction is described in the SPECGRID keyword.
|
|
114
|
+
"""
|
|
115
|
+
|
|
116
|
+
def __init__(
|
|
117
|
+
self,
|
|
118
|
+
coord: np.ndarray,
|
|
119
|
+
zcorn: np.ndarray,
|
|
120
|
+
specgrid: SpecGrid,
|
|
121
|
+
actnum: np.ndarray | None = None,
|
|
122
|
+
mapaxes: MapAxes | None = None,
|
|
123
|
+
mapunits: Units | None = None,
|
|
124
|
+
gridunit: GridUnit | None = None,
|
|
125
|
+
gdorient: GdOrient | None = None,
|
|
126
|
+
):
|
|
127
|
+
self._coord = coord
|
|
128
|
+
self._zcorn = zcorn
|
|
129
|
+
self.specgrid = specgrid
|
|
130
|
+
self._actnum = actnum
|
|
131
|
+
self._mapaxes = mapaxes
|
|
132
|
+
self.mapunits = mapunits
|
|
133
|
+
self.gridunit = gridunit
|
|
134
|
+
self.gdorient = gdorient
|
|
135
|
+
|
|
136
|
+
def __str__(self):
|
|
137
|
+
return (
|
|
138
|
+
"GrdeclGrid("
|
|
139
|
+
f"coord={self._coord}, "
|
|
140
|
+
f"zcorn={self._zcorn}, "
|
|
141
|
+
f"specgrid={self.specgrid}, "
|
|
142
|
+
f"actnum={self._actnum}, "
|
|
143
|
+
f"mapaxes={self._mapaxes}, "
|
|
144
|
+
f"mapunits={self.mapunits}, "
|
|
145
|
+
f"gridunit={self.gridunit}, "
|
|
146
|
+
f"gdorient={self.gdorient})"
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
def __repr__(self):
|
|
150
|
+
return str(self)
|
|
151
|
+
|
|
152
|
+
@property
|
|
153
|
+
def mapaxes(self) -> MapAxes | None:
|
|
154
|
+
return self._mapaxes
|
|
155
|
+
|
|
156
|
+
@mapaxes.setter
|
|
157
|
+
def mapaxes(self, value):
|
|
158
|
+
self._mapaxes = value
|
|
159
|
+
|
|
160
|
+
@property
|
|
161
|
+
def coord(self) -> np.ndarray:
|
|
162
|
+
return self._coord
|
|
163
|
+
|
|
164
|
+
@coord.setter
|
|
165
|
+
def coord(self, value):
|
|
166
|
+
self._coord = value
|
|
167
|
+
|
|
168
|
+
@property
|
|
169
|
+
def zcorn(self) -> np.ndarray:
|
|
170
|
+
return self._zcorn
|
|
171
|
+
|
|
172
|
+
@zcorn.setter
|
|
173
|
+
def zcorn(self, value):
|
|
174
|
+
self._zcorn = value
|
|
175
|
+
|
|
176
|
+
@property
|
|
177
|
+
def actnum(self) -> np.ndarray | None:
|
|
178
|
+
return self._actnum
|
|
179
|
+
|
|
180
|
+
@classmethod
|
|
181
|
+
def default_settings_grid(
|
|
182
|
+
cls,
|
|
183
|
+
coord: np.ndarray,
|
|
184
|
+
zcorn: np.ndarray,
|
|
185
|
+
actnum: np.ndarray | None,
|
|
186
|
+
size: tuple[int, int, int],
|
|
187
|
+
):
|
|
188
|
+
return cls(coord, zcorn, SpecGrid(*size), actnum)
|
|
189
|
+
|
|
190
|
+
def __eq__(self, other):
|
|
191
|
+
if not isinstance(other, GrdeclGrid):
|
|
192
|
+
return False
|
|
193
|
+
return (
|
|
194
|
+
self.specgrid == other.specgrid
|
|
195
|
+
and self.mapaxes == other.mapaxes
|
|
196
|
+
and self.mapunits == other.mapunits
|
|
197
|
+
and self.gridunit == other.gridunit
|
|
198
|
+
and self.gdorient == other.gdorient
|
|
199
|
+
and np.array_equal(self.actnum, other.actnum)
|
|
200
|
+
and np.array_equal(self.coord, other.coord)
|
|
201
|
+
and np.array_equal(self.zcorn, other.zcorn)
|
|
202
|
+
)
|
|
203
|
+
|
|
204
|
+
@property
|
|
205
|
+
def dimensions(self) -> Dimensions:
|
|
206
|
+
"""Dimensions NamedTuple: The grid dimensions (read only)."""
|
|
207
|
+
return Dimensions(
|
|
208
|
+
self.specgrid.ndivix, self.specgrid.ndiviy, self.specgrid.ndiviz
|
|
209
|
+
)
|
|
210
|
+
|
|
211
|
+
@property
|
|
212
|
+
def is_map_relative(self) -> bool:
|
|
213
|
+
return (
|
|
214
|
+
self.gridunit is not None
|
|
215
|
+
and self.gridunit.grid_relative == GridRelative.MAP
|
|
216
|
+
)
|
|
217
|
+
|
|
218
|
+
@property
|
|
219
|
+
def map_axis_units(self):
|
|
220
|
+
if self.mapunits is None:
|
|
221
|
+
return Units.METRES
|
|
222
|
+
return self.mapunits
|
|
223
|
+
|
|
224
|
+
@map_axis_units.setter
|
|
225
|
+
def map_axis_units(self, value):
|
|
226
|
+
self.mapunits = value
|
|
227
|
+
|
|
228
|
+
@property
|
|
229
|
+
def grid_units(self):
|
|
230
|
+
if self.gridunit is None:
|
|
231
|
+
return Units.METRES
|
|
232
|
+
return self.gridunit.unit
|
|
233
|
+
|
|
234
|
+
@grid_units.setter
|
|
235
|
+
def grid_units(self, value):
|
|
236
|
+
if self.gridunit is None and value != Units.METRES:
|
|
237
|
+
self.gridunit = GridUnit(unit=value)
|
|
238
|
+
elif self.gridunit is not None:
|
|
239
|
+
self.gridunit.unit = value
|
|
240
|
+
|
|
241
|
+
@classmethod
|
|
242
|
+
def from_file(cls, filename, fileformat: FileFormat = FileFormat.GRDECL):
|
|
243
|
+
"""
|
|
244
|
+
write the grdeclgrid to a file.
|
|
245
|
+
:param filename: path to file to write.
|
|
246
|
+
:param fileformat: Either "grdecl" or "bgrdecl" to
|
|
247
|
+
indicate binary or ascii format.
|
|
248
|
+
"""
|
|
249
|
+
if fileformat == FileFormat.GRDECL:
|
|
250
|
+
return cls._from_grdecl_file(filename)
|
|
251
|
+
if fileformat == FileFormat.BGRDECL:
|
|
252
|
+
return cls._from_bgrdecl_file(filename)
|
|
253
|
+
raise ValueError(b"Unknown grdecl file format {fileformat}")
|
|
254
|
+
|
|
255
|
+
@classmethod
|
|
256
|
+
def _from_bgrdecl_file(cls, filename, fileformat=None):
|
|
257
|
+
keyword_factories = {
|
|
258
|
+
"COORD": lambda x: np.array(x, dtype=np.float32),
|
|
259
|
+
"ZCORN": lambda x: np.array(x, dtype=np.float32),
|
|
260
|
+
"ACTNUM": lambda x: np.array(x, dtype=np.int32),
|
|
261
|
+
"MAPAXES": MapAxes.from_bgrdecl,
|
|
262
|
+
"MAPUNITS": lambda x: Units.from_bgrdecl(x[0]),
|
|
263
|
+
"GRIDUNIT": GridUnit.from_bgrdecl,
|
|
264
|
+
"SPECGRID": SpecGrid.from_bgrdecl,
|
|
265
|
+
"GDORIENT": GdOrient.from_bgrdecl,
|
|
266
|
+
}
|
|
267
|
+
results = {}
|
|
268
|
+
for entry in resfo.lazy_read(filename, fileformat=fileformat):
|
|
269
|
+
if len(results) == len(keyword_factories):
|
|
270
|
+
break
|
|
271
|
+
kw = entry.read_keyword().rstrip()
|
|
272
|
+
if kw in results:
|
|
273
|
+
raise ValueError(f"Duplicate keyword {kw} in {filename}")
|
|
274
|
+
try:
|
|
275
|
+
factory = keyword_factories[kw]
|
|
276
|
+
except KeyError as e:
|
|
277
|
+
raise ValueError(f"Unknown grdecl keyword {kw}") from e
|
|
278
|
+
results[kw.lower()] = factory(entry.read_array())
|
|
279
|
+
return cls(**results)
|
|
280
|
+
|
|
281
|
+
@classmethod
|
|
282
|
+
def _from_grdecl_file(cls, filename):
|
|
283
|
+
keyword_factories = {
|
|
284
|
+
"COORD": lambda x: np.array(x, dtype=np.float32),
|
|
285
|
+
"ZCORN": lambda x: np.array(x, dtype=np.float32),
|
|
286
|
+
"ACTNUM": lambda x: np.array(x, dtype=np.int32),
|
|
287
|
+
"MAPAXES": MapAxes.from_grdecl,
|
|
288
|
+
"MAPUNITS": lambda x: Units.from_grdecl(x[0]),
|
|
289
|
+
"GRIDUNIT": GridUnit.from_grdecl,
|
|
290
|
+
"SPECGRID": SpecGrid.from_grdecl,
|
|
291
|
+
"GDORIENT": GdOrient.from_grdecl,
|
|
292
|
+
}
|
|
293
|
+
results = {}
|
|
294
|
+
with open_grdecl(
|
|
295
|
+
filename,
|
|
296
|
+
keywords=["MAPAXES", "MAPUNITS", "GRIDUNIT", "SPECGRID", "GDORIENT"],
|
|
297
|
+
simple_keywords=["COORD", "ZCORN", "ACTNUM"],
|
|
298
|
+
max_len=None,
|
|
299
|
+
ignore=IGNORE_ALL,
|
|
300
|
+
strict=False,
|
|
301
|
+
) as keyword_generator:
|
|
302
|
+
for kw, values in keyword_generator:
|
|
303
|
+
if len(results) == len(keyword_factories):
|
|
304
|
+
break
|
|
305
|
+
if kw in results:
|
|
306
|
+
raise ValueError(f"Duplicate keyword {kw} in {filename}")
|
|
307
|
+
try:
|
|
308
|
+
factory = keyword_factories[kw]
|
|
309
|
+
except KeyError as e:
|
|
310
|
+
raise ValueError(f"Unknown grdecl keyword {kw}") from e
|
|
311
|
+
results[kw.lower()] = factory(values)
|
|
312
|
+
return cls(**results)
|
|
313
|
+
|
|
314
|
+
def to_file(self, filename, fileformat="grdecl", rle: bool = False):
|
|
315
|
+
"""
|
|
316
|
+
write the grdeclgrid to a file.
|
|
317
|
+
:param filename: path to file to write.
|
|
318
|
+
:param fileformat: Either "grdecl" or "bgrdecl" to
|
|
319
|
+
indicate binary or ascii format.
|
|
320
|
+
:param rle: Boolean flag indicating whether to use Run-Length Encoding (RLE)
|
|
321
|
+
compression when writing the file (only for grdecl).
|
|
322
|
+
"""
|
|
323
|
+
if fileformat == "grdecl":
|
|
324
|
+
return self._to_grdecl_file(filename, rle)
|
|
325
|
+
if fileformat == "bgrdecl":
|
|
326
|
+
return self._to_bgrdecl_file(filename)
|
|
327
|
+
raise ValueError(b"Unknown grdecl file format {fileformat}")
|
|
328
|
+
|
|
329
|
+
def _to_grdecl_file(self, filename, rle):
|
|
330
|
+
with open(filename, "w") as filestream:
|
|
331
|
+
keywords = [
|
|
332
|
+
("SPECGRID", self.specgrid.to_grdecl()),
|
|
333
|
+
("MAPAXES", self.mapaxes.to_grdecl() if self.mapaxes else None),
|
|
334
|
+
("MAPUNITS", [self.mapunits.to_grdecl()] if self.mapunits else None),
|
|
335
|
+
("GRIDUNIT", self.gridunit.to_grdecl() if self.gridunit else None),
|
|
336
|
+
("GDORIENT", self.gdorient.to_grdecl() if self.gdorient else None),
|
|
337
|
+
("COORD", self.coord),
|
|
338
|
+
("ZCORN", self.zcorn),
|
|
339
|
+
("ACTNUM", self.actnum),
|
|
340
|
+
]
|
|
341
|
+
for kw, values in keywords:
|
|
342
|
+
if values is None:
|
|
343
|
+
continue
|
|
344
|
+
filestream.write(f"{kw}\n")
|
|
345
|
+
if rle and (kw == "ACTNUM"):
|
|
346
|
+
counts, unique_values = run_length_encoding(values)
|
|
347
|
+
for i, (count, unique_value) in enumerate(
|
|
348
|
+
zip(counts, unique_values)
|
|
349
|
+
):
|
|
350
|
+
filestream.write(
|
|
351
|
+
f" {count}*{unique_value}"
|
|
352
|
+
if count > 1
|
|
353
|
+
else f" {unique_value}"
|
|
354
|
+
)
|
|
355
|
+
if i % 6 == 5:
|
|
356
|
+
filestream.write("\n")
|
|
357
|
+
else:
|
|
358
|
+
for i, value in enumerate(values):
|
|
359
|
+
filestream.write(f" {value}")
|
|
360
|
+
|
|
361
|
+
if i % 6 == 5: # 6 should ensure < 128 character width total
|
|
362
|
+
filestream.write("\n")
|
|
363
|
+
|
|
364
|
+
filestream.write("\n /\n")
|
|
365
|
+
|
|
366
|
+
def _to_bgrdecl_file(self, filename, fileformat=resfo.Format.UNFORMATTED):
|
|
367
|
+
contents = filter(
|
|
368
|
+
lambda x: x[1] is not None,
|
|
369
|
+
[
|
|
370
|
+
("SPECGRID", self.specgrid.to_bgrdecl()),
|
|
371
|
+
("MAPAXES ", self.mapaxes.to_bgrdecl() if self.mapaxes else None),
|
|
372
|
+
("MAPUNITS", [self.mapunits.to_bgrdecl()] if self.mapunits else None),
|
|
373
|
+
("GRIDUNIT", self.gridunit.to_bgrdecl() if self.gridunit else None),
|
|
374
|
+
("GDORIENT", self.gdorient.to_bgrdecl() if self.gdorient else None),
|
|
375
|
+
("COORD ", self.coord.astype(np.float32)),
|
|
376
|
+
("ZCORN ", self.zcorn.astype(np.float32)),
|
|
377
|
+
(
|
|
378
|
+
"ACTNUM ",
|
|
379
|
+
self.actnum.astype(np.int32) if self.actnum is not None else None,
|
|
380
|
+
),
|
|
381
|
+
],
|
|
382
|
+
)
|
|
383
|
+
resfo.write(
|
|
384
|
+
filename,
|
|
385
|
+
contents,
|
|
386
|
+
)
|
|
387
|
+
|
|
388
|
+
def _check_xtgeo_compatible(self):
|
|
389
|
+
if self.specgrid.coordinate_type == CoordinateType.CYLINDRICAL:
|
|
390
|
+
raise NotImplementedError(
|
|
391
|
+
"Xtgeo does not currently support cylindrical coordinate systems"
|
|
392
|
+
)
|
|
393
|
+
if self.specgrid.numres != 1:
|
|
394
|
+
raise NotImplementedError(
|
|
395
|
+
"Xtgeo does not currently support multiple reservoirs"
|
|
396
|
+
)
|
|
397
|
+
if self.gridunit and self.gridunit.grid_relative == GridRelative.MAP:
|
|
398
|
+
raise NotImplementedError(
|
|
399
|
+
"Xtgeo does not currently support conversion of map relative grid units"
|
|
400
|
+
)
|