resqpy 4.16.7__tar.gz → 4.16.8__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.16.7 → resqpy-4.16.8}/PKG-INFO +1 -1
  2. {resqpy-4.16.7 → resqpy-4.16.8}/pyproject.toml +1 -1
  3. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/__init__.py +1 -1
  4. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/fault/_gcs_functions.py +4 -4
  5. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/fault/_grid_connection_set.py +14 -8
  6. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_defined_geometry.py +3 -3
  7. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_points_functions.py +1 -1
  8. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid_surface/_find_faces.py +29 -13
  9. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/multi_processing/wrappers/grid_surface_mp.py +2 -1
  10. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/transmission.py +8 -8
  11. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/vector_utilities.py +1 -1
  12. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/wellspec_keywords.py +3 -3
  13. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/grid_property_collection.py +1 -1
  14. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/property_collection.py +9 -9
  15. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/surface/_surface.py +1 -1
  16. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/surface/_tri_mesh.py +2 -2
  17. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/surface/_tri_mesh_stencil.py +4 -4
  18. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/unstructured/_prism_grid.py +1 -1
  19. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/well/_blocked_well.py +2 -2
  20. {resqpy-4.16.7 → resqpy-4.16.8}/LICENSE +0 -0
  21. {resqpy-4.16.7 → resqpy-4.16.8}/README.md +0 -0
  22. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/crs.py +0 -0
  23. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/__init__.py +0 -0
  24. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_add_edges_per_column_property_array.py +0 -0
  25. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_add_faults.py +0 -0
  26. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_add_one_blocked_well_property.py +0 -0
  27. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_add_one_grid_property_array.py +0 -0
  28. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_add_single_cell_grid.py +0 -0
  29. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_add_wells_from_ascii_file.py +0 -0
  30. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_add_zone_by_layer_property.py +0 -0
  31. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_coarsened_grid.py +0 -0
  32. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_common.py +0 -0
  33. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_copy_grid.py +0 -0
  34. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_drape_to_surface.py +0 -0
  35. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_extract_box.py +0 -0
  36. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_extract_box_for_well.py +0 -0
  37. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_fault_throw_scaling.py +0 -0
  38. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_gather_ensemble.py +0 -0
  39. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_interpolated_grid.py +0 -0
  40. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_local_depth_adjustment.py +0 -0
  41. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_refined_grid.py +0 -0
  42. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_tilted_grid.py +0 -0
  43. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_unsplit_grid.py +0 -0
  44. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_zonal_grid.py +0 -0
  45. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/derived_model/_zone_layer_ranges_from_array.py +0 -0
  46. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/fault/__init__.py +0 -0
  47. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/__init__.py +0 -0
  48. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_cell_properties.py +0 -0
  49. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_connection_sets.py +0 -0
  50. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_create_grid_xml.py +0 -0
  51. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_extract_functions.py +0 -0
  52. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_face_functions.py +0 -0
  53. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_faults.py +0 -0
  54. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_grid.py +0 -0
  55. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_grid_types.py +0 -0
  56. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_intervals_info.py +0 -0
  57. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_moved_functions.py +0 -0
  58. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_pillars.py +0 -0
  59. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_pixel_maps.py +0 -0
  60. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_regular_grid.py +0 -0
  61. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_transmissibility.py +0 -0
  62. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_write_hdf5_from_caches.py +0 -0
  63. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_write_nexus_corp.py +0 -0
  64. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid/_xyz.py +0 -0
  65. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid_surface/__init__.py +0 -0
  66. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid_surface/_blocked_well_populate.py +0 -0
  67. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid_surface/_grid_skin.py +0 -0
  68. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid_surface/_grid_surface.py +0 -0
  69. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid_surface/_trajectory_intersects.py +0 -0
  70. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/grid_surface/grid_surface_cuda.py +0 -0
  71. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/lines/__init__.py +0 -0
  72. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/lines/_common.py +0 -0
  73. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/lines/_polyline.py +0 -0
  74. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/lines/_polyline_set.py +0 -0
  75. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/model/__init__.py +0 -0
  76. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/model/_catalogue.py +0 -0
  77. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/model/_context.py +0 -0
  78. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/model/_forestry.py +0 -0
  79. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/model/_grids.py +0 -0
  80. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/model/_hdf5.py +0 -0
  81. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/model/_model.py +0 -0
  82. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/model/_xml.py +0 -0
  83. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/multi_processing/__init__.py +0 -0
  84. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/multi_processing/_multiprocessing.py +0 -0
  85. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/multi_processing/wrappers/__init__.py +0 -0
  86. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/multi_processing/wrappers/blocked_well_mp.py +0 -0
  87. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/multi_processing/wrappers/mesh_mp.py +0 -0
  88. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/__init__.py +0 -0
  89. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/ab_toolbox.py +0 -0
  90. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/base.py +0 -0
  91. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/box_utilities.py +0 -0
  92. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/class_dict.py +0 -0
  93. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/consolidation.py +0 -0
  94. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/data/build.py +0 -0
  95. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/data/properties.json +0 -0
  96. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/dataframe.py +0 -0
  97. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/exceptions.py +0 -0
  98. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/factors.py +0 -0
  99. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/fine_coarse.py +0 -0
  100. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/grid_functions.py +0 -0
  101. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/intersection.py +0 -0
  102. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/keyword_files.py +0 -0
  103. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/load_data.py +0 -0
  104. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/point_inclusion.py +0 -0
  105. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/random_seed.py +0 -0
  106. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/read_nexus_fault.py +0 -0
  107. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/relperm.py +0 -0
  108. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/simple_lines.py +0 -0
  109. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/time.py +0 -0
  110. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/trademark.py +0 -0
  111. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/triangulation.py +0 -0
  112. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/uuid.py +0 -0
  113. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/vdb.py +0 -0
  114. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/volume.py +0 -0
  115. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/write_data.py +0 -0
  116. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/write_hdf5.py +0 -0
  117. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/xml_et.py +0 -0
  118. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/xml_namespaces.py +0 -0
  119. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/olio/zmap_reader.py +0 -0
  120. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/__init__.py +0 -0
  121. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/_utils.py +0 -0
  122. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/boundary_feature.py +0 -0
  123. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/boundary_feature_interpretation.py +0 -0
  124. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/earth_model_interpretation.py +0 -0
  125. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/fault_interpretation.py +0 -0
  126. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/fluid_boundary_feature.py +0 -0
  127. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/frontier_feature.py +0 -0
  128. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/generic_interpretation.py +0 -0
  129. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/genetic_boundary_feature.py +0 -0
  130. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/geobody_boundary_interpretation.py +0 -0
  131. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/geobody_feature.py +0 -0
  132. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/geobody_interpretation.py +0 -0
  133. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/geologic_unit_feature.py +0 -0
  134. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/horizon_interpretation.py +0 -0
  135. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/organization_feature.py +0 -0
  136. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/rock_fluid_unit_feature.py +0 -0
  137. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/structural_organization_interpretation.py +0 -0
  138. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/tectonic_boundary_feature.py +0 -0
  139. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/wellbore_feature.py +0 -0
  140. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/organize/wellbore_interpretation.py +0 -0
  141. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/__init__.py +0 -0
  142. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/_collection_add_part.py +0 -0
  143. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/_collection_create_xml.py +0 -0
  144. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/_collection_get_attributes.py +0 -0
  145. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/_collection_support.py +0 -0
  146. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/_property.py +0 -0
  147. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/attribute_property_set.py +0 -0
  148. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/property_common.py +0 -0
  149. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/property_kind.py +0 -0
  150. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/string_lookup.py +0 -0
  151. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/well_interval_property.py +0 -0
  152. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/well_interval_property_collection.py +0 -0
  153. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/well_log.py +0 -0
  154. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/property/well_log_collection.py +0 -0
  155. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/rq_import/__init__.py +0 -0
  156. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/rq_import/_add_ab_properties.py +0 -0
  157. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/rq_import/_add_surfaces.py +0 -0
  158. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/rq_import/_grid_from_cp.py +0 -0
  159. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/rq_import/_import_nexus.py +0 -0
  160. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/rq_import/_import_vdb_all_grids.py +0 -0
  161. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/rq_import/_import_vdb_ensemble.py +0 -0
  162. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/strata/__init__.py +0 -0
  163. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/strata/_binary_contact_interpretation.py +0 -0
  164. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/strata/_geologic_unit_interpretation.py +0 -0
  165. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/strata/_strata_common.py +0 -0
  166. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/strata/_stratigraphic_column.py +0 -0
  167. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/strata/_stratigraphic_column_rank.py +0 -0
  168. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/strata/_stratigraphic_unit_feature.py +0 -0
  169. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/strata/_stratigraphic_unit_interpretation.py +0 -0
  170. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/surface/__init__.py +0 -0
  171. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/surface/_base_surface.py +0 -0
  172. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/surface/_combined_surface.py +0 -0
  173. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/surface/_mesh.py +0 -0
  174. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/surface/_pointset.py +0 -0
  175. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/surface/_triangulated_patch.py +0 -0
  176. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/time_series/__init__.py +0 -0
  177. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/time_series/_any_time_series.py +0 -0
  178. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/time_series/_from_nexus_summary.py +0 -0
  179. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/time_series/_functions.py +0 -0
  180. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/time_series/_geologic_time_series.py +0 -0
  181. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/time_series/_time_duration.py +0 -0
  182. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/time_series/_time_series.py +0 -0
  183. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/unstructured/__init__.py +0 -0
  184. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/unstructured/_hexa_grid.py +0 -0
  185. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/unstructured/_pyramid_grid.py +0 -0
  186. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/unstructured/_tetra_grid.py +0 -0
  187. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/unstructured/_unstructured_grid.py +0 -0
  188. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/weights_and_measures/__init__.py +0 -0
  189. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/weights_and_measures/nexus_units.py +0 -0
  190. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/weights_and_measures/weights_and_measures.py +0 -0
  191. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/well/__init__.py +0 -0
  192. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/well/_deviation_survey.py +0 -0
  193. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/well/_md_datum.py +0 -0
  194. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/well/_trajectory.py +0 -0
  195. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/well/_wellbore_frame.py +0 -0
  196. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/well/_wellbore_marker.py +0 -0
  197. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/well/_wellbore_marker_frame.py +0 -0
  198. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/well/blocked_well_frame.py +0 -0
  199. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/well/well_object_funcs.py +0 -0
  200. {resqpy-4.16.7 → resqpy-4.16.8}/resqpy/well/well_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: resqpy
