package criaBanco;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
//banco de dados
import criaBanco.DBAR;
import criaBanco.DLIN;
import criaBanco.DbarDAO;
import criaBanco.DlinDAO;
//extrai do TXT caso não tenha no Banco
public class ExtrairDados {
ArrayList <Integer> Num = new ArrayList <Integer>();
/**locais para cálculo dos parâmetros que não são
fornecidos no banco de dados
*/
ArrayList <Integer> De = new ArrayList <Integer>();
ArrayList <Integer> Para = new ArrayList <Integer>();
ArrayList <Integer> Tipo = new ArrayList <Integer>();
ArrayList <Double> I_pmu_km = new ArrayList <Double>();
ArrayList <Double> I_pmu_mk = new ArrayList <Double>();
ArrayList <Double> I_ang_pmu_km = new ArrayList <Double>();
ArrayList <Double> I_ang_pmu_mk = new ArrayList <Double>();
ArrayList <Double> Pkm = new ArrayList <Double>();
ArrayList <Double> Pmk = new ArrayList <Double>();
ArrayList <Double> Qkm = new ArrayList <Double>();
ArrayList <Double> Qmk = new ArrayList <Double>();
ArrayList <Double> V = new ArrayList <Double>();
ArrayList <Double> Angfc = new ArrayList <Double>();
ArrayList <Double> Ang_pmu = new ArrayList <Double>();
/**Converte String para Inteiro, verificando casos em que o arquivo
* txt não tem valores
*
*/
public int StrToInt(String s)
{
int i = 0;
String s2;
s2 = s.trim();
//trata quando tem valor em branco no arquivo txt
if( s2.isEmpty()|| s2.length() == 0){
i = 0;
}else{
i = Integer.parseInt(s2,10);
}
return i;
}
/**Converte String para Double, verificando casos em que o arquivo
* txt não tem valores
*/
public double StrToDouble(String s)
{
double d = 0;
//trata quando tem valor em branco no arquivo txt
String s2;
s2 = s.trim();
if( s2.isEmpty()|| s2.length() == 0){
d = 0;
}else{
d = Double.parseDouble(s2);
}
return d;
}
//instancia
DBAR dbar = new DBAR();
DLIN dlin = new DLIN();
Integer NBAR = 0;
Integer NLIN = 0;
public ExtrairDados(File selFile) throws Exception {
// TODO Auto-generated constructor stub
String str = "";
String str2 = "";
// String str3 = "";
FileReader fr = new FileReader(selFile);
BufferedReader reader = new BufferedReader(fr);
do{
str = reader.readLine();
//getline(in,str); // armazena primeira linha em str;
str2 = str.substring (0,3);//copia os 5 primeiros caracteres da string para
/*============================================================*/
/* L E I T U R A D A D O S D E B A R R A */
/*============================================================*/
Session session = null ;
Transaction tx = null;
if(str2.compareTo("(Nu")==0) //compara conteudo de buffer com (Num);
{
/*============================================================*/
/* Este laço extrai: */
/* 1- dados base de barra */
/* 2- dados para estimação de estado */
/* 3- dados das medidas fasoriais sincronizadas */
/*============================================================*/
str = reader.readLine(); // armazena primeira linha em str;
int i=0;
DbarDAO insertData = new DbarDAO();
// aqui nós lemos as configurações do arquivo hibernate.cfg.xml
// e deixamos o Hibernate pronto para trabalhar
SessionFactory factory = new Configuration().addAnnotatedClass(DbarDAO.class).configure("escrevebanco.cfg.xml").buildSessionFactory(); // deve ser instanciado somente uma vez
do{ //leia e armazene os dados de barra enquanto não encontrar o fim dos dados de barra
session = factory.openSession();
// inicia uma transação
tx = session.beginTransaction();
//inserindo no BANCO dados para estimação de estado.
//insertData.setNum(dbar.getNum().get(i));
/*============================================================*/
/* E X T R A Ç Ã O D O S D A D O S B A S E */
/*============================================================*/
/** N Ú M E R O Número de Identificação da Barra CA */
// ponteiro_para_objeto_do tipo DBAR->VETOR NA CLASSE.armazena no final
//(str.substring( inicio da leitura, número de caracteres a serem lidos))
insertData.setNum(StrToInt(str.substring(0,5)));
Num.add(StrToInt(str.substring(0,5)));
NBAR++;
//dbar.Num(StrToInt(str.substring(0,5)));
/**O P E R A Ç Ã O
A ou 0 = adição de dados de barra
E ou 1 = eliminação de dados de barra
M ou 2 = modificação de dados de barra
DEFAULT -> A
*/
//dbar.setOperacao(StrToInt(str.substring (5,6)));
/**E S T A D O
L - se a barra estiver em operação
D - se a barra circuito estiver fora de operação (desligado)
DEFAULT -> L
*/
//dbar.setEstado(str.substring (6,7));
/**T I P O D E B A R R A
0 - barra de carga (PQ - Injeções de Potência ativa e reativa fixas)
1 - barra de tensão regulada (PV - Injeção de potência ativa e Magnitude de tensão fixas)
2 - barra de referência (Vteta - Magnitude de tensão e ângulo de fase fixo)
3 - barra de carga com limite de tensão (PQ - Injeções de potências ativa e reativa fixas
enquanto a magnitude de tensão permanecer entre os valores limites)
DEFAULT -> 0
*/
insertData.setTipo(StrToInt(str.substring (7,8)));
/** G R U P O B A S E D E T E N S Ã O
Identificador de Grupo Base de Tensão ao qual pertence a barra CA, composto
por até dois caracteres do tipo digito (0 a 9) ou caracter (A a Z), conforme definido
no código de execução DGBT (AnaRede-CEPEL). Os valores associados aos Grupos Base de Tensão
são definidos no código de execução DGBT. Os grupos não definidos terão valor igual a 1[kV]
DEFAULT -> 0
*/
//dbar.setGb(StrToInt(str.substring (8,9)));
/**N O M E D A B A R R A
Definição alfanumérica da barra
*/
insertData.setNome(str.substring (10,21));
/**G R U P O L I M I T E D E T E N S Ã O
Identificador do grupo limite de tensão ao qual pertence a barra CA,
composto por até dois caracteres do tipo dígito (0 a 9) ou caracter (A a Z).
Os grupos que não forem definidos terão valores limites de tensão mínimo e máximo iguais a 0,8 e 1,2 pu
DEFAULT -> 0
*/
//dbar.setGl(StrToInt(str.substring (22,23)));
/**T E N S Ã O
Valor inicial da magnitude da tensão em pu. Para barra de tensão controlada, remotamente ou não,
por geração de potência reativa ou por variação de tap de transformador, este campo deve ser preenchido
com o valor da magnitude da tensão a ser mantido constante. Ponto decimal implícito entre as colunas
22 e 23.
DEFAULT -> 1.0
*/
insertData.setVfc((StrToDouble(str.substring (24,28)))/1000);
/**Â N G U L O
Ângulo de fase inicial da tensão da barra, em graus
DEFAULT -> 0
*/
insertData.setAngfc(Math.toRadians(StrToDouble(str.substring (29,32))));
Angfc.add(Math.toRadians(StrToDouble(str.substring (29,32))));
/**G E R A Ç Ã O A T I V A
Valor de geração de potência ativa na barra, em MW.
Este campo define o ponto base de operação sobre o qual
as ações de controle são executadas de modo a manter o intercâmbio
de potência ativa programado entre áreas. Os erros de intercâmbio de
potência ativa entre áreas são distribuídos entre os geradores das áreas,
com base neste valor e de acordo com a participação de cada gerador.
*/
//dbar.setPg((StrToDouble(str.substring (33,37)))/100);
/**G E R A Ç Ã O R E A T I V A
Valor de geração de potência reativa na barra, em Mvar. Para barra de carga
este valor é fixo. Para barra de carga com limite de tensão, este valor é
mantido constante, enquanto a magnitude da tensão permanecer entre os limites
especificados. Para barras de tensão regulada e de referência com limites de
geração de potência reativa especificados, este campo pode ser deixado em branco.
DEFAULT -> 0
*/
//dbar.setQg((StrToDouble(str.substring (38,42)))/100);
/**G E R A Ç Ã O R E A T I V A M Í N I M A
Valor do Limite mínimo de geração de potência reativa na barra em Mvar
*/
//dbar.setQn((StrToDouble(str.substring (43,47)))/100);
/**G E R A Ç Ã O R E A T I V A M Á X I M A
Valor do Limite mínimo de geração de potência reativa na barra em Mvar
*/
//dbar.setQm((StrToDouble(str.substring (48,52)))/100);
/**B A R R A C O N T R O L A D A
Para barras de tensão regulada e de referência, com limites de
potência reativa especificados, este campo destina-se ao número
da barra cuja magnitude da tensão será controlada. O valor da
magnitude da tensão a ser mantido é obtido no campo TENSÃO do
registro relativo à barra.
*/
//dbar.setBc(StrToInt(str.substring (53,58)));
/**C A R G A A T I V A
Valor da carga ativa da barra, em MW. No caso da carga variar
com a magnitude da tensão da barra, entre neste campo com o
valor da carga para tensão especificada no campo tensão para definição de carga
DEFAULT -> 0
*/
//dbar.setPl((StrToDouble(str.substring (59,63)))/100);
/**C A R G A R E A T I V A
Valor da carga reativa da barra, em Mvar. No caso da carga variar
com a magnitude da tensão da barra, entre neste campo com o
valor da carga para tensão especificada no campo tensão para definição de carga
DEFAULT -> 0
*/
//dbar.setQl((StrToDouble(str.substring (63,67)))/100);
/**C A P A C I T O R R E A T O R
Valor da potência reativa injetada na barra, em Mvar por bancos de
capacitores/reatores. O valor a ser preenchido neste campo refere-se
a potência reativa injetada na tensão nominal (1.0 pu). Este valor
deve ser positivo para capacitores e negativos para reatores.
DEFAULT -> 0
*/
insertData.setSh((StrToDouble(str.substring (68,72)))/200);
/** Á R E A
Número da área à qual a barra pertence
*/
//dbar.setAre(StrToInt(str.substring (73,75)));
/**T E N S Ã O C A R G A
Tensão para definição de carga. Entre neste campo com o valor em pu
da tensão para a qual foi medido o valor das parcelas ativa e reativa
da carga definidos nos campos. Carga Ativa e Carga Reativa, respectivamente
Ponto decimal implícito entre as colunas
*/
//dbar.setVf((StrToDouble(str.substring (76,79)))/1000);
/*============================================================*/
/* D A D O S P A R A E S T I M A Ç Ã O D E E S T A D O S */
/*============================================================*/
/** F L A G - P O T Ê N C I A A T I V A
*/
insertData.setTP(StrToInt(str.substring (103,104))); //grava flag no banco
/* Armazena para utilizar em estimação fasorial (cálculo das correntes)
Pode-se ter fluxo de corrente de 1->2, e não se ter Potência de 1->2.
Desta forma, se o valor não fosse armazenado, não teriamos valores
de fluxo de potência para calcular os valores da corrente, devido ao uso da flag.*/
//armazena mesmo que a flag seja zero
insertData.setP((StrToDouble(str.substring (104,110)))/100);//banco
// insertData.setTipo_Medida().add("P:"+ str.substring (0,5).trim());
insertData.setTipo_Medida("P:"+ str.substring (0,5).trim());
/* int TP = 0;//zera a flag
TP = StrToInt(str.substring (103,104)); //lê a flag
// Armazena para calcular a corrente caso tenha corrente
dbase.setP((StrToDouble(str.substring (104,110)))/100);
if (TP==1) // se a flag for verdadeira, então
{
// Armazena para utilizar em estimação convencional
dbar.setP((StrToDouble(str.substring (104,110)))/100);
// armazena nome da medida
dbase.setTipo("P:" + str.substring (0,5).trim());
}
*/
/** F L A G - P O T Ê N C I A R E A T I V A
*/
// int TQ = 0;//zera a flag
insertData.setTQ(StrToInt(str.substring (112,113)));
//armazena em DBASE
// dbar.setQ(StrToDouble((str.substring (113,120)))/100);
insertData.setQ(StrToDouble((str.substring (113,120)))/100);
insertData.setTipo_Medida("Q:"+ str.substring (0,5).trim());
/*
//armazena em DBAR
if (TQ==1)
{
dbar.setQ((StrToDouble(str.substring (113,120)))/100);
dbase.setTipo("Q:" + str.substring (0,5));
}
*/
/** F L A G - M A G N I T U D E D E T E N S Ã O
*/
//armazena em DBASE
//dbase.setV((StrToDouble(str.substring (122,128)))/1000);
insertData.setTV(StrToInt(str.substring (121,122)));
insertData.setV((StrToDouble(str.substring (122,128)))/1000);
V.add((StrToDouble(str.substring (122,128)))/1000);
insertData.setTipo_Medida("V:"+ str.substring (0,5).trim());
//int TV = 0;//zera a flag
/*
if (TV==1) // se a flag for verdadeira, então
{
dbar.setV((StrToDouble(str.substring (122,129)))/1000);
dbase.setTipo("V:" + str.substring (0,5).trim());
}
*/
/**F L A G - M A G N I T U D E D E T E N S Ã O P M U
*/
//dbar.getV_pmu().add(dbar.getVfc().get(i)); //V_pmu = V
insertData.setV_pmu((StrToDouble(str.substring (24,28)))/100); //V_pmu = V
insertData.setTipo_Medida("V_pmu:"+ str.substring (0,5).trim());
/** F L A G - A N G U L O P M U
*
*/
/*F L A G - M A G N I T U D E D E T E N S Ã O P M U
int TF = 0;//zera a flag
TF = StrToInt(str.substring (133,134));
if (TF==1) // se a flag for verdadeira, então
{
dbar.setV_pmu((StrToDouble(str.substring (134,143)))/100);
dbase.Tipo("V_pmu:" + str.substring (0,4));
}
F L A G - A N G U L O P M U
int TA = 0;//zera a flag
TA = StrToInt(str.substring (144,144));
if (TA==1) // se a flag for verdadeira, então
{
dbar.setAng_pmu(StrToDouble(str.substring (145,150)));
dbase.Tipo("Ang_pmu:" + str.substring (0,4));
}
*/
str = reader.readLine(); // armazena primeira linha em str;
str2 = str.substring (0,5);
++i;
session.save(insertData);
session.flush();
tx.commit();
}while(!str2.equals("99999")); //eqto não for o fim dos dados de barra
getAngPmu(NBAR, insertData);//calcula os angulos de tensão.
for ( int i1=0; i1 < Num.size(); i1++ ) {
//SessionFactory factorys = new Configuration().addAnnotatedClass(DbarDAO.class).configure("escrevebanco.cfg.xml").buildSessionFactory(); // deve ser instanciado somente uma vez
session = factory.openSession();
// inicia uma transação
tx = session.beginTransaction();
//insertData.setDbarId(1);
insertData.setAng_pmu(Ang_pmu.get(i1));
// insertData.setTipo_Medida("Ang_pmu:"+ Num.get(i1));
session.saveOrUpdate(insertData);
session.flush();
tx.commit();
}
//tx.commit();
}//fecha if
/*============================================================*/
/* L E I T U R A D A D O S D E L I N H A */
/*============================================================*/
if (str2.compareTo("(De") == 0)
{
// Session session = null ;
// Transaction tx = null;
DlinDAO insertData1 = new DlinDAO();
SessionFactory factory = new Configuration().addAnnotatedClass(DlinDAO.class).configure("escrevebanco.cfg.xml").buildSessionFactory(); // deve ser instanciado somente uma vez
session = factory.openSession();
// inicia uma transação
tx = session.beginTransaction();
/*============================================================*/
/* Este laço extrai: */
/* 1- dados base de linha */
/* 2- dados para estimação de estado */
/* 3- dados das medidas fasoriais sincronizadas */
/*============================================================*/
str = reader.readLine(); // armazena primeira linha em str;
int i=0;
do{
// dlin.setA(StrToInt(str.substring (0,5)));
// dlin.setDlinId(i);
// insertData.setDlinId(dlin.setDlinId(i));
//inserindo no BANCO dados para estimação de estado.
/**DA BARRA
Número da barra de uma das extremidades do circuito
como definido no campo Número
*/
// copia o conteudo de (De )
//dlin.setDe(StrToInt(str.substring (0,5)));
insertData1.setDe(StrToInt(str.substring (0,5)));
De.add(StrToInt(str.substring (0,5)));
NLIN++;
/**O P E R A Ç Ã O
A ou 0 = adição de dados de barra
E ou 1 = eliminação de dados de barra
M ou 2 = modificação de dados de barra
DEFAULT -> A
*/
// dlin.setOperacao(StrToInt(str.substring (7,8)));
/**PARA BARRA
Número da barra da outra extremidade do circuito
como definido no campo Número
*/
//dlin.setPara(StrToInt(str.substring (10,15)));
insertData1.setPara(StrToInt(str.substring (10,15)));
Para.add(StrToInt(str.substring (10,15)));
/**CIRCUITO
Número de identificação do circuito CA em paralelo
*/
// dlin.setNc(StrToInt(str.substring (15,17)));
/**E S T A D O
L - se a barra estiver em operação
D - se a barra circuito estiver fora de operação (desligado)
DEFAULT -> L
*/
// dlin.setE(StrToInt(str.substring (17,18)));
/**Proprietário
F- se o circuito pertencer a área da barra definida no campo DA BARRA
T- se o circuito pertencer a área da barra definida no campo PARA BARRA
*/
// dlin.setProp(str.substring (18,19));
/**Resistência
Valor da resistência do circuito em %. Para transformadores este valor
corresponde ao valor da resistência para o tap nominal.
*/
//dlin.setR((StrToDouble(str.substring (20,26)))/100);
insertData1.setR((StrToDouble(str.substring (20,26)))/100);
/**Reatância
Valor da reatância do circuito em %. Para transformadores este valor
corresponde ao valor da reatância para o tap nominal.
*/
//dlin.setX((StrToDouble(str.substring (26,32)))/100);
insertData1.setX((StrToDouble(str.substring (26,32)))/100);
/**Susceptância
Valor total da susceptância shunt do circuito, em Mvar
*/
insertData1.setB((StrToDouble(str.substring (32,38)))/200);
/**Tap
Valor do Tap referido à barra definida no campo DA BARRA,
em p.u., para os transformadores de tap fixo ou, uma
estimativa deste valor para os transformadores com
variação automática de tap (LTC).
*/
//Obs: Tap não pode ser zero
if(str.substring(38,43).trim().isEmpty())
{
insertData1.setTap(1.0);
}else
{
insertData1.setTap(StrToDouble(str.substring(38,43)));
}
/**Tap mínimo
Valor mínimo que o tap pode assumir, em p.u., para transformadores
com variação automática de tap.
*/
// dlin.setTmn(StrToInt(str.substring(43,48)));
/**Tap Máximo
Valor máximo que o tap pode assumir, em p.u., para transformadores
com variação automática de tap.
*/
// dlin.setTmx(StrToInt(str.substring(48,53)));
/**Defasagem
Valor do ângulo de defasamento, em graus, para transformadores defasadores.
O defasamento angular especificado é aplicado em relação
ao ângulo da barra definido no campo Da Barra.
*/
insertData1.setPhs(Math.toRadians(StrToInt(str.substring(53,58))));
/**Barra Controlada
No caso de circuitos tipo transformador com variação automática de tap
este campo é destinado ao número da barra cuja magnitude da tensão deve ser controlada
*/
// dlin.setBc(StrToInt(str.substring(58,64)));
/**Capacidade Normal
Capacidade de carregamento do circuito em condições normais para fins de monitoração
de fluxo, em MVA.
*/
// dlin.setCn(StrToInt(str.substring(64,68)));
/**Capacidade Emergência
Capacidade de carregamento do circuito em condições de emergência
para fins de monitoração de fluxo, em MVA.
*/
// dlin.setCe(StrToInt(str.substring(68,72)));
/**Número de Steps
Número de posições intermediárias entre o tap mínimo e o tap máximo
para transformadores de tap variável
*/
// dlin.setNs(StrToInt(str.substring(72,74)));
/*============================================================*/
/* D A D O S P A R A E S T I M A Ç Ã O D E E S T A D O S */
/*============================================================*/
/** F L A G - F L U X O D E P O T Ê N C I A A T I V A K -> M
*/
insertData1.setTPkm(StrToInt(str.substring (106,107))); //lê a flag
insertData1.setPkm((StrToDouble(str.substring (107,114)))/100);
Pkm.add((StrToDouble(str.substring (107,114)))/100);//armazena na variável local para cálculo da corrente
//insertData1.setTipo("P:" + str.substring (0,5).trim() + "-" + str.substring (10,15).trim());
/** F L A G - F L U X O D E P O T Ê N C I A R E A T I V A K -> M
*/
insertData1.setTQkm(StrToInt(str.substring (115,116))); //lê a flag
insertData1.setQkm((StrToDouble(str.substring (116,123)))/100);
Qkm.add((StrToDouble(str.substring (116,123)))/100);
//insertData1.setTipo("Q:" + str.substring (0,5).trim() + "-" + str.substring (10,15).trim());
/** F L A G - F L U X O D E P O T Ê N C I A A T I V A M -> K
*/
insertData1.setTPmk(StrToInt(str.substring (130,131))); //lê a flag
insertData1.setPmk((StrToDouble(str.substring (131,139)))/100);
Pmk.add((StrToDouble(str.substring (131,139)))/100);
//insertData1.setTipo("P:" + str.substring (10,15).trim() + "-" + str.substring (0,5).trim());
/** F L A G - F L U X O D E P O T Ê N C I A R E A T I V A M -> K
*/
insertData1.setTQmk(StrToInt(str.substring (138,140))); //lê a flag
insertData1.setQmk((StrToDouble(str.substring (140,147)))/100);
Qmk.add((StrToDouble(str.substring (140,147)))/100);
//insertData1.setTipo("Q:" + str.substring (10,15).trim() + "-" + str.substring (0,5).trim());
/**
* O valor das correntes serão calculados e não medidos.
*
* F L U X O D E C O R R E N TE K -> M
* são calculados fluxos de corrente em todas as barras. Entretanto em Form_OpcoesEstimador o usuário irá selecionar
* quais ele quer considerar
*/
insertData1.setI_pmu_km(Math.sqrt(Math.pow(Pkm.get(i),2)+ Math.pow(Qkm.get(i),2))/ V.get(i));
dbar.getTipo_Medida().add("I_pmu:"+ De.get(i) + "-"+ Para.get(i));
//insertData.setTipo("I_pmu:"+ dlin.getDe().get(i) + "-"+ dlin.getPara().get(i));
/**
* O valor das correntes serão calculados e não medidos.
*
* F L U X O D E C O R R E N TE M -> K
* são calculados fluxos de corrente em todas as barras. Entretanto em Form_OpcoesEstimador o usuário irá selecionar
* quais ele quer considerar
*/
// Ikm = (Pkm^2 + Qkm^2)^(1/2) / Vk
insertData1.setI_pmu_mk(Math.sqrt(Math.pow(Pmk.get(i), 2)+ Math.pow(Qmk.get(i), 2))/V.get(i)); //deve calcular
dbar.getTipo_Medida().add("I_pmu:"+ Para.get(i) + "-"+ De.get(i));
// insertData.setTipo("I_pmu:" + dlin.getPara().get(i) + "-" + dlin.getDe().get(i));
/**
* O valor das correntes serão calculados e não medidos.
*
* Â N G U L O D E C O R R E N TE K -> M
* são calculados ângulos de corrente em todas as barras. Entretanto em Form_OpcoesEstimador o usuário irá selecionar
* quais ele quer considerar
*/
str = reader.readLine(); // armazena primeira linha em str;
str2 = str.substring (0,5);
++i;//incrementa contador usado para cálculo do que não é medido
session.save(insertData1);
session.flush();
tx.commit();
}while(!str2.equals("99999")); //eqto não for o fim dos dados de linha
//getIkm(NLIN);//fluxo de corrente de k -> m
getTetaIkm(NBAR, NLIN, insertData1);//ângulo da corrente k -> m
//getImk(NLIN);
getTetaImk(NBAR, NLIN, insertData1);
for ( int i1=0; i1 < NLIN; i1++ )
{
insertData1.setI_ang_pmu_km(I_ang_pmu_km.get(i1));
insertData1.setI_ang_pmu_mk(I_ang_pmu_mk.get(i1));
tx.commit();
}
}//fecha if
//strLine = str2.substring (0,3);
} while(!str2.equals("FIM"));//ler o arquivo por completo
}// public void ExtrairDados(File selFile)
//Calcula os Angulos de Tensão (Dados de barra)
public void getAngPmu(int NBAR, DbarDAO insertData)
{
for (int i = 0; i < NBAR; ++i)
{
Double t_ref_med = 0.0;
for (int k = 0; k < NBAR; ++k)
{
t_ref_med += (Angfc.get(k))/(NBAR-1);
}
Ang_pmu.add(Angfc.get(i) + t_ref_med);//adiciona os ângulos em Ang_Pmu
// dbar.getTipo_Medida().add("Ang_pmu:"+ Num.get(i));
}
}
/** FLUXO DE CORRENTE
* CORRENTE K -> M
* */
/*
public void getIkm(int NLIN){
for (int i = 0; i < NLIN; ++i) {
// Ikm = (Pkm^2 + Qkm^2)^(1/2) / Vk
I_pmu_km.add(i,Math.sqrt(Math.pow(Pkm.get(i),2)+ Math.pow(Qkm.get(i),2))/ V.get(i));
dbase.getTipo().add("I_pmu:"+ De.get(i) + "-"+ Para.get(i));
}
}
*/
public void getTetaIkm(int NBAR, int NLIN, DlinDAO insertData1)
{
for (int j = 0; j < NBAR; ++j) {
//percorre Pkm e Qkm
for (int i = 0; i < NLIN; ++i){
int k = De.get(i) - 1;// linha
if (j == k){
I_ang_pmu_km.add(i,Angfc.get(j)- Math.toRadians(Math.atan(Qkm.get(i)/ Pkm.get(i))));
insertData1.setTipo_Medida("I_ang_pmu:"+ De.get(i) + "-"+ Para.get(i));
}
}
}
}
/*
public void getImk(int NLIN){
for (int i = 0; i < NLIN; ++i)
{
// Ikm = (Pkm^2 + Qkm^2)^(1/2) / Vk
I_pmu_mk.add(Math.sqrt(Math.pow(Pmk.get(i), 2)+ Math.pow(Qmk.get(i), 2))/V.get(i)); //deve calcular
dbase.getTipo().add("I_pmu:" + Para.get(i) + "-" + De.get(i));
}
}
*/
public void getTetaImk(int NBAR, int NLIN, DlinDAO insertData1)
{
for (int j = 0; j < NBAR; ++j)
{
//percorre Pkm e Qkm
for (int i = 0; i < NLIN; ++i)
{
int k = Para.get(i) - 1;// linha
if (j == k)
{
I_ang_pmu_mk.add(i,Angfc.get(j)- Math.toRadians(Math.atan(Qmk.get(i)/ Pmk.get(i))));
insertData1.setTipo_Medida("I_ang_pmu:"+ Para.get(i) + "-"+ De.get(i));
}
}
}
}
}//public class ExtrairDados