Class LNGShipModel

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

public class LNGShipModel extends Object implements Serializable
Multi-tank LNG ship model that orchestrates parallel ageing of all cargo tanks.

A typical LNG carrier has 4-5 cargo tanks sharing a common BOG header. Each tank may contain different cargo (spot-market LNG from different sources, or loaded at different times). The ship model coordinates:

  • Parallel simulation of all tanks with their own compositions and temperatures
  • Aggregation of total BOG production from all tanks
  • Distribution of fuel demand across the common BOG header
  • Per-tank and aggregate quality tracking (WI, GCV, MN)
  • Overall cargo quantity and value tracking
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.
    • shipName

      private String shipName
      Ship name or voyage identifier.
    • tankScenarios

      private List<LNGAgeingScenario> tankScenarios
      List of tank scenarios (one per cargo tank).
    • bogNetwork

      private LNGBOGHandlingNetwork bogNetwork
      Common BOG handling network for the ship.
    • voyageProfile

      private LNGVoyageProfile voyageProfile
      Voyage profile shared across all tanks.
    • simulationTime

      private double simulationTime
      Total simulation time (hours).
    • timeStepHours

      private double timeStepHours
      Time step for simulation (hours).
    • tankResults

      private Map<String, List<LNGAgeingResult>> tankResults
      Per-tank results keyed by tank name.
    • shipResults

      private List<LNGShipModel.ShipResult> shipResults
      Aggregate ship-level results.
  • Constructor Details

    • LNGShipModel

      public LNGShipModel(String shipName)
      Constructor with ship name.
      Parameters:
      shipName - ship name or voyage identifier
  • Method Details

    • addTank

      public void addTank(LNGAgeingScenario scenario)
      Add a tank scenario to the ship.
      Parameters:
      scenario - pre-configured tank ageing scenario
    • run

      public void run()
      Run all tanks in parallel (stepped in lockstep).

      Each time step: (1) step all tanks, (2) aggregate BOG, (3) distribute fuel demand, (4) record ship-level results.

    • buildShipResults

      private void buildShipResults()
      Build aggregate ship-level results from per-tank data.
    • getTankResults

      public Map<String, List<LNGAgeingResult>> getTankResults()
      Get per-tank results.
      Returns:
      map of tank name to result list
    • getShipResults

      public List<LNGShipModel.ShipResult> getShipResults()
      Get aggregate ship results.
      Returns:
      list of ship-level results
    • getTotalCargoLossPct

      public double getTotalCargoLossPct()
      Get total cargo loss as percentage of initial mass across all tanks.
      Returns:
      cargo loss percentage
    • getShipSummary

      public String getShipSummary()
      Get a summary string of ship-level results.
      Returns:
      formatted summary
    • getShipName

      public String getShipName()
      Get ship name.
      Returns:
      ship name
    • setShipName

      public void setShipName(String shipName)
      Set ship name.
      Parameters:
      shipName - ship name
    • getTankScenarios

      public List<LNGAgeingScenario> getTankScenarios()
      Get tank scenarios.
      Returns:
      list of tank scenarios
    • getBogNetwork

      public LNGBOGHandlingNetwork getBogNetwork()
      Get shared BOG network.
      Returns:
      BOG handling network
    • setBogNetwork

      public void setBogNetwork(LNGBOGHandlingNetwork bogNetwork)
      Set shared BOG network.
      Parameters:
      bogNetwork - BOG handling network
    • getVoyageProfile

      public LNGVoyageProfile getVoyageProfile()
      Get voyage profile.
      Returns:
      voyage profile
    • setVoyageProfile

      public void setVoyageProfile(LNGVoyageProfile voyageProfile)
      Set voyage profile (shared across all tanks).
      Parameters:
      voyageProfile - voyage profile
    • setSimulationTime

      public void setSimulationTime(double hours)
      Set total simulation time.
      Parameters:
      hours - simulation time (hours)
    • getSimulationTime

      public double getSimulationTime()
      Get total simulation time.
      Returns:
      simulation time (hours)
    • setTimeStepHours

      public void setTimeStepHours(double hours)
      Set time step.
      Parameters:
      hours - time step (hours)
    • getTimeStepHours

      public double getTimeStepHours()
      Get time step.
      Returns:
      time step (hours)