From 245e0770a3a80b058f0be3d1d0bb9ffbdec0da7e Mon Sep 17 00:00:00 2001 From: keviny Date: Fri, 3 Jan 2025 11:42:04 +0100 Subject: [PATCH] FuelEU Maritime data updated --- .devcontainer/Dockerfile | 7 ++ .devcontainer/devcontainer.env | 0 .devcontainer/devcontainer.json | 12 +- .devcontainer/docker-compose.yml | 14 +++ .../feems/components_model/component_base.py | 12 +- .../components_model/component_electric.py | 14 +-- .../components_model/component_mechanical.py | 2 +- feems/feems/fuel.py | 24 ++++ .../feems/package_data/fuel_eu_fuel_table.csv | 112 +++++++++--------- feems/pyproject.toml | 2 +- feems/tests/test_fuel.py | 107 +++++++++++++---- .../MachSysS/feems_result_pb2.py | 1 - .../MachSysS/feems_result_pb2.pyi | 24 ++-- .../MachSysS/gymir_result_pb2.py | 1 - .../MachSysS/gymir_result_pb2.pyi | 14 +-- .../MachSysS/system_structure_pb2.py | 13 +- .../MachSysS/system_structure_pb2.pyi | 110 +++++++++-------- .../proto/system_structure.proto | 4 + machinery-system-structure/settings.ini | 2 +- 19 files changed, 293 insertions(+), 182 deletions(-) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.env create mode 100644 .devcontainer/docker-compose.yml diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..c529148 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,7 @@ +FROM "mcr.microsoft.com/devcontainers/python:3.12" + +RUN curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v24.4/protoc-24.4-linux-x86_64.zip \ + && unzip protoc-24.4-linux-x86_64.zip -d protoc \ + && mv protoc/bin/protoc /usr/local/bin/protoc \ + && mv protoc/include/* /usr/local/include/ \ + && rm -rf protoc protoc-24.4-linux-x86_64.zip \ No newline at end of file diff --git a/.devcontainer/devcontainer.env b/.devcontainer/devcontainer.env new file mode 100644 index 0000000..e69de29 diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 7cc41a0..8d8a8a2 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -2,21 +2,17 @@ // README at: https://github.com/devcontainers/templates/tree/main/src/python { "name": "Python 3", + "dockerComposeFile": "docker-compose.yml", + "workspaceFolder": "/workspaces/FEEMS", + "service": "app" // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - "image": "mcr.microsoft.com/devcontainers/python:1-3.10-buster", - // Features to add to the dev container. More info: https://containers.dev/features. // "features": {}, - // Use 'forwardPorts' to make a list of ports inside the container available locally. // "forwardPorts": [], - // Use 'postCreateCommand' to run commands after the container is created. - "postCreateCommand": "pip3 install --user -r requirements_dev.txt" - // Configure tool-specific properties. // "customizations": {}, - // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. // "remoteUser": "root" -} +} \ No newline at end of file diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml new file mode 100644 index 0000000..857555d --- /dev/null +++ b/.devcontainer/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3.8" + +services: + app: + build: + context: .. + dockerfile: .devcontainer/Dockerfile + + volumes: + - ../..:/workspaces:cached + env_file: devcontainer.env + + # Overrides default command so things don't shut down after the process ends. + command: sleep infinity diff --git a/feems/feems/components_model/component_base.py b/feems/feems/components_model/component_base.py index 8d2dc13..c2a671b 100644 --- a/feems/feems/components_model/component_base.py +++ b/feems/feems/components_model/component_base.py @@ -101,12 +101,12 @@ def __init__( uid: Optional[str] = None, ): super(BasicComponent, self).__init__( - name=name, - type_=type_, - power_type=power_type, - rated_power=rated_power, - rated_speed=rated_speed, - uid=uid + 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) diff --git a/feems/feems/components_model/component_electric.py b/feems/feems/components_model/component_electric.py index 29e6eee..2f41b8a 100644 --- a/feems/feems/components_model/component_electric.py +++ b/feems/feems/components_model/component_electric.py @@ -346,10 +346,10 @@ def __init__( uid: Optional[str] = None, ): super(SerialSystemElectric, self).__init__( - type_=type_, - power_type=power_type, - name=name, - components=components, + type_=type_, + power_type=power_type, + name=name, + components=components, rated_power=rated_power, rated_speed=rated_speed, uid=uid, @@ -910,9 +910,9 @@ class ShorePowerConnection(ElectricComponent): """ def __init__( - self, - name: str, - rated_power: Power_kW, + self, + name: str, + rated_power: Power_kW, switchboard_id: SwbId = SwbId(0), uid: Optional[str] = None, ): diff --git a/feems/feems/components_model/component_mechanical.py b/feems/feems/components_model/component_mechanical.py index cd23438..cd39c0d 100644 --- a/feems/feems/components_model/component_mechanical.py +++ b/feems/feems/components_model/component_mechanical.py @@ -403,7 +403,7 @@ def __init__( uid: Optional[str] = None, ): super(MechanicalPropulsionComponent, self).__init__( - type_=type_, + type_=type_, power_type=power_type, name=name, rated_power=rated_power, diff --git a/feems/feems/fuel.py b/feems/feems/fuel.py index dcc86f1..bbf3117 100644 --- a/feems/feems/fuel.py +++ b/feems/feems/fuel.py @@ -23,6 +23,10 @@ class TypeFuel(Enum): ETHANOL = 7 METHANOL = 8 LFO = 9 + LSFO_CRUDE = 10 + LSFO_BLEND = 11 + ULSFO = 12 + VLSFO = 13 @unique @@ -81,6 +85,10 @@ class FuelOrigin(Enum): TypeFuel.ETHANOL: "Ethanol", TypeFuel.METHANOL: "Methanol", TypeFuel.LFO: "LFO", + TypeFuel.LSFO_CRUDE: "LSFO (Crude)", + TypeFuel.LSFO_BLEND: "LSFO (Blend)", + TypeFuel.ULSFO: "ULSFO", + TypeFuel.VLSFO: "VLSFO", } @@ -357,6 +365,22 @@ def get_prescribed_factors( ) +def get_ghg_factors_for_fuel_eu_maritime( + fuel_type: TypeFuel, + origin: FuelOrigin, + fuel_consumer_class: FuelConsumerClassFuelEUMaritime, +) -> PrescribedFactors: + """Get the GHG emission factors for fuel specified by EU Maritime Fuel""" + fuel_class = _FUEL_CLASS_FUEL_EU_MARITIME_MAPPING[origin] + fuel_type_eu = _FUEL_TYPE_FUEL_EU_MARITIME_MAPPING[fuel_type] + fuel_consumer_class_str = _FUEL_CONSUMER_CLASS_FUEL_EU_MARITIME_MAPPING[ + fuel_consumer_class + ] + return _DF_GHG_FACTORS_DICTIONARY["eu"].query( + f"pathway_name == '{fuel_type_eu}' and fuel_class == '{fuel_class}' and fuel_consumer_unit_class == '{fuel_consumer_class_str}'" + ) + + @dataclass class FuelByMassFraction: fuels: List[Fuel] = field(default_factory=list) diff --git a/feems/feems/package_data/fuel_eu_fuel_table.csv b/feems/feems/package_data/fuel_eu_fuel_table.csv index 0b47f44..be1a0e5 100644 --- a/feems/feems/package_data/fuel_eu_fuel_table.csv +++ b/feems/feems/package_data/fuel_eu_fuel_table.csv @@ -1,56 +1,56 @@ -Table starts at,9,,,,,,, -Header at,10,,,,,,, -unit at,11,,,,,,, -Values start at,12,,,,,,, -Data sources,,,,,,,, -Base,FuelEU Maritime,,,,,,, -Bio fuel,Directive (EU) 2018/2001 of the European Parliament and of the Council of 11 December 2018 on the promotion of the use of energy from renewable sources,,,,,,, -RFNBO,JEC Well-to-Tank report v5,,,,,,, -1,2,3,4,5,6,7,8,9 -fuel_class,pathway_name,LCV,CO2_WtT,fuel_consumer_unit_class,Cf_CO2,Cf_CH4,Cf_N2O,C_slip -,,MJ/g,gCO2eq/MJ,,gCO2/gFuel,gCH4/gFuel,gN2O/gFuel,% -Fossil,HFO,0.0405,13.5,ALL ICEs,3.114,0.00005,0.00018,0 -Fossil,LSFO (Crude),0.0405,13.2,ALL ICEs,3.151,0.00005,0.00018,0 -Fossil,LSFO (Blend),0.0405,13.7,ALL ICEs,3.151,0.00005,0.00018,0 -Fossil,ULSFO,0.0405,13.2,ALL ICEs,3.114,0.00005,0.00018,0 -Fossil,LFO,0.041,13.2,ALL ICEs,3.151,0.00005,0.00018,0 -Fossil,Diesel,0.0427,14.4,ALL ICEs,3.206,0.00005,0.00018,0 -Fossil,LNG,0.0491,18.5,LNG otto (medium speed),2.75,0,0.00011,3.1 -Fossil,LNG,0.0491,18.5,LNG otto (slow speed),2.75,0,0.00011,1.7 -Fossil,LNG,0.0491,18.5,LNG diesel (slow speed),2.75,0,0.00011,0.2 -Fossil,LNG,0.0491,18.5,LBSI,2.75,0,0.00011,2.6 -Fossil,LNG,0.0491,18.5,Fuel Cells,2.75,0,0.00011,0 -Fossil,LPG (Butane),0.046,7.8,ALL ICEs,3.03,0,0,0 -Fossil,LPG (Propane),0.046,7.8,ALL ICEs,3,0,0,0 -Fossil,H2,0.12,132,Fuel Cells,0,0,0,0 -Fossil,H2,0.12,132,ICE,0,0,0,0 -Fossil,NH3,0.0186,121,Fuel Cells,0,0,0,0 -Fossil,NH3,0.0186,121,ICE,0,0,0,0 -Fossil,Methanol,0.0199,31.3,ALL ICEs,1.375,0.00005,0.00018,0 -BIO,Ethanol,0.0268,-33.2,ALL ICEs,1.913,0,0,0 -BIO,Diesel,0.044,-26.1,ALL ICEs,2.834,0.00005,0.00018,0 -BIO,HVO,0.05,-20.7,ALL ICEs,3.115,0.00005,0.00018,0 -BIO,LNG,0.05,-38.9,LNG otto (medium speed),2.75,0,0.00011,3.1 -BIO,LNG,0.05,-38.9,LNG diesel (slow speed),2.75,0,0.00011,1.7 -BIO,LNG,0.05,-38.9,LNG diesel (slow speed),2.75,0,0.00011,0.2 -BIO,LNG,0.05,-38.9,LBSI,2.75,0,0.00011,2.6 -BIO,LNG,0.02,-58.4,ALL ICEs,1.375,0.00005,0.00018,0 -BIO,LNG,0.0491,18.5,Fuel Cells,2.75,0,0.00011,0 -BIO,Other,,,ALL ICEs,3.115,0.00005,0.00018,0 -BIO,H2,0.12,,Fuel Cells,0,0,0,0 -BIO,H2,0.12,,ALL ICEs,0,0,0,0 -RFNBO,Diesel,0.0427,0.9,ALL ICEs,3.206,0.00005,0.00018,0 -RFNBO,Methanol,0.0199,1.78,ALL ICEs,1.375,0.00005,0.00018,0 -RFNBO,LNG,0.0491,6.7,LNG otto (medium speed),2.75,0,0.00011,3.1 -RFNBO,LNG,0.0491,6.7,LNG otto (slow speed),2.75,0,0.00011,1.7 -RFNBO,LNG,0.0491,6.7,LNG diesel (slow speed),2.75,0,0.00011,0.2 -RFNBO,LNG,0.0491,6.7,LBSI,2.75,0,0.00011,2.6 -RFNBO,LNG,0.0491,6.7,Fuel Cells,2.75,0,0.00011,0 -RFNBO,H2,0.12,3.6,Fuel Cells,0,0,0,0 -RFNBO,H2,0.12,3.6,ALL ICEs,0,0,0,0 -RFNBO,NH3,0.0186,10,Fuel Cells,0,0,0,0 -RFNBO,NH3,0.0186,10,ALL ICEs,0,0,0,0 -RFNBO,LPG (Butane),0.046,0,ALL ICEs,,,, -RFNBO,LPG (Propane),0.046,0,ALL ICEs,,,, -RFNBO,DME,,1.7,ALL ICEs,,,, -Electricity,Electricity,,70.55555556,On-shore power supply,0,0,0,0 \ No newline at end of file +Table starts at,9,,,,,,,,,, +Header at,10,,,,,,,,,, +unit at,11,,,,,,,,,, +Values start at,12,,,,,,,,,, +Data sources,,,,,,,,,,, +Base,FuelEU Maritime,,,,,,,,,, +Bio fuel,Directive (EU) 2018/2001 of the European Parliament and of the Council of 11 December 2018 on the promotion of the use of energy from renewable sources,,,,,,,,,, +RFNBO,JEC Well-to-Tank report v5,,,,,,,,,, +1,2,3,4,5,6,7,8,9,10,11,12 +fuel_class,pathway_name,LCV,CO2_WtT,fuel_consumer_unit_class,Cf_CO2,Cf_CH4,Cf_N2O,C_slip,TtW_energy,TtW_mass,WTW_energy +,,MJ/g,gCO2eq/MJ,,gCO2/gFuel,gCH4/gFuel,gN2O/gFuel,%,gCO2eq/MJ,gCO2eq/gFuel,gCO2eq/MJ +Fossil,HFO,0.0405,13.5,ALL ICEs,3.114,0.00005,0.00018,0,78.24419753,3.16889,91.74419753 +Fossil,LSFO (Crude),0.0405,13.2,ALL ICEs,3.151,0.00005,0.00018,0,79.15777778,3.20589,92.35777778 +Fossil,LSFO (Blend),0.0405,13.7,ALL ICEs,3.151,0.00005,0.00018,0,79.15777778,3.20589,92.85777778 +Fossil,ULSFO,0.0405,13.2,ALL ICEs,3.114,0.00005,0.00018,0,78.24419753,3.16889,91.44419753 +Fossil,VLSFO,0.041,13.2,ALL ICEs,3.206,0.00005,0.00018,0,79.53390244,3.26089,92.73390244 +Fossil,LFO,0.041,13.2,ALL ICEs,3.151,0.00005,0.00018,0,78.19243902,3.20589,91.39243902 +Fossil,Diesel,0.0427,14.4,ALL ICEs,3.206,0.00005,0.00018,0,76.36744731,3.26089,90.76744731 +Fossil,LNG,0.0491,18.5,LNG otto (medium speed),2.75,0,0.00011,3.1,70.70292912,3.47151382,89.20292912 +Fossil,LNG,0.0491,18.5,LNG otto (slow speed),2.75,0,0.00011,1.7,64.36808024,3.16047274,82.86808024 +Fossil,LNG,0.0491,18.5,LNG diesel (slow speed),2.75,0,0.00011,0.2,57.58074216,2.82721444,76.08074216 +Fossil,LNG,0.0491,18.5,LBSI,2.75,0,0.00011,2.6,68.4404831,3.36042772,86.9404831 +Fossil,LNG,0.0491,18.5,Fuel Cells,2.75,0,0,0,56.00814664,2.75,74.50814664 +Fossil,LPG (Butane),0.046,7.8,ALL ICEs,3.03,0,0,0,65.86956522,3.03,73.66956522 +Fossil,LPG (Propane),0.046,7.8,ALL ICEs,3,0,0,0,65.2173913,3,73.0173913 +Fossil,H2,0.12,132,Fuel Cells,0,0,0,0,0,0,132 +Fossil,H2,0.12,132,ICE,0,0,0,0,0,0,132 +Fossil,NH3,0.0186,121,Fuel Cells,0,0,0,0,0,0,121 +Fossil,NH3,0.0186,121,ICE,0,0,0,0,0,0,121 +Fossil,Methanol,0.0199,31.3,ALL ICEs,1.375,0.00005,0.00018,0,71.85376884,1.42989,103.1537688 +BIO,Ethanol,0.0268,-33.2,ALL ICEs,1.913,0,0,0,71.38059701,1.913,38.18059701 +BIO,Diesel,0.044,-26.1,ALL ICEs,2.834,0.00005,0.00018,0,77.65833333,2.88889,51.55833333 +BIO,HVO,0.05,-20.7,ALL ICEs,3.115,0.00005,0.00018,0,72.04295455,3.16989,51.34295455 +BIO,LNG,0.05,-38.9,LNG otto (medium speed),2.75,0,0.00011,3.1,69.4302764,3.47151382,30.5302764 +BIO,LNG,0.05,-38.9,LNG diesel (slow speed),2.75,0,0.00011,1.7,63.2094548,3.16047274,24.3094548 +BIO,LNG,0.05,-38.9,LNG diesel (slow speed),2.75,0,0.00011,0.2,56.5442888,2.82721444,17.6442888 +BIO,LNG,0.05,-38.9,LBSI,2.75,0,0.00011,2.6,55.6556,2.78278,16.7556 +BIO,LNG,0.05,-38.9,Fuel Cells,2.75,0,0,0,71.85376884,1.42989,13.5 +BIO,Other,,,ALL ICEs,3.115,0.00005,0.00018,0,,, +BIO,H2,0.12,0,Fuel Cells,0,0,0,0,0,0,0 +BIO,H2,0.12,0,ALL ICEs,0,0,0,0,0,0,0 +RFNBO,Diesel,0.0427,-47.6,ALL ICEs,3.206,0.00005,0.00018,0,76.36744731,3.26089,28.76744731 +RFNBO,Methanol,0.0199,-67.1,ALL ICEs,1.375,0.00005,0.00018,0,71.85376884,1.42989,4.753768844 +RFNBO,LNG,0.0491,-26.6,LNG otto (medium speed),2.75,0,0.00011,3.1,70.70292912,3.47151382,44.10292912 +RFNBO,LNG,0.0491,-26.6,LNG otto (slow speed),2.75,0,0.00011,1.7,64.36808024,3.16047274,37.76808024 +RFNBO,LNG,0.0491,-26.6,LNG diesel (slow speed),2.75,0,0.00011,0.2,57.58074216,2.82721444,30.98074216 +RFNBO,LNG,0.0491,-26.6,LBSI,2.75,0,0.00011,2.6,56.67576375,2.78278,41.8404831 +RFNBO,LNG,0.0491,-26.6,Fuel Cells,2.75,0,0,0,56.00814664,2.75,29.40814664 +RFNBO,H2,0.12,3.6,Fuel Cells,0,0,0,0,0,0,3.6 +RFNBO,H2,0.12,3.6,ALL ICEs,0,0,0,0,0,0,3.6 +RFNBO,NH3,0.0186,0,Fuel Cells,0,0,0,0,0,0,0 +RFNBO,NH3,0.0186,0,ALL ICEs,0,0,0,0,0,0,0 +RFNBO,LPG (Butane),0.046,0,ALL ICEs,,,,,,, +RFNBO,LPG (Propane),0.046,0,ALL ICEs,,,,,,, +RFNBO,DME,,1.7,ALL ICEs,,,,,,, +Electricity,Electricity,,70.55555556,On-shore power supply,0,0,0,0,,, \ No newline at end of file diff --git a/feems/pyproject.toml b/feems/pyproject.toml index 96ae33e..e7bc5bc 100644 --- a/feems/pyproject.toml +++ b/feems/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "feems" -version = "0.10.9" +version = "0.10.10" description = "" authors = ["Kevin Koosup Yum "] readme = "readme.md" diff --git a/feems/tests/test_fuel.py b/feems/tests/test_fuel.py index bf3c197..008765b 100644 --- a/feems/tests/test_fuel.py +++ b/feems/tests/test_fuel.py @@ -1,4 +1,5 @@ import random +from typing import List import numpy as np import pytest @@ -10,6 +11,7 @@ TypeFuel, FuelOrigin, FuelConsumerClassFuelEUMaritime, + get_ghg_factors_for_fuel_eu_maritime, _GWP100_N2O, _GWP100_CH4, ) @@ -51,7 +53,7 @@ def test_fuel_class(): ) for fuel_type in TypeFuel: for origin in FuelOrigin: - if origin not in [FuelOrigin.NONE, FuelOrigin.BIO]: + if origin not in [FuelOrigin.NONE]: try: fuel = Fuel( fuel_type=fuel_type, @@ -64,10 +66,6 @@ def test_fuel_class(): for fuel_kind_by_consumer in fuel.ghg_emission_factor_tank_to_wake: name = fuel.fuel_type.name origin = fuel.origin.name - if isinstance(fuel_kind_by_consumer.fuel_consumer_class, float): - import pdb - - pdb.set_trace() consumer_type = ( fuel_kind_by_consumer.fuel_consumer_class.name if isinstance( @@ -82,6 +80,16 @@ def test_fuel_class(): ) ghg_wtw = ghg_ttw + ghg_wtt ghg_wtw_per_mj = ghg_wtw / fuel.lhv_mj_per_g + if specified_by == FuelSpecifiedBy.FUEL_EU_MARITIME: + fuel_data = get_ghg_factors_for_fuel_eu_maritime( + fuel_type=fuel.fuel_type, + origin=fuel.origin, + fuel_consumer_class=fuel_kind_by_consumer.fuel_consumer_class, + ) + if not np.isnan(fuel_data.WTW_energy.values[0]): + assert fuel_data.WTW_energy.values[0] == pytest.approx( + ghg_wtw_per_mj + ), f"WTW energy is not equal for fuel {name}, origin {origin} and consumer {consumer_type} ({fuel_data.WTW_energy.values[0]} != {ghg_wtw_per_mj})" lhv_mj_per_kg = fuel.lhv_mj_per_g * 1000 print( f"{name}\t{ghg_wtt:.2f}\t{ghg_ttw:.2f}\t{ghg_wtw}\t{ghg_wtw_per_mj}" @@ -110,7 +118,7 @@ def create_random_fuel_by_mass_fraction( fuel_types = np.random.choice( fuel_types_available_for_test, size=number_fuel_type, replace=False ) - fuel_list = [] + fuel_list: List[Fuel] = [] fuel_origins = np.random.choice( [FuelOrigin.FOSSIL, FuelOrigin.RENEWABLE_NON_BIO], size=number_fuel_type, @@ -199,20 +207,73 @@ def test_fuel_by_mass_fraction_class(subtests: SubTests): def test_fuel_consumption_class(): # Test FuelConsumption class - pass - # fuel = create_random_fuel_by_mass_fraction() - # fuel_consumption_each = 10 - # fuel_consumption_kg_per_h = FuelConsumption( - # total_fuel_consumption=fuel_consumption_each, fuel_by_mass_fraction=fuel - # ) - # - # fuel_consumption_kg_per_h_new = fuel_consumption_kg_per_h + fuel_consumption_kg_per_h - # assert fuel_consumption_kg_per_h_new.total_fuel_consumption == pytest.approx( - # 2 * fuel_consumption_each - # ) - # - # for fuel_type in fuel_consumption_kg_per_h.__dict__: - # if not fuel_type.startswith("_"): - # assert getattr(fuel_consumption_kg_per_h_new, fuel_type) == pytest.approx( - # 2 * getattr(fuel_consumption_kg_per_h, fuel_type) - # ) + fuel_by_mass_fraction = FuelByMassFraction( + fuels=[ + Fuel( + fuel_type=TypeFuel.NATURAL_GAS, + origin=FuelOrigin.FOSSIL, + fuel_specified_by=FuelSpecifiedBy.FUEL_EU_MARITIME, + mass_or_mass_fraction=0.9, + ), + Fuel( + fuel_type=TypeFuel.DIESEL, + origin=FuelOrigin.FOSSIL, + fuel_specified_by=FuelSpecifiedBy.FUEL_EU_MARITIME, + mass_or_mass_fraction=0.1, + ), + ] + ) + + total_fuel_consumption_kg = 10 + fuels = [ + Fuel( + fuel_type=each_fuel_by_mass_fraction.fuel_type, + origin=each_fuel_by_mass_fraction.origin, + fuel_specified_by=FuelSpecifiedBy.FUEL_EU_MARITIME, + mass_or_mass_fraction=each_fuel_by_mass_fraction.mass_or_mass_fraction + * total_fuel_consumption_kg, + ) + for each_fuel_by_mass_fraction in fuel_by_mass_fraction.fuels + ] + + multi_fuel_consumption = FuelConsumption( + fuels=fuels, + ) + + # Verify the total ghg factor + total_co2_kg = multi_fuel_consumption.get_total_co2_emissions( + fuel_consumer_class=FuelConsumerClassFuelEUMaritime.LNG_OTTO_MEDIUM_SPEED + ) + total_fuel_energy_mj = sum( + [fuel.lhv_mj_per_g * fuel.mass_or_mass_fraction * 1e3 for fuel in fuels] + ) + total_ghg_intensity_gco2_per_mj = total_co2_kg * 1000 / total_fuel_energy_mj + total_ghg_intensity_gco2_per_gfuel_list = [ + ( + fuel.ghg_emission_factor_well_to_tank_gco2_per_gfuel + + fuel.get_ghg_emission_factor_tank_to_wake_gco2eq_per_gfuel( + fuel_consumer_class=( + FuelConsumerClassFuelEUMaritime.LNG_OTTO_MEDIUM_SPEED + if fuel.fuel_type == TypeFuel.NATURAL_GAS + else FuelConsumerClassFuelEUMaritime.ICE + ) + ) + ) + * fuel_fraction.mass_or_mass_fraction + for fuel, fuel_fraction in zip(fuels, fuel_by_mass_fraction.fuels) + ] + average_lhv_mj_per_g = sum( + [ + fuel.lhv_mj_per_g * fuel_fraction.mass_or_mass_fraction + for fuel, fuel_fraction in zip(fuels, fuel_by_mass_fraction.fuels) + ] + ) + total_ghg_intensity_gco2_per_mj_expected = ( + sum(total_ghg_intensity_gco2_per_gfuel_list) / average_lhv_mj_per_g + ) + print(total_ghg_intensity_gco2_per_gfuel_list) + print(total_ghg_intensity_gco2_per_mj_expected) + print(total_ghg_intensity_gco2_per_mj) + assert total_ghg_intensity_gco2_per_mj == pytest.approx( + total_ghg_intensity_gco2_per_mj_expected + ) diff --git a/machinery-system-structure/MachSysS/feems_result_pb2.py b/machinery-system-structure/MachSysS/feems_result_pb2.py index 842109a..4d3669c 100644 --- a/machinery-system-structure/MachSysS/feems_result_pb2.py +++ b/machinery-system-structure/MachSysS/feems_result_pb2.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: feems_result.proto -# Protobuf Python Version: 4.25.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool diff --git a/machinery-system-structure/MachSysS/feems_result_pb2.pyi b/machinery-system-structure/MachSysS/feems_result_pb2.pyi index c1cbf20..475ff41 100644 --- a/machinery-system-structure/MachSysS/feems_result_pb2.pyi +++ b/machinery-system-structure/MachSysS/feems_result_pb2.pyi @@ -13,7 +13,7 @@ from typing import ( DESCRIPTOR: _descriptor.FileDescriptor class FuelScalar(_message.Message): - __slots__ = ( + __slots__ = [ "fuel_type", "fuel_origin", "fuel_specified_by", @@ -21,7 +21,7 @@ class FuelScalar(_message.Message): "lhv_mj_per_g", "ghg_emission_factor_well_to_tank_gco2eq_per_mj", "ghg_emission_factor_tank_to_wake", - ) + ] FUEL_TYPE_FIELD_NUMBER: _ClassVar[int] FUEL_ORIGIN_FIELD_NUMBER: _ClassVar[int] FUEL_SPECIFIED_BY_FIELD_NUMBER: _ClassVar[int] @@ -50,7 +50,7 @@ class FuelScalar(_message.Message): ) -> None: ... class FuelArray(_message.Message): - __slots__ = ( + __slots__ = [ "fuel_type", "fuel_origin", "fuel_specified_by", @@ -58,7 +58,7 @@ class FuelArray(_message.Message): "lhv_mj_per_g", "ghg_emission_factor_well_to_tank_gco2eq_per_mj", "ghg_emission_factor_tank_to_wake", - ) + ] FUEL_TYPE_FIELD_NUMBER: _ClassVar[int] FUEL_ORIGIN_FIELD_NUMBER: _ClassVar[int] FUEL_SPECIFIED_BY_FIELD_NUMBER: _ClassVar[int] @@ -87,7 +87,7 @@ class FuelArray(_message.Message): ) -> None: ... class FuelConsumptionScalar(_message.Message): - __slots__ = ("fuels",) + __slots__ = ["fuels"] FUELS_FIELD_NUMBER: _ClassVar[int] fuels: _containers.RepeatedCompositeFieldContainer[FuelScalar] def __init__( @@ -95,7 +95,7 @@ class FuelConsumptionScalar(_message.Message): ) -> None: ... class FuelConsumptionRateArray(_message.Message): - __slots__ = ("fuels",) + __slots__ = ["fuels"] FUELS_FIELD_NUMBER: _ClassVar[int] fuels: _containers.RepeatedCompositeFieldContainer[FuelArray] def __init__( @@ -103,7 +103,7 @@ class FuelConsumptionRateArray(_message.Message): ) -> None: ... class TimeSeriesResultForComponent(_message.Message): - __slots__ = ("time", "power_output_kw", "fuel_consumption_kg_per_s") + __slots__ = ["time", "power_output_kw", "fuel_consumption_kg_per_s"] TIME_FIELD_NUMBER: _ClassVar[int] POWER_OUTPUT_KW_FIELD_NUMBER: _ClassVar[int] FUEL_CONSUMPTION_KG_PER_S_FIELD_NUMBER: _ClassVar[int] @@ -120,7 +120,7 @@ class TimeSeriesResultForComponent(_message.Message): ) -> None: ... class ResultPerComponent(_message.Message): - __slots__ = ( + __slots__ = [ "component_name", "multi_fuel_consumption_kg", "electric_energy_consumption_mj", @@ -135,7 +135,7 @@ class ResultPerComponent(_message.Message): "switchboard_id", "shaftline_id", "result_time_series", - ) + ] COMPONENT_NAME_FIELD_NUMBER: _ClassVar[int] MULTI_FUEL_CONSUMPTION_KG_FIELD_NUMBER: _ClassVar[int] ELECTRIC_ENERGY_CONSUMPTION_MJ_FIELD_NUMBER: _ClassVar[int] @@ -187,7 +187,7 @@ class ResultPerComponent(_message.Message): ) -> None: ... class FeemsResult(_message.Message): - __slots__ = ( + __slots__ = [ "duration_s", "multi_fuel_consumption_total_kg", "energy_consumption_electric_total_mj", @@ -204,7 +204,7 @@ class FeemsResult(_message.Message): "energy_input_electric_total_mj", "energy_consumption_propulsion_total_mj", "energy_consumption_auxiliary_total_mj", - ) + ] DURATION_S_FIELD_NUMBER: _ClassVar[int] MULTI_FUEL_CONSUMPTION_TOTAL_KG_FIELD_NUMBER: _ClassVar[int] ENERGY_CONSUMPTION_ELECTRIC_TOTAL_MJ_FIELD_NUMBER: _ClassVar[int] @@ -262,7 +262,7 @@ class FeemsResult(_message.Message): ) -> None: ... class FeemsResultForMachinerySystem(_message.Message): - __slots__ = ("electric_system", "mechanical_system") + __slots__ = ["electric_system", "mechanical_system"] ELECTRIC_SYSTEM_FIELD_NUMBER: _ClassVar[int] MECHANICAL_SYSTEM_FIELD_NUMBER: _ClassVar[int] electric_system: FeemsResult diff --git a/machinery-system-structure/MachSysS/gymir_result_pb2.py b/machinery-system-structure/MachSysS/gymir_result_pb2.py index bbfc0b8..9d85a58 100644 --- a/machinery-system-structure/MachSysS/gymir_result_pb2.py +++ b/machinery-system-structure/MachSysS/gymir_result_pb2.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: gymir_result.proto -# Protobuf Python Version: 4.25.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool diff --git a/machinery-system-structure/MachSysS/gymir_result_pb2.pyi b/machinery-system-structure/MachSysS/gymir_result_pb2.pyi index 54b9751..796c348 100644 --- a/machinery-system-structure/MachSysS/gymir_result_pb2.pyi +++ b/machinery-system-structure/MachSysS/gymir_result_pb2.pyi @@ -12,7 +12,7 @@ from typing import ( DESCRIPTOR: _descriptor.FileDescriptor class GymirResult(_message.Message): - __slots__ = ("name", "auxiliary_load_kw", "result") + __slots__ = ["name", "auxiliary_load_kw", "result"] NAME_FIELD_NUMBER: _ClassVar[int] AUXILIARY_LOAD_KW_FIELD_NUMBER: _ClassVar[int] RESULT_FIELD_NUMBER: _ClassVar[int] @@ -27,7 +27,7 @@ class GymirResult(_message.Message): ) -> None: ... class SimulationInstance(_message.Message): - __slots__ = ( + __slots__ = [ "epoch_s", "task_type", "task_name", @@ -50,7 +50,7 @@ class SimulationInstance(_message.Message): "torque_k_nm", "thrust_k_n", "total_resistance_k_n", - ) + ] EPOCH_S_FIELD_NUMBER: _ClassVar[int] TASK_TYPE_FIELD_NUMBER: _ClassVar[int] TASK_NAME_FIELD_NUMBER: _ClassVar[int] @@ -122,7 +122,7 @@ class SimulationInstance(_message.Message): ) -> None: ... class PropulsionPowerInstance(_message.Message): - __slots__ = ("epoch_s", "propulsion_power_kw", "auxiliary_power_kw") + __slots__ = ["epoch_s", "propulsion_power_kw", "auxiliary_power_kw"] EPOCH_S_FIELD_NUMBER: _ClassVar[int] PROPULSION_POWER_KW_FIELD_NUMBER: _ClassVar[int] AUXILIARY_POWER_KW_FIELD_NUMBER: _ClassVar[int] @@ -137,7 +137,7 @@ class PropulsionPowerInstance(_message.Message): ) -> None: ... class OperationProfilePoint(_message.Message): - __slots__ = ("epoch_s", "speed_kn", "draft_m") + __slots__ = ["epoch_s", "speed_kn", "draft_m"] EPOCH_S_FIELD_NUMBER: _ClassVar[int] SPEED_KN_FIELD_NUMBER: _ClassVar[int] DRAFT_M_FIELD_NUMBER: _ClassVar[int] @@ -152,11 +152,11 @@ class OperationProfilePoint(_message.Message): ) -> None: ... class TimeSeriesResult(_message.Message): - __slots__ = ( + __slots__ = [ "propulsion_power_timeseries", "auxiliary_power_kw", "operation_profile", - ) + ] PROPULSION_POWER_TIMESERIES_FIELD_NUMBER: _ClassVar[int] AUXILIARY_POWER_KW_FIELD_NUMBER: _ClassVar[int] OPERATION_PROFILE_FIELD_NUMBER: _ClassVar[int] diff --git a/machinery-system-structure/MachSysS/system_structure_pb2.py b/machinery-system-structure/MachSysS/system_structure_pb2.py index e1cf6b1..a4daeea 100644 --- a/machinery-system-structure/MachSysS/system_structure_pb2.py +++ b/machinery-system-structure/MachSysS/system_structure_pb2.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: system_structure.proto -# Protobuf Python Version: 4.25.2 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool @@ -14,7 +13,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"\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' + 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*\xc6\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\x12\x0e\n\nLSFO_CRUDE\x10\n\x12\x0e\n\nLSFO_BLEND\x10\x0b\x12\t\n\x05ULSFO\x10\x0c\x12\t\n\x05VLSFO\x10\r*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() @@ -25,11 +24,11 @@ _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["_FUELTYPE"]._serialized_end = 7743 + _globals["_FUELORIGIN"]._serialized_start = 7745 + _globals["_FUELORIGIN"]._serialized_end = 7812 + _globals["_FUELSPECIFIEDBY"]._serialized_start = 7814 + _globals["_FUELSPECIFIEDBY"]._serialized_end = 7883 _globals["_POINT"]._serialized_start = 52 _globals["_POINT"]._serialized_end = 81 _globals["_CURVE1D"]._serialized_start = 83 diff --git a/machinery-system-structure/MachSysS/system_structure_pb2.pyi b/machinery-system-structure/MachSysS/system_structure_pb2.pyi index 97fc846..51acece 100644 --- a/machinery-system-structure/MachSysS/system_structure_pb2.pyi +++ b/machinery-system-structure/MachSysS/system_structure_pb2.pyi @@ -13,7 +13,7 @@ from typing import ( DESCRIPTOR: _descriptor.FileDescriptor class EmissionType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] NONE: _ClassVar[EmissionType] SOX: _ClassVar[EmissionType] NOX: _ClassVar[EmissionType] @@ -24,7 +24,7 @@ class EmissionType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): N2O: _ClassVar[EmissionType] class FuelType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] DIESEL: _ClassVar[FuelType] HFO: _ClassVar[FuelType] NATURAL_GAS: _ClassVar[FuelType] @@ -35,16 +35,20 @@ class FuelType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): ETHANOL: _ClassVar[FuelType] METHANOL: _ClassVar[FuelType] LFO: _ClassVar[FuelType] + LSFO_CRUDE: _ClassVar[FuelType] + LSFO_BLEND: _ClassVar[FuelType] + ULSFO: _ClassVar[FuelType] + VLSFO: _ClassVar[FuelType] class FuelOrigin(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] NONE1: _ClassVar[FuelOrigin] FOSSIL: _ClassVar[FuelOrigin] BIO: _ClassVar[FuelOrigin] RENEWABLE_NON_BIO: _ClassVar[FuelOrigin] class FuelSpecifiedBy(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] NONE2: _ClassVar[FuelSpecifiedBy] FUEL_EU_MARITIME: _ClassVar[FuelSpecifiedBy] IMO: _ClassVar[FuelSpecifiedBy] @@ -68,6 +72,10 @@ LPG_BUTANE: FuelType ETHANOL: FuelType METHANOL: FuelType LFO: FuelType +LSFO_CRUDE: FuelType +LSFO_BLEND: FuelType +ULSFO: FuelType +VLSFO: FuelType NONE1: FuelOrigin FOSSIL: FuelOrigin BIO: FuelOrigin @@ -78,7 +86,7 @@ IMO: FuelSpecifiedBy USER: FuelSpecifiedBy class Point(_message.Message): - __slots__ = ("x", "y") + __slots__ = ["x", "y"] X_FIELD_NUMBER: _ClassVar[int] Y_FIELD_NUMBER: _ClassVar[int] x: float @@ -88,7 +96,7 @@ class Point(_message.Message): ) -> None: ... class Curve1D(_message.Message): - __slots__ = ("points",) + __slots__ = ["points"] POINTS_FIELD_NUMBER: _ClassVar[int] points: _containers.RepeatedCompositeFieldContainer[Point] def __init__( @@ -96,7 +104,7 @@ class Curve1D(_message.Message): ) -> None: ... class BSFCCurve(_message.Message): - __slots__ = ("x_label", "y_label", "curve") + __slots__ = ["x_label", "y_label", "curve"] X_LABEL_FIELD_NUMBER: _ClassVar[int] Y_LABEL_FIELD_NUMBER: _ClassVar[int] CURVE_FIELD_NUMBER: _ClassVar[int] @@ -111,7 +119,7 @@ class BSFCCurve(_message.Message): ) -> None: ... class EfficiencyCurve(_message.Message): - __slots__ = ("x_label", "y_label", "curve") + __slots__ = ["x_label", "y_label", "curve"] X_LABEL_FIELD_NUMBER: _ClassVar[int] Y_LABEL_FIELD_NUMBER: _ClassVar[int] CURVE_FIELD_NUMBER: _ClassVar[int] @@ -126,7 +134,7 @@ class EfficiencyCurve(_message.Message): ) -> None: ... class BSFC(_message.Message): - __slots__ = ("curve", "value") + __slots__ = ["curve", "value"] CURVE_FIELD_NUMBER: _ClassVar[int] VALUE_FIELD_NUMBER: _ClassVar[int] curve: BSFCCurve @@ -138,7 +146,7 @@ class BSFC(_message.Message): ) -> None: ... class Efficiency(_message.Message): - __slots__ = ("curve", "value") + __slots__ = ["curve", "value"] CURVE_FIELD_NUMBER: _ClassVar[int] VALUE_FIELD_NUMBER: _ClassVar[int] curve: EfficiencyCurve @@ -150,7 +158,7 @@ class Efficiency(_message.Message): ) -> None: ... class PowerCurve(_message.Message): - __slots__ = ("x_label", "y_label", "curve") + __slots__ = ["x_label", "y_label", "curve"] X_LABEL_FIELD_NUMBER: _ClassVar[int] Y_LABEL_FIELD_NUMBER: _ClassVar[int] CURVE_FIELD_NUMBER: _ClassVar[int] @@ -165,7 +173,7 @@ class PowerCurve(_message.Message): ) -> None: ... class PropulsionPowerTimeSeries(_message.Message): - __slots__ = ("x_label", "y_label", "propulsor_id", "curve") + __slots__ = ["x_label", "y_label", "propulsor_id", "curve"] X_LABEL_FIELD_NUMBER: _ClassVar[int] Y_LABEL_FIELD_NUMBER: _ClassVar[int] PROPULSOR_ID_FIELD_NUMBER: _ClassVar[int] @@ -183,7 +191,7 @@ class PropulsionPowerTimeSeries(_message.Message): ) -> None: ... class AuxiliaryLoadTimeSeries(_message.Message): - __slots__ = ("x_label", "y_label", "switchboard_id", "curve") + __slots__ = ["x_label", "y_label", "switchboard_id", "curve"] X_LABEL_FIELD_NUMBER: _ClassVar[int] Y_LABEL_FIELD_NUMBER: _ClassVar[int] SWITCHBOARD_ID_FIELD_NUMBER: _ClassVar[int] @@ -201,7 +209,7 @@ class AuxiliaryLoadTimeSeries(_message.Message): ) -> None: ... class AuxiliaryLoad(_message.Message): - __slots__ = ("switchboard_id", "load_kw") + __slots__ = ["switchboard_id", "load_kw"] SWITCHBOARD_ID_FIELD_NUMBER: _ClassVar[int] LOAD_KW_FIELD_NUMBER: _ClassVar[int] switchboard_id: int @@ -211,7 +219,7 @@ class AuxiliaryLoad(_message.Message): ) -> None: ... class EmissionCurve(_message.Message): - __slots__ = ("x_label", "y_label", "curve", "emission_type") + __slots__ = ["x_label", "y_label", "curve", "emission_type"] X_LABEL_FIELD_NUMBER: _ClassVar[int] Y_LABEL_FIELD_NUMBER: _ClassVar[int] CURVE_FIELD_NUMBER: _ClassVar[int] @@ -229,7 +237,7 @@ class EmissionCurve(_message.Message): ) -> None: ... class Gear(_message.Message): - __slots__ = ( + __slots__ = [ "name", "gear_ratio", "rated_power_kw", @@ -238,7 +246,7 @@ class Gear(_message.Message): "order_from_switchboard_or_shaftline", "unit_price_usd", "uid", - ) + ] NAME_FIELD_NUMBER: _ClassVar[int] GEAR_RATIO_FIELD_NUMBER: _ClassVar[int] RATED_POWER_KW_FIELD_NUMBER: _ClassVar[int] @@ -268,7 +276,7 @@ class Gear(_message.Message): ) -> None: ... class Fuel(_message.Message): - __slots__ = ("fuel_type", "fuel_origin") + __slots__ = ["fuel_type", "fuel_origin"] FUEL_TYPE_FIELD_NUMBER: _ClassVar[int] FUEL_ORIGIN_FIELD_NUMBER: _ClassVar[int] fuel_type: FuelType @@ -280,7 +288,7 @@ class Fuel(_message.Message): ) -> None: ... class Engine(_message.Message): - __slots__ = ( + __slots__ = [ "name", "rated_power_kw", "rated_speed_rpm", @@ -296,10 +304,10 @@ class Engine(_message.Message): "start_delay_s", "turn_off_power_kw", "uid", - ) + ] class NOxCalculationMethod(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] TIER_2: _ClassVar[Engine.NOxCalculationMethod] TIER_1: _ClassVar[Engine.NOxCalculationMethod] TIER_3: _ClassVar[Engine.NOxCalculationMethod] @@ -311,7 +319,7 @@ class Engine(_message.Message): CURVE: Engine.NOxCalculationMethod class EngineCycleType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] NONE: _ClassVar[Engine.EngineCycleType] DIESEL: _ClassVar[Engine.EngineCycleType] OTTO: _ClassVar[Engine.EngineCycleType] @@ -373,7 +381,7 @@ class Engine(_message.Message): ) -> None: ... class COGAS(_message.Message): - __slots__ = ( + __slots__ = [ "name", "rated_power_kw", "rated_speed_rpm", @@ -388,7 +396,7 @@ class COGAS(_message.Message): "start_delay_s", "turn_off_power_kw", "uid", - ) + ] NAME_FIELD_NUMBER: _ClassVar[int] RATED_POWER_KW_FIELD_NUMBER: _ClassVar[int] RATED_SPEED_RPM_FIELD_NUMBER: _ClassVar[int] @@ -438,7 +446,7 @@ class COGAS(_message.Message): ) -> None: ... class ElectricMachine(_message.Message): - __slots__ = ( + __slots__ = [ "name", "rated_power_kw", "rated_speed_rpm", @@ -446,7 +454,7 @@ class ElectricMachine(_message.Message): "order_from_switchboard_or_shaftline", "unit_price_usd", "uid", - ) + ] NAME_FIELD_NUMBER: _ClassVar[int] RATED_POWER_KW_FIELD_NUMBER: _ClassVar[int] RATED_SPEED_RPM_FIELD_NUMBER: _ClassVar[int] @@ -473,7 +481,7 @@ class ElectricMachine(_message.Message): ) -> None: ... class Battery(_message.Message): - __slots__ = ( + __slots__ = [ "name", "energy_capacity_kwh", "rated_charging_rate_c", @@ -487,7 +495,7 @@ class Battery(_message.Message): "state_of_energy_minimum", "state_of_energy_maximum", "uid", - ) + ] NAME_FIELD_NUMBER: _ClassVar[int] ENERGY_CAPACITY_KWH_FIELD_NUMBER: _ClassVar[int] RATED_CHARGING_RATE_C_FIELD_NUMBER: _ClassVar[int] @@ -532,14 +540,14 @@ class Battery(_message.Message): ) -> None: ... class ElectricComponent(_message.Message): - __slots__ = ( + __slots__ = [ "name", "rated_power_kw", "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] @@ -563,7 +571,7 @@ class ElectricComponent(_message.Message): ) -> None: ... class FuelCell(_message.Message): - __slots__ = ( + __slots__ = [ "name", "rated_power_kw", "efficiency", @@ -574,7 +582,7 @@ class FuelCell(_message.Message): "power_minimum_specific", "start_delay_s", "uid", - ) + ] NAME_FIELD_NUMBER: _ClassVar[int] RATED_POWER_KW_FIELD_NUMBER: _ClassVar[int] EFFICIENCY_FIELD_NUMBER: _ClassVar[int] @@ -610,13 +618,13 @@ class FuelCell(_message.Message): ) -> None: ... class Propeller(_message.Message): - __slots__ = ( + __slots__ = [ "name", "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] @@ -637,13 +645,13 @@ class Propeller(_message.Message): ) -> None: ... class BusBreaker(_message.Message): - __slots__ = ("switchboard_to",) + __slots__ = ["switchboard_to"] SWITCHBOARD_TO_FIELD_NUMBER: _ClassVar[int] switchboard_to: int def __init__(self, switchboard_to: _Optional[int] = ...) -> None: ... class SuperCapacitor(_message.Message): - __slots__ = ( + __slots__ = [ "name", "energy_capacity_wh", "rated_power_kw", @@ -653,7 +661,7 @@ class SuperCapacitor(_message.Message): "order_from_switchboard_or_shaftline", "unit_price_usd", "uid", - ) + ] NAME_FIELD_NUMBER: _ClassVar[int] ENERGY_CAPACITY_WH_FIELD_NUMBER: _ClassVar[int] RATED_POWER_KW_FIELD_NUMBER: _ClassVar[int] @@ -686,14 +694,14 @@ class SuperCapacitor(_message.Message): ) -> None: ... class MechanicalComponent(_message.Message): - __slots__ = ( + __slots__ = [ "name", "rated_power_kw", "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] @@ -717,7 +725,7 @@ class MechanicalComponent(_message.Message): ) -> None: ... class Subsystem(_message.Message): - __slots__ = ( + __slots__ = [ "gear", "engine", "electric_machine", @@ -740,10 +748,10 @@ class Subsystem(_message.Message): "ramp_down_rate_limit_percent_per_second", "base_load_order", "uid", - ) + ] class PowerType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] NONE1: _ClassVar[Subsystem.PowerType] POWER_SOURCE: _ClassVar[Subsystem.PowerType] POWER_CONSUMER: _ClassVar[Subsystem.PowerType] @@ -759,7 +767,7 @@ class Subsystem(_message.Message): SHORE_CONNECTION: Subsystem.PowerType class ComponentType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] NONE: _ClassVar[Subsystem.ComponentType] MAIN_ENGINE: _ClassVar[Subsystem.ComponentType] AUXILIARY_ENGINE: _ClassVar[Subsystem.ComponentType] @@ -892,7 +900,7 @@ class Subsystem(_message.Message): ) -> None: ... class Switchboard(_message.Message): - __slots__ = ("switchboard_id", "subsystems") + __slots__ = ["switchboard_id", "subsystems"] SWITCHBOARD_ID_FIELD_NUMBER: _ClassVar[int] SUBSYSTEMS_FIELD_NUMBER: _ClassVar[int] switchboard_id: int @@ -904,7 +912,7 @@ class Switchboard(_message.Message): ) -> None: ... class ShaftLine(_message.Message): - __slots__ = ("shaft_line_id", "subsystems") + __slots__ = ["shaft_line_id", "subsystems"] SHAFT_LINE_ID_FIELD_NUMBER: _ClassVar[int] SUBSYSTEMS_FIELD_NUMBER: _ClassVar[int] shaft_line_id: int @@ -916,7 +924,7 @@ class ShaftLine(_message.Message): ) -> None: ... class MechanicalSystem(_message.Message): - __slots__ = ("shaft_lines",) + __slots__ = ["shaft_lines"] SHAFT_LINES_FIELD_NUMBER: _ClassVar[int] shaft_lines: _containers.RepeatedCompositeFieldContainer[ShaftLine] def __init__( @@ -924,7 +932,7 @@ class MechanicalSystem(_message.Message): ) -> None: ... class ElectricSystem(_message.Message): - __slots__ = ("switchboards",) + __slots__ = ["switchboards"] SWITCHBOARDS_FIELD_NUMBER: _ClassVar[int] switchboards: _containers.RepeatedCompositeFieldContainer[Switchboard] def __init__( @@ -932,7 +940,7 @@ class ElectricSystem(_message.Message): ) -> None: ... class FuelStorage(_message.Message): - __slots__ = ("fuel_type", "capacity_kg") + __slots__ = ["fuel_type", "capacity_kg"] FUEL_TYPE_FIELD_NUMBER: _ClassVar[int] CAPACITY_KG_FIELD_NUMBER: _ClassVar[int] fuel_type: FuelType @@ -944,7 +952,7 @@ class FuelStorage(_message.Message): ) -> None: ... class MachinerySystem(_message.Message): - __slots__ = ( + __slots__ = [ "name", "propulsion_type", "fuel_storage", @@ -953,10 +961,10 @@ class MachinerySystem(_message.Message): "electric_system", "maximum_allowed_fuel_cell_load_percentage", "average_base_load_percentage", - ) + ] class PropulsionType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): - __slots__ = () + __slots__ = [] MECHANICAL: _ClassVar[MachinerySystem.PropulsionType] ELECTRIC: _ClassVar[MachinerySystem.PropulsionType] HYBRID: _ClassVar[MachinerySystem.PropulsionType] diff --git a/machinery-system-structure/proto/system_structure.proto b/machinery-system-structure/proto/system_structure.proto index b48ec6a..c7e43bd 100644 --- a/machinery-system-structure/proto/system_structure.proto +++ b/machinery-system-structure/proto/system_structure.proto @@ -99,6 +99,10 @@ enum FuelType { ETHANOL = 7; METHANOL = 8; LFO = 9; + LSFO_CRUDE = 10; + LSFO_BLEND = 11; + ULSFO = 12; + VLSFO = 13; } enum FuelOrigin { diff --git a/machinery-system-structure/settings.ini b/machinery-system-structure/settings.ini index b9863f4..f9e98b8 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.10 +version = 0.6.11 min_python = 3.10 audience = Developers language = English