Class LNGHeelManager

java.lang.Object
neqsim.process.equipment.lng.LNGHeelManager
All Implemented Interfaces:
Serializable

public class LNGHeelManager extends Object implements Serializable
Manages LNG heel retention, cooldown, and mixing operations.

The "heel" is the small quantity of LNG retained in cargo tanks at the end of unloading. It serves critical functions:

  • Tank cooldown: Maintains cryogenic temperature during ballast voyage, preventing thermal cycling damage to the containment system
  • Mixing with new cargo: When fresh cargo is loaded on top of heel, the resulting mixture may have different composition and density, potentially creating stratification
  • Spray cooling: Heel can be sprayed to maintain tank temperature during long ballast voyages

Heel quantity is a trade-off: too little means the tank warms up and requires expensive cooldown; too much means cargo revenue loss. Typical heel is 2-5% of tank volume.

Version:
1.0
Author:
NeqSim
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.
    • heelFraction

      private double heelFraction
      Heel volume as fraction of total tank volume (0-1).
    • heelComposition

      private Map<String,Double> heelComposition
      Heel composition (mole fractions keyed by component name).
    • heelTemperature

      private double heelTemperature
      Heel temperature (K).
    • heelDensity

      private double heelDensity
      Heel density (kg/m3).
    • tankVolume

      private double tankVolume
      Total tank volume (m3).
    • sprayCoolingRate

      private double sprayCoolingRate
      Spray cooling rate (kg/hr). Rate of heel recirculation as spray.
    • sprayCoolingActive

      private boolean sprayCoolingActive
      Whether spray cooling is active.
    • maxWarmTankTemperature

      private double maxWarmTankTemperature
      Maximum allowable tank temperature for warm tank loading (K).
    • tankWallTemperature

      private double tankWallTemperature
      Current tank wall temperature (K). Only relevant during ballast.
  • Constructor Details

    • LNGHeelManager

      public LNGHeelManager()
      Default constructor.
    • LNGHeelManager

      public LNGHeelManager(double heelFraction, double tankVolume)
      Constructor with heel fraction.
      Parameters:
      heelFraction - heel as fraction of tank volume (0-1)
      tankVolume - total tank volume (m3)
  • Method Details

    • setHeelState

      public void setHeelState(Map<String,Double> composition, double temperature, double density)
      Set the heel composition from an aged LNG fluid (typically the residual at end of unloading).
      Parameters:
      composition - mole fractions keyed by component name
      temperature - heel temperature (K)
      density - heel density (kg/m3)
    • calculateMixedComposition

      public Map<String,Double> calculateMixedComposition(Map<String,Double> newCargoComposition, double newCargoMoles, double newCargoTemperature)
      Calculate the resulting mixture when new cargo is loaded on top of heel.

      Returns the mixed composition assuming instantaneous ideal mixing. In reality, incomplete mixing creates stratification which must be handled by the layered tank model.

      Parameters:
      newCargoComposition - new cargo mole fractions
      newCargoMoles - moles of new cargo
      newCargoTemperature - new cargo temperature (K)
      Returns:
      mixed composition (mole fractions)
    • createStratifiedInitialCondition

      public void createStratifiedInitialCondition(LNGTankLayeredModel tankModel, SystemInterface newCargoSystem, double newCargoVolume)
      Create a two-layer initial condition for the layered tank model.

      The heel becomes the bottom layer and the new cargo the top layer. This is the starting point for a stratification/rollover analysis.

      Parameters:
      tankModel - the layered tank model to configure
      newCargoSystem - thermo system representing the new cargo
      newCargoVolume - volume of new cargo (m3)
    • simulateSprayCooling

      public double simulateSprayCooling(double timeStepHours, double ambientTemperature, double wallHeatTransferCoeff, double wallArea)
      Simulate spray cooling during ballast voyage.

      Spray cooling recirculates heel LNG through nozzles at the top of the tank. The spray contacts the warm tank walls and re-evaporates, absorbing heat and maintaining low wall temperature. The resulting BOG is handled by the BOG network.

      Parameters:
      timeStepHours - time step (hours)
      ambientTemperature - ambient temperature (K)
      wallHeatTransferCoeff - wall heat transfer coefficient (W/m2/K)
      wallArea - tank wall area (m2)
      Returns:
      BOG generated from spray cooling (kg) during this time step
    • getHeelVolume

      public double getHeelVolume()
      Get heel volume.
      Returns:
      heel volume (m3)
    • getHeelFraction

      public double getHeelFraction()
      Get heel fraction.
      Returns:
      heel fraction (0-1)
    • setHeelFraction

      public void setHeelFraction(double fraction)
      Set heel fraction.
      Parameters:
      fraction - heel fraction (0-1)
    • getHeelComposition

      public Map<String,Double> getHeelComposition()
      Get heel composition.
      Returns:
      map of component name to mole fraction
    • getHeelTemperature

      public double getHeelTemperature()
      Get heel temperature.
      Returns:
      temperature (K)
    • setHeelTemperature

      public void setHeelTemperature(double temperature)
      Set heel temperature.
      Parameters:
      temperature - temperature (K)
    • getHeelDensity

      public double getHeelDensity()
      Get heel density.
      Returns:
      density (kg/m3)
    • setHeelDensity

      public void setHeelDensity(double density)
      Set heel density.
      Parameters:
      density - density (kg/m3)
    • getTankVolume

      public double getTankVolume()
      Get tank volume.
      Returns:
      tank volume (m3)
    • setTankVolume

      public void setTankVolume(double volume)
      Set tank volume.
      Parameters:
      volume - tank volume (m3)
    • getSprayCoolingRate

      public double getSprayCoolingRate()
      Get spray cooling rate.
      Returns:
      spray rate (kg/hr)
    • setSprayCoolingRate

      public void setSprayCoolingRate(double rate)
      Set spray cooling rate.
      Parameters:
      rate - spray rate (kg/hr)
    • isSprayCoolingActive

      public boolean isSprayCoolingActive()
      Check if spray cooling is active.
      Returns:
      true if spray cooling active
    • setSprayCoolingActive

      public void setSprayCoolingActive(boolean active)
      Set spray cooling active state.
      Parameters:
      active - true to activate spray cooling
    • getMaxWarmTankTemperature

      public double getMaxWarmTankTemperature()
      Get max warm tank temperature.
      Returns:
      max temperature (K)
    • setMaxWarmTankTemperature

      public void setMaxWarmTankTemperature(double temperature)
      Set max warm tank temperature.
      Parameters:
      temperature - max temperature (K)
    • getTankWallTemperature

      public double getTankWallTemperature()
      Get tank wall temperature.
      Returns:
      wall temperature (K)
    • setTankWallTemperature

      public void setTankWallTemperature(double temperature)
      Set tank wall temperature.
      Parameters:
      temperature - wall temperature (K)