resqpy 4.18.5__tar.gz → 4.18.7__tar.gz

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.
Files changed (200) hide show
  1. {resqpy-4.18.5 → resqpy-4.18.7}/PKG-INFO +1 -1
  2. {resqpy-4.18.5 → resqpy-4.18.7}/pyproject.toml +1 -1
  3. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/__init__.py +1 -1
  4. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_extract_functions.py +2 -1
  5. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_grid.py +63 -2
  6. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_grid_types.py +22 -7
  7. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_regular_grid.py +6 -2
  8. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/unstructured/_hexa_grid.py +6 -2
  9. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/unstructured/_prism_grid.py +12 -4
  10. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/unstructured/_pyramid_grid.py +6 -2
  11. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/unstructured/_tetra_grid.py +6 -2
  12. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/unstructured/_unstructured_grid.py +6 -2
  13. {resqpy-4.18.5 → resqpy-4.18.7}/LICENSE +0 -0
  14. {resqpy-4.18.5 → resqpy-4.18.7}/README.md +0 -0
  15. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/crs.py +0 -0
  16. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/__init__.py +0 -0
  17. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_add_edges_per_column_property_array.py +0 -0
  18. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_add_faults.py +0 -0
  19. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_add_one_blocked_well_property.py +0 -0
  20. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_add_one_grid_property_array.py +0 -0
  21. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_add_single_cell_grid.py +0 -0
  22. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_add_wells_from_ascii_file.py +0 -0
  23. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_add_zone_by_layer_property.py +0 -0
  24. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_coarsened_grid.py +0 -0
  25. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_common.py +0 -0
  26. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_copy_grid.py +0 -0
  27. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_drape_to_surface.py +0 -0
  28. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_extract_box.py +0 -0
  29. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_extract_box_for_well.py +0 -0
  30. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_fault_throw_scaling.py +0 -0
  31. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_gather_ensemble.py +0 -0
  32. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_interpolated_grid.py +0 -0
  33. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_local_depth_adjustment.py +0 -0
  34. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_refined_grid.py +0 -0
  35. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_tilted_grid.py +0 -0
  36. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_unsplit_grid.py +0 -0
  37. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_zonal_grid.py +0 -0
  38. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/derived_model/_zone_layer_ranges_from_array.py +0 -0
  39. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/fault/__init__.py +0 -0
  40. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/fault/_gcs_functions.py +0 -0
  41. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/fault/_grid_connection_set.py +0 -0
  42. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/__init__.py +0 -0
  43. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_cell_properties.py +0 -0
  44. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_connection_sets.py +0 -0
  45. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_create_grid_xml.py +0 -0
  46. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_defined_geometry.py +0 -0
  47. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_face_functions.py +0 -0
  48. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_faults.py +0 -0
  49. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_intervals_info.py +0 -0
  50. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_moved_functions.py +0 -0
  51. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_pillars.py +0 -0
  52. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_pixel_maps.py +0 -0
  53. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_points_functions.py +0 -0
  54. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_transmissibility.py +0 -0
  55. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_write_hdf5_from_caches.py +0 -0
  56. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_write_nexus_corp.py +0 -0
  57. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid/_xyz.py +0 -0
  58. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid_surface/__init__.py +0 -0
  59. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid_surface/_blocked_well_populate.py +0 -0
  60. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid_surface/_find_faces.py +0 -0
  61. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid_surface/_grid_skin.py +0 -0
  62. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid_surface/_grid_surface.py +0 -0
  63. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid_surface/_trajectory_intersects.py +0 -0
  64. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/grid_surface/grid_surface_cuda.py +0 -0
  65. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/lines/__init__.py +0 -0
  66. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/lines/_common.py +0 -0
  67. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/lines/_polyline.py +0 -0
  68. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/lines/_polyline_set.py +0 -0
  69. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/model/__init__.py +0 -0
  70. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/model/_catalogue.py +0 -0
  71. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/model/_context.py +0 -0
  72. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/model/_forestry.py +0 -0
  73. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/model/_grids.py +0 -0
  74. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/model/_hdf5.py +0 -0
  75. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/model/_model.py +0 -0
  76. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/model/_xml.py +0 -0
  77. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/multi_processing/__init__.py +0 -0
  78. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/multi_processing/_multiprocessing.py +0 -0
  79. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/multi_processing/wrappers/__init__.py +0 -0
  80. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/multi_processing/wrappers/blocked_well_mp.py +0 -0
  81. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/multi_processing/wrappers/grid_surface_mp.py +0 -0
  82. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/multi_processing/wrappers/mesh_mp.py +0 -0
  83. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/__init__.py +0 -0
  84. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/ab_toolbox.py +0 -0
  85. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/base.py +0 -0
  86. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/box_utilities.py +0 -0
  87. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/class_dict.py +0 -0
  88. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/consolidation.py +0 -0
  89. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/data/build.py +0 -0
  90. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/data/properties.json +0 -0
  91. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/dataframe.py +0 -0
  92. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/exceptions.py +0 -0
  93. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/factors.py +0 -0
  94. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/fine_coarse.py +0 -0
  95. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/grid_functions.py +0 -0
  96. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/intersection.py +0 -0
  97. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/keyword_files.py +0 -0
  98. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/load_data.py +0 -0
  99. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/point_inclusion.py +0 -0
  100. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/random_seed.py +0 -0
  101. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/read_nexus_fault.py +0 -0
  102. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/relperm.py +0 -0
  103. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/simple_lines.py +0 -0
  104. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/time.py +0 -0
  105. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/trademark.py +0 -0
  106. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/transmission.py +0 -0
  107. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/triangulation.py +0 -0
  108. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/uuid.py +0 -0
  109. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/vdb.py +0 -0
  110. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/vector_utilities.py +0 -0
  111. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/volume.py +0 -0
  112. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/wellspec_keywords.py +0 -0
  113. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/write_data.py +0 -0
  114. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/write_hdf5.py +0 -0
  115. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/xml_et.py +0 -0
  116. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/xml_namespaces.py +0 -0
  117. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/olio/zmap_reader.py +0 -0
  118. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/__init__.py +0 -0
  119. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/_utils.py +0 -0
  120. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/boundary_feature.py +0 -0
  121. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/boundary_feature_interpretation.py +0 -0
  122. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/earth_model_interpretation.py +0 -0
  123. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/fault_interpretation.py +0 -0
  124. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/fluid_boundary_feature.py +0 -0
  125. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/frontier_feature.py +0 -0
  126. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/generic_interpretation.py +0 -0
  127. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/genetic_boundary_feature.py +0 -0
  128. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/geobody_boundary_interpretation.py +0 -0
  129. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/geobody_feature.py +0 -0
  130. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/geobody_interpretation.py +0 -0
  131. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/geologic_unit_feature.py +0 -0
  132. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/horizon_interpretation.py +0 -0
  133. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/organization_feature.py +0 -0
  134. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/rock_fluid_unit_feature.py +0 -0
  135. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/structural_organization_interpretation.py +0 -0
  136. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/tectonic_boundary_feature.py +0 -0
  137. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/wellbore_feature.py +0 -0
  138. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/organize/wellbore_interpretation.py +0 -0
  139. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/__init__.py +0 -0
  140. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/_collection_add_part.py +0 -0
  141. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/_collection_create_xml.py +0 -0
  142. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/_collection_get_attributes.py +0 -0
  143. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/_collection_support.py +0 -0
  144. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/_property.py +0 -0
  145. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/attribute_property_set.py +0 -0
  146. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/grid_property_collection.py +0 -0
  147. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/property_collection.py +0 -0
  148. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/property_common.py +0 -0
  149. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/property_kind.py +0 -0
  150. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/string_lookup.py +0 -0
  151. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/well_interval_property.py +0 -0
  152. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/well_interval_property_collection.py +0 -0
  153. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/well_log.py +0 -0
  154. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/property/well_log_collection.py +0 -0
  155. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/rq_import/__init__.py +0 -0
  156. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/rq_import/_add_ab_properties.py +0 -0
  157. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/rq_import/_add_surfaces.py +0 -0
  158. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/rq_import/_grid_from_cp.py +0 -0
  159. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/rq_import/_import_nexus.py +0 -0
  160. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/rq_import/_import_vdb_all_grids.py +0 -0
  161. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/rq_import/_import_vdb_ensemble.py +0 -0
  162. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/strata/__init__.py +0 -0
  163. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/strata/_binary_contact_interpretation.py +0 -0
  164. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/strata/_geologic_unit_interpretation.py +0 -0
  165. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/strata/_strata_common.py +0 -0
  166. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/strata/_stratigraphic_column.py +0 -0
  167. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/strata/_stratigraphic_column_rank.py +0 -0
  168. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/strata/_stratigraphic_unit_feature.py +0 -0
  169. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/strata/_stratigraphic_unit_interpretation.py +0 -0
  170. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/surface/__init__.py +0 -0
  171. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/surface/_base_surface.py +0 -0
  172. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/surface/_combined_surface.py +0 -0
  173. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/surface/_mesh.py +0 -0
  174. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/surface/_pointset.py +0 -0
  175. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/surface/_surface.py +0 -0
  176. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/surface/_tri_mesh.py +0 -0
  177. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/surface/_tri_mesh_stencil.py +0 -0
  178. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/surface/_triangulated_patch.py +0 -0
  179. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/time_series/__init__.py +0 -0
  180. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/time_series/_any_time_series.py +0 -0
  181. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/time_series/_from_nexus_summary.py +0 -0
  182. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/time_series/_functions.py +0 -0
  183. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/time_series/_geologic_time_series.py +0 -0
  184. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/time_series/_time_duration.py +0 -0
  185. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/time_series/_time_series.py +0 -0
  186. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/unstructured/__init__.py +0 -0
  187. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/weights_and_measures/__init__.py +0 -0
  188. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/weights_and_measures/nexus_units.py +0 -0
  189. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/weights_and_measures/weights_and_measures.py +0 -0
  190. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/well/__init__.py +0 -0
  191. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/well/_blocked_well.py +0 -0
  192. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/well/_deviation_survey.py +0 -0
  193. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/well/_md_datum.py +0 -0
  194. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/well/_trajectory.py +0 -0
  195. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/well/_wellbore_frame.py +0 -0
  196. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/well/_wellbore_marker.py +0 -0
  197. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/well/_wellbore_marker_frame.py +0 -0
  198. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/well/blocked_well_frame.py +0 -0
  199. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/well/well_object_funcs.py +0 -0
  200. {resqpy-4.18.5 → resqpy-4.18.7}/resqpy/well/well_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: resqpy