3
- Version: 4.16.7
3
+ Version: 4.16.8
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.16.7" # Set at build time
12
+ version = "4.16.8" # 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.16.7" # Set at build time
31
+ __version__ = "4.16.8" # Set at build time
32
32
  log = logging.getLogger(__name__)
33
33
  log.info(f"Imported resqpy version {__version__}")
@@ -423,15 +423,15 @@ def combined_tr_mult_from_gcs_mults(model,
423
423
 
424
424
  if grid is None: # first gcs: grab grid and initialise combined tr mult arrays
425
425
  grid = gcs.grid_list[0]
426
- combo_trm_k = np.full((grid.nk + 1, grid.nj, grid.ni), np.NaN, dtype = float)
427
- combo_trm_j = np.full((grid.nk, grid.nj + 1, grid.ni), np.NaN, dtype = float)
428
- combo_trm_i = np.full((grid.nk, grid.nj, grid.ni + 1), np.NaN, dtype = float)
426
+ combo_trm_k = np.full((grid.nk + 1, grid.nj, grid.ni), np.nan, dtype = float)
427
+ combo_trm_j = np.full((grid.nk, grid.nj + 1, grid.ni), np.nan, dtype = float)
428
+ combo_trm_i = np.full((grid.nk, grid.nj, grid.ni + 1), np.nan, dtype = float)
429
429
  else: # check same grid is referenced by this gcs
430
430
  assert bu.matching_uuids(gcs.grid_list[0].uuid, grid.uuid)
431
431
 
432
432
  # get gcs tr mult data in form of triplet of grid faces arrays
433
433
  gcs_trm_k, gcs_trm_j, gcs_trm_i = gcs.grid_face_arrays(tr_mult_uuid,
434
- default_value = np.NaN,
434
+ default_value = np.nan,
435
435
  active_only = active_only,
436
436
  lazy = not sided,
437
437
  baffle_uuid = baffle_uuid)
@@ -1558,7 +1558,7 @@ class GridConnectionSet(BaseResqpy):
1558
1558
  log.info(
1559
1559
  f'Property name {property_name} not found in extra_metadata for {self.model.citation_title_for_part(self.model.part_for_uuid(feature_uuid))}'
1560
1560
  )
1561
- value_list.append(np.NaN)
1561
+ value_list.append(np.nan)
1562
1562
  else:
1563
1563
  value_list.append(float(feat.extra_metadata[property_name]))
1564
1564
  return value_list
@@ -2043,14 +2043,15 @@ class GridConnectionSet(BaseResqpy):
2043
2043
  feature_index = None,
2044
2044
  active_only = True,
2045
2045
  lazy = False,
2046
- baffle_uuid = None):
2046
+ baffle_uuid = None,
2047
+ dtype = None):
2047
2048
  """Creates a triplet of grid face numpy arrays populated from a property for this gcs.
2048
2049
 
2049
2050
  arguments:
2050
2051
  property_uuid (UUID): the uuid of the gcs property
2051
2052
  default_value (float or int, optional): the value to use in the grid property
2052
2053
  on faces that do not appear in the grid connection set; will default to
2053
- np.NaN for continuous properties, -1 for categorical or discrete
2054
+ np.nan for continuous properties, -1 for categorical or discrete
2054
2055
  feature_index (int, optional): if present, only faces for this feature are used
2055
2056
  active_only (bool, default True): if True and an active property exists for the
2056
2057
  grid connection set, then only active faces are used when populating the
@@ -2061,6 +2062,8 @@ class GridConnectionSet(BaseResqpy):
2061
2062
  baffle_uuid (uuid, optional): if present, the uuid of a discrete (bool) property
2062
2063
  of the gcs holding baffle flags; where True the output face value is set
2063
2064
  to zero regardless of the main property value
2065
+ dtype (type or str, optional): the element type for the returned arrays; defaults
2066
+ to float for continuous properties or int for discrete properties; see notes
2064
2067
 
2065
2068
  returns:
2066
2069
  triple numpy arrays: identifying the K, J & I direction grid face property values;
@@ -2070,7 +2073,9 @@ class GridConnectionSet(BaseResqpy):
2070
2073
  can only be used on single grid gcs; gcs property must have indexable of faces;
2071
2074
  at present generates grid properties with indexable 'faces' not 'faces per cell',
2072
2075
  which might not be appropriate for grids with split pillars (structural faults);
2073
- points properties not currently supported; count must be 1
2076
+ points properties not currently supported; count must be 1;
2077
+ if the property is a boolean array and may have been written to hdf5 using packing,
2078
+ then the dtype argument must be set to bool or np.uint8 to ensure unpacking
2074
2079
  """
