diff --git a/RunFEEMSSim/RunFeemsSim/__init__.py b/RunFEEMSSim/RunFeemsSim/__init__.py index d31c31e..788da1f 100644 --- a/RunFEEMSSim/RunFeemsSim/__init__.py +++ b/RunFEEMSSim/RunFeemsSim/__init__.py @@ -1 +1 @@ -__version__ = "0.2.3" +__version__ = "0.2.4" diff --git a/RunFEEMSSim/RunFeemsSim/_modidx.py b/RunFEEMSSim/RunFeemsSim/_modidx.py index 5fc3c1b..63c1d4b 100644 --- a/RunFEEMSSim/RunFeemsSim/_modidx.py +++ b/RunFEEMSSim/RunFeemsSim/_modidx.py @@ -5,7 +5,7 @@ "branch": "master", "doc_baseurl": "/RunFeemsSim/", "doc_host": "https://kevinkoosup.yum@sintef.no.github.io", - "git_url": "https://SintefOceanEnergySystem@dev.azure.com/SintefOceanEnergySystem/FEEMSService/_git/RunFEEMSSim", + "git_url": "https://github.com/SINTEF/FEEMS", "lib_path": "RunFeemsSim", }, "syms": { diff --git a/RunFEEMSSim/settings.ini b/RunFEEMSSim/settings.ini index 34b7d72..6c4d21f 100644 --- a/RunFEEMSSim/settings.ini +++ b/RunFEEMSSim/settings.ini @@ -8,7 +8,7 @@ author = Kevin Koosup Yum author_email = kevinkoosup.yum@sintef.no copyright = SINTEF branch = master -version = 0.2.3 +version = 0.2.4 min_python = 3.10 audience = Developers language = English diff --git a/feems/feems/components_model/component_base.py b/feems/feems/components_model/component_base.py index 4836fa2..8d2dc13 100644 --- a/feems/feems/components_model/component_base.py +++ b/feems/feems/components_model/component_base.py @@ -1,5 +1,6 @@ from typing import Union, List, Tuple, Optional, TypeVar, Dict from dataclasses import dataclass, field +from uuid import uuid4 import numpy as np import pandas as pd @@ -52,6 +53,7 @@ def __init__( power_type: TypePower, rated_power: Power_kW = Power_kW(0.0), rated_speed: Speed_rpm = Speed_rpm(0.0), + uid: Optional[str] = None, ): self.type = type_ self.power_type = power_type @@ -61,6 +63,8 @@ def __init__( self.status = np.ones(1).astype(bool) # Status on/off self.power_input = np.array([0]) # power input self.power_output = np.array([0]) # power output + # if uid is not given, create a random uid + self.uid = str(uuid4()) if uid is None else uid def get_type_name(self) -> str: return self.type.name @@ -94,9 +98,15 @@ def __init__( eff_curve: np.ndarray = np.array([1]), rated_speed: Speed_rpm = Speed_rpm(0.0), file_name: str = None, + uid: Optional[str] = None, ): super(BasicComponent, self).__init__( - name, type_, power_type, rated_power, rated_speed + name=name, + type_=type_, + power_type=power_type, + rated_power=rated_power, + rated_speed=rated_speed, + uid=uid ) if file_name is not None: df = pd.read_csv(file_name, index_col=0) @@ -417,6 +427,7 @@ def __init__( components: List[BasicComponent], rated_power: Power_kW = None, rated_speed: Speed_rpm = None, + uid: Optional[str] = None, ): self.component_names = [] self.components = components @@ -445,4 +456,5 @@ def __init__( rated_power=rated_power, rated_speed=rated_speed, eff_curve=efficiency_points, + uid=uid, ) diff --git a/feems/feems/components_model/component_electric.py b/feems/feems/components_model/component_electric.py index 59a8789..29e6eee 100644 --- a/feems/feems/components_model/component_electric.py +++ b/feems/feems/components_model/component_electric.py @@ -52,6 +52,7 @@ def __init__( rated_speed: Speed_rpm = Speed_rpm(0), switchboard_id: SwbId = SwbId(0), file_name: str = None, + uid: Optional[str] = None, ): super().__init__( type_=type_, @@ -61,6 +62,7 @@ def __init__( rated_speed=rated_speed, eff_curve=eff_curve, file_name=file_name, + uid=uid, ) self.power_type = power_type if power_type in [ @@ -91,6 +93,7 @@ def __init__( switchboard_id: SwbId = SwbId(0), number_poles: int = 1, eff_curve: np.ndarray = np.ones(1), + uid: Optional[str] = None, ): super(ElectricMachine, self).__init__( type_=type_, @@ -100,6 +103,7 @@ def __init__( rated_speed=rated_speed, eff_curve=eff_curve, switchboard_id=switchboard_id, + uid=uid, ) self.number_of_poles = number_poles @@ -203,6 +207,7 @@ def __init__( eff_charging: float = 0.975, eff_discharging: float = 0.975, switchboard_id: SwbId = SwbId(0), + uid: Optional[str] = None, ): rated_power = Power_kW(rated_capacity_kwh * discharge_rate_c) super().__init__( @@ -211,6 +216,7 @@ def __init__( rated_power, power_type=TypePower.ENERGY_STORAGE, switchboard_id=switchboard_id, + uid=uid, ) self.rated_capacity_kWh = rated_capacity_kwh self.charging_rate_C = charging_rate_c @@ -337,9 +343,16 @@ def __init__( switchboard_id: SwbId, rated_power: Power_kW, rated_speed: Speed_rpm = Speed_rpm(0), + uid: Optional[str] = None, ): super(SerialSystemElectric, self).__init__( - type_, power_type, name, components, rated_power, rated_speed + type_=type_, + power_type=power_type, + name=name, + components=components, + rated_power=rated_power, + rated_speed=rated_speed, + uid=uid, ) #: Set the load sharing mode 0 as default value if the component is either a power source, @@ -361,6 +374,7 @@ def __init__( eff_curve: np.ndarray, fuel_type: TypeFuel = TypeFuel.HYDROGEN, fuel_origin: FuelOrigin = FuelOrigin.RENEWABLE_NON_BIO, + uid: Optional[str] = None, ): super(FuelCell, self).__init__( type_=TypeComponent.FUEL_CELL, @@ -368,6 +382,7 @@ def __init__( name=name, rated_power=rated_power, eff_curve=eff_curve, + uid=uid, ) self.fuel_type = fuel_type self.fuel_origin = fuel_origin @@ -441,6 +456,7 @@ def __init__( converter: ElectricComponent, switchboard_id: SwbId, number_modules: int = 1, + uid: Optional[str] = None, ): super(FuelCellSystem, self).__init__( name=name, @@ -449,6 +465,7 @@ def __init__( eff_curve=converter._efficiency_points, power_type=TypePower.POWER_SOURCE, switchboard_id=switchboard_id, + uid=uid, ) self.converter = converter self.fuel_cell = fuel_cell_module @@ -515,6 +532,7 @@ def __init__( battery: Battery, converter: ElectricComponent, switchboard_id: SwbId, + uid: Optional[str] = None, ): super().__init__( name=name, @@ -525,6 +543,7 @@ def __init__( eff_charging=battery.eff_charging, eff_discharging=battery.eff_discharging, switchboard_id=switchboard_id, + uid=uid, ) self.type = TypeComponent.BATTERY_SYSTEM self.rated_power = converter.rated_power @@ -588,6 +607,7 @@ def __init__( aux_engine: Engine, generator: ElectricMachine, rectifier: ElectricComponent = None, + uid: Optional[str] = None, ): super(Genset, self).__init__( name=name, @@ -595,6 +615,7 @@ def __init__( power_type=TypePower.POWER_SOURCE, rated_power=generator.rated_power, rated_speed=generator.rated_speed, + uid=uid, ) self.fuel_type = aux_engine.fuel_type self.aux_engine = aux_engine @@ -666,6 +687,7 @@ def __init__( rated_power: Power_kW, rated_speed: Speed_rpm = Speed_rpm(0), shaft_line_id: int = 1, + uid: Optional[str] = None, ): super(PTIPTO, self).__init__( TypeComponent.PTI_PTO_SYSTEM, @@ -675,6 +697,7 @@ def __init__( switchboard_id, rated_power, rated_speed, + uid=uid, ) self.shaft_line_id = shaft_line_id self.full_pti_mode = np.zeros(1).astype(bool) @@ -691,6 +714,7 @@ class SuperCapacitor(ElectricComponent): :param eff_charging: Efficiency for charging in percentage :param eff_discharging: Efficiency for discharging in percentage :param switchboard_id: Switchboard ID + :param uid: Unique ID """ def __init__( @@ -702,6 +726,7 @@ def __init__( eff_charging: float = 0.995, eff_discharging: float = 0.995, switchboard_id: SwbId = SwbId(0), + uid: Optional[str] = None, ): super().__init__( TypeComponent.SUPERCAPACITOR, @@ -709,6 +734,7 @@ def __init__( rated_power, power_type=TypePower.ENERGY_STORAGE, switchboard_id=switchboard_id, + uid=uid, ) self.rated_capacity_Wh = rated_capacity_wh self.soc0 = soc0 @@ -821,6 +847,7 @@ def __init__( supercapacitor: SuperCapacitor, converter: ElectricComponent, switchboard_id: SwbId, + uid: Optional[str] = None, ): super().__init__( name=name, @@ -830,6 +857,7 @@ def __init__( eff_charging=supercapacitor.eff_charging, eff_discharging=supercapacitor.eff_discharging, switchboard_id=switchboard_id, + uid=uid, ) self.converter = converter self.supercapacitor = supercapacitor @@ -882,7 +910,11 @@ class ShorePowerConnection(ElectricComponent): """ def __init__( - self, name: str, rated_power: Power_kW, switchboard_id: SwbId = SwbId(0) + self, + name: str, + rated_power: Power_kW, + switchboard_id: SwbId = SwbId(0), + uid: Optional[str] = None, ): super().__init__( TypeComponent.SHORE_POWER, @@ -890,6 +922,7 @@ def __init__( rated_power, power_type=TypePower.POWER_SOURCE, switchboard_id=switchboard_id, + uid=uid, ) @@ -929,6 +962,7 @@ def __init__( name: str, cogas: COGAS, generator: ElectricMachine, + uid: Optional[str] = None, ): super().__init__( name=name, @@ -936,6 +970,7 @@ def __init__( power_type=TypePower.POWER_SOURCE, rated_power=generator.rated_power, rated_speed=generator.rated_speed, + uid=uid, ) self.fuel_type = cogas.fuel_type self.cogas = cogas diff --git a/feems/feems/components_model/component_mechanical.py b/feems/feems/components_model/component_mechanical.py index 8eacb8b..821d831 100644 --- a/feems/feems/components_model/component_mechanical.py +++ b/feems/feems/components_model/component_mechanical.py @@ -72,6 +72,7 @@ def __init__( file_name: str = None, emissions_curves: List[EmissionCurve] = None, engine_cycle_type: EngineCycleType = EngineCycleType.DIESEL, + uid: Optional[str] = None, ): super(Engine, self).__init__( name=name, @@ -79,6 +80,7 @@ def __init__( power_type=TypePower.POWER_SOURCE, rated_power=rated_power, rated_speed=rated_speed, + uid=uid, ) self.fuel_type = fuel_type self.fuel_origin = fuel_origin @@ -238,6 +240,7 @@ def __init__( pilot_fuel_type: TypeFuel.DIESEL, pilot_fuel_origin: FuelOrigin = FuelOrigin.FOSSIL, emissions_curves: List[EmissionCurve] = None, + uid: Optional[str] = None, ): super().__init__( type_=type_, @@ -249,6 +252,7 @@ def __init__( fuel_type=fuel_type, fuel_origin=fuel_origin, emissions_curves=emissions_curves, + uid=uid, ) self.bspfc_curve = bspfc_curve self.pilot_fuel_type = pilot_fuel_type @@ -321,6 +325,7 @@ def __init__( name, engine: Union[Engine, EngineDualFuel], shaft_line_id: int = 1, + uid: Optional[str] = None, ): super().__init__( name=name, @@ -328,6 +333,7 @@ def __init__( type_=TypeComponent.MAIN_ENGINE, rated_power=engine.rated_power, rated_speed=engine.rated_speed, + uid=uid, ) self.engine = engine self.shaft_line_id = shaft_line_id @@ -392,9 +398,17 @@ def __init__( rated_speed: Speed_rpm = Speed_rpm(0), shaft_line_id: int = 1, file_name: str = None, + uid: Optional[str] = None, ): super(MechanicalPropulsionComponent, self).__init__( - type_, power_type, name, rated_power, eff_curve, rated_speed, file_name + type_=type_, + power_type=power_type, + name=name, + rated_power=rated_power, + eff_curve=eff_curve, + rated_speed=rated_speed, + file_name=file_name, + uid=uid, ) self.shaft_line_id = shaft_line_id @@ -406,11 +420,13 @@ def __init__( engine: Union[Engine, EngineDualFuel], gearbox: BasicComponent, shaft_line_id: int = 1, + uid: Optional[str] = None, ): super(MainEngineWithGearBoxForMechanicalPropulsion, self).__init__( name=name, engine=engine, shaft_line_id=shaft_line_id, + uid=uid, ) self.gearbox = gearbox @@ -478,6 +494,7 @@ def __init__( fuel_origin: FuelOrigin = FuelOrigin.FOSSIL, emissions_curves: List[EmissionCurve] = None, nox_calculation_method: NOxCalculationMethod = NOxCalculationMethod.TIER_3, + uid: Optional[str] = None, ): """Constructor for COGES component""" # Validate the inputs for curves. The length of the curves should be the same and the x values should be the same. @@ -505,6 +522,7 @@ def __init__( rated_power=rated_power, eff_curve=eff_curve, rated_speed=rated_speed, + uid=uid, ) self.gas_turbine_power_curve = gas_turbine_power_curve self.steam_turbine_power_curve = steam_turbine_power_curve diff --git a/feems/pyproject.toml b/feems/pyproject.toml index af37cdd..8a8f6b9 100644 --- a/feems/pyproject.toml +++ b/feems/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "feems" -version = "0.10.6" +version = "0.10.7" description = "" authors = ["Kevin Koosup Yum "] readme = "readme.md" diff --git a/machinery-system-structure/00_ConvertToFeems.ipynb b/machinery-system-structure/00_ConvertToFeems.ipynb index 91cd415..c85188a 100644 --- a/machinery-system-structure/00_ConvertToFeems.ipynb +++ b/machinery-system-structure/00_ConvertToFeems.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -37,7 +37,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -87,6 +87,8 @@ "\n", "import MachSysS.system_structure_pb2 as proto\n", "\n", + "_MIN_LENGTH_UID = 5\n", + "\n", "\n", "def convert_proto_point_to_list(point: proto.Point) -> List[float]:\n", " \"\"\"Converts protobuf point to a list\"\"\"\n", @@ -128,6 +130,7 @@ " ),\n", " power_type=power_type,\n", " switchboard_id=switchboard_id,\n", + " uid=proto_component.uid if len(proto_component.uid) > _MIN_LENGTH_UID else None,\n", " )\n", "\n", "\n", @@ -147,6 +150,7 @@ " proto_component.efficiency\n", " ),\n", " switchboard_id=switchboard_id,\n", + " uid=proto_component.uid if len(proto_component.uid) > _MIN_LENGTH_UID else None,\n", " )\n", "\n", "\n", @@ -165,6 +169,11 @@ " ),\n", " fuel_type=TypeFuel(subsystem.fuel_cell.fuel.fuel_type),\n", " fuel_origin=FuelOrigin(subsystem.fuel_cell.fuel.fuel_origin),\n", + " uid=(\n", + " subsystem.fuel_cell.uid\n", + " if len(subsystem.fuel_cell.uid) > _MIN_LENGTH_UID\n", + " else None\n", + " ),\n", " )\n", " converter = convert_proto_electric_component_to_feems(\n", " subsystem.converter1,\n", @@ -178,6 +187,7 @@ " converter=converter,\n", " switchboard_id=switchboard_id,\n", " number_modules=number_modules,\n", + " uid=subsystem.uid if len(subsystem.uid) > _MIN_LENGTH_UID else None,\n", " )\n", "\n", "\n", @@ -243,6 +253,7 @@ " pilot_fuel_origin=FuelOrigin(proto_engine.pilot_fuel.fuel_origin),\n", " nox_calculation_method=nox_calculation_method,\n", " emissions_curves=emission_curves,\n", + " uid=proto_engine.uid if len(proto_engine.uid) > _MIN_LENGTH_UID else None,\n", " )\n", " return Engine(\n", " type_=type_engine,\n", @@ -254,6 +265,7 @@ " fuel_origin=FuelOrigin(proto_engine.main_fuel.fuel_origin),\n", " nox_calculation_method=nox_calculation_method,\n", " emissions_curves=emission_curves,\n", + " uid=proto_engine.uid if len(proto_engine.uid) > _MIN_LENGTH_UID else None,\n", " )\n", "\n", "\n", @@ -287,6 +299,7 @@ " fuel_origin=FuelOrigin(proto_cogas.fuel.fuel_origin),\n", " nox_calculation_method=nox_calculation_method,\n", " emissions_curves=emission_curves,\n", + " uid=proto_cogas.uid if len(proto_cogas.uid) > _MIN_LENGTH_UID else None,\n", " )\n", "\n", "\n", @@ -310,7 +323,11 @@ " switchboard_id=switchboard_id,\n", " )\n", " return Genset(\n", - " name=subsystem.name, aux_engine=engine, generator=generator, rectifier=rectifier\n", + " name=subsystem.name,\n", + " aux_engine=engine,\n", + " generator=generator,\n", + " rectifier=rectifier,\n", + " uid=subsystem.uid if len(subsystem.uid) > _MIN_LENGTH_UID else None,\n", " )\n", "\n", "\n", @@ -325,7 +342,12 @@ " power_type=TypePower.POWER_SOURCE,\n", " switchboard_id=switchboard_id,\n", " )\n", - " return COGES(name=subsystem.name, cogas=cogas, generator=generator)\n", + " return COGES(\n", + " name=subsystem.name,\n", + " cogas=cogas,\n", + " generator=generator,\n", + " uid=subsystem.uid if len(subsystem.uid) > _MIN_LENGTH_UID else None,\n", + " )\n", "\n", "\n", "def convert_proto_battery_to_feems(\n", @@ -340,6 +362,7 @@ " eff_discharging=proto_component.efficiency_discharging,\n", " soc0=proto_component.initial_state_of_charge,\n", " switchboard_id=switchboard_id,\n", + " uid=proto_component.uid if len(proto_component.uid) > _MIN_LENGTH_UID else None,\n", " )\n", "\n", "\n", @@ -360,6 +383,7 @@ " battery=battery,\n", " converter=converter,\n", " switchboard_id=switchboard_id,\n", + " uid=subsystem.uid if len(subsystem.uid) > _MIN_LENGTH_UID else None,\n", " )\n", "\n", "\n", @@ -374,6 +398,7 @@ " eff_discharging=proto_component.efficiency_discharging,\n", " soc0=proto_component.initial_state_of_charge,\n", " switchboard_id=switchboard_id,\n", + " uid=proto_component.uid if len(proto_component.uid) > _MIN_LENGTH_UID else None,\n", " )\n", "\n", "\n", @@ -394,6 +419,7 @@ " supercapacitor=supercapacitor,\n", " converter=converter,\n", " switchboard_id=switchboard_id,\n", + " uid=subsystem.uid if len(subsystem.uid) > _MIN_LENGTH_UID else None,\n", " )\n", "\n", "\n", @@ -477,6 +503,7 @@ " rated_speed=subsystem.rated_speed_rpm,\n", " switchboard_id=switchboard_id,\n", " shaft_line_id=shaft_line_id,\n", + " uid=subsystem.uid if len(subsystem.uid) > _MIN_LENGTH_UID else None,\n", " )\n", "\n", "\n", @@ -502,6 +529,7 @@ " rated_speed=(\n", " None if subsystem.rated_speed_rpm == 0 else subsystem.rated_speed_rpm\n", " ),\n", + " uid=subsystem.uid if len(subsystem.uid) > _MIN_LENGTH_UID else None,\n", " )\n", "\n", "\n", @@ -613,6 +641,11 @@ " type_engine=TypeComponent.MAIN_ENGINE,\n", " ),\n", " shaft_line_id=shaft_line_id,\n", + " uid=(\n", + " sub_system.uid\n", + " if len(sub_system.uid) > _MIN_LENGTH_UID\n", + " else None\n", + " ),\n", " )\n", " )\n", " elif (\n", @@ -628,15 +661,25 @@ " ),\n", " gearbox=BasicComponent(\n", " type_=TypeComponent.GEARBOX,\n", - " name=sub_system.gearbox.name,\n", + " name=sub_system.gear.name,\n", " power_type=TypePower.POWER_TRANSMISSION,\n", " rated_power=sub_system.gear.rated_power_kw,\n", " rated_speed=sub_system.gear.rated_speed_rpm,\n", " eff_curve=convert_proto_efficiency_bsfc_power_to_np_array(\n", " efficiency_bsfc_power=sub_system.gear.efficiency\n", " ),\n", + " uid=(\n", + " sub_system.gear.uid\n", + " if len(sub_system.gear.uid) > _MIN_LENGTH_UID\n", + " else None\n", + " ),\n", " ),\n", " shaft_line_id=shaft_line_id,\n", + " uid=(\n", + " sub_system.uid\n", + " if len(sub_system.uid) > _MIN_LENGTH_UID\n", + " else None\n", + " ),\n", " )\n", " )\n", " elif sub_system.component_type == proto.Subsystem.ComponentType.PTI_PTO_SYSTEM:\n", @@ -681,6 +724,11 @@ " eff_curve=convert_proto_efficiency_bsfc_power_to_np_array(\n", " efficiency_bsfc_power=sub_system.propeller.efficiency\n", " ),\n", + " uid=(\n", + " sub_system.uid\n", + " if len(sub_system.uid) > _MIN_LENGTH_UID\n", + " else None\n", + " ),\n", " )\n", " )\n", " else:\n", @@ -697,7 +745,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -719,9 +767,20 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-05-14 10:42:47,190 - tests.utility - WARNING - Efficiency of generator is not supplied, using random monotonic curve\n", + "2024-05-14 10:42:47,191 - tests.utility - WARNING - Efficiency of engine is not supplied, using random monotonic curve\n", + "2024-05-14 10:42:47,194 - tests.utility - WARNING - Efficiency of generator is not supplied, using random monotonic curve\n", + "2024-05-14 10:42:47,195 - tests.utility - WARNING - Efficiency of engine is not supplied, using random monotonic curve\n" + ] + } + ], "source": [ "# Test conversion\n", "from tests.utility import create_switchboard_with_components\n", @@ -752,7 +811,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -868,7 +927,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -957,7 +1016,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1013,7 +1072,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1074,18 +1133,6 @@ "display_name": "python3", "language": "python", "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.1" } }, "nbformat": 4, diff --git a/machinery-system-structure/01_ConvertToProtobuf.ipynb b/machinery-system-structure/01_ConvertToProtobuf.ipynb index 9d02ddf..f00ba81 100644 --- a/machinery-system-structure/01_ConvertToProtobuf.ipynb +++ b/machinery-system-structure/01_ConvertToProtobuf.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -37,7 +37,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -153,6 +153,7 @@ " rated_speed_rpm=component.rated_speed,\n", " efficiency=convert_efficiency_curve_to_protobuf(component),\n", " order_from_switchboard_or_shaftline=order_from_switchboard,\n", + " uid=component.uid,\n", " )\n", "\n", "\n", @@ -165,6 +166,7 @@ " rated_power_kw=component.rated_power,\n", " efficiency=convert_efficiency_curve_to_protobuf(component),\n", " order_from_switchboard_or_shaftline=order_from_switchboard,\n", + " uid=component.uid,\n", " )\n", "\n", "\n", @@ -181,6 +183,7 @@ " efficiency_discharging=component.eff_discharging,\n", " initial_state_of_charge=component.soc0,\n", " order_from_switchboard_or_shaftline=order_from_switchboard,\n", + " uid=component.uid,\n", " )\n", "\n", "\n", @@ -196,6 +199,7 @@ " efficiency_discharging=component.eff_discharging,\n", " initial_state_of_charge=component.soc0,\n", " order_from_switchboard_or_shaftline=order_from_switchboard,\n", + " uid=component.uid,\n", " )\n", "\n", "\n", @@ -205,7 +209,14 @@ ") -> proto.Subsystem:\n", " \"\"\"Convert serial electric system or PTI/PTO component to protobuf message\"\"\"\n", " order = initial_order_from_switchboard\n", - " subsystem = proto.Subsystem()\n", + " subsystem = proto.Subsystem(\n", + " name=component.name,\n", + " rated_power_kw=component.rated_power,\n", + " rated_speed_rpm=component.rated_speed,\n", + " component_type=component.type.value,\n", + " power_type=component.power_type.value,\n", + " uid=component.uid,\n", + " )\n", " for subcomponent in component.components:\n", " if subcomponent.type == TypeComponent.TRANSFORMER:\n", " subsystem.transformer.CopyFrom(\n", @@ -298,6 +309,7 @@ " engine_feems.emission_curves\n", " ),\n", " order_from_switchboard_or_shaftline=order_from_shaftline_or_switchboard,\n", + " uid=engine_feems.uid,\n", " )\n", " if isinstance(engine_feems, EngineDualFuel):\n", " engine.pilot_bsfc.CopyFrom(\n", @@ -331,6 +343,7 @@ " ),\n", " emission_curves=convert_emission_curves_to_protobuf(component.emission_curves),\n", " order_from_switchboard_or_shaftline=order_from_shaftline_or_switchboard,\n", + " uid=component.uid,\n", " )\n", " if component.gas_turbine_power_curve is not None:\n", " cogas.gas_turbine_power_curve.CopyFrom(\n", @@ -357,6 +370,7 @@ " name=component.name,\n", " rated_power_kw=component.rated_power,\n", " rated_speed_rpm=component.rated_speed,\n", + " uid=component.uid,\n", " )\n", " if component.type == TypeComponent.GENERATOR:\n", " subsystem.electric_machine.CopyFrom(\n", @@ -382,6 +396,7 @@ " ),\n", " number_modules=component.number_modules,\n", " order_from_switchboard_or_shaftline=2,\n", + " uid=component.fuel_cell.uid,\n", " )\n", " )\n", " elif component.type == TypeComponent.COGES:\n", @@ -477,6 +492,7 @@ " rated_speed_rpm=gear.rated_speed,\n", " efficiency=convert_efficiency_curve_to_protobuf(gear),\n", " order_from_switchboard_or_shaftline=1,\n", + " uid=gear.uid,\n", " )\n", "\n", " for component in shaftline_feems.components:\n", @@ -486,6 +502,7 @@ " name=component.name,\n", " rated_power_kw=component.rated_power,\n", " rated_speed_rpm=component.rated_speed,\n", + " uid=component.uid,\n", " )\n", " if component.type == TypeComponent.MAIN_ENGINE:\n", " component = cast(MainEngineForMechanicalPropulsion, component)\n", @@ -515,6 +532,7 @@ " rated_speed_rpm=component.gearbox.rated_speed,\n", " efficiency=convert_efficiency_curve_to_protobuf(component.gearbox),\n", " order_from_switchboard_or_shaftline=1,\n", + " uid=component.gearbox.uid,\n", " )\n", " )\n", " elif component.type == TypeComponent.PROPELLER_LOAD:\n", @@ -525,6 +543,7 @@ " efficiency=convert_efficiency_curve_to_protobuf(component),\n", " propulsor_id=propeller_id,\n", " order_from_switchboard_or_shaftline=2,\n", + " uid=component.uid,\n", " )\n", " )\n", " propeller_id += 1\n", @@ -552,7 +571,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -905,7 +924,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -992,7 +1011,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -1994,7 +2013,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -2165,7 +2184,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -2348,7 +2367,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -3012,7 +3031,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -3937,7 +3956,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -3969,18 +3988,6 @@ "display_name": "python3", "language": "python", "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.1" } }, "nbformat": 4, diff --git a/machinery-system-structure/02_Utility.ipynb b/machinery-system-structure/02_Utility.ipynb index 5d71383..11325d3 100644 --- a/machinery-system-structure/02_Utility.ipynb +++ b/machinery-system-structure/02_Utility.ipynb @@ -76,10 +76,6 @@ "display_name": "python3", "language": "python", "name": "python3" - }, - "language_info": { - "name": "python", - "version": "3.12.1" } }, "nbformat": 4, diff --git a/machinery-system-structure/MachSysS/__init__.py b/machinery-system-structure/MachSysS/__init__.py index 7bbb2ef..4c513f3 100644 --- a/machinery-system-structure/MachSysS/__init__.py +++ b/machinery-system-structure/MachSysS/__init__.py @@ -1 +1 @@ -__version__ = "0.6.5" +__version__ = "0.6.6" diff --git a/machinery-system-structure/MachSysS/_modidx.py b/machinery-system-structure/MachSysS/_modidx.py index 3d8d86d..5d412d7 100644 --- a/machinery-system-structure/MachSysS/_modidx.py +++ b/machinery-system-structure/MachSysS/_modidx.py @@ -5,7 +5,7 @@ "branch": "master", "doc_baseurl": "/MachSysS/", "doc_host": "https://keviny.github.io", - "git_url": "https://SintefOceanEnergySystem@dev.azure.com/SintefOceanEnergySystem/MachinerySystemStucture/_git/MachinerySystemStucture", + "git_url": "https://github.com/SINTEF/FEEMS", "lib_path": "MachSysS", }, "syms": { diff --git a/machinery-system-structure/MachSysS/convert_to_feems.py b/machinery-system-structure/MachSysS/convert_to_feems.py index 3194ed0..5b9ea69 100644 --- a/machinery-system-structure/MachSysS/convert_to_feems.py +++ b/machinery-system-structure/MachSysS/convert_to_feems.py @@ -79,6 +79,8 @@ import MachSysS.system_structure_pb2 as proto +_MIN_LENGTH_UID = 5 + def convert_proto_point_to_list(point: proto.Point) -> List[float]: """Converts protobuf point to a list""" @@ -120,6 +122,7 @@ def convert_proto_electric_component_to_feems( ), power_type=power_type, switchboard_id=switchboard_id, + uid=proto_component.uid if len(proto_component.uid) > _MIN_LENGTH_UID else None, ) @@ -139,6 +142,7 @@ def convert_proto_electric_machine_to_feems( proto_component.efficiency ), switchboard_id=switchboard_id, + uid=proto_component.uid if len(proto_component.uid) > _MIN_LENGTH_UID else None, ) @@ -157,6 +161,11 @@ def convert_proto_fuel_cell_system_to_feems( ), fuel_type=TypeFuel(subsystem.fuel_cell.fuel.fuel_type), fuel_origin=FuelOrigin(subsystem.fuel_cell.fuel.fuel_origin), + uid=( + subsystem.fuel_cell.uid + if len(subsystem.fuel_cell.uid) > _MIN_LENGTH_UID + else None + ), ) converter = convert_proto_electric_component_to_feems( subsystem.converter1, @@ -170,6 +179,7 @@ def convert_proto_fuel_cell_system_to_feems( converter=converter, switchboard_id=switchboard_id, number_modules=number_modules, + uid=subsystem.uid if len(subsystem.uid) > _MIN_LENGTH_UID else None, ) @@ -235,6 +245,7 @@ def convert_proto_engine_to_feems( pilot_fuel_origin=FuelOrigin(proto_engine.pilot_fuel.fuel_origin), nox_calculation_method=nox_calculation_method, emissions_curves=emission_curves, + uid=proto_engine.uid if len(proto_engine.uid) > _MIN_LENGTH_UID else None, ) return Engine( type_=type_engine, @@ -246,6 +257,7 @@ def convert_proto_engine_to_feems( fuel_origin=FuelOrigin(proto_engine.main_fuel.fuel_origin), nox_calculation_method=nox_calculation_method, emissions_curves=emission_curves, + uid=proto_engine.uid if len(proto_engine.uid) > _MIN_LENGTH_UID else None, ) @@ -279,6 +291,7 @@ def convert_proto_cogas_to_feems( fuel_origin=FuelOrigin(proto_cogas.fuel.fuel_origin), nox_calculation_method=nox_calculation_method, emissions_curves=emission_curves, + uid=proto_cogas.uid if len(proto_cogas.uid) > _MIN_LENGTH_UID else None, ) @@ -302,7 +315,11 @@ def convert_proto_genset_to_feems( switchboard_id=switchboard_id, ) return Genset( - name=subsystem.name, aux_engine=engine, generator=generator, rectifier=rectifier + name=subsystem.name, + aux_engine=engine, + generator=generator, + rectifier=rectifier, + uid=subsystem.uid if len(subsystem.uid) > _MIN_LENGTH_UID else None, ) @@ -317,7 +334,12 @@ def convert_proto_coges_to_feems( power_type=TypePower.POWER_SOURCE, switchboard_id=switchboard_id, ) - return COGES(name=subsystem.name, cogas=cogas, generator=generator) + return COGES( + name=subsystem.name, + cogas=cogas, + generator=generator, + uid=subsystem.uid if len(subsystem.uid) > _MIN_LENGTH_UID else None, + ) def convert_proto_battery_to_feems( @@ -332,6 +354,7 @@ def convert_proto_battery_to_feems( eff_discharging=proto_component.efficiency_discharging, soc0=proto_component.initial_state_of_charge, switchboard_id=switchboard_id, + uid=proto_component.uid if len(proto_component.uid) > _MIN_LENGTH_UID else None, ) @@ -352,6 +375,7 @@ def convert_proto_battery_system_to_feems( battery=battery, converter=converter, switchboard_id=switchboard_id, + uid=subsystem.uid if len(subsystem.uid) > _MIN_LENGTH_UID else None, ) @@ -366,6 +390,7 @@ def convert_proto_supercapacitor_to_feems( eff_discharging=proto_component.efficiency_discharging, soc0=proto_component.initial_state_of_charge, switchboard_id=switchboard_id, + uid=proto_component.uid if len(proto_component.uid) > _MIN_LENGTH_UID else None, ) @@ -386,6 +411,7 @@ def convert_proto_supercapacitor_system_to_feems( supercapacitor=supercapacitor, converter=converter, switchboard_id=switchboard_id, + uid=subsystem.uid if len(subsystem.uid) > _MIN_LENGTH_UID else None, ) @@ -469,6 +495,7 @@ def convert_proto_pti_pto_subsystem_to_feems( rated_speed=subsystem.rated_speed_rpm, switchboard_id=switchboard_id, shaft_line_id=shaft_line_id, + uid=subsystem.uid if len(subsystem.uid) > _MIN_LENGTH_UID else None, ) @@ -494,6 +521,7 @@ def convert_proto_serial_subsystem_to_feems( rated_speed=( None if subsystem.rated_speed_rpm == 0 else subsystem.rated_speed_rpm ), + uid=subsystem.uid if len(subsystem.uid) > _MIN_LENGTH_UID else None, ) @@ -605,6 +633,11 @@ def convert_proto_shaftline_to_feems( type_engine=TypeComponent.MAIN_ENGINE, ), shaft_line_id=shaft_line_id, + uid=( + sub_system.uid + if len(sub_system.uid) > _MIN_LENGTH_UID + else None + ), ) ) elif ( @@ -620,15 +653,25 @@ def convert_proto_shaftline_to_feems( ), gearbox=BasicComponent( type_=TypeComponent.GEARBOX, - name=sub_system.gearbox.name, + name=sub_system.gear.name, power_type=TypePower.POWER_TRANSMISSION, rated_power=sub_system.gear.rated_power_kw, rated_speed=sub_system.gear.rated_speed_rpm, eff_curve=convert_proto_efficiency_bsfc_power_to_np_array( efficiency_bsfc_power=sub_system.gear.efficiency ), + uid=( + sub_system.gear.uid + if len(sub_system.gear.uid) > _MIN_LENGTH_UID + else None + ), ), shaft_line_id=shaft_line_id, + uid=( + sub_system.uid + if len(sub_system.uid) > _MIN_LENGTH_UID + else None + ), ) ) elif sub_system.component_type == proto.Subsystem.ComponentType.PTI_PTO_SYSTEM: @@ -673,6 +716,11 @@ def convert_proto_shaftline_to_feems( eff_curve=convert_proto_efficiency_bsfc_power_to_np_array( efficiency_bsfc_power=sub_system.propeller.efficiency ), + uid=( + sub_system.uid + if len(sub_system.uid) > _MIN_LENGTH_UID + else None + ), ) ) else: diff --git a/machinery-system-structure/MachSysS/convert_to_protobuf.py b/machinery-system-structure/MachSysS/convert_to_protobuf.py index bbe6282..939af79 100644 --- a/machinery-system-structure/MachSysS/convert_to_protobuf.py +++ b/machinery-system-structure/MachSysS/convert_to_protobuf.py @@ -135,6 +135,7 @@ def convert_electric_machine_to_protobuf( rated_speed_rpm=component.rated_speed, efficiency=convert_efficiency_curve_to_protobuf(component), order_from_switchboard_or_shaftline=order_from_switchboard, + uid=component.uid, ) @@ -147,6 +148,7 @@ def convert_electric_component_to_protobuf( rated_power_kw=component.rated_power, efficiency=convert_efficiency_curve_to_protobuf(component), order_from_switchboard_or_shaftline=order_from_switchboard, + uid=component.uid, ) @@ -163,6 +165,7 @@ def convert_battery_component_to_protobuf( efficiency_discharging=component.eff_discharging, initial_state_of_charge=component.soc0, order_from_switchboard_or_shaftline=order_from_switchboard, + uid=component.uid, ) @@ -178,6 +181,7 @@ def convert_supercapacitor_component_to_protobuf( efficiency_discharging=component.eff_discharging, initial_state_of_charge=component.soc0, order_from_switchboard_or_shaftline=order_from_switchboard, + uid=component.uid, ) @@ -187,7 +191,14 @@ def convert_serial_electric_system_to_protobuf( ) -> proto.Subsystem: """Convert serial electric system or PTI/PTO component to protobuf message""" order = initial_order_from_switchboard - subsystem = proto.Subsystem() + subsystem = proto.Subsystem( + name=component.name, + rated_power_kw=component.rated_power, + rated_speed_rpm=component.rated_speed, + component_type=component.type.value, + power_type=component.power_type.value, + uid=component.uid, + ) for subcomponent in component.components: if subcomponent.type == TypeComponent.TRANSFORMER: subsystem.transformer.CopyFrom( @@ -280,6 +291,7 @@ def convert_engine_component_to_protobuf( engine_feems.emission_curves ), order_from_switchboard_or_shaftline=order_from_shaftline_or_switchboard, + uid=engine_feems.uid, ) if isinstance(engine_feems, EngineDualFuel): engine.pilot_bsfc.CopyFrom( @@ -313,6 +325,7 @@ def convert_cogas_component_to_protobuf( ), emission_curves=convert_emission_curves_to_protobuf(component.emission_curves), order_from_switchboard_or_shaftline=order_from_shaftline_or_switchboard, + uid=component.uid, ) if component.gas_turbine_power_curve is not None: cogas.gas_turbine_power_curve.CopyFrom( @@ -339,6 +352,7 @@ def convert_switchboard_to_protobuf( name=component.name, rated_power_kw=component.rated_power, rated_speed_rpm=component.rated_speed, + uid=component.uid, ) if component.type == TypeComponent.GENERATOR: subsystem.electric_machine.CopyFrom( @@ -364,6 +378,7 @@ def convert_switchboard_to_protobuf( ), number_modules=component.number_modules, order_from_switchboard_or_shaftline=2, + uid=component.fuel_cell.uid, ) ) elif component.type == TypeComponent.COGES: @@ -459,6 +474,7 @@ def convert_shaftline_to_protobuf(shaftline_feems: ShaftLine) -> proto.ShaftLine rated_speed_rpm=gear.rated_speed, efficiency=convert_efficiency_curve_to_protobuf(gear), order_from_switchboard_or_shaftline=1, + uid=gear.uid, ) for component in shaftline_feems.components: @@ -468,6 +484,7 @@ def convert_shaftline_to_protobuf(shaftline_feems: ShaftLine) -> proto.ShaftLine name=component.name, rated_power_kw=component.rated_power, rated_speed_rpm=component.rated_speed, + uid=component.uid, ) if component.type == TypeComponent.MAIN_ENGINE: component = cast(MainEngineForMechanicalPropulsion, component) @@ -497,6 +514,7 @@ def convert_shaftline_to_protobuf(shaftline_feems: ShaftLine) -> proto.ShaftLine rated_speed_rpm=component.gearbox.rated_speed, efficiency=convert_efficiency_curve_to_protobuf(component.gearbox), order_from_switchboard_or_shaftline=1, + uid=component.gearbox.uid, ) ) elif component.type == TypeComponent.PROPELLER_LOAD: @@ -507,6 +525,7 @@ def convert_shaftline_to_protobuf(shaftline_feems: ShaftLine) -> proto.ShaftLine efficiency=convert_efficiency_curve_to_protobuf(component), propulsor_id=propeller_id, order_from_switchboard_or_shaftline=2, + uid=component.uid, ) ) propeller_id += 1 diff --git a/machinery-system-structure/MachSysS/feems_result_pb2.pyi b/machinery-system-structure/MachSysS/feems_result_pb2.pyi index d03307e..c1cbf20 100644 --- a/machinery-system-structure/MachSysS/feems_result_pb2.pyi +++ b/machinery-system-structure/MachSysS/feems_result_pb2.pyi @@ -1,4 +1,4 @@ -import system_structure_pb2 as _system_structure_pb2 +from . import system_structure_pb2 as _system_structure_pb2 from google.protobuf.internal import containers as _containers from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message diff --git a/machinery-system-structure/MachSysS/system_structure_pb2.py b/machinery-system-structure/MachSysS/system_structure_pb2.py index 2a6c613..e1cf6b1 100644 --- a/machinery-system-structure/MachSysS/system_structure_pb2.py +++ b/machinery-system-structure/MachSysS/system_structure_pb2.py @@ -14,7 +14,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x16system_structure.proto\x12\x18machinerySystemStructure"\x1d\n\x05Point\x12\t\n\x01x\x18\x01 \x01(\x01\x12\t\n\x01y\x18\x02 \x01(\x01":\n\x07\x43urve1D\x12/\n\x06points\x18\x01 \x03(\x0b\x32\x1f.machinerySystemStructure.Point"_\n\tBSFCCurve\x12\x0f\n\x07x_label\x18\x01 \x01(\t\x12\x0f\n\x07y_label\x18\x02 \x01(\t\x12\x30\n\x05\x63urve\x18\x03 \x01(\x0b\x32!.machinerySystemStructure.Curve1D"e\n\x0f\x45\x66\x66iciencyCurve\x12\x0f\n\x07x_label\x18\x01 \x01(\t\x12\x0f\n\x07y_label\x18\x02 \x01(\t\x12\x30\n\x05\x63urve\x18\x03 \x01(\x0b\x32!.machinerySystemStructure.Curve1D"X\n\x04\x42SFC\x12\x32\n\x05\x63urve\x18\x01 \x01(\x0b\x32#.machinerySystemStructure.BSFCCurve\x12\x12\n\x05value\x18\x02 \x01(\x01H\x00\x88\x01\x01\x42\x08\n\x06_value"s\n\nEfficiency\x12=\n\x05\x63urve\x18\x01 \x01(\x0b\x32).machinerySystemStructure.EfficiencyCurveH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\x01H\x01\x88\x01\x01\x42\x08\n\x06_curveB\x08\n\x06_value"`\n\nPowerCurve\x12\x0f\n\x07x_label\x18\x01 \x01(\t\x12\x0f\n\x07y_label\x18\x02 \x01(\t\x12\x30\n\x05\x63urve\x18\x03 \x01(\x0b\x32!.machinerySystemStructure.Curve1D"\x85\x01\n\x19PropulsionPowerTimeSeries\x12\x0f\n\x07x_label\x18\x01 \x01(\t\x12\x0f\n\x07y_label\x18\x02 \x01(\t\x12\x14\n\x0cpropulsor_id\x18\x03 \x01(\r\x12\x30\n\x05\x63urve\x18\x04 \x01(\x0b\x32!.machinerySystemStructure.Curve1D"\x85\x01\n\x17\x41uxiliaryLoadTimeSeries\x12\x0f\n\x07x_label\x18\x01 \x01(\t\x12\x0f\n\x07y_label\x18\x02 \x01(\t\x12\x16\n\x0eswitchboard_id\x18\x03 \x01(\r\x12\x30\n\x05\x63urve\x18\x04 \x01(\x0b\x32!.machinerySystemStructure.Curve1D"8\n\rAuxiliaryLoad\x12\x16\n\x0eswitchboard_id\x18\x01 \x01(\r\x12\x0f\n\x07load_kw\x18\x02 \x01(\x01"\xa2\x01\n\rEmissionCurve\x12\x0f\n\x07x_label\x18\x01 \x01(\t\x12\x0f\n\x07y_label\x18\x02 \x01(\t\x12\x30\n\x05\x63urve\x18\x03 \x01(\x0b\x32!.machinerySystemStructure.Curve1D\x12=\n\remission_type\x18\x04 \x01(\x0e\x32&.machinerySystemStructure.EmissionType"\xd8\x01\n\x04Gear\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\ngear_ratio\x18\x02 \x01(\x01\x12\x16\n\x0erated_power_kw\x18\x03 \x01(\x01\x12\x17\n\x0frated_speed_rpm\x18\x04 \x01(\x01\x12\x38\n\nefficiency\x18\x05 \x01(\x0b\x32$.machinerySystemStructure.Efficiency\x12+\n#order_from_switchboard_or_shaftline\x18\x06 \x01(\r\x12\x16\n\x0eunit_price_usd\x18\x07 \x01(\x01"x\n\x04\x46uel\x12\x35\n\tfuel_type\x18\x01 \x01(\x0e\x32".machinerySystemStructure.FuelType\x12\x39\n\x0b\x66uel_origin\x18\x02 \x01(\x0e\x32$.machinerySystemStructure.FuelOrigin"\x85\x06\n\x06\x45ngine\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x16\n\x0erated_power_kw\x18\x02 \x01(\x01\x12\x17\n\x0frated_speed_rpm\x18\x03 \x01(\x01\x12,\n\x04\x62sfc\x18\x04 \x01(\x0b\x32\x1e.machinerySystemStructure.BSFC\x12\x31\n\tmain_fuel\x18\x05 \x01(\x0b\x32\x1e.machinerySystemStructure.Fuel\x12+\n#order_from_switchboard_or_shaftline\x18\x06 \x01(\r\x12\x32\n\npilot_bsfc\x18\x07 \x01(\x0b\x32\x1e.machinerySystemStructure.BSFC\x12\x32\n\npilot_fuel\x18\x08 \x01(\x0b\x32\x1e.machinerySystemStructure.Fuel\x12U\n\x16nox_calculation_method\x18\t \x01(\x0e\x32\x35.machinerySystemStructure.Engine.NOxCalculationMethod\x12@\n\x0f\x65mission_curves\x18\n \x03(\x0b\x32\'.machinerySystemStructure.EmissionCurve\x12K\n\x11\x65ngine_cycle_type\x18\x0b \x01(\x0e\x32\x30.machinerySystemStructure.Engine.EngineCycleType\x12\x16\n\x0eunit_price_usd\x18\x0c \x01(\x01\x12\x15\n\rstart_delay_s\x18\r \x01(\x01\x12\x19\n\x11turn_off_power_kw\x18\x0e \x01(\x01"E\n\x14NOxCalculationMethod\x12\n\n\x06TIER_2\x10\x00\x12\n\n\x06TIER_1\x10\x01\x12\n\n\x06TIER_3\x10\x02\x12\t\n\x05\x43URVE\x10\x03"O\n\x0f\x45ngineCycleType\x12\x08\n\x04NONE\x10\x00\x12\n\n\x06\x44IESEL\x10\x01\x12\x08\n\x04OTTO\x10\x02\x12\x1c\n\x18LEAN_BURN_SPARK_IGNITION\x10\x03"\xce\x04\n\x05\x43OGAS\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x16\n\x0erated_power_kw\x18\x02 \x01(\x01\x12\x17\n\x0frated_speed_rpm\x18\x03 \x01(\x01\x12\x38\n\nefficiency\x18\x04 \x01(\x0b\x32$.machinerySystemStructure.Efficiency\x12\x45\n\x17gas_turbine_power_curve\x18\x05 \x01(\x0b\x32$.machinerySystemStructure.PowerCurve\x12G\n\x19steam_turbine_power_curve\x18\x06 \x01(\x0b\x32$.machinerySystemStructure.PowerCurve\x12,\n\x04\x66uel\x18\x07 \x01(\x0b\x32\x1e.machinerySystemStructure.Fuel\x12+\n#order_from_switchboard_or_shaftline\x18\x08 \x01(\r\x12U\n\x16nox_calculation_method\x18\t \x01(\x0e\x32\x35.machinerySystemStructure.Engine.NOxCalculationMethod\x12@\n\x0f\x65mission_curves\x18\n \x03(\x0b\x32\'.machinerySystemStructure.EmissionCurve\x12\x16\n\x0eunit_price_usd\x18\x0b \x01(\x01\x12\x15\n\rstart_delay_s\x18\x0c \x01(\x01\x12\x19\n\x11turn_off_power_kw\x18\r \x01(\x01"\xcf\x01\n\x0f\x45lectricMachine\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x16\n\x0erated_power_kw\x18\x02 \x01(\x01\x12\x17\n\x0frated_speed_rpm\x18\x03 \x01(\x01\x12\x38\n\nefficiency\x18\x04 \x01(\x0b\x32$.machinerySystemStructure.Efficiency\x12+\n#order_from_switchboard_or_shaftline\x18\x05 \x01(\r\x12\x16\n\x0eunit_price_usd\x18\x06 \x01(\x01"\x82\x03\n\x07\x42\x61ttery\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1b\n\x13\x65nergy_capacity_kwh\x18\x02 \x01(\x01\x12\x1d\n\x15rated_charging_rate_c\x18\x03 \x01(\x01\x12 \n\x18rated_discharging_rate_c\x18\x04 \x01(\x01\x12\x1b\n\x13\x65\x66\x66iciency_charging\x18\x05 \x01(\x01\x12\x1e\n\x16\x65\x66\x66iciency_discharging\x18\x06 \x01(\x01\x12\x1f\n\x17initial_state_of_charge\x18\x07 \x01(\x01\x12+\n#order_from_switchboard_or_shaftline\x18\x08 \x01(\r\x12\x16\n\x0eunit_price_usd\x18\t \x01(\x01\x12&\n\x1eself_discharge_percent_per_day\x18\n \x01(\x01\x12\x1f\n\x17state_of_energy_minimum\x18\x0b \x01(\x01\x12\x1f\n\x17state_of_energy_maximum\x18\x0c \x01(\x01"\xb8\x01\n\x11\x45lectricComponent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x16\n\x0erated_power_kw\x18\x02 \x01(\x01\x12\x38\n\nefficiency\x18\x03 \x01(\x0b\x32$.machinerySystemStructure.Efficiency\x12+\n#order_from_switchboard_or_shaftline\x18\x04 \x01(\r\x12\x16\n\x0eunit_price_usd\x18\x05 \x01(\x01"\xac\x02\n\x08\x46uelCell\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x16\n\x0erated_power_kw\x18\x02 \x01(\x01\x12\x38\n\nefficiency\x18\x03 \x01(\x0b\x32$.machinerySystemStructure.Efficiency\x12+\n#order_from_switchboard_or_shaftline\x18\x05 \x01(\r\x12,\n\x04\x66uel\x18\x06 \x01(\x0b\x32\x1e.machinerySystemStructure.Fuel\x12\x16\n\x0eunit_price_usd\x18\x07 \x01(\x01\x12\x16\n\x0enumber_modules\x18\x08 \x01(\r\x12\x1e\n\x16power_minimum_specific\x18\t \x01(\x01\x12\x15\n\rstart_delay_s\x18\n \x01(\x01"\x96\x01\n\tPropeller\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x38\n\nefficiency\x18\x02 \x01(\x0b\x32$.machinerySystemStructure.Efficiency\x12\x14\n\x0cpropulsor_id\x18\x03 \x01(\r\x12+\n#order_from_switchboard_or_shaftline\x18\x05 \x01(\r"$\n\nBusBreaker\x12\x16\n\x0eswitchboard_to\x18\x01 \x01(\x05"\xf5\x01\n\x0eSuperCapacitor\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1a\n\x12\x65nergy_capacity_wh\x18\x02 \x01(\x01\x12\x16\n\x0erated_power_kw\x18\x03 \x01(\x01\x12\x1b\n\x13\x65\x66\x66iciency_charging\x18\x04 \x01(\x01\x12\x1e\n\x16\x65\x66\x66iciency_discharging\x18\x05 \x01(\x01\x12\x1f\n\x17initial_state_of_charge\x18\x06 \x01(\x01\x12+\n#order_from_switchboard_or_shaftline\x18\x07 \x01(\r\x12\x16\n\x0eunit_price_usd\x18\x08 \x01(\x01"\xba\x01\n\x13MechanicalComponent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x16\n\x0erated_power_kw\x18\x02 \x01(\x01\x12\x38\n\nefficiency\x18\x03 \x01(\x0b\x32$.machinerySystemStructure.Efficiency\x12+\n#order_from_switchboard_or_shaftline\x18\x04 \x01(\r\x12\x16\n\x0eunit_price_usd\x18\x05 \x01(\x01"\x80\x0e\n\tSubsystem\x12,\n\x04gear\x18\x01 \x01(\x0b\x32\x1e.machinerySystemStructure.Gear\x12\x30\n\x06\x65ngine\x18\x02 \x01(\x0b\x32 .machinerySystemStructure.Engine\x12\x43\n\x10\x65lectric_machine\x18\x03 \x01(\x0b\x32).machinerySystemStructure.ElectricMachine\x12@\n\x0btransformer\x18\x04 \x01(\x0b\x32+.machinerySystemStructure.ElectricComponent\x12?\n\nconverter1\x18\x05 \x01(\x0b\x32+.machinerySystemStructure.ElectricComponent\x12?\n\nconverter2\x18\x06 \x01(\x0b\x32+.machinerySystemStructure.ElectricComponent\x12\x32\n\x07\x62\x61ttery\x18\x07 \x01(\x0b\x32!.machinerySystemStructure.Battery\x12\x35\n\tfuel_cell\x18\x08 \x01(\x0b\x32".machinerySystemStructure.FuelCell\x12\x36\n\tpropeller\x18\t \x01(\x0b\x32#.machinerySystemStructure.Propeller\x12\x39\n\x0b\x62us_breaker\x18\n \x01(\x0b\x32$.machinerySystemStructure.BusBreaker\x12@\n\x0esupercapacitor\x18\x0b \x01(\x0b\x32(.machinerySystemStructure.SuperCapacitor\x12?\n\nother_load\x18\x0c \x01(\x0b\x32+.machinerySystemStructure.ElectricComponent\x12.\n\x05\x63ogas\x18\r \x01(\x0b\x32\x1f.machinerySystemStructure.COGAS\x12\x41\n\npower_type\x18\x0e \x01(\x0e\x32-.machinerySystemStructure.Subsystem.PowerType\x12I\n\x0e\x63omponent_type\x18\x0f \x01(\x0e\x32\x31.machinerySystemStructure.Subsystem.ComponentType\x12\x0c\n\x04name\x18\x10 \x01(\t\x12\x16\n\x0erated_power_kw\x18\x11 \x01(\x01\x12\x17\n\x0frated_speed_rpm\x18\x12 \x01(\x01\x12-\n%ramp_up_rate_limit_percent_per_second\x18\x13 \x01(\x01\x12/\n\'ramp_down_rate_limit_percent_per_second\x18\x14 \x01(\x01\x12\x17\n\x0f\x62\x61se_load_order\x18\x15 \x01(\r"s\n\tPowerType\x12\t\n\x05NONE1\x10\x00\x12\x10\n\x0cPOWER_SOURCE\x10\x01\x12\x12\n\x0ePOWER_CONSUMER\x10\x02\x12\x0b\n\x07PTI_PTO\x10\x03\x12\x12\n\x0e\x45NERGY_STORAGE\x10\x04\x12\x14\n\x10SHORE_CONNECTION\x10\x05"\xbd\x04\n\rComponentType\x12\x08\n\x04NONE\x10\x00\x12\x0f\n\x0bMAIN_ENGINE\x10\x01\x12\x14\n\x10\x41UXILIARY_ENGINE\x10\x02\x12\r\n\tGENERATOR\x10\x03\x12\x14\n\x10PROPULSION_DRIVE\x10\x04\x12\x0e\n\nOTHER_LOAD\x10\x05\x12\x12\n\x0ePTI_PTO_SYSTEM\x10\x06\x12\x12\n\x0e\x42\x41TTERY_SYSTEM\x10\x07\x12\x14\n\x10\x46UEL_CELL_SYSTEM\x10\x08\x12\r\n\tRECTIFIER\x10\t\x12\x1c\n\x18MAIN_ENGINE_WITH_GEARBOX\x10\n\x12\x12\n\x0e\x45LECTRIC_MOTOR\x10\x0b\x12\n\n\x06GENSET\x10\x0c\x12\x0f\n\x0bTRANSFORMER\x10\r\x12\x0c\n\x08INVERTER\x10\x0e\x12\x13\n\x0f\x43IRCUIT_BREAKER\x10\x0f\x12\x14\n\x10\x41\x43TIVE_FRONT_END\x10\x10\x12\x13\n\x0fPOWER_CONVERTER\x10\x11\x12\x17\n\x13SYNCHRONOUS_MACHINE\x10\x12\x12\x15\n\x11INDUCTION_MACHINE\x10\x13\x12\x0b\n\x07GEARBOX\x10\x14\x12\r\n\tFUEL_CELL\x10\x15\x12\x12\n\x0ePROPELLER_LOAD\x10\x16\x12\x19\n\x15OTHER_MECHANICAL_LOAD\x10\x17\x12\x0b\n\x07\x42\x41TTERY\x10\x18\x12\x12\n\x0eSUPERCAPACITOR\x10\x19\x12\x19\n\x15SUPERCAPACITOR_SYSTEM\x10\x1a\x12\x0f\n\x0bSHORE_POWER\x10\x1b\x12\t\n\x05\x43OGAS\x10\x1c\x12\t\n\x05\x43OGES\x10\x1d"^\n\x0bSwitchboard\x12\x16\n\x0eswitchboard_id\x18\x01 \x01(\r\x12\x37\n\nsubsystems\x18\x02 \x03(\x0b\x32#.machinerySystemStructure.Subsystem"[\n\tShaftLine\x12\x15\n\rshaft_line_id\x18\x01 \x01(\r\x12\x37\n\nsubsystems\x18\x02 \x03(\x0b\x32#.machinerySystemStructure.Subsystem"L\n\x10MechanicalSystem\x12\x38\n\x0bshaft_lines\x18\x01 \x03(\x0b\x32#.machinerySystemStructure.ShaftLine"M\n\x0e\x45lectricSystem\x12;\n\x0cswitchboards\x18\x01 \x03(\x0b\x32%.machinerySystemStructure.Switchboard"Y\n\x0b\x46uelStorage\x12\x35\n\tfuel_type\x18\x01 \x01(\x0e\x32".machinerySystemStructure.FuelType\x12\x13\n\x0b\x63\x61pacity_kg\x18\x02 \x01(\x01"\xfe\x03\n\x0fMachinerySystem\x12\x0c\n\x04name\x18\x01 \x01(\t\x12Q\n\x0fpropulsion_type\x18\x02 \x01(\x0e\x32\x38.machinerySystemStructure.MachinerySystem.PropulsionType\x12;\n\x0c\x66uel_storage\x18\x03 \x03(\x0b\x32%.machinerySystemStructure.FuelStorage\x12.\n&maximum_allowed_genset_load_percentage\x18\x04 \x01(\x01\x12\x45\n\x11mechanical_system\x18\x05 \x01(\x0b\x32*.machinerySystemStructure.MechanicalSystem\x12\x41\n\x0f\x65lectric_system\x18\x06 \x01(\x0b\x32(.machinerySystemStructure.ElectricSystem\x12\x31\n)maximum_allowed_fuel_cell_load_percentage\x18\x07 \x01(\x01\x12$\n\x1c\x61verage_base_load_percentage\x18\x08 \x01(\x01":\n\x0ePropulsionType\x12\x0e\n\nMECHANICAL\x10\x00\x12\x0c\n\x08\x45LECTRIC\x10\x01\x12\n\n\x06HYBRID\x10\x02*T\n\x0c\x45missionType\x12\x08\n\x04NONE\x10\x00\x12\x07\n\x03SOX\x10\x01\x12\x07\n\x03NOX\x10\x02\x12\x06\n\x02\x43O\x10\x03\x12\x06\n\x02PM\x10\x04\x12\x06\n\x02HC\x10\x05\x12\x07\n\x03\x43H4\x10\x06\x12\x07\n\x03N2O\x10\x07*\x90\x01\n\x08\x46uelType\x12\n\n\x06\x44IESEL\x10\x00\x12\x07\n\x03HFO\x10\x01\x12\x0f\n\x0bNATURAL_GAS\x10\x02\x12\x0c\n\x08HYDROGEN\x10\x03\x12\x0b\n\x07\x41MMONIA\x10\x04\x12\x0f\n\x0bLPG_PROPANE\x10\x05\x12\x0e\n\nLPG_BUTANE\x10\x06\x12\x0b\n\x07\x45THANOL\x10\x07\x12\x0c\n\x08METHANOL\x10\x08\x12\x07\n\x03LFO\x10\t*C\n\nFuelOrigin\x12\t\n\x05NONE1\x10\x00\x12\n\n\x06\x46OSSIL\x10\x01\x12\x07\n\x03\x42IO\x10\x02\x12\x15\n\x11RENEWABLE_NON_BIO\x10\x03*E\n\x0f\x46uelSpecifiedBy\x12\t\n\x05NONE2\x10\x00\x12\x14\n\x10\x46UEL_EU_MARITIME\x10\x01\x12\x07\n\x03IMO\x10\x02\x12\x08\n\x04USER\x10\x03\x62\x06proto3' + b'\n\x16system_structure.proto\x12\x18machinerySystemStructure"\x1d\n\x05Point\x12\t\n\x01x\x18\x01 \x01(\x01\x12\t\n\x01y\x18\x02 \x01(\x01":\n\x07\x43urve1D\x12/\n\x06points\x18\x01 \x03(\x0b\x32\x1f.machinerySystemStructure.Point"_\n\tBSFCCurve\x12\x0f\n\x07x_label\x18\x01 \x01(\t\x12\x0f\n\x07y_label\x18\x02 \x01(\t\x12\x30\n\x05\x63urve\x18\x03 \x01(\x0b\x32!.machinerySystemStructure.Curve1D"e\n\x0f\x45\x66\x66iciencyCurve\x12\x0f\n\x07x_label\x18\x01 \x01(\t\x12\x0f\n\x07y_label\x18\x02 \x01(\t\x12\x30\n\x05\x63urve\x18\x03 \x01(\x0b\x32!.machinerySystemStructure.Curve1D"X\n\x04\x42SFC\x12\x32\n\x05\x63urve\x18\x01 \x01(\x0b\x32#.machinerySystemStructure.BSFCCurve\x12\x12\n\x05value\x18\x02 \x01(\x01H\x00\x88\x01\x01\x42\x08\n\x06_value"s\n\nEfficiency\x12=\n\x05\x63urve\x18\x01 \x01(\x0b\x32).machinerySystemStructure.EfficiencyCurveH\x00\x88\x01\x01\x12\x12\n\x05value\x18\x02 \x01(\x01H\x01\x88\x01\x01\x42\x08\n\x06_curveB\x08\n\x06_value"`\n\nPowerCurve\x12\x0f\n\x07x_label\x18\x01 \x01(\t\x12\x0f\n\x07y_label\x18\x02 \x01(\t\x12\x30\n\x05\x63urve\x18\x03 \x01(\x0b\x32!.machinerySystemStructure.Curve1D"\x85\x01\n\x19PropulsionPowerTimeSeries\x12\x0f\n\x07x_label\x18\x01 \x01(\t\x12\x0f\n\x07y_label\x18\x02 \x01(\t\x12\x14\n\x0cpropulsor_id\x18\x03 \x01(\r\x12\x30\n\x05\x63urve\x18\x04 \x01(\x0b\x32!.machinerySystemStructure.Curve1D"\x85\x01\n\x17\x41uxiliaryLoadTimeSeries\x12\x0f\n\x07x_label\x18\x01 \x01(\t\x12\x0f\n\x07y_label\x18\x02 \x01(\t\x12\x16\n\x0eswitchboard_id\x18\x03 \x01(\r\x12\x30\n\x05\x63urve\x18\x04 \x01(\x0b\x32!.machinerySystemStructure.Curve1D"8\n\rAuxiliaryLoad\x12\x16\n\x0eswitchboard_id\x18\x01 \x01(\r\x12\x0f\n\x07load_kw\x18\x02 \x01(\x01"\xa2\x01\n\rEmissionCurve\x12\x0f\n\x07x_label\x18\x01 \x01(\t\x12\x0f\n\x07y_label\x18\x02 \x01(\t\x12\x30\n\x05\x63urve\x18\x03 \x01(\x0b\x32!.machinerySystemStructure.Curve1D\x12=\n\remission_type\x18\x04 \x01(\x0e\x32&.machinerySystemStructure.EmissionType"\xe5\x01\n\x04Gear\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\ngear_ratio\x18\x02 \x01(\x01\x12\x16\n\x0erated_power_kw\x18\x03 \x01(\x01\x12\x17\n\x0frated_speed_rpm\x18\x04 \x01(\x01\x12\x38\n\nefficiency\x18\x05 \x01(\x0b\x32$.machinerySystemStructure.Efficiency\x12+\n#order_from_switchboard_or_shaftline\x18\x06 \x01(\r\x12\x16\n\x0eunit_price_usd\x18\x07 \x01(\x01\x12\x0b\n\x03uid\x18\x08 \x01(\t"x\n\x04\x46uel\x12\x35\n\tfuel_type\x18\x01 \x01(\x0e\x32".machinerySystemStructure.FuelType\x12\x39\n\x0b\x66uel_origin\x18\x02 \x01(\x0e\x32$.machinerySystemStructure.FuelOrigin"\x92\x06\n\x06\x45ngine\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x16\n\x0erated_power_kw\x18\x02 \x01(\x01\x12\x17\n\x0frated_speed_rpm\x18\x03 \x01(\x01\x12,\n\x04\x62sfc\x18\x04 \x01(\x0b\x32\x1e.machinerySystemStructure.BSFC\x12\x31\n\tmain_fuel\x18\x05 \x01(\x0b\x32\x1e.machinerySystemStructure.Fuel\x12+\n#order_from_switchboard_or_shaftline\x18\x06 \x01(\r\x12\x32\n\npilot_bsfc\x18\x07 \x01(\x0b\x32\x1e.machinerySystemStructure.BSFC\x12\x32\n\npilot_fuel\x18\x08 \x01(\x0b\x32\x1e.machinerySystemStructure.Fuel\x12U\n\x16nox_calculation_method\x18\t \x01(\x0e\x32\x35.machinerySystemStructure.Engine.NOxCalculationMethod\x12@\n\x0f\x65mission_curves\x18\n \x03(\x0b\x32\'.machinerySystemStructure.EmissionCurve\x12K\n\x11\x65ngine_cycle_type\x18\x0b \x01(\x0e\x32\x30.machinerySystemStructure.Engine.EngineCycleType\x12\x16\n\x0eunit_price_usd\x18\x0c \x01(\x01\x12\x15\n\rstart_delay_s\x18\r \x01(\x01\x12\x19\n\x11turn_off_power_kw\x18\x0e \x01(\x01\x12\x0b\n\x03uid\x18\x0f \x01(\t"E\n\x14NOxCalculationMethod\x12\n\n\x06TIER_2\x10\x00\x12\n\n\x06TIER_1\x10\x01\x12\n\n\x06TIER_3\x10\x02\x12\t\n\x05\x43URVE\x10\x03"O\n\x0f\x45ngineCycleType\x12\x08\n\x04NONE\x10\x00\x12\n\n\x06\x44IESEL\x10\x01\x12\x08\n\x04OTTO\x10\x02\x12\x1c\n\x18LEAN_BURN_SPARK_IGNITION\x10\x03"\xdb\x04\n\x05\x43OGAS\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x16\n\x0erated_power_kw\x18\x02 \x01(\x01\x12\x17\n\x0frated_speed_rpm\x18\x03 \x01(\x01\x12\x38\n\nefficiency\x18\x04 \x01(\x0b\x32$.machinerySystemStructure.Efficiency\x12\x45\n\x17gas_turbine_power_curve\x18\x05 \x01(\x0b\x32$.machinerySystemStructure.PowerCurve\x12G\n\x19steam_turbine_power_curve\x18\x06 \x01(\x0b\x32$.machinerySystemStructure.PowerCurve\x12,\n\x04\x66uel\x18\x07 \x01(\x0b\x32\x1e.machinerySystemStructure.Fuel\x12+\n#order_from_switchboard_or_shaftline\x18\x08 \x01(\r\x12U\n\x16nox_calculation_method\x18\t \x01(\x0e\x32\x35.machinerySystemStructure.Engine.NOxCalculationMethod\x12@\n\x0f\x65mission_curves\x18\n \x03(\x0b\x32\'.machinerySystemStructure.EmissionCurve\x12\x16\n\x0eunit_price_usd\x18\x0b \x01(\x01\x12\x15\n\rstart_delay_s\x18\x0c \x01(\x01\x12\x19\n\x11turn_off_power_kw\x18\r \x01(\x01\x12\x0b\n\x03uid\x18\x0e \x01(\t"\xdc\x01\n\x0f\x45lectricMachine\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x16\n\x0erated_power_kw\x18\x02 \x01(\x01\x12\x17\n\x0frated_speed_rpm\x18\x03 \x01(\x01\x12\x38\n\nefficiency\x18\x04 \x01(\x0b\x32$.machinerySystemStructure.Efficiency\x12+\n#order_from_switchboard_or_shaftline\x18\x05 \x01(\r\x12\x16\n\x0eunit_price_usd\x18\x06 \x01(\x01\x12\x0b\n\x03uid\x18\x07 \x01(\t"\x8f\x03\n\x07\x42\x61ttery\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1b\n\x13\x65nergy_capacity_kwh\x18\x02 \x01(\x01\x12\x1d\n\x15rated_charging_rate_c\x18\x03 \x01(\x01\x12 \n\x18rated_discharging_rate_c\x18\x04 \x01(\x01\x12\x1b\n\x13\x65\x66\x66iciency_charging\x18\x05 \x01(\x01\x12\x1e\n\x16\x65\x66\x66iciency_discharging\x18\x06 \x01(\x01\x12\x1f\n\x17initial_state_of_charge\x18\x07 \x01(\x01\x12+\n#order_from_switchboard_or_shaftline\x18\x08 \x01(\r\x12\x16\n\x0eunit_price_usd\x18\t \x01(\x01\x12&\n\x1eself_discharge_percent_per_day\x18\n \x01(\x01\x12\x1f\n\x17state_of_energy_minimum\x18\x0b \x01(\x01\x12\x1f\n\x17state_of_energy_maximum\x18\x0c \x01(\x01\x12\x0b\n\x03uid\x18\r \x01(\t"\xc5\x01\n\x11\x45lectricComponent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x16\n\x0erated_power_kw\x18\x02 \x01(\x01\x12\x38\n\nefficiency\x18\x03 \x01(\x0b\x32$.machinerySystemStructure.Efficiency\x12+\n#order_from_switchboard_or_shaftline\x18\x04 \x01(\r\x12\x16\n\x0eunit_price_usd\x18\x05 \x01(\x01\x12\x0b\n\x03uid\x18\x06 \x01(\t"\xb9\x02\n\x08\x46uelCell\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x16\n\x0erated_power_kw\x18\x02 \x01(\x01\x12\x38\n\nefficiency\x18\x03 \x01(\x0b\x32$.machinerySystemStructure.Efficiency\x12+\n#order_from_switchboard_or_shaftline\x18\x05 \x01(\r\x12,\n\x04\x66uel\x18\x06 \x01(\x0b\x32\x1e.machinerySystemStructure.Fuel\x12\x16\n\x0eunit_price_usd\x18\x07 \x01(\x01\x12\x16\n\x0enumber_modules\x18\x08 \x01(\r\x12\x1e\n\x16power_minimum_specific\x18\t \x01(\x01\x12\x15\n\rstart_delay_s\x18\n \x01(\x01\x12\x0b\n\x03uid\x18\x0b \x01(\t"\xa3\x01\n\tPropeller\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x38\n\nefficiency\x18\x02 \x01(\x0b\x32$.machinerySystemStructure.Efficiency\x12\x14\n\x0cpropulsor_id\x18\x03 \x01(\r\x12+\n#order_from_switchboard_or_shaftline\x18\x05 \x01(\r\x12\x0b\n\x03uid\x18\x06 \x01(\t"$\n\nBusBreaker\x12\x16\n\x0eswitchboard_to\x18\x01 \x01(\x05"\x82\x02\n\x0eSuperCapacitor\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1a\n\x12\x65nergy_capacity_wh\x18\x02 \x01(\x01\x12\x16\n\x0erated_power_kw\x18\x03 \x01(\x01\x12\x1b\n\x13\x65\x66\x66iciency_charging\x18\x04 \x01(\x01\x12\x1e\n\x16\x65\x66\x66iciency_discharging\x18\x05 \x01(\x01\x12\x1f\n\x17initial_state_of_charge\x18\x06 \x01(\x01\x12+\n#order_from_switchboard_or_shaftline\x18\x07 \x01(\r\x12\x16\n\x0eunit_price_usd\x18\x08 \x01(\x01\x12\x0b\n\x03uid\x18\t \x01(\t"\xc7\x01\n\x13MechanicalComponent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x16\n\x0erated_power_kw\x18\x02 \x01(\x01\x12\x38\n\nefficiency\x18\x03 \x01(\x0b\x32$.machinerySystemStructure.Efficiency\x12+\n#order_from_switchboard_or_shaftline\x18\x04 \x01(\r\x12\x16\n\x0eunit_price_usd\x18\x05 \x01(\x01\x12\x0b\n\x03uid\x18\x06 \x01(\t"\x8d\x0e\n\tSubsystem\x12,\n\x04gear\x18\x01 \x01(\x0b\x32\x1e.machinerySystemStructure.Gear\x12\x30\n\x06\x65ngine\x18\x02 \x01(\x0b\x32 .machinerySystemStructure.Engine\x12\x43\n\x10\x65lectric_machine\x18\x03 \x01(\x0b\x32).machinerySystemStructure.ElectricMachine\x12@\n\x0btransformer\x18\x04 \x01(\x0b\x32+.machinerySystemStructure.ElectricComponent\x12?\n\nconverter1\x18\x05 \x01(\x0b\x32+.machinerySystemStructure.ElectricComponent\x12?\n\nconverter2\x18\x06 \x01(\x0b\x32+.machinerySystemStructure.ElectricComponent\x12\x32\n\x07\x62\x61ttery\x18\x07 \x01(\x0b\x32!.machinerySystemStructure.Battery\x12\x35\n\tfuel_cell\x18\x08 \x01(\x0b\x32".machinerySystemStructure.FuelCell\x12\x36\n\tpropeller\x18\t \x01(\x0b\x32#.machinerySystemStructure.Propeller\x12\x39\n\x0b\x62us_breaker\x18\n \x01(\x0b\x32$.machinerySystemStructure.BusBreaker\x12@\n\x0esupercapacitor\x18\x0b \x01(\x0b\x32(.machinerySystemStructure.SuperCapacitor\x12?\n\nother_load\x18\x0c \x01(\x0b\x32+.machinerySystemStructure.ElectricComponent\x12.\n\x05\x63ogas\x18\r \x01(\x0b\x32\x1f.machinerySystemStructure.COGAS\x12\x41\n\npower_type\x18\x0e \x01(\x0e\x32-.machinerySystemStructure.Subsystem.PowerType\x12I\n\x0e\x63omponent_type\x18\x0f \x01(\x0e\x32\x31.machinerySystemStructure.Subsystem.ComponentType\x12\x0c\n\x04name\x18\x10 \x01(\t\x12\x16\n\x0erated_power_kw\x18\x11 \x01(\x01\x12\x17\n\x0frated_speed_rpm\x18\x12 \x01(\x01\x12-\n%ramp_up_rate_limit_percent_per_second\x18\x13 \x01(\x01\x12/\n\'ramp_down_rate_limit_percent_per_second\x18\x14 \x01(\x01\x12\x17\n\x0f\x62\x61se_load_order\x18\x15 \x01(\r\x12\x0b\n\x03uid\x18\x16 \x01(\t"s\n\tPowerType\x12\t\n\x05NONE1\x10\x00\x12\x10\n\x0cPOWER_SOURCE\x10\x01\x12\x12\n\x0ePOWER_CONSUMER\x10\x02\x12\x0b\n\x07PTI_PTO\x10\x03\x12\x12\n\x0e\x45NERGY_STORAGE\x10\x04\x12\x14\n\x10SHORE_CONNECTION\x10\x05"\xbd\x04\n\rComponentType\x12\x08\n\x04NONE\x10\x00\x12\x0f\n\x0bMAIN_ENGINE\x10\x01\x12\x14\n\x10\x41UXILIARY_ENGINE\x10\x02\x12\r\n\tGENERATOR\x10\x03\x12\x14\n\x10PROPULSION_DRIVE\x10\x04\x12\x0e\n\nOTHER_LOAD\x10\x05\x12\x12\n\x0ePTI_PTO_SYSTEM\x10\x06\x12\x12\n\x0e\x42\x41TTERY_SYSTEM\x10\x07\x12\x14\n\x10\x46UEL_CELL_SYSTEM\x10\x08\x12\r\n\tRECTIFIER\x10\t\x12\x1c\n\x18MAIN_ENGINE_WITH_GEARBOX\x10\n\x12\x12\n\x0e\x45LECTRIC_MOTOR\x10\x0b\x12\n\n\x06GENSET\x10\x0c\x12\x0f\n\x0bTRANSFORMER\x10\r\x12\x0c\n\x08INVERTER\x10\x0e\x12\x13\n\x0f\x43IRCUIT_BREAKER\x10\x0f\x12\x14\n\x10\x41\x43TIVE_FRONT_END\x10\x10\x12\x13\n\x0fPOWER_CONVERTER\x10\x11\x12\x17\n\x13SYNCHRONOUS_MACHINE\x10\x12\x12\x15\n\x11INDUCTION_MACHINE\x10\x13\x12\x0b\n\x07GEARBOX\x10\x14\x12\r\n\tFUEL_CELL\x10\x15\x12\x12\n\x0ePROPELLER_LOAD\x10\x16\x12\x19\n\x15OTHER_MECHANICAL_LOAD\x10\x17\x12\x0b\n\x07\x42\x41TTERY\x10\x18\x12\x12\n\x0eSUPERCAPACITOR\x10\x19\x12\x19\n\x15SUPERCAPACITOR_SYSTEM\x10\x1a\x12\x0f\n\x0bSHORE_POWER\x10\x1b\x12\t\n\x05\x43OGAS\x10\x1c\x12\t\n\x05\x43OGES\x10\x1d"^\n\x0bSwitchboard\x12\x16\n\x0eswitchboard_id\x18\x01 \x01(\r\x12\x37\n\nsubsystems\x18\x02 \x03(\x0b\x32#.machinerySystemStructure.Subsystem"[\n\tShaftLine\x12\x15\n\rshaft_line_id\x18\x01 \x01(\r\x12\x37\n\nsubsystems\x18\x02 \x03(\x0b\x32#.machinerySystemStructure.Subsystem"L\n\x10MechanicalSystem\x12\x38\n\x0bshaft_lines\x18\x01 \x03(\x0b\x32#.machinerySystemStructure.ShaftLine"M\n\x0e\x45lectricSystem\x12;\n\x0cswitchboards\x18\x01 \x03(\x0b\x32%.machinerySystemStructure.Switchboard"Y\n\x0b\x46uelStorage\x12\x35\n\tfuel_type\x18\x01 \x01(\x0e\x32".machinerySystemStructure.FuelType\x12\x13\n\x0b\x63\x61pacity_kg\x18\x02 \x01(\x01"\xfe\x03\n\x0fMachinerySystem\x12\x0c\n\x04name\x18\x01 \x01(\t\x12Q\n\x0fpropulsion_type\x18\x02 \x01(\x0e\x32\x38.machinerySystemStructure.MachinerySystem.PropulsionType\x12;\n\x0c\x66uel_storage\x18\x03 \x03(\x0b\x32%.machinerySystemStructure.FuelStorage\x12.\n&maximum_allowed_genset_load_percentage\x18\x04 \x01(\x01\x12\x45\n\x11mechanical_system\x18\x05 \x01(\x0b\x32*.machinerySystemStructure.MechanicalSystem\x12\x41\n\x0f\x65lectric_system\x18\x06 \x01(\x0b\x32(.machinerySystemStructure.ElectricSystem\x12\x31\n)maximum_allowed_fuel_cell_load_percentage\x18\x07 \x01(\x01\x12$\n\x1c\x61verage_base_load_percentage\x18\x08 \x01(\x01":\n\x0ePropulsionType\x12\x0e\n\nMECHANICAL\x10\x00\x12\x0c\n\x08\x45LECTRIC\x10\x01\x12\n\n\x06HYBRID\x10\x02*T\n\x0c\x45missionType\x12\x08\n\x04NONE\x10\x00\x12\x07\n\x03SOX\x10\x01\x12\x07\n\x03NOX\x10\x02\x12\x06\n\x02\x43O\x10\x03\x12\x06\n\x02PM\x10\x04\x12\x06\n\x02HC\x10\x05\x12\x07\n\x03\x43H4\x10\x06\x12\x07\n\x03N2O\x10\x07*\x90\x01\n\x08\x46uelType\x12\n\n\x06\x44IESEL\x10\x00\x12\x07\n\x03HFO\x10\x01\x12\x0f\n\x0bNATURAL_GAS\x10\x02\x12\x0c\n\x08HYDROGEN\x10\x03\x12\x0b\n\x07\x41MMONIA\x10\x04\x12\x0f\n\x0bLPG_PROPANE\x10\x05\x12\x0e\n\nLPG_BUTANE\x10\x06\x12\x0b\n\x07\x45THANOL\x10\x07\x12\x0c\n\x08METHANOL\x10\x08\x12\x07\n\x03LFO\x10\t*C\n\nFuelOrigin\x12\t\n\x05NONE1\x10\x00\x12\n\n\x06\x46OSSIL\x10\x01\x12\x07\n\x03\x42IO\x10\x02\x12\x15\n\x11RENEWABLE_NON_BIO\x10\x03*E\n\x0f\x46uelSpecifiedBy\x12\t\n\x05NONE2\x10\x00\x12\x14\n\x10\x46UEL_EU_MARITIME\x10\x01\x12\x07\n\x03IMO\x10\x02\x12\x08\n\x04USER\x10\x03\x62\x06proto3' ) _globals = globals() @@ -22,14 +22,14 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "system_structure_pb2", _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None - _globals["_EMISSIONTYPE"]._serialized_start = 7315 - _globals["_EMISSIONTYPE"]._serialized_end = 7399 - _globals["_FUELTYPE"]._serialized_start = 7402 - _globals["_FUELTYPE"]._serialized_end = 7546 - _globals["_FUELORIGIN"]._serialized_start = 7548 - _globals["_FUELORIGIN"]._serialized_end = 7615 - _globals["_FUELSPECIFIEDBY"]._serialized_start = 7617 - _globals["_FUELSPECIFIEDBY"]._serialized_end = 7686 + _globals["_EMISSIONTYPE"]._serialized_start = 7458 + _globals["_EMISSIONTYPE"]._serialized_end = 7542 + _globals["_FUELTYPE"]._serialized_start = 7545 + _globals["_FUELTYPE"]._serialized_end = 7689 + _globals["_FUELORIGIN"]._serialized_start = 7691 + _globals["_FUELORIGIN"]._serialized_end = 7758 + _globals["_FUELSPECIFIEDBY"]._serialized_start = 7760 + _globals["_FUELSPECIFIEDBY"]._serialized_end = 7829 _globals["_POINT"]._serialized_start = 52 _globals["_POINT"]._serialized_end = 81 _globals["_CURVE1D"]._serialized_start = 83 @@ -53,51 +53,51 @@ _globals["_EMISSIONCURVE"]._serialized_start = 979 _globals["_EMISSIONCURVE"]._serialized_end = 1141 _globals["_GEAR"]._serialized_start = 1144 - _globals["_GEAR"]._serialized_end = 1360 - _globals["_FUEL"]._serialized_start = 1362 - _globals["_FUEL"]._serialized_end = 1482 - _globals["_ENGINE"]._serialized_start = 1485 - _globals["_ENGINE"]._serialized_end = 2258 - _globals["_ENGINE_NOXCALCULATIONMETHOD"]._serialized_start = 2108 - _globals["_ENGINE_NOXCALCULATIONMETHOD"]._serialized_end = 2177 - _globals["_ENGINE_ENGINECYCLETYPE"]._serialized_start = 2179 - _globals["_ENGINE_ENGINECYCLETYPE"]._serialized_end = 2258 - _globals["_COGAS"]._serialized_start = 2261 - _globals["_COGAS"]._serialized_end = 2851 - _globals["_ELECTRICMACHINE"]._serialized_start = 2854 - _globals["_ELECTRICMACHINE"]._serialized_end = 3061 - _globals["_BATTERY"]._serialized_start = 3064 - _globals["_BATTERY"]._serialized_end = 3450 - _globals["_ELECTRICCOMPONENT"]._serialized_start = 3453 - _globals["_ELECTRICCOMPONENT"]._serialized_end = 3637 - _globals["_FUELCELL"]._serialized_start = 3640 - _globals["_FUELCELL"]._serialized_end = 3940 - _globals["_PROPELLER"]._serialized_start = 3943 - _globals["_PROPELLER"]._serialized_end = 4093 - _globals["_BUSBREAKER"]._serialized_start = 4095 - _globals["_BUSBREAKER"]._serialized_end = 4131 - _globals["_SUPERCAPACITOR"]._serialized_start = 4134 - _globals["_SUPERCAPACITOR"]._serialized_end = 4379 - _globals["_MECHANICALCOMPONENT"]._serialized_start = 4382 - _globals["_MECHANICALCOMPONENT"]._serialized_end = 4568 - _globals["_SUBSYSTEM"]._serialized_start = 4571 - _globals["_SUBSYSTEM"]._serialized_end = 6363 - _globals["_SUBSYSTEM_POWERTYPE"]._serialized_start = 5672 - _globals["_SUBSYSTEM_POWERTYPE"]._serialized_end = 5787 - _globals["_SUBSYSTEM_COMPONENTTYPE"]._serialized_start = 5790 - _globals["_SUBSYSTEM_COMPONENTTYPE"]._serialized_end = 6363 - _globals["_SWITCHBOARD"]._serialized_start = 6365 - _globals["_SWITCHBOARD"]._serialized_end = 6459 - _globals["_SHAFTLINE"]._serialized_start = 6461 - _globals["_SHAFTLINE"]._serialized_end = 6552 - _globals["_MECHANICALSYSTEM"]._serialized_start = 6554 - _globals["_MECHANICALSYSTEM"]._serialized_end = 6630 - _globals["_ELECTRICSYSTEM"]._serialized_start = 6632 - _globals["_ELECTRICSYSTEM"]._serialized_end = 6709 - _globals["_FUELSTORAGE"]._serialized_start = 6711 - _globals["_FUELSTORAGE"]._serialized_end = 6800 - _globals["_MACHINERYSYSTEM"]._serialized_start = 6803 - _globals["_MACHINERYSYSTEM"]._serialized_end = 7313 - _globals["_MACHINERYSYSTEM_PROPULSIONTYPE"]._serialized_start = 7255 - _globals["_MACHINERYSYSTEM_PROPULSIONTYPE"]._serialized_end = 7313 + _globals["_GEAR"]._serialized_end = 1373 + _globals["_FUEL"]._serialized_start = 1375 + _globals["_FUEL"]._serialized_end = 1495 + _globals["_ENGINE"]._serialized_start = 1498 + _globals["_ENGINE"]._serialized_end = 2284 + _globals["_ENGINE_NOXCALCULATIONMETHOD"]._serialized_start = 2134 + _globals["_ENGINE_NOXCALCULATIONMETHOD"]._serialized_end = 2203 + _globals["_ENGINE_ENGINECYCLETYPE"]._serialized_start = 2205 + _globals["_ENGINE_ENGINECYCLETYPE"]._serialized_end = 2284 + _globals["_COGAS"]._serialized_start = 2287 + _globals["_COGAS"]._serialized_end = 2890 + _globals["_ELECTRICMACHINE"]._serialized_start = 2893 + _globals["_ELECTRICMACHINE"]._serialized_end = 3113 + _globals["_BATTERY"]._serialized_start = 3116 + _globals["_BATTERY"]._serialized_end = 3515 + _globals["_ELECTRICCOMPONENT"]._serialized_start = 3518 + _globals["_ELECTRICCOMPONENT"]._serialized_end = 3715 + _globals["_FUELCELL"]._serialized_start = 3718 + _globals["_FUELCELL"]._serialized_end = 4031 + _globals["_PROPELLER"]._serialized_start = 4034 + _globals["_PROPELLER"]._serialized_end = 4197 + _globals["_BUSBREAKER"]._serialized_start = 4199 + _globals["_BUSBREAKER"]._serialized_end = 4235 + _globals["_SUPERCAPACITOR"]._serialized_start = 4238 + _globals["_SUPERCAPACITOR"]._serialized_end = 4496 + _globals["_MECHANICALCOMPONENT"]._serialized_start = 4499 + _globals["_MECHANICALCOMPONENT"]._serialized_end = 4698 + _globals["_SUBSYSTEM"]._serialized_start = 4701 + _globals["_SUBSYSTEM"]._serialized_end = 6506 + _globals["_SUBSYSTEM_POWERTYPE"]._serialized_start = 5815 + _globals["_SUBSYSTEM_POWERTYPE"]._serialized_end = 5930 + _globals["_SUBSYSTEM_COMPONENTTYPE"]._serialized_start = 5933 + _globals["_SUBSYSTEM_COMPONENTTYPE"]._serialized_end = 6506 + _globals["_SWITCHBOARD"]._serialized_start = 6508 + _globals["_SWITCHBOARD"]._serialized_end = 6602 + _globals["_SHAFTLINE"]._serialized_start = 6604 + _globals["_SHAFTLINE"]._serialized_end = 6695 + _globals["_MECHANICALSYSTEM"]._serialized_start = 6697 + _globals["_MECHANICALSYSTEM"]._serialized_end = 6773 + _globals["_ELECTRICSYSTEM"]._serialized_start = 6775 + _globals["_ELECTRICSYSTEM"]._serialized_end = 6852 + _globals["_FUELSTORAGE"]._serialized_start = 6854 + _globals["_FUELSTORAGE"]._serialized_end = 6943 + _globals["_MACHINERYSYSTEM"]._serialized_start = 6946 + _globals["_MACHINERYSYSTEM"]._serialized_end = 7456 + _globals["_MACHINERYSYSTEM_PROPULSIONTYPE"]._serialized_start = 7398 + _globals["_MACHINERYSYSTEM_PROPULSIONTYPE"]._serialized_end = 7456 # @@protoc_insertion_point(module_scope) diff --git a/machinery-system-structure/MachSysS/system_structure_pb2.pyi b/machinery-system-structure/MachSysS/system_structure_pb2.pyi index 661cd59..97fc846 100644 --- a/machinery-system-structure/MachSysS/system_structure_pb2.pyi +++ b/machinery-system-structure/MachSysS/system_structure_pb2.pyi @@ -237,6 +237,7 @@ class Gear(_message.Message): "efficiency", "order_from_switchboard_or_shaftline", "unit_price_usd", + "uid", ) NAME_FIELD_NUMBER: _ClassVar[int] GEAR_RATIO_FIELD_NUMBER: _ClassVar[int] @@ -245,6 +246,7 @@ class Gear(_message.Message): EFFICIENCY_FIELD_NUMBER: _ClassVar[int] ORDER_FROM_SWITCHBOARD_OR_SHAFTLINE_FIELD_NUMBER: _ClassVar[int] UNIT_PRICE_USD_FIELD_NUMBER: _ClassVar[int] + UID_FIELD_NUMBER: _ClassVar[int] name: str gear_ratio: float rated_power_kw: float @@ -252,6 +254,7 @@ class Gear(_message.Message): efficiency: Efficiency order_from_switchboard_or_shaftline: int unit_price_usd: float + uid: str def __init__( self, name: _Optional[str] = ..., @@ -261,6 +264,7 @@ class Gear(_message.Message): efficiency: _Optional[_Union[Efficiency, _Mapping]] = ..., order_from_switchboard_or_shaftline: _Optional[int] = ..., unit_price_usd: _Optional[float] = ..., + uid: _Optional[str] = ..., ) -> None: ... class Fuel(_message.Message): @@ -291,6 +295,7 @@ class Engine(_message.Message): "unit_price_usd", "start_delay_s", "turn_off_power_kw", + "uid", ) class NOxCalculationMethod(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): @@ -330,6 +335,7 @@ class Engine(_message.Message): UNIT_PRICE_USD_FIELD_NUMBER: _ClassVar[int] START_DELAY_S_FIELD_NUMBER: _ClassVar[int] TURN_OFF_POWER_KW_FIELD_NUMBER: _ClassVar[int] + UID_FIELD_NUMBER: _ClassVar[int] name: str rated_power_kw: float rated_speed_rpm: float @@ -344,6 +350,7 @@ class Engine(_message.Message): unit_price_usd: float start_delay_s: float turn_off_power_kw: float + uid: str def __init__( self, name: _Optional[str] = ..., @@ -362,6 +369,7 @@ class Engine(_message.Message): unit_price_usd: _Optional[float] = ..., start_delay_s: _Optional[float] = ..., turn_off_power_kw: _Optional[float] = ..., + uid: _Optional[str] = ..., ) -> None: ... class COGAS(_message.Message): @@ -379,6 +387,7 @@ class COGAS(_message.Message): "unit_price_usd", "start_delay_s", "turn_off_power_kw", + "uid", ) NAME_FIELD_NUMBER: _ClassVar[int] RATED_POWER_KW_FIELD_NUMBER: _ClassVar[int] @@ -393,6 +402,7 @@ class COGAS(_message.Message): UNIT_PRICE_USD_FIELD_NUMBER: _ClassVar[int] START_DELAY_S_FIELD_NUMBER: _ClassVar[int] TURN_OFF_POWER_KW_FIELD_NUMBER: _ClassVar[int] + UID_FIELD_NUMBER: _ClassVar[int] name: str rated_power_kw: float rated_speed_rpm: float @@ -406,6 +416,7 @@ class COGAS(_message.Message): unit_price_usd: float start_delay_s: float turn_off_power_kw: float + uid: str def __init__( self, name: _Optional[str] = ..., @@ -423,6 +434,7 @@ class COGAS(_message.Message): unit_price_usd: _Optional[float] = ..., start_delay_s: _Optional[float] = ..., turn_off_power_kw: _Optional[float] = ..., + uid: _Optional[str] = ..., ) -> None: ... class ElectricMachine(_message.Message): @@ -433,6 +445,7 @@ class ElectricMachine(_message.Message): "efficiency", "order_from_switchboard_or_shaftline", "unit_price_usd", + "uid", ) NAME_FIELD_NUMBER: _ClassVar[int] RATED_POWER_KW_FIELD_NUMBER: _ClassVar[int] @@ -440,12 +453,14 @@ class ElectricMachine(_message.Message): EFFICIENCY_FIELD_NUMBER: _ClassVar[int] ORDER_FROM_SWITCHBOARD_OR_SHAFTLINE_FIELD_NUMBER: _ClassVar[int] UNIT_PRICE_USD_FIELD_NUMBER: _ClassVar[int] + UID_FIELD_NUMBER: _ClassVar[int] name: str rated_power_kw: float rated_speed_rpm: float efficiency: Efficiency order_from_switchboard_or_shaftline: int unit_price_usd: float + uid: str def __init__( self, name: _Optional[str] = ..., @@ -454,6 +469,7 @@ class ElectricMachine(_message.Message): efficiency: _Optional[_Union[Efficiency, _Mapping]] = ..., order_from_switchboard_or_shaftline: _Optional[int] = ..., unit_price_usd: _Optional[float] = ..., + uid: _Optional[str] = ..., ) -> None: ... class Battery(_message.Message): @@ -470,6 +486,7 @@ class Battery(_message.Message): "self_discharge_percent_per_day", "state_of_energy_minimum", "state_of_energy_maximum", + "uid", ) NAME_FIELD_NUMBER: _ClassVar[int] ENERGY_CAPACITY_KWH_FIELD_NUMBER: _ClassVar[int] @@ -483,6 +500,7 @@ class Battery(_message.Message): SELF_DISCHARGE_PERCENT_PER_DAY_FIELD_NUMBER: _ClassVar[int] STATE_OF_ENERGY_MINIMUM_FIELD_NUMBER: _ClassVar[int] STATE_OF_ENERGY_MAXIMUM_FIELD_NUMBER: _ClassVar[int] + UID_FIELD_NUMBER: _ClassVar[int] name: str energy_capacity_kwh: float rated_charging_rate_c: float @@ -495,6 +513,7 @@ class Battery(_message.Message): self_discharge_percent_per_day: float state_of_energy_minimum: float state_of_energy_maximum: float + uid: str def __init__( self, name: _Optional[str] = ..., @@ -509,6 +528,7 @@ class Battery(_message.Message): self_discharge_percent_per_day: _Optional[float] = ..., state_of_energy_minimum: _Optional[float] = ..., state_of_energy_maximum: _Optional[float] = ..., + uid: _Optional[str] = ..., ) -> None: ... class ElectricComponent(_message.Message): @@ -518,17 +538,20 @@ class ElectricComponent(_message.Message): "efficiency", "order_from_switchboard_or_shaftline", "unit_price_usd", + "uid", ) NAME_FIELD_NUMBER: _ClassVar[int] RATED_POWER_KW_FIELD_NUMBER: _ClassVar[int] EFFICIENCY_FIELD_NUMBER: _ClassVar[int] ORDER_FROM_SWITCHBOARD_OR_SHAFTLINE_FIELD_NUMBER: _ClassVar[int] UNIT_PRICE_USD_FIELD_NUMBER: _ClassVar[int] + UID_FIELD_NUMBER: _ClassVar[int] name: str rated_power_kw: float efficiency: Efficiency order_from_switchboard_or_shaftline: int unit_price_usd: float + uid: str def __init__( self, name: _Optional[str] = ..., @@ -536,6 +559,7 @@ class ElectricComponent(_message.Message): efficiency: _Optional[_Union[Efficiency, _Mapping]] = ..., order_from_switchboard_or_shaftline: _Optional[int] = ..., unit_price_usd: _Optional[float] = ..., + uid: _Optional[str] = ..., ) -> None: ... class FuelCell(_message.Message): @@ -549,6 +573,7 @@ class FuelCell(_message.Message): "number_modules", "power_minimum_specific", "start_delay_s", + "uid", ) NAME_FIELD_NUMBER: _ClassVar[int] RATED_POWER_KW_FIELD_NUMBER: _ClassVar[int] @@ -559,6 +584,7 @@ class FuelCell(_message.Message): NUMBER_MODULES_FIELD_NUMBER: _ClassVar[int] POWER_MINIMUM_SPECIFIC_FIELD_NUMBER: _ClassVar[int] START_DELAY_S_FIELD_NUMBER: _ClassVar[int] + UID_FIELD_NUMBER: _ClassVar[int] name: str rated_power_kw: float efficiency: Efficiency @@ -568,6 +594,7 @@ class FuelCell(_message.Message): number_modules: int power_minimum_specific: float start_delay_s: float + uid: str def __init__( self, name: _Optional[str] = ..., @@ -579,6 +606,7 @@ class FuelCell(_message.Message): number_modules: _Optional[int] = ..., power_minimum_specific: _Optional[float] = ..., start_delay_s: _Optional[float] = ..., + uid: _Optional[str] = ..., ) -> None: ... class Propeller(_message.Message): @@ -587,21 +615,25 @@ class Propeller(_message.Message): "efficiency", "propulsor_id", "order_from_switchboard_or_shaftline", + "uid", ) NAME_FIELD_NUMBER: _ClassVar[int] EFFICIENCY_FIELD_NUMBER: _ClassVar[int] PROPULSOR_ID_FIELD_NUMBER: _ClassVar[int] ORDER_FROM_SWITCHBOARD_OR_SHAFTLINE_FIELD_NUMBER: _ClassVar[int] + UID_FIELD_NUMBER: _ClassVar[int] name: str efficiency: Efficiency propulsor_id: int order_from_switchboard_or_shaftline: int + uid: str def __init__( self, name: _Optional[str] = ..., efficiency: _Optional[_Union[Efficiency, _Mapping]] = ..., propulsor_id: _Optional[int] = ..., order_from_switchboard_or_shaftline: _Optional[int] = ..., + uid: _Optional[str] = ..., ) -> None: ... class BusBreaker(_message.Message): @@ -620,6 +652,7 @@ class SuperCapacitor(_message.Message): "initial_state_of_charge", "order_from_switchboard_or_shaftline", "unit_price_usd", + "uid", ) NAME_FIELD_NUMBER: _ClassVar[int] ENERGY_CAPACITY_WH_FIELD_NUMBER: _ClassVar[int] @@ -629,6 +662,7 @@ class SuperCapacitor(_message.Message): INITIAL_STATE_OF_CHARGE_FIELD_NUMBER: _ClassVar[int] ORDER_FROM_SWITCHBOARD_OR_SHAFTLINE_FIELD_NUMBER: _ClassVar[int] UNIT_PRICE_USD_FIELD_NUMBER: _ClassVar[int] + UID_FIELD_NUMBER: _ClassVar[int] name: str energy_capacity_wh: float rated_power_kw: float @@ -637,6 +671,7 @@ class SuperCapacitor(_message.Message): initial_state_of_charge: float order_from_switchboard_or_shaftline: int unit_price_usd: float + uid: str def __init__( self, name: _Optional[str] = ..., @@ -647,6 +682,7 @@ class SuperCapacitor(_message.Message): initial_state_of_charge: _Optional[float] = ..., order_from_switchboard_or_shaftline: _Optional[int] = ..., unit_price_usd: _Optional[float] = ..., + uid: _Optional[str] = ..., ) -> None: ... class MechanicalComponent(_message.Message): @@ -656,17 +692,20 @@ class MechanicalComponent(_message.Message): "efficiency", "order_from_switchboard_or_shaftline", "unit_price_usd", + "uid", ) NAME_FIELD_NUMBER: _ClassVar[int] RATED_POWER_KW_FIELD_NUMBER: _ClassVar[int] EFFICIENCY_FIELD_NUMBER: _ClassVar[int] ORDER_FROM_SWITCHBOARD_OR_SHAFTLINE_FIELD_NUMBER: _ClassVar[int] UNIT_PRICE_USD_FIELD_NUMBER: _ClassVar[int] + UID_FIELD_NUMBER: _ClassVar[int] name: str rated_power_kw: float efficiency: Efficiency order_from_switchboard_or_shaftline: int unit_price_usd: float + uid: str def __init__( self, name: _Optional[str] = ..., @@ -674,6 +713,7 @@ class MechanicalComponent(_message.Message): efficiency: _Optional[_Union[Efficiency, _Mapping]] = ..., order_from_switchboard_or_shaftline: _Optional[int] = ..., unit_price_usd: _Optional[float] = ..., + uid: _Optional[str] = ..., ) -> None: ... class Subsystem(_message.Message): @@ -699,6 +739,7 @@ class Subsystem(_message.Message): "ramp_up_rate_limit_percent_per_second", "ramp_down_rate_limit_percent_per_second", "base_load_order", + "uid", ) class PowerType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): @@ -801,6 +842,7 @@ class Subsystem(_message.Message): RAMP_UP_RATE_LIMIT_PERCENT_PER_SECOND_FIELD_NUMBER: _ClassVar[int] RAMP_DOWN_RATE_LIMIT_PERCENT_PER_SECOND_FIELD_NUMBER: _ClassVar[int] BASE_LOAD_ORDER_FIELD_NUMBER: _ClassVar[int] + UID_FIELD_NUMBER: _ClassVar[int] gear: Gear engine: Engine electric_machine: ElectricMachine @@ -822,6 +864,7 @@ class Subsystem(_message.Message): ramp_up_rate_limit_percent_per_second: float ramp_down_rate_limit_percent_per_second: float base_load_order: int + uid: str def __init__( self, gear: _Optional[_Union[Gear, _Mapping]] = ..., @@ -845,6 +888,7 @@ class Subsystem(_message.Message): ramp_up_rate_limit_percent_per_second: _Optional[float] = ..., ramp_down_rate_limit_percent_per_second: _Optional[float] = ..., base_load_order: _Optional[int] = ..., + uid: _Optional[str] = ..., ) -> None: ... class Switchboard(_message.Message): diff --git a/machinery-system-structure/build_package.sh b/machinery-system-structure/build_package.sh new file mode 100644 index 0000000..63c2400 --- /dev/null +++ b/machinery-system-structure/build_package.sh @@ -0,0 +1,10 @@ +set -e +bash ./compile_proto.sh +echo "Exporting notebooks" +nbdev_export +echo "Running tests" +nbdev_test +echo "Formatting code" +black . +echo "Building package" +python -m build \ No newline at end of file diff --git a/machinery-system-structure/build_package_linux.sh b/machinery-system-structure/build_package_linux.sh deleted file mode 100644 index c1f6748..0000000 --- a/machinery-system-structure/build_package_linux.sh +++ /dev/null @@ -1,13 +0,0 @@ -set -e -echo "Building protobuf files" -protoc -I=proto --proto_path=proto --python_out=MachSysS proto/system_structure.proto proto/gymir_result.proto proto/feems_result.proto -echo "Fixing imports in protobuf files" -sed -i 's/import system_structure_pb2/from . import system_structure_pb2/' MachSysS/feems_result_pb2.py -echo "Exporting notebooks" -nbdev_export -echo "Running tests" -nbdev_test -echo "Formatting code" -black . -echo "Building package" -python -m build diff --git a/machinery-system-structure/build_package_mac.sh b/machinery-system-structure/build_package_mac.sh deleted file mode 100644 index 6b23bd1..0000000 --- a/machinery-system-structure/build_package_mac.sh +++ /dev/null @@ -1,13 +0,0 @@ -set -e -echo "Building protobuf files" -protoc -I=proto --proto_path=proto --pyi_out=MachSysS --python_out=MachSysS proto/system_structure.proto proto/gymir_result.proto proto/feems_result.proto -echo "Fixing imports in protobuf files" -sed -i '' 's/import system_structure_pb2/from . import system_structure_pb2/' MachSysS/feems_result_pb2.py -echo "Exporting notebooks" -nbdev_export -echo "Running tests" -nbdev_test -echo "Formatting code" -black . -echo "Building package" -python -m build \ No newline at end of file diff --git a/machinery-system-structure/compile_proto.sh b/machinery-system-structure/compile_proto.sh new file mode 100644 index 0000000..22ebc2d --- /dev/null +++ b/machinery-system-structure/compile_proto.sh @@ -0,0 +1,32 @@ +set -e +echo "Building protobuf files" +protoc -I=proto --proto_path=proto --pyi_out=MachSysS --python_out=MachSysS proto/system_structure.proto proto/gymir_result.proto proto/feems_result.proto +echo "Fixing imports in protobuf files" + +# loop over files and replace import system_structure_pb2 +# Determine OS platform +OS="$(uname -s)" +case "$OS" in + Linux*) machine=Linux;; + Darwin*) machine=Mac;; + *) machine="UNKNOWN:${OS}" +esac +echo "Detected OS: $machine" + +# Run commands based on the detected OS +case "$machine" in + Linux) echo "Running Linux-specific commands" + # Linux specific commands here + for file in MachSysS/*_pb2.py MachSysS/*_pb2.pyi; do + sed -i 's/import system_structure_pb2/from . import system_structure_pb2/' $file + done + ;; + Mac) echo "Running macOS-specific commands" + for file in MachSysS/*_pb2.py MachSysS/*_pb2.pyi; do + sed -i '' 's/import system_structure_pb2/from . import system_structure_pb2/' $file + done + ;; + *) echo "Unsupported OS. Exiting script." + exit 1 + ;; +esac \ No newline at end of file diff --git a/machinery-system-structure/proto/system_structure.proto b/machinery-system-structure/proto/system_structure.proto index ff063d9..b48ec6a 100644 --- a/machinery-system-structure/proto/system_structure.proto +++ b/machinery-system-structure/proto/system_structure.proto @@ -84,6 +84,7 @@ message Gear { Efficiency efficiency = 5; uint32 order_from_switchboard_or_shaftline = 6; double unit_price_usd = 7; + string uid = 8; } // Should follow the same order as in feems.type_for_feems.TypeFuel @@ -146,6 +147,7 @@ message Engine { double unit_price_usd = 12; double start_delay_s = 13; double turn_off_power_kw = 14; + string uid = 15; } message COGAS { @@ -162,6 +164,7 @@ message COGAS { double unit_price_usd = 11; double start_delay_s = 12; double turn_off_power_kw = 13; + string uid = 14; } message ElectricMachine { @@ -171,6 +174,7 @@ message ElectricMachine { Efficiency efficiency = 4; uint32 order_from_switchboard_or_shaftline = 5; double unit_price_usd = 6; + string uid = 7; } message Battery { @@ -186,6 +190,7 @@ message Battery { double self_discharge_percent_per_day = 10; double state_of_energy_minimum = 11; double state_of_energy_maximum = 12; + string uid = 13; } message ElectricComponent { @@ -194,6 +199,7 @@ message ElectricComponent { Efficiency efficiency = 3; uint32 order_from_switchboard_or_shaftline = 4; double unit_price_usd = 5; + string uid = 6; } message FuelCell { @@ -206,6 +212,7 @@ message FuelCell { uint32 number_modules = 8; double power_minimum_specific= 9; double start_delay_s = 10; + string uid = 11; } message Propeller { @@ -213,6 +220,7 @@ message Propeller { Efficiency efficiency = 2; uint32 propulsor_id = 3; uint32 order_from_switchboard_or_shaftline = 5; + string uid = 6; } message BusBreaker { @@ -228,6 +236,7 @@ message SuperCapacitor { double initial_state_of_charge = 6; uint32 order_from_switchboard_or_shaftline = 7; double unit_price_usd = 8; + string uid = 9; } message MechanicalComponent { @@ -236,6 +245,7 @@ message MechanicalComponent { Efficiency efficiency = 3; uint32 order_from_switchboard_or_shaftline = 4; double unit_price_usd = 5; + string uid = 6; } message Subsystem { @@ -300,6 +310,7 @@ message Subsystem { double ramp_up_rate_limit_percent_per_second = 19; double ramp_down_rate_limit_percent_per_second = 20; uint32 base_load_order = 21; // The order of the power source in the base load calculation. 1 is the primary base load, 2 is the secondary base load, etc. + string uid = 22; } message Switchboard { diff --git a/machinery-system-structure/settings.ini b/machinery-system-structure/settings.ini index 2d7828b..62563e1 100644 --- a/machinery-system-structure/settings.ini +++ b/machinery-system-structure/settings.ini @@ -12,7 +12,7 @@ user = keviny author = Kevin Koosup Yum author_email = kevinkoosup.yum@sintef.no copyright = SINTEF Ocean -version = 0.6.5 +version = 0.6.6 min_python = 3.10 audience = Developers language = English diff --git a/machinery-system-structure/shipX2DeSim.json b/machinery-system-structure/shipX2DeSim.json new file mode 100644 index 0000000..6f1f9d1 --- /dev/null +++ b/machinery-system-structure/shipX2DeSim.json @@ -0,0 +1,90 @@ +[ + { + "shipX": "task", + "deSim": "task_type" + }, + { + "shipX": "assignment", + "deSim": "task_name" + }, + { + "shipX": "latitude", + "deSim": "latitude_deg" + }, + { + "shipX": "longitude", + "deSim": "longitude_deg" + }, + { + "shipX": "heading", + "deSim": "heading_deg" + }, + { + "shipX": "wave height significant", + "deSim": "wave_height_significant_m" + }, + { + "shipX": "wave peak period (tp)", + "deSim": "wave_peak_period_s" + }, + { + "shipX": "wave direction in degrees relative to geographic north", + "deSim": "wave_dir_rel_north_deg" + }, + { + "shipX": "wave direction in degrees relative to vessel heading", + "deSim": "wave_dir_rel_vessel_deg" + }, + { + "shipX": "wind speed in meter per sec", + "deSim": "wind_speed_mps" + }, + { + "shipX": "wind direction in degrees relative to geographic north", + "deSim": "wind_dir_rel_north_deg" + }, + { + "shipX": "wind direction in degrees relative to vessel heading", + "deSim": "wind_dir_rel_vessel_deg" + }, + { + "shipX": "speed over ground", + "deSim": "speed_over_ground_kn" + }, + { + "shipX": "speed", + "deSim": "speed_over_ground_kn" + }, + { + "shipX": "speed through water", + "deSim": "speed_through_water_kn" + }, + { + "shipX": "sea current speed in meter pr sec", + "deSim": "current_speed_mps" + }, + { + "shipX": "sea current direction in degrees relative to geographic north", + "deSim": "current_dir_rel_north_deg" + }, + { + "shipX": "power", + "deSim": "power_kw" + }, + { + "shipX": "torque", + "deSim": "torque_k_nm" + }, + { + "shipX": "thrust", + "deSim": "thrust_k_n" + }, + { + "shipX": "rtot", + "deSim": "total_resistance_k_n" + }, + { + "shipX": "weather source", + "deSim": "weather_source" + } +] \ No newline at end of file diff --git a/machinery-system-structure/tests/electric_propulsion_system.mss b/machinery-system-structure/tests/electric_propulsion_system.mss index bd1e6b5..e7b5c6b 100644 Binary files a/machinery-system-structure/tests/electric_propulsion_system.mss and b/machinery-system-structure/tests/electric_propulsion_system.mss differ diff --git a/machinery-system-structure/tests/electric_system_with_pto.mss b/machinery-system-structure/tests/electric_system_with_pto.mss index 872fae5..6aa27c0 100644 Binary files a/machinery-system-structure/tests/electric_system_with_pto.mss and b/machinery-system-structure/tests/electric_system_with_pto.mss differ diff --git a/machinery-system-structure/tests/hybrid_propulsion_system.mss b/machinery-system-structure/tests/hybrid_propulsion_system.mss index 9e916dc..b8565eb 100644 Binary files a/machinery-system-structure/tests/hybrid_propulsion_system.mss and b/machinery-system-structure/tests/hybrid_propulsion_system.mss differ diff --git a/machinery-system-structure/tests/mechanical_propulsion_with_electric_system.mss b/machinery-system-structure/tests/mechanical_propulsion_with_electric_system.mss index 5f066a4..214027f 100644 Binary files a/machinery-system-structure/tests/mechanical_propulsion_with_electric_system.mss and b/machinery-system-structure/tests/mechanical_propulsion_with_electric_system.mss differ diff --git a/machinery-system-structure/tests/mechanical_system_with_pto.mss b/machinery-system-structure/tests/mechanical_system_with_pto.mss index 8452e15..b2cd6b6 100644 Binary files a/machinery-system-structure/tests/mechanical_system_with_pto.mss and b/machinery-system-structure/tests/mechanical_system_with_pto.mss differ diff --git a/machinery-system-structure/tests/system_proto.mss b/machinery-system-structure/tests/system_proto.mss index bd1e6b5..e7b5c6b 100644 Binary files a/machinery-system-structure/tests/system_proto.mss and b/machinery-system-structure/tests/system_proto.mss differ diff --git a/machinery-system-structure/tests/system_proto_with_coges.mss b/machinery-system-structure/tests/system_proto_with_coges.mss index 6a4c12d..463f5c4 100644 Binary files a/machinery-system-structure/tests/system_proto_with_coges.mss and b/machinery-system-structure/tests/system_proto_with_coges.mss differ diff --git a/machinery-system-structure/tests/utility_compare_proto.py b/machinery-system-structure/tests/utility_compare_proto.py index 3f659c4..3208b77 100644 --- a/machinery-system-structure/tests/utility_compare_proto.py +++ b/machinery-system-structure/tests/utility_compare_proto.py @@ -157,6 +157,7 @@ def compare_proto_subsystems( "name", "ratedPowerKw", "ratedSpeedRpm", + "uid", ] subsystem1_dict = MessageToDict(subsystem1) subsystem2_dict = MessageToDict(subsystem2) diff --git a/machinery-system-structure/timeseries_test.csv b/machinery-system-structure/timeseries_test.csv new file mode 100644 index 0000000..989cf9d --- /dev/null +++ b/machinery-system-structure/timeseries_test.csv @@ -0,0 +1,546 @@ +1604188800.0,task,sailingtaskwithspeedchange +1604188800.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604188800.0,latitude,65.9177 +1604188800.0,longitude,13.105099999999998 +1604188800.0,heading,0.0 +1604188800.0,wave height significant,0.2183055281639099 +1604188800.0,wave peak period (tp),2.0086119174957275 +1604188800.0,wave direction in degrees relative to geographic north,132.63381958007812 +1604188800.0,wave direction in degrees relative to vessel heading,132.63381958007812 +1604188800.0,wind speed in meter per sec,5.820233345031738 +1604188800.0,wind direction in degrees relative to geographic north,284.8569641113281 +1604188800.0,wind direction in degrees relative to vessel heading,284.8569641113281 +1604188800.0,weather source,remote weather_wam800 +1604188800.0,speed over ground,15.0 +1604188800.0,speed through water,0.0 +1604188800.0,sea current speed in meter pr sec,0.0 +1604188800.0,sea current direction in degrees relative to geographic north,0.0 +1604188800.0,power,311.6036210421622 +1604188800.0,torque,0.0 +1604188800.0,thrust,0.0 +1604188800.0,rtot,0.0 +1604189706.0,task,sailingtaskwithspeedchange +1604189706.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604189706.0,latitude,65.94398908591388 +1604189706.0,longitude,12.965058340508804 +1604189706.0,heading,-65.22003792766533 +1604189706.0,wave height significant,0.5654219388961792 +1604189706.0,wave peak period (tp),2.647538900375366 +1604189706.0,wave direction in degrees relative to geographic north,98.8360595703125 +1604189706.0,wave direction in degrees relative to vessel heading,164.05609749797782 +1604189706.0,wind speed in meter per sec,14.152313232421875 +1604189706.0,wind direction in degrees relative to geographic north,278.6241760253906 +1604189706.0,wind direction in degrees relative to vessel heading,343.84421395305594 +1604189706.0,weather source,remote weather_wam800 +1604189706.0,speed over ground,15.0 +1604189706.0,speed through water,0.0 +1604189706.0,sea current speed in meter pr sec,0.0 +1604189706.0,sea current direction in degrees relative to geographic north,0.0 +1604189706.0,power,112.98942864346961 +1604189706.0,torque,0.0 +1604189706.0,thrust,0.0 +1604189706.0,rtot,0.0 +1604190517.0,task,sailingtaskwithspeedchange +1604190517.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604190517.0,latitude,65.9810068889561 +1604190517.0,longitude,12.860980584770873 +1604190517.0,heading,-48.82581811917973 +1604190517.0,wave height significant,0.6421118378639221 +1604190517.0,wave peak period (tp),3.125613212585449 +1604190517.0,wave direction in degrees relative to geographic north,121.88983154296875 +1604190517.0,wave direction in degrees relative to vessel heading,170.71564966214848 +1604190517.0,wind speed in meter per sec,13.640847206115723 +1604190517.0,wind direction in degrees relative to geographic north,305.4472351074219 +1604190517.0,wind direction in degrees relative to vessel heading,354.27305322660163 +1604190517.0,weather source,remote weather_wam800 +1604190517.0,speed over ground,15.0 +1604190517.0,speed through water,0.0 +1604190517.0,sea current speed in meter pr sec,0.0 +1604190517.0,sea current direction in degrees relative to geographic north,0.0 +1604190517.0,power,495.01570738457923 +1604190517.0,torque,0.0 +1604190517.0,thrust,0.0 +1604190517.0,rtot,0.0 +1604191186.0,task,sailingtaskwithspeedchange +1604191186.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604191186.0,latitude,65.96499305300499 +1604191186.0,longitude,12.753953706942221 +1604191186.0,heading,-110.12832330334405 +1604191186.0,wave height significant,0.3410550355911255 +1604191186.0,wave peak period (tp),2.3184194564819336 +1604191186.0,wave direction in degrees relative to geographic north,104.8050537109375 +1604191186.0,wave direction in degrees relative to vessel heading,214.93337701428155 +1604191186.0,wind speed in meter per sec,10.641560554504395 +1604191186.0,wind direction in degrees relative to geographic north,298.5522766113281 +1604191186.0,wind direction in degrees relative to vessel heading,48.68059991467214 +1604191186.0,weather source,remote weather_wam800 +1604191186.0,speed over ground,15.0 +1604191186.0,speed through water,0.0 +1604191186.0,sea current speed in meter pr sec,0.0 +1604191186.0,sea current direction in degrees relative to geographic north,0.0 +1604191186.0,power,580.5793529320733 +1604191186.0,torque,0.0 +1604191186.0,thrust,0.0 +1604191186.0,rtot,0.0 +1604192400.0,task,sailingtaskwithspeedchange +1604192400.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604192400.0,latitude,65.90710116529142 +1604192400.0,longitude,12.60384498835462 +1604192400.0,heading,-133.33669019661886 +1604192400.0,wave height significant,0.2209988236427307 +1604192400.0,wave peak period (tp),2.3221964836120605 +1604192400.0,wave direction in degrees relative to geographic north,163.26300048828125 +1604192400.0,wave direction in degrees relative to vessel heading,296.5996906849001 +1604192400.0,wind speed in meter per sec,4.227132320404053 +1604192400.0,wind direction in degrees relative to geographic north,306.3592529296875 +1604192400.0,wind direction in degrees relative to vessel heading,79.69594312630636 +1604192400.0,weather source,remote weather_wam800 +1604192400.0,speed over ground,15.0 +1604192400.0,speed through water,0.0 +1604192400.0,sea current speed in meter pr sec,0.0 +1604192400.0,sea current direction in degrees relative to geographic north,0.0 +1604192400.0,power,277.2219163791282 +1604192400.0,torque,0.0 +1604192400.0,thrust,0.0 +1604192400.0,rtot,0.0 +1604192423.0,task,sailingtaskwithspeedchange +1604192423.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604192423.0,latitude,65.90600295523144 +1604192423.0,longitude,12.601007634674227 +1604192423.0,heading,-133.4737531309435 +1604192423.0,wave height significant,0.22912248969078064 +1604192423.0,wave peak period (tp),2.4058475494384766 +1604192423.0,wave direction in degrees relative to geographic north,162.33157348632812 +1604192423.0,wave direction in degrees relative to vessel heading,295.8053266172716 +1604192423.0,wind speed in meter per sec,4.365622520446777 +1604192423.0,wind direction in degrees relative to geographic north,306.01507568359375 +1604192423.0,wind direction in degrees relative to vessel heading,79.48882881453721 +1604192423.0,weather source,remote weather_wam800 +1604192423.0,speed over ground,15.0 +1604192423.0,speed through water,0.0 +1604192423.0,sea current speed in meter pr sec,0.0 +1604192423.0,sea current direction in degrees relative to geographic north,0.0 +1604192423.0,power,25.905163402709206 +1604192423.0,torque,0.0 +1604192423.0,thrust,0.0 +1604192423.0,rtot,0.0 +1604193529.0,task,sailingtaskwithspeedchange +1604193529.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604193529.0,latitude,65.83600157254318 +1604193529.0,longitude,12.524001724709004 +1604193529.0,heading,-155.75153715873785 +1604193529.0,wave height significant,0.3684995770454407 +1604193529.0,wave peak period (tp),2.9408090114593506 +1604193529.0,wave direction in degrees relative to geographic north,174.51553344726562 +1604193529.0,wave direction in degrees relative to vessel heading,330.2670706060035 +1604193529.0,wind speed in meter per sec,7.4958086013793945 +1604193529.0,wind direction in degrees relative to geographic north,329.2124328613281 +1604193529.0,wind direction in degrees relative to vessel heading,124.96397002006597 +1604193529.0,weather source,remote weather_wam800 +1604193529.0,speed over ground,15.0 +1604193529.0,speed through water,0.0 +1604193529.0,sea current speed in meter pr sec,0.0 +1604193529.0,sea current direction in degrees relative to geographic north,0.0 +1604193529.0,power,493.91605516134297 +1604193529.0,torque,0.0 +1604193529.0,thrust,0.0 +1604193529.0,rtot,0.0 +1604194874.0,task,sailingtaskwithspeedchange +1604194874.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604194874.0,latitude,65.78038971273043 +1604194874.0,longitude,12.341069226717616 +1604194874.0,heading,-126.48618573170994 +1604194874.0,wave height significant,0.568785548210144 +1604194874.0,wave peak period (tp),4.305638790130615 +1604194874.0,wave direction in degrees relative to geographic north,205.4559783935547 +1604194874.0,wave direction in degrees relative to vessel heading,331.94216412526464 +1604194874.0,wind speed in meter per sec,7.179786205291748 +1604194874.0,wind direction in degrees relative to geographic north,334.7338562011719 +1604194874.0,wind direction in degrees relative to vessel heading,101.22004193288183 +1604194874.0,weather source,remote weather_wam800 +1604194874.0,speed over ground,15.0 +1604194874.0,speed through water,0.0 +1604194874.0,sea current speed in meter pr sec,0.0 +1604194874.0,sea current direction in degrees relative to geographic north,0.0 +1604194874.0,power,681.3837164029684 +1604194874.0,torque,0.0 +1604194874.0,thrust,0.0 +1604194874.0,rtot,0.0 +1604196000.0,task,sailingtaskwithspeedchange +1604196000.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604196000.0,latitude,65.70545356737648 +1604196000.0,longitude,12.287149422137635 +1604196000.0,heading,-163.50715579194338 +1604196000.0,wave height significant,0.9916881322860718 +1604196000.0,wave peak period (tp),3.923922061920166 +1604196000.0,wave direction in degrees relative to geographic north,189.7821502685547 +1604196000.0,wave direction in degrees relative to vessel heading,353.28930606049806 +1604196000.0,wind speed in meter per sec,13.11324691772461 +1604196000.0,wind direction in degrees relative to geographic north,348.2752380371094 +1604196000.0,wind direction in degrees relative to vessel heading,151.78239382905275 +1604196000.0,weather source,remote weather_wam800 +1604196000.0,speed over ground,15.0 +1604196000.0,speed through water,0.0 +1604196000.0,sea current speed in meter pr sec,0.0 +1604196000.0,sea current direction in degrees relative to geographic north,0.0 +1604196000.0,power,844.1279292397296 +1604196000.0,torque,0.0 +1604196000.0,thrust,0.0 +1604196000.0,rtot,0.0 +1604197749.0,task,sailingtaskwithspeedchange +1604197749.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604197749.0,latitude,65.58901885359728 +1604197749.0,longitude,12.204013398823498 +1604197749.0,heading,-163.55631509798957 +1604197749.0,wave height significant,1.085551381111145 +1604197749.0,wave peak period (tp),12.284492492675781 +1604197749.0,wave direction in degrees relative to geographic north,217.18252563476562 +1604197749.0,wave direction in degrees relative to vessel heading,20.738840732755193 +1604197749.0,wind speed in meter per sec,12.736698150634766 +1604197749.0,wind direction in degrees relative to geographic north,330.674560546875 +1604197749.0,wind direction in degrees relative to vessel heading,134.23087564486457 +1604197749.0,weather source,remote weather_wam800 +1604197749.0,speed over ground,15.0 +1604197749.0,speed through water,0.0 +1604197749.0,sea current speed in meter pr sec,0.0 +1604197749.0,sea current direction in degrees relative to geographic north,0.0 +1604197749.0,power,148.257820839521 +1604197749.0,torque,0.0 +1604197749.0,thrust,0.0 +1604197749.0,rtot,0.0 +1604199600.0,task,sailingtaskwithspeedchange +1604199600.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604199600.0,latitude,65.50779836872366 +1604199600.0,longitude,11.963586101204264 +1604199600.0,heading,-129.1095415229322 +1604199600.0,wave height significant,1.7652848958969116 +1604199600.0,wave peak period (tp),14.864236831665039 +1604199600.0,wave direction in degrees relative to geographic north,226.7213897705078 +1604199600.0,wave direction in degrees relative to vessel heading,355.83093129344 +1604199600.0,wind speed in meter per sec,13.274995803833008 +1604199600.0,wind direction in degrees relative to geographic north,332.4287414550781 +1604199600.0,wind direction in degrees relative to vessel heading,101.53828297801033 +1604199600.0,weather source,remote weather_wam800 +1604199600.0,speed over ground,15.0 +1604199600.0,speed through water,0.0 +1604199600.0,sea current speed in meter pr sec,0.0 +1604199600.0,sea current direction in degrees relative to geographic north,0.0 +1604199600.0,power,906.6903161480209 +1604199600.0,torque,0.0 +1604199600.0,thrust,0.0 +1604199600.0,rtot,0.0 +1604199914.0,task,sailingtaskwithspeedchange +1604199914.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604199914.0,latitude,65.49398265570295 +1604199914.0,longitude,11.922949031059236 +1604199914.0,heading,-129.32840532264524 +1604199914.0,wave height significant,1.7833387851715088 +1604199914.0,wave peak period (tp),14.864236831665039 +1604199914.0,wave direction in degrees relative to geographic north,219.7960205078125 +1604199914.0,wave direction in degrees relative to vessel heading,349.12442583045777 +1604199914.0,wind speed in meter per sec,13.837101936340332 +1604199914.0,wind direction in degrees relative to geographic north,330.6998596191406 +1604199914.0,wind direction in degrees relative to vessel heading,100.02826494178589 +1604199914.0,weather source,remote weather_wam800 +1604199914.0,speed over ground,15.0 +1604199914.0,speed through water,0.0 +1604199914.0,sea current speed in meter pr sec,0.0 +1604199914.0,sea current direction in degrees relative to geographic north,0.0 +1604199914.0,power,563.1002964115078 +1604199914.0,torque,0.0 +1604199914.0,thrust,0.0 +1604199914.0,rtot,0.0 +1604203037.0,task,sailingtaskwithspeedchange +1604203037.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604203037.0,latitude,65.28002429220516 +1604203037.0,longitude,11.840009339302998 +1604203037.0,heading,-170.79109851876296 +1604203037.0,wave height significant,1.3425443172454834 +1604203037.0,wave peak period (tp),14.854530334472656 +1604203037.0,wave direction in degrees relative to geographic north,208.41525268554688 +1604203037.0,wave direction in degrees relative to vessel heading,19.20635120430984 +1604203037.0,wind speed in meter per sec,11.585634231567383 +1604203037.0,wind direction in degrees relative to geographic north,330.5367736816406 +1604203037.0,wind direction in degrees relative to vessel heading,141.3278722004036 +1604203037.0,weather source,remote weather_wam800 +1604203037.0,speed over ground,15.0 +1604203037.0,speed through water,0.0 +1604203037.0,sea current speed in meter pr sec,0.0 +1604203037.0,sea current direction in degrees relative to geographic north,0.0 +1604203037.0,power,788.0065500622838 +1604203037.0,torque,0.0 +1604203037.0,thrust,0.0 +1604203037.0,rtot,0.0 +1604203200.0,task,sailingtaskwithspeedchange +1604203200.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604203200.0,latitude,65.2687367827885 +1604203200.0,longitude,11.838237359089353 +1604203200.0,heading,-176.24237449022505 +1604203200.0,wave height significant,1.4657821655273438 +1604203200.0,wave peak period (tp),13.512940406799316 +1604203200.0,wave direction in degrees relative to geographic north,205.18359375 +1604203200.0,wave direction in degrees relative to vessel heading,21.425968240225075 +1604203200.0,wind speed in meter per sec,13.373538970947266 +1604203200.0,wind direction in degrees relative to geographic north,339.33282470703125 +1604203200.0,wind direction in degrees relative to vessel heading,155.57519919725632 +1604203200.0,weather source,remote weather_wam800 +1604203200.0,speed over ground,15.0 +1604203200.0,speed through water,0.0 +1604203200.0,sea current speed in meter pr sec,0.0 +1604203200.0,sea current direction in degrees relative to geographic north,0.0 +1604203200.0,power,423.3180725307778 +1604203200.0,torque,0.0 +1604203200.0,thrust,0.0 +1604203200.0,rtot,0.0 +1604204886.0,task,sailingtaskwithspeedchange +1604204886.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604204886.0,latitude,65.1519825558404 +1604204886.0,longitude,11.819997286784531 +1604204886.0,heading,-176.24398401749744 +1604204886.0,wave height significant,1.0866183042526245 +1604204886.0,wave peak period (tp),14.864236831665039 +1604204886.0,wave direction in degrees relative to geographic north,231.82382202148438 +1604204886.0,wave direction in degrees relative to vessel heading,48.067806038981814 +1604204886.0,wind speed in meter per sec,13.297026634216309 +1604204886.0,wind direction in degrees relative to geographic north,339.98541259765625 +1604204886.0,wind direction in degrees relative to vessel heading,156.22939661515375 +1604204886.0,weather source,remote weather_wam800 +1604204886.0,speed over ground,15.0 +1604204886.0,speed through water,0.0 +1604204886.0,sea current speed in meter pr sec,0.0 +1604204886.0,sea current direction in degrees relative to geographic north,0.0 +1604204886.0,power,945.3084160727689 +1604204886.0,torque,0.0 +1604204886.0,thrust,0.0 +1604204886.0,rtot,0.0 +1604205991.0,task,sailingtaskwithspeedchange +1604205991.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604205991.0,latitude,65.07800532295366 +1604205991.0,longitude,11.772003443390757 +1604205991.0,heading,-164.70860366248255 +1604205991.0,wave height significant,0.41843631863594055 +1604205991.0,wave peak period (tp),2.430420398712158 +1604205991.0,wave direction in degrees relative to geographic north,183.70155334472656 +1604205991.0,wave direction in degrees relative to vessel heading,348.41015700720914 +1604205991.0,wind speed in meter per sec,12.319045066833496 +1604205991.0,wind direction in degrees relative to geographic north,338.69305419921875 +1604205991.0,wind direction in degrees relative to vessel heading,143.40165786170132 +1604205991.0,weather source,remote weather_wam800 +1604205991.0,speed over ground,15.0 +1604205991.0,speed through water,0.0 +1604205991.0,sea current speed in meter pr sec,0.0 +1604205991.0,sea current direction in degrees relative to geographic north,0.0 +1604205991.0,power,699.2054333685735 +1604205991.0,torque,0.0 +1604205991.0,thrust,0.0 +1604205991.0,rtot,0.0 +1604206800.0,task,sailingtaskwithspeedchange +1604206800.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604206800.0,latitude,65.04551963915743 +1604206800.0,longitude,11.663404990131633 +1604206800.0,heading,-125.30477994911364 +1604206800.0,wave height significant,0.5285452604293823 +1604206800.0,wave peak period (tp),14.864237785339355 +1604206800.0,wave direction in degrees relative to geographic north,167.16339111328125 +1604206800.0,wave direction in degrees relative to vessel heading,292.4681710623949 +1604206800.0,wind speed in meter per sec,10.17496395111084 +1604206800.0,wind direction in degrees relative to geographic north,335.6573486328125 +1604206800.0,wind direction in degrees relative to vessel heading,100.96212858192615 +1604206800.0,weather source,remote weather_wam800 +1604206800.0,speed over ground,15.0 +1604206800.0,speed through water,0.0 +1604206800.0,sea current speed in meter pr sec,0.0 +1604206800.0,sea current direction in degrees relative to geographic north,0.0 +1604206800.0,power,152.91384664645767 +1604206800.0,torque,0.0 +1604206800.0,thrust,0.0 +1604206800.0,rtot,0.0 +1604207782.0,task,sailingtaskwithspeedchange +1604207782.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604207782.0,latitude,65.0059815747751 +1604207782.0,longitude,11.531938914962092 +1604207782.0,heading,-125.40325299862951 +1604207782.0,wave height significant,0.6025618314743042 +1604207782.0,wave peak period (tp),13.512940406799316 +1604207782.0,wave direction in degrees relative to geographic north,190.9228515625 +1604207782.0,wave direction in degrees relative to vessel heading,316.3261045611295 +1604207782.0,wind speed in meter per sec,11.866759300231934 +1604207782.0,wind direction in degrees relative to geographic north,336.20806884765625 +1604207782.0,wind direction in degrees relative to vessel heading,101.61132184628576 +1604207782.0,weather source,remote weather_wam800 +1604207782.0,speed over ground,15.0 +1604207782.0,speed through water,0.0 +1604207782.0,sea current speed in meter pr sec,0.0 +1604207782.0,sea current direction in degrees relative to geographic north,0.0 +1604207782.0,power,274.58177599789303 +1604207782.0,torque,0.0 +1604207782.0,thrust,0.0 +1604207782.0,rtot,0.0 +1604208824.0,task,sailingtaskwithspeedchange +1604208824.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604208824.0,latitude,64.96500807306059 +1604208824.0,longitude,11.391027676550678 +1604208824.0,heading,-124.45086946507155 +1604208824.0,wave height significant,0.5090584754943848 +1604208824.0,wave peak period (tp),2.673462390899658 +1604208824.0,wave direction in degrees relative to geographic north,195.25860595703125 +1604208824.0,wave direction in degrees relative to vessel heading,319.7094754221028 +1604208824.0,wind speed in meter per sec,10.641841888427734 +1604208824.0,wind direction in degrees relative to geographic north,339.5870056152344 +1604208824.0,wind direction in degrees relative to vessel heading,104.03787508030592 +1604208824.0,weather source,remote weather_wam800 +1604208824.0,speed over ground,15.0 +1604208824.0,speed through water,0.0 +1604208824.0,sea current speed in meter pr sec,0.0 +1604208824.0,sea current direction in degrees relative to geographic north,0.0 +1604208824.0,power,593.0435028248605 +1604208824.0,torque,0.0 +1604208824.0,thrust,0.0 +1604208824.0,rtot,0.0 +1604209673.0,task,sailingtaskwithspeedchange +1604209673.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604209673.0,latitude,64.90898168220494 +1604209673.0,longitude,11.347985958472387 +1604209673.0,heading,-161.9536614634771 +1604209673.0,wave height significant,0.2734917104244232 +1604209673.0,wave peak period (tp),1.8260105848312378 +1604209673.0,wave direction in degrees relative to geographic north,174.63516235351562 +1604209673.0,wave direction in degrees relative to vessel heading,336.5888238169927 +1604209673.0,wind speed in meter per sec,10.212474822998047 +1604209673.0,wind direction in degrees relative to geographic north,341.6849365234375 +1604209673.0,wind direction in degrees relative to vessel heading,143.6385979869146 +1604209673.0,weather source,remote weather_wam800 +1604209673.0,speed over ground,15.0 +1604209673.0,speed through water,0.0 +1604209673.0,sea current speed in meter pr sec,0.0 +1604209673.0,sea current direction in degrees relative to geographic north,0.0 +1604209673.0,power,126.71827310428397 +1604209673.0,torque,0.0 +1604209673.0,thrust,0.0 +1604209673.0,rtot,0.0 +1604210400.0,task,sailingtaskwithspeedchange +1604210400.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604210400.0,latitude,64.8663919961889 +1604210400.0,longitude,11.284255412958112 +1604210400.0,heading,-147.5532836732007 +1604210400.0,wave height significant,0.3633185625076294 +1604210400.0,wave peak period (tp),1.8260105848312378 +1604210400.0,wave direction in degrees relative to geographic north,192.0460968017578 +1604210400.0,wave direction in degrees relative to vessel heading,339.5993804749585 +1604210400.0,wind speed in meter per sec,8.035566329956055 +1604210400.0,wind direction in degrees relative to geographic north,344.24395751953125 +1604210400.0,wind direction in degrees relative to vessel heading,131.79724119273192 +1604210400.0,weather source,remote weather_wam800 +1604210400.0,speed over ground,15.0 +1604210400.0,speed through water,0.0 +1604210400.0,sea current speed in meter pr sec,0.0 +1604210400.0,sea current direction in degrees relative to geographic north,0.0 +1604210400.0,power,4.692365611099425 +1604210400.0,torque,0.0 +1604210400.0,thrust,0.0 +1604210400.0,rtot,0.0 +1604211652.0,task,sailingtaskwithspeedchange +1604211652.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604211652.0,latitude,64.79298273634353 +1604211652.0,longitude,11.174974384315643 +1604211652.0,heading,-147.61099026064363 +1604211652.0,wave height significant,1.2737219333648682 +1604211652.0,wave peak period (tp),12.284492492675781 +1604211652.0,wave direction in degrees relative to geographic north,234.6975555419922 +1604211652.0,wave direction in degrees relative to vessel heading,22.30854580263582 +1604211652.0,wind speed in meter per sec,11.271003723144531 +1604211652.0,wind direction in degrees relative to geographic north,344.09344482421875 +1604211652.0,wind direction in degrees relative to vessel heading,131.70443508486238 +1604211652.0,weather source,remote weather_wam800 +1604211652.0,speed over ground,15.0 +1604211652.0,speed through water,0.0 +1604211652.0,sea current speed in meter pr sec,0.0 +1604211652.0,sea current direction in degrees relative to geographic north,0.0 +1604211652.0,power,532.0021501000223 +1604211652.0,torque,0.0 +1604211652.0,thrust,0.0 +1604211652.0,rtot,0.0 +1604212887.0,task,sailingtaskwithspeedchange +1604212887.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604212887.0,latitude,64.72299036981285 +1604212887.0,longitude,11.058984092573088 +1604212887.0,heading,-144.69889935536287 +1604212887.0,wave height significant,1.9874669313430786 +1604212887.0,wave peak period (tp),13.512940406799316 +1604212887.0,wave direction in degrees relative to geographic north,242.4027862548828 +1604212887.0,wave direction in degrees relative to vessel heading,27.10168561024568 +1604212887.0,wind speed in meter per sec,12.35629653930664 +1604212887.0,wind direction in degrees relative to geographic north,345.2295227050781 +1604212887.0,wind direction in degrees relative to vessel heading,129.928422060441 +1604212887.0,weather source,remote weather_wam800 +1604212887.0,speed over ground,15.0 +1604212887.0,speed through water,0.0 +1604212887.0,sea current speed in meter pr sec,0.0 +1604212887.0,sea current direction in degrees relative to geographic north,0.0 +1604212887.0,power,863.9798013880974 +1604212887.0,torque,0.0 +1604212887.0,thrust,0.0 +1604212887.0,rtot,0.0 +1604214000.0,task,sailingtaskwithspeedchange +1604214000.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604214000.0,latitude,64.65799852861934 +1604214000.0,longitude,10.9613543560931 +1604214000.0,heading,-147.2474622327896 +1604214000.0,wave height significant,1.9222803115844727 +1604214000.0,wave peak period (tp),13.512940406799316 +1604214000.0,wave direction in degrees relative to geographic north,253.89605712890625 +1604214000.0,wave direction in degrees relative to vessel heading,41.14351936169584 +1604214000.0,wind speed in meter per sec,10.696914672851562 +1604214000.0,wind direction in degrees relative to geographic north,329.5866394042969 +1604214000.0,wind direction in degrees relative to vessel heading,116.83410163708646 +1604214000.0,weather source,remote weather_wam800 +1604214000.0,speed over ground,15.0 +1604214000.0,speed through water,0.0 +1604214000.0,sea current speed in meter pr sec,0.0 +1604214000.0,sea current direction in degrees relative to geographic north,0.0 +1604214000.0,power,117.12681198092245 +1604214000.0,torque,0.0 +1604214000.0,thrust,0.0 +1604214000.0,rtot,0.0 +1604214565.0,task,sailingtaskwithspeedchange +1604214565.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604214565.0,latitude,64.62498172547295 +1604214565.0,longitude,10.911972707661183 +1604214565.0,heading,-147.33572066880436 +1604214565.0,wave height significant,1.2445582151412964 +1604214565.0,wave peak period (tp),13.512940406799316 +1604214565.0,wave direction in degrees relative to geographic north,258.9476013183594 +1604214565.0,wave direction in degrees relative to vessel heading,46.28332198716373 +1604214565.0,wind speed in meter per sec,9.793121337890625 +1604214565.0,wind direction in degrees relative to geographic north,335.588623046875 +1604214565.0,wind direction in degrees relative to vessel heading,122.92434371567936 +1604214565.0,weather source,remote weather_wam800 +1604214565.0,speed over ground,15.0 +1604214565.0,speed through water,0.0 +1604214565.0,sea current speed in meter pr sec,0.0 +1604214565.0,sea current direction in degrees relative to geographic north,0.0 +1604214565.0,power,172.50684009842354 +1604214565.0,torque,0.0 +1604214565.0,thrust,0.0 +1604214565.0,rtot,0.0 +1604215950.0,task,sailingtaskwithspeedchange +1604215950.0,assignment,sailing_mosjoen_rotterdam(sailing) +1604215950.0,latitude,64.59499938138765 +1604215950.0,longitude,10.698995632908813 +1604215950.0,heading,-108.07994844143826 +1604215950.0,wave height significant,2.2321343421936035 +1604215950.0,wave peak period (tp),13.512941360473633 +1604215950.0,wave direction in degrees relative to geographic north,249.26536560058594 +1604215950.0,wave direction in degrees relative to vessel heading,357.3453140420242 +1604215950.0,wind speed in meter per sec,9.837118148803711 +1604215950.0,wind direction in degrees relative to geographic north,336.2023010253906 +1604215950.0,wind direction in degrees relative to vessel heading,84.28224946682889 +1604215950.0,weather source,remote weather_wam800 +1604215950.0,speed over ground,15.0 +1604215950.0,speed through water,0.0 +1604215950.0,sea current speed in meter pr sec,0.0 +1604215950.0,sea current direction in degrees relative to geographic north,0.0 +1604215950.0,power,870.7189882146831 +1604215950.0,torque,0.0 +1604215950.0,thrust,0.0 +1604215950.0,rtot,0.0 diff --git a/machinery-system-structure/timeseries_test.sim b/machinery-system-structure/timeseries_test.sim new file mode 100644 index 0000000..05e9281 Binary files /dev/null and b/machinery-system-structure/timeseries_test.sim differ diff --git a/machinery-system-structure/timeseries_test_.sim b/machinery-system-structure/timeseries_test_.sim new file mode 100644 index 0000000..b30897e Binary files /dev/null and b/machinery-system-structure/timeseries_test_.sim differ