3
- Version: 4.18.5
3
+ Version: 4.18.7
4
4
  Summary: Python API for working with RESQML models
5
5
  Home-page: https://github.com/bp/resqpy
6
6
  License: MIT
@@ -9,7 +9,7 @@ build-backend = "poetry.masonry.api"
9
9
 
10
10
  [tool.poetry]
11
11
  name = "resqpy"
12
- version = "4.18.5" # Set at build time
12
+ version = "4.18.7" # Set at build time
13
13
  description = "Python API for working with RESQML models"
14
14
  authors = ["BP"]
15
15
  license = "MIT"
@@ -28,6 +28,6 @@
28
28
 
29
29
  import logging
30
30
 
31
- __version__ = "4.18.5" # Set at build time
31
+ __version__ = "4.18.7" # Set at build time
32
32
  log = logging.getLogger(__name__)
33
33
  log.info(f"Imported resqpy version {__version__}")
@@ -501,7 +501,7 @@ def extract_inactive_mask(grid, check_pinchout = False):
501
501
  geom_defined = grr_dg.cell_geometry_is_defined_ref(grid)
502
502
  if grid.inactive is None:
503
503
  if geom_defined is None or geom_defined is True:
504
- grid.inactive = np.zeros(tuple(grid.extent_kji)) # ie. all active
504
+ grid.inactive = np.zeros(tuple(grid.extent_kji), dtype = bool) # ie. all active
505
505
  else:
