Class Mixer

All Implemented Interfaces:
Serializable, Runnable, CapacityConstrainedEquipment, MixerInterface, ProcessEquipmentInterface, SimulationInterface, NamedInterface
Direct Known Subclasses:
SimpleTray, StaticMixer

Mixer class.

Version:
$Id: $Id
Author:
Even Solbraa
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Serialization version UID.
      See Also:
    • logger

      static org.apache.logging.log4j.Logger logger
      Logger object for class.
    • mechanicalDesign

      private MixerMechanicalDesign mechanicalDesign
      Mechanical design for the mixer.
    • mixerCapacityConstraints

      private Map<String, CapacityConstraint> mixerCapacityConstraints
      Mixer capacity constraints map.
    • mixerCapacityAnalysisEnabled

      private boolean mixerCapacityAnalysisEnabled
      Whether capacity analysis is enabled.
    • designPressureDrop

      private double designPressureDrop
      Design pressure drop [bar].
    • maxDesignVelocity

      private double maxDesignVelocity
      Maximum design velocity [m/s].
    • streams

      protected ArrayList<StreamInterface> streams
    • numberOfInputStreams

      private int numberOfInputStreams
    • mixedStream

      protected StreamInterface mixedStream
    • isSetOutTemperature

      private boolean isSetOutTemperature
    • outTemperature

      private double outTemperature
    • lowestPressure

      double lowestPressure
    • doMultiPhaseCheck

      private boolean doMultiPhaseCheck
  • Constructor Details

    • Mixer

      public Mixer(String name)

      Constructor for Mixer.

      Parameters:
      name - a String object
  • 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

      public MechanicalDesign getMechanicalDesign()

      Get a mechanicalDesign for the equipment.

      Specified by:
      getMechanicalDesign in interface ProcessEquipmentInterface
      Overrides:
      getMechanicalDesign in class ProcessEquipmentBaseClass
      Returns:
      a MechanicalDesign object
    • initMechanicalDesign

      public void initMechanicalDesign()

      Initialize a initMechanicalDesign for the equipment.

      Specified by:
      initMechanicalDesign in interface ProcessEquipmentInterface
      Overrides:
      initMechanicalDesign in class ProcessEquipmentBaseClass
    • getThermoSystem

      public SystemInterface getThermoSystem()

      getThermoSystem.

      Specified by:
      getThermoSystem in interface MixerInterface
      Specified by:
      getThermoSystem in interface ProcessEquipmentInterface
      Overrides:
      getThermoSystem in class ProcessEquipmentBaseClass
      Returns:
      a SystemInterface object
    • replaceStream

      public void replaceStream(int i, StreamInterface newStream)

      replaceStream.

      Specified by:
      replaceStream in interface MixerInterface
      Parameters:
      i - a int
      newStream - a StreamInterface object
    • removeInputStream

      public void removeInputStream(int i)

      removeInputStream.

      Specified by:
      removeInputStream in interface MixerInterface
      Parameters:
      i - a int
    • addStream

      public void addStream(StreamInterface newStream)

      addStream.

      Specified by:
      addStream in interface MixerInterface
      Parameters:
      newStream - a StreamInterface object
    • getStream

      public StreamInterface getStream(int i)

      getStream.

      Parameters:
      i - a int
      Returns:
      a StreamInterface object
    • mixStream

      public void mixStream()

      mixStream.

    • guessTemperature

      public double guessTemperature()

      guessTemperature.

      Returns:
      a double
    • calcMixStreamEnthalpy

      public double calcMixStreamEnthalpy()

      calcMixStreamEnthalpy.

      Returns:
      a double
    • getOutletStream

      public StreamInterface getOutletStream()

      Getter for outlet stream object.

      Specified by:
      getOutletStream in interface MixerInterface
      Returns:
      a StreamInterface object
    • run

      public void run(UUID id)

      In this method all thermodynamic and unit operations will be calculated in a steady state calculation.

      Specified by:
      run in interface SimulationInterface
      Parameters:
      id - UUID
    • displayResult

      public void displayResult()

      displayResult.

      Specified by:
      displayResult in interface ProcessEquipmentInterface
      Overrides:
      displayResult in class ProcessEquipmentBaseClass
    • setPressure

      public void setPressure(double pres)

      Setter for the field pressure.

      Specified by:
      setPressure in interface ProcessEquipmentInterface
      Overrides:
      setPressure in class ProcessEquipmentBaseClass
      Parameters:
      pres - a double
    • setTemperature

      public void setTemperature(double temp)

      Setter for the field temperature.

      Specified by:
      setTemperature in interface ProcessEquipmentInterface
      Overrides:
      setTemperature in class ProcessEquipmentBaseClass
      Parameters:
      temp - Temperature in Kelvin
    • getOutletTemperature

      public double getOutletTemperature()

      Getter for the outlet temperature.

      Returns:
      outlet temperature in Kelvin
    • getOutTemperature

      @Deprecated public double getOutTemperature()
      Deprecated.

      Getter 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 public void setOutTemperature(double outTemperature)
      Deprecated.

      Setter 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

      public double getEntropyProduction(String unit)

      getEntropyProduction.

      Specified by:
      getEntropyProduction in interface ProcessEquipmentInterface
      Overrides:
      getEntropyProduction in class ProcessEquipmentBaseClass
      Parameters:
      unit - a String object
      Returns:
      a double
    • getMassBalance

      public double getMassBalance(String unit)

      getMassBalance.

      Specified by:
      getMassBalance in interface ProcessEquipmentInterface
      Overrides:
      getMassBalance in class ProcessEquipmentBaseClass
      Parameters:
      unit - a String object
      Returns:
      a double
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface ProcessEquipmentInterface
      Overrides:
      hashCode in class ProcessEquipmentBaseClass
    • equals

      public boolean equals(Object obj)
      Specified by:
      equals in interface ProcessEquipmentInterface
      Overrides:
      equals in class ProcessEquipmentBaseClass
    • 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

      public String toJson()

      Serializes the Process Equipment along with its state to a JSON string.

      Specified by:
      toJson in interface ProcessEquipmentInterface
      Overrides:
      toJson in class ProcessEquipmentBaseClass
      Returns:
      json string.
    • toJson

      public String toJson(ReportConfig cfg)
      Serializes the Process Equipment with configurable level of detail.
      Specified by:
      toJson in interface ProcessEquipmentInterface
      Overrides:
      toJson in class ProcessEquipmentBaseClass
      Parameters:
      cfg - report configuration
      Returns:
      json string
    • validateSetup

      public ValidationResult 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:
      validateSetup in interface ProcessEquipmentInterface
      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:
      isCapacityAnalysisEnabled in interface CapacityConstrainedEquipment
      Overrides:
      isCapacityAnalysisEnabled in class ProcessEquipmentBaseClass
      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:
      setCapacityAnalysisEnabled in interface CapacityConstrainedEquipment
      Overrides:
      setCapacityAnalysisEnabled in class ProcessEquipmentBaseClass
      Parameters:
      enabled - true to include in capacity analysis, false to exclude
    • getCapacityConstraints

      public Map<String, CapacityConstraint> getCapacityConstraints()
      Gets all capacity constraints defined for this equipment.

      The map keys are constraint names (e.g., "speed", "gasLoadFactor") and values are the corresponding CapacityConstraint objects containing design values, current values, and utilization calculations.

      Specified by:
      getCapacityConstraints in interface CapacityConstrainedEquipment
      Returns:
      unmodifiable map of constraint name to CapacityConstraint
    • getBottleneckConstraint

      public CapacityConstraint getBottleneckConstraint()
      Gets the constraint with the highest utilization (the bottleneck).

      This method identifies which constraint is closest to or exceeding its design limit. Use this to determine what is limiting equipment capacity.

      Specified by:
      getBottleneckConstraint in interface CapacityConstrainedEquipment
      Returns:
      the bottleneck constraint, or null if no constraints are defined
    • 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:
      isCapacityExceeded in interface CapacityConstrainedEquipment
      Returns:
      true if any 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:
      isHardLimitExceeded in interface CapacityConstrainedEquipment
      Returns:
      true if any HARD constraint's max value is exceeded
    • getMaxUtilization

      public double getMaxUtilization()
      Gets the maximum utilization across all constraints.

      This gives a single number representing how close the equipment is to its limiting constraint. Values above 1.0 indicate the equipment is over capacity.

      Specified by:
      getMaxUtilization in interface CapacityConstrainedEquipment
      Returns:
      maximum utilization as fraction (1.0 = 100% of design capacity)
    • addCapacityConstraint

      public void addCapacityConstraint(CapacityConstraint constraint)
      Adds a new capacity constraint to this equipment.

      This allows dynamic addition of constraints at runtime. Constraints can be added during equipment configuration or based on operating conditions.

      Specified by:
      addCapacityConstraint in interface CapacityConstrainedEquipment
      Parameters:
      constraint - the constraint to add
    • removeCapacityConstraint

      public boolean removeCapacityConstraint(String constraintName)
      Removes a capacity constraint by name.
      Specified by:
      removeCapacityConstraint in interface CapacityConstrainedEquipment
      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:
      clearCapacityConstraints in interface CapacityConstrainedEquipment