resqpy 5.1.1__tar.gz → 5.1.2__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 (199) hide show
  1. {resqpy-5.1.1 → resqpy-5.1.2}/PKG-INFO +1 -1
  2. {resqpy-5.1.1 → resqpy-5.1.2}/pyproject.toml +1 -1
  3. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/__init__.py +1 -1
  4. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/vector_utilities.py +18 -0
  5. {resqpy-5.1.1 → resqpy-5.1.2}/LICENSE +0 -0
  6. {resqpy-5.1.1 → resqpy-5.1.2}/README.md +0 -0
  7. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/crs.py +0 -0
  8. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/__init__.py +0 -0
  9. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_add_edges_per_column_property_array.py +0 -0
  10. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_add_faults.py +0 -0
  11. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_add_one_blocked_well_property.py +0 -0
  12. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_add_one_grid_property_array.py +0 -0
  13. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_add_single_cell_grid.py +0 -0
  14. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_add_wells_from_ascii_file.py +0 -0
  15. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_add_zone_by_layer_property.py +0 -0
  16. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_coarsened_grid.py +0 -0
  17. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_common.py +0 -0
  18. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_copy_grid.py +0 -0
  19. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_drape_to_surface.py +0 -0
  20. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_extract_box.py +0 -0
  21. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_extract_box_for_well.py +0 -0
  22. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_fault_throw_scaling.py +0 -0
  23. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_gather_ensemble.py +0 -0
  24. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_interpolated_grid.py +0 -0
  25. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_local_depth_adjustment.py +0 -0
  26. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_refined_grid.py +0 -0
  27. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_tilted_grid.py +0 -0
  28. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_unsplit_grid.py +0 -0
  29. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_zonal_grid.py +0 -0
  30. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/derived_model/_zone_layer_ranges_from_array.py +0 -0
  31. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/fault/__init__.py +0 -0
  32. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/fault/_gcs_functions.py +0 -0
  33. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/fault/_grid_connection_set.py +0 -0
  34. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/__init__.py +0 -0
  35. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_cell_properties.py +0 -0
  36. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_connection_sets.py +0 -0
  37. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_create_grid_xml.py +0 -0
  38. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_defined_geometry.py +0 -0
  39. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_extract_functions.py +0 -0
  40. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_face_functions.py +0 -0
  41. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_faults.py +0 -0
  42. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_grid.py +0 -0
  43. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_grid_types.py +0 -0
  44. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_intervals_info.py +0 -0
  45. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_pillars.py +0 -0
  46. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_pixel_maps.py +0 -0
  47. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_points_functions.py +0 -0
  48. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_regular_grid.py +0 -0
  49. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_transmissibility.py +0 -0
  50. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_write_hdf5_from_caches.py +0 -0
  51. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_write_nexus_corp.py +0 -0
  52. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid/_xyz.py +0 -0
  53. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid_surface/__init__.py +0 -0
  54. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid_surface/_blocked_well_populate.py +0 -0
  55. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid_surface/_find_faces.py +0 -0
  56. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid_surface/_grid_skin.py +0 -0
  57. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid_surface/_grid_surface.py +0 -0
  58. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid_surface/_trajectory_intersects.py +0 -0
  59. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/grid_surface/grid_surface_cuda.py +0 -0
  60. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/lines/__init__.py +0 -0
  61. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/lines/_common.py +0 -0
  62. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/lines/_polyline.py +0 -0
  63. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/lines/_polyline_set.py +0 -0
  64. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/__init__.py +0 -0
  65. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/_catalogue.py +0 -0
  66. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/_context.py +0 -0
  67. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/_forestry.py +0 -0
  68. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/_grids.py +0 -0
  69. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/_hdf5.py +0 -0
  70. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/_model.py +0 -0
  71. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/model/_xml.py +0 -0
  72. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/multi_processing/__init__.py +0 -0
  73. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/multi_processing/_multiprocessing.py +0 -0
  74. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/multi_processing/wrappers/__init__.py +0 -0
  75. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/multi_processing/wrappers/blocked_well_mp.py +0 -0
  76. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/multi_processing/wrappers/grid_surface_mp.py +0 -0
  77. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/multi_processing/wrappers/mesh_mp.py +0 -0
  78. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/__init__.py +0 -0
  79. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/ab_toolbox.py +0 -0
  80. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/base.py +0 -0
  81. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/box_utilities.py +0 -0
  82. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/class_dict.py +0 -0
  83. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/consolidation.py +0 -0
  84. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/data/build.py +0 -0
  85. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/data/properties.json +0 -0
  86. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/dataframe.py +0 -0
  87. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/exceptions.py +0 -0
  88. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/factors.py +0 -0
  89. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/fine_coarse.py +0 -0
  90. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/grid_functions.py +0 -0
  91. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/intersection.py +0 -0
  92. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/keyword_files.py +0 -0
  93. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/load_data.py +0 -0
  94. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/point_inclusion.py +0 -0
  95. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/random_seed.py +0 -0
  96. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/read_nexus_fault.py +0 -0
  97. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/relperm.py +0 -0
  98. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/simple_lines.py +0 -0
  99. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/time.py +0 -0
  100. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/trademark.py +0 -0
  101. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/transmission.py +0 -0
  102. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/triangulation.py +0 -0
  103. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/uuid.py +0 -0
  104. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/vdb.py +0 -0
  105. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/volume.py +0 -0
  106. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/wellspec_keywords.py +0 -0
  107. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/write_data.py +0 -0
  108. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/write_hdf5.py +0 -0
  109. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/xml_et.py +0 -0
  110. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/xml_namespaces.py +0 -0
  111. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/olio/zmap_reader.py +0 -0
  112. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/__init__.py +0 -0
  113. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/_utils.py +0 -0
  114. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/boundary_feature.py +0 -0
  115. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/boundary_feature_interpretation.py +0 -0
  116. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/earth_model_interpretation.py +0 -0
  117. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/fault_interpretation.py +0 -0
  118. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/fluid_boundary_feature.py +0 -0
  119. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/frontier_feature.py +0 -0
  120. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/generic_interpretation.py +0 -0
  121. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/genetic_boundary_feature.py +0 -0
  122. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/geobody_boundary_interpretation.py +0 -0
  123. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/geobody_feature.py +0 -0
  124. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/geobody_interpretation.py +0 -0
  125. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/geologic_unit_feature.py +0 -0
  126. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/horizon_interpretation.py +0 -0
  127. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/organization_feature.py +0 -0
  128. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/rock_fluid_unit_feature.py +0 -0
  129. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/structural_organization_interpretation.py +0 -0
  130. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/tectonic_boundary_feature.py +0 -0
  131. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/wellbore_feature.py +0 -0
  132. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/organize/wellbore_interpretation.py +0 -0
  133. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/__init__.py +0 -0
  134. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/_collection_add_part.py +0 -0
  135. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/_collection_create_xml.py +0 -0
  136. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/_collection_get_attributes.py +0 -0
  137. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/_collection_support.py +0 -0
  138. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/_property.py +0 -0
  139. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/attribute_property_set.py +0 -0
  140. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/grid_property_collection.py +0 -0
  141. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/property_collection.py +0 -0
  142. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/property_common.py +0 -0
  143. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/property_kind.py +0 -0
  144. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/string_lookup.py +0 -0
  145. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/well_interval_property.py +0 -0
  146. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/well_interval_property_collection.py +0 -0
  147. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/well_log.py +0 -0
  148. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/property/well_log_collection.py +0 -0
  149. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/rq_import/__init__.py +0 -0
  150. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/rq_import/_add_ab_properties.py +0 -0
  151. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/rq_import/_add_surfaces.py +0 -0
  152. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/rq_import/_grid_from_cp.py +0 -0
  153. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/rq_import/_import_nexus.py +0 -0
  154. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/rq_import/_import_vdb_all_grids.py +0 -0
  155. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/rq_import/_import_vdb_ensemble.py +0 -0
  156. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/__init__.py +0 -0
  157. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/_binary_contact_interpretation.py +0 -0
  158. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/_geologic_unit_interpretation.py +0 -0
  159. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/_strata_common.py +0 -0
  160. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/_stratigraphic_column.py +0 -0
  161. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/_stratigraphic_column_rank.py +0 -0
  162. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/_stratigraphic_unit_feature.py +0 -0
  163. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/strata/_stratigraphic_unit_interpretation.py +0 -0
  164. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/__init__.py +0 -0
  165. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_base_surface.py +0 -0
  166. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_combined_surface.py +0 -0
  167. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_mesh.py +0 -0
  168. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_pointset.py +0 -0
  169. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_surface.py +0 -0
  170. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_tri_mesh.py +0 -0
  171. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_tri_mesh_stencil.py +0 -0
  172. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/surface/_triangulated_patch.py +0 -0
  173. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/time_series/__init__.py +0 -0
  174. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/time_series/_any_time_series.py +0 -0
  175. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/time_series/_from_nexus_summary.py +0 -0
  176. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/time_series/_functions.py +0 -0
  177. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/time_series/_geologic_time_series.py +0 -0
  178. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/time_series/_time_duration.py +0 -0
  179. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/time_series/_time_series.py +0 -0
  180. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/unstructured/__init__.py +0 -0
  181. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/unstructured/_hexa_grid.py +0 -0
  182. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/unstructured/_prism_grid.py +0 -0
  183. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/unstructured/_pyramid_grid.py +0 -0
  184. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/unstructured/_tetra_grid.py +0 -0
  185. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/unstructured/_unstructured_grid.py +0 -0
  186. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/weights_and_measures/__init__.py +0 -0
  187. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/weights_and_measures/nexus_units.py +0 -0
  188. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/weights_and_measures/weights_and_measures.py +0 -0
  189. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/__init__.py +0 -0
  190. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/_blocked_well.py +0 -0
  191. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/_deviation_survey.py +0 -0
  192. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/_md_datum.py +0 -0
  193. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/_trajectory.py +0 -0
  194. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/_wellbore_frame.py +0 -0
  195. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/_wellbore_marker.py +0 -0
  196. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/_wellbore_marker_frame.py +0 -0
  197. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/blocked_well_frame.py +0 -0
  198. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/well_object_funcs.py +0 -0
  199. {resqpy-5.1.1 → resqpy-5.1.2}/resqpy/well/well_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: resqpy
