/* * @(#)BPADynamicRecord.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 * @Version 1.0 * @Date 02/11/2008 * * Revision History * ================ * */ package org.ieee.odm.adapter.bpa.dynamic; import org.ieee.odm.adapter.bpa.lf.BPABusRecord; import org.ieee.odm.common.ODMException; import org.ieee.odm.common.ODMLogger; import org.ieee.odm.model.base.BaseDataSetter; import org.ieee.odm.model.base.ODMModelStringUtil; import org.ieee.odm.model.dstab.DStabModelParser; import org.ieee.odm.model.dstab.DStabParserHelper; import org.ieee.odm.schema.DStabBusXmlType; import org.ieee.odm.schema.DStabGenDataXmlType; import org.ieee.odm.schema.ExcBPAECXmlType; import org.ieee.odm.schema.ExcBPAEKXmlType; import org.ieee.odm.schema.ExcBPAFJXmlType; import org.ieee.odm.schema.ExcBPAFKXmlType; import org.ieee.odm.schema.ExcBPAFQXmlType; import org.ieee.odm.schema.ExcBPAFRXmlType; import org.ieee.odm.schema.ExcBPAFSXmlType; import org.ieee.odm.schema.ExcBPAFUXmlType; import org.ieee.odm.schema.ExcBPAFVXmlType; import org.ieee.odm.schema.ExcIEEE1968Type1XmlType; import org.ieee.odm.schema.ExcIEEE1981TypeAC2XmlType; import org.ieee.odm.schema.ExcIEEE1981TypeDC1XmlType; import org.ieee.odm.schema.ExciterModelXmlType; public class BPADynamicExciterRecord { private final static int EA=1; private final static int EC=2; private final static int EK=3; private final static int FA=4; private final static int FF=5; private final static int FJ=6; private final static int FK=7; private final static int FQ=8; private final static int FR=9; private final static int FS=10; private final static int FU=11; private final static int FV=12; public static void processExciterData(String str, DStabModelParser parser ) throws ODMException { final String strAry[]=getExciterDataFields(str); int type= getExcType(strAry[0]); String busId = BPABusRecord.getBusId(strAry[1]); DStabBusXmlType bus = parser.getDStabBus(busId); DStabGenDataXmlType dynGen = DStabParserHelper.getDefaultGen(bus.getGenData()); if(type==EA){ ExcIEEE1968Type1XmlType exc = DStabParserHelper.createExcIEEE1968Type1XmlType(dynGen); //machine Id String id="1"; if(!strAry[3].equals("")){ id=strAry[3]; } exc.setDesc("BPA EA type, machId#" + id); //TR double Tr=ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Tr=Tr/1000; } exc.setTR(BaseDataSetter.createTimeConstSec(Tr)); //KA for all, KV for EE double Ka=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Ka=Ka/100; } exc.setKA(Ka); //TA for all, TRH for EE double Ta=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ Ta=Ta/100; } exc.setTA(BaseDataSetter.createTimeConstSec(Ta)); //VRminMult, VRmax*multi=Vrmin. VRmin for ED EJ double multi=ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[8].contains(".")){ multi=multi/100; } // KE double Ke=ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ Ke=Ke/1000; } exc.setKE(Ke); //TE double Te= ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ Te=Te/1000; } exc.setTE(BaseDataSetter.createTimeConstSec(Te)); //rule: E1 > E2, Se(E1) > Se(E2) //SE0.75MAX for all, KI for DD //e1=EfdMax, e2=0.75*EfdMax,so it is set after processing EfdMax double SE2= ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")){ SE2=SE2/1000; } exc.setSE2(SE2); //EFDMin double Efdmin=ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Efdmin=Efdmin/1000; } exc.setEFDMIN(Efdmin); //EFDMax for all, VNmax for ED double Efdmax=ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ Efdmax=Efdmax/1000; } // SEmax for all, Kp for DD exc.setE1(Efdmax); exc.setE2(0.75*Efdmax); double SE1= ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ SE1=SE1/1000; } exc.setSE1(SE1); //KF double Kf= ODMModelStringUtil.getDouble(strAry[15], 0.0); if(!strAry[15].contains(".")){ Kf=Kf/1000; } exc.setKF(Kf); //TF double Tf= ODMModelStringUtil.getDouble(strAry[16], 0.0); if(!strAry[16].contains(".")){ Tf=Tf/1000; } if(Tf==0.0)ODMLogger.getLogger().warning("the input TF=0, machine:"+busId); if(Kf==0.0&&Tf==0.0)Tf=1.0; exc.setTF(BaseDataSetter.createTimeConstSec(Tf)); //VRmax=(SE2+Ke)*EFDmax,Vrmin double VRmax=(SE2+Ke)*Efdmax; double VRmin=VRmax*multi; exc.setVRMAX(VRmax); if(VRmin>0){ ODMLogger.getLogger().warning("the input Vrmin >0, exc info:"+exc.getDesc()+ ", automatically change it to: "+(-VRmin) ); VRmin*=-1; } exc.setVRMIN(VRmin); } //BPA EC type else if(type==EC){ ExcBPAECXmlType exc = DStabParserHelper.createExcBPAECXmlType(dynGen); //machine Id String id="1"; if(!strAry[3].equals("")){ id=strAry[3]; } exc.setDesc("BPA EK Type Exciter , machId#" + id); //TR double Tr=ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Tr=Tr/1000; } exc.setTransTr(BaseDataSetter.createTimeConstSec(Tr)); //KA for all, KV for EE double Ka=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Ka=Ka/100; } exc.setKa(Ka); //TA for all, TRH for EE double Ta=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ Ta=Ta/100; } exc.setTa(BaseDataSetter.createTimeConstSec(Ta)); //VRminMult, VRmax*multi=Vrmin. VRmin for ED EJ double multi=ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[8].contains(".")){ multi=multi/100; } // KE double Ke=ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ Ke=Ke/1000; } exc.setKE(Ke); //TE double Te= ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ Te=Te/1000; } exc.setTE(BaseDataSetter.createTimeConstSec(Te)); //rule: E1 > E2, Se(E1) > Se(E2) //SE0.75MAX for all, KI for DD //e1=EfdMax, e2=0.75*EfdMax,so it is set after processing EfdMax double SE2= ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")){ SE2=SE2/1000; } exc.setSE2(SE2); //EFDMin double Efdmin=ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Efdmin=Efdmin/1000; } exc.setEFDMIN(Efdmin); //EFDMax for all, VNmax for ED double Efdmax=ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ Efdmax=Efdmax/1000; } // SEmax for all, Kp for DD exc.setE1(Efdmax); exc.setE2(0.75*Efdmax); double SE1= ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ SE1=SE1/1000; } exc.setSE1(SE1); //KF double Kf= ODMModelStringUtil.getDouble(strAry[15], 0.0); if(!strAry[15].contains(".")){ Kf=Kf/1000; } exc.setKF(Kf); //TF double Tf= ODMModelStringUtil.getDouble(strAry[16], 0.0); if(!strAry[16].contains(".")){ Tf=Tf/1000; } if(Tf==0.0)ODMLogger.getLogger().warning("the input TF=0, machine:"+busId); if(Kf==0.0&&Tf==0.0)Tf=1.0; exc.setTF(BaseDataSetter.createTimeConstSec(Tf)); //VRmax=(SE2+Ke)*EFDmax,Vrmin double VRmax=(SE2+Ke)*Efdmax; double VRmin=VRmax*multi; exc.setVrmax(VRmax); if(VRmin>0){ ODMLogger.getLogger().warning("the input Vrmin >0, exc info:"+exc.getDesc()+ ", automatically change it to: "+(-VRmin) ); VRmin*=-1; } exc.setVrmin(VRmin); } else if(type==EK){ ExcBPAEKXmlType exc = DStabParserHelper.createExcBPAEKXmlType(dynGen); //machine Id String id="1"; if(!strAry[3].equals("")){ id=strAry[3]; } exc.setDesc("BPA EK Type Exciter , machId#" + id); //TR double Tr=ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Tr=Tr/1000; } exc.setTransTr(BaseDataSetter.createTimeConstSec(Tr)); //KA for all, KV for EE double Ka=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Ka=Ka/100; } exc.setKa(Ka); //TA for all, TRH for EE double Ta=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ Ta=Ta/100; } exc.setTa(BaseDataSetter.createTimeConstSec(Ta)); //VRminMult, VRmax*multi=Vrmin. VRmin for ED EJ double multi=ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[8].contains(".")){ multi=multi/100; } // KE double Ke=ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ Ke=Ke/1000; } exc.setKE(Ke); //TE double Te= ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ Te=Te/1000; } exc.setTE(BaseDataSetter.createTimeConstSec(Te)); //rule: E1 > E2, Se(E1) > Se(E2) //SE0.75MAX for all, KI for DD //e1=EfdMax, e2=0.75*EfdMax,so it is set after processing EfdMax double SE2= ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")){ SE2=SE2/1000; } exc.setSE2(SE2); //EFDMin double Efdmin=ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Efdmin=Efdmin/1000; } exc.setEFDMIN(Efdmin); //EFDMax for all, VNmax for ED double Efdmax=ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ Efdmax=Efdmax/1000; } // SEmax for all, Kp for DD exc.setE1(Efdmax); exc.setE2(0.75*Efdmax); double SE1= ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ SE1=SE1/1000; } exc.setSE1(SE1); //KF double Kf= ODMModelStringUtil.getDouble(strAry[15], 0.0); if(!strAry[15].contains(".")){ Kf=Kf/1000; } exc.setKF(Kf); //TF double Tf= ODMModelStringUtil.getDouble(strAry[16], 0.0); if(!strAry[16].contains(".")){ Tf=Tf/1000; } if(Tf==0.0)ODMLogger.getLogger().warning("the input TF=0, machine:"+busId); if(Kf==0.0&&Tf==0.0)Tf=1.0; exc.setTF(BaseDataSetter.createTimeConstSec(Tf)); //VRmax=(SE2+Ke)*EFDmax,Vrmin double VRmax=(SE2+Ke)*Efdmax; double VRmin=VRmax*multi; exc.setVrmax(VRmax); if(VRmin>0){ ODMLogger.getLogger().warning("the input Vrmin >0, exc info:"+exc.getDesc()+ ", automatically change it to: "+(-VRmin) ); VRmin*=-1; } exc.setVrmin(VRmin); } else if(type==FA){ //BPA exciter FA type is the same as IEEE 1981 DC1 type or IEEE 2005 DC1A type ExcIEEE1981TypeDC1XmlType exc = DStabParserHelper.createExcIEEE1981TypeDC1XmlType(dynGen); //excId String excId="1"; if(!strAry[3].equals("")){ excId=strAry[3]; } exc.setDesc("IEEE Type DC1 excId-" + excId); //Rc double Rc=ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Rc=Rc/10000; } exc.setLoadRc(Rc); //Xc double Xc=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Xc=Xc/10000; } exc.setLoadXc(Xc); //TR double Tr=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ Tr=Tr/10000; } exc.setTransTr(BaseDataSetter.createTimeConstSec(Tr)); // TB double Tb= ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ Tb=Tb/1000; } exc.setTB(BaseDataSetter.createTimeConstSec(Tb)); //TC double Tc= ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ Tc=Tc/1000; } exc.setTC(BaseDataSetter.createTimeConstSec(Tc)); //KA, KV for FE double Ka= ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")){ Ka=Ka/100; } exc.setKa(Ka); // TA, TRH for FE double Ta= ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ Ta=Ta/1000; } exc.setTa(BaseDataSetter.createTimeConstSec(Ta)); //VRmax, Vamax for FH double Vrmax= ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Vrmax=Vrmax/1000; } exc.setVrmax(Vrmax); //VRmin, Vamin double Vrmin= ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ Vrmin=Vrmin/1000; } if(Vrmin>0){ ODMLogger.getLogger().warning("the input Vrmin >0, exc info:"+exc.getDesc()+ ", automatically change it to: "+(-Vrmin) ); Vrmin*=-1; } exc.setVrmin(Vrmin); //Ke double Ke=ODMModelStringUtil.getDouble(strAry[15], 0.0); if(!strAry[15].contains(".")){ Ke=Ke/1000; } exc.setKE(Ke); //Te double Te=ODMModelStringUtil.getDouble(strAry[16], 0.0); if(!strAry[16].contains(".")){ Te=Te/1000; } exc.setTE(BaseDataSetter.createTimeConstSec(Te)); } else if(type==FJ){ ExcBPAFJXmlType exc = DStabParserHelper.createExcBPAFJXmlType(dynGen); //excId String excId="1"; if(!strAry[3].equals("")){ excId=strAry[3]; } exc.setDesc("BPA FJ Type Exciter, excId-" + excId); //Rc double Rc=ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Rc=Rc/10000; } exc.setLoadRc(Rc); //Xc double Xc=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Xc=Xc/10000; } exc.setLoadXc(Xc); //TR double Tr=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ Tr=Tr/10000; } exc.setTransTr(BaseDataSetter.createTimeConstSec(Tr)); // TB double Tb= ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ Tb=Tb/1000; } exc.setTB(BaseDataSetter.createTimeConstSec(Tb)); //TC double Tc= ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ Tc=Tc/1000; } exc.setTC(BaseDataSetter.createTimeConstSec(Tc)); //KA, KV for FE double Ka= ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")){ Ka=Ka/100; } exc.setKa(Ka); // TA, TRH for FE double Ta= ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ Ta=Ta/1000; } exc.setTa(BaseDataSetter.createTimeConstSec(Ta)); //VRmax, Vamax for FH double Vrmax= ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Vrmax=Vrmax/1000; } exc.setVrmax(Vrmax); //VRmin, Vamin double Vrmin= ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ Vrmin=Vrmin/1000; } if(Vrmin>0){ ODMLogger.getLogger().warning("the input Vrmin >0, exc info:"+exc.getDesc()+ ", automatically change it to: "+(-Vrmin) ); Vrmin*=-1; } exc.setVrmin(Vrmin); } else if(type==FK){ ExcBPAFKXmlType exc = DStabParserHelper.createExcBPAFKXmlType(dynGen); //excId String excId="1"; if(!strAry[3].equals("")){ excId=strAry[3]; } exc.setDesc("BPA FK Type Exciter,excId-" + excId); //Rc double Rc=ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Rc=Rc/10000; } exc.setLoadRc(Rc); //Xc double Xc=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Xc=Xc/10000; } exc.setLoadXc(Xc); //TR double Tr=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ Tr=Tr/10000; } exc.setTransTr(BaseDataSetter.createTimeConstSec(Tr)); //VIMax for G K L,VAmax for FF double Vimax= ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")){ Vimax=Vimax/1000; } exc.setVIMAX(Vimax); //VIMin for G K L,VAmin for FF //VIMax for G K L,VAmax for FF double Vimin= ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[7].contains(".")){ Vimin=Vimin/1000; } exc.setVIMIN(Vimin); // TB double Tb= ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ Tb=Tb/1000; } exc.setTB(BaseDataSetter.createTimeConstSec(Tb)); //TC double Tc= ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ Tc=Tc/1000; } exc.setTC(BaseDataSetter.createTimeConstSec(Tc)); //KA, KV for FE double Ka= ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")){ Ka=Ka/100; } exc.setKa(Ka); // TA, TRH for FE double Ta= ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ Ta=Ta/1000; } exc.setTa(BaseDataSetter.createTimeConstSec(Ta)); //VRmax, Vamax for FH double Vrmax= ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Vrmax=Vrmax/1000; } exc.setVrmax(Vrmax); //VRmin, Vamin double Vrmin= ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ Vrmin=Vrmin/1000; } if(Vrmin>0){ ODMLogger.getLogger().warning("the input Vrmin >0, exc info:"+exc.getDesc()+ ", automatically change it to: "+(-Vrmin) ); Vrmin*=-1; } exc.setVrmin(Vrmin); } else if(type==FQ){ ExcBPAFQXmlType exc = DStabParserHelper.createExcBPAFQXmlType(dynGen); String excId="1"; if(!strAry[3].equals("")){ excId=strAry[3]; } exc.setDesc("BPA Eeciter FQ type, excId-" + excId); //Rc double Rc=ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Rc=Rc/1000; } exc.setLoadRc(Rc); //Xc double Xc=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Xc=Xc/1000; } exc.setLoadXc(Xc); //TR double Tr=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ Tr=Tr/1000; } exc.setTransTr(BaseDataSetter.createTimeConstSec(Tr)); //K double K=ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")){ K=K/1000; } exc.setK(K); //Kv(F3.0) double Kv=ODMModelStringUtil.getDouble(strAry[8], 0.0); exc.setKV(Kv); // T1 double T1=ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ T1=T1/1000; } exc.setT1(BaseDataSetter.createTimeConstSec(T1)); //T2 double T2=ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ T2=T2/1000; } exc.setT2(BaseDataSetter.createTimeConstSec(T2)); //T3 double T3=ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")){ T3=T3/1000; } exc.setT3(BaseDataSetter.createTimeConstSec(T3)); // T4 double T4=ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ T4=T4/1000; } exc.setT4(BaseDataSetter.createTimeConstSec(T4)); //KA double Ka=ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Ka=Ka/1000; } exc.setKa(Ka); //TA double Ta=ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ Ta=Ta/1000; } exc.setTa(BaseDataSetter.createTimeConstSec(Ta)); //KF double Kf=ODMModelStringUtil.getDouble(strAry[15], 0.0); if(!strAry[15].contains(".")){ Kf=Kf/1000; } exc.setKF(Kf); //TF double Tf=ODMModelStringUtil.getDouble(strAry[16], 0.0); if(!strAry[16].contains(".")){ Tf=Tf/1000; } if(Tf==0.0)ODMLogger.getLogger().warning("the input TF=0, machine:"+busId); if(Kf==0.0&&Tf==0.0)Tf=1.0; exc.setTF(BaseDataSetter.createTimeConstSec(Tf)); //KH double Kh=ODMModelStringUtil.getDouble(strAry[17], 0.0); if(!strAry[17].contains(".")){ Kh=Kh/100; } exc.setKH(Kh); } //type==FR else if(type==FR){ ExcBPAFRXmlType exc = DStabParserHelper.createExcBPAFRXmlType(dynGen); String excId="1"; if(!strAry[3].equals("")){ excId=strAry[3]; } exc.setDesc("BPA Eeciter FR type, excId-" + excId); //Rc double Rc=ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Rc=Rc/1000; } exc.setLoadRc(Rc); //Xc double Xc=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Xc=Xc/1000; } exc.setLoadXc(Xc); //TR double Tr=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ Tr=Tr/1000; } exc.setTransTr(BaseDataSetter.createTimeConstSec(Tr)); //K double K=ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")){ K=K/1000; } exc.setK(K); //Kv(F3.0) double Kv=ODMModelStringUtil.getDouble(strAry[8], 0.0); exc.setKV(Kv); // T1 double T1=ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ T1=T1/1000; } exc.setT1(BaseDataSetter.createTimeConstSec(T1)); //T2 double T2=ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ T2=T2/1000; } exc.setT2(BaseDataSetter.createTimeConstSec(T2)); //T3 double T3=ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")){ T3=T3/1000; } exc.setT3(BaseDataSetter.createTimeConstSec(T3)); // T4 double T4=ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ T4=T4/1000; } exc.setT4(BaseDataSetter.createTimeConstSec(T4)); //KA double Ka=ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Ka=Ka/1000; } exc.setKa(Ka); //TA double Ta=ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ Ta=Ta/1000; } exc.setTa(BaseDataSetter.createTimeConstSec(Ta)); //KF double Kf=ODMModelStringUtil.getDouble(strAry[15], 0.0); if(!strAry[15].contains(".")){ Kf=Kf/1000; } exc.setKF(Kf); //TF double Tf=ODMModelStringUtil.getDouble(strAry[16], 0.0); if(!strAry[16].contains(".")){ Tf=Tf/1000; } if(Tf==0.0)ODMLogger.getLogger().warning("the input TF=0, machine:"+busId); if(Kf==0.0&&Tf==0.0)Tf=1.0; exc.setTF(BaseDataSetter.createTimeConstSec(Tf)); //KH double Kh=ODMModelStringUtil.getDouble(strAry[17], 0.0); if(!strAry[17].contains(".")){ Kh=Kh/100; } exc.setKH(Kh); } //type==FS else if(type==FS){ ExcBPAFSXmlType exc = DStabParserHelper.createExcBPAFSXmlType(dynGen); String excId="1"; if(!strAry[3].equals("")){ excId=strAry[3]; } exc.setDesc("BPA Eeciter FS type, excId-" + excId); //Rc double Rc=ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Rc=Rc/1000; } exc.setLoadRc(Rc); //Xc double Xc=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Xc=Xc/1000; } exc.setLoadXc(Xc); //TR double Tr=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ Tr=Tr/1000; } exc.setTransTr(BaseDataSetter.createTimeConstSec(Tr)); //K double K=ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")){ K=K/1000; } exc.setK(K); //Kv(F3.0) double Kv=ODMModelStringUtil.getDouble(strAry[8], 0.0); exc.setKV(Kv); // T1 double T1=ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ T1=T1/1000; } exc.setT1(BaseDataSetter.createTimeConstSec(T1)); //T2 double T2=ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ T2=T2/1000; } exc.setT2(BaseDataSetter.createTimeConstSec(T2)); //T3 double T3=ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")){ T3=T3/1000; } exc.setT3(BaseDataSetter.createTimeConstSec(T3)); // T4 double T4=ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ T4=T4/1000; } exc.setT4(BaseDataSetter.createTimeConstSec(T4)); //KA double Ka=ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Ka=Ka/1000; } exc.setKa(Ka); //TA double Ta=ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ Ta=Ta/1000; } exc.setTa(BaseDataSetter.createTimeConstSec(Ta)); //KF double Kf=ODMModelStringUtil.getDouble(strAry[15], 0.0); if(!strAry[15].contains(".")){ Kf=Kf/1000; } exc.setKF(Kf); //TF double Tf=ODMModelStringUtil.getDouble(strAry[16], 0.0); if(!strAry[16].contains(".")){ Tf=Tf/1000; } if(Tf==0.0)ODMLogger.getLogger().warning("the input TF=0, machine:"+busId); if(Kf==0.0&&Tf==0.0)Tf=1.0; exc.setTF(BaseDataSetter.createTimeConstSec(Tf)); //KH double Kh=ODMModelStringUtil.getDouble(strAry[17], 0.0); if(!strAry[17].contains(".")){ Kh=Kh/100; } exc.setKH(Kh); } //type==FU else if(type==FU){ ExcBPAFUXmlType exc = DStabParserHelper.createExcBPAFUXmlType(dynGen); String excId="1"; if(!strAry[3].equals("")){ excId=strAry[3]; } exc.setDesc("BPA Eeciter FU type, excId-" + excId); //Rc double Rc=ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Rc=Rc/1000; } exc.setLoadRc(Rc); //Xc double Xc=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Xc=Xc/1000; } exc.setLoadXc(Xc); //TR double Tr=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ Tr=Tr/1000; } exc.setTransTr(BaseDataSetter.createTimeConstSec(Tr)); //K double K=ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")){ K=K/1000; } exc.setK(K); //Kv(F3.0) double Kv=ODMModelStringUtil.getDouble(strAry[8], 0.0); exc.setKV(Kv); // T1 double T1=ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ T1=T1/1000; } exc.setT1(BaseDataSetter.createTimeConstSec(T1)); //T2 double T2=ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ T2=T2/1000; } exc.setT2(BaseDataSetter.createTimeConstSec(T2)); //T3 double T3=ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")){ T3=T3/1000; } exc.setT3(BaseDataSetter.createTimeConstSec(T3)); // T4 double T4=ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ T4=T4/1000; } exc.setT4(BaseDataSetter.createTimeConstSec(T4)); //KA double Ka=ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Ka=Ka/1000; } exc.setKa(Ka); //TA double Ta=ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ Ta=Ta/1000; } exc.setTa(BaseDataSetter.createTimeConstSec(Ta)); //KF double Kf=ODMModelStringUtil.getDouble(strAry[15], 0.0); if(!strAry[15].contains(".")){ Kf=Kf/1000; } exc.setKF(Kf); //TF double Tf=ODMModelStringUtil.getDouble(strAry[16], 0.0); if(!strAry[16].contains(".")){ Tf=Tf/1000; } if(Tf==0.0)ODMLogger.getLogger().warning("the input TF=0, machine:"+busId); if(Kf==0.0&&Tf==0.0)Tf=1.0; exc.setTF(BaseDataSetter.createTimeConstSec(Tf)); } //type==FV else if(type==FV){ ExcBPAFVXmlType exc = DStabParserHelper.createExcBPAFVXmlType(dynGen); String excId="1"; if(!strAry[3].equals("")){ excId=strAry[3]; } exc.setDesc("BPA Eeciter FV type, excId-" + excId); //Rc double Rc=ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Rc=Rc/1000; } exc.setLoadRc(Rc); //Xc double Xc=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Xc=Xc/1000; } exc.setLoadXc(Xc); //TR double Tr=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ Tr=Tr/1000; } exc.setTransTr(BaseDataSetter.createTimeConstSec(Tr)); //K double K=ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")){ K=K/1000; } exc.setK(K); //Kv(F3.0) double Kv=ODMModelStringUtil.getDouble(strAry[8], 0.0); exc.setKV(Kv); // T1 double T1=ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ T1=T1/1000; } exc.setT1(BaseDataSetter.createTimeConstSec(T1)); //T2 double T2=ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ T2=T2/1000; } exc.setT2(BaseDataSetter.createTimeConstSec(T2)); //T3 double T3=ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")){ T3=T3/1000; } exc.setT3(BaseDataSetter.createTimeConstSec(T3)); // T4 double T4=ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ T4=T4/1000; } exc.setT4(BaseDataSetter.createTimeConstSec(T4)); //KA double Ka=ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Ka=Ka/1000; } exc.setKa(Ka); //TA double Ta=ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ Ta=Ta/1000; } exc.setTa(BaseDataSetter.createTimeConstSec(Ta)); //KF double Kf=ODMModelStringUtil.getDouble(strAry[15], 0.0); if(!strAry[15].contains(".")){ Kf=Kf/1000; } exc.setKF(Kf); //TF double Tf=ODMModelStringUtil.getDouble(strAry[16], 0.0); if(!strAry[16].contains(".")){ Tf=Tf/1000; } if(Tf==0.0)ODMLogger.getLogger().warning("the input TF=0, machine:"+busId); if(Kf==0.0&&Tf==0.0)Tf=1.0; exc.setTF(BaseDataSetter.createTimeConstSec(Tf)); } else if(type==FF){ ExcIEEE1981TypeAC2XmlType exc = DStabParserHelper.createExcIEEE1981TypeAC2XmlType(dynGen); String excId="1"; if(!strAry[3].equals("")){ excId=strAry[3]; } exc.setDesc("IEEE1981 AC2 Type excId-" + excId); //TR double Tr=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ Tr=Tr/10000; } exc.setTransTr(BaseDataSetter.createTimeConstSec(Tr)); // TB double Tb= ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ Tb=Tb/1000; } exc.setTB(BaseDataSetter.createTimeConstSec(Tb)); //TC double Tc= ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ Tc=Tc/1000; } exc.setTC(BaseDataSetter.createTimeConstSec(Tc)); //KA, KV for FE double Ka= ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")){ Ka=Ka/100; } exc.setKa(Ka); // TA, TRH for FE double Ta= ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ Ta=Ta/1000; } exc.setTa(BaseDataSetter.createTimeConstSec(Ta)); //VRmax, Vamax for FH double Vrmax= ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Vrmax=Vrmax/1000; } exc.setVrmax(Vrmax); //VRmin, Vamin double Vrmin= ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ Vrmin=Vrmin/1000; } if(Vrmin>0){ ODMLogger.getLogger().warning("the input Vrmin >0, exc info:"+exc.getDesc()+ ", automatically change it to: "+(-Vrmin) ); Vrmin*=-1; } exc.setVrmin(Vrmin); //Ke double Ke=ODMModelStringUtil.getDouble(strAry[15], 0.0); if(!strAry[15].contains(".")){ Ke=Ke/1000; } exc.setKE(Ke); //Te double Te=ODMModelStringUtil.getDouble(strAry[16], 0.0); if(!strAry[16].contains(".")){ Te=Te/1000; } exc.setTE(BaseDataSetter.createTimeConstSec(Te)); } else if(str.substring(0, 2).trim().equals("FZ")|| str.substring(0, 2).trim().equals("F+")){// continued record for BPA Exciter models. DStabGenDataXmlType genData = DStabParserHelper.getDefaultGen(bus.getGenData()); ExciterModelXmlType exc = genData.getExciter().getValue(); if(str.substring(0, 2).trim().equals("FZ")){ if(exc instanceof ExcBPAFJXmlType){//ExciterType.BPAFJ ExcBPAFJXmlType excFJ=(ExcBPAFJXmlType)exc; //EFDmax double EFDmax= ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")){ EFDmax=EFDmax/1000; } excFJ.setEFDMAX(EFDmax); //EFDmin double EFDmin= ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ EFDmin=EFDmin/1000; } if(EFDmin>0)ODMLogger.getLogger().warning("the input EFDmin >0, exc info:"+exc.getDesc()); excFJ.setEFDMIN(EFDmin); //KF double Kf= ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[8].contains(".")){ Kf=Kf/1000; } excFJ.setKF(Kf); // TF double Tf= ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ Tf=Tf/1000; } if(Tf==0.0)ODMLogger.getLogger().warning("the input TF=0, machine:"+busId); if(Kf==0.0&&Tf==0.0)Tf=1.0; excFJ.setTF(BaseDataSetter.createTimeConstSec(Tf)); //KC double Kc= ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ Kc=Kc/10000; } excFJ.setKC(Kc); } else if(exc instanceof ExcBPAFKXmlType){ // the same as BPA FK. ExcBPAFKXmlType excFK=(ExcBPAFKXmlType)exc; //KF double Kf= ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[8].contains(".")){ Kf=Kf/1000; } excFK.setKF(Kf); // TF double Tf= ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ Tf=Tf/1000; } if(Tf==0.0)ODMLogger.getLogger().warning("the input TF=0, machine:"+busId); if(Kf==0.0&&Tf==0.0)Tf=1.0; excFK.setTF(BaseDataSetter.createTimeConstSec(Tf)); //KC double Kc= ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ Kc=Kc/10000; } excFK.setKC(Kc); } //BPA FA else if(exc instanceof ExcIEEE1981TypeDC1XmlType){ ExcIEEE1981TypeDC1XmlType excFA=(ExcIEEE1981TypeDC1XmlType)exc; //Se1 double SE1=ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ SE1=SE1/1000; } excFA.setSE1(SE1); //Se2 double SE2=ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ SE2=SE2/1000; } excFA.setSE2(SE2); // e1 double E1=ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")){ E1=E1/1000; } excFA.setE1(E1); // e2 double E2=0.75*ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")){ E2=E2/1000; } excFA.setE2(E2); //Kf double Kf= ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[8].contains(".")){ Kf=Kf/1000; } excFA.setKF(Kf); // TF double Tf= ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ Tf=Tf/1000; } if(Tf==0.0)ODMLogger.getLogger().warning("the input TF=0, machine:"+busId); if(Kf==0.0&&Tf==0.0)Tf=1.0; excFA.setTF(BaseDataSetter.createTimeConstSec(Tf)); } else ODMLogger.getLogger().severe("processor for this type excitor is not implmented yet!"); // else if(exc.getExciterType().equals(ExciterXmlType.ExciterType.IEEE_1981_TYPE_AC_2)){//BPA FF // // //Se1 // double SE1=ModelStringUtil.getDouble(strAry[4], 0.0); // exc.getExciterModel().getIEEE1981TypeAC2().setSE1(SE1); // //Se2 // double SE2=ModelStringUtil.getDouble(strAry[5], 0.0); // exc.getExciterModel().getIEEE1981TypeAC2().setSE1(SE2); // // e1 // double E1=ModelStringUtil.getDouble(strAry[7], 0.0); // exc.getExciterModel().getIEEE1981TypeAC2().setE1(E1); // // e2 // double E2=0.75*ModelStringUtil.getDouble(strAry[7], 0.0); // exc.getExciterModel().getIEEE1981TypeAC2().setE1(E2); // //Kf // double Kf= ModelStringUtil.getDouble(strAry[8], 0.0); // exc.getExciterModel().getIEEE1981TypeAC2().setKF(Kf); // // TF // double TF= ModelStringUtil.getDouble(strAry[9], 0.0); // XBeanDataSetter.setTimePeriodData(exc.getExciterModel().getIEEE1981TypeAC2().addNewTF(), // TF, TimePeriodUnitType.SEC); // //Kc // double Kc= ModelStringUtil.getDouble(strAry[10], 0.0); // exc.getExciterModel().getIEEE1981TypeAC2().setKC(Kc); // //Kd // double Kd= ModelStringUtil.getDouble(strAry[11], 0.0); // exc.getExciterModel().getIEEE1981TypeAC2().setKD(Kd); // //Kb // double Kb= ModelStringUtil.getDouble(strAry[12], 0.0); // exc.getExciterModel().getIEEE1981TypeAC2().setKB(Kb); // //Kl // double Kl= ModelStringUtil.getDouble(strAry[13], 0.0); // exc.getExciterModel().getIEEE1981TypeAC2().setKL(Kl); // //Kh // double Kh= ModelStringUtil.getDouble(strAry[14], 0.0); // exc.getExciterModel().getIEEE1981TypeAC2().setKH(Kh); // //vlr // double vlr= ModelStringUtil.getDouble(strAry[15], 0.0); // exc.getExciterModel().getIEEE1981TypeAC2().setVLR(vlr); // } } else if(str.substring(0, 2).trim().equals("F+")){ if(exc instanceof ExcBPAFQXmlType){ ExcBPAFQXmlType excFQ=(ExcBPAFQXmlType)exc; //VAMAX double Vamax= ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Vamax=Vamax/1000; } excFQ.setVAMAX(Vamax); //VAMIN double Vamin= ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Vamin=Vamin/1000; } excFQ.setVAMIN(Vamin); //KB double Kb=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ Kb=Kb/100; } excFQ.setKB(Kb); //T5 double T5=ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")){ T5=T5/100; } excFQ.setT5(BaseDataSetter.createTimeConstSec(T5)); //KE double Ke=ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[8].contains(".")){ Ke=Ke/100; } excFQ.setKE(Ke); // TE double Te=ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ Te=Te/100; } excFQ.setTE(BaseDataSetter.createTimeConstSec(Te)); //SE1-->EfdMax // e1 for SE1 is set latter. double SE1=ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ SE1=SE1/10000; } excFQ.setSE1(SE1); //SE2-->75%EFDMAX double SE2=ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")){ SE2=SE2/10000; } excFQ.setSE2(SE2); // VRMAX double Vrmax= ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ Vrmax=Vrmax/100; } excFQ.setVrmax(Vrmax); //VRMIN double Vrmin= ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Vrmin=Vrmin/100; } if(Vrmin>0){ ODMLogger.getLogger().warning("the input Vrmin >0, exc info:"+exc.getDesc()+ ", automatically change it to: "+(-Vrmin) ); Vrmin*=-1; } excFQ.setVrmin(Vrmin); //KC double Kc=ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ Kc=Kc/100; } excFQ.setKC(Kc); //KD double Kd=ODMModelStringUtil.getDouble(strAry[15], 0.0); if(!strAry[15].contains(".")){ Kd=Kd/100; } excFQ.setKD(Kd); //KL1 double KL1=ODMModelStringUtil.getDouble(strAry[16], 0.0); if(!strAry[16].contains(".")){ KL1=KL1/100; } excFQ.setKL1(KL1); //VL1R double VL1R=ODMModelStringUtil.getDouble(strAry[17], 0.0); if(!strAry[17].contains(".")){ VL1R=VL1R/100; } excFQ.setVL1R(VL1R); //EFDMAX double EFDMAX=ODMModelStringUtil.getDouble(strAry[18], 0.0); if(!strAry[18].contains(".")){ EFDMAX=EFDMAX/100; } excFQ.setEFDmax(EFDMAX); //set e1,e2 for saturation calculation excFQ.setE1(EFDMAX); excFQ.setE2(EFDMAX*0.75); } else if(exc instanceof ExcBPAFRXmlType){ ExcBPAFRXmlType excFR=(ExcBPAFRXmlType)exc; //VAMAX double Vamax= ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Vamax=Vamax/1000; } excFR.setVAMAX(Vamax); //VAMIN double Vamin= ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Vamin=Vamin/1000; } excFR.setVAMIN(Vamin); //KB double Kb=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ Kb=Kb/100; } excFR.setKB(Kb); //T5 double T5=ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")){ T5=T5/100; } excFR.setT5(BaseDataSetter.createTimeConstSec(T5)); //KE double Ke=ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[8].contains(".")){ Ke=Ke/100; } excFR.setKE(Ke); // TE double Te=ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ Te=Te/100; } excFR.setTE(BaseDataSetter.createTimeConstSec(Te)); //SE1-->EfdMax // e1 for SE1 is set latter. double SE1=ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ SE1=SE1/10000; } excFR.setSE1(SE1); //SE2-->75%EFDMAX double SE2=ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")){ SE2=SE2/10000; } excFR.setSE2(SE2); // VRMAX double Vrmax= ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ Vrmax=Vrmax/100; } excFR.setVrmax(Vrmax); //VRMIN double Vrmin= ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Vrmin=Vrmin/100; } if(Vrmin>0){ ODMLogger.getLogger().warning("the input Vrmin >0, exc info:"+exc.getDesc()+ ", automatically change it to: "+(-Vrmin) ); Vrmin*=-1; } excFR.setVrmin(Vrmin); //KC double Kc=ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ Kc=Kc/100; } excFR.setKC(Kc); //KD double Kd=ODMModelStringUtil.getDouble(strAry[15], 0.0); if(!strAry[15].contains(".")){ Kd=Kd/100; } excFR.setKD(Kd); //KL1 double KL1=ODMModelStringUtil.getDouble(strAry[16], 0.0); if(!strAry[16].contains(".")){ KL1=KL1/100; } excFR.setKL1(KL1); //VL1R double VL1R=ODMModelStringUtil.getDouble(strAry[17], 0.0); if(!strAry[17].contains(".")){ VL1R=VL1R/100; } excFR.setVL1R(VL1R); //EFDMAX double EFDMAX=ODMModelStringUtil.getDouble(strAry[18], 0.0); if(!strAry[18].contains(".")){ EFDMAX=EFDMAX/100; } excFR.setEFDmax(EFDMAX); //set e1,e2 for saturation calculation excFR.setE1(EFDMAX); excFR.setE2(EFDMAX*0.75); } //end of FR else if(exc instanceof ExcBPAFSXmlType){ ExcBPAFSXmlType excFS=(ExcBPAFSXmlType)exc; //VAMAX double Vamax= ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Vamax=Vamax/1000; } excFS.setVAMAX(Vamax); //VAMIN double Vamin= ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Vamin=Vamin/1000; } excFS.setVAMIN(Vamin); //KB double Kb=ODMModelStringUtil.getDouble(strAry[6], 0.0); if(!strAry[6].contains(".")){ Kb=Kb/100; } excFS.setKB(Kb); //T5 double T5=ODMModelStringUtil.getDouble(strAry[7], 0.0); if(!strAry[7].contains(".")){ T5=T5/100; } excFS.setT5(BaseDataSetter.createTimeConstSec(T5)); //KE double Ke=ODMModelStringUtil.getDouble(strAry[8], 0.0); if(!strAry[8].contains(".")){ Ke=Ke/100; } excFS.setKE(Ke); // TE double Te=ODMModelStringUtil.getDouble(strAry[9], 0.0); if(!strAry[9].contains(".")){ Te=Te/100; } excFS.setTE(BaseDataSetter.createTimeConstSec(Te)); //SE1-->EfdMax // e1 for SE1 is set latter. double SE1=ODMModelStringUtil.getDouble(strAry[10], 0.0); if(!strAry[10].contains(".")){ SE1=SE1/10000; } excFS.setSE1(SE1); //SE2-->75%EFDMAX double SE2=ODMModelStringUtil.getDouble(strAry[11], 0.0); if(!strAry[11].contains(".")){ SE2=SE2/10000; } excFS.setSE2(SE2); // VRMAX double Vrmax= ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ Vrmax=Vrmax/100; } excFS.setVrmax(Vrmax); //VRMIN double Vrmin= ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Vrmin=Vrmin/100; } if(Vrmin>0){ ODMLogger.getLogger().warning("the input Vrmin >0, exc info:"+exc.getDesc()+ ", automatically change it to: "+(-Vrmin) ); Vrmin*=-1; } excFS.setVrmin(Vrmin); //KC double Kc=ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ Kc=Kc/100; } excFS.setKC(Kc); //KD double Kd=ODMModelStringUtil.getDouble(strAry[15], 0.0); if(!strAry[15].contains(".")){ Kd=Kd/100; } excFS.setKD(Kd); //KL1 double KL1=ODMModelStringUtil.getDouble(strAry[16], 0.0); if(!strAry[16].contains(".")){ KL1=KL1/100; } excFS.setKL1(KL1); //VL1R double VL1R=ODMModelStringUtil.getDouble(strAry[17], 0.0); if(!strAry[17].contains(".")){ VL1R=VL1R/100; } excFS.setVL1R(VL1R); //EFDMAX double EFDMAX=ODMModelStringUtil.getDouble(strAry[18], 0.0); if(!strAry[18].contains(".")){ EFDMAX=EFDMAX/100; } excFS.setEFDmax(EFDMAX); //set e1,e2 for saturation calculation excFS.setE1(EFDMAX); excFS.setE2(EFDMAX*0.75); } //end of FS else if(exc instanceof ExcBPAFUXmlType){ ExcBPAFUXmlType excFU=(ExcBPAFUXmlType)exc; //VAMAX double Vamax= ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Vamax=Vamax/1000; } excFU.setVAMAX(Vamax); //VAMIN double Vamin= ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Vamin=Vamin/1000; } excFU.setVAMIN(Vamin); // VRMAX double Vrmax= ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ Vrmax=Vrmax/100; } excFU.setVrmax(Vrmax); //VRMIN double Vrmin= ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Vrmin=Vrmin/100; } if(Vrmin>0){ ODMLogger.getLogger().warning("the input Vrmin >0, exc info:"+exc.getDesc()+ ", automatically change it to: "+(-Vrmin) ); Vrmin*=-1; } excFU.setVrmin(Vrmin); //KC double KC=ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ KC=KC/100; } excFU.setKC(KC); } //end of FU else if(exc instanceof ExcBPAFVXmlType){ ExcBPAFVXmlType excFV=(ExcBPAFVXmlType)exc; //VAMAX double Vamax= ODMModelStringUtil.getDouble(strAry[4], 0.0); if(!strAry[4].contains(".")){ Vamax=Vamax/1000; } excFV.setVAMAX(Vamax); //VAMIN double Vamin= ODMModelStringUtil.getDouble(strAry[5], 0.0); if(!strAry[5].contains(".")){ Vamin=Vamin/1000; } excFV.setVAMIN(Vamin); // VRMAX double Vrmax= ODMModelStringUtil.getDouble(strAry[12], 0.0); if(!strAry[12].contains(".")){ Vrmax=Vrmax/100; } excFV.setVrmax(Vrmax); //VRMIN double Vrmin= ODMModelStringUtil.getDouble(strAry[13], 0.0); if(!strAry[13].contains(".")){ Vrmin=Vrmin/100; } if(Vrmin>0){ ODMLogger.getLogger().warning("the input Vrmin >0, exc info:"+exc.getDesc()+ ", automatically change it to: "+(-Vrmin) ); Vrmin*=-1; } excFV.setVrmin(Vrmin); //KC double KC=ODMModelStringUtil.getDouble(strAry[14], 0.0); if(!strAry[14].contains(".")){ KC=KC/100; } excFV.setKC(KC); } //end of FV }//END OF F+ } } private static int getExcType(String str) { /* * private final static int EA=1; private final static int EC=2; private final static int EK=3; private final static int FA=4; private final static int FF=5; private final static int FJ=6; private final static int FK=7; private final static int FQ=8; private final static int FR=9; private final static int FS=10; private final static int FU=11; private final static int FV=12; */ int type = 0; if(str.equals("EA")){ type=EA; }else if(str.equals("EC")){ type=EC; }else if(str.equals("EK")){ type=EK; }else if(str.equals("FJ")){ type=FJ; }else if(str.equals("FK")){ type=FK; }else if(str.equals("FQ")){ type=FQ; }else if(str.equals("FV")){ type=FV; }else if(str.equals("FF")){ type=FF; }else if(str.equals("FA")){ type=FA; }else if(str.equals("FR")){ type=FR; }else if(str.equals("FS")){ type=FS; }else if(str.equals("FU")){ type=FU; } return type; } private static String[] getExciterDataFields (String str ) { final String[] strAry = new String[19]; strAry[0]=ODMModelStringUtil.getStringReturnEmptyString(str,1, 2).trim(); //to process the Chinese characters first, if any. int chineseCharNum=ODMModelStringUtil.getChineseCharNum(str.substring(3,10).trim()); //Columns 6-13 busName strAry[1] = ODMModelStringUtil.getStringReturnEmptyString(str,4, 11-chineseCharNum).trim(); str=chineseCharNum==0?str:ODMModelStringUtil.replaceChineseChar(str); try{ if(str.substring(0,1).trim().equals("E")){ //busId //strAry[1]=ModelStringUtil.getStringReturnEmptyString(str,4, 11).trim(); //bus Voltage strAry[2]=ODMModelStringUtil.getStringReturnEmptyString(str,12, 15).trim(); //excId strAry[3]=ODMModelStringUtil.getStringReturnEmptyString(str,16, 16).trim(); //TR strAry[4]=ODMModelStringUtil.getStringReturnEmptyString(str,17, 20).trim(); //KA for all, KV for EE strAry[5]=ODMModelStringUtil.getStringReturnEmptyString(str,21, 25).trim(); //TA for all, TRH for EE strAry[6]=ODMModelStringUtil.getStringReturnEmptyString(str,26, 29).trim(); //TA1 strAry[7]=ODMModelStringUtil.getStringReturnEmptyString(str,30, 33).trim(); //VRminMult, VRmax, VRmin for ED EJ strAry[8]=ODMModelStringUtil.getStringReturnEmptyString(str,34, 37).trim(); // KE strAry[9]=ODMModelStringUtil.getStringReturnEmptyString(str,38, 41).trim(); //TE strAry[10]=ODMModelStringUtil.getStringReturnEmptyString(str,42, 45).trim(); //SE0.75MAX for all, KI for DD strAry[11]=ODMModelStringUtil.getStringReturnEmptyString(str,46, 49).trim(); // SEmax for all, Kp for DD strAry[12]=ODMModelStringUtil.getStringReturnEmptyString(str,50, 53).trim(); //EFDMin strAry[13]=ODMModelStringUtil.getStringReturnEmptyString(str,54, 58).trim(); //EFDMax for all, VNmax for ED strAry[14]=ODMModelStringUtil.getStringReturnEmptyString(str,59, 62).trim(); //KF strAry[15]=ODMModelStringUtil.getStringReturnEmptyString(str,63, 66).trim(); //TF strAry[16]=ODMModelStringUtil.getStringReturnEmptyString(str,67, 70).trim(); // XL for ED strAry[17]=ODMModelStringUtil.getStringReturnEmptyString(str,71, 75).trim(); //TF1 for ED strAry[18]=ODMModelStringUtil.getStringReturnEmptyString(str,76, 80).trim(); }else if(str.substring(0, 2).trim().equals("FA")|| str.substring(0, 2).trim().equals("FB")||str.substring(0, 2).trim().equals("FC") ||str.substring(0, 2).trim().equals("FD")||str.substring(0, 2).trim().equals("FE")|| str.substring(0, 2).trim().equals("FF")||str.substring(0, 2).trim().equals("FG") ||str.substring(0, 2).trim().equals("FH")||str.substring(0, 2).trim().equals("FJ") ||str.substring(0, 2).trim().equals("FK")||str.substring(0, 2).trim().equals("FL") ){ //strAry[0]=ModelStringUtil.getStringReturnEmptyString(str,1, 2).trim(); //busId //strAry[1]=ModelStringUtil.getStringReturnEmptyString(str,4, 11).trim(); //bus Voltage strAry[2]=ODMModelStringUtil.getStringReturnEmptyString(str,12, 15).trim(); //excId strAry[3]=ODMModelStringUtil.getStringReturnEmptyString(str,16, 16).trim(); //Rc strAry[4]=ODMModelStringUtil.getStringReturnEmptyString(str,17, 21).trim(); //Xc strAry[5]=ODMModelStringUtil.getStringReturnEmptyString(str,22, 26).trim(); //TR strAry[6]=ODMModelStringUtil.getStringReturnEmptyString(str,27, 31).trim(); //VIMax for G K L,VAmax for FF strAry[7]=ODMModelStringUtil.getStringReturnEmptyString(str,32, 36).trim(); //VIMin for G K L,VAmin for FF strAry[8]=ODMModelStringUtil.getStringReturnEmptyString(str,37, 41).trim(); // TB strAry[9]=ODMModelStringUtil.getStringReturnEmptyString(str,42, 46).trim(); //TC strAry[10]=ODMModelStringUtil.getStringReturnEmptyString(str,47, 51).trim(); //KA, KV for FE strAry[11]=ODMModelStringUtil.getStringReturnEmptyString(str,52, 56).trim(); // TA, TRH for FE strAry[12]=ODMModelStringUtil.getStringReturnEmptyString(str,57, 61).trim(); //VRmax, Vamax for FH strAry[13]=ODMModelStringUtil.getStringReturnEmptyString(str,62, 66).trim(); //VRmin, Vamin strAry[14]=ODMModelStringUtil.getStringReturnEmptyString(str,67, 71).trim(); //KE, KJ for FL strAry[15]=ODMModelStringUtil.getStringReturnEmptyString(str,72, 76).trim(); //TE strAry[16]=ODMModelStringUtil.getStringReturnEmptyString(str,77, 80).trim(); }else if(str.substring(0, 2).trim().equals("FM")||str.substring(0, 2).trim().equals("FN") ||str.substring(0, 2).trim().equals("FO")||str.substring(0, 2).trim().equals("FP") ||str.substring(0, 2).trim().equals("FQ")||str.substring(0, 2).trim().equals("FR") ||str.substring(0, 2).trim().equals("FS")||str.substring(0, 2).trim().equals("FU") ||str.substring(0, 2).trim().equals("FV")){ //strAry[0]=ModelStringUtil.getStringReturnEmptyString(str,1, 2).trim(); //busId //strAry[1]=ModelStringUtil.getStringReturnEmptyString(str,4, 11).trim(); //bus Voltage strAry[2]=ODMModelStringUtil.getStringReturnEmptyString(str,12, 15).trim(); //excId strAry[3]=ODMModelStringUtil.getStringReturnEmptyString(str,16, 16).trim(); //Rc strAry[4]=ODMModelStringUtil.getStringReturnEmptyString(str,17, 20).trim(); //Xc strAry[5]=ODMModelStringUtil.getStringReturnEmptyString(str,21, 24).trim(); //TR strAry[6]=ODMModelStringUtil.getStringReturnEmptyString(str,25, 29).trim(); //K strAry[7]=ODMModelStringUtil.getStringReturnEmptyString(str,30, 34).trim(); //Kv strAry[8]=ODMModelStringUtil.getStringReturnEmptyString(str,35, 37).trim(); // T1 strAry[9]=ODMModelStringUtil.getStringReturnEmptyString(str,38, 42).trim(); //T2 strAry[10]=ODMModelStringUtil.getStringReturnEmptyString(str,43, 47).trim(); //K3 strAry[11]=ODMModelStringUtil.getStringReturnEmptyString(str,48, 52).trim(); // T4 strAry[12]=ODMModelStringUtil.getStringReturnEmptyString(str,53, 57).trim(); //KA strAry[13]=ODMModelStringUtil.getStringReturnEmptyString(str,58, 62).trim(); //TA strAry[14]=ODMModelStringUtil.getStringReturnEmptyString(str,63, 67).trim(); //KF strAry[15]=ODMModelStringUtil.getStringReturnEmptyString(str,68, 72).trim(); //TF strAry[16]=ODMModelStringUtil.getStringReturnEmptyString(str,73, 76).trim(); //KH strAry[17]=ODMModelStringUtil.getStringReturnEmptyString(str,77, 80).trim(); } else if(str.substring(0,2).trim().equals("FZ")){ //strAry[0]=ModelStringUtil.getStringReturnEmptyString(str,1, 2).trim(); //busId //strAry[1]=ModelStringUtil.getStringReturnEmptyString(str,4, 11).trim(); //bus Voltage strAry[2]=ODMModelStringUtil.getStringReturnEmptyString(str,12, 15).trim(); //excId strAry[3]=ODMModelStringUtil.getStringReturnEmptyString(str,16, 16).trim(); //SE1, strAry[4]=ODMModelStringUtil.getStringReturnEmptyString(str,17, 21).trim(); //SE2, strAry[5]=ODMModelStringUtil.getStringReturnEmptyString(str,22, 26).trim(); //EFDmin strAry[6]=ODMModelStringUtil.getStringReturnEmptyString(str,27, 31).trim(); // strAry[7]=ODMModelStringUtil.getStringReturnEmptyString(str,32, 36).trim(); //KF strAry[8]=ODMModelStringUtil.getStringReturnEmptyString(str,37, 41).trim(); // TF strAry[9]=ODMModelStringUtil.getStringReturnEmptyString(str,42, 46).trim(); //KC strAry[10]=ODMModelStringUtil.getStringReturnEmptyString(str,47, 51).trim(); //KD strAry[11]=ODMModelStringUtil.getStringReturnEmptyString(str,52, 56).trim(); // strAry[12]=ODMModelStringUtil.getStringReturnEmptyString(str,57, 61).trim(); // strAry[13]=ODMModelStringUtil.getStringReturnEmptyString(str,62, 66).trim(); // strAry[14]=ODMModelStringUtil.getStringReturnEmptyString(str,67, 71).trim(); // strAry[15]=ODMModelStringUtil.getStringReturnEmptyString(str,72, 76).trim(); }else if(str.substring(0,2).trim().equals("F+")){ //strAry[0]=ModelStringUtil.getStringReturnEmptyString(str,1, 2).trim(); //busId //strAry[1]=ModelStringUtil.getStringReturnEmptyString(str,4, 11).trim(); //bus Voltage strAry[2]=ODMModelStringUtil.getStringReturnEmptyString(str,12, 15).trim(); //excId strAry[3]=ODMModelStringUtil.getStringReturnEmptyString(str,16, 16).trim(); //VAMAX strAry[4]=ODMModelStringUtil.getStringReturnEmptyString(str,17, 21).trim(); //VAMIN strAry[5]=ODMModelStringUtil.getStringReturnEmptyString(str,22, 26).trim(); //KB strAry[6]=ODMModelStringUtil.getStringReturnEmptyString(str,27, 30).trim(); //T5 strAry[7]=ODMModelStringUtil.getStringReturnEmptyString(str,31, 34).trim(); //KE strAry[8]=ODMModelStringUtil.getStringReturnEmptyString(str,35, 38).trim(); // TE strAry[9]=ODMModelStringUtil.getStringReturnEmptyString(str,39, 42).trim(); //SE1--@EFDMAX strAry[10]=ODMModelStringUtil.getStringReturnEmptyString(str,43, 47).trim(); //SE2--@75%EFDMAX strAry[11]=ODMModelStringUtil.getStringReturnEmptyString(str,48, 52).trim(); // VRMAX strAry[12]=ODMModelStringUtil.getStringReturnEmptyString(str,53, 56).trim(); //VRMIN strAry[13]=ODMModelStringUtil.getStringReturnEmptyString(str,57, 60).trim(); //KC strAry[14]=ODMModelStringUtil.getStringReturnEmptyString(str,61, 64).trim(); //KD strAry[15]=ODMModelStringUtil.getStringReturnEmptyString(str,65, 68).trim(); //KL1 strAry[16]=ODMModelStringUtil.getStringReturnEmptyString(str,69, 72).trim(); //VLIR strAry[17]=ODMModelStringUtil.getStringReturnEmptyString(str,73, 76).trim(); //EFDMAX strAry[18]=ODMModelStringUtil.getStringReturnEmptyString(str,77, 80).trim(); } }catch (Exception e){ ODMLogger.getLogger().severe(e.toString()); } return strAry; } }