Class Mixer
- All Implemented Interfaces:
Serializable, Runnable, CapacityConstrainedEquipment, MixerInterface, ProcessEquipmentInterface, ProcessElementInterface, SimulationInterface, NamedInterface
- Direct Known Subclasses:
SimpleTray, StaticMixer
Mixer class.
- Version:
- $Id: $Id
- Author:
- Even Solbraa
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleDesign pressure drop [bar].private booleanprivate boolean(package private) static org.apache.logging.log4j.LoggerLogger object for class.(package private) doubleprivate doubleMaximum design velocity [m/s].private MixerMechanicalDesignMechanical design for the mixer.protected StreamInterfaceprivate booleanWhether capacity analysis is enabled.private Map<String, CapacityConstraint> Mixer capacity constraints map.private intprivate doubleprivate static final longSerialization version UID.protected ArrayList<StreamInterface> Fields inherited from class ProcessEquipmentBaseClass
conditionAnalysisMessage, energyStream, hasController, isSolved, properties, reportFields inherited from class SimulationBaseClass
calcIdentifier, calculateSteadyState, timeFields inherited from class NamedBaseClass
name -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddCapacityConstraint(CapacityConstraint constraint) Adds a capacity constraint to this equipment.voidaddStream(StreamInterface newStream) addStream.doublecalcMixStreamEnthalpy.voidClears all capacity constraints from this equipment.voiddisplayResult.booleanGets the bottleneck (most limiting) constraint for this equipment.Gets all capacity constraints defined for this equipment.doubleGets the design pressure drop.doublegetEntropyProduction(String unit) getEntropyProduction.Returns all inlet streams connected to this equipment.doublegetMassBalance(String unit) getMassBalance.doubleGets the maximum design velocity.doubleGets the maximum utilization across all enabled constraints.Get amechanicalDesignfor the equipment.doubleCalculates the flow-weighted average salinity of the mixed stream.intGetter for the fieldnumberOfInputStreams.Getter for outlet stream object.Returns all outlet streams produced by this equipment.doubleGetter for the outlet temperature.doubleDeprecated.getStream(int i) getStream.getThermoSystem.doubleguessTemperature.inthashCode()private voidInitialize mixer capacity constraints.voidInitialize ainitMechanicalDesignfor the equipment.booleanChecks if capacity analysis is enabled for this equipment.booleanChecks if any capacity constraint is violated (exceeds 100% utilization).booleanGetter for the fielddoMultiPhaseCheck.booleanChecks if any HARD constraint limit is exceeded.booleanisSetOutTemperature.voidisSetOutTemperature(boolean isSetOutTemperature) isSetOutTemperature.voidmixStream.booleanremoveCapacityConstraint(String constraintName) Removes a capacity constraint by name.voidremoveInputStream(int i) removeInputStream.voidreplaceStream(int i, StreamInterface newStream) replaceStream.voidIn this method all thermodynamic and unit operations will be calculated in a steady state calculation.voidsetCapacityAnalysisEnabled(boolean enabled) Enables or disables capacity analysis for this equipment.voidsetDesignPressureDrop(double pressureDrop) Sets the design pressure drop.voidsetMaxDesignVelocity(double velocity) Sets the maximum design velocity.voidsetMultiPhaseCheck(boolean doMultiPhaseCheck) Setter for the fielddoMultiPhaseCheck.voidsetOutletTemperature(double outTemperature) Set the outlet temperature of the mixer.voidsetOutTemperature(double outTemperature) Deprecated.usesetOutletTemperature(double)insteadvoidsetPressure(double pres) Setter for the fieldpressure.voidsetTemperature(double temp) Setter for the fieldtemperature.toJson()Serializes the Process Equipment along with its state to a JSON string.toJson(ReportConfig cfg) Serializes the Process Equipment with configurable level of detail.Validate the process equipment before execution.Methods inherited from class ProcessEquipmentBaseClass
addController, copy, getAvailableMargin, getAvailableMarginPercent, getConditionAnalysisMessage, getConstraintEvaluationReport, getController, getController, getControllers, getEffectiveCapacityFactor, getEnergyStream, getExergyChange, getFailureMode, getMassBalance, getMaxUtilizationPercent, getMinimumFlow, getPressure, getPressure, getProperty, getReferenceDesignation, getReport_json, getResultTable, getSpecification, getTemperature, getTemperature, getUtilizationSummary, initElectricalDesign, initializeDefaultConstraints, initInstrumentDesign, isActive, isActive, isFailed, isNearCapacityLimit, isSetEnergyStream, reportResults, restoreFromFailure, run_step, runConditionAnalysis, setController, setEnergyStream, setEnergyStream, setFailureMode, setFlowValveController, setMinimumFlow, setReferenceDesignation, setRegulatorOutSignal, setSpecification, 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 CapacityConstrainedEquipment
disableAllConstraints, enableAllConstraints, getAvailableMargin, getAvailableMarginPercent, getMaxUtilizationPercent, getUtilizationSummary, isNearCapacityLimitMethods inherited from interface MixerInterface
getOutStreamMethods inherited from interface NamedInterface
getName, getTagName, getTagNumber, setName, setTagName, setTagNumberMethods inherited from interface ProcessEquipmentInterface
addController, getAvailableMargin, getAvailableMarginPercent, getCapacityDuty, getCapacityMax, getConditionAnalysisMessage, getController, getController, getControllers, getElectricalDesign, getEquipmentState, getExergyChange, getExergyChange, getExergyDestruction, getExergyDestruction, getFluid, getInstrumentDesign, getMassBalance, getMaxUtilizationPercent, getOperatingEnvelopeViolation, getOutletFlowRate, getOutletPressure, getOutletTemperature, getPressure, getPressure, getReferenceDesignation, getReferenceDesignationString, getReport_json, getRestCapacity, getResultTable, getSimulationValidationErrors, getSpecification, getTemperature, getTemperature, getUtilizationSummary, initElectricalDesign, initInstrumentDesign, isNearCapacityLimit, isSimulationValid, isWithinOperatingEnvelope, needRecalculation, reportResults, runConditionAnalysis, setController, setReferenceDesignation, setRegulatorOutSignal, setSpecificationMethods inherited from interface SimulationInterface
getCalculateSteadyState, getCalculationIdentifier, getTime, increaseTime, isRunInSteps, run, run_step, run_step, runTransient, runTransient, setCalculateSteadyState, setCalculationIdentifier, setRunInSteps, setTime, solved
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
logger
static org.apache.logging.log4j.Logger loggerLogger object for class. -
mechanicalDesign
Mechanical design for the mixer. -
mixerCapacityConstraints
Mixer capacity constraints map. -
mixerCapacityAnalysisEnabled
private boolean mixerCapacityAnalysisEnabledWhether capacity analysis is enabled. -
designPressureDrop
private double designPressureDropDesign pressure drop [bar]. -
maxDesignVelocity
private double maxDesignVelocityMaximum design velocity [m/s]. -
streams
-
numberOfInputStreams
private int numberOfInputStreams -
mixedStream
-
isSetOutTemperature
private boolean isSetOutTemperature -
outTemperature
private double outTemperature -
lowestPressure
double lowestPressure -
doMultiPhaseCheck
private boolean doMultiPhaseCheck
-
-
Constructor Details
-
Mixer
-
-
Method Details
-
setMultiPhaseCheck
public void setMultiPhaseCheck(boolean doMultiPhaseCheck) Setter for the field
doMultiPhaseCheck.- Parameters:
doMultiPhaseCheck- a boolean
-
isDoMultiPhaseCheck
public boolean isDoMultiPhaseCheck()Getter for the field
doMultiPhaseCheck.- Returns:
- a boolean
-
getMechanicalDesign
Get a
mechanicalDesignfor the equipment.- Specified by:
getMechanicalDesignin interfaceProcessEquipmentInterface- Overrides:
getMechanicalDesignin classProcessEquipmentBaseClass- Returns:
- a
MechanicalDesignobject
-
initMechanicalDesign
public void initMechanicalDesign()Initialize a
initMechanicalDesignfor the equipment.- Specified by:
initMechanicalDesignin interfaceProcessEquipmentInterface- Overrides:
initMechanicalDesignin classProcessEquipmentBaseClass
-
getThermoSystem
getThermoSystem.
- Specified by:
getThermoSystemin interfaceMixerInterface- Specified by:
getThermoSystemin interfaceProcessEquipmentInterface- Overrides:
getThermoSystemin classProcessEquipmentBaseClass- Returns:
- a
SystemInterfaceobject
-
replaceStream
replaceStream.
- Specified by:
replaceStreamin interfaceMixerInterface- Parameters:
i- a intnewStream- aStreamInterfaceobject
-
removeInputStream
public void removeInputStream(int i) removeInputStream.
- Specified by:
removeInputStreamin interfaceMixerInterface- Parameters:
i- a int
-
addStream
addStream.
- Specified by:
addStreamin interfaceMixerInterface- Parameters:
newStream- aStreamInterfaceobject
-
getStream
getStream.
- Parameters:
i- a int- Returns:
- a
StreamInterfaceobject
-
mixStream
public void mixStream()mixStream.
-
guessTemperature
public double guessTemperature()guessTemperature.
- Returns:
- a double
-
calcMixStreamEnthalpy
public double calcMixStreamEnthalpy()calcMixStreamEnthalpy.
- Returns:
- a double
-
getOutletStream
Getter for outlet stream object.
- Specified by:
getOutletStreamin interfaceMixerInterface- Returns:
- a
StreamInterfaceobject
-
getInletStreams
Returns all inlet streams connected to this equipment. Subclasses override to report their specific inlets. Used by graph builders, DEXPI export, and auto-instrumentation to discover topology withoutinstanceofchecks.- Specified by:
getInletStreamsin interfaceProcessEquipmentInterface- Returns:
- unmodifiable list of inlet streams (empty by default)
-
getOutletStreams
Returns all outlet streams produced by this equipment. Subclasses override to report their specific outlets. Used by graph builders, DEXPI export, and auto-instrumentation to discover topology withoutinstanceofchecks.- Specified by:
getOutletStreamsin interfaceProcessEquipmentInterface- Returns:
- unmodifiable list of outlet streams (empty by default)
-
run
In this method all thermodynamic and unit operations will be calculated in a steady state calculation.
- Specified by:
runin interfaceSimulationInterface- Parameters:
id- UUID
-
displayResult
public void displayResult()displayResult.
- Specified by:
displayResultin interfaceProcessEquipmentInterface- Overrides:
displayResultin classProcessEquipmentBaseClass
-
setPressure
public void setPressure(double pres) Setter for the field
pressure.- Specified by:
setPressurein interfaceProcessEquipmentInterface- Overrides:
setPressurein classProcessEquipmentBaseClass- Parameters:
pres- a double
-
setTemperature
public void setTemperature(double temp) Setter for the field
temperature.- Specified by:
setTemperaturein interfaceProcessEquipmentInterface- Overrides:
setTemperaturein classProcessEquipmentBaseClass- Parameters:
temp- Temperature in Kelvin
-
getOutletTemperature
public double getOutletTemperature()Getter for the outlet temperature.
- Returns:
- outlet temperature in Kelvin
-
getOutTemperature
Deprecated.usegetOutletTemperature()insteadGetter for the field
outTemperature.- Returns:
- outlet temperature in Kelvin
-
setOutletTemperature
public void setOutletTemperature(double outTemperature) Set the outlet temperature of the mixer.
- Parameters:
outTemperature- outlet temperature in Kelvin
-
setOutTemperature
Deprecated.usesetOutletTemperature(double)insteadSetter for the field
outTemperature.- Parameters:
outTemperature- outlet temperature in Kelvin
-
isSetOutTemperature
public boolean isSetOutTemperature()isSetOutTemperature.
- Returns:
- a boolean
-
isSetOutTemperature
public void isSetOutTemperature(boolean isSetOutTemperature) isSetOutTemperature.
- Parameters:
isSetOutTemperature- a boolean
-
getNumberOfInputStreams
public int getNumberOfInputStreams()Getter for the field
numberOfInputStreams.- Returns:
- a int
-
getEntropyProduction
getEntropyProduction.
- Specified by:
getEntropyProductionin interfaceProcessEquipmentInterface- Overrides:
getEntropyProductionin classProcessEquipmentBaseClass- Parameters:
unit- aStringobject- Returns:
- a double
-
getMassBalance
getMassBalance.
- Specified by:
getMassBalancein interfaceProcessEquipmentInterface- Overrides:
getMassBalancein classProcessEquipmentBaseClass- Parameters:
unit- aStringobject- Returns:
- a double
-
hashCode
public int hashCode()- Specified by:
hashCodein interfaceProcessEquipmentInterface- Overrides:
hashCodein classProcessEquipmentBaseClass
-
equals
- Specified by:
equalsin interfaceProcessEquipmentInterface- Overrides:
equalsin classProcessEquipmentBaseClass
-
getMixedSalinity
public double getMixedSalinity()Calculates the flow-weighted average salinity of the mixed stream. Assumes each input stream provides getSalinity() and getFlowRate("kg/hr").- Returns:
- mixed salinity (same unit as getSalinity() returns)
-
toJson
Serializes the Process Equipment along with its state to a JSON string.
- Specified by:
toJsonin interfaceProcessEquipmentInterface- Overrides:
toJsonin classProcessEquipmentBaseClass- Returns:
- json string.
-
toJson
Serializes the Process Equipment with configurable level of detail.- Specified by:
toJsonin interfaceProcessEquipmentInterface- Overrides:
toJsonin classProcessEquipmentBaseClass- Parameters:
cfg- report configuration- Returns:
- json string
-
validateSetup
Validate the process equipment before execution.Checks for common setup errors:
- Equipment has a valid name
- Input streams connected
- Operating parameters in valid ranges
Validates the mixer setup before execution. Checks that:
- Equipment has a valid name
- At least one input stream is connected
- Mixed stream is initialized
- Specified by:
validateSetupin interfaceProcessEquipmentInterface- Returns:
- validation result with errors and warnings
-
initializeMixerCapacityConstraints
private void initializeMixerCapacityConstraints()Initialize mixer capacity constraints. -
setDesignPressureDrop
public void setDesignPressureDrop(double pressureDrop) Sets the design pressure drop.- Parameters:
pressureDrop- design pressure drop in bar
-
getDesignPressureDrop
public double getDesignPressureDrop()Gets the design pressure drop.- Returns:
- design pressure drop in bar
-
setMaxDesignVelocity
public void setMaxDesignVelocity(double velocity) Sets the maximum design velocity.- Parameters:
velocity- max design velocity in m/s
-
getMaxDesignVelocity
public double getMaxDesignVelocity()Gets the maximum design velocity.- Returns:
- max design velocity in m/s
-
isCapacityAnalysisEnabled
public boolean isCapacityAnalysisEnabled()Checks if capacity analysis is enabled for this equipment.When disabled, this equipment is excluded from bottleneck detection, capacity utilization summaries, and optimization routines. The equipment still tracks its constraints but doesn't contribute to system-level analysis.
- Specified by:
isCapacityAnalysisEnabledin interfaceCapacityConstrainedEquipment- Overrides:
isCapacityAnalysisEnabledin classProcessEquipmentBaseClass- Returns:
- true if capacity analysis is enabled (default is true)
-
setCapacityAnalysisEnabled
public void setCapacityAnalysisEnabled(boolean enabled) Enables or disables capacity analysis for this equipment.When disabled, this equipment is excluded from:
- System bottleneck detection (
ProcessSystem.findBottleneck()) - Capacity utilization summaries (
ProcessSystem.getCapacityUtilizationSummary()) - Equipment near capacity lists (
ProcessSystem.getEquipmentNearCapacityLimit()) - Optimization constraint checking
The equipment still calculates and tracks its constraints internally.
- Specified by:
setCapacityAnalysisEnabledin interfaceCapacityConstrainedEquipment- Overrides:
setCapacityAnalysisEnabledin classProcessEquipmentBaseClass- Parameters:
enabled- true to include in capacity analysis, false to exclude
- System bottleneck detection (
-
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
-
getOutletTemperature()instead