2075
2080
 
2076
2081
  assert self.number_of_grids() == 1
@@ -2078,7 +2083,7 @@ class GridConnectionSet(BaseResqpy):
2078
2083
  active_mask = None
2079
2084
  if active_only:
2080
2085
  pc = self.extract_property_collection()
2081
- active_mask = pc.single_array_ref(property_kind = 'active')
2086
+ active_mask = pc.single_array_ref(property_kind = 'active', dtype = bool)
2082
2087
  if active_mask is not None:
2083
2088
  assert active_mask.shape == (self.count,)
2084
2089
  gcs_prop = rqp.Property(self.model, uuid = property_uuid)
@@ -2086,10 +2091,11 @@ class GridConnectionSet(BaseResqpy):
2086
2091
  assert bu.matching_uuids(gcs_prop.collection.support_uuid, self.uuid)
2087
2092
  assert gcs_prop.count() == 1
2088
2093
  assert not gcs_prop.is_points()
2089
- dtype = float if gcs_prop.is_continuous() else int
2094
+ if dtype is None:
2095
+ dtype = float if gcs_prop.is_continuous() else int
2090
2096
  if default_value is None:
2091
- default_value = -1 if dtype is int else np.NaN
2092
- gcs_prop_array = gcs_prop.array_ref()
2097
+ default_value = -1 if dtype is int else np.nan
2098
+ gcs_prop_array = gcs_prop.array_ref(dtype = dtype)
2093
2099
  assert gcs_prop_array.shape == (self.count,)
