diff --git a/dataprocessing/readtools.py b/dataprocessing/readtools.py index 297e491f8d440ea2b32a43cdb343c9d01eade021..177c9a8825aaffe8555a3cda3f73d49719616c0a 100644 --- a/dataprocessing/readtools.py +++ b/dataprocessing/readtools.py @@ -161,12 +161,11 @@ def read_timeseries_dpsim_cmpl_separate(filename, timeseries_names=None): print(result.name) return timeseries_list -def read_timeseries_NEPLAN(file_name, timeseries_names = None, is_regex = False): - str_tmp = open(file_name, "r") +def read_timeseries_NEPLAN_loadflow(file_name, timeseries_names = None, is_regex = False): + str_tmp = open(file_name, "r") # Read in files low = 0 high = 0 flag = True - dic = {} seq = [] value = [] i = 0 @@ -193,73 +192,46 @@ def read_timeseries_NEPLAN(file_name, timeseries_names = None, is_regex = False) low = high + 1 high += 1 if flag is False: - dic[i] = dict(zip(seq, value)) i += 1 - check_pass = True - if timeseries_names is None and is_regex is False: - if value[0] == '0': - for m in range(2): - timeseries.append(TimeSeries(value[1] + '.' + namelist[m], 0, value[m + 6])) - else: - for check in range(len(timeseries) - 1): - if timeseries[check].name == value[3] + '.' + namelist[4]: - check_pass = False - result = cmath.rect(timeseries[check].values, - timeseries[check + 1].values / 180 * cmath.pi) + cmath.rect( - value[10], value[11] / 180 * cmath.pi) - (timeseries[check].value, timeseries[check + 1].value) = cmath.polar(result) - timeseries[check + 1].values = timeseries[check + 1].value / cmath.pi * 180 - timeseries[check - 1].values += value[9] - timeseries[check - 2].values += value[8] - if check_pass: - for m in range(2, 6): - timeseries.append(TimeSeries(value[3] + '.' + namelist[m], 0, value[m + 6])) - - elif is_regex is True: - # Read in variables which match with regex - p = re.compile(timeseries_names) - if value[0] == '0': - for m in range(2): - if p.search((value[1] + '.' + namelist[m])): - timeseries.append(TimeSeries(value[1] + '.' + namelist[m], 0, value[m + 6])) - else: - for check in range(len(timeseries) - 1): - if timeseries[check].name == value[3] + '.' + namelist[4]: - check_pass = False - result = cmath.rect(timeseries[check].values, - timeseries[check + 1].values / 180 * cmath.pi) + cmath.rect( - value[10], value[11] / 180 * cmath.pi) - (timeseries[check].values, timeseries[check + 1].values) = cmath.polar(result) - timeseries[check + 1].values = timeseries[check + 1].values / cmath.pi * 180 - timeseries[check - 1].values += value[9] - timeseries[check - 2].values += value[8] - if check_pass: - for m in range(2, 6): - if p.search((value[3] + '.' + namelist[m])): - timeseries.append(TimeSeries(value[3] + '.' + namelist[m], 0, value[m + 6])) + check_pass = True # Check for current of the same component + if value[0] == '0': + for m in range(2): + timeseries.append(TimeSeries(value[1] + '.' + namelist[m], 0, value[m + 6])) else: - # Read in specified time series - if value[0] == '0': - for m in range(2): - if timeseries_names == (value[1] + '.' + namelist[m]): - timeseries.append(TimeSeries(value[1] + '.' + namelist[m], 0, value[m + 6])) - else: - for check in range(len(timeseries) - 1): - if timeseries[check].name == value[3] + '.' + namelist[4]: - check_pass = False - result = cmath.rect(timeseries[check].values, - timeseries[check + 1].values / 180 * cmath.pi) + cmath.rect( - value[10], value[11] / 180 * cmath.pi) - (timeseries[check].values, timeseries[check + 1].values) = cmath.polar(result) - timeseries[check + 1].values = timeseries[check + 1].values / cmath.pi * 180 - timeseries[check - 1].values += value[9] - timeseries[check - 2].values += value[8] - - if check_pass: - for m in range(2, 6): - if timeseries_names == (value[3] + '.' + namelist[m]): - timeseries.append(TimeSeries(value[3] + '.' + namelist[m], 0, value[m + 6])) + for check in range(len(timeseries) - 1): + if timeseries[check].name == value[3] + '.' + namelist[4]: + check_pass = False # Find current of the same component, Calculate the current using (r,tha) + result = cmath.rect(timeseries[check].values, + timeseries[check + 1].values / 180 * cmath.pi) + cmath.rect( + value[10], value[11] / 180 * cmath.pi) + (timeseries[check].values, timeseries[check + 1].values) = cmath.polar(result) + timeseries[check + 1].values = timeseries[check + 1].values / cmath.pi * 180 + timeseries[check - 1].values += value[9] + timeseries[check - 2].values += value[8] + if check_pass: + for m in range(2, 6): + timeseries.append(TimeSeries(value[3] + '.' + namelist[m], 0, value[m + 6])) flag = False str_tmp.close() - + line_del = [] + if is_regex is True: + # Read in variables which match with regex + p = re.compile(timeseries_names) + length = len(timeseries) + for rule_check in range(length): + if p.search(timeseries[rule_check].name): + pass + else: + line_del.append(rule_check); + + elif timeseries_names is not None: + # Read in specified time series + length = len(timeseries) + for rule_check in range(length): + if timeseries_names == timeseries[rule_check].name: + pass + else: + line_del.append(rule_check); + for num_to_del in range(len(line_del)): + del timeseries[line_del[len(line_del) - num_to_del - 1]] return timeseries diff --git a/examples/NEPLAN/read_NEPLAN_example.py b/examples/NEPLAN/read_NEPLAN_example.py index 4f5e68f0809ebc540a50488a27f3e269663dcd50..dd265a0856bf57e3f68a54ee39688cb3ff092db6 100644 --- a/examples/NEPLAN/read_NEPLAN_example.py +++ b/examples/NEPLAN/read_NEPLAN_example.py @@ -9,7 +9,8 @@ file = r"C:\Users\admin\Desktop\Load_read\Load_flow_WCSS.rlf" # Example 1: Read in all variable print('************************ Test for read in all variable start ****************') -result = read_timeseries_NEPLAN(file) +result = read_timeseries_NEPLAN_loadflow(file) +print(result[24].values) for i in range(len(result)): print('%s is %s' % (result[i].name, result[i].values)) # result as list of TimeSeries print('************************ Test for read in all variable end ****************') @@ -21,12 +22,12 @@ print('\n') # Example 2: Read in specific variable print('************************ Test for read in specific variable start ****************') print('************************ Read in specific Voltage ****************') -result2 = read_timeseries_NEPLAN(file, 'FOUR.U') +result2 = read_timeseries_NEPLAN_loadflow(file, 'FOUR.U') for i in range(len(result2)): print('%s is %s' % (result2[i].name, result2[i].values)) print('************************ Read in specific Current ****************') -result3 = read_timeseries_NEPLAN(file, 'LINE89.I') +result3 = read_timeseries_NEPLAN_loadflow(file, 'LINE89.I') for i in range(len(result3)): print('%s is %s' % (result3[i].name, result3[i].values)) print('************************ Test for read in specific variable end ****************') @@ -36,7 +37,7 @@ print('\n') # Example 3: Read in using regular expression print('************************ Test for read in using Regular Expression start ****************') -result4 = read_timeseries_NEPLAN(file, '^LINE89.*$', True) +result4 = read_timeseries_NEPLAN_loadflow(file, '^.*\.I$', True) for i in range(len(result4)): print('%s is %s' % (result4[i].name, result4[i].values)) print('************************ Test for read in using Regular Expression end ****************')