Beispiel #1
0
        //
        public void CarregaMapsGrafoAlim()
        {
            // preenche map Nome Branchs
            _dicNomeBranchs.PreencheMapNomeBranchs(_paramGerais.GetNomeAlimAtual());

            // preenche map Nome Vertices
            PreencheMapNomeVertices();

            // carrega matriz incidencia
            CarregaCSVMatrizInc();

            // cria objeto QuickGraph
            CriaObjQuickGraph();
        }
Beispiel #2
0
        // Executa fluxo mensal
        public bool ExecutaFluxoMensal()
        {
            //Executa fluxo diário openDSS. Se alimentador não convergiu, não calcula SA e DO
            if (!_fluxoDU.ExecutaFluxoDiario())
            {
                return(false);
            }

            //Executa fluxo diário openDSS. Se alimentador não convergiu, não calcula DO
            if (!_fluxoSA.ExecutaFluxoDiario())
            {
                return(false);
            }

            //Executa fluxo diário openDSS
            if (!_fluxoDO.ExecutaFluxoDiario())
            {
                return(false);
            }

            // calcula resultados mensal
            _resFluxoMensal.CalculaResultadoFluxoMensal(_fluxoDU._resFluxo, _fluxoSA._resFluxo, _fluxoDO._resFluxo, _paramGerais, _janela);

            //nivel pu
            string nivelTensaoPU = _fluxoDU._oDSS.GetActiveCircuit().Vsources.pu.ToString("0.###");

            //Plota perdas na tela //TODO fix me
            _janela.ExibeMsgDisplayMW(_resFluxoMensal.GetResultadoFluxoToConsole(
                                          nivelTensaoPU, _paramGerais.GetNomeAlimAtual()));

            return(true);
        }
Beispiel #3
0
        //Plota niveis tensao nas barras dos trafos
        public void PlotaCargasIsoladasArq(MainWindow janela)
        {
            // se convergiu
            if (_circuit.Solution.Converged)
            {
                // nome alim
                string nomeAlim = _param.GetNomeAlimAtual();

                // linha
                String linha = "";

                // para cada key value
                foreach (string carga in _lstCargasIsoladas)
                {
                    // evita plotagem do null em _lstCargasIsoladas
                    if (carga == null)
                    {
                        break;
                    }

                    // TODO tratar retirada \n ultima linha
                    linha += nomeAlim + "\t" + carga + "\n";
                }
                TxtFile.GravaEmArquivo2(linha, _param.GetNomeArqBarraTrafoLocal(), janela);
            }
        }
Beispiel #4
0
        // faz permutacao de ramos
        private void BranchExchange()
        {
            // inicializa _lstParDeChavesOtm
            _lstParDeChavesOtm = new List <string>
            {
                "Chave NA atual \tNovaNA \tRedução(kWh/mês) \tTensão antes (kV) \tTensão Depois (kV) \tVariação(%)"
            };

            // para cada chave NA
            foreach (Switch chaveNA in _lstChavesNA)
            {
                //
                string novaChaveNA = DefineNovaChaveNA(chaveNA);

                // se houve sucesso, avisa usuario
                if (novaChaveNA != null)
                {
                    // analisa melhoria de tensao nas monabora, verificando as chaves NF (antes e depois)
                    string strTensoes = VoltageVerificationIn_NO_Switches(chaveNA, novaChaveNA);

                    string plot = _paramGerais.GetNomeAlimAtual() + "\t" + chaveNA.nome + "\t" + novaChaveNA + "\t" + chaveNA.redPerda_kWh.ToString("0.##") + "\t" + strTensoes;

                    _lstParDeChavesOtm.Add(plot);
                    // DEBUG
                    // Informa manobra ao usuario
                    //_janela.ExibeMsgDisplayMW("\n Fechar chaveNA: " + chaveNA.nome + " Abrir chaveNF: " + novaChaveNA);
                }
            }
        }
