Class TankHeatTransferModel

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

public class TankHeatTransferModel extends Object implements Serializable
Multi-zone heat transfer model for LNG cargo tanks.

Commercial LNG ageing simulators (Cargo Expert, LNGMAP, MACS III) use 4-6 heat transfer zones instead of a single U*A value. Each zone has its own U-value, area, and boundary temperature:

  • Bottom slab: contact with double-bottom ballast tanks (sea water temperature)
  • Sidewalls: contact with adjacent ballast/void spaces (ambient temperature)
  • Roof/dome: exposed to weather deck (ambient + solar gain)
  • Cofferdam: shared wall between adjacent cargo tanks (adjacent cargo temperature)
  • Internal supports: conduction through support structures

Total heat ingress Q_total = sum_i(U_i * A_i * (T_boundary_i - T_LNG)).

Version:
1.0
Author:
NeqSim
See Also:
  • Field Details

    • serialVersionUID

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

      List of heat transfer zones.
    • tankGeometry

      private TankGeometry tankGeometry
      Optional tank geometry for auto zone calculation.
    • solarAbsorptivity

      private double solarAbsorptivity
      Solar absorptivity of deck surface (0-1). Typical: 0.3-0.6 for painted steel.
    • windConvectionFactor

      private double windConvectionFactor
      Wind-enhanced convection factor. Applied to roof/exposed zones.
  • Constructor Details

    • TankHeatTransferModel

      public TankHeatTransferModel()
      Default constructor.
    • TankHeatTransferModel

      public TankHeatTransferModel(TankGeometry geometry, double ambientTemperature)
      Constructor with tank geometry, auto-creates standard zones.
      Parameters:
      geometry - tank geometry definition
      ambientTemperature - ambient air/sea temperature (K)
  • Method Details

    • createStandardZones

      private void createStandardZones(TankGeometry geometry, double ambientTemp)
      Create standard heat transfer zones from tank geometry.
      Parameters:
      geometry - tank geometry
      ambientTemp - ambient temperature (K)
    • addZone

      public void addZone(String name, double uValue, double area, double boundaryTemperature)
      Add a custom heat transfer zone.
      Parameters:
      name - zone name
      uValue - overall heat transfer coefficient (W/(m2*K))
      area - heat transfer area (m2)
      boundaryTemperature - boundary temperature (K)
    • calculateTotalHeatIngress

      public double calculateTotalHeatIngress(double lngTemperature)
      Calculate total heat ingress to the LNG.
      Parameters:
      lngTemperature - current LNG temperature (K)
      Returns:
      total heat ingress (W)
    • calculateZoneHeatIngress

      public Map<String,Double> calculateZoneHeatIngress(double lngTemperature)
      Calculate heat ingress per zone.
      Parameters:
      lngTemperature - current LNG temperature (K)
      Returns:
      map of zone name to heat ingress (W)
    • calculateLayerHeatDistribution

      public double[] calculateLayerHeatDistribution(double lngTemperature, int numLayers)
      Calculate heat distribution to layers based on zone positions.

      Bottom zone heat goes primarily to bottom layer, sidewall heat distributed by wetted area fraction, roof heat goes to top layer via vapor space.

      Parameters:
      lngTemperature - bulk LNG temperature (K)
      numLayers - number of liquid layers
      Returns:
      array of heat per layer (W), index 0 = bottom
    • updateBoundaryConditions

      public void updateBoundaryConditions(double ambientTemperature, double solarRadiation, double seaWaterTemperature)
      Update boundary temperatures for time-varying conditions.
      Parameters:
      ambientTemperature - new ambient temperature (K)
      solarRadiation - solar radiation on deck (W/m2)
      seaWaterTemperature - sea water temperature (K)
    • getZones

      Get the list of zones.
      Returns:
      list of heat transfer zones
    • getSolarAbsorptivity

      public double getSolarAbsorptivity()
      Get solar absorptivity.
      Returns:
      absorptivity (0-1)
    • setSolarAbsorptivity

      public void setSolarAbsorptivity(double solarAbsorptivity)
      Set solar absorptivity.
      Parameters:
      solarAbsorptivity - absorptivity (0-1)
    • getWindConvectionFactor

      public double getWindConvectionFactor()
      Get wind convection factor.
      Returns:
      convection factor
    • setWindConvectionFactor

      public void setWindConvectionFactor(double factor)
      Set wind convection factor.
      Parameters:
      factor - convection enhancement factor
    • getTankGeometry

      public TankGeometry getTankGeometry()
      Get tank geometry.
      Returns:
      tank geometry or null