/* * @(#)PSSEAdapter.java * * Copyright (C) 2006-2008 www.interpss.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * @Author Stephen Hau, Mike Zhou * @Version 1.0 * @Date 02/11/2008 * * Revision History * ================ * */ package org.ieee.odm.adapter.psse.v26.impl; import static org.ieee.odm.ODMObjectFactory.OdmObjFactory; import org.ieee.odm.adapter.psse.PSSEAdapter.PsseVersion; import org.ieee.odm.adapter.psse.parser.aclf.PSSEAreaInterchangeDataParser; import org.ieee.odm.adapter.psse.parser.aclf.PSSEHeaderDataParser; import org.ieee.odm.adapter.psse.parser.aclf.PSSEInterAreaTransferDataParser; import org.ieee.odm.common.ODMException; import org.ieee.odm.common.ODMLogger; import org.ieee.odm.model.aclf.AclfModelParser; import org.ieee.odm.model.base.BaseDataSetter; import org.ieee.odm.model.base.BaseJaxbHelper; import org.ieee.odm.schema.ActivePowerUnitType; import org.ieee.odm.schema.InterchangeXmlType; import org.ieee.odm.schema.LoadflowNetXmlType; import org.ieee.odm.schema.PowerInterchangeXmlType; public class PSSEV26NetRecord { public final static String Token_CaseDesc = "Case Description"; public final static String Token_CaseId = "Case ID"; PSSEHeaderDataParser headerDataParser = new PSSEHeaderDataParser(PsseVersion.PSSE_26); PSSEAreaInterchangeDataParser areaInterDataParser = new PSSEAreaInterchangeDataParser(PsseVersion.PSSE_26); PSSEInterAreaTransferDataParser interAreaDataParser = new PSSEInterAreaTransferDataParser(PsseVersion.PSSE_26); public boolean processHeaderData(final String str1,final String str2,final String str3, final LoadflowNetXmlType baseCaseNet) throws ODMException { //line 1 at here we have "0, 100.00 " or some times "0 100.00 " //final String[] strAry = getHeaderDataFields(str1,str2,str3); headerDataParser.parseFields(new String[] {str1,str2,str3}); //if (strAry == null) // return false; final double baseMva = headerDataParser.getDouble("BaseKva", 100.0); ODMLogger.getLogger().fine("BaseKva: " + baseMva); baseCaseNet.setBasePower(BaseDataSetter.createPowerMvaValue(baseMva)); //NameValuePairListXmlType nvList = factory.createNameValuePairListXmlType(); //baseCaseNet.setNvPairList(nvList); final String desc = headerDataParser.getString("Comment1");// The 2nd line is treated as description BaseJaxbHelper.addNVPair(baseCaseNet, Token_CaseDesc, desc); // the 3rd line is treated as the network id and network name final String caseId= headerDataParser.getString("Comment2"); BaseJaxbHelper.addNVPair(baseCaseNet, Token_CaseId, caseId); ODMLogger.getLogger().fine("Case Description, caseId: " + desc + ", "+ caseId); return true; } public void processAreaInterchangeData(final String str, AclfModelParser parser) throws ODMException { final LoadflowNetXmlType baseCaseNet = parser.getNet(); //final String[] strAry = getAreaInterchangeDataFields(str); areaInterDataParser.parseFields(str); // "AreaNum", "SwingBusName", "ExpoertMw", "ExTolerance", "Notefined" // Area number , no zeros! * final int no = areaInterDataParser.getInt("AreaNum", 0); // swing bus name [A] final String swingBusName = areaInterDataParser.getString("SwingBusName"); // Area interchange export, MW [F] (+ = out) * // Area interchange tolerance, MW [F] * final double mw = areaInterDataParser.getDouble("ExpoertMw", 0.0); final double err = areaInterDataParser.getDouble("ExTolerance", 0.0); PowerInterchangeXmlType interchange = OdmObjFactory.createPowerInterchangeXmlType(); baseCaseNet.setInterchangeList(OdmObjFactory.createLoadflowNetXmlTypeInterchangeList()); InterchangeXmlType ex = OdmObjFactory.createInterchangeXmlType(); baseCaseNet.getInterchangeList().getInterchange().add(ex); ex.setPowerEx(interchange); interchange.setAreaNumber(no); interchange.setSwingBus(parser.createBusRef(swingBusName)); interchange.setDesiredExPower(BaseDataSetter.createActivePowerValue(mw, ActivePowerUnitType.MW)); interchange.setExErrTolerance(BaseDataSetter.createActivePowerValue(err, ActivePowerUnitType.MW)); } public void processInterAreaTransferData(final String str, final LoadflowNetXmlType baseCaseNet) throws ODMException { //final String[] strAry = getInterAreaTransferDataFields(str); interAreaDataParser.parseFields(str); } }