package org.ieee.odm.adapter.psse.mapper.acsc; import org.ieee.odm.adapter.psse.PSSEAdapter.PsseVersion; import org.ieee.odm.adapter.psse.mapper.aclf.BasePSSEDataMapper; import org.ieee.odm.adapter.psse.parser.acsc.PSSESwitchedShuntZeroSeqParser; import org.ieee.odm.common.ODMException; import org.ieee.odm.model.IODMModelParser; import org.ieee.odm.model.acsc.BaseAcscModelParser; import org.ieee.odm.model.base.BaseDataSetter; import org.ieee.odm.schema.NetworkXmlType; import org.ieee.odm.schema.ReactivePowerUnitType; import org.ieee.odm.schema.ShortCircuitBusXmlType; import org.ieee.odm.schema.SwitchedShuntBlockXmlType; import org.ieee.odm.schema.SwitchedShuntXmlType; public class PSSESwitchShuntZeroSeqMapper extends BasePSSEDataMapper{ public PSSESwitchShuntZeroSeqMapper(PsseVersion ver) { super(ver); this.dataParser = new PSSESwitchedShuntZeroSeqParser(ver); } //I, BZ1, BZ2, ... BZ8 public void procLineString(String lineStr, BaseAcscModelParser<? extends NetworkXmlType> parser) throws ODMException { dataParser.parseFields(lineStr); int i = dataParser.getInt("I"); final String busId = IODMModelParser.BusIdPreFix+i; ShortCircuitBusXmlType scBus =(ShortCircuitBusXmlType) parser.getBus(busId); /* The zero sequence admittance switched on at a bus is determined from the bus� positive sequence value, with the same number of blocks and steps in each block switched on */ SwitchedShuntXmlType shunt = scBus.getSwitchedShunt(); int k = 1; if(shunt !=null){ for(SwitchedShuntBlockXmlType block: shunt.getBlock()){ block.setZeroSeqIncrementB( BaseDataSetter.createReactivePowerValue(dataParser.getDouble("BZ"+k++), ReactivePowerUnitType.PU)); } } } }