Repository: NREL/HOPP (language: python)

Issue:
Branch - dev/refactor: clean out to_organize directory
Clean out the stuff in the to_organize directory!!!

Directory structure:
- `to_organize`
  - [ ] `H2_Analysis`
    - [ ] `2020ATB_NREL_Reference_7MW_200.csv`
    - [ ] `compressor.py`
    - [ ] `h2_main.py`
    - [ ] `h2_optimize_gf.py`
    - [ ] `h2_setup_optimize.py`
    - [ ] `H2AModel.py`
    - [ ] `hopp_for_h2_floris.py`
    - [ ] `hopp_for_h2.py`
    - [ ] `hydrogen_steel_pipe_cost_functions.py`
    - [ ] `LCA_single_scenario_ProFAST.py`
    - [ ] `LCA_single_scenario.py`
    - [ ] `run_h2a.py`
    - [ ] `simple_cash_annuals.py`
    - [ ] `simple_dispatch.py`
  - [ ] `PEM_Model_2Push`
    - [ ] `cbc.exe`
    - [ ] `optimization_utils_linear.py`
    - [ ] `run_PEM_master.py`
    - [ ] `test_opt.ipynb`
  - [ ] `probably_to_project`
    - [ ] `landbased_nationwide_LCOH.py`
      - this seems like a script
      - blame `kbrunik`
      - not imported anywhere
    - [ ] `osw_h2_LCOH.py`
      - blame `kbrunik`
      - not imported anywhere
    - [ ] `osw-h2.py`
      - this seems like it can be deleted... doesn't do anything
      - blame `kbrunik`
      - not imported anywhere
    - [ ] `run_generation_only.py`
    - [ ] `steel_model.py`
  - [ ] `distributed_pipe_cost_analysis.py`
  - [ ] `gradient_free.py`
  - [ ] `hopp_tools_steel.py`
  - [ ] `hydrogen_steel_pipe_cost_functions.py`
  - [ ] `inputs_py.py`
  - [ ] `pipelineASME.py`
  - [ ] `plot_battery.py`
  - [ ] `plot_power_to_load.py`
  - [ ] `plot_reopt_results.py`
  - [ ] `plot_results.py`
  - [ ] `plot_shortfall_curtailment.py`
  - [ ] `run_profast_for_ammonia.py`
  - [ ] `run_profast_for_h2_transmission.py`
  - [ ] `run_profast_for_hydrogen.py`
  - [ ] `run_profast_for_steel.py`
  - [ ] `run_reopt.py`
  - [ ] `run_RODeO.py`


Discussion / hints:

Fix patch:
diff --git a/hopp/simulation/technologies/hydrogen/desal/__init__.py b/greenheart/__init__.py
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/desal/__init__.py
rename to greenheart/__init__.py
diff --git a/greenheart/simulation/technologies/hydrogen/__init__.py b/greenheart/simulation/technologies/hydrogen/__init__.py
new file mode 100644
index 000000000..77f64a9fd
--- /dev/null
+++ b/greenheart/simulation/technologies/hydrogen/__init__.py
@@ -0,0 +1,1 @@
+from greenheart.simulation.technologies.hydrogen.h2_transport.h2_compression import Compressor
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/__init__.py b/greenheart/simulation/technologies/hydrogen/desal/__init__.py
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/h2_storage/__init__.py
rename to greenheart/simulation/technologies/hydrogen/desal/__init__.py
diff --git a/hopp/simulation/technologies/hydrogen/desal/desal_model.py b/greenheart/simulation/technologies/hydrogen/desal/desal_model.py
similarity index 98%
rename from hopp/simulation/technologies/hydrogen/desal/desal_model.py
rename to greenheart/simulation/technologies/hydrogen/desal/desal_model.py
index 6ca109898..9f65ebbce 100644
--- a/hopp/simulation/technologies/hydrogen/desal/desal_model.py
+++ b/greenheart/simulation/technologies/hydrogen/desal/desal_model.py
@@ -14,7 +14,7 @@
 """
 import sys
 import numpy as np
-from hopp.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
+from greenheart.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
 
 def RO_desal(net_power_supply_kW, desal_sys_size, useful_life, plant_life, \
     water_recovery_ratio = 0.30, energy_conversion_factor = 4.2, \
diff --git a/hopp/simulation/technologies/hydrogen/desal/desal_model_eco.py b/greenheart/simulation/technologies/hydrogen/desal/desal_model_eco.py
similarity index 98%
rename from hopp/simulation/technologies/hydrogen/desal/desal_model_eco.py
rename to greenheart/simulation/technologies/hydrogen/desal/desal_model_eco.py
index 133fe86f5..11945bb07 100644
--- a/hopp/simulation/technologies/hydrogen/desal/desal_model_eco.py
+++ b/greenheart/simulation/technologies/hydrogen/desal/desal_model_eco.py
@@ -34,7 +34,7 @@
 """
 import sys
 import numpy as np
-from hopp.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
+from greenheart.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
 
 
 
diff --git a/hopp/simulation/technologies/hydrogen/electrolysis/H2_cost_model.py b/greenheart/simulation/technologies/hydrogen/electrolysis/H2_cost_model.py
similarity index 99%
rename from hopp/simulation/technologies/hydrogen/electrolysis/H2_cost_model.py
rename to greenheart/simulation/technologies/hydrogen/electrolysis/H2_cost_model.py
index 333505340..a2be82db5 100644
--- a/hopp/simulation/technologies/hydrogen/electrolysis/H2_cost_model.py
+++ b/greenheart/simulation/technologies/hydrogen/electrolysis/H2_cost_model.py
@@ -1,6 +1,6 @@
 import numpy as np
 import numpy_financial as npf
-from hopp.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
+from greenheart.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
 import warnings
 from pytest import approx
 
diff --git a/hopp/simulation/technologies/hydrogen/electrolysis/PEM_H2_LT_electrolyzer.py b/greenheart/simulation/technologies/hydrogen/electrolysis/PEM_H2_LT_electrolyzer.py
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/electrolysis/PEM_H2_LT_electrolyzer.py
rename to greenheart/simulation/technologies/hydrogen/electrolysis/PEM_H2_LT_electrolyzer.py
diff --git a/hopp/simulation/technologies/hydrogen/electrolysis/PEM_H2_LT_electrolyzer_Clusters.py b/greenheart/simulation/technologies/hydrogen/electrolysis/PEM_H2_LT_electrolyzer_Clusters.py
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/electrolysis/PEM_H2_LT_electrolyzer_Clusters.py
rename to greenheart/simulation/technologies/hydrogen/electrolysis/PEM_H2_LT_electrolyzer_Clusters.py
diff --git a/hopp/simulation/technologies/hydrogen/electrolysis/PEM_costs_Singlitico_model.py b/greenheart/simulation/technologies/hydrogen/electrolysis/PEM_costs_Singlitico_model.py
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/electrolysis/PEM_costs_Singlitico_model.py
rename to greenheart/simulation/technologies/hydrogen/electrolysis/PEM_costs_Singlitico_model.py
diff --git a/hopp/simulation/technologies/hydrogen/electrolysis/PEM_electrolyzer_IVcurve.py b/greenheart/simulation/technologies/hydrogen/electrolysis/PEM_electrolyzer_IVcurve.py
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/electrolysis/PEM_electrolyzer_IVcurve.py
rename to greenheart/simulation/technologies/hydrogen/electrolysis/PEM_electrolyzer_IVcurve.py
diff --git a/greenheart/simulation/technologies/hydrogen/electrolysis/__init__.py b/greenheart/simulation/technologies/hydrogen/electrolysis/__init__.py
new file mode 100644
index 000000000..601d9b232
--- /dev/null
+++ b/greenheart/simulation/technologies/hydrogen/electrolysis/__init__.py
@@ -0,0 +1,3 @@
+from greenheart.simulation.technologies.hydrogen.electrolysis.PEM_costs_Singlitico_model import PEMCostsSingliticoModel
+from greenheart.simulation.technologies.hydrogen.electrolysis.PEM_electrolyzer_IVcurve import PEM_electrolyzer_LT
+from greenheart.simulation.technologies.hydrogen.electrolysis.PEM_H2_LT_electrolyzer import PEM_electrolyzer_LT
diff --git a/hopp/simulation/technologies/hydrogen/electrolysis/optimization_utils_linear.py b/greenheart/simulation/technologies/hydrogen/electrolysis/optimization_utils_linear.py
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/electrolysis/optimization_utils_linear.py
rename to greenheart/simulation/technologies/hydrogen/electrolysis/optimization_utils_linear.py
diff --git a/hopp/simulation/technologies/hydrogen/electrolysis/pem_mass_and_footprint.py b/greenheart/simulation/technologies/hydrogen/electrolysis/pem_mass_and_footprint.py
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/electrolysis/pem_mass_and_footprint.py
rename to greenheart/simulation/technologies/hydrogen/electrolysis/pem_mass_and_footprint.py
diff --git a/hopp/simulation/technologies/hydrogen/electrolysis/run_PEM_master.py b/greenheart/simulation/technologies/hydrogen/electrolysis/run_PEM_master.py
similarity index 98%
rename from hopp/simulation/technologies/hydrogen/electrolysis/run_PEM_master.py
rename to greenheart/simulation/technologies/hydrogen/electrolysis/run_PEM_master.py
index 613b6c27c..f6fac0f91 100644
--- a/hopp/simulation/technologies/hydrogen/electrolysis/run_PEM_master.py
+++ b/greenheart/simulation/technologies/hydrogen/electrolysis/run_PEM_master.py
@@ -5,7 +5,7 @@
 # from dotenv import load_dotenv
 import pandas as pd
 
-from hopp.simulation.technologies.hydrogen.electrolysis.PEM_H2_LT_electrolyzer_Clusters import PEM_H2_Clusters as PEMClusters
+from greenheart.simulation.technologies.hydrogen.electrolysis.PEM_H2_LT_electrolyzer_Clusters import PEM_H2_Clusters as PEMClusters
 # from PEM_H2_LT_electrolyzer_Clusters import (
 #     PEM_H2_Clusters as PEMClusters,
 # )
@@ -26,7 +26,7 @@
 import pandas as pd
 
 
-from hopp.simulation.technologies.hydrogen.electrolysis.optimization_utils_linear import optimize
+from greenheart.simulation.technologies.hydrogen.electrolysis.optimization_utils_linear import optimize
 import time
 
 # from PyOMO import ipOpt !! FOR SANJANA!!
diff --git a/hopp/simulation/technologies/hydrogen/electrolysis/run_h2_PEM.py b/greenheart/simulation/technologies/hydrogen/electrolysis/run_h2_PEM.py
similarity index 98%
rename from hopp/simulation/technologies/hydrogen/electrolysis/run_h2_PEM.py
rename to greenheart/simulation/technologies/hydrogen/electrolysis/run_h2_PEM.py
index 0a0d3fb53..e5a0ec0ee 100644
--- a/hopp/simulation/technologies/hydrogen/electrolysis/run_h2_PEM.py
+++ b/greenheart/simulation/technologies/hydrogen/electrolysis/run_h2_PEM.py
@@ -1,7 +1,8 @@
 
 import numpy as np
 import pandas as pd
