from ...utils import datautil
[docs]def make_int_tuple(str_list):
int_list = []
for item in str_list:
int_list.append(int(item) - 1)
return tuple(int_list)
[docs]def read_vertices(vert_file):
fd = open(vert_file, "r")
vertrecarray = []
for line in fd:
fd_spl = line.strip().split()
vertrecarray.append(
(int(fd_spl[0]) - 1, float(fd_spl[1]), float(fd_spl[2]))
)
fd.close()
return vertrecarray
[docs]def read_cell2d(cell2d_file):
fd = open(cell2d_file, "r")
c2drecarray = []
for line in fd:
fd_spl = line.strip().split()
rec_array = [int(fd_spl[0]) - 1, float(fd_spl[1]), float(fd_spl[2])]
rec_array.append(int(fd_spl[3]))
for item in fd_spl[4:]:
rec_array.append(int(item) - 1)
c2drecarray.append(tuple(rec_array))
fd.close()
return c2drecarray
[docs]def read_exchangedata(gwf_file, cellid_size=3):
exgrecarray = []
fd = open(gwf_file, "r")
for line in fd:
linesp = line.strip().split()
exgrecarray.append(
(
make_int_tuple(linesp[0:cellid_size]),
make_int_tuple(linesp[cellid_size : cellid_size * 2]),
int(linesp[cellid_size * 2]),
float(linesp[cellid_size * 2 + 1]),
float(linesp[cellid_size * 2 + 2]),
float(linesp[cellid_size * 2 + 3]),
float(linesp[cellid_size * 2 + 4]),
)
)
return exgrecarray
[docs]def read_gncrecarray(gnc_file, cellid_size=3):
gncrecarray = []
fd = open(gnc_file, "r")
for line in fd:
linesp = line.strip().split()
gncrecarray.append(
(
make_int_tuple(linesp[0:cellid_size]),
make_int_tuple(linesp[cellid_size : cellid_size * 2]),
make_int_tuple(linesp[cellid_size * 2 : cellid_size * 3]),
float(linesp[cellid_size * 3]),
)
)
return gncrecarray
[docs]def read_chdrecarray(chd_file, cellid_size=3):
fd = open(chd_file, "r")
chdrecarray = []
for line in fd:
fd_spl = line.strip().split()
chdrecarray.append(
(make_int_tuple(fd_spl[0:cellid_size]), float(fd_spl[cellid_size]))
)
fd.close()
return chdrecarray
[docs]def read_ghbrecarray(chd_file, cellid_size=3):
fd = open(chd_file, "r")
ghbrecarray = []
for line in fd:
fd_spl = line.strip().split()
ghbrecarray.append(
(
make_int_tuple(fd_spl[0:cellid_size]),
float(fd_spl[cellid_size]),
float(fd_spl[cellid_size + 1]),
)
)
fd.close()
return ghbrecarray
[docs]def read_obs(obs_file, cellid_size=3):
fd = open(obs_file, "r")
obsrecarray = []
for line in fd:
fd_spl = line.strip().split()
if len(fd_spl) >= 2 + cellid_size * 2:
obsrecarray.append(
(
fd_spl[0],
fd_spl[1],
make_int_tuple(fd_spl[2 : 2 + cellid_size]),
make_int_tuple(
fd_spl[2 + cellid_size : 2 + 2 * cellid_size]
),
)
)
else:
obsrecarray.append(
(
fd_spl[0],
fd_spl[1],
make_int_tuple(fd_spl[2 : 2 + cellid_size]),
)
)
fd.close()
return obsrecarray
[docs]def read_std_array(array_file, data_type):
data_list = []
fd = open(array_file, "r")
for current_line in fd:
split_line = datautil.PyListUtil.split_data_line(current_line)
for data in split_line:
if data_type == "float":
data_list.append(float(data))
elif data_type == "int":
data_list.append(int(data))
else:
data_list.append(data)
fd.close()
return data_list
[docs]def read_sfr_rec(sfr_file, cellid_size=3):
fd = open(sfr_file, "r")
sfrrecarray = []
for line in fd:
fd_spl = line.strip().split()
try:
cellid = make_int_tuple(fd_spl[1 : 1 + cellid_size])
temp_size = cellid_size
except ValueError:
cellid = fd_spl[1]
temp_size = 1
sfrrecarray.append(
(
int(fd_spl[0]) - 1,
cellid,
float(fd_spl[temp_size + 1]),
int(fd_spl[temp_size + 2]),
float(fd_spl[temp_size + 3]),
float(fd_spl[temp_size + 4]),
float(fd_spl[temp_size + 5]),
float(fd_spl[temp_size + 6]),
float(fd_spl[temp_size + 7]),
int(fd_spl[temp_size + 8]),
float(fd_spl[temp_size + 9]),
int(fd_spl[temp_size + 10]),
)
)
fd.close()
return sfrrecarray
[docs]def read_reach_con_rec(sfr_file):
fd = open(sfr_file, "r")
sfrrecarray = []
for line in fd:
fd_spl = line.strip().split()
con_arr = []
for index, item in enumerate(fd_spl):
item_val = int(item)
if index == 0:
item_val -= 1
else:
if item_val == -1:
item_val = -0.0
elif item_val < 0:
item_val += 1
item_val = float(item_val)
else:
item_val -= 1
item_val = float(item_val)
con_arr.append(item_val)
sfrrecarray.append(tuple(con_arr))
fd.close()
return sfrrecarray
[docs]def read_reach_div_rec(sfr_file):
fd = open(sfr_file, "r")
sfrrecarray = []
for line in fd:
fd_spl = line.strip().split()
sfrrecarray.append(
(
int(fd_spl[0]) - 1,
int(fd_spl[1]) - 1,
int(fd_spl[2]) - 1,
fd_spl[3],
)
)
fd.close()
return sfrrecarray
[docs]def read_reach_per_rec(sfr_file):
fd = open(sfr_file, "r")
sfrrecarray = []
for line in fd:
fd_spl = line.strip().split()
per_arr = [int(fd_spl[0]) - 1, fd_spl[1]]
first = True
for item in fd_spl[2:]:
if fd_spl[1].lower() == "diversion" and first:
per_arr.append(str(int(item) - 1))
first = False
else:
per_arr.append(item)
sfrrecarray.append(tuple(per_arr))
fd.close()
return sfrrecarray
[docs]def read_wells(wel_file, cellid_size=3):
fd = open(wel_file, "r")
welrecarray = []
for line in fd:
fd_spl = line.strip().split()
new_wel = []
new_wel.append(make_int_tuple(fd_spl[0:cellid_size]))
new_wel.append(float(fd_spl[cellid_size]))
for item in fd_spl[cellid_size + 1 :]:
new_wel.append(item)
welrecarray.append(tuple(new_wel))
fd.close()
return welrecarray