Class SteamTurbine
- All Implemented Interfaces:
Serializable, Runnable, AutoSizeable, CapacityConstrainedEquipment, ProcessEquipmentInterface, TwoPortInterface, ProcessElementInterface, SimulationInterface, NamedInterface
Models isentropic expansion with a specified efficiency. The outlet stream conditions are computed by performing an isentropic flash at the outlet pressure, then applying the isentropic efficiency to determine the actual outlet enthalpy. Power output is the difference in specific enthalpy multiplied by the mass flow rate.
Typical usage in a combined-cycle or waste-heat recovery system:
Stream steam = new Stream("HP steam", steamFluid);
SteamTurbine turbine = new SteamTurbine("ST-100", steam);
turbine.setOutletPressure(0.05, "bara");
turbine.setIsentropicEfficiency(0.85);
turbine.run();
double power_kW = turbine.getPower("kW");
- Version:
- 1.0
- Author:
- Even Solbraa
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanWhether this equipment has been auto-sized.private final Map<String, CapacityConstraint> Storage for capacity constraints.private doubleprivate static final org.apache.logging.log4j.LoggerLogger object for class.private intprivate doubleprivate doubleprivate doubleRated (maximum) power output in Watts.private static final longSerialization version UID.Fields inherited from class TwoPortEquipment
inStream, outStreamFields inherited from class ProcessEquipmentBaseClass
conditionAnalysisMessage, energyStream, hasController, isSolved, properties, reportFields inherited from class SimulationBaseClass
calcIdentifier, calculateSteadyState, timeFields inherited from class NamedBaseClass
name -
Constructor Summary
ConstructorsConstructorDescriptionSteamTurbine(String name) Constructor for SteamTurbine.SteamTurbine(String name, StreamInterface inletStream) Constructor for SteamTurbine with inlet stream. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddCapacityConstraint(CapacityConstraint constraint) Adds a capacity constraint to this equipment.voidautoSize(double safetyFactor) Automatically size the equipment based on connected stream conditions.voidClears all capacity constraints from this equipment.Gets the bottleneck (most limiting) constraint for this equipment.Gets all capacity constraints defined for this equipment.doublegetCapacityDuty.doublegetCapacityMax.doubleGet isentropic efficiency.doubleGets the maximum utilization across all enabled constraints.intGet the number of turbine stages.doublegetPower()Get power output of the steam turbine.doubleGet power output of the steam turbine in specified unit.doubleGet the rated (maximum) power output.doublegetRatedPower(String unit) Get the rated (maximum) power output in specified unit.Get a detailed sizing report after auto-sizing.private voidInitialize capacity constraints for the steam turbine.booleanCheck if equipment has been auto-sized.booleanChecks if any capacity constraint is violated (exceeds 100% utilization).booleanChecks if any HARD constraint limit is exceeded.booleanremoveCapacityConstraint(String constraintName) Removes a capacity constraint by name.voidIn this method all thermodynamic and unit operations will be calculated in a steady state calculation.voidsetIsentropicEfficiency(double efficiency) Set isentropic efficiency.voidsetNumberOfStages(int numberOfStages) Set the number of turbine stages.voidsetOutletPressure(double pressure) Set outlet pressure.voidsetOutletPressure(double pressure, String unit) Set outlet pressure with unit.voidsetRatedPower(double ratedPower) Set the rated (maximum) power output.voidsetRatedPower(double ratedPower, String unit) Set the rated (maximum) power output with unit.Methods inherited from class TwoPortEquipment
getInletPressure, getInletStream, getInletStreams, getInletTemperature, getMassBalance, getOutletPressure, getOutletStream, getOutletStreams, getOutletTemperature, setInletPressure, setInletStream, setInletTemperature, setOutletStream, setOutletTemperature, setOutletTemperature, toJson, toJson, validateSetupMethods inherited from class ProcessEquipmentBaseClass
addController, copy, displayResult, equals, getAvailableMargin, getAvailableMarginPercent, getConditionAnalysisMessage, getConstraintEvaluationReport, getController, getController, getControllers, getEffectiveCapacityFactor, getEnergyStream, getEntropyProduction, getExergyChange, getFailureMode, getMassBalance, getMaxUtilizationPercent, getMechanicalDesign, getMinimumFlow, getPressure, getPressure, getProperty, getReferenceDesignation, getReport_json, getResultTable, getSpecification, getTemperature, getTemperature, getThermoSystem, getUtilizationSummary, hashCode, initElectricalDesign, initializeDefaultConstraints, initInstrumentDesign, initMechanicalDesign, isActive, isActive, isCapacityAnalysisEnabled, isFailed, isNearCapacityLimit, isSetEnergyStream, reportResults, restoreFromFailure, run_step, runConditionAnalysis, setCapacityAnalysisEnabled, setController, setEnergyStream, setEnergyStream, setFailureMode, setFlowValveController, setMinimumFlow, setPressure, setReferenceDesignation, setRegulatorOutSignal, setSpecification, setTemperature, simulateDegradedOperation, simulateTrip, solvedMethods inherited from class SimulationBaseClass
getCalculateSteadyState, getCalculationIdentifier, getTime, increaseTime, isRunInSteps, setCalculateSteadyState, setCalculationIdentifier, setRunInSteps, setTimeMethods inherited from class NamedBaseClass
getName, getTagNumber, setName, setTagNumberMethods inherited from class Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface AutoSizeable
autoSize, autoSize, getSizingReportJsonMethods inherited from interface CapacityConstrainedEquipment
disableAllConstraints, enableAllConstraints, getAvailableMargin, getAvailableMarginPercent, getMaxUtilizationPercent, getUtilizationSummary, isCapacityAnalysisEnabled, isNearCapacityLimit, setCapacityAnalysisEnabledMethods inherited from interface NamedInterface
getName, getTagName, getTagNumber, setName, setTagName, setTagNumberMethods inherited from interface ProcessEquipmentInterface
getElectricalDesign, getEquipmentState, getExergyChange, getExergyDestruction, getExergyDestruction, getFluid, getInstrumentDesign, getOperatingEnvelopeViolation, getOutletFlowRate, getOutletPressure, getOutletTemperature, getReferenceDesignationString, getRestCapacity, getSimulationValidationErrors, isSimulationValid, isWithinOperatingEnvelope, needRecalculationMethods inherited from interface SimulationInterface
getCalculateSteadyState, getCalculationIdentifier, getTime, increaseTime, isRunInSteps, run, run_step, runTransient, runTransient, setCalculateSteadyState, setCalculationIdentifier, setRunInSteps, setTimeMethods inherited from interface TwoPortInterface
getInStream, getOutStream, setOutPressure, setOutPressure, setOutTemperature, setOutTemperature
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
logger
private static final org.apache.logging.log4j.Logger loggerLogger object for class. -
isentropicEfficiency
private double isentropicEfficiency -
outletPressure
private double outletPressure -
power
private double power -
numberOfStages
private int numberOfStages -
ratedPowerW
private double ratedPowerWRated (maximum) power output in Watts. Used for capacity constraint calculations. -
autoSized
private boolean autoSizedWhether this equipment has been auto-sized. -
capacityConstraints
Storage for capacity constraints.
-
-
Constructor Details
-
SteamTurbine
-
SteamTurbine
Constructor for SteamTurbine with inlet stream.- Parameters:
name- equipment nameinletStream- inlet steam stream
-
-
Method Details
-
run
In this method all thermodynamic and unit operations will be calculated in a steady state calculation.
- Specified by:
runin interfaceSimulationInterface- Parameters:
id- UUID
-
getPower
public double getPower()Get power output of the steam turbine.- Returns:
- power output in Watts (positive = power produced)
-
getPower
Get power output of the steam turbine in specified unit.- Parameters:
unit- power unit ("W", "kW", "MW", "hp")- Returns:
- power output in specified unit
-
setOutletPressure
public void setOutletPressure(double pressure) Set outlet pressure.- Specified by:
setOutletPressurein interfaceTwoPortInterface- Overrides:
setOutletPressurein classTwoPortEquipment- Parameters:
pressure- outlet pressure in bara
-
setOutletPressure
Set outlet pressure with unit.- Specified by:
setOutletPressurein interfaceTwoPortInterface- Overrides:
setOutletPressurein classTwoPortEquipment- Parameters:
pressure- outlet pressureunit- pressure unit ("bara", "barg", "psi")
-
getIsentropicEfficiency
public double getIsentropicEfficiency()Get isentropic efficiency.- Returns:
- isentropic efficiency (0 to 1)
-
setIsentropicEfficiency
public void setIsentropicEfficiency(double efficiency) Set isentropic efficiency.- Parameters:
efficiency- isentropic efficiency (0 to 1)
-
getNumberOfStages
public int getNumberOfStages()Get the number of turbine stages.- Returns:
- number of stages
-
setNumberOfStages
public void setNumberOfStages(int numberOfStages) Set the number of turbine stages.- Parameters:
numberOfStages- number of stages
-
getRatedPower
public double getRatedPower()Get the rated (maximum) power output.- Returns:
- rated power in Watts
-
getRatedPower
Get the rated (maximum) power output in specified unit.- Parameters:
unit- power unit ("W", "kW", "MW", "hp")- Returns:
- rated power in specified unit
-
setRatedPower
public void setRatedPower(double ratedPower) Set the rated (maximum) power output.- Parameters:
ratedPower- rated power in Watts
-
setRatedPower
Set the rated (maximum) power output with unit.- Parameters:
ratedPower- rated power valueunit- power unit ("W", "kW", "MW", "hp")
-
getCapacityDuty
public double getCapacityDuty()getCapacityDuty.
- Specified by:
getCapacityDutyin interfaceProcessEquipmentInterface- Returns:
- a double
-
getCapacityMax
public double getCapacityMax()getCapacityMax.
- Specified by:
getCapacityMaxin interfaceProcessEquipmentInterface- Returns:
- a double
-
initializeCapacityConstraints
private void initializeCapacityConstraints()Initialize capacity constraints for the steam turbine. -
getCapacityConstraints
Gets all capacity constraints defined for this equipment.Returns an unmodifiable map of constraint name to constraint object. Constraints are used by the optimization framework to detect bottlenecks, enforce limits, and guide production allocation. Equipment subclasses populate this map via
ProcessEquipmentInterface.addCapacityConstraint(CapacityConstraint).- Specified by:
getCapacityConstraintsin interfaceCapacityConstrainedEquipment- Specified by:
getCapacityConstraintsin interfaceProcessEquipmentInterface- Overrides:
getCapacityConstraintsin classProcessEquipmentBaseClass- Returns:
- unmodifiable map of constraint name to constraint, empty if none defined
-
getBottleneckConstraint
Gets the bottleneck (most limiting) constraint for this equipment.Returns the enabled constraint with the highest utilization ratio. If no constraints are defined or enabled, returns null.
- Specified by:
getBottleneckConstraintin interfaceCapacityConstrainedEquipment- Specified by:
getBottleneckConstraintin interfaceProcessEquipmentInterface- Overrides:
getBottleneckConstraintin classProcessEquipmentBaseClass- Returns:
- the most limiting constraint, or null if none
-
isCapacityExceeded
public boolean isCapacityExceeded()Checks if any capacity constraint is violated (exceeds 100% utilization).A violated constraint means the equipment is operating beyond its design capacity. For HARD constraints, this may indicate equipment trip or failure. For SOFT constraints, this indicates reduced efficiency or accelerated wear.
- Specified by:
isCapacityExceededin interfaceCapacityConstrainedEquipment- Specified by:
isCapacityExceededin interfaceProcessEquipmentInterface- Overrides:
isCapacityExceededin classProcessEquipmentBaseClass- Returns:
- true if any enabled constraint utilization exceeds 1.0 (100%)
-
isHardLimitExceeded
public boolean isHardLimitExceeded()Checks if any HARD constraint limit is exceeded.HARD limits represent absolute equipment limits (e.g., maximum speed) that cannot be exceeded without equipment trip or damage. This is more severe than general capacity exceedance.
- Specified by:
isHardLimitExceededin interfaceCapacityConstrainedEquipment- Specified by:
isHardLimitExceededin interfaceProcessEquipmentInterface- Overrides:
isHardLimitExceededin classProcessEquipmentBaseClass- Returns:
- true if any enabled HARD constraint's max value is exceeded
-
getMaxUtilization
public double getMaxUtilization()Gets the maximum utilization across all enabled constraints.Returns the highest utilization ratio across all enabled constraints. Values above 1.0 indicate the equipment is over capacity. Returns 0.0 if no constraints are defined or enabled.
- Specified by:
getMaxUtilizationin interfaceCapacityConstrainedEquipment- Specified by:
getMaxUtilizationin interfaceProcessEquipmentInterface- Overrides:
getMaxUtilizationin classProcessEquipmentBaseClass- Returns:
- maximum utilization as fraction (1.0 = 100% of design capacity)
-
addCapacityConstraint
Adds a capacity constraint to this equipment.Constraints can be added at any time. If a constraint with the same name already exists, it is replaced. Use the fluent builder API on
CapacityConstraintto configure the constraint before adding.- Specified by:
addCapacityConstraintin interfaceCapacityConstrainedEquipment- Specified by:
addCapacityConstraintin interfaceProcessEquipmentInterface- Overrides:
addCapacityConstraintin classProcessEquipmentBaseClass- Parameters:
constraint- the capacity constraint to add (ignored if null)
-
removeCapacityConstraint
Removes a capacity constraint by name.- Specified by:
removeCapacityConstraintin interfaceCapacityConstrainedEquipment- Parameters:
constraintName- the name of the constraint to remove- Returns:
- true if the constraint was found and removed
-
clearCapacityConstraints
public void clearCapacityConstraints()Clears all capacity constraints from this equipment.- Specified by:
clearCapacityConstraintsin interfaceCapacityConstrainedEquipment
-
autoSize
public void autoSize(double safetyFactor) Automatically size the equipment based on connected stream conditions.This method calculates dimensions and design parameters using the inlet stream properties and applies the specified safety factor. The equipment must have a valid inlet stream connected before calling this method.
- Specified by:
autoSizein interfaceAutoSizeable- Parameters:
safetyFactor- multiplier for design capacity, typically 1.1-1.3 (10-30% over design)
-
getSizingReport
Get a detailed sizing report after auto-sizing.The report includes:
- Design basis (flow rates, pressures, temperatures)
- Calculated dimensions
- Design parameters (K-factor, Cv, velocity, etc.)
- Safety margins
- Specified by:
getSizingReportin interfaceAutoSizeable- Returns:
- formatted sizing report string
-
isAutoSized
public boolean isAutoSized()Check if equipment has been auto-sized.- Specified by:
isAutoSizedin interfaceAutoSizeable- Returns:
- true if autoSize() has been called successfully
-