diff --git a/python/swiftest/swiftest/io.py b/python/swiftest/swiftest/io.py index 838b46b28..cfe598cfd 100644 --- a/python/swiftest/swiftest/io.py +++ b/python/swiftest/swiftest/io.py @@ -26,7 +26,7 @@ def real2float(realstr): return float(realstr.replace('d', 'E').replace('D', 'E')) -def read_swiftest_param(param_file_name, param): +def read_swiftest_param(param_file_name, param, verbose=True): """ Reads in a Swiftest param.in file and saves it as a dictionary @@ -43,7 +43,7 @@ def read_swiftest_param(param_file_name, param): param['! VERSION'] = f"Swiftest parameter input from file {param_file_name}" # Read param.in file - print(f'Reading Swiftest file {param_file_name}') + if verbose: print(f'Reading Swiftest file {param_file_name}') try: with open(param_file_name, 'r') as f: for line in f.readlines(): @@ -95,7 +95,7 @@ def read_swiftest_param(param_file_name, param): return param -def read_swifter_param(param_file_name): +def read_swifter_param(param_file_name, verbose=True): """ Reads in a Swifter param.in file and saves it as a dictionary @@ -140,7 +140,7 @@ def read_swifter_param(param_file_name): } # Read param.in file - print(f'Reading Swifter file {param_file_name}') + if verbose: print(f'Reading Swifter file {param_file_name}') try: with open(param_file_name, 'r') as f: for line in f.readlines(): @@ -179,7 +179,7 @@ def read_swifter_param(param_file_name): return param -def read_swift_param(param_file_name, startfile="swift.in"): +def read_swift_param(param_file_name, startfile="swift.in", verbose=True): """ Reads in a Swift param.in file and saves it as a dictionary @@ -228,7 +228,7 @@ def read_swift_param(param_file_name, startfile="swift.in"): param['TP_IN'] = tpname # Read param.in file - print(f'Reading Swift file {param_file_name}') + if verbose: print(f'Reading Swift file {param_file_name}') try: with open(param_file_name, 'r') as f: line = f.readline().split() @@ -603,7 +603,7 @@ def swiftest_stream(f, param): ntp, tpid, tpnames, tvec.T, tlab -def swifter2xr(param): +def swifter2xr(param, verbose=True): """ Converts a Swifter binary data file into an xarray DataSet. @@ -640,13 +640,13 @@ def swifter2xr(param): plds = plda.to_dataset(dim='vec') tpds = tpda.to_dataset(dim='vec') - print('\nCreating Dataset') + if verbose: print('\nCreating Dataset') ds = xr.combine_by_coords([plds, tpds]) - print(f"Successfully converted {ds.sizes['time']} output frames.") + if verbose: print(f"Successfully converted {ds.sizes['time']} output frames.") return ds -def swiftest2xr(param): +def swiftest2xr(param, verbose=True): """ Converts a Swiftest binary data file into an xarray DataSet. @@ -700,23 +700,20 @@ def swiftest2xr(param): cbds = cbda.to_dataset(dim='vec') plds = plda.to_dataset(dim='vec') tpds = tpda.to_dataset(dim='vec') - print('\nCreating Dataset') + if verbose: print('\nCreating Dataset') ds = xr.combine_by_coords([cbds, plds, tpds]) elif ((param['OUT_TYPE'] == 'NETCDF_DOUBLE') or (param['OUT_TYPE'] == 'NETCDF_FLOAT')): - print('\nCreating Dataset from NetCDF file') + if verbose: print('\nCreating Dataset from NetCDF file') ds = xr.open_dataset(param['BIN_OUT'], mask_and_scale=False) ds = clean_string_values(param, ds) else: print(f"Error encountered. OUT_TYPE {param['OUT_TYPE']} not recognized.") return None - print(f"Successfully converted {ds.sizes['time']} output frames.") + if verbose: print(f"Successfully converted {ds.sizes['time']} output frames.") return ds -def xstrip(a): - func = lambda x: np.char.strip(x) - return xr.apply_ufunc(func, a.str.decode(encoding='utf-8')) def clean_string_values(param, ds): """ diff --git a/python/swiftest/swiftest/simulation_class.py b/python/swiftest/swiftest/simulation_class.py index 846aba347..6a5f1728c 100644 --- a/python/swiftest/swiftest/simulation_class.py +++ b/python/swiftest/swiftest/simulation_class.py @@ -11,7 +11,7 @@ class Simulation: """ This is a class that defines the basic Swift/Swifter/Swiftest simulation object """ - def __init__(self, codename="Swiftest", param_file="", readbin=True): + def __init__(self, codename="Swiftest", param_file="param.in", readbin=True, verbose=True): self.ds = xr.Dataset() self.param = { '! VERSION': f"Swiftest parameter input", @@ -54,12 +54,14 @@ def __init__(self, codename="Swiftest", param_file="", readbin=True): 'ENCOUNTER_CHECK': "ADAPTIVE" } self.codename = codename + self.verbose = verbose if param_file != "" : dir_path = os.path.dirname(os.path.realpath(param_file)) - self.read_param(param_file, codename) + self.read_param(param_file, codename=codename, verbose=self.verbose) if readbin: - if os.path.exists(dir_path + '/' + self.param['BIN_OUT']): - self.param['BIN_OUT'] = dir_path + '/' + self.param['BIN_OUT'] + binpath = os.path.join(dir_path,self.param['BIN_OUT']) + if os.path.exists(binpath): + self.param['BIN_OUT'] = binpath self.bin2xr() else: print(f"BIN_OUT file {self.param['BIN_OUT']} not found.") @@ -114,15 +116,15 @@ def addp(self, idvals, namevals, t1, t2, t3, t4, t5, t6, GMpl=None, Rpl=None, rh return - def read_param(self, param_file, codename="Swiftest"): + def read_param(self, param_file, codename="Swiftest", verbose=True): if codename == "Swiftest": - self.param = io.read_swiftest_param(param_file, self.param) + self.param = io.read_swiftest_param(param_file, self.param, verbose=verbose) self.codename = "Swiftest" elif codename == "Swifter": - self.param = io.read_swifter_param(param_file) + self.param = io.read_swifter_param(param_file, verbose=verbose) self.codename = "Swifter" elif codename == "Swift": - self.param = io.read_swift_param(param_file) + self.param = io.read_swift_param(param_file, verbose=verbose) self.codename = "Swift" else: print(f'{codename} is not a recognized code name. Valid options are "Swiftest", "Swifter", or "Swift".') @@ -180,11 +182,11 @@ def convert(self, param_file, newcodename="Swiftest", plname="pl.swiftest.in", t def bin2xr(self): if self.codename == "Swiftest": - self.ds = io.swiftest2xr(self.param) - print('Swiftest simulation data stored as xarray DataSet .ds') + self.ds = io.swiftest2xr(self.param, verbose=self.verbose) + if self.verbose: print('Swiftest simulation data stored as xarray DataSet .ds') elif self.codename == "Swifter": - self.ds = io.swifter2xr(self.param) - print('Swifter simulation data stored as xarray DataSet .ds') + self.ds = io.swifter2xr(self.param, verbose=self.verbose) + if self.verbose: print('Swifter simulation data stored as xarray DataSet .ds') elif self.codename == "Swift": print("Reading Swift simulation data is not implemented yet") else: @@ -215,7 +217,7 @@ def follow(self, codestyle="Swifter"): else: fol = None - print('follow.out written') + if self.verbose: print('follow.out written') return fol