public void AddPNMObject(PhysicalNetworkModel.ACLineSegment acls, string lineMrid = null) { string xml = "<cim:ACLineSegment rdf:ID='_" + acls.mRID + "'>\r\n"; xml += " <cim:IdentifiedObject.name>" + HttpUtility.HtmlEncode(acls.name) + "</cim:IdentifiedObject.name>\r\n"; xml += " <cim:Equipment.aggregate>false</cim:Equipment.aggregate>\r\n"; xml += " <cim:ConductingEquipment.BaseVoltage rdf:resource='#_" + GetBaseVoltageId(acls.BaseVoltage) + "'/>\r\n"; if (lineMrid != null) { xml += " <cim:Equipment.EquipmentContainer rdf:resource='#_" + lineMrid + "'/>\r\n"; } // PF CGMES expect km, but vi got m in GIS, so we need to divede by 1000 xml += " <cim:Conductor.length>" + DoubleToString(acls.length.Value / 1000) + "</cim:Conductor.length>\r\n"; if (acls.b0ch != null) { xml += " <cim:ACLineSegment.b0ch>" + DoubleToString(acls.b0ch.Value / 1000000) + "</cim:ACLineSegment.b0ch>\r\n"; } if (acls.bch != null) { xml += " <cim:ACLineSegment.bch>" + DoubleToString(acls.bch.Value / 1000000) + "</cim:ACLineSegment.bch>\r\n"; } if (acls.g0ch != null) { xml += " <cim:ACLineSegment.g0ch>" + DoubleToString(acls.g0ch.Value / 1000000) + "</cim:ACLineSegment.g0ch>\r\n"; } if (acls.gch != null) { xml += " <cim:ACLineSegment.gch>" + DoubleToString(acls.gch.Value / 1000000) + "</cim:ACLineSegment.gch>\r\n"; } if (acls.r != null) { xml += " <cim:ACLineSegment.r>" + DoubleToString(acls.r.Value) + "</cim:ACLineSegment.r>\r\n"; } if (acls.r0 != null) { xml += " <cim:ACLineSegment.r0>" + DoubleToString(acls.r0.Value) + "</cim:ACLineSegment.r0>\r\n"; } if (acls.x != null) { xml += " <cim:ACLineSegment.x>" + DoubleToString(acls.x.Value) + "</cim:ACLineSegment.x>\r\n"; } if (acls.x0 != null) { xml += " <cim:ACLineSegment.x0>" + DoubleToString(acls.x0.Value) + "</cim:ACLineSegment.x0>\r\n"; } xml += "</cim:ACLineSegment>\r\n\r\n"; _writer.Write(xml); }
public void TestEQWriterACLineSegment() { // Create ACLS PhysicalNetworkModel.IdentifiedObject acls = new PhysicalNetworkModel.ACLineSegment() { mRID = Guid.NewGuid().ToString(), name = "31-32", BaseVoltage = 10000, length = new PhysicalNetworkModel.Length() { multiplier = PhysicalNetworkModel.UnitMultiplier.none, unit = PhysicalNetworkModel.UnitSymbol.m, Value = 2500 }, b0ch = new PhysicalNetworkModel.Susceptance() { Value = 0 }, bch = new PhysicalNetworkModel.Susceptance() { Value = 0.0001440542 }, gch = new PhysicalNetworkModel.Conductance() { Value = 0 }, g0ch = new PhysicalNetworkModel.Conductance() { Value = 0 }, r = new PhysicalNetworkModel.Resistance() { Value = 5.192352 }, r0 = new PhysicalNetworkModel.Resistance { Value = 5.296199 }, x = new PhysicalNetworkModel.Reactance() { Value = 17.16264 }, x0 = new PhysicalNetworkModel.Reactance() { Value = 0 } }; var converter = new EQ_Writer(eqTempFileName, null, null, Guid.NewGuid(), "test"); converter.AddPNMObject((dynamic)acls); converter.Close(); // Check generated RDF XML document XDocument doc = XDocument.Load(eqTempFileName); var test = doc.Descendants(); // Must be in km now Assert.IsNotNull(doc.Descendants().First(o => o.Name.LocalName == "Conductor.length" && o.Value == "2.5" )); Assert.IsNotNull(doc.Descendants().First(o => o.Name.LocalName == "ACLineSegment.r" && o.Value == "5.192352" )); }