Exemple #1
0
/*
 * Power flow test script
 */
void power_flow_test() {
    //Eigen::initParallel();

    //Circuit model = circuit_Gutierrez_Castillejos();
    Circuit model = circuit_Lynn_Powell(true);
    //Circuit model = ieee_30_bus_noPV();
    //Circuit model = ieee_30_bus();
    bool estimate_angles = false;
    model.compile(estimate_angles);
    model.printCXMat(model.Y, "Ybus:");
    model.print_buses_state();
    //cout << "Ybus:\n" << model.Y << endl;
    //model.printCXMat(model.Zred, "Zbus:");
    Solver_State state;
    solution prev_sol;

    /*
        std::cout << "\n\n\n NEWTON-RAPHSON POLAR\n\n " << std::endl;
        //New solution
        Solver_NRpolar nrs(model);
        Solver_State state = nrs.solve();
        //nrs.Model.print();
        if (state == Solver_State::Converged) {
            std::cout << "Converged in " << nrs.Iterations << " iterations." << std::endl;
            //nrs.Model.check_solution();
            prev_sol = nrs.Model.get_initial_solution();
            prev_sol.print("Solution:");
        } else {
            std::cout << "NOT Converged " << std::endl;
        }


        std::cout << "\n\n\n NEWTON-RAPHSON RECTANGULAR \n\n " << std::endl;
        //New solution
        Solver_NRrect nrr(model);
        state = nrr.solve();
        //nrs.Model.print();
        if (state == Solver_State::Converged) {
            std::cout << "Converged in " << nrr.Iterations << " iterations." << std::endl;
            //nrs.Model.check_solution();
            prev_sol = nrr.Model.get_initial_solution();
            prev_sol.print("Solution:");
        } else {
            std::cout << "NOT Converged " << std::endl;
        }


        std::cout << "\n\n\n JACOBI \n\n " << std::endl;
        Solver_Jacobi js(model);
        js.Max_Iter = 100;
        js.EPS = 1e-9;
        state = js.solve();
        if (state == Solver_State::Converged) {
            std::cout << "Converged in " << js.Iterations << " iterations." << std::endl;
            prev_sol = js.Model.get_initial_solution();
            prev_sol.print("Solution:");
        } else {
            std::cout << "NOT Converged " << std::endl;
        }


    std::cout << "\n\n\n IWAMOTO \n\n " << std::endl;
    Solver_Iwamoto Iws(model);
    Iws.Max_Iter = 6;
    Iws.EPS = 1e-9;
    state = Iws.solve();
    if (state == Solver_State::Converged) {
        std::cout << "Converged in " << Iws.Iterations << " iterations." << std::endl;
        prev_sol = Iws.Model.get_initial_solution();
        prev_sol.print("Solution:");
    } else {
        std::cout << "NOT Converged " << std::endl;
    }*/

    std::cout << "\n\n\n NR CURRENT \n\n " << std::endl;
    Solver_NRcurrent NRcs(model);
    NRcs.Max_Iter = 6;
    NRcs.EPS = 1e-9;
    state = NRcs.solve();
    if (state == Solver_State::Converged) {
        std::cout << "Converged in " << NRcs.Iterations << " iterations." << std::endl;
        prev_sol = NRcs.Model.get_initial_solution();
        prev_sol.print("Solution:");
    } else {
        std::cout << "NOT Converged " << std::endl;
    }
}