diff --git a/hopp/eco/hydrogen_mgmt.py b/hopp/eco/hydrogen_mgmt.py index d104063b8..dce34fc21 100644 --- a/hopp/eco/hydrogen_mgmt.py +++ b/hopp/eco/hydrogen_mgmt.py @@ -1,6 +1,12 @@ import numpy as np import pandas as pd +from ORBIT import ProjectManager, load_config +from ORBIT.core import Vessel +from ORBIT.core.library import initialize_library +from ORBIT.phases.design import DesignPhase +from ORBIT.phases.install import InstallPhase + from hopp.hydrogen.h2_transport.h2_compression import Compressor from hopp.hydrogen.h2_storage.pressure_vessel import PressureVessel from hopp.hydrogen.h2_storage.pipe_storage.underground_pipe_storage import ( @@ -11,13 +17,13 @@ ) from hopp.hydrogen.h2_transport.h2_export_pipe import run_pipe_analysis from hopp.hydrogen.h2_transport.h2_pipe_array import run_pipe_array_const_diam + from hopp.offshore.fixed_platform import ( - install_platform, - calc_platform_opex, - calc_substructure_mass_and_cost, + FixedPlatformDesign, + FixedPlatformInstallation, + calc_platform_opex ) - def run_h2_pipe_array( plant_config, orbit_project, electrolyzer_physics_results, design_scenario, verbose ): @@ -435,32 +441,43 @@ def run_equipment_platform( ) # from kg to tonnes toparea += h2_storage_results["tank_footprint_m2"] - distance = plant_config["site"]["distance_to_landfall"] + #### initialize + ProjectManager.register_design_phase(FixedPlatformDesign) + ProjectManager.register_install_phase(FixedPlatformInstallation) + platform_config = plant_config["platform"] - installation_cost = install_platform( - topmass, - toparea, - distance, - install_duration=plant_config["platform"]["installation_days"], - ) + # assign site parameters + if platform_config["site"]["depth"] == -1: + platform_config["site"]["depth"] = plant_config["site"]["depth"] + if platform_config["site"]["distance"] == -1: + platform_config["site"]["distance"] = plant_config["site"]["distance"] + # assign equipment values + if platform_config["equipment"]["tech_required_area"] == -1: + platform_config["equipment"]["tech_required_area"] = topmass + if platform_config["equipment"]["tech_required_area"] == -1: + platform_config["equipment"]["tech_required_area"] == toparea - depth = plant_config["site"]["depth"] # depth of pipe [m] + platform = ProjectManager(platform_config) + platform.run() - capex, platform_mass = calc_substructure_mass_and_cost(topmass, toparea, depth) + design_capex = platform.design_results['platform_design']['total_cost'] + install_capex = platform.installation_capex + total_capex = design_capex + install_capex - opex_rate = plant_config["platform"]["opex_rate"] - total_opex = calc_platform_opex(capex, opex_rate) + total_opex = calc_platform_opex(total_capex, platform_config["opex_rate"]) - total_capex = capex + installation_cost + platform_mass = platform.design_results['platform_design']['mass'] + platform_area = platform.design_results['platform_design']['area'] else: platform_mass = 0.0 + platform_area = 0.0 total_capex = 0.0 total_opex = 0.0 platform_results = { "topmass_kg": topmass, - "toparea_m2": toparea, + "toparea_m2": platform_area, "platform_mass_tonnes": platform_mass, "capex": total_capex, "opex": total_opex, diff --git a/hopp/offshore/fixed_platform.py b/hopp/offshore/fixed_platform.py index 87268d753..245770102 100644 --- a/hopp/offshore/fixed_platform.py +++ b/hopp/offshore/fixed_platform.py @@ -96,7 +96,7 @@ def run(self): _platform = self.config.get('equipment',{}) - self.mass = _platform.get('tech_comnined_mass',999) # t + self.mass = _platform.get('tech_combined_mass',999) # t self.area = _platform.get('tech_required_area', 1000) # m**2 design_cost = _platform.get('topside_design_cost', 4.5e6) # USD @@ -200,9 +200,9 @@ def setup_simulation(self, **kwargs): self.depth, fab_cost, design_cost, steel_cost ) - total_mass = substructure_mass # t + self.total_mass = substructure_mass # t # Call the install_platform function - self.install_capex = install_platform(total_mass, self.area, self.distance, \ + self.install_capex = install_platform(self.total_mass, self.area, self.distance, \ install_duration, self.install_vessel) # An install object needs to have attribute system_capex, installation_capex, and detailed output @@ -331,7 +331,6 @@ def calc_platform_opex(capex, opex_rate=0.011): config_path = os.path.abspath(__file__) config_fname = load_config(os.path.join(config_path, os.pardir, "example_fixed_project.yaml")) - ProjectManager.register_design_phase(FixedPlatformDesign) ProjectManager.register_install_phase(FixedPlatformInstallation)