/*
* @(#)DStabParserHelper.java
*
* Copyright (C) 2006-2010 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 Mike Zhou
* @Version 1.0
* @Date 02/01/2010
*
* Revision History
* ================
*
*/
package org.ieee.odm.model.dstab;
import static org.ieee.odm.ODMObjectFactory.OdmObjFactory;
import javax.xml.bind.JAXBElement;
import org.ieee.odm.common.ODMException;
import org.ieee.odm.common.ODMLogger;
import org.ieee.odm.model.acsc.AcscParserHelper;
import org.ieee.odm.schema.BusGenDataXmlType;
import org.ieee.odm.schema.BusLoadDataXmlType;
import org.ieee.odm.schema.ClassicMachineXmlType;
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.Eq11Ed11MachineXmlType;
import org.ieee.odm.schema.Eq11MachineXmlType;
import org.ieee.odm.schema.Eq1Ed1MachineXmlType;
import org.ieee.odm.schema.Eq1MachineXmlType;
import org.ieee.odm.schema.EquiMachineXmlType;
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.ExcIEEE1968Type1SXmlType;
import org.ieee.odm.schema.ExcIEEE1968Type1XmlType;
import org.ieee.odm.schema.ExcIEEE1968Type2XmlType;
import org.ieee.odm.schema.ExcIEEE1968Type3XmlType;
import org.ieee.odm.schema.ExcIEEE1968Type4XmlType;
import org.ieee.odm.schema.ExcIEEE1981ST1XmlType;
import org.ieee.odm.schema.ExcIEEE1981TypeAC1XmlType;
import org.ieee.odm.schema.ExcIEEE1981TypeAC2XmlType;
import org.ieee.odm.schema.ExcIEEE1981TypeDC1XmlType;
import org.ieee.odm.schema.ExcIEEE1981TypeDC2XmlType;
import org.ieee.odm.schema.ExcIEEE1992TypeAC1AXmlType;
import org.ieee.odm.schema.ExcIEEE2005TypeST3AXmlType;
import org.ieee.odm.schema.ExcIEEE2005TypeST4BXmlType;
import org.ieee.odm.schema.ExcIEEEModified1968Type1XmlType;
import org.ieee.odm.schema.ExcSimpleTypeXmlType;
import org.ieee.odm.schema.ExcTSATTypeEXC34XmlType;
import org.ieee.odm.schema.GovBPAGiGaTbCombinedModelXmlType;
import org.ieee.odm.schema.GovBPAGsTbCombinedModelXmlType;
import org.ieee.odm.schema.GovBPAHydroTurbineGHXmlType;
import org.ieee.odm.schema.GovHydroSteamGeneralModelXmlType;
import org.ieee.odm.schema.GovHydroTurbineXmlType;
import org.ieee.odm.schema.GovHydroXmlType;
import org.ieee.odm.schema.GovIEEE1981Type1XmlType;
import org.ieee.odm.schema.GovIEEE1981Type2XmlType;
import org.ieee.odm.schema.GovIEEE1981Type3XmlType;
import org.ieee.odm.schema.GovPSSEGASTModelXmlType;
import org.ieee.odm.schema.GovPSSEIEESGOModelXmlType;
import org.ieee.odm.schema.GovPSSETGOV1ModelXmlType;
import org.ieee.odm.schema.GovSimpleTypeXmlType;
import org.ieee.odm.schema.GovSteamNRXmlType;
import org.ieee.odm.schema.GovSteamTCDRXmlType;
import org.ieee.odm.schema.GovSteamTCSRXmlType;
import org.ieee.odm.schema.LoadflowGenDataXmlType;
import org.ieee.odm.schema.LoadflowLoadDataXmlType;
import org.ieee.odm.schema.PssBPADualInputXmlType;
import org.ieee.odm.schema.PssBpaSgTypeXmlType;
import org.ieee.odm.schema.PssBpaSpTypeXmlType;
import org.ieee.odm.schema.PssBpaSsTypeXmlType;
import org.ieee.odm.schema.PssIEE2STXmlType;
import org.ieee.odm.schema.PssIEEE1981TypeXmlType;
import org.ieee.odm.schema.PssIEEE1992Type2AXmlType;
import org.ieee.odm.schema.PssIEEE1AXmlType;
import org.ieee.odm.schema.PssIEEEDualInputXmlType;
import org.ieee.odm.schema.PssSimpleTypeXmlType;
import org.ieee.odm.schema.SpeedGovBPAGSModelXmlType;
import org.ieee.odm.schema.SpeedGovBPAGiGaCombinedXmlType;
import org.ieee.odm.schema.SpeedGovBPARegGIModelXmlType;
import org.ieee.odm.schema.SpeedGovBPAServoGAModelXmlType;
import org.ieee.odm.schema.SpeedGovModelXmlType;
import org.ieee.odm.schema.SteamTurbineBPATBModelXmlType;
import org.ieee.odm.schema.SteamTurbineNRXmlType;
import org.ieee.odm.schema.SteamTurbineTCDRXmlType;
import org.ieee.odm.schema.SteamTurbineTCSRXmlType;
/**
* DStab ODM model parser helper functions
*
* @author mzhou
*
*/
public class DStabParserHelper extends AcscParserHelper {
/**
* create DStab equiv gen
*
* @return
*/
/*
public static JAXBElement<DStabGenDataXmlType> createDStabEquivGen() {
DStabGenDataXmlType equivGen = OdmObjFactory.createDStabGenDataXmlType();
return OdmObjFactory.createDstabEquivGen(equivGen);
}
*/
public static DStabGenDataXmlType getDefaultGen(BusGenDataXmlType genData) {
if (genData.getContributeGen().size() == 0)
genData.getContributeGen().add(OdmObjFactory.createDstabContributeGen(
OdmObjFactory.createDStabGenDataXmlType()));
return (DStabGenDataXmlType)genData.getContributeGen().get(0).getValue();
}
/**
* get DStab Gen Data object on the acscBus with id = genId
*
* @param dstabBus
* @param genId
* @return null if dstabGenData not found
*/
public static DStabGenDataXmlType getDStabContritueGen(DStabBusXmlType dstabBus, String genId) throws ODMException {
for (JAXBElement<? extends LoadflowGenDataXmlType> elem : dstabBus.getGenData().getContributeGen()) {
DStabGenDataXmlType dstabGenData = (DStabGenDataXmlType)elem.getValue();
if (dstabGenData.getId().equalsIgnoreCase(genId)) // change to NOT Case sensitive
return dstabGenData;
}
//TODO wecc system has gens without machine
ODMLogger.getLogger().severe("Generator not found, ID: " + genId + "@Bus:" + dstabBus.getId());
return null;
}
/**
* create a DStab Contributing Generator object
*
*/
public static DStabGenDataXmlType createDStabContributeGen(DStabBusXmlType busRec) {
BusGenDataXmlType genData = busRec.getGenData();
/* this should never happen
if (genData == null) {
genData = OdmObjFactory.createBusGenDataXmlType();
busRec.setGenData(genData);
genData.setEquivGen(createDStabEquivGen());
}
*/
// some model does not need ContributeGenList
DStabGenDataXmlType contribGen = OdmObjFactory.createDStabGenDataXmlType();
genData.getContributeGen().add(OdmObjFactory.createDstabContributeGen(contribGen));
return contribGen;
}
/**
* create DStab equiv load
*
* @return
*/
/*
public static JAXBElement<DStabLoadDataXmlType> createDStabEquivLoad() {
DStabLoadDataXmlType equivLoad = OdmObjFactory.createDStabLoadDataXmlType();
return OdmObjFactory.createDstabEquivLoad(equivLoad);
}
*/
public static DStabLoadDataXmlType getDefaultLoad(BusLoadDataXmlType loadData) {
if (loadData.getContributeLoad().size() == 0)
loadData.getContributeLoad().add(OdmObjFactory.createDstabContributeLoad(
OdmObjFactory.createDStabLoadDataXmlType()));
return (DStabLoadDataXmlType)loadData.getContributeLoad().get(0).getValue();
}
/**
* create a DStab Contribution Load object
*
*/
public static DStabLoadDataXmlType createDStabContriLoad(DStabBusXmlType busRec) {
BusLoadDataXmlType loadData = busRec.getLoadData();
/* this should never happen
if (loadData == null) {
loadData = OdmObjFactory.createBusLoadDataXmlType();
busRec.setLoadData(loadData);
DStabLoadDataXmlType equivLoad = OdmObjFactory.createDStabLoadDataXmlType();
loadData.setEquivLoad(OdmObjFactory.createDstabEquivLoad(equivLoad));
}
*/
DStabLoadDataXmlType contribLoad = OdmObjFactory.createDStabLoadDataXmlType();
loadData.getContributeLoad().add(OdmObjFactory.createDstabContributeLoad(contribLoad));
return contribLoad;
}
/**
* get DStab Load Data object on the acscBus with id = loadId
*
* @param dstabBus
* @param loadId
* @return null if dstabLoadData not found
*/
public static DStabLoadDataXmlType getDStabLoad(DStabBusXmlType dstabBus, String loadId) throws ODMException {
for (JAXBElement<? extends LoadflowLoadDataXmlType> elem : dstabBus.getLoadData().getContributeLoad()) {
DStabLoadDataXmlType dstabLoadData = (DStabLoadDataXmlType)elem.getValue();
if (dstabLoadData.getId().equalsIgnoreCase(loadId)) // change to NOT Case sensitive
return dstabLoadData;
}
ODMLogger.getLogger().severe("Load not found, ID: " + loadId + "@Bus:" + dstabBus.getId());
return null;
}
public static DynamicLoadCMPLDWXmlType createDStabLoadCMPLDW(DStabLoadDataXmlType load){
DynamicLoadCMPLDWXmlType dynLoad = OdmObjFactory.createDynamicLoadCMPLDWXmlType();
if(load.getLoadModel() == null)
load.setLoadModel(OdmObjFactory.createDynamicLoadModelSelectionXmlType());
load.getLoadModel().setCMPLDWLoad(dynLoad);
return dynLoad;
}
/*
* Machine model creation functions
* ================================
*/
/**
* create a machine model of type Classic
*
* @param gen
* @return
*/
public static ClassicMachineXmlType createClassicMachine(DStabGenDataXmlType gen) {
ClassicMachineXmlType mach = OdmObjFactory.createClassicMachineXmlType();
gen.setMachineModel(OdmObjFactory.createClassicMachModel(mach));
return mach;
}
/**
* create a machine model of type EquivMachine
*
* @param gen
* @return
*/
public static EquiMachineXmlType createEquiMachine(DStabGenDataXmlType gen) {
EquiMachineXmlType mach = OdmObjFactory.createEquiMachineXmlType();
gen.setMachineModel(OdmObjFactory.createEquiMachModel(mach));
return mach;
}
/**
* create a machine model of type Eq1
*
* @param gen
* @return
*/
public static Eq1MachineXmlType createEq1Machine(DStabGenDataXmlType gen) {
Eq1MachineXmlType mach = OdmObjFactory.createEq1MachineXmlType();
gen.setMachineModel(OdmObjFactory.createEq1MachModel(mach));
return mach;
}
/**
* create a machine model of type Eq1Ed1
*
* @param gen
* @return
*/
public static Eq1Ed1MachineXmlType createEq1Ed1Machine(DStabGenDataXmlType gen) {
Eq1Ed1MachineXmlType mach = OdmObjFactory.createEq1Ed1MachineXmlType();
gen.setMachineModel(OdmObjFactory.createEq1Ed1MachModel(mach));
return mach;
}
/**
* create a machine model of type Eq11
*
* @param gen
* @return
*/
public static Eq11MachineXmlType createEq11Machine(DStabGenDataXmlType gen) {
Eq11MachineXmlType mach = OdmObjFactory.createEq11MachineXmlType();
gen.setMachineModel(OdmObjFactory.createEq11MachModel(mach));
return mach;
}
/**
* create a machine model of type Eq11Ed11
*
* @param gen
* @return
*/
public static Eq11Ed11MachineXmlType createEq11Ed11Machine(DStabGenDataXmlType gen) {
Eq11Ed11MachineXmlType mach = OdmObjFactory.createEq11Ed11MachineXmlType();
gen.setMachineModel(OdmObjFactory.createEq11Ed11MachModel(mach));
return mach;
}
/**
* create machine Se parameter record, format 1
*
* @return
*/
public static Eq1MachineXmlType.SeFmt1 createMachineSeFmt1() {
Eq1MachineXmlType.SeFmt1 seFmt1 = OdmObjFactory.createEq1MachineXmlTypeSeFmt1();
seFmt1.setSe100(0.0);
seFmt1.setSe120(0.0);
seFmt1.setSliner(10.0); // this means the machine will never get into saturation
return seFmt1;
}
/*
* Exciter model creation functions
* ================================
*/
/**
* create Exc model record of type SimpleType
*
* @param gen
* @return
*/
public static ExcSimpleTypeXmlType createExcSimpleTypeXmlType(DStabGenDataXmlType gen) {
ExcSimpleTypeXmlType exc = OdmObjFactory.createExcSimpleTypeXmlType();
gen.setExciter(OdmObjFactory.createExcSimpleType(exc));
return exc;
}
/**
* create Exc model record of type IEEE2005TypeST3A
*
* @param gen
* @return
*/
public static ExcIEEE2005TypeST3AXmlType createExcIEEE2005TypeST3AXmlType(DStabGenDataXmlType gen) {
ExcIEEE2005TypeST3AXmlType exc = OdmObjFactory.createExcIEEE2005TypeST3AXmlType();
gen.setExciter(OdmObjFactory.createExcIEEE2005TypeST3A(exc));
return exc;
}
/**
* create Exc model record of type IEEE2005TypeST3A
*
* @param gen
* @return
*/
public static ExcIEEE2005TypeST4BXmlType createExcIEEE2005TypeST4BXmlType(DStabGenDataXmlType gen) {
ExcIEEE2005TypeST4BXmlType exc = OdmObjFactory.createExcIEEE2005TypeST4BXmlType();
gen.setExciter(OdmObjFactory.createExcIEEE2005TypeST4B(exc));
return exc;
}
/**
* create Exc model record of type IEEE1992TypeAC1A
*
* @param gen
* @return
*/
public static ExcIEEE1992TypeAC1AXmlType createExcIEEE1992TypeAC1AXmlType(DStabGenDataXmlType gen) {
ExcIEEE1992TypeAC1AXmlType exc = OdmObjFactory.createExcIEEE1992TypeAC1AXmlType();
gen.setExciter(OdmObjFactory.createExcIEEE1992TypeAC1A(exc));
return exc;
}
/**
* create Exc model record of type IEEE1981TypeAC1
*
* @param gen
* @return
*/
public static ExcIEEE1981TypeAC1XmlType createExcIEEE1981TypeAC1XmlType(DStabGenDataXmlType gen) {
ExcIEEE1981TypeAC1XmlType exc = OdmObjFactory.createExcIEEE1981TypeAC1XmlType();
gen.setExciter(OdmObjFactory.createExcIEEE1981TypeAC1(exc));
return exc;
}
/**
* create Exc model record of type IEEE1981TypeAC2
*
* @param gen
* @return
*/
public static ExcIEEE1981TypeAC2XmlType createExcIEEE1981TypeAC2XmlType(DStabGenDataXmlType gen) {
ExcIEEE1981TypeAC2XmlType exc = OdmObjFactory.createExcIEEE1981TypeAC2XmlType();
gen.setExciter(OdmObjFactory.createExcIEEE1981TypeAC2(exc));
return exc;
}
/**
* create Exc model record of type IEEE1981TypeDC1
*
* @param gen
* @return
*/
public static ExcIEEE1981TypeDC1XmlType createExcIEEE1981TypeDC1XmlType(DStabGenDataXmlType gen) {
ExcIEEE1981TypeDC1XmlType exc = OdmObjFactory.createExcIEEE1981TypeDC1XmlType();
gen.setExciter(OdmObjFactory.createExcIEEE1981TypeDC1(exc));
return exc;
}
/**
* create Exc model record of type IEEE1981TypeDC2
*
* @param gen
* @return
*/
public static ExcIEEE1981TypeDC2XmlType createExcIEEE1981TypeDC2XmlType(DStabGenDataXmlType gen) {
ExcIEEE1981TypeDC2XmlType exc = OdmObjFactory.createExcIEEE1981TypeDC2XmlType();
gen.setExciter(OdmObjFactory.createExcIEEE1981TypeDC2(exc));
return exc;
}
/**
* create Exc model record of type IEEE1981ST1
*
* @param gen
* @return
*/
public static ExcIEEE1981ST1XmlType createExcIEEE1981ST1XmlType(DStabGenDataXmlType gen) {
ExcIEEE1981ST1XmlType exc = OdmObjFactory.createExcIEEE1981ST1XmlType();
gen.setExciter(OdmObjFactory.createExcIEEE1981ST1(exc));
return exc;
}
/**
* create Exc model record of type IEEE1968Type1
*
* @param gen
* @return
*/
public static ExcIEEE1968Type1XmlType createExcIEEE1968Type1XmlType(DStabGenDataXmlType gen) {
ExcIEEE1968Type1XmlType exc = OdmObjFactory.createExcIEEE1968Type1XmlType();
gen.setExciter(OdmObjFactory.createExcIEEE1968Type1(exc));
return exc;
}
/**
* create Exc model record of type IEEEModified1968Type1
*
* @param gen
* @return
*/
public static ExcIEEEModified1968Type1XmlType createExcIEEEModified1968Type1XmlType(DStabGenDataXmlType gen) {
ExcIEEEModified1968Type1XmlType exc = OdmObjFactory.createExcIEEEModified1968Type1XmlType();
gen.setExciter(OdmObjFactory.createExcIEEEModified1968Type1(exc));
return exc;
}
/**
* create Exc model record of type IEEE1968Type1S
*
* @param gen
* @return
*/
public static ExcIEEE1968Type1SXmlType createExcIEEE1968Type1SXmlType(DStabGenDataXmlType gen) {
ExcIEEE1968Type1SXmlType exc = OdmObjFactory.createExcIEEE1968Type1SXmlType();
gen.setExciter(OdmObjFactory.createExcIEEE1968Type1S(exc));
return exc;
}
/**
* create Exc model record of type IEEE1968Type2
*
* @param gen
* @return
*/
public static ExcIEEE1968Type2XmlType createExcIEEE1968Type2XmlType(DStabGenDataXmlType gen) {
ExcIEEE1968Type2XmlType exc = OdmObjFactory.createExcIEEE1968Type2XmlType();
gen.setExciter(OdmObjFactory.createExcIEEE1968Type2(exc));
return exc;
}
/**
* create Exc model record of type IEEE1968Type4
*
* @param gen
* @return
*/
public static ExcIEEE1968Type4XmlType createExcIEEE1968Type4XmlType(DStabGenDataXmlType gen) {
ExcIEEE1968Type4XmlType exc = OdmObjFactory.createExcIEEE1968Type4XmlType();
gen.setExciter(OdmObjFactory.createExcIEEE1968Type4(exc));
return exc;
}
/**
* create Exc model record of type IEEE1968Type3
*
* @param gen
* @return
*/
public static ExcIEEE1968Type3XmlType createExcIEEE1968Type3XmlType(DStabGenDataXmlType gen) {
ExcIEEE1968Type3XmlType exc = OdmObjFactory.createExcIEEE1968Type3XmlType();
gen.setExciter(OdmObjFactory.createExcIEEE1968Type3(exc));
return exc;
}
/**
* create Exc model record of type TSATTypeEXC34
*
* @param gen
* @return
*/
public static ExcTSATTypeEXC34XmlType createExcTSATTypeEXC34XmlType(DStabGenDataXmlType gen) {
ExcTSATTypeEXC34XmlType exc = OdmObjFactory.createExcTSATTypeEXC34XmlType();
gen.setExciter(OdmObjFactory.createExcTSATTypeEXC34(exc));
return exc;
}
/**
* create Exc model record of type BPAEC
*
* @param gen
* @return
*/
public static ExcBPAECXmlType createExcBPAECXmlType(DStabGenDataXmlType gen) {
ExcBPAECXmlType exc = OdmObjFactory.createExcBPAECXmlType();
gen.setExciter(OdmObjFactory.createExcBPATypeEC(exc));
return exc;
}
/**
* create Exc model record of type BPAEk
*
* @param gen
* @return
*/
public static ExcBPAEKXmlType createExcBPAEKXmlType(DStabGenDataXmlType gen) {
ExcBPAEKXmlType exc = OdmObjFactory.createExcBPAEKXmlType();
gen.setExciter(OdmObjFactory.createExcBPATypeEK(exc));
return exc;
}
/**
* create Exc model record of type BPAFJ
*
* @param gen
* @return
*/
public static ExcBPAFJXmlType createExcBPAFJXmlType(DStabGenDataXmlType gen) {
ExcBPAFJXmlType exc = OdmObjFactory.createExcBPAFJXmlType();
gen.setExciter(OdmObjFactory.createExcBPATypeFJ(exc));
return exc;
}
/**
* create Exc model record of type BPAFk
*
* @param gen
* @return
*/
public static ExcBPAFKXmlType createExcBPAFKXmlType(
DStabGenDataXmlType gen) {
ExcBPAFKXmlType exc = OdmObjFactory.createExcBPAFKXmlType();
gen.setExciter(OdmObjFactory.createExcBPATypeFK(exc));
return exc;
}
/**
* create Exc model record of type BPAFQ
*
* @param gen
* @return
*/
public static ExcBPAFQXmlType createExcBPAFQXmlType(
DStabGenDataXmlType gen) {
ExcBPAFQXmlType exc = OdmObjFactory.createExcBPAFQXmlType();
gen.setExciter(OdmObjFactory.createExcBPATypeFQ(exc));
return exc;
}
/**
* create Exc model record of type BPAFR
*
* @param gen
* @return
*/
public static ExcBPAFRXmlType createExcBPAFRXmlType(
DStabGenDataXmlType gen) {
ExcBPAFRXmlType exc = OdmObjFactory.createExcBPAFRXmlType();
gen.setExciter(OdmObjFactory.createExcBPATypeFR(exc));
return exc;
}
/**
* create Exc model record of type BPAFS
*
* @param gen
* @return
*/
public static ExcBPAFSXmlType createExcBPAFSXmlType(
DStabGenDataXmlType gen) {
ExcBPAFSXmlType exc = OdmObjFactory.createExcBPAFSXmlType();
gen.setExciter(OdmObjFactory.createExcBPATypeFS(exc));
return exc;
}
/**
* create Exc model record of type BPAFU
*
* @param gen
* @return
*/
public static ExcBPAFUXmlType createExcBPAFUXmlType(
DStabGenDataXmlType gen) {
ExcBPAFUXmlType exc = OdmObjFactory.createExcBPAFUXmlType();
gen.setExciter(OdmObjFactory.createExcBPATypeFU(exc));
return exc;
}
/**
* create Exc model record of type BPAFV
*
* @param gen
* @return
*/
public static ExcBPAFVXmlType createExcBPAFVXmlType(
DStabGenDataXmlType gen) {
ExcBPAFVXmlType exc = OdmObjFactory.createExcBPAFVXmlType();
gen.setExciter(OdmObjFactory.createExcBPATypeFV(exc));
return exc;
}
/*
* Governor model creation functions
* =================================
*/
/**
* create Gov model record of type SimpleType
*
* @param gen
* @return
*/
public static GovSimpleTypeXmlType createGovSimpleTypeXmlType(DStabGenDataXmlType gen) {
GovSimpleTypeXmlType gov = OdmObjFactory.createGovSimpleTypeXmlType();
gen.setGovernor(OdmObjFactory.createGovSimpleType(gov));
return gov;
}
/**
* create Gov model record of type IEEE1981Type1
*
* @param gen
* @return
*/
public static GovIEEE1981Type1XmlType createGovIEEE1981Type1XmlType(DStabGenDataXmlType gen) {
GovIEEE1981Type1XmlType gov = OdmObjFactory.createGovIEEE1981Type1XmlType();
gen.setGovernor(OdmObjFactory.createGovIEEE1981Type1(gov));
return gov;
}
/**
* create Gov model record of type IEEE1981Type2
*
* @param gen
* @return
*/
public static GovIEEE1981Type2XmlType createGovIEEE1981Type2XmlType(DStabGenDataXmlType gen) {
GovIEEE1981Type2XmlType gov = OdmObjFactory.createGovIEEE1981Type2XmlType();
gen.setGovernor(OdmObjFactory.createGovIEEE1981Type2(gov));
return gov;
}
/**
* create Gov model record of type IEEE1981Type3
*
* @param gen
* @return
*/
public static GovIEEE1981Type3XmlType createGovIEEE1981Type3XmlType(DStabGenDataXmlType gen) {
GovIEEE1981Type3XmlType gov = OdmObjFactory.createGovIEEE1981Type3XmlType();
gen.setGovernor(OdmObjFactory.createGovIEEE1981Type3(gov));
return gov;
}
/**
* create Gov model record of type Hydro
*
* @param gen
* @return
*/
public static GovHydroXmlType createGovHydroXmlType(DStabGenDataXmlType gen) {
GovHydroXmlType gov = OdmObjFactory.createGovHydroXmlType();
gen.setGovernor(OdmObjFactory.createGovHydro(gov));
return gov;
}
/**
* create Gov model record of type HydroTurbine
*
* @param gen
* @return
*/
public static GovHydroTurbineXmlType createGovHydroTurbineXmlType(DStabGenDataXmlType gen) {
GovHydroTurbineXmlType gov = OdmObjFactory.createGovHydroTurbineXmlType();
gen.setGovernor(OdmObjFactory.createGovHydroTurbine(gov));
return gov;
}
/**
* create Gov model record of type HydroStreamGeneral
*
* @param gen
* @return
*/
public static GovHydroSteamGeneralModelXmlType createGovHydroSteamGeneralModelXmlType(DStabGenDataXmlType gen) {
GovHydroSteamGeneralModelXmlType gov = OdmObjFactory.createGovHydroSteamGeneralModelXmlType();
gen.setGovernor(OdmObjFactory.createGovHydroSteamGeneralModel(gov));
return gov;
}
/**
* create Gov model record of Stream speed Gov and Tandem compound,non-reheat(TCNR) turbine combo model
*
* @param gen
* @return
*/
public static GovSteamNRXmlType createGovSteamNRXmlType(DStabGenDataXmlType gen) {
GovSteamNRXmlType gov = OdmObjFactory.createGovSteamNRXmlType();
gen.setGovernor(OdmObjFactory.createGovSteamNR(gov));
return gov;
}
/**
* create Gov model record of of Stream speed Gov and Tandem compound,single-reheat (TCSR) turbine combo model
*
* @param gen
* @return
*/
public static GovSteamTCSRXmlType createGovSteamTCSRXmlType(DStabGenDataXmlType gen) {
GovSteamTCSRXmlType gov = OdmObjFactory.createGovSteamTCSRXmlType();
gen.setGovernor(OdmObjFactory.createGovSteamTCSR(gov));
return gov;
}
/**
* create Gov model record of of Stream speed Gov and Tandem compound,double-reheat(TCDR) turbine combo model
*
* @param gen
* @return
*/
public static GovSteamTCDRXmlType createGovSteamTCDRXmlType(DStabGenDataXmlType gen) {
GovSteamTCDRXmlType gov = OdmObjFactory.createGovSteamTCDRXmlType();
gen.setGovernor(OdmObjFactory.createGovSteamTCDR(gov));
return gov;
}
/* Stream turbine models: NR, TCSR,TCDR type
* ====================
*/
/**
* create Gov model record of type StreamTurbine
*
* @param gen
* @return
*/
public static SteamTurbineNRXmlType createSteamTurbineNRXmlType(DStabGenDataXmlType gen){
SteamTurbineNRXmlType stNR=OdmObjFactory.createSteamTurbineNRXmlType();
gen.getGovernor().getValue().setTurbine(OdmObjFactory.createTurbineSteamNR(stNR));
return stNR;
}
/**
* create Gov model record of type StreamTurbineTCSRR
*
* @param gen
* @return
*/
public static SteamTurbineTCSRXmlType createSteamTurbineTCSRRXmlType(DStabGenDataXmlType gen){
SteamTurbineTCSRXmlType stTCSR=OdmObjFactory.createSteamTurbineTCSRXmlType();
gen.getGovernor().getValue().setTurbine(OdmObjFactory.createTurbineSteamTCSR(stTCSR));
return stTCSR;
}
/**
* create Gov model record of type StreamTurbineTCDR
*
* @param gen
* @return
*/
public static SteamTurbineTCDRXmlType createSteamTurbineTCDRXmlType(DStabGenDataXmlType gen){
SteamTurbineTCDRXmlType stTCDR=OdmObjFactory.createSteamTurbineTCDRXmlType();
gen.getGovernor().getValue().setTurbine(OdmObjFactory.createTurbineSteamNR(stTCDR));
return stTCDR;
}
//****************************************************************************
// The following are PSSE Governor models, including speedGov and turbine
//*****************************************************************************
/**
* create the general-purpose turbine-governor model IEESGO, based on IEEE 1973 gov model
* @param gen
* @return
*/
public static GovPSSEIEESGOModelXmlType createGovPSSEIEESGOXmlType(DStabGenDataXmlType gen){
GovPSSEIEESGOModelXmlType ieeeSGO=OdmObjFactory.createGovPSSEIEESGOModelXmlType();
gen.setGovernor(OdmObjFactory.createGovPSSEIEESGO(ieeeSGO));
return ieeeSGO;
}
public static GovPSSETGOV1ModelXmlType createGovPSSETGOV1XmlType(DStabGenDataXmlType gen){
GovPSSETGOV1ModelXmlType tgov1=OdmObjFactory.createGovPSSETGOV1ModelXmlType();
gen.setGovernor(OdmObjFactory.createGovPSSETGOV1(tgov1));
return tgov1;
}
public static GovPSSEGASTModelXmlType createGovPSSEGASTXmlType(DStabGenDataXmlType gen){
GovPSSEGASTModelXmlType gast=OdmObjFactory.createGovPSSEGASTModelXmlType();
gen.setGovernor(OdmObjFactory.createGovPSSEGAST(gast));
return gast;
}
//****************************************************************************
// The following are BPA Governor models, including speedGov and turbine
//*****************************************************************************
//GH
/**
* create Gov model record of type BPAHydroTurbineGH
*
* @param gen
* @return
*/
public static GovBPAHydroTurbineGHXmlType createGovBPAHydroTurbineGHXmlType(
DStabGenDataXmlType gen) {
GovBPAHydroTurbineGHXmlType gov=OdmObjFactory.createGovBPAHydroTurbineGHXmlType();
gen.setGovernor(OdmObjFactory.createGovBPAHydroTurbineGHModel(gov));
return gov;
}
/**
* create Gov model record of type BPAGSModel
*
* @param gen
* @return
*/
public static SpeedGovBPAGSModelXmlType createSpeedGovBPAGSModelXmlType(
DStabGenDataXmlType gen) throws ODMException {
SpeedGovBPAGSModelXmlType spdgov=OdmObjFactory.createSpeedGovBPAGSModelXmlType();
if(gen.getGovernor()==null){
gen.setGovernor(OdmObjFactory.createGovBPAGsTbCombinedModel(
createGovBPAGsTbCombinedModelXmlType(gen)));
}
if(gen.getGovernor()!=null){
gen.getGovernor().getValue().setSpeedGov(OdmObjFactory.createSpeedGov(spdgov));
}
return spdgov;
}
// GI/I+ model is a regulator, part of a speed Governing model,
/**
* create Gov model record of type BPARegGIModel
*
* @param gen
* @return
*/
public static SpeedGovBPARegGIModelXmlType createSpeedGovBPARegGIModelXmlType(
DStabGenDataXmlType gen) throws ODMException {
SpeedGovBPARegGIModelXmlType regGi =OdmObjFactory.createSpeedGovBPARegGIModelXmlType();
// before linking a regulator to a gen, it need to be first connected to SpeedGov.
SpeedGovModelXmlType spdGov=null;
if(gen.getGovernor().getValue().getSpeedGov().getValue()!=null){
spdGov=gen.getGovernor().getValue().getSpeedGov().getValue();
if (spdGov instanceof SpeedGovBPAGiGaCombinedXmlType) {
SpeedGovBPAGiGaCombinedXmlType giGa = (SpeedGovBPAGiGaCombinedXmlType) spdGov;
giGa.setRegulator(regGi);
}
return regGi;
}
throw new ODMException("Error:SpeedGov not created yet!");
}
/**
* create Gov model record of type BPAGiGaCombined
*
* @param gen
* @return
*/
public static SpeedGovBPAGiGaCombinedXmlType createSpeedGovBPAGiGaCombinedXmlType(
DStabGenDataXmlType gen) {
SpeedGovBPAGiGaCombinedXmlType spdgov=OdmObjFactory.createSpeedGovBPAGiGaCombinedXmlType();
//create a governor when it is none in a generator;
gen.getGovernor().getValue().setSpeedGov(OdmObjFactory.createSpeedGov(spdgov));
return spdgov;
}
//GA model is a servo motor model, part of a speed Governing model.
/**
* create Gov model record of type BPAServoGAModel
*
* @param gen
* @return
*/
public static SpeedGovBPAServoGAModelXmlType createSpeedGovBPAServoGAModelXmlType(
DStabGenDataXmlType dynGen) throws ODMException {
SpeedGovBPAServoGAModelXmlType servoGa =OdmObjFactory.createSpeedGovBPAServoGAModelXmlType();
// before linking a servo to a gen, it need to be first connected to SpeedGov.
SpeedGovModelXmlType spdGov=null;
if(dynGen.getGovernor().getValue().getSpeedGov().getValue()!=null){
spdGov=dynGen.getGovernor().getValue().getSpeedGov().getValue();
if (spdGov instanceof SpeedGovBPAGiGaCombinedXmlType) {
SpeedGovBPAGiGaCombinedXmlType giGa = (SpeedGovBPAGiGaCombinedXmlType) spdGov;
giGa.setServo(servoGa);
}
return servoGa;
}
throw new ODMException("SpeedGov not created yet!");
}
/**
* create Gov model record of type BPATBModel
*
* @param gen
* @return
*/
public static SteamTurbineBPATBModelXmlType createSteamTurbineBPATBModelXmlType(
DStabGenDataXmlType gen) {
SteamTurbineBPATBModelXmlType tur=OdmObjFactory.createSteamTurbineBPATBModelXmlType();
//create a governor when it is none in a generator;
//if(gen.getGovernor()==null)gen.setGovernor(odmObjFactory.createGovernorModelXmlType());
gen.getGovernor().getValue().setTurbine(OdmObjFactory.createTurbine(tur));
return tur;
}
//GS+TB
/**
* create Gov model record of type BPAGsTbCombinedModel
*
* @param gen
* @return
*/
public static GovBPAGsTbCombinedModelXmlType createGovBPAGsTbCombinedModelXmlType(
DStabGenDataXmlType gen) {
GovBPAGsTbCombinedModelXmlType gov=OdmObjFactory.createGovBPAGsTbCombinedModelXmlType();
gen.setGovernor(OdmObjFactory.createGovBPAGsTbCombinedModel(gov));
return gov;
}
//GI+GA+TB
/**
* create Gov model record of type BPAGiGaCombinedModel
*
* @param gen
* @return
*/
public static GovBPAGiGaTbCombinedModelXmlType createGovBPAGiGaTbCombinedModelXmlType(
DStabGenDataXmlType gen) {
GovBPAGiGaTbCombinedModelXmlType gov=OdmObjFactory.createGovBPAGiGaTbCombinedModelXmlType();
gen.setGovernor(OdmObjFactory.createGovBPAGiGaTbCombinedModel(gov));
return gov;
}
/*
* PSS model creation functions
* ============================
*/
/**
* create PSS model record of type SimpleType
*
* @param gen
* @return
*/
public static PssSimpleTypeXmlType createPssSimpleTypeXmlType(DStabGenDataXmlType gen) {
PssSimpleTypeXmlType pss = OdmObjFactory.createPssSimpleTypeXmlType();
gen.setStabilizer(OdmObjFactory.createPssSimpleType(pss));
return pss;
}
/**
* create PSS model record of type IEEE1981Type
*
* @param gen
* @return
*/
public static PssIEEE1981TypeXmlType createPssIEEE1981TypeXmlType(DStabGenDataXmlType gen) {
PssIEEE1981TypeXmlType pss = OdmObjFactory.createPssIEEE1981TypeXmlType();
gen.setStabilizer(OdmObjFactory.createPssIEEE1981Type(pss));
return pss;
}
/**
* create PSS model record of type IEEE1992Type
*
* @param gen
* @return
*/
public static PssIEEE1992Type2AXmlType createPssIEEE1992Type2AXmlType(DStabGenDataXmlType gen) {
PssIEEE1992Type2AXmlType pss = OdmObjFactory.createPssIEEE1992Type2AXmlType();
gen.setStabilizer(OdmObjFactory.createPssIEEE1992Type2A(pss));
return pss;
}
/**
* create PSS model record of type IEEE1A
*
* @param gen
* @return
*/
public static PssIEEE1AXmlType createPssIEEE1AXmlType(DStabGenDataXmlType gen) {
PssIEEE1AXmlType pss = OdmObjFactory.createPssIEEE1AXmlType();
gen.setStabilizer(OdmObjFactory.createPssIEEEType1A(pss));
return pss;
}
/**
* create PSS model record of type IEEE2ST
*
* @param gen
* @return
*/
public static PssIEE2STXmlType createPssIEE2STXmlType(DStabGenDataXmlType gen) {
PssIEE2STXmlType pss = OdmObjFactory.createPssIEE2STXmlType();
gen.setStabilizer(OdmObjFactory.createPssIEE2ST(pss));
return pss;
}
/**
* create PSS model record of type IEEEDualInput
*
* @param gen
* @return
*/
public static PssIEEEDualInputXmlType createPssIEEEDualInputXmlType(DStabGenDataXmlType gen) {
PssIEEEDualInputXmlType pss = OdmObjFactory.createPssIEEEDualInputXmlType();
gen.setStabilizer(OdmObjFactory.createPssIEEEDualInput(pss));
return pss;
}
/**
* create PSS model record of type BPADualInput
*
* @param gen
* @return
*/
public static PssBPADualInputXmlType createPssBPADualInputXmlType(DStabGenDataXmlType gen) {
PssBPADualInputXmlType pss = OdmObjFactory.createPssBPADualInputXmlType();
gen.setStabilizer(OdmObjFactory.createPssBPADualInput(pss));
return pss;
}
/**
* create PSS model record of type BPASs
*
* @param gen
* @return
*/
public static PssBpaSsTypeXmlType createPssBPASsXmlType(DStabGenDataXmlType gen) {
PssBpaSsTypeXmlType pss = OdmObjFactory.createPssBpaSsTypeXmlType();
gen.setStabilizer(OdmObjFactory.createPssBPASs(pss));
return pss;
}
/**
* create PSS model record of type BPASg
*
* @param gen
* @return
*/
public static PssBpaSgTypeXmlType createPssBPASgXmlType(DStabGenDataXmlType gen) {
PssBpaSgTypeXmlType pss = OdmObjFactory.createPssBpaSgTypeXmlType();
gen.setStabilizer(OdmObjFactory.createPssBPASg(pss));
return pss;
}
/**
* create PSS model record of type BPASp
*
* @param gen
* @return
*/
public static PssBpaSpTypeXmlType createPssBPASpXmlType(DStabGenDataXmlType gen) {
PssBpaSpTypeXmlType pss = OdmObjFactory.createPssBpaSpTypeXmlType();
gen.setStabilizer(OdmObjFactory.createPssBPASp(pss));
return pss;
}
}