package org.ieee.odm.adapter.ge.mapper.dynamic.load;
import org.ieee.odm.adapter.AbstractDataFieldParser;
import org.ieee.odm.adapter.BaseDataMapper;
import org.ieee.odm.common.ODMException;
import org.ieee.odm.model.IODMModelParser;
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.DStabLoadDataXmlType;
import org.ieee.odm.schema.DynamicLoadCMPLDWXmlType;
import org.ieee.odm.schema.DynamicLoadModelSelectionXmlType;
import org.ieee.odm.schema.LoadCharacteristicLocationEnumType;
import org.ieee.odm.schema.LoadCharacteristicTypeEnumType;
public class PSLFDynLoadCMPLDWMapper extends BaseDataMapper{
public PSLFDynLoadCMPLDWMapper(AbstractDataFieldParser parser){
this.dataParser = parser;
}
public void procLineString(String lineStr, DStabModelParser parser) throws ODMException {
this.dataParser.parseFields(lineStr);
/*
* // 0----------1----------2----------3----------4
"Type", "IBUS", "NAME", "BASEKV", "Id",
// 5----------6----------7----------8----------9
"MVA", "Bss", "Rfdr", "Xfdr", "Fb",
// 10----------11----------12--------13--------14
"Xxf", "Tfixhs", "Tfixls", "LTC", "Tmin",
// 15----------16-------17---------18---------19----
"Tmax", "step", "Vmin", "Vmax", "Tdel",
// 20--------21--------22---------23-----------24-
"Ttap", "Rcomp", "Xcomp", "FmA", "FmB",
// 25--------26--------27---------28-----------29-
"FmC", "FmD", "Fel", "PFel", "Vd1",
// 30--------31--------32---------33-----------34
"Vd2", "frcel", "PFs", "P1e", "P1c",
// 35--------36--------37---------38-----------39
"P2e", "P2c", "Pfrq", "Q1e", "Q1c",
// 40--------41--------42--------43-----------44
"Q2e", "Q2c", "Qfrq", "MtypA", "MtypB",
// 45--------46--------47--------48-----------49
"MtypC", "MtypD", "LfmA", "RsA" , "LsA" ,
//
"LpA" , "LppA" , "TpoA", "TppoA", "HA" ,
"EtrqA" , "Vtr1A", "Ttr1A" , "Ftr1A" , "Vrc1A" ,
"Trc1A" , "Vtr2A", "Ttr2A", "Ftr2A", "Vrc2A" ,
"Trc2A" , "LfmB" , "RsB", "LsB", "LpB",
"LppB", "TpoB" , "TppoB" , "HB" , "EtrqB",
"Vtr1B" , "Ttr1B" , "Ftr1B" , "Vrc1B" , "Trc1B" ,
"Vtr2B" , "Ttr2B" , "Ftr2B" , "Vrc2B" , "Trc2B" ,
"LfmC" , "RsC" , "LsC" , "LpC" , "LppC",
"TpoC" , "TppoC" , "HC" , "EtrqC" , "Vtr1C" ,
"Ttr1C" , "Ftr1C" , "Vrc1C" , "Trc1C" , "Vtr2C" ,
"Ttr2C" , "Ftr2C" , "Vrc2C" , "Trc2C" , "LfmD" ,
"CompPF" , "Vstall" , "Rstall" , "Xstall" , "Tstall",
"Frst" , "Vrst" , "Trst" , "fuvr" , "vtr1" ,
"ttr1" , "vtr2" , "ttr2", "Vc1off" , "Vc2off",
"Vc1on", "Vc2on" , "Tth" , "Th1t" , "Th2t" ,
"Tv"
*/
int i = dataParser.getInt("IBUS");
final String busId = IODMModelParser.BusIdPreFix+i;
String loadId = dataParser.getString("Id");
//check model type
if(!(dataParser.getString("Type").equals("CMPLDW"))){
throw new ODMException("dyn load : Id"+
loadId+" @ Bus"+i+"is not a CMPLDW load model");
}
DStabBusXmlType busXml = parser.getBus(busId);
if(busXml!=null){
DStabLoadDataXmlType dstabloadData = DStabParserHelper.getDStabLoad(busXml, loadId);
if(dstabloadData!= null){
dstabloadData.setLocation(LoadCharacteristicLocationEnumType.AT_BUS);
dstabloadData.setLoadXmlType(LoadCharacteristicTypeEnumType.WECC_COMPOSITE_LOAD);
// DynamicLoadModelSelectionXmlType loadModel = dstabloadData.getLoadModel();
// if(loadModel ==null){
// loadModel = new DynamicLoadModelSelectionXmlType();
// dstabloadData.setLoadModel(loadModel);
// }
DynamicLoadCMPLDWXmlType cmpldw = DStabParserHelper.createDStabLoadCMPLDW(dstabloadData);
//loadModel.setCMPLDWLoad(cmpldw);
double mva = dataParser.getDouble("MVA");
double bss = dataParser.getDouble("Bss");
double Rfdr = dataParser.getDouble("Rfdr");
double Xfdr = dataParser.getDouble("Xfdr");
double Fb = dataParser.getDouble("Fb");
double Xxf = dataParser.getDouble("Xxf");
int LTC = dataParser.getInt("LTC");
double Tmin = dataParser.getDouble("Tmin");
double Tmax = dataParser.getDouble("Tmax");
double step = dataParser.getDouble("step");
double Tfixls = dataParser.getDouble("Tfixls");
double Tfixhs = dataParser.getDouble("Tfixhs");
double Vmin = dataParser.getDouble("Vmin");
double Vmax = dataParser.getDouble("Vmax");
double Tdel = dataParser.getDouble("Tdel");
double Ttap = dataParser.getDouble("Ttap");
double FmA = dataParser.getDouble("FmA");
double FmB = dataParser.getDouble("FmB");
double FmC = dataParser.getDouble("FmC");
double FmD = dataParser.getDouble("FmD");
double Fel = dataParser.getDouble("Fel");
int MtypA = dataParser.getInt("MtypA");
int MtypB = dataParser.getInt("MtypB");
int MtypC = dataParser.getInt("MtypC");
int MtypD = dataParser.getInt("MtypD");
double LfmA = dataParser.getDouble("LfmA");
double RsA = dataParser.getDouble("RsA");
double LsA = dataParser.getDouble("LsA");
double LpA = dataParser.getDouble("LpA");
double LppA = dataParser.getDouble("LppA");
double TpoA = dataParser.getDouble("TpoA");
double TppoA = dataParser.getDouble("TppoA");
double HA = dataParser.getDouble("HA");
double EtrqA = dataParser.getDouble("EtrqA");
double Vtr1A = dataParser.getDouble("Vtr1A");
double Ttr1A = dataParser.getDouble("Ttr1A");
double Ftr1A = dataParser.getDouble("Ftr1A");
double Vrc1A = dataParser.getDouble("Vrc1A");
double Trc1A = dataParser.getDouble("Trc1A");
double Vtr2A = dataParser.getDouble("Vtr2A");
double Ttr2A = dataParser.getDouble("Ttr2A");
double Ftr2A = dataParser.getDouble("Ftr2A");
double Vrc2A = dataParser.getDouble("Vrc2A");
double Trc2A = dataParser.getDouble("Trc2A");
double LfmB = 0.0;
double RsB = 0.0;
double LsB = 0.0;
double LpB = 0.0;
double LppB = 0.0;
double TpoB = 0.0;
double TppoB = 0.0;
double HB = 0.0;
double EtrqB = 0.0;
double Vtr1B = 0.0;
double Ttr1B = 0.0;
double Ftr1B = 0.0;
double Vrc1B = 0.0;
double Trc1B = 0.0;
double Vtr2B = 0.0;
double Ttr2B = 0.0;
double Ftr2B = 0.0;
double Vrc2B = 0.0;
double Trc2B = 0.0;
if(dataParser.exist("LfmB") ) {// criteria for determining no data definition for Motor B
LfmB = dataParser.getDouble("LfmB");
RsB = dataParser.getDouble("RsB");
LsB = dataParser.getDouble("LsB");
LpB = dataParser.getDouble("LpB");
LppB = dataParser.getDouble("LppB");
TpoB = dataParser.getDouble("TpoB");
TppoB = dataParser.getDouble("TppoB");
HB = dataParser.getDouble("HB");
EtrqB = dataParser.getDouble("EtrqB");
Vtr1B = dataParser.getDouble("Vtr1B");
Ttr1B = dataParser.getDouble("Ttr1B");
Ftr1B = dataParser.getDouble("Ftr1B");
Vrc1B = dataParser.getDouble("Vrc1B");
Trc1B = dataParser.getDouble("Trc1B");
Vtr2B = dataParser.getDouble("Vtr2B");
Ttr2B = dataParser.getDouble("Ttr2B");
Ftr2B = dataParser.getDouble("Ftr2B");
Vrc2B = dataParser.getDouble("Vrc2B");
Trc2B = dataParser.getDouble("Trc2B");
}
double LfmC = 0.0;
double RsC = 0.0;
double LsC = 0.0;
double LpC = 0.0;
double LppC = 0.0;
double TpoC = 0.0;
double TppoC = 0.0;
double HC = 0.0;
double EtrqC = 0.0;
double Vtr1C = 0.0;
double Ttr1C = 0.0;
double Ftr1C = 0.0;
double Vrc1C = 0.0;
double Trc1C = 0.0;
double Vtr2C = 0.0;
double Ttr2C = 0.0;
double Ftr2C = 0.0;
double Vrc2C = 0.0;
double Trc2C = 0.0;
if(dataParser.exist("LfmC") ) {// criteria for determining no data definition for Motor B
LfmC = dataParser.getDouble("LfmC");
RsC = dataParser.getDouble("RsC");
LsC = dataParser.getDouble("LsC");
LpC = dataParser.getDouble("LpC");
LppC = dataParser.getDouble("LppC");
TpoC = dataParser.getDouble("TpoC");
TppoC = dataParser.getDouble("TppoC");
HC = dataParser.getDouble("HC");
EtrqC = dataParser.getDouble("EtrqC");
Vtr1C = dataParser.getDouble("Vtr1C");
Ttr1C = dataParser.getDouble("Ttr1C");
Ftr1C = dataParser.getDouble("Ftr1C");
Vrc1C = dataParser.getDouble("Vrc1C");
Trc1C = dataParser.getDouble("Trc1C");
Vtr2C = dataParser.getDouble("Vtr2C");
Ttr2C = dataParser.getDouble("Ttr2C");
Ftr2C = dataParser.getDouble("Ftr2C");
Vrc2C = dataParser.getDouble("Vrc2C");
Trc2C = dataParser.getDouble("Trc2C");
}
// Chances are that A/C motor is not defined
double LfmD = 0.0;
double comPf = 0.0;
double vstall = 0.0;
double rstall = 0.0;
double xstall = 0.0;
double tstall = 0.0;
double Frst = 0.0;
double Vrst = 0.0;
double Trst = 0.0;
double Fuvr = 0.0;
double Vtr1 = 0.0;
double Ttr1 = 0.0;
double Vtr2 = 0.0;
double Ttr2 = 0.0;
double Vc1off = 0.0;
double Vc2off = 0.0;
double Vc1on = 0.0;
double Vc2on = 0.0;
double Tth = 0.0;
double Th1t = 0.0;
double Th2t = 0.0;
double Tv = 0.0;
if(dataParser.exist("LfmD") ) {
LfmD = dataParser.getDouble("LfmD");
comPf = dataParser.getDouble("CompPF");
vstall = dataParser.getDouble("Vstall");
rstall = dataParser.getDouble("Rstall");
xstall = dataParser.getDouble("Xstall");
tstall = dataParser.getDouble("Tstall");
Frst = dataParser.getDouble("Frst");
Vrst = dataParser.getDouble("Vrst");
Trst = dataParser.getDouble("Trst");
Fuvr = dataParser.getDouble("Fuvr");
Vtr1 = dataParser.getDouble("Vtr1");
Ttr1 = dataParser.getDouble("Ttr1");
Vtr2 = dataParser.getDouble("Vtr2");
Ttr2 = dataParser.getDouble("Ttr2");
Vc1off = dataParser.getDouble("Vc1off");
Vc2off = dataParser.getDouble("Vc2off");
Vc1on = dataParser.getDouble("Vc1on");
Vc2on = dataParser.getDouble("Vc2on");
Tth = dataParser.getDouble("Tth");
Th1t = dataParser.getDouble("Th1t");
Th2t = dataParser.getDouble("Th2t");
Tv = dataParser.getDouble("Tv");
}
cmpldw.setMva(mva);
cmpldw.setBss(bss);
cmpldw.setRfdr(Rfdr);
cmpldw.setXfdr(Xfdr);
cmpldw.setFb(Fb);
cmpldw.setXxf(Xxf);
/*
* int LTC = dataParser.getInt("LTC");
double Tmin = dataParser.getDouble("Tmin");
double Tmax = dataParser.getDouble("Tmax");
double step = dataParser.getDouble("step");
double Tfixls = dataParser.getDouble("Tfixls");
double Tfixhs = dataParser.getDouble("Tfixhs");
double Vmin = dataParser.getDouble("Vmin");
double Vmax = dataParser.getDouble("Vmax");
*/
cmpldw.setLTC(LTC);
cmpldw.setTmin(Tmin);
cmpldw.setTmax(Tmax);
cmpldw.setStep(step);
cmpldw.setTfixLS(Tfixls);
cmpldw.setTfixHS(Tfixhs);
cmpldw.setVmin(Vmin);
cmpldw.setVmax(Vmax);
cmpldw.setTdel(Tdel);
cmpldw.setTtap(Ttap);
cmpldw.setRcomp(0.0);
cmpldw.setXcomp(0.0);
cmpldw.setFma(FmA);
cmpldw.setFmb(FmB);
cmpldw.setFmc(FmC);
cmpldw.setFmd(FmD);
cmpldw.setFel(Fel);
cmpldw.setMtpA(MtypA);
cmpldw.setMtpB(MtypB);
cmpldw.setMtpC(MtypC);
cmpldw.setMtpD(MtypD);
// THREE-PHASE MOTOR A
cmpldw.setLfmA(LfmA);
cmpldw.setRsA(RsA);
cmpldw.setLsA(LsA);
cmpldw.setLpA(LpA);
cmpldw.setLppA(LppA);
cmpldw.setTpoA(TpoA);
cmpldw.setTppoA(TppoA);
cmpldw.setHA(HA);
cmpldw.setEtrqA(EtrqA);
cmpldw.setVtr1A(Vtr1A);
cmpldw.setTtr1A(Ttr1A);
cmpldw.setFtr1A(Ftr1A);
cmpldw.setVrc1A(Vrc1A);
cmpldw.setTrc1A(Trc1A);
cmpldw.setVtr2A(Vtr2A);
cmpldw.setTtr2A(Ttr2A);
cmpldw.setFtr2A(Ftr2A);
cmpldw.setVrc2A(Vrc2A);
cmpldw.setTrc2A(Trc2A);
// THREE-PHASE MOTOR B
cmpldw.setLfmB(LfmB);
cmpldw.setRsB(RsB);
cmpldw.setLsB(LsB);
cmpldw.setLpB(LpB);
cmpldw.setLppB(LppB);
cmpldw.setTpoB(TpoB);
cmpldw.setTppoB(TppoB);
cmpldw.setHB(HB);
cmpldw.setEtrqB(EtrqB);
cmpldw.setVtr1B(Vtr1B);
cmpldw.setTtr1B(Ttr1B);
cmpldw.setFtr1B(Ftr1B);
cmpldw.setVrc1B(Vrc1B);
cmpldw.setTrc1B(Trc1B);
cmpldw.setVtr2B(Vtr2B);
cmpldw.setTtr2B(Ttr2B);
cmpldw.setFtr2B(Ftr2B);
cmpldw.setVrc2B(Vrc2B);
cmpldw.setTrc2B(Trc2B);
// THREE-PHASE MOTOR C
cmpldw.setLfmC(LfmC);
cmpldw.setRsC(RsC);
cmpldw.setLsC(LsC);
cmpldw.setLpC(LpC);
cmpldw.setLppC(LppC);
cmpldw.setTpoC(TpoC);
cmpldw.setTppoC(TppoC);
cmpldw.setHC(HC);
cmpldw.setEtrqC(EtrqC);
cmpldw.setVtr1C(Vtr1C);
cmpldw.setTtr1C(Ttr1C);
cmpldw.setFtr1C(Ftr1C);
cmpldw.setVrc1C(Vrc1C);
cmpldw.setTrc1C(Trc1C);
cmpldw.setVtr2C(Vtr2C);
cmpldw.setTtr2C(Ttr2C);
cmpldw.setFtr2C(Ftr2C);
cmpldw.setVrc2C(Vrc2C);
cmpldw.setTrc2C(Trc2C);
cmpldw.setLfmD(LfmD);
cmpldw.setCompPF( comPf);
cmpldw.setVstall( vstall);
cmpldw.setRstall( rstall);
cmpldw.setXstall( xstall);
cmpldw.setTstall( tstall);
cmpldw.setFrst( Frst);
cmpldw.setVrst( Vrst);
cmpldw.setTrst( Trst);
cmpldw.setVtr1B( Vrst);
cmpldw.setTrst( Trst);
cmpldw.setFuvr(Fuvr);
cmpldw.setVtr1(Vtr1);
cmpldw.setTtr1(Ttr1);
cmpldw.setVtr2(Vtr2);
cmpldw.setTtr2(Ttr2);
cmpldw.setVc1Off(Vc1off);
cmpldw.setVc2Off(Vc2off);
cmpldw.setVc1On(Vc1on);
cmpldw.setVc2On(Vc2on);
cmpldw.setTth(Tth);
cmpldw.setTh1T(Th1t);
cmpldw.setTh2T(Th2t);
cmpldw.setTv(Tv);
}
}
}
}