506
506
  grid.inactive = np.logical_not(grr_dg.cell_geometry_is_defined_ref(grid))
507
507
  if check_pinchout:
@@ -524,6 +524,7 @@ def extract_inactive_mask(grid, check_pinchout = False):
524
524
  active_gpc = rprop.selective_version_of_collection(active_gpc,
525
525
  time_index = grid.time_index,
526
526
  time_series_uuid = grid.time_series_uuid)
527
+ active_parts = active_gpc.parts()
527
528
  else:
528
529
  active_parts = []
529
530
  for part in active_gpc.parts():
@@ -15,6 +15,7 @@ import resqpy.grid as grr
15
15
  import resqpy.grid_surface as rqgs
16
16
  import resqpy.fault as rqf
17
17
  import resqpy.property as rqp
18
+ import resqpy.lines as rql
18
19
  import resqpy.olio.grid_functions as gf
19
20
  import resqpy.olio.uuid as bu
20
21
  import resqpy.olio.write_hdf5 as rwh5
@@ -75,7 +76,8 @@ class Grid(BaseResqpy):
75
76
  geometry_required = True,
76
77
  title = None,
77
78
  originator = None,
78
- extra_metadata = {}):
79
+ extra_metadata = {},
80
+ load_inactive = True):
79
81
  """Create a Grid object and optionally populate from xml tree.
80
82
 
81
83
  arguments:
@@ -91,6 +93,8 @@ class Grid(BaseResqpy):
91
93
  ignored if loading from xml
92
94
  extra_metadata (dict, optional): dictionary of extra metadata items to add to the grid;
93
95
  ignored if loading from xml
96
+ load_inactive (bool, default True): if True and uuid is provided, the inactive attribubte is
97
+ populated if a property of kind 'active' is found for the grid
94
98
 
95
99
  returns:
96
100
  a newly created Grid object
@@ -147,6 +151,8 @@ class Grid(BaseResqpy):
147
151
  self.title = 'ROOT'
148
152
 
149
153
  if uuid is not None:
154
+ if load_inactive:
155
+ self.extract_inactive_mask()
150
156
  if geometry_required:
151
157
  assert self.geometry_root is not None, 'grid geometry not present in xml'
152
158
  if find_properties:
@@ -185,7 +191,6 @@ class Grid(BaseResqpy):
185
191
  self.extract_parent()
186
192
  self.extract_children()
187
193
  # self.create_column_pillar_mapping() # mapping now created on demand in other methods
188
- self.extract_inactive_mask()
189
194
  self.extract_stratigraphy()
190
195
  self.get_represented_interpretation()
191
196
 
@@ -1493,6 +1498,62 @@ class Grid(BaseResqpy):
1493
1498
  """
