A description of the tidal window calculation code.
The key functionality of PROTIDE is to calculate tidal window requests, resulting in a useful tidal window advice. Starting a calculation through the Tasks module, puts a new calculation in the calculation queue. This queue is handled by one or more independent calculation threads, depending on the application setup.
Code
| TTidalWindowCalculationScheduler | Uses a schedule to determine if a new TTidalWindowCalculation has to be calculated and fires a TTidalWindowCalculatorThread. |
| TTidalWindowCalculatorThread | Uses a TTidalWindowCalculator to calculate a TTidalWindowCalculation assigned by the scheduler. |
| TTidalWindowCalculation | A subclass of TProtideCalculation which holds information about the TTidalWindowRequest and the TTidalWindowCalculationSettings it needs to be calculated with. |
| TTidalWindowCalculator | Loads all necessary information to be able to calculate a TTidalWindowCalculation, including TProtidePredictors, a TVerticalMotionCalculator and a TSafeTimeLocationTableCalculator. Resulting in a TTimeLocationTable to determine possible ship routes. |
| TProtidePredictors | Gathers all prediction data for a specific channel and period to determine water conditions the ship will encounter. |
| TVerticalMotionCalculator | Models the vertical ship movement based on water conditions and ship dimensions provided. Uses the TAmarconVerticalMotionCalculator for probabilistic tidal window calculations. |
| TTimeLocationSafetyAnalyzer | Combines prediction data, vertical ship movements, channel and ship information to analyze safety per time / location combination. |
| TSafeTimeLocationTableCalculator | Uses a TTimeLocationSafetyAnalyzer to analyze ship safety on provided kilometer positions within a certain period using a bisection root finding algorithm. |
| TTimeLocationTable | Holds (safe) time intervals per kilometer position. |