resqpy 4.12.1__py3-none-any.whl → 4.12.3__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- resqpy/__init__.py +1 -1
- resqpy/grid/_defined_geometry.py +6 -2
- resqpy/grid_surface/_blocked_well_populate.py +4 -1
- resqpy/property/_collection_get_attributes.py +1 -1
- resqpy/property/grid_property_collection.py +1 -1
- resqpy/property/property_collection.py +3 -3
- resqpy/property/property_common.py +2 -2
- resqpy/unstructured/_prism_grid.py +1 -1
- resqpy/weights_and_measures/nexus_units.py +7 -7
- resqpy/well/_blocked_well.py +26 -6
- {resqpy-4.12.1.dist-info → resqpy-4.12.3.dist-info}/METADATA +1 -1
- {resqpy-4.12.1.dist-info → resqpy-4.12.3.dist-info}/RECORD +14 -14
- {resqpy-4.12.1.dist-info → resqpy-4.12.3.dist-info}/WHEEL +1 -1
- {resqpy-4.12.1.dist-info → resqpy-4.12.3.dist-info}/LICENSE +0 -0
resqpy/__init__.py
CHANGED
resqpy/grid/_defined_geometry.py
CHANGED
@@ -348,6 +348,7 @@ def set_geometry_is_defined(grid,
|
|
348
348
|
|
349
349
|
if complete_all:
|
350
350
|
cells_update_needed = __complete_all_pillars(cells_update_needed, grid, points, surround_z)
|
351
|
+
cells_update_needed = True
|
351
352
|
|
352
353
|
if cells_update_needed:
|
353
354
|
# note: each pillar is either fully defined or fully undefined at this point
|
@@ -387,7 +388,10 @@ def __complete_all_pillars(cells_update_needed, grid, points, surround_z):
|
|
387
388
|
if hasattr(grid, 'array_pillar_geometry_is_defined'):
|
388
389
|
del grid.array_pillar_geometry_is_defined
|
389
390
|
cells_update_needed = False
|
390
|
-
|
391
|
+
nan_mask = np.isnan(points)
|
392
|
+
if np.any(nan_mask):
|
393
|
+
log.warning('remaining NaNs after filling missing pillar geometry will be set to zero (dangerous)')
|
394
|
+
points[nan_mask] = 0.0
|
391
395
|
grid.geometry_defined_for_all_cells_cached = True
|
392
396
|
if hasattr(grid, 'array_cell_geometry_is_defined'):
|
393
397
|
del grid.array_cell_geometry_is_defined
|
@@ -585,7 +589,7 @@ def __fill_holes(grid, holes_mask):
|
|
585
589
|
def __fill_surround(grid, surround_mask):
|
586
590
|
# note: only fills x,y; based on bottom layer of points; assumes surround mask is a regularly shaped frame of columns
|
587
591
|
log.debug(f'filling {np.count_nonzero(surround_mask)} pillars for surround')
|
588
|
-
points = grid.points_ref(masked = False)
|
592
|
+
points = grid.points_ref(masked = False).reshape((grid.nk_plus_k_gaps + 1, -1, 3))
|
589
593
|
points_view = points[-1, :, :2].reshape((-1, 2))[:(grid.nj + 1) * (grid.ni + 1), :].reshape(
|
590
594
|
(grid.nj + 1, grid.ni + 1, 2))
|
591
595
|
modified = False
|
@@ -60,7 +60,10 @@ def populate_blocked_well_from_trajectory(blocked_well,
|
|
60
60
|
assert isinstance(blocked_well.trajectory, rqw.Trajectory)
|
61
61
|
assert grid is not None
|
62
62
|
|
63
|
-
flavour =
|
63
|
+
flavour = grid.grid_representation
|
64
|
+
if flavour is None:
|
65
|
+
assert grid.root is not None
|
66
|
+
flavour = grr.grid_flavour(grid.root)
|
64
67
|
if not flavour.startswith('Ijk'):
|
65
68
|
raise NotImplementedError('well blocking only implemented for IjkGridRepresentation')
|
66
69
|
is_regular = (flavour == 'IjkBlockGrid') and hasattr(grid, 'is_aligned') and grid.is_aligned
|
@@ -222,7 +222,7 @@ def _get_perm_k_part(collection, perms, perm_k_mode, share_perm_parts, perm_i_pa
|
|
222
222
|
uom = 'mD',
|
223
223
|
time_index = None,
|
224
224
|
null_value = None,
|
225
|
-
property_kind = 'permeability
|
225
|
+
property_kind = 'rock permeability',
|
226
226
|
facet_type = 'direction',
|
227
227
|
facet = 'K',
|
228
228
|
realization = perms.realization_for_part(perm_i_part),
|
@@ -941,7 +941,7 @@ def _extend_imported_get_fine_collections(other, realization):
|
|
941
941
|
source_sat = rqp_c.selective_version_of_collection(other, realization = realization, property_kind = 'saturation')
|
942
942
|
source_perm = rqp_c.selective_version_of_collection(other,
|
943
943
|
realization = realization,
|
944
|
-
property_kind = 'permeability
|
944
|
+
property_kind = 'rock permeability')
|
945
945
|
# todo: add kh and some other property kinds
|
946
946
|
|
947
947
|
return source_rv, source_ntg, source_poro, source_sat, source_perm
|
@@ -2796,7 +2796,7 @@ class PropertyCollection():
|
|
2796
2796
|
share_perm_parts = False,
|
2797
2797
|
perm_k_mode = None,
|
2798
2798
|
perm_k_ratio = 1.0):
|
2799
|
-
"""Returns five parts: net to gross ratio, porosity, permeability
|
2799
|
+
"""Returns five parts: net to gross ratio, porosity, rock permeability I, J & K; each returned part may be None.
|
2800
2800
|
|
2801
2801
|
arguments:
|
2802
2802
|
realization: (int, optional): if present, only properties with the given realization are considered; if None,
|
@@ -2832,7 +2832,7 @@ class PropertyCollection():
|
|
2832
2832
|
|
2833
2833
|
perms = rqp_c.selective_version_of_collection(self,
|
2834
2834
|
realization = realization,
|
2835
|
-
property_kind = 'permeability
|
2835
|
+
property_kind = 'rock permeability')
|
2836
2836
|
if perms is None or perms.number_of_parts() == 0:
|
2837
2837
|
log.error('no rock permeabilities present')
|
2838
2838
|
else:
|
@@ -2869,7 +2869,7 @@ class PropertyCollection():
|
|
2869
2869
|
share_perm_parts = False,
|
2870
2870
|
perm_k_mode = None,
|
2871
2871
|
perm_k_ratio = 1.0):
|
2872
|
-
"""Returns five uuids: net to gross ratio, porosity, permeability
|
2872
|
+
"""Returns five uuids: net to gross ratio, porosity, rock permeability I, J & K; each returned uuid may be None.
|
2873
2873
|
|
2874
2874
|
note:
|
2875
2875
|
see basic_static_property_parts() method for argument documentation
|
@@ -78,7 +78,7 @@ expected_facet_type_dict = {
|
|
78
78
|
'property multiplier': (
|
79
79
|
'what',
|
80
80
|
[
|
81
|
-
'rock volume', # made up; todo: add rock permeability?
|
81
|
+
'rock volume', # made up; todo: add rock permeability? (would need multiple facets)
|
82
82
|
'pore volume',
|
83
83
|
'transmissibility'
|
84
84
|
]),
|
@@ -159,7 +159,7 @@ def property_kind_and_facet_from_keyword(keyword):
|
|
159
159
|
elif len(lk) >= 2 and lk[0] == 'd' and lk[1] in 'xyz':
|
160
160
|
property_kind, facet_type, facet = _pkf_from_keyword_length(lk)
|
161
161
|
elif lk[:4] == 'perm' or (len(lk) == 2 and lk[0] == 'k'): # permeability
|
162
|
-
property_kind = 'permeability
|
162
|
+
property_kind = 'rock permeability'
|
163
163
|
(facet_type, facet) = _facet_info_for_dir_ch(lk[-1])
|
164
164
|
elif lk[:5] == 'trans' or (len(lk) == 2 and lk[0] == 't'): # transmissibility (for unit viscosity)
|
165
165
|
if 'mult' in lk:
|
@@ -624,7 +624,7 @@ class VerticalPrismGrid(PrismGrid):
|
|
624
624
|
ppc = rqp.selective_version_of_collection(pc,
|
625
625
|
continuous = True,
|
626
626
|
realization = realization,
|
627
|
-
property_kind = 'permeability
|
627
|
+
property_kind = 'rock permeability')
|
628
628
|
assert ppc.number_of_parts() > 0, 'no permeability properties available for vertical prism grid'
|
629
629
|
|
630
630
|
# look for a triple permeability; if present, assume to be per face horizontal permeabilities
|
@@ -40,8 +40,8 @@ def nexus_uom_for_quantity(nexus_unit_system, quantity, english_volume_flavour =
|
|
40
40
|
'length', 'area', 'volume', 'volume per volume', 'permeability rock', 'rock permeability', 'time',
|
41
41
|
'thermodynamic temperature', 'mass per volume', 'pressure', 'volume per time'
|
42
42
|
]
|
43
|
-
if quantity == 'rock
|
44
|
-
quantity = 'permeability
|
43
|
+
if quantity == 'permeability rock':
|
44
|
+
quantity = 'rock permeability'
|
45
45
|
|
46
46
|
if (nexus_unit_system == 'ENGLISH' and english_volume_flavour is not None):
|
47
47
|
english_volume_flavour = english_volume_flavour.lower()
|
@@ -68,7 +68,7 @@ def nexus_uom_for_quantity(nexus_unit_system, quantity, english_volume_flavour =
|
|
68
68
|
'area': 'm2',
|
69
69
|
'volume': 'm3',
|
70
70
|
'volume per volume': 'm3/m3',
|
71
|
-
'permeability
|
71
|
+
'rock permeability': 'mD',
|
72
72
|
'time': 'd',
|
73
73
|
'thermodynamic temperature': 'degC',
|
74
74
|
'mass per volume': 'kg/m3',
|
@@ -80,7 +80,7 @@ def nexus_uom_for_quantity(nexus_unit_system, quantity, english_volume_flavour =
|
|
80
80
|
'area': 'm2',
|
81
81
|
'volume': 'm3',
|
82
82
|
'volume per volume': 'm3/m3',
|
83
|
-
'permeability
|
83
|
+
'rock permeability': 'mD',
|
84
84
|
'time': 'd',
|
85
85
|
'thermodynamic temperature': 'degC',
|
86
86
|
'mass per volume': 'kg/m3',
|
@@ -92,7 +92,7 @@ def nexus_uom_for_quantity(nexus_unit_system, quantity, english_volume_flavour =
|
|
92
92
|
'area': 'm2',
|
93
93
|
'volume': 'm3',
|
94
94
|
'volume per volume': 'm3/m3',
|
95
|
-
'permeability
|
95
|
+
'rock permeability': 'mD',
|
96
96
|
'time': 'd',
|
97
97
|
'thermodynamic temperature': 'degC',
|
98
98
|
'mass per volume': 'kg/m3',
|
@@ -104,7 +104,7 @@ def nexus_uom_for_quantity(nexus_unit_system, quantity, english_volume_flavour =
|
|
104
104
|
'area': 'cm2',
|
105
105
|
'volume': 'cm3',
|
106
106
|
'volume per volume': 'cm3/cm3',
|
107
|
-
'permeability
|
107
|
+
'rock permeability': 'mD',
|
108
108
|
'time': 'h',
|
109
109
|
'thermodynamic temperature': 'degC',
|
110
110
|
'mass per volume': 'g/cm3',
|
@@ -116,7 +116,7 @@ def nexus_uom_for_quantity(nexus_unit_system, quantity, english_volume_flavour =
|
|
116
116
|
'area': 'ft2',
|
117
117
|
'volume': 'ft3', # NB. Nexus expects bbl in some situations!
|
118
118
|
'volume per volume': 'ft3/ft3', # note: some special cases dealt with above
|
119
|
-
'permeability
|
119
|
+
'rock permeability': 'mD',
|
120
120
|
'time': 'd',
|
121
121
|
'thermodynamic temperature': 'degF',
|
122
122
|
'mass per volume': 'lbm/ft3',
|
resqpy/well/_blocked_well.py
CHANGED
@@ -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()
|
@@ -2737,7 +2754,7 @@ class BlockedWell(BaseResqpy):
|
|
2737
2754
|
'ANGLE': ('dega', 'plane angle', False),
|
2738
2755
|
'TEMP': (temperature_uom, 'thermodynamic temperature', False),
|
2739
2756
|
'MDCON': length_uom_pk_discrete,
|
2740
|
-
'K': ('mD', 'permeability
|
2757
|
+
'K': ('mD', 'rock permeability', False),
|
2741
2758
|
'DZ': (length_uom, 'cell length', False), # TODO: add direction facet
|
2742
2759
|
'DTOP': (length_uom, 'depth', False),
|
2743
2760
|
'DBOT': (length_uom, 'depth', False),
|
@@ -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:
|
@@ -3349,18 +3366,21 @@ class BlockedWell(BaseResqpy):
|
|
3349
3366
|
root = bw_node)
|
3350
3367
|
for grid in self.grid_list:
|
3351
3368
|
grid_root = grid.root
|
3369
|
+
ref_uuid = grid.uuid if grid_root is None else bu.uuid_from_string(grid_root.attrib['uuid'])
|
3352
3370
|
self.model.create_ref_node('Grid',
|
3353
3371
|
rqet.find_nested_tags_text(grid_root, ['Citation', 'Title']),
|
3354
|
-
|
3372
|
+
ref_uuid,
|
3355
3373
|
content_type = 'obj_IjkGridRepresentation',
|
3356
3374
|
root = bw_node)
|
3357
3375
|
|
3358
3376
|
interp_root = None
|
3359
3377
|
if self.wellbore_interpretation is not None:
|
3360
3378
|
interp_root = self.wellbore_interpretation.root
|
3379
|
+
ref_uuid = self.wellbore_interpretation.uuid if interp_root is None else bu.uuid_from_string(
|
3380
|
+
interp_root.attrib['uuid'])
|
3361
3381
|
self.model.create_ref_node('RepresentedInterpretation',
|
3362
3382
|
rqet.find_nested_tags_text(interp_root, ['Citation', 'Title']),
|
3363
|
-
|
3383
|
+
ref_uuid,
|
3364
3384
|
content_type = 'obj_WellboreInterpretation',
|
3365
3385
|
root = bw_node)
|
3366
3386
|
return traj_root, grid_root, interp_root
|
@@ -1,4 +1,4 @@
|
|
1
|
-
resqpy/__init__.py,sha256=
|
1
|
+
resqpy/__init__.py,sha256=nGog1AgOjRmPGcYnc7WedpknkBZCKPZ7rIg2eEW5hoQ,556
|
2
2
|
resqpy/crs.py,sha256=iq0lO3aXzttmJBfuhUjS9IHlv8OV1wuByhFk0b4fvmI,24782
|
3
3
|
resqpy/derived_model/__init__.py,sha256=NFvMSOKI3cxmH7lAbddV43JjoUj-r2G7ExEfOqinD1I,1982
|
4
4
|
resqpy/derived_model/_add_edges_per_column_property_array.py,sha256=cpW3gwp6MSYIrtvFmCjoJXcyUsgGuCDbgmwlJCJebUs,6410
|
@@ -30,7 +30,7 @@ resqpy/grid/__init__.py,sha256=WsfOnR5lHcnpJEx8ZZ3lhd4dImEiieJLM7eFPxMi3u8,692
|
|
30
30
|
resqpy/grid/_cell_properties.py,sha256=pbyAK2eV9n4teOxm2q5hyBinohEbevFPrCfMcpGiqUU,20689
|
31
31
|
resqpy/grid/_connection_sets.py,sha256=-277bh9pMoeESSzy9oZehL-vc82aMGZuSLQs2KJ4Wfg,10120
|
32
32
|
resqpy/grid/_create_grid_xml.py,sha256=p-jKo1BZ-DlhEYixVzadtY-QsqA8ygcXvMYS_TvQCjg,22837
|
33
|
-
resqpy/grid/_defined_geometry.py,sha256=
|
33
|
+
resqpy/grid/_defined_geometry.py,sha256=qkkfiSh8hzhTaW3vEot77mFWgApZl92Cb552b-xyjpQ,32297
|
34
34
|
resqpy/grid/_extract_functions.py,sha256=n_SmfkvEssX09SrlvUMe7y-4eOuVckhL_M6tFTg1bRg,28203
|
35
35
|
resqpy/grid/_face_functions.py,sha256=0I7O6DDz7nJWczi_G2bE3L2XUr4acxREwKygXWEp6F4,16516
|
36
36
|
resqpy/grid/_faults.py,sha256=OmukVoLpdrndqDxwE6Rj7Ul5tj3FUQVPhE0raH2FHpg,12236
|
@@ -47,7 +47,7 @@ resqpy/grid/_write_hdf5_from_caches.py,sha256=s3gcoilsFCCSw_wjnTjWe1xMHEWr_cesso
|
|
47
47
|
resqpy/grid/_write_nexus_corp.py,sha256=yEVfiObsedEAXX6UG6ZTf56kZnQVkd3lLqE2NpL-KBM,6147
|
48
48
|
resqpy/grid/_xyz.py,sha256=RLQWOdM_DRoCj4JypwB5gUJ78HTdk5JnZHSeAzuU634,13087
|
49
49
|
resqpy/grid_surface/__init__.py,sha256=iyK3_Vlg9mXffc_1gjvRdKwQE0zicbNXya0tryHkr04,2593
|
50
|
-
resqpy/grid_surface/_blocked_well_populate.py,sha256=
|
50
|
+
resqpy/grid_surface/_blocked_well_populate.py,sha256=MQIHf7Sh_XR3cUCfGhvlu4Xl498DtIKH2ffo4iud93w,35843
|
51
51
|
resqpy/grid_surface/_find_faces.py,sha256=WRoc5g-kLtR0JkuT0nueVF8ZgG09YfR3K_aRp2Rc2K8,64645
|
52
52
|
resqpy/grid_surface/_grid_skin.py,sha256=D0cjHkcuT5KCKb-8EZfXgh0GgJj3kzOBS2wVNXg4bfY,26056
|
53
53
|
resqpy/grid_surface/_grid_surface.py,sha256=l2NJo7Kiucolbb_TlLPC7NGdksg_JahkihfsrJVq99w,14379
|
@@ -130,12 +130,12 @@ resqpy/organize/wellbore_interpretation.py,sha256=jRAHq90tR2dCQSXsZicujXhSVHOEPo
|
|
130
130
|
resqpy/property/__init__.py,sha256=3dNW6fYT8nrNFA3Ja7Tz5AsoT-SX6VPnXYhnkHKl-VQ,2155
|
131
131
|
resqpy/property/_collection_add_part.py,sha256=s0xXU5aLRqvZoHxbRUNY-ItiNPqmUoEMcnWqQh011jk,17076
|
132
132
|
resqpy/property/_collection_create_xml.py,sha256=x6F7cjdC2y3JmPHi88hkpy3nf1wnWGwEexTj_Dmsf6E,12923
|
133
|
-
resqpy/property/_collection_get_attributes.py,sha256=
|
133
|
+
resqpy/property/_collection_get_attributes.py,sha256=MlontPfGo00lxt0SpB49YG9PRsi5oXPqduDgCSOSmzs,32441
|
134
134
|
resqpy/property/_collection_support.py,sha256=77_DG-0pzhMWdG_mNDiGfihXD7Pp-CvDSGCV8ZlDjj4,5889
|
135
135
|
resqpy/property/_property.py,sha256=JcG7h6k4cJ4l3WC_VCsvoqHM3FBxrnUuxbIK2Ono1M0,24426
|
136
|
-
resqpy/property/grid_property_collection.py,sha256=
|
137
|
-
resqpy/property/property_collection.py,sha256=
|
138
|
-
resqpy/property/property_common.py,sha256=
|
136
|
+
resqpy/property/grid_property_collection.py,sha256=bLWCTfhmpDsagBaXXb8XXHL46Cy78HL_NGWpPFZAgdw,66946
|
137
|
+
resqpy/property/property_collection.py,sha256=8uKEqIzmKlxAQRDrJozaWNzEw8um-HYA1qHvVKIDcE4,151987
|
138
|
+
resqpy/property/property_common.py,sha256=pItepusFU94YTNlWJyMj7LRMyRQviBQa0y7ouEs6AHo,36422
|
139
139
|
resqpy/property/property_kind.py,sha256=6SK0La09eisHPYOSgdx69K_Ordrq0x2tz4IAyurVyY8,5557
|
140
140
|
resqpy/property/string_lookup.py,sha256=eH-lbLRbb8JKtO91FTtyuYseRGwPkmsghcXbKUTvVgI,7737
|
141
141
|
resqpy/property/well_interval_property.py,sha256=_6k0NBX2rd2uGjkur37qCslF9Mow14d8LxPGqqp00gg,1077
|
@@ -174,15 +174,15 @@ resqpy/time_series/_time_duration.py,sha256=bzRf0fynlB68KUYKa0Ih7qwd4ZJnRjl_Y6Ax
|
|
174
174
|
resqpy/time_series/_time_series.py,sha256=ceCuFbmYmppx0jBitdyjtSKkcLxjZ-qyhFN_HQX-3CQ,10818
|
175
175
|
resqpy/unstructured/__init__.py,sha256=8te-ghWhkDGe0QaLDClvVEkSMtnDtX46K1QODmJU8Xw,603
|
176
176
|
resqpy/unstructured/_hexa_grid.py,sha256=bRzx0PHUtOziEeVk7nZv5aQlogYnqvtbrVMTXsSVcQU,15328
|
177
|
-
resqpy/unstructured/_prism_grid.py,sha256=
|
177
|
+
resqpy/unstructured/_prism_grid.py,sha256=qXurRLWNIvuqr4-ZpmjMg6uqmtClKrtCNB6e0PDVi4M,35856
|
178
178
|
resqpy/unstructured/_pyramid_grid.py,sha256=qDn7FlhLfDuqJYS88tomwuv5CH7RJd7avl-qK7CUy_4,7862
|
179
179
|
resqpy/unstructured/_tetra_grid.py,sha256=IkRRaxulhH42fE2EysLI9gfUf19YoO3nFA_Uq6CrxmI,12453
|
180
180
|
resqpy/unstructured/_unstructured_grid.py,sha256=OTYOSGrKoE51KpRhn4818tdvmZ-q9nmahk_7wC56mvc,51550
|
181
181
|
resqpy/weights_and_measures/__init__.py,sha256=Kp1pPZFH4rS5_PkCERZBEzGoat6n_dSS0y_KLhuIVBM,1135
|
182
|
-
resqpy/weights_and_measures/nexus_units.py,sha256=
|
182
|
+
resqpy/weights_and_measures/nexus_units.py,sha256=pHqcFbe-8nyqozFgN5Ce-W-UvEnXQ6yiaX3dP1ONtAQ,5434
|
183
183
|
resqpy/weights_and_measures/weights_and_measures.py,sha256=i3Fv7hZczQmvTtPwzWvQb-XAxCG6Uta_vd4DV7XDwOU,16186
|
184
184
|
resqpy/well/__init__.py,sha256=v5_gd7sSPRM9q2KsLiLWaw3jbnXFZkou38qeB7_HSN4,990
|
185
|
-
resqpy/well/_blocked_well.py,sha256=
|
185
|
+
resqpy/well/_blocked_well.py,sha256=BXvg-2vBU1NnNxBp1u_sD_GqV9LJQ6XOkULBSubHrIo,190990
|
186
186
|
resqpy/well/_deviation_survey.py,sha256=d3u31JbBqMCsaz6MUrtZium90wrC3omtm46A755fvgk,23115
|
187
187
|
resqpy/well/_md_datum.py,sha256=rRrDQckTJwZtIEh28dlgXj32kcBSu-ZvHFYZOiQsyqg,7154
|
188
188
|
resqpy/well/_trajectory.py,sha256=9sCGXZedICZK_O7qL-BTxUWGRClIVSRBRvP9RFNYk9g,50005
|
@@ -192,7 +192,7 @@ resqpy/well/_wellbore_marker_frame.py,sha256=xvYH2_2Ie3a18LReFymbUrZboOx7Rhv5DOD
|
|
192
192
|
resqpy/well/blocked_well_frame.py,sha256=Lg7TgynfPv9WkklXTLt9VN6uBXWUqX1LI-Xmv_FBqYk,22555
|
193
193
|
resqpy/well/well_object_funcs.py,sha256=LYTcC07ezlBxClfrug_B4iXXZUkXDPgsVufNzp361Wo,24703
|
194
194
|
resqpy/well/well_utils.py,sha256=zwpYjT85nXAwWBhYB1Pygu2SgouZ-44k6hEOnpoMfBI,5969
|
195
|
-
resqpy-4.12.
|
196
|
-
resqpy-4.12.
|
197
|
-
resqpy-4.12.
|
198
|
-
resqpy-4.12.
|
195
|
+
resqpy-4.12.3.dist-info/LICENSE,sha256=2duHPIkKQyESMdQ4hKjL8CYEsYRHXaYxt0YQkzsUYE4,1059
|
196
|
+
resqpy-4.12.3.dist-info/METADATA,sha256=Bbw0kBMNEOSJTceHXdEDLpq_qg65BpRq7eRGrffqjHA,4028
|
197
|
+
resqpy-4.12.3.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
198
|
+
resqpy-4.12.3.dist-info/RECORD,,
|
File without changes
|