1494
1499
  return z_corner_point_depths(self, order = order)
1495
1500
 
1501
+ def frontier(self, set_z_zero = True, title = None, add_as_part = True):
1502
+ """Returns a frontier polygon (closed polyline) based on midpoints of edge coordinate lines, with z set to zero.
1503
+
1504
+ arguments:
1505
+ - set_z_zero (bool, default True): if True, the z values of the returned polyline are all set to zero; if False,
1506
+ they are left at the midpoint z values from the edge coordinate lines
1507
+ - title (str, optional): the citation title for the polyline; if None, one is generated using the grid title
1508
+ - add_as_part (bool default True): if True, the xml is created for the polyline and it is added as a part to
1509
+ the model; if False, the create_xml() method is not called fot the polyline
1510
+
1511
+ returns:
1512
+ - closed Polyline representing the frontier of the grid in plan view
1513
+ """
1514
+ coords = self.coordinate_line_end_points()
1515
+ nj = self.nj
1516
+ ni = self.ni
1517
+ frontier = np.zeros((2 * (nj + ni), 3), dtype = float)
1518
+ f_i = 0
1519
+ for i in range(self.ni):
1520
+ c = np.nanmean(coords[0, i], axis = 0)
1521
+ if np.any(np.isnan(c)):
1522
+ continue
1523
+ frontier[f_i] = c
1524
+ f_i += 1
1525
+ for j in range(self.nj):
1526
+ c = np.nanmean(coords[j, ni], axis = 0)
1527
+ if np.any(np.isnan(c)):
1528
+ continue
1529
+ frontier[f_i] = c
1530
+ f_i += 1
1531
+ for i in range(self.ni, 0, -1):
1532
+ c = np.nanmean(coords[nj, i], axis = 0)
1533
+ if np.any(np.isnan(c)):
1534
+ continue
1535
+ frontier[f_i] = c
1536
+ f_i += 1
1537
+ for j in range(self.nj, 0, -1):
1538
+ c = np.nanmean(coords[j, 0], axis = 0)
1539
+ if np.any(np.isnan(c)):
1540
+ continue
1541
+ frontier[f_i] = c
1542
+ f_i += 1
1543
+ assert 4 <= f_i <= 2 * (nj + ni), 'failed to define frontier polygon (NaNs in grid geometry?)'
1544
+ if set_z_zero:
1545
+ frontier[:, 2] = 0.0
1546
+ if not title:
1547
+ title = f'frontier of {self.title}'
1548
+ pl = rql.Polyline(self.model,
1549
+ set_coord = frontier[:f_i],
1550
+ set_crs = self.crs_uuid,
1551
+ is_closed = True,
1552
+ title = title)
1553
+ if add_as_part:
1554
+ pl.create_xml()
1555
+ return pl
1556
+
1496
1557
  def corner_points(self, cell_kji0 = None, points_root = None, cache_resqml_array = True, cache_cp_array = False):
