Exemplo n.º 1
0
  public double calcularCC(Componente barra, HashMap<Componente, Double> barraTensionCC) {
    /*
     * Busca el valor de cc de la barra seleccionda, y los voltaje de cada
     * barra directamente relacionada a la barra seleccionda
     */

    // calcular matrizAdmitancia
    llenarMatrizAdmitancia();

    double calculoCC = 0;
    // El sistema busca el valor de la barra seleccionada en la matriz
    // inversa.
    int posBarra = barraPos.get(barra);
    System.out.println("posBarra" + posBarra);

    // carga matriz inversa con JAMA
    Matrix matrizCalculo = new Matrix(matrizAdmitancia);
    // double det = matrizCalculo.det();
    // System.out.println("DET: "+det);

    Matrix matrizInv = matrizCalculo.inverse();
    System.out.println("inversa:");
    matrizInv.print(5, 3);

    double matrizInversa[][] = matrizInv.getArray();

    /*
     * El sistema aplica esta formula para conocer la corriente de
     * cortocircuito en esa barra: If=Vref/Zkk, donde Vref es el voltaje de
     * referencia de la barra seleccionada, y Zkk es el elemento de la
     * matriz inversa que representa la barra.
     */
    double vref = ((Barra) barra).getVoltajeReferencia();
    double zkk = matrizInversa[posBarra][posBarra];
    double valorIf = vref / zkk;
    calculoCC = valorIf;
    System.out.println(
        "Calculo de CC en barra " + barra.getId() + ": " + valorIf + " = " + vref + "/" + zkk);

    /*
     * Por cada barra que esta directamente conectada a la barra
     * seleccionada,el sistema aplica esta formula para conocer el voltaje
     * de la barra: Vj=Vref-Zjk*If,donde Vref es el voltaje de referencia de
     * la barra seleccionada,Zjk es el elemento de la matriz inversa que
     * representa la barra que esta conectada a la barraseleccionada, e If
     * es la corriente de cortocircuito de la barra seleccionada (calculada
     * en el paso anterior).
     */
    double vj = 0;
    double zjk = 0;

    // recorre la matriz de admitancia en la columna de la barra seleccionada,
    // en cada valor <>0 indica que hay una barra directamente conectada
    for (int cont = 0; cont < matrizAdmitancia.length; cont++) {
      if ((matrizAdmitancia[posBarra][cont] != 0) && (posBarra != cont)) {
        zjk = matrizInversa[posBarra][cont];
        Componente barraConectada = barras.get(cont); // ojo		
        vj = vref - (zjk * valorIf);
        barraTensionCC.put(barraConectada, vj);
      }
    }
    return calculoCC;
  }