resqpy 5.1.8__tar.gz → 5.1.10__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.8 → resqpy-5.1.10}/PKG-INFO +1 -1
- {resqpy-5.1.8 → resqpy-5.1.10}/pyproject.toml +1 -1
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/__init__.py +1 -1
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/zmap_reader.py +18 -3
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/surface/_tri_mesh.py +22 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/LICENSE +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/README.md +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/crs.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_add_edges_per_column_property_array.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_add_faults.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_add_one_blocked_well_property.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_add_one_grid_property_array.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_add_single_cell_grid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_add_wells_from_ascii_file.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_add_zone_by_layer_property.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_coarsened_grid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_common.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_copy_grid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_drape_to_surface.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_extract_box.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_extract_box_for_well.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_fault_throw_scaling.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_gather_ensemble.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_interpolated_grid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_local_depth_adjustment.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_refined_grid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_tilted_grid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_unsplit_grid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_zonal_grid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/derived_model/_zone_layer_ranges_from_array.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/fault/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/fault/_gcs_functions.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/fault/_grid_connection_set.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_cell_properties.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_connection_sets.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_create_grid_xml.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_defined_geometry.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_extract_functions.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_face_functions.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_faults.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_grid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_grid_types.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_intervals_info.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_pillars.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_pixel_maps.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_points_functions.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_regular_grid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_transmissibility.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_write_hdf5_from_caches.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_write_nexus_corp.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid/_xyz.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid_surface/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid_surface/_blocked_well_populate.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid_surface/_find_faces.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid_surface/_grid_skin.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid_surface/_grid_surface.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid_surface/_trajectory_intersects.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/grid_surface/grid_surface_cuda.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/lines/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/lines/_common.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/lines/_polyline.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/lines/_polyline_set.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/model/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/model/_catalogue.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/model/_context.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/model/_forestry.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/model/_grids.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/model/_hdf5.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/model/_model.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/model/_xml.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/multi_processing/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/multi_processing/_multiprocessing.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/multi_processing/wrappers/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/multi_processing/wrappers/blocked_well_mp.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/multi_processing/wrappers/grid_surface_mp.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/multi_processing/wrappers/mesh_mp.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/ab_toolbox.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/base.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/box_utilities.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/class_dict.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/consolidation.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/data/build.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/data/properties.json +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/dataframe.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/exceptions.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/factors.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/fine_coarse.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/grid_functions.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/intersection.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/keyword_files.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/load_data.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/point_inclusion.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/random_seed.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/read_nexus_fault.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/relperm.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/simple_lines.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/time.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/trademark.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/transmission.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/triangulation.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/uuid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/vdb.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/vector_utilities.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/volume.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/wellspec_keywords.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/write_data.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/write_hdf5.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/xml_et.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/olio/xml_namespaces.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/_utils.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/boundary_feature.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/boundary_feature_interpretation.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/earth_model_interpretation.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/fault_interpretation.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/fluid_boundary_feature.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/frontier_feature.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/generic_interpretation.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/genetic_boundary_feature.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/geobody_boundary_interpretation.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/geobody_feature.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/geobody_interpretation.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/geologic_unit_feature.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/horizon_interpretation.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/organization_feature.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/rock_fluid_unit_feature.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/structural_organization_interpretation.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/tectonic_boundary_feature.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/wellbore_feature.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/organize/wellbore_interpretation.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/_collection_add_part.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/_collection_create_xml.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/_collection_get_attributes.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/_collection_support.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/_property.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/attribute_property_set.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/grid_property_collection.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/property_collection.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/property_common.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/property_kind.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/string_lookup.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/well_interval_property.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/well_interval_property_collection.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/well_log.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/property/well_log_collection.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/rq_import/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/rq_import/_add_ab_properties.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/rq_import/_add_surfaces.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/rq_import/_grid_from_cp.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/rq_import/_import_nexus.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/rq_import/_import_vdb_all_grids.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/rq_import/_import_vdb_ensemble.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/strata/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/strata/_binary_contact_interpretation.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/strata/_geologic_unit_interpretation.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/strata/_strata_common.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/strata/_stratigraphic_column.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/strata/_stratigraphic_column_rank.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/strata/_stratigraphic_unit_feature.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/strata/_stratigraphic_unit_interpretation.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/surface/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/surface/_base_surface.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/surface/_combined_surface.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/surface/_mesh.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/surface/_pointset.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/surface/_surface.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/surface/_tri_mesh_stencil.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/surface/_triangulated_patch.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/time_series/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/time_series/_any_time_series.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/time_series/_from_nexus_summary.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/time_series/_functions.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/time_series/_geologic_time_series.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/time_series/_time_duration.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/time_series/_time_series.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/unstructured/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/unstructured/_hexa_grid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/unstructured/_prism_grid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/unstructured/_pyramid_grid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/unstructured/_tetra_grid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/unstructured/_unstructured_grid.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/weights_and_measures/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/weights_and_measures/nexus_units.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/weights_and_measures/weights_and_measures.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/well/__init__.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/well/_blocked_well.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/well/_deviation_survey.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/well/_md_datum.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/well/_trajectory.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/well/_wellbore_frame.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/well/_wellbore_marker.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/well/_wellbore_marker_frame.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/well/blocked_well_frame.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/well/well_object_funcs.py +0 -0
- {resqpy-5.1.8 → resqpy-5.1.10}/resqpy/well/well_utils.py +0 -0
@@ -7,6 +7,7 @@ import logging
|
|
7
7
|
log = logging.getLogger(__name__)
|
8
8
|
|
9
9
|
import numpy as np
|
10
|
+
import resqpy.olio.vector_utilities as vec
|
10
11
|
|
11
12
|
|
12
13
|
def read_zmap_header(inputfile):
|
@@ -72,7 +73,7 @@ def read_roxar_header(inputfile):
|
|
72
73
|
"""Reads header lines from a roxar format file.
|
73
74
|
|
74
75
|
returns:
|
75
|
-
header_lines_count, no_rows, no_cols, minx, maxx, miny, maxy, null_value
|
76
|
+
header_lines_count, no_rows, no_cols, minx, maxx, miny, maxy, null_value, rotation, originx, originy
|
76
77
|
"""
|
77
78
|
|
78
79
|
with open(inputfile, 'r') as fp:
|
@@ -88,9 +89,12 @@ def read_roxar_header(inputfile):
|
|
88
89
|
maxy = float(words[3])
|
89
90
|
words = fp.readline().split()
|
90
91
|
no_cols = int(words[0])
|
92
|
+
rotation = float(words[1])
|
93
|
+
originx = float(words[2])
|
94
|
+
originy = float(words[3])
|
91
95
|
headers = 4
|
92
96
|
null_value = '9999900.0000'
|
93
|
-
return headers, no_rows, no_cols, minx, maxx, miny, maxy, null_value
|
97
|
+
return headers, no_rows, no_cols, minx, maxx, miny, maxy, null_value, rotation, originx, originy
|
94
98
|
|
95
99
|
|
96
100
|
def read_mesh(inputfile, dtype = np.float64, format = None):
|
@@ -103,7 +107,8 @@ def read_mesh(inputfile, dtype = np.float64, format = None):
|
|
103
107
|
if format == 'zmap':
|
104
108
|
headers, no_rows, no_cols, minx, maxx, miny, maxy, null_value = read_zmap_header(inputfile)
|
105
109
|
elif format in ['rms', 'roxar']:
|
106
|
-
headers, no_rows, no_cols, minx, maxx, miny, maxy, null_value = read_roxar_header(
|
110
|
+
headers, no_rows, no_cols, minx, maxx, miny, maxy, null_value, rotation, originx, originy = read_roxar_header(
|
111
|
+
inputfile)
|
107
112
|
else:
|
108
113
|
raise ValueError('format not recognised for read_mesh: ' + str(format))
|
109
114
|
# load the values in, converting null value to NaN's
|
@@ -143,6 +148,16 @@ def read_mesh(inputfile, dtype = np.float64, format = None):
|
|
143
148
|
else: # format in ['rms', 'roxar']
|
144
149
|
y = np.linspace(miny, maxy, no_rows)
|
145
150
|
x, y = np.meshgrid(x, y) # get x and y of every node
|
151
|
+
if format in ['rms', 'roxar']:
|
152
|
+
if rotation != 0.0:
|
153
|
+
unrot = np.empty(shape = [no_rows, no_cols, 3])
|
154
|
+
unrot[:, :, 0] = x - originx
|
155
|
+
unrot[:, :, 1] = y - originy
|
156
|
+
matrix = vec.rotation_matrix_3d_axial(2, rotation)
|
157
|
+
rot = vec.rotate_array(matrix, unrot)
|
158
|
+
x = rot[:, :, 0] + originx
|
159
|
+
y = rot[:, :, 1] + originy
|
160
|
+
|
146
161
|
assert x.shape == y.shape == f.shape
|
147
162
|
|
148
163
|
return x, y, f
|
@@ -9,6 +9,7 @@ import numpy as np
|
|
9
9
|
|
10
10
|
import resqpy.crs as rqc
|
11
11
|
import resqpy.surface as rqs
|
12
|
+
import resqpy.weights_and_measures as wam
|
12
13
|
import resqpy.olio.vector_utilities as vec
|
13
14
|
import resqpy.olio.uuid as bu
|
14
15
|
|
@@ -568,6 +569,27 @@ class TriMesh(rqs.Mesh):
|
|
568
569
|
|
569
570
|
return p
|
570
571
|
|
572
|
+
def area(self, required_uom = None):
|
573
|
+
"""Returns approximate area of tri mesh based on proportion of non-NaN z values.
|
574
|
+
|
575
|
+
arguments:
|
576
|
+
- required_uom (str, optional): RESQML area unit of measure string for result
|
577
|
+
|
578
|
+
returns:
|
579
|
+
- float being the approximate area of the tri mesh in its xy projection
|
580
|
+
|
581
|
+
note:
|
582
|
+
- default uom is crs xy_units squared
|
583
|
+
"""
|
584
|
+
a = 1.0 - (float(np.count_nonzero(np.isnan(self.full_array_ref()[..., 2]))) / float(self.nj * self.ni))
|
585
|
+
a *= float((self.nj - 1) * (self.ni - 1)) * self.t_side * self.t_side * root_3_by_2
|
586
|
+
if required_uom is not None:
|
587
|
+
crs = rqc.Crs(self.model, uuid = self.crs_uuid)
|
588
|
+
if required_uom != crs.xy_units + '2':
|
589
|
+
uom = ('ft' if crs.xy_units.startswith('ft') else crs.xy_units) + '2'
|
590
|
+
a = wam.convert(a, uom, required_uom)
|
591
|
+
return a
|
592
|
+
|
571
593
|
def is_compatible_with(self, other_tri_mesh):
|
572
594
|
"""Returns True if this tri mesh has the same xy points as the other."""
|
573
595
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|