1497
1558
  """Returns a numpy array of corner points for a single cell or the whole grid.
1498
1559
 
@@ -51,13 +51,15 @@ def is_regular_grid(grid_root):
51
51
  return grid_flavour(grid_root) == 'IjkBlockGrid'
52
52
 
53
53
 
54
- def any_grid(parent_model, uuid = None, find_properties = True):
54
+ def any_grid(parent_model, uuid = None, find_properties = True, load_inactive = True):
55
55
  """Returns a Grid or RegularGrid or UnstructuredGrid object depending on the extra metadata in the xml.
56
56
 
57
57
  arguments:
58
58
  parent_model (Model): the model within which the grid exists
59
59
  uuid (UUID): the uuid of the grid object to be instantiated
60
60
  find_properties (bool, default True): passed onward to the instantiation method
61
+ load_inactive (bool, default True): if True and uuid is provided, the inactive attribubte is
62
+ populated if a property of kind 'active' is found for the grid
61
63
 
62
64
  note:
63
65
  full list of resqpy grid class objects which could be returned:
@@ -70,17 +72,30 @@ def any_grid(parent_model, uuid = None, find_properties = True):
70
72
  if flavour is None:
71
73
  return None
72
74
  if flavour == 'IjkGrid':
73
- return grr.Grid(parent_model, uuid = uuid, find_properties = find_properties)
75
+ return grr.Grid(parent_model, uuid = uuid, find_properties = find_properties, load_inactive = load_inactive)
74
76
  if flavour == 'IjkBlockGrid':
75
- return grr.RegularGrid(parent_model, extent_kji = None, uuid = uuid, find_properties = find_properties)
77
+ return grr.RegularGrid(parent_model,
78
+ extent_kji = None,
79
+ uuid = uuid,
80
+ find_properties = find_properties,
81
+ load_inactive = load_inactive)
76
82
  if flavour == 'UnstructuredGrid':
