Class MultiEffectEvaporator

All Implemented Interfaces:
Serializable, Runnable, ProcessEquipmentInterface, ProcessElementInterface, SimulationInterface, NamedInterface

public class MultiEffectEvaporator extends ProcessEquipmentBaseClass
Multi-effect evaporator for concentration of solutions.

Models a series of evaporator effects at decreasing pressures. Each effect uses the vapor from the previous effect as the heating medium, achieving significant steam economy. Commonly used in sugar refining, dairy processing, and bio-product concentration.

The model performs sequential flash calculations at decreasing pressures, removing vapor at each stage to concentrate the liquid product.

Usage example:

MultiEffectEvaporator evap = new MultiEffectEvaporator("MEE", feedStream);
evap.setNumberOfEffects(3);
evap.setFirstEffectPressure(2.0); // bara
evap.setLastEffectPressure(0.2); // bara
evap.setTargetConcentrationFactor(5.0); // 5x concentration
evap.run();

StreamInterface concentrate = evap.getConcentrateStream();
StreamInterface condensate = evap.getVaporCondensateStream();
Version:
1.0
Author:
NeqSim team
See Also:
  • Field Details

    • serialVersionUID

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

      private static final org.apache.logging.log4j.Logger logger
      Logger object for class.
    • inletStream

      private StreamInterface inletStream
      Inlet feed stream.
    • concentrateStream

      private StreamInterface concentrateStream
      Concentrated liquid outlet stream.
    • vaporCondensateStream

      private StreamInterface vaporCondensateStream
      Combined vapor/condensate outlet stream.
    • numberOfEffects

      private int numberOfEffects
      Number of evaporator effects.
    • firstEffectPressure

      private double firstEffectPressure
      Pressure of the first (highest pressure) effect in bara.
    • lastEffectPressure

      private double lastEffectPressure
      Pressure of the last (lowest pressure) effect in bara.
    • targetConcentrationFactor

      private double targetConcentrationFactor
      Target concentration factor (ratio of feed to concentrate flow).
    • overallHeatTransferCoefficient

      private double overallHeatTransferCoefficient
      Overall heat transfer coefficient in W/(m2*K).
    • totalHeatTransferArea

      private double totalHeatTransferArea
      Total heat transfer area in m2 (calculated).
    • steamConsumption

      private double steamConsumption
      Total steam consumption in kg/hr (calculated).
    • steamEconomy

      private double steamEconomy
      Steam economy (kg water evaporated / kg steam used).
    • effectPressures

      private List<Double> effectPressures
      Pressures for each effect (calculated from first/last).
  • Constructor Details

    • MultiEffectEvaporator

      public MultiEffectEvaporator(String name)
      Constructor for MultiEffectEvaporator.
      Parameters:
      name - name of the evaporator
    • MultiEffectEvaporator

      public MultiEffectEvaporator(String name, StreamInterface inletStream)
      Constructor for MultiEffectEvaporator with inlet stream.
      Parameters:
      name - name of the evaporator
      inletStream - the feed stream
  • Method Details

    • setInletStream

      public void setInletStream(StreamInterface inletStream)
      Set the inlet feed stream.
      Parameters:
      inletStream - the feed stream
    • getInletStream

      public StreamInterface getInletStream()
      Get the inlet stream.
      Returns:
      inlet stream
    • getConcentrateStream

      public StreamInterface getConcentrateStream()
      Get the concentrated liquid outlet stream.
      Returns:
      concentrate stream
    • getVaporCondensateStream

      public StreamInterface getVaporCondensateStream()
      Get the combined vapor condensate stream.
      Returns:
      vapor condensate stream
    • getInletStreams

      public List<StreamInterface> 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 without instanceof checks.
      Returns:
      unmodifiable list of inlet streams (empty by default)
    • getOutletStreams

      public List<StreamInterface> 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 without instanceof checks.
      Returns:
      unmodifiable list of outlet streams (empty by default)
    • setNumberOfEffects

      public void setNumberOfEffects(int effects)
      Set the number of evaporator effects.
      Parameters:
      effects - number of effects (1-7 typically)
    • getNumberOfEffects

      public int getNumberOfEffects()
      Get the number of effects.
      Returns:
      number of effects
    • setFirstEffectPressure

      public void setFirstEffectPressure(double pressure)
      Set the first (highest) effect pressure.
      Parameters:
      pressure - pressure in bara
    • getFirstEffectPressure

      public double getFirstEffectPressure()
      Get the first effect pressure.
      Returns:
      pressure in bara
    • setLastEffectPressure

      public void setLastEffectPressure(double pressure)
      Set the last (lowest) effect pressure.
      Parameters:
      pressure - pressure in bara
    • getLastEffectPressure

      public double getLastEffectPressure()
      Get the last effect pressure.
      Returns:
      pressure in bara
    • setTargetConcentrationFactor

      public void setTargetConcentrationFactor(double factor)
      Set the target concentration factor.
      Parameters:
      factor - ratio of feed mass flow to concentrate mass flow
    • getTargetConcentrationFactor

      public double getTargetConcentrationFactor()
      Get the target concentration factor.
      Returns:
      concentration factor
    • setOverallHeatTransferCoefficient

      public void setOverallHeatTransferCoefficient(double u)
      Set the overall heat transfer coefficient.
      Parameters:
      u - heat transfer coefficient in W/(m2*K)
    • getOverallHeatTransferCoefficient

      public double getOverallHeatTransferCoefficient()
      Get the overall heat transfer coefficient.
      Returns:
      U in W/(m2*K)
    • getTotalHeatTransferArea

      public double getTotalHeatTransferArea()
      Get the total heat transfer area (calculated after run).
      Returns:
      area in m2
    • getSteamEconomy

      public double getSteamEconomy()
      Get the steam economy.
      Returns:
      kg water evaporated per kg steam
    • getSteamConsumption

      public double getSteamConsumption()
      Get the steam consumption.
      Returns:
      steam consumption in kg/hr
    • calculateEffectPressures

      private void calculateEffectPressures()
      Calculate the pressure distribution across effects using geometric spacing.
    • run

      public void run(UUID id)

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

      Parameters:
      id - UUID
    • 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.
    • toMap

      private Map<String,Object> toMap()
      Get a map representation of the evaporator.
      Returns:
      map of properties