resqpy 4.14.2__py3-none-any.whl → 5.1.6__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. resqpy/__init__.py +1 -1
  2. resqpy/fault/_gcs_functions.py +10 -10
  3. resqpy/fault/_grid_connection_set.py +277 -113
  4. resqpy/grid/__init__.py +2 -3
  5. resqpy/grid/_defined_geometry.py +3 -3
  6. resqpy/grid/_extract_functions.py +8 -2
  7. resqpy/grid/_grid.py +95 -12
  8. resqpy/grid/_grid_types.py +22 -7
  9. resqpy/grid/_points_functions.py +1 -1
  10. resqpy/grid/_regular_grid.py +6 -2
  11. resqpy/grid_surface/__init__.py +17 -38
  12. resqpy/grid_surface/_blocked_well_populate.py +5 -5
  13. resqpy/grid_surface/_find_faces.py +1413 -253
  14. resqpy/lines/_polyline.py +24 -33
  15. resqpy/model/_catalogue.py +9 -0
  16. resqpy/model/_forestry.py +18 -14
  17. resqpy/model/_hdf5.py +11 -3
  18. resqpy/model/_model.py +85 -10
  19. resqpy/model/_xml.py +38 -13
  20. resqpy/multi_processing/wrappers/grid_surface_mp.py +92 -37
  21. resqpy/olio/read_nexus_fault.py +8 -2
  22. resqpy/olio/relperm.py +1 -1
  23. resqpy/olio/transmission.py +8 -8
  24. resqpy/olio/triangulation.py +36 -30
  25. resqpy/olio/vector_utilities.py +340 -6
  26. resqpy/olio/volume.py +0 -20
  27. resqpy/olio/wellspec_keywords.py +19 -13
  28. resqpy/olio/write_hdf5.py +1 -1
  29. resqpy/olio/xml_et.py +12 -0
  30. resqpy/property/__init__.py +6 -4
  31. resqpy/property/_collection_add_part.py +4 -3
  32. resqpy/property/_collection_create_xml.py +4 -2
  33. resqpy/property/_collection_get_attributes.py +4 -0
  34. resqpy/property/attribute_property_set.py +311 -0
  35. resqpy/property/grid_property_collection.py +11 -11
  36. resqpy/property/property_collection.py +79 -31
  37. resqpy/property/property_common.py +3 -8
  38. resqpy/rq_import/_add_surfaces.py +34 -14
  39. resqpy/rq_import/_grid_from_cp.py +2 -2
  40. resqpy/rq_import/_import_nexus.py +75 -48
  41. resqpy/rq_import/_import_vdb_all_grids.py +64 -52
  42. resqpy/rq_import/_import_vdb_ensemble.py +12 -13
  43. resqpy/surface/_mesh.py +4 -0
  44. resqpy/surface/_surface.py +593 -118
  45. resqpy/surface/_tri_mesh.py +13 -10
  46. resqpy/surface/_tri_mesh_stencil.py +4 -4
  47. resqpy/surface/_triangulated_patch.py +71 -51
  48. resqpy/time_series/_any_time_series.py +7 -4
  49. resqpy/time_series/_geologic_time_series.py +1 -1
  50. resqpy/unstructured/_hexa_grid.py +6 -2
  51. resqpy/unstructured/_prism_grid.py +13 -5
  52. resqpy/unstructured/_pyramid_grid.py +6 -2
  53. resqpy/unstructured/_tetra_grid.py +6 -2
  54. resqpy/unstructured/_unstructured_grid.py +6 -2
  55. resqpy/well/_blocked_well.py +1986 -1946
  56. resqpy/well/_deviation_survey.py +3 -3
  57. resqpy/well/_md_datum.py +11 -21
  58. resqpy/well/_trajectory.py +10 -5
  59. resqpy/well/_wellbore_frame.py +10 -2
  60. resqpy/well/blocked_well_frame.py +3 -3
  61. resqpy/well/well_object_funcs.py +7 -9
  62. resqpy/well/well_utils.py +33 -0
  63. {resqpy-4.14.2.dist-info → resqpy-5.1.6.dist-info}/METADATA +8 -9
  64. {resqpy-4.14.2.dist-info → resqpy-5.1.6.dist-info}/RECORD +66 -66
  65. {resqpy-4.14.2.dist-info → resqpy-5.1.6.dist-info}/WHEEL +1 -1
  66. resqpy/grid/_moved_functions.py +0 -15
  67. {resqpy-4.14.2.dist-info → resqpy-5.1.6.dist-info}/LICENSE +0 -0
