コード例 #1
0
        // Executa fluxo snap
        private bool ExecutaFluxoSnapPvt()
        {
            // Interfaces
            Circuit  DSSCircuit  = _oDSS._DSSObj.ActiveCircuit;
            Solution DSSSolution = _oDSS._DSSObj.ActiveCircuit.Solution;

            // realiza ajuste das cargas
            double loadMult = _paramGerais.GetLoadMult();

            if (loadMult == 0)
            {
                _janela.ExibeMsgDisplayMW("LoadMult igual a 0");
                return(false);
            }

            DSSSolution.LoadMult = loadMult;

            // usuario escolheu tensao barramento
            if (_paramGerais._parGUI._usarTensoesBarramento)
            {
                DSSCircuit.Vsources.pu = double.Parse(_paramGerais._parGUI._tensaoSaidaBarUsuario);
            }

            // TODO erro em reconfiguracao
            // seta algorithm Normal ou Newton
            _oDSS._DSSText.Command = "Set Algorithm = " + _paramGerais._AlgoritmoFluxo;

            // seta modo snap.
            _oDSS._DSSText.Command = "Set mode=snap";

            // resolve circuito
            DSSSolution.Solve();

            if (DSSCircuit.Solution.Converged)
            {
                // Obtem dados para o medidor
                _oDSS._DSSText.Command = "energymeter.carga.action=take";

                // Obtem valores de pot e energia dos medidores
                GetValoresEnergyMeter();

                // verifica saida e grava perdas em arquivo OU alimentador que nao tenha convergido
                GravaPerdasArquivo();

                return(true);
            }
            return(false);
        }