The first step in a data analysis project is to create the most accurate model of the ship (also known as a digital twin). This important step conditions the level of detail available in the ship context data. Depending on the complexity of the ship to model (an optimist is less complex than an ULTIM trimaran) and the desired level of detail, this step can take varying amounts of time for the Hydroscope team to implement, and we cannot easily set a general price for it. However, if your boat is part of an already supported class of yacht, you’re in luck, you won’t be charged for this step! Otherwise, feel free to get in touch to discuss your project with us and get a quote.
parts #
Hydroscope models a ship as a collection of different parts, each representing the subsystem onboard the ship. Each part can have a multitude of characteristics associated to it, defining the part itself, how the crew can act upon it and how it interacts with the rest of the yacht. Depending on the desired amount of detail, this approach allows a very fine level of detail, if the time is taken for instance to model every single electronic device, every pulley block, every sensor and actuator on board. This is not always necessary for every project but being as detailed as possible cannot do any harm and it could yield useful insights down the line.
specifications #
All parts are given a mass to help keep track of the overall ship’s displacement and inertia. Depending on what system they represent, they can also have other variables describing them. For instance the specifications of an inboard engine might look something like this :
"mass": "106.0 kg",
"max_power": "21.0 hp",
"full_throttle_rpm": "3.6 krpm",
"piston_displacement": "719.0 ml",
"gear_reduction_ratio": "2.0",
states #
Each part can have any number of states, representing how the part can change its characteristics depending on how it’s used. An electronic device might change it’s current draw when it is in use, a appendage might vary it’s surface roughness depending on weather it’s been cleaned recently, and a sail might change it’s projected sail area when it is reefed as shown below :
"states": {
"Reef": {
"M0": {"specs": {"projected_sail_area": "39.05 m ** 2"}},
"M1": {"specs": {"projected_sail_area": "33.97 m ** 2"}},
"M2": {"specs": {"projected_sail_area": "25.77 m ** 2"}},
"M3": {"specs": {"projected_sail_area": "19.525 m ** 2"}}
}
}
trims #
Parts can have trims, which are simple variable names describing a way to act on a part’s performance. Simply knowing that the variable exists is enough for Hydroscope to ask for the value of the trim when logging the data, to track it in the ship data and finally to be able to select and compare data based on that variable. For example a simple foil might require two specific variables to trim it :
"trims": [
"foil_rake",
"foil_cant"
]
fluxes & capacities #
Parts have the ability to interact and exchange energy or matter with other parts. This is represented by two quantities, the capacity representing how much of a given variable is stored in the part and fluxes which represent the rate at which the variable is entering or exiting the part. When they are connected to other parts, this can for instance track the evolution of the weight of a fuel tank (see below) as it is being depleted by the engine.
"capacity": [["diesel_volume", "40.0 l", "0.0 l", "39.0 l"]],
"flux": {"diesel_volume": "-5.0 l / h"}
ship #
The different parts can be assembled to form a ship, where they can interact together. In the ship-level view, the main characteristics of the ship can be computed (displacement and inertia) or defined (length overall, air and water draft). To do this the parts have to positioned relatively to one another, and connected together. Their states can also be set jointly, to define ship configurations which simplify the task of setting up the ship in the data logging step.
reference frames #
Several reference frames can be defined in the ship model. These give the position of the center of gravity of a part relative to the other parts of the boat, which enables the accurate computation of the displacement, center of gravity and inertia of the yacht. The parts can change the reference frame where they are positioned as they are moved in the boat (when stacking for instance), especially in the case of stacking.
"Port Rudder Bearing": {
"position": ["260.0 mm", "-1.22 m", "200.0 mm" ],
"orientation_mode": "Nautical",
"orientation": ["0.0 deg", "0.0 deg", "0.0 deg"],
"variable_dependant": false,
"reference": "Ship Frame",
"tack_sensitivity": false
}
configurations #
To simplify the management of all these different parts, trims, frames, etc…, configuration have been implemented. They allow modifying almost all aspects of the ship and it’s parts and to group this bunch of settings under a single name. In the code excerpt bellow the sailing configuration MOJ1 is defined by placing the mainsail at the M0 CG reference frame in the M0 state, as well as the J1 sail at the J1 CG reference frame in the J1 state. This configuration can then be used to filter the sailing data accordingly without having to manually specify all the details of the configuration. It is also a much easier and natural way to explore data.
"M0J1": {
"type": "Sail",
"parts": {
"Mainsail": {"inertia_frame": "M0 CG",
"states": {"Reef": "M0"}},
"J1": {"inertia_frame": "J1 CG",
"states": {"Reef": "J1"}},
"J2": {"inertia_frame": null,
"states": {"Reef": "Furled"}},
"A2": {"inertia_frame": null,
"states": {"Reef": "Furled"}},
}
}
operations #
Parts with capacities and fluxes can be paired together through a connection to exchange energy, information or matter. That way Hydroscope can keep tabs on where the mass of your supplies (fresh water, gasoil, food, etc…) and where they are located. The amount of electric energy in the batteries can also be tracked by connecting electric devices to the battery as is the case bellow :
"connections": [[
"electric_energy",
"NKE Top Multidisplay",
"Starboard Service Battery"
]]