public VoltagePhasorGroupDetailViewModel(object voltage) { if (voltage != null && voltage is VoltagePhasorGroup) { m_voltage = voltage as VoltagePhasorGroup; } }
public void LinkNetworkComponents(int numberOfPhasors, int numberofShuntBreakers) { for (int i = 0; i < numberOfPhasors; i++) { VoltagePhasorGroup voltagePhasorGroup = new VoltagePhasorGroup(); Voltages.Add(voltagePhasorGroup); } for (int i = 0; i < numberofShuntBreakers; i++) { Switch shuntBreaker = new Switch(); ShuntBreakers.Add(shuntBreaker); } }
static void Main(string[] args) { //PhasorMeasurement busAVoltage = new PhasorMeasurement() // { // Type = PhasorType.VoltagePhasor, // BaseKV = new VoltageLevel(1, 230), // Magnitude = 133518.0156, // AngleInDegrees = -2.4644 // }; //PhasorMeasurement busBVoltage = new PhasorMeasurement() //{ // Type = PhasorType.VoltagePhasor, // BaseKV = new VoltageLevel(1, 230), // Magnitude = 133758.7656, // AngleInDegrees = 2.4317 //}; //PhasorMeasurement busCVoltage = new PhasorMeasurement() //{ // Type = PhasorType.VoltagePhasor, // BaseKV = new VoltageLevel(1, 230), // Magnitude = 133666.7188, // AngleInDegrees = -2.1697 //}; //PhasorMeasurement busDVoltage = new PhasorMeasurement() //{ // Type = PhasorType.VoltagePhasor, // BaseKV = new VoltageLevel(1, 230), // Magnitude = 134102.8125, // AngleInDegrees = 0.0096257 //}; //PhasorMeasurement busEVoltage = new PhasorMeasurement() //{ // Type = PhasorType.VoltagePhasor, // BaseKV = new VoltageLevel(1, 230), // Magnitude = 133088.9688, // AngleInDegrees = -7.2477 //}; //PhasorMeasurement busFVoltage = new PhasorMeasurement() //{ // Type = PhasorType.VoltagePhasor, // BaseKV = new VoltageLevel(1, 230), // Magnitude = 133141.7344, // AngleInDegrees = -6.3372 //}; //PhasorMeasurement busGVoltage = new PhasorMeasurement() //{ // Type = PhasorType.VoltagePhasor, // BaseKV = new VoltageLevel(1, 230), // Magnitude = 133346.1094, // AngleInDegrees = -5.8259 //}; //PhasorMeasurement busHVoltage = new PhasorMeasurement() //{ // Type = PhasorType.VoltagePhasor, // BaseKV = new VoltageLevel(1, 230), // Magnitude = 133492.2969, // AngleInDegrees = -4.6002 //}; ///// ///// ///// Current //PhasorMeasurement busBtoBusAFlow = new PhasorMeasurement() // { // Type = PhasorType.CurrentPhasor, // BaseKV = new VoltageLevel(1, 230) // }; //PhasorMeasurement busBtoBusCFlow = new PhasorMeasurement() //{ // Type = PhasorType.CurrentPhasor, // BaseKV = new VoltageLevel(1, 230) //}; //PhasorMeasurement busDtoBusCFlow = new PhasorMeasurement() //{ // Type = PhasorType.CurrentPhasor, // BaseKV = new VoltageLevel(1, 230) //}; //PhasorMeasurement busDtoBusFFlow = new PhasorMeasurement() //{ // Type = PhasorType.CurrentPhasor, // BaseKV = new VoltageLevel(1, 230) //}; //PhasorMeasurement busAtoBusEFlow = new PhasorMeasurement() //{ // Type = PhasorType.CurrentPhasor, // BaseKV = new VoltageLevel(1, 230) //}; //PhasorMeasurement busFtoBusEFlow = new PhasorMeasurement() //{ // Type = PhasorType.CurrentPhasor, // BaseKV = new VoltageLevel(1, 230) //}; //PhasorMeasurement busAtoBusGFlow = new PhasorMeasurement() //{ // Type = PhasorType.CurrentPhasor, // BaseKV = new VoltageLevel(1, 230) //}; //PhasorMeasurement busHtoBusGFlow = new PhasorMeasurement() //{ // Type = PhasorType.CurrentPhasor, // BaseKV = new VoltageLevel(1, 230) //}; //PhasorMeasurement busDtoBusHFlow = new PhasorMeasurement() //{ // Type = PhasorType.CurrentPhasor, // BaseKV = new VoltageLevel(1, 230) //}; //busBtoBusAFlow.PerUnitComplexPhasor = (busBVoltage.PerUnitComplexPhasor - busAVoltage.PerUnitComplexPhasor) / (new Complex(0.0, 0.01)); //busBtoBusCFlow.PerUnitComplexPhasor = (busBVoltage.PerUnitComplexPhasor - busCVoltage.PerUnitComplexPhasor) / (new Complex(0.0, 0.06)); //busDtoBusCFlow.PerUnitComplexPhasor = (busDVoltage.PerUnitComplexPhasor - busCVoltage.PerUnitComplexPhasor) / (new Complex(0.0, 0.06)); //busDtoBusFFlow.PerUnitComplexPhasor = (busDVoltage.PerUnitComplexPhasor - busFVoltage.PerUnitComplexPhasor) / (new Complex(0.0, 0.01)); //busAtoBusEFlow.PerUnitComplexPhasor = (busAVoltage.PerUnitComplexPhasor - busEVoltage.PerUnitComplexPhasor) / (new Complex(0.0, 0.005)); //busFtoBusEFlow.PerUnitComplexPhasor = (busFVoltage.PerUnitComplexPhasor - busEVoltage.PerUnitComplexPhasor) / (new Complex(0.0, 0.005)); //busAtoBusGFlow.PerUnitComplexPhasor = (busAVoltage.PerUnitComplexPhasor - busGVoltage.PerUnitComplexPhasor) / (new Complex(0.0, 0.005)); //busHtoBusGFlow.PerUnitComplexPhasor = (busHVoltage.PerUnitComplexPhasor - busGVoltage.PerUnitComplexPhasor) / (new Complex(0.0, 0.01)); //busDtoBusHFlow.PerUnitComplexPhasor = (busDVoltage.PerUnitComplexPhasor - busHVoltage.PerUnitComplexPhasor) / (new Complex(0.0, 0.01)); //Console.WriteLine("BusB.BusA: " + busBtoBusAFlow.Magnitude.ToString() + " " + (busBtoBusAFlow.AngleInDegrees).ToString()); //Console.WriteLine("BusB.BusC: " + busBtoBusCFlow.Magnitude.ToString() + " " + (busBtoBusCFlow.AngleInDegrees).ToString()); //Console.WriteLine("BusD.BusC: " + busDtoBusCFlow.Magnitude.ToString() + " " + (busDtoBusCFlow.AngleInDegrees).ToString()); //Console.WriteLine("BusD.BusF: " + busDtoBusFFlow.Magnitude.ToString() + " " + (busDtoBusFFlow.AngleInDegrees).ToString()); //Console.WriteLine("BusA.BusE: " + busAtoBusEFlow.Magnitude.ToString() + " " + (busAtoBusEFlow.AngleInDegrees).ToString()); //Console.WriteLine("BusF.BusE: " + busFtoBusEFlow.Magnitude.ToString() + " " + (busFtoBusEFlow.AngleInDegrees).ToString()); //Console.WriteLine("BusA.BusG: " + busAtoBusGFlow.Magnitude.ToString() + " " + (busAtoBusGFlow.AngleInDegrees).ToString()); //Console.WriteLine("BusH.BusG: " + busHtoBusGFlow.Magnitude.ToString() + " " + (busHtoBusGFlow.AngleInDegrees).ToString()); //Console.WriteLine("BusD.BusH: " + busDtoBusHFlow.Magnitude.ToString() + " " + (busDtoBusHFlow.AngleInDegrees).ToString()); //Network network = Network.DeserializeFromXml(@"\\psf\Home\Documents\mc2\Linear State Estimation\EPG\LinearStateEstimator.OfflineModule\x86\TransmissionLineGraphTestFull4.xml"); //Network network = Network.DeserializeFromXml(@"\\psf\Home\Documents\mc2\Projects\EPG - WECC SDVCA\Data\July 20, 2014 Test Cases\shunt_test_model.xml"); //RawMeasurements rawMeasurements = RawMeasurements.DeserializeFromXml(@"\\psf\Home\Documents\mc2\Projects\EPG - WECC SDVCA\Data\July 20, 2014 Test Cases\ShuntSeriesTestCase151.xml"); //network.Initialize(); //network.Model.InputKeyValuePairs.Clear(); //for (int i = 0; i < rawMeasurements.Items.Count(); i++) //{ // network.Model.InputKeyValuePairs.Add(rawMeasurements.Items[i].Key, Convert.ToDouble(rawMeasurements.Items[i].Value)); //} //network.Model.OnNewMeasurements(); //Console.WriteLine(network.Model.ComponentList()); //Dictionary<string, double> receivedMeasurements = network.Model.GetReceivedMeasurements(); //foreach (KeyValuePair<string, double> keyValuePair in receivedMeasurements) //{ // Console.WriteLine(keyValuePair.Key + " " + keyValuePair.Value.ToString()); //} //Console.WriteLine(rawMeasurements.Items.Count().ToString()); //Console.WriteLine(receivedMeasurements.Count.ToString()); //Console.WriteLine(); //network.RunNetworkReconstructionCheck(); //network.Model.DetermineActiveCurrentFlows(); //network.Model.DetermineActiveCurrentInjections(); //Console.WriteLine(network.Model.MeasurementInclusionStatusList()); //network.Model.ResolveToObservedBusses(); //Console.WriteLine(network.Model.ObservedBusses.Count); //foreach (Substation substation in network.Model.Substations) //{ // Console.WriteLine(substation.Graph.AdjacencyList.ToString()); //} //network.Model.ResolveToSingleFlowBranches(); //foreach (TransmissionLine transmissionLine in network.Model.TransmissionLines) //{ // Console.WriteLine(); // Console.WriteLine(transmissionLine.Name); // Console.WriteLine("Has at least one flow path: " + transmissionLine.Graph.HasAtLeastOneFlowPath.ToString()); // Console.WriteLine(transmissionLine.Graph.DirectlyConnectedAdjacencyList.ToString()); // Console.WriteLine(transmissionLine.Graph.SeriesImpedanceConnectedAdjacencyList.ToString()); // Console.WriteLine(transmissionLine.Graph.RootNode.ToSubtreeString()); // List<SeriesBranchBase> seriesBranches = transmissionLine.Graph.SingleFlowPathBranches; // foreach (SeriesBranchBase seriesBranch in seriesBranches) // { // seriesBranch.ToVerboseString(); // } //} //network.ComputeSystemState(); //network.Model.ComputeEstimatedCurrentFlows(); //network.Model.ComputeEstimatedCurrentInjections(); //TransmissionLine transmissionLine = network.Model.Companies[0].Divisions[0].TransmissionLines[0]; //foreach (Switch bypassSwitch in transmissionLine.Switches) //{ // bypassSwitch.IsInDefaultMode = false; // bypassSwitch.ActualState = SwitchingDeviceActualState.Closed; // if (bypassSwitch.InternalID == 1) { bypassSwitch.ActualState = SwitchingDeviceActualState.Closed; } // Console.WriteLine(String.Format("ID:{0} Normally:{1} Actually:{2}", bypassSwitch.InternalID, bypassSwitch.NormalState, bypassSwitch.ActualState)); //} //TransmissionLineGraph graph = new TransmissionLineGraph(transmissionLine); //graph.InitializeAdjacencyLists(); //Console.WriteLine(graph.DireclyConnectedAdjacencyList.ToString()); //graph.ResolveConnectedAdjacencies(); //Console.WriteLine(graph.DireclyConnectedAdjacencyList.ToString()); //Console.WriteLine(graph.SeriesImpedanceConnectedAdjacencyList.ToString()); //if (graph.HasAtLeastOneFlowPath) //{ // Console.WriteLine(graph.SeriesImpedanceConnectedAdjacencyList.ToString()); // graph.InitializeTree(); // Console.WriteLine(graph.RootNode.ToSubtreeString()); // Console.WriteLine("Number of series branches: " + graph.SingleFlowPathBranches.Count); // Console.WriteLine(graph.ResolveToSingleSeriesBranch().RawImpedanceParameters.ToString()); //} //else //{ // Console.WriteLine("Graph does not have at least one flow path -> tree would be invalid!"); //} //SequencedMeasurementSnapshotPathSet sequencedMeasurementSnapshotPathSet = new SequencedMeasurementSnapshotPathSet(); //sequencedMeasurementSnapshotPathSet.MeasurementSnapshotPaths.Add(new MeasurementSnapshotPath("value")); //sequencedMeasurementSnapshotPathSet.SerializeToXml("\\\\psf\\Home\\Documents\\mc2\\Projects\\EPG - WECC SDVCA\\Data\\TestCases.xml"); CsvFileWithHeader coFile = new CsvFileWithHeader("U:\\Documents\\Projects\\02 Linear State Estimator\\EMS to LSE\\lse_co.out"); CsvFileWithHeader dvFile = new CsvFileWithHeader("U:\\Documents\\Projects\\02 Linear State Estimator\\EMS to LSE\\lse_dv.out"); CsvFileWithHeader stFile = new CsvFileWithHeader("U:\\Documents\\Projects\\02 Linear State Estimator\\EMS to LSE\\lse_st.out"); CsvFileWithHeader ndFile = new CsvFileWithHeader("U:\\Documents\\Projects\\02 Linear State Estimator\\EMS to LSE\\lse_nd.out"); List <double> nodeBaseKvs = new List <double>(); NetworkModel networkModel = new NetworkModel(); foreach (Dictionary <string, string> node in ndFile.StructuredData) { if (!nodeBaseKvs.Contains(Convert.ToDouble(node["id_kv"].TrimEnd('\'').TrimStart('\'')))) { nodeBaseKvs.Add(Convert.ToDouble(node["id_kv"].TrimEnd('\'').TrimStart('\''))); } } nodeBaseKvs.Sort(); for (int i = 0; i < nodeBaseKvs.Count; i++) { networkModel.VoltageLevels.Add(new VoltageLevel(i + 1, nodeBaseKvs[i])); } foreach (Dictionary <string, string> row in coFile.StructuredData) { Company company = new Company() { InternalID = Convert.ToInt32(row["%SUBSCRIPT"]), Number = Convert.ToInt32(row["%SUBSCRIPT"]), Name = row["id_area"], Acronym = row["id_area"], }; networkModel.Companies.Add(company); foreach (Dictionary <string, string> divisionRecord in dvFile.StructuredData) { if (company.Number == Convert.ToInt32(divisionRecord["i$area_dv"])) { Division division = new Division() { InternalID = Convert.ToInt32(divisionRecord["%SUBSCRIPT"]), Number = Convert.ToInt32(divisionRecord["%SUBSCRIPT"]), Name = divisionRecord["id_dv"], Acronym = divisionRecord["id_dv"], }; company.Divisions.Add(division); foreach (Dictionary <string, string> substationRecord in stFile.StructuredData) { if (division.Name == substationRecord["id_dv"]) { Substation substation = new Substation() { InternalID = Convert.ToInt32(substationRecord["%SUBSCRIPT"]), Number = Convert.ToInt32(substationRecord["%SUBSCRIPT"]), Acronym = substationRecord["id_st"], Name = substationRecord["id_st"] }; division.Substations.Add(substation); foreach (Dictionary <string, string> nodeRecord in ndFile.StructuredData) { if (substation.Name == nodeRecord["id_st"]) { double baseKvValue = Convert.ToDouble(nodeRecord["id_kv"].TrimEnd('\'').TrimStart('\'')); VoltageLevel baseKv = new VoltageLevel(1, 999); foreach (VoltageLevel voltageLevel in networkModel.VoltageLevels) { if (voltageLevel.Value == baseKv.Value) { baseKv = voltageLevel; } } Node node = new Node() { InternalID = Convert.ToInt32(nodeRecord["%SUBSCRIPT"]), Number = Convert.ToInt32(nodeRecord["%SUBSCRIPT"]), Acronym = nodeRecord["id_nd"], Name = nodeRecord["id_st"] + "_" + nodeRecord["id_nd"], Description = nodeRecord["id_st"] + " " + nodeRecord["id_kv"] + "kV Node " + nodeRecord["id_nd"], BaseKV = baseKv }; VoltagePhasorGroup voltage = new VoltagePhasorGroup() { InternalID = node.InternalID, Number = node.Number, Acronym = "V " + node.InternalID.ToString(), Name = "Phasor Name", Description = "Voltage Phasor Group Description", IsEnabled = true, UseStatusFlagForRemovingMeasurements = true, MeasuredNode = node }; voltage.ZeroSequence.Measurement.BaseKV = node.BaseKV; voltage.ZeroSequence.Estimate.BaseKV = node.BaseKV; voltage.NegativeSequence.Measurement.BaseKV = node.BaseKV; voltage.NegativeSequence.Estimate.BaseKV = node.BaseKV; voltage.PositiveSequence.Measurement.BaseKV = node.BaseKV; voltage.PositiveSequence.Estimate.BaseKV = node.BaseKV; voltage.PhaseA.Measurement.BaseKV = node.BaseKV; voltage.PhaseA.Estimate.BaseKV = node.BaseKV; voltage.PhaseB.Measurement.BaseKV = node.BaseKV; voltage.PhaseB.Estimate.BaseKV = node.BaseKV; voltage.PhaseC.Measurement.BaseKV = node.BaseKV; voltage.PhaseC.Estimate.BaseKV = node.BaseKV; node.Voltage = voltage; substation.Nodes.Add(node); } } } } } } } Network network = new Network(networkModel); network.SerializeToXml("U:\\ems.xml"); Console.ReadLine(); }