/* * @(#)DcLineBranchRecord.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.bpa.lf; public class BPADcLineBranchRecord { /* public static void processDCLineBranchData(final String str, final DCLineBranchRecordXmlType dcBranch, ODMModelParser parser, final PSSNetworkXmlType baseCaseNet,BPAAdapter adapter){ final String strAry[] = getDCLineBranchDataFields(str,adapter); final String dataType= strAry[0]; final String modCode= strAry[1]; final String owner = strAry[2]; final String rectifierBus = strAry[3]; double rectifierRatedVoltage = 0.0; if(!strAry[4].equals("")){ rectifierRatedVoltage= new Double(strAry[4]).doubleValue(); } dcBranch.setRectifierBus(rectifierBus); final String inverterBus = strAry[6]; double inverterRatedVoltage = 0.0; if(!strAry[7].equals("")){ inverterRatedVoltage= new Double(strAry[7]).doubleValue(); } dcBranch.setInverterBus(inverterBus); int measureLocation=0; if(!strAry[5].equals("")){ measureLocation = new Integer(strAry[5]).intValue(); // add to tieline data try{ if(measureLocation==1){ // set tieline data PSSNetworkXmlType.TieLineList.Tieline tieLine=parser.addNewBaseCaseTieline(); tieLine.addNewMeteredBus().setName(rectifierBus); tieLine.addNewNonMeteredBus().setName(inverterBus); // **** DCLineBusRecordXmlType busRecFrom=ParserHelper.getDCLineBusRecord(rectifierBus, baseCaseNet); /*NetAreaXmlType areaFrom=ContainerHelper. getAreaRecordByZone(busRecFrom.getConverter().getData().getZoneNumber(), baseCaseNet); tieLine.setMeteredArea(areaFrom.getName()); DCLineBusRecordXmlType busRecTo=ContainerHelper.getDCLineBusRecord(inverterBus, baseCaseNet); NetAreaXmlType areaTo=ContainerHelper. getAreaRecordByZone(busRecTo.getConverter().getData().getZoneNumber(), baseCaseNet); tieLine.setNonMeteredArea(areaTo.getName());*/ // to do: set area number /* } else{ PSSNetworkXmlType.TieLineList.Tieline tieLine=parser.addNewBaseCaseTieline(); tieLine.addNewMeteredBus().setName(inverterBus); tieLine.addNewNonMeteredBus().setName(rectifierBus); ParserHelper.findBusRecord(rectifierBus, baseCaseNet).getZoneNumber(); BusRecordXmlType busRecFrom=ParserHelper.findBusRecord(inverterBus, baseCaseNet); busRecFrom.getZoneNumber(); NetAreaXmlType areaFrom=ParserHelper. getAreaRecordByZone(busRecFrom.getZoneNumber(), baseCaseNet); tieLine.setMeteredArea(areaFrom.getName()); BusRecordXmlType busRecTo=ParserHelper.findBusRecord(inverterBus, baseCaseNet); busRecTo.getZoneNumber(); NetAreaXmlType areaTo=ParserHelper. getAreaRecordByZone(busRecTo.getZoneNumber(), baseCaseNet); tieLine.setNonMeteredArea(areaTo.getName()); } }catch (final Exception e){ e.printStackTrace(); } } double lineRatingCurrent=0.0; if(!strAry[8].equals("")){ lineRatingCurrent = new Double(strAry[8]).doubleValue(); DataSetter.setCurrentData(dcBranch.getData().addNewMaxCurrent(), lineRatingCurrent, CurrentUnitType.AMP); } double r=0.0, l=0.0,c=0.0; double x=0; final double w= 2*3.14*0.02; if(!strAry[9].equals("")){ r = new Double(strAry[9]).doubleValue(); } if(!strAry[10].equals("")){ l = new Double(strAry[10]).doubleValue(); } if(!strAry[11].equals("")){ c = new Double(strAry[11]).doubleValue(); } // line reactance x=XL-XC=2*pi*f*l-1/(2*Pi*f*c) if(x!=0.0&&c==0.0){ x= w*l*0.001; }else if(c!=0.0){ x= w*l*0.001-1/(w*c*0.000001); } if(r!=0.0||x!=0.0){ DataSetter.setZValue(dcBranch.getData().addNewLineZ(), r, x, ZUnitType.OHM); } String mwControlSide=""; if(!strAry[12].equals("")){ mwControlSide =strAry[12]; if(mwControlSide.equals("R")){ dcBranch.getData().setControlOnRectifierSide(true); }else{ dcBranch.getData().setControlOnRectifierSide(false); } } // DC power control mode, and control power double scheduledMw=0.0; if(!strAry[13].equals("")){ scheduledMw =new Double(strAry[13]).doubleValue(); // dcBranch.getData().setControlMode(DCLineDataXmlType.ControlMode.POWER); DataSetter.setPowerData(dcBranch.getData().addNewPowerDemand(), scheduledMw, 0.0, ApparentPowerUnitType.MVA); } /* double dcLineRatedVoltage=0.0; if(!strAry[14].equals("")){ dcLineRatedVoltage = new Double(strAry[14]).doubleValue(); DataSetter.setVoltageData(dcBranch.getData().addNewRatedDVol(), dcLineRatedVoltage, VoltageUnitType.KV); }*/ /* TODO - the following part has compiling error double recOperFiringAngle=0.0, invStopFiringAngle=0.0; if(!strAry[15].equals("")){ recOperFiringAngle= new Double(strAry[15]).doubleValue(); DataSetter.setAngleData(ContainerHelper.getConverterRecord(rectifierBus, baseCaseNet).getData().addNewRectifierMaxFiringAngle(), recOperFiringAngle, AngleUnitType.DEG); ContainerHelper.getConverterRecord(rectifierBus,baseCaseNet). setType(ConverterXmlType.Type.RECTIFIER); } if(!strAry[16].equals("")){ invStopFiringAngle= new Double(strAry[16]).doubleValue(); DataSetter.setAngleData(ContainerHelper.getConverterRecord(inverterBus, baseCaseNet).getData().addNewInverterMinFiringAgnle(),invStopFiringAngle, AngleUnitType.DEG); ContainerHelper.getConverterRecord(rectifierBus,baseCaseNet). setType(ConverterXmlType.Type.INVERTER); } */ /* double length=0.0; if(!strAry[17].equals("")){ length= new Double(strAry[17]).doubleValue(); dcBranch.getData().addNewLength().setValue(length); dcBranch.getData().getLength().setUnit(LengthUnitType.MILE); } } */ // private static String[] getDCLineBranchDataFields(final String str) { // final String[] strAry = new String[20]; // try{ // strAry[0] = ModelStringUtil.getStringReturnEmptyString(str,1, 2); // strAry[1] = ModelStringUtil.getStringReturnEmptyString(str,3, 3).trim(); // strAry[2] = ModelStringUtil.getStringReturnEmptyString(str,4, 6).trim(); // // strAry[3] = ModelStringUtil.getStringReturnEmptyString(str,7, 14).trim(); // strAry[4] = ModelStringUtil.getStringReturnEmptyString(str,15, 18).trim(); // strAry[5] = ModelStringUtil.getStringReturnEmptyString(str,19, 19).trim(); // strAry[6] = ModelStringUtil.getStringReturnEmptyString(str,20, 27).trim(); // // strAry[7] = ModelStringUtil.getStringReturnEmptyString(str,28, 31).trim(); // strAry[8] = ModelStringUtil.getStringReturnEmptyString(str,34, 37).trim(); // strAry[9] = ModelStringUtil.getStringReturnEmptyString(str,38, 43).trim(); // strAry[10] = ModelStringUtil.getStringReturnEmptyString(str,44, 49).trim(); // strAry[11] = ModelStringUtil.getStringReturnEmptyString(str,50, 55).trim(); // strAry[12] = ModelStringUtil.getStringReturnEmptyString(str,56, 56).trim(); // strAry[13] = ModelStringUtil.getStringReturnEmptyString(str,57, 61).trim(); // strAry[14] = ModelStringUtil.getStringReturnEmptyString(str,62, 66).trim(); // strAry[15] = ModelStringUtil.getStringReturnEmptyString(str,67, 70).trim(); // strAry[16] = ModelStringUtil.getStringReturnEmptyString(str,71, 74).trim(); // // strAry[17] = ModelStringUtil.getStringReturnEmptyString(str,75, 78).trim(); // }catch(Exception e){ // ODMLogger.getLogger().severe(e.toString()); // } // return strAry; // } }