diff --git a/CHANGELOG.md b/CHANGELOG.md index 45b2a0be..3203f18d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,22 +1,7 @@ (changelog)= # Changelog -## Unreleased - -- The existing documentation has been converted from a Sphinx-based setup to a Jupyter Book v1 build - to create more easily modifiable documentation components and integrate better code examples - directly into the documentation site. -- The `save_config` function is now compatible with the `ProjectManager.config` object, allowing - for direct saving without user modification. -- Adds a contributor's guide to clearly delineate how to install and use the various developer's - tools. -- Modernize and streamline the installation instructions. -- Converts all the materials found in `examples/` to either tutorials or topical guides in the - documentation. -- Adds a documentation build shell script to help automatically clean existing documentation site - materials, build the documentation, copy over the output example Jupyter Notebooks to `examples/`, - and run the pre-commit workflow for basic file handling. -- Places the ORBIT tech report citation more prominently throughout the repository and documentation. +## 1.3 ### Bug Fixes @@ -29,11 +14,28 @@ - Project parameter `contingency` is fully deprecated in favor of `installation_contingency` and `procurement_contingency` and will raise a `KeyError` when detected by the `ProjectManager`. -- Top-level `landfall` dictionary is no longer suppored and is fully deprecated in favor of nesting +- Top-level `landfall` dictionary is no longer supported and is fully deprecated in favor of nesting it in the `export_system_design` and `export_system` dictionary, for design and installation phases. - The `export_system`-level `interconnection_distance` variable is deprecated and should now be placed in the `export_system.landfall` dictionary. +### Miscellaneous Updates and Improvements + +- The existing documentation has been converted from a Sphinx-based setup to a Jupyter Book v1 build + to create more easily modifiable documentation components and integrate better code examples + directly into the documentation site. +- The `save_config` function is now compatible with the `ProjectManager.config` object, allowing + for direct saving without user modification. +- Adds a contributor's guide to clearly delineate how to install and use the various developer's + tools. +- Modernize and streamline the installation instructions. +- Converts all the materials found in `examples/` to either tutorials or topical guides in the + documentation. +- Adds a documentation build shell script to help automatically clean existing documentation site + materials, build the documentation, copy over the output example Jupyter Notebooks to `examples/`, + and run the pre-commit workflow for basic file handling. +- Places the ORBIT tech report citation more prominently throughout the repository and documentation. + ## 1.2.6 - Implements `create_layout_df` for the `CustomArraySystemDesign` model to ensure @@ -157,7 +159,7 @@ - Fixed the output substructure type from Monopile to Floating. (use `oss_substructure_type`) - Removes any pile or fixed-bottom substructure geometry. - See `Example 5. Example Floating Project` for more details. -- Updated `MoredSubInstallation`: +- Updated `MooredSubInstallation`: - Uses an AHTS vessel which must be added to project config file. - See `example/example_floating_project.yaml` (use `ahts_vessel`) - New `22MW_generic.yaml` turbine. @@ -259,7 +261,7 @@ - Refactored aggregation project level outputs in `ProjectManager`. - Revised Net Present Value calculation to utilize new project outputs. - Added `load_config` and `save_config` functions. -- Moved `ORBIT.library` to `OBRIT.core.library`. +- Moved `ORBIT.library` to `ORBIT.core.library`. - Centralized model defaults to `ORBIT.core.defaults`. - `ProjectManager.project_actions` renamed to `ProjectManager.actions` - `ProjectManager.project_logs` renamed to `ProjectManager.logs` @@ -295,8 +297,8 @@ ## 0.4.2 - New feature: Phase dependencies in `ProjectManager`. -- New feature: Windspeed constraints at multiple heights, including automatic - interpolation/extrapolation of configured windspeed profiles. +- New feature: Wind speed constraints at multiple heights, including automatic + interpolation/extrapolation of configured wind speed profiles. - Added option to define `mobilization_days` and `mobilization_mult` in a `Vessel` configuration file. - Added option for pre-installation trenching operations to @@ -319,7 +321,7 @@ - Vessel mobilization added to all vessels in all installation modules. Defaults to 7 days at 50% day-rate. -- Cable lay, bury and simulataneous lay/bury methods are not flagged as +- Cable lay, bury and simultaneous lay/bury methods are not flagged as suspendable to avoid unrealistic project delays. - Cost of onshore transmission construction added to `ExportCableInstallation`. @@ -353,7 +355,7 @@ ## 0.3.3 - Added configuration for multiple tower sections in `TurbineInstallation`. -- Added configuration for seperate lay/burial in `ArrayCableInstallation` and +- Added configuration for separate lay/burial in `ArrayCableInstallation` and `ExportCableInstallation`. - Overhauled test suite and associated library. - Bugfix in `CableCarousel`. diff --git a/ORBIT/__init__.py b/ORBIT/__init__.py index b6cdf96e..60dbafad 100644 --- a/ORBIT/__init__.py +++ b/ORBIT/__init__.py @@ -17,4 +17,4 @@ from ORBIT.parametric import ParametricManager from ORBIT.supply_chain import SupplyChainManager -__version__ = "1.2.6" +__version__ = "1.3" diff --git a/ORBIT/phases/install/cable_install/export.py b/ORBIT/phases/install/cable_install/export.py index c5e2b56a..7e9b6f2c 100644 --- a/ORBIT/phases/install/cable_install/export.py +++ b/ORBIT/phases/install/cable_install/export.py @@ -49,7 +49,7 @@ class ExportCableInstallation(InstallPhase): "linear_density": "t/km", "sections": [("length, km", "speed, km/h (optional)")], "number": "int (optional)", - "cable_type": "str(optional, defualt: 'HVAC')", + "cable_type": "str(optional, default: 'HVAC')", "landfall": { "trench_length": "km (optional)", "interconnection_distance": "km (optional); default: 3km", diff --git a/README.md b/README.md index b398ad22..075f1e89 100644 --- a/README.md +++ b/README.md @@ -21,11 +21,11 @@ Offshore Renewables Balance of system and Installation Tool - [Rob Hammond](https://www.linkedin.com/in/rob-hammond-33583756/) - [Nick Riccobono](https://www.linkedin.com/in/nicholas-riccobono-674a3b43/) -### Curent Maintainers +### Current Maintainers - Rob Hammond -## Documentationa +## Documentation Please visit the documentation site at https://nlrwindsystems.github.io/ORBIT/ @@ -92,7 +92,7 @@ pip install jupyterlab ### Source Installation -For users looking to modify ORBIT or build their own models to incorporte, installing +For users looking to modify ORBIT or build their own models to incorporate, installing from the source code is required. 1. Open a terminal/Anaconda Prompt session and navigate to your desired folder location @@ -129,7 +129,7 @@ from the source code is required. ### Development Setup -For more advanced users, such as those interested in building the documentation localling, running +For more advanced users, such as those interested in building the documentation locally, running tests, or even contributing code back to the library, please use the following instructions. 1. Open a terminal/Anaconda Prompt session and navigate to your desired folder location @@ -160,7 +160,7 @@ tests, or even contributing code back to the library, please use the following i pip install -3 . ``` - For developers install the developer dependences in addition: + For developers install the developer dependencies in addition: ```bash pip install -e .[dev,docs] diff --git a/docs/getting_started/overview.md b/docs/getting_started/overview.md index d2373a47..27f8a46b 100644 --- a/docs/getting_started/overview.md +++ b/docs/getting_started/overview.md @@ -10,7 +10,7 @@ cost in a highly customizable framework, allowing the user to override any default values if they wish. The primary structure of ORBIT relies on the [Project Manager](#project-manager-methods) -to intrepret the user specified configuration. Refer to the +to interpret the user specified configuration. Refer to the [library/project/config](https://github.com/NLRWindSystems/ORBIT/tree/main/library/project/config). The `ProjectManager` calls `DesignPhase` to include all the wind farm components that comprise the balance of system, then it calls `InstallationPhase` to schedule all the installation diff --git a/docs/methods/ProjectManager.md b/docs/methods/ProjectManager.md index d37949e1..f5d16769 100644 --- a/docs/methods/ProjectManager.md +++ b/docs/methods/ProjectManager.md @@ -19,7 +19,7 @@ and save the outputs. ## Run -This method checks to see if a design or install phase is instatiated prior to running them. Depending on +This method checks to see if a design or install phase is instantiated prior to running them. Depending on which design phases are specified, each phase is run in no particular order and the results are added to `design_results` dictionary. Conversely, the install phases can be run sequentially or as overlapped processes (see example: {doc}`Overlapping install <../examples>`). It is worth noting, that ORBIT diff --git a/docs/methods/design/ElectricalDesign.md b/docs/methods/design/ElectricalDesign.md index 698a265b..78b096db 100644 --- a/docs/methods/design/ElectricalDesign.md +++ b/docs/methods/design/ElectricalDesign.md @@ -19,12 +19,12 @@ For more detail on the helper classes used to support this design please see The number of export cables required for HVAC is calculated by dividing the windfarm's capacity by the configured export cable's power rating and adding any user -defined redundnacy as seen below. +defined redundancy as seen below. $num\_cables = \lceil\frac{plant\_capacity}{cable\_power}\rceil + num\_redundant$ For HVDC cables (both monopole and bipole), the number of cables is twice the number as -calculated abpve because HVDC systems require a pair of cables per implementation. +calculated above because HVDC systems require a pair of cables per implementation. The equation for this calculation is shown below. $num\_cables = 2 * \lceil\frac{plant\_capacity}{cable\_power}\rceil + num\_redundant$ @@ -46,7 +46,7 @@ crossing. The default number of cable crossings is 0 and cost per cable crossing is \$500,000. This cost includes materials, installation, etc. Crossing cost is calculated as product of number of crossings and unit cost. -## Number of Required Power Transformer, Tranformer Rating, and Cost +## Number of Required Power Transformer, Transformer Rating, and Cost The number of main power transformers (MPT) required is assumed to be equal to the number of required export cables. The transformer rating is calculated by dividing the @@ -54,7 +54,7 @@ windfarm's capacity by the number of MPTs. MPTs are only required if the export cables are HVAC. The default cost of the MPT is \$2.87m per HVAC cable. Therefore, the total MPT cost is proportional to the number of cables. Note: Previous versions may have used curve-fits to calculate total MPT cost based on the windfarm's capacity. The MPT unit cost (\$/cable) can -be ovewritten by the user by setting (`mpt_unit_cost`) to the desired cost. If the export cables +be overwritten by the user by setting (`mpt_unit_cost`) to the desired cost. If the export cables are HVDC, then the cost of power transformers will be \$0. ## Number of Shunt Reactors, Reactive Power Compensation, and Cost @@ -63,7 +63,7 @@ The shunt reactor cost is dependent on the amount of reactive power compensation required based on the distance of the substation to shore. This model assumes one shunt reactor for each HVAC export cable. An HVDC export systems do not require reactive power compensation. The default cost rate of the shunt reactors is \$10k per HVAC cable. The total cost is proportional -to the number of cables multipled by a cable-specific compensation factor. The default cost rate +to the number of cables multiplied by a cable-specific compensation factor. The default cost rate can be overwritten by the user by setting (`shunt_unit_cost`) to the desired cost. The shunt reactor cost is \$0 for HVDC systems. @@ -78,7 +78,7 @@ cables. ## Number of Circuit Breakers and Cost The number of circuit breakers required is assumed to be equal to the number of required -export cables. Breakers are only necssary if HVDC export cables are chosen. The default cost is +export cables. Breakers are only necessary if HVDC export cables are chosen. The default cost is \$10.6m per HVDC cable. The default cost can be overwritten by the user by setting (`dc_breaker_cost`) to the desired cost. Breaker cost is \$0 for HVAC cables. @@ -89,7 +89,7 @@ is assumed to be equal to the number of HVDC export cables. ## Ancillary System Cost -Costs are included such as a backup generator, workspace cost, and miscellous to +Costs are included such as a backup generator, workspace cost, and miscellaneous to capture any additional features outside the main components. The user can define each variable by setting (`backup_gen_cost`), (`workspace_cost`), and (`other_ancillary_cost`). diff --git a/docs/methods/design/ExportSystemDesign.md b/docs/methods/design/ExportSystemDesign.md index a0f2cf1a..32875ef0 100644 --- a/docs/methods/design/ExportSystemDesign.md +++ b/docs/methods/design/ExportSystemDesign.md @@ -13,9 +13,9 @@ see the [Cabling Helper Classes documentation](#cable-helpers-methods), specific ## Number of Required Cables -The number of export cables required is calculated by dividing the windfarm's +The number of export cables required is calculated by dividing the wind farm's capacity by the configured export cable's power rating and adding any user -defined redundnacy as seen below. +defined redundancy as seen below. $num\_cables = \lceil\frac{plant\_capacity}{cable\_power}\rceil + num\_redundant$ diff --git a/docs/methods/design/ScourProtectionDesign.md b/docs/methods/design/ScourProtectionDesign.md index f02ca98b..5a536fee 100644 --- a/docs/methods/design/ScourProtectionDesign.md +++ b/docs/methods/design/ScourProtectionDesign.md @@ -48,7 +48,7 @@ where $t$ represents the depth of the scour protection material. This value defaults to 1m in the code, which represents an appropriate initial assumption and not a complete design. For sites that exhibit greater seafloor currents, the scour protection layer may be as thick as 2m, whereas calmer -sites may only need 0.3-0.5m of material. In the abscense of a geotechnical +sites may only need 0.3-0.5m of material. In the absence of a geotechnical study, this value is difficult to calculate and is instead presented to user as a configurable input so the cost impacts of different thicknesses can be investigated. diff --git a/docs/methods/install/ArrayCableInstall.md b/docs/methods/install/ArrayCableInstall.md index 2cbbd9b6..c5f13d9d 100644 --- a/docs/methods/install/ArrayCableInstall.md +++ b/docs/methods/install/ArrayCableInstall.md @@ -48,7 +48,7 @@ For example, } ``` -The installation of each section above will be modeled seperately. In the above +The installation of each section above will be modeled separately. In the above example, only one cable was used, though there could be additional defined cables (with their own `cable_sections` key). @@ -62,7 +62,7 @@ result of running the `ArraySystemDesign` module. ## Configuration ORBIT considers two installation strategies: a simultaneous lay/bury operation -using modern cable installation vessels and a seperated operation where one +using modern cable installation vessels and a separated operation where one vessel lays the cable and another follows behind to bury it. A detailed description of the applicability of each strategy is covered in the [ORBIT technical report](https://www.nlr.gov/docs/fy20osti/77081.pdf). diff --git a/docs/methods/install/ExportCableInstall.md b/docs/methods/install/ExportCableInstall.md index b0a55321..bf7c6f4c 100644 --- a/docs/methods/install/ExportCableInstall.md +++ b/docs/methods/install/ExportCableInstall.md @@ -73,7 +73,7 @@ array system installation: :::{note} The cable lengths for an export system are typically much longer than the -array system and thhere is the possibility that a cable splice will be +array system and there is the possibility that a cable splice will be needed. The time for splicing a cable can be configured by the user using the `cable_splice_time` key, which defaults to 48h. ::: diff --git a/docs/methods/install/MonopileInstall.md b/docs/methods/install/MonopileInstall.md index 8bbca41e..d5be9d36 100644 --- a/docs/methods/install/MonopileInstall.md +++ b/docs/methods/install/MonopileInstall.md @@ -130,13 +130,13 @@ For grouted connections, the WTIV performs these tasks: ### Single WTIV Installation -![Single WTIV monopile installation process diagrame](../../images/process_diagrams/monopile_single_wtiv.png) +![Single WTIV monopile installation process diagram](../../images/process_diagrams/monopile_single_wtiv.png) (monopile-install-feeders-process)= ### WTIV with Feeder Barges Installation -![WTIV with feeders monopile installation process diagrame](../../images/process_diagrams/monopile_wtiv_with_feeders.png) +![WTIV with feeders monopile installation process diagram](../../images/process_diagrams/monopile_wtiv_with_feeders.png) ### Component Installation -![Monopile component installation process diagrame](../../images/process_diagrams/monopile_install.png) +![Monopile component installation process diagram](../../images/process_diagrams/monopile_install.png) diff --git a/docs/methods/install/MooredSubInstallation.md b/docs/methods/install/MooredSubInstallation.md index 597128a6..e2cf3c8f 100644 --- a/docs/methods/install/MooredSubInstallation.md +++ b/docs/methods/install/MooredSubInstallation.md @@ -7,10 +7,10 @@ For details of the code implementation, please see the ## Overview The `MooredSubInstallation` module simulates the manufacture and installation -of moored substuctures for a floating offshore wind project. The installation +of moored substructures for a floating offshore wind project. The installation procedures include the time required to manufacture a substructure at quayside, assemble a turbine on the substructure, ballast the completed assembly, tow -the completed assembly to site and hook up the pre-installed moooring lines. +the completed assembly to site and hook up the pre-installed mooring lines. ## Configuration @@ -29,7 +29,7 @@ config = { "towing_groups": { "towing_vessel": 1, # Vessels used to tow the substructure to site. "ahts_vessels": 3, # Number of anchor handling/station keeping vessels - "num_groups": 1 # Number of independent groups. Optional, defualt: 1. + "num_groups": 1 # Number of independent groups. Optional, default: 1. }, "port": { diff --git a/docs/methods/install/ScourProtectionInstall.md b/docs/methods/install/ScourProtectionInstall.md index c02fb87b..0195f943 100644 --- a/docs/methods/install/ScourProtectionInstall.md +++ b/docs/methods/install/ScourProtectionInstall.md @@ -23,7 +23,7 @@ installation method, involving "Side Stone Installation Vessels" that dump loads of rocks next to the substructure without much ability to ensure that their payload is distributed evenly. A future version of ORBIT may expand this module to include more modern installation approaches using a "Fall Pipe -Vessel" that allow for an even distrubution of scour protection material. +Vessel" that allow for an even distribution of scour protection material. ### Example diff --git a/docs/methods/install/TurbineInstall.md b/docs/methods/install/TurbineInstall.md index 6db8aba8..aba46118 100644 --- a/docs/methods/install/TurbineInstall.md +++ b/docs/methods/install/TurbineInstall.md @@ -64,7 +64,7 @@ The default times for fastening each component to deck are listed below. Currently, all vessels are only able to load multiples of complete sets of components (tower, nacelle and three blades). -### Site Preperation +### Site Preparation Once the WTIV and a set of components are at site (either on the WTIV or a feeder barge), the WTIV positions itself onsite and jacks up. The following @@ -77,7 +77,7 @@ table outlines the inputs and default times for these tasks. ### Turbine Installation -After site preperation is complete, the WTIV begins installation by releasing a +After site preparation is complete, the WTIV begins installation by releasing a turbine from its fastening (either on its own deck or neighboring feeder barge). The tower is then lifted into place using the WTIV crane and attached to the substructure. The nacelle is then released from its fastenings, lifted @@ -103,12 +103,12 @@ following table. ### Single WTIV Installation -![Single WTIV turbine installation proceess diagrame](../../images/process_diagrams/turbine_single_wtiv.png) +![Single WTIV turbine installation process diagram](../../images/process_diagrams/turbine_single_wtiv.png) ### WTIV with Feeder Barges Installation -![WTIV with feeder barges turbine installation proceess diagrame](../../images/process_diagrams/turbine_wtiv_with_feeders.png) +![WTIV with feeder barges turbine installation process diagram](../../images/process_diagrams/turbine_wtiv_with_feeders.png) ### Component Installation -![Component installation proceess diagrame](../../images/process_diagrams/turbine_install.png) +![Component installation process diagram](../../images/process_diagrams/turbine_install.png) diff --git a/docs/topical_guides/cable_installation.md b/docs/topical_guides/cable_installation.md index e064667b..026ff350 100644 --- a/docs/topical_guides/cable_installation.md +++ b/docs/topical_guides/cable_installation.md @@ -108,7 +108,7 @@ df_combined.iloc[3:12] Now, we demonstrate the separate process by combining the separate laying and burying steps taken for the first cable. Note that we have to concatenate two separate sections of the actions log to highlight this process. For each process the vessel has to "Position Onsite", then go on -with the separate logic. For the burying process, this is much simpler than the intial laying +with the separate logic. For the burying process, this is much simpler than the initial laying and cable connection. ```{code-cell} ipython3 diff --git a/docs/topical_guides/cost_curves.md b/docs/topical_guides/cost_curves.md index facef6c6..55900a8d 100644 --- a/docs/topical_guides/cost_curves.md +++ b/docs/topical_guides/cost_curves.md @@ -369,7 +369,7 @@ class CostFunction(): in ``ParametricManager``. Additionally, the independent variables are extracted into ``x` and ``y`` (for two-variable parameterizations) and ``z`` is extracted as the dependent variable. Whether the cost function is 3D or 2D is determined - by the length of theparameters variable. + by the length of the parameters variable. Parameters ---------- diff --git a/docs/topical_guides/custom_array.md b/docs/topical_guides/custom_array.md index 84eac5a6..9abb0ef7 100644 --- a/docs/topical_guides/custom_array.md +++ b/docs/topical_guides/custom_array.md @@ -11,10 +11,10 @@ kernelspec: name: python3 --- -(custom-array-layou)= +(custom-array-layout)= # Custom Array Cabling Guide -## Dudgeon Windfarm +## Dudgeon Wind Farm This guide will walk through four of the main use cases for using the custom array cable layout functionality of `ORBIT` for when custom turbine locations, cable lengths or burial speeds are needed. @@ -114,7 +114,7 @@ dictionary, so let's dissect this file: `bury_speed`. 4. Define the turbines - Each turbine should have a reference to its substation in the `substation_id` column. - - In this example, there is one substaion, so all of the values are "DOW_OSS". + - In this example, there is one substation, so all of the values are "DOW_OSS". - `string` and `order` should be 0-indexed for their ordering and not skip any numbers. - In this example, the strings are ordered in clock-wise order starting from the string with turbines labeled with an "A" in the @@ -151,7 +151,7 @@ array.create_project_csv(save_name, folder="plant") There are a few items worth noting in the layout: 1. The offshore substation (row 0) is indicated via the `id` and `substation_id` columns being equal -2. For substaions only the `id`, `substation_id`, `name`, `latitude`, and `longitude` are required +2. For substations only the `id`, `substation_id`, `name`, `latitude`, and `longitude` are required 3. `cable_length` and `bury_speed` are optional columns for turbines 4. `string` and `order` are filled out to maximize the length of a string given the cable(s) provided, which translates to a maximum of 5 turbines in a string. @@ -243,7 +243,7 @@ Alternatively, we can set the `distance=True` when calling the `CustomArraySyste the configuration dictionary's setting will override this input to allow for project-level configurations to run as expected. Below, we can see some of the cable lengths differ slightly due to the methodology of converting the WGS-84coordinates to relative points, however the spacing is -maintained, and we can see that this is still the Dudgeon windfarm. +maintained, and we can see that this is still the Dudgeon wind farm. ```{code-cell} ipython3 array_distance = CustomArraySystemDesign(config, distance=True) @@ -252,7 +252,7 @@ array_distance.plot_array_system(show=True) ``` Overall, the cabling cost is highly similar, with the difference being attributed to the method -to convert the WGS-84 coordiantes to relative coordinates. +to convert the WGS-84 coordinates to relative coordinates. ```{code-cell} ipython3 print(f"{'Cable Type':<16} | {'Cost in USD (lat,lon)':>20} | {'Cost in USD (dist_lat,dist_lon)':>15}") @@ -304,7 +304,7 @@ from [Case 4](#case_4) to have more variation by using the `cable_length` column columns will be used. Please note this work was performed outside the example, and we will only show the resulting configurations. -For this example, half of the windfarm will have different soil condition, so we will use our proxy: +For this example, half of the wind farm will have different soil condition, so we will use our proxy: `bury_speed` by modifying the burial speed to be fast (0.5 km/h) and slow (0.05 km/hr), respectively, to account for sandy soil and rocky soil. The purpose of this is for passing through customized parameters in the design phase to be utilized in the installation phase as will be seen @@ -388,7 +388,7 @@ for name, simulation in zip(names, simulations): (project_manager)= ### Incorporating Case 5 Into `ProjectManager` -We will now incorporate the desgin settings from [Case 5](#case_5) to demonstrate incorporation +We will now incorporate the design settings from [Case 5](#case_5) to demonstrate incorporation of the custom array design tooling into `ProjectManager`. This example will use the [`library/project/config/example_custom_array_project_manager.yaml`](https://github.com/NLRWindSystems/ORBIT/tree/main/library/project/config/example_custom_array_project_manager.yaml) configuration. diff --git a/docs/topical_guides/export_cable_system.md b/docs/topical_guides/export_cable_system.md index 314bebe9..e004bd39 100644 --- a/docs/topical_guides/export_cable_system.md +++ b/docs/topical_guides/export_cable_system.md @@ -37,7 +37,7 @@ pd.options.display.float_format = '{:,.0f}'.format ## Setup The Models Here we will setup a base configuration for use with `ProjectManager` plus additional configurations -for running in the `ParametericManager` to look at the cost tradeoffs in export cable types +for running in the `ParametricManager` to look at the cost tradeoffs in export cable types depending on project size. Config must include all required variables except those you plan to vary. In this example, we will be manually vary the cable type and then use the `ParametricManager` to vary cable type and plant capacity. @@ -182,7 +182,7 @@ fig.tight_layout() Comparing the below figure to the CapEx figure above, highlights that CapEx increases for the HVDC system correspond to an increase in the number of substations (each requires a single cable), whereas for HVAC system, these increases primarily correspond to an increase in the number of export -cables with a smaller increase stemming from the substation requiremensts. +cables with a smaller increase stemming from the substation requirements. ```{code-cell} ipython3 fig = plt.figure(figsize=(6,4), dpi=200) diff --git a/docs/topical_guides/fixed_bottom_installations.md b/docs/topical_guides/fixed_bottom_installations.md index b77ace4e..1c73bd89 100644 --- a/docs/topical_guides/fixed_bottom_installations.md +++ b/docs/topical_guides/fixed_bottom_installations.md @@ -87,9 +87,9 @@ and turbine installation phases. ```{code-cell} ipython3 print(f"Monopile and Turbine Installation (Heavy Lift Vessel for Monopile Installation, WTIV for Turbine Installation)") print(f"Install phases: {list(case1_config['install_phases'].keys())}\n") -print(f"Gravity-Based Foundation Intallation (Substructure-Turbine Assembly Tow-out, no WTIV)") +print(f"Gravity-Based Foundation Installation (Substructure-Turbine Assembly Tow-out, no WTIV)") print(f"Install phases: {list(case2_config['install_phases'].keys())}\n") -print(f"Gravity-Based Foundation and Turbine Intallation (Substructure Tow-out, WTIV for Turbine Installation)") +print(f"Gravity-Based Foundation and Turbine Installation (Substructure Tow-out, WTIV for Turbine Installation)") print(f"Install phases: {list(case3_config['install_phases'].keys())}\n") ``` diff --git a/docs/tutorials/available_outputs.md b/docs/tutorials/available_outputs.md index 3edd996b..d0e0b44d 100644 --- a/docs/tutorials/available_outputs.md +++ b/docs/tutorials/available_outputs.md @@ -66,9 +66,9 @@ used by `ProjectManger` to pass into other phases or calculate further metrics. pprint(project.design_results) ``` -### Project Parameterizaions +### Project Parameterizations -Below is brief example showing the basic project parameterizations that are availabe. +Below is brief example showing the basic project parameterizations that are available. - `num_turbines`: the number of turbines. - `turbine_rating`: the rating of an individual turbine, in MW. @@ -121,7 +121,7 @@ sections). This represents the complete project costs including all upfront cost procurement and installation of BOS subsystems and the procurement costs of the turbines. :::{note} -ORBIT doesn't explicity model the procurement of turbines, however the Turbine CapEx is included +ORBIT doesn't explicitly model the procurement of turbines, however the Turbine CapEx is included within `project.total_capex`. To configure the cost of the turbines, `turbine_capex` can be passed into the `project_parameters` section of an ORBIT configuration. ::: @@ -166,7 +166,7 @@ The `system_capex` property provides the total procurement costs for all modeled the costs were user inputs, or the results of design models. This value will not change unless the design or plant's properties (e.g., distance to shore, depth, or number of turbines) change. -In addition, `system_capex_per_kw` provies the capacity-normalized CapEx for the project. +In addition, `system_capex_per_kw` provides the capacity-normalized CapEx for the project. ```{code-cell} ipython3 print(f"System (procurement) CapEx (millions, USD): {project.system_capex / 1e6:,.2f}") @@ -187,7 +187,7 @@ Installation CapEx is a dynamic result based on the installation simulation and associated with each subsystem installation, day rates of any vessels/ports and any accrued weather delays. -In addition, `installation_capex_per_kw` provies the capacity-normalized CapEx for the project. +In addition, `installation_capex_per_kw` provides the capacity-normalized CapEx for the project. Below we will print out the dictionary keys and the values in millions USD. ```{code-cell} ipython3 @@ -240,7 +240,8 @@ print(f"Soft CapEx (millions, USD): {project.soft_capex / 1e6:,.2f}") print(f"Soft CapEx (USD) per kW: {project.soft_capex_per_kw:,.2f}") ``` -The soft CapEx can also be broken down using both the `soft_capex_breakdown` and the `capex_detailed_soft_capex_breakdown`, which also provide a capacity-noramlized variation by adding +The soft CapEx can also be broken down using both the `soft_capex_breakdown` and the +`capex_detailed_soft_capex_breakdown`, which also provide a capacity-normalized variation by adding `_per_kw` to the end of either (not shown in this demonstration). The primary difference (as shown below) is that the `capex_detailed_soft_capex_breakdown` metric provides the capex breakdown with the additional soft capex breakdown. @@ -279,7 +280,7 @@ print(f"Construction Financing CapEx (millions, USD): {project.construction_fina The supply chain CapEx (`supply_chain_capex`) directly captures the user-provided `supply_chain_capex` from the `project_parameters` section of the project configuration. This -value should encompass any project-level investements in supply chain development, port upgrade, +value should encompass any project-level investments in supply chain development, port upgrade, community benefit agreements, fisheries mitigation funds, community or research initiatives, and US-built vessels. diff --git a/docs/tutorials/index.md b/docs/tutorials/index.md index cdf34927..7b417bfb 100644 --- a/docs/tutorials/index.md +++ b/docs/tutorials/index.md @@ -5,7 +5,7 @@ [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/NLRWindSystems/ORBIT/main?urlpath=%2Fdoc%2Ftree%2Fexamples) Welcome to the ORBIT tutorials! The following examples will cover the basic usage of ORBIT. For -backround on the project and Offshore Balance of System modeling, please see the +background on the project and Offshore Balance of System modeling, please see the [introduction](#bos-intro). For more advanced examples and real world validation cases, please see the [topical guides](#topical-guides) section of the documentation. diff --git a/docs/tutorials/introduction.md b/docs/tutorials/introduction.md index ed7abb33..b8e6acad 100644 --- a/docs/tutorials/introduction.md +++ b/docs/tutorials/introduction.md @@ -51,7 +51,7 @@ pprint(install_phases) Each model has a property `expected_config` that provides basic information about the required and optional inputs for the model. Notice that for each input there is a provided data type, an indication if the parameter is optional, and any nested dictionary configurations are fully mapped -in the same way as individal parameters. Below, we can see the expected configurations for both +in the same way as individual parameters. Below, we can see the expected configurations for both the monopile design and installation classes. It should be noted that when combining complimentary design and installation phases for a component, that the design model will provide most of the installation inputs as a `design_result` (more details in the `ProjectManager` introduction). @@ -164,7 +164,7 @@ Additionally, supply chains and ports can be configured to model component avail logistics. Using the output from the above example, we can add further configurations. Note that ORBIT provides -a series of default vessls in `library/vessels/` to support all possible installation strategies. +a series of default vessels in `library/vessels/` to support all possible installation strategies. For more details on vessel configurations, please see the [vessels section](#vessels). ```{code-cell} ipython3 @@ -207,7 +207,7 @@ ORBIT makes use of its own [internal library](https://github.com/NLRWindSystems/ORBIT/tree/main/library) when a user-provided library path is not provided (i.e. a value isn't provide so the default `None` is used in `ProjectManager(config, library_path=None)`). When a value is provided, user library files will be -searched for first, and the default library will be checked for any unfound files. +searched for first, and the default library will be checked for any files that were not found. This is made visible in the [installation phases section](#installation-phases) where the value "example_wtiv" is provided to the "wtiv" key. When the configuration is loaded, `ProjectManager` @@ -219,8 +219,8 @@ folder. Below is the expected folder structure of the library. I ├── defaults <- Top-level default data ├── project │ ├── config <- Configuration dictionary repository -│ ├── port <- Port specific data setttings -│ ├── plant <- Wind farm specific data setttings +│ ├── port <- Port specific data settings +│ ├── plant <- Wind farm specific data settings │ ├── site <- Project site data settings │ ├── development <- Project development cost settings ├── cables <- Cable data files: array cables, export cables @@ -263,7 +263,7 @@ to turbine and cable configuration files, these should be stored in the YAML for - `leg_length`: Length of the jackup vessel's legs, m. - `air_gap`: Distance between sea level and the vessel bottom when fully jacked up, m. - `leg_pen`: How far the leg penetrates the sea floor for stability, m. - - `max_depth`: Maxium water depth, m. + - `max_depth`: Maximum water depth, m. - `max_extension`: Maximum leg extension, m. - `speed_below_depth`: Jackup speed when leg extension has not reached the sea floor, m/min - `speed_above_depth`: Jackup speed after the leg has reached the sea floor and the vessel is @@ -301,7 +301,7 @@ pprint(config_template) ``` Now, we can combine the monopile design and installation configurations that were -used in the previous examples, and run the model to get a single CapEx alongsie the +used in the previous examples, and run the model to get a single CapEx alongside the high level category breakdown. ```{code-cell} ipython3 diff --git a/docs/tutorials/parametric_manager.md b/docs/tutorials/parametric_manager.md index 183f84c2..8354f0a3 100644 --- a/docs/tutorials/parametric_manager.md +++ b/docs/tutorials/parametric_manager.md @@ -17,7 +17,7 @@ kernelspec: Similar to the `ProjectManager`, ORIBT provides the `ParametricManager` to run simple parametric studies by defining a subset of the inputs as a list. This allows for tradeoff studies to compare the effects of siting (e.g., water depth and distance) on cost and installation timing. For complete -details on using the `ParmetricManager` please see the [API documentation](#parametric-manager-api). +details on using the `ParametricManager` please see the [API documentation](#parametric-manager-api). First, we'll import the necessary libraries, and load the example fixed-bottom project to use as our project base with the 15 MW turbine. @@ -83,7 +83,7 @@ method, as seen below. Setting `product` to `True` means that all of the parameters will be run as a combination of all possible permutations rather than a zipped list. When using `False` extra care must be taken to ensure the correct outcomes will be achieved by using equally-lengthed parameterizations. For -instacnce, in our current example, the shortest parameterization has only 3 values, so the first +instance, in our current example, the shortest parameterization has only 3 values, so the first 3 values of `depth` and `distance` will be selected for the parameterized run. ```{code-cell} ipython3 diff --git a/examples/available_outputs.ipynb b/examples/available_outputs.ipynb index 09bacc64..56dae378 100644 --- a/examples/available_outputs.ipynb +++ b/examples/available_outputs.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "0fd1f668", + "id": "75eed0e4", "metadata": {}, "source": [ "(outputs-tutorial)=\n", @@ -23,7 +23,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "d2463c33", + "id": "93228bd8", "metadata": {}, "outputs": [ { @@ -66,7 +66,7 @@ }, { "cell_type": "markdown", - "id": "822f485e", + "id": "0147bfc8", "metadata": {}, "source": [ "## Project Details\n", @@ -80,7 +80,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "524bd59d", + "id": "d894e8ca", "metadata": {}, "outputs": [ { @@ -154,12 +154,12 @@ }, { "cell_type": "markdown", - "id": "2cdd4213", + "id": "68603419", "metadata": {}, "source": [ - "### Project Parameterizaions\n", + "### Project Parameterizations\n", "\n", - "Below is brief example showing the basic project parameterizations that are availabe.\n", + "Below is brief example showing the basic project parameterizations that are available.\n", "\n", "- `num_turbines`: the number of turbines.\n", "- `turbine_rating`: the rating of an individual turbine, in MW.\n", @@ -170,7 +170,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "0b783e4a", + "id": "39f31b79", "metadata": {}, "outputs": [ { @@ -193,7 +193,7 @@ }, { "cell_type": "markdown", - "id": "fe534968", + "id": "9ff90680", "metadata": {}, "source": [ "### Event Timing\n", @@ -207,7 +207,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "ac7b1ec4", + "id": "7754a95d", "metadata": {}, "outputs": [ { @@ -228,7 +228,7 @@ }, { "cell_type": "markdown", - "id": "1ce33db1", + "id": "b51e8149", "metadata": {}, "source": [ "## All Outputs At Once\n", @@ -245,7 +245,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "e4aad215", + "id": "ef29c5ef", "metadata": {}, "outputs": [ { @@ -366,7 +366,7 @@ }, { "cell_type": "markdown", - "id": "9e6d0adb", + "id": "1ab5be64", "metadata": {}, "source": [ "## CapEx\n", @@ -381,7 +381,7 @@ "procurement and installation of BOS subsystems and the procurement costs of the turbines.\n", "\n", ":::{note}\n", - "ORBIT doesn't explicity model the procurement of turbines, however the Turbine CapEx is included\n", + "ORBIT doesn't explicitly model the procurement of turbines, however the Turbine CapEx is included\n", "within `project.total_capex`. To configure the cost of the turbines, `turbine_capex` can be passed\n", "into the `project_parameters` section of an ORBIT configuration.\n", ":::" @@ -390,7 +390,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "33324f21", + "id": "92203054", "metadata": {}, "outputs": [ { @@ -409,7 +409,7 @@ }, { "cell_type": "markdown", - "id": "df768a45", + "id": "0210398d", "metadata": {}, "source": [ "### Categorical CapEx Breakdowns\n", @@ -422,7 +422,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "06302eea", + "id": "1a2e3f25", "metadata": {}, "outputs": [ { @@ -454,7 +454,7 @@ }, { "cell_type": "markdown", - "id": "f667c336", + "id": "26672ac7", "metadata": {}, "source": [ "Like in the previous examples, the `capex_breakdown_per_kw` will provide each category's associated\n", @@ -464,7 +464,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "3fb82555", + "id": "17296802", "metadata": {}, "outputs": [ { @@ -496,7 +496,7 @@ }, { "cell_type": "markdown", - "id": "ea61ae6a", + "id": "d5ace434", "metadata": {}, "source": [ "### BOS CapEx\n", @@ -508,7 +508,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "e2f104ef", + "id": "ca0e7ef7", "metadata": {}, "outputs": [ { @@ -527,7 +527,7 @@ }, { "cell_type": "markdown", - "id": "80899058", + "id": "f741adbb", "metadata": {}, "source": [ "### System CapEx\n", @@ -536,13 +536,13 @@ "the costs were user inputs, or the results of design models. This value will not change unless\n", "the design or plant's properties (e.g., distance to shore, depth, or number of turbines) change.\n", "\n", - "In addition, `system_capex_per_kw` provies the capacity-normalized CapEx for the project." + "In addition, `system_capex_per_kw` provides the capacity-normalized CapEx for the project." ] }, { "cell_type": "code", "execution_count": 10, - "id": "07c4792b", + "id": "4cb6f27b", "metadata": {}, "outputs": [ { @@ -561,7 +561,7 @@ }, { "cell_type": "markdown", - "id": "856ce3c4", + "id": "750a7a61", "metadata": {}, "source": [ "To view the individual component system costs related to each installation phase, users can\n", @@ -571,7 +571,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "8eb88b72", + "id": "6ceafd59", "metadata": {}, "outputs": [ { @@ -593,7 +593,7 @@ }, { "cell_type": "markdown", - "id": "31cf41d7", + "id": "d4e94362", "metadata": {}, "source": [ "### Installation Capex\n", @@ -602,14 +602,14 @@ "associated with each subsystem installation, day rates of any vessels/ports and any accrued weather\n", "delays.\n", "\n", - "In addition, `installation_capex_per_kw` provies the capacity-normalized CapEx for the project.\n", + "In addition, `installation_capex_per_kw` provides the capacity-normalized CapEx for the project.\n", "Below we will print out the dictionary keys and the values in millions USD." ] }, { "cell_type": "code", "execution_count": 12, - "id": "dd016548", + "id": "68eef940", "metadata": {}, "outputs": [ { @@ -628,7 +628,7 @@ }, { "cell_type": "markdown", - "id": "bdf65fa3", + "id": "5767145c", "metadata": {}, "source": [ "To view the individual component installation costs, users can inspect the `installation_costs`\n", @@ -639,7 +639,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "58226dfd", + "id": "33cd30eb", "metadata": {}, "outputs": [ { @@ -662,7 +662,7 @@ }, { "cell_type": "markdown", - "id": "d9a7daa7", + "id": "37905cfc", "metadata": {}, "source": [ "### Turbine CapEx\n", @@ -674,7 +674,7 @@ { "cell_type": "code", "execution_count": 14, - "id": "a89477a1", + "id": "3af21f0f", "metadata": {}, "outputs": [ { @@ -693,7 +693,7 @@ }, { "cell_type": "markdown", - "id": "015de72e", + "id": "692e88a1", "metadata": {}, "source": [ "### Project CapEx\n", @@ -708,7 +708,7 @@ { "cell_type": "code", "execution_count": 15, - "id": "d786e7ca", + "id": "e80f44bf", "metadata": {}, "outputs": [ { @@ -727,7 +727,7 @@ }, { "cell_type": "markdown", - "id": "89b73339", + "id": "4f196ec2", "metadata": {}, "source": [ "### Soft CapEx\n", @@ -742,7 +742,7 @@ { "cell_type": "code", "execution_count": 16, - "id": "63bbc594", + "id": "fb7c3d0d", "metadata": {}, "outputs": [ { @@ -761,10 +761,11 @@ }, { "cell_type": "markdown", - "id": "6138a96b", + "id": "620ae91d", "metadata": {}, "source": [ - "The soft CapEx can also be broken down using both the `soft_capex_breakdown` and the `capex_detailed_soft_capex_breakdown`, which also provide a capacity-noramlized variation by adding\n", + "The soft CapEx can also be broken down using both the `soft_capex_breakdown` and the\n", + "`capex_detailed_soft_capex_breakdown`, which also provide a capacity-normalized variation by adding\n", "`_per_kw` to the end of either (not shown in this demonstration). The primary difference (as shown\n", "below) is that the `capex_detailed_soft_capex_breakdown` metric provides the capex breakdown with\n", "the additional soft capex breakdown." @@ -773,7 +774,7 @@ { "cell_type": "code", "execution_count": 17, - "id": "55214cf0", + "id": "ec1ee78b", "metadata": {}, "outputs": [ { @@ -797,7 +798,7 @@ { "cell_type": "code", "execution_count": 18, - "id": "e36c24ce", + "id": "0b314635", "metadata": {}, "outputs": [ { @@ -834,7 +835,7 @@ }, { "cell_type": "markdown", - "id": "e8b7140d", + "id": "df880abf", "metadata": {}, "source": [ "The soft CapEx values are also available as independent values:\n", @@ -850,7 +851,7 @@ { "cell_type": "code", "execution_count": 19, - "id": "ca2b4ed1", + "id": "d3e7c50d", "metadata": {}, "outputs": [ { @@ -877,7 +878,7 @@ }, { "cell_type": "markdown", - "id": "1e6e03de", + "id": "46bf88b1", "metadata": {}, "source": [ "### All Other CapEx Categories\n", @@ -886,7 +887,7 @@ "\n", "The supply chain CapEx (`supply_chain_capex`) directly captures the user-provided\n", "`supply_chain_capex` from the `project_parameters` section of the project configuration. This\n", - "value should encompass any project-level investements in supply chain development, port upgrade,\n", + "value should encompass any project-level investments in supply chain development, port upgrade,\n", "community benefit agreements, fisheries mitigation funds, community or research initiatives, and\n", "US-built vessels." ] @@ -894,7 +895,7 @@ { "cell_type": "code", "execution_count": 20, - "id": "767fe3f9", + "id": "bc55df86", "metadata": {}, "outputs": [ { @@ -913,7 +914,7 @@ }, { "cell_type": "markdown", - "id": "6a8c694c", + "id": "d6b6309f", "metadata": {}, "source": [ "#### Onshore Substation CapEx\n", @@ -924,7 +925,7 @@ { "cell_type": "code", "execution_count": 21, - "id": "9d1d30c5", + "id": "cae8159f", "metadata": {}, "outputs": [ { @@ -943,7 +944,7 @@ }, { "cell_type": "markdown", - "id": "10d1fe62", + "id": "bf521bfe", "metadata": {}, "source": [ "#### Overnight CapEx\n", @@ -956,7 +957,7 @@ { "cell_type": "code", "execution_count": 22, - "id": "a71a79eb", + "id": "5d258a4c", "metadata": {}, "outputs": [ { @@ -973,7 +974,7 @@ }, { "cell_type": "markdown", - "id": "894475c4", + "id": "9261f7b1", "metadata": {}, "source": [ "## Logging\n", @@ -991,7 +992,7 @@ { "cell_type": "code", "execution_count": 23, - "id": "a5fd46d6", + "id": "3a38e5d2", "metadata": {}, "outputs": [ { @@ -1019,7 +1020,7 @@ }, { "cell_type": "markdown", - "id": "26e0d4cc", + "id": "0d8c7877", "metadata": {}, "source": [ "The `project_logs` provides a list of the when a component installation was completed using the\n", @@ -1049,7 +1050,7 @@ { "cell_type": "code", "execution_count": 24, - "id": "93215656", + "id": "01398e82", "metadata": {}, "outputs": [ { @@ -1137,7 +1138,7 @@ }, { "cell_type": "markdown", - "id": "f8e119c0", + "id": "97d948af", "metadata": {}, "source": [ "Below, we can see the installation timing is not quite realistic given the WTIV is used for the\n", @@ -1149,7 +1150,7 @@ { "cell_type": "code", "execution_count": 25, - "id": "5942b578", + "id": "74a72fbe", "metadata": {}, "outputs": [ { @@ -1187,7 +1188,7 @@ }, { "cell_type": "markdown", - "id": "cd60bcf4", + "id": "f9337dbf", "metadata": {}, "source": [ "### Detailed Event Timing\n", @@ -1200,7 +1201,7 @@ { "cell_type": "code", "execution_count": 26, - "id": "9c5a29c9", + "id": "58be0fca", "metadata": {}, "outputs": [ { @@ -1384,7 +1385,7 @@ }, { "cell_type": "markdown", - "id": "38d08241", + "id": "cf367068", "metadata": {}, "source": [ "Using the data frame we can filter produce vessel timing summaries for a single phase or a single\n", @@ -1399,7 +1400,7 @@ { "cell_type": "code", "execution_count": 27, - "id": "29282d68", + "id": "3b8cd4bc", "metadata": {}, "outputs": [ { @@ -1558,7 +1559,7 @@ }, { "cell_type": "markdown", - "id": "f870d0a0", + "id": "5b2ec3aa", "metadata": {}, "source": [ "## Cash Flow and Net Present Value\n", @@ -1580,7 +1581,7 @@ { "cell_type": "code", "execution_count": 28, - "id": "2947fb29", + "id": "194bf782", "metadata": {}, "outputs": [ { @@ -1597,7 +1598,7 @@ }, { "cell_type": "markdown", - "id": "0e608023", + "id": "07ad0dd4", "metadata": {}, "source": [ "Below, we highlight the first 12 months of the project cash flow. In the 10th month we can see that\n", @@ -1608,7 +1609,7 @@ { "cell_type": "code", "execution_count": 29, - "id": "3130bec0", + "id": "5769dfee", "metadata": {}, "outputs": [ { @@ -1821,30 +1822,30 @@ 228, 238, 241, - 248, - 253, - 256, - 267, - 274, - 286, - 289, - 295, - 298, - 306, - 308, - 321, - 323, - 348, - 354, - 361, - 381, - 389, - 392, - 402, - 410, - 427, - 429, - 435 + 249, + 254, + 257, + 268, + 275, + 287, + 290, + 296, + 299, + 307, + 309, + 322, + 324, + 349, + 355, + 362, + 382, + 390, + 393, + 403, + 411, + 428, + 430, + 436 ] }, "nbformat": 4, diff --git a/examples/cable_installation.ipynb b/examples/cable_installation.ipynb index 12dc19d5..15dcf905 100644 --- a/examples/cable_installation.ipynb +++ b/examples/cable_installation.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "b08cae42", + "id": "924b03da", "metadata": {}, "source": [ "# Cable Laying and Burying\n", @@ -15,7 +15,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "91e40275", + "id": "9c8baf8d", "metadata": {}, "outputs": [], "source": [ @@ -28,7 +28,7 @@ }, { "cell_type": "markdown", - "id": "22ee3db1", + "id": "c1e9d788", "metadata": {}, "source": [ "Below, we set up a base configuration using an imagined cable and sections (25 each of 1km and 2km cable sections) designed for simplicity." @@ -37,7 +37,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "a9595de2", + "id": "7e196805", "metadata": {}, "outputs": [], "source": [ @@ -58,7 +58,7 @@ }, { "cell_type": "markdown", - "id": "f0e97641", + "id": "909c0c5e", "metadata": {}, "source": [ "## Single Cable Laying and Burying Process\n", @@ -71,7 +71,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "b7fa19de", + "id": "3324f6b3", "metadata": {}, "outputs": [ { @@ -92,7 +92,7 @@ }, { "cell_type": "markdown", - "id": "6068ec18", + "id": "38afc3b6", "metadata": {}, "source": [ "## Separate Cable Laying and Burying Processes\n", @@ -110,7 +110,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "ae5dff3b", + "id": "23ee25b1", "metadata": {}, "outputs": [], "source": [ @@ -124,7 +124,7 @@ }, { "cell_type": "markdown", - "id": "f9620066", + "id": "38c3537b", "metadata": {}, "source": [ "## Including a Trenching Vessel\n", @@ -138,7 +138,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "a598af4d", + "id": "660d3d4c", "metadata": {}, "outputs": [], "source": [ @@ -154,7 +154,7 @@ }, { "cell_type": "markdown", - "id": "a596cf70", + "id": "a9cec825", "metadata": {}, "source": [ "## Viewing the results\n", @@ -166,7 +166,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "e3334ada", + "id": "fa52b75e", "metadata": {}, "outputs": [ { @@ -391,20 +391,20 @@ }, { "cell_type": "markdown", - "id": "ec7021f2", + "id": "14a0cd22", "metadata": {}, "source": [ "Now, we demonstrate the separate process by combining the separate laying and burying steps taken\n", "for the first cable. Note that we have to concatenate two separate sections of the actions log\n", "to highlight this process. For each process the vessel has to \"Position Onsite\", then go on\n", - "with the separate logic. For the burying process, this is much simpler than the intial laying\n", + "with the separate logic. For the burying process, this is much simpler than the initial laying\n", "and cable connection." ] }, { "cell_type": "code", "execution_count": 7, - "id": "a43d93fd", + "id": "0e973899", "metadata": {}, "outputs": [ { @@ -665,7 +665,7 @@ }, { "cell_type": "markdown", - "id": "6ee695fe", + "id": "4bf588c8", "metadata": {}, "source": [ "Similar to the above, when we add trenching as a separate step, we have three discrete stages to\n", @@ -675,7 +675,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "ee42daa8", + "id": "38b3f2d7", "metadata": {}, "outputs": [ { diff --git a/examples/cost_curves.ipynb b/examples/cost_curves.ipynb index 5dc94b44..9e293abb 100644 --- a/examples/cost_curves.ipynb +++ b/examples/cost_curves.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "5a72c7fd", + "id": "8fc8f359", "metadata": {}, "source": [ "# Cost Curve Creator\n", @@ -45,7 +45,7 @@ }, { "cell_type": "markdown", - "id": "9c580c63", + "id": "661c3d7e", "metadata": {}, "source": [ "## Practical Guidance\n", @@ -238,7 +238,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "ab48a882", + "id": "017a5bca", "metadata": {}, "outputs": [], "source": [ @@ -276,7 +276,7 @@ }, { "cell_type": "markdown", - "id": "9497ed24", + "id": "9df266b2", "metadata": {}, "source": [ "## Configuration\n", @@ -287,7 +287,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "ef5993bf", + "id": "381bf3d8", "metadata": {}, "outputs": [], "source": [ @@ -300,7 +300,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "4da58cc1", + "id": "cb6fafc0", "metadata": {}, "outputs": [], "source": [ @@ -316,7 +316,7 @@ }, { "cell_type": "markdown", - "id": "be9c0a3b", + "id": "fcc96ca8", "metadata": {}, "source": [ "## Curve Fit Library" @@ -325,7 +325,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "630d9fd3", + "id": "60d579aa", "metadata": {}, "outputs": [], "source": [ @@ -394,7 +394,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "a4fb841f", + "id": "3b5c6e66", "metadata": {}, "outputs": [], "source": [ @@ -410,7 +410,7 @@ " in ``ParametricManager``. Additionally, the independent variables are extracted\n", " into ``x` and ``y`` (for two-variable parameterizations) and ``z`` is extracted\n", " as the dependent variable. Whether the cost function is 3D or 2D is determined\n", - " by the length of theparameters variable.\n", + " by the length of the parameters variable.\n", "\n", " Parameters\n", " ----------\n", @@ -681,7 +681,7 @@ }, { "cell_type": "markdown", - "id": "d4d6b03b", + "id": "75e74e2d", "metadata": {}, "source": [ "# ORBIT Design Phase Cost Curves\n", @@ -696,7 +696,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "70e92ff2", + "id": "a35ff2c3", "metadata": {}, "outputs": [ { @@ -757,7 +757,7 @@ }, { "cell_type": "markdown", - "id": "c749fc7b", + "id": "371aae17", "metadata": {}, "source": [ "## Semi-Submersible Substructure\n", @@ -772,13 +772,13 @@ { "cell_type": "code", "execution_count": 7, - "id": "20841a85", + "id": "93a14c5c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -822,7 +822,7 @@ }, { "cell_type": "markdown", - "id": "4d8001bd", + "id": "8e2109a9", "metadata": {}, "source": [ "## Mooring System\n", @@ -840,7 +840,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "a8bd2e8e", + "id": "321eb974", "metadata": {}, "outputs": [ { @@ -946,7 +946,7 @@ }, { "cell_type": "markdown", - "id": "58071344", + "id": "4208413f", "metadata": {}, "source": [ "## Array System\n", @@ -962,7 +962,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "7f61969b", + "id": "be9275c7", "metadata": {}, "outputs": [ { @@ -1053,7 +1053,7 @@ { "cell_type": "code", "execution_count": 10, - "id": "ab2e471f", + "id": "9ea04442", "metadata": {}, "outputs": [ { @@ -1130,7 +1130,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "418fbfa9", + "id": "91b17021", "metadata": {}, "outputs": [ { @@ -1181,7 +1181,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "5dc225c0", + "id": "54545a5b", "metadata": {}, "outputs": [ { @@ -1198,7 +1198,7 @@ }, { "cell_type": "markdown", - "id": "0505931f", + "id": "7dad553b", "metadata": {}, "source": [ "## Export System\n", @@ -1214,7 +1214,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "c1450435", + "id": "f76118ff", "metadata": {}, "outputs": [ { @@ -1307,7 +1307,7 @@ }, { "cell_type": "markdown", - "id": "b19ff95b", + "id": "b4887c36", "metadata": {}, "source": [ "## Offshore Floating Substation\n", @@ -1319,7 +1319,7 @@ { "cell_type": "code", "execution_count": 14, - "id": "dfd9141b", + "id": "94313bab", "metadata": {}, "outputs": [ { diff --git a/examples/custom_array.ipynb b/examples/custom_array.ipynb index 11c7ca8c..c0deac6e 100644 --- a/examples/custom_array.ipynb +++ b/examples/custom_array.ipynb @@ -2,13 +2,13 @@ "cells": [ { "cell_type": "markdown", - "id": "f5b563c4", + "id": "7ec5d7e8", "metadata": {}, "source": [ - "(custom-array-layou)=\n", + "(custom-array-layout)=\n", "# Custom Array Cabling Guide\n", "\n", - "## Dudgeon Windfarm\n", + "## Dudgeon Wind Farm\n", "\n", "This guide will walk through four of the main use cases for using the custom array cable layout\n", "functionality of `ORBIT` for when custom turbine locations, cable lengths or burial speeds are needed.\n", @@ -24,7 +24,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "0e1ea871", + "id": "2a331058", "metadata": {}, "outputs": [ { @@ -58,7 +58,7 @@ }, { "cell_type": "markdown", - "id": "3f37cf39", + "id": "df80126e", "metadata": {}, "source": [ "## Contents\n", @@ -90,7 +90,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "8014ac92", + "id": "4cc3b4a4", "metadata": {}, "outputs": [ { @@ -114,7 +114,7 @@ }, { "cell_type": "markdown", - "id": "d09af158", + "id": "6d57136c", "metadata": {}, "source": [ "### Key Differences In A Custom Layout Configuration\n", @@ -135,7 +135,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "f26cd47f", + "id": "9dd1f493", "metadata": {}, "outputs": [ { @@ -232,7 +232,7 @@ }, { "cell_type": "markdown", - "id": "8b611486", + "id": "c0dcfcdb", "metadata": {}, "source": [ "### Custom Array Layout CSV Explanation\n", @@ -252,7 +252,7 @@ " `bury_speed`.\n", "4. Define the turbines\n", " - Each turbine should have a reference to its substation in the `substation_id` column.\n", - " - In this example, there is one substaion, so all of the values are \"DOW_OSS\".\n", + " - In this example, there is one substation, so all of the values are \"DOW_OSS\".\n", " - `string` and `order` should be 0-indexed for their ordering and not skip any numbers.\n", " - In this example, the strings are ordered in clock-wise order starting from the string with\n", " turbines labeled with an \"A\" in the\n", @@ -265,7 +265,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "75ffa2d8", + "id": "806f97bc", "metadata": {}, "outputs": [ { @@ -480,7 +480,7 @@ }, { "cell_type": "markdown", - "id": "dfdee4bb", + "id": "a599aa6c", "metadata": {}, "source": [ "(case_1)=\n", @@ -498,7 +498,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "cfac8033", + "id": "c3201a85", "metadata": {}, "outputs": [ { @@ -534,13 +534,13 @@ }, { "cell_type": "markdown", - "id": "59c10d78", + "id": "ac04c87d", "metadata": {}, "source": [ "There are a few items worth noting in the layout:\n", "\n", "1. The offshore substation (row 0) is indicated via the `id` and `substation_id` columns being equal\n", - "2. For substaions only the `id`, `substation_id`, `name`, `latitude`, and `longitude` are required\n", + "2. For substations only the `id`, `substation_id`, `name`, `latitude`, and `longitude` are required\n", "3. `cable_length` and `bury_speed` are optional columns for turbines\n", "4. `string` and `order` are filled out to maximize the length of a string given the cable(s)\n", " provided, which translates to a maximum of 5 turbines in a string.\n", @@ -550,7 +550,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "28c50a32", + "id": "028546ce", "metadata": {}, "outputs": [], "source": [ @@ -563,7 +563,7 @@ }, { "cell_type": "markdown", - "id": "92d80222", + "id": "8a60225e", "metadata": {}, "source": [ "(case_2)=\n", @@ -581,7 +581,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "71fbf955", + "id": "690e3fbb", "metadata": {}, "outputs": [ { @@ -605,7 +605,7 @@ }, { "cell_type": "markdown", - "id": "4302a72b", + "id": "c056f1d4", "metadata": {}, "source": [ "The below figure demonstrates the meaning of the straight-line distance between two points." @@ -614,7 +614,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "e72e7c3e", + "id": "b58ec71f", "metadata": {}, "outputs": [ { @@ -644,7 +644,7 @@ }, { "cell_type": "markdown", - "id": "9953a5c4", + "id": "5209a3c0", "metadata": {}, "source": [ "Here the cable length and bury speed are still set to 0 to indicate that they are unknown, which\n", @@ -655,7 +655,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "39f5dc50", + "id": "dc46a486", "metadata": {}, "outputs": [ { @@ -918,7 +918,7 @@ }, { "cell_type": "markdown", - "id": "af7164e4", + "id": "4f03c74c", "metadata": {}, "source": [ "For later comparison, we'll show the cabling costs for the straight-line cabling assumption." @@ -927,7 +927,7 @@ { "cell_type": "code", "execution_count": 10, - "id": "65fe5a4f", + "id": "27f133a5", "metadata": {}, "outputs": [ { @@ -952,7 +952,7 @@ }, { "cell_type": "markdown", - "id": "964d5e17", + "id": "269000a1", "metadata": {}, "source": [ "(case_3)=\n", @@ -977,7 +977,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "c17eb505", + "id": "45ef7f83", "metadata": {}, "outputs": [ { @@ -1192,7 +1192,7 @@ }, { "cell_type": "markdown", - "id": "81bc8258", + "id": "ec753c38", "metadata": {}, "source": [ "Using the distance-based location data requires us to set `distance` to True in the\n", @@ -1203,7 +1203,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "f7c94215", + "id": "5688f856", "metadata": {}, "outputs": [ { @@ -1228,20 +1228,20 @@ }, { "cell_type": "markdown", - "id": "50bb3104", + "id": "ba5fc9c6", "metadata": {}, "source": [ "Alternatively, we can set the `distance=True` when calling the `CustomArraySystemDesign`, however\n", "the configuration dictionary's setting will override this input to allow for project-level\n", "configurations to run as expected. Below, we can see some of the cable lengths differ slightly due\n", "to the methodology of converting the WGS-84coordinates to relative points, however the spacing is\n", - "maintained, and we can see that this is still the Dudgeon windfarm." + "maintained, and we can see that this is still the Dudgeon wind farm." ] }, { "cell_type": "code", "execution_count": 13, - "id": "54f172bb", + "id": "49c3b813", "metadata": {}, "outputs": [ { @@ -1271,17 +1271,17 @@ }, { "cell_type": "markdown", - "id": "e86e74e3", + "id": "794981b1", "metadata": {}, "source": [ "Overall, the cabling cost is highly similar, with the difference being attributed to the method\n", - "to convert the WGS-84 coordiantes to relative coordinates." + "to convert the WGS-84 coordinates to relative coordinates." ] }, { "cell_type": "code", "execution_count": 14, - "id": "ae37fa81", + "id": "3599b27f", "metadata": {}, "outputs": [ { @@ -1306,7 +1306,7 @@ }, { "cell_type": "markdown", - "id": "0d775ea7", + "id": "96730e3e", "metadata": {}, "source": [ "(case_4)=\n", @@ -1328,7 +1328,7 @@ { "cell_type": "code", "execution_count": 15, - "id": "60bbeb9b", + "id": "686121b4", "metadata": {}, "outputs": [ { @@ -1365,7 +1365,7 @@ { "cell_type": "code", "execution_count": 16, - "id": "fa018a23", + "id": "29c42ee9", "metadata": {}, "outputs": [ { @@ -1390,7 +1390,7 @@ }, { "cell_type": "markdown", - "id": "ecd7225e", + "id": "941f89ad", "metadata": {}, "source": [ "(case_5)=\n", @@ -1404,7 +1404,7 @@ "columns will be used. Please note this work was performed outside the example, and we will only\n", "show the resulting configurations.\n", "\n", - "For this example, half of the windfarm will have different soil condition, so we will use our proxy:\n", + "For this example, half of the wind farm will have different soil condition, so we will use our proxy:\n", "`bury_speed` by modifying the burial speed to be fast (0.5 km/h) and slow (0.05 km/hr),\n", "respectively, to account for sandy soil and rocky soil. The purpose of this is for passing through\n", "customized parameters in the design phase to be utilized in the installation phase as will be seen\n", @@ -1414,7 +1414,7 @@ { "cell_type": "code", "execution_count": 17, - "id": "ebf01a97", + "id": "8939aea2", "metadata": {}, "outputs": [ { @@ -1441,7 +1441,7 @@ }, { "cell_type": "markdown", - "id": "e9de3884", + "id": "bdb32786", "metadata": {}, "source": [ "Note that there are now cable lengths defined as well as burial speeds for the installation phase." @@ -1450,7 +1450,7 @@ { "cell_type": "code", "execution_count": 18, - "id": "9255aa54", + "id": "b2edb4b2", "metadata": {}, "outputs": [ { @@ -1713,7 +1713,7 @@ }, { "cell_type": "markdown", - "id": "adcfc729", + "id": "00451c02", "metadata": {}, "source": [ "Once again, the cabling costs have increased." @@ -1722,7 +1722,7 @@ { "cell_type": "code", "execution_count": 19, - "id": "c1ce2679", + "id": "7c715676", "metadata": {}, "outputs": [ { @@ -1747,7 +1747,7 @@ }, { "cell_type": "markdown", - "id": "75b930cd", + "id": "92ad8d9e", "metadata": {}, "source": [ "(running)=\n", @@ -1766,7 +1766,7 @@ { "cell_type": "code", "execution_count": 20, - "id": "a2dd2906", + "id": "e5a9c732", "metadata": {}, "outputs": [], "source": [ @@ -1792,7 +1792,7 @@ }, { "cell_type": "markdown", - "id": "99fb8056", + "id": "0a422456", "metadata": {}, "source": [ "### Run And Inspect The Simulation Results\n", @@ -1805,7 +1805,7 @@ { "cell_type": "code", "execution_count": 21, - "id": "9e320f09", + "id": "1b57c9fc", "metadata": {}, "outputs": [ { @@ -1818,14 +1818,6 @@ "with exclusions | $24,784,480.17 | 2,391\n", "custom | $31,792,520.58 | 3,088\n" ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "with exclusions | $24,784,480.17 | 2,391\n", - "custom | $31,792,520.58 | 3,088\n" - ] } ], "source": [ @@ -1842,13 +1834,13 @@ }, { "cell_type": "markdown", - "id": "9309c34c", + "id": "df3ecc51", "metadata": {}, "source": [ "(project_manager)=\n", "### Incorporating Case 5 Into `ProjectManager`\n", "\n", - "We will now incorporate the desgin settings from [Case 5](#case_5) to demonstrate incorporation\n", + "We will now incorporate the design settings from [Case 5](#case_5) to demonstrate incorporation\n", "of the custom array design tooling into `ProjectManager`. This example will use the\n", "[`library/project/config/example_custom_array_project_manager.yaml`](https://github.com/NLRWindSystems/ORBIT/tree/main/library/project/config/example_custom_array_project_manager.yaml)\n", "configuration." @@ -1857,7 +1849,7 @@ { "cell_type": "code", "execution_count": 22, - "id": "0a270833", + "id": "bcb78ec2", "metadata": {}, "outputs": [ { @@ -1919,7 +1911,7 @@ }, { "cell_type": "markdown", - "id": "345b78e2", + "id": "4bfb6481", "metadata": {}, "source": [ "Below, we can see that the results coming from the `ProjectManager` are the same as the additive\n", @@ -1929,7 +1921,7 @@ { "cell_type": "code", "execution_count": 23, - "id": "c867550f", + "id": "62adc0cb", "metadata": {}, "outputs": [ { diff --git a/examples/export_cable_system.ipynb b/examples/export_cable_system.ipynb index b47da63a..2bea13bd 100644 --- a/examples/export_cable_system.ipynb +++ b/examples/export_cable_system.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "8d34989f", + "id": "d7306a2a", "metadata": {}, "source": [ "# HVAC vs HVDC Systems\n", @@ -17,7 +17,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "ffec497e", + "id": "90fa2c68", "metadata": {}, "outputs": [], "source": [ @@ -37,13 +37,13 @@ }, { "cell_type": "markdown", - "id": "15556700", + "id": "a05d0ffa", "metadata": {}, "source": [ "## Setup The Models\n", "\n", "Here we will setup a base configuration for use with `ProjectManager` plus additional configurations\n", - "for running in the `ParametericManager` to look at the cost tradeoffs in export cable types\n", + "for running in the `ParametricManager` to look at the cost tradeoffs in export cable types\n", "depending on project size.\n", "Config must include all required variables except those you plan to vary. In this example, we will be manually vary the cable type and then use the `ParametricManager` to vary cable type and plant capacity." ] @@ -51,7 +51,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "746d2a89", + "id": "73427895", "metadata": {}, "outputs": [], "source": [ @@ -80,7 +80,7 @@ }, { "cell_type": "markdown", - "id": "b16269fd", + "id": "d1821bf3", "metadata": {}, "source": [ "Now we can create an HVAC and HVDC variation of the `base_config`" @@ -89,7 +89,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "cbd14783", + "id": "a5f3896b", "metadata": {}, "outputs": [ { @@ -121,7 +121,7 @@ }, { "cell_type": "markdown", - "id": "860aa6b4", + "id": "b200ee20", "metadata": {}, "source": [ "## Compare the Results" @@ -130,7 +130,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "1bec2d97", + "id": "d4cbcf5e", "metadata": {}, "outputs": [ { @@ -150,7 +150,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "0dffa8f9", + "id": "64f378ba", "metadata": {}, "outputs": [ { @@ -264,7 +264,7 @@ }, { "cell_type": "markdown", - "id": "69691f8f", + "id": "f3b152f3", "metadata": {}, "source": [ "## Setup The Parametric Runs\n", @@ -278,7 +278,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "f87d025a", + "id": "68585685", "metadata": {}, "outputs": [], "source": [ @@ -299,7 +299,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "61ff94bd", + "id": "0c519009", "metadata": {}, "outputs": [], "source": [ @@ -311,7 +311,7 @@ }, { "cell_type": "markdown", - "id": "b31bbd2a", + "id": "b28b203e", "metadata": {}, "source": [ "## Compare the Cost vs Capacity Trade Off\n", @@ -326,7 +326,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "a9acdcbe", + "id": "df4c3e2a", "metadata": {}, "outputs": [], "source": [ @@ -339,7 +339,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "fa0af890", + "id": "a9b037ec", "metadata": {}, "outputs": [ { @@ -385,19 +385,19 @@ }, { "cell_type": "markdown", - "id": "3bb22e8c", + "id": "d28a0807", "metadata": {}, "source": [ "Comparing the below figure to the CapEx figure above, highlights that CapEx increases for the HVDC\n", "system correspond to an increase in the number of substations (each requires a single cable),\n", "whereas for HVAC system, these increases primarily correspond to an increase in the number of export\n", - "cables with a smaller increase stemming from the substation requiremensts." + "cables with a smaller increase stemming from the substation requirements." ] }, { "cell_type": "code", "execution_count": 10, - "id": "dcf70e60", + "id": "97bfa284", "metadata": {}, "outputs": [ { diff --git a/examples/fixed_bottom_installations.ipynb b/examples/fixed_bottom_installations.ipynb index e320f1ce..79a5d123 100644 --- a/examples/fixed_bottom_installations.ipynb +++ b/examples/fixed_bottom_installations.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "ee4d73af", + "id": "369263a3", "metadata": {}, "source": [ "# Fixed-Bottom Substructure Installation Models in ORBIT\n", @@ -24,14 +24,14 @@ { "cell_type": "code", "execution_count": 1, - "id": "75981bc6", + "id": "1149c6a4", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "UserWarning: /var/folders/q5/tfpytqxn0r396dfg7rk5sj8rwq9tvv/T/ipykernel_80870/691410628.py:28\n", + "UserWarning: /var/folders/q5/tfpytqxn0r396dfg7rk5sj8rwq9tvv/T/ipykernel_8879/691410628.py:28\n", "Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n" ] } @@ -71,7 +71,7 @@ }, { "cell_type": "markdown", - "id": "f8d3cf40", + "id": "39ead540", "metadata": {}, "source": [ "## Load The Configurations\n", @@ -84,7 +84,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "8e3e4002", + "id": "710386db", "metadata": {}, "outputs": [], "source": [ @@ -98,7 +98,7 @@ }, { "cell_type": "markdown", - "id": "55129831", + "id": "4594a70f", "metadata": {}, "source": [ "The primary differences between these projects deal with the installation strategies, and\n", @@ -115,7 +115,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "528d93ed", + "id": "ad20cc9e", "metadata": {}, "outputs": [ { @@ -125,10 +125,10 @@ "Monopile and Turbine Installation (Heavy Lift Vessel for Monopile Installation, WTIV for Turbine Installation)\n", "Install phases: ['ArrayCableInstallation', 'ExportCableInstallation', 'TurbineInstallation', 'OffshoreSubstationInstallation', 'ScourProtectionInstallation', 'MonopileInstallation']\n", "\n", - "Gravity-Based Foundation Intallation (Substructure-Turbine Assembly Tow-out, no WTIV)\n", + "Gravity-Based Foundation Installation (Substructure-Turbine Assembly Tow-out, no WTIV)\n", "Install phases: ['ArrayCableInstallation', 'ExportCableInstallation', 'GravityBasedInstallation', 'OffshoreSubstationInstallation']\n", "\n", - "Gravity-Based Foundation and Turbine Intallation (Substructure Tow-out, WTIV for Turbine Installation)\n", + "Gravity-Based Foundation and Turbine Installation (Substructure Tow-out, WTIV for Turbine Installation)\n", "Install phases: ['ArrayCableInstallation', 'ExportCableInstallation', 'GravityBasedInstallation', 'OffshoreSubstationInstallation', 'TurbineInstallation']\n" ] } @@ -136,15 +136,15 @@ "source": [ "print(f\"Monopile and Turbine Installation (Heavy Lift Vessel for Monopile Installation, WTIV for Turbine Installation)\")\n", "print(f\"Install phases: {list(case1_config['install_phases'].keys())}\\n\")\n", - "print(f\"Gravity-Based Foundation Intallation (Substructure-Turbine Assembly Tow-out, no WTIV)\")\n", + "print(f\"Gravity-Based Foundation Installation (Substructure-Turbine Assembly Tow-out, no WTIV)\")\n", "print(f\"Install phases: {list(case2_config['install_phases'].keys())}\\n\")\n", - "print(f\"Gravity-Based Foundation and Turbine Intallation (Substructure Tow-out, WTIV for Turbine Installation)\")\n", + "print(f\"Gravity-Based Foundation and Turbine Installation (Substructure Tow-out, WTIV for Turbine Installation)\")\n", "print(f\"Install phases: {list(case3_config['install_phases'].keys())}\\n\")" ] }, { "cell_type": "markdown", - "id": "39cf8f44", + "id": "1c02d83a", "metadata": {}, "source": [ "## Run The Three Cases\n", @@ -155,7 +155,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "6b440830", + "id": "58dbb2ed", "metadata": {}, "outputs": [ { @@ -179,7 +179,7 @@ }, { "cell_type": "markdown", - "id": "60adff75", + "id": "82123c97", "metadata": {}, "source": [ "## Results Comparison\n", @@ -190,7 +190,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "4fee78e7", + "id": "bbe5424a", "metadata": {}, "outputs": [ { @@ -406,7 +406,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "5b7fee1f", + "id": "c4ff7ffa", "metadata": {}, "outputs": [], "source": [ @@ -508,7 +508,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "49182c4b", + "id": "402fc29d", "metadata": {}, "outputs": [ { @@ -528,7 +528,7 @@ }, { "cell_type": "markdown", - "id": "e9594138", + "id": "516b4da3", "metadata": {}, "source": [ "### Substructure and Turbine Installation CapEx Breakdown" @@ -537,7 +537,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "4c4659bb", + "id": "198ebb04", "metadata": {}, "outputs": [ { @@ -622,7 +622,7 @@ }, { "cell_type": "markdown", - "id": "0ab92db8", + "id": "223c7cc2", "metadata": {}, "source": [ "### Comparing Installation Timing\n", @@ -637,7 +637,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "7bee3bf9", + "id": "5acbdc7c", "metadata": {}, "outputs": [ { diff --git a/examples/introduction.ipynb b/examples/introduction.ipynb index c13e2366..7dc1b3aa 100644 --- a/examples/introduction.ipynb +++ b/examples/introduction.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "b85fa3b0", + "id": "e53439fb", "metadata": {}, "source": [ "(intro-tutorial)=\n", @@ -22,7 +22,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "4e9dd69a", + "id": "942349cf", "metadata": {}, "outputs": [], "source": [ @@ -37,7 +37,7 @@ }, { "cell_type": "markdown", - "id": "83f4828f", + "id": "ebb63f53", "metadata": {}, "source": [ "While this introduction will focus on the monopile design and installation to highlight working with\n", @@ -48,7 +48,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "991c5dcc", + "id": "1d473d97", "metadata": {}, "outputs": [ { @@ -76,7 +76,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "89e91b49", + "id": "d9237d00", "metadata": {}, "outputs": [ { @@ -103,7 +103,7 @@ }, { "cell_type": "markdown", - "id": "0013b2fb", + "id": "58fb1afd", "metadata": {}, "source": [ "## Configuration Basics\n", @@ -111,7 +111,7 @@ "Each model has a property `expected_config` that provides basic information about the required and\n", "optional inputs for the model. Notice that for each input there is a provided data type, an\n", "indication if the parameter is optional, and any nested dictionary configurations are fully mapped\n", - "in the same way as individal parameters. Below, we can see the expected configurations for both\n", + "in the same way as individual parameters. Below, we can see the expected configurations for both\n", "the monopile design and installation classes. It should be noted that when combining complimentary\n", "design and installation phases for a component, that the design model will provide most of the\n", "installation inputs as a `design_result` (more details in the `ProjectManager` introduction)." @@ -120,7 +120,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "175b8b4d", + "id": "213ca50b", "metadata": {}, "outputs": [ { @@ -158,7 +158,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "9cfe47ff", + "id": "2363d52d", "metadata": {}, "outputs": [ { @@ -194,7 +194,7 @@ }, { "cell_type": "markdown", - "id": "35bb55ce", + "id": "94b9715d", "metadata": {}, "source": [ "### Design Models\n", @@ -210,7 +210,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "d9514c64", + "id": "311cf22f", "metadata": {}, "outputs": [], "source": [ @@ -233,7 +233,7 @@ }, { "cell_type": "markdown", - "id": "9ee45f96", + "id": "29c951e9", "metadata": {}, "source": [ "Similar to `expected_config`, every design and installation model contains a `run` method that runs\n", @@ -243,7 +243,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "7ca24767", + "id": "6a14df13", "metadata": {}, "outputs": [ { @@ -278,7 +278,7 @@ }, { "cell_type": "markdown", - "id": "3271369d", + "id": "d904725c", "metadata": {}, "source": [ "### Incomplete or Incorrect Configurations\n", @@ -294,7 +294,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "4beed079", + "id": "74053bbb", "metadata": {}, "outputs": [ { @@ -320,7 +320,7 @@ }, { "cell_type": "markdown", - "id": "c8471e9b", + "id": "1e40c777", "metadata": {}, "source": [ "### Optional Inputs\n", @@ -334,7 +334,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "b80f7d55", + "id": "8fc55716", "metadata": {}, "outputs": [ { @@ -389,7 +389,7 @@ }, { "cell_type": "markdown", - "id": "e4844761", + "id": "cb674622", "metadata": {}, "source": [ "### Installation Phases\n", @@ -402,14 +402,14 @@ "logistics.\n", "\n", "Using the output from the above example, we can add further configurations. Note that ORBIT provides\n", - "a series of default vessls in `library/vessels/` to support all possible installation strategies.\n", + "a series of default vessels in `library/vessels/` to support all possible installation strategies.\n", "For more details on vessel configurations, please see the [vessels section](#vessels)." ] }, { "cell_type": "code", "execution_count": 10, - "id": "e0c317ed", + "id": "3ddc6164", "metadata": {}, "outputs": [ { @@ -525,7 +525,7 @@ }, { "cell_type": "markdown", - "id": "73ef9a82", + "id": "252c9fdb", "metadata": {}, "source": [ "### Loading and Saving Configurations\n", @@ -553,7 +553,7 @@ "[internal library](https://github.com/NLRWindSystems/ORBIT/tree/main/library) when a user-provided\n", "library path is not provided (i.e. a value isn't provide so the default `None` is used in\n", "`ProjectManager(config, library_path=None)`). When a value is provided, user library files will be\n", - "searched for first, and the default library will be checked for any unfound files.\n", + "searched for first, and the default library will be checked for any files that were not found.\n", "\n", "This is made visible in the [installation phases section](#installation-phases) where the value\n", "\"example_wtiv\" is provided to the \"wtiv\" key. When the configuration is loaded, `ProjectManager`\n", @@ -565,8 +565,8 @@ "\u251c\u2500\u2500 defaults <- Top-level default data\n", "\u251c\u2500\u2500 project\n", "\u2502 \u251c\u2500\u2500 config <- Configuration dictionary repository\n", - "\u2502 \u251c\u2500\u2500 port <- Port specific data setttings\n", - "\u2502 \u251c\u2500\u2500 plant <- Wind farm specific data setttings\n", + "\u2502 \u251c\u2500\u2500 port <- Port specific data settings\n", + "\u2502 \u251c\u2500\u2500 plant <- Wind farm specific data settings\n", "\u2502 \u251c\u2500\u2500 site <- Project site data settings\n", "\u2502 \u251c\u2500\u2500 development <- Project development cost settings\n", "\u251c\u2500\u2500 cables <- Cable data files: array cables, export cables\n", @@ -609,7 +609,7 @@ " - `leg_length`: Length of the jackup vessel's legs, m.\n", " - `air_gap`: Distance between sea level and the vessel bottom when fully jacked up, m.\n", " - `leg_pen`: How far the leg penetrates the sea floor for stability, m.\n", - " - `max_depth`: Maxium water depth, m.\n", + " - `max_depth`: Maximum water depth, m.\n", " - `max_extension`: Maximum leg extension, m.\n", " - `speed_below_depth`: Jackup speed when leg extension has not reached the sea floor, m/min\n", " - `speed_above_depth`: Jackup speed after the leg has reached the sea floor and the vessel is\n", @@ -644,7 +644,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "d6d4cc90", + "id": "e29c7283", "metadata": {}, "outputs": [ { @@ -747,18 +747,18 @@ }, { "cell_type": "markdown", - "id": "bf59883e", + "id": "4807920e", "metadata": {}, "source": [ "Now, we can combine the monopile design and installation configurations that were\n", - "used in the previous examples, and run the model to get a single CapEx alongsie the\n", + "used in the previous examples, and run the model to get a single CapEx alongside the\n", "high level category breakdown." ] }, { "cell_type": "code", "execution_count": 12, - "id": "bf1633b9", + "id": "f0880c57", "metadata": {}, "outputs": [ { @@ -808,7 +808,7 @@ }, { "cell_type": "markdown", - "id": "55869dd3", + "id": "6316aadd", "metadata": {}, "source": [ "To continue with the previous subsection's demonstration, we can also save the final configuration\n", @@ -818,7 +818,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "0e904497", + "id": "6ae1cef7", "metadata": {}, "outputs": [ { diff --git a/examples/parametric_manager.ipynb b/examples/parametric_manager.ipynb index 8ea498f2..41cfd15d 100644 --- a/examples/parametric_manager.ipynb +++ b/examples/parametric_manager.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "030ffe73", + "id": "d2472c06", "metadata": {}, "source": [ "(parametric-manager-tutorial)=\n", @@ -11,7 +11,7 @@ "Similar to the `ProjectManager`, ORIBT provides the `ParametricManager` to run simple parametric\n", "studies by defining a subset of the inputs as a list. This allows for tradeoff studies to compare\n", "the effects of siting (e.g., water depth and distance) on cost and installation timing. For complete\n", - "details on using the `ParmetricManager` please see the [API documentation](#parametric-manager-api).\n", + "details on using the `ParametricManager` please see the [API documentation](#parametric-manager-api).\n", "\n", "First, we'll import the necessary libraries, and load the example fixed-bottom project to use as\n", "our project base with the 15 MW turbine." @@ -20,7 +20,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "6e0ff03a", + "id": "e6d20f00", "metadata": {}, "outputs": [], "source": [ @@ -52,7 +52,7 @@ }, { "cell_type": "markdown", - "id": "cf9d5c39", + "id": "3e37915c", "metadata": {}, "source": [ "## Setting Up The Parameterized Inputs\n", @@ -66,7 +66,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "01835554", + "id": "55c5d697", "metadata": {}, "outputs": [], "source": [ @@ -78,7 +78,7 @@ }, { "cell_type": "markdown", - "id": "9869e251", + "id": "dc7ab8e5", "metadata": {}, "source": [ "Similar to the parameterized inputs, we must also define the desired outputs. However, outputs must\n", @@ -89,7 +89,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "9af934fd", + "id": "f7e8ab71", "metadata": {}, "outputs": [], "source": [ @@ -101,7 +101,7 @@ }, { "cell_type": "markdown", - "id": "1ff77b2a", + "id": "5c452568", "metadata": {}, "source": [ "## Previewing and Running The Model\n", @@ -113,14 +113,14 @@ "Setting `product` to `True` means that all of the parameters will be run as a combination of all\n", "possible permutations rather than a zipped list. When using `False` extra care must be taken to\n", "ensure the correct outcomes will be achieved by using equally-lengthed parameterizations. For\n", - "instacnce, in our current example, the shortest parameterization has only 3 values, so the first\n", + "instance, in our current example, the shortest parameterization has only 3 values, so the first\n", "3 values of `depth` and `distance` will be selected for the parameterized run." ] }, { "cell_type": "code", "execution_count": 4, - "id": "6f1b4d31", + "id": "3880b4bd", "metadata": {}, "outputs": [ { @@ -128,16 +128,16 @@ "output_type": "stream", "text": [ "ORBIT library intialized at '/Users/rhammond/GitHub_Public/ORBIT/library'\n", - "10 runs elapsed time: 3.67s\n", - "70 runs estimated time: 25.70s\n" + "10 runs elapsed time: 3.63s\n", + "70 runs estimated time: 25.44s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "10 runs elapsed time: 3.67s\n", - "70 runs estimated time: 25.70s\n" + "10 runs elapsed time: 3.63s\n", + "70 runs estimated time: 25.44s\n" ] }, { @@ -170,73 +170,73 @@ " \n", " \n", " 0\n", - " 40\n", - " 200\n", - " 3.552323e+08\n", - " 1.173294e+09\n", + " 20\n", + " 80\n", + " 3.256519e+08\n", + " 1.061392e+09\n", " \n", " \n", " 1\n", - " 10\n", - " 120\n", - " 3.303689e+08\n", - " 1.008934e+09\n", + " 30\n", + " 40\n", + " 3.126626e+08\n", + " 1.116196e+09\n", " \n", " \n", " 2\n", " 10\n", - " 60\n", - " 3.173222e+08\n", + " 160\n", + " 3.401039e+08\n", " 1.008934e+09\n", " \n", " \n", " 3\n", - " 10\n", - " 100\n", - " 3.273726e+08\n", - " 1.008934e+09\n", + " 50\n", + " 80\n", + " 3.314040e+08\n", + " 1.232635e+09\n", " \n", " \n", " 4\n", - " 50\n", - " 40\n", - " 3.160221e+08\n", - " 1.232635e+09\n", + " 30\n", + " 180\n", + " 3.485496e+08\n", + " 1.116196e+09\n", " \n", " \n", " 5\n", " 20\n", - " 180\n", - " 3.478866e+08\n", + " 160\n", + " 3.428775e+08\n", " 1.061392e+09\n", " \n", " \n", " 6\n", - " 60\n", - " 120\n", - " 3.471536e+08\n", - " 1.294177e+09\n", + " 30\n", + " 200\n", + " 3.501844e+08\n", + " 1.116196e+09\n", " \n", " \n", " 7\n", - " 30\n", - " 40\n", - " 3.126626e+08\n", - " 1.116196e+09\n", + " 10\n", + " 140\n", + " 3.348771e+08\n", + " 1.008934e+09\n", " \n", " \n", " 8\n", + " 70\n", " 60\n", - " 140\n", - " 3.536998e+08\n", - " 1.294177e+09\n", + " 3.268419e+08\n", + " 1.357158e+09\n", " \n", " \n", " 9\n", - " 20\n", - " 100\n", - " 3.296871e+08\n", - " 1.061392e+09\n", + " 30\n", + " 60\n", + " 3.189053e+08\n", + " 1.116196e+09\n", " \n", " \n", "\n", @@ -244,16 +244,16 @@ ], "text/plain": [ " site.depth site.distance Installation System\n", - "0 40 200 3.552323e+08 1.173294e+09\n", - "1 10 120 3.303689e+08 1.008934e+09\n", - "2 10 60 3.173222e+08 1.008934e+09\n", - "3 10 100 3.273726e+08 1.008934e+09\n", - "4 50 40 3.160221e+08 1.232635e+09\n", - "5 20 180 3.478866e+08 1.061392e+09\n", - "6 60 120 3.471536e+08 1.294177e+09\n", - "7 30 40 3.126626e+08 1.116196e+09\n", - "8 60 140 3.536998e+08 1.294177e+09\n", - "9 20 100 3.296871e+08 1.061392e+09" + "0 20 80 3.256519e+08 1.061392e+09\n", + "1 30 40 3.126626e+08 1.116196e+09\n", + "2 10 160 3.401039e+08 1.008934e+09\n", + "3 50 80 3.314040e+08 1.232635e+09\n", + "4 30 180 3.485496e+08 1.116196e+09\n", + "5 20 160 3.428775e+08 1.061392e+09\n", + "6 30 200 3.501844e+08 1.116196e+09\n", + "7 10 140 3.348771e+08 1.008934e+09\n", + "8 70 60 3.268419e+08 1.357158e+09\n", + "9 30 60 3.189053e+08 1.116196e+09" ] }, "execution_count": 4, @@ -269,7 +269,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "c926cbc2", + "id": "b305b043", "metadata": {}, "outputs": [], "source": [ @@ -278,7 +278,7 @@ }, { "cell_type": "markdown", - "id": "d9d5b19a", + "id": "b21bc479", "metadata": {}, "source": [ "The results are saved as a pandas DataFrame in the `results` attribute where each row represents a\n", @@ -296,7 +296,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "38617f00", + "id": "3bd62bd2", "metadata": {}, "outputs": [], "source": [ @@ -307,7 +307,7 @@ }, { "cell_type": "markdown", - "id": "62bc4e3d", + "id": "31728213", "metadata": {}, "source": [ "As mentioned in the [`ProjectManager` tutorial](#project-manager-tutorial), the system CapEx will\n", @@ -318,7 +318,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "c0012b37", + "id": "cc5e6425", "metadata": {}, "outputs": [ { @@ -358,7 +358,7 @@ }, { "cell_type": "markdown", - "id": "96593c3b", + "id": "6c3f10c1", "metadata": {}, "source": [ "The system CapEx in this example does not change with site distance. The increase in system CapEx\n", @@ -368,7 +368,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "76804bd0", + "id": "708d9640", "metadata": {}, "outputs": [ { diff --git a/examples/project_manager.ipynb b/examples/project_manager.ipynb index 447a93be..8ca990b6 100644 --- a/examples/project_manager.ipynb +++ b/examples/project_manager.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "40f26563", + "id": "38008547", "metadata": {}, "source": [ "(project-manager-tutorial)=\n", @@ -16,7 +16,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "493daf61", + "id": "5ea7599c", "metadata": {}, "outputs": [], "source": [ @@ -44,7 +44,7 @@ }, { "cell_type": "markdown", - "id": "0ae279af", + "id": "0da24958", "metadata": {}, "source": [ "## Compiling Input Requirements Dynamically\n", @@ -58,7 +58,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "1bac9038", + "id": "ce0333b7", "metadata": {}, "outputs": [ { @@ -172,7 +172,7 @@ }, { "cell_type": "markdown", - "id": "9afe6886", + "id": "786a864f", "metadata": {}, "source": [ "Using the results of the `expected_config`, the following configuration is now created to minimally\n", @@ -184,7 +184,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "3fe91517", + "id": "5ac49bee", "metadata": {}, "outputs": [ { @@ -240,7 +240,7 @@ }, { "cell_type": "markdown", - "id": "a03b910a", + "id": "cf3dc6c6", "metadata": {}, "source": [ "## Weather Profiles\n", @@ -253,7 +253,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "d0b9e892", + "id": "d330c207", "metadata": {}, "outputs": [], "source": [ @@ -265,7 +265,7 @@ }, { "cell_type": "markdown", - "id": "f6e6d1d3", + "id": "8f9a65cc", "metadata": {}, "source": [ "## Accessing Individual Models\n", @@ -278,7 +278,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "7d0bb0c7", + "id": "7e8b58b9", "metadata": {}, "outputs": [ { @@ -296,7 +296,7 @@ }, { "cell_type": "markdown", - "id": "f2c7bbbd", + "id": "1bc61096", "metadata": {}, "source": [ "## Phase-Specific Configurations\n", @@ -388,7 +388,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "c5aca8db", + "id": "90f7bc9f", "metadata": {}, "outputs": [], "source": [ @@ -450,7 +450,7 @@ }, { "cell_type": "markdown", - "id": "924b34e7", + "id": "d982b298", "metadata": {}, "source": [ "Now, we can make a quick visualization to see how the start timing plays out. Notice how the\n", @@ -462,7 +462,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "b8ab1555", + "id": "20a59f1d", "metadata": {}, "outputs": [ { @@ -495,7 +495,7 @@ }, { "cell_type": "markdown", - "id": "b1f6af13", + "id": "38afaf6c", "metadata": {}, "source": [ "(phase-dependent-timing)=\n", @@ -510,7 +510,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "971afa48", + "id": "2e090ed0", "metadata": {}, "outputs": [ { diff --git a/examples/supply_chains.ipynb b/examples/supply_chains.ipynb index d2ff882a..67f4fe7d 100644 --- a/examples/supply_chains.ipynb +++ b/examples/supply_chains.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "2582dbd4", + "id": "075dc089", "metadata": {}, "source": [ "# Modeling Supply Chains\n", @@ -18,14 +18,14 @@ { "cell_type": "code", "execution_count": 1, - "id": "64254049", + "id": "a7a05d8f", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "UserWarning: /var/folders/q5/tfpytqxn0r396dfg7rk5sj8rwq9tvv/T/ipykernel_81014/3771038313.py:23\n", + "UserWarning: /var/folders/q5/tfpytqxn0r396dfg7rk5sj8rwq9tvv/T/ipykernel_9103/3771038313.py:23\n", "Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.\n" ] } @@ -60,7 +60,7 @@ }, { "cell_type": "markdown", - "id": "c28a82d1", + "id": "8300f3b4", "metadata": {}, "source": [ "## Preparing The Cases\n", @@ -75,7 +75,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "288c6d1f", + "id": "695b6090", "metadata": {}, "outputs": [ { @@ -122,7 +122,7 @@ }, { "cell_type": "markdown", - "id": "e5df4077", + "id": "f884b42a", "metadata": {}, "source": [ "## Comparing Results\n", @@ -133,7 +133,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "e1ed148c", + "id": "72cdf9cb", "metadata": {}, "outputs": [ { @@ -154,7 +154,7 @@ }, { "cell_type": "markdown", - "id": "073cc099", + "id": "67bb4234", "metadata": {}, "source": [ "### Installation Timing\n", @@ -167,7 +167,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "5ad74435", + "id": "044813cb", "metadata": {}, "outputs": [], "source": [ @@ -196,7 +196,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "2bbad375", + "id": "e84e0ed1", "metadata": {}, "outputs": [ { @@ -257,7 +257,7 @@ }, { "cell_type": "markdown", - "id": "2ffae9f7", + "id": "38579f95", "metadata": {}, "source": [ "### Port Storage" @@ -266,14 +266,14 @@ { "cell_type": "code", "execution_count": 6, - "id": "2fe8dfec", + "id": "1a7796fd", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "UserWarning: /var/folders/q5/tfpytqxn0r396dfg7rk5sj8rwq9tvv/T/ipykernel_81014/3727144123.py:34\n", + "UserWarning: /var/folders/q5/tfpytqxn0r396dfg7rk5sj8rwq9tvv/T/ipykernel_9103/3727144123.py:34\n", "FigureCanvasAgg is non-interactive, and thus cannot be shown\n" ] },