Class LNGHeelManager
- All Implemented Interfaces:
Serializable
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 Summary
FieldsModifier and TypeFieldDescriptionHeel composition (mole fractions keyed by component name).private doubleHeel density (kg/m3).private doubleHeel volume as fraction of total tank volume (0-1).private doubleHeel temperature (K).private static final org.apache.logging.log4j.LoggerLogger object.private doubleMaximum allowable tank temperature for warm tank loading (K).private static final longSerialization version UID.private booleanWhether spray cooling is active.private doubleSpray cooling rate (kg/hr).private doubleTotal tank volume (m3).private doubleCurrent tank wall temperature (K). -
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor.LNGHeelManager(double heelFraction, double tankVolume) Constructor with heel fraction. -
Method Summary
Modifier and TypeMethodDescriptioncalculateMixedComposition(Map<String, Double> newCargoComposition, double newCargoMoles, double newCargoTemperature) Calculate the resulting mixture when new cargo is loaded on top of heel.voidcreateStratifiedInitialCondition(LNGTankLayeredModel tankModel, SystemInterface newCargoSystem, double newCargoVolume) Create a two-layer initial condition for the layered tank model.Get heel composition.doubleGet heel density.doubleGet heel fraction.doubleGet heel temperature.doubleGet heel volume.doubleGet max warm tank temperature.doubleGet spray cooling rate.doubleGet tank volume.doubleGet tank wall temperature.booleanCheck if spray cooling is active.voidsetHeelDensity(double density) Set heel density.voidsetHeelFraction(double fraction) Set heel fraction.voidsetHeelState(Map<String, Double> composition, double temperature, double density) Set the heel composition from an aged LNG fluid (typically the residual at end of unloading).voidsetHeelTemperature(double temperature) Set heel temperature.voidsetMaxWarmTankTemperature(double temperature) Set max warm tank temperature.voidsetSprayCoolingActive(boolean active) Set spray cooling active state.voidsetSprayCoolingRate(double rate) Set spray cooling rate.voidsetTankVolume(double volume) Set tank volume.voidsetTankWallTemperature(double temperature) Set tank wall temperature.doublesimulateSprayCooling(double timeStepHours, double ambientTemperature, double wallHeatTransferCoeff, double wallArea) Simulate spray cooling during ballast voyage.
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
logger
private static final org.apache.logging.log4j.Logger loggerLogger object. -
heelFraction
private double heelFractionHeel volume as fraction of total tank volume (0-1). -
heelComposition
-
heelTemperature
private double heelTemperatureHeel temperature (K). -
heelDensity
private double heelDensityHeel density (kg/m3). -
tankVolume
private double tankVolumeTotal tank volume (m3). -
sprayCoolingRate
private double sprayCoolingRateSpray cooling rate (kg/hr). Rate of heel recirculation as spray. -
sprayCoolingActive
private boolean sprayCoolingActiveWhether spray cooling is active. -
maxWarmTankTemperature
private double maxWarmTankTemperatureMaximum allowable tank temperature for warm tank loading (K). -
tankWallTemperature
private double tankWallTemperatureCurrent 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
Set the heel composition from an aged LNG fluid (typically the residual at end of unloading).- Parameters:
composition- mole fractions keyed by component nametemperature- 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 fractionsnewCargoMoles- moles of new cargonewCargoTemperature- 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 configurenewCargoSystem- thermo system representing the new cargonewCargoVolume- 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
-
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)
-