Class CombinedCycleSystem
- All Implemented Interfaces:
Serializable, Runnable, AutoSizeable, CapacityConstrainedEquipment, ProcessEquipmentInterface, TwoPortInterface, ProcessElementInterface, SimulationInterface, NamedInterface
Models a gas turbine combined cycle (GTCC) where:
- Fuel gas is burned in a gas turbine to produce power and hot exhaust
- Hot exhaust flows through an HRSG to generate steam
- Steam expands through a steam turbine for additional power
The overall thermal efficiency is typically 50-62% for modern combined-cycle plants, compared to 30-40% for simple-cycle gas turbines.
CombinedCycleSystem cc = new CombinedCycleSystem("CC-1", fuelGasStream);
cc.setCombustionPressure(15.0);
cc.setGasTurbineEfficiency(0.35);
cc.setSteamPressure(40.0);
cc.setSteamTemperature(400.0, "C");
cc.setSteamTurbineEfficiency(0.85);
cc.run();
double totalPower = cc.getTotalPower("MW");
double efficiency = cc.getOverallEfficiency();
- 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 doubleprivate GasTurbineprivate doubleprivate HRSGprivate doubleprivate doubleprivate static final org.apache.logging.log4j.LoggerLogger object for class.private doubleprivate doubleRated (maximum) total power output in Watts.private static final longSerialization version UID.private doubleprivate doubleprivate doubleprivate SteamTurbineprivate doubleprivate doubleprivate doubleFields 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
ConstructorsConstructorDescriptionCombinedCycleSystem(String name) Constructor for CombinedCycleSystem.CombinedCycleSystem(String name, StreamInterface fuelGasInlet) Constructor for CombinedCycleSystem with fuel gas inlet. -
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 fuel energy input (LHV basis).doubleGet gas turbine power output.doubleGets the maximum utilization across all enabled constraints.doubleGet overall combined-cycle thermal efficiency (LHV basis).doubleGet the rated (maximum) total power output.doublegetRatedTotalPower(String unit) Get the rated (maximum) total power output in specified unit.Get a detailed sizing report after auto-sizing.doubleGet steam turbine power output.doubleGet total combined-cycle power output.doublegetTotalPower(String unit) Get total combined-cycle power output in specified unit.private voidInitialize capacity constraints for the combined-cycle system.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.voidsetCombustionPressure(double pressure) Set combustion pressure for the gas turbine.voidsetGasTurbineEfficiency(double efficiency) Set gas turbine isentropic efficiency.voidsetHrsgApproachTemperature(double approachTemp) Set HRSG approach temperature.voidsetHrsgEffectiveness(double effectiveness) Set HRSG heat transfer effectiveness.voidsetRatedTotalPower(double ratedPower) Set the rated (maximum) total power output.voidsetRatedTotalPower(double ratedPower, String unit) Set the rated (maximum) total power output with unit.voidsetSteamCondensorPressure(double pressure) Set steam condensor pressure.voidsetSteamPressure(double pressure) Set steam pressure for the HRSG/steam cycle.voidsetSteamTemperature(double temperature) Set steam temperature for the HRSG outlet.voidsetSteamTemperature(double temperature, String unit) Set steam temperature with unit.voidsetSteamTurbineEfficiency(double efficiency) Set steam turbine isentropic efficiency.toJson()Get results as JSON string.Methods inherited from class TwoPortEquipment
getInletPressure, getInletStream, getInletStreams, getInletTemperature, getMassBalance, getOutletPressure, getOutletStream, getOutletStreams, getOutletTemperature, setInletPressure, setInletStream, setInletTemperature, setOutletPressure, setOutletPressure, setOutletStream, setOutletTemperature, setOutletTemperature, 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. -
gasTurbine
-
hrsg
-
steamTurbine
-
combustionPressure
private double combustionPressure -
steamPressure
private double steamPressure -
steamTemperature
private double steamTemperature -
hrsgApproachTemperature
private double hrsgApproachTemperature -
hrsgEffectiveness
private double hrsgEffectiveness -
steamTurbineEfficiency
private double steamTurbineEfficiency -
steamCondensorPressure
private double steamCondensorPressure -
gasTurbinePower
private double gasTurbinePower -
steamTurbinePower
private double steamTurbinePower -
totalPower
private double totalPower -
fuelEnergyInput
private double fuelEnergyInput -
overallEfficiency
private double overallEfficiency -
ratedTotalPowerW
private double ratedTotalPowerWRated (maximum) total 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
-
CombinedCycleSystem
Constructor for CombinedCycleSystem.- Parameters:
name- equipment name
-
CombinedCycleSystem
Constructor for CombinedCycleSystem with fuel gas inlet.- Parameters:
name- equipment namefuelGasInlet- fuel gas stream to the gas turbine
-
-
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
-
getTotalPower
public double getTotalPower()Get total combined-cycle power output.- Returns:
- total power in Watts
-
getTotalPower
Get total combined-cycle power output in specified unit.- Parameters:
unit- power unit ("W", "kW", "MW", "hp")- Returns:
- total power
-
getGasTurbinePower
public double getGasTurbinePower()Get gas turbine power output.- Returns:
- gas turbine power in Watts
-
getSteamTurbinePower
public double getSteamTurbinePower()Get steam turbine power output.- Returns:
- steam turbine power in Watts
-
getOverallEfficiency
public double getOverallEfficiency()Get overall combined-cycle thermal efficiency (LHV basis).- Returns:
- overall efficiency (0 to 1)
-
getFuelEnergyInput
public double getFuelEnergyInput()Get fuel energy input (LHV basis).- Returns:
- fuel energy input in Watts
-
toJson
Get results as JSON string.- Specified by:
toJsonin interfaceProcessEquipmentInterface- Overrides:
toJsonin classTwoPortEquipment- Returns:
- JSON with all combined-cycle results
-
setCombustionPressure
public void setCombustionPressure(double pressure) Set combustion pressure for the gas turbine.- Parameters:
pressure- combustion pressure in bara
-
setSteamPressure
public void setSteamPressure(double pressure) Set steam pressure for the HRSG/steam cycle.- Parameters:
pressure- steam pressure in bara
-
setSteamTemperature
public void setSteamTemperature(double temperature) Set steam temperature for the HRSG outlet.- Parameters:
temperature- steam temperature in Kelvin
-
setSteamTemperature
Set steam temperature with unit.- Parameters:
temperature- steam temperatureunit- temperature unit ("C", "K")
-
setSteamTurbineEfficiency
public void setSteamTurbineEfficiency(double efficiency) Set steam turbine isentropic efficiency.- Parameters:
efficiency- isentropic efficiency (0 to 1)
-
setGasTurbineEfficiency
public void setGasTurbineEfficiency(double efficiency) Set gas turbine isentropic efficiency. Not used directly; the GasTurbine model uses its own internal component efficiencies.- Parameters:
efficiency- gas turbine overall efficiency (informational)
-
setSteamCondensorPressure
public void setSteamCondensorPressure(double pressure) Set steam condensor pressure.- Parameters:
pressure- condensor pressure in bara
-
setHrsgApproachTemperature
public void setHrsgApproachTemperature(double approachTemp) Set HRSG approach temperature.- Parameters:
approachTemp- approach temperature in K
-
setHrsgEffectiveness
public void setHrsgEffectiveness(double effectiveness) Set HRSG heat transfer effectiveness.- Parameters:
effectiveness- effectiveness (0 to 1)
-
getRatedTotalPower
public double getRatedTotalPower()Get the rated (maximum) total power output.- Returns:
- rated total power in Watts
-
getRatedTotalPower
Get the rated (maximum) total power output in specified unit.- Parameters:
unit- power unit ("W", "kW", "MW", "hp")- Returns:
- rated total power
-
setRatedTotalPower
public void setRatedTotalPower(double ratedPower) Set the rated (maximum) total power output.- Parameters:
ratedPower- rated total power in Watts
-
setRatedTotalPower
Set the rated (maximum) total power output with unit.- Parameters:
ratedPower- rated total 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 combined-cycle system. -
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
-