Package hec.rss.model

Class PowerPlant

All Implemented Interfaces:
AsciiSerializable, FieldAccessor, AltInputReportInfc, RssModelVariableConstants, Serializable, Cloneable, Comparable, Observer, rma.lang.Modifiable
Direct Known Subclasses:
ReversiblePlant

public class PowerPlant extends NamedType implements RssModelVariableConstants, AltInputReportInfc
Title: HEC JavaDev Description: Copyright: Company: RMA
See Also:
  • Field Details

  • Constructor Details

    • PowerPlant

      public PowerPlant()
    • PowerPlant

      public PowerPlant(AdjustableFlow af)
  • Method Details

    • getOutputBPart

      protected String getOutputBPart()
    • setupForSerialization

      public void setupForSerialization()
    • initialize

      public boolean initialize()
    • computePower

      public double computePower(RunTimeStep runtime, double poolElev, double outflow)
      Computes power generation for the given time step, pool elevation, and power outlet flow. Also saves data to output arrays. Called during computeForecastStep and computeHincastStep from parent AdjustableFlow element.
      Parameters:
      runtime - step
      poolElev -
      outflow -
      Returns:
      power generation in MW
    • calculatePower

      public double calculatePower(double pwrplantQ, double poolElev, double tailwaterElev)
      Generalized power computation for given flow, reservoir pool elevation and tailwater elevation. Power capacity will not be greater than max capacity. Calculated values are not saved to output arrays.
      Parameters:
      poolElev -
      tailwater - elevation
      power - outlet flow
      Returns:
      power generation in MW
    • calculatePower

      public double calculatePower(double pwrplantQ, double poolElev, double tailwaterElev, boolean clipAtMaxCap)
      Generalized power computation for given flow, reservoir pool elevation and tailwater elevation. Power capacity will not be greater than max capacity if clipAtMaxCap flag is true. Calculated values are not saved to output arrays.
      Parameters:
      poolElev -
      tailwater - elevation
      power - outlet flow
      Returns:
      power generation in MW
    • powerEquation

      public static double powerEquation(double flow, double head, double eff)
      Compute power in MW from flow, head, and efficiency. Input units depended on global unit system setting
      Parameters:
      flow - (cfs or cms)
      head - (ft or m)
      eff - (fraction, 0-1.0)
      Returns:
    • calculateAvailablePowerCapacity

      public double calculateAvailablePowerCapacity(double poolElev, double tailwaterElev)
      Calculate available power generation capacity given reservoir pool elevation, tailwater elevation and penstock flow capacity
    • getRequiredRelease

      public double getRequiredRelease(double reqPower, double poolElev, double tailwaterElev)
      Calculate the power plant release needed to meet the generation requirement for the given reservoir elevation and head. Will return the release that generates maximum power if requirement cannot be met.
      Parameters:
      required - power generation (MW)
      pool - elevation
      tailwater - elevation
      Returns:
      required release
    • getRequiredReleaseOld

      public double getRequiredReleaseOld(double powerCapacity, double poolElev, double tailwaterElev)
      Compute release required for given power capacity. powerCapacity in MW
    • calcRelForMinEff

      public double calcRelForMinEff(double efficiency, double poolElev, double pwrplantHead, double release)
      This method calculates and adjusted release if the minimum efficiency restriction is imposed for this power plant.
      Parameters:
      efficiency - , initial efficiency for the given parameters
      poolElev -
      pwrplantHead -
      release -
      Returns:
      the adjusted release
    • getCapacityMethod

      public int getCapacityMethod()
    • setCapacityMethod

      public void setCapacityMethod(int m)
    • getEfficiencyMethod

      public int getEfficiencyMethod()
    • setEfficiencyMethod

      public void setEfficiencyMethod(int m)
    • getStationUseMethod

      public int getStationUseMethod()
    • setStationUseMethod

      public void setStationUseMethod(int m)
    • getHydLossMethod

      public int getHydLossMethod()
    • setHydLossMethod

      public void setHydLossMethod(int m)
    • calcEfficiency

      public double calcEfficiency(double elev, double head, double flow)
      Calculate the power plant efficiency for the given parameters. The calculation method is determined by the _efficiencyMethod data member.
      Parameters:
      elev -
      head -
      flow -
      Returns:
      efficiency as a fraction (0 to 1.0)
    • calcMaxCapability

      public double calcMaxCapability(double elev, double head, double initMinFlow, double initMaxFlow)
      Calculate the power plant generation capability for the given reservoir elevation and head. Capability if the maximum generation that could be achieved for the current condition with optimum release through the power plant.
      Parameters:
      elev -
      head -
      initFlow - , starting flow value for search
      Returns:
      power generation
    • getCapacity

      public double getCapacity(double elev, double head, double flow)
      get capacity by method. Either constant or variable capacity by elevation, storage, head or release
      Parameters:
      elev -
      head - after any hydraulic losses
      flow - after any station use
      Returns:
    • findTailwaterElevation

      public TailwaterElevation findTailwaterElevation()
    • getTailwaterElevation

      public double getTailwaterElevation(RunTimeStep runtime)
      Get the associated tailwater elevation for the power plant Use current runtime step if data is available, else use BOP value.
      Parameters:
      runtime -
      Returns:
    • getAssociatedTailwater

      public TailwaterElevation getAssociatedTailwater()
    • getPoolElevation

      public double getPoolElevation(RunTimeStep runtime)
      Get the associated pool elevation for the power plant Use current runtime step if data is available, else use BOP value. Average EOP and BOP for period average run.
      Parameters:
      runtime -
      Returns:
    • findStorage

      public Storage findStorage()
      Find storage element. Needed if capacity is a function of storage.
      Returns:
    • getStationUseByRelease

      public PairedValues getStationUseByRelease()
    • setStationUseByRelease

      public void setStationUseByRelease(PairedValues rc)
    • getHydLossByRelease

      public PairedValues getHydLossByRelease()
    • setHydLossByRelease

      public void setHydLossByRelease(PairedValues rc)
    • getEfficiencyByElev

      public PairedValues getEfficiencyByElev()
    • setEfficiencyByElev

      public void setEfficiencyByElev(PairedValues rc)
    • getEfficiencyByRelease

      public PairedValues getEfficiencyByRelease()
    • setEfficiencyByRelease

      public void setEfficiencyByRelease(PairedValues rc)
    • getEfficiencyByOpHead

      public PairedValues getEfficiencyByOpHead()
    • setEfficiencyByOpHead

      public void setEfficiencyByOpHead(PairedValues rc)
    • getConstHydLoss

      public void getConstHydLoss(hec.data.ParamDouble d)
    • setConstHydLoss

      public void setConstHydLoss(hec.data.ParamDouble d)
    • getConstStationUse

      public void getConstStationUse(hec.data.ParamDouble d)
    • setConstStationUse

      public void setConstStationUse(hec.data.ParamDouble d)
    • getConstEfficiency

      public double getConstEfficiency()
    • setConstEfficiency

      public void setConstEfficiency(double d)
    • getOverload

      public double getOverload()
    • setOverload

      public void setOverload(double d)
    • getCapacity

      public double getCapacity()
    • setCapacity

      public void setCapacity(double d)
    • getConstCapacity

      public double getConstCapacity()
    • setConstCapacity

      public void setConstCapacity(double d)
    • getRestrictMinimum

      public double getRestrictMinimum()
      Operating Limits Getters and Setters
    • setRestrictMinimum

      public void setRestrictMinimum(double restrictMinimum)
    • getEfficiencyRelease

      public double getEfficiencyRelease()
    • setEfficiencyRelease

      public void setEfficiencyRelease(double efficiencyRelease)
    • getRestrictMaximum

      public double getRestrictMaximum()
    • setRestrictMaximum

      public void setRestrictMaximum(double restrictMaximum)
    • isRestrictMinimum

      public boolean isRestrictMinimum()
    • setIsRestrictMinimum

      public void setIsRestrictMinimum(boolean isRestrictMinimum)
    • isEfficiencyRelease

      public boolean isEfficiencyRelease()
    • setIsEfficiencyRelease

      public void setIsEfficiencyRelease(boolean isEfficiencyRelease)
    • isRestrictMaximum

      public boolean isRestrictMaximum()
    • setIsRestrictMaximum

      public void setIsRestrictMaximum(boolean isRestrictMaximum)
    • getCapacityByElev

      public PairedValues getCapacityByElev()
      End of Operating Limits Getters and Setters
    • setCapacityByElev

      public void setCapacityByElev(PairedValues rc)
    • getCapacityByStorage

      public PairedValues getCapacityByStorage()
    • setCapacityByStorage

      public void setCapacityByStorage(PairedValues rc)
    • getCapacityByRelease

      public PairedValues getCapacityByRelease()
    • setCapacityByRelease

      public void setCapacityByRelease(PairedValues rc)
    • getCapacityByOpHead

      public PairedValues getCapacityByOpHead()
    • setCapacityByOpHead

      public void setCapacityByOpHead(PairedValues rc)
    • getEfficientByHillCurve

      public PairedValuesExt getEfficientByHillCurve()
    • setEfficientByHillCurve

      public void setEfficientByHillCurve(PairedValuesExt efficientByHillCurve)
    • getEfficiencyHillCurveTurbineInflows

      public double[] getEfficiencyHillCurveTurbineInflows()
    • setEfficiencyHillCurveTurbineInflows

      public void setEfficiencyHillCurveTurbineInflows(double[] efficiencyHillCurveTurbineInflows)
    • getAdjustableFlow

      public AdjustableFlow getAdjustableFlow()
    • setAdjustableFlow

      public void setAdjustableFlow(AdjustableFlow af)
    • canCompute

      public boolean canCompute()
      Check that sufficient parameters set to perform compute
      Returns:
    • getInstalledCapacity

      public double getInstalledCapacity()
    • getMaxCapacity

      public double getMaxCapacity(RunTimeStep runtime, double poolElev)
    • getMaxCapacity

      public double getMaxCapacity(double poolElev, double twElev)
      Get power capacity from constant value or compute max capacity for reservoir elevation.
      Parameters:
      poolElev -
      twElev -
      Returns:
    • clone

      public Object clone()
      clone method
      Overrides:
      clone in class NamedType
    • getActiveTSRecordProxies

      public void getActiveTSRecordProxies(Vector vec, int iotype)
      add the time series record proxies associated current compute
    • updateTSProxyList

      public void updateTSProxyList()
      Regenerates the list of all TSProxies required for this location. This list includes all records that are generated by this function even if the records are held in another objects (e.g. RssNode) proxy list
    • getFieldObject

      public Object getFieldObject(Field fld)
      Description copied from interface: FieldAccessor
      This method allows access to java.lang.reflect.Field objects within the implementing class.
      Specified by:
      getFieldObject in interface FieldAccessor
      Overrides:
      getFieldObject in class NamedType
      Parameters:
      fld - The field to get.
      Returns:
      The data object that is stored in the given field
    • setFieldObject

      public boolean setFieldObject(Field fld, Object fobj)
      Description copied from interface: FieldAccessor
      This allows access to fields withing the implementing object to set there data.
      Specified by:
      setFieldObject in interface FieldAccessor
      Overrides:
      setFieldObject in class NamedType
      Parameters:
      fld - The java field object representing the member field to be set
      fobj - The data to set in that field
      Returns:
      returns true if successful
    • outputReport

      public void outputReport(AlternativeInputReport report, org.jdom.Element elem)
      Description copied from interface: AltInputReportInfc
      Alternative Input Report Interface for data.
      Specified by:
      outputReport in interface AltInputReportInfc