resqpy 4.18.7__tar.gz → 4.18.9__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.7 → resqpy-4.18.9}/PKG-INFO +1 -1
  2. {resqpy-4.18.7 → resqpy-4.18.9}/pyproject.toml +1 -1
  3. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/__init__.py +1 -1
  4. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_grid.py +30 -6
  5. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/surface/_surface.py +27 -0
  6. {resqpy-4.18.7 → resqpy-4.18.9}/LICENSE +0 -0
  7. {resqpy-4.18.7 → resqpy-4.18.9}/README.md +0 -0
  8. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/crs.py +0 -0
  9. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/__init__.py +0 -0
  10. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_add_edges_per_column_property_array.py +0 -0
  11. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_add_faults.py +0 -0
  12. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_add_one_blocked_well_property.py +0 -0
  13. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_add_one_grid_property_array.py +0 -0
  14. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_add_single_cell_grid.py +0 -0
  15. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_add_wells_from_ascii_file.py +0 -0
  16. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_add_zone_by_layer_property.py +0 -0
  17. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_coarsened_grid.py +0 -0
  18. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_common.py +0 -0
  19. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_copy_grid.py +0 -0
  20. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_drape_to_surface.py +0 -0
  21. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_extract_box.py +0 -0
  22. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_extract_box_for_well.py +0 -0
  23. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_fault_throw_scaling.py +0 -0
  24. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_gather_ensemble.py +0 -0
  25. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_interpolated_grid.py +0 -0
  26. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_local_depth_adjustment.py +0 -0
  27. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_refined_grid.py +0 -0
  28. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_tilted_grid.py +0 -0
  29. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_unsplit_grid.py +0 -0
  30. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_zonal_grid.py +0 -0
  31. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/derived_model/_zone_layer_ranges_from_array.py +0 -0
  32. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/fault/__init__.py +0 -0
  33. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/fault/_gcs_functions.py +0 -0
  34. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/fault/_grid_connection_set.py +0 -0
  35. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/__init__.py +0 -0
  36. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_cell_properties.py +0 -0
  37. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_connection_sets.py +0 -0
  38. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_create_grid_xml.py +0 -0
  39. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_defined_geometry.py +0 -0
  40. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_extract_functions.py +0 -0
  41. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_face_functions.py +0 -0
  42. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_faults.py +0 -0
  43. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_grid_types.py +0 -0
  44. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_intervals_info.py +0 -0
  45. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_moved_functions.py +0 -0
  46. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_pillars.py +0 -0
  47. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_pixel_maps.py +0 -0
  48. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_points_functions.py +0 -0
  49. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_regular_grid.py +0 -0
  50. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_transmissibility.py +0 -0
  51. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_write_hdf5_from_caches.py +0 -0
  52. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_write_nexus_corp.py +0 -0
  53. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid/_xyz.py +0 -0
  54. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid_surface/__init__.py +0 -0
  55. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid_surface/_blocked_well_populate.py +0 -0
  56. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid_surface/_find_faces.py +0 -0
  57. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid_surface/_grid_skin.py +0 -0
  58. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid_surface/_grid_surface.py +0 -0
  59. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid_surface/_trajectory_intersects.py +0 -0
  60. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/grid_surface/grid_surface_cuda.py +0 -0
  61. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/lines/__init__.py +0 -0
  62. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/lines/_common.py +0 -0
  63. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/lines/_polyline.py +0 -0
  64. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/lines/_polyline_set.py +0 -0
  65. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/model/__init__.py +0 -0
  66. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/model/_catalogue.py +0 -0
  67. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/model/_context.py +0 -0
  68. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/model/_forestry.py +0 -0
  69. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/model/_grids.py +0 -0
  70. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/model/_hdf5.py +0 -0
  71. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/model/_model.py +0 -0
  72. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/model/_xml.py +0 -0
  73. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/multi_processing/__init__.py +0 -0
  74. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/multi_processing/_multiprocessing.py +0 -0
  75. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/multi_processing/wrappers/__init__.py +0 -0
  76. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/multi_processing/wrappers/blocked_well_mp.py +0 -0
  77. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/multi_processing/wrappers/grid_surface_mp.py +0 -0
  78. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/multi_processing/wrappers/mesh_mp.py +0 -0
  79. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/__init__.py +0 -0
  80. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/ab_toolbox.py +0 -0
  81. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/base.py +0 -0
  82. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/box_utilities.py +0 -0
  83. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/class_dict.py +0 -0
  84. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/consolidation.py +0 -0
  85. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/data/build.py +0 -0
  86. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/data/properties.json +0 -0
  87. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/dataframe.py +0 -0
  88. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/exceptions.py +0 -0
  89. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/factors.py +0 -0
  90. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/fine_coarse.py +0 -0
  91. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/grid_functions.py +0 -0
  92. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/intersection.py +0 -0
  93. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/keyword_files.py +0 -0
  94. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/load_data.py +0 -0
  95. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/point_inclusion.py +0 -0
  96. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/random_seed.py +0 -0
  97. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/read_nexus_fault.py +0 -0
  98. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/relperm.py +0 -0
  99. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/simple_lines.py +0 -0
  100. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/time.py +0 -0
  101. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/trademark.py +0 -0
  102. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/transmission.py +0 -0
  103. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/triangulation.py +0 -0
  104. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/uuid.py +0 -0
  105. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/vdb.py +0 -0
  106. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/vector_utilities.py +0 -0
  107. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/volume.py +0 -0
  108. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/wellspec_keywords.py +0 -0
  109. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/write_data.py +0 -0
  110. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/write_hdf5.py +0 -0
  111. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/xml_et.py +0 -0
  112. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/xml_namespaces.py +0 -0
  113. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/olio/zmap_reader.py +0 -0
  114. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/__init__.py +0 -0
  115. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/_utils.py +0 -0
  116. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/boundary_feature.py +0 -0
  117. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/boundary_feature_interpretation.py +0 -0
  118. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/earth_model_interpretation.py +0 -0
  119. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/fault_interpretation.py +0 -0
  120. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/fluid_boundary_feature.py +0 -0
  121. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/frontier_feature.py +0 -0
  122. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/generic_interpretation.py +0 -0
  123. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/genetic_boundary_feature.py +0 -0
  124. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/geobody_boundary_interpretation.py +0 -0
  125. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/geobody_feature.py +0 -0
  126. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/geobody_interpretation.py +0 -0
  127. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/geologic_unit_feature.py +0 -0
  128. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/horizon_interpretation.py +0 -0
  129. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/organization_feature.py +0 -0
  130. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/rock_fluid_unit_feature.py +0 -0
  131. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/structural_organization_interpretation.py +0 -0
  132. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/tectonic_boundary_feature.py +0 -0
  133. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/wellbore_feature.py +0 -0
  134. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/organize/wellbore_interpretation.py +0 -0
  135. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/__init__.py +0 -0
  136. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/_collection_add_part.py +0 -0
  137. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/_collection_create_xml.py +0 -0
  138. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/_collection_get_attributes.py +0 -0
  139. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/_collection_support.py +0 -0
  140. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/_property.py +0 -0
  141. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/attribute_property_set.py +0 -0
  142. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/grid_property_collection.py +0 -0
  143. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/property_collection.py +0 -0
  144. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/property_common.py +0 -0
  145. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/property_kind.py +0 -0
  146. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/string_lookup.py +0 -0
  147. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/well_interval_property.py +0 -0
  148. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/well_interval_property_collection.py +0 -0
  149. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/well_log.py +0 -0
  150. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/property/well_log_collection.py +0 -0
  151. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/rq_import/__init__.py +0 -0
  152. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/rq_import/_add_ab_properties.py +0 -0
  153. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/rq_import/_add_surfaces.py +0 -0
  154. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/rq_import/_grid_from_cp.py +0 -0
  155. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/rq_import/_import_nexus.py +0 -0
  156. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/rq_import/_import_vdb_all_grids.py +0 -0
  157. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/rq_import/_import_vdb_ensemble.py +0 -0
  158. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/strata/__init__.py +0 -0
  159. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/strata/_binary_contact_interpretation.py +0 -0
  160. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/strata/_geologic_unit_interpretation.py +0 -0
  161. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/strata/_strata_common.py +0 -0
  162. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/strata/_stratigraphic_column.py +0 -0
  163. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/strata/_stratigraphic_column_rank.py +0 -0
  164. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/strata/_stratigraphic_unit_feature.py +0 -0
  165. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/strata/_stratigraphic_unit_interpretation.py +0 -0
  166. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/surface/__init__.py +0 -0
  167. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/surface/_base_surface.py +0 -0
  168. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/surface/_combined_surface.py +0 -0
  169. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/surface/_mesh.py +0 -0
  170. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/surface/_pointset.py +0 -0
  171. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/surface/_tri_mesh.py +0 -0
  172. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/surface/_tri_mesh_stencil.py +0 -0
  173. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/surface/_triangulated_patch.py +0 -0
  174. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/time_series/__init__.py +0 -0
  175. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/time_series/_any_time_series.py +0 -0
  176. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/time_series/_from_nexus_summary.py +0 -0
  177. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/time_series/_functions.py +0 -0
  178. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/time_series/_geologic_time_series.py +0 -0
  179. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/time_series/_time_duration.py +0 -0
  180. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/time_series/_time_series.py +0 -0
  181. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/unstructured/__init__.py +0 -0
  182. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/unstructured/_hexa_grid.py +0 -0
  183. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/unstructured/_prism_grid.py +0 -0
  184. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/unstructured/_pyramid_grid.py +0 -0
  185. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/unstructured/_tetra_grid.py +0 -0
  186. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/unstructured/_unstructured_grid.py +0 -0
  187. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/weights_and_measures/__init__.py +0 -0
  188. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/weights_and_measures/nexus_units.py +0 -0
  189. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/weights_and_measures/weights_and_measures.py +0 -0
  190. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/well/__init__.py +0 -0
  191. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/well/_blocked_well.py +0 -0
  192. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/well/_deviation_survey.py +0 -0
  193. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/well/_md_datum.py +0 -0
  194. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/well/_trajectory.py +0 -0
  195. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/well/_wellbore_frame.py +0 -0
  196. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/well/_wellbore_marker.py +0 -0
  197. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/well/_wellbore_marker_frame.py +0 -0
  198. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/well/blocked_well_frame.py +0 -0
  199. {resqpy-4.18.7 → resqpy-4.18.9}/resqpy/well/well_object_funcs.py +0 -0
  200. {resqpy-4.18.7 → resqpy-4.18.9}/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.7