2094
2100
  log.debug(f'preparing grid face arrays from gcs property: {gcs_prop.title}; from gcs:{self.title}')
2095
2101
 
@@ -293,7 +293,7 @@ def set_geometry_is_defined(grid,
293
293
 
294
294
  assert not np.all(nan_mask), 'grid does not have any geometry defined'
295
295
 
296
- points[np.where(np.repeat(np.expand_dims(nan_mask, axis = nan_mask.ndim), 3, axis = -1))] = np.NaN
296
+ points[np.where(np.repeat(np.expand_dims(nan_mask, axis = nan_mask.ndim), 3, axis = -1))] = np.nan
297
297
 
298
298
  surround_z = grid.xyz_box(lazy = False)[1 if grid.z_inc_down() else 0, 2]
299
299
 
@@ -335,7 +335,7 @@ def set_geometry_is_defined(grid,
335
335
  if nullify_partial_pillars:
336
336
  partial_pillar_mask = np.logical_and(pillar_defined_mask, np.any(nan_mask, axis = 0).flatten())
337
337
  if np.any(partial_pillar_mask):
338
- points.reshape((grid.nk_plus_k_gaps + 1, -1, 3))[:, partial_pillar_mask, :] = np.NaN
338
+ points.reshape((grid.nk_plus_k_gaps + 1, -1, 3))[:, partial_pillar_mask, :] = np.nan
339
339
  grid.geometry_defined_for_all_pillars_cached = False
340
340
  cells_update_needed = True
341
341
  elif complete_partial_pillars:
@@ -416,7 +416,7 @@ def __handle_areal_dots(areal_dots, grid, nan_mask):
416
416
  primaries = (grid.nj + 1) * (grid.ni + 1)
417
417
  nan_mask[:, :primaries] = np.logical_or(nan_mask[:, :primaries], dot_mask.reshape((-1, primaries)))
418
418
  else:
419
- nan_mask = np.where(dot_mask, np.NaN, nan_mask)
419
+ nan_mask = np.where(dot_mask, np.nan, nan_mask)
420
420
  return nan_mask
421
421
 
422
422
 
@@ -790,7 +790,7 @@ def corner_points(grid, cell_kji0 = None, points_root = None, cache_resqml_array
790
790
  # note: this function returns a derived object rather than a native resqml object
791
791
 
792
792
  def one_cell_cp(grid, cell_kji0, points_root, cache_array):
793
- cp = np.full((2, 2, 2, 3), np.NaN)
793
+ cp = np.full((2, 2, 2, 3), np.nan)
794
794
  if not grr_dg.geometry_defined_for_all_cells(grid):
795
795
  if not grr_dg.cell_geometry_is_defined(grid, cell_kji0 = cell_kji0, cache_array = cache_array):
796
796
  return cp
@@ -815,7 +815,7 @@ def find_faces_to_represent_surface_regular_optimised(grid,
815
815
  related_uuid = surface.uuid)
816
816
  assert (flange_bool_uuid is not None), f"No flange bool property found for surface: {surface.title}"
817
817
  flange_bool = rqp.Property(surface.model, uuid = flange_bool_uuid)
818
- flange_array = flange_bool.array_ref()
818
+ flange_array = flange_bool.array_ref(dtype = bool)
819
819
  all_flange = np.take(flange_array, all_tris)
820
820
  assert all_flange.shape == (gcs.count,)
821
821
 
@@ -994,12 +994,23 @@ def bisector_from_faces( # type: ignore
994
994
  changing_array = np.zeros_like(bounding_array, dtype = np.bool_)
995
995
 
996
996
  # Repeatedly spreading True values to neighbouring cells that are not the other side of a face.
997
- open_k = np.logical_not(k_faces)[boundary["k_min"]:boundary["k_max"], boundary["j_min"]:boundary["j_max"] + 1,
998
- boundary["i_min"]:boundary["i_max"] + 1,]
999
- open_j = np.logical_not(j_faces)[boundary["k_min"]:boundary["k_max"] + 1, boundary["j_min"]:boundary["j_max"],
1000
- boundary["i_min"]:boundary["i_max"] + 1,]
1001
- open_i = np.logical_not(i_faces)[boundary["k_min"]:boundary["k_max"] + 1, boundary["j_min"]:boundary["j_max"] + 1,
1002
- boundary["i_min"]:boundary["i_max"],]
997
+ # yapf: disable
998
+ open_k = np.logical_not(k_faces)[
999
+ boundary["k_min"]:boundary["k_max"],
1000
+ boundary["j_min"]:boundary["j_max"] + 1,
1001
+ boundary["i_min"]:boundary["i_max"] + 1,
1002
+ ]
1003
+ open_j = np.logical_not(j_faces)[
1004
+ boundary["k_min"]:boundary["k_max"] + 1,
1005
+ boundary["j_min"]:boundary["j_max"],
1006
+ boundary["i_min"]:boundary["i_max"] + 1,
1007
+ ]
1008
+ open_i = np.logical_not(i_faces)[
1009
+ boundary["k_min"]:boundary["k_max"] + 1,
1010
+ boundary["j_min"]:boundary["j_max"] + 1,
1011
+ boundary["i_min"]:boundary["i_max"],
1012
+ ]
1013
+ # yapf: enable
1003
1014
  while True:
1004
1015
  changing_array[:] = False
1005
1016
 
@@ -1027,8 +1038,13 @@ def bisector_from_faces( # type: ignore
1027
1038
 
1028
1039
  # Setting up the full bisectors array and assigning the bounding box values.
1029
1040
  array = np.zeros(grid_extent_kji, dtype = np.bool_)
1030
- array[boundary["k_min"]:boundary["k_max"] + 1, boundary["j_min"]:boundary["j_max"] + 1,
1031
- boundary["i_min"]:boundary["i_max"] + 1,] = bounding_array
1041
+ # yapf: disable
1042
+ array[
1043
+ boundary["k_min"]:boundary["k_max"] + 1,
1044
+ boundary["j_min"]:boundary["j_max"] + 1,
1045
+ boundary["i_min"]:boundary["i_max"] + 1,
1046
+ ] = bounding_array
1047
+ # yapf: enable
1032
1048
 
1033
1049
  # Setting values outside of the bounding box.
1034
1050
  if boundary["k_max"] != grid_extent_kji[0] - 1 and np.any(bounding_array[-1, :, :]):
@@ -1140,18 +1156,18 @@ def shadow_from_faces(extent_kji, k_faces):
1140
1156
  c = np.logical_and(shadow[:-1] == 0, shadow[1:] == 1)
1141
1157
  if np.count_nonzero(c) == 0:
1142
1158
  break
1143
- shadow[:-1] = np.where(c, 1, shadow[:-1])
1159
+ shadow[:-1][c] = 1
1144
1160
  for _ in range(limit):
1145
1161
  c = np.logical_and(shadow[1:] == 0, shadow[:-1] == 2)
1146
1162
  if np.count_nonzero(c) == 0:
1147
1163
  break
1148
- shadow[1:] = np.where(c, 2, shadow[1:])
1164
+ shadow[1:][c] = 2
1149
1165
  for _ in range(limit):
1150
1166
  c = np.logical_and(shadow[:-1] >= 2, shadow[1:] == 1)
1151
1167
  if np.count_nonzero(c) == 0:
1152
1168
  break
1153
- shadow[:-1] = np.where(c, 3, shadow[:-1])
1154
- shadow[1:] = np.where(c, 3, shadow[1:])
1169
+ shadow[:-1][c] = 3
1170
+ shadow[1:][c] = 3
1155
1171
  return shadow
1156
1172
 
1157
1173
 
@@ -235,7 +235,8 @@ def find_faces_to_represent_surface_regular_wrapper(
235
235
  property_kind = 'flange bool',
236
236
  find_local_property_kind = True,
237
237
  indexable_element = 'faces',
238
- discrete = True)
238
+ discrete = True,
239
+ dtype = np.uint8)
239
240
  uuid_list.append(flange_p.uuid)
240
241
  uuid_list.append(surface_uuid)
241
242
 
@@ -260,10 +260,10 @@ def half_cell_t_irregular(grid,
260
260
  zero_length_mask = np.logical_or(np.any(np.isnan(half_axis_vectors), axis = -1),
261
261
  half_axis_length_sqr < tolerance_sqr)
262
262
  minus_face_t = np.where(
263
- zero_length_mask, np.NaN,
263
+ zero_length_mask, np.nan,
264
264
  perm_k * np.sum(half_axis_vectors * minus_face_areas, axis = -1) / half_axis_length_sqr)
265
265
  plus_face_t = np.where(
266
- zero_length_mask, np.NaN,
266
+ zero_length_mask, np.nan,
267
267
  perm_k * np.sum(half_axis_vectors * plus_face_areas, axis = -1) / half_axis_length_sqr)
268
268
 
269
269
  elif axis == 1: # j
@@ -303,10 +303,10 @@ def half_cell_t_irregular(grid,
303
303
  half_axis_length_sqr = np.sum(half_axis_vectors * half_axis_vectors, axis = -1)
304
304
  zero_length_mask = (half_axis_length_sqr < tolerance_sqr)
305
305
  minus_face_t = np.where(
306
- zero_length_mask, np.NaN,
306
+ zero_length_mask, np.nan,
307
307
  perm_j * np.sum(half_axis_vectors * minus_face_areas, axis = -1) / half_axis_length_sqr)
308
308
  plus_face_t = np.where(
309
- zero_length_mask, np.NaN,
309
+ zero_length_mask, np.nan,
310
310
  perm_j * np.sum(half_axis_vectors * plus_face_areas, axis = -1) / half_axis_length_sqr)
311
311
 
312
312
  else: # i
@@ -345,10 +345,10 @@ def half_cell_t_irregular(grid,
345
345
  half_axis_length_sqr = np.sum(half_axis_vectors * half_axis_vectors, axis = -1)
346
346
  zero_length_mask = (half_axis_length_sqr < tolerance_sqr)
347
347
  minus_face_t = np.where(
348
- zero_length_mask, np.NaN,
348
+ zero_length_mask, np.nan,
349
349
  perm_i * np.sum(half_axis_vectors * minus_face_areas, axis = -1) / half_axis_length_sqr)
350
350
  plus_face_t = np.where(
351
- zero_length_mask, np.NaN,
351
+ zero_length_mask, np.nan,
352
352
  perm_i * np.sum(half_axis_vectors * plus_face_areas, axis = -1) / half_axis_length_sqr)
353
353
 
354
354
  if axis != 0 and ntg is not None:
@@ -417,14 +417,14 @@ def half_cell_t_vertical_prism(vpg,
417
417
  # compute transmissibilities
418
418
  tr = np.zeros((vpg.cell_count, 5), dtype = float)
419
419
  # vertical
420
- tr[:, 0] = np.where(half_thickness < tolerance, np.NaN, (perm_k.reshape(
420
+ tr[:, 0] = np.where(half_thickness < tolerance, np.nan, (perm_k.reshape(
421
421
  (vpg.nk, -1)) * triangle_areas / half_thickness)).flatten()
422
422
  tr[:, 1] = tr[:, 0]
423
423
  # horizontal
424
424
  # TODO: compute dip adjustments for non-vertical transmissibilities
425
425
  dt_full = np.empty((vpg.nk, vpg.cell_count // vpg.nk, 3), dtype = float)
426
426
  dt_full[:] = d_t
427
- tr[:, 2:] = np.where(dt_full < tolerance, np.NaN,
427
+ tr[:, 2:] = np.where(dt_full < tolerance, np.nan,
428
428
  triple_perm_horizontal.reshape((vpg.nk, -1, 3)) * a_t.reshape((1, -1, 3)) / dt_full).reshape(
429
429
  (-1, 3))
430
430
  if ntg is not None:
@@ -999,7 +999,7 @@ def vertical_intercept_nan(x: float, x_value_0: float, x_value_1: float, y_value
999
999
  y (float): y value of the straight line segment between point 1 and point 2,
1000
1000
  evaluated at x; if x is outside the x values range, y is NaN
1001
1001
  """
1002
- y = np.NaN
1002
+ y = np.nan
1003
1003
  if x_value_1 < x_value_0:
1004
1004
  x_value_0, x_value_1 = x_value_1, x_value_0
1005
1005
  y_value_0, y_value_1 = y_value_1, y_value_0
@@ -482,11 +482,11 @@ def get_well_data(
482
482
  if column_list[col_index].upper() == "GRID":
483
483
  data[col].append("ROOT")
484
484
  else:
485
- data[col].append(np.NaN)
485
+ data[col].append(np.nan)
486
486
  else:
487
487
  value = words[column_map[col_index]]
488
488
  if value == "NA":
489
- data[col].append(np.NaN)
489
+ data[col].append(np.nan)
490
490
  elif value == "#":
491
491
  data[col].append(value)
492
492
  elif value:
@@ -496,7 +496,7 @@ def get_well_data(
496
496
  else:
497
497
  for col, value in zip(columns_present, words[:len(columns_present)]):
498
498
  if value == "NA":
499
- data[col].append(np.NaN)
499
+ data[col].append(np.nan)
500
500
  elif value == "#":
501
501
  data[col].append(value)
502
502
  elif value:
@@ -824,7 +824,7 @@ def _coarsening_sum(coarsening, a, axis = None):
824
824
  return a_coarsened
825
825
 
826
826
 
827
- def _coarsening_weighted_mean(coarsening, a, fine_weight, coarse_weight = None, zero_weight_result = np.NaN):
827
+ def _coarsening_weighted_mean(coarsening, a, fine_weight, coarse_weight = None, zero_weight_result = np.nan):
828
828
  a_coarsened = np.empty(tuple(coarsening.coarse_extent_kji))
829
829
  assert a.shape == tuple(coarsening.fine_extent_kji)
830
830
  assert fine_weight.shape == a.shape
@@ -1085,17 +1085,17 @@ class PropertyCollection():
1085
1085
  return meta
1086
1086
 
1087
1087
  def null_value_for_part(self, part):
1088
- """Returns the null value for the (discrete) property part; np.NaN for continuous parts.
1088
+ """Returns the null value for the (discrete) property part; np.nan for continuous parts.
1089
1089
 
1090
1090
  arguments:
1091
1091
  part (string): the part name for which the null value is required
1092
1092
 
1093
1093
  returns:
1094
- int or np.NaN
1094
+ int or np.nan
1095
1095
  """
1096
1096
 
1097
1097
  if self.continuous_for_part(part):
1098
- return np.NaN
1098
+ return np.nan
1099
1099
  return self.element_for_part(part, 19)
1100
1100
 
1101
1101
  def continuous_for_part(self, part):
@@ -1683,7 +1683,7 @@ class PropertyCollection():
1683
1683
  exclude_inactive (boolean, default True): elements which are flagged as inactive in the supporting representation
1684
1684
  are masked out if this argument is True
1685
1685
  exclude_value (float or int, optional): if present, elements which match this value are masked out; if not None
1686
- then usually set to np.NaN for continuous data or null_value_for_part() for discrete data
1686
+ then usually set to np.nan for continuous data or null_value_for_part() for discrete data
1687
1687
  points (boolean, default False): if True, the simple array is expected to have an extra dimension of extent 3,
1688
1688
  relative to the inactive attribute of the support
1689
1689
 
@@ -1771,7 +1771,7 @@ class PropertyCollection():
1771
1771
  representation object with the attribute name 'inactive', to multiple properties (this will only work
1772
1772
  if the indexable element is set to the typical value for the class of supporting representation, eg.
1773
1773
  'cells' for grid objects); if exclude_null is set True then null value elements will also be masked out
1774
- (as long as masked is True); however, it is recommended simply to use np.NaN values in floating point
1774
+ (as long as masked is True); however, it is recommended simply to use np.nan values in floating point
1775
1775
  property arrays if the commonality is not needed;
1776
1776
  set use_pack True if the hdf5 data may have been written with a similar setting
1777
1777
 
@@ -1948,7 +1948,7 @@ class PropertyCollection():
1948
1948
  the maximum realization number present and slices for any missing realizations will be filled with fill_value;
1949
1949
  if False, the extent of the first axis will only cpver the number pf realizations actually present (see also notes)
1950
1950
  fill_value (int or float, optional): the value to use for missing realization slices; if None, will default to
1951
- np.NaN if data is continuous, -1 otherwise; irrelevant if fill_missing is False
1951
+ np.nan if data is continuous, -1 otherwise; irrelevant if fill_missing is False
1952
1952
  indexable_element (string, optional): the indexable element for the properties in the collection; if None, will
1953
1953
  be determined from the data
1954
1954
 
@@ -1968,7 +1968,7 @@ class PropertyCollection():
1968
1968
  r_list, continuous = pcga._realizations_array_ref_initial_checks(self)
1969
1969
 
1970
1970
  if fill_value is None:
1971
- fill_value = np.NaN if continuous else -1
1971
+ fill_value = np.nan if continuous else -1
1972
1972
  if indexable_element is None:
1973
1973
  indexable_element = self.indexable_for_part(self.parts()[0])
1974
1974
 
@@ -1997,7 +1997,7 @@ class PropertyCollection():
1997
1997
  the maximum time index present and slices for any missing indices will be filled with fill_value; if False,
1998
1998
  the extent of the first axis will only cpver the number pf time indices actually present (see also notes)
1999
1999
  fill_value (int or float, optional): the value to use for missing time index slices; if None, will default to
2000
- np.NaN if data is continuous, -1 otherwise; irrelevant if fill_missing is False
2000
+ np.nan if data is continuous, -1 otherwise; irrelevant if fill_missing is False
2001
2001
  indexable_element (string, optional): the indexable element for the properties in the collection; if None, will
2002
2002
  be determined from the data
2003
2003
 
@@ -2018,7 +2018,7 @@ class PropertyCollection():
2018
2018
  ti_list, continuous = pcga._time_array_ref_initial_checks(self)
2019
2019
 
2020
2020
  if fill_value is None:
2021
- fill_value = np.NaN if continuous else -1
2021
+ fill_value = np.nan if continuous else -1
2022
2022
 
2023
2023
  if indexable_element is None:
2024
2024
  indexable_element = self.indexable_for_part(self.parts()[0])
@@ -1029,7 +1029,7 @@ class Surface(rqsb.BaseSurface):
1029
1029
  t, p = self.triangles_and_points(patch = patch)
1030
1030
  p_list = vec.points_in_triangles_njit(sample_xy, p[t], 1)
1031
1031
  vertical = np.array((0.0, 0.0, 1.0), dtype = float)
1032
- z = np.full(sample_xy.shape[0], np.NaN, dtype = float)
1032
+ z = np.full(sample_xy.shape[0], np.nan, dtype = float)
1033
1033
  for triangle_index, p_index, _ in p_list:
1034
1034
  # todo: replace following with cheaper trilinear interpolation, given vertical intersection line
1035
1035
  xyz = meet.line_triangle_intersect_numba(sample_xy[p_index], vertical, p[t[triangle_index]], t_tol = 0.05)
@@ -241,8 +241,8 @@ class TriMesh(rqs.Mesh):
241
241
  fy[am] = 1.0 - fy[am]
242
242
  j[mask] = -1
243
243
  i[mask] = -1
244
- fx[mask] = np.NaN
245
- fy[mask] = np.NaN
244
+ fx[mask] = np.nan
245
+ fy[mask] = np.nan
246
246
 
247
247
  return (np.stack((j, i), axis = -1), np.stack((1.0 - (fx + fy), fx, fy), axis = -1))
248
248
 
@@ -94,7 +94,7 @@ class TriMeshStencil:
94
94
  # convert into representation more njit & numpy friendly
95
95
  self.start_ip = np.array([ip for (ip, _, _) in half_hex], dtype = int)
96
96
  self.row_length = np.array([rl for (_, rl, _) in half_hex], dtype = int)
97
- self.half_hex = np.full((self.n, 2 * self.n - 1), np.NaN, dtype = float)
97
+ self.half_hex = np.full((self.n, 2 * self.n - 1), np.nan, dtype = float)
98
98
  for jp in range(self.n):
99
99
  self.half_hex[jp, :self.row_length[jp]] = half_hex[jp][2]
100
100
 
@@ -210,7 +210,7 @@ class TriMeshStencil:
210
210
 
211
211
  # todo: class methods for mexican hat
212
212
 
213
- def apply(self, tri_mesh, handle_nan = True, border_value = np.NaN, preserve_nan = False, title = None):
213
+ def apply(self, tri_mesh, handle_nan = True, border_value = np.nan, preserve_nan = False, title = None):
214
214
  """Return a new tri mesh with z values generated by applying the stencil to z values of an existing tri mesh.
215
215
 
216
216
  arguments:
@@ -250,7 +250,7 @@ class TriMeshStencil:
250
250
  if not np.any(nan_mask):
251
251
  nan_mask = None
252
252
  z_values[border:border + tri_mesh.nj, border:border + tri_mesh.ni] = tm_z
253
- applied = np.full((e_nj, e_ni), np.NaN, dtype = float)
253
+ applied = np.full((e_nj, e_ni), np.nan, dtype = float)
254
254
 
255
255
  if handle_nan:
256
256
  _apply_stencil_nanmean(self.n, self.start_ip, self.row_length, self.half_hex, z_values, applied, border,
@@ -262,7 +262,7 @@ class TriMeshStencil:
262
262
  # restore NaN values where they were present in input, if requested
263
263
  tm_z_applied = applied[border:border + tri_mesh.nj, border:border + tri_mesh.ni]
264
264
  if nan_mask is not None:
265
- tm_z_applied[nan_mask] = np.NaN
265
+ tm_z_applied[nan_mask] = np.nan
266
266
 
267
267
  # create a new tri mesh object using the values from the applied array for z
268
268
  tm = rqs.TriMesh(tri_mesh.model,
@@ -335,7 +335,7 @@ class VerticalPrismGrid(PrismGrid):
335
335
  if surf == 0:
336
336
  # allow NaN entries to handle unused distant circumcentres in Voronoi graph data
337
337
  # assert not np.any(nan_lines), 'top surface does not cover all column points'
338
- single_intersects[nan_lines] = np.NaN
338
+ single_intersects[nan_lines] = np.nan
339
339
  else:
340
340
  single_intersects[nan_lines] = points[surf - 1][nan_lines]
341
341
  # populate z values for layer of points
@@ -2579,7 +2579,7 @@ class BlockedWell(BaseResqpy):
2579
2579
  entry_xyz, exit_xyz, ee_crs, pc, pc_titles, ci):
2580
2580
  """Get the x, y and z location of the midpoint of the interval."""
2581
2581
 
2582
- xyz = (np.NaN, np.NaN, np.NaN)
2582
+ xyz = (np.nan, np.nan, np.nan)
2583
2583
  if doing_xyz:
2584
2584
  xyz = self.__get_xyz_if_doing_xyz(length_mode = length_mode,
2585
2585
  md = md,
@@ -2734,7 +2734,7 @@ class BlockedWell(BaseResqpy):
2734
2734
  dtype = np.int32
2735
2735
  else:
2736
2736
  null_value = None
2737
- na_value = np.NaN
2737
+ na_value = np.nan
2738
2738
  dtype = float
2739
2739
  # 'SKIN': use defaults for now; todo: create local property kind for skin
2740
2740
  if column == 'STAT':
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes