resqpy 5.1.0__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.
- {resqpy-5.1.0 → resqpy-5.1.2}/PKG-INFO +1 -1
- {resqpy-5.1.0 → resqpy-5.1.2}/pyproject.toml +1 -1
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/__init__.py +1 -1
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/model/_forestry.py +12 -6
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/multi_processing/wrappers/grid_surface_mp.py +3 -2
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/vector_utilities.py +18 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/surface/_surface.py +19 -15
- {resqpy-5.1.0 → resqpy-5.1.2}/LICENSE +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/README.md +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/crs.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_add_edges_per_column_property_array.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_add_faults.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_add_one_blocked_well_property.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_add_one_grid_property_array.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_add_single_cell_grid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_add_wells_from_ascii_file.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_add_zone_by_layer_property.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_coarsened_grid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_common.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_copy_grid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_drape_to_surface.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_extract_box.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_extract_box_for_well.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_fault_throw_scaling.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_gather_ensemble.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_interpolated_grid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_local_depth_adjustment.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_refined_grid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_tilted_grid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_unsplit_grid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_zonal_grid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/derived_model/_zone_layer_ranges_from_array.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/fault/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/fault/_gcs_functions.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/fault/_grid_connection_set.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_cell_properties.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_connection_sets.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_create_grid_xml.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_defined_geometry.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_extract_functions.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_face_functions.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_faults.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_grid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_grid_types.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_intervals_info.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_pillars.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_pixel_maps.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_points_functions.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_regular_grid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_transmissibility.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_write_hdf5_from_caches.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_write_nexus_corp.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid/_xyz.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid_surface/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid_surface/_blocked_well_populate.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid_surface/_find_faces.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid_surface/_grid_skin.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid_surface/_grid_surface.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid_surface/_trajectory_intersects.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/grid_surface/grid_surface_cuda.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/lines/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/lines/_common.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/lines/_polyline.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/lines/_polyline_set.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/model/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/model/_catalogue.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/model/_context.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/model/_grids.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/model/_hdf5.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/model/_model.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/model/_xml.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/multi_processing/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/multi_processing/_multiprocessing.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/multi_processing/wrappers/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/multi_processing/wrappers/blocked_well_mp.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/multi_processing/wrappers/mesh_mp.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/ab_toolbox.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/base.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/box_utilities.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/class_dict.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/consolidation.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/data/build.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/data/properties.json +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/dataframe.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/exceptions.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/factors.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/fine_coarse.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/grid_functions.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/intersection.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/keyword_files.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/load_data.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/point_inclusion.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/random_seed.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/read_nexus_fault.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/relperm.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/simple_lines.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/time.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/trademark.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/transmission.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/triangulation.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/uuid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/vdb.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/volume.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/wellspec_keywords.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/write_data.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/write_hdf5.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/xml_et.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/xml_namespaces.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/olio/zmap_reader.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/_utils.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/boundary_feature.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/boundary_feature_interpretation.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/earth_model_interpretation.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/fault_interpretation.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/fluid_boundary_feature.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/frontier_feature.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/generic_interpretation.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/genetic_boundary_feature.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/geobody_boundary_interpretation.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/geobody_feature.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/geobody_interpretation.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/geologic_unit_feature.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/horizon_interpretation.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/organization_feature.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/rock_fluid_unit_feature.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/structural_organization_interpretation.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/tectonic_boundary_feature.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/wellbore_feature.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/organize/wellbore_interpretation.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/_collection_add_part.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/_collection_create_xml.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/_collection_get_attributes.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/_collection_support.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/_property.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/attribute_property_set.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/grid_property_collection.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/property_collection.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/property_common.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/property_kind.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/string_lookup.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/well_interval_property.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/well_interval_property_collection.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/well_log.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/property/well_log_collection.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/rq_import/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/rq_import/_add_ab_properties.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/rq_import/_add_surfaces.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/rq_import/_grid_from_cp.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/rq_import/_import_nexus.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/rq_import/_import_vdb_all_grids.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/rq_import/_import_vdb_ensemble.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/strata/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/strata/_binary_contact_interpretation.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/strata/_geologic_unit_interpretation.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/strata/_strata_common.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/strata/_stratigraphic_column.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/strata/_stratigraphic_column_rank.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/strata/_stratigraphic_unit_feature.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/strata/_stratigraphic_unit_interpretation.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/surface/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/surface/_base_surface.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/surface/_combined_surface.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/surface/_mesh.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/surface/_pointset.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/surface/_tri_mesh.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/surface/_tri_mesh_stencil.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/surface/_triangulated_patch.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/time_series/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/time_series/_any_time_series.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/time_series/_from_nexus_summary.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/time_series/_functions.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/time_series/_geologic_time_series.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/time_series/_time_duration.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/time_series/_time_series.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/unstructured/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/unstructured/_hexa_grid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/unstructured/_prism_grid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/unstructured/_pyramid_grid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/unstructured/_tetra_grid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/unstructured/_unstructured_grid.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/weights_and_measures/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/weights_and_measures/nexus_units.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/weights_and_measures/weights_and_measures.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/well/__init__.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/well/_blocked_well.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/well/_deviation_survey.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/well/_md_datum.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/well/_trajectory.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/well/_wellbore_frame.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/well/_wellbore_marker.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/well/_wellbore_marker_frame.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/well/blocked_well_frame.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/well/well_object_funcs.py +0 -0
- {resqpy-5.1.0 → resqpy-5.1.2}/resqpy/well/well_utils.py +0 -0
@@ -686,17 +686,23 @@ def _copy_referenced_parts(model, other_model, realization, consolidate, force,
|
|
686
686
|
resident_uuid_int = model.consolidation.map[ref_uuid_int]
|
687
687
|
assert resident_uuid_int is not None
|
688
688
|
# find referring node for ref_uuid_int and modify its reference to resident_uuid_int
|
689
|
-
if reference_node_dict is None:
|
689
|
+
if reference_node_dict is None: # now mapping uuid int to list of nodes
|
690
690
|
ref_nodes = rqet.list_obj_references(root_node)
|
691
691
|
reference_node_dict = {}
|
692
692
|
for ref_node in ref_nodes:
|
693
693
|
uuid_node = rqet.find_tag(ref_node, 'UUID')
|
694
694
|
uuid_int = bu.uuid_from_string(uuid_node.text).int
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
695
|
+
if uuid_int in reference_node_dict:
|
696
|
+
reference_node_dict[uuid_int].append(uuid_node)
|
697
|
+
else:
|
698
|
+
reference_node_dict[uuid_int] = [uuid_node]
|
699
|
+
uuid_node_list = reference_node_dict.pop(ref_uuid_int)
|
700
|
+
for uuid_node in uuid_node_list:
|
701
|
+
uuid_node.text = str(bu.uuid_from_int(resident_uuid_int))
|
702
|
+
if resident_uuid_int in reference_node_dict:
|
703
|
+
reference_node_dict[resident_uuid_int] += uuid_node_list
|
704
|
+
else:
|
705
|
+
reference_node_dict[resident_uuid_int] = uuid_node_list
|
700
706
|
|
701
707
|
|
702
708
|
def _copy_relationships_for_present_targets(model, other_model, consolidate, force, resident_uuid, root_node):
|
@@ -161,7 +161,8 @@ def find_faces_to_represent_surface_regular_wrapper(
|
|
161
161
|
if flange_radius is None:
|
162
162
|
flange_radius = 5.0 * np.sum(np.array(grid.extent_kji, dtype = float) * np.array(grid.aligned_dxyz()))
|
163
163
|
s_model = rq.Model(surface_epc, quiet = True)
|
164
|
-
|
164
|
+
surface_uuid = str(surface_uuid)
|
165
|
+
model.copy_uuid_from_other_model(s_model, uuid = surface_uuid)
|
165
166
|
if surface_patching_property_uuid is not None:
|
166
167
|
model.copy_uuid_from_other_model(s_model, uuid = surface_patching_property_uuid)
|
167
168
|
uuid_list.append(surface_patching_property_uuid)
|
@@ -213,7 +214,7 @@ def find_faces_to_represent_surface_regular_wrapper(
|
|
213
214
|
inherit_interpretation_relationship(model, surface_uuid, surf.uuid)
|
214
215
|
surface_uuid = surf.uuid
|
215
216
|
|
216
|
-
surface = rqs.Surface(parent_model = model, uuid =
|
217
|
+
surface = rqs.Surface(parent_model = model, uuid = surface_uuid)
|
217
218
|
surf_title = surface.title
|
218
219
|
assert surf_title
|
219
220
|
surface.change_crs(grid.crs)
|
@@ -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
|
|
@@ -480,28 +480,32 @@ class Surface(rqsb.BaseSurface):
|
|
480
480
|
|
481
481
|
old_crs = rqc.Crs(self.model, uuid = self.crs_uuid)
|
482
482
|
self.crs_uuid = required_crs.uuid
|
483
|
-
if required_crs
|
483
|
+
if bu.matching_uuids(required_crs.uuid, old_crs.uuid) or not self.patch_list:
|
484
484
|
log.debug(f'no crs change needed for {self.title}')
|
485
485
|
return
|
486
|
+
equivalent_crs = (required_crs == old_crs)
|
486
487
|
log.debug(f'crs change needed for {self.title} from {old_crs.title} to {required_crs.title}')
|
487
488
|
for patch in self.patch_list:
|
488
|
-
patch.
|
489
|
-
|
489
|
+
assert bu.matching_uuids(patch.crs_uuid, old_crs.uuid)
|
490
|
+
if not equivalent_crs:
|
491
|
+
patch.triangles_and_points()
|
492
|
+
required_crs.convert_array_from(old_crs, patch.points)
|
490
493
|
patch.crs_uuid = self.crs_uuid
|
491
494
|
self.triangles = None # clear cached arrays for surface
|
492
495
|
self.points = None
|
493
|
-
if
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
if
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
496
|
+
if not equivalent_crs:
|
497
|
+
if self.extra_metadata.pop('rotation matrix', None) is not None:
|
498
|
+
log.warning(f'discarding rotation matrix extra metadata during crs change of: {self.title}')
|
499
|
+
self._load_normal_vector_from_extra_metadata()
|
500
|
+
if self.normal_vector is not None:
|
501
|
+
if required_crs.z_inc_down != old_crs.z_inc_down:
|
502
|
+
self.normal_vector[2] = -self.normal_vector[2]
|
503
|
+
theta = (wam.convert(required_crs.rotation, required_crs.rotation_units, 'dega') -
|
504
|
+
wam.convert(old_crs.rotation, old_crs.rotation_units, 'dega'))
|
505
|
+
if not maths.isclose(theta, 0.0):
|
506
|
+
self.normal_vector = vec.rotate_vector(vec.rotation_matrix_3d_axial(2, theta), self.normal_vector)
|
507
|
+
self.extra_metadata['normal vector'] = str(
|
508
|
+
f'{self.normal_vector[0]},{self.normal_vector[1]},{self.normal_vector[2]}')
|
505
509
|
self.uuid = bu.new_uuid() # hope this doesn't cause problems
|
506
510
|
assert self.root is None
|
507
511
|
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|