resqpy 4.15.3__tar.gz → 4.16.1__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.15.3 → resqpy-4.16.1}/PKG-INFO +1 -1
  2. {resqpy-4.15.3 → resqpy-4.16.1}/pyproject.toml +1 -1
  3. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/__init__.py +1 -1
  4. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/fault/_gcs_functions.py +6 -6
  5. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/fault/_grid_connection_set.py +29 -38
  6. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_grid.py +3 -3
  7. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/_collection_create_xml.py +1 -1
  8. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/property_common.py +3 -8
  9. {resqpy-4.15.3 → resqpy-4.16.1}/LICENSE +0 -0
  10. {resqpy-4.15.3 → resqpy-4.16.1}/README.md +0 -0
  11. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/crs.py +0 -0
  12. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/__init__.py +0 -0
  13. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_add_edges_per_column_property_array.py +0 -0
  14. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_add_faults.py +0 -0
  15. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_add_one_blocked_well_property.py +0 -0
  16. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_add_one_grid_property_array.py +0 -0
  17. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_add_single_cell_grid.py +0 -0
  18. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_add_wells_from_ascii_file.py +0 -0
  19. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_add_zone_by_layer_property.py +0 -0
  20. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_coarsened_grid.py +0 -0
  21. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_common.py +0 -0
  22. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_copy_grid.py +0 -0
  23. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_drape_to_surface.py +0 -0
  24. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_extract_box.py +0 -0
  25. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_extract_box_for_well.py +0 -0
  26. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_fault_throw_scaling.py +0 -0
  27. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_gather_ensemble.py +0 -0
  28. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_interpolated_grid.py +0 -0
  29. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_local_depth_adjustment.py +0 -0
  30. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_refined_grid.py +0 -0
  31. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_tilted_grid.py +0 -0
  32. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_unsplit_grid.py +0 -0
  33. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_zonal_grid.py +0 -0
  34. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_zone_layer_ranges_from_array.py +0 -0
  35. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/fault/__init__.py +0 -0
  36. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/__init__.py +0 -0
  37. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_cell_properties.py +0 -0
  38. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_connection_sets.py +0 -0
  39. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_create_grid_xml.py +0 -0
  40. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_defined_geometry.py +0 -0
  41. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_extract_functions.py +0 -0
  42. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_face_functions.py +0 -0
  43. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_faults.py +0 -0
  44. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_grid_types.py +0 -0
  45. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_intervals_info.py +0 -0
  46. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_moved_functions.py +0 -0
  47. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_pillars.py +0 -0
  48. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_pixel_maps.py +0 -0
  49. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_points_functions.py +0 -0
  50. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_regular_grid.py +0 -0
  51. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_transmissibility.py +0 -0
  52. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_write_hdf5_from_caches.py +0 -0
  53. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_write_nexus_corp.py +0 -0
  54. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_xyz.py +0 -0
  55. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid_surface/__init__.py +0 -0
  56. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid_surface/_blocked_well_populate.py +0 -0
  57. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid_surface/_find_faces.py +0 -0
  58. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid_surface/_grid_skin.py +0 -0
  59. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid_surface/_grid_surface.py +0 -0
  60. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid_surface/_trajectory_intersects.py +0 -0
  61. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid_surface/grid_surface_cuda.py +0 -0
  62. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/lines/__init__.py +0 -0
  63. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/lines/_common.py +0 -0
  64. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/lines/_polyline.py +0 -0
  65. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/lines/_polyline_set.py +0 -0
  66. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/__init__.py +0 -0
  67. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/_catalogue.py +0 -0
  68. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/_context.py +0 -0
  69. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/_forestry.py +0 -0
  70. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/_grids.py +0 -0
  71. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/_hdf5.py +0 -0
  72. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/_model.py +0 -0
  73. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/_xml.py +0 -0
  74. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/multi_processing/__init__.py +0 -0
  75. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/multi_processing/_multiprocessing.py +0 -0
  76. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/multi_processing/wrappers/__init__.py +0 -0
  77. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/multi_processing/wrappers/blocked_well_mp.py +0 -0
  78. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/multi_processing/wrappers/grid_surface_mp.py +0 -0
  79. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/multi_processing/wrappers/mesh_mp.py +0 -0
  80. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/__init__.py +0 -0
  81. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/ab_toolbox.py +0 -0
  82. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/base.py +0 -0
  83. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/box_utilities.py +0 -0
  84. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/class_dict.py +0 -0
  85. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/consolidation.py +0 -0
  86. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/data/build.py +0 -0
  87. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/data/properties.json +0 -0
  88. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/dataframe.py +0 -0
  89. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/exceptions.py +0 -0
  90. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/factors.py +0 -0
  91. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/fine_coarse.py +0 -0
  92. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/grid_functions.py +0 -0
  93. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/intersection.py +0 -0
  94. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/keyword_files.py +0 -0
  95. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/load_data.py +0 -0
  96. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/point_inclusion.py +0 -0
  97. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/random_seed.py +0 -0
  98. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/read_nexus_fault.py +0 -0
  99. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/relperm.py +0 -0
  100. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/simple_lines.py +0 -0
  101. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/time.py +0 -0
  102. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/trademark.py +0 -0
  103. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/transmission.py +0 -0
  104. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/triangulation.py +0 -0
  105. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/uuid.py +0 -0
  106. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/vdb.py +0 -0
  107. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/vector_utilities.py +0 -0
  108. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/volume.py +0 -0
  109. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/wellspec_keywords.py +0 -0
  110. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/write_data.py +0 -0
  111. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/write_hdf5.py +0 -0
  112. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/xml_et.py +0 -0
  113. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/xml_namespaces.py +0 -0
  114. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/zmap_reader.py +0 -0
  115. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/__init__.py +0 -0
  116. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/_utils.py +0 -0
  117. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/boundary_feature.py +0 -0
  118. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/boundary_feature_interpretation.py +0 -0
  119. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/earth_model_interpretation.py +0 -0
  120. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/fault_interpretation.py +0 -0
  121. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/fluid_boundary_feature.py +0 -0
  122. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/frontier_feature.py +0 -0
  123. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/generic_interpretation.py +0 -0
  124. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/genetic_boundary_feature.py +0 -0
  125. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/geobody_boundary_interpretation.py +0 -0
  126. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/geobody_feature.py +0 -0
  127. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/geobody_interpretation.py +0 -0
  128. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/geologic_unit_feature.py +0 -0
  129. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/horizon_interpretation.py +0 -0
  130. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/organization_feature.py +0 -0
  131. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/rock_fluid_unit_feature.py +0 -0
  132. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/structural_organization_interpretation.py +0 -0
  133. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/tectonic_boundary_feature.py +0 -0
  134. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/wellbore_feature.py +0 -0
  135. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/wellbore_interpretation.py +0 -0
  136. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/__init__.py +0 -0
  137. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/_collection_add_part.py +0 -0
  138. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/_collection_get_attributes.py +0 -0
  139. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/_collection_support.py +0 -0
  140. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/_property.py +0 -0
  141. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/attribute_property_set.py +0 -0
  142. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/grid_property_collection.py +0 -0
  143. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/property_collection.py +0 -0
  144. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/property_kind.py +0 -0
  145. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/string_lookup.py +0 -0
  146. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/well_interval_property.py +0 -0
  147. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/well_interval_property_collection.py +0 -0
  148. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/well_log.py +0 -0
  149. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/well_log_collection.py +0 -0
  150. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/rq_import/__init__.py +0 -0
  151. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/rq_import/_add_ab_properties.py +0 -0
  152. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/rq_import/_add_surfaces.py +0 -0
  153. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/rq_import/_grid_from_cp.py +0 -0
  154. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/rq_import/_import_nexus.py +0 -0
  155. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/rq_import/_import_vdb_all_grids.py +0 -0
  156. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/rq_import/_import_vdb_ensemble.py +0 -0
  157. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/__init__.py +0 -0
  158. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/_binary_contact_interpretation.py +0 -0
  159. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/_geologic_unit_interpretation.py +0 -0
  160. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/_strata_common.py +0 -0
  161. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/_stratigraphic_column.py +0 -0
  162. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/_stratigraphic_column_rank.py +0 -0
  163. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/_stratigraphic_unit_feature.py +0 -0
  164. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/_stratigraphic_unit_interpretation.py +0 -0
  165. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/__init__.py +0 -0
  166. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_base_surface.py +0 -0
  167. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_combined_surface.py +0 -0
  168. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_mesh.py +0 -0
  169. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_pointset.py +0 -0
  170. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_surface.py +0 -0
  171. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_tri_mesh.py +0 -0
  172. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_tri_mesh_stencil.py +0 -0
  173. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_triangulated_patch.py +0 -0
  174. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/time_series/__init__.py +0 -0
  175. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/time_series/_any_time_series.py +0 -0
  176. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/time_series/_from_nexus_summary.py +0 -0
  177. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/time_series/_functions.py +0 -0
  178. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/time_series/_geologic_time_series.py +0 -0
  179. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/time_series/_time_duration.py +0 -0
  180. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/time_series/_time_series.py +0 -0
  181. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/unstructured/__init__.py +0 -0
  182. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/unstructured/_hexa_grid.py +0 -0
  183. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/unstructured/_prism_grid.py +0 -0
  184. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/unstructured/_pyramid_grid.py +0 -0
  185. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/unstructured/_tetra_grid.py +0 -0
  186. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/unstructured/_unstructured_grid.py +0 -0
  187. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/weights_and_measures/__init__.py +0 -0
  188. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/weights_and_measures/nexus_units.py +0 -0
  189. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/weights_and_measures/weights_and_measures.py +0 -0
  190. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/__init__.py +0 -0
  191. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/_blocked_well.py +0 -0
  192. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/_deviation_survey.py +0 -0
  193. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/_md_datum.py +0 -0
  194. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/_trajectory.py +0 -0
  195. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/_wellbore_frame.py +0 -0
  196. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/_wellbore_marker.py +0 -0
  197. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/_wellbore_marker_frame.py +0 -0
  198. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/blocked_well_frame.py +0 -0
  199. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/well_object_funcs.py +0 -0
  200. {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/well_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: resqpy
3
- Version: 4.15.3
3
+ Version: 4.16.1
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.15.3" # Set at build time
12
+ version = "4.16.1" # 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.15.3" # Set at build time
31
+ __version__ = "4.16.1" # Set at build time
32
32
  log = logging.getLogger(__name__)
33
33
  log.info(f"Imported resqpy version {__version__}")
@@ -439,29 +439,29 @@ def combined_tr_mult_from_gcs_mults(model,
439
439
 
440
440
  # merge in each of the three directional face arrays for this gcs with combined arrays
441
441
  for (combo_trm, gcs_trm) in [(combo_trm_k, gcs_trm_k), (combo_trm_j, gcs_trm_j), (combo_trm_i, gcs_trm_i)]:
442
- mask = np.logical_not(np.isnan(gcs_trm)) # true where this tr mult is present
442
+ mask = np.logical_not(np.isnan(gcs_trm)).astype(bool) # true where this tr mult is present
443
443
  clash_mask = np.logical_and(mask, np.logical_not(np.isnan(combo_trm))) # true where combined value clashes
444
444
  if np.any(clash_mask):
445
445
  if merge_mode == 'exception':
446
446
  raise ValueError('gcs transmissibility multiplier conflict when merging')
447
447
  if merge_mode == 'minimum':
448
- combo_trm[:] = np.where(clash_mask, np.minimum(combo_trm, gcs_trm), combo_trm)
448
+ combo_trm[clash_mask] = np.minimum(combo_trm, gcs_trm)[clash_mask]
449
449
  elif merge_mode == 'maximum':
450
- combo_trm[:] = np.where(clash_mask, np.maximum(combo_trm, gcs_trm), combo_trm)
450
+ combo_trm[clash_mask] = np.maximum(combo_trm, gcs_trm)[clash_mask]
451
451
  elif merge_mode == 'multiply':
452
- combo_trm[:] = np.where(clash_mask, combo_trm * gcs_trm, combo_trm)
452
+ combo_trm[clash_mask] = (combo_trm * gcs_trm)[clash_mask]
453
453
  else:
454
454
  raise Exception(f'code failure with unrecognised merge mode {merge_mode}')
455
455
  mask = np.logical_and(mask,
456
456
  np.logical_not(clash_mask)) # remove clash faces from mask (already handled)
457
457
  if np.any(mask):
458
- combo_trm[:] = np.where(mask, gcs_trm, combo_trm) # update combined array from individual array
458
+ combo_trm[mask] = gcs_trm[mask] # update combined array from individual array
459
459
 
460
460
  # for each of the 3 combined tr mult arrays, replace unused values with the default fill value
461
461
  # also check that any set values are non-negative
462
462
  for combo_trm in (combo_trm_k, combo_trm_j, combo_trm_i):
463
463
  if fill_value is not None and not np.isnan(fill_value):
464
- combo_trm[:] = np.where(np.isnan(combo_trm), fill_value, combo_trm)
464
+ combo_trm[:][np.isnan(combo_trm).astype(bool)] = fill_value
465
465
  assert np.all(combo_trm >= 0.0)
466
466
  else:
467
467
  assert np.all(np.logical_or(np.isnan(combo_trm), combo_trm >= 0.0))
@@ -2100,9 +2100,6 @@ class GridConnectionSet(BaseResqpy):
2100
2100
  ak = np.full((nk + 1, nj, ni), default_value, dtype = dtype)
2101
2101
  aj = np.full((nk, nj + 1, ni), default_value, dtype = dtype)
2102
2102
  ai = np.full((nk, nj, ni + 1), default_value, dtype = dtype)
2103
- # mk = np.zeros((nk + 1, nj, ni), dtype = bool)
2104
- # mj = np.zeros((nk, nj + 1, ni), dtype = bool)
2105
- # mi = np.zeros((nk, nj, ni + 1), dtype = bool)
2106
2103
 
2107
2104
  # populate arrays from faces of gcs, optionally filtered by feature index
2108
2105
  cip, fip = self.list_of_cell_face_pairs_for_feature_index(None)
@@ -2113,42 +2110,36 @@ class GridConnectionSet(BaseResqpy):
2113
2110
  else:
2114
2111
  indices = self.indices_for_feature_index(feature_index)
2115
2112
 
2116
- # opposing_count = 0
2117
2113
  side_list = ([0] if lazy else [0, 1])
2118
- for fi in indices:
2119
- # fi = int(i)
2120
- if active_mask is not None and not active_mask[fi]:
2121
- continue
2122
- value = gcs_prop_array[fi]
2123
- if baffle_mask is not None and baffle_mask[fi]:
2124
- value = 0 # will be cast to float (or bool) if needed when assigned below
2125
- for side in side_list:
2126
- cell_kji0 = cip[fi, side].copy()
2127
- # opposing = cell_kji0.copy()
2128
- axis, polarity = fip[fi, side]
2129
- assert 0 <= axis <= 2 and 0 <= polarity <= 1
2130
- cell_kji0[axis] += polarity
2131
- # opposing[axis] += (1 - polarity)
2132
- if axis == 0:
2133
- ak[tuple(cell_kji0)] = value
2134
- # mk[tuple(cell_kji0)] = True
2135
- # if mk[tuple(opposing)]:
2136
- # opposing_count += 1
2137
- elif axis == 1:
2138
- aj[tuple(cell_kji0)] = value
2139
- # mj[tuple(cell_kji0)] = True
2140
- # if mj[tuple(opposing)]:
2141
- # opposing_count += 1
2142
- else:
2143
- ai[tuple(cell_kji0)] = value
2144
- # mi[tuple(cell_kji0)] = True
2145
- # if mi[tuple(opposing)]:
2146
- # opposing_count += 1
2147
-
2148
- # if opposing_count:
2149
- # log.warning(f'{opposing_count} suspicious opposing faces of {len(indices)} detected in gcs: {self.title}')
2150
- # else:
2151
- # log.debug(f'no suspicious opposing faces detected in gcs: {self.title}')
2114
+
2115
+ value_array = gcs_prop_array.copy()
2116
+ if baffle_mask is not None:
2117
+ value_array[baffle_mask] = 0 # will be cast to float (or bool) if needed
2118
+ if active_mask is not None:
2119
+ cip = cip[active_mask, :, :]
2120
+ value_array = value_array[active_mask]
2121
+
2122
+ for side in side_list:
2123
+ cell_kji0 = cip[:, side].copy() # shape (N, 3)
2124
+ axis = fip[:, side, 0] # shape (N,)
2125
+ polarity = fip[:, side, 1] # shape (N,)
2126
+ assert 0 <= np.min(axis) and np.max(axis) <= 2
2127
+ assert 0 <= np.min(polarity) and np.max(polarity) <= 1
2128
+
2129
+ axis_mask = (axis == 0).astype(bool)
2130
+ ak_kji0 = cell_kji0[axis_mask, :]
2131
+ ak_kji0[:, 0] += polarity[axis_mask]
2132
+ ak[ak_kji0[:, 0], ak_kji0[:, 1], ak_kji0[:, 2]] = value_array[axis_mask]
2133
+
2134
+ axis_mask = (axis == 1).astype(bool)
2135
+ aj_kji0 = cell_kji0[axis_mask, :]
2136
+ aj_kji0[:, 1] += polarity[axis_mask]
2137
+ aj[aj_kji0[:, 0], aj_kji0[:, 1], aj_kji0[:, 2]] = value_array[axis_mask]
2138
+
2139
+ axis_mask = (axis == 2).astype(bool)
2140
+ ai_kji0 = cell_kji0[axis_mask, :]
2141
+ ai_kji0[:, 2] += polarity[axis_mask]
2142
+ ai[ai_kji0[:, 0], ai_kji0[:, 1], ai_kji0[:, 2]] = value_array[axis_mask]
2152
2143
 
2153
2144
  return (ak, aj, ai)
2154
2145
 
@@ -2255,9 +2255,9 @@ class Grid(BaseResqpy):
2255
2255
  pc = self.extract_property_collection()
2256
2256
 
2257
2257
  if baffle_triplet is not None:
2258
- trm_k[1:-1] = np.where(baffle_triplet[0], 0.0, trm_k[1:-1])
2259
- trm_j[:, 1:-1] = np.where(baffle_triplet[1], 0.0, trm_j[:, 1:-1])
2260
- trm_i[:, :, 1:-1] = np.where(baffle_triplet[2], 0.0, trm_i[:, :, 1:-1])
2258
+ trm_k[1:-1][baffle_triplet[0]] = 0.0
2259
+ trm_j[:, 1:-1][baffle_triplet[1]] = 0.0
2260
+ trm_i[:, :, 1:-1][baffle_triplet[2]] = 0.0
2261
2261
 
2262
2262
  if composite_property:
2263
2263
  tr_composite = np.concatenate((trm_k.flat, trm_j.flat, trm_i.flat))
@@ -66,7 +66,7 @@ def _create_xml_property_kind(collection, p_node, find_local_property_kinds, pro
66
66
  property_kind = 'rock permeability'
67
67
  p_kind_node = rqet.SubElement(p_node, ns['resqml2'] + 'PropertyKind')
68
68
  p_kind_node.text = rqet.null_xml_text
69
- if find_local_property_kinds and property_kind not in rqp_c.supported_property_kind_list:
69
+ if find_local_property_kinds and property_kind not in wam.valid_property_kinds():
70
70
  property_kind_uuid = pcga._get_property_kind_uuid(collection, property_kind_uuid, property_kind, uom, discrete)
71
71
 
72
72
  if property_kind_uuid is None:
@@ -12,18 +12,13 @@ import numpy as np
12
12
  import resqpy.property as rqp
13
13
  import resqpy.olio.uuid as bu
14
14
  import resqpy.olio.xml_et as rqet
15
- import resqpy.weights_and_measures as bwam
15
+ import resqpy.weights_and_measures as wam
16
16
 
17
17
  # the following resqml property kinds and facet types are 'known about' by this module in relation to nexus
18
18
  # other property kinds should be handled okay but without any special treatment
19
19
  # see property_kind_and_facet_from_keyword() for simulator keyword to property kind and facet mapping
20
20
 
21
- supported_property_kind_list = [
22
- 'continuous', 'discrete', 'categorical', 'code', 'index', 'depth', 'rock volume', 'pore volume', 'volume',
23
- 'thickness', 'length', 'cell length', 'area', 'net to gross ratio', 'porosity', 'permeability thickness',
24
- 'permeability length', 'permeability rock', 'rock permeability', 'fluid volume', 'transmissibility', 'pressure',
25
- 'saturation', 'solution gas-oil ratio', 'vapor oil-gas ratio', 'property multiplier', 'thermodynamic temperature'
26
- ]
21
+ supported_property_kind_list = list(wam.valid_property_kinds())
27
22
 
28
23
  supported_local_property_kind_list = [
29
24
  'active', 'transmissibility multiplier', 'fault transmissibility', 'mat transmissibility'
@@ -326,7 +321,7 @@ def infer_property_kind(name, unit):
326
321
 
327
322
  # Currently unit is ignored
328
323
 
329
- valid_kinds = bwam.valid_property_kinds()
324
+ valid_kinds = wam.valid_property_kinds()
330
325
 
331
326
  if name in valid_kinds:
332
327
  kind = name
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