3
+ Version: 4.18.9
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.7" # Set at build time
12
+ version = "4.18.9" # 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.7" # Set at build time
31
+ __version__ = "4.18.9" # Set at build time
32
32
  log = logging.getLogger(__name__)
33
33
  log.info(f"Imported resqpy version {__version__}")
@@ -1498,7 +1498,7 @@ class Grid(BaseResqpy):
1498
1498
  """
1499
1499
  return z_corner_point_depths(self, order = order)
1500
1500
 
1501
- def frontier(self, set_z_zero = True, title = None, add_as_part = True):
1501
+ def frontier(self, set_z_zero = True, title = None, add_as_part = True, mode = 'mean'):
1502
1502
  """Returns a frontier polygon (closed polyline) based on midpoints of edge coordinate lines, with z set to zero.
1503
1503
 
1504
1504
  arguments:
@@ -1507,35 +1507,59 @@ class Grid(BaseResqpy):
1507
1507
  - title (str, optional): the citation title for the polyline; if None, one is generated using the grid title
1508
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
1509
  the model; if False, the create_xml() method is not called fot the polyline
1510
-
1510
+ - mode (str, default 'mean'): one of 'mean', 'top', 'base', 'inner', 'outer' determining how a non-vertical
1511
+ edge coordinate line is converted to a point to include in the frontier
1512
+
1511
1513
  returns:
