xtgeo 4.14.1__cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of xtgeo might be problematic. Click here for more details.
- cxtgeo.py +558 -0
- cxtgeoPYTHON_wrap.c +19537 -0
- xtgeo/__init__.py +248 -0
- xtgeo/_cxtgeo.cpython-310-x86_64-linux-gnu.so +0 -0
- xtgeo/_internal.cpython-310-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 +132 -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.1.dist-info/METADATA +146 -0
- xtgeo-4.14.1.dist-info/RECORD +658 -0
- xtgeo-4.14.1.dist-info/WHEEL +6 -0
- xtgeo-4.14.1.dist-info/licenses/LICENSE.md +165 -0
- xtgeo.libs/libgomp-e985bcbb.so.1.0.0 +0 -0
|
@@ -0,0 +1,778 @@
|
|
|
1
|
+
import warnings
|
|
2
|
+
from abc import ABC, abstractmethod
|
|
3
|
+
from dataclasses import astuple, dataclass, fields
|
|
4
|
+
from enum import Enum, auto, unique
|
|
5
|
+
from typing import Any, List, Optional, Tuple, Union
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
from scipy.constants import foot
|
|
9
|
+
|
|
10
|
+
from xtgeo.common.log import null_logger
|
|
11
|
+
|
|
12
|
+
from ._grdecl_format import match_keyword
|
|
13
|
+
|
|
14
|
+
logger = null_logger(__name__)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@unique
|
|
18
|
+
class Units(Enum):
|
|
19
|
+
METRES = auto()
|
|
20
|
+
CM = auto()
|
|
21
|
+
FEET = auto()
|
|
22
|
+
|
|
23
|
+
def conversion_factor(self, other):
|
|
24
|
+
"Conversion factor from one unit to another"
|
|
25
|
+
result = 1.0
|
|
26
|
+
if self == other:
|
|
27
|
+
return result
|
|
28
|
+
if other == Units.FEET:
|
|
29
|
+
result *= 1 / foot
|
|
30
|
+
if other == Units.CM:
|
|
31
|
+
result *= 1e2
|
|
32
|
+
if self == Units.FEET:
|
|
33
|
+
result *= foot
|
|
34
|
+
if self == Units.CM:
|
|
35
|
+
result *= 1e-2
|
|
36
|
+
return result
|
|
37
|
+
|
|
38
|
+
def to_grdecl(self):
|
|
39
|
+
return self.name
|
|
40
|
+
|
|
41
|
+
def to_bgrdecl(self):
|
|
42
|
+
return self.to_grdecl().ljust(8)
|
|
43
|
+
|
|
44
|
+
@classmethod
|
|
45
|
+
def from_grdecl(cls, unit_string):
|
|
46
|
+
if match_keyword(unit_string, "METRES"):
|
|
47
|
+
return cls.METRES
|
|
48
|
+
if match_keyword(unit_string, "FEET"):
|
|
49
|
+
return cls.FEET
|
|
50
|
+
if match_keyword(unit_string, "CM"):
|
|
51
|
+
return cls.CM
|
|
52
|
+
raise ValueError(f"Unknown unit string {unit_string}")
|
|
53
|
+
|
|
54
|
+
@classmethod
|
|
55
|
+
def from_bgrdecl(cls, unit_string):
|
|
56
|
+
if isinstance(unit_string, bytes):
|
|
57
|
+
return cls.from_grdecl(unit_string.decode("ascii"))
|
|
58
|
+
return cls.from_grdecl(unit_string)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
@unique
|
|
62
|
+
class GridRelative(Enum):
|
|
63
|
+
"""GridRelative is the second value given GRIDUNIT keyword.
|
|
64
|
+
|
|
65
|
+
MAP means map relative units, while
|
|
66
|
+
leaving it blank means relative to the origin given by the
|
|
67
|
+
MAPAXES keyword.
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
MAP = auto()
|
|
71
|
+
ORIGIN = auto()
|
|
72
|
+
|
|
73
|
+
def to_grdecl(self) -> str:
|
|
74
|
+
return "MAP" if self == GridRelative.MAP else ""
|
|
75
|
+
|
|
76
|
+
def to_bgrdecl(self) -> str:
|
|
77
|
+
return self.to_grdecl().ljust(8)
|
|
78
|
+
|
|
79
|
+
@classmethod
|
|
80
|
+
def from_grdecl(cls, unit_string: str):
|
|
81
|
+
return cls.MAP if match_keyword(unit_string, "MAP") else cls.ORIGIN
|
|
82
|
+
|
|
83
|
+
@classmethod
|
|
84
|
+
def from_bgrdecl(cls, unit_string):
|
|
85
|
+
if isinstance(unit_string, bytes):
|
|
86
|
+
return cls.from_grdecl(unit_string.decode("ascii"))
|
|
87
|
+
return cls.from_grdecl(unit_string)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
@dataclass
|
|
91
|
+
class GrdeclKeyword:
|
|
92
|
+
"""An abstract grdecl keyword.
|
|
93
|
+
|
|
94
|
+
Gives a general implementation of to/from grdecl which recurses on
|
|
95
|
+
fields. Ie. a dataclass such as
|
|
96
|
+
>>> class A(GrdeclKeyword):
|
|
97
|
+
... ...
|
|
98
|
+
>>> class B(GrdeclKeyword):
|
|
99
|
+
... ...
|
|
100
|
+
|
|
101
|
+
>>> @dataclass
|
|
102
|
+
... class MyKeyword(GrdeclKeyword):
|
|
103
|
+
... field1: A
|
|
104
|
+
... field2: B
|
|
105
|
+
|
|
106
|
+
will have a to_grdecl method that will be similar to
|
|
107
|
+
|
|
108
|
+
>>> def to_grdecl(self):
|
|
109
|
+
... return [self.field1.to_grdecl(), self.field2.to_grdecl]
|
|
110
|
+
|
|
111
|
+
Similarly from_grdecl will call fields from_grdecl
|
|
112
|
+
to construct the object
|
|
113
|
+
|
|
114
|
+
>>> @classmethod
|
|
115
|
+
... def from_grdecl(cls, values):
|
|
116
|
+
... return cls(A.from_grdecl(values[0]), B.from_grdecl(values[1]))
|
|
117
|
+
"""
|
|
118
|
+
|
|
119
|
+
def to_grdecl(self) -> List[Any]:
|
|
120
|
+
"""Convert the keyword to list of grdecl keyword values.
|
|
121
|
+
Returns:
|
|
122
|
+
list of values of the given keyword. ie. The
|
|
123
|
+
keyword read from "SPECGRID 1 1 1 F" should return
|
|
124
|
+
[1,1,1,CoordinateType.CYLINDRICAL]
|
|
125
|
+
"""
|
|
126
|
+
return [value.to_grdecl() for value in astuple(self)]
|
|
127
|
+
|
|
128
|
+
def to_bgrdecl(self) -> List[Any]:
|
|
129
|
+
return [value.to_bgrdecl() for value in astuple(self)]
|
|
130
|
+
|
|
131
|
+
@classmethod
|
|
132
|
+
def from_bgrdecl(cls, values):
|
|
133
|
+
object_types = [f.type for f in fields(cls)]
|
|
134
|
+
return cls(*[typ.from_bgrdecl(val) for val, typ in zip(values, object_types)])
|
|
135
|
+
|
|
136
|
+
@classmethod
|
|
137
|
+
def from_grdecl(cls, values):
|
|
138
|
+
"""Convert list of grdecl keyword values to a keyword.
|
|
139
|
+
Args:
|
|
140
|
+
values(list): list of values given after the keyword in
|
|
141
|
+
the grdecl file.
|
|
142
|
+
Returns:
|
|
143
|
+
A GrdeclKeyword constructed from the given values.
|
|
144
|
+
"""
|
|
145
|
+
object_types = [f.type for f in fields(cls)]
|
|
146
|
+
return cls(*[typ.from_grdecl(val) for val, typ in zip(values, object_types)])
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
@unique
|
|
150
|
+
class Order(Enum):
|
|
151
|
+
"""Either increasing or decreasing.
|
|
152
|
+
|
|
153
|
+
Used for the grdecl keywords INC and DEC
|
|
154
|
+
respectively.
|
|
155
|
+
"""
|
|
156
|
+
|
|
157
|
+
INCREASING = auto()
|
|
158
|
+
DECREASING = auto()
|
|
159
|
+
|
|
160
|
+
def to_grdecl(self) -> str:
|
|
161
|
+
return str(self.name)[0:3]
|
|
162
|
+
|
|
163
|
+
def to_bgrdecl(self) -> str:
|
|
164
|
+
return self.to_grdecl().ljust(8)
|
|
165
|
+
|
|
166
|
+
@classmethod
|
|
167
|
+
def from_grdecl(cls, order_string):
|
|
168
|
+
if match_keyword(order_string, "INC"):
|
|
169
|
+
return cls.INCREASING
|
|
170
|
+
if match_keyword(order_string, "DEC"):
|
|
171
|
+
return cls.DECREASING
|
|
172
|
+
return None
|
|
173
|
+
|
|
174
|
+
@classmethod
|
|
175
|
+
def from_bgrdecl(cls, unit_string: Union[bytes, str]):
|
|
176
|
+
if isinstance(unit_string, bytes):
|
|
177
|
+
return cls.from_grdecl(unit_string.decode("ascii"))
|
|
178
|
+
return cls.from_grdecl(unit_string)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
@unique
|
|
182
|
+
class Handedness(Enum):
|
|
183
|
+
"""The handedness of an orientation.
|
|
184
|
+
|
|
185
|
+
Eiter left handed or right handed. Used for the grdecl keywords LEFT and
|
|
186
|
+
RIGHT.
|
|
187
|
+
"""
|
|
188
|
+
|
|
189
|
+
LEFT = auto()
|
|
190
|
+
RIGHT = auto()
|
|
191
|
+
|
|
192
|
+
def to_grdecl(self) -> str:
|
|
193
|
+
return self.name
|
|
194
|
+
|
|
195
|
+
def to_bgrdecl(self) -> str:
|
|
196
|
+
return self.to_grdecl().ljust(8)
|
|
197
|
+
|
|
198
|
+
@classmethod
|
|
199
|
+
def from_grdecl(cls, orientation_string: str):
|
|
200
|
+
if match_keyword(orientation_string, "LEFT"):
|
|
201
|
+
return cls.LEFT
|
|
202
|
+
if match_keyword(orientation_string, "RIGHT"):
|
|
203
|
+
return cls.RIGHT
|
|
204
|
+
raise ValueError(f"Unknown handedness string {orientation_string}")
|
|
205
|
+
|
|
206
|
+
@classmethod
|
|
207
|
+
def from_bgrdecl(cls, unit_string: Union[bytes, str]):
|
|
208
|
+
if isinstance(unit_string, bytes):
|
|
209
|
+
return cls.from_grdecl(unit_string.decode("ascii"))
|
|
210
|
+
return cls.from_grdecl(unit_string)
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
@unique
|
|
214
|
+
class Orientation(Enum):
|
|
215
|
+
"""Either up or down, for the grdecl keywords UP and DOWN."""
|
|
216
|
+
|
|
217
|
+
UP = auto()
|
|
218
|
+
DOWN = auto()
|
|
219
|
+
|
|
220
|
+
def to_grdecl(self) -> str:
|
|
221
|
+
return self.name
|
|
222
|
+
|
|
223
|
+
def to_bgrdecl(self) -> str:
|
|
224
|
+
return self.to_grdecl().ljust(8)
|
|
225
|
+
|
|
226
|
+
@classmethod
|
|
227
|
+
def from_grdecl(cls, orientation_string: str):
|
|
228
|
+
if match_keyword(orientation_string, "UP"):
|
|
229
|
+
return cls.UP
|
|
230
|
+
if match_keyword(orientation_string, "DOWN"):
|
|
231
|
+
return cls.DOWN
|
|
232
|
+
raise ValueError(f"Unknown orientation string {orientation_string}")
|
|
233
|
+
|
|
234
|
+
@classmethod
|
|
235
|
+
def from_bgrdecl(cls, unit_string: Union[bytes, str]):
|
|
236
|
+
if isinstance(unit_string, bytes):
|
|
237
|
+
return cls.from_grdecl(unit_string.decode("ascii"))
|
|
238
|
+
return cls.from_grdecl(unit_string)
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
@dataclass
|
|
242
|
+
class GdOrient(GrdeclKeyword):
|
|
243
|
+
"""The GDORIENT keyword gives the orientation of the grid.
|
|
244
|
+
|
|
245
|
+
The three first values is either increasing or decreasing
|
|
246
|
+
depending on whether the corresponding dimension has increasing
|
|
247
|
+
or decreasing coordinates. Then comes the direction of the z dimension,
|
|
248
|
+
and finally the handedness of the orientation. Defaults to
|
|
249
|
+
"GDORIENT INC INC INC DOWN RIGHT /".
|
|
250
|
+
"""
|
|
251
|
+
|
|
252
|
+
i_order: Order = Order.INCREASING
|
|
253
|
+
j_order: Order = Order.INCREASING
|
|
254
|
+
k_order: Order = Order.INCREASING
|
|
255
|
+
z_direction: Orientation = Orientation.DOWN
|
|
256
|
+
handedness: Handedness = Handedness.RIGHT
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
@dataclass
|
|
260
|
+
class GridUnit(GrdeclKeyword):
|
|
261
|
+
"""Defines the units used for grid dimensions.
|
|
262
|
+
|
|
263
|
+
The first value is a string describing the units used, defaults to METRES,
|
|
264
|
+
known accepted other units are FIELD and LAB. The last value describes
|
|
265
|
+
whether the measurements are relative to the map or to the origin of
|
|
266
|
+
MAPAXES.
|
|
267
|
+
"""
|
|
268
|
+
|
|
269
|
+
unit: Units = Units.METRES
|
|
270
|
+
grid_relative: GridRelative = GridRelative.ORIGIN
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
@dataclass
|
|
274
|
+
class MapAxes(GrdeclKeyword):
|
|
275
|
+
"""The mapaxes keyword gives the local coordinate system of the map.
|
|
276
|
+
|
|
277
|
+
The map coordinate system is given by a point on the y line, the origin and
|
|
278
|
+
a point on the x line. ie. The usual coordinate system is given by "MAPAXES
|
|
279
|
+
0 1 0 0 1 0 /" where the two first values is a point on the y line, the
|
|
280
|
+
middle two values is the origin, and the last two values is a point on the
|
|
281
|
+
x line.
|
|
282
|
+
"""
|
|
283
|
+
|
|
284
|
+
y_line: Tuple[float, float] = (0.0, 1.0)
|
|
285
|
+
origin: Tuple[float, float] = (0.0, 0.0)
|
|
286
|
+
x_line: Tuple[float, float] = (1.0, 0.0)
|
|
287
|
+
|
|
288
|
+
def to_grdecl(self) -> List[float]:
|
|
289
|
+
return list(self.y_line) + list(self.origin) + list(self.x_line)
|
|
290
|
+
|
|
291
|
+
def to_bgrdecl(self) -> List[float]:
|
|
292
|
+
return np.array(self.to_grdecl(), dtype=np.float32)
|
|
293
|
+
|
|
294
|
+
def in_units(self, old_units, new_units):
|
|
295
|
+
factor = old_units.conversion_factor(new_units)
|
|
296
|
+
y_line = (self.y_line[0] * factor, self.y_line[1] * factor)
|
|
297
|
+
x_line = (self.x_line[0] * factor, self.x_line[1] * factor)
|
|
298
|
+
origin = (self.origin[0] * factor, self.origin[1] * factor)
|
|
299
|
+
return MapAxes(y_line, origin, x_line)
|
|
300
|
+
|
|
301
|
+
@classmethod
|
|
302
|
+
def from_bgrdecl(cls, values: List[Union[float, str]]):
|
|
303
|
+
return cls.from_grdecl(values)
|
|
304
|
+
|
|
305
|
+
@classmethod
|
|
306
|
+
def from_grdecl(cls, values: List[Union[float, str]]):
|
|
307
|
+
if len(values) != 6:
|
|
308
|
+
raise ValueError("MAPAXES must contain 6 values")
|
|
309
|
+
return cls(
|
|
310
|
+
(float(values[0]), float(values[1])),
|
|
311
|
+
(float(values[2]), float(values[3])),
|
|
312
|
+
(float(values[4]), float(values[5])),
|
|
313
|
+
)
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
@unique
|
|
317
|
+
class CoordinateType(Enum):
|
|
318
|
+
"""The coordinate system type given in the SPECGRID keyword.
|
|
319
|
+
|
|
320
|
+
This is given by either T or F in the last value of SPECGRID, meaning
|
|
321
|
+
either cylindrical or cartesian coordinates respectively.
|
|
322
|
+
"""
|
|
323
|
+
|
|
324
|
+
CARTESIAN = auto()
|
|
325
|
+
CYLINDRICAL = auto()
|
|
326
|
+
|
|
327
|
+
def to_grdecl(self) -> str:
|
|
328
|
+
return "F" if self == CoordinateType.CARTESIAN else "T"
|
|
329
|
+
|
|
330
|
+
def to_bgrdecl(self) -> int:
|
|
331
|
+
return 0 if self == CoordinateType.CARTESIAN else 1
|
|
332
|
+
|
|
333
|
+
@classmethod
|
|
334
|
+
def from_bgrdecl(cls, coord_value: int):
|
|
335
|
+
return cls.CARTESIAN if coord_value == 0 else cls.CYLINDRICAL
|
|
336
|
+
|
|
337
|
+
@classmethod
|
|
338
|
+
def from_grdecl(cls, coord_string: str):
|
|
339
|
+
if match_keyword(coord_string, "F"):
|
|
340
|
+
return cls.CARTESIAN
|
|
341
|
+
if match_keyword(coord_string, "T"):
|
|
342
|
+
return cls.CYLINDRICAL
|
|
343
|
+
raise ValueError(f"Unknown coordinate type {coord_string}")
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
def transform_xtgeo_coord_by_mapaxes(mapaxes: MapAxes, coord: np.ndarray):
|
|
347
|
+
"""Transforms xtgeo coord values by mapaxes.
|
|
348
|
+
|
|
349
|
+
The mapaxes keyword in a grdecl file defines a new coordinate system by
|
|
350
|
+
which x and y values are to be interpreted. The given xtgeo coord
|
|
351
|
+
values are transformed from the local coordinate system defined by
|
|
352
|
+
mapaxes to global coordinates.
|
|
353
|
+
"""
|
|
354
|
+
x_point = mapaxes.x_line
|
|
355
|
+
y_point = mapaxes.y_line
|
|
356
|
+
origin = mapaxes.origin
|
|
357
|
+
|
|
358
|
+
x_axis = np.array(x_point) - origin
|
|
359
|
+
y_axis = np.array(y_point) - origin
|
|
360
|
+
|
|
361
|
+
x_unit = x_axis / np.linalg.norm(x_axis)
|
|
362
|
+
y_unit = y_axis / np.linalg.norm(y_axis)
|
|
363
|
+
|
|
364
|
+
coord[:, :, (0, 1)] = (
|
|
365
|
+
origin
|
|
366
|
+
+ coord[:, :, 0, np.newaxis] * x_unit
|
|
367
|
+
+ coord[:, :, 1, np.newaxis] * y_unit
|
|
368
|
+
)
|
|
369
|
+
coord[:, :, (3, 4)] = (
|
|
370
|
+
origin
|
|
371
|
+
+ coord[:, :, 3, np.newaxis] * x_unit
|
|
372
|
+
+ coord[:, :, 4, np.newaxis] * y_unit
|
|
373
|
+
)
|
|
374
|
+
|
|
375
|
+
return coord
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
def inverse_transform_xtgeo_coord_by_mapaxes(mapaxes: MapAxes, coord: np.ndarray):
|
|
379
|
+
"""Inversely transforms xtgeo coord values by mapaxes.
|
|
380
|
+
|
|
381
|
+
The inverse operation of transform_xtgeo_coord_by_mapaxes.
|
|
382
|
+
"""
|
|
383
|
+
x_point = mapaxes.x_line
|
|
384
|
+
y_point = mapaxes.y_line
|
|
385
|
+
origin = mapaxes.origin
|
|
386
|
+
|
|
387
|
+
x_axis = np.array(x_point) - origin
|
|
388
|
+
y_axis = np.array(y_point) - origin
|
|
389
|
+
|
|
390
|
+
x_unit = x_axis / np.linalg.norm(x_axis)
|
|
391
|
+
y_unit = y_axis / np.linalg.norm(y_axis)
|
|
392
|
+
|
|
393
|
+
coord[:, :, (0, 1)] -= np.array(origin)
|
|
394
|
+
coord[:, :, (3, 4)] -= np.array(origin)
|
|
395
|
+
|
|
396
|
+
inv_transform = np.linalg.inv(np.transpose([x_unit, y_unit]))
|
|
397
|
+
|
|
398
|
+
# The following index manipulation is
|
|
399
|
+
# an optimized version of
|
|
400
|
+
|
|
401
|
+
# nx, ny, _ = coord.shape
|
|
402
|
+
# for i in range(nx):
|
|
403
|
+
# for j in range(ny):
|
|
404
|
+
# coord[i, j, (0, 1)] = inv_transform @ coord[i, j, (0, 1)]
|
|
405
|
+
# coord[i, j, (3, 4)] = inv_transform @ coord[i, j, (3, 4)]
|
|
406
|
+
coord[:, :, (0, 1)] = (
|
|
407
|
+
inv_transform[np.newaxis, np.newaxis, :, :] @ coord[:, :, (0, 1), np.newaxis]
|
|
408
|
+
)[:, :, :, 0]
|
|
409
|
+
coord[:, :, (3, 4)] = (
|
|
410
|
+
inv_transform[np.newaxis, np.newaxis, :, :] @ coord[:, :, (3, 4), np.newaxis]
|
|
411
|
+
)[:, :, :, 0]
|
|
412
|
+
return coord
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
class EclGrid(ABC):
|
|
416
|
+
"""
|
|
417
|
+
The main keywords that describe a grdecl grid is COORD, ZCORN and ACTNUM.
|
|
418
|
+
|
|
419
|
+
The grid is made up of nx*ny*nz cells in three corresponding dimensions.
|
|
420
|
+
The number of cells in each direction is described in the SPECGRID keyword.
|
|
421
|
+
|
|
422
|
+
The values in COORD, ZCORN and ACTNUM are stored flattened in F-order and
|
|
423
|
+
have dimensions (nx+1,ny+1,6), (nx,2,ny,2,nz,2), and (nx,ny,nz) respectively.
|
|
424
|
+
|
|
425
|
+
COORD and ZCORN descibe a corner point geometry for the grid. There is a
|
|
426
|
+
straight line from the bottom to the top of the grid on which the corners
|
|
427
|
+
of each grid lie. COORD describe the top and bottom (x,y,z) values of these
|
|
428
|
+
corner lines, hence, it contains six floats for each corner line.
|
|
429
|
+
|
|
430
|
+
ZCORN has 8 values for each grid, which describes the z-value (height) at
|
|
431
|
+
which that cells corners intersect with the corresponding corner line. The
|
|
432
|
+
order of corners is "left" before "right" in the second dimension of
|
|
433
|
+
ZCORN, "near" before "far" in the fourth dimension , and "upper" before
|
|
434
|
+
"bottom" in the last dimension. Note that this orientation assumes,
|
|
435
|
+
increasing first dimension as to the "right", increasing second dimension
|
|
436
|
+
towards "far", and increasing third dimension as towards "bottom".
|
|
437
|
+
|
|
438
|
+
The topology is such that, assuming no gaps between cells, the (i,j,k)th
|
|
439
|
+
cell and the (i+1,j+1,k+1)th cell share the upper near left corner of the
|
|
440
|
+
(i+1,j+1,k+1)th cell which is the lower far right corner of the (i,j,k)th
|
|
441
|
+
cell.
|
|
442
|
+
|
|
443
|
+
ACTNUM describes the active status of each cell. For simulations without
|
|
444
|
+
dual porosity or thermal, 0 means inactive, 1 means active and other values
|
|
445
|
+
are not used. For dual porosity, 0 means inactive, 1 means matrix only,
|
|
446
|
+
2 means fracture only, and 3 means both fracture and matrix. For thermal
|
|
447
|
+
simulations, 0 means inactive, 1 means active, 2 means rock volume only,
|
|
448
|
+
3 means pore volume only.
|
|
449
|
+
"""
|
|
450
|
+
|
|
451
|
+
@property
|
|
452
|
+
@abstractmethod
|
|
453
|
+
def coord(self) -> np.ndarray:
|
|
454
|
+
pass
|
|
455
|
+
|
|
456
|
+
@property
|
|
457
|
+
@abstractmethod
|
|
458
|
+
def zcorn(self) -> np.ndarray:
|
|
459
|
+
pass
|
|
460
|
+
|
|
461
|
+
@property
|
|
462
|
+
@abstractmethod
|
|
463
|
+
def actnum(self) -> Optional[np.ndarray]:
|
|
464
|
+
pass
|
|
465
|
+
|
|
466
|
+
def __eq__(self, other) -> bool:
|
|
467
|
+
if not isinstance(other, EclGrid):
|
|
468
|
+
return False
|
|
469
|
+
return (
|
|
470
|
+
(
|
|
471
|
+
(self.actnum is None and other.actnum is None)
|
|
472
|
+
or np.array_equal(self.actnum, other.actnum)
|
|
473
|
+
)
|
|
474
|
+
and np.array_equal(self.coord, other.coord)
|
|
475
|
+
and np.array_equal(self.zcorn, other.zcorn)
|
|
476
|
+
)
|
|
477
|
+
|
|
478
|
+
@property
|
|
479
|
+
@abstractmethod
|
|
480
|
+
def is_map_relative(self) -> bool:
|
|
481
|
+
pass
|
|
482
|
+
|
|
483
|
+
@property
|
|
484
|
+
@abstractmethod
|
|
485
|
+
def mapaxes(self) -> Optional[MapAxes]:
|
|
486
|
+
pass
|
|
487
|
+
|
|
488
|
+
@property
|
|
489
|
+
@abstractmethod
|
|
490
|
+
def dimensions(self) -> Tuple[int, int, int]:
|
|
491
|
+
pass
|
|
492
|
+
|
|
493
|
+
@property
|
|
494
|
+
@abstractmethod
|
|
495
|
+
def map_axis_units(self) -> Units:
|
|
496
|
+
pass
|
|
497
|
+
|
|
498
|
+
@property
|
|
499
|
+
@abstractmethod
|
|
500
|
+
def grid_units(self) -> Units:
|
|
501
|
+
pass
|
|
502
|
+
|
|
503
|
+
@abstractmethod
|
|
504
|
+
def _check_xtgeo_compatible(self):
|
|
505
|
+
pass
|
|
506
|
+
|
|
507
|
+
def convert_grid_units(self, units):
|
|
508
|
+
"""Converts the units of the grid
|
|
509
|
+
Args:
|
|
510
|
+
units: The unit to convert to.
|
|
511
|
+
|
|
512
|
+
After convert_grid_units is called, `EclGrid.grid_units == units`.
|
|
513
|
+
|
|
514
|
+
"""
|
|
515
|
+
old_grid_units = self.grid_units
|
|
516
|
+
factor = old_grid_units.conversion_factor(units)
|
|
517
|
+
self.coord *= factor
|
|
518
|
+
self.zcorn *= factor
|
|
519
|
+
self.grid_units = units
|
|
520
|
+
|
|
521
|
+
@staticmethod
|
|
522
|
+
def valid_mapaxes(mapaxes: MapAxes) -> bool:
|
|
523
|
+
y_line = mapaxes.y_line
|
|
524
|
+
x_line = mapaxes.x_line
|
|
525
|
+
origin = mapaxes.origin
|
|
526
|
+
x_axis = np.array(x_line) - origin
|
|
527
|
+
y_axis = np.array(y_line) - origin
|
|
528
|
+
|
|
529
|
+
return np.linalg.norm(x_axis) > 1e-5 and np.linalg.norm(y_axis) > 1e-5
|
|
530
|
+
|
|
531
|
+
def _relative_to_transform(self, xtgeo_coord, relative_to=GridRelative.MAP):
|
|
532
|
+
"""Handle relative transform of xtgeo_coord()."""
|
|
533
|
+
mapaxes = self.mapaxes
|
|
534
|
+
has_mapaxes = True
|
|
535
|
+
if self.mapaxes is None:
|
|
536
|
+
mapaxes = MapAxes()
|
|
537
|
+
has_mapaxes = False
|
|
538
|
+
axis_units = self.map_axis_units
|
|
539
|
+
|
|
540
|
+
has_axis_units = True
|
|
541
|
+
if axis_units is None:
|
|
542
|
+
axis_units = self.grid_units
|
|
543
|
+
has_axis_units = False
|
|
544
|
+
|
|
545
|
+
if has_mapaxes and not has_axis_units:
|
|
546
|
+
logger.info(
|
|
547
|
+
"Axis units specification is missing in input, assuming that no "
|
|
548
|
+
"unit conversion is necessary."
|
|
549
|
+
)
|
|
550
|
+
|
|
551
|
+
if relative_to == GridRelative.MAP and not self.is_map_relative:
|
|
552
|
+
xtgeo_coord *= self.grid_units.conversion_factor(axis_units)
|
|
553
|
+
xtgeo_coord = transform_xtgeo_coord_by_mapaxes(mapaxes, xtgeo_coord)
|
|
554
|
+
|
|
555
|
+
elif relative_to == GridRelative.ORIGIN and self.is_map_relative:
|
|
556
|
+
mapaxes = mapaxes.in_units(axis_units, self.grid_units)
|
|
557
|
+
xtgeo_coord = inverse_transform_xtgeo_coord_by_mapaxes(mapaxes, xtgeo_coord)
|
|
558
|
+
|
|
559
|
+
return xtgeo_coord
|
|
560
|
+
|
|
561
|
+
def xtgeo_coord(self, relative_to=GridRelative.MAP):
|
|
562
|
+
"""
|
|
563
|
+
Args:
|
|
564
|
+
relative_to: Specifies the axis system the coords should be
|
|
565
|
+
relative to, either map or grid. Defaults to map. If relative_to is
|
|
566
|
+
GridRelative.MAP then the resulting units are that of map_axis_units.
|
|
567
|
+
Returns:
|
|
568
|
+
coord in xtgeo format.
|
|
569
|
+
"""
|
|
570
|
+
self._check_xtgeo_compatible()
|
|
571
|
+
nx, ny, _ = self.dimensions
|
|
572
|
+
|
|
573
|
+
xtgeo_coord = (
|
|
574
|
+
np.swapaxes(self.coord.reshape((ny + 1, nx + 1, 6)), 0, 1)
|
|
575
|
+
.astype(np.float64)
|
|
576
|
+
.copy()
|
|
577
|
+
)
|
|
578
|
+
xtgeo_coord = self._relative_to_transform(xtgeo_coord, relative_to)
|
|
579
|
+
return np.ascontiguousarray(xtgeo_coord)
|
|
580
|
+
|
|
581
|
+
def xtgeo_actnum(self):
|
|
582
|
+
"""
|
|
583
|
+
Returns:
|
|
584
|
+
actnum in xtgeo format.
|
|
585
|
+
"""
|
|
586
|
+
self._check_xtgeo_compatible()
|
|
587
|
+
nx, ny, nz = self.dimensions
|
|
588
|
+
if self.actnum is None:
|
|
589
|
+
return np.ones(shape=(nx, ny, nz), dtype=np.int32)
|
|
590
|
+
activity_number = self.actnum.reshape((nx, ny, nz), order="F")
|
|
591
|
+
return np.ascontiguousarray(activity_number)
|
|
592
|
+
|
|
593
|
+
def xtgeo_zcorn(self, relative_to=GridRelative.MAP):
|
|
594
|
+
"""
|
|
595
|
+
relative_to: Specifies the axis system the zcorn should be
|
|
596
|
+
relative to, either map or origin. Defaults to map. For zcorn
|
|
597
|
+
this only affects which units zcorn will be in, grid units for
|
|
598
|
+
relative to origin, map units for relative to map.
|
|
599
|
+
Returns:
|
|
600
|
+
zcorn in xtgeo format.
|
|
601
|
+
"""
|
|
602
|
+
self._check_xtgeo_compatible()
|
|
603
|
+
nx, ny, nz = self.dimensions
|
|
604
|
+
zcorn = self.zcorn.reshape((2, nx, 2, ny, 2, nz), order="F")
|
|
605
|
+
|
|
606
|
+
if not np.allclose(
|
|
607
|
+
zcorn[:, :, :, :, 1, : nz - 1], zcorn[:, :, :, :, 0, 1:], atol=1e-2
|
|
608
|
+
):
|
|
609
|
+
warnings.warn(
|
|
610
|
+
"An Eclipse style grid with vertical ZCORN splits "
|
|
611
|
+
"or overlaps between vertical neighbouring cells is detected. XTGeo "
|
|
612
|
+
"will import the grid as if the cell layers are connected, "
|
|
613
|
+
"hence check result carefully. "
|
|
614
|
+
"(Note also that this check both active and inactive cells!)",
|
|
615
|
+
UserWarning,
|
|
616
|
+
)
|
|
617
|
+
|
|
618
|
+
result = np.zeros((nx + 1, ny + 1, nz + 1, 4), dtype=np.float32)
|
|
619
|
+
|
|
620
|
+
# xtgeo uses 4 z values per i,j,k to mean the 4 z values of
|
|
621
|
+
# adjacent cells for the cornerline at position i,j,k assuming
|
|
622
|
+
# no difference in z values between upper and lower cells. In
|
|
623
|
+
# the order sw,se,nw,ne.
|
|
624
|
+
|
|
625
|
+
# In grdecl, there are 8 zvalues per i,j,k meaning the z values
|
|
626
|
+
# of each corner for the cell at i,j,k. In
|
|
627
|
+
# the order "left" (west) before "right" (east) , "near" (south)
|
|
628
|
+
# before "far" (north) , "upper" before "bottom"
|
|
629
|
+
|
|
630
|
+
# set the nw value of cornerline i+1,j to
|
|
631
|
+
# the near right corner of cell i,j
|
|
632
|
+
result[1:, :ny, 0:nz, 2] = zcorn[1, :, 0, :, 0, :]
|
|
633
|
+
result[1:, :ny, nz, 2] = zcorn[1, :, 0, :, 1, nz - 1]
|
|
634
|
+
|
|
635
|
+
# set the ne value of cornerline i,j to
|
|
636
|
+
# the near left corner of cell i,j
|
|
637
|
+
result[:nx, :ny, 0:nz, 3] = zcorn[0, :, 0, :, 0, :]
|
|
638
|
+
result[:nx, :ny, nz, 3] = zcorn[0, :, 0, :, 1, nz - 1]
|
|
639
|
+
|
|
640
|
+
# set the sw value of cornerline i+1,j+1 to
|
|
641
|
+
# the far right corner of cell i,j to
|
|
642
|
+
result[1:, 1:, 0:nz, 0] = zcorn[1, :, 1, :, 0, :]
|
|
643
|
+
result[1:, 1:, nz, 0] = zcorn[1, :, 1, :, 1, nz - 1]
|
|
644
|
+
|
|
645
|
+
# set the se value of cornerline i,j+1 to
|
|
646
|
+
# the far left corner of cell i,j
|
|
647
|
+
result[:nx, 1:, 0:nz, 1] = zcorn[0, :, 1, :, 0, :]
|
|
648
|
+
result[:nx, 1:, nz, 1] = zcorn[0, :, 1, :, 1, nz - 1]
|
|
649
|
+
|
|
650
|
+
self.duplicate_insignificant_xtgeo_zcorn(result)
|
|
651
|
+
|
|
652
|
+
axis_units = self.map_axis_units
|
|
653
|
+
if axis_units is None:
|
|
654
|
+
axis_units = self.grid_units
|
|
655
|
+
if relative_to == GridRelative.MAP and not self.is_map_relative:
|
|
656
|
+
result *= self.grid_units.conversion_factor(self.map_axis_units)
|
|
657
|
+
|
|
658
|
+
return np.ascontiguousarray(result)
|
|
659
|
+
|
|
660
|
+
def duplicate_insignificant_xtgeo_zcorn(self, zcorn: np.ndarray):
|
|
661
|
+
"""Duplicates values on the faces and corners of the grid.
|
|
662
|
+
|
|
663
|
+
The xtgeo format has 4 z values for all cornerlines, refering
|
|
664
|
+
to the z value for the corresponding corner of the cell that is
|
|
665
|
+
sw, se, nw and ne of the cornerline. However, for the cornerlines
|
|
666
|
+
that are on the boundary of the grid, there might be no such cell, ie.
|
|
667
|
+
north of the northernmost cornerlines there are no cells. These are
|
|
668
|
+
then duplicated of corresponding cells in the opposite direction.
|
|
669
|
+
|
|
670
|
+
"""
|
|
671
|
+
nx, ny, nz = self.dimensions
|
|
672
|
+
|
|
673
|
+
# south of the sw->se face is duplicate
|
|
674
|
+
# of the north values
|
|
675
|
+
zcorn[1:nx, 0, :, 0] = zcorn[1:nx, 0, :, 2]
|
|
676
|
+
zcorn[1:nx, 0, :, 1] = zcorn[1:nx, 0, :, 3]
|
|
677
|
+
|
|
678
|
+
# vertical sw corner line is duplicates of
|
|
679
|
+
# the ne value
|
|
680
|
+
zcorn[0, 0, :, 0] = zcorn[0, 0, :, 3]
|
|
681
|
+
zcorn[0, 0, :, 1] = zcorn[0, 0, :, 3]
|
|
682
|
+
zcorn[0, 0, :, 2] = zcorn[0, 0, :, 3]
|
|
683
|
+
|
|
684
|
+
# east values of the se->ne face
|
|
685
|
+
# is duplicates of the corresponding
|
|
686
|
+
# west values
|
|
687
|
+
zcorn[nx, 1:ny, :, 1] = zcorn[nx, 1:ny, :, 0]
|
|
688
|
+
zcorn[nx, 1:ny, :, 3] = zcorn[nx, 1:ny, :, 2]
|
|
689
|
+
|
|
690
|
+
# vertical se corner line is all duplicates
|
|
691
|
+
# of its nw value
|
|
692
|
+
zcorn[nx, 0, :, 0] = zcorn[nx, 0, :, 2]
|
|
693
|
+
zcorn[nx, 0, :, 1] = zcorn[nx, 0, :, 2]
|
|
694
|
+
zcorn[nx, 0, :, 3] = zcorn[nx, 0, :, 2]
|
|
695
|
+
|
|
696
|
+
# north values of the nw->ne face is duplicates
|
|
697
|
+
# of the corresponding south values
|
|
698
|
+
zcorn[1:nx, ny, :, 2] = zcorn[1:nx, ny, :, 0]
|
|
699
|
+
zcorn[1:nx, ny, :, 3] = zcorn[1:nx, ny, :, 1]
|
|
700
|
+
|
|
701
|
+
# vertical nw corner line is all duplicates
|
|
702
|
+
# of the se value
|
|
703
|
+
zcorn[0, ny, :, 0] = zcorn[0, ny, :, 1]
|
|
704
|
+
zcorn[0, ny, :, 2] = zcorn[0, ny, :, 1]
|
|
705
|
+
zcorn[0, ny, :, 3] = zcorn[0, ny, :, 1]
|
|
706
|
+
|
|
707
|
+
# west values of the sw->nw face is duplicates
|
|
708
|
+
# of corresponding east values
|
|
709
|
+
zcorn[0, 1:ny, :, 0] = zcorn[0, 1:ny, :, 1]
|
|
710
|
+
zcorn[0, 1:ny, :, 2] = zcorn[0, 1:ny, :, 3]
|
|
711
|
+
|
|
712
|
+
# vertical ne corner line is all duplicates
|
|
713
|
+
# of the sw value
|
|
714
|
+
zcorn[nx, ny, :, 1] = zcorn[nx, ny, :, 0]
|
|
715
|
+
zcorn[nx, ny, :, 2] = zcorn[nx, ny, :, 0]
|
|
716
|
+
zcorn[nx, ny, :, 3] = zcorn[nx, ny, :, 0]
|
|
717
|
+
|
|
718
|
+
@classmethod
|
|
719
|
+
@abstractmethod
|
|
720
|
+
def default_settings_grid(
|
|
721
|
+
cls,
|
|
722
|
+
coord: np.ndarray,
|
|
723
|
+
zcorn: np.ndarray,
|
|
724
|
+
actnum: Optional[np.ndarray],
|
|
725
|
+
size: Tuple[int, int, int],
|
|
726
|
+
):
|
|
727
|
+
pass
|
|
728
|
+
|
|
729
|
+
@classmethod
|
|
730
|
+
def from_xtgeo_grid(cls, xtgeo_grid):
|
|
731
|
+
xtgeo_grid._set_xtgformat2()
|
|
732
|
+
|
|
733
|
+
nx, ny, nz = xtgeo_grid.dimensions
|
|
734
|
+
actnum = xtgeo_grid._actnumsv.reshape(nx, ny, nz)
|
|
735
|
+
actnum = actnum.ravel(order="F")
|
|
736
|
+
if np.all(actnum == 1):
|
|
737
|
+
actnum = None
|
|
738
|
+
coord = np.ascontiguousarray(np.swapaxes(xtgeo_grid._coordsv, 0, 1).ravel())
|
|
739
|
+
zcorn = np.zeros((2, nx, 2, ny, 2, nz))
|
|
740
|
+
xtgeo_zcorn = xtgeo_grid._zcornsv.reshape((nx + 1, ny + 1, nz + 1, 4))
|
|
741
|
+
|
|
742
|
+
# This is the reverse operation of that of xtgeo_zcorn,
|
|
743
|
+
# see that function for description of operations.
|
|
744
|
+
|
|
745
|
+
# set the nw value of cornerline i+1,j to
|
|
746
|
+
# the near right corner of cell i,j
|
|
747
|
+
zcorn[1, :, 0, :, 1, :] = xtgeo_zcorn[1:, :ny, 1:, 2]
|
|
748
|
+
zcorn[1, :, 0, :, 0, :] = xtgeo_zcorn[1:, :ny, :nz, 2]
|
|
749
|
+
|
|
750
|
+
# set the ne value of cornerline i,j to
|
|
751
|
+
# the near left corner of cell i,j
|
|
752
|
+
zcorn[0, :, 0, :, 1, :] = xtgeo_zcorn[:nx, :ny, 1:, 3]
|
|
753
|
+
zcorn[0, :, 0, :, 0, :] = xtgeo_zcorn[:nx, :ny, :nz, 3]
|
|
754
|
+
|
|
755
|
+
# set the sw value of cornerline i+1,j+1 to
|
|
756
|
+
# the far right corner of cell i,j to
|
|
757
|
+
zcorn[1, :, 1, :, 1, :] = xtgeo_zcorn[1:, 1:, 1:, 0]
|
|
758
|
+
zcorn[1, :, 1, :, 0, :] = xtgeo_zcorn[1:, 1:, :nz, 0]
|
|
759
|
+
|
|
760
|
+
# set the se value of cornerline i,j+1 to
|
|
761
|
+
# the far left corner of cell i,j
|
|
762
|
+
zcorn[0, :, 1, :, 1, :] = xtgeo_zcorn[:nx, 1:, 1:, 1]
|
|
763
|
+
zcorn[0, :, 1, :, 0, :] = xtgeo_zcorn[:nx, 1:, :nz, 1]
|
|
764
|
+
|
|
765
|
+
zcorn = zcorn.ravel(order="F")
|
|
766
|
+
|
|
767
|
+
result = cls.default_settings_grid(
|
|
768
|
+
coord=coord,
|
|
769
|
+
zcorn=zcorn,
|
|
770
|
+
actnum=actnum,
|
|
771
|
+
size=(nx, ny, nz),
|
|
772
|
+
)
|
|
773
|
+
|
|
774
|
+
if xtgeo_grid.units is not None:
|
|
775
|
+
result.grid_units = xtgeo_grid.units
|
|
776
|
+
result.map_axis_units = xtgeo_grid.units
|
|
777
|
+
|
|
778
|
+
return result
|