Simulation Process
This module contains the process flow that is used by the simulation environment to simulate the installation and supply process.
The flows contain the operational durations, random draws from distributions and the logic that is used to determine next activities.
Each component is a class and contains the main process flow of that component in the process method.
According to the vessel parameters and the supply chain configuration that is considered in the experiment the correct flows are called.
This module also enables interaction and communication between the different components.
All common processes that are used by both the installation vessel and the supply vessel are defined in the logsim.simulation_process.SharedProcesses class in order to reduce code duplication.
- class logsim.simulation_process.FoundationGenerator(*args, **kwargs)
This class will generate the foundations for the simulation.
This class contains processes that are shared between vessels and can be called from multiple vessels.
Process of entering port
- Parameters:
vessel – Vessel entering port
duration – Duration of entering port
Process of entering port
- Parameters:
vessel – Vessel entering port
duration – Duration of entering port
Process of leaving port
- Parameters:
vessel – Vessel entering port
duration – Duration of leaving port
Process of leaving port
- Parameters:
vessel – Vessel entering port
duration – Duration of leaving port
First calculate how much still needs to be transported and how much is possible to add to the vessel. This is the number of foundations to load in the vessel. If there are not enough foundations at the quay side to load to this preferred value the vessel will passivate itself and wait with mooring and loading until there are enough foundations at quay side. If there are enough foundations will moor, load (1 hour per foundation) and unmoor again. The quay that was requested is released again after unmooring.
- Parameters:
vessel – Vessel loading foundations
Method checks if foundations are left on supply side. If there are foundations available the vessel will load the foundations one by one according to the space available on deck. Loading takes 1 hour per foundation.
- Parameters:
vessel – Vessel loading foundations
Sail from the supply port towards the intermediate port. Check if sailing is possible by checking the sail duration against the next ‘duration’ weather window. Wait for weather if required, leave supply port ( SharedProcesses.leave()) and sail to intermediate port. Enter port again (SharedProcesses.enter())
Sail from the wind farm towards the intermediate port. Check if sailing is possible by checking the sail duration against the next ‘duration’ weather window. Wait for weather if required, sail to intermediate port and enter port by calling SharedProcesses.enter().
Sail from the wind farm towards the supply port. Check if sailing is possible by checking the sail duration against the next ‘duration’ weather window. Wait for weather if required, sail to supply port and enter port by calling SharedProcesses.enter()
- class logsim.simulation_process.InstallationVesselComponent(vessel_parameters: InstallationVessel, *args, **kwargs)
Installation vessel component (inherits from Salabim Component). Describes installation vessel with foundations aboard.
- Parameters:
vessel_parameters – Vessel parameters
- installation_process() None
Governing the installation process itself in this function. Check if weather allows installation of one monopole and install this one
- process()
Main process of IV. According to the logistic configuration, the IV will sail to the appropriate location and the repeating process will start.
- restock_at_intermediate_port()
Function to use when LogisticType.PORT_TRANSSHIPMENT_4 is used. Sail to intermediate port, restock by mooring to quay and sail back.
- restock_at_supply_port()
Used for LogisticType.DIRECT_1
- sail_intermediate_to_wind() None
Sail from the supply port towards the wind farm. Check if sailing is possible by checking the sail duration against the next ‘duration’ weather window. Wait for weather if required, leave supply port ( SharedProcesses.leave()) and sail to wind farm.
- sail_supply_to_wind() None
Sail from the supply port towards the wind farm. Check if sailing is possible by checking the sail duration against the next ‘duration’ weather window. Wait for weather if required, leave supply port ( SharedProcesses.leave()) and sail to wind farm.
- transfer_at_intermediate_port()
Function used when LogisticType.PORT_TRANSFER_3 is used. Sail to intermediate port, transfer and sail back.
- transfer_at_port()
Called by transfer_at_intermediate_port. Used for LogisticType.PORT_TRANSFER_3.
- transfer_offshore_restock()
Function used when LogisticType.OFFSHORE_TRANSFER_2 or LogisticType.OFFSHORE_TRANSFER_BUFFER_5 is used. Wait until vessel is alongside, moor this vessel and transfer foundations by getting foundation from supply_vessel store and putting them on the vessel store. Unmoor alongside vessel and activate the supply_vessel process again.
- class logsim.simulation_process.SupplyVesselComponent(vessel_parameters: SupplyVessel, supply_vessel_number: int = 1, *args, **kwargs)
Supply vessel component (inherits from Salabim Component). Describes supply vessel with foundations aboard.
- Parameters:
vessel_parameters – Vessel parameters
supply_vessel_number – supply vessel number, used to determine which vessel to use in LogisticType.OFFSHORE_TRANSFER_BUFFER_5
args – Salabim args
kwargs – Salabim
kwargs
- load_to_intermediate_port() None
Request a ‘quay’ resource object. Moor for 0.25 hour. Then unload each foundation one by one, takes an hour per foundation to unload. Foundations are transferred from the ‘foundations_on_board’ store to the ‘foundations_at_intermediate’ store. After loading to port check if vessels are waiting to be loaded in the port area. If they are this means that they were waiting because they want to be loaded only to full capacity and the required numbers of foundations to do this was not present at quay side. Activate these waiting vessels again in order to allow them to check again if now enough foundations are present to load to capacity. Hold again to unmoor and release the quay resource.
- process()
Process of the supply vessel. Describes the process of the vessel, depending on the logistic configuration.
- sail_intermediate_to_supply(enter_supply_duration: float | None = None, leaving_intermediate_duration: float | None = None, sailing_duration: float | None = None) None
Sail from the intermediate port towards the supply port. Check if sailing is possible by checking the sail duration against the next ‘duration’ weather window. Wait for weather if required, leave intermediate port ( SharedProcesses.leave()) and sail to supply port. Enter port again (SharedProcesses.enter()).
- sail_intermediate_to_wind() None
Sail from the supply port towards the wind farm. Check if sailing is possible by checking the sail duration against the next ‘duration’ weather window. Wait for weather if required, leave supply port ( SharedProcesses.leave()) and sail to wind farm.
- sail_supply_to_wind() None
Sail from the supply port towards the wind farm. Check if sailing is possible by checking the sail duration against the next ‘duration’ weather window. Wait for weather if required, leave supply port ( SharedProcesses.leave()) and sail to wind farm.
- transfer_intermediate()
Used for LogisticType.PORT_TRANSFER_3 to load from supply port to IV within intermediate port by mooring alongside and transferring
- transfer_offshore()
Responsible for transfer offshore process. First sails to wind farm location. Makes use of global store supply_vessels_alongside when arrived. This store enables the installation vessel to ‘wait’ until a vessel with stock is available and thus completing the synchronization process.
- transfer_offshore_from_intermediate()
Used for LogisticType.OFFSHORE_TRANSFER_BUFFER_5 to load from intermediate port to IV offshore by mooring alongside and transferring. Used only by vessel 2. If this function is called by barge 1 then SupplyVesselComponent.transshipment_intermediate() will be called as barge 1 only transports from supply to intermediate port.
- transshipment_intermediate()
Used for LogisticType.PORT_TRANSSHIPMENT_4 to load from supply port to intermediate port.