77
- return rug.UnstructuredGrid(parent_model, uuid = uuid, find_properties = find_properties)
83
+ return rug.UnstructuredGrid(parent_model,
84
+ uuid = uuid,
85
+ find_properties = find_properties,
86
+ load_inactive = load_inactive)
78
87
  if flavour == 'TetraGrid':
79
- return rug.TetraGrid(parent_model, uuid = uuid, find_properties = find_properties)
88
+ return rug.TetraGrid(parent_model,
89
+ uuid = uuid,
90
+ find_properties = find_properties,
91
+ load_inactive = load_inactive)
80
92
  if flavour == 'HexaGrid':
81
- return rug.HexaGrid(parent_model, uuid = uuid, find_properties = find_properties)
93
+ return rug.HexaGrid(parent_model, uuid = uuid, find_properties = find_properties, load_inactive = load_inactive)
82
94
  if flavour == 'PyramidGrid':
83
95
  return rug.PyramidGrid(parent_model, uuid = uuid, find_properties = find_properties)
84
96
  if flavour == 'PrismGrid':
85
- return rug.PrismGrid(parent_model, uuid = uuid, find_properties = find_properties)
97
+ return rug.PrismGrid(parent_model,
98
+ uuid = uuid,
99
+ find_properties = find_properties,
100
+ load_inactive = load_inactive)
86
101
  return None
@@ -46,7 +46,8 @@ class RegularGrid(grr_g.Grid):
46
46
  find_properties = True,
47
47
  title = None,
48
48
  originator = None,
49
- extra_metadata = {}):
49
+ extra_metadata = {},
50
+ load_inactive = True):
50
51
  """Creates a regular grid object based on dxyz, or derived from a Mesh object.
51
52
 
52
53
  arguments:
@@ -82,6 +83,8 @@ class RegularGrid(grr_g.Grid):
82
83
  ignored if loading from xml
83
84
  extra_metadata (dict, optional): dictionary of extra metadata items to add to the grid;
84
85
  ignored if loading from xml
86
+ load_inactive (bool, default True): if True and uuid is provided, the inactive attribubte is
87
+ populated if a property of kind 'active' is found for the grid
85
88
 
86
89
  returns:
87
90
  a newly created RegularGrid object with inheritance from the Grid class
@@ -184,7 +187,8 @@ class RegularGrid(grr_g.Grid):
184
187
  geometry_required = False,
185
188
  title = title,
186
189
  originator = originator,
187
- extra_metadata = extra_metadata)
190
+ extra_metadata = extra_metadata,
191
+ load_inactive = load_inactive)
188
192
 
189
193
  self.geometry_defined_for_all_cells_cached = True
190
194
  self.geometry_defined_for_all_pillars_cached = True
@@ -23,7 +23,8 @@ class HexaGrid(rug.UnstructuredGrid):
23
23
  cache_geometry = False,
24
24
  title = None,
25
25
  originator = None,
26
- extra_metadata = {}):
26
+ extra_metadata = {},
27
+ load_inactive = True):
27
28
  """Creates a new resqpy HexaGrid object (RESQML UnstructuredGrid with cell shape hexahedral)
28
29
 
29
30
  arguments:
@@ -39,6 +40,8 @@ class HexaGrid(rug.UnstructuredGrid):
39
40
  ignored if uuid is present
40
41
  extra_metadata (dict, optional): dictionary of extra metadata items to add to the grid;
41
42
  ignored if uuid is present
43
+ load_inactive (bool, default True): if True and uuid is provided, the inactive attribubte is
44
+ populated if a property of kind 'active' is found for the grid
42
45
 
43
46
  returns:
44
47
  a newly created HexaGrid object
@@ -52,7 +55,8 @@ class HexaGrid(rug.UnstructuredGrid):
52
55
  cell_shape = 'hexahedral',