1512
1514
  - closed Polyline representing the frontier of the grid in plan view
1513
1515
  """
1516
+
1517
+ def get_point(clep, mode, centrum):
1518
+ if mode == 'mean':
1519
+ return np.nanmean(clep, axis = 0)
1520
+ if mode == 'top':
1521
+ return clep[0]
1522
+ if mode == 'base':
1523
+ return clep[-1]
1524
+ assert mode in ['inner', 'outer'], f'unrecognised frontier mode: {mode}'
1525
+ vp = clep - np.expand_dims(centrum, axis = 0)
1526
+ dp = np.sum(vp * vp, axis = -1)
1527
+ if (dp[0] < dp[1] and mode == 'inner') or (dp[0] > dp[1] and mode == 'outer'):
1528
+ return clep[0]
1529
+ return clep[-1]
1530
+
1531
+ assert mode in ['mean', 'top', 'base', 'inner', 'outer']
1514
1532
  coords = self.coordinate_line_end_points()
1533
+ centrum = None
1534
+ if mode in ['inner', 'outer']:
1535
+ centrum = np.nanmean(np.concatenate((coords[0, 0], coords[0, -1], coords[-1, 0], coords[-1, -1]), axis = 0),
1536
+ axis = 0)
1537
+ assert not np.any(
1538
+ np.isnan(centrum)), f'trying to make frontier polygon in mode {mode} when corners of grid not defined'
1515
1539
  nj = self.nj
1516
1540
  ni = self.ni
1517
1541
  frontier = np.zeros((2 * (nj + ni), 3), dtype = float)
1518
1542
  f_i = 0
1519
1543
  for i in range(self.ni):
1520
- c = np.nanmean(coords[0, i], axis = 0)
1544
+ c = get_point(coords[0, i], mode, centrum)
1521
1545
  if np.any(np.isnan(c)):
1522
1546
  continue
1523
1547
  frontier[f_i] = c
1524
1548
  f_i += 1
1525
1549
  for j in range(self.nj):
1526
- c = np.nanmean(coords[j, ni], axis = 0)
1550
+ c = get_point(coords[j, ni], mode, centrum)
1527
1551
  if np.any(np.isnan(c)):
1528
1552
  continue
1529
1553
  frontier[f_i] = c
1530
1554
  f_i += 1
1531
1555
  for i in range(self.ni, 0, -1):
1532
- c = np.nanmean(coords[nj, i], axis = 0)
1556
+ c = get_point(coords[nj, i], mode, centrum)
1533
1557
  if np.any(np.isnan(c)):
1534
1558
  continue
1535
1559
  frontier[f_i] = c
1536
1560
  f_i += 1
1537
1561
  for j in range(self.nj, 0, -1):
1538
- c = np.nanmean(coords[j, 0], axis = 0)
1562
+ c = get_point(coords[j, 0], mode, centrum)
1539
1563
  if np.any(np.isnan(c)):
1540
1564
  continue
1541
1565
  frontier[f_i] = c
@@ -1169,6 +1169,33 @@ class Surface(rqsb.BaseSurface):
1169
1169
 
1170
1170
  return resampled
1171
1171
 
1172
+ def resample_surface_unique_edges(self):
1173
+ """Returns a new surface, with the same model, title and crs as the original surface, but with additional refined points along original surface tears and edges.
1174
+
1175
+ Each edge forming a tear or outer edge in the surface will have 3 additional points added, with 2 additional points on each edge of the original triangle. The output surface is re-triangulated using these new points (tears will be filled)
1176
+
1177
+ returns:
1178
+ resqpy.surface.Surface object with extra_metadata ('unique edges resampled from surface': uuid), where uuid is for the original surface uuid
1179
+ """
1180
+ _, op = self.triangles_and_points()
1181
+ ref = self.resampled_surface() # resample the original surface
1182
+ rt, rp = ref.triangles_and_points()
1183
+ de, dc = ref.distinct_edges_and_counts() # find the distinct edges and counts for the resampled surface
1184
+ de_edge = de[dc == 1] # find edges that only appear once - tears or surface edges
1185
+ edge_tri_index = np.sum(np.isin(rt, de_edge), axis = 1) == 2
1186
+ edge_tris = rp[rt[edge_tri_index]]
1187
+ mid = np.mean(rp[de_edge], axis = 1) # get the midpoint of each surface edge
1188
+ edge_ref_points = np.unique(np.concatenate([op, edge_tris.reshape(-1, 3), mid]), axis = 0) # combine all points
1189
+
1190
+ points = rqs.PointSet(self.model, points_array = edge_ref_points, title = self.title,
1191
+ crs_uuid = self.crs_uuid) # generate a pointset from these points
1192
+
1193
+ output = Surface(self.model, point_set = points,
1194
+ extra_metadata = {'resampled from surface': str(self.uuid)
1195
+ }) # return a surface with generated from these points
1196
+
1197
+ return output
1198
+
1172
1199
  def write_hdf5(self, file_name = None, mode = 'a'):
1173
1200
  """Create or append to an hdf5 file, writing datasets for the triangulated patches after caching arrays.
1174
1201
 
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