コード例 #1
0
        private void AnaliseLoopsPvt(string nomeAlim)
        {
            // atribui nomeAlim
            _paramGerais.SetNomeAlimAtual(nomeAlim);

            // Carrega arquivos DSS so MT
            _fluxoSoMT = new DailyFlow(_paramGerais, _janelaPrincipal, _oDSS, null, true);

            // Carrega arquivos DSS
            if (_fluxoSoMT.CarregaAlimentador())
            {
                // SE executou fluxo snap
                if (_fluxoSoMT.ExecutaFluxoSnap())
                {
                    // verifica cancelamento usuario
                    if (_janelaPrincipal._cancelarExecucao)
                    {
                        return;
                    }

                    //
                    AnaliseLoops2();
                }
            }
        }
コード例 #2
0
        // calcula fluxo mensal sobre o "caso base" e armazena resultado de perdas em variavel da classe.
        private bool CalculaFluxoMensalBase(string nomeAlim)
        {
            // TODO criar nova flag interna
            // seta este parametro para true para evitar a recarga dos arquivos texto
            _paramGerais._parGUI._otmPorEnergia = true;
            _paramGerais._parGUI.SetAproximaFluxoMensalPorDU(true);

            // atribui nomeAlim
            _paramGerais.SetNomeAlimAtual(nomeAlim);

            // Carrega arquivos DSS
            _fluxoMensal = new MonthlyPowerFlow(_paramGerais, _janela, _oDSS);

            // Carrega alimentador
            _fluxoMensal.CarregaAlimentador();

            //
            _janela.ExibeMsgDisplayMW("Configuração Inicial");

            // TODO Inserir opcao de Otimizar tambem FluxoMensal
            bool ret = _fluxoMensal.ExecutaFluxoMensalSimples();

            // se covergiu
            if (ret)
            {
                // TODO
                //bool ret2 = _fluxoMensal.ExecutaFluxoMaximaDiaria();

                // nivel de tensao antes
                _VmagPu_antes = GetAllBusVmagPu();

                // nome das barras
                GetAllBusNames();

                /*
                 * // TODO utilizar esta variavel nas analises
                 * // preeenche variavel cargas isoladas
                 * _numCargasIsoladas = _fluxoMensal.GetNumCargasIsoladas();
                 */
            }
            else
            {
                _janela.ExibeMsgDisplayMW("Caso Base Não convergiu");
            }
            return(ret);
        }
コード例 #3
0
        private void AnaliseChavesNAsPvt(string nomeAlim)
        {
            // atribui nomeAlim
            _paramGerais.SetNomeAlimAtual(nomeAlim);

            // Carrega arquivos DSS so MT
            _fluxoSoMT = new DailyFlow(_paramGerais, _janela, _oDSS, null, true);

            // Carrega arquivos DSS
            bool ret = _fluxoSoMT.CarregaAlimentador();

            if (!ret)
            {
                _janela.ExibeMsgDisplayMW("Problema ao executar fluxo só MT!");
                return;
            }

            // executa fluxo snap
            ret = _fluxoSoMT.ExecutaFluxoSnap();

            // se exibeConvergencia
            if (ret)
            {
                // verifica cancelamento usuario
                if (_janela._cancelarExecucao)
                {
                    return;
                }

                // get chaves NAs conjunto/alimentador
                GetChaves();

                // cria objeto grafo, juntamente com as matrizes de incidencia
                _grafo = new FeederGraph(_paramGerais, _janela, _fluxoSoMT._oDSS._DSSText);

                // verifica se extremidades das chaves NAs estao no conjunto escolhido
                // OBS: no momento esta filtrando chaves monofasicas tb
                FiltraLstChavesNAs();

                // TODO
                // Calcula Numero de Loops

                // DEBUG plota chaves
                // plotaChavesNA();

                // TODO criar nova flag interna
                // seta este parametro para true para evitar a recarga dos arquivos texto
                _paramGerais._parGUI._otmPorEnergia = true;
                _paramGerais._parGUI.SetAproximaFluxoMensalPorDU(true);

                // Creates monthly PF obj.
                _fluxoMensal = new MonthlyPowerFlow(_paramGerais, _janela, _oDSS);

                // fluxo mensal que servira de referencia para a otimizacao
                bool ret2 = _fluxoMensal.CalculaFluxoMensalBase();

                if (ret2)
                {
                    // preeenche variavel cargas isoladas
                    _numCargasIsoladas = _fluxoMensal.GetNumCargasIsoladas();

                    // armazena resultado do fluxo em variavel temporaria
                    _resCasoBase = new PFResults(_fluxoMensal._resFluxoMensal);

                    // para cada chave NA, escolhe 1 chave NF
                    BranchExchange();

                    //ajusta numero de FPS, considerando o inicial (so na MT)
                    _fluxoMensal._nFP++;

                    // plota numero de FPs
                    _janela.ExibeMsgDisplayMW("Número de FPs: " + _fluxoMensal._nFP.ToString());

                    // plota pares otimizados
                    PlotaChavesOtimizadas();
                }
            }
        }