コード例 #1
0
ファイル: helm_ds_m2_pv1.py プロジェクト: vogt31337/HELMpy
def final_results():
    global V_complex_profile, V_polar_final, N, Ploss
    for i in range(N):
        magnitude, radians = cm.polar(V_complex_profile[i])
        V_polar_final[i, 0], V_polar_final[i,
                                           1] = magnitude, np.rad2deg(radians)
    Ploss = Pade(coefficients[2 * N], series_large)
コード例 #2
0
ファイル: helm_pv1.py プロジェクト: vogt31337/HELMpy
def computing_voltages_mismatch():
    global series_large, Y_Vsp_PV, Soluc_no_eval, Vre_PV, Soluc_eval, coefficients, N, Mis, list_coef
    global Ytrans_mod, V_complex, W, Pi, Si, Pg, Pd, Qg, Qd, first_check, pade_til, Q_limits
    global solve, detailed_run_print, Flag_divergence
    Vre_PV = np.zeros((N, N_coef), dtype=float)
    V_complex = np.zeros((N, N_coef), dtype=complex)
    W = np.ones((N, N_coef), dtype=complex)
    Flag_recalculate = 1
    Flag_divergence = False
    Calculo_Vre_PV(0)
    compute_complex_voltages(0)
    Pi = Pg - Pd
    Si = Pi + Qg * 1j - Qd * 1j
    coef_actual = 0
    series_large = 1
    while True:
        coef_actual += 1
        if detailed_run_print:
            print("Computing coefficient: %d" % coef_actual)
        Calculo_Vre_PV(coef_actual)
        for i in range(len(Soluc_no_eval)):
            Soluc_no_eval[i][1](Soluc_no_eval[i][0], coef_actual)
        resta_columnas_PV = np.zeros(2 * N, dtype=float)
        for Vre_vec in Y_Vsp_PV:
            array = Vre_PV[Vre_vec[0]][coef_actual] * Vre_vec[1]
            pos = 0
            for k in branches_buses[Vre_vec[0]]:
                resta_columnas_PV[2 * k] += array[pos]
                resta_columnas_PV[2 * k + 1] += array[pos + 1]
                pos += 2
        aux = Soluc_eval[:, coef_actual] - resta_columnas_PV

        # New column of coefficients
        coefficients[:, coef_actual] = solve(aux)

        compute_complex_voltages(coef_actual)
        calculate_inverse_voltages_w_array(coef_actual)

        # Mismatch check
        Flag_Mismatch = 0
        series_large += 1
        if (series_large - 1) % 2 == 0 and series_large > 3:
            if first_check:
                first_check = False
                for i in range(N):
                    magn1, rad1 = cm.polar(Pade(V_complex[i],
                                                series_large - 2))
                    V_complex_profile[i] = Pade(V_complex[i], series_large)
                    magn2, rad2 = cm.polar(V_complex_profile[i])
                    if ((abs(magn1 - magn2) > Mis)
                            or (abs(rad1 - rad2) > Mis)):
                        Flag_Mismatch = 1
                        pade_til = i + 1
                        break
            else:
                seguir = True
                for i in range(pade_til):
                    magn1, rad1 = cm.polar(V_complex_profile[i])
                    V_complex_profile[i] = Pade(V_complex[i], series_large)
                    magn2, rad2 = cm.polar(V_complex_profile[i])
                    if ((abs(magn1 - magn2) > Mis)
                            or (abs(rad1 - rad2) > Mis)):
                        Flag_Mismatch = 1
                        pade_til = i + 1
                        seguir = False
                        break
                if seguir:
                    for i in range(pade_til, N):
                        magn1, rad1 = cm.polar(
                            Pade(V_complex[i], series_large - 2))
                        V_complex_profile[i] = Pade(V_complex[i], series_large)
                        magn2, rad2 = cm.polar(V_complex_profile[i])
                        if ((abs(magn1 - magn2) > Mis)
                                or (abs(rad1 - rad2) > Mis)):
                            Flag_Mismatch = 1
                            pade_til = i + 1
                            break
            if Flag_Mismatch == 0:
                # Qgen check or ignore limits
                if (Q_limits):
                    if (Check_PVLIM()):
                        if detailed_run_print:
                            print(
                                "At coefficient %d the system is to be resolved due to PVLIM to PQ switches\n"
                                % series_large)
                        list_coef.append(series_large)
                        Flag_recalculate = 0
                        return Flag_recalculate
                print(
                    '\nConvergence has been reached. %d coefficients were calculated'
                    % series_large)
                list_coef.append(series_large)
                break
        if series_large > N_coef - 1:
            print('\nThe problem has no physical solution')
            Flag_divergence = 1
            break
    return Flag_recalculate