53
56
  title = title,
54
57
  originator = originator,
55
- extra_metadata = extra_metadata)
58
+ extra_metadata = extra_metadata,
59
+ load_inactive = load_inactive)
56
60
 
57
61
  if self.root is not None:
58
62
  assert grr.grid_flavour(self.root) == 'HexaGrid'
@@ -34,7 +34,8 @@ class PrismGrid(rug.UnstructuredGrid):
34
34
  cache_geometry = False,
35
35
  title = None,
36
36
  originator = None,
37
- extra_metadata = {}):
37
+ extra_metadata = {},
38
+ load_inactive = True):
38
39
  """Creates a new resqpy PrismGrid object (RESQML UnstructuredGrid with cell shape trisngular prism)
39
40
 
40
41
  arguments:
@@ -50,6 +51,8 @@ class PrismGrid(rug.UnstructuredGrid):
50
51
  ignored if uuid is present
51
52
  extra_metadata (dict, optional): dictionary of extra metadata items to add to the grid;
52
53
  ignored if uuid is present
54
+ load_inactive (bool, default True): if True and uuid is provided, the inactive attribubte is
55
+ populated if a property of kind 'active' is found for the grid
53
56
 
54
57
  returns:
55
58
  a newly created PrismGrid object
@@ -63,7 +66,8 @@ class PrismGrid(rug.UnstructuredGrid):
63
66
  cell_shape = 'prism',
64
67
  title = title,
65
68
  originator = originator,
66
- extra_metadata = extra_metadata)
69
+ extra_metadata = extra_metadata,
70
+ load_inactive = load_inactive)
67
71
 
68
72
  if self.root is not None:
69
73
  assert grr.grid_flavour(self.root) in ['PrismGrid', 'VerticalPrismGrid']
@@ -110,7 +114,8 @@ class VerticalPrismGrid(PrismGrid):
110
114
  cache_geometry = False,
111
115
  title = None,
112
116
  originator = None,
113
- extra_metadata = {}):
117
+ extra_metadata = {},
118
+ load_inactive = True):
114
119
  """Creates a new resqpy VerticalPrismGrid object.
115
120
 
116
121
  arguments:
@@ -126,6 +131,8 @@ class VerticalPrismGrid(PrismGrid):
126
131
  ignored if uuid is present
127
132
  extra_metadata (dict, optional): dictionary of extra metadata items to add to the grid;
128
133
  ignored if uuid is present
134
+ load_inactive (bool, default True): if True and uuid is provided, the inactive attribubte is
135
+ populated if a property of kind 'active' is found for the grid
129
136
 
130
137
  returns:
131
138
  a newly created VerticalPrismGrid object
@@ -139,7 +146,8 @@ class VerticalPrismGrid(PrismGrid):
139
146
  cache_geometry = cache_geometry,
140
147
  title = title,
141
148
  originator = originator,
142
- extra_metadata = extra_metadata)
149
+ extra_metadata = extra_metadata,
150
+ load_inactive = load_inactive)
143
151
 
144
152
  if self.root is not None:
145
153
  assert grr.grid_flavour(self.root) in ['VerticalPrismGrid', 'PrismGrid']
@@ -22,7 +22,8 @@ class PyramidGrid(rug.UnstructuredGrid):
22
22
  cache_geometry = False,
23
23
  title = None,
24
24
  originator = None,
