package org.ieee.odm.psse;
import static org.junit.Assert.assertTrue;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;
import org.ieee.odm.adapter.IODMAdapter.NetType;
import org.ieee.odm.adapter.psse.PSSEAdapter;
import org.ieee.odm.adapter.psse.PSSEAdapter.PsseVersion;
import org.ieee.odm.model.acsc.AcscModelParser;
import org.ieee.odm.schema.GroundingEnumType;
import org.ieee.odm.schema.GroundingXmlType;
import org.ieee.odm.schema.LineShortCircuitXmlType;
import org.ieee.odm.schema.ShortCircuitBusXmlType;
import org.ieee.odm.schema.ShortCircuitGenDataXmlType;
import org.ieee.odm.schema.XformrtConnectionEnumType;
import org.ieee.odm.schema.XfrShortCircuitXmlType;
import org.junit.Test;
public class PSSEV30_IEEE9_Acsc_Test {
@Test
public void testCase1() throws Exception {
final LogManager logMgr = LogManager.getLogManager();
Logger logger = Logger.getLogger("IEEE ODM Logger");
logger.setLevel(Level.INFO);
logMgr.addLogger(logger);
PSSEAdapter adapter = new PSSEAdapter(PsseVersion.PSSE_30);
assertTrue(adapter.parseInputFile(NetType.AcscNet, new String[]{
"testData/psse/IEEE9Bus/ieee9.raw",
"testData/psse/IEEE9Bus/ieee9.seq"
}));
AcscModelParser acscParser =(AcscModelParser) adapter.getModel();
acscParser.stdout();
/*
* <acscBus scCode="Contributing" id="Bus1" areaNumber="1" zoneNumber="1" number="1" offLine="false" name="BUS-1 ">
<ownerList id="1">
<ownership unit="PU" value="1.0"/>
</ownerList>
<baseVoltage unit="KV" value="16.5"/>
<voltage unit="PU" value="1.04"/>
<angle unit="DEG" value="0.0"/>
<genData>
<acscEquivGen code="Swing">
<power unit="MVA" re="0.0" im="0.0"/>
<desiredVoltage unit="PU" value="1.04"/>
<desiredAngle unit="DEG" value="0.0"/>
<potiveZ unit="PU" re="0.0" im="0.04"/>
<negativeZ unit="PU" re="0.0" im="0.04"/>
<zeroZ unit="PU" re="0.0" im="0.04"/>
</acscEquivGen>
<acscContributeGen id="1" offLine="false" name="Gen:1(1)">
<desc>PSSE Generator 1 at Bus 1</desc>
<power unit="MVA" re="71.64" im="27.05"/>
<desiredVoltage unit="PU" value="1.04"/>
<qLimit unit="MVAR" max="9999.0" min="-9999.0"/>
<pLimit unit="MW" max="9999.0" min="-9999.0"/>
<mvaBase unit="MVA" value="100.0"/>
<sourceZ unit="PU" re="0.0" im="0.04"/>
<mvarVControlParticipateFactor>1.0</mvarVControlParticipateFactor>
<potiveZ unit="PU" re="0.0" im="0.04"/>
<negativeZ unit="PU" re="0.0" im="0.04"/>
<zeroZ unit="PU" re="0.0" im="0.04"/>
</acscContributeGen>
</genData>
<loadData>
<acscEquivLoad/>
</loadData>
<shuntYData/>
</acscBus>
*/
/*
* -------------------------------
* Zero sequence generator data
* -------------------------------
*/
ShortCircuitBusXmlType scBus1 = acscParser.getBus("Bus1");
ShortCircuitGenDataXmlType scGen1= (ShortCircuitGenDataXmlType) scBus1.getGenData().getContributeGen().get(0).getValue();
assertTrue(scGen1.getPotiveZ().getRe()==0.0);
assertTrue(scGen1.getPotiveZ().getIm()==0.04);
assertTrue(scGen1.getNegativeZ().getRe()==0.0);
assertTrue(scGen1.getNegativeZ().getIm()==0.04);
assertTrue(scGen1.getZeroZ().getRe()==0.0);
assertTrue(scGen1.getZeroZ().getIm()==0.04);
/*
* -------------------------------
* Zero sequence line data
* -------------------------------
*/
/*
* <acscLine circuitId="0" id="Bus7_to_Bus8_cirId_0" areaNumber="1" zoneNumber="1" offLine="false">
<ownerList id="1">
<ownership unit="PU" value="1.0"/>
</ownerList>
<fromBus idRef="Bus7"/>
<toBus idRef="Bus8"/>
<z unit="PU" re="0.0085" im="0.072"/>
<ratingLimit/>
<meterLocation>FromSide</meterLocation>
<totalShuntY unit="PU" re="0.0" im="0.149"/>
<lineInfo/>
<z0 unit="PU" re="0.02125" im="0.18"/>
<y0Shunt unit="PU" re="0.0" im="0.149"/>
</acscLine>
*/
LineShortCircuitXmlType scLine78 = acscParser.getAcscLine("Bus7", "Bus8", "0");
assertTrue(scLine78.getZ0().getRe()==0.02125);
assertTrue(scLine78.getZ0().getIm()==0.18);
assertTrue(scLine78.getY0Shunt().getIm()==0.149);
/*
* -------------------------------
* Zero sequence tranformer data
* -------------------------------
1, 4, 0, '1', 3, 0, 0, 0.0000, 0.0567, 0, 0
-------------------------------------------------------
1) z0 = 0+j*0.0567
2) connection code = 3, no series path, ground path on winding 2 side
which means
<fromSideConnection xfrConnection="Delta">
<grounding groundingConnection="Ungrounded"/>
</fromSideConnection>
<toSideConnection xfrConnection="Wye">
<grounding groundingConnection="SolidGrounded"/>
</toSideConnection>
*/
/*
* <acscXfr circuitId="1" id="Bus1_to_Bus4_cirId_1" areaNumber="1" zoneNumber="1" offLine="false" name="Gen1_to_Bus1_cirId_1">
<ownerList id="1">
<ownership unit="PU" value="1.0"/>
</ownerList>
<fromBus idRef="Bus1"/>
<toBus idRef="Bus4"/>
<z unit="PU" re="0.0" im="0.0567"/>
<ratingLimit/>
<meterLocation>ToSide</meterLocation>
<fromTurnRatio unit="PU" value="1.0"/>
<toTurnRatio unit="PU" value="1.0"/>
<xfrInfo>
<dataOnSystemBase>true</dataOnSystemBase>
<ratedPower unit="MVA" value="100.0"/>
</xfrInfo>
<z0 unit="PU" re="0.0" im="0.0567"/>
<fromSideConnection xfrConnection="Delta">
<grounding groundingConnection="Ungrounded"/>
</fromSideConnection>
<toSideConnection xfrConnection="Wye">
<grounding groundingConnection="SolidGrounded"/>
</toSideConnection>
</acscXfr>
*/
XfrShortCircuitXmlType scXfr_14= acscParser.getAcscXfr("Bus1", "Bus4", "1");
assertTrue(scXfr_14.getZ0().getRe()==0.0);
assertTrue(scXfr_14.getZ0().getIm()==0.0567);
assertTrue(scXfr_14.getFromSideConnection().getXfrConnection()== XformrtConnectionEnumType.DELTA);
assertTrue(scXfr_14.getFromSideConnection().getGrounding().getGroundingConnection()==GroundingEnumType.UNGROUNDED);
assertTrue(scXfr_14.getToSideConnection().getXfrConnection()== XformrtConnectionEnumType.WYE);
assertTrue(scXfr_14.getToSideConnection().getGrounding().getGroundingConnection()==GroundingEnumType.SOLID_GROUNDED);
}
}