-
+from greenheart.simulation.technologies.hydrogen.electrolysis.run_PEM_master import run_PEM_clusters
+   
 def clean_up_final_outputs(h2_tot,h2_ts):
   
    new_h2_tot = h2_tot.drop(['Cluster Rated H2 Production [kg/hr]','Cluster Rated Power Consumed [kWh]','Cluster Rated H2 Production [kg/yr]',\
@@ -43,7 +44,6 @@ def run_h2_PEM(electrical_generation_timeseries, electrolyzer_size,
                 hydrogen_production_capacity_required_kgphr,debug_mode = False,turndown_ratio = 0.1,
                 ):
    #last modified by Elenya Grant on 9/21/2023
-   from hopp.simulation.technologies.hydrogen.electrolysis.run_PEM_master import run_PEM_clusters
    
    pem=run_PEM_clusters(electrical_generation_timeseries,electrolyzer_size,n_pem_clusters,electrolyzer_direct_cost_kw,useful_life,user_defined_pem_param_dictionary,use_degradation_penalty,turndown_ratio)
 
diff --git a/hopp/simulation/technologies/hydrogen/electrolysis/run_h2_PEM_eco.py b/greenheart/simulation/technologies/hydrogen/electrolysis/run_h2_PEM_eco.py
similarity index 96%
rename from hopp/simulation/technologies/hydrogen/electrolysis/run_h2_PEM_eco.py
rename to greenheart/simulation/technologies/hydrogen/electrolysis/run_h2_PEM_eco.py
index b4fd2f585..f01456818 100644
--- a/hopp/simulation/technologies/hydrogen/electrolysis/run_h2_PEM_eco.py
+++ b/greenheart/simulation/technologies/hydrogen/electrolysis/run_h2_PEM_eco.py
@@ -1,5 +1,5 @@
-# from hopp.hydrogen.electrolysis.PEM_H2_LT_electrolyzer import PEM_electrolyzer_LT
-from hopp.hydrogen.electrolysis.PEM_electrolyzer_IVcurve import PEM_electrolyzer_LT
+# from greenheart.hydrogen.electrolysis.PEM_H2_LT_electrolyzer import PEM_electrolyzer_LT
+from greenheart.hydrogen.electrolysis.PEM_electrolyzer_IVcurve import PEM_electrolyzer_LT
 from numpy.lib.function_base import average
 import examples.H2_Analysis.H2AModel as H2AModel
 import numpy as np
diff --git a/hopp/simulation/technologies/hydrogen/electrolysis/run_h2_clusters.py b/greenheart/simulation/technologies/hydrogen/electrolysis/run_h2_clusters.py
similarity index 98%
rename from hopp/simulation/technologies/hydrogen/electrolysis/run_h2_clusters.py
rename to greenheart/simulation/technologies/hydrogen/electrolysis/run_h2_clusters.py
index 359f21c14..5b6630c83 100644
--- a/hopp/simulation/technologies/hydrogen/electrolysis/run_h2_clusters.py
+++ b/greenheart/simulation/technologies/hydrogen/electrolysis/run_h2_clusters.py
@@ -4,7 +4,7 @@
 # from dotenv import load_dotenv
 import pandas as pd
 # from PEM_H2_LT_electrolyzer_ESGBasicClusters import PEM_electrolyzer_LT as PEMClusters
-from hopp.simulation.technologies.hydrogen.electrolysis.PEM_H2_LT_electrolyzer_Clusters import PEM_H2_Clusters as PEMClusters
+from greenheart.simulation.technologies.hydrogen.electrolysis.PEM_H2_LT_electrolyzer_Clusters import PEM_H2_Clusters as PEMClusters
 # from PEM_H2_LT_electrolyzer_Clusters import PEM_H2_Clusters as PEMClusters
 import numpy as np
 from numpy import savetxt #ESG
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/Bulk Hydrogen Cost as Function of Capacity.docx b/greenheart/simulation/technologies/hydrogen/h2_storage/Bulk Hydrogen Cost as Function of Capacity.docx
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/h2_storage/Bulk Hydrogen Cost as Function of Capacity.docx
rename to greenheart/simulation/technologies/hydrogen/h2_storage/Bulk Hydrogen Cost as Function of Capacity.docx
diff --git a/hopp/to_organize/__init__.py b/greenheart/simulation/technologies/hydrogen/h2_storage/__init__.py
similarity index 100%
rename from hopp/to_organize/__init__.py
rename to greenheart/simulation/technologies/hydrogen/h2_storage/__init__.py
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/lined_rock_cavern/lined_rock_cavern.py b/greenheart/simulation/technologies/hydrogen/h2_storage/lined_rock_cavern/lined_rock_cavern.py
similarity index 98%
rename from hopp/simulation/technologies/hydrogen/h2_storage/lined_rock_cavern/lined_rock_cavern.py
rename to greenheart/simulation/technologies/hydrogen/h2_storage/lined_rock_cavern/lined_rock_cavern.py
index 3ea266fb5..a132daaba 100644
--- a/hopp/simulation/technologies/hydrogen/h2_storage/lined_rock_cavern/lined_rock_cavern.py
+++ b/greenheart/simulation/technologies/hydrogen/h2_storage/lined_rock_cavern/lined_rock_cavern.py
@@ -13,7 +13,7 @@
 """
 
 import numpy as np
-from hopp.simulation.technologies.hydrogen.h2_transport.h2_compression import Compressor
+from greenheart.simulation.technologies.hydrogen.h2_transport.h2_compression import Compressor
 
 class LinedRockCavernStorage():
     """
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/on_turbine/README.md b/greenheart/simulation/technologies/hydrogen/h2_storage/on_turbine/README.md
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/h2_storage/on_turbine/README.md
rename to greenheart/simulation/technologies/hydrogen/h2_storage/on_turbine/README.md
diff --git a/greenheart/simulation/technologies/hydrogen/h2_storage/on_turbine/__init__.py b/greenheart/simulation/technologies/hydrogen/h2_storage/on_turbine/__init__.py
new file mode 100644
index 000000000..25e3f7928
--- /dev/null
+++ b/greenheart/simulation/technologies/hydrogen/h2_storage/on_turbine/__init__.py
@@ -0,0 +1,1 @@
+from greenheart.simulation.technologies.hydrogen.h2_storage.on_turbine.on_turbine_hydrogen_storage import PressurizedTower
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/on_turbine/on_turbine_hydrogen_storage.py b/greenheart/simulation/technologies/hydrogen/h2_storage/on_turbine/on_turbine_hydrogen_storage.py
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/h2_storage/on_turbine/on_turbine_hydrogen_storage.py
rename to greenheart/simulation/technologies/hydrogen/h2_storage/on_turbine/on_turbine_hydrogen_storage.py
diff --git a/greenheart/simulation/technologies/hydrogen/h2_storage/pipe_storage/__init__.py b/greenheart/simulation/technologies/hydrogen/h2_storage/pipe_storage/__init__.py
new file mode 100644
index 000000000..c1f5e4e77
--- /dev/null
+++ b/greenheart/simulation/technologies/hydrogen/h2_storage/pipe_storage/__init__.py
@@ -0,0 +1,1 @@
+from greenheart.simulation.technologies.hydrogen.h2_storage.pipe_storage.underground_pipe_storage import UndergroundPipeStorage
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/pipe_storage/underground_pipe_storage.py b/greenheart/simulation/technologies/hydrogen/h2_storage/pipe_storage/underground_pipe_storage.py
similarity index 98%
rename from hopp/simulation/technologies/hydrogen/h2_storage/pipe_storage/underground_pipe_storage.py
rename to greenheart/simulation/technologies/hydrogen/h2_storage/pipe_storage/underground_pipe_storage.py
index 2122dd803..e2bd91c8e 100644
--- a/hopp/simulation/technologies/hydrogen/h2_storage/pipe_storage/underground_pipe_storage.py
+++ b/greenheart/simulation/technologies/hydrogen/h2_storage/pipe_storage/underground_pipe_storage.py
@@ -14,7 +14,7 @@
 """
 
 import numpy as np
-from hopp.simulation.technologies.hydrogen.h2_transport.h2_compression import Compressor
+from greenheart.simulation.technologies.hydrogen.h2_transport.h2_compression import Compressor
 
 class UndergroundPipeStorage():
     """
diff --git a/greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/__init__.py b/greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/__init__.py
new file mode 100644
index 000000000..2b623a4e0
--- /dev/null
+++ b/greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/__init__.py
@@ -0,0 +1,1 @@
+from greenheart.simulation.technologies.hydrogen.h2_storage.pressure_vessel.tankinator import MetalMaterial, Tank, TypeITank, LinedTank, TypeIIITank, TypeIVTank
\ No newline at end of file
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/Compressed_all.py b/greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/Compressed_all.py
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/Compressed_all.py
rename to greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/Compressed_all.py
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/Compressed_gas_function.py b/greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/Compressed_gas_function.py
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/Compressed_gas_function.py
rename to greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/Compressed_gas_function.py
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/README.md b/greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/README.md
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/README.md
rename to greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/README.md
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/Tankinator.xlsx b/greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/Tankinator.xlsx
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/Tankinator.xlsx
rename to greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/Tankinator.xlsx
diff --git a/greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/__init__.py b/greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/__init__.py
new file mode 100644
index 000000000..f2f520d25
--- /dev/null
+++ b/greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/__init__.py
@@ -0,0 +1,2 @@
+from greenheart.simulation.technologies.hydrogen.h2_storage.pressure_vessel.compressed_gas_storage_model_20221021.Compressed_all import PressureVessel
+from greenheart.simulation.technologies.hydrogen.h2_storage.pressure_vessel.compressed_gas_storage_model_20221021.Compressed_gas_function import CompressedGasFunction
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/material_properties.json b/greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/material_properties.json
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/material_properties.json
rename to greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/material_properties.json
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/tankinator.py b/greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/tankinator.py
similarity index 99%
rename from hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/tankinator.py
rename to greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/tankinator.py
index 2da82f4ae..c786a39bc 100644
--- a/hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/tankinator.py
+++ b/greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/tankinator.py
@@ -15,7 +15,7 @@
 import json
 import os
 
-from hopp.simulation.technologies.hydrogen.h2_storage.pressure_vessel import von_mises
+from greenheart.simulation.technologies.hydrogen.h2_storage.pressure_vessel import von_mises
 
 class MetalMaterial(object):
     """
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/von_mises.py b/greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/von_mises.py
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/von_mises.py
rename to greenheart/simulation/technologies/hydrogen/h2_storage/pressure_vessel/von_mises.py
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/salt_cavern/salt_cavern.py b/greenheart/simulation/technologies/hydrogen/h2_storage/salt_cavern/salt_cavern.py
similarity index 98%
rename from hopp/simulation/technologies/hydrogen/h2_storage/salt_cavern/salt_cavern.py
rename to greenheart/simulation/technologies/hydrogen/h2_storage/salt_cavern/salt_cavern.py
index 6e233d4a2..788810d40 100644
--- a/hopp/simulation/technologies/hydrogen/h2_storage/salt_cavern/salt_cavern.py
+++ b/greenheart/simulation/technologies/hydrogen/h2_storage/salt_cavern/salt_cavern.py
@@ -13,7 +13,7 @@
 """
 
 import numpy as np
-from hopp.simulation.technologies.hydrogen.h2_transport.h2_compression import Compressor
+from greenheart.simulation.technologies.hydrogen.h2_transport.h2_compression import Compressor
 
 class SaltCavernStorage():
     """
diff --git a/hopp/simulation/technologies/hydrogen/h2_transport/data_tables/pipe_dimensions_metric.csv b/greenheart/simulation/technologies/hydrogen/h2_transport/data_tables/pipe_dimensions_metric.csv
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/h2_transport/data_tables/pipe_dimensions_metric.csv
rename to greenheart/simulation/technologies/hydrogen/h2_transport/data_tables/pipe_dimensions_metric.csv
diff --git a/hopp/simulation/technologies/hydrogen/h2_transport/data_tables/steel_costs_per_kg.csv b/greenheart/simulation/technologies/hydrogen/h2_transport/data_tables/steel_costs_per_kg.csv
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/h2_transport/data_tables/steel_costs_per_kg.csv
rename to greenheart/simulation/technologies/hydrogen/h2_transport/data_tables/steel_costs_per_kg.csv
diff --git a/hopp/simulation/technologies/hydrogen/h2_transport/data_tables/steel_mechanical_props.csv b/greenheart/simulation/technologies/hydrogen/h2_transport/data_tables/steel_mechanical_props.csv
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/h2_transport/data_tables/steel_mechanical_props.csv
rename to greenheart/simulation/technologies/hydrogen/h2_transport/data_tables/steel_mechanical_props.csv
diff --git a/hopp/simulation/technologies/hydrogen/h2_transport/h2_compression.py b/greenheart/simulation/technologies/hydrogen/h2_transport/h2_compression.py
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/h2_transport/h2_compression.py
rename to greenheart/simulation/technologies/hydrogen/h2_transport/h2_compression.py
diff --git a/hopp/simulation/technologies/hydrogen/h2_transport/h2_export_pipe.py b/greenheart/simulation/technologies/hydrogen/h2_transport/h2_export_pipe.py
similarity index 100%
rename from hopp/simulation/technologies/hydrogen/h2_transport/h2_export_pipe.py
rename to greenheart/simulation/technologies/hydrogen/h2_transport/h2_export_pipe.py
diff --git a/hopp/simulation/technologies/hydrogen/h2_transport/h2_pipe_array.py b/greenheart/simulation/technologies/hydrogen/h2_transport/h2_pipe_array.py
similarity index 97%
rename from hopp/simulation/technologies/hydrogen/h2_transport/h2_pipe_array.py
rename to greenheart/simulation/technologies/hydrogen/h2_transport/h2_pipe_array.py
index 422bf08db..315e678b7 100644
--- a/hopp/simulation/technologies/hydrogen/h2_transport/h2_pipe_array.py
+++ b/greenheart/simulation/technologies/hydrogen/h2_transport/h2_pipe_array.py
@@ -1,4 +1,4 @@
-from hopp.simulation.technologies.hydrogen.h2_transport.h2_export_pipe import run_pipe_analysis
+from greenheart.simulation.technologies.hydrogen.h2_transport.h2_export_pipe import run_pipe_analysis
 from numpy import isnan, flip, nansum
 
 """
diff --git a/greenheart/simulation/technologies/offshore/__init__.py b/greenheart/simulation/technologies/offshore/__init__.py
new file mode 100644
index 000000000..62b449edd
--- /dev/null
+++ b/greenheart/simulation/technologies/offshore/__init__.py
@@ -0,0 +1,1 @@
+from greenheart.simulation.technologies.offshore.fixed_platform import FixedPlatformDesign, FixedPlatformInstallation
\ No newline at end of file
diff --git a/hopp/simulation/technologies/offshore/example_fixed_project.yaml b/greenheart/simulation/technologies/offshore/example_fixed_project.yaml
similarity index 100%
rename from hopp/simulation/technologies/offshore/example_fixed_project.yaml
rename to greenheart/simulation/technologies/offshore/example_fixed_project.yaml
diff --git a/hopp/simulation/technologies/offshore/example_floating_project.yaml b/greenheart/simulation/technologies/offshore/example_floating_project.yaml
similarity index 100%
rename from hopp/simulation/technologies/offshore/example_floating_project.yaml
rename to greenheart/simulation/technologies/offshore/example_floating_project.yaml
diff --git a/hopp/simulation/technologies/offshore/fixed_platform.py b/greenheart/simulation/technologies/offshore/fixed_platform.py
similarity index 100%
rename from hopp/simulation/technologies/offshore/fixed_platform.py
rename to greenheart/simulation/technologies/offshore/fixed_platform.py
diff --git a/hopp/simulation/technologies/offshore/floating_platform.py b/greenheart/simulation/technologies/offshore/floating_platform.py
similarity index 100%
rename from hopp/simulation/technologies/offshore/floating_platform.py
rename to greenheart/simulation/technologies/offshore/floating_platform.py
diff --git a/hopp/to_organize/H2_Analysis/2020ATB_NREL_Reference_7MW_200.csv b/greenheart/to_organize/H2_Analysis/2020ATB_NREL_Reference_7MW_200.csv
similarity index 100%
rename from hopp/to_organize/H2_Analysis/2020ATB_NREL_Reference_7MW_200.csv
rename to greenheart/to_organize/H2_Analysis/2020ATB_NREL_Reference_7MW_200.csv
diff --git a/hopp/to_organize/H2_Analysis/H2AModel.py b/greenheart/to_organize/H2_Analysis/H2AModel.py
similarity index 100%
rename from hopp/to_organize/H2_Analysis/H2AModel.py
rename to greenheart/to_organize/H2_Analysis/H2AModel.py
diff --git a/hopp/to_organize/H2_Analysis/LCA_single_scenario.py b/greenheart/to_organize/H2_Analysis/LCA_single_scenario.py
similarity index 100%
rename from hopp/to_organize/H2_Analysis/LCA_single_scenario.py
rename to greenheart/to_organize/H2_Analysis/LCA_single_scenario.py
diff --git a/hopp/to_organize/H2_Analysis/LCA_single_scenario_ProFAST.py b/greenheart/to_organize/H2_Analysis/LCA_single_scenario_ProFAST.py
similarity index 100%
rename from hopp/to_organize/H2_Analysis/LCA_single_scenario_ProFAST.py
rename to greenheart/to_organize/H2_Analysis/LCA_single_scenario_ProFAST.py
diff --git a/hopp/to_organize/H2_Analysis/__init__.py b/greenheart/to_organize/H2_Analysis/__init__.py
similarity index 100%
rename from hopp/to_organize/H2_Analysis/__init__.py
rename to greenheart/to_organize/H2_Analysis/__init__.py
diff --git a/hopp/to_organize/H2_Analysis/compressor.py b/greenheart/to_organize/H2_Analysis/compressor.py
similarity index 98%
rename from hopp/to_organize/H2_Analysis/compressor.py
rename to greenheart/to_organize/H2_Analysis/compressor.py
index 546b8fe66..a1a744433 100644
--- a/hopp/to_organize/H2_Analysis/compressor.py
+++ b/greenheart/to_organize/H2_Analysis/compressor.py
@@ -1,4 +1,4 @@
-from hopp.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
+from greenheart.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
 
 class Compressor():
     def __init__(self, input_dict, output_dict):
diff --git a/hopp/to_organize/H2_Analysis/h2_main.py b/greenheart/to_organize/H2_Analysis/h2_main.py
similarity index 98%
rename from hopp/to_organize/H2_Analysis/h2_main.py
rename to greenheart/to_organize/H2_Analysis/h2_main.py
index e99666e50..327b2e0d9 100644
--- a/hopp/to_organize/H2_Analysis/h2_main.py
+++ b/greenheart/to_organize/H2_Analysis/h2_main.py
@@ -5,11 +5,11 @@
 from hopp.simulation.technologies.sites import SiteInfo
 from hopp.simulation.technologies.sites import flatirons_site as sample_site
 from hopp.utilities.keys import set_developer_nrel_gov_key
-from hopp.to_organize.plot_reopt_results import plot_reopt_results
-from hopp.to_organize.run_reopt import run_reopt
-from hopp.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
-from hopp.to_organize.H2_Analysis.run_h2a import run_h2a as run_h2a
-from hopp.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
+from greenheart.to_organize.plot_reopt_results import plot_reopt_results
+from greenheart.to_organize.run_reopt import run_reopt
+from greenheart.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
+from greenheart.to_organize.H2_Analysis.run_h2a import run_h2a as run_h2a
+from greenheart.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
 import hopp.simulation.technologies.hydrogen.electrolysis.run_h2_PEM as run_h2_PEM
 import numpy as np
 import numpy_financial as npf
diff --git a/hopp/to_organize/H2_Analysis/h2_optimize_gf.py b/greenheart/to_organize/H2_Analysis/h2_optimize_gf.py
similarity index 94%
rename from hopp/to_organize/H2_Analysis/h2_optimize_gf.py
rename to greenheart/to_organize/H2_Analysis/h2_optimize_gf.py
index 9b25d050e..4159ce97f 100644
--- a/hopp/to_organize/H2_Analysis/h2_optimize_gf.py
+++ b/greenheart/to_organize/H2_Analysis/h2_optimize_gf.py
@@ -1,6 +1,6 @@
-from hopp.to_organize.H2_Analysis.h2_setup_optimize import calculate_h_lcoe
-from hopp.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
-from hopp.to_organize.gradient_free import GeneticAlgorithm
+from greenheart.to_organize.H2_Analysis.h2_setup_optimize import calculate_h_lcoe
+from greenheart.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
+from greenheart.to_organize.gradient_free import GeneticAlgorithm
 import pandas as pd
 import numpy as np
 import warnings
diff --git a/hopp/to_organize/H2_Analysis/h2_setup_optimize.py b/greenheart/to_organize/H2_Analysis/h2_setup_optimize.py
similarity index 99%
rename from hopp/to_organize/H2_Analysis/h2_setup_optimize.py
rename to greenheart/to_organize/H2_Analysis/h2_setup_optimize.py
index ab5422d31..ac267d789 100644
--- a/hopp/to_organize/H2_Analysis/h2_setup_optimize.py
+++ b/greenheart/to_organize/H2_Analysis/h2_setup_optimize.py
@@ -14,8 +14,8 @@
 from hopp.simulation.hybrid_simulation import HybridSimulation
 from hopp.utilities.log import hybrid_logger as logger
 from hopp.utilities.keys import set_developer_nrel_gov_key
-from hopp.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
-from hopp.simulation.technologies.hydrogen.electrolysis.run_h2_PEM import run_h2_PEM
+from greenheart.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
+from greenheart.simulation.technologies.hydrogen.electrolysis.run_h2_PEM import run_h2_PEM
 import numpy as np
 from lcoe.lcoe import lcoe as lcoe_calc
 import matplotlib.pyplot as plt
diff --git a/hopp/to_organize/H2_Analysis/hopp_for_h2.py b/greenheart/to_organize/H2_Analysis/hopp_for_h2.py
similarity index 100%
rename from hopp/to_organize/H2_Analysis/hopp_for_h2.py
rename to greenheart/to_organize/H2_Analysis/hopp_for_h2.py
diff --git a/hopp/to_organize/H2_Analysis/hopp_for_h2_floris.py b/greenheart/to_organize/H2_Analysis/hopp_for_h2_floris.py
similarity index 100%
rename from hopp/to_organize/H2_Analysis/hopp_for_h2_floris.py
rename to greenheart/to_organize/H2_Analysis/hopp_for_h2_floris.py
diff --git a/hopp/to_organize/H2_Analysis/hydrogen_steel_pipe_cost_functions.py b/greenheart/to_organize/H2_Analysis/hydrogen_steel_pipe_cost_functions.py
similarity index 100%
rename from hopp/to_organize/H2_Analysis/hydrogen_steel_pipe_cost_functions.py
rename to greenheart/to_organize/H2_Analysis/hydrogen_steel_pipe_cost_functions.py
diff --git a/hopp/to_organize/H2_Analysis/run_h2a.py b/greenheart/to_organize/H2_Analysis/run_h2a.py
similarity index 100%
rename from hopp/to_organize/H2_Analysis/run_h2a.py
rename to greenheart/to_organize/H2_Analysis/run_h2a.py
diff --git a/hopp/to_organize/H2_Analysis/simple_cash_annuals.py b/greenheart/to_organize/H2_Analysis/simple_cash_annuals.py
similarity index 100%
rename from hopp/to_organize/H2_Analysis/simple_cash_annuals.py
rename to greenheart/to_organize/H2_Analysis/simple_cash_annuals.py
diff --git a/hopp/to_organize/H2_Analysis/simple_dispatch.py b/greenheart/to_organize/H2_Analysis/simple_dispatch.py
similarity index 100%
rename from hopp/to_organize/H2_Analysis/simple_dispatch.py
rename to greenheart/to_organize/H2_Analysis/simple_dispatch.py
diff --git a/hopp/to_organize/probably_to_project/__init__.py b/greenheart/to_organize/__init__.py
similarity index 100%
rename from hopp/to_organize/probably_to_project/__init__.py
rename to greenheart/to_organize/__init__.py
diff --git a/hopp/to_organize/distributed_pipe_cost_analysis.py b/greenheart/to_organize/distributed_pipe_cost_analysis.py
similarity index 100%
rename from hopp/to_organize/distributed_pipe_cost_analysis.py
rename to greenheart/to_organize/distributed_pipe_cost_analysis.py
diff --git a/hopp/to_organize/gradient_free.py b/greenheart/to_organize/gradient_free.py
similarity index 100%
rename from hopp/to_organize/gradient_free.py
rename to greenheart/to_organize/gradient_free.py
diff --git a/hopp/to_organize/hopp_tools_steel.py b/greenheart/to_organize/hopp_tools_steel.py
similarity index 98%
rename from hopp/to_organize/hopp_tools_steel.py
rename to greenheart/to_organize/hopp_tools_steel.py
index 26d7ee892..7b11b25ee 100644
--- a/hopp/to_organize/hopp_tools_steel.py
+++ b/greenheart/to_organize/hopp_tools_steel.py
@@ -15,17 +15,17 @@
 
 
 # HOPP functionss
-from hopp.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
-from hopp.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
-from hopp.to_organize.H2_Analysis.compressor import Compressor
-from hopp.simulation.technologies.hydrogen.desal.desal_model import RO_desal
+from greenheart.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
+from greenheart.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
+from greenheart.to_organize.H2_Analysis.compressor import Compressor
+from greenheart.simulation.technologies.hydrogen.desal.desal_model import RO_desal
 import hopp.simulation.technologies.hydrogen.electrolysis.run_h2_PEM as run_h2_PEM
 from lcoe.lcoe import lcoe as lcoe_calc
 import numpy_financial as npf
 import inspect
 from datetime import datetime
 
-from hopp.to_organize.H2_Analysis import LCA_single_scenario
+from greenheart.to_organize.H2_Analysis import LCA_single_scenario
 
 
 
@@ -728,7 +728,7 @@ def run_HOPP(
         #                         'floris_config': floris_config # if not specified, use default SAM models
         #                     }}
 
-        from hopp.to_organize.H2_Analysis.hopp_for_h2_floris import hopp_for_h2_floris
+        from greenheart.to_organize.H2_Analysis.hopp_for_h2_floris import hopp_for_h2_floris
         custom_powercurve=False
         hybrid_plant, combined_pv_wind_power_production_hopp, combined_pv_wind_curtailment_hopp,\
                 energy_shortfall_hopp, annual_energies, wind_plus_solar_npv, npvs, lcoe, lcoe_nom =  \
@@ -840,7 +840,7 @@ def compressor_model(hopp_dict):
 def pressure_vessel(hopp_dict):
 
     #Pressure Vessel Model Example
-    from hopp.simulation.technologies.hydrogen.h2_storage.pipe_storage.underground_pipe_storage import Underground_Pipe_Storage
+    from greenheart.simulation.technologies.hydrogen.h2_storage.pipe_storage.underground_pipe_storage import Underground_Pipe_Storage
     storage_input = dict()
     storage_input['H2_storage_kg'] = 18750
     # storage_input['storage_duration_hrs'] = 4
@@ -879,8 +879,8 @@ def pipeline(site_df,
             site_depth = site_depth + m
     site_depth = int(site_depth)
 
-    #from hopp.to_organize.H2_Analysis.pipeline_model import Pipeline
-    from hopp.to_organize.pipelineASME import PipelineASME
+    #from greenheart.to_organize.H2_Analysis.pipeline_model import Pipeline
+    from greenheart.to_organize.pipelineASME import PipelineASME
     in_dict = dict()
     #in_dict['pipeline_model'] = 'nrwl'
     #in_dict['pipeline_model'] = 'nexant'
@@ -1229,14 +1229,14 @@ def calculate_financials(
         hopp_dict.add('Models', {'calculate_financials': {'input_dict': input_dict}})
 
     turbine_rating_mw = scenario['Turbine Rating']
-    from hopp.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
+    from greenheart.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
 
     #Electrolyzer financial model
     if h2_model == 'H2A':
         #cf_h2_annuals = H2A_Results['expenses_annual_cashflow'] # This is unreliable.
         pass
     elif h2_model == 'Simple':
-        from hopp.simulation.technologies.hydrogen.electrolysis.H2_cost_model import basic_H2_cost_model
+        from greenheart.simulation.technologies.hydrogen.electrolysis.H2_cost_model import basic_H2_cost_model
 
         cf_h2_annuals, electrolyzer_total_capital_cost, electrolyzer_OM_cost, electrolyzer_capex_kw, time_between_replacement, h2_tax_credit, h2_itc = \
             basic_H2_cost_model(
@@ -1477,7 +1477,7 @@ def write_outputs_RODeO(electrical_generation_timeseries,
                         ammonia_price_breakdown):
 
     turbine_rating_mw = scenario['Turbine Rating']
-    from hopp.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
+    from greenheart.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
 
     total_elec_production = np.sum(electrical_generation_timeseries)
     total_hopp_installed_cost = hybrid_plant.grid._financial_model.SystemCosts.total_installed_cost
@@ -1642,7 +1642,7 @@ def write_outputs_ProFAST(electrical_generation_timeseries,
                          hopp_dict):
 
     turbine_rating_mw = scenario['Turbine Rating']
-    from hopp.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
+    from greenheart.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
 
     total_elec_production = np.sum(electrical_generation_timeseries)
 
@@ -1960,7 +1960,7 @@ def steel_LCOS(
 
         hopp_dict.add('Models', {'steel_LCOS': {'input_dict': input_dict}})
 
-    from hopp.to_organize.run_profast_for_steel import run_profast_for_steel
+    from greenheart.to_organize.run_profast_for_steel import run_profast_for_steel
     import ProFAST
 
     # Specify file path to PyFAST
@@ -2054,7 +2054,7 @@ def steel_LCOS_SMR(
 
     #     hopp_dict.add('Models', {'steel_LCOS': {'input_dict': input_dict}})
 
-    from hopp.to_organize.run_profast_for_steel import run_profast_for_steel
+    from greenheart.to_organize.run_profast_for_steel import run_profast_for_steel
 
     import ProFAST
 
@@ -2129,7 +2129,7 @@ def levelized_cost_of_ammonia(
 
         hopp_dict.add('Models', {'levelized_cost_of_ammonia': {'input_dict': input_dict}})
 
-    from hopp.to_organize.run_profast_for_ammonia import run_profast_for_ammonia
+    from greenheart.to_organize.run_profast_for_ammonia import run_profast_for_ammonia
 
     # Specify file path to PyFAST
     # import sys
@@ -2216,7 +2216,7 @@ def levelized_cost_of_ammonia_SMR(
 
     #     hopp_dict.add('Models', {'levelized_cost_of_ammonia': {'input_dict': input_dict}})
 
-    from hopp.to_organize.run_profast_for_ammonia import run_profast_for_ammonia
+    from greenheart.to_organize.run_profast_for_ammonia import run_profast_for_ammonia
 
     import ProFAST
 
@@ -2284,7 +2284,7 @@ def levelized_cost_of_h2_transmission(
         }
 
         hopp_dict.add('Models', {'levelized_cost_of_h2_transmission': {'input_dict': input_dict}})
-    from hopp.to_organize.run_profast_for_h2_transmission import run_profast_for_h2_transmission
+    from greenheart.to_organize.run_profast_for_h2_transmission import run_profast_for_h2_transmission
 
     import ProFAST
     # Specify file path to PyFAST
diff --git a/hopp/to_organize/hopp_tools_steel_EPR_12oct2023.py b/greenheart/to_organize/hopp_tools_steel_EPR_12oct2023.py
similarity index 98%
rename from hopp/to_organize/hopp_tools_steel_EPR_12oct2023.py
rename to greenheart/to_organize/hopp_tools_steel_EPR_12oct2023.py
index 444013993..5361ec6b8 100644
--- a/hopp/to_organize/hopp_tools_steel_EPR_12oct2023.py
+++ b/greenheart/to_organize/hopp_tools_steel_EPR_12oct2023.py
@@ -15,10 +15,10 @@
 
 
 # HOPP functionss
-from hopp.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
-from hopp.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
-from hopp.to_organize.H2_Analysis.compressor import Compressor
-from hopp.simulation.technologies.hydrogen.desal.desal_model import RO_desal
+from greenheart.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
+from greenheart.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
+from greenheart.to_organize.H2_Analysis.compressor import Compressor
+from greenheart.simulation.technologies.hydrogen.desal.desal_model import RO_desal
 import hopp.simulation.technologies.hydrogen.electrolysis.run_h2_PEM as run_h2_PEM
 from lcoe.lcoe import lcoe as lcoe_calc
 import numpy_financial as npf
@@ -26,7 +26,7 @@
 from datetime import datetime
 from grid_price_profiles import grid_price_interpolation
 
-from hopp.to_organize.H2_Analysis import LCA_single_scenario
+from greenheart.to_organize.H2_Analysis import LCA_single_scenario
 
 
 
@@ -729,7 +729,7 @@ def run_HOPP(
         #                         'floris_config': floris_config # if not specified, use default SAM models
         #                     }}
 
-        from hopp.to_organize.H2_Analysis.hopp_for_h2_floris import hopp_for_h2_floris
+        from greenheart.to_organize.H2_Analysis.hopp_for_h2_floris import hopp_for_h2_floris
         custom_powercurve=False
         hybrid_plant, combined_pv_wind_power_production_hopp, combined_pv_wind_curtailment_hopp,\
                 energy_shortfall_hopp, annual_energies, wind_plus_solar_npv, npvs, lcoe, lcoe_nom =  \
@@ -841,7 +841,7 @@ def compressor_model(hopp_dict):
 def pressure_vessel(hopp_dict):
 
     #Pressure Vessel Model Example
-    from hopp.simulation.technologies.hydrogen.h2_storage.pipe_storage.underground_pipe_storage import Underground_Pipe_Storage
+    from greenheart.simulation.technologies.hydrogen.h2_storage.pipe_storage.underground_pipe_storage import Underground_Pipe_Storage
     storage_input = dict()
     storage_input['H2_storage_kg'] = 18750
     # storage_input['storage_duration_hrs'] = 4
@@ -880,8 +880,8 @@ def pipeline(site_df,
             site_depth = site_depth + m
     site_depth = int(site_depth)
 
-    #from hopp.to_organize.H2_Analysis.pipeline_model import Pipeline
-    from hopp.to_organize.pipelineASME import PipelineASME
+    #from greenheart.to_organize.H2_Analysis.pipeline_model import Pipeline
+    from greenheart.to_organize.pipelineASME import PipelineASME
     in_dict = dict()
     #in_dict['pipeline_model'] = 'nrwl'
     #in_dict['pipeline_model'] = 'nexant'
@@ -1236,14 +1236,14 @@ def calculate_financials(
         hopp_dict.add('Models', {'calculate_financials': {'input_dict': input_dict}})
 
     turbine_rating_mw = scenario['Turbine Rating']
-    from hopp.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
+    from greenheart.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
 
     #Electrolyzer financial model
     if h2_model == 'H2A':
         #cf_h2_annuals = H2A_Results['expenses_annual_cashflow'] # This is unreliable.
         pass
     elif h2_model == 'Simple':
-        from hopp.simulation.technologies.hydrogen.electrolysis.H2_cost_model import basic_H2_cost_model
+        from greenheart.simulation.technologies.hydrogen.electrolysis.H2_cost_model import basic_H2_cost_model
 
         cf_h2_annuals, electrolyzer_total_capital_cost, electrolyzer_OM_cost, electrolyzer_capex_kw, time_between_replacement, h2_tax_credit, h2_itc = \
             basic_H2_cost_model(
@@ -1484,7 +1484,7 @@ def write_outputs_RODeO(electrical_generation_timeseries,
                         ammonia_price_breakdown):
 
     turbine_rating_mw = scenario['Turbine Rating']
-    from hopp.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
+    from greenheart.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
 
     total_elec_production = np.sum(electrical_generation_timeseries)
     total_hopp_installed_cost = hybrid_plant.grid._financial_model.SystemCosts.total_installed_cost
@@ -1651,7 +1651,7 @@ def write_outputs_ProFAST(electrical_generation_timeseries,
                          hopp_dict):
 
     turbine_rating_mw = scenario['Turbine Rating']
-    from hopp.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
+    from greenheart.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
 
     total_elec_production = np.sum(electrical_generation_timeseries)
 
@@ -1977,7 +1977,7 @@ def steel_LCOS(
 
         hopp_dict.add('Models', {'steel_LCOS': {'input_dict': input_dict}})
 
-    #from hopp.to_organize.run_profast_for_steel import run_profast_for_steel
+    #from greenheart.to_organize.run_profast_for_steel import run_profast_for_steel
     from run_profast_for_steel import run_profast_for_steel
     import ProFAST
 
@@ -2073,7 +2073,7 @@ def steel_LCOS_SMR(
 
     #     hopp_dict.add('Models', {'steel_LCOS': {'input_dict': input_dict}})
 
-   # from hopp.to_organize.run_profast_for_steel import run_profast_for_steel
+   # from greenheart.to_organize.run_profast_for_steel import run_profast_for_steel
     from run_profast_for_steel import run_profast_for_steel
 
     import ProFAST
@@ -2162,7 +2162,7 @@ def levelized_cost_of_ammonia(
 
         hopp_dict.add('Models', {'levelized_cost_of_ammonia': {'input_dict': input_dict}})
 
-    #from hopp.to_organize.run_profast_for_ammonia import run_profast_for_ammonia
+    #from greenheart.to_organize.run_profast_for_ammonia import run_profast_for_ammonia
     from run_profast_for_ammonia import run_profast_for_ammonia
 
     # Specify file path to PyFAST
@@ -2251,7 +2251,7 @@ def levelized_cost_of_ammonia_SMR(
 
     #     hopp_dict.add('Models', {'levelized_cost_of_ammonia': {'input_dict': input_dict}})
 
-    #from hopp.to_organize.run_profast_for_ammonia import run_profast_for_ammonia
+    #from greenheart.to_organize.run_profast_for_ammonia import run_profast_for_ammonia
     from run_profast_for_ammonia import run_profast_for_ammonia
 
     import ProFAST
@@ -2336,7 +2336,7 @@ def levelized_cost_of_h2_transmission(
         }
 
         hopp_dict.add('Models', {'levelized_cost_of_h2_transmission': {'input_dict': input_dict}})
-    from hopp.to_organize.run_profast_for_h2_transmission import run_profast_for_h2_transmission
+    from greenheart.to_organize.run_profast_for_h2_transmission import run_profast_for_h2_transmission
     from run_profast_for_h2_transmission import run_profast_for_h2_transmission
 
     import ProFAST
diff --git a/hopp/to_organize/hydrogen_steel_pipe_cost_functions.py b/greenheart/to_organize/hydrogen_steel_pipe_cost_functions.py
similarity index 100%
rename from hopp/to_organize/hydrogen_steel_pipe_cost_functions.py
rename to greenheart/to_organize/hydrogen_steel_pipe_cost_functions.py
diff --git a/hopp/to_organize/inputs_py.py b/greenheart/to_organize/inputs_py.py
similarity index 100%
rename from hopp/to_organize/inputs_py.py
rename to greenheart/to_organize/inputs_py.py
diff --git a/hopp/to_organize/pipelineASME.py b/greenheart/to_organize/pipelineASME.py
similarity index 99%
rename from hopp/to_organize/pipelineASME.py
rename to greenheart/to_organize/pipelineASME.py
index f878ca625..a611fc3d9 100644
--- a/hopp/to_organize/pipelineASME.py
+++ b/greenheart/to_organize/pipelineASME.py
@@ -1,7 +1,7 @@
 import math
 import numpy as np 
 from matplotlib import pyplot as plt 
-from hopp.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
+from greenheart.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
 
 verbose = False
 class PipelineASME: 
diff --git a/hopp/to_organize/plot_battery.py b/greenheart/to_organize/plot_battery.py
similarity index 100%
rename from hopp/to_organize/plot_battery.py
rename to greenheart/to_organize/plot_battery.py
diff --git a/hopp/to_organize/plot_power_to_load.py b/greenheart/to_organize/plot_power_to_load.py
similarity index 100%
rename from hopp/to_organize/plot_power_to_load.py
rename to greenheart/to_organize/plot_power_to_load.py
diff --git a/hopp/to_organize/plot_reopt_results.py b/greenheart/to_organize/plot_reopt_results.py
similarity index 96%
rename from hopp/to_organize/plot_reopt_results.py
rename to greenheart/to_organize/plot_reopt_results.py
index 6b56af97c..7de40e7b6 100644
--- a/hopp/to_organize/plot_reopt_results.py
+++ b/greenheart/to_organize/plot_reopt_results.py
@@ -1,6 +1,6 @@
-from hopp.to_organize.plot_power_to_load import plot_power_to_load
-from hopp.to_organize.plot_shortfall_curtailment import plot_shortfall_curtailment
-from hopp.to_organize.plot_battery import plot_battery
+from greenheart.to_organize.plot_power_to_load import plot_power_to_load
+from greenheart.to_organize.plot_shortfall_curtailment import plot_shortfall_curtailment
+from greenheart.to_organize.plot_battery import plot_battery
 import numpy as np
 import matplotlib.pyplot as plt
 
diff --git a/hopp/to_organize/plot_results.py b/greenheart/to_organize/plot_results.py
similarity index 100%
rename from hopp/to_organize/plot_results.py
rename to greenheart/to_organize/plot_results.py
diff --git a/hopp/to_organize/plot_shortfall_curtailment.py b/greenheart/to_organize/plot_shortfall_curtailment.py
similarity index 100%
rename from hopp/to_organize/plot_shortfall_curtailment.py
rename to greenheart/to_organize/plot_shortfall_curtailment.py
diff --git a/tests/hopp/test_offshore/__init__.py b/greenheart/to_organize/probably_to_project/__init__.py
similarity index 100%
rename from tests/hopp/test_offshore/__init__.py
rename to greenheart/to_organize/probably_to_project/__init__.py
diff --git a/hopp/to_organize/probably_to_project/landbased_nationwide_LCOH.py b/greenheart/to_organize/probably_to_project/landbased_nationwide_LCOH.py
similarity index 96%
rename from hopp/to_organize/probably_to_project/landbased_nationwide_LCOH.py
rename to greenheart/to_organize/probably_to_project/landbased_nationwide_LCOH.py
index a669eb882..054efb70e 100644
--- a/hopp/to_organize/probably_to_project/landbased_nationwide_LCOH.py
+++ b/greenheart/to_organize/probably_to_project/landbased_nationwide_LCOH.py
@@ -10,10 +10,10 @@
 from hopp.utilities.keys import set_developer_nrel_gov_key
 # from plot_reopt_results import plot_reopt_results
 # from run_reopt import run_reopt
-from hopp.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
-from hopp.to_organize.H2_Analysis.hopp_for_h2 import run_h2a as run_h2a #no h2a function
-from hopp.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
-from hopp.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
+from greenheart.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
+from greenheart.to_organize.H2_Analysis.hopp_for_h2 import run_h2a as run_h2a #no h2a function
+from greenheart.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
+from greenheart.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
 import hopp.simulation.technologies.hydrogen.electrolysis.run_h2_PEM as run_h2_PEM
 import numpy as np
 import numpy_financial as npf
@@ -25,13 +25,13 @@
 from hopp.tools.resource import *
 from hopp.tools.resource.resource_loader import site_details_creator
 
-from hopp.to_organize import hopp_tools_steel
+from greenheart.to_organize import hopp_tools_steel
 import copy
 
-from hopp.to_organize import plot_results
-from hopp.to_organize import run_profast_for_hydrogen
-#from hopp.to_organize import run_profast_for_hydrogen Unsure if it is meant to be run_profast
-from hopp.to_organize.hopp_tools_steel import hoppDict
+from greenheart.to_organize import plot_results
+from greenheart.to_organize import run_profast_for_hydrogen
+#from greenheart.to_organize import run_profast_for_hydrogen Unsure if it is meant to be run_profast
+from greenheart.to_organize.hopp_tools_steel import hoppDict
 import yaml
 
 """
diff --git a/hopp/to_organize/probably_to_project/osw-h2.py b/greenheart/to_organize/probably_to_project/osw-h2.py
similarity index 77%
rename from hopp/to_organize/probably_to_project/osw-h2.py
rename to greenheart/to_organize/probably_to_project/osw-h2.py
index f6ba51292..34caebcdf 100644
--- a/hopp/to_organize/probably_to_project/osw-h2.py
+++ b/greenheart/to_organize/probably_to_project/osw-h2.py
@@ -8,10 +8,10 @@
 from hopp.utilities.keys import set_developer_nrel_gov_key
 # from plot_reopt_results import plot_reopt_results
 # from run_reopt import run_reopt
-from hopp.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
-from hopp.to_organize.H2_Analysis.hopp_for_h2 import run_h2a as run_h2a #no h2a function
-from hopp.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
-from hopp.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
+from greenheart.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
+from greenheart.to_organize.H2_Analysis.hopp_for_h2 import run_h2a as run_h2a #no h2a function
+from greenheart.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
+from greenheart.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
 import hopp.simulation.technologies.hydrogen.electrolysis.run_h2_PEM as run_h2_PEM
 import numpy as np
 import numpy_financial as npf
diff --git a/hopp/to_organize/probably_to_project/osw_h2_LCOH.py b/greenheart/to_organize/probably_to_project/osw_h2_LCOH.py
similarity index 97%
rename from hopp/to_organize/probably_to_project/osw_h2_LCOH.py
rename to greenheart/to_organize/probably_to_project/osw_h2_LCOH.py
index 034012bfc..b72c4ef2e 100644
--- a/hopp/to_organize/probably_to_project/osw_h2_LCOH.py
+++ b/greenheart/to_organize/probably_to_project/osw_h2_LCOH.py
@@ -9,10 +9,10 @@
 from hopp.utilities.keys import set_developer_nrel_gov_key
 # from plot_reopt_results import plot_reopt_results
 # from run_reopt import run_reopt
-from hopp.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
-from hopp.to_organize.H2_Analysis.hopp_for_h2 import run_h2a as run_h2a #no h2a function
-from hopp.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
-from hopp.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
+from greenheart.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
+from greenheart.to_organize.H2_Analysis.hopp_for_h2 import run_h2a as run_h2a #no h2a function
+from greenheart.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
+from greenheart.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
 import hopp.simulation.technologies.hydrogen.electrolysis.run_h2_PEM as run_h2_PEM
 import numpy as np
 import numpy_financial as npf
@@ -24,11 +24,11 @@
 from hopp.tools.resource import *
 from hopp.tools.resource.resource_loader import site_details_creator
 
-from hopp.to_organize import hopp_tools_steel
+from greenheart.to_organize import hopp_tools_steel
 import copy
-from hopp.to_organize import plot_results
-from hopp.to_organize import run_profast_for_hydrogen
-from hopp.to_organize.hopp_tools_steel import hoppDict
+from greenheart.to_organize import plot_results
+from greenheart.to_organize import run_profast_for_hydrogen
+from greenheart.to_organize.hopp_tools_steel import hoppDict
 import yaml
 
 """
diff --git a/hopp/to_organize/probably_to_project/run_generation_only.py b/greenheart/to_organize/probably_to_project/run_generation_only.py
similarity index 97%
rename from hopp/to_organize/probably_to_project/run_generation_only.py
rename to greenheart/to_organize/probably_to_project/run_generation_only.py
index 84f31975f..7ead6998e 100644
--- a/hopp/to_organize/probably_to_project/run_generation_only.py
+++ b/greenheart/to_organize/probably_to_project/run_generation_only.py
@@ -7,18 +7,18 @@
 from hopp.simulation.technologies.sites import SiteInfo
 from hopp.simulation.technologies.sites import flatirons_site as sample_site
 from hopp.utilities.keys import set_developer_nrel_gov_key
-from hopp.to_organize.H2_Analysis import simple_dispatch
-from hopp.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
+from greenheart.to_organize.H2_Analysis import simple_dispatch
+from greenheart.to_organize.H2_Analysis.simple_cash_annuals import simple_cash_annuals
 import numpy as np
 import matplotlib.pyplot as plt
 import warnings
 from pathlib import Path
 warnings.filterwarnings("ignore")
 
-from hopp.to_organize import hopp_tools
-from hopp.to_organize import inputs_py
+from greenheart.to_organize import hopp_tools
+from greenheart.to_organize import inputs_py
 import copy 
-from hopp.to_organize import plot_results
+from greenheart.to_organize import plot_results
 
 """
 Perform a LCOE analysis for a few locations across the U.S. to demonstrate analysis across locations  using HOPP
diff --git a/hopp/to_organize/probably_to_project/steel_model.py b/greenheart/to_organize/probably_to_project/steel_model.py
similarity index 98%
rename from hopp/to_organize/probably_to_project/steel_model.py
rename to greenheart/to_organize/probably_to_project/steel_model.py
index d4ae381ca..e43862152 100644
--- a/hopp/to_organize/probably_to_project/steel_model.py
+++ b/greenheart/to_organize/probably_to_project/steel_model.py
@@ -11,12 +11,12 @@
 from hopp.simulation.technologies.sites import SiteInfo
 from hopp.simulation.technologies.sites import flatirons_site as sample_site
 from hopp.utilities.keys import set_developer_nrel_gov_key
-from hopp.to_organize.plot_reopt_results import plot_reopt_results
-from hopp.to_organize.run_reopt import run_reopt
-from hopp.to_organize.run_reopt import run_reopt
-from hopp.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
-from hopp.to_organize.H2_Analysis.hopp_for_h2 import run_h2a as run_h2a #no h2a function
-from hopp.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
+from greenheart.to_organize.plot_reopt_results import plot_reopt_results
+from greenheart.to_organize.run_reopt import run_reopt
+from greenheart.to_organize.run_reopt import run_reopt
+from greenheart.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
+from greenheart.to_organize.H2_Analysis.hopp_for_h2 import run_h2a as run_h2a #no h2a function
+from greenheart.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
 import hopp.simulation.technologies.hydrogen.electrolysis.run_h2_PEM as run_h2_PEM
 import numpy as np
 import numpy_financial as npf
diff --git a/hopp/to_organize/run_RODeO.py b/greenheart/to_organize/run_RODeO.py
similarity index 100%
rename from hopp/to_organize/run_RODeO.py
rename to greenheart/to_organize/run_RODeO.py
diff --git a/hopp/to_organize/run_profast_for_ammonia.py b/greenheart/to_organize/run_profast_for_ammonia.py
similarity index 100%
rename from hopp/to_organize/run_profast_for_ammonia.py
rename to greenheart/to_organize/run_profast_for_ammonia.py
diff --git a/hopp/to_organize/run_profast_for_h2_transmission.py b/greenheart/to_organize/run_profast_for_h2_transmission.py
similarity index 100%
rename from hopp/to_organize/run_profast_for_h2_transmission.py
rename to greenheart/to_organize/run_profast_for_h2_transmission.py
diff --git a/hopp/to_organize/run_profast_for_hydrogen.py b/greenheart/to_organize/run_profast_for_hydrogen.py
similarity index 99%
rename from hopp/to_organize/run_profast_for_hydrogen.py
rename to greenheart/to_organize/run_profast_for_hydrogen.py
index 6f5819e03..65230b659 100644
--- a/hopp/to_organize/run_profast_for_hydrogen.py
+++ b/greenheart/to_organize/run_profast_for_hydrogen.py
@@ -12,7 +12,7 @@
 # sys.path.insert(1,sys.path[0] + '/ProFAST-main/') #ESG
 import ProFAST
 
-from hopp.to_organize.H2_Analysis import LCA_single_scenario_ProFAST
+from greenheart.to_organize.H2_Analysis import LCA_single_scenario_ProFAST
 
 # sys.path.append('../ProFAST/')
 
diff --git a/hopp/to_organize/run_profast_for_steel.py b/greenheart/to_organize/run_profast_for_steel.py
similarity index 100%
rename from hopp/to_organize/run_profast_for_steel.py
rename to greenheart/to_organize/run_profast_for_steel.py
diff --git a/hopp/to_organize/run_reopt.py b/greenheart/to_organize/run_reopt.py
similarity index 100%
rename from hopp/to_organize/run_reopt.py
rename to greenheart/to_organize/run_reopt.py
diff --git a/greenheart/tools/__init__.py b/greenheart/tools/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/hopp/eco/__init__.py b/greenheart/tools/eco/__init__.py
similarity index 100%
rename from hopp/eco/__init__.py
rename to greenheart/tools/eco/__init__.py
diff --git a/hopp/eco/electrolyzer.py b/greenheart/tools/eco/electrolyzer.py
similarity index 96%
rename from hopp/eco/electrolyzer.py
rename to greenheart/tools/eco/electrolyzer.py
index 832e9aabf..66e2d7c0f 100644
--- a/hopp/eco/electrolyzer.py
+++ b/greenheart/tools/eco/electrolyzer.py
@@ -5,16 +5,16 @@
 
 # import hopp.tools.hopp_tools as hopp_tools
 
-from hopp.simulation.technologies.hydrogen.desal.desal_model_eco import RO_desal_eco as RO_desal
-from hopp.simulation.technologies.hydrogen.electrolysis.pem_mass_and_footprint import (
+from greenheart.simulation.technologies.hydrogen.desal.desal_model_eco import RO_desal_eco as RO_desal
+from greenheart.simulation.technologies.hydrogen.electrolysis.pem_mass_and_footprint import (
     mass as run_electrolyzer_mass,
 )
-from hopp.simulation.technologies.hydrogen.electrolysis.pem_mass_and_footprint import (
+from greenheart.simulation.technologies.hydrogen.electrolysis.pem_mass_and_footprint import (
     footprint as run_electrolyzer_footprint,
 )
-from hopp.simulation.technologies.hydrogen.electrolysis.H2_cost_model import basic_H2_cost_model
-from hopp.simulation.technologies.hydrogen.electrolysis.PEM_costs_Singlitico_model import PEMCostsSingliticoModel
-from hopp.simulation.technologies.hydrogen.electrolysis.run_h2_PEM import run_h2_PEM_IVcurve as run_h2_PEM
+from greenheart.simulation.technologies.hydrogen.electrolysis.H2_cost_model import basic_H2_cost_model
+from greenheart.simulation.technologies.hydrogen.electrolysis.PEM_costs_Singlitico_model import PEMCostsSingliticoModel
+from greenheart.simulation.technologies.hydrogen.electrolysis.run_h2_PEM import run_h2_PEM_IVcurve as run_h2_PEM
 
 
 def run_electrolyzer_physics(
diff --git a/hopp/eco/finance.py b/greenheart/tools/eco/finance.py
similarity index 100%
rename from hopp/eco/finance.py
rename to greenheart/tools/eco/finance.py
diff --git a/hopp/eco/hopp_mgmt.py b/greenheart/tools/eco/hopp_mgmt.py
similarity index 99%
rename from hopp/eco/hopp_mgmt.py
rename to greenheart/tools/eco/hopp_mgmt.py
index 97f301e25..e72a3232a 100644
--- a/hopp/eco/hopp_mgmt.py
+++ b/greenheart/tools/eco/hopp_mgmt.py
@@ -1,7 +1,7 @@
 from hopp.simulation.technologies.sites import SiteInfo
 from hopp.simulation.technologies.sites import flatirons_site as sample_site
 
-from hopp.to_organize.H2_Analysis.hopp_for_h2_floris import (
+from greenheart.to_organize.H2_Analysis.hopp_for_h2_floris import (
     hopp_for_h2_floris as hopp_for_h2,
 )
 
diff --git a/hopp/eco/hydrogen_mgmt.py b/greenheart/tools/eco/hydrogen_mgmt.py
similarity index 95%
rename from hopp/eco/hydrogen_mgmt.py
rename to greenheart/tools/eco/hydrogen_mgmt.py
index c858caa7f..bb9d6286a 100644
--- a/hopp/eco/hydrogen_mgmt.py
+++ b/greenheart/tools/eco/hydrogen_mgmt.py
@@ -7,21 +7,21 @@
 from ORBIT.phases.design import DesignPhase
 from ORBIT.phases.install import InstallPhase
 
-from hopp.simulation.technologies.hydrogen.h2_transport.h2_compression import Compressor
-from hopp.simulation.technologies.hydrogen.h2_storage.pressure_vessel.compressed_gas_storage_model_20221021.Compressed_all import PressureVessel
-from hopp.simulation.technologies.hydrogen.h2_storage.pipe_storage import (
+from greenheart.simulation.technologies.hydrogen.h2_transport.h2_compression import Compressor
+from greenheart.simulation.technologies.hydrogen.h2_storage.pressure_vessel.compressed_gas_storage_model_20221021.Compressed_all import PressureVessel
+from greenheart.simulation.technologies.hydrogen.h2_storage.pipe_storage import (
     UndergroundPipeStorage,
 )
 
-from hopp.simulation.technologies.hydrogen.h2_storage.lined_rock_cavern.lined_rock_cavern import LinedRockCavernStorage
-from hopp.simulation.technologies.hydrogen.h2_storage.salt_cavern.salt_cavern import SaltCavernStorage
-from hopp.simulation.technologies.hydrogen.h2_storage.on_turbine.on_turbine_hydrogen_storage import (
+from greenheart.simulation.technologies.hydrogen.h2_storage.lined_rock_cavern.lined_rock_cavern import LinedRockCavernStorage
+from greenheart.simulation.technologies.hydrogen.h2_storage.salt_cavern.salt_cavern import SaltCavernStorage
+from greenheart.simulation.technologies.hydrogen.h2_storage.on_turbine.on_turbine_hydrogen_storage import (
     PressurizedTower,
 )
 
-from hopp.simulation.technologies.hydrogen.h2_transport.h2_export_pipe import run_pipe_analysis
-from hopp.simulation.technologies.hydrogen.h2_transport.h2_pipe_array import run_pipe_array_const_diam
-from hopp.simulation.technologies.offshore.fixed_platform import (
+from greenheart.simulation.technologies.hydrogen.h2_transport.h2_export_pipe import run_pipe_analysis
+from greenheart.simulation.technologies.hydrogen.h2_transport.h2_pipe_array import run_pipe_array_const_diam
+from greenheart.simulation.technologies.offshore.fixed_platform import (
     FixedPlatformDesign,
     FixedPlatformInstallation,
     calc_platform_opex
diff --git a/hopp/eco/utilities.py b/greenheart/tools/eco/utilities.py
similarity index 100%
rename from hopp/eco/utilities.py
rename to greenheart/tools/eco/utilities.py
diff --git a/greenheart/tools/optimization/__init__.py b/greenheart/tools/optimization/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/greenheart/tools/optimization/openmdao.py b/greenheart/tools/optimization/openmdao.py
new file mode 100644
index 000000000..85214e5c4
--- /dev/null
+++ b/greenheart/tools/optimization/openmdao.py
@@ -0,0 +1,182 @@
+import numpy as np
+import openmdao.api as om
+
+import electrolyzer.inputs.validation as val
+from electrolyzer import run_lcoh
+
+from shapely.geometry import Polygon, Point
+
+class HOPPComponent(om.ExplicitComponent):
+
+    def initialize(self):
+        self.options.declare("hi", recordable=False)
+        self.options.declare("turbine_x_init")
+        self.options.declare("turbine_y_init")
+        self.options.declare("verbose")
+
+    def setup(self):
+
+        self.add_input("turbine_x", val=self.options["turbine_x_init"], units="m")
+        self.add_input("turbine_y", val=self.options["turbine_y_init"], units="m")
+        # self.add_input("battery_capacity_kw", val=15000, units="kW")
+        # self.add_input("battery_capacity_kwh", val=15000, units="kW*h")
+        # self.add_input("electrolyzer_rating_kw", val=15000, units="kW*h")
+        # self.add_input("pv_rating_kw", val=15000, units="kW")
+        # self.add_input("wind_rating_kw", val=150000, units="kW")
+        self.add_output("aep", units="kW*h")
+        self.add_output("lcoe_real", units="USD/(MW*h)")
+        self.add_output("p_wind", units="kW", val=np.zeros(8760))
+
+    def compute(self, inputs, outputs):
+
+        if self.options["verbose"]:
+            print("reinitialize")
+            print("x: ", inputs["turbine_x"])
+            print("y: ", inputs["turbine_y"])
+
+        hi = self.options["hi"]
+
+        hi.system.wind._system_model.fi.reinitialize(layout_x=inputs["turbine_x"], layout_y=inputs["turbine_y"], time_series=True)
+
+        # run simulation
+        hi.simulate(25)
+
+        if self.options["verbose"]:
+            print(f"obj: {hi.system.annual_energies.hybrid}")
+
+        # get result
+        outputs["aep"] = hi.system.annual_energies.hybrid
+        outputs["lcoe_real"] = hi.system.lcoe_real.hybrid/100.0 # convert from cents/kWh to USD/kWh
+        outputs["p_wind"] = hi.system.grid.generation_profile[0:8760]
+
+    def setup_partials(self):
+        self.declare_partials('*', '*', method='fd', form="forward")
+
+class TurbineDistanceComponent(om.ExplicitComponent):
+
+    def initialize(self):
+        self.options.declare("turbine_x_init")
+        self.options.declare("turbine_y_init")
+
+    def setup(self):
+        n_turbines = len(self.options["turbine_x_init"])
+        n_distances = int(n_turbines*(n_turbines-1)/2)
+        self.add_input("turbine_x", val=self.options["turbine_x_init"], units="m")
+        self.add_input("turbine_y", val=self.options["turbine_y_init"], units="m")
+        self.add_output("spacing_vec", val=np.zeros(n_distances), units="m")
+
+    def compute(self, inputs, outputs):
+
+        n_turbines = len(inputs["turbine_x"])
+        spacing_vec = np.zeros(int(n_turbines*(n_turbines-1)/2))
+        k = 0
+        for i in range(len(inputs["turbine_x"])):
+            for j in range(i+1, len(inputs["turbine_y"])):  # only look at pairs once
+                spacing_vec[k] = np.linalg.norm([(inputs["turbine_x"][i]-inputs["turbine_x"][j]), (inputs["turbine_y"][i]-inputs["turbine_y"][j])])
+                k += 1
+        outputs["spacing_vec"] = spacing_vec
+
+    def setup_partials(self):
+        self.declare_partials('*', '*', method='fd', form='forward')
+
+class BoundaryDistanceComponent(om.ExplicitComponent):
+    
+    def initialize(self):
+        self.options.declare("hopp_interface", recordable=False)
+        self.options.declare("turbine_x_init")
+        self.options.declare("turbine_y_init")
+
+    def setup(self):
+        self.n_turbines = len(self.options["turbine_x_init"])
+        self.n_distances = self.n_turbines
+        self.add_input("turbine_x", val=self.options["turbine_x_init"], units="m")
+        self.add_input("turbine_y", val=self.options["turbine_y_init"], units="m")
+        self.add_output("boundary_distance_vec", val=np.zeros(self.n_distances), units="m")
+
+    def compute(self, inputs, outputs):
+
+        # get hopp interface
+        hi = self.options["hopp_interface"]
+
+        # get polygon for boundary
+        boundary_polygon = Polygon(hi.system.site.vertices)     
+        # print("hi.system.site.vertices: ", hi.system.site.vertices)
+        # check if turbines are inside polygon and get distance
+        for i in range(0, self.n_distances):
+            point = Point(inputs["turbine_x"][i], inputs["turbine_y"][i])
+            outputs["boundary_distance_vec"][i] = boundary_polygon.exterior.distance(point)
+            if not boundary_polygon.contains(point):
+                outputs["boundary_distance_vec"][i] *= -1
+        #     print("POINT: ", point)
+        # print("BOUNDARY: ", boundary_polygon)
+        # print("DISTANCES: ", outputs)
+
+    def setup_partials(self):
+        self.declare_partials('*', '*', method='fd', form='forward')
+
+class ElectrolyzerComponent(om.ExplicitComponent):
+    """
+    This is an OpenMDAO wrapper to the generic electrolyzer model.
+
+    It makes some assumptions about the number of electrolyzers, stack size, and
+    how to distribute electricity across the different electrolyzers. These
+    could be later made into modeling options to allow for more user configuration.
+    """
+    def initialize(self):
+        self.options.declare("h2_modeling_options")
+        self.options.declare("h2_opt_options")
+        self.options.declare("modeling_options")
+
+    def setup(self):
+        self.add_input("p_wind", val=np.zeros(8760), units="W")
+        self.add_input("lcoe_real", units="USD/kW/h")
+        if self.options["h2_opt_options"]["control"]["system_rating_MW"]["flag"] \
+            or self.options["modeling_options"]["rating_equals_turbine_rating"]:
+            self.add_input("system_rating_MW", units="MW", val=self.options["h2_modeling_options"]["electrolyzer"]["control"]["system_rating_MW"])
+        self.add_output("h2_produced", units="kg")
+        self.add_output("max_curr_density", units="A/cm**2")
+        self.add_output("capex", units="USD")
+        self.add_output("opex", units="USD")
+        self.add_output("lcoh", units="USD/kg")
+
+    def compute(self, inputs, outputs):
+        # Set electrolyzer parameters from model inputs
+        power_signal = inputs["p_wind"]
+        lcoe_real = inputs["lcoe_real"][0]
+
+        if self.options["h2_opt_options"]["control"]["system_rating_MW"]["flag"] \
+            or self.options["modeling_options"]["rating_equals_turbine_rating"]:
+            self.options["h2_modeling_options"]["electrolyzer"]["control"]["system_rating_MW"] = inputs["system_rating_MW"][0]
+
+        elif "electrolyzer_rating_MW" in self.options["modeling_options"]["overridden_values"]:
+            electrolyzer_rating_MW = self.options["modeling_options"]["overridden_values"]["electrolyzer_rating_MW"]
+            self.options["h2_modeling_options"]["electrolyzer"]["control"]["system_rating_MW"] = electrolyzer_rating_MW
+
+        h2_prod, max_curr_density, lcoh, lcoh_dict, _  = run_lcoh(
+            self.options["h2_modeling_options"],
+            power_signal,
+            lcoe_real,
+            optimize=True
+        )
+
+        lt = lcoh_dict["LCOH Breakdown"]["Life Totals [$]"]
+        capex = lt["CapEx"]
+        opex = lt["OM"]
+
+        # msg = (
+        #     f"\n====== Electrolyzer ======\n"
+        #     f"  - h2 produced (kg): {h2_prod}\n"
+        #     f"  - max current density (A/cm^2): {max_curr_density}\n"
+        #     f"  - LCOH ($/kg): {lcoh}\n"
+        # )
+
+        # logger.info(msg)
+
+        outputs["h2_produced"] = h2_prod
+        outputs["max_curr_density"] = max_curr_density
+        outputs["capex"] = capex
+        outputs["opex"] = opex
+        outputs["lcoh"] = lcoh
+
+    def setup_partials(self):
+        self.declare_partials('*', '*', method='fd', form='forward')
diff --git a/hopp/simulation/technologies/hydrogen/__init__.py b/hopp/simulation/technologies/hydrogen/__init__.py
deleted file mode 100644
index 35fbb7bf8..000000000
--- a/hopp/simulation/technologies/hydrogen/__init__.py
+++ /dev/null
@@ -1,1 +0,0 @@
-from hopp.simulation.technologies.hydrogen.h2_transport.h2_compression import Compressor
diff --git a/hopp/simulation/technologies/hydrogen/electrolysis/__init__.py b/hopp/simulation/technologies/hydrogen/electrolysis/__init__.py
deleted file mode 100644
index c3f4cf0bd..000000000
--- a/hopp/simulation/technologies/hydrogen/electrolysis/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from hopp.simulation.technologies.hydrogen.electrolysis.PEM_costs_Singlitico_model import PEMCostsSingliticoModel
-from hopp.simulation.technologies.hydrogen.electrolysis.PEM_electrolyzer_IVcurve import PEM_electrolyzer_LT
-from hopp.simulation.technologies.hydrogen.electrolysis.PEM_H2_LT_electrolyzer import PEM_electrolyzer_LT
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/on_turbine/__init__.py b/hopp/simulation/technologies/hydrogen/h2_storage/on_turbine/__init__.py
deleted file mode 100644
index 18b26f750..000000000
--- a/hopp/simulation/technologies/hydrogen/h2_storage/on_turbine/__init__.py
+++ /dev/null
@@ -1,1 +0,0 @@
-from hopp.simulation.technologies.hydrogen.h2_storage.on_turbine.on_turbine_hydrogen_storage import PressurizedTower
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/pipe_storage/__init__.py b/hopp/simulation/technologies/hydrogen/h2_storage/pipe_storage/__init__.py
deleted file mode 100644
index 2d670d764..000000000
--- a/hopp/simulation/technologies/hydrogen/h2_storage/pipe_storage/__init__.py
+++ /dev/null
@@ -1,1 +0,0 @@
-from hopp.simulation.technologies.hydrogen.h2_storage.pipe_storage.underground_pipe_storage import UndergroundPipeStorage
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/__init__.py b/hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/__init__.py
deleted file mode 100644
index a477eff32..000000000
--- a/hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/__init__.py
+++ /dev/null
@@ -1,1 +0,0 @@
-from hopp.simulation.technologies.hydrogen.h2_storage.pressure_vessel.tankinator import MetalMaterial, Tank, TypeITank, LinedTank, TypeIIITank, TypeIVTank
\ No newline at end of file
diff --git a/hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/__init__.py b/hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/__init__.py
deleted file mode 100644
index b9189cc6f..000000000
--- a/hopp/simulation/technologies/hydrogen/h2_storage/pressure_vessel/compressed_gas_storage_model_20221021/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-from hopp.simulation.technologies.hydrogen.h2_storage.pressure_vessel.compressed_gas_storage_model_20221021.Compressed_all import PressureVessel
-from hopp.simulation.technologies.hydrogen.h2_storage.pressure_vessel.compressed_gas_storage_model_20221021.Compressed_gas_function import CompressedGasFunction
diff --git a/hopp/simulation/technologies/offshore/__init__.py b/hopp/simulation/technologies/offshore/__init__.py
deleted file mode 100644
index 98fc0db0f..000000000
--- a/hopp/simulation/technologies/offshore/__init__.py
+++ /dev/null
@@ -1,1 +0,0 @@
-from hopp.simulation.technologies.offshore.fixed_platform import FixedPlatformDesign, FixedPlatformInstallation
\ No newline at end of file


Test patch:
diff --git a/hopp/simulation/technologies/hydrogen/electrolysis/test_opt.ipynb b/greenheart/simulation/technologies/hydrogen/electrolysis/test_opt.ipynb
similarity index 95%
rename from hopp/simulation/technologies/hydrogen/electrolysis/test_opt.ipynb
rename to greenheart/simulation/technologies/hydrogen/electrolysis/test_opt.ipynb
index ec1da114f..94983bf5f 100644
--- a/hopp/simulation/technologies/hydrogen/electrolysis/test_opt.ipynb
+++ b/greenheart/simulation/technologies/hydrogen/electrolysis/test_opt.ipynb
@@ -23,8 +23,8 @@
     "import numpy as np\n",
     "import matplotlib.pyplot as plt\n",
     "import pandas as pd\n",
-    "from hopp.to_organize.PEM_Model_2Push.optimization_utils_linear import optimize\n",
-    "from hopp.simulation.technologies.Electrolyzer_Models import run_PEM_clusters\n",
+    "from greenheart.to_organize.PEM_Model_2Push.optimization_utils_linear import optimize\n",
+    "from greenheart.simulation.technologies.Electrolyzer_Models import run_PEM_clusters\n",
     "#from run_PEM_master import run_PEM_clusters\n",
     "import time"
    ]
diff --git a/tests/hopp/hopp_tools_test.py b/tests/greenheart/hopp_tools_test.py
similarity index 99%
rename from tests/hopp/hopp_tools_test.py
rename to tests/greenheart/hopp_tools_test.py
index fbf3e8bd0..b14dacde2 100644
--- a/tests/hopp/hopp_tools_test.py
+++ b/tests/greenheart/hopp_tools_test.py
@@ -12,12 +12,12 @@
 
 
 # HOPP functionss
-from hopp.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
+from greenheart.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
 from hopp.simulation.technologies.sites import SiteInfo
-from hopp.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
-from hopp.to_organize.H2_Analysis.compressor import Compressor
-from hopp.simulation.technologies.hydrogen.desal.desal_model import RO_desal
-import hopp.simulation.technologies.hydrogen.electrolysis.run_h2_PEM as run_h2_PEM
+from greenheart.to_organize.H2_Analysis.simple_dispatch import SimpleDispatch
+from greenheart.to_organize.H2_Analysis.compressor import Compressor
+from greenheart.simulation.technologies.hydrogen.desal.desal_model import RO_desal
+import greenheart.simulation.technologies.hydrogen.electrolysis.run_h2_PEM as run_h2_PEM
 from lcoe.lcoe import lcoe as lcoe_calc
 import numpy_financial as npf
 
diff --git a/tests/greenheart/inputs/floris_input.yaml b/tests/greenheart/inputs/floris_input.yaml
new file mode 100644
index 000000000..6a2a66939
--- /dev/null
+++ b/tests/greenheart/inputs/floris_input.yaml
@@ -0,0 +1,236 @@
+
+###
+# A name for this input file.
+# This is not currently only for the user's reference.
+name: GCH
+
+###
+# A description of the contents of this input file.
+# This is not currently only for the user's reference.
+description: Three turbines using Gauss Curl Hybrid model
+
+###
+# The earliest verion of FLORIS this input file supports.
+# This is not currently only for the user's reference.
+floris_version: v3.0.0
+
+###
+# Configure the logging level and where to show the logs.
+logging:
+
+  ###
+  # Settings for logging to the console (i.e. terminal).
+  console:
+
+    ###
+    # Can be "true" or "false".
+    enable: true
+
+    ###
+    # Set the severity to show output. Messages at this level or higher will be shown.
+    # Can be one of "CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG".
+    level: WARNING
+
+  ###
+  # Settings for logging to a file.
+  file:
+
+    ###
+    # Can be "true" or "false".
+    enable: false
+
+    ###
+    # Set the severity to show output. Messages at this level or higher will be shown.
+    # Can be one of "CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG".
+    level: WARNING
+
+###
+# Configure the solver for the type of simulation.
+solver:
+
+  ###
+  # Select the solver type.
+  # Can be one of: "turbine_grid", "flow_field_grid", "flow_field_planar_grid".
+  type: turbine_grid
+
+  ###
+  # Options for the turbine type selected above. See the solver documentation for available parameters.
+  turbine_grid_points: 1
+
+###
+# Configure the turbine types and their placement within the wind farm.
+farm:
+
+  ###
+  # Coordinates for the turbine locations in the x-direction which is typically considered
+  # to be the streamwise direction (left, right) when the wind is out of the west.
+  # The order of the coordinates here corresponds to the index of the turbine in the primary
+  # data structures.
+  layout_x:
+  - 0.0
+  - 630.0
+  - 1260.0
+  - 2000.0
+  - 2200.0
+  - 2400.0
+
+  ###
+  # Coordinates for the turbine locations in the y-direction which is typically considered
+  # to be the spanwise direction (up, down) when the wind is out of the west.
+  # The order of the coordinates here corresponds to the index of the turbine in the primary
+  # data structures.
+  layout_y:
+  - 0.0
+  - 0.0
+  - 0.0
+  - 0.0
+  - 0.0
+  - 0.0
+
+  ###
+  # Listing of turbine types for placement at the x and y coordinates given above.
+  # The list length must be 1 or the same as ``layout_x`` and ``layout_y``. If it is a
+  # single value, all turbines are of the same type. Otherwise, the turbine type
+  # is mapped to the location at the same index in ``layout_x`` and ``layout_y``.
+  # The types can be either a name included in the turbine_library or
+  # a full definition of a wind turbine directly.
+  turbine_type:
+  - nrel_5MW
+
+###
+# Configure the atmospheric conditions.
+flow_field:
+
+  ###
+  # Air density.
+  air_density: 1.225
+
+  ###
+  # The height to consider the "center" of the vertical wind speed profile
+  # due to shear. With a shear exponent not 1, the wind speed at this height
+  # will be the value given in ``wind_speeds``. Above and below this height,
+  # the wind speed will change according to the shear profile; see
+  # :py:meth:`.FlowField.initialize_velocity_field`.
+  # For farms consisting of one wind turbine type, use ``reference_wind_height: -1``
+  # to use the hub height of the wind turbine definition. For multiple wind turbine
+  # types, the reference wind height must be given explicitly.
+  reference_wind_height: -1
+
+  ###
+  # The level of turbulence intensity level in the wind.
+  turbulence_intensity: 0.06
+
+  ###
+  # The wind directions to include in the simulation.
+  # 0 is north and 270 is west.
+  wind_directions:
+  - 270.0
+
+  ###
+  # The exponent used to model the wind shear profile; see
+  # :py:meth:`.FlowField.initialize_velocity_field`.
+  wind_shear: 0.12
+
+  ###
+  # The wind speeds to include in the simulation.
+  wind_speeds:
+  - 8.0
+
+  ###
+  # The wind veer as a constant value for all points in the grid.
+  wind_veer: 0.0
+
+###
+# Configure the wake model.
+wake:
+
+  ###
+  # Select the models to use for the simulation.
+  # See :py:mod:`~.wake` for a list
+  # of available models and their descriptions.
+  model_strings:
+
+    ###
+    # Select the wake combination model.
+    combination_model: sosfs
+
+    ###
+    # Select the wake deflection model.
+    deflection_model: gauss
+
+    ###
+    # Select the wake turbulence model.
+    turbulence_model: crespo_hernandez
+
+    ###
+    # Select the wake velocity deficit model.
+    velocity_model: gauss
+
+  ###
+  # Can be "true" or "false".
+  enable_secondary_steering: true
+
+  ###
+  # Can be "true" or "false".
+  enable_yaw_added_recovery: true
+
+  ###
+  # Can be "true" or "false".
+  enable_transverse_velocities: true
+
+  ###
+  # Configure the parameters for the wake deflection model
+  # selected above.
+  # Additional blocks can be provided for
+  # models that are not enabled, but the enabled model
+  # must have a corresponding parameter block.
+  wake_deflection_parameters:
+    gauss:
+      ad: 0.0
+      alpha: 0.58
+      bd: 0.0
+      beta: 0.077
+      dm: 1.0
+      ka: 0.38
+      kb: 0.004
+    jimenez:
+      ad: 0.0
+      bd: 0.0
+      kd: 0.05
+
+  ###
+  # Configure the parameters for the wake velocity deficit model
+  # selected above.
+  # Additional blocks can be provided for
+  # models that are not enabled, but the enabled model
+  # must have a corresponding parameter block.
+  wake_velocity_parameters:
+    cc:
+      a_s: 0.179367259
+      b_s: 0.0118889215
+      c_s1: 0.0563691592
+      c_s2: 0.13290157
+      a_f: 3.11
+      b_f: -0.68
+      c_f: 2.41
+      alpha_mod: 1.0
+    gauss:
+      alpha: 0.58
+      beta: 0.077
+      ka: 0.38
+      kb: 0.004
+    jensen:
+      we: 0.05
+
+  ###
+  # Configure the parameters for the wake turbulence model
+  # selected above.
+  # Additional blocks can be provided for
+  # models that are not enabled, but the enabled model
+  # must have a corresponding parameter block.
+  wake_turbulence_parameters:
+    crespo_hernandez:
+      initial: 0.1
+      constant: 0.5
+      ai: 0.8
+      downstream: -0.32
diff --git a/tests/greenheart/inputs/hopp_config.yaml b/tests/greenheart/inputs/hopp_config.yaml
new file mode 100644
index 000000000..4956117ea
--- /dev/null
+++ b/tests/greenheart/inputs/hopp_config.yaml
@@ -0,0 +1,47 @@
+site: #!include flatirons_site.yaml
+  data:
+    lat: 27.776985 #
+    lon: -97.267676 #
+    elev: 0
+    year: 2014 #
+    site_boundaries:
+      verts:
+        - [0.0, 0.0]
+        - [0.0, 600.0]
+        - [600.0, 600.0]
+        - [600.0, 0.0]
+    urdb_label: "5ca4d1175457a39b23b3d45e"
+
+  solar_resource_file: ""
+  wind_resource_file: "" #
+  wave_resource_file: ""
+  grid_resource_file: ""
+  hub_height: 110.0 #
+  capacity_hours: []
+  desired_schedule: []
+  solar: false
+  wind: true
+  wave: false
+  wind_resource_origin: "WTK"
+
+technologies:
+  # pv:
+  #   system_capacity_kw: 50000 #
+  #   # dc_degradation: [0] * 25 #
+  wind:
+    num_turbines: 6 #
+    turbine_rating_kw: 5000.0 #
+    model_name: floris #
+    timestep: [0, 8760] #
+    floris_config: "" #
+  # battery:
+  #   system_capacity_kwh: 100 #
+  #   system_capacity_kw: 100 #
+  grid:
+    interconnect_kw: 50000 #
+    ppa_price: 0.01 # 
+
+config:
+  simulation_options:
+    wind:
+      skip_financial: true
\ No newline at end of file
diff --git a/tests/hopp/test_h2_main.py.skip b/tests/greenheart/test_h2_main.py.skip
similarity index 91%
rename from tests/hopp/test_h2_main.py.skip
rename to tests/greenheart/test_h2_main.py.skip
index 1365caa61..d0d3303dd 100644
--- a/tests/hopp/test_h2_main.py.skip
+++ b/tests/greenheart/test_h2_main.py.skip
@@ -2,7 +2,7 @@ import os
 from pathlib import Path
 import pandas as pd
 from pytest import approx
-from hopp.to_organize.H2_Analysis.h2_main import h2_main
+from greenheart.to_organize.H2_Analysis.h2_main import h2_main
 
 class TestH2Main:
     def test_h2_main(self):
diff --git a/tests/hopp/test_h2_optimize_gf.py.skip b/tests/greenheart/test_h2_optimize_gf.py.skip
similarity index 84%
rename from tests/hopp/test_h2_optimize_gf.py.skip
rename to tests/greenheart/test_h2_optimize_gf.py.skip
index a23cbbbe3..852ebd506 100644
--- a/tests/hopp/test_h2_optimize_gf.py.skip
+++ b/tests/greenheart/test_h2_optimize_gf.py.skip
@@ -1,5 +1,5 @@
 import pytest
-from hopp.to_organize.H2_Analysis.h2_optimize_gf import optimize_gf #Not a function in h2_optimize_gf
+from greenheart.to_organize.H2_Analysis.h2_optimize_gf import optimize_gf #Not a function in h2_optimize_gf
 from pathlib import Path
 
 @pytest.mark.skip
diff --git a/tests/hopp/test_hopp_for_h2.py.skip b/tests/greenheart/test_hopp_for_h2.py.skip
similarity index 98%
rename from tests/hopp/test_hopp_for_h2.py.skip
rename to tests/greenheart/test_hopp_for_h2.py.skip
index ff174d3f8..caa1267fb 100644
--- a/tests/hopp/test_hopp_for_h2.py.skip
+++ b/tests/greenheart/test_hopp_for_h2.py.skip
@@ -8,7 +8,7 @@ import pandas as pd
 
 from hopp.tools.resource.resource_tools import *
 from hopp.simulation.technologies.sites import flatirons_site as sample_site
-from hopp.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
+from greenheart.to_organize.H2_Analysis.hopp_for_h2 import hopp_for_h2
 from hopp.simulation.technologies.sites import SiteInfo
 from hopp.utilities.keys import set_developer_nrel_gov_key
 
diff --git a/tests/greenheart/test_hydrogen/input_files/plant/eco_config.yaml b/tests/greenheart/test_hydrogen/input_files/plant/eco_config.yaml
new file mode 100644
index 000000000..d29824153
--- /dev/null
+++ b/tests/greenheart/test_hydrogen/input_files/plant/eco_config.yaml
@@ -0,0 +1,217 @@
+site:
+  mean_windspeed: False 
+project_parameters:
+  grid_connection: False # option, can be turned on or off
+  ppa_price: 0.025 # $/kWh based on 2022 land based wind market report (ERCOT area ppa prices) https://www.energy.gov/sites/default/files/2022-08/land_based_wind_market_report_2202.pdf
+  atb_year: 2022
+finance_parameters:
+  general_inflation: 0.025 # based on 2022 ATB
+  discount_rate: 0.10 # nominal return based on 2022 ATB basline workbook
+  debt_equity_split: 68.5 # 2022 ATB uses 68.5% debt
+  property_tax: 0.01 # percent of CAPEX # combined with property insurance then between H2A and H2FAST defaults
+  property_insurance: 0.005 # percent of CAPEX # combined with property tax then between H2A and H2FAST defaults
+  total_income_tax_rate: 0.257 # 0.257 tax rate in 2022 atb baseline workbook # current federal income tax rate, but proposed 2023 rate is 0.28. No state income tax in Texas
+  capital_gains_tax_rate: 0.15 # H2FAST default
+  sales_tax_rate: 0.0 #Verify that a different rate shouldn't be used # minimum total sales tax rate in Corpus Christi https://www.cctexas.com/detail/corpus-christi-type-fund-purpose - does this apply to H2?
+  debt_interest_rate: 0.06
+  debt_type: "Revolving debt" # can be "Revolving debt" or "One time loan". Revolving debt is H2FAST default and leads to much lower LCOH
+  loan_period: 0 # H2FAST default, not used for revolving debt
+  cash_onhand_months: 1 # H2FAST default
+  administrative_expense_percent_of_sales: 0.00 #Check this # percent of sales H2FAST default
+  depreciation_method: "MACRS" # can be "MACRS" or "Straight line" - MACRS may be better and can reduce LCOH by more than $1/kg and is spec'd in the IRS MACRS schedule https://www.irs.gov/publications/p946#en_US_2020_publink1000107507
+  depreciation_period: 5 # years - as specified by the IRS MACRS schedule https://www.irs.gov/publications/p946#en_US_2020_publink1000107507
+  depreciation_period_electrolyzer: 7 # based on PEM Electrolysis H2A Production Case Study Documentation estimate of 7 years. also see https://www.irs.gov/publications/p946#en_US_2020_publink1000107507
+  discount_years:
+    wind: 2022 # based on turbine capex value provided to ORBIT from 2022 ATB
+    wind_and_electrical: 2022 # for ORBIT opex
+    platform: 2022 # TODO ask Nick and Charlie
+    electrical_export_system: 2022 # also from ORBIT, so match wind assumptions. TODO ask Sophie Bradenkamp
+    desal: 2013 # from code citation: https://www.nrel.gov/docs/fy16osti/66073.pdf
+    electrolyzer: 2020 # 2020 for singlitico2021, 2016 # for simple h2 cost model in hopp (see https://www.hydrogen.energy.gov/pdfs/19009_h2_production_cost_pem_electrolysis_2019.pdf) ## 2020 # based on IRENA report https://www.irena.org/-/media/Files/IRENA/Agency/Publication/2020/Dec/IRENA_Green_hydrogen_cost_2020.pdf
+    h2_transport_compressor: 2016 # listed in code header
+    h2_storage:
+      pressure_vessel: 2022 # based on readme for Compressed_gas_function
+      pipe: 2019 # Papadias 2021
+      salt_cavern: 2019 # Papadias 2021
+      turbine: 2003 # assumed based on Kottenstette 2004
+      none: 2022 # arbitrary
+    h2_pipe_array: 2018 # ANL costs
+    h2_transport_pipeline: 2018 # same model for costs as the h2_pipe_array
+
+electrolyzer:
+  rating: 180 # MW # 0.9*Plant rating appears near-optimal for 400 MW wind plant with 3 days of underground pipe storage # MW
+  electrolyzer_capex: 700 # $/kW conservative 2025 centralized. high 700, low 300 # based on https://www.irena.org/-/media/Files/IRENA/Agency/Publication/2020/Dec/IRENA_Green_hydrogen_cost_2020.pdf
+  time_between_replacement: 62320 # 62320 based on PEM Electrolysis H2A Production Case Study Documentation estimate of 7 years, 40000 based on current est (see unpublished report), 80000 hours based on OSW atb_year = 2025
+  replacement_cost_percent: 0.15 # percent of capex - H2A default case
+  model: "singlitico2021" # "basic" is a basic cost model based on H2a and HFTO program record for PEM electrolysis. "singlitico2021" uses cost estimates from that paper
+  config:
+    general:
+      verbose: False # default
+    electrolyzer:
+      dt: 3600 # 1 default
+      stack:
+          cell_area: 1000.0
+          max_current: 2000
+          temperature: 60
+          n_cells: 100
+          stack_rating_kW: 3400.0
+      control:
+          n_stacks: 6
+          system_rating_MW: 20.4
+          control_type: BaselineDeg
+      costs:
+          plant_params:
+              plant_life: 25 #years (30 from [9])
+              pem_location: onshore #onshore,offshore,in-turbine
+              grid_connected: False
+          feedstock:
+              water_feedstock_cost: 0.0008 #$/kg-H20 (pg 18 Section 4.3 of [4])
+              water_per_kgH2: 10 #kgH20/kgH2 placeholder - should be output from model in future
+          opex:
+              var_OM: 0.0013 #$/kW [2018$/MWh] (Table S25 on page 10 of [1])
+              fixed_OM: 12.8 #$/kW-year      (Table S25 on page 10 of [1])
+          stack_replacement:
+              d_eol: 0.7212 #end of life cell voltage value
+              stack_replacement_percent: 0.15 #% of CapEx ()
+          capex:
+              capex_learning_rate: 0.13 # ([1] Table S19) (Table B.2 [9]) (Exhibit 8 [8])
+              ref_cost_bop: 747 #$/kW #(Appendix E Table A8 [5]) (Table 3 of [2])
+              ref_size_bop: 200 #kW
+              ref_cost_pem: 695 #$/kW (kinda of Figure 5b & Fig 6 of [5]) (Table 6 of [3]) (Slide 12 of [6])
+              ref_size_pem: 2000 #kW
+          finances:
+              discount_rate: 0.05 #(page 3 below Eqn (4) of [7]) (pg 9 near Eqn (23) of [9] has 0.05)
+              install_factor: 0.33 # [%] Install Factor (Table B.2 of [9]) (Section 2.1 of [5])
+
+# h2_transport_compressor:
+#   output_pressure: 100 # bar (1 bar = 100 kPa)
+#   flow_rate: 89 # kg/hr
+#   energy_rating: 802 # kWe (aka 1 kWh)
+#   mean_days_between_failures: 200 # days
+#   useful_life: 15 # was default in compressor script
+#   # annual_h2_throughput: 18750 # [kg/yr] -> kg of H2 per year
+h2_transport_compressor:
+  outlet_pressure: 68 # bar based on HDSAM
+h2_storage_compressor:
+  output_pressure: 100 # bar (1 bar = 100 kPa)
+  flow_rate: 89 # kg/hr
+  energy_rating: 802 # kWe (aka 1 kWh)
+  mean_days_between_failures: 200 # days
+  # annual_h2_throughput: 18750 # [kg/yr] -> kg of H2 per year
+h2_transport_pipe:
+  outlet_pressure: 10 # bar - from example in code from Jamie #TODO check this value
+h2_storage:
+  # capacity_kg: 18750 # kg
+  capacity_from_max_on_turbine_storage: True # if True, then days of storage is ignored and storage capacity is based on how much h2 storage fits on the turbines in the plant using Kottenstete 2003.
+  type: "none" # can be one of ["none", "pipe", "turbine", "pressure_vessel", "salt_cavern"] ### not yet implemented:  ["line_rock_cavern"] #TODO fix salt cavern, just a number right now
+  days: 3 # [days] how many days worth of production we should be able to store (this is ignored if `capacity_from_max_on_turbine_storage` is set to True)
+# platform:
+#   opex_rate: 0.0111 # % of capex to determine opex (see table 5 in https://www.acm.nl/sites/default/files/documents/study-on-estimation-method-for-additional-efficient-offshore-grid-opex.pdf)
+#   installation_days: 14 # days
+#   site:
+#     depth: -1
+#     distance: -1
+#   equipment:
+#     tech_combined_mass: -1
+#     tech_required_area: -1
+platform:
+  opex_rate: 0.0111 # % of capex to determine opex (see table 5 in https://www.acm.nl/sites/default/files/documents/study-on-estimation-method-for-additional-efficient-offshore-grid-opex.pdf)
+  # Modified orbit configuration file for a single platform to carry "X technology"
+  design_phases:
+  - FixedPlatformDesign             # Register Design Phase
+  install_phases:
+    FixedPlatformInstallation: 0    # Register Install Phase
+  oss_install_vessel: example_heavy_lift_vessel
+  site:
+    depth: -1     # site depth [m] (if -1, then will use the full plant depth)
+    distance: -1   # distance to port [km] (if -1, then will use the full plant distance)
+  equipment:
+    tech_required_area: -1.    # equipment area [m**2] (-1 will require the input during run)
+    tech_combined_mass: -1    # equipment mass [t] (-1 will require the input during run)
+    topside_design_cost: 4500000       # topside design cost [USD]
+    installation_duration: 14         # time at sea [days]
+
+policy_parameters: # these should be adjusted for inflation prior to application - order of operations: rate in 1992 $,
+#then prevailing wage multiplier if applicable, then inflation
+  option1: # base # no policy included ---> see files/task1/regulation and policy revue/ page 4 of 13 middle - read this
+  # and look at assumptions
+    wind_itc: 0
+    wind_ptc: 0
+    h2_ptc: 0
+  option2: # base credit levels with H2
+    wind_itc: 0
+    wind_ptc: 0.003 # $0.003/kW (this is base, see inflation adjustment in option 3)
+    h2_ptc: 0.6 # $0.60/kg h2 produced - assumes net zero but not meeting prevailing wage requirements - does this need to be
+    # adjusted for inflation from 2022 dollars to claim date, probably constant after claim date?
+  option3: # same as option 5, but assuming prevailing wages are met --> 5x multiplier on both PTCs
+    wind_itc: 0
+    wind_ptc: 0.015 # $/kWh 1992 dollars
+    h2_ptc: 3.00 # $/kg 2022 dollars - do not adjust for inflation
+  # bonus options, option 5 and 6 but ITC equivalents
+  option4: # prevailing wages not met
+    wind_itc: 0.06 # %/100 capex
+    wind_ptc: 0.00 # $/kW 1992 dollars
+    h2_ptc: 0.6 # $0.60/kg produced 2022 dollars - assumes net zero but not meeting prevailing wage requirements - does this need to be
+    # do not adjust for inflation, probably constant after claim date?
+  option5: # prevailing wages met
+    wind_itc: 0.30 # %/100 capex
+    wind_ptc: 0.0 # $/kWh 1992 dollars
+    h2_ptc: 3.00 # $/kg of h2 produced 2022 dollars - do adjust for inflation every year applied and until application year
+  option6: # assumes prevailing wages are met, and includes 10% bonus credit of domestic content (100% of steel and iron
+  # and mfg. components from the US)
+    wind_itc: 0.40 # %/100 capex
+    wind_ptc: 0.0 # $/kWh 1992 dollars
+    h2_ptc: 3.00 # $/kg of h2 produced 2022 dollars - do adjust for inflation every year applied and until application year
+  option7: # assumes prevailing wages are met, and includes 10% bonus credit of domestic content (100% of steel and iron
+  # and mfg. components from the US)
+    wind_itc: 0.0 # %/100 capex
+    wind_ptc: 0.0165 # $/kWh 1992 dollars (0.015*1.1)
+    h2_ptc: 3.00 # $/kg of h2 produced 2022 dollars - do adjust for inflation every year applied and until application year
+  # you can elect itc_for_h2 in leu of the h2_ptc - this choice is independent of the other tech credit selections
+    # 6% or %50 for itc_for_h2
+
+plant_design:
+  scenario0:
+    electrolyzer_location: "platform" # can be one of ["onshore", "turbine", "platform"]
+    transportation: "pipeline" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
+    h2_storage_location: "platform" # can be one of ["onshore", "turbine", "platform"]
+  scenario1:
+    electrolyzer_location: "onshore" # can be one of ["onshore", "turbine", "platform"]
+    transportation: "hvdc" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
+    h2_storage_location: "onshore" # can be one of ["onshore", "turbine", "platform"]
+  scenario2:
+    electrolyzer_location: "onshore" # can be one of ["onshore", "turbine", "platform"]
+    transportation: "hvdc" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
+    h2_storage_location: "platform" # can be one of ["onshore", "turbine", "platform"]
+  scenario3:
+    electrolyzer_location: "turbine" # can be one of ["onshore", "turbine", "platform"]
+    transportation: "none" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
+    h2_storage_location: "turbine" # can be one of ["onshore", "turbine", "platform"]
+  scenario4:
+    electrolyzer_location: "turbine" # can be one of ["onshore", "turbine", "platform"]
+    transportation: "none" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
+    h2_storage_location: "platform" # can be one of ["onshore", "turbine", "platform"]
+  scenario5:
+    electrolyzer_location: "turbine" # can be one of ["onshore", "turbine", "platform"]
+    transportation: "pipeline" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
+    h2_storage_location: "onshore" # can be one of ["onshore", "turbine", "platform"]
+  scenario6:
+    electrolyzer_location: "platform" # can be one of ["onshore", "turbine", "platform"]
+    transportation: "none" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
+    h2_storage_location: "platform" # can be one of ["onshore", "turbine", "platform"]
+  scenario7:
+    electrolyzer_location: "platform" # can be one of ["onshore", "turbine", "platform"]
+    transportation: "pipeline" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
+    h2_storage_location: "onshore" # can be one of ["onshore", "turbine", "platform"]
+  scenario8:
+    electrolyzer_location: "platform" # can be one of ["onshore", "turbine", "platform"]
+    transportation: "hvdc+pipeline" # can be one of ["hvdc", "pipeline", "none", hvdc+pipeline]
+    h2_storage_location: "onshore" # can be one of ["onshore", "turbine", "platform"]
+# design A -> scenario 1
+    # onshore electrolysis
+    # HVDC transport, HVDC_2000mm_320kV
+    # no storage
+# design B -> scenario 7
+    # electrolysis on platform
+    # pipe transport to shore
+    # no storage
diff --git a/tests/greenheart/test_hydrogen/input_files/plant/hopp_config.yaml b/tests/greenheart/test_hydrogen/input_files/plant/hopp_config.yaml
new file mode 100644
index 000000000..bf289c5f2
--- /dev/null
+++ b/tests/greenheart/test_hydrogen/input_files/plant/hopp_config.yaml
@@ -0,0 +1,45 @@
+site: #!include flatirons_site.yaml
+  data:
+    lat: 27.18624
+    lon: -96.9516
+    elev: 0
+    year: 2013
+    site_boundaries: 
+      verts:  
+        - [0.0, 0.0]
+        - [0.0, 2000.0]
+        - [2000.0, 2000.0]
+        - [2000.0, 0.0] 
+      verts_simple: 
+        - [0.0, 0.0]
+        - [0.0, 2000.0]
+        - [2000.0, 2000.0]
+        - [2000.0, 0.0]
+  solar_resource_file: ""
+  wind_resource_file: ""
+  wave_resource_file: ""
+  grid_resource_file: ""
+  hub_height: 161.0
+  capacity_hours: []
+  desired_schedule: []
+  follow_desired_schedule: ""
+  solar: false
+  wind: true
+  wave: false
+  wind_resource_origin: "WTK"
+  
+
+technologies:
+  wind:
+    num_turbines: 10
+    turbine_rating_kw: 18000.0
+    model_name: floris
+    timestep: [0, 8760]
+    floris_config: input_files/floris/floris_input_osw_18MW.yaml
+  grid:
+    interconnect_kw: 180000
+
+config:
+  simulation_options:
+    wind:
+      skip_financial: true
\ No newline at end of file
diff --git a/tests/greenheart/test_hydrogen/input_files/plant/orbit-config-osw_18MW-stripped.yaml b/tests/greenheart/test_hydrogen/input_files/plant/orbit-config-osw_18MW-stripped.yaml
new file mode 100644
index 000000000..8abb29767
--- /dev/null
+++ b/tests/greenheart/test_hydrogen/input_files/plant/orbit-config-osw_18MW-stripped.yaml
@@ -0,0 +1,68 @@
+turbine: "osw_18MW"
+atb_year: 2025 # as per discussions of operational by 2027. This also makes the estimates a little more conservative
+cost_year: 2022 # to match ATB
+installation_availability: 0.7 # 30% downtime during installation to match ORCA
+site:
+  area: 142 # km^2
+  depth: 45 # m
+  distance: 80 # km
+  distance_to_landfall: 85 # km
+  mean_windspeed: False #8.45863584474886 # required input for ORBIT, provide desired mean wind speed or set to False to give ORBIT the mean wind speed from the lat/lon selection
+plant:
+  capacity: 180 # MW
+  layout: grid
+  num_turbines: 10 # needs to be changed based on turbine model
+  row_spacing: 7 # rotor diameters # based on rule of thumb of 7D
+  substation_distance: 1 # from ORBIT/examples/configs/example_fixed_project.yaml
+  turbine_spacing: 7 # rotor diameters # original 10
+landfall:
+  interconnection_distance: 5 # km
+  trench_length: 4 # km
+port:
+  monthly_rate: 2000000.0 # USD
+  sub_assembly_lines: 1
+  turbine_assembly_cranes: 1
+# Vessels
+array_cable_install_vessel: example_cable_lay_vessel # from ORBIT/examples/configs/example_fixed_project.yaml
+export_cable_install_vessel: example_cable_lay_vessel # from ORBIT/examples/configs/example_fixed_project.yaml
+export_cable_bury_vessel: example_cable_lay_vessel # from ORBIT/examples/configs/example_fixed_project.yaml
+oss_install_vessel: example_heavy_lift_vessel # from ORBIT/examples/configs/example_fixed_project.yaml
+spi_vessel: example_scour_protection_vessel # from ORBIT/examples/configs/example_fixed_project.yaml
+wtiv: example_wtiv # from ORBIT/examples/configs/example_fixed_project.yaml
+# Module Specific
+OffshoreSubstationInstallation:
+  feeder: example_heavy_feeder # from ORBIT/examples/configs/example_fixed_project.yaml
+  num_feeders: 1 # from ORBIT/examples/configs/example_fixed_project.yaml
+array_system_design:
+  cables:
+  - XLPE_630mm_66kV
+export_system_design:
+  cables: HVDC_2000mm_320kV
+  percent_added_length: 0.0
+scour_protection_design:
+  cost_per_tonne: 40
+  scour_protection_depth: 1 # ORBIT default
+MonopileDesign:
+  monopile_steel_cost: 2250 #OSW
+  tp_steel_cost: 3230 #OSW
+# Configured Phases
+design_phases:
+- ArraySystemDesign # from ORBIT/examples/configs/example_fixed_project.yaml
+- MonopileDesign # from ORBIT/examples/configs/example_fixed_project.yaml
+- ScourProtectionDesign # from ORBIT/examples/configs/example_fixed_project.yaml
+- ElectricalDesign # new addition from Sophie Bradenkamp combined ExportSystemDesign and OffshoreSubstationDesign phases
+install_phases: # these are hours into installation
+  ArrayCableInstallation: 0 # from ORBIT/examples/configs/example_fixed_project.yaml
+  ExportCableInstallation: 2000 # from ORBIT/examples/configs/example_fixed_project.yaml
+  MonopileInstallation: 0 # from ORBIT/examples/configs/example_fixed_project.yaml
+  # JacketInstallation: 0 # Jacket not ready yet in ORBIT
+  OffshoreSubstationInstallation: 0 # from ORBIT/examples/configs/example_fixed_project.yaml
+  ScourProtectionInstallation: 0 # from ORBIT/examples/configs/example_fixed_project.yaml
+  TurbineInstallation: 0 # from ORBIT/examples/configs/example_fixed_project.yaml
+# Wind Project Inputs
+project_parameters:
+  turbine_capex: 1300 # $USD turbine CAPEX only as per 2022 ATB https://atb.nrel.gov/electricity/2022/offshore_wind
+  opex_rate: 97 # $USD/kW/yr ATB 2022, OpEx based on R&D assumptions with a base year of 2022.
+  commissioning: 0.01 # ORBIT default
+  decommissioning: 0.15 # ORBIT default
+  project_lifetime: 30 # 2022 ATB capital recovery period for offshore wind
\ No newline at end of file
diff --git a/tests/hopp/test_hydrogen/test_PEM_costs_Singlitico_model.py b/tests/greenheart/test_hydrogen/test_PEM_costs_Singlitico_model.py
similarity index 94%
rename from tests/hopp/test_hydrogen/test_PEM_costs_Singlitico_model.py
rename to tests/greenheart/test_hydrogen/test_PEM_costs_Singlitico_model.py
index a3c703e15..082b7c8d0 100644
--- a/tests/hopp/test_hydrogen/test_PEM_costs_Singlitico_model.py
+++ b/tests/greenheart/test_hydrogen/test_PEM_costs_Singlitico_model.py
@@ -1,4 +1,4 @@
-from hopp.simulation.technologies.hydrogen.electrolysis.PEM_costs_Singlitico_model import PEMCostsSingliticoModel
+from greenheart.simulation.technologies.hydrogen.electrolysis.PEM_costs_Singlitico_model import PEMCostsSingliticoModel
 from pytest import approx
 import numpy as np
 
diff --git a/tests/hopp/test_hydrogen/test_RO_desal.py b/tests/greenheart/test_hydrogen/test_RO_desal.py
similarity index 96%
rename from tests/hopp/test_hydrogen/test_RO_desal.py
rename to tests/greenheart/test_hydrogen/test_RO_desal.py
index a384a74b5..696f41af3 100644
--- a/tests/hopp/test_hydrogen/test_RO_desal.py
+++ b/tests/greenheart/test_hydrogen/test_RO_desal.py
@@ -1,6 +1,6 @@
 from pytest import approx
 
-from hopp.simulation.technologies.hydrogen.desal.desal_model_eco import RO_desal_eco
+from greenheart.simulation.technologies.hydrogen.desal.desal_model_eco import RO_desal_eco
 
 # Test values are based on hand calculations
 
diff --git a/tests/hopp/test_hydrogen/test_basic_h2_cost.py b/tests/greenheart/test_hydrogen/test_basic_h2_cost.py
similarity index 97%
rename from tests/hopp/test_hydrogen/test_basic_h2_cost.py
rename to tests/greenheart/test_hydrogen/test_basic_h2_cost.py
index a2dfd5ceb..d4b4803ea 100644
--- a/tests/hopp/test_hydrogen/test_basic_h2_cost.py
+++ b/tests/greenheart/test_hydrogen/test_basic_h2_cost.py
@@ -1,4 +1,4 @@
-from hopp.simulation.technologies.hydrogen.electrolysis.H2_cost_model import basic_H2_cost_model
+from greenheart.simulation.technologies.hydrogen.electrolysis.H2_cost_model import basic_H2_cost_model
 from pytest import approx
 import numpy as np
 
diff --git a/tests/hopp/test_hydrogen/test_h2_transport/test_h2_compressor.py b/tests/greenheart/test_hydrogen/test_h2_transport/test_h2_compressor.py
similarity index 96%
rename from tests/hopp/test_hydrogen/test_h2_transport/test_h2_compressor.py
rename to tests/greenheart/test_hydrogen/test_h2_transport/test_h2_compressor.py
index ae9f71d43..dbf423e3c 100644
--- a/tests/hopp/test_hydrogen/test_h2_transport/test_h2_compressor.py
+++ b/tests/greenheart/test_hydrogen/test_h2_transport/test_h2_compressor.py
@@ -1,4 +1,4 @@
-from hopp.simulation.technologies.hydrogen.h2_transport.h2_compression import Compressor
+from greenheart.simulation.technologies.hydrogen.h2_transport.h2_compression import Compressor
 from pytest import approx, raises
 
 # test that we get the results we got when the code was received
diff --git a/tests/hopp/test_hydrogen/test_h2_transport/test_h2_export_pipeline.py b/tests/greenheart/test_hydrogen/test_h2_transport/test_h2_export_pipeline.py
similarity index 95%
rename from tests/hopp/test_hydrogen/test_h2_transport/test_h2_export_pipeline.py
rename to tests/greenheart/test_hydrogen/test_h2_transport/test_h2_export_pipeline.py
index 6610f6cbe..58229eaf9 100644
--- a/tests/hopp/test_hydrogen/test_h2_transport/test_h2_export_pipeline.py
+++ b/tests/greenheart/test_hydrogen/test_h2_transport/test_h2_export_pipeline.py
@@ -1,4 +1,4 @@
-from hopp.simulation.technologies.hydrogen.h2_transport.h2_export_pipe import run_pipe_analysis
+from greenheart.simulation.technologies.hydrogen.h2_transport.h2_export_pipe import run_pipe_analysis
 from pytest import approx
 
 # test that we the results we got when the code was recieved
diff --git a/tests/hopp/test_hydrogen/test_h2_transport/test_h2_pipe_array.py b/tests/greenheart/test_hydrogen/test_h2_transport/test_h2_pipe_array.py
similarity index 94%
rename from tests/hopp/test_hydrogen/test_h2_transport/test_h2_pipe_array.py
rename to tests/greenheart/test_hydrogen/test_h2_transport/test_h2_pipe_array.py
index 5bc2f8e0d..cf53cbe12 100644
--- a/tests/hopp/test_hydrogen/test_h2_transport/test_h2_pipe_array.py
+++ b/tests/greenheart/test_hydrogen/test_h2_transport/test_h2_pipe_array.py
@@ -1,4 +1,4 @@
-from hopp.simulation.technologies.hydrogen.h2_transport.h2_pipe_array import run_pipe_array, run_pipe_array_const_diam
+from greenheart.simulation.technologies.hydrogen.h2_transport.h2_pipe_array import run_pipe_array, run_pipe_array_const_diam
 from pytest import approx
 
 # test that we the results we got when the code was recieved
diff --git a/tests/hopp/test_hydrogen/test_lined_rock_storage.py b/tests/greenheart/test_hydrogen/test_lined_rock_storage.py
similarity index 93%
rename from tests/hopp/test_hydrogen/test_lined_rock_storage.py
rename to tests/greenheart/test_hydrogen/test_lined_rock_storage.py
index 91d8ccd57..cdef48e67 100644
--- a/tests/hopp/test_hydrogen/test_lined_rock_storage.py
+++ b/tests/greenheart/test_hydrogen/test_lined_rock_storage.py
@@ -1,7 +1,7 @@
 import pytest
 from pytest import fixture
 
-from hopp.simulation.technologies.hydrogen.h2_storage.lined_rock_cavern.lined_rock_cavern import LinedRockCavernStorage
+from greenheart.simulation.technologies.hydrogen.h2_storage.lined_rock_cavern.lined_rock_cavern import LinedRockCavernStorage
 
 # Test values are based on conclusions of Papadias 2021 and are in 2019 USD
 in_dict = {
diff --git a/tests/hopp/test_hydrogen/test_pem_mass_and_footprint.py b/tests/greenheart/test_hydrogen/test_pem_mass_and_footprint.py
similarity index 67%
rename from tests/hopp/test_hydrogen/test_pem_mass_and_footprint.py
rename to tests/greenheart/test_hydrogen/test_pem_mass_and_footprint.py
index b827c296e..0cf9c40eb 100644
--- a/tests/hopp/test_hydrogen/test_pem_mass_and_footprint.py
+++ b/tests/greenheart/test_hydrogen/test_pem_mass_and_footprint.py
@@ -1,7 +1,7 @@
 import pytest
 import os
 
-from hopp.simulation.technologies.hydrogen.electrolysis.pem_mass_and_footprint import mass, footprint
+from greenheart.simulation.technologies.hydrogen.electrolysis.pem_mass_and_footprint import mass, footprint
 
 
 def test_footprint_0mw():
diff --git a/tests/hopp/test_hydrogen/test_pressure_vessel.py b/tests/greenheart/test_hydrogen/test_pressure_vessel.py
similarity index 98%
rename from tests/hopp/test_hydrogen/test_pressure_vessel.py
rename to tests/greenheart/test_hydrogen/test_pressure_vessel.py
index 3703cf5ab..bd4eb5433 100644
--- a/tests/hopp/test_hydrogen/test_pressure_vessel.py
+++ b/tests/greenheart/test_hydrogen/test_pressure_vessel.py
@@ -1,4 +1,4 @@
-from hopp.simulation.technologies.hydrogen.h2_storage.pressure_vessel.compressed_gas_storage_model_20221021.Compressed_all import PressureVessel
+from greenheart.simulation.technologies.hydrogen.h2_storage.pressure_vessel.compressed_gas_storage_model_20221021.Compressed_all import PressureVessel
 from pytest import approx
 import numpy as np
 
diff --git a/tests/hopp/test_hydrogen/test_pressurized_turbine.py b/tests/greenheart/test_hydrogen/test_pressurized_turbine.py
similarity index 99%
rename from tests/hopp/test_hydrogen/test_pressurized_turbine.py
rename to tests/greenheart/test_hydrogen/test_pressurized_turbine.py
index 9aade7533..4cc9f93f8 100644
--- a/tests/hopp/test_hydrogen/test_pressurized_turbine.py
+++ b/tests/greenheart/test_hydrogen/test_pressurized_turbine.py
@@ -1,5 +1,5 @@
 
-from hopp.simulation.technologies.hydrogen.h2_storage.on_turbine.on_turbine_hydrogen_storage import PressurizedTower
+from greenheart.simulation.technologies.hydrogen.h2_storage.on_turbine.on_turbine_hydrogen_storage import PressurizedTower
 from pytest import approx
 import numpy as np
 
diff --git a/tests/hopp/test_hydrogen/test_salt_cavern_storage.py b/tests/greenheart/test_hydrogen/test_salt_cavern_storage.py
similarity index 94%
rename from tests/hopp/test_hydrogen/test_salt_cavern_storage.py
rename to tests/greenheart/test_hydrogen/test_salt_cavern_storage.py
index a6ae73c42..34d842aa7 100644
--- a/tests/hopp/test_hydrogen/test_salt_cavern_storage.py
+++ b/tests/greenheart/test_hydrogen/test_salt_cavern_storage.py
@@ -1,7 +1,7 @@
 import pytest
 from pytest import fixture
 
-from hopp.simulation.technologies.hydrogen.h2_storage.salt_cavern.salt_cavern import SaltCavernStorage
+from greenheart.simulation.technologies.hydrogen.h2_storage.salt_cavern.salt_cavern import SaltCavernStorage
 
 # Test values are based on conclusions of Papadias 2021 and are in 2019 USD
 in_dict = {
diff --git a/tests/hopp/test_hydrogen/test_tankinator.py b/tests/greenheart/test_hydrogen/test_tankinator.py
similarity index 98%
rename from tests/hopp/test_hydrogen/test_tankinator.py
rename to tests/greenheart/test_hydrogen/test_tankinator.py
index 48f789600..9e9f2e8cd 100644
--- a/tests/hopp/test_hydrogen/test_tankinator.py
+++ b/tests/greenheart/test_hydrogen/test_tankinator.py
@@ -1,6 +1,6 @@
 
-from hopp.simulation.technologies.hydrogen.h2_storage.pressure_vessel.tankinator import Tank, TypeITank, TypeIIITank, TypeIVTank
-from hopp.simulation.technologies.hydrogen.h2_storage.pressure_vessel import von_mises
+from greenheart.simulation.technologies.hydrogen.h2_storage.pressure_vessel.tankinator import Tank, TypeITank, TypeIIITank, TypeIVTank
+from greenheart.simulation.technologies.hydrogen.h2_storage.pressure_vessel import von_mises
 import pytest
 import numpy as np
 
diff --git a/tests/hopp/test_hydrogen/test_underground_pipe_storage.py b/tests/greenheart/test_hydrogen/test_underground_pipe_storage.py
similarity index 92%
rename from tests/hopp/test_hydrogen/test_underground_pipe_storage.py
rename to tests/greenheart/test_hydrogen/test_underground_pipe_storage.py
index 4e133b567..e5aece1f8 100644
--- a/tests/hopp/test_hydrogen/test_underground_pipe_storage.py
+++ b/tests/greenheart/test_hydrogen/test_underground_pipe_storage.py
@@ -1,7 +1,7 @@
 import pytest
 from pytest import fixture
 
-from hopp.simulation.technologies.hydrogen.h2_storage.pipe_storage.underground_pipe_storage import UndergroundPipeStorage
+from greenheart.simulation.technologies.hydrogen.h2_storage.pipe_storage.underground_pipe_storage import UndergroundPipeStorage
 
 # Test values are based on conclusions of Papadias 2021 and are in 2019 USD
 
diff --git a/tests/greenheart/test_offshore/__init__.py b/tests/greenheart/test_offshore/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/tests/hopp/test_offshore/test_fixed_platform.py b/tests/greenheart/test_offshore/test_fixed_platform.py
similarity index 87%
rename from tests/hopp/test_offshore/test_fixed_platform.py
rename to tests/greenheart/test_offshore/test_fixed_platform.py
index 7cdf50734..f0d982674 100644
--- a/tests/hopp/test_offshore/test_fixed_platform.py
+++ b/tests/greenheart/test_offshore/test_fixed_platform.py
@@ -3,7 +3,7 @@
 from pathlib import Path
 
 import ORBIT as orbit
-from hopp.simulation.technologies.offshore.fixed_platform import install_platform, calc_platform_opex, calc_substructure_mass_and_cost
+from greenheart.simulation.technologies.offshore.fixed_platform import install_platform, calc_platform_opex, calc_substructure_mass_and_cost
 
 '''Sources:
     - [1]  M. Maness, B. Maples and A. Smith, "NREL Offshore Balance-of-System Model," National Renewable Energy Laboratory, 2017. https://www.nrel.gov/docs/fy17osti/66874.pdf
@@ -11,7 +11,7 @@
 @pytest.mark.skip(reason="no way of currently testing this")
 @pytest.fixture
 def config():
-    offshore_path = Path(__file__).parents[3] / "hopp" / "simulation" / "technologies" / "offshore"
+    offshore_path = Path(__file__).parents[3] / "greenheart" / "simulation" / "technologies" / "offshore"
 
     return orbit.load_config(os.path.join(offshore_path, "example_fixed_project.yaml"))
 @pytest.mark.skip(reason="no way of currently testing this")
diff --git a/tests/hopp/test_offshore/test_floating_platform.py b/tests/greenheart/test_offshore/test_floating_platform.py
similarity index 87%
rename from tests/hopp/test_offshore/test_floating_platform.py
rename to tests/greenheart/test_offshore/test_floating_platform.py
index 28207ba3f..790e23cb8 100644
--- a/tests/hopp/test_offshore/test_floating_platform.py
+++ b/tests/greenheart/test_offshore/test_floating_platform.py
@@ -3,7 +3,7 @@
 from pathlib import Path
 
 import ORBIT as orbit
-from hopp.simulation.technologies.offshore.floating_platform import install_platform, calc_platform_opex, calc_substructure_mass_and_cost, DesignPhase, InstallPhase
+from greenheart.simulation.technologies.offshore.floating_platform import install_platform, calc_platform_opex, calc_substructure_mass_and_cost, DesignPhase, InstallPhase
 
 '''Sources:
     - [1] M. Maness, B. Maples and A. Smith, "NREL Offshore Balance-of-System Model," National Renewable Energy Laboratory, 2017. https://www.nrel.gov/docs/fy17osti/66874.pdf
@@ -12,7 +12,7 @@
 @pytest.fixture
 def config():
 
-    offshore_path = Path(__file__).parents[3] / "hopp" / "simulation" / "technologies" / "offshore"
+    offshore_path = Path(__file__).parents[3] / "greenheart" / "simulation" / "technologies" / "offshore"
 
     return orbit.load_config(os.path.join(offshore_path, "example_floating_project.yaml"))
 
diff --git a/tests/greenheart/test_openmdao.py b/tests/greenheart/test_openmdao.py
new file mode 100644
index 000000000..53e172eb4
--- /dev/null
+++ b/tests/greenheart/test_openmdao.py
@@ -0,0 +1,78 @@
+from greenheart.tools.optimization.openmdao import HOPPComponent, TurbineDistanceComponent, BoundaryDistanceComponent
+import openmdao.api as om
+from hopp.simulation.hopp_interface import HoppInterface
+from hopp.utilities import load_yaml
+from pytest import approx, raises
+from pathlib import Path
+import numpy as np
+
+solar_resource_file = Path(__file__).absolute().parent.parent.parent / "resource_files" / "solar" / "35.2018863_-101.945027_psmv3_60_2012.csv"
+wind_resource_file = Path(__file__).absolute().parent.parent.parent / "resource_files" / "wind" / "35.2018863_-101.945027_windtoolkit_2012_60min_80m_100m.srw"
+floris_input_file = Path(__file__).absolute().parent / "inputs" / "floris_input.yaml"
+hopp_config_filename = Path(__file__).absolute().parent / "inputs" / "hopp_config.yaml"
+
+class TestBoundaryDistanceComponent():
+
+    turbine_x = np.array([2.0, 4.0, 6.0, 2.0, 4.0, 6.0])*100.0
+    turbine_y = np.array([2.0, 2.0, 2.0, 4.0, 4.0, 4.0])*100.0
+    
+    config_dict = load_yaml(hopp_config_filename)
+    config_dict["site"]["solar_resource_file"] = solar_resource_file
+    config_dict["site"]["wind_resource_file"] = wind_resource_file
+    config_dict["technologies"]["wind"]["floris_config"] = floris_input_file
+    hi = HoppInterface(config_dict)
+
+    model = om.Group()
+
+    model.add_subsystem('boundary_constraint', BoundaryDistanceComponent(hopp_interface=hi, turbine_x_init=turbine_x, turbine_y_init=turbine_y), promotes=["*"])
+
+    prob = om.Problem(model)
+    prob.setup()
+
+    prob.run_model()
+    
+    def test_distance_inside(self):
+        
+        assert self.prob["boundary_distance_vec"][0] == 200.0
+
+    # def test_derivative_inside(self):
+
+        
+    #     assert total_capex == 680590.3412708649
+    
+    def test_distance_outside(self):
+
+        self.prob.set_val('boundary_constraint.turbine_x', np.array([-2.0, 4.0, 6.0, 2.0, 4.0, 6.0])*100.0)
+        self.prob.set_val('boundary_constraint.turbine_y', np.array([2.0, 2.0, 2.0, 4.0, 4.0, 4.0])*100.0)
+        self.prob.run_model()
+        
+        assert self.prob["boundary_distance_vec"][0] == -200.0
+
+    # def test_derivative_outside(self):
+        
+    #     assert total_capex == 680590.3412708649
+
+class TestTurbineDistanceComponent():
+
+    turbine_x = np.array([2.0, 4.0, 6.0])*100.0
+    turbine_y = np.array([2.0, 2.0, 4.0])*100.0
+
+    model = om.Group()
+
+    model.add_subsystem('boundary_constraint', TurbineDistanceComponent(turbine_x_init=turbine_x, turbine_y_init=turbine_y), promotes=["*"])
+
+    prob = om.Problem(model)
+    prob.setup()
+
+    prob.run_model()
+    
+    def test_distance_between_turbines(self, subtests):
+        expected_distances = np.array([200.0, np.sqrt(400**2 + 200**2), np.sqrt(2*200**2)])
+        for i in range(len(self.turbine_x)):
+            with subtests.test(f"for element {i}"):
+                assert self.prob["spacing_vec"][i] == expected_distances[i]
+
+    # def test_derivative_inside(self):
+
+        
+    #     assert total_capex == 680590.3412708649