3
- Version: 5.1.1
3
+ Version: 5.1.2
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 = "5.1.1" # Set at build time
12
+ version = "5.1.2" # 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__ = "5.1.1" # Set at build time
31
+ __version__ = "5.1.2" # Set at build time
32
32
  log = logging.getLogger(__name__)
33
33
  log.info(f"Imported resqpy version {__version__}")
@@ -1363,6 +1363,24 @@ def triangle_normal_vector_numba(points): # pragma: no cover
1363
1363
  return v / np.linalg.norm(v)
1364
1364
 
1365
1365
 
1366
+ @njit
1367
+ def triangles_normal_vectors(t: np.ndarray, p: np.ndarray) -> np.ndarray: # pragma: no cover
1368
+ """For a triangulated set, return an array of unit normal vectors (one per triangle).
1369
+
1370
+ note:
1371
+ resulting vectors implicitly assume that xy & z units are the same; if this is not the case, adjust vectors
1372
+ afterwards as required
1373
+ """
1374
+ nv = np.empty((len(t), 3), dtype = np.float64)
1375
+ v = np.zeros(3, dtype = np.float64)
1376
+ for ti in range(len(t)):
1377
+ v[:] = np.cross(p[t[ti, 0]] - p[t[ti, 1]], p[t[ti, 0]] - p[t[ti, 2]])
1378
+ if v[2] < 0.0:
1379
+ v[:] = -v
1380
+ nv[ti, :] = v / np.linalg.norm(v)
1381
+ return nv
1382
+
1383
+
1366
1384
  def in_circumcircle(a, b, c, d):
1367
1385
  """Returns True if point d lies within the circumcircle pf ccw points a, b, c, projected onto xy plane.
1368
1386
 
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
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