Beispiel #5
0
        // Executa fluxo Snap
        public bool ExecutaFluxoSnap()
        {
            // carrega alimentador no objDSS
            CarregaDSS();

            // Executa fluxo Snap PVT
            bool ret = ExecutaFluxoSnapPvt();

            //informa usuario convergencia
            if (ret)
            {
                _janela.ExibeMsgDisplayMW(GetMsgConvergencia(null, _nomeAlim));
            }

            //nivel pu
            string nivelTensaoPU = _oDSS.GetActiveCircuit().Vsources.pu.ToString("0.###");

            //Plota perdas na tela
            _janela.ExibeMsgDisplayMW(_resFluxo.GetResultadoFluxoToConsole(
                                          nivelTensaoPU, _paramGerais.GetNomeAlimAtual()));

            return(ret);
        }
Beispiel #6
0
        // grava numero clientes com DRP e DRC no arquivo
        public void ImprimeNumClientesDRPDRC(GeneralParameters paramGerais, MainWindow _janela)
        {
            //nome arquivo DRP e DRC
            string nomeArq = paramGerais.GetNomeComp_arquivoDRPDRC();

            // nome alim
            string nomeAlim = paramGerais.GetNomeAlimAtual();

            // linha //ALim DRP DRC totais
            string linha = nomeAlim + "\t" + _numClientesOK.ToString() + "\t" + _numClientesDRP.ToString() + "\t" + _numClientesDRC.ToString() + "\t" + _numClientesTotal.ToString();

            //Grava em arquivo
            TxtFile.GravaEmArquivo(linha, nomeArq, _janela);
        }
Beispiel #7
0
        //
        internal double GetLoadMult()
        {
            // mes
            int mes = _paramGerais._parGUI.GetMes();

            //alim
            string alimTmp = _paramGerais.GetNomeAlimAtual();

            if (_mapAlimLoadMult[mes].ContainsKey(alimTmp))
            {
                return(_mapAlimLoadMult[mes][alimTmp]);
            }
            return(double.NaN);
        }
Beispiel #8
0
        //
        public void GravaTensaoBarraTrafos(MainWindow janela)
        {
            // nome alim
            string nomeAlim = _param.GetNomeAlimAtual();

            // linha
            String linha = "";

            // para cada key value
            foreach (KeyValuePair <string, double> kvp in _nivelTensaoBarra)
            {
                // TODO tratar retirada \n ultima linha
                linha += nomeAlim + "\t" + kvp.Key + "\t" + kvp.Value.ToString() + "\n";
            }
            TxtFile.GravaEmArquivo2(linha, _param.GetNomeArqBarraTrafo(), janela);
        }
Beispiel #9
0
        //Tradução da função calculaResultadoFluxoMensal
        //O resultado no fluxo mensal eh armazenado na variavel da classe
        public void CalculaResultadoFluxoMensal(PFResults perdasDU, PFResults perdasSA, PFResults perdasDO, GeneralParameters paramGerais, MainWindow janela)
        {
            // Limpa medidor atual.
            _energyMeter = new MyEnergyMeter();

            // calcula geracao e perdas maximas entre os 3 dias tipicos
            CalcGeracaoEPerdasMax(perdasDU, perdasSA, perdasDO);

            //Obtem mes
            int mes = paramGerais._parGUI.GetMes();

            // cria curva de carga dados: numero de dias do mes e matriz de consumo em PU
            Dictionary <string, int> numTipoDiasMes = paramGerais._objTipoDeDiasDoMes._qntTipoDiasMes[mes];

            // DIAS UTEIS
            perdasDU._energyMeter.MultiplicaEnergia(numTipoDiasMes["DU"]);

            // multiplica pelo Num dias
            perdasSA._energyMeter.MultiplicaEnergia(numTipoDiasMes["SA"]);

            // multiplica pelo Num dias
            perdasDO._energyMeter.MultiplicaEnergia(numTipoDiasMes["DO"]);

            // perdas energia
            SomaEnergiaDiasTipicos(perdasDU, perdasSA, perdasDO);

            // setMes
            _energyMeter.SetMesEM(mes);

            // grava LoadMult do DU
            _energyMeter.GravaLoadMult(perdasDU._energyMeter.loadMultAlim);

            // cria string com o formato de saida das perdas
            string conteudo = _energyMeter.FormataResultado(paramGerais.GetNomeAlimAtual());

            // se modo otimiza nao grava perdas arquivo
            if (!paramGerais._parGUI._otmPorEnergia)
            {
                // grava perdas alimentador em arquivo
                TxtFile.GravaEmArquivo(conteudo, paramGerais.GetNomeComp_arquivoResPerdasMensal(), janela);
            }

            // Se chegou ate aqui, seta convergencia para true
            _convergiuBool = true;
        }
