// Executa Fluxo potencia void Worker_ComparaManobras() { //Mensagem de Início _janelaPrincipal.ExibeMsgDisplayMW("Comparação Manobras"); //Lê os alimentadores e armazena a lista de alimentadores List <string> alimentadores = CemigFeeders.GetTodos(_janelaPrincipal._parGUI.GetArqLstAlimentadores()); // TODO testar carrega dados de medicoes _janelaPrincipal._medAlim.CarregaDados(); // instancia classe de parametros Gerais GeneralParameters paramGerais = new GeneralParameters(_janelaPrincipal); // cria objeto DSS ObjDSS oDSS = new ObjDSS(paramGerais); // instancia classe ComparacaoManobras compManobras = new ComparacaoManobras(_janelaPrincipal, paramGerais, alimentadores, oDSS); // Fim _janelaPrincipal.ExibeMsgDisplayMW("Comparação Manobras"); // Finaliza processo _janelaPrincipal.FinalizaProcesso(false); }
//contrutor public FeederMetering(MainWindow janela, GeneralParameters par) { _janela = janela; _paramGerais = par; _reqEnergiaMes = new MonthlyEnergy(par); }
public ComparacaoManobras(MainWindow janelaPrincipal, GeneralParameters paramGerais, List <string> lstAlimentadores, ObjDSS oDSS) { _janela = janelaPrincipal; _paramGerais = paramGerais; _oDSS = oDSS; // analisa chave NA de cada alimentador foreach (string nomeAlim in lstAlimentadores) { // Calcula Caso BAse CalculaFluxoMensalBase(nomeAlim); string cmdManobra = "close line.ctr128251 term=1"; string cmdManobra2 = "open line.ctr134565 term=1"; // Realiza manobra ExecutaManobra(cmdManobra); // Realiza manobra ExecutaManobra(cmdManobra2); // recalcula fluxo CalculaFluxo(); } //DEBUG //Imprime arquivo niveis de tensao antes e depois ImprimeNiveisTensao(); }
// Executa Fluxo potencia void Worker_ExecutaChavesNAs() { //Mensagem de Início _janelaPrincipal.ExibeMsgDisplayMW("Início Chaves NAs"); //Lê os alimentadores e armazena a lista de alimentadores List <string> alimentadores = CemigFeeders.GetTodos(_janelaPrincipal._parGUI.GetArqLstAlimentadores()); // TODO testar carrega dados de medicoes _janelaPrincipal._medAlim.CarregaDados(); // instancia classe de parametros Gerais GeneralParameters paramGerais = new GeneralParameters(_janelaPrincipal); // cria objeto DSS ObjDSS oDSS = new ObjDSS(paramGerais); // instancia classe AnaliseChavesNAs NOSwitchAnalysis analiseChavesNAs = new NOSwitchAnalysis(_janelaPrincipal, paramGerais, alimentadores, oDSS); // Fim _janelaPrincipal.ExibeMsgDisplayMW("Fim Chaves NAs"); // Finaliza processo _janelaPrincipal.FinalizaProcesso(false); }
public ObjDSS(GeneralParameters par) { // _paramGerais = par; // InicializaServDSS(); }
private static void FillParameters(GeneralParameters parameters) { parameters.UserAgent = UserAgent; parameters.ScreenColors = ScreenColors; parameters.ScreenResolution = ScreenResolution; parameters.DocumentTitle = LastPageTitle; parameters.DocumentLocationUrl = LastPageUrl; }
//constructor public VoltageReguladorAnalysis(Text txt, Circuit cir, GeneralParameters paramGerais) { _circuit = cir; _trafosDSS = cir.Transformers; //_DSSText = txt; _param = paramGerais; _tapsRT = new List <string>(); }
//construtor public TransformerVoltageLevelAnalysis(Text txt, Circuit cir, GeneralParameters paramGerais) { _circuit = cir; _trafosDSS = cir.Transformers; _DSSText = txt; _param = paramGerais; _nivelTensaoBarra = new Dictionary <string, double>(); }
// Use this for initialization void Start() { ihm = new IhmCommunicator(); generalParams = new GeneralParameters(); generalParams = GetComponent <GeneralParameters>(); difficulty = GetComponent <GeneralParameters>().Difficulty; zoom = GetComponent <GeneralParameters>().Zoom; score = 0; }
// set energia e perdas mes para o fluxo simplificado public void SetEnergiaPerdasFluxoSimples(PFResults resFluxo, GeneralParameters par) { // mes int mes = par._parGUI.GetMes(); // num de dias do mes int numDias = par._objTipoDeDiasDoMes.GetNumDiasMes(mes); // SetEnergiaPerdasFluxoSimples(resFluxo, numDias); }
// construtor public IsolatedLoads(Circuit cir, GeneralParameters paramGerais) { // preenche variaveis da classe _circuit = cir; _param = paramGerais; string[] _arrayCargasIsoladas = cir.Topology.AllIsolatedLoads; // _lstCargasIsoladas = new List <string>(_arrayCargasIsoladas); }
// Cria arquivo texto cabecalho DRP DRC public static void CriaArqCabecalho(GeneralParameters paramGerais, MainWindow janela) { // string nomeArq = paramGerais.GetNomeComp_arquivoDRPDRC(); //Grava cabecalho string linha = "Alim\tF.A.\tDRP:\tDRC:\tTotal:"; //Grava em arquivo TxtFile.GravaEmArquivo(linha, nomeArq, janela); }
public FeederGraph(GeneralParameters par, MainWindow jan, Text DSSText) { _paramGerais = par; _janela = jan; _DSSText = DSSText; // get matriz incidencia da API OpenDSS GetMatrizIncidencia(); // carrega arquivos CSV da matriz incidencia CarregaMapsGrafoAlim(); }
// 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); }
public NOSwitchAnalysis(MainWindow janela, GeneralParameters par, List <string> lstAlimentadores, ObjDSS oDSS) { // inicializa variaveis de classe _janela = janela; _paramGerais = par; _oDSS = oDSS; // analisa chave NA de cada alimentador foreach (string nomeAlim in lstAlimentadores) { AnaliseChavesNAsPvt(nomeAlim); } // Grava Log _janela.GravaLog(); }
public MonthlyPowerFlow(GeneralParameters paramGerais, MainWindow janela, ObjDSS oDSS) { // preenche variaveis da classe _paramGerais = paramGerais; _janela = janela; // fluxo dia util _fluxoDU = new DailyFlow(paramGerais, janela, oDSS, "DU"); // fluxo sabado _fluxoSA = new DailyFlow(paramGerais, janela, oDSS, "SA"); // fluxo domingo _fluxoDO = new DailyFlow(paramGerais, janela, oDSS, "DO"); // instancia obj resultado Mensal _resFluxoMensal = new PFResults(); }
public LoopAnalysis(MainWindow janelaPrincipal, GeneralParameters paramGerais, List <string> alimentadores, ObjDSS oDSS) { _janelaPrincipal = janelaPrincipal; this._paramGerais = paramGerais; this._lstAlimentadores = alimentadores; this._oDSS = oDSS; //Limpa Arquivos _paramGerais.DeletaArqResultados(); // analisa cada alimentador foreach (string nomeAlim in alimentadores) { AnaliseLoopsPvt(nomeAlim); } // Grava Log _janelaPrincipal.GravaLog(); }
// 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); }
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); }
// Executa Analise de Loops void Worker_ExecutaAnaliseLoops() { //Mensagem de Início _janelaPrincipal.ExibeMsgDisplayMW("Início Analise Loops"); //Lê os alimentadores e armazena a lista de alimentadores List <string> alimentadores = CemigFeeders.GetTodos(_janelaPrincipal._parGUI.GetArqLstAlimentadores()); // instancia classe de parametros Gerais GeneralParameters paramGerais = new GeneralParameters(_janelaPrincipal); // cria objeto DSS ObjDSS oDSS = new ObjDSS(paramGerais); // instancia classe AnaliseChavesNAs LoopAnalysis analiseLoops = new LoopAnalysis(_janelaPrincipal, paramGerais, alimentadores, oDSS); // Fim _janelaPrincipal.ExibeMsgDisplayMW("Fim análise de loops"); // Finaliza processo _janelaPrincipal.FinalizaProcesso(false); }
static void Main(string[] args) { System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone(); customCulture.NumberFormat.NumberDecimalSeparator = "."; System.Threading.Thread.CurrentThread.CurrentCulture = customCulture; maxParallel = Environment.ProcessorCount - 1; maxParallel = 4; Console.WriteLine("Max parallel sims: " + maxParallel); var pp = new ProtocolParameters() { duty_cycle = 0.9, // NOT IN SECONDS: active time percentage (t_l / (t_l + t_s)) t_sense = 0.0521, // carrier sense duration (needs to be more than any signal duration) t_backoff = 0.0219, // backoff interval length (constant?) t_listen = 0.016, // listening time, must be quite higher than t_signal t_data = 0.0521, // data transmission time t_signal = 0.00521, // signal packet transmission time (RTS and CTS ?) n_regions = 4, // number of priority regions n_max_coll = 6, // number of attempts for solving a collision n_max_sensing = 10, n_max_pkt = 3, n_max_region_cycle = 5, passed_packets_memory = 10 }; var sp = new SimulationParameters() { area_side = 200, debug_interval = 1, debugType = DebugType.Never, debug_file = "../../graphic_debug/debug_data.js", max_time = 10, // / (factor * factor), n_density = 200, // this is density (nodes per 100^2 area), not total nodes packet_rate = 1, range = 20, min_distance = 2, asleepEnergy = 2, idleEnergy = 10, transmissionEnergy = 50, emptyRegionType = EmptyRegionType.Lines, skipCycleEvents = true }; var versions = Enum.GetValues(typeof(ProtocolVersion)).Cast <ProtocolVersion>().ToList(); var shapes = Enum.GetValues(typeof(EmptyRegionType)).Cast <EmptyRegionType>().ToList(); var runResults = new RunResult { startTime = DateTime.Now, basePP = pp, baseSP = sp }; var DLparameters = new GeneralParameters() { lambdas = new List <double> { 1, 5, 10 }, dutyCycles = new List <double>() { 0.1, 0.3, 0.5, 0.9 }, emptyRegionTypes = new List <EmptyRegionType> { EmptyRegionType.None, EmptyRegionType.Lines }, versions = versions, simulations = 20 }; var LNparameters = new GeneralParameters() { lambdas = new List <double> { 1, 5, 10 }, relay_densities = new List <float> { 100, 200, 300 }, // CHANGE PROPORTIONAL TO AREA emptyRegionTypes = new List <EmptyRegionType> { EmptyRegionType.None, EmptyRegionType.Lines }, versions = versions, simulations = 20 }; var shapeParameters = new GeneralParameters() { versions = versions, emptyRegionTypes = shapes, simulations = 200 }; var debugParameters = new GeneralParameters() { versions = new List <ProtocolVersion> { ProtocolVersion.Base }, emptyRegionTypes = new List <EmptyRegionType> { EmptyRegionType.Lines }, simulations = 1 }; //runResults.shapeStats = General.Generate("Shapes", sp, pp, shapeParameters); //runResults.dutyLambdas = General.Generate("DL", sp, pp, DLparameters); //runResults.lambdaNs = General.Generate("LN", sp, pp, LNparameters); // debug sp.debugType = DebugType.Always; General.Generate("Debug", sp, pp, debugParameters); runResults.endTime = DateTime.Now; Console.WriteLine("Finished simulating"); using (var writer = new StreamWriter("../../stats/runResults.json")) { writer.WriteLine(JsonConvert.SerializeObject(runResults, Formatting.Indented)); } Console.WriteLine("Saved results"); //Console.ReadKey(); }
// construtor public MonthLoadMult(GeneralParameters par) { _paramGerais = par; CarregaMapAjusteLoadMult(); }
protected override void measureInOpenedFem(FEMM femm) { // Begin to measure FEMM.LineIntegralResult lir = new FEMM.LineIntegralResult(); VPMMotor Motor = this.Motor as VPMMotor; VPMRotor Rotor = Motor.Rotor; Stator3Phase Stator = Motor.Stator; GeneralParameters GeneralParams = Motor.GeneralParams; AirgapNormal Airgap = Motor.Airgap; PMStaticResults Results = this.Results as PMStaticResults; double xS = Rotor.Rrotor * Math.Cos(Rotor.alpha * 0.9999); double yS = Rotor.Rrotor * Math.Sin(Rotor.alpha * 0.9999); // get phiD femm.mo_addcontour(xS, yS); //femm.mo_selectpoint(Rotor.xR, Rotor.yR); femm.mo_addcontour(xS, -yS); femm.mo_bendcontour(-360 / (2 * Rotor.p), 1); lir = femm.mo_lineintegral_full(); Results.phiD = Math.Abs(lir.totalBn); // get phiM femm.mo_clearcontour(); femm.mo_selectpoint(Rotor.xD, Rotor.yD); femm.mo_selectpoint(Rotor.xG, Rotor.yG); FEMM.LineIntegralResult rr = femm.mo_lineintegral(FEMM.LineIntegralType.Bn); Results.phiM = Math.Abs(rr.totalBn * 2); // get phib femm.mo_clearcontour(); femm.mo_selectpoint(Rotor.xH, Rotor.yH); femm.mo_selectpoint(Rotor.xH, -Rotor.yH); rr = femm.mo_lineintegral(FEMM.LineIntegralType.Bn); Results.phib = Math.Abs(rr.totalBn); femm.mo_clearcontour(); femm.mo_selectpoint(Rotor.xE, Rotor.yE); femm.mo_selectpoint(Rotor.xA, Rotor.yA); rr = femm.mo_lineintegral(FEMM.LineIntegralType.Bn); Results.phib += Math.Abs(rr.totalBn * 2); // get phisigmaFe femm.mo_clearcontour(); femm.mo_addcontour(Rotor.xA, Rotor.yA); femm.mo_addcontour(xS, yS); rr = femm.mo_lineintegral(FEMM.LineIntegralType.Bn); Results.phiFe = Math.Abs(rr.totalBn * 2); // get phisigmaS double xZ = (Stator.Rinstator + 5) * Math.Cos(2 * Math.PI / (4 * Rotor.p) - 2 * Math.PI / 180); double yZ = (Stator.Rinstator + 5) * Math.Sin(2 * Math.PI / (4 * Rotor.p) - 2 * Math.PI / 180); femm.mo_clearcontour(); femm.mo_selectpoint(Rotor.xS, Rotor.yS); femm.mo_selectpoint(xZ, yZ); rr = femm.mo_lineintegral(FEMM.LineIntegralType.Bn); Results.phisigmaS = Math.Abs(rr.totalBn * 2); // get FM femm.mo_clearcontour(); femm.mo_addcontour((Rotor.xI + Rotor.xF) / 2, (Rotor.yI + Rotor.yF) / 2); femm.mo_addcontour((Rotor.xD + Rotor.xG) / 2, (Rotor.yD + Rotor.yG) / 2); rr = femm.mo_lineintegral(FEMM.LineIntegralType.Ht); Results.FM = Math.Abs(rr.totalHt); // get B_airgap int n = 128; Results.Bairgap = new PointD[n * 2]; double RR = (Rotor.Rrotor + Stator.Rinstator) / 2; for (int i = 0; i < n; i++) { double a = -(i - n / 2.0) / n * 2 * Rotor.alpha; double px = RR * Math.Cos(a); double py = RR * Math.Sin(a); FEMM.PointValues pv = femm.mo_getpointvalues(px, py); Results.Bairgap[i].X = 2 * Rotor.alpha * RR * i / n; Results.Bairgap[i].Y = pv.B1 * Math.Cos(a) + pv.B2 * Math.Sin(a); if (double.IsNaN(Results.Bairgap[i].Y)) { Results.Bairgap[i].Y = 0; } if (Results.Bdelta_max < Math.Abs(Results.Bairgap[i].Y)) { Results.Bdelta_max = Math.Abs(Results.Bairgap[i].Y); } } // make a mirror (odd function) double dd = 2 * Rotor.alpha * RR; for (int i = 0; i < n; i++) { Results.Bairgap[i + n].X = Results.Bairgap[i].X + dd; Results.Bairgap[i + n].Y = -Results.Bairgap[i].Y; } double wd = Rotor.gammaMedeg / 180 * (Rotor.Rrotor + Airgap.delta / 2) * 2 * Math.PI / (2 * Rotor.p); Results.Bdelta = Results.phiD / (GeneralParams.MotorLength * wd * 1e-6); // psiM Dictionary <String, FEMM.CircuitProperties> cps = Stator.getCircuitsPropertiesInAns(femm); if (cps.ContainsKey("A") && cps.ContainsKey("B") && cps.ContainsKey("C")) { Fdq fdq = ParkTransform.abc_dq(cps["A"].fluxlinkage, cps["B"].fluxlinkage, cps["C"].fluxlinkage, 0); Results.psiM = fdq.Magnitude; } else { Results.psiM = double.NaN; } femm.mo_close(); }
public CostController(GeneralParameters parameters) { _parameters = parameters; }
public static SPMMotor GetSampleMotor() { ////// all length is in mm ////// SPMMotor m = new SPMMotor(); // general information GeneralParameters gp = new GeneralParameters(); gp.MotorLength = 125; gp.FullBuildFEMModel = false; m.GeneralParams = gp; // materials //steel PointBH[] BH = JSON.ToObject <List <PointBH> >(Properties.Resources.bhsample).ToArray(); //stator Stator3Phase sp = new Stator3Phase(); sp.Q = 36; sp.DiaYoke = 191; sp.DiaGap = 126; sp.HS0 = 0.5; sp.HS1 = 1; sp.HS2 = 13.3; sp.BS0 = 3; sp.BS1 = 5; sp.BS2 = 8.2; sp.RS = 0.5; sp.Kfill = 0.8; sp.WindingsConfig = "A:1-7,12-18,13-19,24-30,25-31,36-6;B:8-14,9-15,20-26,21-27,32-2,33-3;C:4-10,5-11,16-22,17-23,28-34,29-35"; sp.NStrands = 10; //wire sp.WireConduct = 58; sp.WireType = FEMM.WireType.MagnetWire; sp.WireDiameter = 1.2; sp.Copper_ro = 8930; //steel sp.Lam_fill = 0.98; sp.Lam_d = 0.635; sp.BH = BH; sp.Steel_ro = 7650; sp.P_eddy_10_50 = 2.5; sp.P_hysteresis_10_50 = 0; m.Stator = sp; //airgap AirgapNormal airgap = new AirgapNormal(); airgap.Kc = 1.1; m.Airgap = airgap; //rotor SPMRotor rotor = new SPMRotor(); // steel rotor.BH = BH; rotor.Lam_fill = 0.98; rotor.Lam_d = 0.635; rotor.Steel_ro = 7650; //magnet rotor.Hc = 883310; rotor.mu_M = 1.045; rotor.Magnet_ro = 7500; rotor.ThickMag = 6; // magnet length rotor.GammaM = 133; rotor.DiaYoke = 32; rotor.p = 3; // pair poles rotor.DiaGap = 126 - 2; // airgap rotor.Poletype = SPMRotor.PoleType.Normal; rotor.PreRotateAngle = 0; m.Rotor = rotor; return(m); }
//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; }
public MonthlyEnergy(GeneralParameters par) { _paramGeraisDSS = par; }