resqpy 4.15.3__tar.gz → 4.16.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {resqpy-4.15.3 → resqpy-4.16.1}/PKG-INFO +1 -1
- {resqpy-4.15.3 → resqpy-4.16.1}/pyproject.toml +1 -1
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/__init__.py +1 -1
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/fault/_gcs_functions.py +6 -6
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/fault/_grid_connection_set.py +29 -38
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_grid.py +3 -3
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/_collection_create_xml.py +1 -1
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/property_common.py +3 -8
- {resqpy-4.15.3 → resqpy-4.16.1}/LICENSE +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/README.md +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/crs.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_add_edges_per_column_property_array.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_add_faults.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_add_one_blocked_well_property.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_add_one_grid_property_array.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_add_single_cell_grid.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_add_wells_from_ascii_file.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_add_zone_by_layer_property.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_coarsened_grid.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_common.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_copy_grid.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_drape_to_surface.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_extract_box.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_extract_box_for_well.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_fault_throw_scaling.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_gather_ensemble.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_interpolated_grid.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_local_depth_adjustment.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_refined_grid.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_tilted_grid.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_unsplit_grid.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_zonal_grid.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/derived_model/_zone_layer_ranges_from_array.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/fault/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_cell_properties.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_connection_sets.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_create_grid_xml.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_defined_geometry.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_extract_functions.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_face_functions.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_faults.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_grid_types.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_intervals_info.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_moved_functions.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_pillars.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_pixel_maps.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_points_functions.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_regular_grid.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_transmissibility.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_write_hdf5_from_caches.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_write_nexus_corp.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid/_xyz.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid_surface/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid_surface/_blocked_well_populate.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid_surface/_find_faces.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid_surface/_grid_skin.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid_surface/_grid_surface.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid_surface/_trajectory_intersects.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/grid_surface/grid_surface_cuda.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/lines/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/lines/_common.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/lines/_polyline.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/lines/_polyline_set.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/_catalogue.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/_context.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/_forestry.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/_grids.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/_hdf5.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/_model.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/model/_xml.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/multi_processing/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/multi_processing/_multiprocessing.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/multi_processing/wrappers/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/multi_processing/wrappers/blocked_well_mp.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/multi_processing/wrappers/grid_surface_mp.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/multi_processing/wrappers/mesh_mp.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/ab_toolbox.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/base.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/box_utilities.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/class_dict.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/consolidation.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/data/build.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/data/properties.json +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/dataframe.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/exceptions.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/factors.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/fine_coarse.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/grid_functions.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/intersection.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/keyword_files.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/load_data.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/point_inclusion.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/random_seed.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/read_nexus_fault.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/relperm.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/simple_lines.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/time.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/trademark.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/transmission.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/triangulation.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/uuid.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/vdb.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/vector_utilities.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/volume.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/wellspec_keywords.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/write_data.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/write_hdf5.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/xml_et.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/xml_namespaces.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/olio/zmap_reader.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/_utils.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/boundary_feature.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/boundary_feature_interpretation.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/earth_model_interpretation.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/fault_interpretation.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/fluid_boundary_feature.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/frontier_feature.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/generic_interpretation.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/genetic_boundary_feature.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/geobody_boundary_interpretation.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/geobody_feature.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/geobody_interpretation.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/geologic_unit_feature.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/horizon_interpretation.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/organization_feature.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/rock_fluid_unit_feature.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/structural_organization_interpretation.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/tectonic_boundary_feature.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/wellbore_feature.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/organize/wellbore_interpretation.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/_collection_add_part.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/_collection_get_attributes.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/_collection_support.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/_property.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/attribute_property_set.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/grid_property_collection.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/property_collection.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/property_kind.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/string_lookup.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/well_interval_property.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/well_interval_property_collection.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/well_log.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/property/well_log_collection.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/rq_import/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/rq_import/_add_ab_properties.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/rq_import/_add_surfaces.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/rq_import/_grid_from_cp.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/rq_import/_import_nexus.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/rq_import/_import_vdb_all_grids.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/rq_import/_import_vdb_ensemble.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/_binary_contact_interpretation.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/_geologic_unit_interpretation.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/_strata_common.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/_stratigraphic_column.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/_stratigraphic_column_rank.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/_stratigraphic_unit_feature.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/strata/_stratigraphic_unit_interpretation.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_base_surface.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_combined_surface.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_mesh.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_pointset.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_surface.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_tri_mesh.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_tri_mesh_stencil.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/surface/_triangulated_patch.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/time_series/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/time_series/_any_time_series.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/time_series/_from_nexus_summary.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/time_series/_functions.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/time_series/_geologic_time_series.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/time_series/_time_duration.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/time_series/_time_series.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/unstructured/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/unstructured/_hexa_grid.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/unstructured/_prism_grid.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/unstructured/_pyramid_grid.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/unstructured/_tetra_grid.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/unstructured/_unstructured_grid.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/weights_and_measures/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/weights_and_measures/nexus_units.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/weights_and_measures/weights_and_measures.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/__init__.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/_blocked_well.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/_deviation_survey.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/_md_datum.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/_trajectory.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/_wellbore_frame.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/_wellbore_marker.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/_wellbore_marker_frame.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/blocked_well_frame.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/well_object_funcs.py +0 -0
- {resqpy-4.15.3 → resqpy-4.16.1}/resqpy/well/well_utils.py +0 -0
@@ -439,29 +439,29 @@ def combined_tr_mult_from_gcs_mults(model,
|
|
439
439
|
|
440
440
|
# merge in each of the three directional face arrays for this gcs with combined arrays
|
441
441
|
for (combo_trm, gcs_trm) in [(combo_trm_k, gcs_trm_k), (combo_trm_j, gcs_trm_j), (combo_trm_i, gcs_trm_i)]:
|
442
|
-
mask = np.logical_not(np.isnan(gcs_trm)) # true where this tr mult is present
|
442
|
+
mask = np.logical_not(np.isnan(gcs_trm)).astype(bool) # true where this tr mult is present
|
443
443
|
clash_mask = np.logical_and(mask, np.logical_not(np.isnan(combo_trm))) # true where combined value clashes
|
444
444
|
if np.any(clash_mask):
|
445
445
|
if merge_mode == 'exception':
|
446
446
|
raise ValueError('gcs transmissibility multiplier conflict when merging')
|
447
447
|
if merge_mode == 'minimum':
|
448
|
-
combo_trm[
|
448
|
+
combo_trm[clash_mask] = np.minimum(combo_trm, gcs_trm)[clash_mask]
|
449
449
|
elif merge_mode == 'maximum':
|
450
|
-
combo_trm[
|
450
|
+
combo_trm[clash_mask] = np.maximum(combo_trm, gcs_trm)[clash_mask]
|
451
451
|
elif merge_mode == 'multiply':
|
452
|
-
combo_trm[
|
452
|
+
combo_trm[clash_mask] = (combo_trm * gcs_trm)[clash_mask]
|
453
453
|
else:
|
454
454
|
raise Exception(f'code failure with unrecognised merge mode {merge_mode}')
|
455
455
|
mask = np.logical_and(mask,
|
456
456
|
np.logical_not(clash_mask)) # remove clash faces from mask (already handled)
|
457
457
|
if np.any(mask):
|
458
|
-
combo_trm[
|
458
|
+
combo_trm[mask] = gcs_trm[mask] # update combined array from individual array
|
459
459
|
|
460
460
|
# for each of the 3 combined tr mult arrays, replace unused values with the default fill value
|
461
461
|
# also check that any set values are non-negative
|
462
462
|
for combo_trm in (combo_trm_k, combo_trm_j, combo_trm_i):
|
463
463
|
if fill_value is not None and not np.isnan(fill_value):
|
464
|
-
combo_trm[:]
|
464
|
+
combo_trm[:][np.isnan(combo_trm).astype(bool)] = fill_value
|
465
465
|
assert np.all(combo_trm >= 0.0)
|
466
466
|
else:
|
467
467
|
assert np.all(np.logical_or(np.isnan(combo_trm), combo_trm >= 0.0))
|
@@ -2100,9 +2100,6 @@ class GridConnectionSet(BaseResqpy):
|
|
2100
2100
|
ak = np.full((nk + 1, nj, ni), default_value, dtype = dtype)
|
2101
2101
|
aj = np.full((nk, nj + 1, ni), default_value, dtype = dtype)
|
2102
2102
|
ai = np.full((nk, nj, ni + 1), default_value, dtype = dtype)
|
2103
|
-
# mk = np.zeros((nk + 1, nj, ni), dtype = bool)
|
2104
|
-
# mj = np.zeros((nk, nj + 1, ni), dtype = bool)
|
2105
|
-
# mi = np.zeros((nk, nj, ni + 1), dtype = bool)
|
2106
2103
|
|
2107
2104
|
# populate arrays from faces of gcs, optionally filtered by feature index
|
2108
2105
|
cip, fip = self.list_of_cell_face_pairs_for_feature_index(None)
|
@@ -2113,42 +2110,36 @@ class GridConnectionSet(BaseResqpy):
|
|
2113
2110
|
else:
|
2114
2111
|
indices = self.indices_for_feature_index(feature_index)
|
2115
2112
|
|
2116
|
-
# opposing_count = 0
|
2117
2113
|
side_list = ([0] if lazy else [0, 1])
|
2118
|
-
|
2119
|
-
|
2120
|
-
|
2121
|
-
|
2122
|
-
|
2123
|
-
|
2124
|
-
|
2125
|
-
|
2126
|
-
|
2127
|
-
|
2128
|
-
|
2129
|
-
|
2130
|
-
|
2131
|
-
|
2132
|
-
|
2133
|
-
|
2134
|
-
|
2135
|
-
|
2136
|
-
|
2137
|
-
|
2138
|
-
|
2139
|
-
|
2140
|
-
|
2141
|
-
|
2142
|
-
|
2143
|
-
|
2144
|
-
|
2145
|
-
|
2146
|
-
|
2147
|
-
|
2148
|
-
# if opposing_count:
|
2149
|
-
# log.warning(f'{opposing_count} suspicious opposing faces of {len(indices)} detected in gcs: {self.title}')
|
2150
|
-
# else:
|
2151
|
-
# log.debug(f'no suspicious opposing faces detected in gcs: {self.title}')
|
2114
|
+
|
2115
|
+
value_array = gcs_prop_array.copy()
|
2116
|
+
if baffle_mask is not None:
|
2117
|
+
value_array[baffle_mask] = 0 # will be cast to float (or bool) if needed
|
2118
|
+
if active_mask is not None:
|
2119
|
+
cip = cip[active_mask, :, :]
|
2120
|
+
value_array = value_array[active_mask]
|
2121
|
+
|
2122
|
+
for side in side_list:
|
2123
|
+
cell_kji0 = cip[:, side].copy() # shape (N, 3)
|
2124
|
+
axis = fip[:, side, 0] # shape (N,)
|
2125
|
+
polarity = fip[:, side, 1] # shape (N,)
|
2126
|
+
assert 0 <= np.min(axis) and np.max(axis) <= 2
|
2127
|
+
assert 0 <= np.min(polarity) and np.max(polarity) <= 1
|
2128
|
+
|
2129
|
+
axis_mask = (axis == 0).astype(bool)
|
2130
|
+
ak_kji0 = cell_kji0[axis_mask, :]
|
2131
|
+
ak_kji0[:, 0] += polarity[axis_mask]
|
2132
|
+
ak[ak_kji0[:, 0], ak_kji0[:, 1], ak_kji0[:, 2]] = value_array[axis_mask]
|
2133
|
+
|
2134
|
+
axis_mask = (axis == 1).astype(bool)
|
2135
|
+
aj_kji0 = cell_kji0[axis_mask, :]
|
2136
|
+
aj_kji0[:, 1] += polarity[axis_mask]
|
2137
|
+
aj[aj_kji0[:, 0], aj_kji0[:, 1], aj_kji0[:, 2]] = value_array[axis_mask]
|
2138
|
+
|
2139
|
+
axis_mask = (axis == 2).astype(bool)
|
2140
|
+
ai_kji0 = cell_kji0[axis_mask, :]
|
2141
|
+
ai_kji0[:, 2] += polarity[axis_mask]
|
2142
|
+
ai[ai_kji0[:, 0], ai_kji0[:, 1], ai_kji0[:, 2]] = value_array[axis_mask]
|
2152
2143
|
|
2153
2144
|
return (ak, aj, ai)
|
2154
2145
|
|
@@ -2255,9 +2255,9 @@ class Grid(BaseResqpy):
|
|
2255
2255
|
pc = self.extract_property_collection()
|
2256
2256
|
|
2257
2257
|
if baffle_triplet is not None:
|
2258
|
-
trm_k[1:-1]
|
2259
|
-
trm_j[:, 1:-1]
|
2260
|
-
trm_i[:, :, 1:-1]
|
2258
|
+
trm_k[1:-1][baffle_triplet[0]] = 0.0
|
2259
|
+
trm_j[:, 1:-1][baffle_triplet[1]] = 0.0
|
2260
|
+
trm_i[:, :, 1:-1][baffle_triplet[2]] = 0.0
|
2261
2261
|
|
2262
2262
|
if composite_property:
|
2263
2263
|
tr_composite = np.concatenate((trm_k.flat, trm_j.flat, trm_i.flat))
|
@@ -66,7 +66,7 @@ def _create_xml_property_kind(collection, p_node, find_local_property_kinds, pro
|
|
66
66
|
property_kind = 'rock permeability'
|
67
67
|
p_kind_node = rqet.SubElement(p_node, ns['resqml2'] + 'PropertyKind')
|
68
68
|
p_kind_node.text = rqet.null_xml_text
|
69
|
-
if find_local_property_kinds and property_kind not in
|
69
|
+
if find_local_property_kinds and property_kind not in wam.valid_property_kinds():
|
70
70
|
property_kind_uuid = pcga._get_property_kind_uuid(collection, property_kind_uuid, property_kind, uom, discrete)
|
71
71
|
|
72
72
|
if property_kind_uuid is None:
|
@@ -12,18 +12,13 @@ import numpy as np
|
|
12
12
|
import resqpy.property as rqp
|
13
13
|
import resqpy.olio.uuid as bu
|
14
14
|
import resqpy.olio.xml_et as rqet
|
15
|
-
import resqpy.weights_and_measures as
|
15
|
+
import resqpy.weights_and_measures as wam
|
16
16
|
|
17
17
|
# the following resqml property kinds and facet types are 'known about' by this module in relation to nexus
|
18
18
|
# other property kinds should be handled okay but without any special treatment
|
19
19
|
# see property_kind_and_facet_from_keyword() for simulator keyword to property kind and facet mapping
|
20
20
|
|
21
|
-
supported_property_kind_list =
|
22
|
-
'continuous', 'discrete', 'categorical', 'code', 'index', 'depth', 'rock volume', 'pore volume', 'volume',
|
23
|
-
'thickness', 'length', 'cell length', 'area', 'net to gross ratio', 'porosity', 'permeability thickness',
|
24
|
-
'permeability length', 'permeability rock', 'rock permeability', 'fluid volume', 'transmissibility', 'pressure',
|
25
|
-
'saturation', 'solution gas-oil ratio', 'vapor oil-gas ratio', 'property multiplier', 'thermodynamic temperature'
|
26
|
-
]
|
21
|
+
supported_property_kind_list = list(wam.valid_property_kinds())
|
27
22
|
|
28
23
|
supported_local_property_kind_list = [
|
29
24
|
'active', 'transmissibility multiplier', 'fault transmissibility', 'mat transmissibility'
|
@@ -326,7 +321,7 @@ def infer_property_kind(name, unit):
|
|
326
321
|
|
327
322
|
# Currently unit is ignored
|
328
323
|
|
329
|
-
valid_kinds =
|
324
|
+
valid_kinds = wam.valid_property_kinds()
|
330
325
|
|
331
326
|
if name in valid_kinds:
|
332
327
|
kind = name
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{resqpy-4.15.3 → resqpy-4.16.1}/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
|