@@ -67,55 +67,78 @@ def import_nexus(
67
67
  ensemble_size_limit = None,
68
68
  grid_title = 'ROOT',
69
69
  mode = 'w',
70
- progress_fn = None):
71
- """Read a simulation grid geometry and optionally grid properties.
72
-
73
- Input may be from nexus ascii input files, or nexus vdb output.
74
-
75
- Arguments:
76
- resqml_file_root (str): output path and file name without .epc or .h5 extension
77
- extent_ijk (triple float, optional): ijk extents (fortran ordering)
78
- vdb_file (str, optional): vdb input file, either this or corp_file should be not None. Required if importing from a vdb
79
- vdb_case (str, optional): required if the vdb contains more than one case. If None, first case in vdb is used
80
- corp_file (str, optional): required if importing from corp ascii file. corp ascii input file: nexus corp data without keyword
81
- corp_bin_file (str, optional): required if importing from corp binary file
82
- corp_xy_units (str, default 'm'): xy length units
83
- corp_z_units (str, default 'm'): z length units
84
- corp_z_inc_down (bool, default True): if True z values increase with depth
85
- ijk_handedness (str, default 'right'): 'right' or 'left'
86
- corp_eight_mode (bool, default False): if True the ordering of corner point data is in nexus EIGHT mode
87
- geometry_defined_everywhere (bool, default True): if False then inactive cells are marked as not having geometry
88
- treat_as_nan (float, default None): if a value is provided corner points with this value will be assigned nan
89
- active_mask_file (str, default None): ascii property file holding values 0 or 1, with 1 indicating active cells
90
- use_binary (bool, default False): if True a cached binary version of ascii files will be used (pure binary, not corp bin format)
91
- resqml_xy_units (str, default 'm'): output xy units for resqml file
92
- resqml_z_units (str, default 'm'): output z units for resqml file
93
- resqml_z_inc_down (bool, default True): if True z values increase with depth for output resqml file
94
- shift_to_local (bool, default False): if True then a local origin will be used in the CRS
95
- local_origin_place (str, default 'centre'): 'centre' or 'minimum'. If 'centre' the local origin is placed at the centre of the grid; ignored if shift_to_local is False
96
- max_z_void (float, default 0.1): maximum z gap between vertically neighbouring corner points. Vertical gaps greater than this will introduce k gaps into resqml grid. Units are corp z units
97
- split_pillars (bool, default True): if False an unfaulted grid will be generated
98
- split_tolerance (float, default 0.01): maximum distance between neighbouring corner points before a pillar is considered 'split'. Applies to each of x, y, z differences
99
- property_array_files (list, default None): list of (filename, keyword, uom, time_index, null_value, discrete)
100
- summary_file (str, default None): nexus output summary file, used to extract timestep dates when loading recurrent data from vdb
101
- vdb_static_properties (bool, default True): if True, static vdb properties are imported (only relevant if vdb_file is not None)
102
- vdb_recurrent_properties (bool, default False): # if True, recurrent vdb properties are imported (only relevant if vdb_file is not None)
103
- timestep_selection (str, default 'all): 'first', 'last', 'first and last', 'all', or list of ints being reporting timestep numbers. Ignored if vdb_recurrent_properties is False
104
- use_compressed_time_series (bool, default True): generates reduced time series containing timesteps with recurrent properties from vdb, rather than full nexus summary time series
105
- decoarsen (bool, default True): where ICOARSE is present, redistribute data to uncoarse cells
106
- ab_property_list (list, default None): list of (file_name, keyword, property_kind, facet_type, facet, uom, time_index, null_value, discrete)
107
- create_property_set (bool, default False): if True a resqml PropertySet is created
108
- ensemble_case_dirs_root (str, default None): path up to but excluding realisation number
109
- ensemble_property_dictionary (str, default None): dictionary mapping title (or keyword) to (filename, property_kind, facet_type, facet, uom, time_index, null_value, discrete)
110
- ensemble_size_limit (int, default None): if present processing of ensemble will terminate after this number of cases is reached
111
- grid_title (str, default 'ROOT'): grid citation title
112
- mode (str, default 'w'): 'w' or 'a', mode to write or append to hdf5
113
- progress_fn (function, default None): if present function must have one floating argument with value increasing from 0 to 1, and is called at intervals to indicate progress
114
-
115
- Returns:
116
- resqml model in memory & written to disc
70
+ progress_fn = None,
71
+ vdb_property_list = None):
72
+ """Read a Nexus grid geometry (from ascii input or vdb) and optionally grid properties.
73
+
74
+ arguments:
75
+ - resqml_file_root (str): output path and file name without .epc or .h5 extension
76
+ - extent_ijk (triple float, optional): ijk extents (fortran ordering)
77
+ - vdb_file (str, optional): vdb input file, either this or corp_file should be not None;
78
+ required if importing from a vdb
79
+ - vdb_case (str, optional): required if the vdb contains more than one case;
80
+ if None, first case in vdb is used
81
+ - corp_file (str, optional): required if importing from corp ascii file;
82
+ corp ascii input file containing nexus corp data without keyword
83
+ - corp_bin_file (str, optional): required if importing from corp binary file
84
+ - corp_xy_units (str, default 'm'): xy length units
85
+ - corp_z_units (str, default 'm'): z length units
86
+ - corp_z_inc_down (bool, default True): if True z values increase with depth
87
+ - ijk_handedness (str, default 'right'): 'right' or 'left'
88
+ - corp_eight_mode (bool, default False): if True the ordering of corner point data
89
+ is in nexus EIGHT mode
90
+ - geometry_defined_everywhere (bool, default True): if False then inactive cells are
91
+ marked as not having geometry
92
+ - treat_as_nan (float, default None): if a value is provided corner points with
93
+ this value will be assigned not-a-number
94
+ - active_mask_file (str, default None): ascii property file holding values 0 or 1,
95
+ with 1 indicating active cells
96
+ - use_binary (bool, default False): if True a cached binary version of ascii files
97
+ will be used (pure binary, not corp bin format)
98
+ - resqml_xy_units (str, default 'm'): output xy units for resqml file
99
+ - resqml_z_units (str, default 'm'): output z units for resqml file
100
+ - resqml_z_inc_down (bool, default True): if True z values increase with depth for
101
+ output resqml file
102
+ - shift_to_local (bool, default False): if True then a local origin will be used in the CRS
103
+ - local_origin_place (str, default 'centre'): 'centre' or 'minimum'; if 'centre' the
104
+ local origin is placed at the centre of the grid; ignored if shift_to_local is False
105
+ - max_z_void (float, default 0.1): maximum z gap between vertically neighbouring corner points;
106
+ vertical gaps greater than this will introduce k gaps into resqml grid; units are corp z units
107
+ - split_pillars (bool, default True): if False an unfaulted grid will be generated
108
+ - split_tolerance (float, default 0.01): maximum distance between neighbouring corner points
109
+ before a pillar is considered 'split'; applies to each of x, y, z differences
110
+ - property_array_files (list, default None): list of (filename, keyword, uom, time_index, null_value, discrete)
111
+ - summary_file (str, default None): nexus output summary file, used to extract timestep dates
112
+ when loading recurrent data from vdb
113
+ - vdb_static_properties (bool, default True): if True, static vdb properties are imported;
114
+ only relevant if vdb_file is not None; see also vdb_property_list
115
+ - vdb_recurrent_properties (bool, default False): if True, recurrent vdb properties are imported;
116
+ only relevant if vdb_file is not None; see also vdb_property_list
117
+ - timestep_selection (str, default 'all): 'first', 'last', 'first and last', 'all',
118
+ or list of ints being reporting timestep numbers; ignored if vdb_recurrent_properties is False
119
+ - use_compressed_time_series (bool, default True): generates reduced time series containing
120
+ timesteps with recurrent properties from vdb, rather than full nexus summary time series
121
+ - decoarsen (bool, default True): where ICOARSE is present, redistribute data to uncoarse cells
122
+ - ab_property_list (list, optional): list of
123
+ (file_name, keyword, property_kind, facet_type, facet, uom, time_index, null_value, discrete)
124
+ - create_property_set (bool, default False): if True a resqml PropertySet is created
125
+ - ensemble_case_dirs_root (str, optional): path up to but excluding realisation number
126
+ - ensemble_property_dictionary (str, optional): dictionary mapping title (or keyword) to
127
+ (filename, property_kind, facet_type, facet, uom, time_index, null_value, discrete)
128
+ - ensemble_size_limit (int, optional): if present processing of ensemble will terminate
129
+ after this number of cases is reached
130
+ - grid_title (str, default 'ROOT'): grid citation title
131
+ - mode (str, default 'w'): 'w' or 'a', mode to write or append to hdf5
132
+ - progress_fn (function, default None): if present function must have one floating argument
133
+ with value increasing from 0.0 to 1.0, and is called at intervals to indicate progress
134
+ - vdb_property_list (list of str, optional): list of vdb static and/or recurrent properties to
135
+ include in the import; if None, all properties are imported; vdb_static_properties and
136
+ vdb_recurrent_properties boolean arguments must also be set True for respective properties
137
+ to be included; ignored if not importing from vdb
138
+
139
+ returns:
140
+ - resqml model in memory & written to disc
117
141
  """
118
-
119
142
  if resqml_file_root.endswith('.epc'):
120
143
  resqml_file_root = resqml_file_root[:-4]
121
144
  assert mode in ['w', 'a']
@@ -333,6 +356,8 @@ def import_nexus(
333
356
  prop_import_collection = rp.GridPropertyCollection()
334
357
  prop_import_collection.set_grid(grid)
335
358
  for keyword in props:
359
+ if vdb_property_list is not None and keyword not in vdb_property_list:
360
+ continue
336
361
  prop_import_collection.import_vdb_static_property_to_cache(vdbase, keyword, grid_name = grid_title)
337
362
  # if active_mask is not None:
338
363
  # prop_import_collection.add_cached_array_to_imported_list(active_mask, active_mask_file, 'ACTIVE', property_kind = 'active',
@@ -520,6 +545,8 @@ def import_nexus(
520
545
  for keyword in recur_prop_list:
521
546
  if vdb.bad_keyword(keyword):
522
547
  continue
548
+ if vdb_property_list is not None and keyword not in vdb_property_list:
549
+ continue
523
550
  prop_kind, facet_type, facet = rp.property_kind_and_facet_from_keyword(keyword)
524
551
  step_import_collection.import_vdb_recurrent_property_to_cache(
525
552
  vdbase,
@@ -10,60 +10,71 @@ import resqpy.olio.vdb as vdb
10
10
  import resqpy.rq_import as rqi
11
11
 
12
12
 
13
- def import_vdb_all_grids(
14
- resqml_file_root, # output path and file name without .epc or .h5 extension
15
- extent_ijk = None, # 3 element numpy vector applicable to ROOT
16
- vdb_file = None,
17
- vdb_case = None, # if None, first case in vdb is used (usually a vdb only holds one case)
18
- corp_xy_units = 'm',
19
- corp_z_units = 'm',
20
- corp_z_inc_down = True,
21
- ijk_handedness = 'right',
22
- geometry_defined_everywhere = True,
23
- treat_as_nan = None,
24
- resqml_xy_units = 'm',
25
- resqml_z_units = 'm',
26
- resqml_z_inc_down = True,
27
- shift_to_local = False,
28
- local_origin_place = 'centre', # 'centre' or 'minimum'
29
- max_z_void = 0.1, # vertical gaps greater than this will introduce k gaps intp resqml grid
30
- split_pillars = True,
31
- split_tolerance = 0.01, # applies to each of x, y, z differences
32
- vdb_static_properties = True,
33
- # if True, static vdb properties are imported (only relevant if vdb_file is not None)
34
- vdb_recurrent_properties = False,
35
- decoarsen = True,
36
- timestep_selection = 'all',
37
- # 'first', 'last', 'first and last', 'all', or list of ints being reporting timestep numbers
38
- create_property_set = False):
13
+ def import_vdb_all_grids(resqml_file_root,
14
+ extent_ijk = None,
15
+ vdb_file = None,
16
+ vdb_case = None,
17
+ corp_xy_units = 'm',
18
+ corp_z_units = 'm',
19
+ corp_z_inc_down = True,
20
+ ijk_handedness = 'right',
21
+ geometry_defined_everywhere = True,
22
+ treat_as_nan = None,
23
+ resqml_xy_units = 'm',
24
+ resqml_z_units = 'm',
25
+ resqml_z_inc_down = True,
26
+ shift_to_local = False,
27
+ local_origin_place = 'centre',
28
+ max_z_void = 0.1,
29
+ split_pillars = True,
30
+ split_tolerance = 0.01,
31
+ vdb_static_properties = True,
32
+ vdb_recurrent_properties = False,
33
+ decoarsen = True,
34
+ timestep_selection = 'all',
35
+ create_property_set = False,
36
+ vdb_property_list = None):
39
37
  """Creates a RESQML dataset containing grids and grid properties, including LGRs, for a single realisation.
40
38
 
41
- Arguments:
42
- resqml_file_root (str): output path and file name without .epc or .h5 extension
43
- extent_ijk (triple float, optional): ijk extents (fortran ordering)
44
- vdb_file (str, optional): vdb input file, either this or corp_file should be not None. Required if importing from a vdb
45
- vdb_case (str, optional): required if the vdb contains more than one case. If None, first case in vdb is used
46
- corp_xy_units (str, default 'm'): xy length units
47
- corp_z_units (str, default 'm'): z length units
48
- corp_z_inc_down (bool, default True): if True z values increase with depth
49
- ijk_handedness (str, default 'right'): 'right' or 'left'
50
- geometry_defined_everywhere (bool, default True): if False then inactive cells are marked as not having geometry
51
- treat_as_nan (float, default None): if a value is provided corner points with this value will be assigned nan
52
- resqml_xy_units (str, default 'm'): output xy units for resqml file
53
- resqml_z_units (str, default 'm'): output z units for resqml file
54
- resqml_z_inc_down (bool, default True): if True z values increase with depth for output resqml file
55
- shift_to_local (bool, default False): if True then a local origin will be used in the CRS
56
- local_origin_place (str, default 'centre'): 'centre' or 'minimum'. If 'centre' the local origin is placed at the centre of the grid; ignored if shift_to_local is False
57
- max_z_void (float, default 0.1): maximum z gap between vertically neighbouring corner points. Vertical gaps greater than this will introduce k gaps into resqml grid. Units are corp z units
58
- split_pillars (bool, default True): if False an unfaulted grid will be generated
59
- split_tolerance (float, default 0.01): maximum distance between neighbouring corner points before a pillar is considered 'split'. Applies to each of x, y, z differences
60
- vdb_static_properties (bool, default True): if True, static vdb properties are imported (only relevant if vdb_file is not None)
61
- vdb_recurrent_properties (bool, default False): # if True, recurrent vdb properties are imported (only relevant if vdb_file is not None)
62
- decoarsen (bool, default True): where ICOARSE is present, redistribute data to uncoarse cells
63
- timestep_selection (str, default 'all): 'first', 'last', 'first and last', 'all', or list of ints being reporting timestep numbers. Ignored if vdb_recurrent_properties is False
64
- create_property_set (bool, default False): if True a resqml PropertySet is created
39
+ arguments:
40
+ - resqml_file_root (str): output path and file name without .epc or .h5 extension
41
+ - extent_ijk (triple float, optional): ijk extents (fortran ordering)
42
+ - vdb_file (str, optional): vdb input file, either this or corp_file should be not None;
43
+ required if importing from a vdb
44
+ - vdb_case (str, optional): required if the vdb contains more than one case;
45
+ if None, first case in vdb is used
46
+ - corp_xy_units (str, default 'm'): xy length units
47
+ - corp_z_units (str, default 'm'): z length units
48
+ - corp_z_inc_down (bool, default True): if True z values increase with depth
49
+ - ijk_handedness (str, default 'right'): 'right' or 'left'
50
+ - geometry_defined_everywhere (bool, default True): if False then inactive cells are marked
51
+ as not having geometry
52
+ - treat_as_nan (float, default None): if a value is provided corner points with this value
53
+ will be assigned nan (not-a-number)
54
+ - resqml_xy_units (str, default 'm'): output xy units for resqml file
55
+ - resqml_z_units (str, default 'm'): output z units for resqml file
56
+ - resqml_z_inc_down (bool, default True): if True z values increase with depth in output resqml file
57
+ - shift_to_local (bool, default False): if True then a local origin will be used in the CRS
58
+ - local_origin_place (str, default 'centre'): 'centre' or 'minimum'; if 'centre' the local origin
59
+ is placed at the centre of the grid; ignored if shift_to_local is False
60
+ - max_z_void (float, default 0.1): maximum z gap between vertically neighbouring corner points;
61
+ vertical gaps greater than this will introduce k gaps into resqml grid; units are corp z units
62
+ - split_pillars (bool, default True): if False an unfaulted grid will be generated
63
+ - split_tolerance (float, default 0.01): maximum distance between neighbouring corner points
64
+ before a pillar is considered 'split'; applies to each of x, y, z differences
65
+ - vdb_static_properties (bool, default True): if True, static vdb properties are imported;
66
+ only relevant if vdb_file is not None; see also vdb_property_list
67
+ - vdb_recurrent_properties (bool, default False): if True, recurrent vdb properties are imported;
68
+ only relevant if vdb_file is not None; see also vdb_property_list
69
+ - decoarsen (bool, default True): where ICOARSE is present, redistribute data to uncoarse cells
70
+ - timestep_selection (str, default 'all): 'first', 'last', 'first and last', 'all', or list of ints
71
+ being reporting timestep numbers to include; ignored if vdb_recurrent_properties is False
72
+ - create_property_set (bool, default False): if True a resqml PropertySet is created
73
+ - vdb_property_list (list of str, optional): list of vdb static and/or recurrent properties to
74
+ include in the import; if None, all properties are imported; vdb_static_properties and
75
+ vdb_recurrent_properties boolean arguments must also be set True for respective properties
76
+ to be included; ignored if not importing from vdb
65
77
  """
66
-
67
78
  vdbase = vdb.VDB(vdb_file)
68
79
  case_list = vdbase.cases()
69
80
  assert len(case_list) > 0, 'no cases found in vdb'
@@ -104,5 +115,6 @@ def import_vdb_all_grids(
104
115
  timestep_selection = timestep_selection,
105
116
  create_property_set = create_property_set,
106
117
  grid_title = grid_name,
107
- mode = 'w' if index == 0 else 'a')
118
+ mode = 'w' if index == 0 else 'a',
119
+ vdb_property_list = vdb_property_list)
108
120
  index += 1
@@ -225,11 +225,11 @@ def import_vdb_ensemble(
225
225
  vdb_file = ensemble_list[realisation]
226
226
  log.info('processing realisation ' + str(realisation) + ' from: ' + str(vdb_file))
227
227
  vdbase = vdb.VDB(vdb_file)
228
- # case_list = vdbase.cases()
229
- # assert len(case_list) > 0, 'no cases found in vdb: ' + str(vdb_file)
230
- # if len(case_list) > 1: log.warning('more than one case found in vdb (using first): ' + str(vdb_file))
231
- # vdb_case = case_list[0]
232
- # vdbase.set_use_case(vdb_case)
228
+ # case_list = vdbase.cases()
229
+ # assert len(case_list) > 0, 'no cases found in vdb: ' + str(vdb_file)
230
+ # if len(case_list) > 1: log.warning('more than one case found in vdb (using first): ' + str(vdb_file))
231
+ # vdb_case = case_list[0]
232
+ # vdbase.set_use_case(vdb_case)
233
233
  vdbase.set_extent_kji(grid.extent_kji)
234
234
 
235
235
  prop_import_collection = rp.GridPropertyCollection(realization = realisation)
@@ -243,9 +243,8 @@ def import_vdb_ensemble(
243
243
  if keyword_list is not None and keyword not in keyword_list:
244
244
  continue
245
245
  prop_kind, facet_type, facet = rp.property_kind_and_facet_from_keyword(keyword)
246
- if property_kind_list is not None and prop_kind not in property_kind_list and prop_kind not in [
247
- 'active', 'region initialization'
248
- ]:
246
+ if property_kind_list is not None and prop_kind not in property_kind_list and \
247
+ prop_kind not in ['active', 'region initialization']:
249
248
  continue
250
249
  prop_import_collection.import_vdb_static_property_to_cache(vdbase,
251
250
  keyword,
@@ -312,9 +311,9 @@ def import_vdb_ensemble(
312
311
  if decoarsen_array is not None:
313
312
  step_import_collection.decoarsen_imported_list(decoarsen_array = decoarsen_array)
314
313
  # extend hdf5 with cached arrays for this timestep
315
- # log.info('number of recurrent grid property arrays for timestep: ' + str(timestep_number) +
316
- # ' is: ' + str(step_import_collection.number_of_imports()))
317
- # log.info('extending hdf5 file with recurrent properties for timestep: ' + str(timestep_number))
314
+ # log.info('number of recurrent grid property arrays for timestep: ' + str(timestep_number) +
315
+ # ' is: ' + str(step_import_collection.number_of_imports()))
316
+ # log.info('extending hdf5 file with recurrent properties for timestep: ' + str(timestep_number))
318
317
  grid.write_hdf5_from_caches(hdf5_file,
319
318
  mode = 'a',
320
319
  geometry = False,
@@ -322,8 +321,8 @@ def import_vdb_ensemble(
322
321
  write_active = False)
323
322
  # add imported list for this timestep to full imported list
324
323
  prop_import_collection.inherit_imported_list_from_other_collection(step_import_collection)
325
- # log.debug('total number of property arrays after timestep: ' + str(timestep_number) +
326
- # ' is: ' + str(prop_import_collection.number_of_imports()))
324
+ # log.debug('total number of property arrays after timestep: ' + str(timestep_number) +
325
+ # ' is: ' + str(prop_import_collection.number_of_imports()))
327
326
  # remove cached copies of arrays
328
327
  step_import_collection.remove_all_cached_arrays()
329
328
 
resqpy/surface/_mesh.py CHANGED
@@ -207,6 +207,10 @@ class Mesh(rqsb.BaseSurface):
207
207
  extra_metadata = em)
208
208
  return mesh
209
209
 
210
+ def is_big(self):
211
+ """Returns True if the number of nodes exceeds 2^31 - 1, False otherwise."""
212
+ return (self.ni * self.nj >= 2_147_483_648)
213
+
210
214
  def set_represented_interpretation_root(self, interp_root):
211
215
  """Makes a note of the xml root of the represented interpretation."""
212
216