resqpy 4.12.0__tar.gz → 4.12.2__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {resqpy-4.12.0 → resqpy-4.12.2}/PKG-INFO +1 -1
- {resqpy-4.12.0 → resqpy-4.12.2}/pyproject.toml +1 -1
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/__init__.py +1 -1
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/lines/_polyline.py +13 -17
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/lines/_polyline_set.py +9 -3
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/well/_blocked_well.py +20 -3
- {resqpy-4.12.0 → resqpy-4.12.2}/LICENSE +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/README.md +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/crs.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_add_edges_per_column_property_array.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_add_faults.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_add_one_blocked_well_property.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_add_one_grid_property_array.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_add_single_cell_grid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_add_wells_from_ascii_file.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_add_zone_by_layer_property.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_coarsened_grid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_common.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_copy_grid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_drape_to_surface.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_extract_box.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_extract_box_for_well.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_fault_throw_scaling.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_gather_ensemble.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_interpolated_grid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_local_depth_adjustment.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_refined_grid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_tilted_grid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_unsplit_grid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_zonal_grid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_zone_layer_ranges_from_array.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/fault/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/fault/_gcs_functions.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/fault/_grid_connection_set.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_cell_properties.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_connection_sets.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_create_grid_xml.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_defined_geometry.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_extract_functions.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_face_functions.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_faults.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_grid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_grid_types.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_intervals_info.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_moved_functions.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_pillars.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_pixel_maps.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_points_functions.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_regular_grid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_transmissibility.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_write_hdf5_from_caches.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_write_nexus_corp.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid/_xyz.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid_surface/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid_surface/_blocked_well_populate.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid_surface/_find_faces.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid_surface/_grid_skin.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid_surface/_grid_surface.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid_surface/_trajectory_intersects.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/grid_surface/grid_surface_cuda.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/lines/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/lines/_common.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/model/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/model/_catalogue.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/model/_context.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/model/_forestry.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/model/_grids.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/model/_hdf5.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/model/_model.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/model/_xml.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/multi_processing/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/multi_processing/_multiprocessing.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/multi_processing/wrappers/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/multi_processing/wrappers/blocked_well_mp.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/multi_processing/wrappers/grid_surface_mp.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/multi_processing/wrappers/mesh_mp.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/ab_toolbox.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/base.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/box_utilities.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/class_dict.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/consolidation.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/data/build.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/data/properties.json +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/dataframe.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/exceptions.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/factors.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/fine_coarse.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/grid_functions.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/intersection.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/keyword_files.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/load_data.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/point_inclusion.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/random_seed.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/read_nexus_fault.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/relperm.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/simple_lines.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/time.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/trademark.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/transmission.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/triangulation.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/uuid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/vdb.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/vector_utilities.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/volume.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/wellspec_keywords.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/write_data.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/write_hdf5.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/xml_et.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/xml_namespaces.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/olio/zmap_reader.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/_utils.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/boundary_feature.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/boundary_feature_interpretation.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/earth_model_interpretation.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/fault_interpretation.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/fluid_boundary_feature.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/frontier_feature.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/generic_interpretation.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/genetic_boundary_feature.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/geobody_boundary_interpretation.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/geobody_feature.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/geobody_interpretation.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/geologic_unit_feature.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/horizon_interpretation.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/organization_feature.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/rock_fluid_unit_feature.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/structural_organization_interpretation.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/tectonic_boundary_feature.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/wellbore_feature.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/organize/wellbore_interpretation.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/property/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/property/_collection_add_part.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/property/_collection_create_xml.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/property/_collection_get_attributes.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/property/_collection_support.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/property/_property.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/property/grid_property_collection.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/property/property_collection.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/property/property_common.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/property/property_kind.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/property/string_lookup.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/property/well_interval_property.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/property/well_interval_property_collection.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/property/well_log.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/property/well_log_collection.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/rq_import/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/rq_import/_add_ab_properties.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/rq_import/_add_surfaces.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/rq_import/_grid_from_cp.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/rq_import/_import_nexus.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/rq_import/_import_vdb_all_grids.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/rq_import/_import_vdb_ensemble.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/strata/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/strata/_binary_contact_interpretation.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/strata/_geologic_unit_interpretation.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/strata/_strata_common.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/strata/_stratigraphic_column.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/strata/_stratigraphic_column_rank.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/strata/_stratigraphic_unit_feature.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/strata/_stratigraphic_unit_interpretation.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/surface/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/surface/_base_surface.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/surface/_combined_surface.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/surface/_mesh.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/surface/_pointset.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/surface/_surface.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/surface/_tri_mesh.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/surface/_triangulated_patch.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/time_series/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/time_series/_any_time_series.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/time_series/_from_nexus_summary.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/time_series/_functions.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/time_series/_geologic_time_series.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/time_series/_time_duration.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/time_series/_time_series.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/unstructured/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/unstructured/_hexa_grid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/unstructured/_prism_grid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/unstructured/_pyramid_grid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/unstructured/_tetra_grid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/unstructured/_unstructured_grid.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/weights_and_measures/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/weights_and_measures/nexus_units.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/weights_and_measures/weights_and_measures.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/well/__init__.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/well/_deviation_survey.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/well/_md_datum.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/well/_trajectory.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/well/_wellbore_frame.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/well/_wellbore_marker.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/well/_wellbore_marker_frame.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/well/blocked_well_frame.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/well/well_object_funcs.py +0 -0
- {resqpy-4.12.0 → resqpy-4.12.2}/resqpy/well/well_utils.py +0 -0
@@ -8,15 +8,15 @@ import math as maths
|
|
8
8
|
import numpy as np
|
9
9
|
import warnings
|
10
10
|
|
11
|
-
import resqpy.
|
12
|
-
import resqpy.lines
|
11
|
+
import resqpy.crs as rqc
|
12
|
+
import resqpy.lines._common as rql_c
|
13
13
|
import resqpy.property as rqp
|
14
14
|
import resqpy.olio.point_inclusion as pip
|
15
15
|
import resqpy.olio.uuid as bu
|
16
16
|
import resqpy.olio.vector_utilities as vu
|
17
17
|
import resqpy.olio.write_hdf5 as rwh5
|
18
18
|
import resqpy.olio.xml_et as rqet
|
19
|
-
import resqpy.
|
19
|
+
import resqpy.olio.intersection as meet
|
20
20
|
from resqpy.olio.xml_namespaces import curly_namespace as ns
|
21
21
|
|
22
22
|
|
@@ -330,21 +330,17 @@ class Polyline(rql_c._BasePolyline):
|
|
330
330
|
return result
|
331
331
|
|
332
332
|
def is_clockwise(self, trust_metadata = True):
|
333
|
-
"""Returns True if
|
334
|
-
|
335
|
-
note:
|
336
|
-
this method currently assumes that the xy axes are left-handed
|
337
|
-
"""
|
333
|
+
"""Returns True if closed polyline is clockwise when viewed from above; False if anti-clockwise."""
|
338
334
|
|
335
|
+
assert self.isclosed, 'Polyline.is_clockwise() called for open polyline (only applicable to closed polylines)'
|
339
336
|
if trust_metadata and self.extra_metadata is not None and 'is_clockwise' in self.extra_metadata.keys():
|
340
337
|
return str(self.extra_metadata['is_clockwise']).lower() == 'true'
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
result =
|
347
|
-
break
|
338
|
+
centre = np.mean(self.coordinates, axis = 0)
|
339
|
+
cw = vu.clockwise(centre, self.coordinates[0], self.coordinates[1])
|
340
|
+
result = (cw > 0.0)
|
341
|
+
crs = rqc.Crs(self.model, uuid = self.crs_uuid)
|
342
|
+
if crs.is_right_handed_xy():
|
343
|
+
result = not result
|
348
344
|
if result is not None:
|
349
345
|
self.append_extra_metadata({'is_clockwise': str(result).lower()})
|
350
346
|
return result
|
@@ -716,8 +712,8 @@ class Polyline(rql_c._BasePolyline):
|
|
716
712
|
|
717
713
|
assert mode in ['square', 'perimeter', 'circle']
|
718
714
|
assert 0.0 <= norm_x <= 1.0 and 0.0 <= norm_y <= 1.0
|
719
|
-
assert self.is_convex(
|
720
|
-
|
715
|
+
assert self.is_convex(), \
|
716
|
+
'attempt to find denormalised x,y within a polyline that is not a closed convex polygon'
|
721
717
|
centre_xy = self.balanced_centre()[:2]
|
722
718
|
x, y = None, None
|
723
719
|
if mode == 'square':
|
@@ -466,23 +466,29 @@ class PolylineSet(rql_c._BasePolyline):
|
|
466
466
|
closed_node = rqet.find_nested_tags(self.root, ['LinePatch', 'ClosedPolylines'])
|
467
467
|
if closed_node is not None:
|
468
468
|
closed_array[:] = self.get_bool_array(closed_node)
|
469
|
+
else:
|
470
|
+
closed_array = None
|
469
471
|
if coordinates is None:
|
470
472
|
coordinates = self.coordinates
|
471
473
|
if crs_uuid is None:
|
472
474
|
crs_uuid = self.crs_uuid
|
473
475
|
if rep_int_root is None:
|
474
476
|
rep_int_root = self.rep_int_root
|
477
|
+
|
475
478
|
polys = []
|
476
479
|
count = 0
|
477
480
|
for i in range(len(count_perpol)):
|
478
481
|
if i != len(count_perpol) - 1:
|
479
482
|
subset = coordinates[count:int(count_perpol[i]) + count].copy()
|
480
483
|
else:
|
481
|
-
subset = coordinates[count:int(count_perpol[i]) + count + 1].copy()
|
482
|
-
|
483
|
-
|
484
|
+
subset = coordinates[count:int(count_perpol[i]) + count + 1].copy() # is this correct?
|
485
|
+
duplicated_end_points = np.all(np.isclose(subset[0], subset[-1])) and len(subset) > 2
|
486
|
+
if closed_array is None:
|
487
|
+
isclosed = duplicated_end_points
|
484
488
|
else:
|
485
489
|
isclosed = closed_array[i]
|
490
|
+
if isclosed and duplicated_end_points:
|
491
|
+
subset = subset[:-1]
|
486
492
|
count += int(count_perpol[i])
|
487
493
|
subtitle = f"{self.title} {i+1}"
|
488
494
|
polys.append(
|
@@ -1,7 +1,7 @@
|
|
1
1
|
"""BlockedWell class."""
|
2
2
|
|
3
3
|
# Nexus is a registered trademark of the Halliburton Company
|
4
|
-
# RMS and ROXAR are registered trademarks of Roxar Software Solutions AS, an
|
4
|
+
# RMS and ROXAR are registered trademarks of Roxar Software Solutions AS, an AspenTech company
|
5
5
|
|
6
6
|
import logging
|
7
7
|
|
@@ -301,7 +301,20 @@ class BlockedWell(BaseResqpy):
|
|
301
301
|
gi_node = rqet.find_tag(node, 'GridIndices')
|
302
302
|
assert gi_node is not None, 'blocked well grid indices hdf5 reference not found in xml'
|
303
303
|
rqwu.load_hdf5_array(self, gi_node, 'grid_indices', dtype = 'int')
|
304
|
-
assert self.grid_indices is not None and self.grid_indices.ndim == 1 and self.grid_indices.size == self.node_count - 1
|
304
|
+
# assert self.grid_indices is not None and self.grid_indices.ndim == 1 and self.grid_indices.size == self.node_count - 1
|
305
|
+
# temporary code to handle blocked wells with incorrectly shaped grid indices wrt. nodes
|
306
|
+
assert self.grid_indices is not None and self.grid_indices.ndim == 1
|
307
|
+
if self.grid_indices.size != self.node_count - 1:
|
308
|
+
if self.grid_indices.size == self.cell_count and self.node_count == 2 * self.cell_count:
|
309
|
+
log.warning(f'handling node duplication or missing unblocked intervals in blocked well: {self.title}')
|
310
|
+
|
311
|
+
expanded_grid_indices = np.full(self.node_count - 1, -1, dtype = int)
|
312
|
+
expanded_grid_indices[::2] = self.grid_indices
|
313
|
+
self.grid_indices = expanded_grid_indices
|
314
|
+
else:
|
315
|
+
raise ValueError(
|
316
|
+
f'incorrect grid indices size with respect to node count in blocked well: {self.title}')
|
317
|
+
# end of temporary code
|
305
318
|
unique_grid_indices = np.unique(self.grid_indices) # sorted list of unique values
|
306
319
|
self.gridind_null = rqet.find_tag_int(gi_node, 'NullValue')
|
307
320
|
if self.gridind_null is None:
|
@@ -1477,6 +1490,10 @@ class BlockedWell(BaseResqpy):
|
|
1477
1490
|
|
1478
1491
|
grid_crs_list = self.__verify_number_of_grids_and_crs_units(column_list = column_list)
|
1479
1492
|
|
1493
|
+
if doing_kh or doing_xyz or doing_angles or doing_entry_exit:
|
1494
|
+
for grid in self.grid_list:
|
1495
|
+
grid.cache_all_geometry_arrays()
|
1496
|
+
|
1480
1497
|
k_face_check = np.zeros((2, 2), dtype = int)
|
1481
1498
|
k_face_check[1, 1] = 1 # now represents entry, exit of K-, K+
|
1482
1499
|
k_face_check_end = k_face_check.copy()
|
@@ -3057,7 +3074,7 @@ class BlockedWell(BaseResqpy):
|
|
3057
3074
|
if BlockedWell.__is_float_column(col_name):
|
3058
3075
|
form = '{0:>' + str(width) + '.3f}'
|
3059
3076
|
value = row[col_name]
|
3060
|
-
if col_name == 'ANGLA' and (
|
3077
|
+
if col_name == 'ANGLA' and (pd.isna(row[col_name]) or value is None or np.isnan(value)):
|
3061
3078
|
value = 0.0
|
3062
3079
|
fp.write(sep + form.format(float(value)))
|
3063
3080
|
else:
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{resqpy-4.12.0 → resqpy-4.12.2}/resqpy/derived_model/_add_edges_per_column_property_array.py
RENAMED
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
|
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
|
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
|
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
|
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
|