compare_modelica_neplan.py 2.96 KB
Newer Older
1 2 3
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re
4 5 6
import os
import sys
sys.path.append(r'D:\HIWI\Git\data-processing\dataprocessing')
7 8 9 10 11 12 13 14
from dataprocessing.readtools import *
def compare_modelica_neplan(Net_Name):
    # Read in original nepaln result file
    file_Neplan = os.path.abspath("C:/Users/admin/Desktop/" + Net_Name + "/" + Net_Name + ".rlf")
    # Read in original Modelica result file
    file_Modelica = os.path.abspath("C:/Users/admin/Desktop/" + Net_Name + "/" + Net_Name + ".mat")
    result_neplan = read_timeseries_NEPLAN_loadflow(file_Neplan)
    result_modelica = read_timeseries_Modelica(file_Modelica)
15
    '''
16 17 18 19 20 21
    # neplan result output
    f_neplan = open(os.path.abspath("C:/Users/admin/Desktop/" + Net_Name + "/" + Net_Name + "_neplan.txt"), "w")
    # modelica result output
    f_modelica = open(os.path.abspath("C:/Users/admin/Desktop/" + Net_Name + "/" + Net_Name + "_modelica.txt"), "w")
    # error result output
    f_error = open(os.path.abspath("C:/Users/admin/Desktop/" + Net_Name + "/" + Net_Name +
22
                                   "_error_modelica_neplan.txt"), "w")'''
23 24 25 26 27 28 29 30
    list_del = []
    for i in range(len(result_neplan)):
        result_neplan[i].name = result_neplan[i].name.replace(' ', '')
        result_neplan[i].name = result_neplan[i].name.upper()
        if 'ANGLE' in result_neplan[i].name:
            pass
        else:
            result_neplan[i].values = result_neplan[i].values * 1000  # unification of the unit,which is kV/kA in neplan
31 32
        '''f_neplan.write(
            '%s is %s \n' % (result_neplan[i].name, result_neplan[i].values[0]))  # result as list of TimeSeries'''
33 34 35 36 37

    for i in range(len(result_modelica)):
        result_modelica[i].name = result_modelica[i].name.upper()
        if 'ANGLE' in result_modelica[i].name:
            result_modelica[i].values = result_modelica[i].values / cmath.pi * 180  # unification of the unit
38 39
        #f_modelica.write('%s is %s \n' % (result_modelica[i].name, result_modelica[i].values[1]))
    timeseries_names = []  # list for names
40 41 42 43 44 45
    timeseries_error = []  # list for error
    len_limit = len(result_modelica)
    for i in range(len(result_neplan)):
        flag_NOT_found = False
        for j in range(len_limit):
            if result_neplan[i].name == result_modelica[j].name:  # Find the same variable
46 47
                timeseries_names.append(result_neplan[i].name)
                timeseries_error.append(TimeSeries.rmse(result_modelica[j], result_neplan[i]))
48 49 50 51
                flag_NOT_found = True
        if not flag_NOT_found:
            timeseries_error.append(TimeSeries(result_neplan[i].name, 0, -1))
            # No such variable in Modelica model, set the error to -1
52
        '''
53 54
        f_error.write('Error of %s is %f \n Base value'
                      ' of %s is %s \n\n' % (timeseries_error[i].name, timeseries_error[i].values,
55 56 57 58
                                             timeseries_error[i].name, result_neplan[i].values[0]))'''
    return dict(zip(timeseries_names, timeseries_error))