Beispiel #10
0
        // grava numero clientes com DRP e DRC no arquivo
        public void ImprimeBarrasDRPDRC(GeneralParameters paramGerais, MainWindow _janela)
        {
            //nome arquivo DRP e DRC
            string nomeArq = paramGerais.GetNomeComp_arqBarrasDRPDRC();

            // nome alim
            string nomeAlim = paramGerais.GetNomeAlimAtual();

            // linha
            List <string> lstStr = new List <string>();

            //
            foreach (string barras in _lstBarrasDRCeDRP)
            {
                lstStr.Add(nomeAlim + "\t" + barras);
            }

            //Grava em arquivo
            TxtFile.GravaListArquivoTXT(lstStr, nomeArq, _janela);
        }
Beispiel #11
0
        //
        public void ImprimeNiveisTensao()
        {
            //nome arquivo DRP e DRC
            string nomeArq = _paramGerais.GetNomeComp_arqBarrasDRPDRC();

            // nome alim
            string nomeAlim = _paramGerais.GetNomeAlimAtual();

            // linha
            List <string> lstStr = new List <string>();

            //
            for (int i = 0; i < _VmagPu_antes.Count; i++)
            {
                lstStr.Add(_NomeBarras[i] + "\t" + _VmagPu_antes[i].ToString() + "\t" + _VmagPu_depois[i].ToString());
            }

            //Grava em arquivo
            TxtFile.GravaListArquivoTXT(lstStr, nomeArq, _janela);
        }
Beispiel #12
0
        // calcula tensao barra trafos
        public void GetTapRTs()
        {
            int iTrafo = _trafosDSS.First;

            // para cada carga
            while (iTrafo != 0)
            {
                // nome trafo
                string trafoName = _trafosDSS.Name;

                //skipa banco de reguladores
                if (trafoName.Contains("rt"))
                {
                    //add
                    _tapsRT.Add(_param.GetNomeAlimAtual() + "\t" + trafoName + "\t" + _trafosDSS.Tap);
                }

                // itera
                iTrafo = _trafosDSS.Next;
            }
        }
Beispiel #13
0
        public DailyFlow(GeneralParameters paramGerais, MainWindow janela, ObjDSS objDSS, string tipoDia = "DU", bool soMT = false)
        {
            // variaveis da classe
            _paramGerais = paramGerais;
            _janela      = janela;
            _oDSS        = objDSS;

            // TODO FIX ME da pau quando executa a segunda vez
            // OBS: datapath setado por alim
            string temp = _paramGerais.GetDataPathAlimOpenDSS();

            _oDSS._DSSObj.DataPath = temp;

            // nome alim
            _nomeAlim = _paramGerais.GetNomeAlimAtual();

            // seta variavel
            _soMT = soMT;

            // TODO
            SetTipoDia(paramGerais._parGUI);
        }
Beispiel #14
0
        //Plota niveis tensao nas barras dos trafos
        public void PlotaLoopedPairs(List <string> lstLoops)
        {
            // nome alim
            string nomeAlim = _paramGerais.GetNomeAlimAtual();

            // linha
            String linha = "";

            // para cada key value
            foreach (string loop in lstLoops)
            {
                //armazena  nomeALim e loop
                linha += nomeAlim + "\t" + loop;

                //adiciona quebra de linha
                if (loop != lstLoops.Last())
                {
                    linha += "\n";
                }
            }
            TxtFile.GravaEmArquivoAsync(linha, _paramGerais.GetNomeCompArqLoops(), _janelaPrincipal);
        }
Beispiel #15
0
 internal void AtualizaMapAlimLoadMult(double loadMult)
 {
     _reqLoadMultMes.AtualizaMapAlimLoadMult(_paramGerais.GetNomeAlimAtual(), loadMult, _paramGerais._parGUI.GetMes());
 }