@@ -73,9 +73,7 @@ class LayerStorage:
7373 whether the data is stored in a binary file
7474 nc_dataset : ModelNetCDFDataset or None
7575 model netcdf dataset
76- nc_input_tag : str
77- parameter netcdf file input tag
78- nc_layered : bool #NETCDF-DEV verify this is needed
76+ nc_layered : bool
7977 array storage data is layered
8078
8179 Methods
@@ -122,7 +120,6 @@ def __init__(
122120 self .iprn = None
123121 self .binary = False
124122 self .nc_dataset = None
125- self .nc_input_tag = None
126123 self .nc_layered = False
127124
128125 def set_internal_constant (self ):
@@ -212,6 +209,8 @@ class DataStorage:
212209 what internal type is the data stored in (ndarray, recarray, scalar)
213210 layered : bool
214211 is the data layered
212+ netcdf : bool
213+ is the data stored in netcdf
215214 pre_data_comments : string
216215 any comments before the start of the data
217216 comments : dict
@@ -1026,6 +1025,9 @@ def _set_array(
10261025
10271026 success = False
10281027 if preserve_record :
1028+ if self .netcdf and isinstance (data , list ):
1029+ # TODO: is this a kludge? #NETCDF-DEV
1030+ data = self ._to_ndarray (data , layer )
10291031 if isinstance (data , np .ndarray ):
10301032 # try to store while preserving the structure of the
10311033 # existing record
@@ -1126,16 +1128,24 @@ def _set_array_layer(self, data, layer, multiplier, key, preserve_record):
11261128 self .layer_storage [layer ].data_storage_type
11271129 == DataStorageType .external_file
11281130 ):
1129- self .store_external (
1130- self .layer_storage [layer ].fname ,
1131- layer ,
1132- self .layer_storage [layer ].factor ,
1133- self .layer_storage [layer ].iprn ,
1134- data = data ,
1135- do_not_verify = True ,
1136- binary = self .layer_storage [layer ].binary ,
1137- preserve_record = preserve_record ,
1138- )
1131+ if self .netcdf :
1132+ self .store_netcdf (
1133+ layer ,
1134+ self .layer_storage [layer ].factor ,
1135+ self .layer_storage [layer ].iprn ,
1136+ data = data ,
1137+ )
1138+ else :
1139+ self .store_external (
1140+ self .layer_storage [layer ].fname ,
1141+ layer ,
1142+ self .layer_storage [layer ].factor ,
1143+ self .layer_storage [layer ].iprn ,
1144+ data = data ,
1145+ do_not_verify = True ,
1146+ binary = self .layer_storage [layer ].binary ,
1147+ preserve_record = preserve_record ,
1148+ )
11391149 else :
11401150 self .store_internal (
11411151 data ,
@@ -1152,7 +1162,15 @@ def _set_array_layer(self, data, layer, multiplier, key, preserve_record):
11521162 data [0 ], data_type
11531163 ):
11541164 # store data as const
1155- self .store_internal (data , layer , True , multiplier , key = key )
1165+ if self .netcdf :
1166+ self .store_netcdf (
1167+ layer ,
1168+ self .layer_storage [layer ].factor ,
1169+ self .layer_storage [layer ].iprn ,
1170+ data = data ,
1171+ )
1172+ else :
1173+ self .store_internal (data , layer , True , multiplier , key = key )
11561174 return True
11571175
11581176 # look for internal and open/close data
@@ -1861,6 +1879,28 @@ def store_external(
18611879 layer_new , fp_relative , print_format , binary
18621880 )
18631881
1882+ def store_netcdf (
1883+ self ,
1884+ layer = None ,
1885+ multiplier = None ,
1886+ print_format = None ,
1887+ data = None ,
1888+ ):
1889+ file_access = MFFileAccessArray (
1890+ self .data_dimensions .structure ,
1891+ self .data_dimensions ,
1892+ self ._simulation_data ,
1893+ self ._data_path ,
1894+ self ._stress_period ,
1895+ )
1896+ file_access .set_netcdf_array (
1897+ self .layer_storage [layer ].nc_dataset ,
1898+ self .data_dimensions .structure .get_package (),
1899+ self .data_dimensions .structure .name ,
1900+ data ,
1901+ layer [0 ],
1902+ )
1903+
18641904 def set_ext_file_attributes (self , layer , file_path , print_format , binary ):
18651905 # point to the external file and set flags
18661906 self .layer_storage [layer ].fname = file_path
@@ -1880,12 +1920,11 @@ def point_to_existing_external_file(self, arr_line, layer):
18801920 self .set_ext_file_attributes (layer , data_file , print_format , binary )
18811921 self .layer_storage [layer ].factor = multiplier
18821922
1883- def _set_storage_netcdf (self , nc_dataset , input_tag , layered , layer ):
1923+ def _set_storage_netcdf (self , nc_dataset , layered , layer ):
18841924 self .netcdf = True
18851925 is_layered = layered and layer > 0
18861926 for idx in self .layer_storage .indexes ():
18871927 self .layer_storage [idx ].nc_dataset = nc_dataset
1888- self .layer_storage [idx ].nc_input_tag = input_tag
18891928 self .layer_storage [idx ].nc_layered = is_layered
18901929 self .layer_storage [
18911930 idx
@@ -2010,9 +2049,10 @@ def external_to_internal(
20102049 # TODO: ensure multiplier only set by open/close #NETCDF-DEV
20112050 for idx in self .layer_storage .indexes ():
20122051 data_out = (
2013- file_access .load_netcdf_array (
2052+ file_access .read_netcdf_array (
20142053 self .layer_storage [layer ].nc_dataset ,
2015- self .layer_storage [layer ].nc_input_tag ,
2054+ self .data_dimensions .structure .get_package (),
2055+ self .data_dimensions .structure .name ,
20162056 idx [0 ],
20172057 )
20182058 )
@@ -2479,9 +2519,10 @@ def _build_full_data(self, apply_multiplier=False):
24792519 else :
24802520 nc_layer = - 1
24812521 data_out = (
2482- file_access .load_netcdf_array (
2522+ file_access .read_netcdf_array (
24832523 self .layer_storage [layer ].nc_dataset ,
2484- self .layer_storage [layer ].nc_input_tag ,
2524+ self .data_dimensions .structure .get_package (),
2525+ self .data_dimensions .structure .name ,
24852526 nc_layer ,
24862527 )
24872528 * mult
0 commit comments