package org.ieee.odm.pwd; import static org.junit.Assert.assertTrue; import org.ieee.odm.adapter.IODMAdapter; import org.ieee.odm.adapter.pwd.PowerWorldAdapter; import org.ieee.odm.model.aclf.AclfModelParser; import org.ieee.odm.model.aclf.AclfParserHelper; import org.ieee.odm.schema.LFGenCodeEnumType; import org.ieee.odm.schema.LineBranchXmlType; import org.ieee.odm.schema.LoadflowBusXmlType; import org.ieee.odm.schema.LoadflowGenDataXmlType; import org.ieee.odm.schema.LoadflowLoadDataXmlType; import org.ieee.odm.schema.XfrBranchXmlType; import org.junit.Test; public class PwdAdapterTest { /* * 25/03/2012 now test to Xformer, since the following two parts seems to be * only supplement data, we can skip xformer and 3wxformer and continue */ double zError=1E-5; double vError=1E-3; @Test public void B5Rtest(){ IODMAdapter adapter = new PowerWorldAdapter(); assertTrue(adapter.parseInputFile("testdata/pwd/B5R.aux")); AclfModelParser parser=(AclfModelParser) adapter.getModel(); //parser.stdout(); //check network data assertTrue(parser.getNet().getBasePower().getValue()==100.0); assertTrue(parser.getNet().getBusList().getBus().size()==6); assertTrue(parser.getNet().getBranchList().getBranch().size()==8); // //ZONE /* * DATA (ZONE, [ZoneNum,ZoneName,SchedName]) 1 "1 " "" */ assertTrue(parser.getNet().getLossZoneList().getLossZone().size()==1); assertTrue(parser.getNet().getLossZoneList().getLossZone().get(0).getNumber()==1); //AREA /* * DATA (AREA, [AreaNum,AreaName,BGAGC,BGAutoSS,BGAutoXF,EnforceGenMWLimits,SchedName,SAName, ConvergenceTol,AreaEDIncludeLossPF,BusSlack,AreaUnSpecifiedStudyMW]) { 1 "Home " " ED " "YES" "YES" "YES" "" "" 1.0000 "YES" "" 0.000 2 "2 " " ED " "YES" "YES" "YES" "" "" 1.0000 "YES" "" 0.000 } */ assertTrue(parser.getNet().getAreaList().getArea().size()==2); assertTrue(parser.getNet().getAreaList().getArea().get(0).getNumber()==1); assertTrue(parser.getNet().getAreaList().getArea().get(0).getName().equals("Home"));//already trim //check bus data LoadflowBusXmlType bus1=(LoadflowBusXmlType) parser.getBus("Bus1"); LoadflowGenDataXmlType defaultGen = AclfParserHelper.getDefaultGen(bus1.getGenData()); assertTrue(bus1.getGenData().getCode()==LFGenCodeEnumType.SWING); assertTrue(defaultGen.getDesiredVoltage().getValue()==1.0); assertTrue(Math.abs(defaultGen.getPower().getRe()-100.0056)<1E-3); assertTrue(Math.abs(defaultGen.getQLimit().getMax()-99998.999)<1E-3); assertTrue(Math.abs(defaultGen.getQLimit().getMin()-(-99998.999))<1E-3); assertTrue(Math.abs(defaultGen.getPLimit().getMax()-800.0)<1E-4); assertTrue(defaultGen.getPLimit().getMin()==0.0); LoadflowLoadDataXmlType defaultLoad = AclfParserHelper.getDefaultLoad(bus1.getLoadData()); assertTrue(defaultLoad.getConstPLoad().getRe()==100.0); assertTrue(defaultLoad.getConstPLoad().getIm()==0.0); //check line data LineBranchXmlType line=(LineBranchXmlType) parser.getNet().getBranchList().getBranch().get(0).getValue(); assertTrue(Math.abs(line.getZ().getRe()-0.03)<zError); assertTrue(Math.abs(line.getZ().getIm()-0.16)<zError); //check transformer data /* * [BusNum,BusNum:1,LineCircuit,LineStatus,LineR,LineX,LineC,LineG,LineAMVA,LineBMVA, LineCMVA,LineShuntMW,LineShuntMW:1,LineShuntMVR,LineShuntMVR:1,LineXfmr,LineTap, LinePhase,SeriesCapStatus] * 4 5 " 1" "Closed" 0.000000 0.100000 0.000000 0.000000 1000.000 1000.000 1000.000 0.000 0.000 0.000 0.000 "YES" 0.993750 0.000000 "Not Bypassed" */ XfrBranchXmlType xfr=(XfrBranchXmlType) parser.getBranch("Bus4","Bus5","1"); //TODO Both b and g are zero, so MagnitizingY are not set. // assertTrue(xfr.getMagnitizingY().getIm()==0.0); // assertTrue(xfr.getMagnitizingY().getRe()==0.0); assertTrue(Math.abs(xfr.getZ().getIm()-0.100000)<zError); assertTrue(Math.abs(xfr.getZ().getRe()-0.000000)<zError); assertTrue(Math.abs(xfr.getFromTurnRatio().getValue()-.993750)<zError); assertTrue(Math.abs(xfr.getToTurnRatio().getValue()-1.0)<zError); } @Test public void IEEE14Bustest(){ IODMAdapter adapter = new PowerWorldAdapter(); assertTrue(adapter.parseInputFile("testdata/pwd/ieee14.aux")); AclfModelParser parser=(AclfModelParser) adapter.getModel(); parser.stdout(); //check network data assertTrue(parser.getNet().getBasePower().getValue()==100.0); assertTrue(parser.getNet().getBusList().getBus().size()==18); assertTrue(parser.getNet().getBranchList().getBranch().size()==24); //check bus data LoadflowBusXmlType bus2=(LoadflowBusXmlType) parser.getBus("Bus2"); assertTrue(bus2.getBaseVoltage().getValue()==132.00); assertTrue(bus2.isOffLine()==false); LoadflowGenDataXmlType defaultGen = AclfParserHelper.getDefaultGen(bus2.getGenData()); assertTrue(defaultGen.getDesiredVoltage().getValue()==1.045000); assertTrue(defaultGen.getPower().getRe() == 40.0); assertTrue(defaultGen.getQLimit().getMax() == 50.0); assertTrue(defaultGen.getQLimit().getMin() == -40.0); assertTrue(defaultGen.getPLimit().getMax() == 10000.0); assertTrue(defaultGen.getPLimit().getMin()==-10000.0); LoadflowLoadDataXmlType defaultLoad = AclfParserHelper.getDefaultLoad(bus2.getLoadData()); assertTrue(defaultLoad.getConstPLoad().getRe()==21.700); assertTrue(defaultLoad.getConstPLoad().getIm()==12.700); //check line data /*BusNum,BusNum:1,LineCircuit,LineStatus,LineR,LineX,LineC,LineG * 15 2 " 1" "Closed" 0.019380 0.059170 0.052800 0.000000 */ LineBranchXmlType line=(LineBranchXmlType) parser.getBranch("Bus15","Bus2","1"); assertTrue(Math.abs(line.getZ().getRe()-0.019380)<zError); assertTrue(Math.abs(line.getZ().getIm()-0.059170)<zError); assertTrue(Math.abs(line.getTotalShuntY().getIm()-0.052800)<zError); assertTrue(Math.abs(line.getTotalShuntY().getRe()-0.0)<zError); //check transformer data /* * [BusNum,BusNum:1,LineCircuit,LineStatus,LineR,LineX,LineC,LineG] 4 7 " 1" "Closed" 0.000000 0.209120 0.000000 0.000000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.0000 0.0000 0.0000 0.0000 0.978000 0.000000 "Not Bypassed" "Closed" "Not Bypassed" "NO " "From" "" "Default" "YES" "No" "NO " "NO " 0.0000 1 100.0000 0.0000 0.0000 "Transformer" "" "NO" "NO" "NO" "NO" "NO " "NO " "NO " "NO " "NO " "NO " 4 9 " 1" "Closed" 0.000000 0.556180 0.000000 0.000000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.0000 0.0000 0.0000 0.0000 0.969000 0.000000 "Not Bypassed" "Closed" "Not Bypassed" "NO " "From" "" "Default" "YES" "No" "NO " "NO " 0.0000 1 100.0000 0.0000 0.0000 "Transformer" "" "NO" "NO" "NO" "NO" "NO " "NO " "NO " "NO " "NO " "NO " 5 6 " 1" "Closed" 0.000000 0.252020 0.000000 0.000000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.0000 0.0000 0.0000 0.0000 0.932000 0.000000 "Not Bypassed" "Closed" "Not Bypassed" "NO " "From" "" "Default" "YES" "No" "NO " "NO " 0.0000 1 100.0000 0.0000 0.0000 "Transformer" "" "NO" "NO" "NO" "NO" "NO " "NO " "NO " "NO " "NO " "NO " */ XfrBranchXmlType xfr=(XfrBranchXmlType) parser.getBranch("Bus4","Bus7","1"); //TODO Both b and g are zero, so MagnitizingY are not set. // assertTrue(xfr.getMagnitizingY().getIm()==0.0); // assertTrue(xfr.getMagnitizingY().getRe()==0.0); assertTrue(xfr.getZ().getIm()==0.209120); assertTrue(xfr.getZ().getRe()==0.000000); assertTrue(xfr.getFromTurnRatio().getValue()==0.978000); assertTrue(xfr.getToTurnRatio().getValue()==1.0); } }