25
- extra_metadata = {}):
25
+ extra_metadata = {},
26
+ load_inactive = True):
26
27
  """Creates a new resqpy PyramidGrid object (RESQML UnstructuredGrid with cell shape pyramidal)
27
28
 
28
29
  arguments:
@@ -38,6 +39,8 @@ class PyramidGrid(rug.UnstructuredGrid):
38
39
  ignored if uuid is present
39
40
  extra_metadata (dict, optional): dictionary of extra metadata items to add to the grid;
40
41
  ignored if uuid is present
42
+ load_inactive (bool, default True): if True and uuid is provided, the inactive attribubte is
43
+ populated if a property of kind 'active' is found for the grid
41
44
 
42
45
  returns:
43
46
  a newly created PyramidGrid object
@@ -51,7 +54,8 @@ class PyramidGrid(rug.UnstructuredGrid):
51
54
  cell_shape = 'pyramidal',
52
55
  title = title,
53
56
  originator = originator,
54
- extra_metadata = extra_metadata)
57
+ extra_metadata = extra_metadata,
58
+ load_inactive = load_inactive)
55
59
 
56
60
  if self.root is not None:
57
61
  assert grr.grid_flavour(self.root) == 'PyramidGrid'
@@ -24,7 +24,8 @@ class TetraGrid(rug.UnstructuredGrid):
24
24
  cache_geometry = False,
25
25
  title = None,
26
26
  originator = None,
27
- extra_metadata = {}):
27
+ extra_metadata = {},
28
+ load_inactive = True):
28
29
  """Creates a new resqpy TetraGrid object (RESQML UnstructuredGrid with cell shape tetrahedral)
29
30
 
30
31
  arguments:
@@ -40,6 +41,8 @@ class TetraGrid(rug.UnstructuredGrid):
40
41
  ignored if uuid is present
41
42
  extra_metadata (dict, optional): dictionary of extra metadata items to add to the grid;
42
43
  ignored if uuid is present
44
+ load_inactive (bool, default True): if True and uuid is provided, the inactive attribubte is
45
+ populated if a property of kind 'active' is found for the grid
43
46
 
44
47
  returns:
45
48
  a newly created TetraGrid object
@@ -53,7 +56,8 @@ class TetraGrid(rug.UnstructuredGrid):
53
56
  cell_shape = 'tetrahedral',
54
57
  title = title,
55
58
  originator = originator,
56
- extra_metadata = extra_metadata)
59
+ extra_metadata = extra_metadata,
60
+ load_inactive = load_inactive)
57
61
 
58
62
  if self.root is not None:
59
63
  assert grr.grid_flavour(self.root) == 'TetraGrid'
@@ -35,7 +35,8 @@ class UnstructuredGrid(BaseResqpy):
35
35
  cell_shape = 'polyhedral',
36
36
  title = None,
37
37
  originator = None,
38
- extra_metadata = {}):
38
+ extra_metadata = {},
39
+ load_inactive = True):
39
40
  """Create an Unstructured Grid object and optionally populate from xml tree.
40
41
 
41
42
  arguments:
@@ -55,6 +56,8 @@ class UnstructuredGrid(BaseResqpy):
55
56
  ignored if uuid is present
56
57
  extra_metadata (dict, optional): dictionary of extra metadata items to add to the grid;
57
58
  ignored if uuid is present
59
+ load_inactive (bool, default True): if True and uuid is provided, the inactive attribubte is
60
+ populated if a property of kind 'active' is found for the grid
58
61
 
59
62
  returns:
60
63
  a newly created Unstructured Grid object
@@ -103,6 +106,8 @@ class UnstructuredGrid(BaseResqpy):
103
106
  self.title = 'ROOT'
104
107
 
105
108
  if uuid is not None:
109
+ if load_inactive:
110
+ self.extract_inactive_mask()
106
111
  if geometry_required:
107
112
  assert self.geometry_root is not None, 'unstructured grid geometry not present in xml'
108
113
  if cache_geometry and self.geometry_root is not None:
@@ -127,7 +132,6 @@ class UnstructuredGrid(BaseResqpy):
127
132
  assert self.node_count > 3
128
133
  self.face_count = rqet.find_tag_int(self.geometry_root, 'FaceCount')
129
134
  assert self.face_count > 3
130
- self.extract_inactive_mask()
131
135
  # note: geometry arrays not loaded until demanded; see cache_all_geometry_arrays()
132
136
 
133
137
  def set_cell_count(self, n: int):
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes