diff --git a/.flake8 b/.flake8 deleted file mode 100644 index 93563482..00000000 --- a/.flake8 +++ /dev/null @@ -1,5 +0,0 @@ -[flake8] -ignore = E731,E402,F,W504,W503 -exclude = .git,__pycache__,docs/source/conf.py,old,build,dist -max-complexity = 10 -max-line-length=79 diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 00000000..dd6e4c3f --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1,3 @@ +# Adopting ruff in place of flake8 & pylint, and cleaning up the previously ignored errors +faeab2d971c6de9d1afbb7f8b63c0c8dfc4c85ec +66a52fa234cb3296a28b06cb2f5ccf42637326bb diff --git a/.github/workflows/gh_pages.yml b/.github/workflows/gh_pages.yml index 96e087f6..6940eafc 100644 --- a/.github/workflows/gh_pages.yml +++ b/.github/workflows/gh_pages.yml @@ -8,11 +8,11 @@ jobs: make-pages: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: select python version - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: - python-version: '3.8' + python-version: '3.10' - name: install dependencies run: | python -m pip install --upgrade pip diff --git a/.github/workflows/publish-to-pypi.yml b/.github/workflows/publish-to-pypi.yml index ee92f5f4..ff0d2f36 100644 --- a/.github/workflows/publish-to-pypi.yml +++ b/.github/workflows/publish-to-pypi.yml @@ -1,25 +1,35 @@ -name: Upload to PyPi +# This workflow will upload a Python Package using Twine when a release is created +# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries -on: push +name: Deploy to PyPI + +on: + release: + types: [published] jobs: - deploy: + release-pypi: + environment: release + # Upload to PyPI on every published release + if: github.event.action == 'published' runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.7 - uses: actions/setup-python@v2 - with: - python-version: 3.7 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install setuptools wheel twine - - name: Build and publish - if: startsWith(github.ref, 'refs/tags/v') - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} - run: | - python setup.py sdist bdist_wheel - twine upload dist/* + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: Build package + run: | + python -m pip install --upgrade pip + pip install setuptools build wheel twine + python -m build + twine check --strict dist/* + + - name: Publish package to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + verbose: True diff --git a/.github/workflows/publish-to-test-pypi.yml b/.github/workflows/publish-to-test-pypi.yml new file mode 100644 index 00000000..d7407ab8 --- /dev/null +++ b/.github/workflows/publish-to-test-pypi.yml @@ -0,0 +1,37 @@ +# This workflow will upload a Python Package using Twine when a release is created +# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries + +name: Deploy to Test PyPI + +on: + push: + tags: + - 'v*' + +jobs: + release-test-pypi: + # Upload to Test PyPI on every pushed tag. + environment: release + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: Build package + run: | + python -m pip install --upgrade pip + pip install setuptools build wheel twine + python -m build + twine check --strict dist/* + + - name: Publish package to Test PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + verbose: True + repository-url: https://test.pypi.org/legacy/ diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index bf1b9868..e0aa614d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,15 +12,17 @@ jobs: max-parallel: 3 matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: [3.7, 3.8] + python-version: ['3.9', '3.10', '3.11'] + exclude: + - os: macos-latest + python-version: '3.9' + - os: macos-latest + python-version: '3.10' steps: - - uses: actions/checkout@v2 - with: - ref: ${{ github.event.pull_request.head.ref }} - fetch-depth: 1 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install dependencies diff --git a/.isort.cfg b/.isort.cfg deleted file mode 100644 index 558bcb28..00000000 --- a/.isort.cfg +++ /dev/null @@ -1,9 +0,0 @@ -[settings] -multi_line_output=3 -include_trailing_comma=True -force_grid_wrap=0 -use_parentheses=True -line_length=79 -sections=FUTURE,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER -known_first_party=ORBIT,tests,library -length_sort=1 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 84ca9757..f315b7db 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,20 +2,19 @@ ci: skip: [isort, black, pylint] repos: -- repo: https://github.com/timothycrosley/isort - rev: 4.3.21 +- repo: https://github.com/pycqa/isort + rev: 5.13.2 hooks: - - id: isort - name: isort - stages: [commit] + - id: isort + name: isort (python) - repo: https://github.com/psf/black - rev: stable + rev: 24.2.0 hooks: - - id: black - name: black - stages: [commit] - exclude: ^ORBIT/api/wisdem + - id: black + name: black + stages: [commit] + exclude: ^ORBIT/api/wisdem - repo: https://github.com/pre-commit/pre-commit-hooks rev: v2.3.0 @@ -25,16 +24,16 @@ repos: - id: check-executables-have-shebangs - id: check-json - id: check-yaml + args: [--unsafe] # allow Python constructors - id: check-merge-conflict - id: check-symlinks - - id: flake8 - exclude: ^tests/ - id: mixed-line-ending - id: pretty-format-json args: [--autofix] -- repo: https://github.com/pre-commit/mirrors-pylint - rev: v2.1.1 +- repo: https://github.com/astral-sh/ruff-pre-commit + # Ruff version. + rev: v0.4.10 hooks: - - id: pylint - exclude: ^tests/ + - id: ruff + args: [--fix] diff --git a/.pylintrc b/.pylintrc deleted file mode 100644 index 9a585314..00000000 --- a/.pylintrc +++ /dev/null @@ -1,678 +0,0 @@ -[MASTER] - -# A comma-separated list of package or module names from where C extensions may -# be loaded. Extensions are loading into the active Python interpreter and may -# run arbitrary code -extension-pkg-whitelist= - -# Add files or directories to the blacklist. They should be base names, not -# paths. -ignore=CVS - -# Add files or directories matching the regex patterns to the blacklist. The -# regex matches against base names, not paths. -ignore-patterns= - -# Python code to execute, usually for sys.path manipulation such as -# pygtk.require(). -#init-hook= - -# Use multiple processes to speed up Pylint. -jobs=4 - -# List of plugins (as comma separated values of python modules names) to load, -# usually to register additional checkers. -load-plugins= - -# Pickle collected data for later comparisons. -persistent=yes - -# Specify a configuration file. -#rcfile= - -# When enabled, pylint would attempt to guess common misconfiguration and emit -# user-friendly hints instead of false-positive error messages -suggestion-mode=yes - -# Allow loading of arbitrary C extensions. Extensions are imported into the -# active Python interpreter and may run arbitrary code. -unsafe-load-any-extension=no - - -[MESSAGES CONTROL] - -# Only show warnings with the listed confidence levels. Leave empty to show -# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED -confidence= - -# Disable the message, report, category or checker with the given id(s). You -# can either give multiple identifiers separated by comma (,) or put this -# option multiple times (only on the command line, not in the configuration -# file where it should appear only once).You can also use "--disable=all" to -# disable everything first and then reenable specific checks. For example, if -# you want to run only the similarities checker, you can use "--disable=all -# --enable=similarities". If you want to run only the classes checker, but have -# no Warning level messages displayed, use"--disable=all --enable=classes -# --disable=W" -disable=all - -enable=unused-import, - unused-argument, - unused-variable, - unused-wildcard-import, - used-before-assignment, - undefined-variable, - undefined-all-variable, - missing-docstring, - empty-docstring, - unneeded-not, - singleton-comparison, - unidiomatic-typecheck, - consider-using-enumerate, - consider-iterating-dictionary, - no-member, - no-self-use, - duplicate-code, - len-as-condition, - missing-format-argument-key, - import-self, - reimported, - wildcard-import, - relative-import, - deprecated-module, - unpacking-non-sequence, - invalid-all-object, - undefined-all-variable, - used-before-assignment, - cell-var-from-loop, - global-variable-undefined, - redefine-in-handler, - global-variable-not-assigned, - undefined-loop-variable, - global-statement, - global-at-module-level, - bad-open-mode, - redundant-unittest-assert, - -# Things we'd like to enable someday: -# redefined-outer-name (requires a bunch of work to clean up our code first) -# undefined-variable (re-enable when pylint fixes https://github.com/PyCQA/pylint/issues/760) -# no-name-in-module (giving us spurious warnings https://github.com/PyCQA/pylint/issues/73) -# unused-argument (need to clean up or code a lot, e.g. prefix unused_?) - -# Things we'd like to try. -# Procedure: -# 1. Enable a bunch. -# 2. See if there's spurious ones; if so disable. -# 3. Record above. -# 4. Remove from this list. - # deprecated-method, - # anomalous-unicode-escape-in-string, - # anomalous-backslash-in-string, - # not-in-loop, - # function-redefined, - # continue-in-finally, - # abstract-class-instantiated, - # star-needs-assignment-target, - # duplicate-argument-name, - # return-in-init, - # too-many-star-expressions, - # nonlocal-and-global, - # return-outside-function, - # return-arg-in-generator, - # invalid-star-assignment-target, - # bad-reversed-sequence, - # nonexistent-operator, - # yield-outside-function, - # init-is-generator, - # nonlocal-without-binding, - # lost-exception, - # assert-on-tuple, - # dangerous-default-value, - # duplicate-key, - # useless-else-on-loop, - # expression-not-assigned, - # confusing-with-statement, - # unnecessary-lambda, - # pointless-statement, - # pointless-string-statement, - # unnecessary-pass, - # unreachable, - # eval-used, - # exec-used, - # bad-builtin, - # using-constant-test, - # deprecated-lambda, - # bad-super-call, - # missing-super-argument, - # slots-on-old-class, - # super-on-old-class, - # property-on-old-class, - # not-an-iterable, - # not-a-mapping, - # format-needs-mapping, - # truncated-format-string, - # missing-format-string-key, - # mixed-format-string, - # too-few-format-args, - # bad-str-strip-call, - # too-many-format-args, - # bad-format-character, - # format-combined-specification, - # bad-format-string-key, - # bad-format-string, - # missing-format-attribute, - # missing-format-argument-key, - # unused-format-string-argument, - # unused-format-string-key, - # invalid-format-index, - # bad-indentation, - # mixed-indentation, - # unnecessary-semicolon, - # lowercase-l-suffix, - # fixme, - # invalid-encoded-data, - # unpacking-in-except, - # import-star-module-level, - # parameter-unpacking, - # long-suffix, - # old-octal-literal, - # old-ne-operator, - # backtick, - # old-raise-syntax, - # print-statement, - # metaclass-assignment, - # next-method-called, - # dict-iter-method, - # dict-view-method, - # indexing-exception, - # raising-string, - # standarderror-builtin, - # using-cmp-argument, - # cmp-method, - # coerce-method, - # delslice-method, - # getslice-method, - # hex-method, - # nonzero-method, - # oct-method, - # setslice-method, - # apply-builtin, - # basestring-builtin, - # buffer-builtin, - # cmp-builtin, - # coerce-builtin, - # old-division, - # execfile-builtin, - # file-builtin, - # filter-builtin-not-iterating, - # no-absolute-import, - # input-builtin, - # intern-builtin, - # long-builtin, - # map-builtin-not-iterating, - # range-builtin-not-iterating, - # raw_input-builtin, - # reduce-builtin, - # reload-builtin, - # round-builtin, - # unichr-builtin, - # unicode-builtin, - # xrange-builtin, - # zip-builtin-not-iterating, - # logging-format-truncated, - # logging-too-few-args, - # logging-too-many-args, - # logging-unsupported-format, - # logging-not-lazy, - # logging-format-interpolation, - # invalid-unary-operand-type, - # unsupported-binary-operation, - # no-member, - # not-callable, - # redundant-keyword-arg, - # assignment-from-no-return, - # assignment-from-none, - # not-context-manager, - # repeated-keyword, - # missing-kwoa, - # no-value-for-parameter, - # invalid-sequence-index, - # invalid-slice-index, - # too-many-function-args, - # unexpected-keyword-arg, - # unsupported-membership-test, - # unsubscriptable-object, - # access-member-before-definition, - # method-hidden, - # assigning-non-slot, - # duplicate-bases, - # inconsistent-mro, - # inherit-non-class, - # invalid-slots, - # invalid-slots-object, - # no-method-argument, - # no-self-argument, - # unexpected-special-method-signature, - # non-iterator-returned, - # protected-access, - # arguments-differ, - # attribute-defined-outside-init, - # no-init, - # abstract-method, - # signature-differs, - # bad-staticmethod-argument, - # non-parent-init-called, - # super-init-not-called, - # bad-except-order, - # catching-non-exception, - # bad-exception-context, - # notimplemented-raised, - # raising-bad-type, - # raising-non-exception, - # misplaced-bare-raise, - # duplicate-except, - # broad-except, - # nonstandard-exception, - # binary-op-exception, - # bare-except, - # not-async-context-manager, - # yield-inside-async-function, - - -[REPORTS] - -# Python expression which should return a note less than 10 (10 is the highest -# note). You have access to the variables errors warning, statement which -# respectively contain the number of errors / warnings messages and the total -# number of statements analyzed. This is used by the global evaluation report -# (RP0004). -evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) - -# Template used to display messages. This is a python new-style format string -# used to format the message information. See doc for all details -#msg-template= - -# Set the output format. Available formats are text, parseable, colorized, json -# and msvs (visual studio).You can also give a reporter class, eg -# mypackage.mymodule.MyReporterClass. -output-format=text - -# Tells whether to display a full report or only the messages -reports=no - -# Activate the evaluation score. -score=yes - - -[REFACTORING] - -# Maximum number of nested blocks for function / method body -max-nested-blocks=5 - - -[BASIC] - -# Naming style matching correct argument names -argument-naming-style=snake_case - -# Regular expression matching correct argument names. Overrides argument- -# naming-style -#argument-rgx= - -# Naming style matching correct attribute names -attr-naming-style=snake_case - -# Regular expression matching correct attribute names. Overrides attr-naming- -# style -#attr-rgx= - -# Bad variable names which should always be refused, separated by a comma -bad-names=foo, - bar, - baz, - toto, - tutu, - tata - -# Naming style matching correct class attribute names -class-attribute-naming-style=any - -# Regular expression matching correct class attribute names. Overrides class- -# attribute-naming-style -#class-attribute-rgx= - -# Naming style matching correct class names -class-naming-style=PascalCase - -# Regular expression matching correct class names. Overrides class-naming-style -#class-rgx= - -# Naming style matching correct constant names -const-naming-style=UPPER_CASE - -# Regular expression matching correct constant names. Overrides const-naming- -# style -#const-rgx= - -# Minimum line length for functions/classes that require docstrings, shorter -# ones are exempt. -docstring-min-length=-1 - -# Naming style matching correct function names -function-naming-style=snake_case - -# Regular expression matching correct function names. Overrides function- -# naming-style -#function-rgx= - -# Good variable names which should always be accepted, separated by a comma -good-names=i, - j, - k, - ex, - Run, - _ - -# Include a hint for the correct naming format with invalid-name -include-naming-hint=no - -# Naming style matching correct inline iteration names -inlinevar-naming-style=any - -# Regular expression matching correct inline iteration names. Overrides -# inlinevar-naming-style -#inlinevar-rgx= - -# Naming style matching correct method names -method-naming-style=snake_case - -# Regular expression matching correct method names. Overrides method-naming- -# style -#method-rgx= - -# Naming style matching correct module names -module-naming-style=snake_case - -# Regular expression matching correct module names. Overrides module-naming- -# style -#module-rgx= - -# Colon-delimited sets of names that determine each other's naming style when -# the name regexes allow several styles. -name-group= - -# Regular expression which should only match function or class names that do -# not require a docstring. -no-docstring-rgx=^_ - -# List of decorators that produce properties, such as abc.abstractproperty. Add -# to this list to register other decorators that produce valid properties. -property-classes=abc.abstractproperty - -# Naming style matching correct variable names -variable-naming-style=snake_case - -# Regular expression matching correct variable names. Overrides variable- -# naming-style -#variable-rgx= - - -[FORMAT] - -# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. -expected-line-ending-format= - -# Regexp for a line that is allowed to be longer than the limit. -ignore-long-lines=^\s*(# )??$ - -# Number of spaces of indent required inside a hanging or continued line. -indent-after-paren=4 - -# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 -# tab). -indent-string=' ' - -# Maximum number of characters on a single line. -max-line-length=79 - -# Maximum number of lines in a module -max-module-lines=1000 - -# List of optional constructs for which whitespace checking is disabled. `dict- -# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. -# `trailing-comma` allows a space between comma and closing bracket: (a, ). -# `empty-line` allows space-only lines. -no-space-check=trailing-comma, - dict-separator - -# Allow the body of a class to be on the same line as the declaration if body -# contains single statement. -single-line-class-stmt=no - -# Allow the body of an if to be on the same line as the test if there is no -# else. -single-line-if-stmt=no - - -[LOGGING] - -# Logging modules to check that the string format arguments are in logging -# function parameter format -logging-modules=logging - - -[MISCELLANEOUS] - -# List of note tags to take in consideration, separated by a comma. -notes=FIXME, - XXX, - TODO - - -[SIMILARITIES] - -# Ignore comments when computing similarities. -ignore-comments=yes - -# Ignore docstrings when computing similarities. -ignore-docstrings=yes - -# Ignore imports when computing similarities. -ignore-imports=no - -# Minimum lines number of a similarity. -min-similarity-lines=4 - - -[SPELLING] - -# Limits count of emitted suggestions for spelling mistakes -max-spelling-suggestions=4 - -# Spelling dictionary name. Available dictionaries: none. To make it working -# install python-enchant package. -spelling-dict= - -# List of comma separated words that should not be checked. -spelling-ignore-words= - -# A path to a file that contains private dictionary; one word per line. -spelling-private-dict-file= - -# Tells whether to store unknown words to indicated private dictionary in -# --spelling-private-dict-file option instead of raising a message. -spelling-store-unknown-words=no - - -[TYPECHECK] - -# List of decorators that produce context managers, such as -# contextlib.contextmanager. Add to this list to register other decorators that -# produce valid context managers. -contextmanager-decorators=contextlib.contextmanager - -# List of members which are set dynamically and missed by pylint inference -# system, and so shouldn't trigger E1101 when accessed. Python regular -# expressions are accepted. -generated-members= - -# Tells whether missing members accessed in mixin class should be ignored. A -# mixin class is detected if its name ends with "mixin" (case insensitive). -ignore-mixin-members=yes - -# This flag controls whether pylint should warn about no-member and similar -# checks whenever an opaque object is returned when inferring. The inference -# can return multiple potential results while evaluating a Python object, but -# some branches might not be evaluated, which results in partial inference. In -# that case, it might be useful to still emit no-member and other checks for -# the rest of the inferred objects. -ignore-on-opaque-inference=yes - -# List of class names for which member attributes should not be checked (useful -# for classes with dynamically set attributes). This supports the use of -# qualified names. -ignored-classes=optparse.Values,thread._local,_thread._local - -# List of module names for which member attributes should not be checked -# (useful for modules/projects where namespaces are manipulated during runtime -# and thus existing member attributes cannot be deduced by static analysis. It -# supports qualified module names, as well as Unix pattern matching. -ignored-modules= - -# Show a hint with possible names when a member name was not found. The aspect -# of finding the hint is based on edit distance. -missing-member-hint=yes - -# The minimum edit distance a name should have in order to be considered a -# similar match for a missing member name. -missing-member-hint-distance=1 - -# The total number of similar names that should be taken in consideration when -# showing a hint for a missing member. -missing-member-max-choices=1 - - -[VARIABLES] - -# List of additional names supposed to be defined in builtins. Remember that -# you should avoid to define new builtins when possible. -additional-builtins= - -# Tells whether unused global variables should be treated as a violation. -allow-global-unused-variables=yes - -# List of strings which can identify a callback function by name. A callback -# name must start or end with one of those strings. -callbacks=cb_, - _cb - -# A regular expression matching the name of dummy variables (i.e. expectedly -# not used). -dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ - -# Argument names that match this expression will be ignored. Default to name -# with leading underscore -ignored-argument-names=_.*|^ignored_|^unused_ - -# Tells whether we should check for unused import in __init__ files. -init-import=no - -# List of qualified module names which can have objects that can redefine -# builtins. -redefining-builtins-modules=six.moves,past.builtins,future.builtins - - -[CLASSES] - -# List of method names used to declare (i.e. assign) instance attributes. -defining-attr-methods=__init__, - __new__, - setUp - -# List of member names, which should be excluded from the protected access -# warning. -exclude-protected=_asdict, - _fields, - _replace, - _source, - _make - -# List of valid names for the first argument in a class method. -valid-classmethod-first-arg=cls - -# List of valid names for the first argument in a metaclass class method. -valid-metaclass-classmethod-first-arg=mcs - - -[DESIGN] - -# Maximum number of arguments for function / method -max-args=5 - -# Maximum number of attributes for a class (see R0902). -max-attributes=7 - -# Maximum number of boolean expressions in a if statement -max-bool-expr=5 - -# Maximum number of branch for function / method body -max-branches=12 - -# Maximum number of locals for function / method body -max-locals=15 - -# Maximum number of parents for a class (see R0901). -max-parents=7 - -# Maximum number of public methods for a class (see R0904). -max-public-methods=20 - -# Maximum number of return / yield for function / method body -max-returns=6 - -# Maximum number of statements in function / method body -max-statements=50 - -# Minimum number of public methods for a class (see R0903). -min-public-methods=2 - - -[IMPORTS] - -# Allow wildcard imports from modules that define __all__. -allow-wildcard-with-all=no - -# Analyse import fallback blocks. This can be used to support both Python 2 and -# 3 compatible code, which means that the block might have code that exists -# only in one or another interpreter, leading to false positives when analysed. -analyse-fallback-blocks=no - -# Deprecated modules which should not be used, separated by a comma -deprecated-modules=optparse,tkinter.tix - -# Create a graph of external dependencies in the given file (report RP0402 must -# not be disabled) -ext-import-graph= - -# Create a graph of every (i.e. internal and external) dependencies in the -# given file (report RP0402 must not be disabled) -import-graph= - -# Create a graph of internal dependencies in the given file (report RP0402 must -# not be disabled) -int-import-graph= - -# Force import order to recognize a module as part of the standard -# compatibility libraries. -known-standard-library= - -# Force import order to recognize a module as part of a third party library. -known-third-party=enchant - - -[EXCEPTIONS] - -# Exceptions that will emit a warning when being caught. Defaults to -# "Exception" -overgeneral-exceptions=Exception diff --git a/ORBIT/__init__.py b/ORBIT/__init__.py index 5d213327..32d2fff6 100644 --- a/ORBIT/__init__.py +++ b/ORBIT/__init__.py @@ -1,15 +1,20 @@ -__author__ = ["Jake Nunemaker", "Matt Shields", "Rob Hammond"] +"""Initializes ORBIT and provides the top-level import objects.""" + +__author__ = [ + "Jake Nunemaker", + "Matt Shields", + "Rob Hammond", + "Nick Riccobono", +] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" -__maintainer__ = "Jake Nunemaker" -__email__ = ["jake.nunemaker@nrel.gov", "robert.hammond@nrel.gov"] +__maintainer__ = "Nick Riccobono" +__email__ = ["nicholas.riccobono@nrel.gov", "rob.hammond@nrel.gov"] __status__ = "Development" -from .manager import ProjectManager # isort:skip -from .config import load_config, save_config -from ._version import get_versions -from .parametric import ParametricManager -from .supply_chain import SupplyChainManager +from ORBIT.manager import ProjectManager # isort:skip +from ORBIT.config import load_config, save_config +from ORBIT.parametric import ParametricManager +from ORBIT.supply_chain import SupplyChainManager -__version__ = get_versions()["version"] -del get_versions +__version__ = "1.1" diff --git a/ORBIT/_version.py b/ORBIT/_version.py deleted file mode 100644 index fa1e63bc..00000000 --- a/ORBIT/_version.py +++ /dev/null @@ -1,520 +0,0 @@ - -# This file helps to compute a version number in source trees obtained from -# git-archive tarball (such as those provided by githubs download-from-tag -# feature). Distribution tarballs (built by setup.py sdist) and build -# directories (produced by setup.py build) will contain a much shorter file -# that just contains the computed version number. - -# This file is released into the public domain. Generated by -# versioneer-0.18 (https://github.com/warner/python-versioneer) - -"""Git implementation of _version.py.""" - -import errno -import os -import re -import subprocess -import sys - - -def get_keywords(): - """Get the keywords needed to look up the version information.""" - # these strings will be replaced by git during git-archive. - # setup.py/versioneer.py will grep for the variable names, so they must - # each be defined on a line of their own. _version.py will just call - # get_keywords(). - git_refnames = "$Format:%d$" - git_full = "$Format:%H$" - git_date = "$Format:%ci$" - keywords = {"refnames": git_refnames, "full": git_full, "date": git_date} - return keywords - - -class VersioneerConfig: - """Container for Versioneer configuration parameters.""" - - -def get_config(): - """Create, populate and return the VersioneerConfig() object.""" - # these strings are filled in when 'setup.py versioneer' creates - # _version.py - cfg = VersioneerConfig() - cfg.VCS = "git" - cfg.style = "pep440" - cfg.tag_prefix = "" - cfg.parentdir_prefix = "ORBIT-" - cfg.versionfile_source = "ORBIT/_version.py" - cfg.verbose = False - return cfg - - -class NotThisMethod(Exception): - """Exception raised if a method is not valid for the current scenario.""" - - -LONG_VERSION_PY = {} -HANDLERS = {} - - -def register_vcs_handler(vcs, method): # decorator - """Decorator to mark a method as the handler for a particular VCS.""" - def decorate(f): - """Store f in HANDLERS[vcs][method].""" - if vcs not in HANDLERS: - HANDLERS[vcs] = {} - HANDLERS[vcs][method] = f - return f - return decorate - - -def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, - env=None): - """Call the given command(s).""" - assert isinstance(commands, list) - p = None - for c in commands: - try: - dispcmd = str([c] + args) - # remember shell=False, so use git.cmd on windows, not just git - p = subprocess.Popen([c] + args, cwd=cwd, env=env, - stdout=subprocess.PIPE, - stderr=(subprocess.PIPE if hide_stderr - else None)) - break - except EnvironmentError: - e = sys.exc_info()[1] - if e.errno == errno.ENOENT: - continue - if verbose: - print("unable to run %s" % dispcmd) - print(e) - return None, None - else: - if verbose: - print("unable to find command, tried %s" % (commands,)) - return None, None - stdout = p.communicate()[0].strip() - if sys.version_info[0] >= 3: - stdout = stdout.decode() - if p.returncode != 0: - if verbose: - print("unable to run %s (error)" % dispcmd) - print("stdout was %s" % stdout) - return None, p.returncode - return stdout, p.returncode - - -def versions_from_parentdir(parentdir_prefix, root, verbose): - """Try to determine the version from the parent directory name. - - Source tarballs conventionally unpack into a directory that includes both - the project name and a version string. We will also support searching up - two directory levels for an appropriately named parent directory - """ - rootdirs = [] - - for i in range(3): - dirname = os.path.basename(root) - if dirname.startswith(parentdir_prefix): - return {"version": dirname[len(parentdir_prefix):], - "full-revisionid": None, - "dirty": False, "error": None, "date": None} - else: - rootdirs.append(root) - root = os.path.dirname(root) # up a level - - if verbose: - print("Tried directories %s but none started with prefix %s" % - (str(rootdirs), parentdir_prefix)) - raise NotThisMethod("rootdir doesn't start with parentdir_prefix") - - -@register_vcs_handler("git", "get_keywords") -def git_get_keywords(versionfile_abs): - """Extract version information from the given file.""" - # the code embedded in _version.py can just fetch the value of these - # keywords. When used from setup.py, we don't want to import _version.py, - # so we do it with a regexp instead. This function is not used from - # _version.py. - keywords = {} - try: - f = open(versionfile_abs, "r") - for line in f.readlines(): - if line.strip().startswith("git_refnames ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["refnames"] = mo.group(1) - if line.strip().startswith("git_full ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["full"] = mo.group(1) - if line.strip().startswith("git_date ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["date"] = mo.group(1) - f.close() - except EnvironmentError: - pass - return keywords - - -@register_vcs_handler("git", "keywords") -def git_versions_from_keywords(keywords, tag_prefix, verbose): - """Get version information from git keywords.""" - if not keywords: - raise NotThisMethod("no keywords at all, weird") - date = keywords.get("date") - if date is not None: - # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant - # datestamp. However we prefer "%ci" (which expands to an "ISO-8601 - # -like" string, which we must then edit to make compliant), because - # it's been around since git-1.5.3, and it's too difficult to - # discover which version we're using, or to work around using an - # older one. - date = date.strip().replace(" ", "T", 1).replace(" ", "", 1) - refnames = keywords["refnames"].strip() - if refnames.startswith("$Format"): - if verbose: - print("keywords are unexpanded, not using") - raise NotThisMethod("unexpanded keywords, not a git-archive tarball") - refs = set([r.strip() for r in refnames.strip("()").split(",")]) - # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of - # just "foo-1.0". If we see a "tag: " prefix, prefer those. - TAG = "tag: " - tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) - if not tags: - # Either we're using git < 1.8.3, or there really are no tags. We use - # a heuristic: assume all version tags have a digit. The old git %d - # expansion behaves like git log --decorate=short and strips out the - # refs/heads/ and refs/tags/ prefixes that would let us distinguish - # between branches and tags. By ignoring refnames without digits, we - # filter out many common branch names like "release" and - # "stabilization", as well as "HEAD" and "master". - tags = set([r for r in refs if re.search(r'\d', r)]) - if verbose: - print("discarding '%s', no digits" % ",".join(refs - tags)) - if verbose: - print("likely tags: %s" % ",".join(sorted(tags))) - for ref in sorted(tags): - # sorting will prefer e.g. "2.0" over "2.0rc1" - if ref.startswith(tag_prefix): - r = ref[len(tag_prefix):] - if verbose: - print("picking %s" % r) - return {"version": r, - "full-revisionid": keywords["full"].strip(), - "dirty": False, "error": None, - "date": date} - # no suitable tags, so version is "0+unknown", but full hex is still there - if verbose: - print("no suitable tags, using unknown + full revision id") - return {"version": "0+unknown", - "full-revisionid": keywords["full"].strip(), - "dirty": False, "error": "no suitable tags", "date": None} - - -@register_vcs_handler("git", "pieces_from_vcs") -def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): - """Get version from 'git describe' in the root of the source tree. - - This only gets called if the git-archive 'subst' keywords were *not* - expanded, and _version.py hasn't already been rewritten with a short - version string, meaning we're inside a checked out source tree. - """ - GITS = ["git"] - if sys.platform == "win32": - GITS = ["git.cmd", "git.exe"] - - out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, - hide_stderr=True) - if rc != 0: - if verbose: - print("Directory %s not under git control" % root) - raise NotThisMethod("'git rev-parse --git-dir' returned error") - - # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] - # if there isn't one, this yields HEX[-dirty] (no NUM) - describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", - "--always", "--long", - "--match", "%s*" % tag_prefix], - cwd=root) - # --long was added in git-1.5.5 - if describe_out is None: - raise NotThisMethod("'git describe' failed") - describe_out = describe_out.strip() - full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) - if full_out is None: - raise NotThisMethod("'git rev-parse' failed") - full_out = full_out.strip() - - pieces = {} - pieces["long"] = full_out - pieces["short"] = full_out[:7] # maybe improved later - pieces["error"] = None - - # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] - # TAG might have hyphens. - git_describe = describe_out - - # look for -dirty suffix - dirty = git_describe.endswith("-dirty") - pieces["dirty"] = dirty - if dirty: - git_describe = git_describe[:git_describe.rindex("-dirty")] - - # now we have TAG-NUM-gHEX or HEX - - if "-" in git_describe: - # TAG-NUM-gHEX - mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) - if not mo: - # unparseable. Maybe git-describe is misbehaving? - pieces["error"] = ("unable to parse git-describe output: '%s'" - % describe_out) - return pieces - - # tag - full_tag = mo.group(1) - if not full_tag.startswith(tag_prefix): - if verbose: - fmt = "tag '%s' doesn't start with prefix '%s'" - print(fmt % (full_tag, tag_prefix)) - pieces["error"] = ("tag '%s' doesn't start with prefix '%s'" - % (full_tag, tag_prefix)) - return pieces - pieces["closest-tag"] = full_tag[len(tag_prefix):] - - # distance: number of commits since tag - pieces["distance"] = int(mo.group(2)) - - # commit: short hex revision ID - pieces["short"] = mo.group(3) - - else: - # HEX: no tags - pieces["closest-tag"] = None - count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], - cwd=root) - pieces["distance"] = int(count_out) # total number of commits - - # commit date: see ISO-8601 comment in git_versions_from_keywords() - date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], - cwd=root)[0].strip() - pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) - - return pieces - - -def plus_or_dot(pieces): - """Return a + if we don't already have one, else return a .""" - if "+" in pieces.get("closest-tag", ""): - return "." - return "+" - - -def render_pep440(pieces): - """Build up version string, with post-release "local version identifier". - - Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you - get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty - - Exceptions: - 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += plus_or_dot(pieces) - rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - else: - # exception #1 - rendered = "0+untagged.%d.g%s" % (pieces["distance"], - pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - return rendered - - -def render_pep440_pre(pieces): - """TAG[.post.devDISTANCE] -- No -dirty. - - Exceptions: - 1: no tags. 0.post.devDISTANCE - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"]: - rendered += ".post.dev%d" % pieces["distance"] - else: - # exception #1 - rendered = "0.post.dev%d" % pieces["distance"] - return rendered - - -def render_pep440_post(pieces): - """TAG[.postDISTANCE[.dev0]+gHEX] . - - The ".dev0" means dirty. Note that .dev0 sorts backwards - (a dirty tree will appear "older" than the corresponding clean one), - but you shouldn't be releasing software with -dirty anyways. - - Exceptions: - 1: no tags. 0.postDISTANCE[.dev0] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - rendered += plus_or_dot(pieces) - rendered += "g%s" % pieces["short"] - else: - # exception #1 - rendered = "0.post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - rendered += "+g%s" % pieces["short"] - return rendered - - -def render_pep440_old(pieces): - """TAG[.postDISTANCE[.dev0]] . - - The ".dev0" means dirty. - - Eexceptions: - 1: no tags. 0.postDISTANCE[.dev0] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - else: - # exception #1 - rendered = "0.post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - return rendered - - -def render_git_describe(pieces): - """TAG[-DISTANCE-gHEX][-dirty]. - - Like 'git describe --tags --dirty --always'. - - Exceptions: - 1: no tags. HEX[-dirty] (note: no 'g' prefix) - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"]: - rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) - else: - # exception #1 - rendered = pieces["short"] - if pieces["dirty"]: - rendered += "-dirty" - return rendered - - -def render_git_describe_long(pieces): - """TAG-DISTANCE-gHEX[-dirty]. - - Like 'git describe --tags --dirty --always -long'. - The distance/hash is unconditional. - - Exceptions: - 1: no tags. HEX[-dirty] (note: no 'g' prefix) - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) - else: - # exception #1 - rendered = pieces["short"] - if pieces["dirty"]: - rendered += "-dirty" - return rendered - - -def render(pieces, style): - """Render the given version pieces into the requested style.""" - if pieces["error"]: - return {"version": "unknown", - "full-revisionid": pieces.get("long"), - "dirty": None, - "error": pieces["error"], - "date": None} - - if not style or style == "default": - style = "pep440" # the default - - if style == "pep440": - rendered = render_pep440(pieces) - elif style == "pep440-pre": - rendered = render_pep440_pre(pieces) - elif style == "pep440-post": - rendered = render_pep440_post(pieces) - elif style == "pep440-old": - rendered = render_pep440_old(pieces) - elif style == "git-describe": - rendered = render_git_describe(pieces) - elif style == "git-describe-long": - rendered = render_git_describe_long(pieces) - else: - raise ValueError("unknown style '%s'" % style) - - return {"version": rendered, "full-revisionid": pieces["long"], - "dirty": pieces["dirty"], "error": None, - "date": pieces.get("date")} - - -def get_versions(): - """Get version information or return default if unable to do so.""" - # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have - # __file__, we can work backwards from there to the root. Some - # py2exe/bbfreeze/non-CPython implementations don't do __file__, in which - # case we can only use expanded keywords. - - cfg = get_config() - verbose = cfg.verbose - - try: - return git_versions_from_keywords(get_keywords(), cfg.tag_prefix, - verbose) - except NotThisMethod: - pass - - try: - root = os.path.realpath(__file__) - # versionfile_source is the relative path from the top of the source - # tree (where the .git directory might live) to this file. Invert - # this to find the root from __file__. - for i in cfg.versionfile_source.split('/'): - root = os.path.dirname(root) - except NameError: - return {"version": "0+unknown", "full-revisionid": None, - "dirty": None, - "error": "unable to find root of source tree", - "date": None} - - try: - pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose) - return render(pieces, cfg.style) - except NotThisMethod: - pass - - try: - if cfg.parentdir_prefix: - return versions_from_parentdir(cfg.parentdir_prefix, root, verbose) - except NotThisMethod: - pass - - return {"version": "0+unknown", "full-revisionid": None, - "dirty": None, - "error": "unable to compute version", "date": None} diff --git a/ORBIT/api/__init__.py b/ORBIT/api/__init__.py index d60cf1f2..19a370c7 100644 --- a/ORBIT/api/__init__.py +++ b/ORBIT/api/__init__.py @@ -1,4 +1,4 @@ -"""ORBIT API's""" +"""ORBIT API's.""" __author__ = ["Jake Nunemaker"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" diff --git a/ORBIT/api/wisdem.py b/ORBIT/api/wisdem.py index 8320e99c..a47877e3 100644 --- a/ORBIT/api/wisdem.py +++ b/ORBIT/api/wisdem.py @@ -1,4 +1,4 @@ -"""WISDEM Monopile API""" +"""WISDEM Monopile API.""" __author__ = ["Jake Nunemaker"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" @@ -6,26 +6,32 @@ __email__ = "jake.nunemaker@nrel.gov" +from warnings import warn + import openmdao.api as om from ORBIT import ProjectManager class Orbit(om.Group): + """Orbit class for WISDEM API.""" + def initialize(self): + """Initializes the API connections.""" self.options.declare("floating", default=False) self.options.declare("jacket", default=False) self.options.declare("jacket_legs", default=0) def setup(self): - - # Define all input variables from all models + """Define all input variables from all models.""" self.set_input_defaults("wtiv", "example_wtiv") self.set_input_defaults("feeder", "example_feeder") self.set_input_defaults("num_feeders", 1) self.set_input_defaults("num_towing", 1) self.set_input_defaults("num_station_keeping", 3) - self.set_input_defaults("oss_install_vessel", "example_heavy_lift_vessel") + self.set_input_defaults( + "oss_install_vessel", "example_heavy_lift_vessel", + ) self.set_input_defaults("site_distance", 40.0, units="km") self.set_input_defaults("site_distance_to_landfall", 40.0, units="km") self.set_input_defaults("interconnection_distance", 40.0, units="km") @@ -41,7 +47,9 @@ def setup(self): self.set_input_defaults("site_auction_price", 100e6, units="USD") self.set_input_defaults("site_assessment_plan_cost", 1e6, units="USD") self.set_input_defaults("site_assessment_cost", 25e6, units="USD") - self.set_input_defaults("construction_operations_plan_cost", 2.5e6, units="USD") + self.set_input_defaults( + "construction_operations_plan_cost", 2.5e6, units="USD", + ) self.set_input_defaults("design_install_plan_cost", 2.5e6, units="USD") self.set_input_defaults("boem_review_cost", 0.0, units="USD") @@ -57,182 +65,440 @@ def setup(self): class OrbitWisdem(om.ExplicitComponent): - """ORBIT-WISDEM Fixed Substructure API""" + """ORBIT-WISDEM Fixed Substructure API.""" def initialize(self): + """Initialize the API.""" self.options.declare("floating", default=False) self.options.declare("jacket", default=False) self.options.declare("jacket_legs", default=0) def setup(self): - """""" + """Define all the inputs.""" # Inputs - # self.add_discrete_input('weather_file', 'block_island', desc='Weather file to use for installation times.') + # self.add_discrete_input( + # 'weather_file', + # 'block_island', + # desc='Weather file to use for installation times.' + # ) # Vessels self.add_discrete_input( - "wtiv", "example_wtiv", desc="Vessel configuration to use for installation of foundations and turbines." + "wtiv", + "example_wtiv", + desc=( + "Vessel configuration to use for installation of foundations" + " and turbines." + ), ) self.add_discrete_input( - "feeder", "future_feeder", desc="Vessel configuration to use for (optional) feeder barges." + "feeder", + "future_feeder", + desc="Vessel configuration to use for (optional) feeder barges.", ) self.add_discrete_input( - "num_feeders", 1, desc="Number of feeder barges to use for installation of foundations and turbines." + "num_feeders", + 1, + desc=( + "Number of feeder barges to use for installation of" + " foundations and turbines." + ), ) self.add_discrete_input( "num_towing", 1, - desc="Number of towing vessels to use for floating platforms that are assembled at port (with or without the turbine).", + desc=( + "Number of towing vessels to use for floating platforms that" + " are assembled at port (with or without the turbine)." + ), ) self.add_discrete_input( "num_station_keeping", 3, - desc="Number of station keeping vessels that attach to floating platforms under tow-out.", + desc=( + "Number of station keeping vessels that attach to floating" + " platforms under tow-out." + ), + ) + self.add_discrete_input( + "ahts_vessels", + 1, + desc="Number of ahts vessels that attach to floating platforms under tow-out.", # noqa: E501 ) self.add_discrete_input( "oss_install_vessel", "example_heavy_lift_vessel", - desc="Vessel configuration to use for installation of offshore substations.", + desc="Vessel configuration to use for installation of offshore substations.", # noqa: E501 ) # Site self.add_input("site_depth", 40.0, units="m", desc="Site depth.") - self.add_input("site_distance", 40.0, units="km", desc="Distance from site to installation port.") self.add_input( - "site_distance_to_landfall", 50.0, units="km", desc="Distance from site to landfall for export cable." + "site_distance", + 40.0, + units="km", + desc="Distance from site to installation port.", + ) + self.add_input( + "site_distance_to_landfall", + 50.0, + units="km", + desc="Distance from site to landfall for export cable.", + ) + self.add_input( + "interconnection_distance", + 3.0, + units="km", + desc="Distance from landfall to interconnection.", + ) + self.add_input( + "site_mean_windspeed", + 9.0, + units="m/s", + desc="Mean windspeed of the site.", ) - self.add_input("interconnection_distance", 3.0, units="km", desc="Distance from landfall to interconnection.") - self.add_input("site_mean_windspeed", 9.0, units="m/s", desc="Mean windspeed of the site.") # Plant - self.add_discrete_input("number_of_turbines", 60, desc="Number of turbines.") - self.add_input("plant_turbine_spacing", 7, desc="Turbine spacing in rotor diameters.") - self.add_input("plant_row_spacing", 7, desc="Row spacing in rotor diameters. Not used in ring layouts.") + self.add_discrete_input( + "number_of_turbines", 60, desc="Number of turbines.", + ) + self.add_input( + "plant_turbine_spacing", + 7, + desc="Turbine spacing in rotor diameters.", + ) + self.add_input( + "plant_row_spacing", + 7, + desc="Row spacing in rotor diameters. Not used in ring layouts.", + ) self.add_input( - "plant_substation_distance", 1, units="km", desc="Distance from first turbine in string to substation." + "plant_substation_distance", + 1, + units="km", + desc="Distance from first turbine in string to substation.", ) # Turbine - self.add_input("turbine_rating", 8.0, units="MW", desc="Rated capacity of a turbine.") - self.add_input("turbine_rated_windspeed", 11.0, units="m/s", desc="Rated windspeed of the turbine.") - self.add_input("turbine_capex", 1100, units="USD/kW", desc="Turbine CAPEX") - self.add_input("hub_height", 100.0, units="m", desc="Turbine hub height.") - self.add_input("turbine_rotor_diameter", 130, units="m", desc="Turbine rotor diameter.") - self.add_input("tower_mass", 400.0, units="t", desc="mass of the total tower.") - self.add_input("tower_length", 100.0, units="m", desc="Total length of the tower.") + self.add_input( + "turbine_rating", + 8.0, + units="MW", + desc="Rated capacity of a turbine.", + ) + self.add_input( + "turbine_rated_windspeed", + 11.0, + units="m/s", + desc="Rated windspeed of the turbine.", + ) + self.add_input( + "turbine_capex", 1100, units="USD/kW", desc="Turbine CAPEX", + ) + self.add_input( + "hub_height", 100.0, units="m", desc="Turbine hub height.", + ) + self.add_input( + "turbine_rotor_diameter", + 130, + units="m", + desc="Turbine rotor diameter.", + ) + self.add_input( + "tower_mass", 400.0, units="t", desc="mass of the total tower.", + ) + self.add_input( + "tower_length", + 100.0, + units="m", + desc="Total length of the tower.", + ) self.add_input( "tower_deck_space", 25.0, units="m**2", - desc="Deck space required to transport the tower. Defaults to 0 in order to not be a constraint on installation.", + desc=( + "Deck space required to transport the tower. Defaults to 0 in" + " order to not be a constraint on installation." + ), + ) + self.add_input( + "nacelle_mass", + 500.0, + units="t", + desc="mass of the rotor nacelle assembly (RNA).", ) - self.add_input("nacelle_mass", 500.0, units="t", desc="mass of the rotor nacelle assembly (RNA).") self.add_input( "nacelle_deck_space", 25.0, units="m**2", - desc="Deck space required to transport the rotor nacelle assembly (RNA). Defaults to 0 in order to not be a constraint on installation.", + desc=( + "Deck space required to transport the rotor nacelle assembly" + " (RNA). Defaults to 0 in order to not be a constraint on" + " installation." + ), + ) + self.add_discrete_input( + "number_of_blades", 3, desc="Number of blades per turbine.", + ) + self.add_input( + "blade_mass", 50.0, units="t", desc="mass of an individual blade.", ) - self.add_discrete_input("number_of_blades", 3, desc="Number of blades per turbine.") - self.add_input("blade_mass", 50.0, units="t", desc="mass of an individual blade.") self.add_input( "blade_deck_space", 100.0, units="m**2", - desc="Deck space required to transport a blade. Defaults to 0 in order to not be a constraint on installation.", + desc=( + "Deck space required to transport a blade. Defaults to 0 in" + " order to not be a constraint on installation." + ), ) # Mooring - self.add_discrete_input("num_mooring_lines", 3, desc="Number of mooring lines per platform.") - self.add_input("mooring_line_mass", 1e4, units="kg", desc="Total mass of a mooring line") - self.add_input("mooring_line_diameter", 0.1, units="m", desc="Cross-sectional diameter of a mooring line") - self.add_input("mooring_line_length", 1e3, units="m", desc="Unstretched mooring line length") - self.add_input("anchor_mass", 1e4, units="kg", desc="Total mass of an anchor") - self.add_input("mooring_line_cost", 0.5e6, units="USD", desc="Mooring line unit cost.") - self.add_input("mooring_anchor_cost", 0.1e6, units="USD", desc="Mooring line unit cost.") - self.add_discrete_input("anchor_type", "drag_embedment", desc="Number of mooring lines per platform.") + self.add_discrete_input( + "num_mooring_lines", + 3, + desc="Number of mooring lines per platform.", + ) + self.add_input( + "mooring_line_mass", + 1e4, + units="kg", + desc="Total mass of a mooring line", + ) + self.add_input( + "mooring_line_diameter", + 0.1, + units="m", + desc="Cross-sectional diameter of a mooring line", + ) + self.add_input( + "mooring_line_length", + 1e3, + units="m", + desc="Unstretched mooring line length", + ) + self.add_input( + "anchor_mass", 1e4, units="kg", desc="Total mass of an anchor", + ) + self.add_input( + "mooring_line_cost", + 0.5e6, + units="USD", + desc="Mooring line unit cost.", + ) + self.add_input( + "mooring_anchor_cost", + 0.1e6, + units="USD", + desc="Mooring line unit cost.", + ) + self.add_discrete_input( + "anchor_type", + "drag_embedment", + desc="Number of mooring lines per platform.", + ) # Port - self.add_input("port_cost_per_month", 2e6, units="USD/mo", desc="Monthly port costs.") self.add_input( - "takt_time", 170.0, units="h", desc="Substructure assembly cycle time when doing assembly at the port." + "port_cost_per_month", + 2e6, + units="USD/mo", + desc="Monthly port costs.", + ) + self.add_input( + "takt_time", + 170.0, + units="h", + desc="Substructure assembly cycle time when doing assembly at the port.", # noqa: E501 ) self.add_discrete_input( - "num_assembly_lines", 1, desc="Number of assembly lines used when assembly occurs at the port." + "num_assembly_lines", + 1, + desc="Number of assembly lines used when assembly occurs at the port.", # noqa: E501 ) self.add_discrete_input( "num_port_cranes", 1, - desc="Number of cranes used at the port to load feeders / WTIVS when assembly occurs on-site or assembly cranes when assembling at port.", + desc=( + "Number of cranes used at the port to load feeders / WTIVS" + " when assembly occurs on-site or assembly cranes when" + " assembling at port." + ), ) # Floating Substructures - self.add_input("floating_substructure_cost", 10e6, units="USD", desc="Floating substructure unit cost.") + self.add_input( + "floating_substructure_cost", + 10e6, + units="USD", + desc="Floating substructure unit cost.", + ) # Monopile - self.add_input("monopile_length", 100.0, units="m", desc="Length of monopile (including pile).") - self.add_input("monopile_diameter", 7.0, units="m", desc="Diameter of monopile.") - self.add_input("monopile_mass", 900.0, units="t", desc="mass of an individual monopile.") - self.add_input("monopile_cost", 4e6, units="USD", desc="Monopile unit cost.") + self.add_input( + "monopile_length", + 100.0, + units="m", + desc="Length of monopile (including pile).", + ) + self.add_input( + "monopile_diameter", 7.0, units="m", desc="Diameter of monopile.", + ) + self.add_input( + "monopile_mass", + 900.0, + units="t", + desc="mass of an individual monopile.", + ) + self.add_input( + "monopile_cost", 4e6, units="USD", desc="Monopile unit cost.", + ) # Jacket - self.add_input("jacket_length", 65.0, units="m", desc="Length/height of jacket (including pile/buckets).") - self.add_input("jacket_mass", 900.0, units="t", desc="mass of an individual jacket.") - self.add_input("jacket_cost", 4e6, units="USD", desc="Jacket unit cost.") - self.add_input("jacket_r_foot", 10.0, units="m", desc="Radius of jacket legs at base from centeroid.") + self.add_input( + "jacket_length", + 65.0, + units="m", + desc="Length/height of jacket (including pile/buckets).", + ) + self.add_input( + "jacket_mass", + 900.0, + units="t", + desc="mass of an individual jacket.", + ) + self.add_input( + "jacket_cost", 4e6, units="USD", desc="Jacket unit cost.", + ) + self.add_input( + "jacket_r_foot", + 10.0, + units="m", + desc="Radius of jacket legs at base from centeroid.", + ) # Generic fixed-bottom - self.add_input("transition_piece_mass", 250.0, units="t", desc="mass of an individual transition piece.") + self.add_input( + "transition_piece_mass", + 250.0, + units="t", + desc="mass of an individual transition piece.", + ) self.add_input( "transition_piece_deck_space", 25.0, units="m**2", - desc="Deck space required to transport a transition piece. Defaults to 0 in order to not be a constraint on installation.", + desc=( + "Deck space required to transport a transition piece." + " Defaults to 0 in order to not be a constraint on" + " installation." + ), + ) + self.add_input( + "transition_piece_cost", + 1.5e6, + units="USD", + desc="Transition piece unit cost.", ) - self.add_input("transition_piece_cost", 1.5e6, units="USD", desc="Transition piece unit cost.") # Project - self.add_input("site_auction_price", 100e6, units="USD", desc="Cost to secure site lease") self.add_input( - "site_assessment_plan_cost", 1e6, units="USD", desc="Cost to do engineering plan for site assessment" + "site_auction_price", + 100e6, + units="USD", + desc="Cost to secure site lease", + ) + self.add_input( + "site_assessment_plan_cost", + 1e6, + units="USD", + desc="Cost to do engineering plan for site assessment", + ) + self.add_input( + "site_assessment_cost", + 25e6, + units="USD", + desc="Cost to execute site assessment", + ) + self.add_input( + "construction_operations_plan_cost", + 2.5e6, + units="USD", + desc="Cost to do construction planning", ) - self.add_input("site_assessment_cost", 25e6, units="USD", desc="Cost to execute site assessment") - self.add_input("construction_operations_plan_cost", 2.5e6, units="USD", desc="Cost to do construction planning") self.add_input( "boem_review_cost", 0.0, units="USD", - desc="Cost for additional review by U.S. Dept of Interior Bureau of Ocean Energy Management (BOEM)", + desc=( + "Cost for additional review by U.S. Dept of Interior Bureau" + " of Ocean Energy Management (BOEM)" + ), + ) + self.add_input( + "design_install_plan_cost", + 2.5e6, + units="USD", + desc="Cost to do installation planning", ) - self.add_input("design_install_plan_cost", 2.5e6, units="USD", desc="Cost to do installation planning") # Other - self.add_input("commissioning_pct", 0.01, desc="Commissioning percent.") - self.add_input("decommissioning_pct", 0.15, desc="Decommissioning percent.") + self.add_input( + "commissioning_pct", 0.01, desc="Commissioning percent.", + ) + self.add_input( + "decommissioning_pct", 0.15, desc="Decommissioning percent.", + ) # Outputs # Totals self.add_output( - "bos_capex", 0.0, units="USD", desc="Total BOS CAPEX not including commissioning or decommissioning." + "bos_capex", + 0.0, + units="USD", + desc="Total BOS CAPEX not including commissioning or decommissioning.", # noqa: E501 + ) + self.add_output( + "total_capex", + 0.0, + units="USD", + desc="Total BOS CAPEX including commissioning and decommissioning.", # noqa: E501 + ) + self.add_output( + "total_capex_kW", + 0.0, + units="USD/kW", + desc="Total BOS CAPEX including commissioning and decommissioning.", # noqa: E501 ) self.add_output( - "total_capex", 0.0, units="USD", desc="Total BOS CAPEX including commissioning and decommissioning." + "installation_time", + 0.0, + units="h", + desc="Total balance of system installation time.", ) self.add_output( - "total_capex_kW", 0.0, units="USD/kW", desc="Total BOS CAPEX including commissioning and decommissioning." + "installation_capex", + 0.0, + units="USD", + desc="Total balance of system installation cost.", ) - self.add_output("installation_time", 0.0, units="h", desc="Total balance of system installation time.") - self.add_output("installation_capex", 0.0, units="USD", desc="Total balance of system installation cost.") - def compile_orbit_config_file(self, inputs, outputs, discrete_inputs, discrete_outputs): - """""" + def compile_orbit_config_file( + self, inputs, outputs, discrete_inputs, discrete_outputs, + ): + """Compiles the ORBIT configuration dictionary.""" floating_flag = self.options["floating"] jacket_flag = self.options["jacket"] config = { # Vessels - "wtiv": "floating_heavy_lift_vessel" if floating_flag else discrete_inputs["wtiv"], + "wtiv": ( + "floating_heavy_lift_vessel" + if floating_flag + else discrete_inputs["wtiv"] + ), "array_cable_install_vessel": "example_cable_lay_vessel", "array_cable_bury_vessel": "example_cable_lay_vessel", "export_cable_install_vessel": "example_cable_lay_vessel", @@ -241,18 +507,24 @@ def compile_orbit_config_file(self, inputs, outputs, discrete_inputs, discrete_o "site": { "depth": float(inputs["site_depth"]), "distance": float(inputs["site_distance"]), - "distance_to_landfall": float(inputs["site_distance_to_landfall"]), + "distance_to_landfall": float( + inputs["site_distance_to_landfall"] + ), "mean_windspeed": float(inputs["site_mean_windspeed"]), }, "landfall": { - "interconnection_distance": float(inputs["interconnection_distance"]), + "interconnection_distance": float( + inputs["interconnection_distance"], + ), }, "plant": { "layout": "grid", "num_turbines": int(discrete_inputs["number_of_turbines"]), "row_spacing": float(inputs["plant_row_spacing"]), "turbine_spacing": float(inputs["plant_turbine_spacing"]), - "substation_distance": float(inputs["plant_substation_distance"]), + "substation_distance": float( + inputs["plant_substation_distance"] + ), }, # Turbine + components "turbine": { @@ -290,42 +562,78 @@ def compile_orbit_config_file(self, inputs, outputs, discrete_inputs, discrete_o "cables": ["XLPE_630mm_66kV", "XLPE_185mm_66kV"], }, "export_system_design": { - "cables": "XLPE_1000m_220kV", - "interconnection_distance": float(inputs["interconnection_distance"]), + "cables": "XLPE_1000mm_220kV", + "interconnection_distance": float( + inputs["interconnection_distance"] + ), "percent_added_length": 0.1, }, # Phase Specific "OffshoreSubstationInstallation": { - "oss_install_vessel": "floating_heavy_lift_vessel" if floating_flag else "example_heavy_lift_vessel", - "feeder": "floating_barge" if floating_flag else "future_feeder", + "oss_install_vessel": ( + "floating_heavy_lift_vessel" + if floating_flag + else "example_heavy_lift_vessel" + ), + "feeder": ( + "floating_barge" if floating_flag else "future_feeder" + ), "num_feeders": int(discrete_inputs["num_feeders"]), }, # Project development costs "project_development": { - "site_auction_price": float(inputs["site_auction_price"]), # 100e6, - "site_assessment_plan_cost": float(inputs["site_assessment_plan_cost"]), # 1e6, - "site_assessment_cost": float(inputs["site_assessment_cost"]), # 25e6, - "construction_operations_plan_cost": float(inputs["construction_operations_plan_cost"]), # 2.5e6, + "site_auction_price": float( + inputs["site_auction_price"] + ), # 100e6, + "site_assessment_plan_cost": float( + inputs["site_assessment_plan_cost"] + ), # 1e6, + "site_assessment_cost": float( + inputs["site_assessment_cost"] + ), # 25e6, + "construction_operations_plan_cost": float( + inputs["construction_operations_plan_cost"] + ), # 2.5e6, "boem_review_cost": float(inputs["boem_review_cost"]), # 0, - "design_install_plan_cost": float(inputs["design_install_plan_cost"]), # 2.5e6 + "design_install_plan_cost": float( + inputs["design_install_plan_cost"] + ), # 2.5e6 }, # Other "commissioning": float(inputs["commissioning_pct"]), "decomissioning": float(inputs["decommissioning_pct"]), "turbine_capex": float(inputs["turbine_capex"]), # Phases - # Putting monopile or semisub here would override the inputs we assume to get from WISDEM + # Putting monopile or semisub here would override the inputs + # we assume to get from WISDEM "design_phases": [ - #'MonopileDesign', - #'SemiSubmersibleDesign', - #'MooringSystemDesign', - #'ScourProtectionDesign', + # 'MonopileDesign', + # 'SemiSubmersibleDesign', + # 'MooringSystemDesign', + # 'ScourProtectionDesign', "ArraySystemDesign", "ExportSystemDesign", "OffshoreSubstationDesign", ], } + if config["landfall"]["interconnection_distance"]: + warn( + "landfall dictionary will be deprecated and moved" + " into [export_system_design][landfall].", + DeprecationWarning, + stacklevel=2, + ) + + if config["export_system_design"]["interconnection_distance"]: + warn( + "[export_system][interconnection_distance] will be deprecated" + " and moved to" + " [export_system_design][landfall][interconnection_distance].", + DeprecationWarning, + stacklevel=2, + ) + # Unique design phases if floating_flag: config["install_phases"] = { @@ -336,7 +644,9 @@ def compile_orbit_config_file(self, inputs, outputs, discrete_inputs, discrete_o "ArrayCableInstallation": ("MooredSubInstallation", 0.25), } else: - fixedStr = "JacketInstallation" if jacket_flag else "MonopileInstallation" + fixedStr = ( + "JacketInstallation" if jacket_flag else "MonopileInstallation" + ) if jacket_flag: monopile = config.get("monopile", {}) @@ -357,11 +667,15 @@ def compile_orbit_config_file(self, inputs, outputs, discrete_inputs, discrete_o if floating_flag: vessels = { "support_vessel": "example_support_vessel", + "ahts_vessel": "example_ahts_vessel", "towing_vessel": "example_towing_vessel", "mooring_install_vessel": "example_support_vessel", "towing_vessel_groups": { "towing_vessels": int(discrete_inputs["num_towing"]), - "station_keeping_vessels": int(discrete_inputs["num_station_keeping"]), + "station_keeping_vessels": int( + discrete_inputs["num_station_keeping"] + ), + "ahts_vessels": int(discrete_inputs["ahts_vessels"]), }, } else: @@ -375,8 +689,12 @@ def compile_orbit_config_file(self, inputs, outputs, discrete_inputs, discrete_o # Unique support structure design/assembly if floating_flag: config["port"] = { - "sub_assembly_lines": int(discrete_inputs["num_assembly_lines"]), - "turbine_assembly_cranes": int(discrete_inputs["num_port_cranes"]), + "sub_assembly_lines": int( + discrete_inputs["num_assembly_lines"] + ), + "turbine_assembly_cranes": int( + discrete_inputs["num_port_cranes"] + ), "monthly_rate": float(inputs["port_cost_per_month"]), } @@ -426,7 +744,11 @@ def compile_orbit_config_file(self, inputs, outputs, discrete_inputs, discrete_o "type": "Monopile", "length": float(inputs["monopile_length"]), "diameter": float(inputs["monopile_diameter"]), - "deck_space": 0.25*float(inputs["monopile_diameter"]*inputs["monopile_length"]), + "deck_space": 0.25 + * float( + inputs["monopile_diameter"] + * inputs["monopile_length"] + ), "mass": float(inputs["monopile_mass"]), "unit_cost": float(inputs["monopile_cost"]), } @@ -435,8 +757,11 @@ def compile_orbit_config_file(self, inputs, outputs, discrete_inputs, discrete_o return config def compute(self, inputs, outputs, discrete_inputs, discrete_outputs): + """Creates and runs the project, then gathers the results.""" - config = self.compile_orbit_config_file(inputs, outputs, discrete_inputs, discrete_outputs) + config = self.compile_orbit_config_file( + inputs, outputs, discrete_inputs, discrete_outputs, + ) project = ProjectManager(config) project.run() diff --git a/ORBIT/config.py b/ORBIT/config.py index 4a50732d..d97926d9 100644 --- a/ORBIT/config.py +++ b/ORBIT/config.py @@ -1,10 +1,12 @@ +"""Provides the configuration loading and saving methods.""" + __author__ = "Jake Nunemaker" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Jake Nunemaker" __email__ = "jake.nunemaker@nrel.gov" -import os +from pathlib import Path import yaml from yaml import Dumper @@ -22,7 +24,7 @@ def load_config(filepath): Path to yaml config file. """ - with open(filepath, "r") as f: + with Path(filepath).open() as f: data = yaml.load(f, Loader=loader) return data @@ -42,13 +44,14 @@ def save_config(config, filepath, overwrite=False): Overwrite file if it already exists. Default: False. """ - dirs = os.path.split(filepath)[0] - if dirs and not os.path.isdir(dirs): - os.makedirs(dirs) + filepath = Path(filepath).resolve() + dirs = filepath.parent + if not dirs.exists(): + dirs.mkdir(parents=True) if overwrite is False: - if os.path.exists(filepath): + if filepath.exists(): raise FileExistsError(f"File already exists at '{filepath}'.") - with open(filepath, "w") as f: + with filepath.open("w") as f: yaml.dump(config, f, Dumper=Dumper, default_flow_style=False) diff --git a/ORBIT/core/cargo.py b/ORBIT/core/cargo.py index 843d655e..6d6bf3c7 100644 --- a/ORBIT/core/cargo.py +++ b/ORBIT/core/cargo.py @@ -1,13 +1,13 @@ -""" - -""" +"""Provides the ``Cargo`` base class.""" from marmot import Object class Cargo(Object): + """Base class for working with cargo.""" def __repr__(self): + """Overridden __repr__ method.""" return self.type @property diff --git a/ORBIT/core/components.py b/ORBIT/core/components.py index e4e3792c..15ba6392 100644 --- a/ORBIT/core/components.py +++ b/ORBIT/core/components.py @@ -14,7 +14,7 @@ class Crane: - """Base Crane Class""" + """Base Crane Class.""" def __init__(self, crane_specs): """ @@ -72,7 +72,7 @@ def reequip(**kwargs): class DynamicPositioning: - """Base Dynamic Positioning Class""" + """Base Dynamic Positioning Class.""" def __init__(self, dp_specs): """ @@ -100,7 +100,7 @@ def extract_dp_specs(self, dp_specs): class JackingSys: - """Base Jacking System Class""" + """Base Jacking System Class.""" def __init__(self, jacksys_specs): """ @@ -153,15 +153,15 @@ def jacking_time(self, extension, depth): """ if extension > self.max_extension: - raise Exception( - "{} extension is greater than {} maximum" - "".format(extension, self.max_extension) + msg = ( + f"{extension} extension is greater than {self.max_extension}" + " maximum" ) + raise Exception(msg) elif depth > self.max_depth: raise Exception( - "{} is beyond the operating depth {}" - "".format(depth, self.max_depth) + f"{depth} is beyond the operating depth {self.max_depth}" ) elif depth > extension: @@ -175,12 +175,17 @@ def jacking_time(self, extension, depth): class VesselStorage(simpy.FilterStore): - """Vessel Storage Class""" + """Vessel Storage Class.""" required_keys = ["type", "mass", "deck_space"] def __init__( - self, env, max_cargo, max_deck_space, max_deck_load, **kwargs + self, + env, + max_cargo, + max_deck_space, + max_deck_load, + **kwargs, ): """ Creates an instance of VesselStorage. @@ -291,7 +296,7 @@ def any_remaining(self, _type): class ScourProtectionStorage(simpy.Container): - """Scour Protection Storage Class""" + """Scour Protection Storage Class.""" def __init__(self, env, max_mass, **kwargs): """ @@ -316,7 +321,7 @@ def available_capacity(self): class CableCarousel(simpy.Container): - """Cable Storage Class""" + """Cable Storage Class.""" def __init__(self, env, max_mass, **kwargs): """ @@ -342,7 +347,7 @@ def available_mass(self): @property def current_mass(self): - """Returns current cargo mass""" + """Returns current cargo mass.""" try: mass = self.level * self.cable.linear_density diff --git a/ORBIT/core/defaults/__init__.py b/ORBIT/core/defaults/__init__.py index 7df591ec..bbc9ee9f 100644 --- a/ORBIT/core/defaults/__init__.py +++ b/ORBIT/core/defaults/__init__.py @@ -5,17 +5,17 @@ __maintainer__ = "Jake Nunemaker" __email__ = "jake.nunemaker@nrel.gov" -import os +from pathlib import Path import yaml from ORBIT.core.library import loader -DIR = os.path.split(__file__)[0] +DIR = Path(__file__).parent -with open(os.path.join(DIR, "process_times.yaml"), "r") as f: +with (DIR / "process_times.yaml").open() as f: process_times = yaml.load(f, Loader=loader) -with open(os.path.join(DIR, "common_costs.yaml"), "r") as f: +with (DIR / "common_costs.yaml").open() as f: common_costs = yaml.load(f, Loader=loader) diff --git a/ORBIT/core/defaults/common_costs.yaml b/ORBIT/core/defaults/common_costs.yaml index 2237a44d..1e8e9867 100644 --- a/ORBIT/core/defaults/common_costs.yaml +++ b/ORBIT/core/defaults/common_costs.yaml @@ -1,6 +1,72 @@ # Material costs -monopile_steel_cost: 3000 # USD/t -tp_steel_cost: 3000 # USD/t +monopile_design: + monopile_steel_cost: 3000 # USD/t + tp_steel_cost: 3000 # USD/t # Port properties port_cost_per_month: 2e6 # USD/month + +# Export system component cost rates +export_system_design: + cable_crossings: + crossing_unit_cost: 500000 + +# Spar component cost rates +spar_design: + stiffened_column_CR: 3120 # USD/t + tapered_column_CR: 4220 # USD/t + ballast_material_CR: 100 # USD/t + secondary_steel_CR: 7250 # USD/t + +# Offshore substation component cost rates +substation_design: + mpt_cost_rate: 12500 # USD/MW + topside_fab_cost_rate: 14500 # USD/t + topside_design_cost: # USD + #oldHVAC: 4.5e6 + HVAC: 107.3e6 + HVDC-monopole: 294e6 + HVDC-bipole: 476e6 + shunt_cost_rate: 35000 # USD/MW + mpt_unit_cost: 2.87e6 # USD/mpt + shunt_unit_cost: 10000 # USD/cable + switchgear_cost: 4e6 # USD/cable + dc_breaker_cost: 10.5e6 # USD/cable + backup_gen_cost: 1e6 # USD + workspace_cost: 2e6 # USD + other_ancillary_cost: 3e6 # USD + topside_assembly_factor: 0.075 # % + converter_cost: # USD + HVAC: 0 + HVDC-monopole: 127e6 + HVDC-bipole: 296e6 + oss_substructure_cost_rate: 3000 # USD/t + oss_pile_cost_rate: 0 # USD/t + +# Onshore substation component cost rates +onshore_substation_design: + onshore_converter_cost: # USD + HVAC: 0 + HVDC-monopole: 157e6 + HVDC-bipole: 350e6 + shunt_unit_cost: 13000 # USD/cable + switchgear_cost: 9.33e6 # USD/cable + compensation_rate: # USD/cable + HVAC: 31.3e6 + HVDC-monopole: 0 + HVDC-bipole: 0 + onshore_construction_rate: # USD + HVAC: 5e6 + HVDC-monopole: 87.3e6 + HVDC-bipole: 100e6 + +# Semisubmersible component cost rates +semisubmersible_design: + stiffened_column_CR: 3120 # USD/t + truss_CR: 6250 # USD/t + heave_plate_CR: 6250 # USD/t + secondary_steel_CR: 7250 # USD/t + +# Mooring system component cost rates +mooring_system_design: # USD/m + mooring_line_cost_rate: [399.0, 721.0, 1088.0] diff --git a/ORBIT/core/defaults/process_times.yaml b/ORBIT/core/defaults/process_times.yaml index 1c141c78..01a1f9b5 100644 --- a/ORBIT/core/defaults/process_times.yaml +++ b/ORBIT/core/defaults/process_times.yaml @@ -13,9 +13,9 @@ "cable_lower_time": 1 # hr "cable_pull_in_time": 5.5 # hr "cable_termination_time": 5.5 # hr -"cable_lay_speed": 1 # km/hr -"cable_lay_bury_speed": 0.3 # km/hr -"cable_bury_speed": 0.5 # km/hr +"cable_lay_speed": 0.4 # km/hr +"cable_lay_bury_speed": 0.0625 # km/hr +"cable_bury_speed": 0.4 # km/hr "cable_splice_time": 48 # hr "cable_raise_time": 0.5 # hr @@ -66,7 +66,7 @@ "mooring_system_load_time": 5 # hr "mooring_site_survey_time": 4 # hr "suction_pile_install_time": 11 # hr -"drag_embed_install_time": 5 # hr +"drag_embed_install_time": 12 # hr # Increased from 5h so it now includes proof loading. This time increases with depth (in mooring.py) # Misc. "site_position_time": 2 # hr diff --git a/ORBIT/core/environment.py b/ORBIT/core/environment.py index 4654ec13..dee120e3 100644 --- a/ORBIT/core/environment.py +++ b/ORBIT/core/environment.py @@ -227,10 +227,10 @@ def extrapolate_ws(self, h1, h): self.state = np.array(append_fields(self.state, f"windspeed_{h}m", ts)) @staticmethod - def simplify_num(str): + def simplify_num(string): """Returns the simplest str representation of a number.""" - num = float(str) + num = float(string) if int(num) == num: return int(num) diff --git a/ORBIT/core/exceptions.py b/ORBIT/core/exceptions.py index 8d7d0ca4..b3219c38 100644 --- a/ORBIT/core/exceptions.py +++ b/ORBIT/core/exceptions.py @@ -7,6 +7,7 @@ import os +from pathlib import Path class MissingComponent(Exception): @@ -31,12 +32,12 @@ def __init__(self, vessel, component): ) def __str__(self): - + """Provides the string error message.""" return self.message class ItemNotFound(Exception): - """Error for when no items in list satisfy rule""" + """Error for when no items in list satisfy rule.""" def __init__(self, rule): """ @@ -51,19 +52,20 @@ def __init__(self, rule): self.message = f"No items found that satisfy: {rule}" def __str__(self): + """Provides the string error message.""" return self.message class CargoMassExceeded(Exception): - """Error for exceeding vessel maximum cargo mass""" + """Error for exceeding vessel maximum cargo mass.""" - def __init__(self, max, current, item): + def __init__(self, max_mass, current, item): """ Creates an instance of CargoMassExceeded. Parameters ---------- - max : int | float + max_mass : int | float Maximum vessel cargo mass (t). current : int | float Vessel cargo mass currently in use (t). @@ -72,12 +74,13 @@ def __init__(self, max, current, item): a dictionary with a 'type' or the name of an item. """ - self.max = max + self.max = max_mass self.current = current self.item = item self.message = f"'{self.item}' will exceed maximum cargo mass." def __str__(self): + """Provides the string error message.""" return self.message @@ -101,6 +104,7 @@ def __init__(self, item, required): self.message = f"{item} is missing {self.missing}" def __str__(self): + """Provides the string error message.""" return self.message @@ -132,13 +136,12 @@ def __init__(self, current_amount, item_type, amount_requested): ) def __str__(self): + """Provides the string error message.""" return self.message class InsufficientCable(Exception): - """ - Error raised when a Carousel doesn't have enough cable for next section. - """ + """Error for when a Carousel doesn't have enough cable for next section.""" def __init__(self, current_amount, amount_requested): """ @@ -154,14 +157,15 @@ def __init__(self, current_amount, amount_requested): self.current = current_amount self.requested = amount_requested - self.message = f"Not enough cable on carousel." + self.message = "Not enough cable on carousel." def __str__(self): + """Provides the string error message.""" return self.message class PhaseNotFound(Exception): - """Exception for missing Phase""" + """Exception for missing Phase.""" def __init__(self, p): """ @@ -177,6 +181,7 @@ def __init__(self, p): self.message = f"Unrecognized phase '{self.phase}'." def __str__(self): + """Provides a string of the error message.""" return self.message @@ -197,6 +202,7 @@ def __init__(self, k): self.message = f"Input(s) '{self.keys}' missing in config." def __str__(self): + """Provides a string of the error message.""" return self.message @@ -224,11 +230,12 @@ def __init__(self, start, weather): ) def __str__(self): + """Provides a string of the error message.""" return self.message class LibraryItemNotFoundError(Exception): - """Error for missing library data""" + """Error for missing library data.""" def __init__(self, sub_dir, name): """ @@ -242,11 +249,12 @@ def __init__(self, sub_dir, name): Filename of item to be extracted. """ - self.dir = os.path.join(os.environ["DATA_LIBRARY"], sub_dir) + self.dir = Path(os.environ["DATA_LIBRARY"]) / sub_dir self.name = name self.message = f"{self.name} not found in {self.dir}." def __str__(self): + """Provides a string of the error message.""" return self.message @@ -276,21 +284,19 @@ def __init__(self, agent, duration, max_windspeed, max_waveheight): self.max_waveheight = max_waveheight self.message = ( - "No weather window found for '{}' that satisfies:" - "\n\tMaximum Windspeed: {:.2f}" - "\n\tMaximum Waveheight: {:.2f}" - "\n\tDuration: {:.2f}" - "".format(agent, max_windspeed, max_waveheight, duration) + f"No weather window found for '{agent}' that satisfies:" + f"\n\tMaximum Windspeed: {max_windspeed:.2f}" + f"\n\tMaximum Waveheight: {max_waveheight:.2f}" + f"\n\tDuration: {duration:.2f}" ) def __str__(self): + """Provides a string of the error message.""" return self.message class WeatherProfileExhausted(Exception): - """ - Error to be raised at the end of the weather data. - """ + """Error to be raised at the end of the weather data.""" def __init__(self, length): """ @@ -304,11 +310,10 @@ def __init__(self, length): self.length = length - self.message = "Weather profile exhausted at element {:,.0f}".format( - length - ) + self.message = f"Weather profile exhausted at element {length:,.0f}" def __str__(self): + """Provides a string of the error message.""" return self.message @@ -337,6 +342,7 @@ def __init__(self, vessel, items): ) def __str__(self): + """Provides a string of the error message.""" return self.message @@ -345,7 +351,7 @@ class FastenTimeNotFound(Exception): def __init__(self, item): """ - Creates an instance of FastenTimeNotFound + Creates an instance of FastenTimeNotFound. Parameters ---------- @@ -358,6 +364,7 @@ def __init__(self, item): self.message = f"Unknown fasten time for item type '{item}'." def __str__(self): + """Provides a string of the error message.""" return self.message @@ -379,4 +386,5 @@ def __init__(self, phases): self.message = f"Phase dependencies {phases} are not resolvable." def __str__(self): + """Provides a string of the error message.""" return self.message diff --git a/ORBIT/core/library.py b/ORBIT/core/library.py index 6f771cc0..3fcb588e 100644 --- a/ORBIT/core/library.py +++ b/ORBIT/core/library.py @@ -27,13 +27,14 @@ __author__ = "Rob Hammond" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Rob Hammond" -__email__ = "robert.hammond@nrel.gov" +__email__ = "rob.hammond@nrel.gov" import os import re import csv import warnings +from pathlib import Path import yaml import pandas as pd @@ -41,17 +42,22 @@ from ORBIT.core.exceptions import LibraryItemNotFoundError -ROOT = os.path.abspath(os.path.join(os.path.abspath(__file__), "../../..")) -default_library = os.path.join(ROOT, "library") +ROOT = Path(__file__).parents[2] +default_library = ROOT / "library" + # Need a custom loader to read in scientific notation correctly class CustomSafeLoader(yaml.SafeLoader): + """Custom loader that enables tuple sequences in YAML files.""" + def construct_python_tuple(self, node): + """Constructs the tuple.""" return tuple(self.construct_sequence(node)) CustomSafeLoader.add_constructor( - "tag:yaml.org,2002:python/tuple", CustomSafeLoader.construct_python_tuple + "tag:yaml.org,2002:python/tuple", + CustomSafeLoader.construct_python_tuple, ) loader = CustomSafeLoader @@ -96,14 +102,15 @@ def initialize_library(library_path): if library_path is None: library_path = default_library - if not os.path.isdir(library_path): - raise ValueError(f"Invalid library path.") + library_path = Path(library_path).resolve() + if not library_path.is_dir(): + raise ValueError("Invalid library path.") - os.environ["DATA_LIBRARY"] = library_path + os.environ["DATA_LIBRARY"] = str(library_path) print(f"ORBIT library intialized at '{library_path}'") -def extract_library_data(config, additional_keys=[]): +def extract_library_data(config, additional_keys=None): """ Extracts the configuration data from the specified library. @@ -111,7 +118,7 @@ def extract_library_data(config, additional_keys=[]): ---------- config : dict Configuration dictionary. - additional_keys : list + additional_keys : list | None Additional keys that contain data that needs to be extracted from within `config`, by default []. @@ -121,6 +128,9 @@ def extract_library_data(config, additional_keys=[]): Configuration dictionary. """ + if additional_keys is None: + additional_keys = [] + if os.environ.get("DATA_LIBRARY", None) is None: return config @@ -167,14 +177,14 @@ def extract_library_specs(key, filename, file_type="yaml"): filename = f"{filename}.{file_type}" path = PATH_LIBRARY[key] - filepath = os.path.join(os.environ["DATA_LIBRARY"], path, filename) + filepath = Path(os.environ["DATA_LIBRARY"]) / path / filename - if os.path.isfile(filepath): + if filepath.is_file(): return _extract_file(filepath) - if os.environ["DATA_LIBRARY"] != default_library: - filepath = os.path.join(default_library, path, filename) - if os.path.isfile(filepath): + if Path(os.environ["DATA_LIBRARY"]) != default_library: + filepath = default_library / path / filename + if filepath.is_file(): return _extract_file(filepath) raise LibraryItemNotFoundError(path, filename) @@ -186,30 +196,27 @@ def _extract_file(filepath): Parameters ---------- - filepath : str + filepath : pathlib.Path Valid filepath of library item. """ - if filepath.endswith("yaml"): - f = open(filepath, "r") - fyaml = yaml.load(f, Loader=loader) - f.close() + ftype = filepath.suffix + if ftype in (".yaml", ".yml"): + with filepath.open() as f: + fyaml = yaml.load(f, Loader=loader) return fyaml - elif filepath.endswith("csv"): + elif ftype == ".csv": df = pd.read_csv(filepath, index_col=False) # Drop empty rows and columns - df.dropna(how="all", inplace=True) - df.dropna(how="all", inplace=True, axis=1) + df = df.dropna(how="all").dropna(how="all", axis=1) # Enforce strictly lowercase and "_" separated column names df.columns = [el.replace(" ", "_").lower() for el in df.columns] return df - else: - _type = filepath.split(".")[-1] - raise TypeError(f"File type {_type} not supported for extraction.") + raise TypeError(f"File type {ftype} not supported for extraction.") def _get_yes_no_response(filename): @@ -244,16 +251,15 @@ def export_library_specs(key, filename, data, file_ext="yaml"): filename = f"{filename}.{file_ext}" path = PATH_LIBRARY[key] - data_path = os.path.join(os.environ["DATA_LIBRARY"], path, filename) - if os.path.isfile(data_path) and not _get_yes_no_response(data_path): + data_path = Path(os.environ["DATA_LIBRARY"]) / path / filename + if data_path.is_file() and not _get_yes_no_response(data_path): print("Cancelling save!") return if file_ext == "yaml": - f = open(data_path, "w") - yaml.dump(data, f, Dumper=Dumper, default_flow_style=False) - f.close() + with data_path.open("w") as f: + yaml.dump(data, f, Dumper=Dumper, default_flow_style=False) elif file_ext == "csv": - with open(data_path, "w") as f: + with data_path.open("w") as f: writer = csv.writer(f) writer.writerows(data) print("Save complete!") @@ -277,6 +283,7 @@ def export_library_specs(key, filename, data, file_ext="yaml"): "wtiv": "vessels", "towing_vessel": "vessels", "support_vessel": "vessels", + "ahts_vessel": "vessels", # cables "cables": "cables", "array_system": "cables", @@ -284,11 +291,11 @@ def export_library_specs(key, filename, data, file_ext="yaml"): "export_system": "cables", "export_system_design": "cables", # project details - "config": os.path.join("project", "config"), - "plant": os.path.join("project", "plant"), - "port": os.path.join("project", "ports"), - "project_development": os.path.join("project", "development"), - "site": os.path.join("project", "site"), + "config": str(Path("project") / "config"), + "plant": str(Path("project") / "plant"), + "port": str(Path("project") / "ports"), + "project_development": str(Path("project") / "development"), + "site": str(Path("project") / "site"), # substructures "monopile": "substructures", "monopile_design": "substructures", diff --git a/ORBIT/core/logic/__init__.py b/ORBIT/core/logic/__init__.py index 7c928e57..24b00f63 100644 --- a/ORBIT/core/logic/__init__.py +++ b/ORBIT/core/logic/__init__.py @@ -1,4 +1,4 @@ -"""This package contains simulation logic shared across several modules.""" +"""Provides the simulation logic shared across several modules.""" __author__ = "Jake Nunemaker" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" diff --git a/ORBIT/core/logic/vessel_logic.py b/ORBIT/core/logic/vessel_logic.py index b27a3e78..a906a89a 100644 --- a/ORBIT/core/logic/vessel_logic.py +++ b/ORBIT/core/logic/vessel_logic.py @@ -1,4 +1,4 @@ -"""This module contains common simulation logic related to vessels.""" +"""Provides common simulation logic related to vessels.""" __author__ = ["Jake Nunemaker", "Rob Hammond"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" @@ -71,13 +71,17 @@ def stabilize(vessel, **kwargs): extension = kwargs.get("extension", site_depth + 10) jackup_time = jacksys.jacking_time(extension, site_depth) yield vessel.task_wrapper( - "Jackup", jackup_time, constraints=vessel.transit_limits, **kwargs + "Jackup", + jackup_time, + constraints=vessel.transit_limits, + **kwargs, ) - except MissingComponent: + except MissingComponent as exc: raise MissingComponent( - vessel, ["Dynamic Positioning", "Jacking System"] - ) + vessel, + ["Dynamic Positioning", "Jacking System"], + ) from exc @process @@ -123,7 +127,9 @@ def position_onsite(vessel, **kwargs): position_time = kwargs.get("site_position_time", pt["site_position_time"]) yield vessel.task_wrapper( - "Position Onsite", position_time, constraints=vessel.transit_limits + "Position Onsite", + position_time, + constraints=vessel.transit_limits, ) @@ -162,7 +168,10 @@ def shuttle_items_to_queue(vessel, port, queue, distance, items, **kwargs): # Get list of items try: yield get_list_of_items_from_port( - vessel, port, items, **kwargs + vessel, + port, + items, + **kwargs, ) except ItemNotFound: @@ -178,7 +187,9 @@ def shuttle_items_to_queue(vessel, port, queue, distance, items, **kwargs): vessel.update_trip_data() vessel.at_port = False yield vessel.task_wrapper( - "Transit", transit_time, constraints=vessel.transit_limits + "Transit", + transit_time, + constraints=vessel.transit_limits, ) yield stabilize(vessel, **kwargs) vessel.at_site = True @@ -194,7 +205,9 @@ def shuttle_items_to_queue(vessel, port, queue, distance, items, **kwargs): queue_time = vessel.env.now - queue_start if queue_time > 0: vessel.submit_action_log( - "Queue", queue_time, location="Site" + "Queue", + queue_time, + location="Site", ) queue.vessel = vessel @@ -207,7 +220,9 @@ def shuttle_items_to_queue(vessel, port, queue, distance, items, **kwargs): active_time = vessel.env.now - active_start vessel.submit_action_log( - "ActiveFeeder", active_time, location="Site" + "ActiveFeeder", + active_time, + location="Site", ) queue.vessel = None @@ -217,7 +232,9 @@ def shuttle_items_to_queue(vessel, port, queue, distance, items, **kwargs): vessel.at_site = False yield jackdown_if_required(vessel, **kwargs) yield vessel.task_wrapper( - "Transit", transit_time, constraints=vessel.transit_limits + "Transit", + transit_time, + constraints=vessel.transit_limits, ) vessel.at_port = True @@ -307,7 +324,14 @@ def get_list_of_items_from_port(vessel, port, items, **kwargs): @process def shuttle_items_to_queue_wait( - vessel, port, queue, distance, items, per_trip, assigned, **kwargs + vessel, + port, + queue, + distance, + items, + per_trip, + assigned, + **kwargs, ): """ Shuttles a list of items from port to queue. @@ -338,13 +362,18 @@ def shuttle_items_to_queue_wait( # Get list of items per_trip = max([per_trip, 1]) yield get_list_of_items_from_port_wait( - vessel, port, items * per_trip, **kwargs + vessel, + port, + items * per_trip, + **kwargs, ) # Transit to site vessel.update_trip_data() yield vessel.task( - "Transit", transit_time, constraints=vessel.transit_limits + "Transit", + transit_time, + constraints=vessel.transit_limits, ) yield stabilize(vessel, **kwargs) @@ -369,7 +398,9 @@ def shuttle_items_to_queue_wait( active_time = vessel.env.now - active_start vessel.submit_action_log( - "ActiveFeeder", active_time, location="Site" + "ActiveFeeder", + active_time, + location="Site", ) queue.vessel = None @@ -379,7 +410,9 @@ def shuttle_items_to_queue_wait( vessel.at_site = False yield jackdown_if_required(vessel, **kwargs) yield vessel.task( - "Transit", transit_time, constraints=vessel.transit_limits + "Transit", + transit_time, + constraints=vessel.transit_limits, ) n += per_trip @@ -411,7 +444,7 @@ def get_list_of_items_from_port_wait(vessel, port, items, **kwargs): for i in items: wait_start = vessel.env.now - item = yield port.get(lambda x: x.type == i) + item = yield port.get(lambda x: x.type == i) # noqa: B023 wait_time = vessel.env.now - wait_start if wait_time > 0: @@ -422,5 +455,8 @@ def get_list_of_items_from_port_wait(vessel, port, items, **kwargs): if time > 0: yield vessel.task( - action, time, constraints=vessel.transit_limits, **kwargs + action, + time, + constraints=vessel.transit_limits, + **kwargs, ) diff --git a/ORBIT/core/port.py b/ORBIT/core/port.py index dbfc152a..9078768a 100644 --- a/ORBIT/core/port.py +++ b/ORBIT/core/port.py @@ -12,7 +12,7 @@ class Port(simpy.FilterStore): - """Port Class""" + """Port Class.""" def __init__(self, env, **kwargs): """ diff --git a/ORBIT/core/supply_chain.py b/ORBIT/core/supply_chain.py index 0f2f3e1a..6314bbdb 100644 --- a/ORBIT/core/supply_chain.py +++ b/ORBIT/core/supply_chain.py @@ -9,10 +9,16 @@ class SubstructureDelivery(Agent): - """""" + """Simulates the substrucutre delivery process.""" def __init__( - self, component, num, deilvery_time, port, items, num_parallel=1 + self, + component, + num, + deilvery_time, + port, + items, + num_parallel=1, ): """ Creates an instance of `SupplyChain`. @@ -41,6 +47,7 @@ def __init__( @process def start(self): + """Starts the delivery processes.""" n = 0 while n < self.num: diff --git a/ORBIT/core/vessel.py b/ORBIT/core/vessel.py index 88c823a4..430ea2bc 100644 --- a/ORBIT/core/vessel.py +++ b/ORBIT/core/vessel.py @@ -5,16 +5,11 @@ __maintainer__ = "Jake Nunemaker" __email__ = "jake.nunemaker@nrel.gov" -from math import ceil from collections import Counter, namedtuple import numpy as np from marmot import Agent, le, process -from marmot._exceptions import ( - StateExhausted, - WindowNotFound, - AgentNotRegistered, -) +from marmot._exceptions import AgentNotRegistered from ORBIT.core.components import ( Crane, @@ -30,7 +25,7 @@ class Vessel(Agent): - """Base Vessel Class""" + """Base Vessel Class.""" def __init__(self, name, config, avail=1): """ @@ -84,9 +79,16 @@ def submit_action_log(self, action, duration, **kwargs): @process def task_wrapper( - self, name, duration, constraints={}, suspendable=False, **kwargs + self, + name, + duration, + constraints=None, + suspendable=False, + **kwargs, ): - + """Wraps the ``task`` method and provides two checks.""" + if constraints is None: + constraints = {} duration /= self.avail yield self.task(name, duration, constraints, suspendable, **kwargs) @@ -100,7 +102,7 @@ def extract_vessel_dayrate(self): self.day_rate = self.config["vessel_specs"]["day_rate"] except KeyError: - self.day_rate = np.NaN + self.day_rate = np.nan def mobilize(self): """ @@ -135,8 +137,8 @@ def crane(self): try: return self._crane - except AttributeError: - raise MissingComponent(self, "Crane") + except AttributeError as exc: + raise MissingComponent(self, "Crane") from exc @property def jacksys(self): @@ -144,17 +146,17 @@ def jacksys(self): try: return self._jacksys - except AttributeError: - raise MissingComponent(self, "Jacking System") + except AttributeError as exc: + raise MissingComponent(self, "Jacking System") from exc @property def dynamic_positioning(self): - """Returns configured `DynamicPositioning` or raises `MissingComponent`.""" + """Returns `DynamicPositioning` or raises `MissingComponent`.""" try: return self._dp_system - except AttributeError: - raise MissingComponent(self, "Dynamic Positioning") + except AttributeError as exc: + raise MissingComponent(self, "Dynamic Positioning") from exc @property def storage(self): @@ -162,17 +164,20 @@ def storage(self): try: return self._storage - except AttributeError: - return MissingComponent(self, "Vessel Storage") + except AttributeError as exc: + raise MissingComponent(self, "Vessel Storage") from exc @property def rock_storage(self): - """Returns configured `ScourProtectionStorage` or raises `MissingComponent`.""" + """ + Returns configured `ScourProtectionStorage` or raises + `MissingComponent`. + """ try: return self._rock_storage - except AttributeError: - raise MissingComponent(self, "Scour Protection Storage") + except AttributeError as exc: + raise MissingComponent(self, "Scour Protection Storage") from exc @property def cable_storage(self): @@ -180,8 +185,8 @@ def cable_storage(self): try: return self._cable_storage - except AttributeError: - raise MissingComponent(self, "Cable Storage") + except AttributeError as exc: + raise MissingComponent(self, "Cable Storage") from exc def initialize(self, mobilize=True): """ @@ -237,13 +242,14 @@ def extract_storage_specs(self): self._storage = VesselStorage(self.env, **self._storage_specs) def extract_cable_storage_specs(self): - """Extracts and defines cable storage system specifications if found.""" + """Extracts and defines cable storage system specifications.""" self._cable_storage_specs = self.config.get("cable_storage", {}) if self._cable_storage_specs: self.trip_data = [] self._cable_storage = CableCarousel( - self.env, **self._cable_storage_specs + self.env, + **self._cable_storage_specs, ) def extract_scour_protection_specs(self): @@ -269,12 +275,17 @@ def extract_scour_protection_specs(self): self._rock_storage = ScourProtectionStorage(self.env, capacity) self.scour_protection_install_speed = self._sp_specs.get( - "scour_protection_install_speed", 10 + "scour_protection_install_speed", + 10, ) @process def get_item_from_storage( - self, _type, vessel=None, release=False, **kwargs + self, + _type, + vessel=None, + release=False, + **kwargs, ): """ Retrieves an item which matches `item.type = _type` from `self.storage` @@ -375,7 +386,7 @@ def operational_limits(self): """ try: - _ = getattr(self, "crane") + _ = self.crane max_windspeed = self._crane_specs["max_windspeed"] except MissingComponent: @@ -403,9 +414,9 @@ def update_trip_data(self, cargo=True, deck=True, items=True): if storage is None: raise Exception("Vessel does not have storage capacity.") - _cargo = storage.current_cargo_mass if cargo else np.NaN - _deck = storage.current_deck_space if deck else np.NaN - _items = dict(Counter(i for i in storage.items)) if items else np.NaN + _cargo = storage.current_cargo_mass if cargo else np.nan + _deck = storage.current_deck_space if deck else np.nan + _items = dict(Counter(i for i in storage.items)) if items else np.nan trip = Trip(cargo_mass=_cargo, deck_space=_deck, items=_items) @@ -426,7 +437,7 @@ def cargo_mass_utilizations(self): return np.array(self.cargo_mass_list) / max_cargo_mass except MissingComponent: - return np.array(np.NaN) + return np.array(np.nan) @property def deck_space_list(self): @@ -443,14 +454,14 @@ def deck_space_utilizations(self): return np.array(self.deck_space_list) / max_deck_space except MissingComponent: - return np.array(np.NaN) + return np.array(np.nan) @property def max_cargo_mass_utilization(self): """Returns maximum cargo mass utilization.""" if not self.trip_data: - return np.NaN + return np.nan return np.max(self.cargo_mass_utilizations) @@ -459,7 +470,7 @@ def min_cargo_mass_utilization(self): """Returns minimum cargo mass utilization.""" if not self.trip_data: - return np.NaN + return np.nan return np.min(self.cargo_mass_utilizations) @@ -468,7 +479,7 @@ def mean_cargo_mass_utilization(self): """Returns mean cargo mass utilization.""" if not self.trip_data: - return np.NaN + return np.nan return np.mean(self.cargo_mass_utilizations) @@ -477,7 +488,7 @@ def median_cargo_mass_utilization(self): """Returns median cargo mass utilization.""" if not self.trip_data: - return np.NaN + return np.nan return np.median(self.cargo_mass_utilizations) @@ -486,7 +497,7 @@ def max_deck_space_utilization(self): """Returns maximum deck_space utilization.""" if not self.trip_data: - return np.NaN + return np.nan return np.max(self.deck_space_utilizations) @@ -495,7 +506,7 @@ def min_deck_space_utilization(self): """Returns minimum deck_space utilization.""" if not self.trip_data: - return np.NaN + return np.nan return np.min(self.deck_space_utilizations) @@ -504,7 +515,7 @@ def mean_deck_space_utilization(self): """Returns mean deck space utilization.""" if not self.trip_data: - return np.NaN + return np.nan return np.mean(self.deck_space_utilizations) @@ -513,7 +524,7 @@ def median_deck_space_utilization(self): """Returns median deck space utilization.""" if not self.trip_data: - return np.NaN + return np.nan return np.median(self.deck_space_utilizations) @@ -522,7 +533,7 @@ def max_items_by_mass(self): """Returns items corresponding to `self.max_cargo_mass`.""" if not self.trip_data: - return np.NaN + return np.nan i = np.argmax(self.cargo_mass_list) return self.trip_data[i].items @@ -532,7 +543,7 @@ def min_items_by_mass(self): """Returns items corresponding to `self.min_cargo_mass`.""" if not self.trip_data: - return np.NaN + return np.nan i = np.argmin(self.cargo_mass_list) return self.trip_data[i].items @@ -542,7 +553,7 @@ def max_items_by_space(self): """Returns items corresponding to `self.max_deck_space`.""" if not self.trip_data: - return np.NaN + return np.nan i = np.argmax(self.deck_space_list) return self.trip_data[i].items @@ -552,7 +563,7 @@ def min_items_by_space(self): """Returns items corresponding to `self.min_deck_space`.""" if not self.trip_data: - return np.NaN + return np.nan i = np.argmin(self.deck_space_list) return self.trip_data[i].items diff --git a/ORBIT/manager.py b/ORBIT/manager.py index 6aeb5ba1..1ad6eaee 100644 --- a/ORBIT/manager.py +++ b/ORBIT/manager.py @@ -1,16 +1,21 @@ +""" +Provides the ``ProjectManager`` API for running ORBIT simulations and +calculating results. +""" + __author__ = ["Jake Nunemaker"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Jake Nunemaker" __email__ = ["jake.nunemaker@nrel.gov"] -import os import re import datetime as dt import collections.abc as collections from copy import deepcopy from math import ceil from numbers import Number +from pathlib import Path from itertools import product import numpy as np @@ -27,6 +32,7 @@ from ORBIT.phases.design import ( SparDesign, MonopileDesign, + ElectricalDesign, ArraySystemDesign, ExportSystemDesign, MooringSystemDesign, @@ -34,6 +40,7 @@ SemiSubmersibleDesign, CustomArraySystemDesign, OffshoreSubstationDesign, + OffshoreFloatingSubstationDesign, ) from ORBIT.phases.install import ( JacketInstallation, @@ -68,9 +75,11 @@ class ProjectManager: ExportSystemDesign, ScourProtectionDesign, OffshoreSubstationDesign, + OffshoreFloatingSubstationDesign, MooringSystemDesign, SemiSubmersibleDesign, SparDesign, + ElectricalDesign, ) _install_phases = ( @@ -126,6 +135,20 @@ def __init__(self, config, library_path=None, weather=None): self.phase_times = {} self._output_logs = [] + @property + def start_date(self): + """ + Return start date for the analysis. If weather is configured, the + first date in the weather profile is used. If weather is not + configured, an arbitary start date is assumed and used to index phase + times. + """ + + if self.weather is not None: + return self.weather.index[0].to_pydatetime() + + return dt.datetime(2010, 1, 1, 0, 0) + def run(self, **kwargs): """ Main project run method. @@ -170,7 +193,7 @@ def _print_warnings(self): try: df = pd.DataFrame(self.logs) - df = df.loc[~df["message"].isnull()] + df = df.loc[~df["message"].isna()] df = df.loc[df["message"].str.contains("Exceeded")] for msg in df["message"].unique(): @@ -205,10 +228,12 @@ def register_design_phase(cls, phase): ) if phase.__name__ in [c.__name__ for c in cls._design_phases]: - raise ValueError(f"A phase with name '{phase.__name__}' already exists.") + raise ValueError( + f"A phase with name '{phase.__name__}' already exists." + ) if len(re.split("[_ ]", phase.__name__)) > 1: - raise ValueError(f"Registered phase name must not include a '_'.") + raise ValueError("Registered phase name must not include a '_'.") cls._design_phases = (*cls._design_phases, phase) @@ -229,10 +254,12 @@ def register_install_phase(cls, phase): ) if phase.__name__ in [c.__name__ for c in cls._install_phases]: - raise ValueError(f"A phase with name '{phase.__name__}' already exists.") + raise ValueError( + f"A phase with name '{phase.__name__}' already exists." + ) if len(re.split("[_ ]", phase.__name__)) > 1: - raise ValueError(f"Registered phase name must not include a '_'.") + raise ValueError("Registered phase name must not include a '_'.") cls._install_phases = (*cls._install_phases, phase) @@ -336,7 +363,7 @@ def resolve_project_capacity(self): if all((project_capacity, turbine_rating, num_turbines)): if project_capacity != (turbine_rating * num_turbines): raise AttributeError( - f"Input and calculated project capacity don't match." + "Input and calculated project capacity don't match." ) else: @@ -380,9 +407,7 @@ def find_key_match(cls, target): @classmethod def phase_dict(cls): - """ - Returns dictionary of all possible phases with format 'name': 'class'. - """ + """Returns dictionary of all phases with format {'name': 'class'}.""" install = {p.__name__: p for p in cls._install_phases} design = {p.__name__: p for p in cls._design_phases} @@ -409,14 +434,17 @@ def merge_dicts(cls, left, right, overwrite=True, add_keys=True): if not add_keys: right = {k: right[k] for k in set(new).intersection(set(right))} - for k, _ in right.items(): + for k in right.keys(): if ( k in new and isinstance(new[k], dict) and isinstance(right[k], collections.Mapping) ): new[k] = cls.merge_dicts( - new[k], right[k], overwrite=overwrite, add_keys=add_keys + new[k], + right[k], + overwrite=overwrite, + add_keys=add_keys, ) elif ( k in new @@ -500,6 +528,7 @@ def create_config_for_phase(self, phase): @property def phase_ends(self): + """Calculates hte end date for all phases.""" ret = {} for k, t in self.phase_times.items(): @@ -546,11 +575,14 @@ def run_install_phase(self, name, start, **kwargs): if _catch: try: phase = _class( - _config, weather=weather, phase_name=name, **kwargs + _config, + weather=weather, + phase_name=name, + **kwargs, ) phase.run() - except Exception as e: + except Exception as e: # noqa: BLE001 print(f"\n\t - {name}: {e}") return None, None @@ -566,7 +598,8 @@ def run_install_phase(self, name, start, **kwargs): self.phase_starts[name] = start self.phase_times[name] = time self.detailed_outputs = self.merge_dicts( - self.detailed_outputs, phase.detailed_output + self.detailed_outputs, + phase.detailed_output, ) if phase.system_capex: @@ -601,9 +634,7 @@ def get_phase_class(self, phase): return phase_class def run_all_design_phases(self, phase_list, **kwargs): - """ - Runs multiple design phases and adds '.design_result' to self.config. - """ + """Runs the design phases and adds '.design_result' to self.config.""" for name in phase_list: self.run_design_phase(name, **kwargs) @@ -628,7 +659,7 @@ def run_design_phase(self, name, **kwargs): phase = _class(_config) phase.run() - except Exception as e: + except Exception as e: # noqa: BLE001 print(f"\n\t - {name}: {e}") return @@ -639,11 +670,15 @@ def run_design_phase(self, name, **kwargs): self._phases[name] = phase self.design_results = self.merge_dicts( - self.design_results, phase.design_result, overwrite=False + self.design_results, + phase.design_result, + overwrite=False, ) self.config = self.merge_dicts( - self.config, phase.design_result, overwrite=False + self.config, + phase.design_result, + overwrite=False, ) self.detailed_outputs = self.merge_dicts( self.detailed_outputs, phase.detailed_output @@ -668,14 +703,14 @@ def run_multiple_phases_in_serial(self, phase_list, **kwargs): continue else: - for l in logs: + for log in logs: try: - l["time"] += start + log["time"] += start except KeyError: pass self._output_logs.extend(logs) - start = ceil(start + time) + start = start + time def run_multiple_phases_overlapping(self, phases, **kwargs): """ @@ -700,9 +735,9 @@ def run_multiple_phases_overlapping(self, phases, **kwargs): continue else: - for l in logs: + for log in logs: try: - l["time"] += start - zero + log["time"] += start - zero except KeyError: pass @@ -748,9 +783,9 @@ def run_dependent_phases(self, _phases, zero, **kwargs): continue else: - for l in logs: + for log in logs: try: - l["time"] += start - zero + log["time"] += start - zero except KeyError: pass @@ -778,7 +813,40 @@ def get_dependency_start_time(self, target, perc): start = self.phase_starts[target] elapsed = self.phase_times[target] - return start + elapsed * perc + if isinstance(perc, (int, float)): + + if (perc < 0.0) or (perc > 1.0): + raise ValueError( + "Dependent phase perc must be between 0. and 1." + ) + + return start + elapsed * perc + + if isinstance(perc, str): + + try: + delta = dt.timedelta( + **{ + v.split("=")[0].strip(): float(v.split("=")[1]) + for v in perc.split(";") + } + ) + + return start + delta.days * 24 + delta.seconds / 3600 + + except (TypeError, IndexError) as exc: + raise ValueError( + "Dependent phase amount must be defined with this" + " format: 'weeks=1;hours=12'. Accepted entries: 'weeks'," + " 'days', 'hours'." + ) from exc + + else: + raise ValueError( + f"Unrecognized dependent phase amount: '{perc}'. " + f"Must be float between 0. and 1.0 or str with format " + "'weeks=1;days=0;hours=12'" + ) @staticmethod def transform_weather_input(weather): @@ -808,7 +876,8 @@ def transform_weather_input(weather): def _parse_install_phase_values(self, phases): """ Parses the input dictionary `install_phases`, splitting them into - phases that have defined start times and ones that rely on other phases. + phases that have defined start times and ones that rely on other + phases. Parameters ---------- @@ -827,24 +896,8 @@ def _parse_install_phase_values(self, phases): for k, v in phases.items(): - if isinstance(v, (int, float)): - defined[k] = ceil(v) - - elif isinstance(v, str): - _dt = dt.datetime.strptime(v, self.date_format_short) - - try: - i = self.weather.index.get_loc(_dt) - defined[k] = i - - except AttributeError: - raise ValueError( - f"No weather profile configured " - f"for '{k}': '{v}' input type." - ) - - except KeyError: - raise WeatherProfileError(_dt, self.weather) + if isinstance(v, (int, float, str)): + defined[k] = v elif isinstance(v, tuple) and len(v) == 2: depends[k] = v @@ -855,6 +908,32 @@ def _parse_install_phase_values(self, phases): if not defined: raise ValueError("No phases have a defined start index/date.") + if len({type(i) for i in defined.values()}) > 1: + raise ValueError( + "Defined start date types can't be mixed." + " All must be an int (index location) or str (format:" + " '%m/%d/%Y'). This does not apply to the dependent phases" + " defined as tuples." + ) + + for k, v in defined.items(): + + if isinstance(v, int): + continue + + _dt = dt.datetime.strptime(v, self.date_format_short) + + if self.weather is not None: + try: + defined[k] = self.weather.index.get_loc(_dt) + + except KeyError as exc: + raise WeatherProfileError(_dt, self.weather) from exc + + else: + delta = _dt - self.start_date + defined[k] = delta.days * 24 + delta.seconds / 3600 + return defined, depends def get_weather_profile(self, start): @@ -945,7 +1024,7 @@ def num_turbines(self): @property def turbine_rating(self): - """Returns turbine rating in MW""" + """Returns turbine rating in MW.""" try: rating = self.config["turbine"]["turbine_rating"] @@ -959,7 +1038,7 @@ def turbine_rating(self): def logs(self): """Returns list of all logs in the project.""" - return sorted(self._output_logs, key=lambda l: l["time"]) + return sorted(self._output_logs, key=lambda x: x["time"]) @property def project_time(self): @@ -976,14 +1055,16 @@ def month_bins(self): @property def monthly_expenses(self): """Returns the monthly expenses of the project from development through - construction.""" + construction. + """ opex = self.monthly_opex lifetime = self.project_params.get("project_lifetime", 25) _expense_logs = self._filter_logs(keys=["cost", "time"]) expenses = np.array( - _expense_logs, dtype=[("cost", "f8"), ("time", "i4")] + _expense_logs, + dtype=[("cost", "f8"), ("time", "i4")], ) dig = np.digitize(expenses["time"], self.month_bins) @@ -1021,7 +1102,8 @@ def monthly_opex(self): @property def monthly_revenue(self): """Returns the monthly revenue based on when array system strings can - be energized, eg. 'self.progress.energize_points'.""" + be energized, eg. 'self.progress.energize_points'. + """ ncf = self.project_params.get("ncf", 0.4) price = self.project_params.get("offtake_price", 80) @@ -1044,7 +1126,8 @@ def monthly_revenue(self): @property def cash_flow(self): """Returns the net cash flow based on `self.monthly_expenses` and - `self.monthly_revenue`.""" + `self.monthly_revenue`. + """ try: revenue = self.monthly_revenue @@ -1061,7 +1144,8 @@ def cash_flow(self): @property def npv(self): """Returns the net present value of the project based on - `self.cash_flow`.""" + `self.cash_flow`. + """ dr = self.project_params.get("discount_rate", 0.025) pr = (1 + dr) ** (1 / 12) - 1 @@ -1084,9 +1168,9 @@ def _filter_logs(self, keys): """Returns filtered list of logs.""" filtered = [] - for l in self.logs: + for log in self.logs: try: - filtered.append(tuple(l[k] for k in keys)) + filtered.append(tuple(log[k] for k in keys)) except KeyError: pass @@ -1116,8 +1200,8 @@ def progress_summary(self): def actions(self): """Returns list of all actions in the project.""" - actions = [l for l in self.logs if l["level"] == "ACTION"] - return sorted(actions, key=lambda l: l["time"]) + actions = [log for log in self.logs if log["level"] == "ACTION"] + return sorted(actions, key=lambda x: x["time"]) @staticmethod def create_input_xlsx(): @@ -1129,9 +1213,7 @@ def create_input_xlsx(): @property def phase_dates(self): - """ - Returns a combination of input start dates and `self.phase_times`. - """ + """Returns a combination of phase start dates and timing.""" if not isinstance(self.config["install_phases"], dict): print("Project was not configured with start dates.") @@ -1141,8 +1223,15 @@ def phase_dates(self): for phase, _start in self.config["install_phases"].items(): - start = dt.datetime.strptime(_start, self.date_format_short) - end = start + dt.timedelta(hours=ceil(self.phase_times[phase])) + try: + start = dt.datetime.strptime(_start, self.date_format_short) + + except TypeError: + start = self.start_date + dt.timedelta( + hours=self.phase_starts[phase] + ) + + end = start + dt.timedelta(hours=self.phase_times[phase]) dates[phase] = { "start": start.strftime(self.date_format_long), @@ -1192,9 +1281,7 @@ def _diff_dates_long(self, a, b): @property def overnight_capex_per_kw(self): - """ - Returns overnight CAPEX/kW. - """ + """Returns overnight CAPEX/kW.""" try: capex = self.overnight_capex / (self.capacity * 1000) @@ -1255,7 +1342,7 @@ def capex_breakdown(self): categories[phase] = cat break - missing = [p for p in unique if p not in categories.keys()] + missing = list(set(unique).difference([*categories])) if missing: print( f"Warning: CapEx category not found for {missing}. " @@ -1268,7 +1355,7 @@ def capex_breakdown(self): outputs = {} for phase, cost in self.system_costs.items(): name = categories[phase] - if name in outputs.keys(): + if name in outputs: outputs[name] += cost else: @@ -1276,7 +1363,7 @@ def capex_breakdown(self): for phase, cost in self.installation_costs.items(): name = categories[phase] + " Installation" - if name in outputs.keys(): + if name in outputs: outputs[name] += cost else: @@ -1324,12 +1411,12 @@ def turbine_capex(self): num_turbines = self.config["plant"]["num_turbines"] rating = self.config["turbine"]["turbine_rating"] - except KeyError: + except KeyError as exc: raise KeyError( - f"Total turbine CAPEX can't be calculated. Required " - f"parameters 'plant.num_turbines' or 'turbine.turbine_rating' " - f"not found." - ) + "Total turbine CAPEX can't be calculated. Required " + "parameters 'plant.num_turbines' or 'turbine.turbine_rating' " + "not found." + ) from exc capex = _capex * num_turbines * rating * 1000 return capex @@ -1373,7 +1460,13 @@ def soft_capex_per_kw(self): decommissioning = self.project_params.get("decommissioning", 58) return sum( - [insurance, financing, contingency, commissioning, decommissioning] + [ + insurance, + financing, + contingency, + commissioning, + decommissioning, + ], ) @property @@ -1463,9 +1556,9 @@ def export_project_logs(self, filepath, level="ACTION"): Default: 'ACTION' """ - dirs = os.path.split(filepath)[0] - if dirs and not os.path.isdir(dirs): - os.makedirs(dirs) + dirs = Path(filepath).parent + if dirs and not dirs.is_dir(): + dirs.mkdir(parents=True) if level == "ACTION": out = pd.DataFrame(self.actions) @@ -1530,7 +1623,7 @@ def complete_array_strings(self): data = list(zip(strings, subs, turbines)) - return [max(l) for l in data], num_turbines + return [max(el) for el in data], num_turbines @property def energize_points(self): @@ -1544,13 +1637,12 @@ def energize_points(self): points = [] times, turbines = self.complete_array_strings - for t in times: - points.append(max([t, export])) + points = [max(t, export) for t in times] return points, turbines def parse_logs(self, k): - """Parse `self.data` for specific progress points associated key `k`""" + """Parse `self.data` for specific progress points for key ``k``.""" pts = [p[1] for p in self.data if p[0] == k] if not pts: @@ -1559,15 +1651,15 @@ def parse_logs(self, k): return pts @staticmethod - def chunk_max(l, n): - """Yield max value of successive n-sized chunks from l.""" + def chunk_max(x, n): + """Yield max value of successive n-sized chunks from x.""" - for i in range(0, len(l), n): - yield max(l[i : i + n]) + for i in range(0, len(x), n): + yield max(x[i : i + n]) @staticmethod - def chunk_len(l, n): - """Yield successive n-sized chunks from l.""" + def chunk_len(x, n): + """Yield successive n-sized chunks from x.""" - for i in range(0, len(l), n): - yield len(l[i : i + n]) + for i in range(0, len(x), n): + yield len(x[i : i + n]) diff --git a/ORBIT/parametric.py b/ORBIT/parametric.py index 6895400c..052c8eeb 100644 --- a/ORBIT/parametric.py +++ b/ORBIT/parametric.py @@ -1,3 +1,5 @@ +"""Provides the ParametricManager class for a parameter sweeps.""" + __author__ = ["Jake Nunemaker"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Jake Nunemaker" @@ -10,11 +12,9 @@ from random import sample from itertools import product -import yaml import numpy as np import pandas as pd import statsmodels.api as sm -from yaml import Loader from benedict import benedict from ORBIT import ProjectManager @@ -31,7 +31,7 @@ def __init__( weather=None, module=None, product=False, - keep_inputs=[], + keep_inputs=None, ): """ Creates an instance of `ParametricRun`. @@ -57,11 +57,12 @@ def __init__( self.results = None self.module = module self.product = product - self.keep = keep_inputs + self.keep = keep_inputs if keep_inputs is not None else [] def run(self, **kwargs): """Run the configured parametric runs and save any requested results to - `self.results`.""" + `self.results`. + """ outputs = [] for run in self.run_list: @@ -123,6 +124,7 @@ def run_list(self): @property def num_runs(self): + """Calculates the number of runs completed.""" return len(self.run_list) @staticmethod @@ -143,14 +145,14 @@ def map_funcs(obj, funcs): try: res = f(obj) - except TypeError: + except TypeError as exc: raise TypeError( f"Result function '{f}' not structured properly. " f"Correct format: 'lambda project: project.{f}'" - ) + ) from exc except AttributeError: - res = np.NaN + res = np.nan results[k] = res @@ -187,7 +189,7 @@ def preview(self, num=10, **kwargs): return pd.DataFrame(outputs) def create_model(self, x, y): - """""" + """Creates a ``LinearModel`` for the inputs and results.""" if self.results is None: print("`ParametricManager hasn't been ran yet.") @@ -196,7 +198,10 @@ def create_model(self, x, y): @classmethod def from_config(cls, data): - """""" + """ + Creates a ``ParametricManager`` isntance from a configuration + dictionary, ``data``. + """ outputs = data.pop("outputs", {}) @@ -350,7 +355,7 @@ def perc_diff(self): pd.Series """ - inputs = dict(zip(self.X.T.index, self.X.T.values)) + inputs = dict(zip(self.X.T.index, self.X.T.to_numpy())) predicted = self.predict(inputs) return (self.Y - predicted) / self.Y diff --git a/ORBIT/phases/__init__.py b/ORBIT/phases/__init__.py index 5047a09d..324fe7ad 100644 --- a/ORBIT/phases/__init__.py +++ b/ORBIT/phases/__init__.py @@ -1,11 +1,12 @@ """ -The phases package contains `DesignPhase`, `InstallPhase` and any subclasses. +Provides `DesignPhase`, `InstallPhase` and their component-specific +implementations. """ __author__ = ["Jake Nunemaker", "Rob Hammond"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = ["Jake Nunemaker", "Rob Hammond"] -__email__ = ["jake.nunemaker@nrel.gov" "robert.hammond@nrel.gov"] +__email__ = ["jake.nunemaker@nrel.gov" "rob.hammond@nrel.gov"] from .base import BasePhase diff --git a/ORBIT/phases/base.py b/ORBIT/phases/base.py index 2e9b539d..3e73b951 100644 --- a/ORBIT/phases/base.py +++ b/ORBIT/phases/base.py @@ -46,9 +46,7 @@ def initialize_library(self, config, **kwargs): return extract_library_data(config) def extract_phase_kwargs(self, **kwargs): - """ - Consistent handling of kwargs for Phase and subclasses. - """ + """Consistent handling of kwargs for Phase and subclasses.""" phase_name = kwargs.get("phase_name", None) if phase_name is not None: diff --git a/ORBIT/phases/design/__init__.py b/ORBIT/phases/design/__init__.py index d234df4c..70eabc07 100644 --- a/ORBIT/phases/design/__init__.py +++ b/ORBIT/phases/design/__init__.py @@ -3,14 +3,16 @@ __author__ = ["Jake Nunemaker", "Rob Hammond"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = ["Jake Nunemaker", "Rob Hammond"] -__email__ = ["jake.nunemaker@nrel.gov" "robert.hammond@nrel.gov"] +__email__ = ["jake.nunemaker@nrel.gov" "rob.hammond@nrel.gov"] from .design_phase import DesignPhase # isort:skip from .oss_design import OffshoreSubstationDesign from .spar_design import SparDesign from .monopile_design import MonopileDesign +from .electrical_export import ElectricalDesign from .array_system_design import ArraySystemDesign, CustomArraySystemDesign +from .oss_design_floating import OffshoreFloatingSubstationDesign from .export_system_design import ExportSystemDesign from .mooring_system_design import MooringSystemDesign from .scour_protection_design import ScourProtectionDesign diff --git a/ORBIT/phases/design/_cables.py b/ORBIT/phases/design/_cables.py index 27343a58..73f34fe0 100644 --- a/ORBIT/phases/design/_cables.py +++ b/ORBIT/phases/design/_cables.py @@ -3,7 +3,7 @@ __author__ = ["Matt Shields", "Rob Hammond"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Rob Hammond" -__email__ = "robert.hammond@nrel.gov" +__email__ = "rob.hammond@nrel.gov" import math @@ -17,10 +17,10 @@ class Cable: - """ - Base cable class + r""" + Base cable class. - Attributes + Parameters ---------- conductor_size : float Cable cross section in :math:`mm^2`. @@ -62,10 +62,10 @@ class Cable: def __init__(self, cable_specs, **kwargs): """ - Create an instance of Cable (either array or export) + Create an instance of Cable (either array or export). Parameters - --------- + ---------- cable_specs : dict Dictionary containing cable specifications. kwargs : dict @@ -84,50 +84,87 @@ def __init__(self, cable_specs, **kwargs): raise ValueError(f"{needs_value} must be defined in cable_specs") self.line_frequency = cable_specs.get("line_frequency", 60) + cable_type = cable_specs.get("cable_type", "HVAC").split("-") + if len(cable_type) == 1: + self.cable_type = cable_type[0].upper() + elif len(cable_type) == 2: + self.cable_type = ( + f"{cable_type[0].upper()}-{cable_type[1].lower()}" + ) + else: + raise ValueError( + "`cable_type` should be of the form `type-subtype`," + " e.g. 'HVDC-monopole'." + ) # Calc additional cable specs + if self.cable_type == "HVAC": + self.calc_compensation_factor() + self.calc_char_impedance(**kwargs) self.calc_power_factor() self.calc_cable_power() def calc_char_impedance(self): - """ - Calculate characteristic impedance of cable. - """ - - conductance = 1 / self.ac_resistance + """Calculate characteristic impedance of cable.""" + if self.cable_type in ["HVDC-monopole", "HVDC-bipole"]: + self.char_impedance = 0 + else: + conductance = 1 / self.ac_resistance - num = complex( - self.ac_resistance, - 2 * math.pi * self.line_frequency * self.inductance, - ) - den = complex( - conductance, 2 * math.pi * self.line_frequency * self.capacitance - ) - self.char_impedance = np.sqrt(num / den) + num = complex( + self.ac_resistance, + 2 * math.pi * self.line_frequency * self.inductance, + ) + den = complex( + conductance, + 2 * math.pi * self.line_frequency * self.capacitance, + ) + self.char_impedance = np.sqrt(num / den) def calc_power_factor(self): - """ - Calculate power factor. - """ + """Calculate power factor.""" - phase_angle = math.atan( - np.imag(self.char_impedance) / np.real(self.char_impedance) - ) - self.power_factor = math.cos(phase_angle) + if self.cable_type in ["HVDC-monopole", "HVDC-bipole"]: + self.power_factor = 0 + else: + phase_angle = math.atan( + np.imag(self.char_impedance) / np.real(self.char_impedance) + ) + self.power_factor = math.cos(phase_angle) def calc_cable_power(self): """ - Calculate maximum power transfer through 3-phase cable in :math:`MW`. + Calculates the maximum power transfer through a 3-phase cable, + in :math:`MW`. """ - self.cable_power = ( - np.sqrt(3) - * self.rated_voltage - * self.current_capacity - * self.power_factor - / 1000 + if self.cable_type in ["HVDC-monopole", "HVDC-bipole"]: + self.cable_power = ( + self.current_capacity * self.rated_voltage * 2 / 1000 + ) + else: + self.cable_power = ( + np.sqrt(3) + * self.rated_voltage + * self.current_capacity + * self.power_factor + / 1000 + ) + + def calc_compensation_factor(self): + """Calculates the compensation factor for the shunt reactor cost.""" + capacitive_reactance = 1 / ( + 2 * np.pi * self.line_frequency * (self.capacitance / 10e8) + ) + capacitive_losses = self.rated_voltage**2 / capacitive_reactance + inductive_reactance = ( + 2 * np.pi * self.line_frequency * (self.inductance / 1000) + ) + inductive_losses = ( + 3 * inductive_reactance * (self.current_capacity / 1000) ** 2 ) + self.compensation_factor = capacitive_losses - inductive_losses class Plant: @@ -217,7 +254,8 @@ def _initialize_distances(self, config): ) self.substation_distance = config["plant"].get( - "substation_distance", None + "substation_distance", + None, ) if self.substation_distance is None: self.substation_distance = self.turbine_distance @@ -279,7 +317,8 @@ def __init__(self, config, cable_type, **kwargs): def _initialize_cables(self): """ - Creates the base cable objects for each type of array cable being used. + Creates the base cable objects for each type of array cable being + modeled. """ if isinstance(self._design["cables"], str): @@ -316,8 +355,8 @@ def _get_touchdown_distance(self): Returns the cable touchdown distance measured from the centerpoint of the substructure. - If depth <= 60, default is 0km (straight down assumed for fixed bottom). - If depth > 60, default is 0.3 * depth. + If depth <= 60, default is 0km (straight down assumed for fixed + bottom). If depth > 60, default is 0.3 * depth. """ _design = f"{self.cable_type}_system_design" @@ -333,7 +372,8 @@ def _get_touchdown_distance(self): else: self.touchdown = depth * 0.3 - #TODO: Update this scaling function - should be closer to cable bend radius. Unrealistic for deep water + # TODO: Update this scaling function - should be closer to + # cable bend radius. Unrealistic for deep water @staticmethod def _catenary(a, *data): @@ -361,7 +401,8 @@ def _get_catenary_length(self, d, h): if not np.isclose(y[-1], d): print( - "Warning: Catenary calculation failed. Reverting to simple vertical profile." + "Warning: Catenary calculation failed. Reverting to simple" + " vertical profile." ) return d @@ -369,13 +410,13 @@ def _get_catenary_length(self, d, h): @property def free_cable_length(self): - """Returns the length of the vertical portion of a cable section in km.""" + """Returns the vertical length of a cable section, in :mat:`km`.""" _design = f"{self.cable_type}_system_design" depth = self.config["site"]["depth"] _cable_depth = self.config[_design].get("floating_cable_depth", depth) - # Select prescribed cable depth if it is less than or equal to overall water dpeth + # Select prescribed cable depth if it is <= overall water dpeth if _cable_depth > depth: cable_depth = depth else: @@ -389,7 +430,7 @@ def free_cable_length(self): @property def cable_lengths_by_type(self): """ - Creates dictionary of lists of cable sections for each type of cable + Creates dictionary of lists of cable sections for each type of cable. Returns ------- @@ -405,6 +446,7 @@ def cable_lengths_by_type(self): ] for name in self.cables } + lengths = {name: x[~np.isnan(x)] for name, x in lengths.items()} return lengths @property diff --git a/ORBIT/phases/design/array_system_design.py b/ORBIT/phases/design/array_system_design.py index 0e3f0571..c6123b55 100644 --- a/ORBIT/phases/design/array_system_design.py +++ b/ORBIT/phases/design/array_system_design.py @@ -3,7 +3,7 @@ __author__ = "Rob Hammond" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Rob Hammond" -__email__ = "robert.hammond@nrel.gov" +__email__ = "rob.hammond@nrel.gov" import warnings @@ -64,7 +64,7 @@ class ArraySystemDesign(CableSystem): sections_cables : np.ndarray, [`num_strings`, `num_turbines_full_string`] The type of cable being used to connect turbines in a string. All values are either ``None`` or `Cable.name`. - """ + """ # noqa: E501 expected_config = { "site": {"depth": "m"}, @@ -131,7 +131,7 @@ def detailed_output(self): "array_system_length_by_type": self.total_cable_length_by_type, "array_system_total_cost": self.total_cable_cost, "array_system_cost_by_type": self.cost_by_type, - "array_system_num_turbines_full_string": self.num_turbines_full_string, + "array_system_num_turbines_full_string": self.num_turbines_full_string, # noqa: E501 "array_system_num_full_strings": self.num_full_strings, } @@ -147,7 +147,7 @@ def _compute_euclidean_distance(self): string for all strings in the windfarm. """ differnce = np.abs(np.diff(self.coordinates, n=1, axis=1)) - distance = np.round_(np.linalg.norm(differnce, axis=2), 10) + distance = np.round(np.linalg.norm(differnce, axis=2), 10) return distance def _compute_maximum_turbines_per_cable(self): @@ -220,7 +220,8 @@ def create_strings(self): ) self.num_turbines_full_string = len(self.full_string) self.num_full_strings, self.num_turbines_partial_string = np.divmod( - self.system.num_turbines, self.num_turbines_full_string + self.system.num_turbines, + self.num_turbines_full_string, ) # Create a partial string constrained by the remainder @@ -234,9 +235,7 @@ def create_strings(self): self.num_strings = self.num_full_strings + self.num_partial_strings def _design_grid_layout(self): - """ - Makes the coordinates of a default grid layout. - """ + """Makes the coordinates of a default grid layout.""" # Create the relative (x, y) coordinate matrices for the turbines # using vector math @@ -244,9 +243,11 @@ def _design_grid_layout(self): # X = column vector of turbine distance # * row vector of range(1, num_turbines_full_string + 1) self.turbines_x = np.full( - self.num_strings, self.system.turbine_distance + self.num_strings, + self.system.turbine_distance, ).reshape(-1, 1) * np.add( - np.arange(self.num_turbines_full_string, dtype=float), 1 + np.arange(self.num_turbines_full_string, dtype=float), + 1, ) # Y = column vector of reverse range(1, num_strings) @@ -254,7 +255,8 @@ def _design_grid_layout(self): self.turbines_y = np.arange(self.num_strings, dtype=float)[ ::-1 ].reshape(-1, 1) * np.full( - (1, self.num_turbines_full_string), self.system.row_distance + (1, self.num_turbines_full_string), + self.system.row_distance, ) # If there are partial strings the default layout then null out @@ -268,9 +270,7 @@ def _design_grid_layout(self): self.oss_y = self.turbines_y[:, 0].mean() def _design_ring_layout(self): - """ - Creates the coordinates of a default ring layout. - """ + """Creates the coordinates of a default ring layout.""" # Calculate the radius of each turbine from the OSS radius = ( @@ -352,12 +352,10 @@ def _create_cable_section_lengths(self): i, 0 : self.num_turbines_full_string - ix ] = self.full_string[::-1][: self.num_turbines_full_string - ix][ ::-1 - ] + ] # noqa: E501 def run(self): - """ - Runs all the functions to create an array sytem. - """ + """Runs all the functions to create an array sytem.""" self._initialize_cables() self.create_strings() @@ -378,7 +376,8 @@ def save_layout(self, save_name, return_df=False, folder="cables"): layout, by default False. folder : str, optional If "cables", then the layout will saved to the "cables" folder, and - if "plant", then the layout will be saved to the "project/plant" folder. + if "plant", then the layout will be saved to the "project/plant" + folder. Returns ------- @@ -456,9 +455,9 @@ def save_layout(self, save_name, return_df=False, folder="cables"): layout_df.cable_length = [""] + self.sections_cable_lengths.flatten()[ :num_turbines ].tolist() - data = [columns] + layout_df.values.tolist() + data = [columns] + layout_df.to_numpy().tolist() print( - f"Saving custom array CSV to: /cables/{save_name}.csv" + f"Saving custom array CSV to: /cables/{save_name}.csv" # noqa: E501 ) export_library_specs(folder, save_name, data, file_ext="csv") if return_df: @@ -511,7 +510,10 @@ def _plot_oss(self, ax): return labels_set + ["Turbine"], ax def plot_array_system( - self, show=True, save_path_name=None, return_fig=False + self, + show=True, + save_path_name=None, + return_fig=False, ): """ Plot the array cabling system. @@ -559,7 +561,11 @@ def plot_array_system( # for j in range(self.coordinates.shape[1] - 1): # if not np.any(np.isnan(self.coordinates[i, j + 1])): # x, y = self.coordinates[i, j + 1] - # name = self.location_data.loc[(self.location_data.string == i) & (self.location_data.order == j), "turbine_name"].values[0] + # name = self.location_data.loc[ + # (self.location_data.string == i) + # & (self.location_data.order == j), + # "turbine_name" + # ].to_numpy()[0] # ax.text(x, y, name) # Determine the cable section widths @@ -738,7 +744,7 @@ def __init__(self, config, distance=False, **kwargs): self.distance = config["array_system_design"].get("distance", distance) def create_project_csv(self, save_name, folder="cables"): - """Creates a base CSV in <`library_path`>/cables/ + """Creates a base CSV in <`library_path`>/cables/. Parameters ---------- @@ -808,9 +814,7 @@ def create_project_csv(self, save_name, folder="cables"): ] rows.insert(0, first) rows.insert(0, self.COLUMNS) - print( - f"Saving custom array CSV to: /cables/{save_name}.csv" - ) + print(f"Saving custom array to: /cables/{save_name}.csv") export_library_specs(folder, save_name, rows, file_ext="csv") def _format_windfarm_data(self): @@ -820,43 +824,42 @@ def _format_windfarm_data(self): self.location_data.substation_id == self.location_data.id ) oss = self.location_data[substation_filter].copy() - oss.rename( + oss = oss.rename( columns={ "latitude": "substation_latitude", "longitude": "substation_longitude", "name": "substation_name", }, - inplace=True, ) oss.substation_id = oss["id"] - oss.drop( + oss = oss.drop( ["id", "string", "order", "cable_length", "bury_speed"], - inplace=True, axis=1, ) # Separate the turbine data turbines = self.location_data[~substation_filter].copy() - turbines.rename( + turbines = turbines.rename( columns={ "latitude": "turbine_latitude", "longitude": "turbine_longitude", "name": "turbine_name", }, - inplace=True, ) # Merge them back together self.location_data = turbines.merge( - oss, on="substation_id", how="left" + oss, + on="substation_id", + how="left", ) self.location_data = self.location_data[self.REQUIRED + self.OPTIONAL] self.location_data.string = self.location_data.string.astype(int) self.location_data.order = self.location_data.order.astype(int) - self.location_data.sort_values( - by=["substation_id", "string", "order"], inplace=True + self.location_data = self.location_data.sort_values( + by=["substation_id", "string", "order"], ) def _initialize_custom_data(self): @@ -864,18 +867,22 @@ def _initialize_custom_data(self): try: self.location_data = extract_library_specs( - "cables", windfarm, file_type="csv" + "cables", + windfarm, + file_type="csv", ) except LibraryItemNotFoundError: self.location_data = extract_library_specs( - "plant", windfarm, file_type="csv" + "plant", + windfarm, + file_type="csv", ) # Make sure no data is missing missing = set(self.COLUMNS).difference(self.location_data.columns) if missing: raise ValueError( "The following columns must be included in the location " - f"data: {missing}" + f"data: {missing}", ) self._format_windfarm_data() @@ -884,7 +891,7 @@ def _initialize_custom_data(self): missing_data_cols = [ c for c in self.REQUIRED - if pd.isnull(self.location_data[c]).sum() > 0 + if pd.isna(self.location_data[c]).sum() > 0 ] if missing_data_cols: raise ValueError(f"Missing data in columns: {missing_data_cols}!") @@ -894,7 +901,7 @@ def _initialize_custom_data(self): c for c in self.OPTIONAL if ( - pd.isnull(self.location_data[c]) | self.location_data[c] == 0 + pd.isna(self.location_data[c]) | self.location_data[c] == 0 ).sum() > 0 ] @@ -903,7 +910,7 @@ def _initialize_custom_data(self): f"Missing data in columns {missing_data_cols}; " "all values will be calculated." ) - warnings.warn(message) + warnings.warn(message, stacklevel=2) # Ensure the number of turbines matches what's expected if self.location_data.shape[0] != self.system.num_turbines: @@ -944,12 +951,14 @@ def _check_optional_input(self): """ if np.any(self.sections_cable_lengths == 0): self.sections_cable_lengths = np.zeros( - (self.num_strings, self.num_turbines_full_string), dtype=float + (self.num_strings, self.num_turbines_full_string), + dtype=float, ) if np.any(self.sections_bury_speeds == 0): self.sections_bury_speeds = np.zeros( - (self.num_strings, self.num_turbines_full_string), dtype=float + (self.num_strings, self.num_turbines_full_string), + dtype=float, ) def _compute_haversine_distance(self): @@ -995,16 +1004,20 @@ def _create_windfarm_layout(self): """ self.location_data_x = np.zeros( - (self.num_strings, self.num_turbines_full_string + 1), dtype=float + (self.num_strings, self.num_turbines_full_string + 1), + dtype=float, ) self.location_data_y = np.zeros( - (self.num_strings, self.num_turbines_full_string + 1), dtype=float + (self.num_strings, self.num_turbines_full_string + 1), + dtype=float, ) self.sections_cable_lengths = np.zeros( - (self.num_strings, self.num_turbines_full_string), dtype=float + (self.num_strings, self.num_turbines_full_string), + dtype=float, ) self.sections_bury_speeds = np.zeros( - (self.num_strings, self.num_turbines_full_string), dtype=float + (self.num_strings, self.num_turbines_full_string), + dtype=float, ) self.oss_x = [] @@ -1018,8 +1031,8 @@ def _create_windfarm_layout(self): string_id = np.sort(layout.string.unique()) string_id += 0 if i == 0 else i - x = layout.substation_longitude.values[0] - y = layout.substation_latitude.values[0] + x = layout.substation_longitude.to_numpy()[0] + y = layout.substation_latitude.to_numpy()[0] self.oss_x.append(x) self.oss_y.append(y) self.location_data_x[string_id, 0] = x @@ -1027,19 +1040,19 @@ def _create_windfarm_layout(self): for string in string_id: data = layout[layout.string == string - i] - order = data["order"].values - self.location_data_x[ - string, order + 1 - ] = data.turbine_longitude.values[order] - self.location_data_y[ - string, order + 1 - ] = data.turbine_latitude.values[order] - self.sections_cable_lengths[ - string, order - ] = data.cable_length.values[order] - self.sections_bury_speeds[ - string, order - ] = data.bury_speed.values[order] + order = data["order"].to_numpy() + self.location_data_x[string, order + 1] = ( + data.turbine_longitude.to_numpy()[order] + ) + self.location_data_y[string, order + 1] = ( + data.turbine_latitude.to_numpy()[order] + ) + self.sections_cable_lengths[string, order] = ( + data.cable_length.to_numpy()[order] + ) + self.sections_bury_speeds[string, order] = ( + data.bury_speed.to_numpy()[order] + ) i = string + 1 # Ensure any point in array without a turbine is set to None @@ -1062,6 +1075,7 @@ def _create_windfarm_layout(self): self.sections_distance = self._compute_haversine_distance() def run(self): + """Runs the design model.""" self._initialize_cables() self.create_strings() diff --git a/ORBIT/phases/design/design_phase.py b/ORBIT/phases/design/design_phase.py index a27ba0b1..acf7b829 100644 --- a/ORBIT/phases/design/design_phase.py +++ b/ORBIT/phases/design/design_phase.py @@ -9,6 +9,7 @@ from abc import abstractmethod from ORBIT.phases import BasePhase +from ORBIT.core.defaults import common_costs class DesignPhase(BasePhase): @@ -31,3 +32,31 @@ def design_result(self): """ return {} + + def get_default_cost(self, design_name, key, subkey=None): + """Return the cost value for a key in a design + dictionary read from common_cost.yaml. + """ + + if (design_dict := common_costs.get(design_name, None)) is None: + raise KeyError(f"No {design_name} in common_cost.yaml.") + + if (cost_value := design_dict.get(key, None)) is None: + raise KeyError(f"{key} not found in [{design_name}] common_costs.") + + if isinstance(cost_value, dict): + if subkey is None: + raise ValueError( + f"{key} is a dictionary and requires a 'subkey' input." + ) + + if (sub_cost_value := cost_value.get(subkey, None)) is None: + raise KeyError( + f"{subkey} not found in [{design_name}][{cost_value}]" + " common_costs." + ) + + return sub_cost_value + + else: + return cost_value diff --git a/ORBIT/phases/design/electrical_export.py b/ORBIT/phases/design/electrical_export.py new file mode 100644 index 00000000..db06635b --- /dev/null +++ b/ORBIT/phases/design/electrical_export.py @@ -0,0 +1,662 @@ +"""Provides the `ElectricalDesign` class.""" + +__author__ = ["Sophie Bredenkamp"] +__copyright__ = "Copyright 2020, National Renewable Energy Laboratory" +__maintainer__ = "" +__email__ = [] + +from warnings import warn + +import numpy as np + +from ORBIT.phases.design._cables import CableSystem + +""" +[1] Maness et al. 2017, NREL Offshore Balance-of-System Model. +https://www.nrel.gov/docs/fy17osti/66874.pdf +""" + + +class ElectricalDesign(CableSystem): + """ + Design phase for export cabling and offshore substation systems. + + Attributes + ---------- + num_cables : int + Total number of cables required for transmitting power. + length : float + Length of a single cable connecting the OSS to the interconnection + in km. + mass : float + Mass of `length` in tonnes. + cable : `Cable` + Instance of `ORBIT.phases.design.Cable`. An export system will + only require a single type of cable. + total_length : float + Total length of cable required to trasmit power. + total_mass : float + Total mass of cable required to transmit power. + sections_cables : np.ndarray, shape: (`num_cables, ) + An array of `cable`. + sections_lengths : np.ndarray, shape: (`num_cables, ) + An array of `length`. + + """ + + #: + expected_config = { + "site": {"distance_to_landfall": "km", "depth": "m"}, + "landfall": {"interconnection_distance": "km (optional)"}, + "plant": {"capacity": "MW"}, + "export_system_design": { + "cables": "str", + "num_redundant": "int (optional)", + "touchdown_distance": "m (optional, default: 0)", + "percent_added_length": "float (optional)", + "interconnection_distance": "km (optional)", + "cable_crossings": { + "crossing_number": "int (optional)", + "crossing_unit_cost": "float (optional)", + }, + }, + "substation_design": { + "substation_capacity": "MW (optional)", + "num_substations": "int (optional)", + "mpt_unit_cost": "USD/cable (optional)", + "topside_design_cost": "USD (optional)", + "shunt_unit_cost": "USD/cable (optional)", + "switchgear_cost": "USD (optional)", + "dc_breaker_cost": "USD (optional)", + "backup_gen_cost": "USD (optional)", + "workspace_cost": "USD (optional)", + "other_ancillary_cost": "USD (optional)", + "converter_cost": "USD (optional)", + "onshore_converter_cost": "USD (optional)", + "topside_assembly_factor": "float (optional)", + "oss_substructure_type": "str (optional, default: Monopile)", + "oss_substructure_cost_rate": "USD/t (optional)", + "oss_pile_cost_rate": "USD/t (optional)", + }, + "onshore_substation_design": { + "shunt_unit_cost": "USD/cable (optional)", + "onshore_converter_cost": "USD (optional)", + }, + } + + output_config = { + "num_substations": "int", + "offshore_substation_topside": "dict", + "offshore_substation_substructure": "dict", + "export_system": { + "system_cost": "USD", + "cable": { + "linear_density": "t/km", + "sections": [("length, km", "speed, km/h (optional)")], + "number": "int (optional)", + "diameter": "int", + "cable_type": "str", + }, + }, + "offshore_substation": "dict, (optional)", + } + + def __init__(self, config, **kwargs): + """Creates an instance of ElectricalDesign.""" + + config = self.initialize_library(config, **kwargs) + self.config = self.validate_config(config) + + # CABLES + super().__init__(config, "export", **kwargs) + + for name in self.expected_config["site"]: + setattr(self, "".join(("_", name)), config["site"][name]) + + self._depth = config["site"]["depth"] + self._distance_to_landfall = config["site"]["distance_to_landfall"] + self._plant_capacity = self.config["plant"]["capacity"] + self._get_touchdown_distance() + + self._design = self.config["export_system_design"] + + _landfall = self.config.get("landfall", {}) + if _landfall: + warn( + "landfall dictionary will be deprecated and moved" + " into [export_system_design][landfall].", + DeprecationWarning, + stacklevel=2, + ) + + else: + _landfall = self._design.get("landfall", {}) + + self._distance_to_interconnection = _landfall.get( + "interconnection_distance", 3 + ) + + self._oss_design = self.config.get("substation_design", {}) + + self.substructure_type = self._oss_design.get( + "oss_substructure_type", "Monopile" + ).title() + + self._outputs = {} + + def run(self): + """Main run function.""" + + # CABLES + self._initialize_cables() + self.cable = self.cables[[*self.cables][0]] + self.compute_number_cables() + self.compute_cable_length() + self.compute_cable_mass() + self.compute_total_cable() + self.calc_crossing_cost() + + self._outputs["export_system"] = { + "landfall": { + "interconnection_distance": (self._distance_to_interconnection) + }, + "system_cost": self.total_cable_cost, + } + + for cable in self.cables.values(): + self._outputs["export_system"]["cable"] = { + "linear_density": cable.linear_density, + "sections": [self.length], + "number": self.num_cables, + "cable_power": cable.cable_power, + "cable_type": cable.cable_type, + } + + # SUBSTATION + self.calc_num_substations() + self.calc_substructure_length() + self.calc_substructure_deck_space() + self.calc_topside_deck_space() + + self.calc_mpt_cost() + self.calc_topside_mass_and_cost() + self.calc_shunt_reactor_cost() + self.calc_switchgear_costs() + self.calc_ancillary_system_cost() + self.calc_assembly_cost() + self.calc_substructure_mass_and_cost() + self.calc_converter_cost() + self.calc_dc_breaker_cost() + self.calc_onshore_cost() + + self._outputs["offshore_substation"] = { + "substation_mpt_cost": self.mpt_cost, + "substation_shunt_cost": self.shunt_reactor_cost, + "substation_switchgear_cost": self.switchgear_cost, + "substation_converter_cost": self.converter_cost, + "substation_breaker_cost": self.dc_breaker_cost, + "substation_ancillary_cost": self.ancillary_system_costs, + "substation_land_assembly_cost": self.land_assembly_cost, + } + + self._outputs["offshore_substation_substructure"] = { + "type": self.substructure_type, + "deck_space": self.substructure_deck_space, + "mass": self.substructure_mass, + "length": self.substructure_length, + "unit_cost": self.substructure_cost, + } + + # TODO: cheap fix for topside unit_cost bug #168 + self._outputs["offshore_substation_topside"] = { + "deck_space": self.topside_deck_space, + "mass": self.topside_mass, + "unit_cost": self.substation_cost + self.topside_cost, + } + + self._outputs["num_substations"] = self.num_substations + self._outputs["total_substation_cost"] = self.total_substation_cost + + @property + def detailed_output(self): + """Returns export system design outputs.""" + + _output = { + **self.design_result, + "export_system_total_mass": self.total_mass, + "export_system_total_length": self.total_length, + "export_system_total_cost": self.total_cable_cost, + "export_system_cable_power": self.cable.cable_power, + "num_substations": self.num_substations, + "substation_mpt_rating": self.mpt_rating, + "substation_topside_mass": self.topside_mass, + "substation_topside_cost": self.topside_cost, + "substation_substructure_mass": self.substructure_mass, + "substation_substructure_cost": self.substructure_cost, + "total_substation_cost": self.total_substation_cost, + "substation_mpt_cost": self.mpt_cost, + "substation_shunt_cost": self.shunt_reactor_cost, + "substation_switchgear_cost": self.switchgear_cost, + "substation_converter_cost": self.converter_cost, + "substation_breaker_cost": self.dc_breaker_cost, + "substation_ancillary_cost": self.ancillary_system_costs, + "substation_land_assembly_cost": self.land_assembly_cost, + "onshore_shunt_cost": self.onshore_shunt_reactor_cost, + "onshore_converter_cost": self.onshore_converter_cost, + "onshore_switchgear_cost": self.onshore_switchgear_cost, + "onshore_construction_cost": self.onshore_construction, + "onshore_compensation_cost": self.onshore_compensation_cost, + "onshore_mpt_cost": self.mpt_cost, + } + + return _output + + @property + def design_result(self): + """Returns the results of self.run().""" + return self._outputs + + # CABLES + + @property + def total_cable_cost(self): + """Returns total export system cable cost.""" + + return sum(self.cost_by_type.values()) + self.crossing_cost + + def compute_number_cables(self): + """ + Calculate the total number of required and redundant cables to + transmit power to the onshore interconnection. + + """ + + num_required = np.ceil(self._plant_capacity / self.cable.cable_power) + num_redundant = self._design.get("num_redundant", 0) + + if "HVDC" in self.cable.cable_type: + num_required *= 2 + num_redundant *= 2 + + self.num_cables = int(num_required + num_redundant) + + def compute_cable_length(self): + """Calculates the total distance an export cable must travel.""" + + added_length = 1.0 + self._design.get("percent_added_length", 0.0) + self.length = round( + ( + self.free_cable_length + + (self._distance_to_landfall - self.touchdown / 1000) + + self._distance_to_interconnection + ) + * added_length, + 10, + ) + + def compute_cable_mass(self): + """Calculates the total mass of a single length of export cable.""" + + self.mass = round(self.length * self.cable.linear_density, 10) + + def compute_total_cable(self): + """ + Calculates the total length and mass of cables required to fully + connect the OSS to the interconnection point. + """ + + self.total_length = round(self.num_cables * self.length, 10) + self.total_mass = round(self.num_cables * self.mass, 10) + + @property + def sections_cable_lengths(self): + """ + Creates an array of section lengths to work with ``CableSystem``. + + Returns + ------- + np.ndarray + Array of `length` with shape (``num_cables``, ). + """ + return np.full(self.num_cables, self.length) + + @property + def sections_cables(self): + """ + Creates an array of cable names to work with ``CableSystem``. + + Returns + ------- + np.ndarray + Array of ``cable.name`` with shape (``num_cables``, ). + """ + + return np.full(self.num_cables, self.cable.name) + + def calc_crossing_cost(self): + """Compute cable crossing costs.""" + _crossing_design = self._design.get("cable_crossings", {}) + + _key = "crossing_unit_cost" + crossing_cost = _crossing_design.get( + _key, + self.get_default_cost( + "export_system_design", "cable_crossings", subkey=_key + ), + ) + + self.crossing_cost = crossing_cost * _crossing_design.get( + "crossing_number", 0 + ) + + """SUBSTATION""" + + @property + def total_substation_cost(self): + """Returns the total substation cost.""" + + return ( + self.topside_cost + self.substructure_cost + self.substation_cost + ) + + def calc_num_substations(self): + """Computes number of substations based on HVDC or HVAC + export cables. + """ + + # HVAC substation capacity + _substation_capacity = self._oss_design.get( + "substation_capacity", 1200 + ) # MW + + if "HVDC" in self.cable.cable_type: + self.num_substations = self._oss_design.get( + "num_substations", int(self.num_cables / 2) + ) + else: + self.num_substations = self._oss_design.get( + "num_substations", + int(np.ceil(self._plant_capacity / _substation_capacity)), + ) + + @property + def substation_cost(self): + """Returns total procuremet cost of the topside.""" + + return ( + self.mpt_cost + + self.shunt_reactor_cost + + self.switchgear_cost + + self.converter_cost + + self.dc_breaker_cost + + self.ancillary_system_costs + + self.land_assembly_cost + ) / self.num_substations + + def calc_mpt_cost(self): + """Computes HVAC main power transformer (MPT). MPT cost is 0 for + HVDC. + """ + + _key = "mpt_unit_cost" + _mpt_cost = self._oss_design.get( + _key, self.get_default_cost("substation_design", _key) + ) + + self.num_mpt = self.num_cables + + self.mpt_cost = ( + 0 if "HVDC" in self.cable.cable_type else self.num_mpt * _mpt_cost + ) + + self.mpt_rating = ( + round((self._plant_capacity * 1.15 / self.num_mpt) / 10.0) * 10.0 + ) + + def calc_shunt_reactor_cost(self): + """Computes HVAC shunt reactor cost. Shunt reactor cost is 0 for + HVDC. + """ + + touchdown = self.config["site"]["distance_to_landfall"] + + _key = "shunt_unit_cost" + + shunt_unit_cost = self._oss_design.get( + _key, self.get_default_cost("substation_design", _key) + ) + + if "HVDC" in self.cable.cable_type: + self.compensation = 0 + else: + for cable in self.cables.values(): + self.compensation = touchdown * cable.compensation_factor # MW + + self.shunt_reactor_cost = ( + self.compensation * shunt_unit_cost * self.num_cables + ) + + def calc_switchgear_costs(self): + """Computes HVAC switchgear cost. Switchgear cost is 0 for HVDC.""" + + _key = "switchgear_cost" + switchgear_cost = self._oss_design.get( + _key, self.get_default_cost("substation_design", _key) + ) + + self.num_switchgear = ( + 0 if "HVDC" in self.cable.cable_type else self.num_cables + ) + + self.switchgear_cost = self.num_switchgear * switchgear_cost + + def calc_dc_breaker_cost(self): + """Computes HVDC circuit breaker cost. Breaker cost is 0 for HVAC.""" + + _key = "dc_breaker_cost" + dc_breaker_cost = self._oss_design.get( + _key, self.get_default_cost("substation_design", _key) + ) + + num_dc_breakers = ( + self.num_cables if "HVDC" in self.cable.cable_type else 0 + ) + + self.dc_breaker_cost = num_dc_breakers * dc_breaker_cost + + def calc_ancillary_system_cost(self): + """Calculates cost of ancillary systems.""" + + _key = "backup_gen_cost" + backup_gen_cost = self._oss_design.get( + _key, self.get_default_cost("substation_design", _key) + ) + + _key = "workspace_cost" + workspace_cost = self._oss_design.get( + _key, self.get_default_cost("substation_design", _key) + ) + + _key = "other_ancillary_cost" + other_ancillary_cost = self._oss_design.get( + _key, self.get_default_cost("substation_design", _key) + ) + + self.ancillary_system_costs = ( + backup_gen_cost + workspace_cost + other_ancillary_cost + ) * self.num_substations + + def calc_assembly_cost(self): + """Calculates the cost of assembly on land.""" + + _key = "topside_assembly_factor" + topside_assembly_factor = self._oss_design.get( + _key, self.get_default_cost("substation_design", _key) + ) + + if topside_assembly_factor > 1.0: + topside_assembly_factor /= 100 + + self.land_assembly_cost = ( + self.switchgear_cost + + self.shunt_reactor_cost + + self.ancillary_system_costs + ) * topside_assembly_factor + + def calc_converter_cost(self): + """Computes converter cost.""" + + _key = "converter_cost" + converter_cost = self._oss_design.get( + _key, + self.get_default_cost( + "substation_design", _key, subkey=self.cable.cable_type + ), + ) + + self.converter_cost = converter_cost + + def calc_substructure_mass_and_cost(self): + """ + Calculates the mass and associated cost of the substation substructure + based on equations 81-84 [1]. + """ + + _key = "oss_substructure_cost_rate" + oss_substructure_cost_rate = self._oss_design.get( + _key, self.get_default_cost("substation_design", _key) + ) + + _key = "oss_pile_cost_rate" + oss_pile_cost_rate = self._oss_design.get( + _key, self.get_default_cost("substation_design", _key) + ) + + # Substructure mass components + # TODO: Determine a better method to calculate substructure mass + # for different substructure types + substructure_mass = 0.4 * self.topside_mass + + substructure_pile_mass = ( + 0 + if self.substructure_type == "Floating" + else 8 * substructure_mass**0.5574 + ) + + self.substructure_cost = ( + substructure_mass * oss_substructure_cost_rate + + substructure_pile_mass * oss_pile_cost_rate + ) + + self.substructure_mass = substructure_mass + substructure_pile_mass + + def calc_substructure_length(self): + """Calculates substructure length as the site depth + 10m.""" + + if self.substructure_type == "Floating": + self.substructure_length = 0 + + else: + self.substructure_length = self.config["site"]["depth"] + 10 + + def calc_substructure_deck_space(self): + """ + Calculates required deck space for the substation substructure. + + Coming soon! + """ + + self.substructure_deck_space = 1 + + def calc_topside_deck_space(self): + """ + Calculates required deck space for the substation topside. + + Coming soon! + """ + + self.topside_deck_space = 1 + + def calc_topside_mass_and_cost(self): + """Calculates the mass and cost of the substation topsides.""" + + self.topside_mass = ( + 3.85 * (self.mpt_rating * self.num_mpt) / self.num_substations + + 285 + ) + + _key = "topside_design_cost" + topside_design_cost = self._oss_design.get( + _key, + self.get_default_cost( + "substation_design", _key, subkey=self.cable.cable_type + ), + ) + + self.topside_cost = topside_design_cost + + def calc_onshore_cost(self): + """Minimum Cost of Onshore Substation Connection.""" + + _design = self.config.get("onshore_substation_design", {}) + + _key = "onshore_converter_cost" + _converter_cost = _design.get( + _key, + self.get_default_cost( + "onshore_substation_design", _key, subkey=self.cable.cable_type + ), + ) + + self.onshore_converter_cost = self.num_substations * _converter_cost + + _key = "switchgear_cost" + _switchgear_cost = _design.get( + _key, self.get_default_cost("onshore_substation_design", _key) + ) + + self.onshore_switchgear_cost = self.num_switchgear * _switchgear_cost + + _key = "onshore_construction_rate" + _construction_rate = _design.get( + _key, + self.get_default_cost( + "onshore_substation_design", _key, subkey=self.cable.cable_type + ), + ) + + self.onshore_construction = self.num_substations * _construction_rate + + _key = "shunt_unit_cost" + _shunt_unit_cost = _design.get( + _key, self.get_default_cost("onshore_substation_design", _key) + ) + + self.onshore_shunt_reactor_cost = ( + self.compensation * self.num_cables * _shunt_unit_cost + ) + + _key = "compensation_rate" + _compensation_rate = _design.get( + _key, + self.get_default_cost( + "onshore_substation_design", _key, subkey=self.cable.cable_type + ), + ) + + self.onshore_compensation_cost = ( + self.num_cables * _compensation_rate + + self.onshore_shunt_reactor_cost + ) + + self.onshore_cost = ( + self.onshore_converter_cost + + self.onshore_switchgear_cost + + self.onshore_construction + + self.onshore_compensation_cost + + self.mpt_cost + ) + + self._outputs["export_system"][ + "onshore_substation_costs" + ] = self.onshore_cost diff --git a/ORBIT/phases/design/export_system_design.py b/ORBIT/phases/design/export_system_design.py index 6c6ae0a0..f6ab00d2 100644 --- a/ORBIT/phases/design/export_system_design.py +++ b/ORBIT/phases/design/export_system_design.py @@ -3,7 +3,9 @@ __author__ = "Rob Hammond" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Rob Hammond" -__email__ = "robert.hammond@nrel.gov" +__email__ = "rob.hammond@nrel.gov" + +from warnings import warn import numpy as np @@ -19,7 +21,8 @@ class ExportSystemDesign(CableSystem): num_cables : int Total number of cables required for transmitting power. length : float - Length of a single cable connecting the OSS to the interconnection in km. + Length of a single cable connecting the OSS to the + interconnection in km. mass : float Mass of `length` in tonnes. cable : `Cable` @@ -44,6 +47,7 @@ class ExportSystemDesign(CableSystem): "num_redundant": "int (optional)", "touchdown_distance": "m (optional, default: 0)", "percent_added_length": "float (optional)", + "landfall": {"interconnection_distance": "km (optional)"}, }, } @@ -54,7 +58,8 @@ class ExportSystemDesign(CableSystem): "number": "int", "sections": "list", "cable_power": "MW", - } + }, + "landfall": {"interconnection_distance": "km"}, } } @@ -80,17 +85,25 @@ def __init__(self, config, **kwargs): self._plant_capacity = self.config["plant"]["capacity"] self._distance_to_landfall = config["site"]["distance_to_landfall"] self._get_touchdown_distance() - try: - self._distance_to_interconnection = config["landfall"][ - "interconnection_distance" - ] - except KeyError: - self._distance_to_interconnection = 3 + + _landfall = self.config.get("landfall", {}) + if _landfall: + warn( + "landfall dictionary will be deprecated and moved" + " into [export_system_design][landfall].", + DeprecationWarning, + stacklevel=2, + ) + + else: + _landfall = self.config["export_system_design"].get("landfall", {}) + + self._distance_to_interconnection = _landfall.get( + "interconnection_distance", 3 + ) def run(self): - """ - Instantiates the export cable system and runs all the required methods. - """ + """Runs the design model.""" self._initialize_cables() self.cable = self.cables[[*self.cables][0]] @@ -131,9 +144,7 @@ def compute_number_cables(self): self.num_cables = int(num_required + num_redundant) def compute_cable_length(self): - """ - Calculates the total distance an export cable must travel. - """ + """Calculates the total distance an export cable must travel.""" added_length = 1.0 + self._design.get("percent_added_length", 0.0) self.length = round( @@ -147,9 +158,7 @@ def compute_cable_length(self): ) def compute_cable_mass(self): - """ - Calculates the total mass of a single length of export cable. - """ + """Calculates the total mass of a single length of export cable.""" self.mass = round(self.length * self.cable.linear_density, 10) @@ -165,24 +174,24 @@ def compute_total_cable(self): @property def sections_cable_lengths(self): """ - Creates an array of section lengths to work with `CableSystem` + Creates an array of section lengths to work with ``CableSystem``. Returns ------- np.ndarray - Array of `length` with shape (`num_cables`, ). + Array of ``length`` with shape (``num_cables``, ). """ return np.full(self.num_cables, self.length) @property def sections_cables(self): """ - Creates an array of cable names to work with `CableSystem`. + Creates an array of cable names to work with ``CableSystem``. Returns ------- np.ndarray - Array of `cable.name` with shape (`num_cables`, ). + Array of `cable.name` with shape (``num_cables``, ). """ return np.full(self.num_cables, self.cable.name) @@ -207,12 +216,16 @@ def design_result(self): output = { "export_system": { - "interconnection_distance": self._distance_to_interconnection, + "landfall": { + "interconnection_distance": ( + self._distance_to_interconnection + ) + }, "system_cost": self.total_cost, } } - for name, cable in self.cables.items(): + for cable in self.cables.values(): output["export_system"]["cable"] = { "linear_density": cable.linear_density, diff --git a/ORBIT/phases/design/monopile_design.py b/ORBIT/phases/design/monopile_design.py index ab1e5349..3a32c815 100644 --- a/ORBIT/phases/design/monopile_design.py +++ b/ORBIT/phases/design/monopile_design.py @@ -10,7 +10,6 @@ from scipy.optimize import fsolve -from ORBIT.core.defaults import common_costs from ORBIT.phases.design import DesignPhase @@ -75,6 +74,8 @@ def __init__(self, config, **kwargs): config = self.initialize_library(config, **kwargs) self.config = self.validate_config(config) + self._design = self.config.get("monopile_design", {}) + self._outputs = {} def run(self): @@ -230,7 +231,7 @@ def design_transition_piece(self, D_p, t_p, **kwargs): "diameter": D_tp, "mass": m_tp, "length": L_tp, - "deck_space": D_tp ** 2, + "deck_space": D_tp**2, "unit_cost": m_tp * self.tp_steel_cost, } @@ -306,31 +307,21 @@ def total_tp_mass(self): def monopile_steel_cost(self): """Returns the cost of monopile steel (USD/t) fully fabricated.""" - _design = self.config.get("monopile_design", {}) _key = "monopile_steel_cost" - - try: - cost = _design.get(_key, common_costs[_key]) - - except KeyError: - raise Exception("Cost of monopile steel not found.") + cost = self._design.get( + _key, self.get_default_cost("monopile_design", _key) + ) return cost @property def tp_steel_cost(self): - """ - Returns the cost of transition piece steel (USD/t) fully fabricated. - """ + """Returns the cost of fabricated transition piece steel (USD/t).""" - _design = self.config.get("monopile_design", {}) _key = "tp_steel_cost" - - try: - cost = _design.get(_key, common_costs[_key]) - - except KeyError: - raise Exception("Cost of transition piece steel not found.") + cost = self._design.get( + _key, self.get_default_cost("monopile_design", _key) + ) return cost @@ -355,7 +346,7 @@ def pile_mass(Dp, tp, Lt, **kwargs): """ density = kwargs.get("monopile_density", 7860) # kg/m3 - volume = (pi / 4) * (Dp ** 2 - (Dp - tp) ** 2) * Lt + volume = (pi / 4) * (Dp**2 - (Dp - 2 * tp) ** 2) * Lt mass = density * volume / 907.185 return mass @@ -364,6 +355,7 @@ def pile_mass(Dp, tp, Lt, **kwargs): def pile_embedment_length(Ip, **kwargs): """ Calculates required pile embedment length. + Source: Arany & Bhattacharya (2016) - Equation 7 (Enforces a rigid/lower aspect ratio monopile) @@ -389,6 +381,7 @@ def pile_embedment_length(Ip, **kwargs): def pile_thickness(Dp): """ Calculates pile wall thickness. + Source: Arany & Bhattacharya (2016) - Equation 1 @@ -432,8 +425,9 @@ def pile_moment(Dp, tp): @staticmethod def pile_diam_equation(Dp, *data): """ - Equation to be solved for Pile Diameter. Combination of equations 99 & - 101 in this paper: + Equation to be solved for Pile Diameter. + + Combination of equations 99 & 101 in this paper: Source: Arany & Bhattacharya (2016) - Equations 99 & 101 @@ -465,7 +459,9 @@ def calculate_50year_wind_moment( ): """ Calculates the 50 year extreme wind moment using methodology from - DNV-GL. Source: Arany & Bhattacharya (2016) + DNV-GL. + + Source: Arany & Bhattacharya (2016) - Equation 30 Parameters @@ -482,7 +478,7 @@ def calculate_50year_wind_moment( Rated windspeed of turbine (m/s). load_factor : float Added safety factor on the extreme wind moment. - Default: 3.375 (2.5x DNV standard as this model does not design for buckling or fatigue) + Default: 1.3 (approximately matches DNV standard) Returns ------- @@ -490,7 +486,7 @@ def calculate_50year_wind_moment( 50 year extreme wind moment (N-m). """ - load_factor = kwargs.get("load_factor", 3.375) + load_factor = kwargs.get("load_factor", 1.3) F_50y = self.calculate_50year_wind_load( mean_windspeed=mean_windspeed, @@ -504,10 +500,15 @@ def calculate_50year_wind_moment( return M_50y * load_factor def calculate_50year_wind_load( - self, mean_windspeed, rotor_diameter, rated_windspeed, **kwargs + self, + mean_windspeed, + rotor_diameter, + rated_windspeed, + **kwargs, ): """ Calculates the 50 year extreme wind load using methodology from DNV-GL. + Source: Arany & Bhattacharya (2016) - Equation 29 @@ -546,6 +547,7 @@ def calculate_50year_wind_load( def calculate_thrust_coefficient(rated_windspeed): """ Calculates the thrust coefficient using rated windspeed. + Source: Frohboese & Schmuck (2010) Parameters @@ -559,16 +561,16 @@ def calculate_thrust_coefficient(rated_windspeed): Coefficient of thrust. """ - ct = min( - [3.5 * (2 * rated_windspeed + 3.5) / (rated_windspeed ** 2), 1] - ) + ct = min([3.5 * (2 * rated_windspeed + 3.5) / (rated_windspeed**2), 1]) return ct @staticmethod def calculate_50year_extreme_ws(mean_windspeed, **kwargs): """ - Calculates the 50 year extreme wind speed using methodology from DNV-GL. + Calculates the 50 year extreme wind speed using methodology + from DNV-GL. + Source: Arany & Bhattacharya (2016) - Equation 27 @@ -594,10 +596,15 @@ def calculate_50year_extreme_ws(mean_windspeed, **kwargs): return U_50y def calculate_50year_extreme_gust( - self, mean_windspeed, rotor_diameter, rated_windspeed, **kwargs + self, + mean_windspeed, + rotor_diameter, + rated_windspeed, + **kwargs, ): """ Calculates the 50 year extreme wind gust using methodology from DNV-GL. + Source: Arany & Bhattacharya (2016) - Equation 28 diff --git a/ORBIT/phases/design/mooring_system_design.py b/ORBIT/phases/design/mooring_system_design.py index 383a4924..8447d206 100644 --- a/ORBIT/phases/design/mooring_system_design.py +++ b/ORBIT/phases/design/mooring_system_design.py @@ -1,15 +1,27 @@ """`MooringSystemDesign` and related functionality.""" -__author__ = "Jake Nunemaker" +__author__ = "Jake Nunemaker, Becca Fuchs" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" -__maintainer__ = "Jake Nunemaker" -__email__ = "jake.nunemaker@nrel.gov" - +__maintainer__ = "Nicholas Riccobono" +__email__ = ( + "jake.nunemaker@nrel.gov, rebecca.fuchs@nrel.gov," + "nicholas.riccobono@nrel.gov" +) from math import sqrt +from scipy.interpolate import interp1d + from ORBIT.phases.design import DesignPhase +""" +[1] Maness et al. 2017, NREL Offshore Balance-of-System Model. +https://www.nrel.gov/docs/fy17osti/66874.pdf + +[2] Cooperman et al. (2022), Assessment of Offshore Wind Energy Leasing Areas +for Humboldt and Morry Bay. https://www.nrel.gov/docs/fy22osti/82341.pdf +""" + class MooringSystemDesign(DesignPhase): """Mooring System and Anchor Design.""" @@ -21,8 +33,12 @@ class MooringSystemDesign(DesignPhase): "mooring_system_design": { "num_lines": "int | float (optional, default: 4)", "anchor_type": "str (optional, default: 'Suction Pile')", + "mooring_type": "str (optional, default: 'Catenary')", "mooring_line_cost_rate": "int | float (optional)", - "drag_embedment_fixed_length": "int | float (optional, default: .5km)", + "drag_embedment_fixed_length": "int (optional, default: 500m)", + "draft_depth": "int (optional, default: 20m)", + "chain_density": "int | float (optional, default: 19900 kg/m**3)", + "rope_density": "int | float (optional, default: 797.8 kg/m**3)", }, } @@ -33,9 +49,11 @@ class MooringSystemDesign(DesignPhase): "line_mass": "t", "line_cost": "USD", "line_length": "m", + "mooring_type": "str", "anchor_mass": "t", "anchor_type": "str", "anchor_cost": "USD", + "system_cost": "USD", } } @@ -51,17 +69,38 @@ def __init__(self, config, **kwargs): config = self.initialize_library(config, **kwargs) self.config = self.validate_config(config) self.num_turbines = self.config["plant"]["num_turbines"] + self.depth = self.config["site"]["depth"] self._design = self.config.get("mooring_system_design", {}) self.num_lines = self._design.get("num_lines", 4) - self.anchor_type = self._design.get("anchor_type", "Suction Pile") + self.anchor_type = self._design.get( + "anchor_type", "Suction Pile" + ).title() + self.mooring_type = self._design.get( + "mooring_type", "Catenary" + ).title() + + # Semi-Taut mooring system design parameters based on depth [2]. + self._semitaut_params = { + "depths": [500.0, 750.0, 1000.0, 1250.0, 1500.0], + "rope_lengths": [478.41, 830.34, 1229.98, 1183.93, 1079.62], + "rope_diameter": 0.2, + "chain_lengths": [917.11, 800.36, 609.07, 896.42, 1280.57], + "chain_diameters": [0.13, 0.17, 0.22, 0.22, 0.22], + "anchor_costs": [112766.0, 125511.0, 148703.0, 204988.0, 246655.0], + "total_line_costs": [ + 826598.0, + 1221471.0, + 1682208.0, + 2380035.0, + 3229700.0, + ], + } self._outputs = {} def run(self): - """ - Main run function. - """ + """Runs the design model.""" self.determine_mooring_line() self.calculate_breaking_load() @@ -73,74 +112,178 @@ def run(self): def determine_mooring_line(self): """ Returns the diameter of the mooring lines based on the turbine rating. + + TODO: Add TLP option and consider merging SemiTaut interp here """ tr = self.config["turbine"]["turbine_rating"] - fit = -0.0004 * (tr ** 2) + 0.0132 * tr + 0.0536 + fit = -0.0004 * (tr**2) + 0.0132 * tr + 0.0536 + + _key = "mooring_line_cost_rate" + + mooring_line_cost_rate = self._design.get( + _key, + self.get_default_cost( + "mooring_system_design", + _key, + ), + ) + if isinstance(mooring_line_cost_rate, (int, float)): + mooring_line_cost_rate = [mooring_line_cost_rate] * 3 if fit <= 0.09: self.line_diam = 0.09 self.line_mass_per_m = 0.161 - self.line_cost_rate = 399.0 + self.line_cost_rate = mooring_line_cost_rate[0] elif fit <= 0.12: self.line_diam = 0.12 self.line_mass_per_m = 0.288 - self.line_cost_rate = 721.0 + self.line_cost_rate = mooring_line_cost_rate[1] else: self.line_diam = 0.15 self.line_mass_per_m = 0.450 - self.line_cost_rate = 1088.0 + self.line_cost_rate = mooring_line_cost_rate[2] def calculate_breaking_load(self): - """ - Returns the mooring line breaking load. - """ + """Returns the mooring line breaking load.""" self.breaking_load = ( - 419449 * (self.line_diam ** 2) + 93415 * self.line_diam - 3577.9 + 419449 * (self.line_diam**2) + 93415 * self.line_diam - 3577.9 ) def calculate_line_length_mass(self): """ Returns the mooring line length and mass. + + SemiTaut model based on: + https://github.com/NREL/MoorPy/blob/dev/moorpy/MoorProps_default.yaml + + TODO: Improve TLP line length and mass + """ + # Add extra fixed line length for drag embedments if self.anchor_type == "Drag Embedment": fixed = self._design.get("drag_embedment_fixed_length", 500) else: fixed = 0 - depth = self.config["site"]["depth"] - self.line_length = ( - 0.0002 * (depth ** 2) + 1.264 * depth + 47.776 + fixed - ) + draft = self._design.get("draft_depth", 20) + + if self.mooring_type == "Semitaut": + + # Interpolation of rope and chain length at project depth + self.chain_length = interp1d( + self._semitaut_params["depths"], + self._semitaut_params["chain_lengths"], + fill_value="extrapolate", + )(self.depth).item() + self.rope_length = interp1d( + self._semitaut_params["depths"], + self._semitaut_params["rope_lengths"], + fill_value="extrapolate", + )(self.depth).item() + + # Rope and interpolated chain diameter at project depth + rope_diameter = self._semitaut_params["rope_diameter"] + chain_diameter = interp1d( + self._semitaut_params["depths"], + self._semitaut_params["chain_diameters"], + fill_value="extrapolate", + )(self.depth).item() + + fixed = self._design.get("drag_embedment_fixed_length", 0) + self.line_length = self.rope_length + self.chain_length + fixed + + # line characteristics based on MoorPy defaults, + chain_mass_per_m = ( + self._design.get("mooring_chain_density", 19900) + * chain_diameter**2 + ) # kg/m + rope_mass_per_m = ( + self._design.get("mooring_rope_density", 797.8) + * rope_diameter**2 + ) # kg/m + + self.line_mass = ( + self.chain_length * chain_mass_per_m + + self.rope_length * rope_mass_per_m + ) / 1e3 # tonnes + + elif self.mooring_type == "Tlp": + + self.line_length = self.depth - draft + + self.line_mass = self.line_length * self.line_mass_per_m + + else: - self.line_mass = self.line_length * self.line_mass_per_m + self.line_length = ( + 0.0002 * (self.depth**2) + 1.264 * self.depth + 47.776 + fixed + ) + + self.line_mass = self.line_length * self.line_mass_per_m def calculate_anchor_mass_cost(self): """ Returns the mass and cost of anchors. - TODO: Anchor masses are rough estimates based on initial literature - review. Should be revised when this module is overhauled in the future. + TODO: Anchor masses are rough estimates based on [1]. Should be + revised when this module is overhauled in the future. + TODO: Mooring types for Catenary, TLP, SemiTaut will likely have + different anchors. """ - if self.anchor_type == "Drag Embedment": - self.anchor_mass = 20 - self.anchor_cost = self.breaking_load / 9.81 / 20.0 * 2000.0 + if self.mooring_type == "Semitaut": + + if self.anchor_type == "Drag Embedment": + self.anchor_mass = 20 + + # Interpolation of anchor cost at project depth + self.anchor_cost = interp1d( + self._semitaut_params["depths"], + self._semitaut_params["anchor_costs"], + fill_value="extrapolate", + )(self.depth).item() + + else: + self.anchor_mass = 50 + self.anchor_cost = ( + sqrt(self.breaking_load / 9.81 / 1250) * 150000 + ) else: - self.anchor_mass = 50 - self.anchor_cost = sqrt(self.breaking_load / 9.81 / 1250) * 150000 + + if self.anchor_type == "Drag Embedment": + self.anchor_mass = 20 + self.anchor_cost = self.breaking_load / 9.81 / 20.0 * 2000.0 + + else: + self.anchor_mass = 50 + self.anchor_cost = ( + sqrt(self.breaking_load / 9.81 / 1250) * 150000 + ) @property def line_cost(self): """Returns cost of one line mooring line.""" - return self.line_length * self.line_cost_rate + if self.mooring_type == "Semitaut": + # Interpolation of line cost at project depth + line_cost = interp1d( + self._semitaut_params["depths"], + self._semitaut_params["total_line_costs"], + fill_value="extrapolate", + )(self.depth).item() + + else: + + line_cost = self.line_length * self.line_cost_rate + + return line_cost @property def total_cost(self): @@ -149,7 +292,7 @@ def total_cost(self): return ( self.num_lines * self.num_turbines - * (self.anchor_cost + self.line_length * self.line_cost_rate) + * (self.anchor_cost + self.line_cost) ) @property @@ -162,6 +305,7 @@ def detailed_output(self): "line_mass": self.line_mass, "line_length": self.line_length, "line_cost": self.line_cost, + "mooring_type": self.mooring_type, "anchor_type": self.anchor_type, "anchor_mass": self.anchor_mass, "anchor_cost": self.anchor_cost, diff --git a/ORBIT/phases/design/oss_design.py b/ORBIT/phases/design/oss_design.py index 1a2fe071..9418e2fc 100644 --- a/ORBIT/phases/design/oss_design.py +++ b/ORBIT/phases/design/oss_design.py @@ -32,6 +32,12 @@ class OffshoreSubstationDesign(DesignPhase): "oss_pile_cost_rate": "USD/t (optional)", "num_substations": "int (optional)", }, + # "export_system": { + # "cable": { + # "number": "int", + # "cable_type": "str", + # }, + # }, } output_config = { @@ -51,6 +57,8 @@ def __init__(self, config, **kwargs): config = self.initialize_library(config, **kwargs) self.config = self.validate_config(config) + self._design = self.config.get("substation_design", {}) + self._outputs = {} def run(self): @@ -110,9 +118,7 @@ def total_cost(self): ) * self.num_substations def calc_substructure_length(self): - """ - Calculates substructure length as the site depth + 10m - """ + """Calculates substructure length as the site depth + 10m.""" self.substructure_length = self.config["site"]["depth"] + 10 @@ -136,7 +142,8 @@ def calc_topside_deck_space(self): def calc_num_mpt_and_rating(self): """ - Calculates the number of main power transformers (MPTs) and their rating. + Calculates the number of main power transformers (MPTs) + and their rating. Parameters ---------- @@ -144,14 +151,12 @@ def calc_num_mpt_and_rating(self): turbine_rating : float """ - _design = self.config.get("substation_design", {}) - num_turbines = self.config["plant"]["num_turbines"] turbine_rating = self.config["turbine"]["turbine_rating"] capacity = num_turbines * turbine_rating - self.num_substations = _design.get( - "num_substations", int(np.ceil(capacity / 500)) + self.num_substations = self._design.get( + "num_substations", int(np.ceil(capacity / 1200)) ) self.num_mpt = np.ceil( num_turbines * turbine_rating / (250 * self.num_substations) @@ -176,8 +181,10 @@ def calc_mpt_cost(self): mpt_cost_rate : float """ - _design = self.config.get("substation_design", {}) - mpt_cost_rate = _design.get("mpt_cost_rate", 12500) + _key = "mpt_cost_rate" + mpt_cost_rate = self._design.get( + _key, self.get_default_cost("substation_design", _key) + ) self.mpt_cost = self.mpt_rating * self.num_mpt * mpt_cost_rate @@ -191,9 +198,16 @@ def calc_topside_mass_and_cost(self): topside_design_cost: int | float """ - _design = self.config.get("substation_design", {}) - topside_fab_cost_rate = _design.get("topside_fab_cost_rate", 14500) - topside_design_cost = _design.get("topside_design_cost", 4.5e6) + _key = "topside_fab_cost_rate" + topside_fab_cost_rate = self._design.get( + _key, self.get_default_cost("substation_design", _key) + ) + + _key = "topside_design_cost" + topside_design_cost = self._design.get( + _key, + self.get_default_cost("substation_design", _key, subkey="HVAC"), + ) self.topside_mass = 3.85 * self.mpt_rating * self.num_mpt + 285 self.topside_cost = ( @@ -209,8 +223,10 @@ def calc_shunt_reactor_cost(self): shunt_cost_rate : int | float """ - _design = self.config.get("substation_design", {}) - shunt_cost_rate = _design.get("shunt_cost_rate", 35000) + _key = "shunt_cost_rate" + shunt_cost_rate = self._design.get( + _key, self.get_default_cost("substation_design", _key) + ) self.shunt_reactor_cost = ( self.mpt_rating * self.num_mpt * shunt_cost_rate * 0.5 @@ -225,10 +241,12 @@ def calc_switchgear_cost(self): switchgear_cost : int | float """ - _design = self.config.get("substation_design", {}) - switchgear_cost = _design.get("switchgear_cost", 14.5e5) + _key = "switchgear_cost" + switchgear_cost_rate = self._design.get( + _key, self.get_default_cost("substation_design", _key) + ) - self.switchgear_costs = self.num_mpt * switchgear_cost + self.switchgear_costs = self.num_mpt * switchgear_cost_rate def calc_ancillary_system_cost(self): """ @@ -241,10 +259,20 @@ def calc_ancillary_system_cost(self): other_ancillary_cost : int | float """ - _design = self.config.get("substation_design", {}) - backup_gen_cost = _design.get("backup_gen_cost", 1e6) - workspace_cost = _design.get("workspace_cost", 2e6) - other_ancillary_cost = _design.get("other_ancillary_cost", 3e6) + _key = "backup_gen_cost" + backup_gen_cost = self._design.get( + _key, self.get_default_cost("substation_design", _key) + ) + + _key = "workspace_cost" + workspace_cost = self._design.get( + _key, self.get_default_cost("substation_design", _key) + ) + + _key = "other_ancillary_cost" + other_ancillary_cost = self._design.get( + _key, self.get_default_cost("substation_design", _key) + ) self.ancillary_system_costs = ( backup_gen_cost + workspace_cost + other_ancillary_cost @@ -259,8 +287,11 @@ def calc_assembly_cost(self): topside_assembly_factor : int | float """ - _design = self.config.get("substation_design", {}) - topside_assembly_factor = _design.get("topside_assembly_factor", 0.075) + _key = "topside_assembly_factor" + topside_assembly_factor = self._design.get( + _key, self.get_default_cost("substation_design", _key) + ) + self.land_assembly_cost = ( self.switchgear_costs + self.shunt_reactor_cost @@ -277,14 +308,18 @@ def calc_substructure_mass_and_cost(self): oss_pile_cost_rate : int | float """ - _design = self.config.get("substation_design", {}) - oss_substructure_cost_rate = _design.get( - "oss_substructure_cost_rate", 3000 + _key = "oss_substructure_cost_rate" + oss_substructure_cost_rate = self._design.get( + _key, self.get_default_cost("substation_design", _key) + ) + + _key = "oss_pile_cost_rate" + oss_pile_cost_rate = self._design.get( + _key, self.get_default_cost("substation_design", _key) ) - oss_pile_cost_rate = _design.get("oss_pile_cost_rate", 0) substructure_mass = 0.4 * self.topside_mass - substructure_pile_mass = 8 * substructure_mass ** 0.5574 + substructure_pile_mass = 8 * substructure_mass**0.5574 self.substructure_cost = ( substructure_mass * oss_substructure_cost_rate + substructure_pile_mass * oss_pile_cost_rate @@ -294,9 +329,7 @@ def calc_substructure_mass_and_cost(self): @property def design_result(self): - """ - Returns the results of self.run(). - """ + """Returns the results of self.run().""" if not self._outputs: raise Exception("Has OffshoreSubstationDesign been ran yet?") diff --git a/ORBIT/phases/design/oss_design_floating.py b/ORBIT/phases/design/oss_design_floating.py new file mode 100644 index 00000000..f1bc3610 --- /dev/null +++ b/ORBIT/phases/design/oss_design_floating.py @@ -0,0 +1,317 @@ +"""Provides the 'OffshoreSubstationDesign` class.""" + +__author__ = "Jake Nunemaker" +__copyright__ = "Copyright 2020, National Renewable Energy Laboratory" +__maintainer__ = "Jake Nunemaker" +__email__ = "Jake.Nunemaker@nrel.gov" + + +import numpy as np + +from ORBIT.phases.design import DesignPhase + + +class OffshoreFloatingSubstationDesign(DesignPhase): + """Offshore Substation Design Class.""" + + expected_config = { + "site": {"depth": "m"}, + "plant": {"num_turbines": "int"}, + "turbine": {"turbine_rating": "MW"}, + "substation_design": { + "mpt_cost_rate": "USD/MW (optional)", + "topside_fab_cost_rate": "USD/t (optional)", + "topside_design_cost": "USD (optional)", + "shunt_cost_rate": "USD/MW (optional)", + "switchgear_cost": "USD (optional)", + "backup_gen_cost": "USD (optional)", + "workspace_cost": "USD (optional)", + "other_ancillary_cost": "USD (optional)", + "topside_assembly_factor": "float (optional)", + "oss_substructure_cost_rate": "USD/t (optional)", + "oss_pile_cost_rate": "USD/t (optional)", + "num_substations": "int (optional)", + }, + } + + output_config = { + "num_substations": "int", + "offshore_substation_topside": "dict", + # "offshore_substation_substructure", "dict", + } + + def __init__(self, config, **kwargs): + """ + Creates an instance of OffshoreSubstationDesign. + + Parameters + ---------- + config : dict + """ + + config = self.initialize_library(config, **kwargs) + self.config = self.validate_config(config) + self._outputs = {} + + def run(self): + """Main run function.""" + + self.calc_substructure_length() + self.calc_substructure_deck_space() + self.calc_topside_deck_space() + + self.calc_num_mpt_and_rating() + self.calc_mpt_cost() + self.calc_topside_mass_and_cost() + self.calc_shunt_reactor_cost() + self.calc_switchgear_cost() + self.calc_ancillary_system_cost() + self.calc_assembly_cost() + self.calc_substructure_mass_and_cost() + + self._outputs["offshore_substation_substructure"] = { + "type": "Floating", + "deck_space": self.substructure_deck_space, + "mass": self.substructure_mass, + "length": self.substructure_length, + "unit_cost": self.substructure_cost, + } + + self._outputs["offshore_substation_topside"] = { + "deck_space": self.topside_deck_space, + "mass": self.topside_mass, + "unit_cost": self.substation_cost, + } + + self._outputs["num_substations"] = self.num_substations + + @property + def substation_cost(self): + """Returns total procuremet cost of the topside.""" + + return ( + self.mpt_cost + + self.topside_cost + + self.shunt_reactor_cost + + self.switchgear_costs + + self.ancillary_system_costs + + self.land_assembly_cost + ) + + @property + def total_cost(self): + """Returns total procurement cost of the substation(s).""" + + if not self._outputs: + raise Exception("Has OffshoreSubstationDesign been ran yet?") + + return ( + self.substructure_cost + self.substation_cost + ) * self.num_substations + + def calc_substructure_length(self): + """Calculates substructure length as the site depth + 10m.""" + + self.substructure_length = self.config["site"]["depth"] + 10 + + def calc_substructure_deck_space(self): + """ + Calculates required deck space for the substation substructure. + + Coming soon! + """ + + self.substructure_deck_space = 1 + + def calc_topside_deck_space(self): + """ + Calculates required deck space for the substation topside. + + Coming soon! + """ + + self.topside_deck_space = 1 + + def calc_num_mpt_and_rating(self): + """ + Calculates the number of main power transformers (MPTs) and their + rating. + + Parameters + ---------- + num_turbines : int + turbine_rating : float + """ + + _design = self.config.get("substation_design", {}) + + num_turbines = self.config["plant"]["num_turbines"] + turbine_rating = self.config["turbine"]["turbine_rating"] + capacity = num_turbines * turbine_rating + + self.num_substations = _design.get( + "num_substations", int(np.ceil(capacity / 500)) + ) + self.num_mpt = np.ceil( + num_turbines * turbine_rating / (250 * self.num_substations) + ) + self.mpt_rating = ( + round( + ( + (num_turbines * turbine_rating * 1.15) + / (self.num_mpt * self.num_substations) + ) + / 10.0 + ) + * 10.0 + ) + + def calc_mpt_cost(self): + """ + Calculates the total cost for all MPTs. + + Parameters + ---------- + mpt_cost_rate : float + """ + + _design = self.config.get("substation_design", {}) + mpt_cost_rate = _design.get("mpt_cost_rate", 12500) + + self.mpt_cost = self.mpt_rating * self.num_mpt * mpt_cost_rate + + def calc_topside_mass_and_cost(self): + """ + Calculates the mass and cost of the substation topsides. + + Parameters + ---------- + topside_fab_cost_rate : int | float + topside_design_cost: int | float + """ + + _design = self.config.get("substation_design", {}) + topside_fab_cost_rate = _design.get("topside_fab_cost_rate", 14500) + topside_design_cost = _design.get("topside_design_cost", 4.5e6) + + self.topside_mass = 3.85 * self.mpt_rating * self.num_mpt + 285 + self.topside_cost = ( + self.topside_mass * topside_fab_cost_rate + topside_design_cost + ) + + def calc_shunt_reactor_cost(self): + """ + Calculates the cost of the shunt reactor. + + Parameters + ---------- + shunt_cost_rate : int | float + """ + + _design = self.config.get("substation_design", {}) + shunt_cost_rate = _design.get("shunt_cost_rate", 35000) + + self.shunt_reactor_cost = ( + self.mpt_rating * self.num_mpt * shunt_cost_rate * 0.5 + ) + + def calc_switchgear_cost(self): + """ + Calculates the cost of the switchgear. + + Parameters + ---------- + switchgear_cost : int | float + """ + + _design = self.config.get("substation_design", {}) + switchgear_cost = _design.get("switchgear_cost", 14.5e5) + + self.switchgear_costs = self.num_mpt * switchgear_cost + + def calc_ancillary_system_cost(self): + """ + Calculates cost of ancillary systems. + + Parameters + ---------- + backup_gen_cost : int | float + workspace_cost : int | float + other_ancillary_cost : int | float + """ + + _design = self.config.get("substation_design", {}) + backup_gen_cost = _design.get("backup_gen_cost", 1e6) + workspace_cost = _design.get("workspace_cost", 2e6) + other_ancillary_cost = _design.get("other_ancillary_cost", 3e6) + + self.ancillary_system_costs = ( + backup_gen_cost + workspace_cost + other_ancillary_cost + ) + + def calc_assembly_cost(self): + """ + Calculates the cost of assembly on land. + + Parameters + ---------- + topside_assembly_factor : int | float + """ + + _design = self.config.get("substation_design", {}) + topside_assembly_factor = _design.get("topside_assembly_factor", 0.075) + self.land_assembly_cost = ( + self.switchgear_costs + + self.shunt_reactor_cost + + self.ancillary_system_costs + ) * topside_assembly_factor + + def calc_substructure_mass_and_cost(self): + """ + Calculates the mass and associated cost of the substation substructure. + + Parameters + ---------- + oss_substructure_cost_rate : int | float + oss_pile_cost_rate : int | float + """ + + _design = self.config.get("substation_design", {}) + oss_substructure_cost_rate = _design.get( + "oss_substructure_cost_rate", 3000 + ) + oss_pile_cost_rate = _design.get("oss_pile_cost_rate", 0) + + substructure_mass = 0.4 * self.topside_mass + # substructure_pile_mass = 8 * substructure_mass ** 0.5574 + substructure_pile_mass = 0 # moorings don't use piles + self.substructure_cost = ( + substructure_mass * oss_substructure_cost_rate + + substructure_pile_mass * oss_pile_cost_rate + ) + + self.substructure_mass = substructure_mass + substructure_pile_mass + + @property + def design_result(self): + """Returns the results of self.run().""" + + if not self._outputs: + raise Exception("Has OffshoreSubstationDesign been ran yet?") + + return self._outputs + + @property + def detailed_output(self): + """Returns detailed phase information.""" + + _outputs = { + "num_substations": self.num_substations, + "substation_mpt_rating": self.mpt_rating, + "substation_topside_mass": self.topside_mass, + "substation_topside_cost": self.topside_cost, + "substation_substructure_mass": self.substructure_mass, + "substation_substructure_cost": self.substructure_cost, + } + + return _outputs diff --git a/ORBIT/phases/design/scour_protection_design.py b/ORBIT/phases/design/scour_protection_design.py index efa66b4f..8dbac190 100644 --- a/ORBIT/phases/design/scour_protection_design.py +++ b/ORBIT/phases/design/scour_protection_design.py @@ -1,9 +1,9 @@ -"""Provides the `ScourProtectionDesign` class""" +"""Provides the `ScourProtectionDesign` class.""" __author__ = ["Rob Hammond", "Jake Nunemaker"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Rob Hammond" -__email__ = "robert.hammond@nrel.gov" +__email__ = "rob.hammond@nrel.gov" from math import ceil @@ -14,7 +14,8 @@ class ScourProtectionDesign(DesignPhase): """ - Calculates the necessary scour protection material for a fixed substructure. + Calculates the necessary scour protection material for a fixed + substructure. Parameters ---------- @@ -65,7 +66,7 @@ class ScourProtectionDesign(DesignPhase): "scour_protection": { "tonnes_per_substructure": "t", "cost_per_tonne": "USD/t", - } + }, } def __init__(self, config, **kwargs): @@ -90,7 +91,7 @@ def __init__(self, config, **kwargs): self.protection_depth = self._design.get("scour_protection_depth", 1) def compute_scour_protection_tonnes_to_install(self): - """ + r""" Computes the amount of scour protection material that needs to be installed around a fixed substructure. @@ -105,17 +106,17 @@ def compute_scour_protection_tonnes_to_install(self): References ---------- - .. [1] Det Norske Veritas AS. (2014, May). Design of Offshore Wind Turbine - Structures. Retrieved from + .. [1] Det Norske Veritas AS. (2014, May). Design of Offshore Wind + Turbine Structures. Retrieved from https://rules.dnvgl.com/docs/pdf/DNV/codes/docs/2014-05/Os-J101.pdf - """ + """ # noqa: E501 self.scour_depth = self.equilibrium * self.diameter r = self.diameter / 2 + self.scour_depth / np.tan(np.radians(self.phi)) volume = ( - np.pi * self.protection_depth * (r ** 2 - (self.diameter / 2) ** 2) + np.pi * self.protection_depth * (r**2 - (self.diameter / 2) ** 2) ) self.scour_protection_tonnes = ceil( @@ -123,15 +124,13 @@ def compute_scour_protection_tonnes_to_install(self): ) def run(self): - """ - Runs the required methods to be able to produce a `design_result`. - """ + """Runs the design model.""" self.compute_scour_protection_tonnes_to_install() @property def total_cost(self): - """Returns the total cost of the phase in $USD""" + """Returns the total cost of the phase in $USD.""" cost = ( self._design["cost_per_tonne"] diff --git a/ORBIT/phases/design/semi_submersible_design.py b/ORBIT/phases/design/semi_submersible_design.py index 58404a29..17fd0a80 100644 --- a/ORBIT/phases/design/semi_submersible_design.py +++ b/ORBIT/phases/design/semi_submersible_design.py @@ -1,16 +1,20 @@ -"""Provides the `SemiSubmersibleDesign` class (from OffshoreBOS).""" +"""Provides the `SemiSubmersibleDesign` class.""" __author__ = "Jake Nunemaker" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Jake Nunemaker" __email__ = "jake.nunemaker@nrel.gov" - from ORBIT.phases.design import DesignPhase +""" +[1] Maness et al. 2017, NREL Offshore Balance-of-System Model. +https://www.nrel.gov/docs/fy17osti/66874.pdf +""" + class SemiSubmersibleDesign(DesignPhase): - """Semi-Submersible Substructure Design""" + """Semi-Submersible Substructure Design.""" expected_config = { "site": {"depth": "m"}, @@ -30,7 +34,7 @@ class SemiSubmersibleDesign(DesignPhase): "mass": "t", "unit_cost": "USD", "towing_speed": "km/h", - } + }, } def __init__(self, config, **kwargs): @@ -61,90 +65,98 @@ def run(self): @property def stiffened_column_mass(self): - """ - Calculates the mass of the stiffened column for a single - semi-submersible in tonnes. From original OffshoreBOS model. + """Calculates the mass of the stiffened column for a single + semi-submersible in tonnes [1]. """ rating = self.config["turbine"]["turbine_rating"] - mass = -0.9581 * rating ** 2 + 40.89 * rating + 802.09 + + mass = -0.9581 * rating**2 + 40.89 * rating + 802.09 return mass @property def stiffened_column_cost(self): - """ - Calculates the cost of the stiffened column for a single - semi-submersible. From original OffshoreBOS model. + """Calculates the cost of the stiffened column for a single + semi-submersible [1]. """ - cr = self._design.get("stiffened_column_CR", 3120) + _key = "stiffened_column_CR" + cr = self._design.get( + _key, self.get_default_cost("semisubmersible_design", _key) + ) return self.stiffened_column_mass * cr @property def truss_mass(self): - """ - Calculates the truss mass for a single semi-submersible in tonnes. From - original OffshoreBOS model. + """Calculates the truss mass for a single semi-submersible in tonnes + [1]. """ rating = self.config["turbine"]["turbine_rating"] - mass = 2.7894 * rating ** 2 + 15.591 * rating + 266.03 + + mass = 2.7894 * rating**2 + 15.591 * rating + 266.03 return mass @property def truss_cost(self): - """ - Calculates the cost of the truss for a signle semi-submerisble. From - original OffshoreBOS model. + """Calculates the cost of the truss for a signle semi-submerisble + [1]. """ - cr = self._design.get("truss_CR", 6250) + _key = "truss_CR" + cr = self._design.get( + _key, self.get_default_cost("semisubmersible_design", _key) + ) return self.truss_mass * cr @property def heave_plate_mass(self): - """ - Calculates the heave plate mass for a single semi-submersible in tonnes. - From original OffshoreBOS model. + """Calculates the heave plate mass for a single semi-submersible + in tonnes [1]. """ rating = self.config["turbine"]["turbine_rating"] - mass = -0.4397 * rating ** 2 + 21.545 * rating + 177.42 + + mass = -0.4397 * rating**2 + 21.545 * rating + 177.42 return mass @property def heave_plate_cost(self): - """ - Calculates the heave plate cost for a single semi-submersible. From - original OffshoreBOS model. + """Calculates the heave plate cost for a single semi-submersible + [1]. """ - cr = self._design.get("heave_plate_CR", 6250) + _key = "heave_plate_CR" + cr = self._design.get( + _key, self.get_default_cost("semisubmersible_design", _key) + ) return self.heave_plate_mass * cr @property def secondary_steel_mass(self): - """ - Calculates the mass of the required secondary steel for a single - semi-submersible. From original OffshoreBOS model. + """Calculates the mass of the required secondary steel for a single + semi-submersible [1]. """ rating = self.config["turbine"]["turbine_rating"] - mass = -0.153 * rating ** 2 + 6.54 * rating + 128.34 + + mass = -0.153 * rating**2 + 6.54 * rating + 128.34 return mass @property def secondary_steel_cost(self): - """ - Calculates the cost of the required secondary steel for a single - semi-submersible. For original OffshoreBOS model. + """Calculates the cost of the required secondary steel for a single + semi-submersible [1]. """ - cr = self._design.get("secondary_steel_CR", 7250) + _key = "secondary_steel_CR" + cr = self._design.get( + _key, self.get_default_cost("semisubmersible_design", _key) + ) return self.secondary_steel_mass * cr @property @@ -178,7 +190,7 @@ def total_substructure_mass(self): @property def design_result(self): - """Returns the result of `self.run()`""" + """Returns the result of `self.run()`.""" if not self._outputs: raise Exception("Has `SemiSubmersibleDesign` been ran yet?") diff --git a/ORBIT/phases/design/spar_design.py b/ORBIT/phases/design/spar_design.py index 224c4a5e..e3713c4c 100644 --- a/ORBIT/phases/design/spar_design.py +++ b/ORBIT/phases/design/spar_design.py @@ -1,4 +1,4 @@ -"""Provides the `SparDesign` class (from OffshoreBOS).""" +"""Provides the `SparDesign` class.""" __author__ = "Jake Nunemaker" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" @@ -10,9 +10,14 @@ from ORBIT.phases.design import DesignPhase +""" +[1] Maness et al. 2017, NREL Offshore Balance-of-System Model. +https://www.nrel.gov/docs/fy17osti/66874.pdf +""" + class SparDesign(DesignPhase): - """Spar Substructure Design""" + """Spar Substructure Design.""" expected_config = { "site": {"depth": "m"}, @@ -33,7 +38,7 @@ class SparDesign(DesignPhase): "ballasted_mass": "t", "unit_cost": "USD", "towing_speed": "km/h", - } + }, } def __init__(self, config, **kwargs): @@ -65,21 +70,21 @@ def run(self): @property def stiffened_column_mass(self): - """ - Calculates the mass of the stiffened column for a single spar in tonnes. From original OffshoreBOS model. + """Calculates the mass of the stiffened column for a single spar + in tonnes [1]. """ rating = self.config["turbine"]["turbine_rating"] depth = self.config["site"]["depth"] - mass = 535.93 + 17.664 * rating ** 2 + 0.02328 * depth * log(depth) + mass = 535.93 + 17.664 * rating**2 + 0.02328 * depth * log(depth) return mass @property def tapered_column_mass(self): - """ - Calculates the mass of the atpered column for a single spar in tonnes. From original OffshoreBOS model. + """Calculates the mass of the tapered column for a single + spar in tonnes [1]. """ rating = self.config["turbine"]["turbine_rating"] @@ -90,47 +95,47 @@ def tapered_column_mass(self): @property def stiffened_column_cost(self): - """ - Calculates the cost of the stiffened column for a single spar. From original OffshoreBOS model. + """Calculates the cost of the stiffened column for a single spar + [1]. """ - cr = self._design.get("stiffened_column_CR", 3120) + _key = "stiffened_column_CR" + cr = self._design.get(_key, self.get_default_cost("spar_design", _key)) + return self.stiffened_column_mass * cr @property def tapered_column_cost(self): - """ - Calculates the cost of the tapered column for a single spar. From original OffshoreBOS model. - """ + """Calculates the cost of the tapered column for a single spar [1].""" + + _key = "tapered_column_CR" + cr = self._design.get(_key, self.get_default_cost("spar_design", _key)) - cr = self._design.get("tapered_column_CR", 4220) return self.tapered_column_mass * cr @property def ballast_mass(self): - """ - Calculates the ballast mass of a single spar. From original OffshoreBOS model. - """ + """Calculates the ballast mass of a single spar [1].""" rating = self.config["turbine"]["turbine_rating"] - mass = -16.536 * rating ** 2 + 1261.8 * rating - 1554.6 + + mass = -16.536 * rating**2 + 1261.8 * rating - 1554.6 return mass @property def ballast_cost(self): - """ - Calculates the cost of ballast material for a single spar. From original OffshoreBOS model. - """ + """Calculates the cost of ballast material for a single spar [1].""" + + _key = "ballast_material_CR" + cr = self._design.get(_key, self.get_default_cost("spar_design", _key)) - cr = self._design.get("ballast_material_CR", 100) return self.ballast_mass * cr @property def secondary_steel_mass(self): - """ - Calculates the mass of the required secondary steel for a single - spar. From original OffshoreBOS model. + """Calculates the mass of the required secondary steel for a single + spar [1]. """ rating = self.config["turbine"]["turbine_rating"] @@ -138,7 +143,7 @@ def secondary_steel_mass(self): mass = exp( 3.58 - + 0.196 * (rating ** 0.5) * log(rating) + + 0.196 * (rating**0.5) * log(rating) + 0.00001 * depth * log(depth) ) @@ -146,12 +151,13 @@ def secondary_steel_mass(self): @property def secondary_steel_cost(self): + """Calculates the cost of the required secondary steel for a single + spar [1]. """ - Calculates the cost of the required secondary steel for a single - spar. For original OffshoreBOS model. - """ - cr = self._design.get("secondary_steel_CR", 7250) + _key = "secondary_steel_CR" + cr = self._design.get(_key, self.get_default_cost("spar_design", _key)) + return self.secondary_steel_mass * cr @property @@ -172,7 +178,10 @@ def ballasted_mass(self): @property def substructure_cost(self): - """Returns the total cost (including ballast) of the spar substructure.""" + """ + Returns the total cost (including ballast) of the spar + substructure. + """ return ( self.stiffened_column_cost @@ -207,7 +216,7 @@ def total_cost(self): @property def design_result(self): - """Returns the result of `self.run()`""" + """Returns the result of `self.run()`.""" if not self._outputs: raise Exception("Has `SparDesign` been ran yet?") diff --git a/ORBIT/phases/install/__init__.py b/ORBIT/phases/install/__init__.py index 46ca4cbf..5a6d0035 100644 --- a/ORBIT/phases/install/__init__.py +++ b/ORBIT/phases/install/__init__.py @@ -3,7 +3,7 @@ __author__ = ["Jake Nunemaker", "Rob Hammond"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = ["Jake Nunemaker", "Rob Hammond"] -__email__ = ["jake.nunemaker@nrel.gov" "robert.hammond@nrel.gov"] +__email__ = ["jake.nunemaker@nrel.gov" "rob.hammond@nrel.gov"] from .install_phase import InstallPhase # isort:skip from .oss_install import ( diff --git a/ORBIT/phases/install/cable_install/__init__.py b/ORBIT/phases/install/cable_install/__init__.py index abbb38eb..7997fda6 100644 --- a/ORBIT/phases/install/cable_install/__init__.py +++ b/ORBIT/phases/install/cable_install/__init__.py @@ -1,9 +1,9 @@ -"""Initialize cable installation functionality""" +"""Initialize cable installation functionality.""" __author__ = "Rob Hammond" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Rob Hammond" -__email__ = "robert.hammond@nrel.gov" +__email__ = "rob.hammond@nrel.gov" from .array import ArrayCableInstallation from .common import SimpleCable diff --git a/ORBIT/phases/install/cable_install/array.py b/ORBIT/phases/install/cable_install/array.py index d4d8a181..d24f5144 100644 --- a/ORBIT/phases/install/cable_install/array.py +++ b/ORBIT/phases/install/cable_install/array.py @@ -11,7 +11,6 @@ import numpy as np from marmot import process -from ORBIT.core import Vessel from ORBIT.core.logic import position_onsite from ORBIT.phases.install import InstallPhase from ORBIT.core.exceptions import InsufficientCable @@ -31,7 +30,7 @@ class ArrayCableInstallation(InstallPhase): - """Array Cable Installation Phase""" + """Array Cable Installation Phase.""" phase = "Array Cable Installation" capex_category = "Array System" @@ -52,7 +51,7 @@ class ArrayCableInstallation(InstallPhase): "cable_sections": [ ("length, km", "int", "speed, km/h (optional)") ], - } + }, }, }, } @@ -78,11 +77,7 @@ def __init__(self, config, weather=None, **kwargs): self.setup_simulation(**kwargs) def setup_simulation(self, **kwargs): - """ - Setup method for ArrayCableInstallation phase. - - Extracts key inputs - - - """ + """Setup method for ArrayCableInstallation phase.""" depth = self.config["site"]["depth"] system = self.config["array_system"] @@ -214,16 +209,16 @@ def install_array_cables( total_cable_length = 0 installed = 0 - for cable, sections in cable_data: + for _, sections in cable_data: for s in sections: - l, num_i, *_ = s - total_cable_length += l * num_i + length, num_i, *_ = s + total_cable_length += length * num_i - _trench_length = max(0, l - 2 * free_cable_length) + _trench_length = max(0, length - 2 * free_cable_length) if _trench_length: trench_sections.extend([_trench_length] * num_i) - ## Trenching Process + # Trenching Process # Conduct trenching along cable routes before laying cable if trench_vessel is None: pass @@ -237,12 +232,13 @@ def install_array_cables( trench_vessel.at_site = True elif trench_vessel.at_site: - try: # Dig trench along each cable section distance trench_distance = trench_sections.pop(0) yield dig_array_cables_trench( - trench_vessel, trench_distance, **kwargs + trench_vessel, + trench_distance, + **kwargs, ) except IndexError: @@ -255,7 +251,7 @@ def install_array_cables( message="Array cable trench digging process completed!" ) - ## Cable Lay Process + # Cable Lay Process to_bury = [] for cable, sections in cable_data: vessel.cable_storage.reset() @@ -269,7 +265,6 @@ def install_array_cables( vessel.at_site = True elif vessel.at_site: - try: length, num_sections, *extra = sections.pop(0) if extra: @@ -291,12 +286,10 @@ def install_array_cables( break for _ in range(num_sections): - try: section = vessel.cable_storage.get_cable(length) except InsufficientCable: - yield vessel.transit(distance, **kwargs) yield load_cable_on_vessel(vessel, cable, **kwargs) yield vessel.transit(distance, **kwargs) @@ -327,15 +320,13 @@ def install_array_cables( if burial_vessel is None: breakpoints = check_for_completed_string( - vessel, installed, total_cable_length, breakpoints + vessel, + installed, + total_cable_length, + breakpoints, ) - # Transit back to port - vessel.at_site = False - yield vessel.transit(distance, **kwargs) - vessel.at_port = True - - ## Burial Process + # Burial Process if burial_vessel is None: vessel.submit_debug_log( message="Array cable lay/burial process completed!" @@ -371,7 +362,10 @@ def bury_array_cables(vessel, sections, breakpoints, **kwargs): installed += length breakpoints = check_for_completed_string( - vessel, installed, total_length, breakpoints + vessel, + installed, + total_length, + breakpoints, ) vessel.submit_debug_log(message="Array cable burial process completed!") @@ -395,9 +389,7 @@ def dig_array_cables_trench(vessel, distance, **kwargs): def check_for_completed_string(vessel, installed, total, breakpoints): - """ - TODO: - """ + """Checks that a string has been logged as completed.""" if (installed / total) >= breakpoints[0]: vessel.submit_debug_log(progress="Array String") diff --git a/ORBIT/phases/install/cable_install/common.py b/ORBIT/phases/install/cable_install/common.py index f2481138..6a60d41d 100644 --- a/ORBIT/phases/install/cable_install/common.py +++ b/ORBIT/phases/install/cable_install/common.py @@ -13,7 +13,7 @@ class SimpleCable: - """Simple Cable Class""" + """Simple Cable Class.""" def __init__(self, linear_density): """ @@ -28,7 +28,7 @@ def __init__(self, linear_density): @process -def load_cable_on_vessel(vessel, cable, constraints={}, **kwargs): +def load_cable_on_vessel(vessel, cable, constraints=None, **kwargs): """ Subprocess for loading `cable` onto the configured `vessel`. @@ -38,16 +38,23 @@ def load_cable_on_vessel(vessel, cable, constraints={}, **kwargs): Performing vessel. Required to have configured `cable_storage`. cable : SimpleCable | Cable Cable type. - constraints : dict - Constraints to be applied to cable loading subprocess. + constraints : dict | None + Constraints to be applied to cable loading subprocess, defaults to + None. """ + if constraints is None: + constraints = {} + key = "cable_load_time" load_time = kwargs.get(key, pt[key]) vessel.cable_storage.load_cable(cable) yield vessel.task_wrapper( - "Load Cable", load_time, constraints=constraints, **kwargs + "Load Cable", + load_time, + constraints=constraints, + **kwargs, ) @@ -88,7 +95,10 @@ def prep_cable(vessel, **kwargs): prep_time = kwargs.get(key, pt[key]) yield vessel.task_wrapper( - "Prepare Cable", prep_time, constraints=vessel.transit_limits, **kwargs + "Prepare Cable", + prep_time, + constraints=vessel.transit_limits, + **kwargs, ) @@ -176,8 +186,7 @@ def lay_bury_cable(vessel, distance, **kwargs): kwargs = {**kwargs, **getattr(vessel, "_transport_specs", {})} - key = "cable_lay_bury_speed" - lay_bury_speed = kwargs.get(key, pt[key]) + lay_bury_speed = vessel._vessel_specs.get("cable_lay_bury_speed", 0.0625) lay_bury_time = distance / lay_bury_speed yield vessel.task_wrapper( @@ -335,7 +344,10 @@ def tow_plow(vessel, distance, **kwargs): plow_time = distance / plow_speed yield vessel.task_wrapper( - "Tow Plow", plow_time, constraints=vessel.operational_limits, **kwargs + "Tow Plow", + plow_time, + constraints=vessel.operational_limits, + **kwargs, ) @@ -370,7 +382,8 @@ def pull_winch(vessel, distance, **kwargs): @process def dig_trench(vessel, distance, **kwargs): """ - Task representing time required to dig a trench prior to cable lay and burial + Task representing time required to dig a trench prior to cable lay and + burial. Parameters ---------- diff --git a/ORBIT/phases/install/cable_install/export.py b/ORBIT/phases/install/cable_install/export.py index 486bc9e7..642681ec 100644 --- a/ORBIT/phases/install/cable_install/export.py +++ b/ORBIT/phases/install/cable_install/export.py @@ -8,6 +8,7 @@ from copy import deepcopy from math import ceil +from warnings import warn from marmot import process @@ -30,7 +31,7 @@ class ExportCableInstallation(InstallPhase): - """Export Cable Installation Phase""" + """Export Cable Installation Phase.""" phase = "Export Cable Installation" capex_category = "Export System" @@ -44,13 +45,21 @@ class ExportCableInstallation(InstallPhase): "site": {"distance": "km"}, "plant": {"capacity": "MW"}, "export_system": { + "system_cost": "USD", "cable": { "linear_density": "t/km", "sections": [("length, km", "speed, km/h (optional)")], "number": "int (optional)", + "cable_type": "str(optional, defualt: 'HVAC')", + "landfall": { + "trench_length": "km (optional)", + "interconnection_distance": "km (optional); default: 3km", + }, }, - "interconnection_distance": "km (optional); default: 3km", + "interconnection_distance": "km (optional)", "interconnection_voltage": "kV (optional); default: 345kV", + "onshore_construction_cost": "$, (optional)", + "onshore_construction_time": "h, (optional)", }, } @@ -88,8 +97,13 @@ def setup_simulation(self, **kwargs): self.free_cable_length = system.get("free_cable_length", depth / 1000) self.cable = Cable(system["cable"]["linear_density"]) + self.cable_type = system["cable"].get("cable_type", "HVAC") self.sections = system["cable"]["sections"] - self.number = system["cable"].get("number", 1) + + if self.cable_type == "HVDC-monopole": + self.number = int(system["cable"].get("number", 2) / 2) + else: + self.number = system["cable"].get("number", 1) self.initialize_installation_vessel() self.initialize_burial_vessel() @@ -123,11 +137,19 @@ def extract_distances(self): """Extracts distances from input configuration or default values.""" site = self.config["site"]["distance"] - try: - trench = self.config["landfall"]["trench_length"] - except KeyError: - trench = 1 + _landfall = self.config.get("landfall", {}) + if _landfall: + warn( + "landfall dictionary will be deprecated and moved" + " into [export_system][landfall].", + DeprecationWarning, + stacklevel=2, + ) + else: + _landfall = self.config["export_system"].get("landfall", {}) + + trench = _landfall.get("trench_length", 1) self.distances = {"site": site, "trench": trench} @@ -140,14 +162,22 @@ def onshore_construction(self, **kwargs): ---------- construction_time : int | float Amount of time onshore construction takes. - Default: 48h + Default: 0h construction_rate : int | float Day rate of onshore construction. Default: 50000 USD/day """ - construction_time = kwargs.get("onshore_construction_time", 0.0) - construction_cost = self.calculate_onshore_transmission_cost(**kwargs) + construction_time = self.config["export_system"].get( + "onshore_construction_time", 0.0 + ) + construction_cost = self.config["export_system"].get( + "onshore_construction_cost", None + ) + if construction_cost is None: + construction_cost = self.calculate_onshore_transmission_cost( + **kwargs + ) if construction_time: _ = self.env.timeout(construction_time) @@ -170,32 +200,40 @@ def calculate_onshore_transmission_cost(self, **kwargs): OffshoreBOS model. """ - capacity = self.config["plant"]["capacity"] - - voltage = self.config["export_system"].get( - "interconnection_voltage", 345 - ) - distance = self.config["export_system"].get( - "interconnection_distance", 3 - ) - - switchyard_cost = 18115 * voltage + 165944 - onshore_substation_cost = ( - 0.165 * 1e6 - ) * capacity # From BNEF Tomorrow's Cost of Offshore Wind - onshore_misc_cost = 11795 * capacity ** 0.3549 + 350000 + # capacity = self.config["plant"]["capacity"] + system = self.config["export_system"] + voltage = system.get("interconnection_voltage", 345) + distance = system.get("interconnection_distance", None) + + if distance: + warn( + "[export_system][interconnection_distance] will be deprecated" + " and moved to" + " [export_system][landfall][interconnection_distance].", + DeprecationWarning, + stacklevel=2, + ) + + landfall = system.get("landfall", {}) + distance = landfall.get("interconnection_distance", 3) + + # switchyard_cost = 18115 * voltage + 165944 + # onshore_substation_cost = ( + # 0.165 * 1e6 + # ) * capacity # From BNEF Tomorrow's Cost of Offshore Wind + # onshore_misc_cost = 11795 * capacity**0.3549 + 350000 transmission_line_cost = (1176 * voltage + 218257) * ( distance ** (1 - 0.1063) ) - onshore_transmission_cost = ( - switchyard_cost - + onshore_substation_cost - + onshore_misc_cost - + transmission_line_cost + self.onshore_transmission_cost = ( + transmission_line_cost + # + switchyard_cost + # + onshore_substation_cost + # + onshore_misc_cost ) - return onshore_transmission_cost + return self.onshore_transmission_cost def initialize_installation_vessel(self): """Creates the export cable installation vessel.""" @@ -313,17 +351,21 @@ def install_export_cables( else: for _ in range(number): - # Trenching vessel can dig a trench during inbound or outbound journey + # Trench vessel can dig a trench during inbound or outbound journey if trench_vessel.at_port: trench_vessel.at_port = False yield dig_export_cables_trench( - trench_vessel, ground_distance, **kwargs + trench_vessel, + ground_distance, + **kwargs, ) trench_vessel.at_site = True elif trench_vessel.at_site: trench_vessel.at_site = False yield dig_export_cables_trench( - trench_vessel, ground_distance, **kwargs + trench_vessel, + ground_distance, + **kwargs, ) trench_vessel.at_port = True diff --git a/ORBIT/phases/install/install_phase.py b/ORBIT/phases/install/install_phase.py index 97b93c3b..930686e1 100644 --- a/ORBIT/phases/install/install_phase.py +++ b/ORBIT/phases/install/install_phase.py @@ -3,7 +3,7 @@ __author__ = ["Jake Nunemaker", "Rob Hammond"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = ["Jake Nunemaker", "Rob Hammond"] -__email__ = ["jake.nunemaker@nrel.gov", "robert.hammond@nrel.gov"] +__email__ = ["jake.nunemaker@nrel.gov", "rob.hammond@nrel.gov"] from abc import abstractmethod @@ -52,9 +52,9 @@ def initialize_environment(self, weather, **kwargs): self.env = Environment(name=env_name, state=weather, **kwargs) def initialize_vessel(self, name, specs): - """""" + """Initializes a vessel.""" - avail = getattr(self, "availability") + avail = self.availability if avail is None: return Vessel(name, specs) @@ -68,7 +68,7 @@ def initialize_vessel(self, name, specs): @abstractmethod def setup_simulation(self): """ - Sets up the required simulation infrastructure + Sets up the required simulation infrastructure. Generally, this creates the port, initializes the items to be installed, and initializes the vessel(s) used for the installation. @@ -77,9 +77,7 @@ def setup_simulation(self): pass def initialize_port(self): - """ - Initializes a Port object with N number of cranes. - """ + """Initializes a Port object with N number of cranes.""" self.port = Port(self.env) @@ -108,8 +106,8 @@ def run(self, until=None): def append_phase_info(self): """Appends phase information to all logs in `self.env.logs`.""" - for l in self.env.logs: - l["phase"] = self.phase + for log in self.env.logs: + log["phase"] = self.phase @property def port_costs(self): @@ -121,9 +119,18 @@ def port_costs(self): return 0 else: - key = "port_cost_per_month" port_config = self.config.get("port", {}) + assert port_config.get("sub_assembly_lines", 1) == port_config.get( + "turbine_assembly_cranes", + 1, + ), ( + "Number of substructure assembly lines is not equal to number" + " of turbine assembly cranes" + ) + + key = "port_cost_per_month" rate = port_config.get("monthly_rate", common_costs[key]) + rate += rate * (port_config.get("sub_assembly_lines", 1) - 1) * 0.5 months = self.total_phase_time / (8760 / 12) return months * rate @@ -151,9 +158,7 @@ def detailed_output(self): @property def agent_efficiencies(self): - """ - Returns a summary of agent operational efficiencies. - """ + """Returns a summary of agent operational efficiencies.""" efficiencies = {} @@ -162,7 +167,7 @@ def agent_efficiencies(self): k: sum([i["duration"] for i in list(v)]) for k, v in groupby(s, key=lambda x: (x["agent"], x["action"])) } - agents = list(set([k[0] for k in grouped.keys()])) + agents = list({k[0] for k in grouped.keys()}) for agent in agents: total = sum([v for k, v in grouped.items() if k[0] == agent]) @@ -188,7 +193,8 @@ def agent_efficiencies(self): @staticmethod def get_max_cargo_mass_utilzations(vessels): """ - Returns a summary of cargo mass efficiencies for list of input `vessels`. + Returns a summary of cargo mass efficiencies for list of input + `vessels`. Parameters ---------- @@ -205,16 +211,17 @@ def get_max_cargo_mass_utilzations(vessels): print("Vessel does not have storage capacity.") continue - outputs[ - f"{name}_cargo_mass_utilization" - ] = vessel.max_cargo_mass_utilization + outputs[f"{name}_cargo_mass_utilization"] = ( + vessel.max_cargo_mass_utilization + ) return outputs @staticmethod def get_max_deck_space_utilzations(vessels): """ - Returns a summary of deck space efficiencies for list of input `vessels`. + Returns a summary of deck space efficiencies for list of input + `vessels`. Parameters ---------- @@ -231,8 +238,8 @@ def get_max_deck_space_utilzations(vessels): print("Vessel does not have storage capacity.") continue - outputs[ - f"{name}_deck_space_utilization" - ] = vessel.max_deck_space_utilization + outputs[f"{name}_deck_space_utilization"] = ( + vessel.max_deck_space_utilization + ) return outputs diff --git a/ORBIT/phases/install/jacket_install/common.py b/ORBIT/phases/install/jacket_install/common.py index 4312bfcf..3ffaa436 100644 --- a/ORBIT/phases/install/jacket_install/common.py +++ b/ORBIT/phases/install/jacket_install/common.py @@ -1,3 +1,8 @@ +""" +Provides the jacket-specific cargo implementation and jacket installation +methods. +""" + __author__ = "Jake Nunemaker" __copyright__ = "Copyright 2021, National Renewable Energy Laboratory" __maintainer__ = "Jake Nunemaker" @@ -11,7 +16,7 @@ class Jacket(Cargo): - """Jacket Cargo""" + """Creates the jacket-specific cargo model.""" def __init__( self, @@ -185,5 +190,8 @@ def install_jacket(vessel, jacket, **kwargs): grout_time = kwargs.get("jacket_grout_time", pt["jacket_grout_time"]) yield vessel.task_wrapper( - "Grout Jacket", grout_time, constraints=vessel.transit_limits, **kwargs + "Grout Jacket", + grout_time, + constraints=vessel.transit_limits, + **kwargs, ) diff --git a/ORBIT/phases/install/jacket_install/standard.py b/ORBIT/phases/install/jacket_install/standard.py index 2f8f0c55..efaef805 100644 --- a/ORBIT/phases/install/jacket_install/standard.py +++ b/ORBIT/phases/install/jacket_install/standard.py @@ -1,3 +1,5 @@ +"""Provides the jacket installation class and model.""" + __author__ = "Jake Nunemaker" __copyright__ = "Copyright 2021, National Renewable Energy Laboratory" __maintainer__ = "Jake Nunemaker" @@ -55,7 +57,7 @@ class JacketInstallation(InstallPhase): "mass": "t", "unit_cost": "USD", "num_legs": "N (optional, default: 4)", - "foundation_type": "str (optional, 'piles' | 'suction', default: 'piles')", + "foundation_type": "str (optional, 'piles' | 'suction', default: 'piles')", # noqa: E501 }, "transition_piece": { "deck_space": "m2 (optional)", @@ -111,9 +113,7 @@ def system_capex(self): ] def initialize_substructure_delivery(self): - """ - - """ + """Creates the simulated jacket delivery process.""" jacket = Jacket(**self.config["jacket"]) @@ -161,8 +161,8 @@ def initialize_substructure_delivery(self): def setup_simulation(self, **kwargs): """ - Sets up simulation infrastructure, routing to specific methods dependent - on number of feeders. + Sets up simulation infrastructure, routing to specific methods + dependent on number of feeders. """ if self.config.get("num_feeders", None): @@ -176,7 +176,8 @@ def setup_simulation(self, **kwargs): def setup_simulation_without_feeders(self, **kwargs): """ - Sets up infrastructure for turbine installation without feeder barges. + Creates the infrastructure for turbine installation without feeder + barges. """ site_distance = self.config["site"]["distance"] @@ -210,7 +211,8 @@ def setup_simulation_without_feeders(self, **kwargs): def setup_simulation_with_feeders(self, **kwargs): """ - Sets up infrastructure for turbine installation using feeder barges. + Creates the infrastructure for turbine installation using feeder + barges. """ site_distance = self.config["site"]["distance"] @@ -261,9 +263,7 @@ def setup_simulation_with_feeders(self, **kwargs): ) def initialize_wtiv(self): - """ - Initializes the WTIV simulation object and the onboard vessel storage. - """ + """Creates the WTIV simulation object and onboard vessel storage.""" wtiv_specs = self.config.get("wtiv", None) name = wtiv_specs.get("name", "WTIV") @@ -277,16 +277,14 @@ def initialize_wtiv(self): self.wtiv = wtiv def initialize_feeders(self): - """ - Initializes feeder barge objects. - """ + """Initializes feeder barge objects.""" number = self.config.get("num_feeders", None) feeder_specs = self.config.get("feeder", None) self.feeders = [] for n in range(number): - name = "Feeder {}".format(n) + name = f"Feeder {n}" feeder = self.initialize_vessel(name, feeder_specs) self.env.register(feeder) @@ -299,7 +297,8 @@ def initialize_feeders(self): def initialize_queue(self): """ Initializes the queue, modeled as a ``SimPy.Resource`` that feeders - join at site. This limits the simulation to one active feeder at a time. + join at site. This limits the simulation to one active feeder at a + time. """ self.active_feeder = simpy.Resource(self.env, capacity=1) @@ -321,7 +320,7 @@ def detailed_output(self): **self.agent_efficiencies, **self.get_max_cargo_mass_utilzations(transport_vessels), **self.get_max_deck_space_utilzations(transport_vessels), - } + }, } return outputs @@ -329,7 +328,12 @@ def detailed_output(self): @process def solo_install_jackets( - vessel, port, distance, jackets, component_list, **kwargs + vessel, + port, + distance, + jackets, + component_list, + **kwargs, ): """ Logic that a Wind Turbine Installation Vessel (WTIV) uses during a single @@ -354,7 +358,10 @@ def solo_install_jackets( try: # Get substructure + transition piece from port yield get_list_of_items_from_port_wait( - vessel, port, component_list, **kwargs + vessel, + port, + component_list, + **kwargs, ) except ItemNotFound: @@ -377,7 +384,9 @@ def solo_install_jackets( if vessel.storage.items: # Prep for jacket install yield prep_for_site_operations( - vessel, survey_required=True, **kwargs + vessel, + survey_required=True, + **kwargs, ) # Get jacket from internal storage @@ -387,7 +396,8 @@ def solo_install_jackets( # Get transition piece from internal storage if needed if "TransitionPiece" in component_list: tp = yield vessel.get_item_from_storage( - "TransitionPiece", **kwargs + "TransitionPiece", + **kwargs, ) yield install_transition_piece(vessel, tp, **kwargs) @@ -407,7 +417,12 @@ def solo_install_jackets( @process def install_jackets_from_queue( - wtiv, queue, jackets, distance, component_list, **kwargs + wtiv, + queue, + jackets, + distance, + component_list, + **kwargs, ): """ Logic that a Wind Turbine Installation Vessel (WTIV) uses to install @@ -443,13 +458,17 @@ def install_jackets_from_queue( # Prep for jacket install yield prep_for_site_operations( - wtiv, survey_required=True, **kwargs + wtiv, + survey_required=True, + **kwargs, ) # Get jacket and tp if "TransitionPiece" in component_list: jacket = yield wtiv.get_item_from_storage( - "Jacket", vessel=queue.vessel, **kwargs + "Jacket", + vessel=queue.vessel, + **kwargs, ) yield install_jacket(wtiv, jacket, **kwargs) @@ -467,7 +486,10 @@ def install_jackets_from_queue( else: jacket = yield wtiv.get_item_from_storage( - "Jacket", vessel=queue.vessel, release=True, **kwargs + "Jacket", + vessel=queue.vessel, + release=True, + **kwargs, ) yield install_jacket(wtiv, jacket, **kwargs) @@ -480,7 +502,11 @@ def install_jackets_from_queue( start = wtiv.env.now yield queue.activate delay_time = wtiv.env.now - start - wtiv.submit_action_log("Delay", delay_time, location="Site") + wtiv.submit_action_log( + "Delay: Not enough vessels for jackets", + delay_time, + location="Site", + ) # Transit to port wtiv.at_site = False diff --git a/ORBIT/phases/install/monopile_install/common.py b/ORBIT/phases/install/monopile_install/common.py index 04af017a..cdfa70b8 100644 --- a/ORBIT/phases/install/monopile_install/common.py +++ b/ORBIT/phases/install/monopile_install/common.py @@ -14,14 +14,17 @@ class Monopile(Cargo): - """Monopile Cargo""" + """Monopile Cargo.""" def __init__( - self, length=None, diameter=None, mass=None, deck_space=None, **kwargs + self, + length=None, + diameter=None, + mass=None, + deck_space=None, + **kwargs, ): - """ - Creates an instance of `Monopile`. - """ + """Creates an instance of `Monopile`.""" self.length = length self.diameter = diameter @@ -48,12 +51,10 @@ def release(**kwargs): class TransitionPiece(Cargo): - """Transition Piece Cargo""" + """Transition Piece Cargo.""" def __init__(self, mass=None, deck_space=None, **kwargs): - """ - Creates an instance of `TransitionPiece`. - """ + """Creates an instance of `TransitionPiece`.""" self.mass = mass self.deck_space = deck_space @@ -69,7 +70,10 @@ def fasten(**kwargs): @staticmethod def release(**kwargs): - """Returns time required to release transition piece from fastenings.""" + """ + Returns the time required to release the transition piece from its + fastenings. + """ key = "tp_release_time" time = kwargs.get(key, pt[key]) @@ -165,7 +169,10 @@ def drive_monopile(vessel, **kwargs): constraints = {**vessel.operational_limits, "whales": false()} yield vessel.task_wrapper( - "Drive Monopile", drive_time, constraints=constraints, **kwargs + "Drive Monopile", + drive_time, + constraints=constraints, + **kwargs, ) @@ -185,7 +192,10 @@ def lower_transition_piece(vessel, **kwargs): """ yield vessel.task_wrapper( - "Lower TP", 1, constraints=vessel.operational_limits, **kwargs + "Lower TP", + 1, + constraints=vessel.operational_limits, + **kwargs, ) @@ -210,7 +220,10 @@ def bolt_transition_piece(vessel, **kwargs): bolt_time = kwargs.get(key, pt[key]) yield vessel.task_wrapper( - "Bolt TP", bolt_time, constraints=vessel.operational_limits, **kwargs + "Bolt TP", + bolt_time, + constraints=vessel.operational_limits, + **kwargs, ) @@ -259,7 +272,10 @@ def cure_transition_piece_grout(vessel, **kwargs): cure_time = kwargs.get(key, pt[key]) yield vessel.task_wrapper( - "Cure TP Grout", cure_time, constraints=vessel.transit_limits, **kwargs + "Cure TP Grout", + cure_time, + constraints=vessel.transit_limits, + **kwargs, ) diff --git a/ORBIT/phases/install/monopile_install/standard.py b/ORBIT/phases/install/monopile_install/standard.py index 5a204709..6e47b685 100644 --- a/ORBIT/phases/install/monopile_install/standard.py +++ b/ORBIT/phases/install/monopile_install/standard.py @@ -13,8 +13,8 @@ from ORBIT.core import SubstructureDelivery from ORBIT.core.logic import ( prep_for_site_operations, + get_list_of_items_from_port, shuttle_items_to_queue_wait, - get_list_of_items_from_port_wait, ) from ORBIT.phases.install import InstallPhase from ORBIT.core.exceptions import ItemNotFound @@ -106,9 +106,7 @@ def system_capex(self): ) * self.config["plant"]["num_turbines"] def initialize_substructure_delivery(self): - """ - - """ + """Creates the simulated monopile delivery model.""" monopile = Monopile(**self.config["monopile"]) tp = TransitionPiece(**self.config["transition_piece"]) @@ -145,8 +143,8 @@ def initialize_substructure_delivery(self): def setup_simulation(self, **kwargs): """ - Sets up simulation infrastructure, routing to specific methods dependent - on number of feeders. + Sets up simulation infrastructure, routing to specific methods + dependent on number of feeders. """ if self.config.get("num_feeders", None): @@ -160,7 +158,8 @@ def setup_simulation(self, **kwargs): def setup_simulation_without_feeders(self, **kwargs): """ - Sets up infrastructure for turbine installation without feeder barges. + Creates the infrastructure for turbine installations without feeder + barges. """ site_distance = self.config["site"]["distance"] @@ -189,7 +188,8 @@ def setup_simulation_without_feeders(self, **kwargs): def setup_simulation_with_feeders(self, **kwargs): """ - Sets up infrastructure for turbine installation using feeder barges. + Creates the infrastructure for turbine installation using feeder + barges. """ site_distance = self.config["site"]["distance"] @@ -236,9 +236,7 @@ def setup_simulation_with_feeders(self, **kwargs): ) def initialize_wtiv(self): - """ - Initializes the WTIV simulation object and the onboard vessel storage. - """ + """Creates the WTIV simulation object and its onboard storage.""" wtiv_specs = self.config.get("wtiv", None) name = wtiv_specs.get("name", "WTIV") @@ -252,16 +250,14 @@ def initialize_wtiv(self): self.wtiv = wtiv def initialize_feeders(self): - """ - Initializes feeder barge objects. - """ + """Initializes feeder barge objects.""" number = self.config.get("num_feeders", None) feeder_specs = self.config.get("feeder", None) self.feeders = [] for n in range(number): - name = "Feeder {}".format(n) + name = f"Feeder {n}" feeder = self.initialize_vessel(name, feeder_specs) self.env.register(feeder) @@ -274,7 +270,8 @@ def initialize_feeders(self): def initialize_queue(self): """ Initializes the queue, modeled as a ``SimPy.Resource`` that feeders - join at site. This limits the simulation to one active feeder at a time. + join at site. This limits the simulation to one active feeder at a + time. """ self.active_feeder = simpy.Resource(self.env, capacity=1) @@ -296,7 +293,7 @@ def detailed_output(self): **self.agent_efficiencies, **self.get_max_cargo_mass_utilzations(transport_vessels), **self.get_max_deck_space_utilzations(transport_vessels), - } + }, } return outputs @@ -326,8 +323,11 @@ def solo_install_monopiles(vessel, port, distance, monopiles, **kwargs): if vessel.at_port: try: # Get substructure + transition piece from port - yield get_list_of_items_from_port_wait( - vessel, port, component_list, **kwargs + yield get_list_of_items_from_port( + vessel, + port, + component_list, + **kwargs, ) except ItemNotFound: @@ -335,7 +335,7 @@ def solo_install_monopiles(vessel, port, distance, monopiles, **kwargs): # the job is done if not vessel.storage.items: vessel.submit_debug_log( - message="Item not found. Shutting down." + message="Item not found. Shutting down.", ) break @@ -350,7 +350,9 @@ def solo_install_monopiles(vessel, port, distance, monopiles, **kwargs): if vessel.storage.items: # Prep for monopile install yield prep_for_site_operations( - vessel, survey_required=True, **kwargs + vessel, + survey_required=True, + **kwargs, ) # Get monopile from internal storage @@ -413,12 +415,16 @@ def install_monopiles_from_queue(wtiv, queue, monopiles, distance, **kwargs): # Prep for monopile install yield prep_for_site_operations( - wtiv, survey_required=True, **kwargs + wtiv, + survey_required=True, + **kwargs, ) # Get monopile monopile = yield wtiv.get_item_from_storage( - "Monopile", vessel=queue.vessel, **kwargs + "Monopile", + vessel=queue.vessel, + **kwargs, ) yield upend_monopile(wtiv, monopile.length, **kwargs) @@ -441,7 +447,11 @@ def install_monopiles_from_queue(wtiv, queue, monopiles, distance, **kwargs): start = wtiv.env.now yield queue.activate delay_time = wtiv.env.now - start - wtiv.submit_action_log("Delay", delay_time, location="Site") + wtiv.submit_action_log( + "Delay: Not enough vessels for monopiles", + delay_time, + location="Site", + ) # Transit to port wtiv.at_site = False diff --git a/ORBIT/phases/install/mooring_install/mooring.py b/ORBIT/phases/install/mooring_install/mooring.py index 3b3573b9..d9a86d7d 100644 --- a/ORBIT/phases/install/mooring_install/mooring.py +++ b/ORBIT/phases/install/mooring_install/mooring.py @@ -8,7 +8,7 @@ from marmot import process -from ORBIT.core import Cargo, Vessel +from ORBIT.core import Cargo from ORBIT.core.logic import position_onsite, get_list_of_items_from_port from ORBIT.core.defaults import process_times as pt from ORBIT.phases.install import InstallPhase @@ -75,7 +75,12 @@ def setup_simulation(self, **kwargs): self.anchor_cost = self.config["mooring_system"]["anchor_cost"] install_mooring_systems( - self.vessel, self.port, distance, depth, self.num_systems, **kwargs + self.vessel, + self.port, + distance, + depth, + self.num_systems, + **kwargs, ) @property @@ -142,7 +147,10 @@ def install_mooring_systems(vessel, port, distance, depth, systems, **kwargs): try: # Get mooring systems from port. yield get_list_of_items_from_port( - vessel, port, ["MooringSystem"], **kwargs + vessel, + port, + ["MooringSystem"], + **kwargs, ) except ItemNotFound: @@ -171,7 +179,10 @@ def install_mooring_systems(vessel, port, distance, depth, systems, **kwargs): yield position_onsite(vessel, **kwargs) yield perform_mooring_site_survey(vessel, **kwargs) yield install_mooring_anchor( - vessel, depth, system.anchor_type, **kwargs + vessel, + depth, + system.anchor_type, + **kwargs, ) yield install_mooring_line(vessel, depth, **kwargs) @@ -243,12 +254,15 @@ def install_mooring_anchor(vessel, depth, _type, **kwargs): else: raise ValueError( - f"Mooring System Anchor Type: {_type} not recognized." + f"Mooring System Anchor Type: {_type} not recognized.", ) install_time = fixed + 0.005 * depth yield vessel.task_wrapper( - task, install_time, constraints=vessel.transit_limits, **kwargs + task, + install_time, + constraints=vessel.transit_limits, + **kwargs, ) @@ -280,7 +294,7 @@ def install_mooring_line(vessel, depth, **kwargs): class MooringSystem(Cargo): - """Mooring System Cargo""" + """Mooring System Cargo.""" def __init__( self, @@ -290,7 +304,7 @@ def __init__( anchor_type="Suction Pile", **kwargs, ): - """Creates an instance of MooringSystem""" + """Creates an instance of MooringSystem.""" self.num_lines = num_lines self.line_mass = line_mass @@ -319,26 +333,3 @@ def release(**kwargs): """Dummy method to work with `get_list_of_items_from_port`.""" return "", 0 - - def anchor_install_time(self, depth): - """ - Returns time to install anchor. Varies by depth. - - Parameters - ---------- - depth : int | float - Depth at site (m). - """ - - if self.anchor_type == "Suction Pile": - fixed = 11 - - elif self.anchor_type == "Drag Embedment": - fixed = 5 - - else: - raise ValueError( - f"Mooring System Anchor Type: {self.anchor_type} not recognized." - ) - - return fixed + 0.005 * depth diff --git a/ORBIT/phases/install/oss_install/common.py b/ORBIT/phases/install/oss_install/common.py index f90128ac..2e0db712 100644 --- a/ORBIT/phases/install/oss_install/common.py +++ b/ORBIT/phases/install/oss_install/common.py @@ -9,7 +9,7 @@ from marmot import process from ORBIT.core import Cargo -from ORBIT.core.logic import stabilize, jackdown_if_required +from ORBIT.core.logic import jackdown_if_required from ORBIT.core.defaults import process_times as pt from ORBIT.phases.install.monopile_install.common import ( bolt_transition_piece, @@ -19,12 +19,10 @@ class Topside(Cargo): - """Topside Cargo""" + """Topside Cargo.""" def __init__(self, mass=None, deck_space=None, **kwargs): - """ - Creates an instance of `Topside`. - """ + """Creates an instance of `Topside`.""" self.mass = mass self.deck_space = deck_space @@ -49,7 +47,7 @@ def release(**kwargs): class Jacket(Cargo): - """Jacket Cargo""" + """Jacket Cargo.""" pass @@ -74,7 +72,9 @@ def lift_topside(vessel, **kwargs): lift_time = lift_height / crane_rate yield vessel.task_wrapper( - "Lift Topside", lift_time, constraints=vessel.operational_limits + "Lift Topside", + lift_time, + constraints=vessel.operational_limits, ) @@ -101,7 +101,9 @@ def attach_topside(vessel, **kwargs): attach_time = kwargs.get(key, pt[key]) yield vessel.task_wrapper( - "Attach Topside", attach_time, constraints=vessel.operational_limits + "Attach Topside", + attach_time, + constraints=vessel.operational_limits, ) @@ -109,6 +111,7 @@ def attach_topside(vessel, **kwargs): def install_topside(vessel, topside, **kwargs): """ Substation topside installation process. + Subprocesses: - Crane reequip - Lift topside diff --git a/ORBIT/phases/install/oss_install/floating.py b/ORBIT/phases/install/oss_install/floating.py index c2d1ca2b..c30ad1f5 100644 --- a/ORBIT/phases/install/oss_install/floating.py +++ b/ORBIT/phases/install/oss_install/floating.py @@ -6,7 +6,9 @@ __email__ = "jake.nunemaker@nrel.gov" -from marmot import Agent, process, le +from warnings import warn + +from marmot import Agent, le, process from marmot._exceptions import AgentNotRegistered from ORBIT.core import WetStorage @@ -25,7 +27,7 @@ class FloatingSubstationInstallation(InstallPhase): and tow-out processes. """ - phase = "Offshore Substation Installation" + phase = "Offshore Floating Substation Installation" capex_category = "Offshore Substation" #: @@ -38,12 +40,18 @@ class FloatingSubstationInstallation(InstallPhase): "attach_time": "int | float (optional, default: 24)", }, "offshore_substation_substructure": { - "type": "Floating", + "type": "str", "takt_time": "int | float (optional, default: 0)", "unit_cost": "USD", - "mooring_cost": "USD", "towing_speed": "int | float (optional, default: 6 km/h)", }, + "mooring_system": { + "num_lines", + "int", + "line_cost", + "USD", + "anchor_cost", + }, } def __init__(self, config, weather=None, **kwargs): @@ -64,15 +72,10 @@ def __init__(self, config, weather=None, **kwargs): self.config = self.validate_config(config) self.initialize_port() - self.setup_simulation(**kwargs) + self.setup_simulation() - def setup_simulation(self, **kwargs): - """ - Initializes required objects for simulation. - - Creates port - - - Creates support vessel + towing vessels - """ + def setup_simulation(self): + """Initializes required objects for simulation.""" self.distance = self.config["site"]["distance"] self.num_substations = self.config["num_substations"] @@ -83,17 +86,24 @@ def setup_simulation(self, **kwargs): @property def system_capex(self): """Returns total procurement cost of the substation substructures, - topsides and mooring.""" + topsides and mooring. + """ topside = self.config["offshore_substation_topside"]["unit_cost"] substructure = self.config["offshore_substation_substructure"][ "unit_cost" ] - mooring = self.config["offshore_substation_substructure"][ - "mooring_cost" - ] + # mooring system + num_mooring_lines = self.config["mooring_system"]["num_lines"] + line_cost = self.config["mooring_system"]["line_cost"] + anchor_cost = self.config["mooring_system"]["anchor_cost"] + mooring_system_for_each_oss = num_mooring_lines * ( + line_cost + anchor_cost + ) - return self.num_substations * (topside + substructure + mooring) + return self.num_substations * ( + topside + substructure + mooring_system_for_each_oss + ) def initialize_substructure_production(self): """ @@ -101,6 +111,17 @@ def initialize_substructure_production(self): quayside. """ + substructure_type = self.config["offshore_substation_substructure"][ + "type" + ] + + if substructure_type != "Floating": + warn( + f"Offshore substation substructure is {substructure_type}" + " and should be 'Floating'.\n", + stacklevel=1, + ) + self.wet_storage = WetStorage(self.env, float("inf")) takt_time = self.config["offshore_substation_substructure"].get( "takt_time", 0 @@ -111,7 +132,11 @@ def initialize_substructure_production(self): to_assemble = [1] * self.num_substations self.assembly_line = SubstationAssemblyLine( - to_assemble, takt_time, attach_time, self.wet_storage, 1 + to_assemble, + takt_time, + attach_time, + self.wet_storage, + 1, ) self.env.register(self.assembly_line) @@ -144,13 +169,18 @@ def initialize_installation_vessel(self): @property def detailed_output(self): - + """Returns an empty dictionary.""" return {} @process def install_floating_substations( - vessel, feed, distance, towing_speed, depth, number + vessel, + feed, + distance, + towing_speed, + depth, + number, ): """ Process steps that installation vessel at site performs to install floating @@ -175,13 +205,12 @@ def install_floating_substations( travel_time = distance / towing_speed for _ in range(number): - start = vessel.env.now yield feed.get() delay = vessel.env.now - start if delay > 0: vessel.submit_action_log( - "Delay: Waiting on Completed Assembly", delay + "Delay: Waiting on Substation Assembly", delay ) yield vessel.task( @@ -196,7 +225,7 @@ def install_floating_substations( constraints={"windspeed": le(15), "waveheight": le(2.5)}, ) - for _ in range (3): + for _ in range(3): yield perform_mooring_site_survey(vessel) yield install_mooring_anchor(vessel, depth, "Suction Pile") yield install_mooring_line(vessel, depth) @@ -215,6 +244,12 @@ def install_floating_substations( yield vessel.transit(distance) + # TODO: Revise this to work with multiple substations + vessel.submit_debug_log( + message="Substation installation complete!", + progress="Offshore Substation", + ) + class SubstationAssemblyLine(Agent): """Substation Assembly Line Class.""" @@ -281,9 +316,7 @@ def submit_action_log(self, action, duration, **kwargs): @process def assemble_substructure(self): - """ - Simulation process for assembling a substructure. - """ + """Simulation process for assembling a substructure.""" yield self.task("Substation Substructure Assembly", self.takt_time) yield self.task("Attach Topside", self.attach_time) @@ -294,7 +327,9 @@ def assemble_substructure(self): delay = self.env.now - start if delay > 0: - self.submit_action_log("Delay: No Wet Storage Available", delay) + self.submit_action_log( + "Delay: No Substructure Storage Available", delay + ) @process def start(self): diff --git a/ORBIT/phases/install/oss_install/standard.py b/ORBIT/phases/install/oss_install/standard.py index 04038af9..54e459c2 100644 --- a/ORBIT/phases/install/oss_install/standard.py +++ b/ORBIT/phases/install/oss_install/standard.py @@ -9,7 +9,6 @@ import simpy from marmot import process -from ORBIT.core import Vessel from ORBIT.core.logic import shuttle_items_to_queue, prep_for_site_operations from ORBIT.phases.install import InstallPhase from ORBIT.phases.install.monopile_install.common import ( @@ -48,7 +47,7 @@ class OffshoreSubstationInstallation(InstallPhase): "unit_cost": "USD", }, "offshore_substation_substructure": { - "type": "Monopile", + "type": "str", "deck_space": "m2", "mass": "t", "length": "m", @@ -80,7 +79,7 @@ def __init__(self, config, weather=None, **kwargs): def system_capex(self): """Returns procurement CapEx of the offshore substations.""" - return self.config["num_substations"] * ( + return self.num_substations * ( self.config["offshore_substation_topside"]["unit_cost"] + self.config["offshore_substation_substructure"]["unit_cost"] ) @@ -88,6 +87,7 @@ def system_capex(self): def setup_simulation(self, **kwargs): """ Initializes required objects for simulation. + - Creates port + crane - Creates monopile and topside - Creates heavy lift vessel and feeder @@ -124,9 +124,7 @@ def setup_simulation(self, **kwargs): ) def initialize_topsides_and_substructures(self): - """ - Creates offshore substation objects at port. - """ + """Creates offshore substation objects at port.""" top = Topside(**self.config["offshore_substation_topside"]) sub = Monopile(**self.config["offshore_substation_substructure"]) @@ -137,9 +135,7 @@ def initialize_topsides_and_substructures(self): self.port.put(top) def initialize_oss_install_vessel(self): - """ - Creates the offshore substation installation vessel object. - """ + """Creates the offshore substation installation vessel object.""" oss_vessel_specs = self.config.get("oss_install_vessel", None) name = oss_vessel_specs.get("name", "Heavy Lift Vessel") @@ -153,9 +149,7 @@ def initialize_oss_install_vessel(self): self.oss_vessel = oss_vessel def initialize_feeders(self): - """ - Initializes feeder barge objects. - """ + """Initializes feeder barge objects.""" number = self.config.get("num_feeders", 1) feeder_specs = self.config.get("feeder", None) @@ -163,7 +157,7 @@ def initialize_feeders(self): self.feeders = [] for n in range(number): # TODO: Add in option for named feeders. - name = "Feeder {}".format(n) + name = f"Feeder {n}" feeder = self.initialize_vessel(name, feeder_specs) self.env.register(feeder) @@ -198,7 +192,7 @@ def detailed_output(self): **self.agent_efficiencies, **self.get_max_cargo_mass_utilzations(transport_vessels), **self.get_max_deck_space_utilzations(transport_vessels), - } + }, } return outputs @@ -235,12 +229,16 @@ def install_oss_from_queue(vessel, queue, substations, distance, **kwargs): # Prep for monopile install yield prep_for_site_operations( - vessel, survey_required=True, **kwargs + vessel, + survey_required=True, + **kwargs, ) # Get monopile monopile = yield vessel.get_item_from_storage( - "Monopile", vessel=queue.vessel, **kwargs + "Monopile", + vessel=queue.vessel, + **kwargs, ) yield upend_monopile(vessel, monopile.length, **kwargs) @@ -248,7 +246,10 @@ def install_oss_from_queue(vessel, queue, substations, distance, **kwargs): # Get topside topside = yield vessel.get_item_from_storage( - "Topside", vessel=queue.vessel, release=True, **kwargs + "Topside", + vessel=queue.vessel, + release=True, + **kwargs, ) yield install_topside(vessel, topside, **kwargs) n += 1 @@ -257,7 +258,11 @@ def install_oss_from_queue(vessel, queue, substations, distance, **kwargs): start = vessel.env.now yield queue.activate delay_time = vessel.env.now - start - vessel.submit_action_log("Delay", delay_time, location="Site") + vessel.submit_action_log( + "Delay: Not enough vessels for oss", + delay_time, + location="Site", + ) # Transit to port vessel.at_site = False diff --git a/ORBIT/phases/install/quayside_assembly_tow/common.py b/ORBIT/phases/install/quayside_assembly_tow/common.py index 252965b7..b62624ba 100644 --- a/ORBIT/phases/install/quayside_assembly_tow/common.py +++ b/ORBIT/phases/install/quayside_assembly_tow/common.py @@ -1,5 +1,6 @@ """Common processes and cargo types for quayside assembly and tow-out -installations""" +installations. +""" __author__ = "Jake Nunemaker" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" @@ -7,7 +8,7 @@ __email__ = "jake.nunemaker@nrel.gov" -from marmot import Agent, le, process +from marmot import Agent, le, false, process from marmot._exceptions import AgentNotRegistered @@ -82,9 +83,7 @@ def submit_action_log(self, action, duration, **kwargs): @process def assemble_substructure(self): - """ - Simulation process for assembling a substructure. - """ + """Simulation process for assembling a substructure.""" yield self.task("Substructure Assembly", self.time) substructure = Substructure() @@ -94,7 +93,9 @@ def assemble_substructure(self): delay = self.env.now - start if delay > 0: - self.submit_action_log("Delay: No Wet Storage Available", delay) + self.submit_action_log( + "Delay: No Substructure Storage Available", delay + ) @process def start(self): @@ -181,7 +182,7 @@ def start(self): while True: start = self.env.now - sub = yield self.feed.get() + _ = yield self.feed.get() delay = self.env.now - start if delay > 0: @@ -213,6 +214,8 @@ def assemble_turbine(self): yield self.mechanical_completion() + yield self.electrical_completion() + start = self.env.now yield self.target.put(1) delay = self.env.now - start @@ -235,7 +238,7 @@ def move_substructure(self): TODO: Move to dynamic process involving tow groups. """ - yield self.task("Move Substructure", 8) + yield self.task("Move Substructure", 8, {"port_in_use": false()}) @process def prepare_for_assembly(self): @@ -255,7 +258,7 @@ def lift_and_attach_tower_section(self): yield self.task( "Lift and Attach Tower Section", - 12, + 4, constraints={"windspeed": le(15)}, ) @@ -267,7 +270,9 @@ def lift_and_attach_nacelle(self): """ yield self.task( - "Lift and Attach Nacelle", 7, constraints={"windspeed": le(15)} + "Lift and Attach Nacelle", + 12, + constraints={"windspeed": le(15)}, ) @process @@ -278,7 +283,9 @@ def lift_and_attach_blade(self): """ yield self.task( - "Lift and Attach Blade", 3.5, constraints={"windspeed": le(12)} + "Lift and Attach Blade", + 3.5, + constraints={"windspeed": le(12)}, ) @process @@ -289,14 +296,31 @@ def mechanical_completion(self): """ yield self.task( - "Mechanical Completion", 24, constraints={"windspeed": le(18)} + "Mechanical Completion", + 24, + constraints={"windspeed": le(18)}, + ) + + @process + def electrical_completion(self): + """ + Task representing time associated with performing electrical completion + work at quayside, including precommissioning. Assumes the tower is + delivered to port in multiple sections, requiring cable pull-in after + tower assembly. + """ + + yield self.task( + "Electrical Completion", + 72, + constraints={"windspeed": le(18)}, ) class TowingGroup(Agent): """Class to represent an arbitrary group of towing vessels.""" - def __init__(self, vessel_specs, num=1): + def __init__(self, vessel_specs, ahts_vessel_specs=None, num=1): """ Creates an instance of TowingGroup. @@ -305,13 +329,37 @@ def __init__(self, vessel_specs, num=1): vessel_specs : dict Specs for the individual vessels used in the towing group. Currently restricted to one vessel specification per group. + num : int + Towing group number + ahts_vessel_specs : dict + Specs for the anchor hndling tug vessel. """ super().__init__(f"Towing Group {num}") self._specs = vessel_specs - self.day_rate = self._specs["vessel_specs"]["day_rate"] + self.day_rate_towing = self._specs["vessel_specs"]["day_rate"] + self.day_rate_anchor = 0.0 + self.max_waveheight = self._specs["transport_specs"]["max_waveheight"] + self.max_windspeed = self._specs["transport_specs"]["max_windspeed"] self.transit_speed = self._specs["transport_specs"]["transit_speed"] + if ahts_vessel_specs is not None: + self.day_rate_anchor = ahts_vessel_specs["vessel_specs"][ + "day_rate" + ] + self.max_waveheight = min( + vessel_specs["transport_specs"]["max_waveheight"], + ahts_vessel_specs["transport_specs"]["max_waveheight"], + ) + self.max_windspeed = min( + vessel_specs["transport_specs"]["max_windspeed"], + ahts_vessel_specs["transport_specs"]["max_windspeed"], + ) + self.transit_speed = min( + vessel_specs["transport_specs"]["transit_speed"], + ahts_vessel_specs["transport_specs"]["transit_speed"], + ) + def initialize(self): """Initializes the towing group.""" @@ -319,7 +367,13 @@ def initialize(self): @process def group_task( - self, name, duration, num_vessels, constraints={}, **kwargs + self, + name, + duration, + num_vessels, + num_ahts_vessels=0, + constraints=None, + **kwargs, ): """ Submits a group task with any number of towing vessels. @@ -333,9 +387,13 @@ def group_task( Rounded up to the nearest int. num_vessels : int Number of individual towing vessels needed for the operation. + num_ahts_vessels : int + Number of anchor handling tug vessels used for the operation. """ - + if constraints is None: + constraints = {} kwargs = {**kwargs, "num_vessels": num_vessels} + kwargs = {**kwargs, "num_ahts_vessels": num_ahts_vessels} yield self.task(name, duration, constraints=constraints, **kwargs) def operation_cost(self, hours, **kwargs): @@ -352,8 +410,16 @@ def operation_cost(self, hours, **kwargs): """ mult = kwargs.get("cost_multiplier", 1.0) - vessels = kwargs.get("num_vessels", 1) - return (self.day_rate / 24) * vessels * hours * mult + num_towing_vessels = kwargs.get("num_vessels", 1) + num_ahts_vessels = kwargs.get("num_ahts_vessels", 0) + return ( + ( + (self.day_rate_towing / 24) * num_towing_vessels + + (self.day_rate_anchor / 24) * num_ahts_vessels + ) + * hours + * mult + ) def submit_action_log(self, action, duration, **kwargs): """ diff --git a/ORBIT/phases/install/quayside_assembly_tow/gravity_base.py b/ORBIT/phases/install/quayside_assembly_tow/gravity_base.py index 4cbd97f6..ce59c373 100644 --- a/ORBIT/phases/install/quayside_assembly_tow/gravity_base.py +++ b/ORBIT/phases/install/quayside_assembly_tow/gravity_base.py @@ -5,11 +5,12 @@ __maintainer__ = "Jake Nunemaker" __email__ = "jake.nunemaker@nrel.gov" +from warnings import warn import simpy from marmot import le, process -from ORBIT.core import Vessel, WetStorage +from ORBIT.core import WetStorage from ORBIT.phases.install import InstallPhase from .common import TowingGroup, TurbineAssemblyLine, SubstructureAssemblyLine @@ -26,11 +27,13 @@ class GravityBasedInstallation(InstallPhase): #: expected_config = { - "support_vessel": "str", + "support_vessel": "str, (optional)", + "ahts_vessel": "str", "towing_vessel": "str", "towing_vessel_groups": { "towing_vessels": "int", - "station_keeping_vessels": "int", + "station_keeping_vessels": "int (optional)", + "ahts_vessels": "int (optional, default: 1)", "num_groups": "int (optional)", }, "substructure": { @@ -71,12 +74,7 @@ def __init__(self, config, weather=None, **kwargs): self.setup_simulation(**kwargs) def setup_simulation(self, **kwargs): - """ - Sets up simulation infrastructure. - - Initializes substructure production - - Initializes turbine assembly processes - - Initializes towing groups - """ + """Readies the installation processes.""" self.distance = self.config["site"]["distance"] self.num_turbines = self.config["plant"]["num_turbines"] @@ -96,9 +94,10 @@ def system_capex(self): def initialize_substructure_production(self): """ - Initializes the production of substructures at port. The number of - independent assembly lines and production time associated with a - substructure can be configured with the following parameters: + Initializes the production of substructures at port. + + The number of independent assembly lines and production time associated + with a substructure can be configured with the following parameters: - self.config["substructure"]["takt_time"] - self.config["port"]["sub_assembly_lines"] @@ -130,7 +129,10 @@ def initialize_substructure_production(self): self.sub_assembly_lines = [] for i in range(lines): a = SubstructureAssemblyLine( - to_assemble, time, self.wet_storage, i + 1 + to_assemble, + time, + self.wet_storage, + i + 1, ) self.env.register(a) @@ -139,8 +141,10 @@ def initialize_substructure_production(self): def initialize_turbine_assembly(self): """ - Initializes turbine assembly lines. The number of independent lines - can be configured with the following parameters: + Initializes turbine assembly lines. + + The number of independent lines can be configured with the following + parameters: - self.config["port"]["turb_assembly_lines"] """ @@ -163,7 +167,10 @@ def initialize_turbine_assembly(self): self.turbine_assembly_lines = [] for i in range(lines): a = TurbineAssemblyLine( - self.wet_storage, self.assembly_storage, turbine, i + 1 + self.wet_storage, + self.assembly_storage, + turbine, + i + 1, ) self.env.register(a) @@ -184,7 +191,7 @@ def initialize_towing_groups(self, **kwargs): towing_speed = self.config["substructure"].get("towing_speed", 6) for i in range(num_groups): - g = TowingGroup(vessel, num=i + 1) + g = TowingGroup(vessel, None, num=i + 1) self.env.register(g) g.initialize() self.installation_groups.append(g) @@ -211,20 +218,49 @@ def initialize_queue(self): def initialize_support_vessel(self, **kwargs): """ + ** The support vessel is deprecated and an AHTS + vessel will perform the installation with the towing group. + + # TODO: determine if the installation process for GBF is still + sound. + Initializes Multi-Purpose Support Vessel to perform installation processes at site. """ - specs = self.config["support_vessel"] - vessel = self.initialize_vessel("Multi-Purpose Support Vessel", specs) + specs = self.config.get("support_vessel", None) + + if specs is not None: + warn( + "support_vessel will be deprecated and replaced with" + " towing_vessels and ahts_vessel in the towing groups.\n", + DeprecationWarning, + stacklevel=2, + ) + + specs = self.config["ahts_vessel"] + vessel = self.initialize_vessel("Multi-Purpose AHTS Vessel", specs) self.env.register(vessel) vessel.initialize(mobilize=False) self.support_vessel = vessel - station_keeping_vessels = self.config["towing_vessel_groups"][ - "station_keeping_vessels" - ] + station_keeping_vessels = self.config["towing_vessel_groups"].get( + "station_keeping_vessels", None + ) + + if station_keeping_vessels is not None: + warn( + "['towing_vessl_groups]['station_keeping_vessels']" + " will be deprecated and replaced with" + " ['towing_vessl_groups]['ahts_vessels'].\n", + DeprecationWarning, + stacklevel=2, + ) + + station_keeping_vessels = self.config["towing_vessel_groups"].get( + "ahts_vessels", 1 + ) install_gravity_base_foundations( self.support_vessel, @@ -237,7 +273,7 @@ def initialize_support_vessel(self, **kwargs): @property def detailed_output(self): - """""" + """Compiles the detailed installation phase outputs.""" return { "operational_delays": { @@ -256,11 +292,11 @@ def detailed_output(self): self.support_vessel: self.operational_delay( str(self.support_vessel) ), - } + }, } def operational_delay(self, name): - """""" + """Gathers the operational delays from the logs.""" actions = [a for a in self.env.actions if a["agent"] == name] delay = sum(a["duration"] for a in actions if "Delay" in a["action"]) @@ -270,7 +306,13 @@ def operational_delay(self, name): @process def transfer_gbf_substructures_from_storage( - group, feed, distance, queue, towing_vessels, towing_speed, **kwargs + group, + feed, + distance, + queue, + towing_vessels, + towing_speed, + **kwargs, ): """ Process logic for the towing vessel group. @@ -293,18 +335,21 @@ def transfer_gbf_substructures_from_storage( transit_time = distance / group.transit_speed while True: - start = group.env.now - assembly = yield feed.get() + _ = yield feed.get() delay = group.env.now - start if delay > 0: group.submit_action_log( - "Delay: No Completed Assemblies Available", delay + "Delay: No Completed Assemblies Available", + delay, + num_vessels=towing_vessels, ) yield group.group_task( - "Tow Substructure", towing_time, num_vessels=towing_vessels + "Tow Substructure", + towing_time, + num_vessels=towing_vessels, ) # At Site @@ -314,28 +359,40 @@ def transfer_gbf_substructures_from_storage( queue_time = group.env.now - queue_start if queue_time > 0: - group.submit_action_log("Queue", queue_time, location="Site") + group.submit_action_log( + "Queue", + queue_time, + location="Site", + num_vessels=towing_vessels, + ) queue.vessel = group - active_start = group.env.now + # active_start = group.env.now queue.activate.succeed() # Released by WTIV when objects are depleted group.release = group.env.event() yield group.release - active_time = group.env.now - active_start + # active_time = group.env.now - active_start queue.vessel = None queue.activate = group.env.event() yield group.group_task( - "Transit", transit_time, num_vessels=towing_vessels + "Transit", + transit_time, + num_vessels=towing_vessels, ) @process def install_gravity_base_foundations( - vessel, queue, distance, substructures, station_keeping_vessels, **kwargs + vessel, + queue, + distance, + substructures, + station_keeping_vessels, + **kwargs, ): """ Logic that a Multi-Purpose Support Vessel uses at site to complete the @@ -357,7 +414,6 @@ def install_gravity_base_foundations( n = 0 while n < substructures: if queue.vessel: - start = vessel.env.now if n == 0: vessel.mobilize() @@ -407,6 +463,10 @@ def install_gravity_base_foundations( delay_time = vessel.env.now - start if n != 0: - vessel.submit_action_log("Delay", delay_time, location="Site") + vessel.submit_action_log( + "Delay: Not enough vessels for gravity foundations", + delay_time, + location="Site", + ) yield vessel.transit(distance) diff --git a/ORBIT/phases/install/quayside_assembly_tow/moored.py b/ORBIT/phases/install/quayside_assembly_tow/moored.py index c38908b2..a550df78 100644 --- a/ORBIT/phases/install/quayside_assembly_tow/moored.py +++ b/ORBIT/phases/install/quayside_assembly_tow/moored.py @@ -6,10 +6,12 @@ __email__ = "jake.nunemaker@nrel.gov" +from warnings import warn + import simpy from marmot import le, process -from ORBIT.core import Vessel, WetStorage +from ORBIT.core import WetStorage from ORBIT.phases.install import InstallPhase from .common import TowingGroup, TurbineAssemblyLine, SubstructureAssemblyLine @@ -26,11 +28,13 @@ class MooredSubInstallation(InstallPhase): #: expected_config = { - "support_vessel": "str", + "support_vessel": "str, (optional)", + "ahts_vessel": "str", "towing_vessel": "str", "towing_vessel_groups": { "towing_vessels": "int", - "station_keeping_vessels": "int", + "station_keeping_vessels": "int (optional)", + "ahts_vessels": "int (optional, default: 1)", "num_groups": "int (optional)", }, "substructure": { @@ -68,11 +72,12 @@ def __init__(self, config, weather=None, **kwargs): config = self.initialize_library(config, **kwargs) self.config = self.validate_config(config) - self.setup_simulation(**kwargs) + self.setup_simulation() - def setup_simulation(self, **kwargs): + def setup_simulation(self): """ Sets up simulation infrastructure. + - Initializes substructure production - Initializes turbine assembly processes - Initializes towing groups @@ -96,9 +101,10 @@ def system_capex(self): def initialize_substructure_production(self): """ - Initializes the production of substructures at port. The number of - independent assembly lines and production time associated with a - substructure can be configured with the following parameters: + Initializes the production of substructures at port. + + The number of independent assembly lines and production time associated + with a substructure can be configured with the following parameters: - self.config["substructure"]["takt_time"] - self.config["port"]["sub_assembly_lines"] @@ -129,7 +135,10 @@ def initialize_substructure_production(self): self.sub_assembly_lines = [] for i in range(lines): a = SubstructureAssemblyLine( - to_assemble, time, self.wet_storage, i + 1 + to_assemble, + time, + self.wet_storage, + i + 1, ) self.env.register(a) @@ -138,7 +147,9 @@ def initialize_substructure_production(self): def initialize_turbine_assembly(self): """ - Initializes turbine assembly lines. The number of independent lines + Initializes turbine assembly lines. + + The number of independent lines can be configured with the following parameters: - self.config["port"]["turb_assembly_lines"] @@ -162,7 +173,10 @@ def initialize_turbine_assembly(self): self.turbine_assembly_lines = [] for i in range(lines): a = TurbineAssemblyLine( - self.wet_storage, self.assembly_storage, turbine, i + 1 + self.wet_storage, + self.assembly_storage, + turbine, + i + 1, ) self.env.register(a) @@ -177,24 +191,38 @@ def initialize_towing_groups(self, **kwargs): self.installation_groups = [] - vessel = self.config["towing_vessel"] + towing_vessel = self.config["towing_vessel"] num_groups = self.config["towing_vessel_groups"].get("num_groups", 1) - towing = self.config["towing_vessel_groups"]["towing_vessels"] + num_towing = self.config["towing_vessel_groups"]["towing_vessels"] towing_speed = self.config["substructure"].get("towing_speed", 6) + ahts_vessel = self.config.get("ahts_vessel", None) + num_ahts = self.config["towing_vessel_groups"].get("ahts_vessels", 1) + + if ahts_vessel is None: + warn( + "No ['ahts_vessel'] specified. num_ahts set to 0." + " ahts_vessel will be required in future releases.\n", + stacklevel=1, + ) + num_ahts = 0 + + remaining_substructures = [1] * self.num_turbines + for i in range(num_groups): - g = TowingGroup(vessel, num=i + 1) + g = TowingGroup(towing_vessel, ahts_vessel, i + 1) self.env.register(g) g.initialize() self.installation_groups.append(g) - transfer_moored_substructures_from_storage( + transfer_install_moored_substructures_from_storage( g, self.assembly_storage, self.distance, - self.active_group, - towing, + num_towing, + num_ahts, towing_speed, + remaining_substructures, **kwargs, ) @@ -208,35 +236,57 @@ def initialize_queue(self): self.active_group.vessel = None self.active_group.activate = self.env.event() - def initialize_support_vessel(self, **kwargs): + def initialize_support_vessel(self): """ + ** DEPRECATED ** The support vessel is deprecated and an AHTS + vessel will perform the installation with the towing group. + Initializes Multi-Purpose Support Vessel to perform installation processes at site. """ - specs = self.config["support_vessel"] - vessel = self.initialize_vessel("Multi-Purpose Support Vessel", specs) + specs = self.config.get("support_vessel", None) + + if specs is not None: + warn( + "support_vessel will be deprecated and replaced with" + " towing_vessels and ahts_vessel in the towing groups.\n", + DeprecationWarning, + stacklevel=2, + ) - self.env.register(vessel) - vessel.initialize(mobilize=False) - self.support_vessel = vessel + # vessel = self.initialize_vessel("Multi-Purpose Support Vessel", + # specs) - station_keeping_vessels = self.config["towing_vessel_groups"][ - "station_keeping_vessels" - ] + # self.env.register(vessel) + # vessel.initialize(mobilize=False) + # self.support_vessel = vessel - install_moored_substructures( - self.support_vessel, - self.active_group, - self.distance, - self.num_turbines, - station_keeping_vessels, - **kwargs, + station_keeping_vessels = self.config["towing_vessel_groups"].get( + "station_keeping_vessels", None ) + if station_keeping_vessels is not None: + warn( + "['towing_vessl_groups]['station_keeping_vessels']" + " will be deprecated and replaced with" + " ['towing_vessl_groups]['ahts_vessels'].\n", + DeprecationWarning, + stacklevel=2, + ) + + # install_moored_substructures( + # self.support_vessel, + # self.active_group, + # self.distance, + # self.num_turbines, + # station_keeping_vessels, + # **kwargs, + # ) + @property def detailed_output(self): - """""" + """Return detailed outputs.""" return { "operational_delays": { @@ -252,14 +302,14 @@ def detailed_output(self): k: self.operational_delay(str(k)) for k in self.installation_groups }, - self.support_vessel: self.operational_delay( - str(self.support_vessel) - ), - } + # self.support_vessel: self.operational_delay( + # str(self.support_vessel) + # ), + }, } def operational_delay(self, name): - """""" + """Return operational delays.""" actions = [a for a in self.env.actions if a["agent"] == name] delay = sum(a["duration"] for a in actions if "Delay" in a["action"]) @@ -268,11 +318,50 @@ def operational_delay(self, name): @process -def transfer_moored_substructures_from_storage( - group, feed, distance, queue, towing_vessels, towing_speed, **kwargs +def transfer_install_moored_substructures_from_storage( + group, + feed, + distance, + towing_vessels, + ahts_vessels, + towing_speed, + remaining_substructures, + **kwargs, ): """ - Process logic for the towing vessel group. + Trigger the substructure installtions. Shuts down after + self.remaining_substructures is empty. + """ + + while True: + try: + _ = remaining_substructures.pop(0) + yield towing_group_actions( + group, + feed, + distance, + towing_vessels, + ahts_vessels, + towing_speed, + **kwargs, + ) + + except IndexError: + break + + +@process +def towing_group_actions( + group, + feed, + distance, + towing_vessels, + ahts_vessels, + towing_speed, +): + """ + Process logic for the towing vessel group. Assumes there is an + anchor tug boat with each group. Parameters ---------- @@ -284,69 +373,111 @@ def transfer_moored_substructures_from_storage( Distance from port to site. towing_vessels : int Number of vessels to use for towing to site. + ahts_vessels : int + Number of anchor handling tug vessels. towing_speed : int | float - Configured towing speed (km/h) + Configured towing speed (km/h). """ towing_time = distance / towing_speed transit_time = distance / group.transit_speed - while True: - - start = group.env.now - assembly = yield feed.get() - delay = group.env.now - start - - if delay > 0: - group.submit_action_log( - "Delay: No Completed Assemblies Available", delay - ) - - yield group.group_task( - "Ballast to Towing Draft", - 6, - num_vessels=towing_vessels, - constraints={"windspeed": le(15), "waveheight": le(2.5)}, - ) + start = group.env.now + _ = yield feed.get() + delay = group.env.now - start - yield group.group_task( - "Tow Substructure", - towing_time, + if delay > 0: + group.submit_action_log( + "Delay: No Completed Turbine Assemblies", + delay, num_vessels=towing_vessels, - constraints={"windspeed": le(15), "waveheight": le(2.5)}, + num_ahts_vessels=ahts_vessels, ) - # At Site - with queue.request() as req: - queue_start = group.env.now - yield req - - queue_time = group.env.now - queue_start - if queue_time > 0: - group.submit_action_log("Queue", queue_time, location="Site") - - queue.vessel = group - active_start = group.env.now - queue.activate.succeed() - - # Released by WTIV when objects are depleted - group.release = group.env.event() - yield group.release - active_time = group.env.now - active_start - - queue.vessel = None - queue.activate = group.env.event() - - yield group.group_task( - "Transit", transit_time, num_vessels=towing_vessels - ) + yield group.group_task( + "Ballast to Towing Draft", + 6, + num_vessels=towing_vessels, + num_ahts_vessels=ahts_vessels, + constraints={ + "windspeed": le(group.max_windspeed), + "waveheight": le(group.max_waveheight), + }, + ) + + yield group.group_task( + "Tow Substructure", + towing_time, + num_vessels=towing_vessels, + num_ahts_vessels=ahts_vessels, + constraints={ + "windspeed": le(group.max_windspeed), + "waveheight": le(group.max_waveheight), + }, + ) + + # At Site + yield group.group_task( + "Position Substructure", + 2, + num_vessels=towing_vessels, + num_ahts_vessels=ahts_vessels, + constraints={"windspeed": le(15), "waveheight": le(2.5)}, + ) + + yield group.group_task( + "Ballast to Operational Draft", + 6, + num_vessels=towing_vessels, + num_ahts_vessels=ahts_vessels, + constraints={"windspeed": le(15), "waveheight": le(2.5)}, + ) + + yield group.group_task( + "Connect Mooring Lines, Pre-tension and pre-stretch", + 20, + num_vessels=towing_vessels, + num_ahts_vessels=ahts_vessels, + suspendable=True, + constraints={"windspeed": le(15), "waveheight": le(2.5)}, + ) + + yield group.group_task( + "Check Mooring Lines", + 6, + num_vessels=towing_vessels, + num_ahts_vessels=ahts_vessels, + suspendable=True, + constraints={"windspeed": le(15), "waveheight": le(2.5)}, + ) + + group.submit_debug_log(progress="Substructure") + group.submit_debug_log(progress="Turbine") + + yield group.group_task( + "Transit", + transit_time, + num_vessels=towing_vessels, + num_ahts_vessels=ahts_vessels, + suspendable=True, + constraints={ + "windspeed": le(group.max_windspeed), + "waveheight": le(group.max_waveheight), + }, + ) @process def install_moored_substructures( - vessel, queue, distance, substructures, station_keeping_vessels, **kwargs + vessel, + queue, + distance, + substructures, + station_keeping_vessels, ): """ + ** DEPRECATED ** This method is deprecated and is now performed + in towing_group_action() by the towing group with AHTS vessel. Logic that a Multi-Purpose Support Vessel uses at site to complete the installation of moored substructures. @@ -363,6 +494,12 @@ def install_moored_substructures( installation at site. """ + warn( + "** DEPRECATED ** This method is deprecated and is now performed" + " in towing_group_action() by the towing group with AHTS vessel.\n", + stacklevel=1, + ) + n = 0 while n < substructures: if queue.vessel: diff --git a/ORBIT/phases/install/scour_protection_install/__init__.py b/ORBIT/phases/install/scour_protection_install/__init__.py index 9dde34c0..b2f99b17 100644 --- a/ORBIT/phases/install/scour_protection_install/__init__.py +++ b/ORBIT/phases/install/scour_protection_install/__init__.py @@ -1,6 +1,6 @@ __author__ = "Rob Hammond" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Rob Hammond" -__email__ = "robert.hammond@nrel.gov" +__email__ = "rob.hammond@nrel.gov" from .standard import ScourProtectionInstallation diff --git a/ORBIT/phases/install/scour_protection_install/standard.py b/ORBIT/phases/install/scour_protection_install/standard.py index 9dd3ee9a..4b8a628a 100644 --- a/ORBIT/phases/install/scour_protection_install/standard.py +++ b/ORBIT/phases/install/scour_protection_install/standard.py @@ -11,10 +11,13 @@ import simpy from marmot import process -from ORBIT.core import Vessel from ORBIT.core.defaults import process_times as pt from ORBIT.phases.install import InstallPhase -from ORBIT.core.exceptions import CargoMassExceeded, InsufficientAmount +from ORBIT.core.exceptions import ( + CargoMassExceeded, + InsufficientAmount, + VesselCapacityError, +) class ScourProtectionInstallation(InstallPhase): @@ -63,12 +66,7 @@ def __init__(self, config, weather=None, **kwargs): self.setup_simulation(**kwargs) def setup_simulation(self, **kwargs): - """ - Sets up the required simulation infrastructure: - - creates a port - - initializes a scour protection installation vessel - - initializes vessel storage - """ + """Sets up the required simulation infrastructure.""" self.initialize_port() self.initialize_spi_vessel() @@ -120,9 +118,7 @@ def initialize_port(self): self.port = simpy.Container(self.env) def initialize_spi_vessel(self): - """ - Creates the scouring protection isntallation (SPI) vessel. - """ + """Creates the scouring protection isntallation (SPI) vessel.""" spi_specs = self.config["spi_vessel"] name = spi_specs.get("name", "SPI Vessel") @@ -173,12 +169,19 @@ def install_scour_protection( tonnes_per_substructure : int Number of tonnes required to be installed at each substation """ + if tonnes_per_substructure > vessel.rock_storage.available_capacity: + raise VesselCapacityError( + vessel, + f"tonnes per substructure ({tonnes_per_substructure})", + ) while turbines > 0: if vessel.at_port: # Load scour protection material yield load_material( - vessel, vessel.rock_storage.available_capacity, **kwargs + vessel, + vessel.rock_storage.available_capacity, + **kwargs, ) # Transit to site @@ -269,7 +272,9 @@ def drop_material(vessel, mass, **kwargs): if vessel.rock_storage.level < mass: raise InsufficientAmount( - vessel.rock_storage.level, "Scour Protection", mass + vessel.rock_storage.level, + "Scour Protection", + mass, ) key = "drop_rocks_time" diff --git a/ORBIT/phases/install/turbine_install/common.py b/ORBIT/phases/install/turbine_install/common.py index 057ff1bd..45106098 100644 --- a/ORBIT/phases/install/turbine_install/common.py +++ b/ORBIT/phases/install/turbine_install/common.py @@ -13,12 +13,10 @@ class TowerSection(Cargo): - """Tower Section Cargo""" + """Tower Section Cargo.""" def __init__(self, length=None, mass=None, deck_space=None, **kwargs): - """ - Creates an instance of `TowerSection`. - """ + """Creates an instance of `TowerSection`.""" self.length = length self.mass = mass @@ -44,12 +42,10 @@ def release(**kwargs): class Nacelle(Cargo): - """Nacelle Cargo""" + """Nacelle Cargo.""" def __init__(self, mass=None, deck_space=None, **kwargs): - """ - Creates an instance of `Nacelle`. - """ + """Creates an instance of `Nacelle`.""" self.mass = mass self.deck_space = deck_space @@ -74,12 +70,10 @@ def release(**kwargs): class Blade(Cargo): - """Blade Cargo""" + """Blade Cargo.""" def __init__(self, length=None, mass=None, deck_space=None, **kwargs): - """ - Creates an instance of `Blade`. - """ + """Creates an instance of `Blade`.""" self.length = length self.mass = mass diff --git a/ORBIT/phases/install/turbine_install/standard.py b/ORBIT/phases/install/turbine_install/standard.py index d23515a1..f0afea5a 100644 --- a/ORBIT/phases/install/turbine_install/standard.py +++ b/ORBIT/phases/install/turbine_install/standard.py @@ -13,7 +13,6 @@ import simpy from marmot import process -from ORBIT.core import Vessel from ORBIT.core.logic import ( jackdown_if_required, shuttle_items_to_queue, @@ -100,8 +99,8 @@ def system_capex(self): def setup_simulation(self, **kwargs): """ - Sets up simulation infrastructure, routing to specific methods dependent - on number of feeders. + Sets up simulation infrastructure, routing to specific methods + dependent on number of feeders. """ if self.config.get("num_feeders", None): @@ -115,7 +114,8 @@ def setup_simulation(self, **kwargs): def setup_simulation_without_feeders(self, **kwargs): """ - Sets up infrastructure for turbine installation without feeder barges. + Creates the infrastructure for turbine installation without feeder + barges. """ site_distance = self.config["site"]["distance"] @@ -136,7 +136,8 @@ def setup_simulation_without_feeders(self, **kwargs): def setup_simulation_with_feeders(self, **kwargs): """ - Sets up infrastructure for turbine installation using feeder barges. + Creates the infrastructure for turbine installation using feeder + barges. """ site_distance = self.config["site"]["distance"] @@ -166,9 +167,7 @@ def setup_simulation_with_feeders(self, **kwargs): ) def initialize_wtiv(self): - """ - Initializes the WTIV simulation object and the onboard vessel storage. - """ + """Initializes the WTIV simulation object and its onboard storage.""" wtiv_specs = self.config.get("wtiv", None) name = wtiv_specs.get("name", "WTIV") @@ -182,9 +181,7 @@ def initialize_wtiv(self): self.wtiv = wtiv def initialize_feeders(self): - """ - Initializes feeder barge objects. - """ + """Initializes feeder barge objects.""" number = self.config.get("num_feeders", None) feeder_specs = self.config.get("feeder", None) @@ -192,7 +189,7 @@ def initialize_feeders(self): self.feeders = [] for n in range(number): # TODO: Add in option for named feeders. - name = "Feeder {}".format(n) + name = f"Feeder {n}" feeder = self.initialize_vessel(name, feeder_specs) self.env.register(feeder) @@ -203,9 +200,7 @@ def initialize_feeders(self): self.feeders.append(feeder) def initialize_turbines(self): - """ - Initializes turbine components at port. - """ + """Initializes turbine components at port.""" tower = deepcopy(self.config["turbine"]["tower"]) self.num_sections = tower.get("sections", 1) @@ -240,7 +235,8 @@ def initialize_turbines(self): def initialize_queue(self): """ Initializes the queue, modeled as a ``SimPy.Resource`` that feeders - join at site. This limits the simulation to one active feeder at a time. + join at site. This limits the simulation to one active feeder at a + time. """ self.active_feeder = simpy.Resource(self.env, capacity=1) @@ -262,7 +258,7 @@ def detailed_output(self): **self.agent_efficiencies, **self.get_max_cargo_mass_utilzations(transport_vessels), **self.get_max_deck_space_utilzations(transport_vessels), - } + }, } return outputs @@ -270,7 +266,13 @@ def detailed_output(self): @process def solo_install_turbines( - vessel, port, distance, turbines, tower_sections, num_blades, **kwargs + vessel, + port, + distance, + turbines, + tower_sections, + num_blades, + **kwargs, ): """ Logic that a Wind Turbine Installation Vessel (WTIV) uses during a single @@ -302,7 +304,10 @@ def solo_install_turbines( try: # Get turbine components yield get_list_of_items_from_port( - vessel, port, component_list, **kwargs + vessel, + port, + component_list, + **kwargs, ) except ItemNotFound: @@ -334,7 +339,10 @@ def solo_install_turbines( # Install tower section height = section.length * (i + 1) yield install_tower_section( - vessel, section, height, **kwargs + vessel, + section, + height, + **kwargs, ) # Get turbine nacelle @@ -344,17 +352,22 @@ def solo_install_turbines( # Install nacelle yield vessel.task_wrapper( - "Reequip", reequip_time, constraints=vessel.transit_limits + "Reequip", + reequip_time, + constraints=vessel.transit_limits, ) yield install_nacelle(vessel, nacelle, **kwargs) # Install turbine blades yield vessel.task_wrapper( - "Reequip", reequip_time, constraints=vessel.transit_limits + "Reequip", + reequip_time, + constraints=vessel.transit_limits, ) for _ in range(num_blades): blade = yield vessel.get_item_from_storage( - "Blade", **kwargs + "Blade", + **kwargs, ) yield install_turbine_blade(vessel, blade, **kwargs) @@ -374,7 +387,13 @@ def solo_install_turbines( @process def install_turbine_components_from_queue( - wtiv, queue, distance, turbines, tower_sections, num_blades, **kwargs + wtiv, + queue, + distance, + turbines, + tower_sections, + num_blades, + **kwargs, ): """ Logic that a Wind Turbine Installation Vessel (WTIV) uses to install @@ -416,36 +435,50 @@ def install_turbine_components_from_queue( for i in range(tower_sections): # Get tower section section = yield wtiv.get_item_from_storage( - "TowerSection", vessel=queue.vessel, **kwargs + "TowerSection", + vessel=queue.vessel, + **kwargs, ) # Install tower section height = section.length * (i + 1) yield install_tower_section( - wtiv, section, height, **kwargs + wtiv, + section, + height, + **kwargs, ) # Get turbine nacelle nacelle = yield wtiv.get_item_from_storage( - "Nacelle", vessel=queue.vessel, **kwargs + "Nacelle", + vessel=queue.vessel, + **kwargs, ) # Install nacelle yield wtiv.task_wrapper( - "Reequip", reequip_time, constraints=wtiv.transit_limits + "Reequip", + reequip_time, + constraints=wtiv.transit_limits, ) yield install_nacelle(wtiv, nacelle, **kwargs) # Install turbine blades yield wtiv.task_wrapper( - "Reequip", reequip_time, constraints=wtiv.transit_limits + "Reequip", + reequip_time, + constraints=wtiv.transit_limits, ) for i in range(num_blades): release = True if i + 1 == num_blades else False blade = yield wtiv.get_item_from_storage( - "Blade", vessel=queue.vessel, release=release, **kwargs + "Blade", + vessel=queue.vessel, + release=release, + **kwargs, ) yield install_turbine_blade(wtiv, blade, **kwargs) @@ -458,7 +491,11 @@ def install_turbine_components_from_queue( start = wtiv.env.now yield queue.activate delay_time = wtiv.env.now - start - wtiv.submit_action_log("Delay", delay_time, location="Site") + wtiv.submit_action_log( + "Delay: Not enough vessels for turbines", + delay_time, + location="Site", + ) # Transit to port wtiv.at_site = False diff --git a/ORBIT/supply_chain.py b/ORBIT/supply_chain.py index b17e2ae8..2c09bd70 100644 --- a/ORBIT/supply_chain.py +++ b/ORBIT/supply_chain.py @@ -1,3 +1,5 @@ +"""Provides the ``SupplyChainManager`` model.""" + __author__ = ["Jake Nunemaker"] __copyright__ = "Copyright 2022, National Renewable Energy Laboratory" __maintainer__ = "Jake Nunemaker" @@ -5,70 +7,52 @@ from copy import deepcopy -from benedict import benedict -from ORBIT import ProjectManager +from benedict import benedict +from ORBIT import ProjectManager DEFAULT_MULTIPLIERS = { - "blades": { - "domestic": .026, - "imported": .30 - }, - "nacelle": { - "domestic": .025, - "imported": .10 - }, - "tower": { - "domestic": .04, - "imported": .20, - "tariffs": .25, - }, - "monopile": { - "domestic": .085, - "imported": .28, - "tariffs": .25, - }, - "transition_piece": { - "domestic": .169, - "imported": .17, - "tariffs": .25, - }, - "array_cable": { - "domestic": .19, - "imported": 0. - }, - "export_cable": { - "domestic": .231, - "imported": 0. - }, - "oss_topside": { - "domestic": 0., - "imported": 0. - }, - "oss_substructure": { - "domestic": 0., - "imported": 0. - }, - } - - -TURBINE_CAPEX_SPLIT = { - "blades": 0.135, - "nacelle": 0.274, - "tower": 0.162 + "blades": {"domestic": 0.026, "imported": 0.30}, + "nacelle": {"domestic": 0.025, "imported": 0.10}, + "tower": { + "domestic": 0.04, + "imported": 0.20, + "tariffs": 0.25, + }, + "monopile": { + "domestic": 0.085, + "imported": 0.28, + "tariffs": 0.25, + }, + "transition_piece": { + "domestic": 0.169, + "imported": 0.17, + "tariffs": 0.25, + }, + "array_cable": {"domestic": 0.19, "imported": 0.0}, + "export_cable": {"domestic": 0.231, "imported": 0.0}, + "oss_topside": {"domestic": 0.0, "imported": 0.0}, + "oss_substructure": {"domestic": 0.0, "imported": 0.0}, } +TURBINE_CAPEX_SPLIT = {"blades": 0.135, "nacelle": 0.274, "tower": 0.162} + + LABOR_SPLIT = { "tower": 0.5, "monopile": 0.5, "transition_piece": 0.5, - "oss_topside": 0.5 + "oss_topside": 0.5, } class SupplyChainManager: + """ + Enables a more detailed cost breakdown and financial accounting tool for + modeling supply chain changes related to wind farms. + """ def __init__(self, supply_chain_configuration, **kwargs): """ @@ -108,20 +92,20 @@ def run_project(self, config, weather=None, **kwargs): return project def pre_process(self, config): - """""" + """Prepares the configuration to account for detailed costs.""" # Save original plant design - plant = deepcopy(config['plant']) + plant = deepcopy(config["plant"]) # Run ProjectManager without install phases to generate design results - install_phases = config['install_phases'] - config['install_phases'] = [] + install_phases = config["install_phases"] + config["install_phases"] = [] project = ProjectManager(config) project.run() config = deepcopy(project.config) # Replace calculated plant design with original - config['plant'] = plant + config["plant"] = plant # Run pre ORBIT supply chain adjustments config = self.process_turbine_capex(config) @@ -130,13 +114,13 @@ def pre_process(self, config): config = self.process_offshore_substation_topside_capex(config) # Add install phases back in - config['install_phases'] = install_phases - config['design_phases'] = [] + config["install_phases"] = install_phases + config["design_phases"] = [] return config def post_process(self, project): - """""" + """Computes the modified array and export cabling costs.""" project = self.process_array_cable_capex(project) project = self.process_export_cable_capex(project) @@ -154,45 +138,51 @@ def process_turbine_capex(self, config): ORBIT configuration. """ - blade_scenario = self.sc_config['blades'] - nacelle_scenario = self.sc_config['nacelle'] - tower_scenario = self.sc_config['blades'] + blade_scenario = self.sc_config["blades"] + nacelle_scenario = self.sc_config["nacelle"] + tower_scenario = self.sc_config["blades"] blade_mult = self.multipliers["blades"].get(blade_scenario, None) - if blade_mult == None: - print(f"Warning: scenario '{blade_scenario}' not found for category 'blades'.") - blade_mult = 0. + if blade_mult is None: + print( + f"Warning: scenario '{blade_scenario}' not found for category 'blades'." # noqa: E501 + ) + blade_mult = 0.0 nacelle_mult = self.multipliers["nacelle"].get(nacelle_scenario, None) - if nacelle_mult == None: - print(f"Warning: scenario '{nacelle_scenario}' not found for category 'nacelle'.") - nacelle_mult = 0. + if nacelle_mult is None: + print( + f"Warning: scenario '{nacelle_scenario}' not found for category 'nacelle'." # noqa: E501 + ) + nacelle_mult = 0.0 - raw_cost = config.get('project_parameters.turbine_capex', 1300) - blade_adder = raw_cost * self.turbine_split['blades'] * blade_mult - nacelle_adder = raw_cost * self.turbine_split['nacelle'] * nacelle_mult + raw_cost = config.get("project_parameters.turbine_capex", 1300) + blade_adder = raw_cost * self.turbine_split["blades"] * blade_mult + nacelle_adder = raw_cost * self.turbine_split["nacelle"] * nacelle_mult if tower_scenario == "domestic, imported steel": tower_adder = self.multipliers["tower"]["domestic"] * raw_cost - tower_tariffs = raw_cost * self.turbine_split['tower'] *\ - (1 - self.labor_split['tower']) * self.multipliers["tower"]['tariffs'] + tower_tariffs = ( + raw_cost + * self.turbine_split["tower"] + * (1 - self.labor_split["tower"]) + * self.multipliers["tower"]["tariffs"] + ) else: - tower_tariffs = 0. + tower_tariffs = 0.0 tower_mult = self.multipliers["tower"].get(tower_scenario, None) - if tower_mult == None: - print(f"Warning: scenario '{tower_scenario}' not found for category 'tower'.") - tower_mult = 0. + if tower_mult is None: + print( + f"Warning: scenario '{tower_scenario}' not found for category 'tower'." # noqa: E501 + ) + tower_mult = 0.0 - tower_adder = raw_cost * self.turbine_split['tower'] * tower_mult + tower_adder = raw_cost * self.turbine_split["tower"] * tower_mult - config['project_parameters.turbine_capex'] = sum([ - raw_cost, - blade_adder, - nacelle_adder, - tower_adder, - tower_tariffs - ]) + config["project_parameters.turbine_capex"] = sum( + [raw_cost, blade_adder, nacelle_adder, tower_adder, tower_tariffs] + ) return config @@ -206,28 +196,29 @@ def process_monopile_capex(self, config): ORBIT configuration. """ - raw_cost = config['monopile.unit_cost'] - scenario = self.sc_config['monopile'] + raw_cost = config["monopile.unit_cost"] + scenario = self.sc_config["monopile"] if scenario == "domestic, imported steel": - adder = self.multipliers['monopile']['domestic'] * raw_cost - tariffs = raw_cost * (1 - self.labor_split['monopile']) *\ - self.multipliers["monopile"]['tariffs'] + adder = self.multipliers["monopile"]["domestic"] * raw_cost + tariffs = ( + raw_cost + * (1 - self.labor_split["monopile"]) + * self.multipliers["monopile"]["tariffs"] + ) else: - tariffs = 0. + tariffs = 0.0 mult = self.multipliers["monopile"].get(scenario, None) - if mult == None: - print(f"Warning: scenario '{scenario}' not found for category 'monopile'.") - mult = 0. + if mult is None: + print( + f"Warning: scenario '{scenario}' not found for category 'monopile'." # noqa: E501 + ) + mult = 0.0 adder = raw_cost * mult - config['monopile.unit_cost'] = sum([ - raw_cost, - adder, - tariffs - ]) + config["monopile.unit_cost"] = sum([raw_cost, adder, tariffs]) return config @@ -242,28 +233,29 @@ def process_transition_piece_capex(self, config): ORBIT configuration. """ - raw_cost = config['transition_piece.unit_cost'] - scenario = self.sc_config['transition_piece'] + raw_cost = config["transition_piece.unit_cost"] + scenario = self.sc_config["transition_piece"] if scenario == "domestic, imported steel": - adder = self.multipliers['transition_piece']['domestic'] * raw_cost - tariffs = raw_cost * (1 - self.labor_split['transition_piece']) *\ - self.multipliers["transition_piece"]['tariffs'] + adder = self.multipliers["transition_piece"]["domestic"] * raw_cost + tariffs = ( + raw_cost + * (1 - self.labor_split["transition_piece"]) + * self.multipliers["transition_piece"]["tariffs"] + ) else: - tariffs = 0. + tariffs = 0.0 mult = self.multipliers["transition_piece"].get(scenario, None) - if mult == None: - print(f"Warning: scenario '{scenario}' not found for category 'transition_piece'.") - mult = 0. + if mult is None: + print( + f"Warning: scenario '{scenario}' not found for category 'transition_piece'." # noqa: E501 + ) + mult = 0.0 adder = raw_cost * mult - config['transition_piece.unit_cost'] = sum([ - raw_cost, - adder, - tariffs - ]) + config["transition_piece.unit_cost"] = sum([raw_cost, adder, tariffs]) return config @@ -278,28 +270,31 @@ def process_offshore_substation_topside_capex(self, config): ORBIT configuration. """ - raw_cost = config['offshore_substation_topside.unit_cost'] - scenario = self.sc_config['oss_topside'] + raw_cost = config["offshore_substation_topside.unit_cost"] + scenario = self.sc_config["oss_topside"] if scenario == "domestic, imported steel": - adder = self.multipliers['oss_topside']['domestic'] * raw_cost - tariffs = raw_cost * (1 - self.labor_split['oss_topside']) *\ - self.multipliers["oss_topside"]['tariffs'] + adder = self.multipliers["oss_topside"]["domestic"] * raw_cost + tariffs = ( + raw_cost + * (1 - self.labor_split["oss_topside"]) + * self.multipliers["oss_topside"]["tariffs"] + ) else: - tariffs = 0. + tariffs = 0.0 mult = self.multipliers["oss_topside"].get(scenario, None) - if mult == None: - print(f"Warning: scenario '{scenario}' not found for category 'oss_topside'.") - mult = 0. + if mult is None: + print( + f"Warning: scenario '{scenario}' not found for category 'oss_topside'." # noqa: E501 + ) + mult = 0.0 adder = raw_cost * mult - config['offshore_substation_topside.unit_cost'] = sum([ - raw_cost, - adder, - tariffs - ]) + config["offshore_substation_topside.unit_cost"] = sum( + [raw_cost, adder, tariffs], + ) return config @@ -313,13 +308,15 @@ def process_array_cable_capex(self, project): project : ProjectManager """ - scenario = self.sc_config['array_cable'] + scenario = self.sc_config["array_cable"] mult = self.multipliers["array_cable"].get(scenario, None) - if mult == None: - print(f"Warning: scenario '{scenario}' not found for category 'array_cable'.") - mult = 0. + if mult is None: + print( + f"Warning: scenario '{scenario}' not found for category 'array_cable'." # noqa: E501 # noqa: E501 + ) + mult = 0.0 - project.system_costs['ArrayCableInstallation'] *= (1 + mult) + project.system_costs["ArrayCableInstallation"] *= 1 + mult return project @@ -332,12 +329,14 @@ def process_export_cable_capex(self, project): project : ProjectManager """ - scenario = self.sc_config['export_cable'] + scenario = self.sc_config["export_cable"] mult = self.multipliers["export_cable"].get(scenario, None) - if mult == None: - print(f"Warning: scenario '{scenario}' not found for category 'export_cable'.") - mult = 0. + if mult is None: + print( + f"Warning: scenario '{scenario}' not found for category 'export_cable'." # noqa: E501 + ) + mult = 0.0 - project.system_costs['ExportCableInstallation'] *= (1 + mult) + project.system_costs["ExportCableInstallation"] *= 1 + mult return project diff --git a/README.rst b/README.rst index bb4df5de..67b187fb 100644 --- a/README.rst +++ b/README.rst @@ -3,8 +3,10 @@ ORBIT Offshore Renewables Balance of system and Installation Tool +|PyPI version| |PyPI downloads| |Apache 2.0| |image| + +|Binder| |Pre-commit| |Black| |isort| |Ruff| -:Version: 1.0.8 :Authors: `Jake Nunemaker `_, `Matt Shields `_, `Rob Hammond `_ :Documentation: `ORBIT Docs `_ @@ -44,7 +46,7 @@ Instructions .. code-block:: console - conda create -n python=3.7 --no-default-packages + conda create -n python=3.10 --no-default-packages To activate/deactivate the environment, use the following commands. @@ -66,8 +68,7 @@ Instructions # OR if you are you going to be contributing to the code or building documentation pip install -e '.[dev]' -6. (Development only) Install the pre-commit hooks to autoformat code and - check that tests pass. +6. (Development only) Install the pre-commit hooks to autoformat and lint code. .. code-block:: console @@ -76,20 +77,27 @@ Instructions Dependencies ~~~~~~~~~~~~ -- Python 3.7+ +- Python 3.9+ - marmot-agents +- SimPy - NumPy +- Pandas - SciPy - Matplotlib - OpenMDAO (>=3.2) +- python-benedict +- statsmodels +- PyYAML Development Specific ~~~~~~~~~~~~~~~~~~~~ +- pre-commit - black - isort -- pre-commit +- ruff - pytest +- pytest-cov - sphinx - sphinx-rtd-theme @@ -98,4 +106,23 @@ Recommended packages for easy iteration and running of code: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - jupyterlab -- pandas + + +.. |PyPI version| image:: https://badge.fury.io/py/orbit-nrel.svg + :target: https://badge.fury.io/py/orbit-nrel +.. |PyPI downloads| image:: https://img.shields.io/pypi/dm/orbit-nrel?link=https%3A%2F%2Fpypi.org%2Fproject%2Forbit-nrel%2F + :target: https://pypi.org/project/orbit-nrel/ +.. |Apache 2.0| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg + :target: https://opensource.org/licenses/Apache-2.0 +.. |image| image:: https://img.shields.io/pypi/pyversions/orbit-nrel.svg + :target: https://pypi.python.org/pypi/orbit-nrel +.. |Binder| image:: https://mybinder.org/badge_logo.svg + :target: https://mybinder.org/v2/gh/WISDEM/ORBIT/dev?filepath=examples +.. |Pre-commit| image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white + :target: https://github.com/pre-commit/pre-commit +.. |Black| image:: https://img.shields.io/badge/code%20style-black-000000.svg + :target: https://github.com/psf/black +.. |isort| image:: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336 + :target: https://pycqa.github.io/isort/ +.. |Ruff| image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json + :target: https://github.com/astral-sh/ruff diff --git a/docs/conf.py b/docs/conf.py index 38ceb207..508ba970 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,24 +1,18 @@ """ +Configuration file for the Sphinx documentation builder. + Jake Nunemaker National Renewable Energy Lab 09/13/2019 - -Configuration file for the Sphinx documentation builder. """ - # -- Path setup -------------------------------------------------------------- -import os -import sys - -sys.path.insert(0, os.path.abspath("..")) import ORBIT - # -- Project information ----------------------------------------------------- project = "ORBIT" -copyright = "2020, National Renewable Energy Lab" +copyright = "2020, National Renewable Energy Lab" # noqa: A001 author = "Jake Nunemaker, Matt Shields, Rob Hammond" release = ORBIT.__version__ diff --git a/docs/index.rst b/docs/index.rst index 240c0052..1f732d55 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -41,7 +41,7 @@ the BOS process, split into :ref:`design ` and define which phases are needed to model their project or scenario using :ref:`ProjectManager `. -ORBIT is written in Python 3.7 and utilizes +ORBIT is written in Python 3.10 and utilizes `SimPy `_'s discrete event simulation framework to model individual processes during the installation phases, allowing for the effects of weather delays and vessel interactions to be diff --git a/docs/source/api_DesignPhase.rst b/docs/source/api_DesignPhase.rst index 6768743e..0046bb73 100644 --- a/docs/source/api_DesignPhase.rst +++ b/docs/source/api_DesignPhase.rst @@ -14,6 +14,7 @@ trends but are not intended to be used for actual designs. phases/design/api_ScourProtectionDesign phases/design/api_ArraySystemDesign phases/design/api_ExportSystemDesign + phases/design/api_ElectricalDesign phases/design/api_OffshoreSubstationDesign phases/design/api_SemiSubmersibleDesign phases/design/api_SparDesign diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst index 07ab75f2..c59f37be 100644 --- a/docs/source/changelog.rst +++ b/docs/source/changelog.rst @@ -3,11 +3,96 @@ ORBIT Changelog =============== +1.1 +--- + +New features +~~~~~~~~~~~~ +- Enhanced ``MooringSystemDesign``: + - Can specify catenary or semitaut mooring systems. (use `mooring_type`) + - Can specify drag embedment or suction pile anchors. (use `anchor_type`) + - Description: This class received some new options that the user can + specify to customize the mooring system. By default, this design uses + catenary mooring lines and suction pile anchors. The new semitaut mooring + lines use interpolation to calculate the geometry and cost based on + (Cooperman et al. 2022, https://www.nrel.gov/docs/fy22osti/82341.pdf). + - See ``5. Example Floating Project`` for more details. +- New ``ElectricalDesign``: + - Now has HVDC or HVAC transmission capabilities. + - New tests created ``test_electrical_export.py`` + - Description: This class combines the elements of ``ExportSystemDesign`` and the + ``OffshoreSubstationDesign`` modules. Its purpose is to represent the + entire export system more accurately by linking the type of cable + (AC versus DC) and substation’s components (i.e. transformers versus converters). + Most export and substation component costs were updated to include a per-unit cost + rather than a per-MW cost rate and they can be added to the project config file too. + Otherwise, those per-unit costs use default and were determined with the help of + industry experts. + - This module’s components’ cost scales with number of cables and + substations rather than plant capacity. + - The offshore substation cost is calculated based on the cable type + and number of cables, rather than scaling function based on plant capacity. + - The mass of an HVDC and HVAC substation are assumed to be the same. + Therefore, the substructure mass and cost functions did not change. + - An experimental onshore cost function was also added to account for + the duplicated interconnection components. Costs will vary depending + on the cable type. + - See new example ``Example - Using HVDC or HVAC`` for more details. +- Enhanced ``FloatingOffshoreSubStation``: + - 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``: + - 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. + - Based on the IEA - 22 MW reference wind turbine. + - See ``library/turbines`` for more details. +- New cables: + - Varying HVDC ratings + - Varying HVDC and HVAC "dynamic" cables for floating projects. + - See ``library/cables`` for all the cables and more details. + +Updated default values +~~~~~~~~~~~~~~~~~~~~~~ +- ``defaults/process_times.yaml`` + - `drag_embedment_install_time`` increased from 5 to 12 hours. +- ``phases/install/quayside_assembly_tow/common.py``: + - lift and attach tower section time changed from 12 to 4 hours per section, + - lift and attach nacelle time changed from 7 to 12 hours. +- ``library/cables/XLPE_500mm_132kV.yaml``: + - `cost_per_km` changed from $200k to $500k. +- ``library/vessels/example_cable_lay_vessel.yaml``: + - `min_draft` changed from 4.8m to 8.5m, + - `overall_length` changed from 99m to 171m, + - `max_mass` changed 4000t to 13000t, +- ``library/vessels/example_towing_vessel.yaml``: + - `max_waveheight` changed from 2.5m to 3.0m, + - `max_windspeed` changed 20m to 15m, + - `transit_speed` changed 6km/h to 14 km/h, + - `day_rate` changed $30k to $35k + +Improvements +~~~~~~~~~~~~ +- All design classes have new tests to track total cost to flag any changes that may + impact final project cost. +- Relocated all the get design costs in each design class to `common_cost.yaml`. +- Fully adopted `pyproject.toml` for managing all possible tool settings, and + removed the tool-specific files from the top-level of the directory. +- Replaced flake8 and pylint with ruff to adopt a cleaner, faster, and easier + to manage linting and autoformatting workflow. As a result, some of the more + onerous checks have been removed to discourage the use of + `git commit --no-verify`. This change has also added in other rules that + discourage Python anti-patterns and encourage modern Python usage. +- NOTE: Users may wish to run + `git config blame.ignoreRevsFile .git-blame-ignore-revs` to ignore the + reformatting edits in their blame. + 1.0.8 ----- - Added explicit methods for adding custom design or install phases to - ProjectManager. + ``ProjectManager``. - Added WOMBAT compatibility for custom array system files. - Fixed bug in custom array cable system design that breaks for plants with more than two substations. diff --git a/docs/source/doc_DesignPhase.rst b/docs/source/doc_DesignPhase.rst index f258bfa7..1e5f3470 100644 --- a/docs/source/doc_DesignPhase.rst +++ b/docs/source/doc_DesignPhase.rst @@ -13,6 +13,7 @@ the model. phases/design/doc_ScourProtectionDesign phases/design/doc_ArraySystemDesign phases/design/doc_ExportSystemDesign + phases/design/doc_ElectricalDesign phases/design/doc_OffshoreSubstationDesign phases/design/doc_SemiSubmersibleDesign phases/design/doc_SparDesign diff --git a/docs/source/doc_ParametricManager.rst b/docs/source/doc_ParametricManager.rst new file mode 100644 index 00000000..ec825223 --- /dev/null +++ b/docs/source/doc_ParametricManager.rst @@ -0,0 +1,11 @@ +.. _managertoc: + +Parametric Manager +============= + +The following pages cover the methodology behind the parametric manager. For +more details of the code implementation, please see :doc:`Parametric Manager API `. + +.. note:: + + Page currently under construction. diff --git a/docs/source/doc_ProjectManager.rst b/docs/source/doc_ProjectManager.rst new file mode 100644 index 00000000..6bf81e32 --- /dev/null +++ b/docs/source/doc_ProjectManager.rst @@ -0,0 +1,49 @@ +.. _managertoc: + +Project Manager +============= + +The following pages cover the methodology behind the project manager. + +.. note:: + + Page currently under construction. + +Overview +-------- +The ``ProjectManager`` is the primary system for interacting with ORBIT to simulate +a wind project. Users can customize their project by specifying a a wide variety of +parameters as a dictionary (see tutorial: :ref:`Project Manager Tutorial `). +For more details of the code implementation, please see :doc:`Project Manager API `. + +It instantiates a class aggregates project parameters, specifies a start date, and interprets a weather +profile, and it employs a collection of decorators, `methods`, and `classmethods` to run the simulation. +Among these methods are `design_phases` and `install_phases` that serve as components to the simulation. +Additionally, some methods search and catch key errors to avoid simulation issues, export progress logs, +and save the outputs. + +Run +--- +This method checks to see if a design or install phase is instatiated 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: :ref:`Overlapping install `). It is worth noting, that ORBIT +has built in logic to determine any dependency between install phases. + +Properties +---------- +The `@property` decorators allow the ``ProjectManager`` to access and manipulate the attributes of certain classes. Of the +several properties some important ones are: + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + +- capex_categories: CapEx Categories +- npv: Net Present Value + +Finally, these attributes are collected in an `output` dictionary. + +References +---------- +Stehly, Tyler, and Philipp Beiter. 2019. “2018 Cost of Wind Energy Review.” Renewable Energy. https://www.nrel.gov/docs/fy20osti/74598.pdf. diff --git a/docs/source/images/ElectricalDesignConfig.png b/docs/source/images/ElectricalDesignConfig.png new file mode 100644 index 00000000..5721c962 Binary files /dev/null and b/docs/source/images/ElectricalDesignConfig.png differ diff --git a/docs/source/intro/bos.rst b/docs/source/intro/bos.rst index 30b672ca..44806dbd 100644 --- a/docs/source/intro/bos.rst +++ b/docs/source/intro/bos.rst @@ -10,6 +10,15 @@ The balance-of-system (BOS) costs of an offshore wind plant include: - Onshore construction costs required to connect the turbine to the grid - Port fees and commissioning costs +.. note:: + + ORBIT does not specify a dollar-year when calculating BOS cost and it does + not account for inflation. To provide a flexible and adaptable simulation + model, components of the wind plant may incorporate `default` cost values. + Please advise that these values are approximated using avaiable information + or best-guess. To improve the fidelity of this tool, users should consider + replacing the `default` values with better informed costs. + Evaluating BOS costs is complicated by the large number of design choices for each component, the impact of weather delays on the installation processes, the challenge of transporting and hoisting large components at sea, the variation diff --git a/docs/source/methods.rst b/docs/source/methods.rst index db3db7da..24ea96ed 100644 --- a/docs/source/methods.rst +++ b/docs/source/methods.rst @@ -6,5 +6,7 @@ Methodology .. toctree:: :maxdepth: 2 + doc_ProjectManager + doc_ParametricManager doc_DesignPhase doc_InstallPhase diff --git a/docs/source/phases/design/api_ElectricalDesign.rst b/docs/source/phases/design/api_ElectricalDesign.rst new file mode 100644 index 00000000..4c65f8d1 --- /dev/null +++ b/docs/source/phases/design/api_ElectricalDesign.rst @@ -0,0 +1,8 @@ +Electrical System Design API +============================ + +For detailed methodology, please see +:doc:`Electrical System Design `. + +.. autoclass:: ORBIT.phases.design.ElectricalDesign + :members: diff --git a/docs/source/phases/design/doc_ElectricalDesign.rst b/docs/source/phases/design/doc_ElectricalDesign.rst new file mode 100644 index 00000000..5f038d95 --- /dev/null +++ b/docs/source/phases/design/doc_ElectricalDesign.rst @@ -0,0 +1,135 @@ +Electrical System Design Methodology +==================================== + +For details of the code implementation, please see +:doc:`Electrical System Design API `. + +Overview +-------- + +Below is an overview of the process used to design an export cable system and +offshore substation in ORBIT using the ElectricalDesign module. This module is to be +used in place of both the ExportSystemDesign module and the OffshoreSubstationDesign +module as it codesigns the export cables and offshore substation. Depending on whether +HVAC or HVDC cables are selected, different components will contribute to the final BOS. +For more detail on the helper classes used to support this design please see :doc:`Cabling Helper Classes +`, specifically :class:`Cable` and :class:`CableSystem`. + + +Number of Required Cables +--------- +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. + +:math:`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. +The equation for this calculation is shown below. + +:math:`num\_cables = 2 * \lceil\frac{plant\_capacity}{cable\_power}\rceil + num\_redundant` + +Export Cable Length +--------- +The total length of the export cables is calculated as the sum of the site +depth, distance to landfall and distance to interconnection multiplied by the +user defined :py:attr`percent_added_length` to account for any exclusions or +geotechnical design considerations that make a straight line cable route +impractical. + +:math:`length = (d + distance_\text{landfall} + distance_\text{interconnection}) * (1 + length_\text{percent_added})` + +Cable Crossing Cost +--------- +Optional inputs for both number of cable crossings and unit cost per cable +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 +--------- +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 +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 +are HVDC, then the cost of power transformers will be $0. + +Number of Shunt Reactors, Reactive Power Compensation, and Cost +--------- +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 +can be overwritten by the user by setting (``shunt_unit_cost``) to the desired cost. The shunt +reactor cost is $0 for HVDC systems. + +Number of Required Switchgears and Cost +--------- +The number of switchgear relays required is assumed to be equal to the number of +required export cables. Switchgear cost is only necessary if HVAC export cables +are chosen. The default cost is $4m per cable for HVAC. The default cost can be overwritten by the user by +setting (``switchgear_cost``) to the desired cost. Switchgear cost is equal to $0 for HVDC export +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 +$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. + +Number of Required AC\DC Converters and Cost +--------- +AC\DC converters are only required for HVDC export cables. The number of converters +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 +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``). + +Assembly Cost (On Land) +---------- +The majority of the electrical components are located on the offshore substation platform, but +they must be assembled on land. Therefore, an assembly factor of 7.5% is added to the components cost. +Those components include switchgear, shut reactors, and ancillary costs. The user can change the +factor by setting (``topside_assembly_factor``) to the desired percentage. + +Substation Topside Mass and Cost +---------- +We assume that the topside design cost is a fixed amount based on the export cables (either HVDC or HVAC). +The user can specify the topside cost by setting (``topside_design_cost``). The mass of the topside is +determined by a curve fit. + +Substation Substructure Mass and Cost +---------- +The mass and cost associated with the substructure of the offshore substation are based on +curve fits. The topside mass will drive the mass/size of the substructure. Then, the cost of the +substructure is determined by its mass. The substructure has a default cost rate of $3000 per ton of +steel. The value can be overwritten by setting (``oss_substructure_cost_rate``) to the desired cost rate. + +Onshore Cost +--------- +The onshore cost is considered to be the minimum cost of interconnection. This includes +the major required hardware for a cable connection onshore. For HVDC cables, it includes +the converter cost, DC breaker cost, and transformer cost. For HVAC, it includes the +transformer cost and switchgear cost. The onshore costs may or may not be included in the BOS +of the wind farm. Therefore, this cost is not included in the total ``system_capex`` +calculated by ProjectManager. + +Design Result +--------- +The result of this design module (:py:attr:`design_result`) includes the +specifications for both the export cables and offshore substation. This includes +a list of cable sections and their lengths and masses that represent the export +cable system, as well as the offshore substation substructure and topside mass +and cost, and number of substations. This result can then be passed to the +:doc:`export cable installation module <../install/export/doc_ExportCableInstall>` and +:doc:`offshore substation installation module <../install/export/doc_OffshoreSubstationInstall>` +to simulate the installation of the export system. diff --git a/docs/source/phases/design/doc_OffshoreSubstationDesign.rst b/docs/source/phases/design/doc_OffshoreSubstationDesign.rst index ec393be6..ef309b47 100644 --- a/docs/source/phases/design/doc_OffshoreSubstationDesign.rst +++ b/docs/source/phases/design/doc_OffshoreSubstationDesign.rst @@ -16,4 +16,4 @@ References ---------- .. [#maness2017] Michael Maness, Benjamin Maples, Aaron Smith, - NREL Offshore Balance-of-System Model, 2017 + NREL Offshore Balance-of-System Model, 2017. https://www.nrel.gov/docs/fy17osti/66874.pdf diff --git a/docs/source/phases/install/quayside_towout/doc_MooredSubInstallation.rst b/docs/source/phases/install/quayside_towout/doc_MooredSubInstallation.rst index ad137a51..3838bca7 100644 --- a/docs/source/phases/install/quayside_towout/doc_MooredSubInstallation.rst +++ b/docs/source/phases/install/quayside_towout/doc_MooredSubInstallation.rst @@ -28,6 +28,7 @@ the key parameters available. ... "support_vessel": "example_support_vessel", # Will perform onsite installation procedures. + "ahts_vessel": "example_ahts_vessel", # Anchor handling tug supply vessel associated with each tow group. "towing_vessel": "example_towing_vessel", # Towing groups will contain multiple of this vessel. "towing_groups": { "towing_vessel": 1, # Vessels used to tow the substructure to site. diff --git a/examples/1. Introduction.ipynb b/examples/1. Introduction.ipynb index 88bc1f4c..a7ff9c4c 100644 --- a/examples/1. Introduction.ipynb +++ b/examples/1. Introduction.ipynb @@ -1,280 +1,280 @@ { - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from copy import deepcopy" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### ORBIT Introduction\n", - "\n", - "ORBIT is organized into two different types of modules: design and installation. Design modules are intended to model the sizing and cost of offshore wind subcomponents and installation modules simulate the installation of these subcomponents in a discrete event simulation framework. The easiest way to start working with ORBIT is to look at one module. This tutorial will look at the monopile design module and the next tutorial will look at the monopile installation module." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# To import a design module:\n", - "from ORBIT.phases.design import MonopileDesign" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ + "cells": [ { - "data": { - "text/plain": [ - "{'site': {'depth': 'm', 'mean_windspeed': 'm/s'},\n", - " 'plant': {'num_turbines': 'int'},\n", - " 'turbine': {'rotor_diameter': 'm',\n", - " 'hub_height': 'm',\n", - " 'rated_windspeed': 'm/s'},\n", - " 'monopile_design': {'yield_stress': 'Pa (optional)',\n", - " 'load_factor': 'float (optional)',\n", - " 'material_factor': 'float (optional)',\n", - " 'monopile_density': 'kg/m3 (optional)',\n", - " 'monopile_modulus': 'Pa (optional)',\n", - " 'monopile_tp_connection_thickness': 'm (optional)',\n", - " 'transition_piece_density': 'kg/m3 (optional)',\n", - " 'transition_piece_thickness': 'm (optional)',\n", - " 'transition_piece_length': 'm (optional)',\n", - " 'soil_coefficient': 'N/m3 (optional)',\n", - " 'air_density': 'kg/m3 (optional)',\n", - " 'weibull_scale_factor': 'float (optional)',\n", - " 'weibull_shape_factor': 'float (optional)',\n", - " 'turb_length_scale': 'm (optional)',\n", - " 'monopile_steel_cost': 'USD/t (optional)',\n", - " 'tp_steel_cost': 'USD/t (optional)'}}" + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from copy import deepcopy" ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Each module has a property `.expected_config` that gives hints as to how to configure the module properly.\n", - "# This property returns a nested dictionary with all of the inputs (including optional ones) that can be used\n", - "# to configure this module.\n", - "\n", - "# For example:\n", - "MonopileDesign.expected_config" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# For now, lets ignore the optional inputs in the 'monopile_design' subdict and just look at the required inputs:\n", - "config_unfilled = {\n", - " 'site': { # Inputs are grouped into subdicts, eg. site, plant, etc.\n", - " 'depth': 'm', # The value represents the unit where applicable\n", - " 'mean_windspeed': 'm/s'\n", - " },\n", - " \n", - " 'plant': {\n", - " 'num_turbines': 'int'\n", - " },\n", - " \n", - " 'turbine': {\n", - " 'rotor_diameter': 'm',\n", - " 'hub_height': 'm',\n", - " 'rated_windspeed': 'm/s'\n", - " }\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "ORBIT library intialized at '/Users/jnunemak/Fun/repos/ORBIT/library'\n", - "Total Substructure Cost: 276.77 M\n" - ] - } - ], - "source": [ - "# Filling out the config for a simple fixed bottom project:\n", - "config = {\n", - " 'site': {\n", - " 'depth': 25,\n", - " 'mean_windspeed': 9.5\n", - " },\n", - " \n", - " 'plant': {\n", - " 'num_turbines': 50\n", - " },\n", - " \n", - " 'turbine': {\n", - " 'rotor_diameter': 220,\n", - " 'hub_height': 120,\n", - " 'rated_windspeed': 13\n", - " }\n", - "}\n", - "\n", - "# To run the module, create an instance by passing the config into the module and then use module.run()\n", - "\n", - "module = MonopileDesign(config)\n", - "module.run()\n", - "print(f\"Total Substructure Cost: {module.total_cost/1e6:.2f} M\")" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ORBIT Introduction\n", + "\n", + "ORBIT is organized into two different types of modules: design and installation. Design modules are intended to model the sizing and cost of offshore wind subcomponents and installation modules simulate the installation of these subcomponents in a discrete event simulation framework. The easiest way to start working with ORBIT is to look at one module. This tutorial will look at the monopile design module and the next tutorial will look at the monopile installation module." + ] + }, { - "ename": "MissingInputs", - "evalue": "Input(s) '['site.depth', 'site.mean_windspeed']' missing in config.", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mMissingInputs\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtmp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"site\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0mmodule\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mMonopileDesign\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtmp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m~/Fun/repos/ORBIT/ORBIT/phases/design/monopile_design.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, config, **kwargs)\u001b[0m\n\u001b[1;32m 75\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 76\u001b[0m \u001b[0mconfig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minitialize_library\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconfig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 77\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconfig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidate_config\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconfig\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 78\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_outputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/Fun/repos/ORBIT/ORBIT/phases/base.py\u001b[0m in \u001b[0;36mvalidate_config\u001b[0;34m(self, config)\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 116\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmissing\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 117\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mMissingInputs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmissing\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 118\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 119\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mMissingInputs\u001b[0m: Input(s) '['site.depth', 'site.mean_windspeed']' missing in config." - ] - } - ], - "source": [ - "# If a required input is missing, an error message will be raised with the input and it's location within the configuration.\n", - "# This error message used 'dot-notation' to show the structure of the dictionary. Each \".\" represents a lower level in the dictionary.\n", - "# \"site.depth\" indicates that it is the 'depth' input in the 'site' subdict.\n", - "\n", - "# In the example below, the 'site' inputs have been removed.\n", - "# The following inputs will be missing: '['site.depth', 'site.mean_windspeed']'\n", - "\n", - "tmp = deepcopy(config)\n", - "_ = tmp.pop(\"site\")\n", - "\n", - "module = MonopileDesign(tmp)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Optional Inputs" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# To import a design module:\n", + "from ORBIT.phases.design import MonopileDesign" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Total Substructure Cost: 361.02 M\n" - ] - } - ], - "source": [ - "# Now lets add more optional inputs:\n", - "config = {\n", - " 'site': {\n", - " 'depth': 25,\n", - " 'mean_windspeed': 9.5\n", - " },\n", - " \n", - " 'plant': {\n", - " 'num_turbines': 50\n", - " },\n", - " \n", - " 'turbine': {\n", - " 'rotor_diameter': 220,\n", - " 'hub_height': 120,\n", - " 'rated_windspeed': 13\n", - " },\n", - " \n", - " # --- New Inputs ---\n", - " 'monopile_design': {\n", - " 'monopile_steel_cost': 3500, # USD/t\n", - " 'tp_steel_cost': 4500 # USD/t\n", - " }\n", - "}\n", - "\n", - "module = MonopileDesign(config)\n", - "module.run()\n", - "print(f\"Total Substructure Cost: {module.total_cost/1e6:.2f} M\")" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'site': {'depth': 'm', 'mean_windspeed': 'm/s'},\n", + " 'plant': {'num_turbines': 'int'},\n", + " 'turbine': {'rotor_diameter': 'm',\n", + " 'hub_height': 'm',\n", + " 'rated_windspeed': 'm/s'},\n", + " 'monopile_design': {'yield_stress': 'Pa (optional)',\n", + " 'load_factor': 'float (optional)',\n", + " 'material_factor': 'float (optional)',\n", + " 'monopile_density': 'kg/m3 (optional)',\n", + " 'monopile_modulus': 'Pa (optional)',\n", + " 'monopile_tp_connection_thickness': 'm (optional)',\n", + " 'transition_piece_density': 'kg/m3 (optional)',\n", + " 'transition_piece_thickness': 'm (optional)',\n", + " 'transition_piece_length': 'm (optional)',\n", + " 'soil_coefficient': 'N/m3 (optional)',\n", + " 'air_density': 'kg/m3 (optional)',\n", + " 'weibull_scale_factor': 'float (optional)',\n", + " 'weibull_shape_factor': 'float (optional)',\n", + " 'turb_length_scale': 'm (optional)',\n", + " 'monopile_steel_cost': 'USD/t (optional)',\n", + " 'tp_steel_cost': 'USD/t (optional)'}}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Each module has a property `.expected_config` that gives hints as to how to configure the module properly.\n", + "# This property returns a nested dictionary with all of the inputs (including optional ones) that can be used\n", + "# to configure this module.\n", + "\n", + "# For example:\n", + "MonopileDesign.expected_config" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# For now, lets ignore the optional inputs in the 'monopile_design' subdict and just look at the required inputs:\n", + "config_unfilled = {\n", + " 'site': { # Inputs are grouped into subdicts, eg. site, plant, etc.\n", + " 'depth': 'm', # The value represents the unit where applicable\n", + " 'mean_windspeed': 'm/s'\n", + " },\n", + " \n", + " 'plant': {\n", + " 'num_turbines': 'int'\n", + " },\n", + " \n", + " 'turbine': {\n", + " 'rotor_diameter': 'm',\n", + " 'hub_height': 'm',\n", + " 'rated_windspeed': 'm/s'\n", + " }\n", + "}" + ] + }, { - "data": { - "text/plain": [ - "{'monopile': {'diameter': 10.217490535969192,\n", - " 'thickness': 0.10852490535969192,\n", - " 'moment': 44.02602353978204,\n", - " 'embedment_length': 37.11640362329476,\n", - " 'length': 72.11640362329476,\n", - " 'mass': 1082.5344126589946,\n", - " 'deck_space': 104.39711285262001,\n", - " 'unit_cost': 3788870.444306481},\n", - " 'transition_piece': {'thickness': 0.10852490535969192,\n", - " 'diameter': 10.434540346688577,\n", - " 'mass': 762.5683087222009,\n", - " 'length': 25,\n", - " 'deck_space': 108.87963224667176,\n", - " 'unit_cost': 3431557.389249904}}" + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ORBIT library intialized at '/Users/jnunemak/Fun/repos/ORBIT/library'\n", + "Total Substructure Cost: 276.77 M\n" + ] + } + ], + "source": [ + "# Filling out the config for a simple fixed bottom project:\n", + "config = {\n", + " 'site': {\n", + " 'depth': 25,\n", + " 'mean_windspeed': 9.5\n", + " },\n", + " \n", + " 'plant': {\n", + " 'num_turbines': 50\n", + " },\n", + " \n", + " 'turbine': {\n", + " 'rotor_diameter': 220,\n", + " 'hub_height': 120,\n", + " 'rated_windspeed': 13\n", + " }\n", + "}\n", + "\n", + "# To run the module, create an instance by passing the config into the module and then use module.run()\n", + "\n", + "module = MonopileDesign(config)\n", + "module.run()\n", + "print(f\"Total Substructure Cost: {module.total_cost/1e6:.2f} M\")" ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "ename": "MissingInputs", + "evalue": "Input(s) '['site.depth', 'site.mean_windspeed']' missing in config.", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mMissingInputs\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtmp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"site\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0mmodule\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mMonopileDesign\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtmp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/Fun/repos/ORBIT/ORBIT/phases/design/monopile_design.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, config, **kwargs)\u001b[0m\n\u001b[1;32m 75\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 76\u001b[0m \u001b[0mconfig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minitialize_library\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconfig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 77\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconfig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalidate_config\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconfig\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 78\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_outputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/Fun/repos/ORBIT/ORBIT/phases/base.py\u001b[0m in \u001b[0;36mvalidate_config\u001b[0;34m(self, config)\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 116\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmissing\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 117\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mMissingInputs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmissing\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 118\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 119\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mMissingInputs\u001b[0m: Input(s) '['site.depth', 'site.mean_windspeed']' missing in config." + ] + } + ], + "source": [ + "# If a required input is missing, an error message will be raised with the input and it's location within the configuration.\n", + "# This error message used 'dot-notation' to show the structure of the dictionary. Each \".\" represents a lower level in the dictionary.\n", + "# \"site.depth\" indicates that it is the 'depth' input in the 'site' subdict.\n", + "\n", + "# In the example below, the 'site' inputs have been removed.\n", + "# The following inputs will be missing: '['site.depth', 'site.mean_windspeed']'\n", + "\n", + "tmp = deepcopy(config)\n", + "_ = tmp.pop(\"site\")\n", + "\n", + "module = MonopileDesign(tmp)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Optional Inputs" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total Substructure Cost: 361.02 M\n" + ] + } + ], + "source": [ + "# Now lets add more optional inputs:\n", + "config = {\n", + " 'site': {\n", + " 'depth': 25,\n", + " 'mean_windspeed': 9.5\n", + " },\n", + " \n", + " 'plant': {\n", + " 'num_turbines': 50\n", + " },\n", + " \n", + " 'turbine': {\n", + " 'rotor_diameter': 220,\n", + " 'hub_height': 120,\n", + " 'rated_windspeed': 13\n", + " },\n", + " \n", + " # --- New Inputs ---\n", + " 'monopile_design': {\n", + " 'monopile_steel_cost': 3500, # USD/t\n", + " 'tp_steel_cost': 4500 # USD/t\n", + " }\n", + "}\n", + "\n", + "module = MonopileDesign(config)\n", + "module.run()\n", + "print(f\"Total Substructure Cost: {module.total_cost/1e6:.2f} M\")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'monopile': {'diameter': 10.217490535969192,\n", + " 'thickness': 0.10852490535969192,\n", + " 'moment': 44.02602353978204,\n", + " 'embedment_length': 37.11640362329476,\n", + " 'length': 72.11640362329476,\n", + " 'mass': 1082.5344126589946,\n", + " 'deck_space': 104.39711285262001,\n", + " 'unit_cost': 3788870.444306481},\n", + " 'transition_piece': {'thickness': 0.10852490535969192,\n", + " 'diameter': 10.434540346688577,\n", + " 'mass': 762.5683087222009,\n", + " 'length': 25,\n", + " 'deck_space': 108.87963224667176,\n", + " 'unit_cost': 3431557.389249904}}" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# To look at more detailed results:\n", + "module.design_result" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" } - ], - "source": [ - "# To look at more detailed results:\n", - "module.design_result" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/examples/2. Installation Modules.ipynb b/examples/2. Installation Modules.ipynb index 4f7247c2..2723ee0a 100644 --- a/examples/2. Installation Modules.ipynb +++ b/examples/2. Installation Modules.ipynb @@ -1,1742 +1,1742 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Installation Modules\n", - "\n", - "Installation modules have the same external structure (ie. 'expected_config') as design modules, however they have additional internal pieces to them that power the discrete event simulation framework." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "# To import an installation module:\n", - "from ORBIT.phases.install import MonopileInstallation" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ + "cells": [ { - "data": { - "text/plain": [ - "{'wtiv': 'dict | str',\n", - " 'feeder': 'dict | str (optional)',\n", - " 'num_feeders': 'int (optional)',\n", - " 'site': {'depth': 'm', 'distance': 'km'},\n", - " 'plant': {'num_turbines': 'int'},\n", - " 'turbine': {'hub_height': 'm'},\n", - " 'port': {'num_cranes': 'int (optional, default: 1)',\n", - " 'monthly_rate': 'USD/mo (optional)',\n", - " 'name': 'str (optional)'},\n", - " 'monopile': {'length': 'm',\n", - " 'diameter': 'm',\n", - " 'deck_space': 'm2',\n", - " 'mass': 't',\n", - " 'unit_cost': 'USD'},\n", - " 'transition_piece': {'deck_space': 'm2', 'mass': 't', 'unit_cost': 'USD'}}" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Installation Modules\n", + "\n", + "Installation modules have the same external structure (ie. 'expected_config') as design modules, however they have additional internal pieces to them that power the discrete event simulation framework." ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Expected config:\n", - "MonopileInstallation.expected_config" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "config_unfilled = {\n", - " 'site': { # Similar to the design module, inputs are grouped by category\n", - " 'depth': 'm', # Many of the inputs required are the same as the design module\n", - " 'distance': 'km'\n", - " },\n", - " \n", - " 'plant': {\n", - " 'num_turbines': 'int'\n", - " },\n", - " \n", - " 'turbine': {\n", - " 'hub_height': 'm'\n", - " },\n", - " \n", - " 'wtiv': 'dict | str', # The WTIV that will be installing the monopiles.\n", - " # Vessel are defined in the library in .yaml files.\n", - " \n", - " 'monopile': { # Notice that the result of the last module (monopile + transition piece sizing)\n", - " 'length': 'm', # is an input into the installation module.\n", - " 'diameter': 'm',\n", - " 'deck_space': 'm2',\n", - " 'mass': 't',\n", - " 'unit_cost': 'USD'\n", - " },\n", - " \n", - " 'transition_piece': {\n", - " 'deck_space': 'm2',\n", - " 'mass': 't',\n", - " 'unit_cost': 'USD'\n", - " }\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Installation CapEx: 21.94 M\n" - ] - } - ], - "source": [ - "config = {\n", - " 'site': {\n", - " 'depth': 25,\n", - " 'distance': 50\n", - " },\n", - " \n", - " 'plant': {\n", - " 'num_turbines': 50\n", - " },\n", - " \n", - " 'turbine': {\n", - " 'hub_height': 120\n", - " },\n", - " \n", - " 'wtiv': 'example_wtiv', # See 'example_wtiv.yaml'\n", - " \n", - " 'monopile': {\n", - " 'length': 72.1,\n", - " 'diameter': 10.2,\n", - " 'deck_space': 104.4,\n", - " 'mass': 1082.5,\n", - " 'unit_cost': 3788870\n", - " },\n", - " \n", - " 'transition_piece': {\n", - " 'deck_space': 108.9,\n", - " 'mass': 762.6,\n", - " 'unit_cost': 3431557\n", - " }\n", - "}\n", - "\n", - "module = MonopileInstallation(config)\n", - "module.run()\n", - "\n", - "print(f\"Installation CapEx: {module.installation_capex/1e6:.2f} M\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Simulation Logs" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# To import an installation module:\n", + "from ORBIT.phases.install import MonopileInstallation" + ] + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cost_multiplieragentactiondurationcostleveltimephasesite_depthhub_height
01.0WTIVMobilize168.0000001260000.00ACTION0.000000Monopile InstallationNaNNaN
1NaNWTIVFasten Monopile12.00000090000.00ACTION12.000000Monopile Installation25.0120.0
2NaNWTIVFasten Transition Piece8.00000060000.00ACTION20.000000Monopile Installation25.0120.0
3NaNWTIVFasten Monopile12.00000090000.00ACTION32.000000Monopile Installation25.0120.0
4NaNWTIVFasten Transition Piece8.00000060000.00ACTION40.000000Monopile Installation25.0120.0
5NaNWTIVFasten Monopile12.00000090000.00ACTION52.000000Monopile Installation25.0120.0
6NaNWTIVFasten Transition Piece8.00000060000.00ACTION60.000000Monopile Installation25.0120.0
7NaNWTIVFasten Monopile12.00000090000.00ACTION72.000000Monopile Installation25.0120.0
8NaNWTIVFasten Transition Piece8.00000060000.00ACTION80.000000Monopile Installation25.0120.0
9NaNWTIVTransit5.00000037500.00ACTION85.000000Monopile InstallationNaNNaN
10NaNWTIVPosition Onsite2.00000015000.00ACTION87.000000Monopile InstallationNaNNaN
11NaNWTIVJackup0.3333332500.00ACTION87.333333Monopile Installation25.0120.0
12NaNWTIVRovSurvey1.0000007500.00ACTION88.333333Monopile Installation25.0120.0
13NaNWTIVRelease Monopile3.00000022500.00ACTION91.333333Monopile InstallationNaNNaN
14NaNWTIVUpend Monopile0.7210005407.50ACTION92.054333Monopile Installation25.0120.0
15NaNWTIVLower Monopile0.00350026.25ACTION92.057833Monopile Installation25.0120.0
16NaNWTIVCrane Reequip1.0000007500.00ACTION93.057833Monopile Installation25.0120.0
17NaNWTIVDrive Monopile1.50000011250.00ACTION94.557833Monopile Installation25.0120.0
18NaNWTIVRelease Transition Piece2.00000015000.00ACTION96.557833Monopile InstallationNaNNaN
19NaNWTIVCrane Reequip1.0000007500.00ACTION97.557833Monopile Installation25.0120.0
20NaNWTIVLower TP1.0000007500.00ACTION98.557833Monopile Installation25.0120.0
21NaNWTIVBolt TP4.00000030000.00ACTION102.557833Monopile Installation25.0120.0
22NaNWTIVJackdown0.3333332500.00ACTION102.891167Monopile Installation25.0120.0
23NaNWTIVPosition Onsite2.00000015000.00ACTION104.891167Monopile InstallationNaNNaN
24NaNWTIVJackup0.3333332500.00ACTION105.224500Monopile Installation25.0120.0
\n", - "
" + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'wtiv': 'dict | str',\n", + " 'feeder': 'dict | str (optional)',\n", + " 'num_feeders': 'int (optional)',\n", + " 'site': {'depth': 'm', 'distance': 'km'},\n", + " 'plant': {'num_turbines': 'int'},\n", + " 'turbine': {'hub_height': 'm'},\n", + " 'port': {'num_cranes': 'int (optional, default: 1)',\n", + " 'monthly_rate': 'USD/mo (optional)',\n", + " 'name': 'str (optional)'},\n", + " 'monopile': {'length': 'm',\n", + " 'diameter': 'm',\n", + " 'deck_space': 'm2',\n", + " 'mass': 't',\n", + " 'unit_cost': 'USD'},\n", + " 'transition_piece': {'deck_space': 'm2', 'mass': 't', 'unit_cost': 'USD'}}" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " cost_multiplier agent action duration cost \\\n", - "0 1.0 WTIV Mobilize 168.000000 1260000.00 \n", - "1 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", - "2 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", - "3 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", - "4 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", - "5 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", - "6 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", - "7 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", - "8 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", - "9 NaN WTIV Transit 5.000000 37500.00 \n", - "10 NaN WTIV Position Onsite 2.000000 15000.00 \n", - "11 NaN WTIV Jackup 0.333333 2500.00 \n", - "12 NaN WTIV RovSurvey 1.000000 7500.00 \n", - "13 NaN WTIV Release Monopile 3.000000 22500.00 \n", - "14 NaN WTIV Upend Monopile 0.721000 5407.50 \n", - "15 NaN WTIV Lower Monopile 0.003500 26.25 \n", - "16 NaN WTIV Crane Reequip 1.000000 7500.00 \n", - "17 NaN WTIV Drive Monopile 1.500000 11250.00 \n", - "18 NaN WTIV Release Transition Piece 2.000000 15000.00 \n", - "19 NaN WTIV Crane Reequip 1.000000 7500.00 \n", - "20 NaN WTIV Lower TP 1.000000 7500.00 \n", - "21 NaN WTIV Bolt TP 4.000000 30000.00 \n", - "22 NaN WTIV Jackdown 0.333333 2500.00 \n", - "23 NaN WTIV Position Onsite 2.000000 15000.00 \n", - "24 NaN WTIV Jackup 0.333333 2500.00 \n", - "\n", - " level time phase site_depth hub_height \n", - "0 ACTION 0.000000 Monopile Installation NaN NaN \n", - "1 ACTION 12.000000 Monopile Installation 25.0 120.0 \n", - "2 ACTION 20.000000 Monopile Installation 25.0 120.0 \n", - "3 ACTION 32.000000 Monopile Installation 25.0 120.0 \n", - "4 ACTION 40.000000 Monopile Installation 25.0 120.0 \n", - "5 ACTION 52.000000 Monopile Installation 25.0 120.0 \n", - "6 ACTION 60.000000 Monopile Installation 25.0 120.0 \n", - "7 ACTION 72.000000 Monopile Installation 25.0 120.0 \n", - "8 ACTION 80.000000 Monopile Installation 25.0 120.0 \n", - "9 ACTION 85.000000 Monopile Installation NaN NaN \n", - "10 ACTION 87.000000 Monopile Installation NaN NaN \n", - "11 ACTION 87.333333 Monopile Installation 25.0 120.0 \n", - "12 ACTION 88.333333 Monopile Installation 25.0 120.0 \n", - "13 ACTION 91.333333 Monopile Installation NaN NaN \n", - "14 ACTION 92.054333 Monopile Installation 25.0 120.0 \n", - "15 ACTION 92.057833 Monopile Installation 25.0 120.0 \n", - "16 ACTION 93.057833 Monopile Installation 25.0 120.0 \n", - "17 ACTION 94.557833 Monopile Installation 25.0 120.0 \n", - "18 ACTION 96.557833 Monopile Installation NaN NaN \n", - "19 ACTION 97.557833 Monopile Installation 25.0 120.0 \n", - "20 ACTION 98.557833 Monopile Installation 25.0 120.0 \n", - "21 ACTION 102.557833 Monopile Installation 25.0 120.0 \n", - "22 ACTION 102.891167 Monopile Installation 25.0 120.0 \n", - "23 ACTION 104.891167 Monopile Installation NaN NaN \n", - "24 ACTION 105.224500 Monopile Installation 25.0 120.0 " + "source": [ + "# Expected config:\n", + "MonopileInstallation.expected_config" ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# The logs of all simulation steps taken by the vessel(s) are stored and available for analysis.\n", - "\n", - "# The following code returns a list of all actions with the associated agent (vessel), duration, cost, and time completed.\n", - "# Once we configure a weather file, this will also include any accrued weather delays.\n", - "\n", - "import pandas as pd\n", - "\n", - "df = pd.DataFrame(module.env.actions)\n", - "df.head(25)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Inlcude Weather" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "config_unfilled = {\n", + " 'site': { # Similar to the design module, inputs are grouped by category\n", + " 'depth': 'm', # Many of the inputs required are the same as the design module\n", + " 'distance': 'km'\n", + " },\n", + " \n", + " 'plant': {\n", + " 'num_turbines': 'int'\n", + " },\n", + " \n", + " 'turbine': {\n", + " 'hub_height': 'm'\n", + " },\n", + " \n", + " 'wtiv': 'dict | str', # The WTIV that will be installing the monopiles.\n", + " # Vessel are defined in the library in .yaml files.\n", + " \n", + " 'monopile': { # Notice that the result of the last module (monopile + transition piece sizing)\n", + " 'length': 'm', # is an input into the installation module.\n", + " 'diameter': 'm',\n", + " 'deck_space': 'm2',\n", + " 'mass': 't',\n", + " 'unit_cost': 'USD'\n", + " },\n", + " \n", + " 'transition_piece': {\n", + " 'deck_space': 'm2',\n", + " 'mass': 't',\n", + " 'unit_cost': 'USD'\n", + " }\n", + "}" + ] + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
windspeedwaveheight
datetime
2009-10-21 23:00:005.0752260.59
2009-10-22 00:00:005.4384000.65
2009-10-22 01:00:004.9470520.55
2009-10-22 02:00:004.3671950.57
2009-10-22 03:00:004.1352620.49
.........
2013-12-31 19:00:009.6041720.97
2013-12-31 20:00:009.8941040.97
2013-12-31 21:00:009.9093630.98
2013-12-31 22:00:0011.8564381.13
2013-12-31 23:00:0012.3691481.53
\n", - "

36769 rows × 2 columns

\n", - "
" + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installation CapEx: 21.94 M\n" + ] + } ], - "text/plain": [ - " windspeed waveheight\n", - "datetime \n", - "2009-10-21 23:00:00 5.075226 0.59\n", - "2009-10-22 00:00:00 5.438400 0.65\n", - "2009-10-22 01:00:00 4.947052 0.55\n", - "2009-10-22 02:00:00 4.367195 0.57\n", - "2009-10-22 03:00:00 4.135262 0.49\n", - "... ... ...\n", - "2013-12-31 19:00:00 9.604172 0.97\n", - "2013-12-31 20:00:00 9.894104 0.97\n", - "2013-12-31 21:00:00 9.909363 0.98\n", - "2013-12-31 22:00:00 11.856438 1.13\n", - "2013-12-31 23:00:00 12.369148 1.53\n", - "\n", - "[36769 rows x 2 columns]" + "source": [ + "config = {\n", + " 'site': {\n", + " 'depth': 25,\n", + " 'distance': 50\n", + " },\n", + " \n", + " 'plant': {\n", + " 'num_turbines': 50\n", + " },\n", + " \n", + " 'turbine': {\n", + " 'hub_height': 120\n", + " },\n", + " \n", + " 'wtiv': 'example_wtiv', # See 'example_wtiv.yaml'\n", + " \n", + " 'monopile': {\n", + " 'length': 72.1,\n", + " 'diameter': 10.2,\n", + " 'deck_space': 104.4,\n", + " 'mass': 1082.5,\n", + " 'unit_cost': 3788870\n", + " },\n", + " \n", + " 'transition_piece': {\n", + " 'deck_space': 108.9,\n", + " 'mass': 762.6,\n", + " 'unit_cost': 3431557\n", + " }\n", + "}\n", + "\n", + "module = MonopileInstallation(config)\n", + "module.run()\n", + "\n", + "print(f\"Installation CapEx: {module.installation_capex/1e6:.2f} M\")" ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Weather data can be loaded and included in the simulation. Each action can have associated weather\n", - "# constraints (eg. windspeed < 15 m/s, sig. waveheight < 2.5). As the simulation progresses, each action\n", - "# checks that it can proceed given the weather forecast. If the constraints are not met, the agent will\n", - "# accrue weather delays until they are.\n", - "\n", - "# To load a weather file:\n", - "weather = pd.read_csv(\"data/example_weather.csv\", parse_dates=['datetime']).set_index(\"datetime\")\n", - "weather" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Installation CapEx: 27.95 M\n" - ] - } - ], - "source": [ - "# To include weather in the simulation, pass it into the 'weather' keyword:\n", - "\n", - "module = MonopileInstallation(config, weather=weather)\n", - "module.run()\n", - "\n", - "print(f\"Installation CapEx: {module.installation_capex/1e6:.2f} M\")" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Simulation Logs" + ] + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cost_multiplieragentactiondurationcostleveltimephasesite_depthhub_height
01.0WTIVMobilize168.0000001260000.00ACTION0.000000Monopile InstallationNaNNaN
1NaNWTIVFasten Monopile12.00000090000.00ACTION12.000000Monopile Installation25.0120.0
2NaNWTIVFasten Transition Piece8.00000060000.00ACTION20.000000Monopile Installation25.0120.0
3NaNWTIVFasten Monopile12.00000090000.00ACTION32.000000Monopile Installation25.0120.0
4NaNWTIVFasten Transition Piece8.00000060000.00ACTION40.000000Monopile Installation25.0120.0
5NaNWTIVFasten Monopile12.00000090000.00ACTION52.000000Monopile Installation25.0120.0
6NaNWTIVFasten Transition Piece8.00000060000.00ACTION60.000000Monopile Installation25.0120.0
7NaNWTIVDelay29.000000217500.00ACTION89.000000Monopile Installation25.0120.0
8NaNWTIVFasten Monopile12.00000090000.00ACTION101.000000Monopile Installation25.0120.0
9NaNWTIVFasten Transition Piece8.00000060000.00ACTION109.000000Monopile Installation25.0120.0
10NaNWTIVTransit5.00000037500.00ACTION114.000000Monopile InstallationNaNNaN
11NaNWTIVPosition Onsite2.00000015000.00ACTION116.000000Monopile InstallationNaNNaN
12NaNWTIVJackup0.3333332500.00ACTION116.333333Monopile Installation25.0120.0
13NaNWTIVRovSurvey1.0000007500.00ACTION117.333333Monopile Installation25.0120.0
14NaNWTIVRelease Monopile3.00000022500.00ACTION120.333333Monopile InstallationNaNNaN
15NaNWTIVUpend Monopile0.7210005407.50ACTION121.054333Monopile Installation25.0120.0
16NaNWTIVLower Monopile0.00350026.25ACTION121.057833Monopile Installation25.0120.0
17NaNWTIVCrane Reequip1.0000007500.00ACTION122.057833Monopile Installation25.0120.0
18NaNWTIVDrive Monopile1.50000011250.00ACTION123.557833Monopile Installation25.0120.0
19NaNWTIVRelease Transition Piece2.00000015000.00ACTION125.557833Monopile InstallationNaNNaN
20NaNWTIVCrane Reequip1.0000007500.00ACTION126.557833Monopile Installation25.0120.0
21NaNWTIVLower TP1.0000007500.00ACTION127.557833Monopile Installation25.0120.0
22NaNWTIVBolt TP4.00000030000.00ACTION131.557833Monopile Installation25.0120.0
23NaNWTIVJackdown0.3333332500.00ACTION131.891167Monopile Installation25.0120.0
24NaNWTIVPosition Onsite2.00000015000.00ACTION133.891167Monopile InstallationNaNNaN
\n", - "
" + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cost_multiplieragentactiondurationcostleveltimephasesite_depthhub_height
01.0WTIVMobilize168.0000001260000.00ACTION0.000000Monopile InstallationNaNNaN
1NaNWTIVFasten Monopile12.00000090000.00ACTION12.000000Monopile Installation25.0120.0
2NaNWTIVFasten Transition Piece8.00000060000.00ACTION20.000000Monopile Installation25.0120.0
3NaNWTIVFasten Monopile12.00000090000.00ACTION32.000000Monopile Installation25.0120.0
4NaNWTIVFasten Transition Piece8.00000060000.00ACTION40.000000Monopile Installation25.0120.0
5NaNWTIVFasten Monopile12.00000090000.00ACTION52.000000Monopile Installation25.0120.0
6NaNWTIVFasten Transition Piece8.00000060000.00ACTION60.000000Monopile Installation25.0120.0
7NaNWTIVFasten Monopile12.00000090000.00ACTION72.000000Monopile Installation25.0120.0
8NaNWTIVFasten Transition Piece8.00000060000.00ACTION80.000000Monopile Installation25.0120.0
9NaNWTIVTransit5.00000037500.00ACTION85.000000Monopile InstallationNaNNaN
10NaNWTIVPosition Onsite2.00000015000.00ACTION87.000000Monopile InstallationNaNNaN
11NaNWTIVJackup0.3333332500.00ACTION87.333333Monopile Installation25.0120.0
12NaNWTIVRovSurvey1.0000007500.00ACTION88.333333Monopile Installation25.0120.0
13NaNWTIVRelease Monopile3.00000022500.00ACTION91.333333Monopile InstallationNaNNaN
14NaNWTIVUpend Monopile0.7210005407.50ACTION92.054333Monopile Installation25.0120.0
15NaNWTIVLower Monopile0.00350026.25ACTION92.057833Monopile Installation25.0120.0
16NaNWTIVCrane Reequip1.0000007500.00ACTION93.057833Monopile Installation25.0120.0
17NaNWTIVDrive Monopile1.50000011250.00ACTION94.557833Monopile Installation25.0120.0
18NaNWTIVRelease Transition Piece2.00000015000.00ACTION96.557833Monopile InstallationNaNNaN
19NaNWTIVCrane Reequip1.0000007500.00ACTION97.557833Monopile Installation25.0120.0
20NaNWTIVLower TP1.0000007500.00ACTION98.557833Monopile Installation25.0120.0
21NaNWTIVBolt TP4.00000030000.00ACTION102.557833Monopile Installation25.0120.0
22NaNWTIVJackdown0.3333332500.00ACTION102.891167Monopile Installation25.0120.0
23NaNWTIVPosition Onsite2.00000015000.00ACTION104.891167Monopile InstallationNaNNaN
24NaNWTIVJackup0.3333332500.00ACTION105.224500Monopile Installation25.0120.0
\n", + "
" + ], + "text/plain": [ + " cost_multiplier agent action duration cost \\\n", + "0 1.0 WTIV Mobilize 168.000000 1260000.00 \n", + "1 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", + "2 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", + "3 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", + "4 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", + "5 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", + "6 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", + "7 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", + "8 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", + "9 NaN WTIV Transit 5.000000 37500.00 \n", + "10 NaN WTIV Position Onsite 2.000000 15000.00 \n", + "11 NaN WTIV Jackup 0.333333 2500.00 \n", + "12 NaN WTIV RovSurvey 1.000000 7500.00 \n", + "13 NaN WTIV Release Monopile 3.000000 22500.00 \n", + "14 NaN WTIV Upend Monopile 0.721000 5407.50 \n", + "15 NaN WTIV Lower Monopile 0.003500 26.25 \n", + "16 NaN WTIV Crane Reequip 1.000000 7500.00 \n", + "17 NaN WTIV Drive Monopile 1.500000 11250.00 \n", + "18 NaN WTIV Release Transition Piece 2.000000 15000.00 \n", + "19 NaN WTIV Crane Reequip 1.000000 7500.00 \n", + "20 NaN WTIV Lower TP 1.000000 7500.00 \n", + "21 NaN WTIV Bolt TP 4.000000 30000.00 \n", + "22 NaN WTIV Jackdown 0.333333 2500.00 \n", + "23 NaN WTIV Position Onsite 2.000000 15000.00 \n", + "24 NaN WTIV Jackup 0.333333 2500.00 \n", + "\n", + " level time phase site_depth hub_height \n", + "0 ACTION 0.000000 Monopile Installation NaN NaN \n", + "1 ACTION 12.000000 Monopile Installation 25.0 120.0 \n", + "2 ACTION 20.000000 Monopile Installation 25.0 120.0 \n", + "3 ACTION 32.000000 Monopile Installation 25.0 120.0 \n", + "4 ACTION 40.000000 Monopile Installation 25.0 120.0 \n", + "5 ACTION 52.000000 Monopile Installation 25.0 120.0 \n", + "6 ACTION 60.000000 Monopile Installation 25.0 120.0 \n", + "7 ACTION 72.000000 Monopile Installation 25.0 120.0 \n", + "8 ACTION 80.000000 Monopile Installation 25.0 120.0 \n", + "9 ACTION 85.000000 Monopile Installation NaN NaN \n", + "10 ACTION 87.000000 Monopile Installation NaN NaN \n", + "11 ACTION 87.333333 Monopile Installation 25.0 120.0 \n", + "12 ACTION 88.333333 Monopile Installation 25.0 120.0 \n", + "13 ACTION 91.333333 Monopile Installation NaN NaN \n", + "14 ACTION 92.054333 Monopile Installation 25.0 120.0 \n", + "15 ACTION 92.057833 Monopile Installation 25.0 120.0 \n", + "16 ACTION 93.057833 Monopile Installation 25.0 120.0 \n", + "17 ACTION 94.557833 Monopile Installation 25.0 120.0 \n", + "18 ACTION 96.557833 Monopile Installation NaN NaN \n", + "19 ACTION 97.557833 Monopile Installation 25.0 120.0 \n", + "20 ACTION 98.557833 Monopile Installation 25.0 120.0 \n", + "21 ACTION 102.557833 Monopile Installation 25.0 120.0 \n", + "22 ACTION 102.891167 Monopile Installation 25.0 120.0 \n", + "23 ACTION 104.891167 Monopile Installation NaN NaN \n", + "24 ACTION 105.224500 Monopile Installation 25.0 120.0 " + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " cost_multiplier agent action duration cost \\\n", - "0 1.0 WTIV Mobilize 168.000000 1260000.00 \n", - "1 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", - "2 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", - "3 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", - "4 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", - "5 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", - "6 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", - "7 NaN WTIV Delay 29.000000 217500.00 \n", - "8 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", - "9 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", - "10 NaN WTIV Transit 5.000000 37500.00 \n", - "11 NaN WTIV Position Onsite 2.000000 15000.00 \n", - "12 NaN WTIV Jackup 0.333333 2500.00 \n", - "13 NaN WTIV RovSurvey 1.000000 7500.00 \n", - "14 NaN WTIV Release Monopile 3.000000 22500.00 \n", - "15 NaN WTIV Upend Monopile 0.721000 5407.50 \n", - "16 NaN WTIV Lower Monopile 0.003500 26.25 \n", - "17 NaN WTIV Crane Reequip 1.000000 7500.00 \n", - "18 NaN WTIV Drive Monopile 1.500000 11250.00 \n", - "19 NaN WTIV Release Transition Piece 2.000000 15000.00 \n", - "20 NaN WTIV Crane Reequip 1.000000 7500.00 \n", - "21 NaN WTIV Lower TP 1.000000 7500.00 \n", - "22 NaN WTIV Bolt TP 4.000000 30000.00 \n", - "23 NaN WTIV Jackdown 0.333333 2500.00 \n", - "24 NaN WTIV Position Onsite 2.000000 15000.00 \n", - "\n", - " level time phase site_depth hub_height \n", - "0 ACTION 0.000000 Monopile Installation NaN NaN \n", - "1 ACTION 12.000000 Monopile Installation 25.0 120.0 \n", - "2 ACTION 20.000000 Monopile Installation 25.0 120.0 \n", - "3 ACTION 32.000000 Monopile Installation 25.0 120.0 \n", - "4 ACTION 40.000000 Monopile Installation 25.0 120.0 \n", - "5 ACTION 52.000000 Monopile Installation 25.0 120.0 \n", - "6 ACTION 60.000000 Monopile Installation 25.0 120.0 \n", - "7 ACTION 89.000000 Monopile Installation 25.0 120.0 \n", - "8 ACTION 101.000000 Monopile Installation 25.0 120.0 \n", - "9 ACTION 109.000000 Monopile Installation 25.0 120.0 \n", - "10 ACTION 114.000000 Monopile Installation NaN NaN \n", - "11 ACTION 116.000000 Monopile Installation NaN NaN \n", - "12 ACTION 116.333333 Monopile Installation 25.0 120.0 \n", - "13 ACTION 117.333333 Monopile Installation 25.0 120.0 \n", - "14 ACTION 120.333333 Monopile Installation NaN NaN \n", - "15 ACTION 121.054333 Monopile Installation 25.0 120.0 \n", - "16 ACTION 121.057833 Monopile Installation 25.0 120.0 \n", - "17 ACTION 122.057833 Monopile Installation 25.0 120.0 \n", - "18 ACTION 123.557833 Monopile Installation 25.0 120.0 \n", - "19 ACTION 125.557833 Monopile Installation NaN NaN \n", - "20 ACTION 126.557833 Monopile Installation 25.0 120.0 \n", - "21 ACTION 127.557833 Monopile Installation 25.0 120.0 \n", - "22 ACTION 131.557833 Monopile Installation 25.0 120.0 \n", - "23 ACTION 131.891167 Monopile Installation 25.0 120.0 \n", - "24 ACTION 133.891167 Monopile Installation NaN NaN " + "source": [ + "# The logs of all simulation steps taken by the vessel(s) are stored and available for analysis.\n", + "\n", + "# The following code returns a list of all actions with the associated agent (vessel), duration, cost, and time completed.\n", + "# Once we configure a weather file, this will also include any accrued weather delays.\n", + "\n", + "import pandas as pd\n", + "\n", + "df = pd.DataFrame(module.env.actions)\n", + "df.head(25)" ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = pd.DataFrame(module.env.actions)\n", - "df.head(25) # Note the weather delay on line 7" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Including Feeder Barges" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Installation CapEx: 23.02 M\n" - ] - } - ], - "source": [ - "# The MonopileInstallation module can also be configured to use a WTIV + Feeder Barge installation strategy.\n", - "# To configure this module to use feeder barges, add the 'num_feeders' and 'feeder' input to the config:\n", - "\n", - "config = {\n", - " 'site': {\n", - " 'depth': 25,\n", - " 'distance': 50\n", - " },\n", - " \n", - " 'plant': {\n", - " 'num_turbines': 50\n", - " },\n", - " \n", - " 'turbine': {\n", - " 'hub_height': 120\n", - " },\n", - " \n", - " # --- Vessels ---\n", - " 'wtiv': 'example_wtiv',\n", - " 'feeder': 'example_feeder',\n", - " 'num_feeders': 2,\n", - " \n", - " 'monopile': {\n", - " 'length': 72.1,\n", - " 'diameter': 10.2,\n", - " 'deck_space': 104.4,\n", - " 'mass': 1082.5,\n", - " 'unit_cost': 3788870\n", - " },\n", - " \n", - " 'transition_piece': {\n", - " 'deck_space': 108.9,\n", - " 'mass': 762.6,\n", - " 'unit_cost': 3431557\n", - " }\n", - "}\n", - "\n", - "module = MonopileInstallation(config)\n", - "module.run()\n", - "\n", - "print(f\"Installation CapEx: {module.installation_capex/1e6:.2f} M\")" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Inlcude Weather" + ] + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cost_multiplieragentactiondurationcostleveltimephaselocationsite_depth
01.0WTIVMobilize168.0000001.260000e+06ACTION0.000000Monopile InstallationNaNNaN
10.5Feeder 0Mobilize72.0000001.125000e+05ACTION0.000000Monopile InstallationNaNNaN
20.5Feeder 1Mobilize72.0000001.125000e+05ACTION0.000000Monopile InstallationNaNNaN
3NaNWTIVTransit5.0000003.750000e+04ACTION5.000000Monopile InstallationNaNNaN
4NaNFeeder 0Fasten Monopile12.0000003.750000e+04ACTION12.000000Monopile InstallationNaNNaN
5NaNFeeder 0Fasten Transition Piece8.0000002.500000e+04ACTION20.000000Monopile InstallationNaNNaN
6NaNFeeder 1Queue20.0000006.250000e+04ACTION20.000000Monopile InstallationNaNNaN
7NaNFeeder 0Transit8.3333332.604167e+04ACTION28.333333Monopile InstallationNaNNaN
8NaNFeeder 0Jackup1.6666675.208333e+03ACTION30.000000Monopile InstallationNaNNaN
9NaNWTIVDelay25.0000001.875000e+05ACTION30.000000Monopile InstallationSiteNaN
10NaNFeeder 1Fasten Monopile12.0000003.750000e+04ACTION32.000000Monopile InstallationNaNNaN
11NaNWTIVPosition Onsite2.0000001.500000e+04ACTION32.000000Monopile InstallationNaNNaN
12NaNWTIVJackup0.3333332.500000e+03ACTION32.333333Monopile InstallationNaN25.0
13NaNWTIVRovSurvey1.0000007.500000e+03ACTION33.333333Monopile InstallationNaN25.0
14NaNWTIVRelease Monopile3.0000002.250000e+04ACTION36.333333Monopile InstallationNaNNaN
15NaNWTIVUpend Monopile0.7210005.407500e+03ACTION37.054333Monopile InstallationNaN25.0
16NaNWTIVLower Monopile0.0035002.625000e+01ACTION37.057833Monopile InstallationNaN25.0
17NaNWTIVCrane Reequip1.0000007.500000e+03ACTION38.057833Monopile InstallationNaN25.0
18NaNWTIVDrive Monopile1.5000001.125000e+04ACTION39.557833Monopile InstallationNaN25.0
19NaNFeeder 1Fasten Transition Piece8.0000002.500000e+04ACTION40.000000Monopile InstallationNaNNaN
20NaNWTIVRelease Transition Piece2.0000001.500000e+04ACTION41.557833Monopile InstallationNaNNaN
21NaNFeeder 0ActiveFeeder11.5578333.611823e+04ACTION41.557833Monopile InstallationSiteNaN
22NaNWTIVCrane Reequip1.0000007.500000e+03ACTION42.557833Monopile InstallationNaN25.0
23NaNFeeder 0Jackdown1.6666675.208333e+03ACTION43.224500Monopile InstallationNaNNaN
24NaNWTIVLower TP1.0000007.500000e+03ACTION43.557833Monopile InstallationNaN25.0
\n", - "
" + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
windspeedwaveheight
datetime
2009-10-21 23:00:005.0752260.59
2009-10-22 00:00:005.4384000.65
2009-10-22 01:00:004.9470520.55
2009-10-22 02:00:004.3671950.57
2009-10-22 03:00:004.1352620.49
.........
2013-12-31 19:00:009.6041720.97
2013-12-31 20:00:009.8941040.97
2013-12-31 21:00:009.9093630.98
2013-12-31 22:00:0011.8564381.13
2013-12-31 23:00:0012.3691481.53
\n", + "

36769 rows \u00d7 2 columns

\n", + "
" + ], + "text/plain": [ + " windspeed waveheight\n", + "datetime \n", + "2009-10-21 23:00:00 5.075226 0.59\n", + "2009-10-22 00:00:00 5.438400 0.65\n", + "2009-10-22 01:00:00 4.947052 0.55\n", + "2009-10-22 02:00:00 4.367195 0.57\n", + "2009-10-22 03:00:00 4.135262 0.49\n", + "... ... ...\n", + "2013-12-31 19:00:00 9.604172 0.97\n", + "2013-12-31 20:00:00 9.894104 0.97\n", + "2013-12-31 21:00:00 9.909363 0.98\n", + "2013-12-31 22:00:00 11.856438 1.13\n", + "2013-12-31 23:00:00 12.369148 1.53\n", + "\n", + "[36769 rows x 2 columns]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " cost_multiplier agent action duration \\\n", - "0 1.0 WTIV Mobilize 168.000000 \n", - "1 0.5 Feeder 0 Mobilize 72.000000 \n", - "2 0.5 Feeder 1 Mobilize 72.000000 \n", - "3 NaN WTIV Transit 5.000000 \n", - "4 NaN Feeder 0 Fasten Monopile 12.000000 \n", - "5 NaN Feeder 0 Fasten Transition Piece 8.000000 \n", - "6 NaN Feeder 1 Queue 20.000000 \n", - "7 NaN Feeder 0 Transit 8.333333 \n", - "8 NaN Feeder 0 Jackup 1.666667 \n", - "9 NaN WTIV Delay 25.000000 \n", - "10 NaN Feeder 1 Fasten Monopile 12.000000 \n", - "11 NaN WTIV Position Onsite 2.000000 \n", - "12 NaN WTIV Jackup 0.333333 \n", - "13 NaN WTIV RovSurvey 1.000000 \n", - "14 NaN WTIV Release Monopile 3.000000 \n", - "15 NaN WTIV Upend Monopile 0.721000 \n", - "16 NaN WTIV Lower Monopile 0.003500 \n", - "17 NaN WTIV Crane Reequip 1.000000 \n", - "18 NaN WTIV Drive Monopile 1.500000 \n", - "19 NaN Feeder 1 Fasten Transition Piece 8.000000 \n", - "20 NaN WTIV Release Transition Piece 2.000000 \n", - "21 NaN Feeder 0 ActiveFeeder 11.557833 \n", - "22 NaN WTIV Crane Reequip 1.000000 \n", - "23 NaN Feeder 0 Jackdown 1.666667 \n", - "24 NaN WTIV Lower TP 1.000000 \n", - "\n", - " cost level time phase location \\\n", - "0 1.260000e+06 ACTION 0.000000 Monopile Installation NaN \n", - "1 1.125000e+05 ACTION 0.000000 Monopile Installation NaN \n", - "2 1.125000e+05 ACTION 0.000000 Monopile Installation NaN \n", - "3 3.750000e+04 ACTION 5.000000 Monopile Installation NaN \n", - "4 3.750000e+04 ACTION 12.000000 Monopile Installation NaN \n", - "5 2.500000e+04 ACTION 20.000000 Monopile Installation NaN \n", - "6 6.250000e+04 ACTION 20.000000 Monopile Installation NaN \n", - "7 2.604167e+04 ACTION 28.333333 Monopile Installation NaN \n", - "8 5.208333e+03 ACTION 30.000000 Monopile Installation NaN \n", - "9 1.875000e+05 ACTION 30.000000 Monopile Installation Site \n", - "10 3.750000e+04 ACTION 32.000000 Monopile Installation NaN \n", - "11 1.500000e+04 ACTION 32.000000 Monopile Installation NaN \n", - "12 2.500000e+03 ACTION 32.333333 Monopile Installation NaN \n", - "13 7.500000e+03 ACTION 33.333333 Monopile Installation NaN \n", - "14 2.250000e+04 ACTION 36.333333 Monopile Installation NaN \n", - "15 5.407500e+03 ACTION 37.054333 Monopile Installation NaN \n", - "16 2.625000e+01 ACTION 37.057833 Monopile Installation NaN \n", - "17 7.500000e+03 ACTION 38.057833 Monopile Installation NaN \n", - "18 1.125000e+04 ACTION 39.557833 Monopile Installation NaN \n", - "19 2.500000e+04 ACTION 40.000000 Monopile Installation NaN \n", - "20 1.500000e+04 ACTION 41.557833 Monopile Installation NaN \n", - "21 3.611823e+04 ACTION 41.557833 Monopile Installation Site \n", - "22 7.500000e+03 ACTION 42.557833 Monopile Installation NaN \n", - "23 5.208333e+03 ACTION 43.224500 Monopile Installation NaN \n", - "24 7.500000e+03 ACTION 43.557833 Monopile Installation NaN \n", - "\n", - " site_depth \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "5 NaN \n", - "6 NaN \n", - "7 NaN \n", - "8 NaN \n", - "9 NaN \n", - "10 NaN \n", - "11 NaN \n", - "12 25.0 \n", - "13 25.0 \n", - "14 NaN \n", - "15 25.0 \n", - "16 25.0 \n", - "17 25.0 \n", - "18 25.0 \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 25.0 \n", - "23 NaN \n", - "24 25.0 " + "source": [ + "# Weather data can be loaded and included in the simulation. Each action can have associated weather\n", + "# constraints (eg. windspeed < 15 m/s, sig. waveheight < 2.5). As the simulation progresses, each action\n", + "# checks that it can proceed given the weather forecast. If the constraints are not met, the agent will\n", + "# accrue weather delays until they are.\n", + "\n", + "# To load a weather file:\n", + "weather = pd.read_csv(\"data/example_weather.csv\", parse_dates=['datetime']).set_index(\"datetime\")\n", + "weather" ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installation CapEx: 27.95 M\n" + ] + } + ], + "source": [ + "# To include weather in the simulation, pass it into the 'weather' keyword:\n", + "\n", + "module = MonopileInstallation(config, weather=weather)\n", + "module.run()\n", + "\n", + "print(f\"Installation CapEx: {module.installation_capex/1e6:.2f} M\")" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cost_multiplieragentactiondurationcostleveltimephasesite_depthhub_height
01.0WTIVMobilize168.0000001260000.00ACTION0.000000Monopile InstallationNaNNaN
1NaNWTIVFasten Monopile12.00000090000.00ACTION12.000000Monopile Installation25.0120.0
2NaNWTIVFasten Transition Piece8.00000060000.00ACTION20.000000Monopile Installation25.0120.0
3NaNWTIVFasten Monopile12.00000090000.00ACTION32.000000Monopile Installation25.0120.0
4NaNWTIVFasten Transition Piece8.00000060000.00ACTION40.000000Monopile Installation25.0120.0
5NaNWTIVFasten Monopile12.00000090000.00ACTION52.000000Monopile Installation25.0120.0
6NaNWTIVFasten Transition Piece8.00000060000.00ACTION60.000000Monopile Installation25.0120.0
7NaNWTIVDelay29.000000217500.00ACTION89.000000Monopile Installation25.0120.0
8NaNWTIVFasten Monopile12.00000090000.00ACTION101.000000Monopile Installation25.0120.0
9NaNWTIVFasten Transition Piece8.00000060000.00ACTION109.000000Monopile Installation25.0120.0
10NaNWTIVTransit5.00000037500.00ACTION114.000000Monopile InstallationNaNNaN
11NaNWTIVPosition Onsite2.00000015000.00ACTION116.000000Monopile InstallationNaNNaN
12NaNWTIVJackup0.3333332500.00ACTION116.333333Monopile Installation25.0120.0
13NaNWTIVRovSurvey1.0000007500.00ACTION117.333333Monopile Installation25.0120.0
14NaNWTIVRelease Monopile3.00000022500.00ACTION120.333333Monopile InstallationNaNNaN
15NaNWTIVUpend Monopile0.7210005407.50ACTION121.054333Monopile Installation25.0120.0
16NaNWTIVLower Monopile0.00350026.25ACTION121.057833Monopile Installation25.0120.0
17NaNWTIVCrane Reequip1.0000007500.00ACTION122.057833Monopile Installation25.0120.0
18NaNWTIVDrive Monopile1.50000011250.00ACTION123.557833Monopile Installation25.0120.0
19NaNWTIVRelease Transition Piece2.00000015000.00ACTION125.557833Monopile InstallationNaNNaN
20NaNWTIVCrane Reequip1.0000007500.00ACTION126.557833Monopile Installation25.0120.0
21NaNWTIVLower TP1.0000007500.00ACTION127.557833Monopile Installation25.0120.0
22NaNWTIVBolt TP4.00000030000.00ACTION131.557833Monopile Installation25.0120.0
23NaNWTIVJackdown0.3333332500.00ACTION131.891167Monopile Installation25.0120.0
24NaNWTIVPosition Onsite2.00000015000.00ACTION133.891167Monopile InstallationNaNNaN
\n", + "
" + ], + "text/plain": [ + " cost_multiplier agent action duration cost \\\n", + "0 1.0 WTIV Mobilize 168.000000 1260000.00 \n", + "1 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", + "2 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", + "3 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", + "4 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", + "5 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", + "6 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", + "7 NaN WTIV Delay 29.000000 217500.00 \n", + "8 NaN WTIV Fasten Monopile 12.000000 90000.00 \n", + "9 NaN WTIV Fasten Transition Piece 8.000000 60000.00 \n", + "10 NaN WTIV Transit 5.000000 37500.00 \n", + "11 NaN WTIV Position Onsite 2.000000 15000.00 \n", + "12 NaN WTIV Jackup 0.333333 2500.00 \n", + "13 NaN WTIV RovSurvey 1.000000 7500.00 \n", + "14 NaN WTIV Release Monopile 3.000000 22500.00 \n", + "15 NaN WTIV Upend Monopile 0.721000 5407.50 \n", + "16 NaN WTIV Lower Monopile 0.003500 26.25 \n", + "17 NaN WTIV Crane Reequip 1.000000 7500.00 \n", + "18 NaN WTIV Drive Monopile 1.500000 11250.00 \n", + "19 NaN WTIV Release Transition Piece 2.000000 15000.00 \n", + "20 NaN WTIV Crane Reequip 1.000000 7500.00 \n", + "21 NaN WTIV Lower TP 1.000000 7500.00 \n", + "22 NaN WTIV Bolt TP 4.000000 30000.00 \n", + "23 NaN WTIV Jackdown 0.333333 2500.00 \n", + "24 NaN WTIV Position Onsite 2.000000 15000.00 \n", + "\n", + " level time phase site_depth hub_height \n", + "0 ACTION 0.000000 Monopile Installation NaN NaN \n", + "1 ACTION 12.000000 Monopile Installation 25.0 120.0 \n", + "2 ACTION 20.000000 Monopile Installation 25.0 120.0 \n", + "3 ACTION 32.000000 Monopile Installation 25.0 120.0 \n", + "4 ACTION 40.000000 Monopile Installation 25.0 120.0 \n", + "5 ACTION 52.000000 Monopile Installation 25.0 120.0 \n", + "6 ACTION 60.000000 Monopile Installation 25.0 120.0 \n", + "7 ACTION 89.000000 Monopile Installation 25.0 120.0 \n", + "8 ACTION 101.000000 Monopile Installation 25.0 120.0 \n", + "9 ACTION 109.000000 Monopile Installation 25.0 120.0 \n", + "10 ACTION 114.000000 Monopile Installation NaN NaN \n", + "11 ACTION 116.000000 Monopile Installation NaN NaN \n", + "12 ACTION 116.333333 Monopile Installation 25.0 120.0 \n", + "13 ACTION 117.333333 Monopile Installation 25.0 120.0 \n", + "14 ACTION 120.333333 Monopile Installation NaN NaN \n", + "15 ACTION 121.054333 Monopile Installation 25.0 120.0 \n", + "16 ACTION 121.057833 Monopile Installation 25.0 120.0 \n", + "17 ACTION 122.057833 Monopile Installation 25.0 120.0 \n", + "18 ACTION 123.557833 Monopile Installation 25.0 120.0 \n", + "19 ACTION 125.557833 Monopile Installation NaN NaN \n", + "20 ACTION 126.557833 Monopile Installation 25.0 120.0 \n", + "21 ACTION 127.557833 Monopile Installation 25.0 120.0 \n", + "22 ACTION 131.557833 Monopile Installation 25.0 120.0 \n", + "23 ACTION 131.891167 Monopile Installation 25.0 120.0 \n", + "24 ACTION 133.891167 Monopile Installation NaN NaN " + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.DataFrame(module.env.actions)\n", + "df.head(25) # Note the weather delay on line 7" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Including Feeder Barges" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installation CapEx: 23.02 M\n" + ] + } + ], + "source": [ + "# The MonopileInstallation module can also be configured to use a WTIV + Feeder Barge installation strategy.\n", + "# To configure this module to use feeder barges, add the 'num_feeders' and 'feeder' input to the config:\n", + "\n", + "config = {\n", + " 'site': {\n", + " 'depth': 25,\n", + " 'distance': 50\n", + " },\n", + " \n", + " 'plant': {\n", + " 'num_turbines': 50\n", + " },\n", + " \n", + " 'turbine': {\n", + " 'hub_height': 120\n", + " },\n", + " \n", + " # --- Vessels ---\n", + " 'wtiv': 'example_wtiv',\n", + " 'feeder': 'example_feeder',\n", + " 'num_feeders': 2,\n", + " \n", + " 'monopile': {\n", + " 'length': 72.1,\n", + " 'diameter': 10.2,\n", + " 'deck_space': 104.4,\n", + " 'mass': 1082.5,\n", + " 'unit_cost': 3788870\n", + " },\n", + " \n", + " 'transition_piece': {\n", + " 'deck_space': 108.9,\n", + " 'mass': 762.6,\n", + " 'unit_cost': 3431557\n", + " }\n", + "}\n", + "\n", + "module = MonopileInstallation(config)\n", + "module.run()\n", + "\n", + "print(f\"Installation CapEx: {module.installation_capex/1e6:.2f} M\")" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cost_multiplieragentactiondurationcostleveltimephaselocationsite_depth
01.0WTIVMobilize168.0000001.260000e+06ACTION0.000000Monopile InstallationNaNNaN
10.5Feeder 0Mobilize72.0000001.125000e+05ACTION0.000000Monopile InstallationNaNNaN
20.5Feeder 1Mobilize72.0000001.125000e+05ACTION0.000000Monopile InstallationNaNNaN
3NaNWTIVTransit5.0000003.750000e+04ACTION5.000000Monopile InstallationNaNNaN
4NaNFeeder 0Fasten Monopile12.0000003.750000e+04ACTION12.000000Monopile InstallationNaNNaN
5NaNFeeder 0Fasten Transition Piece8.0000002.500000e+04ACTION20.000000Monopile InstallationNaNNaN
6NaNFeeder 1Queue20.0000006.250000e+04ACTION20.000000Monopile InstallationNaNNaN
7NaNFeeder 0Transit8.3333332.604167e+04ACTION28.333333Monopile InstallationNaNNaN
8NaNFeeder 0Jackup1.6666675.208333e+03ACTION30.000000Monopile InstallationNaNNaN
9NaNWTIVDelay25.0000001.875000e+05ACTION30.000000Monopile InstallationSiteNaN
10NaNFeeder 1Fasten Monopile12.0000003.750000e+04ACTION32.000000Monopile InstallationNaNNaN
11NaNWTIVPosition Onsite2.0000001.500000e+04ACTION32.000000Monopile InstallationNaNNaN
12NaNWTIVJackup0.3333332.500000e+03ACTION32.333333Monopile InstallationNaN25.0
13NaNWTIVRovSurvey1.0000007.500000e+03ACTION33.333333Monopile InstallationNaN25.0
14NaNWTIVRelease Monopile3.0000002.250000e+04ACTION36.333333Monopile InstallationNaNNaN
15NaNWTIVUpend Monopile0.7210005.407500e+03ACTION37.054333Monopile InstallationNaN25.0
16NaNWTIVLower Monopile0.0035002.625000e+01ACTION37.057833Monopile InstallationNaN25.0
17NaNWTIVCrane Reequip1.0000007.500000e+03ACTION38.057833Monopile InstallationNaN25.0
18NaNWTIVDrive Monopile1.5000001.125000e+04ACTION39.557833Monopile InstallationNaN25.0
19NaNFeeder 1Fasten Transition Piece8.0000002.500000e+04ACTION40.000000Monopile InstallationNaNNaN
20NaNWTIVRelease Transition Piece2.0000001.500000e+04ACTION41.557833Monopile InstallationNaNNaN
21NaNFeeder 0ActiveFeeder11.5578333.611823e+04ACTION41.557833Monopile InstallationSiteNaN
22NaNWTIVCrane Reequip1.0000007.500000e+03ACTION42.557833Monopile InstallationNaN25.0
23NaNFeeder 0Jackdown1.6666675.208333e+03ACTION43.224500Monopile InstallationNaNNaN
24NaNWTIVLower TP1.0000007.500000e+03ACTION43.557833Monopile InstallationNaN25.0
\n", + "
" + ], + "text/plain": [ + " cost_multiplier agent action duration \\\n", + "0 1.0 WTIV Mobilize 168.000000 \n", + "1 0.5 Feeder 0 Mobilize 72.000000 \n", + "2 0.5 Feeder 1 Mobilize 72.000000 \n", + "3 NaN WTIV Transit 5.000000 \n", + "4 NaN Feeder 0 Fasten Monopile 12.000000 \n", + "5 NaN Feeder 0 Fasten Transition Piece 8.000000 \n", + "6 NaN Feeder 1 Queue 20.000000 \n", + "7 NaN Feeder 0 Transit 8.333333 \n", + "8 NaN Feeder 0 Jackup 1.666667 \n", + "9 NaN WTIV Delay 25.000000 \n", + "10 NaN Feeder 1 Fasten Monopile 12.000000 \n", + "11 NaN WTIV Position Onsite 2.000000 \n", + "12 NaN WTIV Jackup 0.333333 \n", + "13 NaN WTIV RovSurvey 1.000000 \n", + "14 NaN WTIV Release Monopile 3.000000 \n", + "15 NaN WTIV Upend Monopile 0.721000 \n", + "16 NaN WTIV Lower Monopile 0.003500 \n", + "17 NaN WTIV Crane Reequip 1.000000 \n", + "18 NaN WTIV Drive Monopile 1.500000 \n", + "19 NaN Feeder 1 Fasten Transition Piece 8.000000 \n", + "20 NaN WTIV Release Transition Piece 2.000000 \n", + "21 NaN Feeder 0 ActiveFeeder 11.557833 \n", + "22 NaN WTIV Crane Reequip 1.000000 \n", + "23 NaN Feeder 0 Jackdown 1.666667 \n", + "24 NaN WTIV Lower TP 1.000000 \n", + "\n", + " cost level time phase location \\\n", + "0 1.260000e+06 ACTION 0.000000 Monopile Installation NaN \n", + "1 1.125000e+05 ACTION 0.000000 Monopile Installation NaN \n", + "2 1.125000e+05 ACTION 0.000000 Monopile Installation NaN \n", + "3 3.750000e+04 ACTION 5.000000 Monopile Installation NaN \n", + "4 3.750000e+04 ACTION 12.000000 Monopile Installation NaN \n", + "5 2.500000e+04 ACTION 20.000000 Monopile Installation NaN \n", + "6 6.250000e+04 ACTION 20.000000 Monopile Installation NaN \n", + "7 2.604167e+04 ACTION 28.333333 Monopile Installation NaN \n", + "8 5.208333e+03 ACTION 30.000000 Monopile Installation NaN \n", + "9 1.875000e+05 ACTION 30.000000 Monopile Installation Site \n", + "10 3.750000e+04 ACTION 32.000000 Monopile Installation NaN \n", + "11 1.500000e+04 ACTION 32.000000 Monopile Installation NaN \n", + "12 2.500000e+03 ACTION 32.333333 Monopile Installation NaN \n", + "13 7.500000e+03 ACTION 33.333333 Monopile Installation NaN \n", + "14 2.250000e+04 ACTION 36.333333 Monopile Installation NaN \n", + "15 5.407500e+03 ACTION 37.054333 Monopile Installation NaN \n", + "16 2.625000e+01 ACTION 37.057833 Monopile Installation NaN \n", + "17 7.500000e+03 ACTION 38.057833 Monopile Installation NaN \n", + "18 1.125000e+04 ACTION 39.557833 Monopile Installation NaN \n", + "19 2.500000e+04 ACTION 40.000000 Monopile Installation NaN \n", + "20 1.500000e+04 ACTION 41.557833 Monopile Installation NaN \n", + "21 3.611823e+04 ACTION 41.557833 Monopile Installation Site \n", + "22 7.500000e+03 ACTION 42.557833 Monopile Installation NaN \n", + "23 5.208333e+03 ACTION 43.224500 Monopile Installation NaN \n", + "24 7.500000e+03 ACTION 43.557833 Monopile Installation NaN \n", + "\n", + " site_depth \n", + "0 NaN \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", + "5 NaN \n", + "6 NaN \n", + "7 NaN \n", + "8 NaN \n", + "9 NaN \n", + "10 NaN \n", + "11 NaN \n", + "12 25.0 \n", + "13 25.0 \n", + "14 NaN \n", + "15 25.0 \n", + "16 25.0 \n", + "17 25.0 \n", + "18 25.0 \n", + "19 NaN \n", + "20 NaN \n", + "21 NaN \n", + "22 25.0 \n", + "23 NaN \n", + "24 25.0 " + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.DataFrame(module.env.actions)\n", + "df.head(25) # Note that there are no actions for two feeder barges interwoven into the actions list" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" } - ], - "source": [ - "df = pd.DataFrame(module.env.actions)\n", - "df.head(25) # Note that there are no actions for two feeder barges interwoven into the actions list" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/examples/3. ProjectManager Introduction.ipynb b/examples/3. ProjectManager Introduction.ipynb index 5998460f..ea5ed34e 100644 --- a/examples/3. ProjectManager Introduction.ipynb +++ b/examples/3. ProjectManager Introduction.ipynb @@ -1,201 +1,263 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### ProjectManager\n", - "\n", - "ProjectManager is used to interact with multiple modules within ORBIT. This class allows any combination of modules to be configured and ran together to represent an entire project in ORBIT. It handles the configuration of each module and maps outputs of design modules into installation modules where necessary. This tutorial goes through how to build up a project level configuration using ProjectManager." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from ORBIT import ProjectManager" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ + "cells": [ { - "data": { - "text/plain": [ - "{'wtiv': 'dict | str',\n", - " 'feeder': 'dict | str (optional)',\n", - " 'num_feeders': 'int (optional)',\n", - " 'site': {'depth': 'm', 'distance': 'km', 'mean_windspeed': 'm/s'},\n", - " 'plant': {'num_turbines': 'int'},\n", - " 'turbine': {'hub_height': 'm',\n", - " 'rotor_diameter': 'm',\n", - " 'rated_windspeed': 'm/s'},\n", - " 'port': {'num_cranes': 'int (optional, default: 1)',\n", - " 'monthly_rate': 'USD/mo (optional)',\n", - " 'name': 'str (optional)'},\n", - " 'monopile_design': {'yield_stress': 'Pa (optional)',\n", - " 'load_factor': 'float (optional)',\n", - " 'material_factor': 'float (optional)',\n", - " 'monopile_density': 'kg/m3 (optional)',\n", - " 'monopile_modulus': 'Pa (optional)',\n", - " 'monopile_tp_connection_thickness': 'm (optional)',\n", - " 'transition_piece_density': 'kg/m3 (optional)',\n", - " 'transition_piece_thickness': 'm (optional)',\n", - " 'transition_piece_length': 'm (optional)',\n", - " 'soil_coefficient': 'N/m3 (optional)',\n", - " 'air_density': 'kg/m3 (optional)',\n", - " 'weibull_scale_factor': 'float (optional)',\n", - " 'weibull_shape_factor': 'float (optional)',\n", - " 'turb_length_scale': 'm (optional)',\n", - " 'monopile_steel_cost': 'USD/t (optional)',\n", - " 'tp_steel_cost': 'USD/t (optional)'},\n", - " 'project_parameters': {'turbine_capex': '$/kW (optional, default: 1300)',\n", - " 'ncf': 'float (optional, default: 0.4)',\n", - " 'offtake_price': '$/MWh (optional, default: 80)',\n", - " 'project_lifetime': 'yrs (optional, default: 25)',\n", - " 'discount_rate': 'yearly (optional, default: .025)',\n", - " 'opex_rate': '$/kW/year (optional, default: 150)',\n", - " 'construction_insurance': '$/kW (optional, default: 44)',\n", - " 'construction_financing': '$/kW (optional, default: 183)',\n", - " 'contingency': '$/kW (optional, default: 316)',\n", - " 'commissioning': '$/kW (optional, default: 44)',\n", - " 'decommissioning': '$/kW (optional, default: 58)',\n", - " 'site_auction_price': '$ (optional, default: 100e6)',\n", - " 'site_assessment_cost': '$ (optional, default: 50e6)',\n", - " 'construction_plan_cost': '$ (optional, default: 1e6)',\n", - " 'installation_plan_cost': '$ (optional, default: 0.25e6)'},\n", - " 'design_phases': ['MonopileDesign'],\n", - " 'install_phases': ['MonopileInstallation'],\n", - " 'orbit_version': 'v1.0.4+19.g2ac3a73.dirty'}" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ProjectManager\n", + "\n", + "ProjectManager is used to interact with multiple modules within ORBIT. This class allows any combination of modules to be configured and ran together to represent an entire project in ORBIT. It handles the configuration of each module and maps outputs of design modules into installation modules where necessary. This tutorial goes through how to build up a project level configuration using ProjectManager." ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# The compile expected configs for multiple modules within ProjectManager, use the 'compile_input_dict' method:\n", - "# In this example, we'll configure ProjectManager to run the MonopileDesign and MonopileInstallation modules.\n", - "\n", - "ProjectManager.compile_input_dict([\"MonopileDesign\", \"MonopileInstallation\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Total Substructure Cost: 258.67 M\n", - "Total Installation Cost: 21.88 M\n" - ] - } - ], - "source": [ - "# For simplicity, we are going to ignore the optional 'monopile_design' and 'project_parameters' subdicts.\n", - "\n", - "config = {\n", - " 'wtiv': 'example_wtiv',\n", - " 'site': { # The inputs required for the design module and\n", - " 'depth': 20, # the installation module are combined into the 'site' subdict\n", - " 'distance': 50,\n", - " 'mean_windspeed': 9.5\n", - " },\n", - " \n", - " 'plant': {\n", - " 'num_turbines': 50\n", - " },\n", - " \n", - " 'turbine': {\n", - " 'rotor_diameter': 220,\n", - " 'hub_height': 120,\n", - " 'rated_windspeed': 13\n", - " },\n", - " \n", - " # Sizing information for the substructure are not required as they will\n", - " # be calculated by 'MonopileDesign' and passed into 'MonopileInstallation'\n", - " # automatically by 'ProjecManager'.\n", - " \n", - " # --- Module Definitions ---\n", - " 'design_phases': ['MonopileDesign'],\n", - " 'install_phases': ['MonopileInstallation'],\n", - "}\n", - "\n", - "project = ProjectManager(config)\n", - "project.run()\n", - "\n", - "print(f\"Total Substructure Cost: {project.system_capex/1e6:.2f} M\")\n", - "print(f\"Total Installation Cost: {project.installation_capex/1e6:.2f} M\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Weather" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from ORBIT import ProjectManager" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'wtiv': 'dict | str',\n", + " 'feeder': 'dict | str (optional)',\n", + " 'num_feeders': 'int (optional)',\n", + " 'site': {'depth': 'm', 'distance': 'km', 'mean_windspeed': 'm/s'},\n", + " 'plant': {'num_turbines': 'int'},\n", + " 'turbine': {'hub_height': 'm',\n", + " 'rotor_diameter': 'm',\n", + " 'rated_windspeed': 'm/s'},\n", + " 'port': {'num_cranes': 'int (optional, default: 1)',\n", + " 'monthly_rate': 'USD/mo (optional)',\n", + " 'name': 'str (optional)'},\n", + " 'monopile_supply_chain': {'enabled': '(optional, default: False)',\n", + " 'substructure_delivery_time': 'h (optional, default: 168)',\n", + " 'num_substructures_delivered': 'int (optional: default: 1)',\n", + " 'substructure_storage': 'int (optional, default: inf)'},\n", + " 'monopile_design': {'yield_stress': 'Pa (optional)',\n", + " 'load_factor': 'float (optional)',\n", + " 'material_factor': 'float (optional)',\n", + " 'monopile_density': 'kg/m3 (optional)',\n", + " 'monopile_modulus': 'Pa (optional)',\n", + " 'monopile_tp_connection_thickness': 'm (optional)',\n", + " 'transition_piece_density': 'kg/m3 (optional)',\n", + " 'transition_piece_thickness': 'm (optional)',\n", + " 'transition_piece_length': 'm (optional)',\n", + " 'soil_coefficient': 'N/m3 (optional)',\n", + " 'air_density': 'kg/m3 (optional)',\n", + " 'weibull_scale_factor': 'float (optional)',\n", + " 'weibull_shape_factor': 'float (optional)',\n", + " 'turb_length_scale': 'm (optional)',\n", + " 'monopile_steel_cost': 'USD/t (optional)',\n", + " 'tp_steel_cost': 'USD/t (optional)'},\n", + " 'project_parameters': {'turbine_capex': '$/kW (optional, default: 1300)',\n", + " 'ncf': 'float (optional, default: 0.4)',\n", + " 'offtake_price': '$/MWh (optional, default: 80)',\n", + " 'project_lifetime': 'yrs (optional, default: 25)',\n", + " 'discount_rate': 'yearly (optional, default: .025)',\n", + " 'opex_rate': '$/kW/year (optional, default: 150)',\n", + " 'construction_insurance': '$/kW (optional, default: 44)',\n", + " 'construction_financing': '$/kW (optional, default: 183)',\n", + " 'contingency': '$/kW (optional, default: 316)',\n", + " 'commissioning': '$/kW (optional, default: 44)',\n", + " 'decommissioning': '$/kW (optional, default: 58)',\n", + " 'site_auction_price': '$ (optional, default: 100e6)',\n", + " 'site_assessment_cost': '$ (optional, default: 50e6)',\n", + " 'construction_plan_cost': '$ (optional, default: 1e6)',\n", + " 'installation_plan_cost': '$ (optional, default: 0.25e6)'},\n", + " 'design_phases': ['MonopileDesign'],\n", + " 'install_phases': ['MonopileInstallation'],\n", + " 'orbit_version': 'v1.0.7+112.g52fef86'}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# The compile expected configs for multiple modules within ProjectManager, use the 'compile_input_dict' method:\n", + "# In this example, we'll configure ProjectManager to run the MonopileDesign and MonopileInstallation modules.\n", + "\n", + "ProjectManager.compile_input_dict([\"MonopileDesign\", \"MonopileInstallation\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ORBIT library intialized at '/Users/nriccobo/GitHub/ORBIT/library'\n", + "Total Substructure Cost: 258.67 M\n", + "Total Installation Cost: 25.67 M\n" + ] + } + ], + "source": [ + "# For simplicity, we are going to ignore the optional 'monopile_design' and 'project_parameters' subdicts.\n", + "\n", + "config = {\n", + " 'wtiv': 'example_wtiv',\n", + " 'site': { # The inputs required for the design module and\n", + " 'depth': 20, # the installation module are combined into the 'site' subdict\n", + " 'distance': 50,\n", + " 'mean_windspeed': 9.5\n", + " },\n", + "\n", + " 'plant': {\n", + " 'num_turbines': 50\n", + " },\n", + "\n", + " 'turbine': {\n", + " 'rotor_diameter': 220,\n", + " 'hub_height': 120,\n", + " 'rated_windspeed': 13\n", + " },\n", + "\n", + " # Sizing information for the substructure are not required as they will\n", + " # be calculated by 'MonopileDesign' and passed into 'MonopileInstallation'\n", + " # automatically by 'ProjecManager'.\n", + "\n", + " # --- Module Definitions ---\n", + " 'design_phases': ['MonopileDesign'],\n", + " 'install_phases': ['MonopileInstallation'],\n", + "}\n", + "\n", + "project = ProjectManager(config)\n", + "project.run()\n", + "\n", + "print(f\"Total Substructure Cost: {project.system_capex/1e6:.2f} M\")\n", + "print(f\"Total Installation Cost: {project.installation_capex/1e6:.2f} M\")" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Total Substructure Cost: 258.67 M\n", - "Total Installation Cost: 27.95 M\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Weather" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "UserWarning: /var/folders/90/1lkt657x3n1cw5x65j3lfgd5406fb8/T/ipykernel_14087/1181267332.py:3\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." + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total Substructure Cost: 258.67 M\n", + "Total Installation Cost: 31.62 M\n" + ] + } + ], + "source": [ + "# Weather can be included in the same way as an individual module:\n", + "import pandas as pd\n", + "weather = pd.read_csv(\"data/example_weather.csv\", parse_dates=['datetime']).set_index(\"datetime\")\n", + "\n", + "project = ProjectManager(config, weather=weather)\n", + "project.run()\n", + "\n", + "print(f\"Total Substructure Cost: {project.system_capex/1e6:.2f} M\")\n", + "print(f\"Total Installation Cost: {project.installation_capex/1e6:.2f} M\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Looking inside a module\n", + "Look at intermediate variables within a module in two ways.\n", + "1. Call the phase of the ProjectManager\n", + "2. Run the module on its own and call the variables\n", + "\n", + "These should yield the same results" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total Monopile Cost: $258.67 M\n" + ] + } + ], + "source": [ + "# 1. Call through ProjectManager\n", + "project = ProjectManager(config)\n", + "project.run()\n", + "\n", + "print(f\"Total Monopile Cost: ${project.phases['MonopileDesign'].total_cost/1e6:.2f} M\")" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total Monopile Cost: $258.67 M\n" + ] + } + ], + "source": [ + "# 2. Call through the module\n", + "from ORBIT.phases.design import MonopileDesign\n", + "\n", + "design = MonopileDesign(config)\n", + "design.run()\n", + "\n", + "print(f\"Total Monopile Cost: ${design.total_cost/1e6:.2f} M\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.18" } - ], - "source": [ - "# Weather can be included in the same way as an individual module:\n", - "import pandas as pd\n", - "weather = pd.read_csv(\"data/example_weather.csv\", parse_dates=['datetime']).set_index(\"datetime\")\n", - "\n", - "project = ProjectManager(config, weather=weather)\n", - "project.run()\n", - "\n", - "print(f\"Total Substructure Cost: {project.system_capex/1e6:.2f} M\")\n", - "print(f\"Total Installation Cost: {project.installation_capex/1e6:.2f} M\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/examples/4. Example Fixed Project.ipynb b/examples/4. Example Fixed Project.ipynb index f8a4c389..90c3beda 100644 --- a/examples/4. Example Fixed Project.ipynb +++ b/examples/4. Example Fixed Project.ipynb @@ -1,921 +1,921 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Example Fixed Project\n", - "\n", - "The rest of this tutorial uses pre compiled ORBIT configs that are stored as .yaml files in the '~/configs/ folder. There are load and save methods available in ORBIT for working with .yaml files. These example projects each exhibit different functionalities within ORBIT. Using these examples and combinations of them, most project configurations can be modeled. " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import pandas as pd\n", - "from ORBIT import ProjectManager, load_config\n", - "\n", - "weather = pd.read_csv(\"data/example_weather.csv\", parse_dates=[\"datetime\"])\\\n", - " .set_index(\"datetime\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load the project configuration" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ + "cells": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Num turbines: 50\n", - "Turbine: SWT_6MW_154m_110m\n", - "\n", - "Site: {'depth': 22.5, 'distance': 124, 'distance_to_landfall': 35, 'mean_windspeed': 9}\n" - ] - } - ], - "source": [ - "fixed_config = load_config(\"configs/example_fixed_project.yaml\") # Configs can be loaded with absolute or relative paths\n", - "\n", - "print(type(fixed_config)) # They are loaded in as dictionaries.\n", - "\n", - "print(f\"Num turbines: {fixed_config['plant']['num_turbines']}\") # Once a configuration is loaded, different parameters can \n", - "print(f\"Turbine: {fixed_config['turbine']}\") # be accessed using dict access.\n", - "print(f\"\\nSite: {fixed_config['site']}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Phases\n", - "\n", - "This fixed project represents a generic Offshore Wind farm with 50 6MW turbines. It includes 5 design modules and 6 installation modules as seen below. This is a common set of modules to run for a fixed bottom project. This config will model the procurement and installation of monopiles, scour protection, array system, export system, offshore substation and the turbines." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example Fixed Project\n", + "\n", + "The rest of this tutorial uses pre compiled ORBIT configs that are stored as .yaml files in the '~/configs/ folder. There are load and save methods available in ORBIT for working with .yaml files. These example projects each exhibit different functionalities within ORBIT. Using these examples and combinations of them, most project configurations can be modeled. " + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Design phases: ['MonopileDesign', 'ScourProtectionDesign', 'ArraySystemDesign', 'ExportSystemDesign', 'OffshoreSubstationDesign']\n", - "\n", - "Install phases: ['ArrayCableInstallation', 'ExportCableInstallation', 'MonopileInstallation', 'OffshoreSubstationInstallation', 'ScourProtectionInstallation', 'TurbineInstallation']\n" - ] - } - ], - "source": [ - "print(f\"Design phases: {fixed_config['design_phases']}\")\n", - "print(f\"\\nInstall phases: {list(fixed_config['install_phases'].keys())}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Run\n", - "\n", - "This project is always being modeled with the example weather project supplied that is representative of US East Coast wind farm locations." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import pandas as pd\n", + "from ORBIT import ProjectManager, load_config\n", + "\n", + "weather = pd.read_csv(\"data/example_weather.csv\", parse_dates=[\"datetime\"])\\\n", + " .set_index(\"datetime\")" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "ORBIT library intialized at '/Users/jnunemak/Fun/repos/ORBIT/library'\n" - ] - } - ], - "source": [ - "project = ProjectManager(fixed_config, weather=weather)\n", - "project.run()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Top Level Outputs\n", - "\n", - "ProjectManager offers several high level result categories:\n", - "- Installation CapEx\n", - "- System CapEx (procurement of BOS subcomponents)\n", - "- Turbine CapEx\n", - "- Soft CapEx (project management costs)\n", - "- Total CapEx\n", - "- Total installation time\n", - "- etc." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load the project configuration" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Installation CapEx: 181 M\n", - "System CapEx: 257 M\n", - "Turbine CapEx: 390 M\n", - "Soft CapEx: 194 M\n", - "Total CapEx: 1173 M\n", - "\n", - "Installation Time: 12731 h\n" - ] - } - ], - "source": [ - "print(f\"Installation CapEx: {project.installation_capex/1e6:.0f} M\")\n", - "print(f\"System CapEx: {project.system_capex/1e6:.0f} M\")\n", - "print(f\"Turbine CapEx: {project.turbine_capex/1e6:.0f} M\")\n", - "print(f\"Soft CapEx: {project.soft_capex/1e6:.0f} M\")\n", - "print(f\"Total CapEx: {project.total_capex/1e6:.0f} M\")\n", - "\n", - "print(f\"\\nInstallation Time: {project.installation_time:.0f} h\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### CapEx Breakdown" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Num turbines: 50\n", + "Turbine: SWT_6MW_154m_110m\n", + "\n", + "Site: {'depth': 22.5, 'distance': 124, 'distance_to_landfall': 35, 'mean_windspeed': 9}\n" + ] + } + ], + "source": [ + "fixed_config = load_config(\"configs/example_fixed_project.yaml\") # Configs can be loaded with absolute or relative paths\n", + "\n", + "print(type(fixed_config)) # They are loaded in as dictionaries.\n", + "\n", + "print(f\"Num turbines: {fixed_config['plant']['num_turbines']}\") # Once a configuration is loaded, different parameters can \n", + "print(f\"Turbine: {fixed_config['turbine']}\") # be accessed using dict access.\n", + "print(f\"\\nSite: {fixed_config['site']}\")" + ] + }, { - "data": { - "text/plain": [ - "{'Array System': 24416575.834140003,\n", - " 'Export System': 22813500.0,\n", - " 'Offshore Substation': 49739550.0,\n", - " 'Scour Protection': 5896000,\n", - " 'Substructure': 154436243.91851607,\n", - " 'Array System Installation': 19828893.780554257,\n", - " 'Export System Installation': 63231897.48006167,\n", - " 'Offshore Substation Installation': 4323839.723173516,\n", - " 'Scour Protection Installation': 19613097.60273973,\n", - " 'Substructure Installation': 28858058.87808971,\n", - " 'Turbine Installation': 44667905.25114152,\n", - " 'Turbine': 390000000,\n", - " 'Soft': 193500000,\n", - " 'Project': 151250000.0}" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Phases\n", + "\n", + "This fixed project represents a generic Offshore Wind farm with 50 6MW turbines. It includes 5 design modules and 6 installation modules as seen below. This is a common set of modules to run for a fixed bottom project. This config will model the procurement and installation of monopiles, scour protection, array system, export system, offshore substation and the turbines." ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# The breakdown of project costs by module is available at 'capex_breakdown'\n", - "project.capex_breakdown" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Installation Actions" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cost_multiplieragentactiondurationcostleveltimephasephase_namemax_waveheightmax_windspeedtransit_speedlocationsite_depthhub_height
00.5Array Cable Installation VesselMobilize72.000000180000.0ACTION0.000000ArrayCableInstallationNaNNaNNaNNaNNaNNaNNaN
10.5Heavy Lift VesselMobilize72.000000750000.0ACTION0.000000OffshoreSubstationInstallationNaNNaNNaNNaNNaNNaNNaN
20.5Feeder 0Mobilize72.000000180000.0ACTION0.000000OffshoreSubstationInstallationNaNNaNNaNNaNNaNNaNNaN
30.5SPI VesselMobilize72.000000180000.0ACTION0.000000ScourProtectionInstallationNaNNaNNaNNaNNaNNaNNaN
4NaNSPI VesselLoad SP Material4.00000020000.0ACTION4.000000ScourProtectionInstallationScourProtectionInstallationNaNNaNNaNNaNNaNNaN
................................................
3098NaNWTIVAttach Blade3.50000026250.0ACTION5758.182005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
3099NaNWTIVRelease Blade1.0000007500.0ACTION5759.182005TurbineInstallationNaNNaNNaNNaNNaNNaNNaN
3100NaNWTIVLift Blade1.1000008250.0ACTION5760.282005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
3101NaNWTIVAttach Blade3.50000026250.0ACTION5763.782005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
3102NaNWTIVJackdown0.3166672375.0ACTION5764.098671TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
\n", - "

3103 rows × 15 columns

\n", - "
" + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Design phases: ['MonopileDesign', 'ScourProtectionDesign', 'ArraySystemDesign', 'ExportSystemDesign', 'OffshoreSubstationDesign']\n", + "\n", + "Install phases: ['ArrayCableInstallation', 'ExportCableInstallation', 'MonopileInstallation', 'OffshoreSubstationInstallation', 'ScourProtectionInstallation', 'TurbineInstallation']\n" + ] + } ], - "text/plain": [ - " cost_multiplier agent action \\\n", - "0 0.5 Array Cable Installation Vessel Mobilize \n", - "1 0.5 Heavy Lift Vessel Mobilize \n", - "2 0.5 Feeder 0 Mobilize \n", - "3 0.5 SPI Vessel Mobilize \n", - "4 NaN SPI Vessel Load SP Material \n", - "... ... ... ... \n", - "3098 NaN WTIV Attach Blade \n", - "3099 NaN WTIV Release Blade \n", - "3100 NaN WTIV Lift Blade \n", - "3101 NaN WTIV Attach Blade \n", - "3102 NaN WTIV Jackdown \n", - "\n", - " duration cost level time \\\n", - "0 72.000000 180000.0 ACTION 0.000000 \n", - "1 72.000000 750000.0 ACTION 0.000000 \n", - "2 72.000000 180000.0 ACTION 0.000000 \n", - "3 72.000000 180000.0 ACTION 0.000000 \n", - "4 4.000000 20000.0 ACTION 4.000000 \n", - "... ... ... ... ... \n", - "3098 3.500000 26250.0 ACTION 5758.182005 \n", - "3099 1.000000 7500.0 ACTION 5759.182005 \n", - "3100 1.100000 8250.0 ACTION 5760.282005 \n", - "3101 3.500000 26250.0 ACTION 5763.782005 \n", - "3102 0.316667 2375.0 ACTION 5764.098671 \n", - "\n", - " phase phase_name \\\n", - "0 ArrayCableInstallation NaN \n", - "1 OffshoreSubstationInstallation NaN \n", - "2 OffshoreSubstationInstallation NaN \n", - "3 ScourProtectionInstallation NaN \n", - "4 ScourProtectionInstallation ScourProtectionInstallation \n", - "... ... ... \n", - "3098 TurbineInstallation TurbineInstallation \n", - "3099 TurbineInstallation NaN \n", - "3100 TurbineInstallation TurbineInstallation \n", - "3101 TurbineInstallation TurbineInstallation \n", - "3102 TurbineInstallation TurbineInstallation \n", - "\n", - " max_waveheight max_windspeed transit_speed location site_depth \\\n", - "0 NaN NaN NaN NaN NaN \n", - "1 NaN NaN NaN NaN NaN \n", - "2 NaN NaN NaN NaN NaN \n", - "3 NaN NaN NaN NaN NaN \n", - "4 NaN NaN NaN NaN NaN \n", - "... ... ... ... ... ... \n", - "3098 NaN NaN NaN NaN 22.5 \n", - "3099 NaN NaN NaN NaN NaN \n", - "3100 NaN NaN NaN NaN 22.5 \n", - "3101 NaN NaN NaN NaN 22.5 \n", - "3102 NaN NaN NaN NaN 22.5 \n", - "\n", - " hub_height \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 NaN \n", - "... ... \n", - "3098 110.0 \n", - "3099 NaN \n", - "3100 110.0 \n", - "3101 110.0 \n", - "3102 110.0 \n", - "\n", - "[3103 rows x 15 columns]" + "source": [ + "print(f\"Design phases: {fixed_config['design_phases']}\")\n", + "print(f\"\\nInstall phases: {list(fixed_config['install_phases'].keys())}\")" ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = pd.DataFrame(project.actions) # The project simulation logs are also available for all modules\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cost_multiplieragentactiondurationcostleveltimephasephase_namemax_waveheightmax_windspeedtransit_speedlocationsite_depthhub_height
5171.0WTIVMobilize168.0000001260000.0ACTION1524.932005TurbineInstallationNaNNaNNaNNaNNaNNaNNaN
523NaNWTIVFasten Tower Section4.00000030000.0ACTION1528.932005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
527NaNWTIVFasten Tower Section4.00000030000.0ACTION1532.932005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
534NaNWTIVFasten Nacelle4.00000030000.0ACTION1536.932005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
536NaNWTIVFasten Blade1.50000011250.0ACTION1538.432005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
................................................
3098NaNWTIVAttach Blade3.50000026250.0ACTION5758.182005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
3099NaNWTIVRelease Blade1.0000007500.0ACTION5759.182005TurbineInstallationNaNNaNNaNNaNNaNNaNNaN
3100NaNWTIVLift Blade1.1000008250.0ACTION5760.282005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
3101NaNWTIVAttach Blade3.50000026250.0ACTION5763.782005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
3102NaNWTIVJackdown0.3166672375.0ACTION5764.098671TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
\n", - "

1505 rows × 15 columns

\n", - "
" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run\n", + "\n", + "This project is always being modeled with the example weather project supplied that is representative of US East Coast wind farm locations." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ORBIT library intialized at '/Users/jnunemak/Fun/repos/ORBIT/library'\n" + ] + } ], - "text/plain": [ - " cost_multiplier agent action duration cost \\\n", - "517 1.0 WTIV Mobilize 168.000000 1260000.0 \n", - "523 NaN WTIV Fasten Tower Section 4.000000 30000.0 \n", - "527 NaN WTIV Fasten Tower Section 4.000000 30000.0 \n", - "534 NaN WTIV Fasten Nacelle 4.000000 30000.0 \n", - "536 NaN WTIV Fasten Blade 1.500000 11250.0 \n", - "... ... ... ... ... ... \n", - "3098 NaN WTIV Attach Blade 3.500000 26250.0 \n", - "3099 NaN WTIV Release Blade 1.000000 7500.0 \n", - "3100 NaN WTIV Lift Blade 1.100000 8250.0 \n", - "3101 NaN WTIV Attach Blade 3.500000 26250.0 \n", - "3102 NaN WTIV Jackdown 0.316667 2375.0 \n", - "\n", - " level time phase phase_name \\\n", - "517 ACTION 1524.932005 TurbineInstallation NaN \n", - "523 ACTION 1528.932005 TurbineInstallation TurbineInstallation \n", - "527 ACTION 1532.932005 TurbineInstallation TurbineInstallation \n", - "534 ACTION 1536.932005 TurbineInstallation TurbineInstallation \n", - "536 ACTION 1538.432005 TurbineInstallation TurbineInstallation \n", - "... ... ... ... ... \n", - "3098 ACTION 5758.182005 TurbineInstallation TurbineInstallation \n", - "3099 ACTION 5759.182005 TurbineInstallation NaN \n", - "3100 ACTION 5760.282005 TurbineInstallation TurbineInstallation \n", - "3101 ACTION 5763.782005 TurbineInstallation TurbineInstallation \n", - "3102 ACTION 5764.098671 TurbineInstallation TurbineInstallation \n", - "\n", - " max_waveheight max_windspeed transit_speed location site_depth \\\n", - "517 NaN NaN NaN NaN NaN \n", - "523 NaN NaN NaN NaN 22.5 \n", - "527 NaN NaN NaN NaN 22.5 \n", - "534 NaN NaN NaN NaN 22.5 \n", - "536 NaN NaN NaN NaN 22.5 \n", - "... ... ... ... ... ... \n", - "3098 NaN NaN NaN NaN 22.5 \n", - "3099 NaN NaN NaN NaN NaN \n", - "3100 NaN NaN NaN NaN 22.5 \n", - "3101 NaN NaN NaN NaN 22.5 \n", - "3102 NaN NaN NaN NaN 22.5 \n", - "\n", - " hub_height \n", - "517 NaN \n", - "523 110.0 \n", - "527 110.0 \n", - "534 110.0 \n", - "536 110.0 \n", - "... ... \n", - "3098 110.0 \n", - "3099 NaN \n", - "3100 110.0 \n", - "3101 110.0 \n", - "3102 110.0 \n", - "\n", - "[1505 rows x 15 columns]" + "source": [ + "project = ProjectManager(fixed_config, weather=weather)\n", + "project.run()" ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# These logs can be sorted by phase by using DataFrame operations\n", - "\n", - "turbine_install = df.loc[df['phase']==\"TurbineInstallation\"]\n", - "turbine_install" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Top Level Outputs\n", + "\n", + "ProjectManager offers several high level result categories:\n", + "- Installation CapEx\n", + "- System CapEx (procurement of BOS subcomponents)\n", + "- Turbine CapEx\n", + "- Soft CapEx (project management costs)\n", + "- Total CapEx\n", + "- Total installation time\n", + "- etc." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installation CapEx: 181 M\n", + "System CapEx: 257 M\n", + "Turbine CapEx: 390 M\n", + "Soft CapEx: 194 M\n", + "Total CapEx: 1173 M\n", + "\n", + "Installation Time: 12731 h\n" + ] + } + ], + "source": [ + "print(f\"Installation CapEx: {project.installation_capex/1e6:.0f} M\")\n", + "print(f\"System CapEx: {project.system_capex/1e6:.0f} M\")\n", + "print(f\"Turbine CapEx: {project.turbine_capex/1e6:.0f} M\")\n", + "print(f\"Soft CapEx: {project.soft_capex/1e6:.0f} M\")\n", + "print(f\"Total CapEx: {project.total_capex/1e6:.0f} M\")\n", + "\n", + "print(f\"\\nInstallation Time: {project.installation_time:.0f} h\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### CapEx Breakdown" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Array System': 24416575.834140003,\n", + " 'Export System': 22813500.0,\n", + " 'Offshore Substation': 49739550.0,\n", + " 'Scour Protection': 5896000,\n", + " 'Substructure': 154436243.91851607,\n", + " 'Array System Installation': 19828893.780554257,\n", + " 'Export System Installation': 63231897.48006167,\n", + " 'Offshore Substation Installation': 4323839.723173516,\n", + " 'Scour Protection Installation': 19613097.60273973,\n", + " 'Substructure Installation': 28858058.87808971,\n", + " 'Turbine Installation': 44667905.25114152,\n", + " 'Turbine': 390000000,\n", + " 'Soft': 193500000,\n", + " 'Project': 151250000.0}" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# The breakdown of project costs by module is available at 'capex_breakdown'\n", + "project.capex_breakdown" + ] + }, { - "data": { - "text/plain": [ - "action\n", - "Attach Blade 525.000000\n", - "Attach Nacelle 300.000000\n", - "Attach Tower Section 600.000000\n", - "Delay 669.000000\n", - "Fasten Blade 225.000000\n", - "Fasten Nacelle 200.000000\n", - "Fasten Tower Section 400.000000\n", - "Jackdown 15.833333\n", - "Jackup 15.833333\n", - "Lift Blade 165.000000\n", - "Lift Nacelle 55.000000\n", - "Lift Tower Section 82.500000\n", - "Mobilize 168.000000\n", - "Position Onsite 100.000000\n", - "Reequip 100.000000\n", - "Release Blade 150.000000\n", - "Release Nacelle 150.000000\n", - "Release Tower Section 300.000000\n", - "Transit 186.000000\n", - "Name: duration, dtype: float64" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Installation Actions" ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cost_multiplieragentactiondurationcostleveltimephasephase_namemax_waveheightmax_windspeedtransit_speedlocationsite_depthhub_height
00.5Array Cable Installation VesselMobilize72.000000180000.0ACTION0.000000ArrayCableInstallationNaNNaNNaNNaNNaNNaNNaN
10.5Heavy Lift VesselMobilize72.000000750000.0ACTION0.000000OffshoreSubstationInstallationNaNNaNNaNNaNNaNNaNNaN
20.5Feeder 0Mobilize72.000000180000.0ACTION0.000000OffshoreSubstationInstallationNaNNaNNaNNaNNaNNaNNaN
30.5SPI VesselMobilize72.000000180000.0ACTION0.000000ScourProtectionInstallationNaNNaNNaNNaNNaNNaNNaN
4NaNSPI VesselLoad SP Material4.00000020000.0ACTION4.000000ScourProtectionInstallationScourProtectionInstallationNaNNaNNaNNaNNaNNaN
................................................
3098NaNWTIVAttach Blade3.50000026250.0ACTION5758.182005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
3099NaNWTIVRelease Blade1.0000007500.0ACTION5759.182005TurbineInstallationNaNNaNNaNNaNNaNNaNNaN
3100NaNWTIVLift Blade1.1000008250.0ACTION5760.282005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
3101NaNWTIVAttach Blade3.50000026250.0ACTION5763.782005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
3102NaNWTIVJackdown0.3166672375.0ACTION5764.098671TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
\n", + "

3103 rows \u00d7 15 columns

\n", + "
" + ], + "text/plain": [ + " cost_multiplier agent action \\\n", + "0 0.5 Array Cable Installation Vessel Mobilize \n", + "1 0.5 Heavy Lift Vessel Mobilize \n", + "2 0.5 Feeder 0 Mobilize \n", + "3 0.5 SPI Vessel Mobilize \n", + "4 NaN SPI Vessel Load SP Material \n", + "... ... ... ... \n", + "3098 NaN WTIV Attach Blade \n", + "3099 NaN WTIV Release Blade \n", + "3100 NaN WTIV Lift Blade \n", + "3101 NaN WTIV Attach Blade \n", + "3102 NaN WTIV Jackdown \n", + "\n", + " duration cost level time \\\n", + "0 72.000000 180000.0 ACTION 0.000000 \n", + "1 72.000000 750000.0 ACTION 0.000000 \n", + "2 72.000000 180000.0 ACTION 0.000000 \n", + "3 72.000000 180000.0 ACTION 0.000000 \n", + "4 4.000000 20000.0 ACTION 4.000000 \n", + "... ... ... ... ... \n", + "3098 3.500000 26250.0 ACTION 5758.182005 \n", + "3099 1.000000 7500.0 ACTION 5759.182005 \n", + "3100 1.100000 8250.0 ACTION 5760.282005 \n", + "3101 3.500000 26250.0 ACTION 5763.782005 \n", + "3102 0.316667 2375.0 ACTION 5764.098671 \n", + "\n", + " phase phase_name \\\n", + "0 ArrayCableInstallation NaN \n", + "1 OffshoreSubstationInstallation NaN \n", + "2 OffshoreSubstationInstallation NaN \n", + "3 ScourProtectionInstallation NaN \n", + "4 ScourProtectionInstallation ScourProtectionInstallation \n", + "... ... ... \n", + "3098 TurbineInstallation TurbineInstallation \n", + "3099 TurbineInstallation NaN \n", + "3100 TurbineInstallation TurbineInstallation \n", + "3101 TurbineInstallation TurbineInstallation \n", + "3102 TurbineInstallation TurbineInstallation \n", + "\n", + " max_waveheight max_windspeed transit_speed location site_depth \\\n", + "0 NaN NaN NaN NaN NaN \n", + "1 NaN NaN NaN NaN NaN \n", + "2 NaN NaN NaN NaN NaN \n", + "3 NaN NaN NaN NaN NaN \n", + "4 NaN NaN NaN NaN NaN \n", + "... ... ... ... ... ... \n", + "3098 NaN NaN NaN NaN 22.5 \n", + "3099 NaN NaN NaN NaN NaN \n", + "3100 NaN NaN NaN NaN 22.5 \n", + "3101 NaN NaN NaN NaN 22.5 \n", + "3102 NaN NaN NaN NaN 22.5 \n", + "\n", + " hub_height \n", + "0 NaN \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", + "... ... \n", + "3098 110.0 \n", + "3099 NaN \n", + "3100 110.0 \n", + "3101 110.0 \n", + "3102 110.0 \n", + "\n", + "[3103 rows x 15 columns]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.DataFrame(project.actions) # The project simulation logs are also available for all modules\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cost_multiplieragentactiondurationcostleveltimephasephase_namemax_waveheightmax_windspeedtransit_speedlocationsite_depthhub_height
5171.0WTIVMobilize168.0000001260000.0ACTION1524.932005TurbineInstallationNaNNaNNaNNaNNaNNaNNaN
523NaNWTIVFasten Tower Section4.00000030000.0ACTION1528.932005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
527NaNWTIVFasten Tower Section4.00000030000.0ACTION1532.932005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
534NaNWTIVFasten Nacelle4.00000030000.0ACTION1536.932005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
536NaNWTIVFasten Blade1.50000011250.0ACTION1538.432005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
................................................
3098NaNWTIVAttach Blade3.50000026250.0ACTION5758.182005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
3099NaNWTIVRelease Blade1.0000007500.0ACTION5759.182005TurbineInstallationNaNNaNNaNNaNNaNNaNNaN
3100NaNWTIVLift Blade1.1000008250.0ACTION5760.282005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
3101NaNWTIVAttach Blade3.50000026250.0ACTION5763.782005TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
3102NaNWTIVJackdown0.3166672375.0ACTION5764.098671TurbineInstallationTurbineInstallationNaNNaNNaNNaN22.5110.0
\n", + "

1505 rows \u00d7 15 columns

\n", + "
" + ], + "text/plain": [ + " cost_multiplier agent action duration cost \\\n", + "517 1.0 WTIV Mobilize 168.000000 1260000.0 \n", + "523 NaN WTIV Fasten Tower Section 4.000000 30000.0 \n", + "527 NaN WTIV Fasten Tower Section 4.000000 30000.0 \n", + "534 NaN WTIV Fasten Nacelle 4.000000 30000.0 \n", + "536 NaN WTIV Fasten Blade 1.500000 11250.0 \n", + "... ... ... ... ... ... \n", + "3098 NaN WTIV Attach Blade 3.500000 26250.0 \n", + "3099 NaN WTIV Release Blade 1.000000 7500.0 \n", + "3100 NaN WTIV Lift Blade 1.100000 8250.0 \n", + "3101 NaN WTIV Attach Blade 3.500000 26250.0 \n", + "3102 NaN WTIV Jackdown 0.316667 2375.0 \n", + "\n", + " level time phase phase_name \\\n", + "517 ACTION 1524.932005 TurbineInstallation NaN \n", + "523 ACTION 1528.932005 TurbineInstallation TurbineInstallation \n", + "527 ACTION 1532.932005 TurbineInstallation TurbineInstallation \n", + "534 ACTION 1536.932005 TurbineInstallation TurbineInstallation \n", + "536 ACTION 1538.432005 TurbineInstallation TurbineInstallation \n", + "... ... ... ... ... \n", + "3098 ACTION 5758.182005 TurbineInstallation TurbineInstallation \n", + "3099 ACTION 5759.182005 TurbineInstallation NaN \n", + "3100 ACTION 5760.282005 TurbineInstallation TurbineInstallation \n", + "3101 ACTION 5763.782005 TurbineInstallation TurbineInstallation \n", + "3102 ACTION 5764.098671 TurbineInstallation TurbineInstallation \n", + "\n", + " max_waveheight max_windspeed transit_speed location site_depth \\\n", + "517 NaN NaN NaN NaN NaN \n", + "523 NaN NaN NaN NaN 22.5 \n", + "527 NaN NaN NaN NaN 22.5 \n", + "534 NaN NaN NaN NaN 22.5 \n", + "536 NaN NaN NaN NaN 22.5 \n", + "... ... ... ... ... ... \n", + "3098 NaN NaN NaN NaN 22.5 \n", + "3099 NaN NaN NaN NaN NaN \n", + "3100 NaN NaN NaN NaN 22.5 \n", + "3101 NaN NaN NaN NaN 22.5 \n", + "3102 NaN NaN NaN NaN 22.5 \n", + "\n", + " hub_height \n", + "517 NaN \n", + "523 110.0 \n", + "527 110.0 \n", + "534 110.0 \n", + "536 110.0 \n", + "... ... \n", + "3098 110.0 \n", + "3099 NaN \n", + "3100 110.0 \n", + "3101 110.0 \n", + "3102 110.0 \n", + "\n", + "[1505 rows x 15 columns]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# These logs can be sorted by phase by using DataFrame operations\n", + "\n", + "turbine_install = df.loc[df['phase']==\"TurbineInstallation\"]\n", + "turbine_install" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "action\n", + "Attach Blade 525.000000\n", + "Attach Nacelle 300.000000\n", + "Attach Tower Section 600.000000\n", + "Delay 669.000000\n", + "Fasten Blade 225.000000\n", + "Fasten Nacelle 200.000000\n", + "Fasten Tower Section 400.000000\n", + "Jackdown 15.833333\n", + "Jackup 15.833333\n", + "Lift Blade 165.000000\n", + "Lift Nacelle 55.000000\n", + "Lift Tower Section 82.500000\n", + "Mobilize 168.000000\n", + "Position Onsite 100.000000\n", + "Reequip 100.000000\n", + "Release Blade 150.000000\n", + "Release Nacelle 150.000000\n", + "Release Tower Section 300.000000\n", + "Transit 186.000000\n", + "Name: duration, dtype: float64" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Operations can also be grouped to see a total amount of time spend on each operation\n", + "\n", + "turbine_install.groupby([\"action\"]).sum()['duration']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.15" } - ], - "source": [ - "# Operations can also be grouped to see a total amount of time spend on each operation\n", - "\n", - "turbine_install.groupby([\"action\"]).sum()['duration']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/examples/5. Example Floating Project.ipynb b/examples/5. Example Floating Project.ipynb index 8b01b575..68a22700 100644 --- a/examples/5. Example Floating Project.ipynb +++ b/examples/5. Example Floating Project.ipynb @@ -1,547 +1,760 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Jake Nunemaker\n", - "\n", - "National Renewable Energy Lab\n", - "\n", - "Last updated: 12/23/2020" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import pandas as pd\n", - "from ORBIT import ProjectManager, load_config\n", - "\n", - "weather = pd.read_csv(\"data/example_weather.csv\", parse_dates=[\"datetime\"])\\\n", - " .set_index(\"datetime\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Load the project configuration" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ + "cells": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Num turbines: 50\n", - "Turbine: 12MW_generic\n", - "\n", - "Site: {'depth': 900, 'distance': 100, 'distance_to_landfall': 100}\n" - ] - } - ], - "source": [ - "fixed_config = load_config(\"configs/example_floating_project.yaml\") \n", - "\n", - "print(f\"Num turbines: {fixed_config['plant']['num_turbines']}\")\n", - "print(f\"Turbine: {fixed_config['turbine']}\")\n", - "print(f\"\\nSite: {fixed_config['site']}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Phases" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example Floating Project\n", + "\n", + "This tutorial uses prepared ORBIT configs that are stored as .yaml files in the `~/configs/` folder. These example projects each exhibit different functionalities within ORBIT. Using these examples and combinations of them, most project configurations can be modeled. \n", + "\n", + "Last updated: September 2024\n", + "\n", + "1. Run the example floating project and print outputs\n", + "2. Replace the anchor_type and mooring_type and print outputs \n" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Design phases: ['ArraySystemDesign', 'ExportSystemDesign', 'MooringSystemDesign', 'OffshoreSubstationDesign', 'SemiSubmersibleDesign']\n", - "\n", - "Install phases: ['ArrayCableInstallation', 'ExportCableInstallation', 'MooredSubInstallation', 'MooringSystemInstallation', 'OffshoreSubstationInstallation', 'TurbineInstallation']\n" - ] - } - ], - "source": [ - "print(f\"Design phases: {fixed_config['design_phases']}\")\n", - "print(f\"\\nInstall phases: {list(fixed_config['install_phases'].keys())}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Run" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "UserWarning: /var/folders/90/1lkt657x3n1cw5x65j3lfgd5406fb8/T/ipykernel_98169/3749054979.py:9\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." + ] + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "from copy import deepcopy\n", + "from pprint import pprint\n", + "from ORBIT import ProjectManager, load_config\n", + "\n", + "import warnings\n", + "warnings.filterwarnings(\"default\")\n", + "\n", + "weather = pd.read_csv(\"data/example_weather.csv\", parse_dates=[\"datetime\"])\\\n", + " .set_index(\"datetime\")" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "ORBIT library intialized at '/Users/jnunemak/Fun/repos/ORBIT/library'\n" - ] - } - ], - "source": [ - "project = ProjectManager(fixed_config, weather=weather)\n", - "project.run()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Top Level Outputs" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Run the example floating project \n", + "\n", + "#### Load the project configuration\n", + "`~/configs/example_floating_project.yaml`" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Installation CapEx: 420 M\n", - "System CapEx: 1222 M\n", - "Turbine CapEx: 780 M\n", - "Soft CapEx: 387 M\n", - "Total CapEx: 2961 M\n", - "\n", - "Installation Time: 27750 h\n" - ] - } - ], - "source": [ - "print(f\"Installation CapEx: {project.installation_capex/1e6:.0f} M\")\n", - "print(f\"System CapEx: {project.system_capex/1e6:.0f} M\")\n", - "print(f\"Turbine CapEx: {project.turbine_capex/1e6:.0f} M\")\n", - "print(f\"Soft CapEx: {project.soft_capex/1e6:.0f} M\")\n", - "print(f\"Total CapEx: {project.total_capex/1e6:.0f} M\")\n", - "\n", - "print(f\"\\nInstallation Time: {project.installation_time:.0f} h\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### CapEx Breakdown" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Num turbines: 50\n", + "Turbine: 12MW_generic\n", + "\n", + "Site: {'depth': 900, 'distance': 100, 'distance_to_landfall': 100}\n" + ] + } + ], + "source": [ + "floating_config = load_config(\"configs/example_floating_project.yaml\")\n", + "\n", + "print(f\"Num turbines: {floating_config['plant']['num_turbines']}\")\n", + "print(f\"Turbine: {floating_config['turbine']}\")\n", + "print(f\"\\nSite: {floating_config['site']}\")" + ] + }, { - "data": { - "text/plain": [ - "{'Array System': 56983076.60642063,\n", - " 'Export System': 103712476.9152,\n", - " 'Substructure': 630709636.6,\n", - " 'Mooring System': 331379224.80820334,\n", - " 'Offshore Substation': 99479100.0,\n", - " 'Array System Installation': 22844527.896071255,\n", - " 'Export System Installation': 135112258.0470523,\n", - " 'Substructure Installation': 79182122.33637744,\n", - " 'Mooring System Installation': 50094520.5479452,\n", - " 'Offshore Substation Installation': 5499328.911719939,\n", - " 'Turbine Installation': 127738070.77625567,\n", - " 'Turbine': 780000000,\n", - " 'Soft': 387000000,\n", - " 'Project': 151250000.0}" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Phases" ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "project.capex_breakdown" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Installation Actions" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cost_multiplieragentactiondurationcostleveltimephaselocationsite_depthhub_heightphase_namemax_waveheightmax_windspeedtransit_speednum_vessels
00.5Array Cable Installation VesselMobilize72.0000001.800000e+05ACTION0.000000ArrayCableInstallationNaNNaNNaNNaNNaNNaNNaNNaN
10.5Export Cable Installation VesselMobilize72.0000001.800000e+05ACTION0.000000ExportCableInstallationNaNNaNNaNNaNNaNNaNNaNNaN
2NaNOnshore ConstructionOnshore Construction0.0000001.075454e+08ACTION0.000000ExportCableInstallationLandfallNaNNaNNaNNaNNaNNaNNaN
31.0Mooring System Installation VesselMobilize168.0000007.000000e+05ACTION0.000000MooringSystemInstallationNaNNaNNaNNaNNaNNaNNaNNaN
40.5Heavy Lift VesselMobilize72.0000007.500000e+05ACTION0.000000OffshoreSubstationInstallationNaNNaNNaNNaNNaNNaNNaNNaN
...................................................
4405NaNMulti-Purpose Support VesselConnect Mooring Lines22.0000009.166667e+04ACTION8554.500000MooredSubInstallationNaNNaNNaNNaNNaNNaNNaNNaN
4406NaNMulti-Purpose Support VesselCheck Mooring Lines12.0000005.000000e+04ACTION8566.500000MooredSubInstallationNaNNaNNaNNaNNaNNaNNaNNaN
4407NaNTowing Group 1Positioning Support42.0000001.050000e+05ACTION8566.500000MooredSubInstallationsiteNaNNaNNaNNaNNaNNaN2.0
4408NaNMulti-Purpose Support VesselTransit10.0000004.166667e+04ACTION8576.500000MooredSubInstallationNaNNaNNaNNaNNaNNaNNaNNaN
4409NaNTowing Group 1Transit16.6666676.250000e+04ACTION8583.166667MooredSubInstallationNaNNaNNaNNaNNaNNaNNaN3.0
\n", - "

4410 rows × 16 columns

\n", - "
" + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(\"Design phases: ['ArraySystemDesign', 'ElectricalDesign', \"\n", + " \"'MooringSystemDesign', 'OffshoreFloatingSubstationDesign', \"\n", + " \"'SemiSubmersibleDesign']\")\n", + "('\\n'\n", + " \"Install phases: ['ArrayCableInstallation', 'ExportCableInstallation', \"\n", + " \"'MooredSubInstallation', 'MooringSystemInstallation', \"\n", + " \"'FloatingSubstationInstallation', 'TurbineInstallation']\")\n" + ] + } ], - "text/plain": [ - " cost_multiplier agent \\\n", - "0 0.5 Array Cable Installation Vessel \n", - "1 0.5 Export Cable Installation Vessel \n", - "2 NaN Onshore Construction \n", - "3 1.0 Mooring System Installation Vessel \n", - "4 0.5 Heavy Lift Vessel \n", - "... ... ... \n", - "4405 NaN Multi-Purpose Support Vessel \n", - "4406 NaN Multi-Purpose Support Vessel \n", - "4407 NaN Towing Group 1 \n", - "4408 NaN Multi-Purpose Support Vessel \n", - "4409 NaN Towing Group 1 \n", - "\n", - " action duration cost level time \\\n", - "0 Mobilize 72.000000 1.800000e+05 ACTION 0.000000 \n", - "1 Mobilize 72.000000 1.800000e+05 ACTION 0.000000 \n", - "2 Onshore Construction 0.000000 1.075454e+08 ACTION 0.000000 \n", - "3 Mobilize 168.000000 7.000000e+05 ACTION 0.000000 \n", - "4 Mobilize 72.000000 7.500000e+05 ACTION 0.000000 \n", - "... ... ... ... ... ... \n", - "4405 Connect Mooring Lines 22.000000 9.166667e+04 ACTION 8554.500000 \n", - "4406 Check Mooring Lines 12.000000 5.000000e+04 ACTION 8566.500000 \n", - "4407 Positioning Support 42.000000 1.050000e+05 ACTION 8566.500000 \n", - "4408 Transit 10.000000 4.166667e+04 ACTION 8576.500000 \n", - "4409 Transit 16.666667 6.250000e+04 ACTION 8583.166667 \n", - "\n", - " phase location site_depth hub_height \\\n", - "0 ArrayCableInstallation NaN NaN NaN \n", - "1 ExportCableInstallation NaN NaN NaN \n", - "2 ExportCableInstallation Landfall NaN NaN \n", - "3 MooringSystemInstallation NaN NaN NaN \n", - "4 OffshoreSubstationInstallation NaN NaN NaN \n", - "... ... ... ... ... \n", - "4405 MooredSubInstallation NaN NaN NaN \n", - "4406 MooredSubInstallation NaN NaN NaN \n", - "4407 MooredSubInstallation site NaN NaN \n", - "4408 MooredSubInstallation NaN NaN NaN \n", - "4409 MooredSubInstallation NaN NaN NaN \n", - "\n", - " phase_name max_waveheight max_windspeed transit_speed num_vessels \n", - "0 NaN NaN NaN NaN NaN \n", - "1 NaN NaN NaN NaN NaN \n", - "2 NaN NaN NaN NaN NaN \n", - "3 NaN NaN NaN NaN NaN \n", - "4 NaN NaN NaN NaN NaN \n", - "... ... ... ... ... ... \n", - "4405 NaN NaN NaN NaN NaN \n", - "4406 NaN NaN NaN NaN NaN \n", - "4407 NaN NaN NaN NaN 2.0 \n", - "4408 NaN NaN NaN NaN NaN \n", - "4409 NaN NaN NaN NaN 3.0 \n", - "\n", - "[4410 rows x 16 columns]" + "source": [ + "print(f\"Design phases: {floating_config['design_phases']}\")\n", + "print(f\"\\nInstall phases: {list(floating_config['install_phases'].keys())}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DeprecationWarning: /Users/nriccobo/GitHub/ORBIT/ORBIT/phases/install/quayside_assembly_tow/moored.py:94\n", + "support_vessel will be deprecated and replaced with towing_vessels and ahts_vessel in the towing groups.\n", + "DeprecationWarning: /Users/nriccobo/GitHub/ORBIT/ORBIT/phases/install/quayside_assembly_tow/moored.py:94\n", + "['towing_vessl_groups]['station_keeping_vessels'] will be deprecated and replaced with ['towing_vessl_groups]['ahts_vessels'].\n" + ] + } + ], + "source": [ + "project = ProjectManager(floating_config, weather=weather)\n", + "project.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Top Level Outputs" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installation CapEx: 521 M\n", + "System CapEx: 1444 M\n", + "Turbine CapEx: 780 M\n", + "Soft CapEx: 387 M\n", + "Total CapEx: 3283 M\n", + "\n", + "Installation Time: 41147 h\n" + ] + } + ], + "source": [ + "print(f\"Installation CapEx: {project.installation_capex/1e6:.0f} M\")\n", + "print(f\"System CapEx: {project.system_capex/1e6:.0f} M\")\n", + "print(f\"Turbine CapEx: {project.turbine_capex/1e6:.0f} M\")\n", + "print(f\"Soft CapEx: {project.soft_capex/1e6:.0f} M\")\n", + "print(f\"Total CapEx: {project.total_capex/1e6:.0f} M\")\n", + "\n", + "print(f\"\\nInstallation Time: {project.installation_time:.0f} h\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### CapEx Breakdown" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Array System': 94.97179434403438,\n", + " 'Export System': 432.13532047999996,\n", + " 'Substructure': 1051.1827276666668,\n", + " 'Mooring System': 552.2987080136722,\n", + " 'Offshore Substation': 276.52514805568075,\n", + " 'Array System Installation': 105.04624474280226,\n", + " 'Export System Installation': 246.79354615177581,\n", + " 'Substructure Installation': 208.2509277379141,\n", + " 'Mooring System Installation': 83.49086757990867,\n", + " 'Offshore Substation Installation': 11.784658802638255,\n", + " 'Turbine Installation': 212.89678462709279,\n", + " 'Turbine': 1300.0,\n", + " 'Soft': 645.0,\n", + " 'Project': 252.08333333333334}" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "project.capex_breakdown_per_kw" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Installation Actions" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cost_multiplieragentactiondurationcostleveltimephaselocationsite_depthhub_heightphase_namemax_waveheightmax_windspeedtransit_speednum_vesselsnum_ahts_vessels
00.5Array Cable Installation VesselMobilize72.0000003.375000e+05ACTION0.000000ArrayCableInstallationNaNNaNNaNNaNNaNNaNNaNNaNNaN
10.5Export Cable Installation VesselMobilize72.0000003.375000e+05ACTION0.000000ExportCableInstallationNaNNaNNaNNaNNaNNaNNaNNaNNaN
2NaNOnshore ConstructionOnshore Construction0.0000001.665604e+06ACTION0.000000ExportCableInstallationLandfallNaNNaNNaNNaNNaNNaNNaNNaN
31.0Mooring System Installation VesselMobilize168.0000007.000000e+05ACTION0.000000MooringSystemInstallationNaNNaNNaNNaNNaNNaNNaNNaNNaN
4NaNSubstation Assembly Line 1Substation Substructure Assembly0.0000000.000000e+00ACTION0.000000FloatingSubstationInstallationNaNNaNNaNNaNNaNNaNNaNNaNNaN
......................................................
4521NaNExport Cable Installation VesselPull In Cable5.5000005.156250e+04ACTION12017.280762ExportCableInstallationNaNNaNNaNExportCableInstallationNaNNaNNaNNaNNaN
4522NaNExport Cable Installation VesselTerminate Cable5.5000005.156250e+04ACTION12022.780762ExportCableInstallationNaNNaNNaNExportCableInstallationNaNNaNNaNNaNNaN
4523NaNExport Cable Installation VesselTransit8.0000007.500000e+04ACTION12030.780762ExportCableInstallationNaNNaNNaNNaNNaNNaNNaNNaNNaN
4524NaNExport Cable Installation VesselDelay26.0000002.437500e+05ACTION12056.780762ExportCableInstallationNaNNaNNaNNaNNaNNaNNaNNaNNaN
4525NaNExport Cable Installation VesselTransit0.6956526.521739e+03ACTION12057.476414ExportCableInstallationNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", + "

4526 rows \u00d7 17 columns

\n", + "
" + ], + "text/plain": [ + " cost_multiplier agent \\\n", + "0 0.5 Array Cable Installation Vessel \n", + "1 0.5 Export Cable Installation Vessel \n", + "2 NaN Onshore Construction \n", + "3 1.0 Mooring System Installation Vessel \n", + "4 NaN Substation Assembly Line 1 \n", + "... ... ... \n", + "4521 NaN Export Cable Installation Vessel \n", + "4522 NaN Export Cable Installation Vessel \n", + "4523 NaN Export Cable Installation Vessel \n", + "4524 NaN Export Cable Installation Vessel \n", + "4525 NaN Export Cable Installation Vessel \n", + "\n", + " action duration cost level \\\n", + "0 Mobilize 72.000000 3.375000e+05 ACTION \n", + "1 Mobilize 72.000000 3.375000e+05 ACTION \n", + "2 Onshore Construction 0.000000 1.665604e+06 ACTION \n", + "3 Mobilize 168.000000 7.000000e+05 ACTION \n", + "4 Substation Substructure Assembly 0.000000 0.000000e+00 ACTION \n", + "... ... ... ... ... \n", + "4521 Pull In Cable 5.500000 5.156250e+04 ACTION \n", + "4522 Terminate Cable 5.500000 5.156250e+04 ACTION \n", + "4523 Transit 8.000000 7.500000e+04 ACTION \n", + "4524 Delay 26.000000 2.437500e+05 ACTION \n", + "4525 Transit 0.695652 6.521739e+03 ACTION \n", + "\n", + " time phase location site_depth \\\n", + "0 0.000000 ArrayCableInstallation NaN NaN \n", + "1 0.000000 ExportCableInstallation NaN NaN \n", + "2 0.000000 ExportCableInstallation Landfall NaN \n", + "3 0.000000 MooringSystemInstallation NaN NaN \n", + "4 0.000000 FloatingSubstationInstallation NaN NaN \n", + "... ... ... ... ... \n", + "4521 12017.280762 ExportCableInstallation NaN NaN \n", + "4522 12022.780762 ExportCableInstallation NaN NaN \n", + "4523 12030.780762 ExportCableInstallation NaN NaN \n", + "4524 12056.780762 ExportCableInstallation NaN NaN \n", + "4525 12057.476414 ExportCableInstallation NaN NaN \n", + "\n", + " hub_height phase_name max_waveheight max_windspeed \\\n", + "0 NaN NaN NaN NaN \n", + "1 NaN NaN NaN NaN \n", + "2 NaN NaN NaN NaN \n", + "3 NaN NaN NaN NaN \n", + "4 NaN NaN NaN NaN \n", + "... ... ... ... ... \n", + "4521 NaN ExportCableInstallation NaN NaN \n", + "4522 NaN ExportCableInstallation NaN NaN \n", + "4523 NaN NaN NaN NaN \n", + "4524 NaN NaN NaN NaN \n", + "4525 NaN NaN NaN NaN \n", + "\n", + " transit_speed num_vessels num_ahts_vessels \n", + "0 NaN NaN NaN \n", + "1 NaN NaN NaN \n", + "2 NaN NaN NaN \n", + "3 NaN NaN NaN \n", + "4 NaN NaN NaN \n", + "... ... ... ... \n", + "4521 NaN NaN NaN \n", + "4522 NaN NaN NaN \n", + "4523 NaN NaN NaN \n", + "4524 NaN NaN NaN \n", + "4525 NaN NaN NaN \n", + "\n", + "[4526 rows x 17 columns]" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.DataFrame(project.actions)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mooring System Design:\n", + "{'anchor_cost': 190951.03604101657,\n", + " 'anchor_mass': 50,\n", + " 'anchor_type': 'Suction Pile',\n", + " 'line_cost': 1465945.088,\n", + " 'line_diam': 0.15,\n", + " 'line_length': 1347.376,\n", + " 'line_mass': 606.3192,\n", + " 'mooring_type': 'Catenary',\n", + " 'num_lines': 4,\n", + " 'system_cost': 331379224.80820334}\n", + "\n", + "Mooring System: $/kW\n", + "$ 552.3\n", + "$ 83.49\n" + ] + } + ], + "source": [ + "print(\"Mooring System Design:\")\n", + "pprint(project.design_results[\"mooring_system\"])\n", + "\n", + "print(\"\\nMooring System: $/kW\")\n", + "print(\"$\", round(project.capex_breakdown_per_kw['Mooring System'], 2))\n", + "\n", + "print(\"$\", round(project.capex_breakdown_per_kw['Mooring System Installation'], 2))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. Replace anchor and mooring types " + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DeprecationWarning: /Users/nriccobo/GitHub/ORBIT/ORBIT/phases/install/quayside_assembly_tow/moored.py:94\n", + "support_vessel will be deprecated and replaced with towing_vessels and ahts_vessel in the towing groups.\n", + "DeprecationWarning: /Users/nriccobo/GitHub/ORBIT/ORBIT/phases/install/quayside_assembly_tow/moored.py:94\n", + "['towing_vessl_groups]['station_keeping_vessels'] will be deprecated and replaced with ['towing_vessl_groups]['ahts_vessels'].\n" + ] + } + ], + "source": [ + "semitaut_config = deepcopy(floating_config)\n", + "semitaut_config['mooring_system_design']['anchor_type'] = 'Drag Embedment'\n", + "semitaut_config['mooring_system_design']['mooring_type'] = 'Semitaut'\n", + "\n", + "project_semitaut = ProjectManager(semitaut_config, weather=weather)\n", + "project_semitaut.run()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installation CapEx: 519 M\n", + "System CapEx: 1440 M\n", + "Turbine CapEx: 780 M\n", + "Soft CapEx: 387 M\n", + "Total CapEx: 3278 M\n", + "\n", + "Installation Time: 41147 h\n" + ] + } + ], + "source": [ + "print(f\"Installation CapEx: {project_semitaut.installation_capex/1e6:.0f} M\")\n", + "print(f\"System CapEx: {project_semitaut.system_capex/1e6:.0f} M\")\n", + "print(f\"Turbine CapEx: {project_semitaut.turbine_capex/1e6:.0f} M\")\n", + "print(f\"Soft CapEx: {project_semitaut.soft_capex/1e6:.0f} M\")\n", + "print(f\"Total CapEx: {project_semitaut.total_capex/1e6:.0f} M\")\n", + "\n", + "print(f\"\\nInstallation Time: {project.installation_time:.0f} h\")" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Array System': 94.97179434403438,\n", + " 'Export System': 432.13532047999996,\n", + " 'Substructure': 1051.1827276666668,\n", + " 'Mooring System': 545.7798,\n", + " 'Offshore Substation': 276.3947698954073,\n", + " 'Array System Installation': 105.04624474280226,\n", + " 'Export System Installation': 246.79354615177581,\n", + " 'Substructure Installation': 208.2509277379141,\n", + " 'Mooring System Installation': 80.80888508371386,\n", + " 'Offshore Substation Installation': 11.784658802638255,\n", + " 'Turbine Installation': 212.89678462709279,\n", + " 'Turbine': 1300.0,\n", + " 'Soft': 645.0,\n", + " 'Project': 252.08333333333334}" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "project_semitaut.capex_breakdown_per_kw" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mooring System Design:\n", + "{'anchor_cost': 139426.2,\n", + " 'anchor_mass': 20,\n", + " 'anchor_type': 'Drag Embedment',\n", + " 'line_cost': 1497913.2,\n", + " 'line_diam': 0.15,\n", + " 'line_length': 1755.71,\n", + " 'line_mass': 579.8762530880001,\n", + " 'mooring_type': 'Semitaut',\n", + " 'num_lines': 4,\n", + " 'system_cost': 327467880.0}\n", + "\n", + "Mooring System: $/kW\n", + "$ 545.78\n", + "$ 80.81\n" + ] + } + ], + "source": [ + "print(\"Mooring System Design:\")\n", + "pprint(project_semitaut.design_results[\"mooring_system\"])\n", + "\n", + "print(\"\\nMooring System: $/kW\")\n", + "print(\"$\", round(project_semitaut.capex_breakdown_per_kw['Mooring System'], 2))\n", + "\n", + "print(\"$\", round(project_semitaut.capex_breakdown_per_kw['Mooring System Installation'], 2))" ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" } - ], - "source": [ - "pd.DataFrame(project.actions)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/examples/Example - Cable Install Configurations.ipynb b/examples/Example - Cable Install Configurations.ipynb index d4f20772..4b2a2f46 100644 --- a/examples/Example - Cable Install Configurations.ipynb +++ b/examples/Example - Cable Install Configurations.ipynb @@ -1,887 +1,887 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### ORBIT Example - Cable Installation Options\n", - "\n", - "Last Updated: 07/88/2021" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "from ORBIT import ProjectManager" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### ArrayCableInstallation Module" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ + "cells": [ { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cost_multiplieragentactiondurationcostleveltimephasephase_namemax_waveheightmax_windspeedtransit_speed
00.5Array Cable Installation VesselMobilize72.000000180000.000000ACTION0.000000ArrayCableInstallationNaNNaNNaNNaN
1NaNArray Cable Installation VesselLoad Cable6.00000030000.000000ACTION6.000000ArrayCableInstallationArrayCableInstallationNaNNaNNaN
2NaNArray Cable Installation VesselTransit1.7391308695.652174ACTION7.739130ArrayCableInstallationArrayCableInstallationNaNNaNNaN
3NaNArray Cable Installation VesselPosition Onsite2.00000010000.000000ACTION9.739130ArrayCableInstallationNaNNaNNaNNaN
4NaNArray Cable Installation VesselPrepare Cable1.0000005000.000000ACTION10.739130ArrayCableInstallationArrayCableInstallationNaNNaNNaN
5NaNArray Cable Installation VesselPull In Cable5.50000027500.000000ACTION16.239130ArrayCableInstallationArrayCableInstallationNaNNaNNaN
6NaNArray Cable Installation VesselTerminate Cable5.50000027500.000000ACTION21.739130ArrayCableInstallationArrayCableInstallationNaNNaNNaN
7NaNArray Cable Installation VesselLower Cable1.0000005000.000000ACTION22.739130ArrayCableInstallationArrayCableInstallationNaNNaNNaN
8NaNArray Cable Installation VesselLay/Bury Cable6.66666733333.333333ACTION29.405797ArrayCableInstallationArrayCableInstallation2.025.011.5
9NaNArray Cable Installation VesselPrepare Cable1.0000005000.000000ACTION30.405797ArrayCableInstallationArrayCableInstallationNaNNaNNaN
\n", - "
" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ORBIT Example - Cable Installation Options\n", + "\n", + "Last Updated: 07/88/2021" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from ORBIT import ProjectManager" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### ArrayCableInstallation Module" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cost_multiplieragentactiondurationcostleveltimephasephase_namemax_waveheightmax_windspeedtransit_speed
00.5Array Cable Installation VesselMobilize72.000000180000.000000ACTION0.000000ArrayCableInstallationNaNNaNNaNNaN
1NaNArray Cable Installation VesselLoad Cable6.00000030000.000000ACTION6.000000ArrayCableInstallationArrayCableInstallationNaNNaNNaN
2NaNArray Cable Installation VesselTransit1.7391308695.652174ACTION7.739130ArrayCableInstallationArrayCableInstallationNaNNaNNaN
3NaNArray Cable Installation VesselPosition Onsite2.00000010000.000000ACTION9.739130ArrayCableInstallationNaNNaNNaNNaN
4NaNArray Cable Installation VesselPrepare Cable1.0000005000.000000ACTION10.739130ArrayCableInstallationArrayCableInstallationNaNNaNNaN
5NaNArray Cable Installation VesselPull In Cable5.50000027500.000000ACTION16.239130ArrayCableInstallationArrayCableInstallationNaNNaNNaN
6NaNArray Cable Installation VesselTerminate Cable5.50000027500.000000ACTION21.739130ArrayCableInstallationArrayCableInstallationNaNNaNNaN
7NaNArray Cable Installation VesselLower Cable1.0000005000.000000ACTION22.739130ArrayCableInstallationArrayCableInstallationNaNNaNNaN
8NaNArray Cable Installation VesselLay/Bury Cable6.66666733333.333333ACTION29.405797ArrayCableInstallationArrayCableInstallation2.025.011.5
9NaNArray Cable Installation VesselPrepare Cable1.0000005000.000000ACTION30.405797ArrayCableInstallationArrayCableInstallationNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " cost_multiplier agent action \\\n", + "0 0.5 Array Cable Installation Vessel Mobilize \n", + "1 NaN Array Cable Installation Vessel Load Cable \n", + "2 NaN Array Cable Installation Vessel Transit \n", + "3 NaN Array Cable Installation Vessel Position Onsite \n", + "4 NaN Array Cable Installation Vessel Prepare Cable \n", + "5 NaN Array Cable Installation Vessel Pull In Cable \n", + "6 NaN Array Cable Installation Vessel Terminate Cable \n", + "7 NaN Array Cable Installation Vessel Lower Cable \n", + "8 NaN Array Cable Installation Vessel Lay/Bury Cable \n", + "9 NaN Array Cable Installation Vessel Prepare Cable \n", + "\n", + " duration cost level time phase \\\n", + "0 72.000000 180000.000000 ACTION 0.000000 ArrayCableInstallation \n", + "1 6.000000 30000.000000 ACTION 6.000000 ArrayCableInstallation \n", + "2 1.739130 8695.652174 ACTION 7.739130 ArrayCableInstallation \n", + "3 2.000000 10000.000000 ACTION 9.739130 ArrayCableInstallation \n", + "4 1.000000 5000.000000 ACTION 10.739130 ArrayCableInstallation \n", + "5 5.500000 27500.000000 ACTION 16.239130 ArrayCableInstallation \n", + "6 5.500000 27500.000000 ACTION 21.739130 ArrayCableInstallation \n", + "7 1.000000 5000.000000 ACTION 22.739130 ArrayCableInstallation \n", + "8 6.666667 33333.333333 ACTION 29.405797 ArrayCableInstallation \n", + "9 1.000000 5000.000000 ACTION 30.405797 ArrayCableInstallation \n", + "\n", + " phase_name max_waveheight max_windspeed transit_speed \n", + "0 NaN NaN NaN NaN \n", + "1 ArrayCableInstallation NaN NaN NaN \n", + "2 ArrayCableInstallation NaN NaN NaN \n", + "3 NaN NaN NaN NaN \n", + "4 ArrayCableInstallation NaN NaN NaN \n", + "5 ArrayCableInstallation NaN NaN NaN \n", + "6 ArrayCableInstallation NaN NaN NaN \n", + "7 ArrayCableInstallation NaN NaN NaN \n", + "8 ArrayCableInstallation 2.0 25.0 11.5 \n", + "9 ArrayCableInstallation NaN NaN NaN " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " cost_multiplier agent action \\\n", - "0 0.5 Array Cable Installation Vessel Mobilize \n", - "1 NaN Array Cable Installation Vessel Load Cable \n", - "2 NaN Array Cable Installation Vessel Transit \n", - "3 NaN Array Cable Installation Vessel Position Onsite \n", - "4 NaN Array Cable Installation Vessel Prepare Cable \n", - "5 NaN Array Cable Installation Vessel Pull In Cable \n", - "6 NaN Array Cable Installation Vessel Terminate Cable \n", - "7 NaN Array Cable Installation Vessel Lower Cable \n", - "8 NaN Array Cable Installation Vessel Lay/Bury Cable \n", - "9 NaN Array Cable Installation Vessel Prepare Cable \n", - "\n", - " duration cost level time phase \\\n", - "0 72.000000 180000.000000 ACTION 0.000000 ArrayCableInstallation \n", - "1 6.000000 30000.000000 ACTION 6.000000 ArrayCableInstallation \n", - "2 1.739130 8695.652174 ACTION 7.739130 ArrayCableInstallation \n", - "3 2.000000 10000.000000 ACTION 9.739130 ArrayCableInstallation \n", - "4 1.000000 5000.000000 ACTION 10.739130 ArrayCableInstallation \n", - "5 5.500000 27500.000000 ACTION 16.239130 ArrayCableInstallation \n", - "6 5.500000 27500.000000 ACTION 21.739130 ArrayCableInstallation \n", - "7 1.000000 5000.000000 ACTION 22.739130 ArrayCableInstallation \n", - "8 6.666667 33333.333333 ACTION 29.405797 ArrayCableInstallation \n", - "9 1.000000 5000.000000 ACTION 30.405797 ArrayCableInstallation \n", - "\n", - " phase_name max_waveheight max_windspeed transit_speed \n", - "0 NaN NaN NaN NaN \n", - "1 ArrayCableInstallation NaN NaN NaN \n", - "2 ArrayCableInstallation NaN NaN NaN \n", - "3 NaN NaN NaN NaN \n", - "4 ArrayCableInstallation NaN NaN NaN \n", - "5 ArrayCableInstallation NaN NaN NaN \n", - "6 ArrayCableInstallation NaN NaN NaN \n", - "7 ArrayCableInstallation NaN NaN NaN \n", - "8 ArrayCableInstallation 2.0 25.0 11.5 \n", - "9 ArrayCableInstallation NaN NaN NaN " + "source": [ + "# The configuration below can be modified to change the installation strategies utilized in ArrayCableInstallation module\n", + "# by toggling on/off which vessels are configured:\n", + "\n", + "config = {\n", + " \"array_cable_install_vessel\": \"example_cable_lay_vessel\", # This vessel will perform a simultaneous lay/bury installation strategy\n", + " # as there is no 'bury_vessel' defined in the config\n", + "\n", + "# \"array_cable_bury_vessel\": \"example_cable_lay_vessel\", # <--- Commented out. Will be ignored by the code.\n", + "# \"array_cable_trench_vessel\": \"example_cable_lay_vessel\", # <--- Commented out. Will be ignored by the code.\n", + " \n", + " \"site\": {\"distance\": 20, \"depth\": 35},\n", + " \"port\": {},\n", + " \"array_system\": {\n", + " \"system_cost\": 50e6,\n", + " \"cables\": {\n", + " \"ExampleCable\": {\n", + " \"linear_density\": 40, # t/km\n", + " \"cable_sections\": [(2, 25), (1, 25)] # (length, num) pairs. This example: 25 2km cables and 25 1km cables .\n", + " }\n", + " }\n", + " },\n", + " \n", + " \"install_phases\": [\"ArrayCableInstallation\"]\n", + "}\n", + "\n", + "# Run\n", + "project = ProjectManager(config)\n", + "project.run()\n", + "\n", + "# Outputs\n", + "df = pd.DataFrame(project.actions)\n", + "df.iloc[0:10] # Notice the action \"Lay/Bury Cable\" in row 8." ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# The configuration below can be modified to change the installation strategies utilized in ArrayCableInstallation module\n", - "# by toggling on/off which vessels are configured:\n", - "\n", - "config = {\n", - " \"array_cable_install_vessel\": \"example_cable_lay_vessel\", # This vessel will perform a simultaneous lay/bury installation strategy\n", - " # as there is no 'bury_vessel' defined in the config\n", - "\n", - "# \"array_cable_bury_vessel\": \"example_cable_lay_vessel\", # <--- Commented out. Will be ignored by the code.\n", - "# \"array_cable_trench_vessel\": \"example_cable_lay_vessel\", # <--- Commented out. Will be ignored by the code.\n", - " \n", - " \"site\": {\"distance\": 20, \"depth\": 35},\n", - " \"port\": {},\n", - " \"array_system\": {\n", - " \"system_cost\": 50e6,\n", - " \"cables\": {\n", - " \"ExampleCable\": {\n", - " \"linear_density\": 40, # t/km\n", - " \"cable_sections\": [(2, 25), (1, 25)] # (length, num) pairs. This example: 25 2km cables and 25 1km cables .\n", - " }\n", - " }\n", - " },\n", - " \n", - " \"install_phases\": [\"ArrayCableInstallation\"]\n", - "}\n", - "\n", - "# Run\n", - "project = ProjectManager(config)\n", - "project.run()\n", - "\n", - "# Outputs\n", - "df = pd.DataFrame(project.actions)\n", - "df.iloc[0:10] # Notice the action \"Lay/Bury Cable\" in row 8." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Including a separate burial vessel" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Including a separate burial vessel" + ] + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cost_multiplieragentactiondurationcostleveltimephasephase_namemax_waveheightmax_windspeedtransit_speed
00.5Array Cable Installation VesselMobilize72.00000180000.000000ACTION0.00000ArrayCableInstallationNaNNaNNaNNaN
10.5Array Cable Burial VesselMobilize72.00000180000.000000ACTION0.00000ArrayCableInstallationNaNNaNNaNNaN
2NaNArray Cable Installation VesselLoad Cable6.0000030000.000000ACTION6.00000ArrayCableInstallationArrayCableInstallationNaNNaNNaN
3NaNArray Cable Installation VesselTransit1.739138695.652174ACTION7.73913ArrayCableInstallationArrayCableInstallationNaNNaNNaN
4NaNArray Cable Installation VesselPosition Onsite2.0000010000.000000ACTION9.73913ArrayCableInstallationNaNNaNNaNNaN
5NaNArray Cable Installation VesselPrepare Cable1.000005000.000000ACTION10.73913ArrayCableInstallationArrayCableInstallationNaNNaNNaN
6NaNArray Cable Installation VesselPull In Cable5.5000027500.000000ACTION16.23913ArrayCableInstallationArrayCableInstallationNaNNaNNaN
7NaNArray Cable Installation VesselTerminate Cable5.5000027500.000000ACTION21.73913ArrayCableInstallationArrayCableInstallationNaNNaNNaN
8NaNArray Cable Installation VesselLower Cable1.000005000.000000ACTION22.73913ArrayCableInstallationArrayCableInstallationNaNNaNNaN
9NaNArray Cable Installation VesselLay Cable2.0000010000.000000ACTION24.73913ArrayCableInstallationArrayCableInstallation2.025.011.5
\n", - "
" + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cost_multiplieragentactiondurationcostleveltimephasephase_namemax_waveheightmax_windspeedtransit_speed
00.5Array Cable Installation VesselMobilize72.00000180000.000000ACTION0.00000ArrayCableInstallationNaNNaNNaNNaN
10.5Array Cable Burial VesselMobilize72.00000180000.000000ACTION0.00000ArrayCableInstallationNaNNaNNaNNaN
2NaNArray Cable Installation VesselLoad Cable6.0000030000.000000ACTION6.00000ArrayCableInstallationArrayCableInstallationNaNNaNNaN
3NaNArray Cable Installation VesselTransit1.739138695.652174ACTION7.73913ArrayCableInstallationArrayCableInstallationNaNNaNNaN
4NaNArray Cable Installation VesselPosition Onsite2.0000010000.000000ACTION9.73913ArrayCableInstallationNaNNaNNaNNaN
5NaNArray Cable Installation VesselPrepare Cable1.000005000.000000ACTION10.73913ArrayCableInstallationArrayCableInstallationNaNNaNNaN
6NaNArray Cable Installation VesselPull In Cable5.5000027500.000000ACTION16.23913ArrayCableInstallationArrayCableInstallationNaNNaNNaN
7NaNArray Cable Installation VesselTerminate Cable5.5000027500.000000ACTION21.73913ArrayCableInstallationArrayCableInstallationNaNNaNNaN
8NaNArray Cable Installation VesselLower Cable1.000005000.000000ACTION22.73913ArrayCableInstallationArrayCableInstallationNaNNaNNaN
9NaNArray Cable Installation VesselLay Cable2.0000010000.000000ACTION24.73913ArrayCableInstallationArrayCableInstallation2.025.011.5
\n", + "
" + ], + "text/plain": [ + " cost_multiplier agent action \\\n", + "0 0.5 Array Cable Installation Vessel Mobilize \n", + "1 0.5 Array Cable Burial Vessel Mobilize \n", + "2 NaN Array Cable Installation Vessel Load Cable \n", + "3 NaN Array Cable Installation Vessel Transit \n", + "4 NaN Array Cable Installation Vessel Position Onsite \n", + "5 NaN Array Cable Installation Vessel Prepare Cable \n", + "6 NaN Array Cable Installation Vessel Pull In Cable \n", + "7 NaN Array Cable Installation Vessel Terminate Cable \n", + "8 NaN Array Cable Installation Vessel Lower Cable \n", + "9 NaN Array Cable Installation Vessel Lay Cable \n", + "\n", + " duration cost level time phase \\\n", + "0 72.00000 180000.000000 ACTION 0.00000 ArrayCableInstallation \n", + "1 72.00000 180000.000000 ACTION 0.00000 ArrayCableInstallation \n", + "2 6.00000 30000.000000 ACTION 6.00000 ArrayCableInstallation \n", + "3 1.73913 8695.652174 ACTION 7.73913 ArrayCableInstallation \n", + "4 2.00000 10000.000000 ACTION 9.73913 ArrayCableInstallation \n", + "5 1.00000 5000.000000 ACTION 10.73913 ArrayCableInstallation \n", + "6 5.50000 27500.000000 ACTION 16.23913 ArrayCableInstallation \n", + "7 5.50000 27500.000000 ACTION 21.73913 ArrayCableInstallation \n", + "8 1.00000 5000.000000 ACTION 22.73913 ArrayCableInstallation \n", + "9 2.00000 10000.000000 ACTION 24.73913 ArrayCableInstallation \n", + "\n", + " phase_name max_waveheight max_windspeed transit_speed \n", + "0 NaN NaN NaN NaN \n", + "1 NaN NaN NaN NaN \n", + "2 ArrayCableInstallation NaN NaN NaN \n", + "3 ArrayCableInstallation NaN NaN NaN \n", + "4 NaN NaN NaN NaN \n", + "5 ArrayCableInstallation NaN NaN NaN \n", + "6 ArrayCableInstallation NaN NaN NaN \n", + "7 ArrayCableInstallation NaN NaN NaN \n", + "8 ArrayCableInstallation NaN NaN NaN \n", + "9 ArrayCableInstallation 2.0 25.0 11.5 " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " cost_multiplier agent action \\\n", - "0 0.5 Array Cable Installation Vessel Mobilize \n", - "1 0.5 Array Cable Burial Vessel Mobilize \n", - "2 NaN Array Cable Installation Vessel Load Cable \n", - "3 NaN Array Cable Installation Vessel Transit \n", - "4 NaN Array Cable Installation Vessel Position Onsite \n", - "5 NaN Array Cable Installation Vessel Prepare Cable \n", - "6 NaN Array Cable Installation Vessel Pull In Cable \n", - "7 NaN Array Cable Installation Vessel Terminate Cable \n", - "8 NaN Array Cable Installation Vessel Lower Cable \n", - "9 NaN Array Cable Installation Vessel Lay Cable \n", - "\n", - " duration cost level time phase \\\n", - "0 72.00000 180000.000000 ACTION 0.00000 ArrayCableInstallation \n", - "1 72.00000 180000.000000 ACTION 0.00000 ArrayCableInstallation \n", - "2 6.00000 30000.000000 ACTION 6.00000 ArrayCableInstallation \n", - "3 1.73913 8695.652174 ACTION 7.73913 ArrayCableInstallation \n", - "4 2.00000 10000.000000 ACTION 9.73913 ArrayCableInstallation \n", - "5 1.00000 5000.000000 ACTION 10.73913 ArrayCableInstallation \n", - "6 5.50000 27500.000000 ACTION 16.23913 ArrayCableInstallation \n", - "7 5.50000 27500.000000 ACTION 21.73913 ArrayCableInstallation \n", - "8 1.00000 5000.000000 ACTION 22.73913 ArrayCableInstallation \n", - "9 2.00000 10000.000000 ACTION 24.73913 ArrayCableInstallation \n", - "\n", - " phase_name max_waveheight max_windspeed transit_speed \n", - "0 NaN NaN NaN NaN \n", - "1 NaN NaN NaN NaN \n", - "2 ArrayCableInstallation NaN NaN NaN \n", - "3 ArrayCableInstallation NaN NaN NaN \n", - "4 NaN NaN NaN NaN \n", - "5 ArrayCableInstallation NaN NaN NaN \n", - "6 ArrayCableInstallation NaN NaN NaN \n", - "7 ArrayCableInstallation NaN NaN NaN \n", - "8 ArrayCableInstallation NaN NaN NaN \n", - "9 ArrayCableInstallation 2.0 25.0 11.5 " + "source": [ + "config = {\n", + " \"array_cable_install_vessel\": \"example_cable_lay_vessel\", # This vessel will now lay the cable but will not bury it.\n", + " \"array_cable_bury_vessel\": \"example_cable_lay_vessel\", # This vessel will now complete the burial process separate from the installation vessel.\n", + "# \"array_cable_trench_vessel\": \"example_cable_lay_vessel\", # <--- Commented out. Will be ignored by the code.\n", + " \n", + " \"site\": {\"distance\": 20, \"depth\": 35},\n", + " \"port\": {},\n", + " \"array_system\": {\n", + " \"system_cost\": 50e6,\n", + " \"cables\": {\n", + " \"ExampleCable\": {\n", + " \"linear_density\": 40, # t/km\n", + " \"cable_sections\": [(2, 25), (1, 25)] # (length, num) pairs. This example: 25 2km cables and 25 1km cables .\n", + " }\n", + " }\n", + " },\n", + " \n", + " \"install_phases\": [\"ArrayCableInstallation\"]\n", + "}\n", + "\n", + "# Run\n", + "project = ProjectManager(config)\n", + "project.run()\n", + "\n", + "# Outputs\n", + "df = pd.DataFrame(project.actions)\n", + "df.iloc[0:10]\n", + "\n", + "# There is an additional vessel mobilization in Row 1 and Row 9 is now just \"Lay Cable\"\n", + "# The burial process now occurs separate from the installation vessel." ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "config = {\n", - " \"array_cable_install_vessel\": \"example_cable_lay_vessel\", # This vessel will now lay the cable but will not bury it.\n", - " \"array_cable_bury_vessel\": \"example_cable_lay_vessel\", # This vessel will now complete the burial process separate from the installation vessel.\n", - "# \"array_cable_trench_vessel\": \"example_cable_lay_vessel\", # <--- Commented out. Will be ignored by the code.\n", - " \n", - " \"site\": {\"distance\": 20, \"depth\": 35},\n", - " \"port\": {},\n", - " \"array_system\": {\n", - " \"system_cost\": 50e6,\n", - " \"cables\": {\n", - " \"ExampleCable\": {\n", - " \"linear_density\": 40, # t/km\n", - " \"cable_sections\": [(2, 25), (1, 25)] # (length, num) pairs. This example: 25 2km cables and 25 1km cables .\n", - " }\n", - " }\n", - " },\n", - " \n", - " \"install_phases\": [\"ArrayCableInstallation\"]\n", - "}\n", - "\n", - "# Run\n", - "project = ProjectManager(config)\n", - "project.run()\n", - "\n", - "# Outputs\n", - "df = pd.DataFrame(project.actions)\n", - "df.iloc[0:10]\n", - "\n", - "# There is an additional vessel mobilization in Row 1 and Row 9 is now just \"Lay Cable\"\n", - "# The burial process now occurs separate from the installation vessel." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Including a Trenching Vessel" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cost_multiplieragentactiondurationcostleveltimephasephase_namemax_waveheightmax_windspeedtransit_speed
00.5Array Cable Installation VesselMobilize72.00000180000.000000ACTION0.00000ArrayCableInstallationNaNNaNNaNNaN
10.5Array Cable Burial VesselMobilize72.00000180000.000000ACTION0.00000ArrayCableInstallationNaNNaNNaNNaN
20.5Array Cable Trench VesselMobilize72.00000180000.000000ACTION0.00000ArrayCableInstallationNaNNaNNaNNaN
3NaNArray Cable Trench VesselTransit1.739138695.652174ACTION1.73913ArrayCableInstallationArrayCableInstallationNaNNaNNaN
4NaNArray Cable Trench VesselPosition Onsite2.0000010000.000000ACTION3.73913ArrayCableInstallationNaNNaNNaNNaN
5NaNArray Cable Trench VesselDig Trench19.3000096500.000000ACTION23.03913ArrayCableInstallationArrayCableInstallation2.025.011.5
6NaNArray Cable Trench VesselPosition Onsite2.0000010000.000000ACTION25.03913ArrayCableInstallationNaNNaNNaNNaN
7NaNArray Cable Trench VesselDig Trench19.3000096500.000000ACTION44.33913ArrayCableInstallationArrayCableInstallation2.025.011.5
8NaNArray Cable Trench VesselPosition Onsite2.0000010000.000000ACTION46.33913ArrayCableInstallationNaNNaNNaNNaN
9NaNArray Cable Trench VesselDig Trench19.3000096500.000000ACTION65.63913ArrayCableInstallationArrayCableInstallation2.025.011.5
\n", - "
" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Including a Trenching Vessel" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cost_multiplieragentactiondurationcostleveltimephasephase_namemax_waveheightmax_windspeedtransit_speed
00.5Array Cable Installation VesselMobilize72.00000180000.000000ACTION0.00000ArrayCableInstallationNaNNaNNaNNaN
10.5Array Cable Burial VesselMobilize72.00000180000.000000ACTION0.00000ArrayCableInstallationNaNNaNNaNNaN
20.5Array Cable Trench VesselMobilize72.00000180000.000000ACTION0.00000ArrayCableInstallationNaNNaNNaNNaN
3NaNArray Cable Trench VesselTransit1.739138695.652174ACTION1.73913ArrayCableInstallationArrayCableInstallationNaNNaNNaN
4NaNArray Cable Trench VesselPosition Onsite2.0000010000.000000ACTION3.73913ArrayCableInstallationNaNNaNNaNNaN
5NaNArray Cable Trench VesselDig Trench19.3000096500.000000ACTION23.03913ArrayCableInstallationArrayCableInstallation2.025.011.5
6NaNArray Cable Trench VesselPosition Onsite2.0000010000.000000ACTION25.03913ArrayCableInstallationNaNNaNNaNNaN
7NaNArray Cable Trench VesselDig Trench19.3000096500.000000ACTION44.33913ArrayCableInstallationArrayCableInstallation2.025.011.5
8NaNArray Cable Trench VesselPosition Onsite2.0000010000.000000ACTION46.33913ArrayCableInstallationNaNNaNNaNNaN
9NaNArray Cable Trench VesselDig Trench19.3000096500.000000ACTION65.63913ArrayCableInstallationArrayCableInstallation2.025.011.5
\n", + "
" + ], + "text/plain": [ + " cost_multiplier agent action \\\n", + "0 0.5 Array Cable Installation Vessel Mobilize \n", + "1 0.5 Array Cable Burial Vessel Mobilize \n", + "2 0.5 Array Cable Trench Vessel Mobilize \n", + "3 NaN Array Cable Trench Vessel Transit \n", + "4 NaN Array Cable Trench Vessel Position Onsite \n", + "5 NaN Array Cable Trench Vessel Dig Trench \n", + "6 NaN Array Cable Trench Vessel Position Onsite \n", + "7 NaN Array Cable Trench Vessel Dig Trench \n", + "8 NaN Array Cable Trench Vessel Position Onsite \n", + "9 NaN Array Cable Trench Vessel Dig Trench \n", + "\n", + " duration cost level time phase \\\n", + "0 72.00000 180000.000000 ACTION 0.00000 ArrayCableInstallation \n", + "1 72.00000 180000.000000 ACTION 0.00000 ArrayCableInstallation \n", + "2 72.00000 180000.000000 ACTION 0.00000 ArrayCableInstallation \n", + "3 1.73913 8695.652174 ACTION 1.73913 ArrayCableInstallation \n", + "4 2.00000 10000.000000 ACTION 3.73913 ArrayCableInstallation \n", + "5 19.30000 96500.000000 ACTION 23.03913 ArrayCableInstallation \n", + "6 2.00000 10000.000000 ACTION 25.03913 ArrayCableInstallation \n", + "7 19.30000 96500.000000 ACTION 44.33913 ArrayCableInstallation \n", + "8 2.00000 10000.000000 ACTION 46.33913 ArrayCableInstallation \n", + "9 19.30000 96500.000000 ACTION 65.63913 ArrayCableInstallation \n", + "\n", + " phase_name max_waveheight max_windspeed transit_speed \n", + "0 NaN NaN NaN NaN \n", + "1 NaN NaN NaN NaN \n", + "2 NaN NaN NaN NaN \n", + "3 ArrayCableInstallation NaN NaN NaN \n", + "4 NaN NaN NaN NaN \n", + "5 ArrayCableInstallation 2.0 25.0 11.5 \n", + "6 NaN NaN NaN NaN \n", + "7 ArrayCableInstallation 2.0 25.0 11.5 \n", + "8 NaN NaN NaN NaN \n", + "9 ArrayCableInstallation 2.0 25.0 11.5 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " cost_multiplier agent action \\\n", - "0 0.5 Array Cable Installation Vessel Mobilize \n", - "1 0.5 Array Cable Burial Vessel Mobilize \n", - "2 0.5 Array Cable Trench Vessel Mobilize \n", - "3 NaN Array Cable Trench Vessel Transit \n", - "4 NaN Array Cable Trench Vessel Position Onsite \n", - "5 NaN Array Cable Trench Vessel Dig Trench \n", - "6 NaN Array Cable Trench Vessel Position Onsite \n", - "7 NaN Array Cable Trench Vessel Dig Trench \n", - "8 NaN Array Cable Trench Vessel Position Onsite \n", - "9 NaN Array Cable Trench Vessel Dig Trench \n", - "\n", - " duration cost level time phase \\\n", - "0 72.00000 180000.000000 ACTION 0.00000 ArrayCableInstallation \n", - "1 72.00000 180000.000000 ACTION 0.00000 ArrayCableInstallation \n", - "2 72.00000 180000.000000 ACTION 0.00000 ArrayCableInstallation \n", - "3 1.73913 8695.652174 ACTION 1.73913 ArrayCableInstallation \n", - "4 2.00000 10000.000000 ACTION 3.73913 ArrayCableInstallation \n", - "5 19.30000 96500.000000 ACTION 23.03913 ArrayCableInstallation \n", - "6 2.00000 10000.000000 ACTION 25.03913 ArrayCableInstallation \n", - "7 19.30000 96500.000000 ACTION 44.33913 ArrayCableInstallation \n", - "8 2.00000 10000.000000 ACTION 46.33913 ArrayCableInstallation \n", - "9 19.30000 96500.000000 ACTION 65.63913 ArrayCableInstallation \n", - "\n", - " phase_name max_waveheight max_windspeed transit_speed \n", - "0 NaN NaN NaN NaN \n", - "1 NaN NaN NaN NaN \n", - "2 NaN NaN NaN NaN \n", - "3 ArrayCableInstallation NaN NaN NaN \n", - "4 NaN NaN NaN NaN \n", - "5 ArrayCableInstallation 2.0 25.0 11.5 \n", - "6 NaN NaN NaN NaN \n", - "7 ArrayCableInstallation 2.0 25.0 11.5 \n", - "8 NaN NaN NaN NaN \n", - "9 ArrayCableInstallation 2.0 25.0 11.5 " + "source": [ + "config = {\n", + " \"array_cable_install_vessel\": \"example_cable_lay_vessel\", # This vessel will lay the cable but will not bury it.\n", + " \"array_cable_bury_vessel\": \"example_cable_lay_vessel\", # This vessel will complete the burial process separate from the installation vessel.\n", + " \"array_cable_trench_vessel\": \"example_cable_lay_vessel\", # This vessel will complete the trenching process prior to the other two vessels beginning their work.\n", + " \n", + " \"site\": {\"distance\": 20, \"depth\": 35},\n", + " \"port\": {},\n", + " \"array_system\": {\n", + " \"system_cost\": 50e6,\n", + " \"cables\": {\n", + " \"ExampleCable\": {\n", + " \"linear_density\": 40, # t/km\n", + " \"cable_sections\": [(2, 25), (1, 25)] # (length, num) pairs. This example: 25 2km cables and 25 1km cables .\n", + " }\n", + " }\n", + " },\n", + " \n", + " \"install_phases\": [\"ArrayCableInstallation\"]\n", + "}\n", + "\n", + "# Run\n", + "project = ProjectManager(config)\n", + "project.run()\n", + "\n", + "# Outputs\n", + "df = pd.DataFrame(project.actions)\n", + "df.iloc[0:10]\n", + "\n", + "# There are now three vessel mobilizations at the beginning of the installation.\n", + "# The first process to be completed is the trenching (\"Dig Trench\"). After this is completed the other vessels will begin their tasks." ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" } - ], - "source": [ - "config = {\n", - " \"array_cable_install_vessel\": \"example_cable_lay_vessel\", # This vessel will lay the cable but will not bury it.\n", - " \"array_cable_bury_vessel\": \"example_cable_lay_vessel\", # This vessel will complete the burial process separate from the installation vessel.\n", - " \"array_cable_trench_vessel\": \"example_cable_lay_vessel\", # This vessel will complete the trenching process prior to the other two vessels beginning their work.\n", - " \n", - " \"site\": {\"distance\": 20, \"depth\": 35},\n", - " \"port\": {},\n", - " \"array_system\": {\n", - " \"system_cost\": 50e6,\n", - " \"cables\": {\n", - " \"ExampleCable\": {\n", - " \"linear_density\": 40, # t/km\n", - " \"cable_sections\": [(2, 25), (1, 25)] # (length, num) pairs. This example: 25 2km cables and 25 1km cables .\n", - " }\n", - " }\n", - " },\n", - " \n", - " \"install_phases\": [\"ArrayCableInstallation\"]\n", - "}\n", - "\n", - "# Run\n", - "project = ProjectManager(config)\n", - "project.run()\n", - "\n", - "# Outputs\n", - "df = pd.DataFrame(project.actions)\n", - "df.iloc[0:10]\n", - "\n", - "# There are now three vessel mobilizations at the beginning of the installation.\n", - "# The first process to be completed is the trenching (\"Dig Trench\"). After this is completed the other vessels will begin their tasks." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/examples/Example - Cash Flow.ipynb b/examples/Example - Cash Flow.ipynb index 6d7e0c48..09b18dd1 100644 --- a/examples/Example - Cash Flow.ipynb +++ b/examples/Example - Cash Flow.ipynb @@ -1,540 +1,540 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### ORBIT Example - Cash Flow and NPV\n", - "\n", - "Last Updated: 07/28/2021" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "# This notebook provides an example of the cash flow and net present value functionality in ORBIT.\n", - "\n", - "import os\n", - "import pandas as pd\n", - "import matplotlib.pyplot as plt\n", - "from ORBIT import ProjectManager, load_config\n", - "\n", - "weather = pd.read_csv(\"data/example_weather.csv\", parse_dates=[\"datetime\"])\\\n", - " .set_index(\"datetime\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Load the Project Configuration" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "config = load_config(\"configs/example_fixed_project.yaml\")\n", - "\n", - "# config['install_phases'] = {\n", - "# 'ArrayCableInstallation': 0,\n", - "# 'ExportCableInstallation': 2000,\n", - "# 'MonopileInstallation': ('ScourProtectionInstallation', 0.5),\n", - "# 'OffshoreSubstationInstallation': 0,\n", - "# 'ScourProtectionInstallation': 0,\n", - "# 'TurbineInstallation': ('MonopileInstallation', 0.1)\n", - "# }" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For this example, a project with the following phases will be configured:\n", - "\n", - "- ProjectDevelopment\n", - "- MonopileDesign\n", - "- ArraySystemDesign\n", - "- ExportSystemDesign\n", - "- OffshoreSubstationDesign\n", - "- ArrayCableInstallation\n", - "- ExportCableInstallation\n", - "- MonopileInstallation\n", - "- OffshoreSubstationInstallation\n", - "- TurbineInstallation\n", - "\n", - "The configuration below represents a \"complete\" project that will be able to produce\n", - "power when the requisite pieces are done being installed. As each array string is able to\n", - "generate power, the project will begin to generate additional revenue and incur\n", - "O&M costs." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ + "cells": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "ORBIT library intialized at '/Users/jnunemak/Fun/repos/ORBIT/library'\n" - ] - } - ], - "source": [ - "project = ProjectManager(config, weather=weather)\n", - "project.run()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### NPV" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ORBIT Example - Cash Flow and NPV\n", + "\n", + "Last Updated: 07/28/2021" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Net Present Value: 426.31 M\n" - ] - } - ], - "source": [ - "# In addition to the other results shown in previous examples, the NPV of the project is available:\n", - "\n", - "print(f\"Net Present Value: {project.npv/1e6:.2f} M\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Project Progress + String Energization Points\n", - "\n", - "The \"progress points\" of the project are tracked in the output below. These are used to determine when array strings and turbines can be energized and revenue begins." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# This notebook provides an example of the cash flow and net present value functionality in ORBIT.\n", + "\n", + "import os\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "from ORBIT import ProjectManager, load_config\n", + "\n", + "weather = pd.read_csv(\"data/example_weather.csv\", parse_dates=[\"datetime\"])\\\n", + " .set_index(\"datetime\")" + ] + }, { - "data": { - "text/plain": [ - "[('Offshore Substation', 120.0925357142857),\n", - " ('Array String', 313.9859420289855),\n", - " ('Array String', 618.4459420289855),\n", - " ('Array String', 843.9059420289856),\n", - " ('Array String', 1253.1092753623188),\n", - " ('Substructure', 1496.5764009525235),\n", - " ('Substructure', 1516.3403019050465),\n", - " ('Substructure', 1534.1042028575694),\n", - " ('Substructure', 1551.8681038100924),\n", - " ('Substructure', 1569.6320047626155),\n", - " ('Substructure', 1627.3959057151385),\n", - " ('Substructure', 1675.1598066676615),\n", - " ('Array String', 1688.5692753623189),\n", - " ('Turbine', 1791.015338095949),\n", - " ('Turbine', 1842.1986714292825),\n", - " ('Substructure', 1888.7237076201845),\n", - " ('Turbine', 1893.382004762616),\n", - " ('Substructure', 1906.4876085727078),\n", - " ('Array String', 1918.029275362319),\n", - " ('Substructure', 1924.2515095252309),\n", - " ('Substructure', 1942.015410477754),\n", - " ('Turbine', 1944.5653380959493),\n", - " ('Substructure', 1959.7793114302772),\n", - " ('Substructure', 1977.5432123828004),\n", - " ('Turbine', 1997.7486714292827)]" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Load the Project Configuration" ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "project.progress.data[:25]" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/plain": [ - "([2626.8153260869567,\n", - " 2626.8153260869567,\n", - " 3208.7320047626126,\n", - " 3866.13200476261,\n", - " 4333.532004762608,\n", - " 4829.932004762606,\n", - " 5156.032004762603,\n", - " 5620.432004762601,\n", - " 5764.09867142927],\n", - " [6, 6, 6, 6, 6, 6, 6, 6, 2])" + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "config = load_config(\"configs/example_fixed_project.yaml\")\n", + "\n", + "# config['install_phases'] = {\n", + "# 'ArrayCableInstallation': 0,\n", + "# 'ExportCableInstallation': 2000,\n", + "# 'MonopileInstallation': ('ScourProtectionInstallation', 0.5),\n", + "# 'OffshoreSubstationInstallation': 0,\n", + "# 'ScourProtectionInstallation': 0,\n", + "# 'TurbineInstallation': ('MonopileInstallation', 0.1)\n", + "# }" ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "project.progress.energize_points" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Format__: [string installation times], [number of turbines energized]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Monthly Cash Flow\n", - "\n", - "The monthly cash flow is shown below.\n", - "\n", - "- Revenue is generated as each turbine and associated array string is powered and the export system has been installed.\n", - "- A simple generation model is implemented for now (constant NCF), however this is an area for future development.\n", - "- The expenses from each installation phase are collected and totaled per month.\n", - "- As turbines are powered, the project begins accruing additional operating expenses." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ExpensesRevenueCash Flow
01.159244e+070.0-1.159244e+07
19.592865e+060.0-9.592865e+06
27.878374e+070.0-7.878374e+07
31.748031e+071681920.0-1.579839e+07
41.231171e+072522880.0-9.788830e+06
51.000148e+074204800.0-5.796680e+06
68.155250e+065045760.0-3.109490e+06
78.677000e+067008000.0-1.669000e+06
83.750000e+067008000.03.258000e+06
93.750000e+067008000.03.258000e+06
103.750000e+067008000.03.258000e+06
113.750000e+067008000.03.258000e+06
123.750000e+067008000.03.258000e+06
133.750000e+067008000.03.258000e+06
143.750000e+067008000.03.258000e+06
153.750000e+067008000.03.258000e+06
163.750000e+067008000.03.258000e+06
173.750000e+067008000.03.258000e+06
183.750000e+067008000.03.258000e+06
193.750000e+067008000.03.258000e+06
203.750000e+067008000.03.258000e+06
213.750000e+067008000.03.258000e+06
223.750000e+067008000.03.258000e+06
233.750000e+067008000.03.258000e+06
243.750000e+067008000.03.258000e+06
\n", - "
" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this example, a project with the following phases will be configured:\n", + "\n", + "- ProjectDevelopment\n", + "- MonopileDesign\n", + "- ArraySystemDesign\n", + "- ExportSystemDesign\n", + "- OffshoreSubstationDesign\n", + "- ArrayCableInstallation\n", + "- ExportCableInstallation\n", + "- MonopileInstallation\n", + "- OffshoreSubstationInstallation\n", + "- TurbineInstallation\n", + "\n", + "The configuration below represents a \"complete\" project that will be able to produce\n", + "power when the requisite pieces are done being installed. As each array string is able to\n", + "generate power, the project will begin to generate additional revenue and incur\n", + "O&M costs." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ORBIT library intialized at '/Users/jnunemak/Fun/repos/ORBIT/library'\n" + ] + } ], - "text/plain": [ - " Expenses Revenue Cash Flow\n", - "0 1.159244e+07 0.0 -1.159244e+07\n", - "1 9.592865e+06 0.0 -9.592865e+06\n", - "2 7.878374e+07 0.0 -7.878374e+07\n", - "3 1.748031e+07 1681920.0 -1.579839e+07\n", - "4 1.231171e+07 2522880.0 -9.788830e+06\n", - "5 1.000148e+07 4204800.0 -5.796680e+06\n", - "6 8.155250e+06 5045760.0 -3.109490e+06\n", - "7 8.677000e+06 7008000.0 -1.669000e+06\n", - "8 3.750000e+06 7008000.0 3.258000e+06\n", - "9 3.750000e+06 7008000.0 3.258000e+06\n", - "10 3.750000e+06 7008000.0 3.258000e+06\n", - "11 3.750000e+06 7008000.0 3.258000e+06\n", - "12 3.750000e+06 7008000.0 3.258000e+06\n", - "13 3.750000e+06 7008000.0 3.258000e+06\n", - "14 3.750000e+06 7008000.0 3.258000e+06\n", - "15 3.750000e+06 7008000.0 3.258000e+06\n", - "16 3.750000e+06 7008000.0 3.258000e+06\n", - "17 3.750000e+06 7008000.0 3.258000e+06\n", - "18 3.750000e+06 7008000.0 3.258000e+06\n", - "19 3.750000e+06 7008000.0 3.258000e+06\n", - "20 3.750000e+06 7008000.0 3.258000e+06\n", - "21 3.750000e+06 7008000.0 3.258000e+06\n", - "22 3.750000e+06 7008000.0 3.258000e+06\n", - "23 3.750000e+06 7008000.0 3.258000e+06\n", - "24 3.750000e+06 7008000.0 3.258000e+06" + "source": [ + "project = ProjectManager(config, weather=weather)\n", + "project.run()" ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = pd.DataFrame(list(zip(\n", - " project.monthly_expenses.values(),\n", - " project.monthly_revenue.values(),\n", - " project.cash_flow.values()\n", - ")), columns=[\"Expenses\", \"Revenue\", \"Cash Flow\"])\n", - "\n", - "df.head(25)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Cash Flow Figure\n", - "\n", - "Play around with the start dates of the configuration above. As the dates are moved around, the underlying expenses and generation will shift, affecting the net present value of the project." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### NPV" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Net Present Value: 426.31 M\n" + ] + } + ], + "source": [ + "# In addition to the other results shown in previous examples, the NPV of the project is available:\n", + "\n", + "print(f\"Net Present Value: {project.npv/1e6:.2f} M\")" + ] + }, { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABEwAAALVCAYAAADauHQLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAewgAAHsIBbtB1PgAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOzdebi153g//O9JZDZEYw6NsYmxZkWI0JbGEGqoIaiqH0VRLVodaGm19FX1+nU6FImp5lDykmoNTbWiSQkSFCGToIZGJiLn+8e6t2fltvdeez/PWms/yfP5HMc67um6rvt8Yv/je1zXdVd3BwAAAIBtrrDVBQAAAADsbAQmAAAAACMCEwAAAIARgQkAAADAiMAEAAAAYERgAgAAADAiMAEAAAAYEZgAAAAAjAhMAAAAAEYEJgAAAAAjAhMAAACAEYEJAAAAwIjABAAAAGBEYAIAAAAwIjABAAAAGBGYAAAAAIzsttUFcPlQVXskudVw+Y0kP9zCcgAAALj8u2KSawznJ3f3RfMcXGDCvNwqyQlbXQQAAAC7pDsm+cQ8B7QkBwAAAGDEDBPm5RsrJx//+MdznetcZytrAQAA4HLu7LPPzp3udKeVy2+s13Z7CEyYlx/tWXKd61wnBxxwwFbWAgAAwK5l7vtoWpIDAAAAMCIwAQAAABgRmAAAAACMCEwAAAAARgQmAAAAACMCEwAAAIARgQkAAADAiMAEAAAAYERgAgAAADAiMAEAAAAYEZgAAAAAjAhMAAAAAEYEJgAAAAAjAhMAAACAEYEJAAAAwIjABAAAAGBEYAIAAAAwIjABAAAAGBGYAAAAAIwITAAAAABGBCYAAAAAIwITAAAAgBGBCQAAAMCIwAQAAABgRGACAAAAMLLbVhcAADubA5/33rmMc9pLDp/LOMn8akrmV5eaNu7y/De1M9aUXL7/pnbGmpLL99/UzlhTcvn+m9oZa0ou339TO2NNyXzr2iwzTAAAAABGBCYAAAAAIwITAAAAgBGBCQAAAMCIwAQAAABgRGACAAAAMCIwAQAAABgRmAAAAACMCEwAAAAARgQmAAAAACMCEwAAAIARgckWqKobVNXLquqUqjqvqr5VVR+vqt+sqr3X6ffaquqp36s3+L5Hj/qdNrd/DAAAAFwOCUyWrKoOT/KpJM9OclCSvZPsl+SOSV6a5MSqutEGh3toVe21gXZHbk+tAAAAsKsSmCxRVd0myVuSXDXJ95I8P8ldk9w7yd8NzX4qyXurat8Zw12Y5CpJHjjjnddOcp+pPgAAAMAMApPl+otMZpRcnOTnuvuPu/tj3f3P3f2kJM8Z2h2U5DdmjPXu4Thr9sijklwxyVlJTti+sgEAAGDXIjBZkqq6Y5JDh8tXd/fHVmn250lOGc6fWVVXWmfIo4bjz1fVNddptxKovDHJJRssFwAAAHZpApPlOWLq/DWrNejuS7ItCNkv2wKW1bw/ydeT7Jbkl1ZrUFW3TPLTw+XRm6gVAAAAdmkCk+U5ZDiel+Q/12n34anzu6/VqLsvTvLm4XKtZTmPHY6f6u5PbaRIAAAAQGCyTAcPx/8ewo61nLpKn7WszBq5Q1UdNP2gqq6Qyf4l0+0AAACADdhtqwvYFVTVnkn2Hy7PWK9td3+7qs5Lsk+S689o+4mqOiWTYOXITL66s+KwJNfLZN+SN25n6T9SVQfMaHLtHX0HAAAA7CwEJstx5anz722g/UpgMuvTwslk9sgfJ3l0Vf1ud/dwf2WZzge7+6wNV7q20zfa8OSTT87Xv/71ObwSYGtc9LX/nss4J5544lzGSeZXUzK/utS0cZfnv6mdsabk8v03tTPWlFy+/6Z2xpqSy/ff1M5YU3L5/pvaGWtK1q/rnHPOmdt7VlPb/v81i1JV10/y1eHy6O5+7Iz2X81kdskXu/smU/dfm+RxSdLdNTX2V5JUknt290eqau8k52QSuDy2u48e2n4oyT2TfKW7D9zkv8EfCgAAADur63f3uis6NssMk+W4cOp89w2032M4XjCrYXefPgQh98pkVslHkjwkk7DkvCTv2FSla1t3eVAmS3JOSJL3ve99uda1rrVmw8P/8qNzKil5768fMrvRBuyMNSXzq0tNG3d5/pvaGWtKds6/KQAAdn7nnHNOfuEXfmFh4wtMluPcqfONLLPZZzhuZPlOMlmWc68kD6uqp2fbcpx3dvd5GxxjXbOSuqr60fmtbnWrHHDA2lue7HHts+dRUpLkdre73VzG2RlrSuZXl5o27vL8N7Uz1pTsnH9TAADs/M44Y64TSn6Mr+QsQXdfmOSbw+W6m6dW1X7ZFphsdN+Qt2UyG+WqSZ6U5N7DfV/HAQAAgO0gMFmeU4bjTapqvZk9058HPmXNVlO6+9wk7xou/zTJFZOcneSDmy0SAAAAEJgs078Ox32S3H6ddvecOj9+E+OvzCbZczi+sbt/uIn+AAAAwEBgsjzvmjr/5dUaVNUVkqx8Qec7Sf5lE+N/IJMlPBcNP8txAAAAYDsJTJakuz+eZOVTEL9SVT+zSrNnJzl4OH9Fd/9gE+P/sLtv0N17Dr9P7mDJAAAAsMvylZzlekYmy2z2SvKBqvrjTGaR7JXklzLZsDVJPp/kz7ekQgAAAEBgskzdfVJVPSLJ65NcJckfr9Ls80kOHzZyBQAAALaAJTlL1t3vSXLrJC/PJBw5P5P9Sj6R5LlJbtvd/711FQIAAABmmGyB7v5Kkt8Yfpvp9/gkj9+B9x66vX0BFuW0lxy+1SUAAMCPMcMEAAAAYERgAgAAADAiMAEAAAAYEZgAAAAAjAhMAAAAAEYEJgAAAAAjAhMAAACAEYEJAAAAwIjABAAAAGBkt60uAIDlOO0lh291CQAAcJlhhgkAAADAiMAEAAAAYERgAgAAADAiMAEAAAAYEZgAAAAAjAhMAAAAAEYEJgAAAAAjAhMAAACAEYEJAAAAwIjABAAAAGBEYAIAAAAwIjABAAAAGBGYAAAAAIwITAAAAABGBCYAAAAAIwITAAAAgBGBCQAAAMDIbltdAMDl0WkvOXyrSwAAAHaAGSYAAAAAIwITAAAAgBGBCQAAAMCIwAQAAABgRGACAAAAMCIwAQAAABgRmAAAAACMCEwAAAAARgQmAAAAACMCEwAAAIARgQkAAADAiMAEAAAAYERgAgAAADAiMAEAAAAYEZgAAAAAjAhMAAAAAEYEJgAAAAAjAhMAAACAEYEJAAAAwIjABAAAAGBEYAIAAAAwIjABAAAAGBGYAAAAAIwITAAAAABGdtvqAmBncNpLDt/qEgAAANiJCEyAyzyBFwAAMG+W5AAAAACMCEwAAAAARgQmAAAAACMCEwAAAIARgQkAAADAiMAEAAAAYERgAgAAADAiMAEAAAAYEZgAAAAAjAhMAAAAAEYEJgAAAAAju211Aex6TnvJ4VtdAgAAAKzLDBMAAACAEYEJAAAAwIjABAAAAGBEYAIAAAAwIjABAAAAGBGYAAAAAIwITAAAAABGBCYAAAAAIwITAAAAgBGBCQAAAMCIwAQAAABgRGACAAAAMCIwAQAAABgRmAAAAACMCEwAAAAARgQmAAAAACMCEwAAAIARgQkAAADAiMAEAAAAYERgAgAAADAiMAEAAAAYEZgAAAAAjAhMAAAAAEYEJgAAAAAjAhMAAACAEYEJAAAAwIjABAAAAGBkt60uALhsOe0lh291CQAAAAtnhgkAAADAiMAEAAAAYERgAgAAADAiMAEAAAAYEZgAAAAAjAhMAAAAAEYEJgAAAAAjAhMAAACAEYEJAAAAwIjABAAAAGBEYAIAAAAwIjABAAAAGBGYAAAAAIwITAAAAABGBCYAAAAAIwITAAAAgBGBCQAAAMCIwAQAAABgRGCyjqq6XVX9TlUdW1WnV9VFVfW9qvp8Vb22qg7Z5Hj3rap3VNUZw1hnDNf33UDfHv029O6qOm7U7wWbqRkAAAB2RbttdQE7q6r6cJJ7rPJo9yQ3HX6Pq6qjkzyxu7+/zliV5K+TPGn06HpJHpzkwVX1t0me3N29wRKPTPLRGf+G6yY5bIPjAQAAAAMzTNZ2veF4VpJXJHlokjsl+Zkkv5HkzOH5kUleO2OsF2VbWHJSkkcOYz1yuM7w/I82UNeFw/FhVbXHjLaPzuR/4wtntAMAAACmCEzWdmqSRyS5QXc/s7vf3t0ndPe/d/fLk/x0ks8PbR+51hKZqrpJkucMl59IcrfufvMw1puT3H24nyTPraobz6jr/UkuSnK1JA+Y0fbI4XjMjHYAAADAFIHJGrr7/t39lu7+4RrPv5nk2VO3HrrGUM/KtqVPT+/uC0bjnJ/k6cPlbkmeOaO07yR5z3B+5FqNquo2SW41XB49Y0wAAABgisBkx3xo6vzHZoYMe5c8aLg8tbv/fbVBhvufGy6PGPqtZyUAuV9V7b9Gm8cOx5OSfGbGeAAAAMAUgcmO2X3q/JJVnt8w2/ZC+fCMsVaeH5DkwBltj03yzSRXymTZ0KVU1RUz2R8lMbsEAAAANk1gsmPuOXV+6irPD57xPGs8P3jNVkm6+wdJ/mG4XG1Zzn2SXCfJD5O8acZ7AQAAgBGfFd5OVXWFJM+buvWWVZpdf+r8jBlDnr5Gv7UcleSpSe5cVTft7i9MPVsJUY7r7q9V1YEbGG9dVXXAjCbX3tF3AAAAwM5CYLL9npXJp4GT5J3d/YlV2lx56vx7M8Y7b+p831kv7+6PV9XnkvxUksck+YMkqap9kxwxNJvncpzTZzcBAACAywdLcrZDVd0zyUuGy68necoaTfecOv/+jGEvmjrfa4OlvH44Pmbq3kOS7JNJQPOuDY4DAAAATNnlZphU1fWS7LfG429395kz+t8iyTsz+W93UZKHd/c5azS/cOp89zXarNhj6vyCNVtd2tFJ/jDJjarqbt19fLZ9HeftwyeL52XWMqFrJzlhju8DAACALbPLBSZJXpzkcWs8e12Sx6/VsapumOQDmQQuP0zyyO5e7+s3506dz1pms8/U+azlO0mS7v5KVX00yT2SHFlVpyW51/B4rl/H6e5192CZ/SVkAAAAuOzYFQOT7VJV103yT0mum6STPKG73zmj23TIMGvT1OkZHJvZL+ToTAKThyc5M5NlVmcm+ZdNjAEAAABM2eX2MOnux3d3rfF7/Gp9qmr/JMcludFw6+ndfdQGXvfZqfODZrSdfn7KBsZe8dZMlv7sl+R3hntv6O5LNjEGAAAAMGWXC0w2q6qumuT9SW4+3Hped79qg92/nOSs4fyeM9reYziemeS0jdbX3d9N8u7hcmWT2bkuxwEAAIBdjcBkHVW1d5L3JrndcOvF3f2nG+3f3Z3kmOHyoKq6yxrvuUu2zTA5Zui3GUdlsgHtRUlO6O5Pb7I/AAAAMEVgsoaq2j2Tr+Hcbbj1iu7+3e0Y6i+SXDycv7KqLvXJ4OH6lcPlxUP7Tenu93b3nsPvTttRIwAAADDFpq9re1OSnxvO/znJq6vqluu0/353f358s7s/X1UvS/K8JHdIcnxV/WmSLya5cZLnJrnt0Pyl3f2Fef0DAAAAgO0jMFnbQ6bOD0vyqRntv5LkwDWePT/JNZM8IZNw5M2rtHl1ku2ZwQIAAADMmSU5S9Ddl3T3ryQ5PJM9Tc5K8v3heEySX+juJ/qyDQAAAOwczDBZQ3fXAsZ8X5L3bWff7a6nu09LMvd/DwAAAFxemWECAAAAMCIwAQAAABgRmAAAAACMLH0Pk6raP8n1klwjyU8kuSDJN4bfl2x8CgAAAGy1hQcmVXXlJA9KcmiSQ5LcZJ3m51XVvyf5aJL3dveJi64PAAAAYGxhgUlV3T7JM5L8YpI9V27P6LZvknsPvxdU1eeSvCrJa7v7vEXVCgAAADBt7oHJEJS8KMnPrdwajmcnOSHJfyb5epJvJfl2kr2SXD3JfkluluSOSW6d5EpJDkryl5mEJy9N8oruvmjeNQMAAABMm2tgUlWvSXJktm0me2KSNyR5e3d/dRPj7J7kHkkeleTBmex18idJnlJVR3b3v86zbgAAAIBp8/5KzuOSXJzk75Ic1N136O6XbyYsSZLu/n53/1N3PyHJtZM8NsnnkvxkksPmXDMAAADApcx7Sc5fJfmT7j5jXgMOS3BeX1VvSPKwJFec19gAAAAAq5lrYNLdT53neKOxO8lbFjU+AAAAwIp5L8kBAAAAuMwTmAAAAACMCEwAAAAARua96Wuq6h7zHrO7PzLvMQEAAADWMvfAJMmHkvQcx+sspk4AAACAVS0yiKgFjg0AAACwMIsMTC5IckyS45JcssD3AAAAAMzVIgKTc5NcOcleSR6R5NAkb0xydHd/cgHvAwAAAJirRXwl51pJHpnkfUl+mOTaSZ6V5MSq+mRV/WZVXXcB7wUAAACYi7kHJt19YXf/Q3ffP8n1MglLTspkT5NbJfnTJF+pquOq6siq2mfeNQAAAADsiEXMMPmR7v5Gd7+iu++Q5BaZhCVnJLliknsneW2Sc6rq6Kr6+aqyUSwAAACw5RYamEzr7lO6+7e7+yeTHJZJWHJukr2TPDqTJTxnVtWfLqsmAAAAgNUsLTCZ1t0f6u4nZLK/yaOSHJtt+508fStqAgAAAFixJYHJlM7kk8M9/AAAAAC23CI+KzxTVd0zyZFJHprJJ4iTyaawZyc5eitqAgAAAFixtMCkqg7OJCR5dJIDVm4nOT/JO5McleSD3X3JsmoCAAAAWM1CA5OqumaSR2YSlNx25XYmy3D+JZOQ5B3dfd4i6wAAAADYjLkHJlW1Z5IjMglJfjaTTwivfC7405ksuXlDd58173cDAAAAzMMiZph8Pck+w3kl+VqSNyU5urv/awHvAwAAAJirRQQm+2byxZsLk7w7yQcy+WTwravq1tszYHcfNb/yAAAAANa3yD1M9kzy8OG3IzqTvU4AAAAAlmJRgUnNbgIAAACwc1pEYHKvBYwJAAAAsDRzD0y6+8PzHhMAAABgma6w1QUAAAAA7GwEJgAAAAAjAhMAAACAkUV+VnjDqupGSZ6U5JZJLk5ycpK/7+4vb2lhAAAAwC5poYFJVd0hyQOTdJI/6+7zVmlz/yRvSbLH1O0HJPnNqnpcd79lkTUCAAAAjC16Sc5Tkjw/ySFrhCXXTvL6JHsmqSRfTHJqJgHLHkleV1UHLbhGAAAAgEtZdGByn+H4xjWePyPJVZL8MMkvdvfNuvsWSe6d5Lwkuyf59QXXCAAAAHApCwtMqupKSa4/XP7rGs0enslskjd09ztXbnb3h5O8LJNZJ4ctqkYAAACA1Sxyhsm1ps5PGz+squskueFw+dZV+r9tOF5/lWcAAAAACzPXTV+r6suZzBhJkitNPfpsVY2bT2/y+ldVdfF4uOG4Z1V9afpBd99oR2sFAAAAWMu8v5LzumwLTH4iydOG66OTXDJq+3NJrpPkrCSvXmO83x/6v27OdQIAAACsaa6BSXe/YOV8WHLztExmiryluz8z3baq7p5JGPLB7n7heKyq2ivJHyQ5d7XnAAAAAIuysD1MuvvsJN8eLp8+/ayqDk5y6HB53BpD/NRwPH3uxQEAAACsY95LcsbekeRXkvxqVV0xybuTXDPJ7yW5YpJvJXnnGn3vNRz/a8E1AgAAAFzKogOT30/yoCT7J3nC8Esmy3Q6yfO7+/w1+j5+aLPWDBQAAACAhVjkZ4VXluXcLcmHMglJVn7fSfKM7v6b1fpV1RFJbpXkgqw9AwUAAABgIRY9wyTd/YUkh1XVtZLcMJMQ5DPdPf6M8LTPZbIk53+7+9xF1wgAAAAwbeGByYruPifJORtse0qSUxZbEQAAAMDqFrokBwAAAOCySGACAAAAMDLXwKSq9p7neFv1DgAAAGDXNu8ZJl+uqt9aRKhRVXeuqvclefa8xwYAAACYNu/A5BpJXpLktKr6w6r6qR0ZrKr2rKpHVNUHkvxbkp+fR5EAAAAA65l3YHKvJCcn2T/J85N8tqpOqKrnVdWhVXXlWQNU1cFV9biqOiqTr+q8Mcl9kvwgyUuTvHzONQMAAABcylw/K9zdH66q2yb5pUwCk5snuX2S2600qaovJfl6km8Pv72SXD3JfklunGTfqSEryYVJXpfkxd19xjzrBQAAAFjNXAOTJOnuTvKmJG+qqvskeWKSB2QSjFSSm2QSjIzV6PqzSY5O8uru/ua86wQAAABYy9wDk2nd/U9J/qmq9khy5ySHJLlrkgMy2e/k6pnMIPnG8Ds5yUeTfLS7v7LI2gAAAADWstDAZEV3X5TkI8MPAAAAYKc2701fAQAAAC7zBCYAAAAAIwITAAAAgBGBCQAAAMCIwAQAAABgRGACAAAAMCIwAQAAABgRmAAAAACMCEwAAAAARgQmAAAAACMCEwAAAICRpQQmVfWUqrr5Mt4FAAAAsKN2W9J7XpWkq+qbST6S5ENJPtzdn17S+wEAAAA2bFmBSZJUkmskecjwS1V9K5cOUD61xHoAAAAAVrWswOTqSe6Z5NDhd6tMlgP9RJIjhl+q6ttJPpptAcp/Lak+AAAAgB9ZSmDS3d9JcszwS1VdLck9si1AuXUmAcrVkzwoyQOHdt9N8pHuPmIZdQIAAAAky12S8yNDgPLu4ZequmouHaDcJpMA5WpJHrAVNQIAAAC7rp3ls8L/m+TM4XdWkvOT9JZWBAAAAOyytmSGSVVVkttm24ySQ5JcZeXxcLwgyceS/MuSywMAAAB2cUsJTFYJSO6e5Korj4fjSkDyoeH3H939g2XUBwAAADBtWTNM/icCEgAAAOAyYlmBydWybU+SY5K8PMnHBCQAAADAzmiZe5iszCx5YCbLcj5SVR9K8uEkJ3W3TV4BAACAncKyApNDsm3/kp/JZHnOA5Lcf3j+v1X10WxbniNAAQAAALbMUgKT7j4+yfFJXlxVuyW5U7YFKHfNJEC5f5LDhy6XClC6+8Rl1AkAAACQbMFnhbv74iT/Nvz+eAhQ7pgfD1AOH369FXUCAAAAu64tDyKGAOVjVfXJJCcmOTnJryS5SrbtewIAAACwNFsWmFTV3knunm0zS24/Vc90UHL+UgsDAAAAdnlLC0w2EZCcl+Rjmexf8uEkH19WjQAAAADJkgKTqjo+yR2yekDyvUz2M/lQJgHJCcMyHQAAAIAtsawZJj8zdX5uJl/M+VAmAcknuvuHS6oDAAAAYKZlBSbvy7aA5D+7+5IlvRcAAABg05YSmHT3/ZfxHgAAAIB5uMJWFwAAAACws9mSzwpX1ZWS3C7JLZNcfbj9rSSfTnJid/9gK+oCAAAASJYcmAyfFv69JL+aZL81mn27qv42yYu6+/ylFQcAAAAwWNqSnKq6QZL/SvKcTGaV1Bq/qyd5bpKTquqAZdUHAAAAsGIpM0yGJTjHJrnJcOvUJK9J8h9JvpZJUHKtJHdK8vgkN09y0yTHVtVtu/viZdQJAAAAkCxvhskTkxycpJO8OMktu/ul3f2R7v58d39uOH9ZklsnedHQ7+ZDXwAAAIClWVZg8rBMwpJ3dffvdfclazXs7ku6+/eTvDOTmScPW1KNAAAAAEmWF5jccjj+/Sb6vHo43mrOtQAAAACsa1mByVWH41mb6HP2cLzKnGsBAAAAWNeyApNvDccbbqLPjUZ9AQAAAJZiWYHJiZnsR/LUTfR5aib7npy0kIoAAAAA1rCswORNw/HQqvr7qtpnrYZVtU9V/X2SQ4dbb1h0cQAAAADTdlvSe96Q5MlJ7prkcUkOr6q3JPmPJOdkMpPk2knunMlXca4x9Du+u9+4pBoBAAAAkiwpMOnurqoHJHlvkrtkEoj82vAbq+H4sSQPWkZ9AAAAANOWtSQn3f3tJHdP8vQkp2QSjKz2OyXJ05IcMvQBAAAAWKplLclJknT3JUleleRVVXWdJLdMcvXh8beSfLq7z16rPwAAAMAyLG2GyVh3n93dx3X3Pwy/4y4rYUlV/VlV9dTv0A32u29VvaOqzqiqi4bjO6rqvhvo26PfIRt853Gjfi/YSD8AAADYlW1ZYHJZVVW3SfKsTfapqvqbJMcmeXCS6yXZfTg+OMmxVfU3VVXrDDN25Abee90kh22mVgAAAEBgsilVdYUkf5fJUqavb6Lri5I8aTg/Kckjk9xpOJ403H9Skj/awFgXDseHVdUeM9o+OpP/jS+c0Q4AAACYMtc9TKrq9+c53oru/sNFjLsdfj3JHZOcmuSdSX57VoequkmS5wyXn0hyj+6+YLg+oareneTDSe6Q5LlV9Zru/uI6Q74/yX2TXC3JA5K8bZ22K7NQjknyiFm1AgAAABPz3vT1BUl6zmMmyZYHJlV1/WybAfKUJIdusOuzsu2/89OnwpIkSXefX1VPz+QzyrsleWYmXxJay3eSvCfJQzMJRFYNTIalQ7caLo+OwAQAAAA2bBFLctb6XPCO/HYG/zfJvkle190f2kiHYU+SBw2Xp3b3v6/Wbrj/ueHyiA3sZXL0cLxfVe2/RpvHDseTknxmI/UCAAAAE3MNTLr7Cov4zbPG7VFVD09y/0w+ffxbm+h6w0w2dk0my27Ws/L8gCQHzmh7bJJvJrlSVpk5UlVXzGR/lGRbuAIAAABs0JaHETu7qrpaklcMl8/t7m9sovvBU+enzmg7/fzgNVsl6e4fJPmH4XK1r+XcJ8l1kvwwyZtmvHdDquqA9X5Jrj2P9wAAAMDOYN57mFwe/VkmYcC/JXn1Jvtef+r8jBltT1+j31qOSvLUJHeuqpt29xemnq2EKMd199eq6sANjDfL6bObAAAAwOWDGSbrqKq7J3likouTPLm7N7uh7ZWnzr83o+15U+f7zhq4uz+ebfuePGblflXtm+SI4dJyHAAAANgOcw9Mquqfq+qDVfWT8x57mapq9yR/m8mmsy/v7pO3Y5g9p86/P6PtRVPne21w/NcPx8dM3XtIkn0yCWjetcFxNuL6M353nOO7AAAAYEstYknOoZl8Wnif1R5W1U2TvD9Jd/eNF/D+dVXV9ZLst8bjb3f3mcP572Syl8hXk7xwO1934dT57jPa7jF1fsGarS7t6Ew+uXyjqrpbdx+fbV/HeXt3n7/BcWbq7nWXFM3+sA8AAABcdmzFHia7Z/IVmM0ub5mXFyd53BrPXq08tV0AACAASURBVJfk8VV1UJLfHu49vbvPW6P9LOdOnc9aZjMdMM1avpMk6e6vVNVHk9wjyZFVdVqSew2PLccBAACA7WTT19U9K5Ng50tJ9q6qX1qlzS2nzg+rqpWvxLxnKmCZnpVxwIx3Tm/0upkNVo/OJDB5eJIzM1lmdWaSf9nEGAAAAMCUXS4w6e7HJ3n8jGYry2NulI19lvf3ps5vmG0buH526v5BM8aYfn7KBt654q1JXpnJMqPfGe69obsv2cQYAAAAwBRfyVmsLyc5azi/54y29xiOZyY5baMv6O7vJnn3cLmyyazlOAAAALADBCar6O7Hd3et98ulN4K919Sz06bG6STHDJcHVdVdVnvfcH9lhskx2/H54qMy+crORUlO6O5Pb7I/AAAAMEVgsnh/keTi4fyVVXWpTwYP168cLi8e2m9Kd7+3u/ccfnfaoWoBAACAhQYmW/UVnJ1Kd38+ycuGyzskOb6qHlFVd6iqRyQ5frifJC/t7i9sRZ0AAADANovc9PUDVfWDVe5faeWkqr60gXG6u288v7K2xPOTXDPJE5LcNsmbV2nz6iS/u8yiAAAAgNUtMjC53jrPVmafHLiBcS7zM1WGL9b8SlW9PcmTktwxyf5JvpnkhCR/093HbmGJAAAAwJRFBCZfzeUg5Jilu1+Q5AWb7PO+JO/bzvfV9vQb+p6WZLv7AwAAwK5m7oFJdx847zEBAAAAlslXcgAAAABGBCYAAAAAIwITAAAAgBGBCQAAAMCIwAQAAABgRGACAAAAMCIwAQAAABgRmAAAAACMCEwAAAAARgQmAAAAACMCEwAAAIARgQkAAADAyG5b9eKqukqSKye54qy23f3VxVcEAAAAMLHUwKSqfjbJryU5JMl+G+zW2cJgBwAAANj1LC2IqKq/TPLUlctlvRcAAABgs5YSmFTVo5I8bbi8MMm7kvxnkm8luWQZNQAAAABs1LJmmPyf4Xh6ksO6+4tLei8AAADApi3rKzm3zmQvkhcKSwAAAICd3bICkysNx5OW9D4AAACA7baswOS04bjvkt4HAAAAsN2WFZi8Yzjee0nvAwAAANhuywpM/jzJV5M8s6oOWtI7AQAAALbLUgKT7v5ukvsmOSfJ8VX1a1W13zLeDQAAALBZc/2scFV9aUaTvZPsl+SVSf6yqr6Z5PwZfbq7bzyP+gAAAAA2Yq6BSZIDN9iuht81N9C2t7saAAAAgO0w78DkdXMeDwAAAGDp5hqYdPcvz3M8AAAAgK2wrK/kAAAAAFxmCEwAAAAARua9h8l2q6prJbl/kv2TfDnJe7r7gq2tCgAAANgVLSUwqaqDk7wwky/e/J/u/s7o+QOTvDHJXlO3T6+qB3b3p5ZRIwAAAMCKZS3JOSLJQ5Nca5Ww5JpJXp9k72z73HAluUGS91TVPkuqEQAAACDJ8gKTe2cyu+QfV3n2a0n2TXJxkt9Icpskz0lySZIDkvzqkmoEAAAASLK8wOQGw/GTqzx7SCZhylHd/RfdfXJ3vyzJqzOZafLAJdUIAAAAkGR5gck1huM3pm9W1f5JbjFcvnHU593D8RYBAAAAWKJlBSZ7D8c9R/fvnsksku8nOX707OzheLUF1gUAAADwY5YVmHxrON5gdP/ew/ET3X3R6NnKF3y+t7CqAAAAAFaxrMBkZe+SR63cqKq9kjwsk/1L/nmVPj85HM9ZbGkAAAAAl7aswOTNmSy9eUBVvbmqnpbkA0mumUlg8qZV+tx5OH5pOSUCAAAATCwrMDkqyb9mEpo8LMkrktx1ePaa7j51lT4rX89ZbfYJAAAAwMIsJTDp7kuS3C/J/5PkjCQXJzk9yR8lecq4fVU9IMmBw+Vxy6gRAAAAYMVus5vMR3efl+Q3h98s/5rkhkO/ryyyLgAAAICxpQUmm9Hd307y7a2uAwAAANg1LWsPEwAAAIDLDIEJAAAAwMjSl+RU1b2SHJHkNkn2T7JXJl/PWUt3942XURsAAABAssTApKqumeTNSe65cmuNpj161ousCwAAAGBsKYFJVV0pybFJfjqTMOSkJGclOTyTQOT1SfZLcrsk1x3unZjk08uoDwAAAGDasvYweXyS2w7nv9zdt0/yvJWH3f247n5gdx+Q5MFJzk5y8yT/2N2/vKQaAQAAAJIsLzD5xeH4/3X369Zr2N3HZLJs5/tJXltVN110cQAAAADTlhWY3Cbblt78mKq61H4m3f3FJK9Isk+SZyy8OgAAAIApywpMrj4cvzx17/tT53uv0ueDw/FnF1IRAAAAwBqWFZh8f3RMkv+dOr/eKn0uXOcZAAAAwMIsKzD56nC81sqN7j4nybnD5Z1X6XOLlaYLrAsAAADgxywrMDlxON52dP8jmXxm+BlVtcfKzaq6apLnZBKWfHYpFQIAAAAMlhWYfDCTYOTw0f2/Ho63TXJyVb20ql6V5OQkBw3PjlpOiQAAAAATywpM3pXJspwDqurGKze7+71J/j6TMOUmSX4jyZOTHDA0+UCSv1pSjQAAAABJkt2W8ZLu/k6SA9d49sSq+liSJ2ayb8luSb6QycySV3T3JcuoEQAAAGDFUgKTWbr71UlevdV1AAAAACTLW5IDAAAAcJkhMAEAAAAYWUhgUlX3q6oTh9+jNtn30VN977OI+gAAAADWM/fApKoqycuT3CbJ/3T3Gzc5xBuT/E+Sn07y53MuDwAAAGCmRcwwOSzJzZJckuSZm+3c3Z3kGUl+mOSWVXXoXKsDAAAAmGERgckvDsfjuvsz2zNAd382yftH4wEAAAAsxSICkzsl6STv2cFx/jFJJbnLDlcEAAAAsAmLCEx+cjh+bgfH+fxwPHAHxwEAAADYlEUEJlcdjt/awXFW+l9lB8cBAAAA2JRFBCb/OxyvtoPjrPQ/dwfHAQAAANiURQQmXx+ON9/BcQ4ejQcAAACwFIsITD6eyWatD9zBcR6UyeaxJ+xwRQAAAACbsIjA5Njh+LNVdY/tGWDo93Oj8QAAAACWYhGByduTfCmTWSZvqaqf2kznqrpZkrdkMrvktCRvm3eBAAAAAOuZe2DS3RcneXYmgcc1knyiqp5VVfuu16+q9q2qZyb5RJJrDrefPYwHAAAAsDS7LWLQ7j6mqn43yYuT7J3kZUleWFUfTXJiknOSnJdknyTXSnK7JIcM1zUM8wfd/a5F1AcAAACwnoUEJknS3X9SVWck+b+ZBCH7Jrnv8FvNSlByfpKndfdrF1UbAAAAwHoWsYfJj3T30UluluTPk3wjk1Bkrd83M5mJcjNhCQAAALCVFjbDZEV3n53kt5L8VlXdPMltkuyf5MpJzs0kKPlkd3920bUAAAAAbMTCA5NpQygiGAEAAAB2agtdkgMAAABwWSQwAQAAABgRmAAAAACMCEwAAAAARgQmAAAAACMCEwAAAIARgQkAAADAiMAEAAAAYERgAgAAADAiMAEAAAAYEZgAAAAAjAhMAAAAAEYEJgAAAAAjAhMAAACAEYEJAAAAwIjABAAAAGBEYAIAAAAwIjABAAAAGBGYAAAAAIwITAAAAABGBCYAAAAAIwITAAAAgBGBCQAAAMCIwAQAAABgRGACAAAAMCIwAQAAABgRmAAAAACMCEwAAAAARgQmAAAAACMCEwAAAIARgQkAAADAiMAEAAAAYERgskFVtX9VPaeqjq+qr1XVRVV1VlX9R1W9tKp+ZgNj3Leq3lFVZwz9zxiu77uBvj36HbLBuo8b9XvBRvoBAADArmy3rS7gsqCqHpbkr5L8xOjRdYbfnZLcNMkRa/SvJH+d5EmjR9dL8uAkD66qv03y5O7uDZZ1ZJKPzqj7ukkO2+B4AAAAwMAMkxmq6rFJ3pxJWPL1JC9M8rNJbp/k8CS/nuS4JD9YZ5gXZVtYclKSR2YSsjxyuM7w/I82UNKFw/FhVbXHjLaPzuR/4wtntAMAAACmmGGyjqo6OMnfZhI6fDTJA7r7u6s0fWVV7b7GGDdJ8pzh8hNJ7tHdFwzXJ1TVu5N8OMkdkjy3ql7T3V9cp6z3J7lvkqsleUCSt63T9sjheEySR6zTDgAAAJhihsn6XplkjyTfTPKQNcKSJEl3f3+NR8/KtmDq6VNhyUq/85M8fbjcLckzZ9T0nSTvGc6PXKtRVd0mya2Gy6NnjAkAAABMEZisoaoOSnLv4fL/7e5vbscYleRBw+Wp3f3vq7Ub7n9uuDxi6LeelQDkflW1/xptHjscT0rymQ2WDAAAAERgsp6HTZ2/deWkqvarqptW1XgD2NXcMJONXZPJspv1rDw/IMmBM9oem8mslytllaU2VXXFTPZHScwuAQAAgE0TmKztLsPxu0lOqapHV9Unk3wryeeTfLOqvlRVf1BV+64xxsFT56fOeN/084PXbJWku3+Q5B+Gy9WW5dwnk6/3/DDJm2a8d0Oq6oD1fkmuPY/3AAAAwM7Apq9ru/lwPC2TvUyeukqbGyZ5QZKHVtXPd/dZo+fXnzo/Y8b7Tl+j31qOGmq6c1XdtLu/MPVsJUQ5rru/VlUHbmC8WU6f3QQAAAAuH8wwWdvVh+NBmQQT30ny5CTXTLJnkjtmsjQmSW6Z5K1VNf7veeWp8+/NeN95U+drzVj5ke7+eLbte/KYlfvDbJcjhkvLcQAAAGA7CEzWts9w3COTpS336+6/6e5vdPdF3f2JJPfPttDkrkkeMhpjz6nztb6is+KiqfO9Nljj64fjY6buPWSo/XtJ3rXBcTbi+jN+d5zjuwAAAGBL7XJLcqrqekn2W+Pxt7v7zOH8wmwLTd662hduuvuSqvqtJPcbbj0yydummlw4db77jNL2mDq/YM1Wl3Z0kj9McqOqult3H59tX8d5+/DJ4rno7nWXFM3+sA8AAABcduyKM0xenOTkNX4vnmp37tT5sVlDd38myUrIMp5lMT3GrGU2+0ydz1q+s/LuryT/f3t3HnfdXO9//P023G5TUZFCCZ1EHZQxTqhIJDqOHEkp6lSnHmlUoRzp1+R3qJQGJMNJB+UmGmRKGgxRIZSx+0aZ53vA5/zx/a6udX/t6drX3mvv2/V6Ph7rsfca9lqfa+29v9fan/UddFGe3Ssng7bJ8zTHAQAAAACgT9MxYdKreienvXbYunKxvP661brso97R62Q6WK0SI2+S9A6l93SOpPMnsQ8AAAAAAFAz7RImEbF3RLjNtHdt06trzxfvsttq/WPF8mtqz9fpso/6+j912bbuFKWmPytK+mRedlJEPDGJfQAAAAAAgJpplzCZhF/Unq/VZds18+OcYvlNkqqhhrfqso9X1vZxc7fgKhFxv6Qz8mzVySzNcQAAAAAAmAISJu2dIWlBfl6OfvMPtreS9Mw8e1F9XUSEpFl5dh3bm7XZx2aaqGEyK79uMo5XGmVnnqRLI+KqSb4eAAAAAADUkDBpIyLulnR0nt3W9r+X29heXtIRtUXfbLGrIzTRVOerthcaMjjPfzXPPlbsr9dYz4qImXnaZLKvBwAAAAAACyNh0tmnJd2an59g+6u2t7H9ctt7S7pE0gZ5/VERcWm5g4i4XtJheXYjSRfb3t32RrZ3l3RxXi5JX4qIPw/rjwEAAAAAAL1ZYtQBjLOIuNP29krNc9aW9L48lY6V9IEOuzpAaQSdd0jaUNLJLbY5RtKBUwoYAAAAAAAMBDVMuoiIPynVIvmopN9KukfSfKUhg78v6VURsU9ELOiwjyciYh9JOyr1aXJb3sdteX6HiNiXkW0AAAAAABgP1DDpQUQ8rNSs5rBu23bZz9mSzu7ztZ7CcW+W1PfrAQAAAACYbqhhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBhAgAAAAAAUCBh0oXtGbb3sf0T27fbnmf7IdvX2T7W9maT2Nf2tn9ge3bez+w8v30Pr41i+pcej3lO8bqDe40XAAAAAIDpaolRBzDObK8u6SxJLy1WzZD0T3l6u+3DJX04IqLNfizpG5LeVaxaVdIbJb3R9rckvbvdPlrYS9JFXeJ/rqRX9bg/jKGbP7/jqEMAAAAAgGmJGiZt2F5CCydL/iBpb0mbS9pO0iGSHs7rPijpIx12d6gmkiVXSNpD0ib58Yq8/F2SPtNDaHPz4262l+qy7Z5K7/HcLtsBAAAAAIAaEibt7ayJZMmvJb0sIr4bEb+JiHMi4tOStpK0IG/ziZxkWYjttSV9LM9eJmmLiDg5Ii6NiJMlbZmXS9L+ttfqEtdPJc2TtIKknbpsu1d+nNVlOwAAAAAAUEPCpL0tas8/FxGPlxtExOWSfpRnV5S0Tov9fFATTZ/eHxGPFvt4RNL78+wSkvbrEtd9ks7Mz/dqt5Ht9TWR8Dmhyz4BAAAAAEANCZP2ZtSe39hhuxtqzxdqIpP7Ltk5z14bEb9ptYO8/Lo8u0t+XSdVAuR1tp/VZpu35scrJF3dZX8AAAAAAKCGhEl719eer9lhu6oJTUj6c7HuBUodu0rShV2OV61fTdIaXbb9saS7JC0pafdype3FlfpHkahdAgAAAADApJEwae97kh7Iz/fPSYiF2N5QUjWMyckR8UCxyYtrz6/tcrz6+he33UpSRCyQ9P0826pZzmskPUfS40p/x5TZXq3TJGmVQRwHAAAAAIBxwLDCbUTEnbb3lnSSUn8ml9o+QqnmyXJ52YeVmu5cKelDLXazeu357C6H/Gub17VzvKT/lLSp7RdGRL12S5VEOSci7rC9Rg/76+av3TcBAAAAAOCpgRomHUTEDyVtJOkYSRtI+q7SiDnnSDpY0iNKiZItI+KOFrtYvvb8oS6He7j2fLkeYrtEE/2evKVabns5SbvkWZrjAAAAAADQBxImHdheUtKblYbvbdUR67OV+grZus0uZtaez+9yuHm150v3GOKJ+fEttWX/KmlZpQTN6T3upxerd5k2HuCxAAAAAAAYqWnXJMf2qkpDALdyb0TMydstK+lsSa9U6gvki5K+ozRizkxJm0r6lKQtJZ1p+4MR8eVif3Nrz2eos/oIO4+23WphJ0g6RNKatreIiIs1MTrOaXnI4oGIiI5NiroP7AMAAAAAwKJjOtYw+aykP7aZPlvb7r+UkiWStE9E7B8R10bE/Ih4ICLOkbSNpPOVap/8t+1/Lo71YO15t2Y2y9aed2u+I0mKiFskXZRn98rJoG3yPM1xAAAAAADo03RMmHTlVF3i7Xn2+oj4bqvtIuIxSQfl2cVqr6nUa2Ws1uWw9Y5eJ9PBapUYeZOkd+Q45iglcgAAAAAAQB+mXcIkIvaOCLeZ9s6bPVvSM/LzK7rs8vLa83WKddd0WFeqr/9Tl23rTlFq+rOipE/mZSdFxBOT2AcAAAAAAKiZdgmTHj1We96tn5cl27xOkm6SdFt+vlWX/VTNf+ZIurnLtv8QEfdLOiPPVp3M0hwHAAAAAIApIGHS2j2SHsjPN7fdKWlST4TcVF8RESFpVp5dx/ZmrXaQl1c1TGbl103G8Uqj7MyTdGlEXDXJ1wMAAAAAgBoSJi3k5ixn5dnnSjqg1Xa2V5T0hdqiH7XY7AhN1Dz5qu2FhgzO81/Ns4/l7Scb71kRMTNPm0z29QAAAAAAYGEkTNo7RFI1LO/Bts+wvavtDW1vbvuDkq6UtG7e5tyI+Fm5k4i4XtJheXYjSRfb3t32RrZ3l3RxXi5JX4qIPw/tLwIAAAAAAD3p1j/HtBUR19reWdL3JD1L0k55auU8Sbt12N0BklZWGsVmQ0knt9jmGEkH9h0wAAAAAAAYGGqYdBARP1fqW2R/SRdIulPSAkmPKvVX8r+SdpH0moi4t8N+noiIfSTtqNSnyW2S5ufHWZJ2iIh9GdkGAAAAAIDxQA2TLiLibklfzNNU93W2pLP7fK2ncNybJfX9egAAAAAAphtqmAAAAAAAABRImAAAAAAAABRImAAAAAAAABRImAAAAAAAABTo9BWDsnj15Pbbbx9lHAAAAACAaaD47bl4u+365YgY9D4xDdneSNKlo44DAAAAADAtbRwRlw1yhzTJAQAAAAAAKFDDBANheylJL82zd0p6vM9draKJmiobS7pjiqENyjjGRUy9IabejWNcxNQbYurdOMZFTL0hpt6NY1zE1Bti6t04xkVMvRlkTItLWik//2NEzJtKYCX6MMFA5A/mlKs/2a7P3hERs6e6z0EYx7iIqTfE1LtxjIuYekNMvRvHuIipN8TUu3GMi5h6Q0y9G8e4iKk3Q4jplim+vi2a5AAAAAAAABRImAAAAAAAABRImAAAAAAAABRImAAAAAAAABRImAAAAAAAABRImAAAAAAAABRImAAAAAAAABQcEaOOAQAAAAAAYKxQwwQAAAAAAKBAwgQAAAAAAKBAwgQAAAAAAKBAwgQAAAAAAKBAwgQAAAAAAKBAwgQAAAAAAKBAwgQAAAAAAKBAwgQAAAAAAKBAwgQAAAAAAKBAwgQAAAAAAKBAwgRjxfYOtn9u+x7bD9v+ne332278s2r7Bbbfafvbtn9v+zHbYfvApmPJ8dj2lra/ZPs3tu+zPd/2bbZPs73NKOLKse1i+5u2L7d9e47rPtu/sv0B2zNGFVstxkPz+zfK9/C4Wgztppkjim3x/Hm/0PZdtufavsX26bZ3bjiWNXo4T9W0VYNxrWz7MNtX234kn6MbbH/L9tpNxdEirlVsH277zzmmu2z/xPZrh3jMvstH25vbnmX7TtuP2r7G9kFT/ez3E1M+d2+1faTtS2zPy685eiqxTDGmDW0fUvsuLrD9d9s/tv3GEcW0je2v2P617Tn5PD2Yy/yDbC8/irja7GffWvkwpfexz3N1cA/l1jpNxlS8/k25fPhbfh/n5Pl3NBlTD+eomt7WVEz5dcvb/pTtK2w/5HQ9c6vtk2y/rJ9YBhTX03O5cJXT/5/7bP/C9h5TjMeewrWlh1Ce9xuTh1ieTyGmoZbnozKVz02/n2XbM5x+U/zG9v35XN5u+4e2XzX4v7ImIpiYxmKS9HFJkacbJP1e0uN5fpakxRqO54haPPXpwBGdn1fXYnhc0nWSfifpwdryz4wotl/m48+VdKOkSyXNrsV1maQVRvjZerGkeWPwHh6Xj399PmetphkjiGtFSb/OsT0h6dr8nt2Wl53acDyrdDg/v8zlQ0h6VNLTG4rpRZL+lo87P5+jP+YYQtLDkrYawXv3Ukl31L5/l0n6c+2z/vEhHbev8lHSnpIey9vOzmXY/Dx/iaRlmoxJ0n5tXnP0KM6TpLWK7W7M7+k9tWXHaQr/D/s8TyfmbRZIukWpjL85lxdVnM8bxWeq2MdKku4e1PvY57k6OG9zq9qXYX2fqyl895ZSupaqX2ddkuN8XNJlDZ+nTmX81bV9vKjBmFZWuraqrrP+IulKTVxnPSZpjxF8plZVum6oYrgyn6Pq+3fUFOLp+9pSQyrP+41JQyzP+4lJDZTno5qm8B719VmWtIykX9X2fZOkyyXdW1v2saH9vaM+4UxMESFJm+cvy+P1f0aS1tfEj4GPNBzTgZLOlHSQpO0lndrtn9qQ43mN0g+h90hasbZ8hqT/VyswXj+C2PaWtLWkJYvlm0n6a47rayM6b5b0C0kPSTp3xO/hcfn4e4/i+G1iWkzSRTmu0yStVqxfTdIrRx1nEVP14+37DR7z5/mYv6yfI0nP1MSPkBslucGYltDExf35klaqrXuVPNTe8QAAGU9JREFUpAdyuTrw96+f8lHSGkpJnZD00epcSXq+UgIqJB3ZcEzvkPQzSYdKeoOkr2iwCZNJxSRpbaVE5cckPae2fDFJ79PEReX7Gj5Pu+Ztly6Wr6t0cyMkndX0Z6rFPk5Uuo740SDexz7P1cF5m4MH8Rka1HmS9D95uwtVJCGUEk3bjfK9K/Z3aH79bxt+747O21wraZ3a8mUlfTOvu1/S0xqO67y8zVWS1qgtX1/SnLxurz7j6evaUkMsz6cQ09DK835iUgPl+aimKbxHfX2W8/cmJP1d0qa15UtK+rQmEjBrD+XvHfUJZ2KKCEk6K3/Yv9li3ZvzurtU/CBvOMbjuv1TG/LxnyZpiQ7rz87xzRr1+1nEtVuOa86Ijr9vPv7HxuA9rI6/96jfl1pM784xnadF4C6HpOWUkl+NJQeV7mxUtd1e2mL9irULnxc3eC52zsecK+n5Ldbvn9ef20AsXb9bkr6Wt/lpi3WvyOvmS3p2UzG1eM3BGmDCZLIxSZqpDndlJR2VX//7Jt+7Lq/fuHaxOnNUcSldwIekrw/rfezxc14d++BhfIb6jGn7vM2fVCS9RhVTh9da6e7xQH9I9niebs/b7NRi3RKS7szrX9dUXEo/JKsfn5u1WL97XndDn8fv69pymOV5vzG12G5g5UA/MY2iPG9q6vN89P1Z1kQt6Pe3Od4Vef17hvH30ocJRs7205QudCTpmBabnKJ0p/SZkkbWT8eoRcQDEfFYh03OyY//1EQ8k3Btflym6QPbXknSFyRdI+nwpo+/iPhAfjwoIp4YaSS9+Velu313SvpJQ8ecoYk+v24sV0bEvUpVbKV0Ud2ULfLjpRFxS4v1p+XHrW2v3FBMLdm2pKq99pPK+Yj4lVJZsaRSImhaioi5EfFIh01+lh/HqZyvyvjFlZp9NC73l3CU0t3HT44ihjG3X348NCIeHWkk3f2LUu2FBZJObvjYS+fHVuX8Y0rN0aTRlPOzI+I3Ldb/UClhv6btl0925/1cWw67PB/H691+YlpEy/Oe9PkeTeWz3Pa7md2QH4fy3SRhgnGwodIPkrlK7d8WEhELlNpLS9KmDca1qKk62Bq3i6HN8+OT3tsGHC7pGZLemz9H4+LfnDpTPc/2yU4dGz+96SBsv1DSOko/9n9le2fbJ9o+N8e1r+2R/ADq4C358eQu/6wHJiLuU2paJqU7Zwux/SKlhO59SlVUm7JifpzTZn21fDGlWgCj9DxJz8nPL26zTbWccr69cSznqzL+xoi4f0QxHKhU/f2j+fs6DraxfUou50+1/THbqzQdhO2lNdHfwFm2t7Z9TC7nT7O9nwfQae8AVWX8TyLiroaP/Yf82Kqcf4bS/8uq34WmdCznI2K+Ug1sKTWDHrRWZc6oy/NxLAf7iWkc/45BafW3TeWz3Om7uZSkKsFyabl+EEiYYBy8MD/e2uEH0I3FtqjJ2f7d8my7f16NcRpxZTXb75V0mFKHmJ9oOIZXK3VIdmJEXNjksXuwo9Jdl22UqiB+RdJNtrdvOI7qH8y1kk6QdLrSOXtVjuvbkq60/fyG42rJ9nOULvylFG+TqhEMjrW9q+1n5p7eX6t03kKpw7G5DcZU/Thdtc36+vIXDTmWbqqye55Sm+5WKOe7e1N+HGk5n0dIWMX2nkpNCh6T9KERxfJipT4ULoqI40cRQxuvlPRvSuX8rkq1HW+0vXfDcayvdNf1NqVmeucr9fXwKqUae4dLutb2Bg3H9ST5h091LdN0GS+lJhwLJH3J9tttP9v2sra3UOoXZ1lJn4+Iv3bayYB1LOedRiF8Vp4daDnf4dpyZOX5uF3vSlOKaSzK80HrcD6m8ln+vFJz7I/a/pDtVW0vncut05RqpZ3YpubKlJEwwTioMo73dtimWrdih22ms3cq1dSZr9QD+0jkO1VVW/a/KrVxPVepreIlDcYxU9I3lArnjzR13B7coFRdfH2l9p/LS9pO0m+VPtun296owXiqO0QbKyVKjlb6pzNTqZncjUp31E7zCIb2bmFPpf9b10XEUO4itJN/iO2qdPfj1Px4n1KzoPmSdoiIbzcZkybupGxke/UW6/+19nzUZWd1/PsiNzhugXK+A9vbSdolz35pRDHsksv4J5T6ezhRacSDrSNi1gjisVJnnItJem/Tx2/jdqVODzdWqnm2jFJV9B8rVSs/1vZODcZTlfMrK41GeKZSub6UpE2Uan8+V9Is28s1GFcrO0laQel/95lNHzwizpO0rdLd7GOVBh14SKmz7+dIektEHNRwWFU5v5rtTVqs30UTv+cGXXa2u7YcZXk+Fte7hUnHNA7l+RC1Ox99f5Yj4hqlcvQcpRuxsyU9otR3yWaS3i/pbQOK/0nG4QIYqKptze+wzbz8uHSHbaYl2y+T9OU8e2BE3NBp+yGbo5RNvkRpCFYp3V3bw/biDcZRVc8+ICL+1m3jpkTEZyLicxHxh4h4MCIeiohzlO5EXqJ0AfuFBkNaNj8uqXR39p0RcUtEzIuIc5V+cIdSTZQdG4yrnaqqduN3HvMPszWVfgBVw01eo1RuvUTSu3KV7SbNUrq7N1PS/+QaOFW8O0o6oLbtqMtOyvkpsP08SSfl2a9HxC9GFMrdSmX8bzQxosEmkt6am340bR+lPi+OiIirRnD8J4mIb0bEARFxWUTcExGP5j4ddlRqo29Jh+cypQn1cv5GSbtGxHURMT8nnndU+uHxPElvbyimdqoy/pSGa+vVvUApuRRKfZZUw8evIWlf22s0GUxE/FZp+FRJOs52vS+RTbVw/2wD+w52ubYcSXk+Zte7kvqLaYzK84HrdD4G8Fl+nqRnK5Whtyk1jXtI6brs7ZL+eUB/xpOQMME4qP4pzuiwTdWPwlOxnV/fbL9AqZroTKUhAw8bZTwRcUpEbBkRm0bEKkpZ35uValUc2UQMterZv1PqBHDs5Xab1V2rrW03dYe9fkH65XJlRPxeqfq2lEZZGBnbL9VED+snjiCEbyjdBfqr0rB1L4yI9SStrtQb/Bslnd9kYjD/oNhd0oOStpR0q+2rbM9RKhfuUxpSW0oXFaNEOd+nnIj7sVJV5Qs0oqYvkhQRF+UyfvOIWE3SekrJk3dJ+kGTsdQ69Z4t6b+aPHY/8p34j+fZtTTEi/tCvZz/etmfV0TcoYnOVUdWztt+pqQd8uxImlbZ/oSk7yj9n9kgItaIiH9WSqAcI2lrSRePoM+xPZVqu7xY0p9sX2f7JqXv3jKaqI0zkHK+h2vLxsvzcbvelfqLaZzK80Hr8Xz09VnOzT/PUGrOs3VErBoRGyolSw6V9DJJv8gxDBwJE4yDXqrt9dJsZ1rJncedo1RN9CyloWrbVY0ciZxN3kHpTsO7GuoL4+tK7bXfs4iM+lL5dX5cTKkmQxPq36dr22zzp/y4xnBD6Wqv/PiLNiPCDI3t9ZWqmC6Q9O8RcXO1LiL+rnQBcJfSD6A3tdrHsETEL5UuFKrq49Udm29I2khp5BLldaNUfdZW6HBnnXK+kJtInC1pXaU7c2+IiHmdX9WciPiTUjOKv0na3vaWDR7+i0qden8wIkadEOxJRFyviRG11m7osItKOb+7Ui2Ym5WawDTKaSSxT+XZvSOi6mRS+fP1bqVahc9Vw82/IuI6pSYOX1Y6P2so1Rw6San8fyBvOuVyvsdry0bL83G83u0npnEvz6ei1/PRz2fZ9pKS/r9SzZL96v0S5ppyBymNOLS8JpLSA0XCBOOgGlXiebbbDQe1ZrHttJYz1Oco3aW6UNJuYzYKzD9ERFVtbjGlGgLDtqHS3aEzbN9Rn5QuyCRp/7ys0X4wuqi/f00NWXhd7Xm7f9rV8iabVC0k95+yR54dRUeAWyj9o76+VWd/EfGAUpMqKSUpGhURf4mIfSJi9YiYke+8vEfpQrX6zl3eYRdNqMrupZR+cLRCOV+TO8CcpTTKxDWSto+IB0cb1ZNFxMNKd0qldMHblA3z45Etyvqq76o315aNi6qsp5xfWNUc58QR/RjeSOnO+EOaKM//IQ9KcEFt20ZFxB0RsV9ErBURS0XEyhHxloi4qRbPlMr5SVxbNlaej+P1bj8xLSrleT8mez76+Cy/UKkpjpT6RWzl5/lxKN9NEiYYB1coXUDMVIuLrZxZrIbE/G2DcY2lWob6JUodKO0UEeNehX2J4nHYFlcqXMupane7XJ5fqaF4erFe7fnsho55hSaq1rar1VItbzd0bRO2kbSaUqynjuD4vQy5Wd1lm9lxq2a9VumzfptGM6x33a2auGO0RZttquWU8+nmwf8qjWRyo6Rto/khViej6TK+rlVZX/XbsXRt2cjZfpZS8w6poXI+ImZrYlj0sSznba+lieGpR9HkUlpEy3nb6ymNKDJXEz8a+9nPZK4tGynPx/F6t5+YFsHyvGeDfI86fJZH/t0kYYKRy3dnqy/GPi022U1pRJG7NZHdn5aKDPXVWgQy1LmDtOou9++HfbyIWCEi3GqS9N282UF52RrDjmcSPpwfr42IRi5a853hs/Psk3oXz1UsX5tnz2sipjaq5jhnRMT9HbccjuoO2T+1Go3G9tM0kdS9vrGoOsjD8x2SZ4+KiMdHGU++Y/zDPPukct72K5RG7lig1E552spV3I+T9AalZNdrck29sZT7c9gmz17Z1HEjYoMOZX3Vp8kxtWXj4ENKF/b3a2LEiCackh/fWq7Io8pVtS9HVc5XZfwlucr+KFTl/HJKHRkvJP/o3SrPjks5b0mfy7MnRURfzV8me23ZRHk+jte7/cS0qJXnkzHI96jLZ/kGpZrjkvTqNrt4TX4cyneThAnGxWeVvgz72q6q3ld9B/x3nv1i7hxzWsqdSZ6slKG+QSlDfU/nVw2f7Zfb/i/bT7pzZXt7pc6tlpB0doxBj+ajYntb258rO6Sy/XTbX9FEk5NDnvzqoTpEadSXf7f9j6SJ7RWU/skvrXRH5JSWrx6yPPJGNTzuKJrjSKlt7F1K7etPro+SkNu9n6TUgVvjNWBs75B7l68vW13S6Uo19q7R+AxZ+CWlURW2s/3Rqu177tvo2LzN0bkTyunsy5roF+c1uZryyNh+ru0j8t2/ct1mSkNrP0NpNJELy22mE9vr2f56ea5sz7T9SUn750VfaPh65ktKTU22sH1AbuZYla/fUOp34F5J32owpro98+Ooyngp1bi8Jj8/zvY/OuW1vbzSeVo3L2q0FoztLW2/ut5fiFMnud/RRB9CffXdMIVry6GV5+N4vTuFmBotz20fZvtm24f1srzbug7H6et89PNZzrVxfppnj7D9ytprZ9j+jNJw4NKwypCIYGIai0lpCMzI0w1KtREez/M/krR4w/FsoVTAVdPcHMvDxfLVG4pnj9r5uV6pU7RW0ykNn6eta3HdrnTX7PdKF1/V8kskPWsMPmPH5XgOHMGxd6mdj9n5nFyh1HY8JD0h6eARnZd35+NXwyhemj/nIelOpdECRvWeVZ/7v0taYoRxvE6pt/+Q9Fj+Dl5de/8WSHrbCOI6Ih//HqVmN9fU3surJa06pOP2VT4q3eGuyvXZOeb5ef4yScs2GZPSKEf1dY/k18wtlm/RRExKzRKqcuJWtS/nf9nUeVLqlK+K6W6ltuW/y2VDtfwvktYaxWeqzb4Ozq89usmYJG1QOyd/z5/pyzRRnoakoyV5BN+9nTRRXt2h9D/ovtprtxvFe1f7zM/XAK8T+olJKcl8jyb+J9+kdD1TlQsh6YARxLVf3uaBHM8flP7nVOXoS6YQT9/XlhpSed5vTBpied5PTGqgPG8R53H5eMf1srzbuiG8R319liU9X+n6tH4dfUXeT7XsW4M6j+U0iramQEsR8Vnbv5f0QUkvl7SK0h2r70g6MpqvUr6k0nBVpWXyVGmqk7Slas9fmKdWGh1BRKnA+4BSNbn1lKphzlC6sP61UrvNEyN1mDadXa5Uk2pzpdERXqJUNXuOpIuUhnscSd8NEfEN21crDce8udJoL7cp9XT+uWioiVAbVVXtk0f5GYqIH+cabx9WuqPyPKX373aloXuPiIhR9BNyutLd4U2Uhumbp5Tw+r6kr8XweuDvq3yMiONt/0XSJyS9QumO7Y2Svqd0170+BGoTMS3e5jVLaeEyd8mGYqofc/U8DdpkY7pD0n8olfEbKHXst6xSUvw8pc/g0TH1vgXG7X+uNPmYblYaIr5qkvAipf+Hf1dq/nh0RPxUU9Pvd+9M2xtJ+qTSjY4NlJJes5TK+XYj6Awtpqwq438Sg+3XYdIxRcTvbL9EqZzfXtILlIYxvVPp/ftaRJzfdFxKzdGPV/r/vJbSj8NrlIbyPjxS0/Z+9X1tOcTyvN+Yhlme9xNTE+X5qPT7Hl2gPj7LEXFLvgbbT6l5U9UR7L1KiZmjI2JoQ9s7Z20AAAAAAACQ0YcJAAAAAABAgYQJAAAAAABAgYQJAAAAAABAgYQJAAAAAABAgYQJAAAAAABAgYQJAAAAAABAgYQJAAAAAABAgYQJAAAAAABAgYQJAAAAAABAgYQJAAAAAABAgYQJAAAAAABAgYQJAAAAAABAgYQJAAAAAABAgYQJAAAAAABAgYQJAAAAAABAgYQJAAAAAABAgYQJAADANGN7DduRp71HHQ8AAOOIhAkAAHjKs711LUEQth+0vUwPr1va9v3Fa7duIGQAADBiJEwAAMB0tJykXXrYbmdJTxtyLANj++ac1Dlu1LEAALCoI2ECAACmm7n5ca8etq22mdtxKwAA8JRDwgQAAEw3Z+THbW2v0m4j2ytL2i7Pzhp6VAAAYKyQMAEAANPNzyTdIWlxSXt02G4PSUtI+pukcxqICwAAjBESJgAAYLp5XNL38vNOzXLemh//J7+mI9szbL/X9vm277Q93/Ydts+2/Rbbba+7bB+X+x65Oc+vYPsQ21fbftj2fbZ/YXvPNq+/wHZIen5e9Laio9qwfUGX+Le1fWaOeZ7tm2wfZXu1bn87AABPRSRMAADAdHRCftzQ9nrlStvrSnpZsW1btp8v6UpJX5O0taRnSVpS0rMlvS7v40Lbz+hhX+tIukLSQZLWlbSMpKdL+hdJJ9o+sts+Jsv255Vq3rw+xzxD0hqS3i3pd7ZfPOhjAgAw7kiYAACAaScirpB0VZ5tVcukWnZ13rYt28tJOk9SlVQ4XdIbJG0kaTdJF+blW0r6ke3FO+xuGaU+Vp4p6VCl5MtGkt4paXbe5j9tv7Z43dslvVTSbXl+Vp6vT29vc8x3Sto/x/nmfLzXSDo+r19J0rEdYgYA4ClpiVEHAAAAMCInSPqCpD1tfzIinpAk25a0Z22bbj4tac38/NCIOKi27nLbp+X97Clpc0nvknRUm32tpFQzZfOIuLrYzwWS/ihppqT3SvpptTIibsqxL8iL7ouIq9SbV0j6tqT/iIioLT/X9nxJ+0razPaG3ZJHAAA8lVDDBAAATFcnSXpC0mqStqot31rS6nndSZ12YHsppYSCJF0j6eBym5yEeK+ku/Oi93WJ61NFsqTaz1+Uaq9IqXnOoNwu6f1FsqRyWO35II8JAMDYI2ECAACmpYiYI+n8PFtvllM9vyAiZquzl0taIT8/LiJadg4bEQ9I+t88u67t57QLS6mT2XYuz48r2l6hw3aTcWpEzGsZTMR1kh7Ks2u22gYAgKcqEiYAAGA6q/rp+DfbS9teWtKueVkvzXFeUnv+2y7b1te/pM02d0XE3W3WSdI9tefLdzler67tsv7eAR8PAIBFAgkTAAAwnf1A0iNKyYCdJe0i6WmSHpV0Wg+vr49687cu297R5nV1j3TZxxO15506j52MXo85qOMBALBIIGECAACmrYh4SNIP8+xemmiOc3pEPDjZ3XVZ70nuDwAAjBAJEwAAMN1VzXK2k7Rtft5Lcxxp4SYyq3TZ9tltXgcAAMYQCRMAADDdnas0UswSefqbpJ/1+Nr60L2bdtl2kzavG6RutVwAAECPSJgAAIBpLY9sc4KkeXk6sd1oNy1cLum+/Pxttlv282F7eUlvyrPXRMTtUwi5k7n5cakh7R8AgGmDhAkAAJj2ImL/iJiZp49M4nXzJB2dZ9eT9OlyG9uWdKSkZ+VFR0413g6qRMxaQzwGAADTAgkTAACAqTlE0o35+UG2f2D79bZfZntXSedJemte/2tJ3xpiLL/Kjxvb/rjt9W2vnadVh3hcAACeckiYAAAATEEeTefVkq7Ni94o6Uyl5jqnSto6L79Y0usn0dynH0dpokPZz0m6UtKf83TSEI8LAMBTDgkTAACAKYqImyWtL+l9ki6UdLekBUodyP5EabjiV0bEUEfHiYg5Sp3LHiPpL5ro0wQAAEySI+hMHQAAAAAAoI4aJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAAUSJgAAAAAAAIX/A67bwR3EjNWIAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Project Progress + String Energization Points\n", + "\n", + "The \"progress points\" of the project are tracked in the output below. These are used to determine when array strings and turbines can be energized and revenue begins." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Offshore Substation', 120.0925357142857),\n", + " ('Array String', 313.9859420289855),\n", + " ('Array String', 618.4459420289855),\n", + " ('Array String', 843.9059420289856),\n", + " ('Array String', 1253.1092753623188),\n", + " ('Substructure', 1496.5764009525235),\n", + " ('Substructure', 1516.3403019050465),\n", + " ('Substructure', 1534.1042028575694),\n", + " ('Substructure', 1551.8681038100924),\n", + " ('Substructure', 1569.6320047626155),\n", + " ('Substructure', 1627.3959057151385),\n", + " ('Substructure', 1675.1598066676615),\n", + " ('Array String', 1688.5692753623189),\n", + " ('Turbine', 1791.015338095949),\n", + " ('Turbine', 1842.1986714292825),\n", + " ('Substructure', 1888.7237076201845),\n", + " ('Turbine', 1893.382004762616),\n", + " ('Substructure', 1906.4876085727078),\n", + " ('Array String', 1918.029275362319),\n", + " ('Substructure', 1924.2515095252309),\n", + " ('Substructure', 1942.015410477754),\n", + " ('Turbine', 1944.5653380959493),\n", + " ('Substructure', 1959.7793114302772),\n", + " ('Substructure', 1977.5432123828004),\n", + " ('Turbine', 1997.7486714292827)]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "project.progress.data[:25]" ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "([2626.8153260869567,\n", + " 2626.8153260869567,\n", + " 3208.7320047626126,\n", + " 3866.13200476261,\n", + " 4333.532004762608,\n", + " 4829.932004762606,\n", + " 5156.032004762603,\n", + " 5620.432004762601,\n", + " 5764.09867142927],\n", + " [6, 6, 6, 6, 6, 6, 6, 6, 2])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "project.progress.energize_points" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Format__: [string installation times], [number of turbines energized]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Monthly Cash Flow\n", + "\n", + "The monthly cash flow is shown below.\n", + "\n", + "- Revenue is generated as each turbine and associated array string is powered and the export system has been installed.\n", + "- A simple generation model is implemented for now (constant NCF), however this is an area for future development.\n", + "- The expenses from each installation phase are collected and totaled per month.\n", + "- As turbines are powered, the project begins accruing additional operating expenses." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ExpensesRevenueCash Flow
01.159244e+070.0-1.159244e+07
19.592865e+060.0-9.592865e+06
27.878374e+070.0-7.878374e+07
31.748031e+071681920.0-1.579839e+07
41.231171e+072522880.0-9.788830e+06
51.000148e+074204800.0-5.796680e+06
68.155250e+065045760.0-3.109490e+06
78.677000e+067008000.0-1.669000e+06
83.750000e+067008000.03.258000e+06
93.750000e+067008000.03.258000e+06
103.750000e+067008000.03.258000e+06
113.750000e+067008000.03.258000e+06
123.750000e+067008000.03.258000e+06
133.750000e+067008000.03.258000e+06
143.750000e+067008000.03.258000e+06
153.750000e+067008000.03.258000e+06
163.750000e+067008000.03.258000e+06
173.750000e+067008000.03.258000e+06
183.750000e+067008000.03.258000e+06
193.750000e+067008000.03.258000e+06
203.750000e+067008000.03.258000e+06
213.750000e+067008000.03.258000e+06
223.750000e+067008000.03.258000e+06
233.750000e+067008000.03.258000e+06
243.750000e+067008000.03.258000e+06
\n", + "
" + ], + "text/plain": [ + " Expenses Revenue Cash Flow\n", + "0 1.159244e+07 0.0 -1.159244e+07\n", + "1 9.592865e+06 0.0 -9.592865e+06\n", + "2 7.878374e+07 0.0 -7.878374e+07\n", + "3 1.748031e+07 1681920.0 -1.579839e+07\n", + "4 1.231171e+07 2522880.0 -9.788830e+06\n", + "5 1.000148e+07 4204800.0 -5.796680e+06\n", + "6 8.155250e+06 5045760.0 -3.109490e+06\n", + "7 8.677000e+06 7008000.0 -1.669000e+06\n", + "8 3.750000e+06 7008000.0 3.258000e+06\n", + "9 3.750000e+06 7008000.0 3.258000e+06\n", + "10 3.750000e+06 7008000.0 3.258000e+06\n", + "11 3.750000e+06 7008000.0 3.258000e+06\n", + "12 3.750000e+06 7008000.0 3.258000e+06\n", + "13 3.750000e+06 7008000.0 3.258000e+06\n", + "14 3.750000e+06 7008000.0 3.258000e+06\n", + "15 3.750000e+06 7008000.0 3.258000e+06\n", + "16 3.750000e+06 7008000.0 3.258000e+06\n", + "17 3.750000e+06 7008000.0 3.258000e+06\n", + "18 3.750000e+06 7008000.0 3.258000e+06\n", + "19 3.750000e+06 7008000.0 3.258000e+06\n", + "20 3.750000e+06 7008000.0 3.258000e+06\n", + "21 3.750000e+06 7008000.0 3.258000e+06\n", + "22 3.750000e+06 7008000.0 3.258000e+06\n", + "23 3.750000e+06 7008000.0 3.258000e+06\n", + "24 3.750000e+06 7008000.0 3.258000e+06" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.DataFrame(list(zip(\n", + " project.monthly_expenses.values(),\n", + " project.monthly_revenue.values(),\n", + " project.cash_flow.values()\n", + ")), columns=[\"Expenses\", \"Revenue\", \"Cash Flow\"])\n", + "\n", + "df.head(25)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cash Flow Figure\n", + "\n", + "Play around with the start dates of the configuration above. As the dates are moved around, the underlying expenses and generation will shift, affecting the net present value of the project." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=(6, 4), dpi=200)\n", + "axis = fig.add_subplot(111)\n", + "\n", + "last = 24\n", + "\n", + "df.loc[:last, \"Cash Flow\"].plot(kind='bar', ax=axis)\n", + "\n", + "## Formatting\n", + "_ = axis.axhline(0, color='k', lw=0.5)\n", + "\n", + "# Axis Labels\n", + "axis.set_xlabel(\"Month\")\n", + "\n", + "xticks = []\n", + "for i, tick in enumerate(axis.get_xticklabels()):\n", + " tick.set_rotation(0)\n", + " tick.set_fontsize(8)\n", + " xticks.append(tick)\n", + " \n", + "# xticks = [str(item.get_text()) for item in axis.get_xticklabels()]\n", + "xticks[-2] = \"...\"\n", + "xticks[-1] = str(df.index.max())\n", + "\n", + "_ = axis.set_xticklabels(xticks)\n", + "\n", + "axis.set_ylabel(\"Cash Flow ($M)\")\n", + "axis.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, loc: \"{:.0f}M\".format(int(x) / 1e6)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" } - ], - "source": [ - "fig = plt.figure(figsize=(6, 4), dpi=200)\n", - "axis = fig.add_subplot(111)\n", - "\n", - "last = 24\n", - "\n", - "df.loc[:last, \"Cash Flow\"].plot(kind='bar', ax=axis)\n", - "\n", - "## Formatting\n", - "_ = axis.axhline(0, color='k', lw=0.5)\n", - "\n", - "# Axis Labels\n", - "axis.set_xlabel(\"Month\")\n", - "\n", - "xticks = []\n", - "for i, tick in enumerate(axis.get_xticklabels()):\n", - " tick.set_rotation(0)\n", - " tick.set_fontsize(8)\n", - " xticks.append(tick)\n", - " \n", - "# xticks = [str(item.get_text()) for item in axis.get_xticklabels()]\n", - "xticks[-2] = \"...\"\n", - "xticks[-1] = str(df.index.max())\n", - "\n", - "_ = axis.set_xticklabels(xticks)\n", - "\n", - "axis.set_ylabel(\"Cash Flow ($M)\")\n", - "axis.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, loc: \"{:.0f}M\".format(int(x) / 1e6)))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/examples/Example - Custom Array Layout.ipynb b/examples/Example - Custom Array Layout.ipynb index b091c0e0..d4932564 100644 --- a/examples/Example - Custom Array Layout.ipynb +++ b/examples/Example - Custom Array Layout.ipynb @@ -1,2132 +1,2132 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Custom Array Cabling Layout Example\n", - "## Dudgeon Windfarm\n", - "\n", - "\n", - "#### Author: Rob Hammond\n", - "#### Date: 4 May 2020\n", - "#### Update: 30 March 2021\n", - "\n", - "\n", - "\n", - "##### Data source: Dudgeon Wind Farm turbine locations from their publicly available [Call to Mariners](http://dudgeonoffshorewind.co.uk/news/notices/Dudgeon%20-%20Notice%20to%20Mariners%20wk25.pdf)\n", - "\n", - "\n", - "This notebook will guide you through four of the main use cases on using the custom array cable layout functionality of `ORBIT` for when custom turbine locations, cable lengths or burial speeds are needed.\n", - "\n", - "**Note:** All array cable layout files are CSVs, which can be edited in Microsoft Excel.\n", - "\n", - "**Update:** This example was updated to work with ORBIT >= 1.0.0" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ + "cells": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "ORBIT library intialized at '../library'\n" - ] - } - ], - "source": [ - "import os\n", - "from copy import deepcopy\n", - "from pprint import pprint\n", - "\n", - "import numpy as np\n", - "import pandas as pd\n", - "\n", - "import ORBIT\n", - "from ORBIT import ProjectManager\n", - "from ORBIT.core import library\n", - "from ORBIT.phases.design import CustomArraySystemDesign\n", - "from ORBIT.phases.install import ArrayCableInstallation\n", - "\n", - "# initialize the library location\n", - "library.initialize_library(\"../library\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contents\n", - " - [Overview](#overview): How to use the inputs\n", - " - [Case 1](#case_1): Needing to know what to collect\n", - " - [Case 2](#case_2): Coordinates with a straight-line distance for cable length\n", - " - [Case 3](#case_3): Using distance from a reference point\n", - " - [Case 4](#case_4): Adjusting for exclusions in the cable paths\n", - " - [Case 5](#case_5): Fully customizing the cabling parameters\n", - " - [Applying the cases to `ArrayCableInstallation`](#running)\n", - " - [Using `ProjectManager` to model the entire process](#project_manager)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Overview\n", - "\n", - "#### Before starting it is important to demonstrate how to create a configuration file or how to set up a customized layout file.\n", - "\n", - "In the highest level of this repository there is a folder called `library` where all of the example data for this notebook is going to be stored. While any folder could be used, the folder structure must be strictly adhered to. More details on this structure can be found [here](https://github.com/WISDEM/ORBIT/blob/master/ORBIT/library.py#L9-L23).\n", - "\n", - "For this example of how to setup a configuration, I will be using the file `/ORBIT/library/project/config/example_custom_array_simple.yaml`. YAML' files are used for configuration throughout this codebase due their ease of encoding and loading `Python` data types.\n", - "\n", - "Now, we will load the configuration file and display it below." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Custom Array Cabling Layout Example\n", + "## Dudgeon Windfarm\n", + "\n", + "\n", + "#### Author: Rob Hammond\n", + "#### Date: 4 May 2020\n", + "#### Update: 30 March 2021\n", + "\n", + "\n", + "\n", + "##### Data source: Dudgeon Wind Farm turbine locations from their publicly available [Call to Mariners](http://dudgeonoffshorewind.co.uk/news/notices/Dudgeon%20-%20Notice%20to%20Mariners%20wk25.pdf)\n", + "\n", + "\n", + "This notebook will guide you through four of the main use cases on using the custom array cable layout functionality of `ORBIT` for when custom turbine locations, cable lengths or burial speeds are needed.\n", + "\n", + "**Note:** All array cable layout files are CSVs, which can be edited in Microsoft Excel.\n", + "\n", + "**Update:** This example was updated to work with ORBIT >= 1.0.0" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'array_system_design': {'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", - " 'location_data': 'dudgeon_array'},\n", - " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", - " 'site': {'depth': 20},\n", - " 'turbine': 'SWT_6MW_154m_110m'}\n" - ] - } - ], - "source": [ - "config = library.extract_library_specs(\"config\", \"example_custom_array_simple\")\n", - "pprint(config)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### A couple of things to notice in the configuration file for a custom array layout:\n", - "```python\n", - "{\n", - " # Array cabling system specific data configuration\n", - " 'array_system_design': {\n", - " \n", - " # A list of array cable YAML files that can be found in library/project/cables/ as\n", - " # XLPE_400mm_33kV.yaml and XLPE_630mm_33kV.yaml\n", - " 'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", - " \n", - " # A YAML file named dudgeon_array.csv found in the same location\n", - " 'location_data': 'dudgeon_array'},\n", - " \n", - " # We are using a custom layout and the Dudgeon contains 67 turbines\n", - " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", - " \n", - " # The average water depth at the site\n", - " 'site': {'depth': 20},\n", - " \n", - " # Turbine details (optional for custom)\n", - " 'turbine': 'SWT_6MW_154m_110m'\n", - "}\n", - "```\n", - "\n", - "#### Now, let's see what is contained within the additional files from the configuration dictionary\n", - "\n", - "It should be noted that running the design class extracts the data from the files automatically to produce the below output." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ORBIT library intialized at '../library'\n" + ] + } + ], + "source": [ + "import os\n", + "from copy import deepcopy\n", + "from pprint import pprint\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "import ORBIT\n", + "from ORBIT import ProjectManager\n", + "from ORBIT.core import library\n", + "from ORBIT.phases.design import CustomArraySystemDesign\n", + "from ORBIT.phases.install import ArrayCableInstallation\n", + "\n", + "# initialize the library location\n", + "library.initialize_library(\"../library\")" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'array_system_design': {'cables': {'XLPE_400mm_33kV': {'ac_resistance': 0.06,\n", - " 'capacitance': 225,\n", - " 'conductor_size': 400,\n", - " 'cost_per_km': 300000,\n", - " 'current_capacity': 600,\n", - " 'inductance': 0.375,\n", - " 'linear_density': 35,\n", - " 'name': 'XLPE_400mm_33kV',\n", - " 'rated_voltage': 33},\n", - " 'XLPE_630mm_33kV': {'ac_resistance': 0.04,\n", - " 'capacitance': 300,\n", - " 'conductor_size': 630,\n", - " 'cost_per_km': 450000,\n", - " 'current_capacity': 700,\n", - " 'inductance': 0.35,\n", - " 'linear_density': 42.5,\n", - " 'name': 'XLPE_630mm_33kV',\n", - " 'rated_voltage': 33}},\n", - " 'location_data': 'dudgeon_array'},\n", - " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", - " 'site': {'depth': 20},\n", - " 'turbine': {'blade': {'deck_space': 100, 'length': 75, 'mass': 100},\n", - " 'hub_height': 110,\n", - " 'nacelle': {'deck_space': 200, 'mass': 360},\n", - " 'name': 'SWT-6MW-154',\n", - " 'rated_windspeed': 13,\n", - " 'rotor_diameter': 154,\n", - " 'tower': {'deck_space': 36,\n", - " 'length': 110,\n", - " 'mass': 150,\n", - " 'sections': 2},\n", - " 'turbine_rating': 6}}\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Contents\n", + " - [Overview](#overview): How to use the inputs\n", + " - [Case 1](#case_1): Needing to know what to collect\n", + " - [Case 2](#case_2): Coordinates with a straight-line distance for cable length\n", + " - [Case 3](#case_3): Using distance from a reference point\n", + " - [Case 4](#case_4): Adjusting for exclusions in the cable paths\n", + " - [Case 5](#case_5): Fully customizing the cabling parameters\n", + " - [Applying the cases to `ArrayCableInstallation`](#running)\n", + " - [Using `ProjectManager` to model the entire process](#project_manager)" + ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "UserWarning: /Users/jnunemak/Fun/repos/ORBIT/ORBIT/phases/design/array_system_design.py:881\n", - "Missing data in columns ['cable_length', 'bury_speed']; all values will be calculated." - ] - } - ], - "source": [ - "array = CustomArraySystemDesign(config)\n", - "array.run()\n", - "pprint(array.config)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### When the `dudgeon_array.csv` file is loaded, it is not passed back into the configuration dictionary, so let's dissect this file:\n", - "\n", - "1. The file must have all of the columns shown below (not case-sensitive).\n", - " - All columns must be completely filled out for turbines (note on substation(s) following).\n", - " - `cable_length` and `bury_speed` are optional and if these are not known, simply fill with a 0.\n", - "2. A latitude and longitude must be provided for all turbines and substation(s). This can either be a WGS-84 decimal coordinate or a distance-based \"coordinate\" where latitude and longitude are the distances from some reference point, in kilometers; see [Case 3](#case_3) for more details.\n", - "2. Define the offshore substation(s)\n", - " - For each substation, the values in columns `id` and `substation_id` _must_ be the same.\n", - " - There is no need to fill in any data for the columns `String`, `Order`, `cable_length` and `bury_speed`.\n", - "3. 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", - " - `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 turbines labeled with an \"A\" in the [Call to Mariners](http://dudgeonoffshorewind.co.uk/news/notices/Dudgeon%20-%20Notice%20to%20Mariners%20wk25.pdf)\n", - " - The ordering on a string should travel from substation to the farthest end of the cable" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Overview\n", + "\n", + "#### Before starting it is important to demonstrate how to create a configuration file or how to set up a customized layout file.\n", + "\n", + "In the highest level of this repository there is a folder called `library` where all of the example data for this notebook is going to be stored. While any folder could be used, the folder structure must be strictly adhered to. More details on this structure can be found [here](https://github.com/WISDEM/ORBIT/blob/master/ORBIT/library.py#L9-L23).\n", + "\n", + "For this example of how to setup a configuration, I will be using the file `/ORBIT/library/project/config/example_custom_array_simple.yaml`. YAML' files are used for configuration throughout this codebase due their ease of encoding and loading `Python` data types.\n", + "\n", + "Now, we will load the configuration file and display it below." + ] + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idsubstation_idnameLongitudeLatitudeStringOrdercable_lengthbury_speed
1DAE_A1DOW_OSSDAE_A11.35878353.2439500000
2DAD_A2DOW_OSSDAD_A21.34903353.2484670100
3DAC_A3DOW_OSSDAC_A31.33928353.2529830200
4DAB_A4DOW_OSSDAB_A41.32955053.2575000300
5DAA_A5DOW_OSSDAA_A51.31980053.2620170400
..............................
59DAF_L2DOW_OSSDAF_L21.36853353.23943311100
60DAG_L3DOW_OSSDAG_L31.37825053.23491711200
61DAH_L4DOW_OSSDAH_L41.38800053.23040011300
62DAJ_L5DOW_OSSDAJ_L51.39775053.22588311400
0DOW_OSSDOW_OSSDOW_OSS1.37876753.264800
\n", - "

68 rows × 9 columns

\n", - "
" + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'array_system_design': {'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", + " 'location_data': 'dudgeon_array'},\n", + " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", + " 'site': {'depth': 20},\n", + " 'turbine': 'SWT_6MW_154m_110m'}\n" + ] + } ], - "text/plain": [ - " id substation_id name Longitude Latitude String Order \\\n", - "1 DAE_A1 DOW_OSS DAE_A1 1.358783 53.243950 0 0 \n", - "2 DAD_A2 DOW_OSS DAD_A2 1.349033 53.248467 0 1 \n", - "3 DAC_A3 DOW_OSS DAC_A3 1.339283 53.252983 0 2 \n", - "4 DAB_A4 DOW_OSS DAB_A4 1.329550 53.257500 0 3 \n", - "5 DAA_A5 DOW_OSS DAA_A5 1.319800 53.262017 0 4 \n", - ".. ... ... ... ... ... ... ... \n", - "59 DAF_L2 DOW_OSS DAF_L2 1.368533 53.239433 11 1 \n", - "60 DAG_L3 DOW_OSS DAG_L3 1.378250 53.234917 11 2 \n", - "61 DAH_L4 DOW_OSS DAH_L4 1.388000 53.230400 11 3 \n", - "62 DAJ_L5 DOW_OSS DAJ_L5 1.397750 53.225883 11 4 \n", - "0 DOW_OSS DOW_OSS DOW_OSS 1.378767 53.264800 \n", - "\n", - " cable_length bury_speed \n", - "1 0 0 \n", - "2 0 0 \n", - "3 0 0 \n", - "4 0 0 \n", - "5 0 0 \n", - ".. ... ... \n", - "59 0 0 \n", - "60 0 0 \n", - "61 0 0 \n", - "62 0 0 \n", - "0 \n", - "\n", - "[68 rows x 9 columns]" + "source": [ + "config = library.extract_library_specs(\"config\", \"example_custom_array_simple\")\n", + "pprint(config)" ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = pd.read_csv(\"../library/cables/dudgeon_array.csv\").fillna(\"\")\n", - "df.sort_values(by=[\"String\", \"Order\"])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Case 1: Needing to know what to collect\n", - "\n", - "Here we know that we need to have a csv created to input all the data but need to see what data is necessary to collect.\n", - "\n", - "\n", - "First, we need to load in the configuration dictionary. Then, we will create a \"starter\" file that can be filled in for a new project, which will be saved in the \"library\"." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'array_system_design': {'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", - " 'location_data': 'dudgeon_array_no_data'},\n", - " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", - " 'site': {'depth': 20},\n", - " 'turbine': 'SWT_6MW_154m_110m'}\n", - "\n", - "+--------------------------------+\n", - "| PROJECT SPECIFICATIONS |\n", - "+---------------------------+----+\n", - "| N turbines full string | 6 |\n", - "| N full strings | 11 |\n", - "| N turbines partial string | 1 |\n", - "| N partial strings | 1 |\n", - "+---------------------------+----+\n", - "Saving custom array CSV to: /cables/dudgeon_array_no_data.csv\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### A couple of things to notice in the configuration file for a custom array layout:\n", + "```python\n", + "{\n", + " # Array cabling system specific data configuration\n", + " 'array_system_design': {\n", + " \n", + " # A list of array cable YAML files that can be found in library/project/cables/ as\n", + " # XLPE_400mm_33kV.yaml and XLPE_630mm_33kV.yaml\n", + " 'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", + " \n", + " # A YAML file named dudgeon_array.csv found in the same location\n", + " 'location_data': 'dudgeon_array'},\n", + " \n", + " # We are using a custom layout and the Dudgeon contains 67 turbines\n", + " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", + " \n", + " # The average water depth at the site\n", + " 'site': {'depth': 20},\n", + " \n", + " # Turbine details (optional for custom)\n", + " 'turbine': 'SWT_6MW_154m_110m'\n", + "}\n", + "```\n", + "\n", + "#### Now, let's see what is contained within the additional files from the configuration dictionary\n", + "\n", + "It should be noted that running the design class extracts the data from the files automatically to produce the below output." + ] }, { - "name": "stdin", - "output_type": "stream", - "text": [ - "../library/cables/dudgeon_array_no_data.csv already exists, overwrite [y/n]? y\n" - ] + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'array_system_design': {'cables': {'XLPE_400mm_33kV': {'ac_resistance': 0.06,\n", + " 'capacitance': 225,\n", + " 'conductor_size': 400,\n", + " 'cost_per_km': 300000,\n", + " 'current_capacity': 600,\n", + " 'inductance': 0.375,\n", + " 'linear_density': 35,\n", + " 'name': 'XLPE_400mm_33kV',\n", + " 'rated_voltage': 33},\n", + " 'XLPE_630mm_33kV': {'ac_resistance': 0.04,\n", + " 'capacitance': 300,\n", + " 'conductor_size': 630,\n", + " 'cost_per_km': 450000,\n", + " 'current_capacity': 700,\n", + " 'inductance': 0.35,\n", + " 'linear_density': 42.5,\n", + " 'name': 'XLPE_630mm_33kV',\n", + " 'rated_voltage': 33}},\n", + " 'location_data': 'dudgeon_array'},\n", + " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", + " 'site': {'depth': 20},\n", + " 'turbine': {'blade': {'deck_space': 100, 'length': 75, 'mass': 100},\n", + " 'hub_height': 110,\n", + " 'nacelle': {'deck_space': 200, 'mass': 360},\n", + " 'name': 'SWT-6MW-154',\n", + " 'rated_windspeed': 13,\n", + " 'rotor_diameter': 154,\n", + " 'tower': {'deck_space': 36,\n", + " 'length': 110,\n", + " 'mass': 150,\n", + " 'sections': 2},\n", + " 'turbine_rating': 6}}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "UserWarning: /Users/jnunemak/Fun/repos/ORBIT/ORBIT/phases/design/array_system_design.py:881\n", + "Missing data in columns ['cable_length', 'bury_speed']; all values will be calculated." + ] + } + ], + "source": [ + "array = CustomArraySystemDesign(config)\n", + "array.run()\n", + "pprint(array.config)" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Save complete!\n" - ] - } - ], - "source": [ - "config = library.extract_library_specs(\"config\", \"example_custom_array_no_data\")\n", - "pprint(config)\n", - "print()\n", - "\n", - "array = CustomArraySystemDesign(config)\n", - "save_path = array.config[\"array_system_design\"][\"location_data\"]\n", - "array.create_project_csv(save_path)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Let's take a look at the data to see what it output\n", - "\n", - "**NOTE**:\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`, `latitued`, 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) provided so in this case we can have up to 6 turbines in a string. **These are also, very importantly, starting their numbering with 0.**" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "dudgeon_array_no_data = pd.read_csv(\"../library/cables/dudgeon_array_no_data.csv\")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### When the `dudgeon_array.csv` file is loaded, it is not passed back into the configuration dictionary, so let's dissect this file:\n", + "\n", + "1. The file must have all of the columns shown below (not case-sensitive).\n", + " - All columns must be completely filled out for turbines (note on substation(s) following).\n", + " - `cable_length` and `bury_speed` are optional and if these are not known, simply fill with a 0.\n", + "2. A latitude and longitude must be provided for all turbines and substation(s). This can either be a WGS-84 decimal coordinate or a distance-based \"coordinate\" where latitude and longitude are the distances from some reference point, in kilometers; see [Case 3](#case_3) for more details.\n", + "2. Define the offshore substation(s)\n", + " - For each substation, the values in columns `id` and `substation_id` _must_ be the same.\n", + " - There is no need to fill in any data for the columns `String`, `Order`, `cable_length` and `bury_speed`.\n", + "3. 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", + " - `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 turbines labeled with an \"A\" in the [Call to Mariners](http://dudgeonoffshorewind.co.uk/news/notices/Dudgeon%20-%20Notice%20to%20Mariners%20wk25.pdf)\n", + " - The ordering on a string should travel from substation to the farthest end of the cable" + ] + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idsubstation_idnamelatitudelongitudestringordercable_lengthbury_speed
0oss1oss1offshore_substation0.00.0NaNNaNNaNNaN
1t0oss1turbine-00.00.00.00.00.00.0
2t1oss1turbine-10.00.00.01.00.00.0
3t2oss1turbine-20.00.00.02.00.00.0
4t3oss1turbine-30.00.00.03.00.00.0
..............................
63t62oss1turbine-620.00.010.02.00.00.0
64t63oss1turbine-630.00.010.03.00.00.0
65t64oss1turbine-640.00.010.04.00.00.0
66t65oss1turbine-650.00.010.05.00.00.0
67t66oss1turbine-660.00.011.00.00.00.0
\n", - "

68 rows × 9 columns

\n", - "
" + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idsubstation_idnameLongitudeLatitudeStringOrdercable_lengthbury_speed
1DAE_A1DOW_OSSDAE_A11.35878353.2439500000
2DAD_A2DOW_OSSDAD_A21.34903353.2484670100
3DAC_A3DOW_OSSDAC_A31.33928353.2529830200
4DAB_A4DOW_OSSDAB_A41.32955053.2575000300
5DAA_A5DOW_OSSDAA_A51.31980053.2620170400
..............................
59DAF_L2DOW_OSSDAF_L21.36853353.23943311100
60DAG_L3DOW_OSSDAG_L31.37825053.23491711200
61DAH_L4DOW_OSSDAH_L41.38800053.23040011300
62DAJ_L5DOW_OSSDAJ_L51.39775053.22588311400
0DOW_OSSDOW_OSSDOW_OSS1.37876753.264800
\n", + "

68 rows \u00d7 9 columns

\n", + "
" + ], + "text/plain": [ + " id substation_id name Longitude Latitude String Order \\\n", + "1 DAE_A1 DOW_OSS DAE_A1 1.358783 53.243950 0 0 \n", + "2 DAD_A2 DOW_OSS DAD_A2 1.349033 53.248467 0 1 \n", + "3 DAC_A3 DOW_OSS DAC_A3 1.339283 53.252983 0 2 \n", + "4 DAB_A4 DOW_OSS DAB_A4 1.329550 53.257500 0 3 \n", + "5 DAA_A5 DOW_OSS DAA_A5 1.319800 53.262017 0 4 \n", + ".. ... ... ... ... ... ... ... \n", + "59 DAF_L2 DOW_OSS DAF_L2 1.368533 53.239433 11 1 \n", + "60 DAG_L3 DOW_OSS DAG_L3 1.378250 53.234917 11 2 \n", + "61 DAH_L4 DOW_OSS DAH_L4 1.388000 53.230400 11 3 \n", + "62 DAJ_L5 DOW_OSS DAJ_L5 1.397750 53.225883 11 4 \n", + "0 DOW_OSS DOW_OSS DOW_OSS 1.378767 53.264800 \n", + "\n", + " cable_length bury_speed \n", + "1 0 0 \n", + "2 0 0 \n", + "3 0 0 \n", + "4 0 0 \n", + "5 0 0 \n", + ".. ... ... \n", + "59 0 0 \n", + "60 0 0 \n", + "61 0 0 \n", + "62 0 0 \n", + "0 \n", + "\n", + "[68 rows x 9 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " id substation_id name latitude longitude string \\\n", - "0 oss1 oss1 offshore_substation 0.0 0.0 NaN \n", - "1 t0 oss1 turbine-0 0.0 0.0 0.0 \n", - "2 t1 oss1 turbine-1 0.0 0.0 0.0 \n", - "3 t2 oss1 turbine-2 0.0 0.0 0.0 \n", - "4 t3 oss1 turbine-3 0.0 0.0 0.0 \n", - ".. ... ... ... ... ... ... \n", - "63 t62 oss1 turbine-62 0.0 0.0 10.0 \n", - "64 t63 oss1 turbine-63 0.0 0.0 10.0 \n", - "65 t64 oss1 turbine-64 0.0 0.0 10.0 \n", - "66 t65 oss1 turbine-65 0.0 0.0 10.0 \n", - "67 t66 oss1 turbine-66 0.0 0.0 11.0 \n", - "\n", - " order cable_length bury_speed \n", - "0 NaN NaN NaN \n", - "1 0.0 0.0 0.0 \n", - "2 1.0 0.0 0.0 \n", - "3 2.0 0.0 0.0 \n", - "4 3.0 0.0 0.0 \n", - ".. ... ... ... \n", - "63 2.0 0.0 0.0 \n", - "64 3.0 0.0 0.0 \n", - "65 4.0 0.0 0.0 \n", - "66 5.0 0.0 0.0 \n", - "67 0.0 0.0 0.0 \n", - "\n", - "[68 rows x 9 columns]" + "source": [ + "df = pd.read_csv(\"../library/cables/dudgeon_array.csv\").fillna(\"\")\n", + "df.sort_values(by=[\"String\", \"Order\"])" ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dudgeon_array_no_data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Case 2: Standard straight-line distance for cable lengths\n", - "\n", - "Here we have the turbine and offshore substation locations that were extracted from the data source in the header but nothing specific regarding the actual cable lengths or the cable burial speeds for each section." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'array_system_design': {'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", - " 'location_data': 'dudgeon_array'},\n", - " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", - " 'site': {'depth': 20},\n", - " 'turbine': 'SWT_6MW_154m_110m'}\n" - ] - } - ], - "source": [ - "config = library.extract_library_specs(\"config\", \"example_custom_array_simple\")\n", - "pprint(config)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "array = CustomArraySystemDesign(config)\n", - "array.run()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Let's take a look at the data to see what it output\n", - "\n", - "**NOTE**: Here the cable length and bury speed are still set to 0 to indicate that they are unknown" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { - "data": { - "image/png": "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KIEWEREREUmAEmgRERERkQRkhB2AiIiISCV4ESgkWKAiUqU0B1pEREREJAEq4RARERERSYASaBERERGRBCiBFhERERFJgBJoEREREZEEKIEWEREREUmAEmgRERERkQQogRYRERERSYASaBERERGRBCiBFhERERFJgBJoEREREZEEKIEWEREREUmAEmgRERERkQQogRYRERERSYASaBERERGRBCiBFhERERFJgBJoEREREZEEKIEWEREREUmAEmgRERERkQQogRYRERERSYASaBERERGRBCiBFhERERFJgBJoEREREZEEKIEWEREREUmAEmgRERERkQQogRYRERERSYASaBERERGRBCiBFhERERFJgBJoEREREZEEKIEWEREREUmAEmgRERERkQQogRYRERERSYASaBERERGRBCiBFhERERFJgBJoEREREZEEKIEWEREREUmAEmgRERERkQQogRYRERERSYASaBERERGRBGTs68pZs2a1zMjImAD0RMm2iIiIiKSGEmBeUVHRZX379v2y7JX7TKAzMjImZGVldW/RosW6tLQ0r7IQRUREREQioqSkxFavXp1TWFg4ARhY9vr9nSr3bNGixddKnkVEREQkVaSlpXmLFi02EFRh7GGfJ9DB/RNPnos3fZ6xaeEDzYrWza3rO77OsFqNijIO6bWlfvbVa9LrtSlK9POJiIiIiFSneA5c7mHz/hLohGwrfLPeNx/e2Xr7qqmNwaBkm+267vN/lWyaN6Zt7awTNzT41i++yMw6cXNlPraIiIiISHWotMbAb+aObr72lQHdtn/xnyaUbLfSyTMAJdvSKNlu21e+2mTtKwO6fTN3dPPKemwRERERkepSKSfQ38wd3XzjB7e3p3hrBRJyh+KtaRs/uL09QINeI7+qjBhERERERKrDQZ9Abyt8s17Fk+dS4kn0tsKp9Q42BklNn67bklFUXFKh2xYVl/Dpui2VWrIkIiIiqemgE+hvPryzNcXbDuzzFG9L+2bOnVmJ3OXjjz+udeqppx7esWPHnu3bt+956aWXtt+6datt3LgxbeDAgYd27do1p0uXLj369u3bbcOGDWkAI0eOzOrcuXOPrl275mRnZ+e89tpr9Q8oXomMouISfjBhepc++VO7v/3J2n2+CHtr6Zp6ffKndj9z4vTOFU24AQoLC9Ozs7NzsrOzc5o3b967ZcuW39r5961bt9r+PwMMGjTo0CeeeKJJ2ctfe+21+kOHDm1f4WBEREQkMg4qgS7e9HlG0DB4oFPunO2FbzYp3ryyQieDJSUlnHXWWZ0HDhy4fvny5fM++eSTeZs2bUobPnx427vuuqtly5YtdyxatGj+4sWLP3r00UeX1a5d21999dX6//rXv5rMnTt3/qJFi+a//vrriw477LDtBxiwRMSirzbVXr1pe62PVm2sd+If3ul+2TMfttuwZcdu38/rtuxIG/r0B+1P+uO07h+t2lhv9Tfbay36alPtij5GVlZWcUFBwfyCgoL5Q4YMWX3llVeu2vn3OnXq7PebfseOHXu97pRTTtk0ceLEFRWNRSQRS5YsqdW2bdteq1atSgdYvXp1etu2bXu99NJLDbp06dKj7O3POeecTm3btu2VnZ2dk5OT0/3VV1+tX/by7OzsnCOOOCJ7X4/74osvNszOzs7p3Llzj379+nUD2Lx5s/Xq1at7t27dcjp37txjxIgRbXbeftWqVen9+/fv0rFjx579+/fvsnr16vTK/Zco375iGj58eJudhy3HHXdcl2XLltUCGDduXLMhQ4Z0KPv/26dPn93+TXbs2EGzZs16L1++vFZ1/L9IcgvruQrw5ptv1ktPT+/72GOPHbLzskmTJjXq1KlTzw4dOvS85ZZbdh1w6rm6p4NKoDctfKAZVOggbh/MNxU80Kwit4zFYg0zMzNLhg8fvgYgIyODBx98cMXTTz/dfNmyZZlt27bdlbH07t17W926df3zzz+v1bRp06K6des6QOvWrYs6deq098xGkkJOq4bbF4w8ed7QYzqsApg4/dNW2aNf7/GXWZ81Bnhy1mdNuo9+veej761oCXDZMR1WFYw8+aOcVg0P+sXTvHnzMrOzs3N2/v2WW27Juummm1oD9O3bt9t1113X9qijjuo2atSolgD//Oc/G/Xt27dbp06dej7zzDONAF544YWGp5122uEAw4YNa3Peeed17NevX7d27dr1GjVqVIudn3v8+PHNevXq1T07Ozvnoosu6lBcXHyw4Us1MrO+VfFnf4/buXPnHZdeeumX119/fTuA4cOHtxsyZMjqzp077/X7/8477/ysoKBg/p133vn51Vdf3bHs5QUFBfPff//9gr3d/6uvvkofPnx4h1gstmTJkiUfvfDCCx8D1KlTx99+++2FCxcunP/RRx/N/89//tPoP//5T32A2267rfVJJ520cfny5fNOOumkjb/61a8SekfyQO0npsJFixbNLygomH/GGWdsuOWWW1rv7fOcccYZGwsLC2svXLhw1wvzyZMnN+rateuWjh076veM7FcYz1WAoqIiRo4c2e7444/fUPqyESNGdPjHP/6xaNGiRR8999xzTWfNmlUH9Fwtz0El0EXr5tbdY9pGokq2pRWtn1u3IjedO3du3d69e+82/q5p06YlrVu33j5kyJA148ePz+rTp0/2sGHD2sydOzcT4Kyzzvp65cqVtTt16tTzoosu6vDSSy81OKh4JTIOqVurZMJ5vT9785rjFvRo1XBz4cZttS/66/udLS/W9+K/vn/4qo3bavXIarj5zWuOW/DIeb0/a1y3VsXrNw7C119/nTZz5syFv/rVr74EWLlyZe333ntv4eTJkxcPGzas05YtW/Z4znz88cd13nrrrUXTp09fMHr06LZFRUXMmDGjzuTJk5vMnj17QUFBwfzi4mJ75JFHmlbH/4Mkv1/+8pdfzpo1q/6vf/3rlu+9916D2267bVVF7jdgwICNK1asyEz08SZMmND0Bz/4wbouXbpsB2jbtm0RQFpaGo0bNy4B2L59uxUVFZlZ8BT45z//2eSKK65YA3DFFVesefnllw+B4ATptNNOO/yUU07p3LZt21533XVXi9tvv71V9+7dc3r37p2987Tu6KOP7jZ06ND2Rx11VLfDDjusx5tvvlnve9/73uEdO3bsOWzYsDblhMn+YmratOmunxObNm1K23l5aU899VTjPn36ZH/55ZcZZ5555trHH3981/Pyb3/7W9PBgwevTfTfT8IXxotdqP7nKsBdd93VctCgQeuaN2++azfHG2+8Ub9jx47bcnJyttepU8d/+MMfrp00aVIT0HO13NgO9I4AvuPrSmnK8u0V+zzujpnt8da5u9OsWbPiTz75ZO6IESMK165dm9G/f//us2fPrtO4ceOSefPmzb///vuXt2jRouiSSy45fNy4cRU68ZbkcPyhTTd/kHfCgt8M6LZbScSdZ3Rb8cENJyw4/tCm1Tpz/MILL9ztCXnOOeesS09Pp3fv3ttat269fd68eXv8wBswYMCGOnXqeNu2bYsaN25ctHLlyoyXX3650Zw5c+r36tUrJzs7O+fdd99t+PHHHx/QD0sJh7vPqoo/FXnszMxMHzVq1Ge33XZb+zFjxqyoSNkRwFNPPdWkS5cuW3b+/dZbb223823hgQMHHrq3+y1atKjOunXrMo4++uhuPXr06H7//ffv+jlbVFREdnZ2TqtWrXqfeOKJX59yyimbANasWZOx8/SnY8eOO9auXZtR6vPVfe6555bOmDFjwahRo9rWq1evZMGCBfOPOuqoTQ899NCuz127du2SmTNnLrz00ktXDx48uPMjjzzyaUFBwUdPP/1088LCwr2+zby3mACuu+66tllZWd+aNGlSszFjxqwsfb/HH3+8yZgxY7JeeeWVxa1bty66+OKL1z7//PNNAbZs2WKvv/5644svvnhdRf6tJVpS5bn6ySef1IrFYof87Gc/W1368hUrVtRu27btrpPvdu3abf/8889rg56r5TmoBNpqNaqUrYJWu2Kfp1evXls++OCD3RoA165dm1ZYWFi7e/fu2xo3blxyySWXrH/yySc/Pfvss9dOnjy5MQSlHmeeeebGe++9d+WYMWM+feGFFw4p/xEkWWWkp3Hrd7t+eV7vNl8BnNe7zVe/OK3rlxnplTbqfJdatWp5Scn/DrO3bt19Ak2DBg12O+ku+6KvvFfJmZmZu+6TlpbmO3bsMHfn/PPP/2rnW3LLli2bN2bMmC8q6/9Dar6XXnqpcYsWLXbMmTOnzv5uu/OX74QJE5pPnDhx2c7LS78tPGXKlE/2dv+ioiKbM2dOvVdffXXxq6++unjMmDGt58yZkwnBz+CCgoL5n3766ZzZs2fXnzFjxn7j6d+//8ZDDjmkpE2bNkUNGjQoHjx48HqAXr16bV62bNmuF5Jnn332eoDevXtv6dy585aOHTvuqFu3rrdv337b0qVL99rzsK+Yxo8f/3lhYeGcc889d82YMWNa7rx82rRpDfPz87NeeeWVxS1atCgGOPHEEzdv3rw57cMPP8ycNGlS4z59+mzaeZ1IRVXnc/Xqq69uf/fdd3+WkbH72aX7nnl7eYeWZaXqc/WgsouMQ3ptIS3zQDsI4xFklmQ06bVl/zeEgQMHbty6dWvazpONoqIirr766vaDBw/+6t133627s6h969attmjRojqdOnXa/uGHH2buLOcAeP/99+u2a9dOTYQ1VNvGdXaU/lgV2rdvv2P16tW1Vq9enb5582b797//3Xhft3/uueealpSUMGfOnMwvvviids+ePbdV5HHOOOOMjZMnT276xRdfZEAwFWTx4sUVboKU1DZt2rS6U6dObfTOO+8UPPjgg6321yiz85fvtGnTFvfr129roo/Xrl277aeeeurXjRo1KmndunXRMcccs3HmzJm7Tchp3rx58fHHH78xFos1BmjWrFnRzriWL19eq2nTprsOU2rXrr3rd0taWho7T+XS0tIoKira9Sq09OWZmZm73af07fambEylXXrppWtffPHFXQcuHTp02LZp06b0efPm7ZbknHXWWWsff/zxpk8//XTTH/3oRyrfkIRU93N1zpw59YcMGXJY27Zte7388suH5OXldXjiiSeadOjQYdeJM8Bnn31Wu02bNjtAz9XyHFQCXb/bVWsOfALHTm71s69aU5FbpqWl8cILLyx5/vnnD+nYsWPPQw89tGdmZmbJuHHjPl+0aFGd4447rlvXrl1zevbsmdOnT5/Nl1xyybqvv/46fciQIYcefvjhPbp27ZpTUFBQd/To0Sv3/2gi5atXr54PHz68sG/fvt2/+93vdu7ates+XwAedthhW/v169dt4MCBXcaNG7esom/PHX300VtuvvnmlSeffHLXrl275px66qldV66s2MQaSW0lJSVcffXVHceMGbOiS5cu26+99tpV1113XbuqfMxzzz13/bvvvttgx44dbNy4Me39999v0KtXry0rV67M+Oqrr9IBvvnmG3vjjTcade/efSvA6aefvn7nW7wPPfRQswEDBqyvyhh32ldMpQ9cnn322SaHH374rud3u3bttj/33HNLLr300kNnzpy56xfzkCFD1k6aNKnZtGnTGp5//vnV8v8gNUMYz9XPP/987s4/Z5xxxrr8/PxPL7744vUnnnjipmXLltUpKCiovXXrVnv++eebnnPOOetBz9XyHNQv4/T6bYtqtzphw/Yv/tPkwBJpo3bWievT67WpcClI586dd7z22mtLyl5+7bXXrrn22mv3SMS/853vbN5fN6rI/owdO3a3F1233377qttvv32PRo9Zs2YtLP33yZMnl/s22llnnbXxrLPO2ggwbty43T73J5988tHO/77yyivXXnnllTrRkoSMHTu2edu2bbefffbZXwOMHDnyy969e3dfsmRJ7U8++SSzVatW39p521GjRu1znOKtt97abvTo0bu62z/44IMF5b0IPPLII7eedtppG7Kzs3ukpaVx8cUXr+7Xr9/W6dOn1/3JT35yaHFxMe5ugwYNWnv++edvALjjjju+OPvssw/v2LFj8zZt2mzfObmjqq1YsaLW3mK68cYb2y1durSOmXm7du22T5w4cXnp+/bu3Xvb448/vvRHP/rR4VOmTFnSo0ePbX379t1ap06dkl69em1u1KhRtTQrS80QxnN1b2rVqkV+fv6nAwYM6FpcXMwFF1zw1VFHHbUV9Fwtj5VX87LThx9+uKx37977XLW9rfDNemtfGdAt4U2EAOl1Spp+918LM7NOqNYmL6m5bpj8UZt7py5tPeKEw74YO6iH3mkQERGRA/bhhx827927d6eylx90h1Vm1ombG/a5fQXpdRLL5NPrlDTsc/sKJc8iIiIikkwqpZ6yQa+RXwFs/OD29sFa7329Y2CQnlnSsM/tK3beT0REksN9993X7IEHHmhV+rJ+/fp988QTT3waVkx7U1hYmH7SSSd1K3v5G2+8sTArK0uTMqRG03O1ah10CUdp2wqn1vtmzp1Z2wvfbALmlGz73wl3WmYJuNXOOnF9g2/dWqiTZ6kKUz9eU++/y9fVP7bjIZtOOLyZvsdERETkgO2thKNSO/ozs07YnJn176XFm1dmbCp4oFnR+rl1ffvXGVa7UVFGk15b6mdftSaRhkGRRJ1weLPNSpxFRESkKlXJSKz0em2KGh35mwqtohQRERERSSb7ayIsKSkp2e9waxERERGRmiSeA5c7JGN/CfS81atXN1YSLSIiIiKpoqSkxFavXt0YmFfe9fss4SgqKrqssLBwQmFhYU8qYeSdiIiIiEgSKAHmFRUVXVbelfucwiEiIiIiIrvTqbKIiIiISAKUQIuIiIiIJEAJtIiIiIhIApRAi4iIiIgkQAm0iIiIiEgC/h+/rXFdPBWc1gAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Case 1: Needing to know what to collect\n", + "\n", + "Here we know that we need to have a csv created to input all the data but need to see what data is necessary to collect.\n", + "\n", + "\n", + "First, we need to load in the configuration dictionary. Then, we will create a \"starter\" file that can be filled in for a new project, which will be saved in the \"library\"." ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "array.plot_array_system(show=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### It should be noted here that the the latitude and longitude here are WGS-84 decimal coordinates" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idsubstation_idsubstation_namesubstation_latitudesubstation_longitudeturbine_nameturbine_latitudeturbine_longitudestringordercable_lengthbury_speed
0DAE_A1DOW_OSSDOW_OSS53.26481.378767DAE_A153.2439501.358783000.00.0
1DAD_A2DOW_OSSDOW_OSS53.26481.378767DAD_A253.2484671.349033010.00.0
2DAC_A3DOW_OSSDOW_OSS53.26481.378767DAC_A353.2529831.339283020.00.0
3DAB_A4DOW_OSSDOW_OSS53.26481.378767DAB_A453.2575001.329550030.00.0
4DAA_A5DOW_OSSDOW_OSS53.26481.378767DAA_A553.2620171.319800040.00.0
.......................................
57DCE_L1DOW_OSSDOW_OSS53.26481.378767DCE_L153.2517831.3688331100.00.0
58DAF_L2DOW_OSSDOW_OSS53.26481.378767DAF_L253.2394331.3685331110.00.0
59DAG_L3DOW_OSSDOW_OSS53.26481.378767DAG_L353.2349171.3782501120.00.0
60DAH_L4DOW_OSSDOW_OSS53.26481.378767DAH_L453.2304001.3880001130.00.0
61DAJ_L5DOW_OSSDOW_OSS53.26481.378767DAJ_L553.2258831.3977501140.00.0
\n", - "

67 rows × 12 columns

\n", - "
" + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'array_system_design': {'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", + " 'location_data': 'dudgeon_array_no_data'},\n", + " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", + " 'site': {'depth': 20},\n", + " 'turbine': 'SWT_6MW_154m_110m'}\n", + "\n", + "+--------------------------------+\n", + "| PROJECT SPECIFICATIONS |\n", + "+---------------------------+----+\n", + "| N turbines full string | 6 |\n", + "| N full strings | 11 |\n", + "| N turbines partial string | 1 |\n", + "| N partial strings | 1 |\n", + "+---------------------------+----+\n", + "Saving custom array CSV to: /cables/dudgeon_array_no_data.csv\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "../library/cables/dudgeon_array_no_data.csv already exists, overwrite [y/n]? y\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Save complete!\n" + ] + } ], - "text/plain": [ - " id substation_id substation_name substation_latitude \\\n", - "0 DAE_A1 DOW_OSS DOW_OSS 53.2648 \n", - "1 DAD_A2 DOW_OSS DOW_OSS 53.2648 \n", - "2 DAC_A3 DOW_OSS DOW_OSS 53.2648 \n", - "3 DAB_A4 DOW_OSS DOW_OSS 53.2648 \n", - "4 DAA_A5 DOW_OSS DOW_OSS 53.2648 \n", - ".. ... ... ... ... \n", - "57 DCE_L1 DOW_OSS DOW_OSS 53.2648 \n", - "58 DAF_L2 DOW_OSS DOW_OSS 53.2648 \n", - "59 DAG_L3 DOW_OSS DOW_OSS 53.2648 \n", - "60 DAH_L4 DOW_OSS DOW_OSS 53.2648 \n", - "61 DAJ_L5 DOW_OSS DOW_OSS 53.2648 \n", - "\n", - " substation_longitude turbine_name turbine_latitude turbine_longitude \\\n", - "0 1.378767 DAE_A1 53.243950 1.358783 \n", - "1 1.378767 DAD_A2 53.248467 1.349033 \n", - "2 1.378767 DAC_A3 53.252983 1.339283 \n", - "3 1.378767 DAB_A4 53.257500 1.329550 \n", - "4 1.378767 DAA_A5 53.262017 1.319800 \n", - ".. ... ... ... ... \n", - "57 1.378767 DCE_L1 53.251783 1.368833 \n", - "58 1.378767 DAF_L2 53.239433 1.368533 \n", - "59 1.378767 DAG_L3 53.234917 1.378250 \n", - "60 1.378767 DAH_L4 53.230400 1.388000 \n", - "61 1.378767 DAJ_L5 53.225883 1.397750 \n", - "\n", - " string order cable_length bury_speed \n", - "0 0 0 0.0 0.0 \n", - "1 0 1 0.0 0.0 \n", - "2 0 2 0.0 0.0 \n", - "3 0 3 0.0 0.0 \n", - "4 0 4 0.0 0.0 \n", - ".. ... ... ... ... \n", - "57 11 0 0.0 0.0 \n", - "58 11 1 0.0 0.0 \n", - "59 11 2 0.0 0.0 \n", - "60 11 3 0.0 0.0 \n", - "61 11 4 0.0 0.0 \n", - "\n", - "[67 rows x 12 columns]" + "source": [ + "config = library.extract_library_specs(\"config\", \"example_custom_array_no_data\")\n", + "pprint(config)\n", + "print()\n", + "\n", + "array = CustomArraySystemDesign(config)\n", + "save_path = array.config[\"array_system_design\"][\"location_data\"]\n", + "array.create_project_csv(save_path)" ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "array.location_data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Now let's look at the cost for this cabling setup by each type of cable as well as the total cost" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cable Type | Cost in USD\n", - "XLPE_400mm_33kV | $ 19,868,788.44\n", - "XLPE_630mm_33kV | $ 5,462,877.30\n", - "Total | $ 25,331,665.74\n" - ] - } - ], - "source": [ - "print(f\"{'Cable Type':<16}| {'Cost in USD':>15}\")\n", - "for cable, cost in array.cost_by_type.items():\n", - " print(f\"{cable:<16}| ${cost:>15,.2f}\")\n", - " \n", - "print(f\"{'Total':<16}| ${array.total_cable_cost:>15,.2f}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Case 3: Distance-based \"coordinate\" system\n", - "\n", - "In this case, we will consider each turbine and substation on a distance-based \"coordinate\" system where the longitude and latitude are the longitudinal (x direction) and latitudinal (y direction) **distances**, in kilometers, from a common reference point. We are still using the Dudgeon data, but the distances were computed outside of this example and the details are not be included.\n", - "\n", - "Below, we can see that the input file is still encoded in the exact same manner as [Case 2](#case_2), but latitude and longitude are relative distances and not proper coordinates." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Let's take a look at the data to see what it output\n", + "\n", + "**NOTE**:\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`, `latitued`, 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) provided so in this case we can have up to 6 turbines in a string. **These are also, very importantly, starting their numbering with 0.**" + ] + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idsubstation_idnamelongitudelatitudestringordercable_lengthbury_speed
0DOW_OSSDOW_OSSDOW_OSS16.22990935.769173
1DAE_A1DOW_OSSDAE_A114.89084533.4507590000
2DAD_A2DOW_OSSDAD_A214.23752833.9530260100
3DAC_A3DOW_OSSDAC_A313.58421134.4551820200
4DAB_A4DOW_OSSDAB_A412.93203434.9574500300
..............................
63DCE_L1DOW_OSSDCE_L115.56426334.32174911000
64DAF_L2DOW_OSSDAF_L215.54416132.94849111100
65DAG_L3DOW_OSSDAG_L316.19526632.44633511200
66DAH_L4DOW_OSSDAH_L416.84858331.94406711300
67DAJ_L5DOW_OSSDAJ_L517.50189931.44180011400
\n", - "

68 rows × 9 columns

\n", - "
" + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "dudgeon_array_no_data = pd.read_csv(\"../library/cables/dudgeon_array_no_data.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idsubstation_idnamelatitudelongitudestringordercable_lengthbury_speed
0oss1oss1offshore_substation0.00.0NaNNaNNaNNaN
1t0oss1turbine-00.00.00.00.00.00.0
2t1oss1turbine-10.00.00.01.00.00.0
3t2oss1turbine-20.00.00.02.00.00.0
4t3oss1turbine-30.00.00.03.00.00.0
..............................
63t62oss1turbine-620.00.010.02.00.00.0
64t63oss1turbine-630.00.010.03.00.00.0
65t64oss1turbine-640.00.010.04.00.00.0
66t65oss1turbine-650.00.010.05.00.00.0
67t66oss1turbine-660.00.011.00.00.00.0
\n", + "

68 rows \u00d7 9 columns

\n", + "
" + ], + "text/plain": [ + " id substation_id name latitude longitude string \\\n", + "0 oss1 oss1 offshore_substation 0.0 0.0 NaN \n", + "1 t0 oss1 turbine-0 0.0 0.0 0.0 \n", + "2 t1 oss1 turbine-1 0.0 0.0 0.0 \n", + "3 t2 oss1 turbine-2 0.0 0.0 0.0 \n", + "4 t3 oss1 turbine-3 0.0 0.0 0.0 \n", + ".. ... ... ... ... ... ... \n", + "63 t62 oss1 turbine-62 0.0 0.0 10.0 \n", + "64 t63 oss1 turbine-63 0.0 0.0 10.0 \n", + "65 t64 oss1 turbine-64 0.0 0.0 10.0 \n", + "66 t65 oss1 turbine-65 0.0 0.0 10.0 \n", + "67 t66 oss1 turbine-66 0.0 0.0 11.0 \n", + "\n", + " order cable_length bury_speed \n", + "0 NaN NaN NaN \n", + "1 0.0 0.0 0.0 \n", + "2 1.0 0.0 0.0 \n", + "3 2.0 0.0 0.0 \n", + "4 3.0 0.0 0.0 \n", + ".. ... ... ... \n", + "63 2.0 0.0 0.0 \n", + "64 3.0 0.0 0.0 \n", + "65 4.0 0.0 0.0 \n", + "66 5.0 0.0 0.0 \n", + "67 0.0 0.0 0.0 \n", + "\n", + "[68 rows x 9 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " id substation_id name longitude latitude string order \\\n", - "0 DOW_OSS DOW_OSS DOW_OSS 16.229909 35.769173 \n", - "1 DAE_A1 DOW_OSS DAE_A1 14.890845 33.450759 0 0 \n", - "2 DAD_A2 DOW_OSS DAD_A2 14.237528 33.953026 0 1 \n", - "3 DAC_A3 DOW_OSS DAC_A3 13.584211 34.455182 0 2 \n", - "4 DAB_A4 DOW_OSS DAB_A4 12.932034 34.957450 0 3 \n", - ".. ... ... ... ... ... ... ... \n", - "63 DCE_L1 DOW_OSS DCE_L1 15.564263 34.321749 11 0 \n", - "64 DAF_L2 DOW_OSS DAF_L2 15.544161 32.948491 11 1 \n", - "65 DAG_L3 DOW_OSS DAG_L3 16.195266 32.446335 11 2 \n", - "66 DAH_L4 DOW_OSS DAH_L4 16.848583 31.944067 11 3 \n", - "67 DAJ_L5 DOW_OSS DAJ_L5 17.501899 31.441800 11 4 \n", - "\n", - " cable_length bury_speed \n", - "0 \n", - "1 0 0 \n", - "2 0 0 \n", - "3 0 0 \n", - "4 0 0 \n", - ".. ... ... \n", - "63 0 0 \n", - "64 0 0 \n", - "65 0 0 \n", - "66 0 0 \n", - "67 0 0 \n", - "\n", - "[68 rows x 9 columns]" + "source": [ + "dudgeon_array_no_data" ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = pd.read_csv(\"../library/cables/dudgeon_distance_based.csv\", index_col=False).fillna(\"\")\n", - "df" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### For this case we also add the `distance` argument to the `array_system_design` and set it to `True` to indicate we are dealing with distances." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'array_system_design': {'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", - " 'distance': True,\n", - " 'location_data': 'dudgeon_distance_based'},\n", - " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", - " 'site': {'depth': 20},\n", - " 'turbine': 'SWT_6MW_154m_110m'}\n" - ] - } - ], - "source": [ - "config = library.extract_library_specs(\"config\", \"example_custom_array_simple_distance_based\")\n", - "pprint(config)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### OR we can create the flag in the function call.\n", - "\n", - "**Note:** the configuration dictionary will always override this setting." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "array_distance = CustomArraySystemDesign(config, distance=True)\n", - "array_distance.run()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Let's take a look at the data to see what it output\n", - "\n", - "While some of the cable lengths may be slightly different, the spacing is still maintained, and we can see that this is the Dudgeon windfarm." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtAAAALICAYAAABW0sdqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOzdd5icZfn28e+ZDaEkoYhgECLFmlBNABEboggCC4iKBSwIqAgEklFQVAREsG0CqIA0aXZfIBlEVPCnUiQkRKQEsCCKFEHpSE3O94/nCSYxZWd3dp+Z2fNzHBzI7ky4JJvdc+657uuSbSIiIiIioneGVV1AREREREQ7SYCOiIiIiGhAAnRERERERAMSoCMiIiIiGpAAHRERERHRgAToiIiIiIgGJEBHRERERDQgAToiIiIiogEJ0BERERERDUiAjoiIiIhoQAJ0REREREQDEqAjIiIiIhqQAB0RERER0YAE6IiIiIiIBiRAR0REREQ0IAE6IiIiIqIBCdAREREREQ1IgI6IiIiIaEACdEREREREAxKgIyIiIiIakAAdEREREdGABOiIiIiIiAYkQEdERERENCABOiIiIiKiAQnQERERERENSICOiIiIiGhAAnRERERERAMSoCMiIiIiGpAAHRERERHRgAToiIiIiIgGJEBHRERERDQgAToiIiIiogEJ0BERERERDUiAjoiIiIhoQAJ0REREREQDEqAjIiIiIhqQAB0RERER0YAE6IiIiIiIBiRAR0REREQ0IAE6IiIiIqIBCdAREREREQ1IgI6IiIiIaEACdEREREREAxKgIyIiIiIakAAdEREREdGABOiIiIiIiAYkQEdERERENCABOiIiIiKiAQnQERERERENSICOiIiIiGhAAnRERERERAMSoCMiIiIiGpAAHRERERHRgAToiIiIiIgGJEBHW1KtPka1elcvH9ulWn3MQNcUERERQ0MCdLSdMjjPAGaqVp+wnMdOBGYC03sbuCMiIiKWZXjVBUT0wfrAOsB6wCzV6icBR7mn+/EFD1CtPho4FphE8ULxrvJ5dwx+uREREdFJcgIdbcc93XcA44Fp5YcmA3NVq+8GoFp9d2AucFj5+anA+PJ5EREREf0i21XXENFnZQvH6cDEJXx6NvAx93TPGdyqIiIiopPlBDraWhmOXwMcusgn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2GKArqurG9e9e/e+3bp1+7impsaLVqKIiIiISEo0NDTY7Nmz+82cOXMcMKjp7ataVd6+W7dunyo8i4iIiEi1qKmp8W7dus0h7ML4ghZXoMP92x6e6+e/Uzf/hUs3XPbxsx196ad11m6dZXXr77Cwc58TP6zttMmytn49EREREZFSSjJws4vNqwrQbbJ45oOd5j19Xo8lsx5aFwwaFttnt73zr4b5z/2pZ/vue81Z+8tnvNeh+14LCvnYIiIiIiKlULCDgfOevbDrR//Zf9sl7927Hg1LrHF4BqBhcQ0NS2zJuxPX++g/+28779kLuxbqsUVERERESqUgK9Dznr2w69ynzt6M+kWtCOQO9Ytq5j519mYAa+9w2geFqEFEREREpBTWeAV68cwHO7U+PDeShOjFMx/qtKY1SHV68+OFdcvqG1p17bL6Bt78eGFBtyyJiIhIdVrjAD3v6fN6UL949b5O/eKaec+c170td3nllVfa7bvvvl/q1avX9pttttn2xxxzzGaLFi2yuXPn1gwaNGjLbbbZpl/v3r23GzBgwLZz5sypATjttNO6b7311ttts802/fr06dPvvvvu67xa9UpqLKtv4LvjJvXeKfdQ3/++9lGLL8IefvXDTjvlHur7vasmbd3awA0wc+bM2j59+vTr06dPv65du+640UYbfXn5/1+0aJGt+ivAgQceuOUNN9ywXtPP33fffZ2PPfbYzVpdjIiIiKTGGgXo+vnv1IUDg6vb5c5ZMvPB9eoXvNuqlcGGhgYOOuigrQcNGvTJG2+88dxrr7323Pz582uGDh3a8/zzz99oo402Wvriiy9Oe+mll56/+uqrX2/fvr1PnDix87/+9a/1nn322WkvvvjitPvvv//FrbbaaslqFiwp8eIH89vPnr+k3fOz5nba65JH+h73t6c3nbNw6Qr/nj9euLTm2Fuf2mzvvzza9/lZczvNnrek3YsfzG/f2sfo3r17/YwZM6bNmDFj2tFHHz178ODBs5b//7XWWmuV/+iXLl260tu+8Y1vzL/qqqveam0tIm3x8ssvt+vZs+cOs2bNqgWYPXt2bc+ePXf4xz/+sXbv3r23a3r9oYceukXPnj136NOnT79+/fr1nThxYuemn+/Tp0+/nXfeuU9LjzthwoQuffr06bf11ltvN3DgwG0BFixYYDvssEPfbbfdtt/WW2+9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\n", - "text/plain": [ - "
" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Case 2: Standard straight-line distance for cable lengths\n", + "\n", + "Here we have the turbine and offshore substation locations that were extracted from the data source in the header but nothing specific regarding the actual cable lengths or the cable burial speeds for each section." ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "array_distance.plot_array_system(show=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Now let's look at the cost for this cabling setup by each type of cable as well as the total cost and compare it to the previous case\n", - "\n", - "While there is a minor difference, this difference is small in comparison to the total project cost and errs in a more conservative direction." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cable Type | Cost in USD (lat,lon) | Cost in USD (dist_lat,dist_lon)\n", - "XLPE_400mm_33kV | $ 19,868,788.44 | $ 19,926,147.66\n", - "XLPE_630mm_33kV | $ 5,462,877.30 | $ 5,479,206.87\n", - "Total | $ 25,331,665.74 | $ 25,405,354.53\n" - ] - } - ], - "source": [ - "print(f\"{'Cable Type':<16} | {'Cost in USD (lat,lon)':>20} | {'Cost in USD (dist_lat,dist_lon)':>15}\")\n", - "for (cable1, cost1), (cable2, cost2) in zip(array.cost_by_type.items(), array_distance.cost_by_type.items()):\n", - " print(f\"{cable1:<16} | ${cost1:>20,.2f} | ${cost2:>15,.2f}\")\n", - " \n", - "print(f\"{'Total':<16} | ${array.total_cable_cost:>20,.2f} | ${array_distance.total_cable_cost:>15,.2f}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Case 4: We want to account for some additions to the cable lengths due to exclusion zones\n", - "\n", - "This can be done with the `\"average_exclusion_percent\"` keyword in the configuration that can be seen below.\n", - "\n", - "**Note:**\n", - " 1. There is an average exclusion and is applied to each of the cable sections\n", - " 2. The plot won't change because it will not have details on the new paths so we'll only demonstrate the cost changes (a 4.8% increase, which is in line with the exclusion and the accounting for the site depth." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'array_system_design': {'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", + " 'location_data': 'dudgeon_array'},\n", + " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", + " 'site': {'depth': 20},\n", + " 'turbine': 'SWT_6MW_154m_110m'}\n" + ] + } + ], + "source": [ + "config = library.extract_library_specs(\"config\", \"example_custom_array_simple\")\n", + "pprint(config)" + ] + }, { - "data": { - "text/plain": [ - "{'array_system_design': {'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", - " 'location_data': 'dudgeon_array',\n", - " 'average_exclusion_percent': 0.05},\n", - " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", - " 'site': {'depth': 20},\n", - " 'turbine': 'SWT_6MW_154m_110m'}" + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "array = CustomArraySystemDesign(config)\n", + "array.run()" ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "config = library.extract_library_specs(\"config\", \"example_custom_array_exclusions\")\n", - "config" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "array_exclusion = CustomArraySystemDesign(config)\n", - "array_exclusion.run()" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cable Type | Cost in USD\n", - "XLPE_400mm_33kV | $ 20,826,227.86\n", - "XLPE_630mm_33kV | $ 5,729,721.17\n", - "Total | $ 26,555,949.03\n" - ] - } - ], - "source": [ - "print(f\"{'Cable Type':<16}| {'Cost in USD':>15}\")\n", - "for cable, cost in array_exclusion.cost_by_type.items():\n", - " print(f\"{cable:<16}| ${cost:>15,.2f}\")\n", - " \n", - "print(f\"{'Total':<16}| ${array_exclusion.total_cable_cost:>15,.2f}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Case 5: Customize the distances \n", - "\n", - "If we look at the map in the [Call to Mariners](http://dudgeonoffshorewind.co.uk/news/notices/Dudgeon%20-%20Notice%20to%20Mariners%20wk25.pdf) there are different sized exclusions in the cables, so for this example we'll change the distances from [Case 4](#case_4) where we used an average exclusion to be a bit different in each case by using the `cable_length` column. In addition, we will utilize the `bury_speed` column to demonstrate how these columns will be used.\n", - "\n", - "**Note:** this work was done outside the notebook, but can be uploaded as show in the example below.\n", - "\n", - "For this example, half of the windfarm 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 in the final two examples." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Let's take a look at the data to see what it output\n", + "\n", + "**NOTE**: Here the cable length and bury speed are still set to 0 to indicate that they are unknown" + ] + }, { - "data": { - "text/plain": [ - "{'array_system_design': {'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", - " 'location_data': 'dudgeon_custom'},\n", - " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", - " 'site': {'depth': 20},\n", - " 'turbine': 'SWT_6MW_154m_110m'}" + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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KIEWEREREUmAEmgRERERkQRkhB2AiIiISCV4ESgkWKAiUqU0B1pEREREJAEq4RARERERSYASaBERERGRBCiBFhERERFJgBJoEREREZEEKIEWEREREUmAEmgRERERkQQogRYRERERSYASaBERERGRBCiBFhERERFJgBJoEREREZEEKIEWEREREUmAEmgRERERkQQogRYRERERSYASaBERERGRBCiBFhERERFJgBJoEREREZEEKIEWEREREUmAEmgRERERkQQogRYRERERSYASaBERERGRBCiBFhERERFJgBJoEREREZEEKIEWEREREUmAEmgRERERkQQogRYRERERSYASaBERERGRBCiBFhERERFJgBJoEREREZEEKIEWEREREUmAEmgRERERkQQogRYRERERSYASaBERERGRBCiBFhERERFJgBJoEREREZEEKIEWEREREUmAEmgRERERkQQogRYRERERSYASaBERERGRBGTs68pZs2a1zMjImAD0RMm2iIiIiKSGEmBeUVHRZX379v2y7JX7TKAzMjImZGVldW/RosW6tLQ0r7IQRUREREQioqSkxFavXp1TWFg4ARhY9vr9nSr3bNGixddKnkVEREQkVaSlpXmLFi02EFRh7GGfJ9DB/RNPnos3fZ6xaeEDzYrWza3rO77OsFqNijIO6bWlfvbVa9LrtSlK9POJiIiIiFSneA5c7mHz/hLohGwrfLPeNx/e2Xr7qqmNwaBkm+267vN/lWyaN6Zt7awTNzT41i++yMw6cXNlPraIiIiISHWotMbAb+aObr72lQHdtn/xnyaUbLfSyTMAJdvSKNlu21e+2mTtKwO6fTN3dPPKemwRERERkepSKSfQ38wd3XzjB7e3p3hrBRJyh+KtaRs/uL09QINeI7+qjBhERERERKrDQZ9Abyt8s17Fk+dS4kn0tsKp9Q42BklNn67bklFUXFKh2xYVl/Dpui2VWrIkIiIiqemgE+hvPryzNcXbDuzzFG9L+2bOnVmJ3OXjjz+udeqppx7esWPHnu3bt+956aWXtt+6datt3LgxbeDAgYd27do1p0uXLj369u3bbcOGDWkAI0eOzOrcuXOPrl275mRnZ+e89tpr9Q8oXomMouISfjBhepc++VO7v/3J2n2+CHtr6Zp6ffKndj9z4vTOFU24AQoLC9Ozs7NzsrOzc5o3b967ZcuW39r5961bt9r+PwMMGjTo0CeeeKJJ2ctfe+21+kOHDm1f4WBEREQkMg4qgS7e9HlG0DB4oFPunO2FbzYp3ryyQieDJSUlnHXWWZ0HDhy4fvny5fM++eSTeZs2bUobPnx427vuuqtly5YtdyxatGj+4sWLP3r00UeX1a5d21999dX6//rXv5rMnTt3/qJFi+a//vrriw477LDtBxiwRMSirzbVXr1pe62PVm2sd+If3ul+2TMfttuwZcdu38/rtuxIG/r0B+1P+uO07h+t2lhv9Tfbay36alPtij5GVlZWcUFBwfyCgoL5Q4YMWX3llVeu2vn3OnXq7PebfseOHXu97pRTTtk0ceLEFRWNRSQRS5YsqdW2bdteq1atSgdYvXp1etu2bXu99NJLDbp06dKj7O3POeecTm3btu2VnZ2dk5OT0/3VV1+tX/by7OzsnCOOOCJ7X4/74osvNszOzs7p3Llzj379+nUD2Lx5s/Xq1at7t27dcjp37txjxIgRbXbeftWqVen9+/fv0rFjx579+/fvsnr16vTK/Zco375iGj58eJudhy3HHXdcl2XLltUCGDduXLMhQ4Z0KPv/26dPn93+TXbs2EGzZs16L1++vFZ1/L9IcgvruQrw5ptv1ktPT+/72GOPHbLzskmTJjXq1KlTzw4dOvS85ZZbdh1w6rm6p4NKoDctfKAZVOggbh/MNxU80Kwit4zFYg0zMzNLhg8fvgYgIyODBx98cMXTTz/dfNmyZZlt27bdlbH07t17W926df3zzz+v1bRp06K6des6QOvWrYs6deq098xGkkJOq4bbF4w8ed7QYzqsApg4/dNW2aNf7/GXWZ81Bnhy1mdNuo9+veej761oCXDZMR1WFYw8+aOcVg0P+sXTvHnzMrOzs3N2/v2WW27Juummm1oD9O3bt9t1113X9qijjuo2atSolgD//Oc/G/Xt27dbp06dej7zzDONAF544YWGp5122uEAw4YNa3Peeed17NevX7d27dr1GjVqVIudn3v8+PHNevXq1T07Ozvnoosu6lBcXHyw4Us1MrO+VfFnf4/buXPnHZdeeumX119/fTuA4cOHtxsyZMjqzp077/X7/8477/ysoKBg/p133vn51Vdf3bHs5QUFBfPff//9gr3d/6uvvkofPnx4h1gstmTJkiUfvfDCCx8D1KlTx99+++2FCxcunP/RRx/N/89//tPoP//5T32A2267rfVJJ520cfny5fNOOumkjb/61a8SekfyQO0npsJFixbNLygomH/GGWdsuOWWW1rv7fOcccYZGwsLC2svXLhw1wvzyZMnN+rateuWjh076veM7FcYz1WAoqIiRo4c2e7444/fUPqyESNGdPjHP/6xaNGiRR8999xzTWfNmlUH9Fwtz0El0EXr5tbdY9pGokq2pRWtn1u3IjedO3du3d69e+82/q5p06YlrVu33j5kyJA148ePz+rTp0/2sGHD2sydOzcT4Kyzzvp65cqVtTt16tTzoosu6vDSSy81OKh4JTIOqVurZMJ5vT9785rjFvRo1XBz4cZttS/66/udLS/W9+K/vn/4qo3bavXIarj5zWuOW/DIeb0/a1y3VsXrNw7C119/nTZz5syFv/rVr74EWLlyZe333ntv4eTJkxcPGzas05YtW/Z4znz88cd13nrrrUXTp09fMHr06LZFRUXMmDGjzuTJk5vMnj17QUFBwfzi4mJ75JFHmlbH/4Mkv1/+8pdfzpo1q/6vf/3rlu+9916D2267bVVF7jdgwICNK1asyEz08SZMmND0Bz/4wbouXbpsB2jbtm0RQFpaGo0bNy4B2L59uxUVFZlZ8BT45z//2eSKK65YA3DFFVesefnllw+B4ATptNNOO/yUU07p3LZt21533XVXi9tvv71V9+7dc3r37p2987Tu6KOP7jZ06ND2Rx11VLfDDjusx5tvvlnve9/73uEdO3bsOWzYsDblhMn+YmratOmunxObNm1K23l5aU899VTjPn36ZH/55ZcZZ5555trHH3981/Pyb3/7W9PBgwevTfTfT8IXxotdqP7nKsBdd93VctCgQeuaN2++azfHG2+8Ub9jx47bcnJyttepU8d/+MMfrp00aVIT0HO13NgO9I4AvuPrSmnK8u0V+zzujpnt8da5u9OsWbPiTz75ZO6IESMK165dm9G/f//us2fPrtO4ceOSefPmzb///vuXt2jRouiSSy45fNy4cRU68ZbkcPyhTTd/kHfCgt8M6LZbScSdZ3Rb8cENJyw4/tCm1Tpz/MILL9ztCXnOOeesS09Pp3fv3ttat269fd68eXv8wBswYMCGOnXqeNu2bYsaN25ctHLlyoyXX3650Zw5c+r36tUrJzs7O+fdd99t+PHHHx/QD0sJh7vPqoo/FXnszMxMHzVq1Ge33XZb+zFjxqyoSNkRwFNPPdWkS5cuW3b+/dZbb223823hgQMHHrq3+y1atKjOunXrMo4++uhuPXr06H7//ffv+jlbVFREdnZ2TqtWrXqfeOKJX59yyimbANasWZOx8/SnY8eOO9auXZtR6vPVfe6555bOmDFjwahRo9rWq1evZMGCBfOPOuqoTQ899NCuz127du2SmTNnLrz00ktXDx48uPMjjzzyaUFBwUdPP/1088LCwr2+zby3mACuu+66tllZWd+aNGlSszFjxqwsfb/HH3+8yZgxY7JeeeWVxa1bty66+OKL1z7//PNNAbZs2WKvv/5644svvnhdRf6tJVpS5bn6ySef1IrFYof87Gc/W1368hUrVtRu27btrpPvdu3abf/8889rg56r5TmoBNpqNaqUrYJWu2Kfp1evXls++OCD3RoA165dm1ZYWFi7e/fu2xo3blxyySWXrH/yySc/Pfvss9dOnjy5MQSlHmeeeebGe++9d+WYMWM+feGFFw4p/xEkWWWkp3Hrd7t+eV7vNl8BnNe7zVe/OK3rlxnplTbqfJdatWp5Scn/DrO3bt19Ak2DBg12O+ku+6KvvFfJmZmZu+6TlpbmO3bsMHfn/PPP/2rnW3LLli2bN2bMmC8q6/9Dar6XXnqpcYsWLXbMmTOnzv5uu/OX74QJE5pPnDhx2c7LS78tPGXKlE/2dv+ioiKbM2dOvVdffXXxq6++unjMmDGt58yZkwnBz+CCgoL5n3766ZzZs2fXnzFjxn7j6d+//8ZDDjmkpE2bNkUNGjQoHjx48HqAXr16bV62bNmuF5Jnn332eoDevXtv6dy585aOHTvuqFu3rrdv337b0qVL99rzsK+Yxo8f/3lhYeGcc889d82YMWNa7rx82rRpDfPz87NeeeWVxS1atCgGOPHEEzdv3rw57cMPP8ycNGlS4z59+mzaeZ1IRVXnc/Xqq69uf/fdd3+WkbH72aX7nnl7eYeWZaXqc/WgsouMQ3ptIS3zQDsI4xFklmQ06bVl/zeEgQMHbty6dWvazpONoqIirr766vaDBw/+6t133627s6h969attmjRojqdOnXa/uGHH2buLOcAeP/99+u2a9dOTYQ1VNvGdXaU/lgV2rdvv2P16tW1Vq9enb5582b797//3Xhft3/uueealpSUMGfOnMwvvviids+ePbdV5HHOOOOMjZMnT276xRdfZEAwFWTx4sUVboKU1DZt2rS6U6dObfTOO+8UPPjgg6321yiz85fvtGnTFvfr129roo/Xrl277aeeeurXjRo1KmndunXRMcccs3HmzJm7Tchp3rx58fHHH78xFos1BmjWrFnRzriWL19eq2nTprsOU2rXrr3rd0taWho7T+XS0tIoKira9Sq09OWZmZm73af07fambEylXXrppWtffPHFXQcuHTp02LZp06b0efPm7ZbknHXWWWsff/zxpk8//XTTH/3oRyrfkIRU93N1zpw59YcMGXJY27Zte7388suH5OXldXjiiSeadOjQYdeJM8Bnn31Wu02bNjtAz9XyHFQCXb/bVWsOfALHTm71s69aU5FbpqWl8cILLyx5/vnnD+nYsWPPQw89tGdmZmbJuHHjPl+0aFGd4447rlvXrl1zevbsmdOnT5/Nl1xyybqvv/46fciQIYcefvjhPbp27ZpTUFBQd/To0Sv3/2gi5atXr54PHz68sG/fvt2/+93vdu7ates+XwAedthhW/v169dt4MCBXcaNG7esom/PHX300VtuvvnmlSeffHLXrl275px66qldV66s2MQaSW0lJSVcffXVHceMGbOiS5cu26+99tpV1113XbuqfMxzzz13/bvvvttgx44dbNy4Me39999v0KtXry0rV67M+Oqrr9IBvvnmG3vjjTcade/efSvA6aefvn7nW7wPPfRQswEDBqyvyhh32ldMpQ9cnn322SaHH374rud3u3bttj/33HNLLr300kNnzpy56xfzkCFD1k6aNKnZtGnTGp5//vnV8v8gNUMYz9XPP/987s4/Z5xxxrr8/PxPL7744vUnnnjipmXLltUpKCiovXXrVnv++eebnnPOOetBz9XyHNQv4/T6bYtqtzphw/Yv/tPkwBJpo3bWievT67WpcClI586dd7z22mtLyl5+7bXXrrn22mv3SMS/853vbN5fN6rI/owdO3a3F1233377qttvv32PRo9Zs2YtLP33yZMnl/s22llnnbXxrLPO2ggwbty43T73J5988tHO/77yyivXXnnllTrRkoSMHTu2edu2bbefffbZXwOMHDnyy969e3dfsmRJ7U8++SSzVatW39p521GjRu1znOKtt97abvTo0bu62z/44IMF5b0IPPLII7eedtppG7Kzs3ukpaVx8cUXr+7Xr9/W6dOn1/3JT35yaHFxMe5ugwYNWnv++edvALjjjju+OPvssw/v2LFj8zZt2mzfObmjqq1YsaLW3mK68cYb2y1durSOmXm7du22T5w4cXnp+/bu3Xvb448/vvRHP/rR4VOmTFnSo0ePbX379t1ap06dkl69em1u1KhRtTQrS80QxnN1b2rVqkV+fv6nAwYM6FpcXMwFF1zw1VFHHbUV9Fwtj5VX87LThx9+uKx37977XLW9rfDNemtfGdAt4U2EAOl1Spp+918LM7NOqNYmL6m5bpj8UZt7py5tPeKEw74YO6iH3mkQERGRA/bhhx827927d6eylx90h1Vm1ombG/a5fQXpdRLL5NPrlDTsc/sKJc8iIiIikkwqpZ6yQa+RXwFs/OD29sFa7329Y2CQnlnSsM/tK3beT0REksN9993X7IEHHmhV+rJ+/fp988QTT3waVkx7U1hYmH7SSSd1K3v5G2+8sTArK0uTMqRG03O1ah10CUdp2wqn1vtmzp1Z2wvfbALmlGz73wl3WmYJuNXOOnF9g2/dWqiTZ6kKUz9eU++/y9fVP7bjIZtOOLyZvsdERETkgO2thKNSO/ozs07YnJn176XFm1dmbCp4oFnR+rl1ffvXGVa7UVFGk15b6mdftSaRhkGRRJ1weLPNSpxFRESkKlXJSKz0em2KGh35mwqtohQRERERSSb7ayIsKSkp2e9waxERERGRmiSeA5c7JGN/CfS81atXN1YSLSIiIiKpoqSkxFavXt0YmFfe9fss4SgqKrqssLBwQmFhYU8qYeSdiIiIiEgSKAHmFRUVXVbelfucwiEiIiIiIrvTqbKIiIiISAKUQIuIiIiIJEAJtIiIiIhIApRAi4iIiIgkQAm0iIiIiEgC/h+/rXFdPBWc1gAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "array.plot_array_system(show=True)" ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "config = library.extract_library_specs(\"config\", \"example_custom_array_custom\")\n", - "\n", - "# Note location_data the same one that was saved because I updated it!\n", - "config" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "array_custom = CustomArraySystemDesign(config)\n", - "array_custom.run()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Note that there are now cable lengths defined as well as burial speeds for installation" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idsubstation_idsubstation_namesubstation_latitudesubstation_longitudeturbine_nameturbine_latitudeturbine_longitudestringordercable_lengthbury_speed
0DAE_A1DOW_OSSDOW_OSS53.26481.378767DAE_A153.2439501.358783003.1352790.50
1DAD_A2DOW_OSSDOW_OSS53.26481.378767DAD_A253.2484671.349033010.9938600.50
2DAC_A3DOW_OSSDOW_OSS53.26481.378767DAC_A353.2529831.339283020.9937190.50
3DAB_A4DOW_OSSDOW_OSS53.26481.378767DAB_A453.2575001.329550030.9926990.50
4DAA_A5DOW_OSSDOW_OSS53.26481.378767DAA_A553.2620171.319800040.9936730.50
.......................................
62DCE_L1DOW_OSSDOW_OSS53.26481.378767DCE_L153.2517831.3688331101.7128220.05
63DAF_L2DOW_OSSDOW_OSS53.26481.378767DAF_L253.2394331.3685331111.4833180.05
64DAG_L3DOW_OSSDOW_OSS53.26481.378767DAG_L353.2349171.3782501120.9017210.05
65DAH_L4DOW_OSSDOW_OSS53.26481.378767DAH_L453.2304001.3880001130.9036790.05
66DAJ_L5DOW_OSSDOW_OSS53.26481.378767DAJ_L553.2258831.3977501140.9037360.05
\n", - "

67 rows × 12 columns

\n", - "
" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### It should be noted here that the the latitude and longitude here are WGS-84 decimal coordinates" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idsubstation_idsubstation_namesubstation_latitudesubstation_longitudeturbine_nameturbine_latitudeturbine_longitudestringordercable_lengthbury_speed
0DAE_A1DOW_OSSDOW_OSS53.26481.378767DAE_A153.2439501.358783000.00.0
1DAD_A2DOW_OSSDOW_OSS53.26481.378767DAD_A253.2484671.349033010.00.0
2DAC_A3DOW_OSSDOW_OSS53.26481.378767DAC_A353.2529831.339283020.00.0
3DAB_A4DOW_OSSDOW_OSS53.26481.378767DAB_A453.2575001.329550030.00.0
4DAA_A5DOW_OSSDOW_OSS53.26481.378767DAA_A553.2620171.319800040.00.0
.......................................
57DCE_L1DOW_OSSDOW_OSS53.26481.378767DCE_L153.2517831.3688331100.00.0
58DAF_L2DOW_OSSDOW_OSS53.26481.378767DAF_L253.2394331.3685331110.00.0
59DAG_L3DOW_OSSDOW_OSS53.26481.378767DAG_L353.2349171.3782501120.00.0
60DAH_L4DOW_OSSDOW_OSS53.26481.378767DAH_L453.2304001.3880001130.00.0
61DAJ_L5DOW_OSSDOW_OSS53.26481.378767DAJ_L553.2258831.3977501140.00.0
\n", + "

67 rows \u00d7 12 columns

\n", + "
" + ], + "text/plain": [ + " id substation_id substation_name substation_latitude \\\n", + "0 DAE_A1 DOW_OSS DOW_OSS 53.2648 \n", + "1 DAD_A2 DOW_OSS DOW_OSS 53.2648 \n", + "2 DAC_A3 DOW_OSS DOW_OSS 53.2648 \n", + "3 DAB_A4 DOW_OSS DOW_OSS 53.2648 \n", + "4 DAA_A5 DOW_OSS DOW_OSS 53.2648 \n", + ".. ... ... ... ... \n", + "57 DCE_L1 DOW_OSS DOW_OSS 53.2648 \n", + "58 DAF_L2 DOW_OSS DOW_OSS 53.2648 \n", + "59 DAG_L3 DOW_OSS DOW_OSS 53.2648 \n", + "60 DAH_L4 DOW_OSS DOW_OSS 53.2648 \n", + "61 DAJ_L5 DOW_OSS DOW_OSS 53.2648 \n", + "\n", + " substation_longitude turbine_name turbine_latitude turbine_longitude \\\n", + "0 1.378767 DAE_A1 53.243950 1.358783 \n", + "1 1.378767 DAD_A2 53.248467 1.349033 \n", + "2 1.378767 DAC_A3 53.252983 1.339283 \n", + "3 1.378767 DAB_A4 53.257500 1.329550 \n", + "4 1.378767 DAA_A5 53.262017 1.319800 \n", + ".. ... ... ... ... \n", + "57 1.378767 DCE_L1 53.251783 1.368833 \n", + "58 1.378767 DAF_L2 53.239433 1.368533 \n", + "59 1.378767 DAG_L3 53.234917 1.378250 \n", + "60 1.378767 DAH_L4 53.230400 1.388000 \n", + "61 1.378767 DAJ_L5 53.225883 1.397750 \n", + "\n", + " string order cable_length bury_speed \n", + "0 0 0 0.0 0.0 \n", + "1 0 1 0.0 0.0 \n", + "2 0 2 0.0 0.0 \n", + "3 0 3 0.0 0.0 \n", + "4 0 4 0.0 0.0 \n", + ".. ... ... ... ... \n", + "57 11 0 0.0 0.0 \n", + "58 11 1 0.0 0.0 \n", + "59 11 2 0.0 0.0 \n", + "60 11 3 0.0 0.0 \n", + "61 11 4 0.0 0.0 \n", + "\n", + "[67 rows x 12 columns]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " id substation_id substation_name substation_latitude \\\n", - "0 DAE_A1 DOW_OSS DOW_OSS 53.2648 \n", - "1 DAD_A2 DOW_OSS DOW_OSS 53.2648 \n", - "2 DAC_A3 DOW_OSS DOW_OSS 53.2648 \n", - "3 DAB_A4 DOW_OSS DOW_OSS 53.2648 \n", - "4 DAA_A5 DOW_OSS DOW_OSS 53.2648 \n", - ".. ... ... ... ... \n", - "62 DCE_L1 DOW_OSS DOW_OSS 53.2648 \n", - "63 DAF_L2 DOW_OSS DOW_OSS 53.2648 \n", - "64 DAG_L3 DOW_OSS DOW_OSS 53.2648 \n", - "65 DAH_L4 DOW_OSS DOW_OSS 53.2648 \n", - "66 DAJ_L5 DOW_OSS DOW_OSS 53.2648 \n", - "\n", - " substation_longitude turbine_name turbine_latitude turbine_longitude \\\n", - "0 1.378767 DAE_A1 53.243950 1.358783 \n", - "1 1.378767 DAD_A2 53.248467 1.349033 \n", - "2 1.378767 DAC_A3 53.252983 1.339283 \n", - "3 1.378767 DAB_A4 53.257500 1.329550 \n", - "4 1.378767 DAA_A5 53.262017 1.319800 \n", - ".. ... ... ... ... \n", - "62 1.378767 DCE_L1 53.251783 1.368833 \n", - "63 1.378767 DAF_L2 53.239433 1.368533 \n", - "64 1.378767 DAG_L3 53.234917 1.378250 \n", - "65 1.378767 DAH_L4 53.230400 1.388000 \n", - "66 1.378767 DAJ_L5 53.225883 1.397750 \n", - "\n", - " string order cable_length bury_speed \n", - "0 0 0 3.135279 0.50 \n", - "1 0 1 0.993860 0.50 \n", - "2 0 2 0.993719 0.50 \n", - "3 0 3 0.992699 0.50 \n", - "4 0 4 0.993673 0.50 \n", - ".. ... ... ... ... \n", - "62 11 0 1.712822 0.05 \n", - "63 11 1 1.483318 0.05 \n", - "64 11 2 0.901721 0.05 \n", - "65 11 3 0.903679 0.05 \n", - "66 11 4 0.903736 0.05 \n", - "\n", - "[67 rows x 12 columns]" + "source": [ + "array.location_data" ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "array_custom.location_data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### See also that the costs have increased again!" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cable Type | Cost in USD\n", - "XLPE_400mm_33kV | $ 22,269,793.09\n", - "XLPE_630mm_33kV | $ 5,355,606.02\n", - "Total | $ 27,625,399.10\n" - ] - } - ], - "source": [ - "print(f\"{'Cable Type':<16}| {'Cost in USD':>15}\")\n", - "for cable, cost in array_custom.cost_by_type.items():\n", - " print(f\"{cable:<16}| ${cost:>15,.2f}\")\n", - " \n", - "print(f\"{'Total':<16}| ${array_custom.total_cable_cost:>15,.2f}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "# Let's run some simulations!\n", - "We can now compare cases 2-4 to see how the installation cost will vary." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### First, we have to create a configuration dictionary for each of the 3 main cases we'll be simulating for installations, corresponding to the configuration file from the tests library. Then, we'll update eeach with the `design_result` of each of the 3 cases that we defined above." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "base_config = library.extract_library_specs(\"config\", \"example_array_cable_install\")\n", - "\n", - "#Case 2\n", - "array_case2 = deepcopy(base_config)\n", - "array_case2[\"array_system\"] = array.design_result[\"array_system\"]\n", - "\n", - "# Case 3\n", - "array_case3 = deepcopy(base_config)\n", - "array_case3[\"array_system\"] = array_distance.design_result[\"array_system\"]\n", - "\n", - "# Case 4\n", - "array_case4 = deepcopy(base_config)\n", - "array_case4[\"array_system\"] = array_exclusion.design_result[\"array_system\"]\n", - "\n", - "# Case 5\n", - "array_case5 = deepcopy(base_config)\n", - "array_case5[\"array_system\"] = array_custom.design_result[\"array_system\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Instantiate the simulations" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "sim2 = ArrayCableInstallation(array_case2)\n", - "sim3 = ArrayCableInstallation(array_case3)\n", - "sim4 = ArrayCableInstallation(array_case4)\n", - "sim5 = ArrayCableInstallation(array_case5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Run the simulations\n", - "\n", - "We can see that both the installation cost and the time required to complete the simulation have all increased here, which corresponds to the increased cable lengths and changes to the burial speeds defined above." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Now let's look at the cost for this cabling setup by each type of cable as well as the total cost" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Simulation | Cost (in USD) | Time (in hours)\n", - "straight-line distance | $11,444,455.51 | 2,211\n", - "distance-based coordinates | $11,447,877.14 | 2,212\n", - "with exclusions | $11,501,377.80 | 2,222\n", - "custom | $15,600,938.01 | 3,040\n" - ] - } - ], - "source": [ - "names = (\"straight-line distance\", \"distance-based coordinates\", \"with exclusions\", \"custom\")\n", - "simulations = (sim2, sim3, sim4, sim5)\n", - "\n", - "print(f\"{'Simulation':<26} | {'Cost (in USD)':>14} | {'Time (in hours)':>16}\")\n", - "for name, simulation in zip(names, simulations):\n", - " simulation.run()\n", - " cost = simulation.installation_capex\n", - " time = simulation.total_phase_time\n", - " print(f\"{name:<26} | ${cost:>13,.2f} | {time:>16,.0f}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Let's put this all together\n", - "\n", - "#### Using `ProjectManager` we will run Case 4 from design to installation.\n", - "\n", - "We'll see here at the end that we end up with the same results running a custom array cabling project piecemeal and as a whole." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cable Type | Cost in USD\n", + "XLPE_400mm_33kV | $ 19,868,788.44\n", + "XLPE_630mm_33kV | $ 5,462,877.30\n", + "Total | $ 25,331,665.74\n" + ] + } + ], + "source": [ + "print(f\"{'Cable Type':<16}| {'Cost in USD':>15}\")\n", + "for cable, cost in array.cost_by_type.items():\n", + " print(f\"{cable:<16}| ${cost:>15,.2f}\")\n", + " \n", + "print(f\"{'Total':<16}| ${array.total_cable_cost:>15,.2f}\")" + ] + }, { - "data": { - "text/plain": [ - "{'design_phases': ['CustomArraySystemDesign'],\n", - " 'install_phases': ['ArrayCableInstallation'],\n", - " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", - " 'port': {'monthly_rate': 10000},\n", - " 'site': {'depth': 20, 'distance': 50},\n", - " 'turbine': 'SWT_6MW_154m_110m',\n", - " 'array_system_design': {'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", - " 'location_data': 'dudgeon_custom',\n", - " 'distance': False},\n", - " 'array_cable_install_vessel': 'example_cable_lay_vessel',\n", - " 'array_cable_bury_vessel': 'example_cable_lay_vessel'}" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Case 3: Distance-based \"coordinate\" system\n", + "\n", + "In this case, we will consider each turbine and substation on a distance-based \"coordinate\" system where the longitude and latitude are the longitudinal (x direction) and latitudinal (y direction) **distances**, in kilometers, from a common reference point. We are still using the Dudgeon data, but the distances were computed outside of this example and the details are not be included.\n", + "\n", + "Below, we can see that the input file is still encoded in the exact same manner as [Case 2](#case_2), but latitude and longitude are relative distances and not proper coordinates." ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "config = library.extract_library_specs(\"config\", \"example_custom_array_project_manager\")\n", - "config" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "project = ProjectManager(config)\n", - "project.run()" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idsubstation_idnamelongitudelatitudestringordercable_lengthbury_speed
0DOW_OSSDOW_OSSDOW_OSS16.22990935.769173
1DAE_A1DOW_OSSDAE_A114.89084533.4507590000
2DAD_A2DOW_OSSDAD_A214.23752833.9530260100
3DAC_A3DOW_OSSDAC_A313.58421134.4551820200
4DAB_A4DOW_OSSDAB_A412.93203434.9574500300
..............................
63DCE_L1DOW_OSSDCE_L115.56426334.32174911000
64DAF_L2DOW_OSSDAF_L215.54416132.94849111100
65DAG_L3DOW_OSSDAG_L316.19526632.44633511200
66DAH_L4DOW_OSSDAH_L416.84858331.94406711300
67DAJ_L5DOW_OSSDAJ_L517.50189931.44180011400
\n", + "

68 rows \u00d7 9 columns

\n", + "
" + ], + "text/plain": [ + " id substation_id name longitude latitude string order \\\n", + "0 DOW_OSS DOW_OSS DOW_OSS 16.229909 35.769173 \n", + "1 DAE_A1 DOW_OSS DAE_A1 14.890845 33.450759 0 0 \n", + "2 DAD_A2 DOW_OSS DAD_A2 14.237528 33.953026 0 1 \n", + "3 DAC_A3 DOW_OSS DAC_A3 13.584211 34.455182 0 2 \n", + "4 DAB_A4 DOW_OSS DAB_A4 12.932034 34.957450 0 3 \n", + ".. ... ... ... ... ... ... ... \n", + "63 DCE_L1 DOW_OSS DCE_L1 15.564263 34.321749 11 0 \n", + "64 DAF_L2 DOW_OSS DAF_L2 15.544161 32.948491 11 1 \n", + "65 DAG_L3 DOW_OSS DAG_L3 16.195266 32.446335 11 2 \n", + "66 DAH_L4 DOW_OSS DAH_L4 16.848583 31.944067 11 3 \n", + "67 DAJ_L5 DOW_OSS DAJ_L5 17.501899 31.441800 11 4 \n", + "\n", + " cable_length bury_speed \n", + "0 \n", + "1 0 0 \n", + "2 0 0 \n", + "3 0 0 \n", + "4 0 0 \n", + ".. ... ... \n", + "63 0 0 \n", + "64 0 0 \n", + "65 0 0 \n", + "66 0 0 \n", + "67 0 0 \n", + "\n", + "[68 rows x 9 columns]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv(\"../library/cables/dudgeon_distance_based.csv\", index_col=False).fillna(\"\")\n", + "df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### For this case we also add the `distance` argument to the `array_system_design` and set it to `True` to indicate we are dealing with distances." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'array_system_design': {'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", + " 'distance': True,\n", + " 'location_data': 'dudgeon_distance_based'},\n", + " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", + " 'site': {'depth': 20},\n", + " 'turbine': 'SWT_6MW_154m_110m'}\n" + ] + } + ], + "source": [ + "config = library.extract_library_specs(\"config\", \"example_custom_array_simple_distance_based\")\n", + "pprint(config)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### OR we can create the flag in the function call.\n", + "\n", + "**Note:** the configuration dictionary will always override this setting." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "array_distance = CustomArraySystemDesign(config, distance=True)\n", + "array_distance.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Let's take a look at the data to see what it output\n", + "\n", + "While some of the cable lengths may be slightly different, the spacing is still maintained, and we can see that this is the Dudgeon windfarm." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtAAAALICAYAAABW0sdqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOzdd5icZfn28e+ZDaEkoYhgECLFmlBNABEboggCC4iKBSwIqAgEklFQVAREsG0CqIA0aXZfIBlEVPCnUiQkRKQEsCCKFEHpSE3O94/nCSYxZWd3dp+Z2fNzHBzI7ky4JJvdc+657uuSbSIiIiIioneGVV1AREREREQ7SYCOiIiIiGhAAnRERERERAMSoCMiIiIiGpAAHRERERHRgAToiIiIiIgGJEBHRERERDQgAToiIiIiogEJ0BERERERDUiAjoiIiIhoQAJ0REREREQDEqAjIiIiIhqQAB0RERER0YAE6IiIiIiIBiRAR0REREQ0IAE6IiIiIqIBCdAREREREQ1IgI6IiIiIaEACdEREREREAxKgIyIiIiIakAAdEREREdGABOiIiIiIiAYkQEdERERENCABOiIiIiKiAQnQERERERENSICOiIiIiGhAAnRERERERAMSoCMiIiIiGpAAHRERERHRgAToiIiIiIgGJEBHRERERDQgAToiIiIiogEJ0BERERERDUiAjoiIiIhoQAJ0REREREQDEqAjIiIiIhqQAB0RERER0YAE6IiIiIiIBiRAR0REREQ0IAE6IiIiIqIBCdAREREREQ1IgI6IiIiIaEACdEREREREAxKgIyIiIiIakAAdEREREdGABOiIiIiIiAYkQEdERERENCABOiIiIiKiAQnQERERERENSICOiIiIiGhAAnRERERERAMSoCMiIiIiGpAAHRERERHRgAToiIiIiIgGJEBHW1KtPka1elcvH9ulWn3MQNcUERERQ0MCdLSdMjjPAGaqVp+wnMdOBGYC03sbuCMiIiKWZXjVBUT0wfrAOsB6wCzV6icBR7mn+/EFD1CtPho4FphE8ULxrvJ5dwx+uREREdFJcgIdbcc93XcA44Fp5YcmA3NVq+8GoFp9d2AucFj5+anA+PJ5EREREf0i21XXENFnZQvH6cDEJXx6NvAx93TPGdyqIiIiopPlBDraWhmOXwMcusgn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2GKArqurG9e9e/e+3bp1+7impsaLVqKIiIiISEo0NDTY7Nmz+82cOXMcMKjp7ataVd6+W7dunyo8i4iIiEi1qKmp8W7dus0h7ML4ghZXoMP92x6e6+e/Uzf/hUs3XPbxsx196ad11m6dZXXr77Cwc58TP6zttMmytn49EREREZFSSjJws4vNqwrQbbJ45oOd5j19Xo8lsx5aFwwaFttnt73zr4b5z/2pZ/vue81Z+8tnvNeh+14LCvnYIiIiIiKlULCDgfOevbDrR//Zf9sl7927Hg1LrHF4BqBhcQ0NS2zJuxPX++g/+28779kLuxbqsUVERERESqUgK9Dznr2w69ynzt6M+kWtCOQO9Ytq5j519mYAa+9w2geFqEFEREREpBTWeAV68cwHO7U+PDeShOjFMx/qtKY1SHV68+OFdcvqG1p17bL6Bt78eGFBtyyJiIhIdVrjAD3v6fN6UL949b5O/eKaec+c170td3nllVfa7bvvvl/q1avX9pttttn2xxxzzGaLFi2yuXPn1gwaNGjLbbbZpl/v3r23GzBgwLZz5sypATjttNO6b7311ttts802/fr06dPvvvvu67xa9UpqLKtv4LvjJvXeKfdQ3/++9lGLL8IefvXDTjvlHur7vasmbd3awA0wc+bM2j59+vTr06dPv65du+640UYbfXn5/1+0aJGt+ivAgQceuOUNN9ywXtPP33fffZ2PPfbYzVpdjIiIiKTGGgXo+vnv1IUDg6vb5c5ZMvPB9eoXvNuqlcGGhgYOOuigrQcNGvTJG2+88dxrr7323Pz582uGDh3a8/zzz99oo402Wvriiy9Oe+mll56/+uqrX2/fvr1PnDix87/+9a/1nn322WkvvvjitPvvv//FrbbaaslqFiwp8eIH89vPnr+k3fOz5nba65JH+h73t6c3nbNw6Qr/nj9euLTm2Fuf2mzvvzza9/lZczvNnrek3YsfzG/f2sfo3r17/YwZM6bNmDFj2tFHHz178ODBs5b//7XWWmuV/+iXLl260tu+8Y1vzL/qqqveam0tIm3x8ssvt+vZs+cOs2bNqgWYPXt2bc+ePXf4xz/+sXbv3r23a3r9oYceukXPnj136NOnT79+/fr1nThxYuemn+/Tp0+/nXfeuU9LjzthwoQuffr06bf11ltvN3DgwG0BFixYYDvssEPfbbfdtt/WW2+9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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "array_distance.plot_array_system(show=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Now let's look at the cost for this cabling setup by each type of cable as well as the total cost and compare it to the previous case\n", + "\n", + "While there is a minor difference, this difference is small in comparison to the total project cost and errs in a more conservative direction." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cable Type | Cost in USD (lat,lon) | Cost in USD (dist_lat,dist_lon)\n", + "XLPE_400mm_33kV | $ 19,868,788.44 | $ 19,926,147.66\n", + "XLPE_630mm_33kV | $ 5,462,877.30 | $ 5,479,206.87\n", + "Total | $ 25,331,665.74 | $ 25,405,354.53\n" + ] + } + ], + "source": [ + "print(f\"{'Cable Type':<16} | {'Cost in USD (lat,lon)':>20} | {'Cost in USD (dist_lat,dist_lon)':>15}\")\n", + "for (cable1, cost1), (cable2, cost2) in zip(array.cost_by_type.items(), array_distance.cost_by_type.items()):\n", + " print(f\"{cable1:<16} | ${cost1:>20,.2f} | ${cost2:>15,.2f}\")\n", + " \n", + "print(f\"{'Total':<16} | ${array.total_cable_cost:>20,.2f} | ${array_distance.total_cable_cost:>15,.2f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Case 4: We want to account for some additions to the cable lengths due to exclusion zones\n", + "\n", + "This can be done with the `\"average_exclusion_percent\"` keyword in the configuration that can be seen below.\n", + "\n", + "**Note:**\n", + " 1. There is an average exclusion and is applied to each of the cable sections\n", + " 2. The plot won't change because it will not have details on the new paths so we'll only demonstrate the cost changes (a 4.8% increase, which is in line with the exclusion and the accounting for the site depth." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'array_system_design': {'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", + " 'location_data': 'dudgeon_array',\n", + " 'average_exclusion_percent': 0.05},\n", + " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", + " 'site': {'depth': 20},\n", + " 'turbine': 'SWT_6MW_154m_110m'}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "config = library.extract_library_specs(\"config\", \"example_custom_array_exclusions\")\n", + "config" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "array_exclusion = CustomArraySystemDesign(config)\n", + "array_exclusion.run()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cable Type | Cost in USD\n", + "XLPE_400mm_33kV | $ 20,826,227.86\n", + "XLPE_630mm_33kV | $ 5,729,721.17\n", + "Total | $ 26,555,949.03\n" + ] + } + ], + "source": [ + "print(f\"{'Cable Type':<16}| {'Cost in USD':>15}\")\n", + "for cable, cost in array_exclusion.cost_by_type.items():\n", + " print(f\"{cable:<16}| ${cost:>15,.2f}\")\n", + " \n", + "print(f\"{'Total':<16}| ${array_exclusion.total_cable_cost:>15,.2f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Case 5: Customize the distances \n", + "\n", + "If we look at the map in the [Call to Mariners](http://dudgeonoffshorewind.co.uk/news/notices/Dudgeon%20-%20Notice%20to%20Mariners%20wk25.pdf) there are different sized exclusions in the cables, so for this example we'll change the distances from [Case 4](#case_4) where we used an average exclusion to be a bit different in each case by using the `cable_length` column. In addition, we will utilize the `bury_speed` column to demonstrate how these columns will be used.\n", + "\n", + "**Note:** this work was done outside the notebook, but can be uploaded as show in the example below.\n", + "\n", + "For this example, half of the windfarm 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 in the final two examples." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'array_system_design': {'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", + " 'location_data': 'dudgeon_custom'},\n", + " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", + " 'site': {'depth': 20},\n", + " 'turbine': 'SWT_6MW_154m_110m'}" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "config = library.extract_library_specs(\"config\", \"example_custom_array_custom\")\n", + "\n", + "# Note location_data the same one that was saved because I updated it!\n", + "config" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "array_custom = CustomArraySystemDesign(config)\n", + "array_custom.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Note that there are now cable lengths defined as well as burial speeds for installation" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idsubstation_idsubstation_namesubstation_latitudesubstation_longitudeturbine_nameturbine_latitudeturbine_longitudestringordercable_lengthbury_speed
0DAE_A1DOW_OSSDOW_OSS53.26481.378767DAE_A153.2439501.358783003.1352790.50
1DAD_A2DOW_OSSDOW_OSS53.26481.378767DAD_A253.2484671.349033010.9938600.50
2DAC_A3DOW_OSSDOW_OSS53.26481.378767DAC_A353.2529831.339283020.9937190.50
3DAB_A4DOW_OSSDOW_OSS53.26481.378767DAB_A453.2575001.329550030.9926990.50
4DAA_A5DOW_OSSDOW_OSS53.26481.378767DAA_A553.2620171.319800040.9936730.50
.......................................
62DCE_L1DOW_OSSDOW_OSS53.26481.378767DCE_L153.2517831.3688331101.7128220.05
63DAF_L2DOW_OSSDOW_OSS53.26481.378767DAF_L253.2394331.3685331111.4833180.05
64DAG_L3DOW_OSSDOW_OSS53.26481.378767DAG_L353.2349171.3782501120.9017210.05
65DAH_L4DOW_OSSDOW_OSS53.26481.378767DAH_L453.2304001.3880001130.9036790.05
66DAJ_L5DOW_OSSDOW_OSS53.26481.378767DAJ_L553.2258831.3977501140.9037360.05
\n", + "

67 rows \u00d7 12 columns

\n", + "
" + ], + "text/plain": [ + " id substation_id substation_name substation_latitude \\\n", + "0 DAE_A1 DOW_OSS DOW_OSS 53.2648 \n", + "1 DAD_A2 DOW_OSS DOW_OSS 53.2648 \n", + "2 DAC_A3 DOW_OSS DOW_OSS 53.2648 \n", + "3 DAB_A4 DOW_OSS DOW_OSS 53.2648 \n", + "4 DAA_A5 DOW_OSS DOW_OSS 53.2648 \n", + ".. ... ... ... ... \n", + "62 DCE_L1 DOW_OSS DOW_OSS 53.2648 \n", + "63 DAF_L2 DOW_OSS DOW_OSS 53.2648 \n", + "64 DAG_L3 DOW_OSS DOW_OSS 53.2648 \n", + "65 DAH_L4 DOW_OSS DOW_OSS 53.2648 \n", + "66 DAJ_L5 DOW_OSS DOW_OSS 53.2648 \n", + "\n", + " substation_longitude turbine_name turbine_latitude turbine_longitude \\\n", + "0 1.378767 DAE_A1 53.243950 1.358783 \n", + "1 1.378767 DAD_A2 53.248467 1.349033 \n", + "2 1.378767 DAC_A3 53.252983 1.339283 \n", + "3 1.378767 DAB_A4 53.257500 1.329550 \n", + "4 1.378767 DAA_A5 53.262017 1.319800 \n", + ".. ... ... ... ... \n", + "62 1.378767 DCE_L1 53.251783 1.368833 \n", + "63 1.378767 DAF_L2 53.239433 1.368533 \n", + "64 1.378767 DAG_L3 53.234917 1.378250 \n", + "65 1.378767 DAH_L4 53.230400 1.388000 \n", + "66 1.378767 DAJ_L5 53.225883 1.397750 \n", + "\n", + " string order cable_length bury_speed \n", + "0 0 0 3.135279 0.50 \n", + "1 0 1 0.993860 0.50 \n", + "2 0 2 0.993719 0.50 \n", + "3 0 3 0.992699 0.50 \n", + "4 0 4 0.993673 0.50 \n", + ".. ... ... ... ... \n", + "62 11 0 1.712822 0.05 \n", + "63 11 1 1.483318 0.05 \n", + "64 11 2 0.901721 0.05 \n", + "65 11 3 0.903679 0.05 \n", + "66 11 4 0.903736 0.05 \n", + "\n", + "[67 rows x 12 columns]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "array_custom.location_data" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Custom Design | $27,625,399.10\n", - "Custom Installation | $15,600,938.01\n", - "Total Cost. | $43,226,337.11\n", - "Project Manager Cost | $43,226,337.11\n" - ] + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### See also that the costs have increased again!" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cable Type | Cost in USD\n", + "XLPE_400mm_33kV | $ 22,269,793.09\n", + "XLPE_630mm_33kV | $ 5,355,606.02\n", + "Total | $ 27,625,399.10\n" + ] + } + ], + "source": [ + "print(f\"{'Cable Type':<16}| {'Cost in USD':>15}\")\n", + "for cable, cost in array_custom.cost_by_type.items():\n", + " print(f\"{cable:<16}| ${cost:>15,.2f}\")\n", + " \n", + "print(f\"{'Total':<16}| ${array_custom.total_cable_cost:>15,.2f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Let's run some simulations!\n", + "We can now compare cases 2-4 to see how the installation cost will vary." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### First, we have to create a configuration dictionary for each of the 3 main cases we'll be simulating for installations, corresponding to the configuration file from the tests library. Then, we'll update eeach with the `design_result` of each of the 3 cases that we defined above." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "base_config = library.extract_library_specs(\"config\", \"example_array_cable_install\")\n", + "\n", + "#Case 2\n", + "array_case2 = deepcopy(base_config)\n", + "array_case2[\"array_system\"] = array.design_result[\"array_system\"]\n", + "\n", + "# Case 3\n", + "array_case3 = deepcopy(base_config)\n", + "array_case3[\"array_system\"] = array_distance.design_result[\"array_system\"]\n", + "\n", + "# Case 4\n", + "array_case4 = deepcopy(base_config)\n", + "array_case4[\"array_system\"] = array_exclusion.design_result[\"array_system\"]\n", + "\n", + "# Case 5\n", + "array_case5 = deepcopy(base_config)\n", + "array_case5[\"array_system\"] = array_custom.design_result[\"array_system\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Instantiate the simulations" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "sim2 = ArrayCableInstallation(array_case2)\n", + "sim3 = ArrayCableInstallation(array_case3)\n", + "sim4 = ArrayCableInstallation(array_case4)\n", + "sim5 = ArrayCableInstallation(array_case5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Run the simulations\n", + "\n", + "We can see that both the installation cost and the time required to complete the simulation have all increased here, which corresponds to the increased cable lengths and changes to the burial speeds defined above." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Simulation | Cost (in USD) | Time (in hours)\n", + "straight-line distance | $11,444,455.51 | 2,211\n", + "distance-based coordinates | $11,447,877.14 | 2,212\n", + "with exclusions | $11,501,377.80 | 2,222\n", + "custom | $15,600,938.01 | 3,040\n" + ] + } + ], + "source": [ + "names = (\"straight-line distance\", \"distance-based coordinates\", \"with exclusions\", \"custom\")\n", + "simulations = (sim2, sim3, sim4, sim5)\n", + "\n", + "print(f\"{'Simulation':<26} | {'Cost (in USD)':>14} | {'Time (in hours)':>16}\")\n", + "for name, simulation in zip(names, simulations):\n", + " simulation.run()\n", + " cost = simulation.installation_capex\n", + " time = simulation.total_phase_time\n", + " print(f\"{name:<26} | ${cost:>13,.2f} | {time:>16,.0f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Let's put this all together\n", + "\n", + "#### Using `ProjectManager` we will run Case 4 from design to installation.\n", + "\n", + "We'll see here at the end that we end up with the same results running a custom array cabling project piecemeal and as a whole." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'design_phases': ['CustomArraySystemDesign'],\n", + " 'install_phases': ['ArrayCableInstallation'],\n", + " 'plant': {'layout': 'custom', 'num_turbines': 67},\n", + " 'port': {'monthly_rate': 10000},\n", + " 'site': {'depth': 20, 'distance': 50},\n", + " 'turbine': 'SWT_6MW_154m_110m',\n", + " 'array_system_design': {'cables': ['XLPE_400mm_33kV', 'XLPE_630mm_33kV'],\n", + " 'location_data': 'dudgeon_custom',\n", + " 'distance': False},\n", + " 'array_cable_install_vessel': 'example_cable_lay_vessel',\n", + " 'array_cable_bury_vessel': 'example_cable_lay_vessel'}" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "config = library.extract_library_specs(\"config\", \"example_custom_array_project_manager\")\n", + "config" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "project = ProjectManager(config)\n", + "project.run()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Custom Design | $27,625,399.10\n", + "Custom Installation | $15,600,938.01\n", + "Total Cost. | $43,226,337.11\n", + "Project Manager Cost | $43,226,337.11\n" + ] + } + ], + "source": [ + "total = array_custom.total_cable_cost + sim5.installation_capex\n", + "\n", + "print(f\"Custom Design | ${array_custom.total_cable_cost:>13,.2f}\")\n", + "print(f\"Custom Installation | ${sim5.installation_capex:>13,.2f}\")\n", + "print(f\"Total Cost. | ${total:>13,.2f}\")\n", + "print(f\"Project Manager Cost | ${project.bos_capex:>13,.2f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" } - ], - "source": [ - "total = array_custom.total_cable_cost + sim5.installation_capex\n", - "\n", - "print(f\"Custom Design | ${array_custom.total_cable_cost:>13,.2f}\")\n", - "print(f\"Custom Installation | ${sim5.installation_capex:>13,.2f}\")\n", - "print(f\"Total Cost. | ${total:>13,.2f}\")\n", - "print(f\"Project Manager Cost | ${project.bos_capex:>13,.2f}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/examples/Example - Dependent Phases.ipynb b/examples/Example - Dependent Phases.ipynb index 8e2c2a74..8b5ae593 100644 --- a/examples/Example - Dependent Phases.ipynb +++ b/examples/Example - Dependent Phases.ipynb @@ -1,908 +1,908 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### ORBIT Example - Dependent Phases\n", - "\n", - "Last Updated: 07/28/2020\n", - "\n", - "The start times for phases in ORBIT can be defined relative to other phases. This is often used to simulate an installation phase that is dependent on an earlier installation phase. For example, the turbine installation for fixed bottom substructures can't happen until the substructures are installed. The phases can be scheduled such that the turbine installation starts when 50% of the monopiles have been installed." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "from ORBIT import ProjectManager" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Simple Configuration" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# For this example we will start with a simple project with only two phases:\n", - "# - MonopileInstallation\n", - "# - TurbineInstallation\n", - "\n", - "# In the config below, the installation phases are defined in a list. They will run\n", - "# in the code sequentially. ie, TurbineInstallation will start at the timestep that\n", - "# MonopileInstallation ends.\n", - "\n", - "config = {\n", - " \"site\": {\n", - " \"depth\": 20,\n", - " \"distance\": 40\n", - " },\n", - " \n", - " \"plant\": {\"num_turbines\": 50},\n", - " \"turbine\": \"SWT_6MW_154m_110m\",\n", - " \"port\": {\"num_cranes\": 1},\n", - " \n", - " \"monopile\": {\n", - " \"unit_cost\": 5e6,\n", - " \"length\": 80,\n", - " \"diameter\": 8,\n", - " \"deck_space\": 1000,\n", - " \"mass\": 1000,\n", - " },\n", - " \n", - " \"transition_piece\": {\n", - " \"unit_cost\": 3e6,\n", - " \"deck_space\": 300,\n", - " \"mass\": 500,\n", - " },\n", - " \n", - " \"MonopileInstallation\": {\"wtiv\": \"example_wtiv\"},\n", - " \"TurbineInstallation\": {\"wtiv\": \"example_wtiv\"},\n", - " \n", - " 'install_phases': ['MonopileInstallation', 'TurbineInstallation']\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ORBIT Example - Dependent Phases\n", + "\n", + "Last Updated: 07/28/2020\n", + "\n", + "The start times for phases in ORBIT can be defined relative to other phases. This is often used to simulate an installation phase that is dependent on an earlier installation phase. For example, the turbine installation for fixed bottom substructures can't happen until the substructures are installed. The phases can be scheduled such that the turbine installation starts when 50% of the monopiles have been installed." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from ORBIT import ProjectManager" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Simple Configuration" + ] + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cost_multiplieragentactiondurationcostleveltimephasesite_depthhub_heightphase_name
780NaNWTIVCrane Reequip1.07500.0ACTION2021.85MonopileInstallation20.0110.0MonopileInstallation
781NaNWTIVLower TP1.07500.0ACTION2022.85MonopileInstallation20.0110.0MonopileInstallation
782NaNWTIVBolt TP4.030000.0ACTION2026.85MonopileInstallation20.0110.0MonopileInstallation
783NaNWTIVJackdown0.32250.0ACTION2027.15MonopileInstallation20.0110.0MonopileInstallation
7841.0WTIVMobilize168.01260000.0ACTION2028.00TurbineInstallationNaNNaNNaN
785NaNWTIVFasten Tower Section4.030000.0ACTION2032.00TurbineInstallation20.0110.0TurbineInstallation
786NaNWTIVFasten Tower Section4.030000.0ACTION2036.00TurbineInstallation20.0110.0TurbineInstallation
787NaNWTIVFasten Nacelle4.030000.0ACTION2040.00TurbineInstallation20.0110.0TurbineInstallation
788NaNWTIVFasten Blade1.511250.0ACTION2041.50TurbineInstallation20.0110.0TurbineInstallation
789NaNWTIVFasten Blade1.511250.0ACTION2043.00TurbineInstallation20.0110.0TurbineInstallation
790NaNWTIVFasten Blade1.511250.0ACTION2044.50TurbineInstallation20.0110.0TurbineInstallation
791NaNWTIVFasten Tower Section4.030000.0ACTION2048.50TurbineInstallation20.0110.0TurbineInstallation
792NaNWTIVFasten Tower Section4.030000.0ACTION2052.50TurbineInstallation20.0110.0TurbineInstallation
793NaNWTIVFasten Nacelle4.030000.0ACTION2056.50TurbineInstallation20.0110.0TurbineInstallation
794NaNWTIVFasten Blade1.511250.0ACTION2058.00TurbineInstallation20.0110.0TurbineInstallation
795NaNWTIVFasten Blade1.511250.0ACTION2059.50TurbineInstallation20.0110.0TurbineInstallation
796NaNWTIVFasten Blade1.511250.0ACTION2061.00TurbineInstallation20.0110.0TurbineInstallation
797NaNWTIVFasten Tower Section4.030000.0ACTION2065.00TurbineInstallation20.0110.0TurbineInstallation
798NaNWTIVFasten Tower Section4.030000.0ACTION2069.00TurbineInstallation20.0110.0TurbineInstallation
799NaNWTIVFasten Nacelle4.030000.0ACTION2073.00TurbineInstallation20.0110.0TurbineInstallation
\n", - "
" + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# For this example we will start with a simple project with only two phases:\n", + "# - MonopileInstallation\n", + "# - TurbineInstallation\n", + "\n", + "# In the config below, the installation phases are defined in a list. They will run\n", + "# in the code sequentially. ie, TurbineInstallation will start at the timestep that\n", + "# MonopileInstallation ends.\n", + "\n", + "config = {\n", + " \"site\": {\n", + " \"depth\": 20,\n", + " \"distance\": 40\n", + " },\n", + " \n", + " \"plant\": {\"num_turbines\": 50},\n", + " \"turbine\": \"SWT_6MW_154m_110m\",\n", + " \"port\": {\"num_cranes\": 1},\n", + " \n", + " \"monopile\": {\n", + " \"unit_cost\": 5e6,\n", + " \"length\": 80,\n", + " \"diameter\": 8,\n", + " \"deck_space\": 1000,\n", + " \"mass\": 1000,\n", + " },\n", + " \n", + " \"transition_piece\": {\n", + " \"unit_cost\": 3e6,\n", + " \"deck_space\": 300,\n", + " \"mass\": 500,\n", + " },\n", + " \n", + " \"MonopileInstallation\": {\"wtiv\": \"example_wtiv\"},\n", + " \"TurbineInstallation\": {\"wtiv\": \"example_wtiv\"},\n", + " \n", + " 'install_phases': ['MonopileInstallation', 'TurbineInstallation']\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cost_multiplieragentactiondurationcostleveltimephasesite_depthhub_heightphase_name
780NaNWTIVCrane Reequip1.07500.0ACTION2021.85MonopileInstallation20.0110.0MonopileInstallation
781NaNWTIVLower TP1.07500.0ACTION2022.85MonopileInstallation20.0110.0MonopileInstallation
782NaNWTIVBolt TP4.030000.0ACTION2026.85MonopileInstallation20.0110.0MonopileInstallation
783NaNWTIVJackdown0.32250.0ACTION2027.15MonopileInstallation20.0110.0MonopileInstallation
7841.0WTIVMobilize168.01260000.0ACTION2028.00TurbineInstallationNaNNaNNaN
785NaNWTIVFasten Tower Section4.030000.0ACTION2032.00TurbineInstallation20.0110.0TurbineInstallation
786NaNWTIVFasten Tower Section4.030000.0ACTION2036.00TurbineInstallation20.0110.0TurbineInstallation
787NaNWTIVFasten Nacelle4.030000.0ACTION2040.00TurbineInstallation20.0110.0TurbineInstallation
788NaNWTIVFasten Blade1.511250.0ACTION2041.50TurbineInstallation20.0110.0TurbineInstallation
789NaNWTIVFasten Blade1.511250.0ACTION2043.00TurbineInstallation20.0110.0TurbineInstallation
790NaNWTIVFasten Blade1.511250.0ACTION2044.50TurbineInstallation20.0110.0TurbineInstallation
791NaNWTIVFasten Tower Section4.030000.0ACTION2048.50TurbineInstallation20.0110.0TurbineInstallation
792NaNWTIVFasten Tower Section4.030000.0ACTION2052.50TurbineInstallation20.0110.0TurbineInstallation
793NaNWTIVFasten Nacelle4.030000.0ACTION2056.50TurbineInstallation20.0110.0TurbineInstallation
794NaNWTIVFasten Blade1.511250.0ACTION2058.00TurbineInstallation20.0110.0TurbineInstallation
795NaNWTIVFasten Blade1.511250.0ACTION2059.50TurbineInstallation20.0110.0TurbineInstallation
796NaNWTIVFasten Blade1.511250.0ACTION2061.00TurbineInstallation20.0110.0TurbineInstallation
797NaNWTIVFasten Tower Section4.030000.0ACTION2065.00TurbineInstallation20.0110.0TurbineInstallation
798NaNWTIVFasten Tower Section4.030000.0ACTION2069.00TurbineInstallation20.0110.0TurbineInstallation
799NaNWTIVFasten Nacelle4.030000.0ACTION2073.00TurbineInstallation20.0110.0TurbineInstallation
\n", + "
" + ], + "text/plain": [ + " cost_multiplier agent action duration cost level \\\n", + "780 NaN WTIV Crane Reequip 1.0 7500.0 ACTION \n", + "781 NaN WTIV Lower TP 1.0 7500.0 ACTION \n", + "782 NaN WTIV Bolt TP 4.0 30000.0 ACTION \n", + "783 NaN WTIV Jackdown 0.3 2250.0 ACTION \n", + "784 1.0 WTIV Mobilize 168.0 1260000.0 ACTION \n", + "785 NaN WTIV Fasten Tower Section 4.0 30000.0 ACTION \n", + "786 NaN WTIV Fasten Tower Section 4.0 30000.0 ACTION \n", + "787 NaN WTIV Fasten Nacelle 4.0 30000.0 ACTION \n", + "788 NaN WTIV Fasten Blade 1.5 11250.0 ACTION \n", + "789 NaN WTIV Fasten Blade 1.5 11250.0 ACTION \n", + "790 NaN WTIV Fasten Blade 1.5 11250.0 ACTION \n", + "791 NaN WTIV Fasten Tower Section 4.0 30000.0 ACTION \n", + "792 NaN WTIV Fasten Tower Section 4.0 30000.0 ACTION \n", + "793 NaN WTIV Fasten Nacelle 4.0 30000.0 ACTION \n", + "794 NaN WTIV Fasten Blade 1.5 11250.0 ACTION \n", + "795 NaN WTIV Fasten Blade 1.5 11250.0 ACTION \n", + "796 NaN WTIV Fasten Blade 1.5 11250.0 ACTION \n", + "797 NaN WTIV Fasten Tower Section 4.0 30000.0 ACTION \n", + "798 NaN WTIV Fasten Tower Section 4.0 30000.0 ACTION \n", + "799 NaN WTIV Fasten Nacelle 4.0 30000.0 ACTION \n", + "\n", + " time phase site_depth hub_height \\\n", + "780 2021.85 MonopileInstallation 20.0 110.0 \n", + "781 2022.85 MonopileInstallation 20.0 110.0 \n", + "782 2026.85 MonopileInstallation 20.0 110.0 \n", + "783 2027.15 MonopileInstallation 20.0 110.0 \n", + "784 2028.00 TurbineInstallation NaN NaN \n", + "785 2032.00 TurbineInstallation 20.0 110.0 \n", + "786 2036.00 TurbineInstallation 20.0 110.0 \n", + "787 2040.00 TurbineInstallation 20.0 110.0 \n", + "788 2041.50 TurbineInstallation 20.0 110.0 \n", + "789 2043.00 TurbineInstallation 20.0 110.0 \n", + "790 2044.50 TurbineInstallation 20.0 110.0 \n", + "791 2048.50 TurbineInstallation 20.0 110.0 \n", + "792 2052.50 TurbineInstallation 20.0 110.0 \n", + "793 2056.50 TurbineInstallation 20.0 110.0 \n", + "794 2058.00 TurbineInstallation 20.0 110.0 \n", + "795 2059.50 TurbineInstallation 20.0 110.0 \n", + "796 2061.00 TurbineInstallation 20.0 110.0 \n", + "797 2065.00 TurbineInstallation 20.0 110.0 \n", + "798 2069.00 TurbineInstallation 20.0 110.0 \n", + "799 2073.00 TurbineInstallation 20.0 110.0 \n", + "\n", + " phase_name \n", + "780 MonopileInstallation \n", + "781 MonopileInstallation \n", + "782 MonopileInstallation \n", + "783 MonopileInstallation \n", + "784 NaN \n", + "785 TurbineInstallation \n", + "786 TurbineInstallation \n", + "787 TurbineInstallation \n", + "788 TurbineInstallation \n", + "789 TurbineInstallation \n", + "790 TurbineInstallation \n", + "791 TurbineInstallation \n", + "792 TurbineInstallation \n", + "793 TurbineInstallation \n", + "794 TurbineInstallation \n", + "795 TurbineInstallation \n", + "796 TurbineInstallation \n", + "797 TurbineInstallation \n", + "798 TurbineInstallation \n", + "799 TurbineInstallation " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " cost_multiplier agent action duration cost level \\\n", - "780 NaN WTIV Crane Reequip 1.0 7500.0 ACTION \n", - "781 NaN WTIV Lower TP 1.0 7500.0 ACTION \n", - "782 NaN WTIV Bolt TP 4.0 30000.0 ACTION \n", - "783 NaN WTIV Jackdown 0.3 2250.0 ACTION \n", - "784 1.0 WTIV Mobilize 168.0 1260000.0 ACTION \n", - "785 NaN WTIV Fasten Tower Section 4.0 30000.0 ACTION \n", - "786 NaN WTIV Fasten Tower Section 4.0 30000.0 ACTION \n", - "787 NaN WTIV Fasten Nacelle 4.0 30000.0 ACTION \n", - "788 NaN WTIV Fasten Blade 1.5 11250.0 ACTION \n", - "789 NaN WTIV Fasten Blade 1.5 11250.0 ACTION \n", - "790 NaN WTIV Fasten Blade 1.5 11250.0 ACTION \n", - "791 NaN WTIV Fasten Tower Section 4.0 30000.0 ACTION \n", - "792 NaN WTIV Fasten Tower Section 4.0 30000.0 ACTION \n", - "793 NaN WTIV Fasten Nacelle 4.0 30000.0 ACTION \n", - "794 NaN WTIV Fasten Blade 1.5 11250.0 ACTION \n", - "795 NaN WTIV Fasten Blade 1.5 11250.0 ACTION \n", - "796 NaN WTIV Fasten Blade 1.5 11250.0 ACTION \n", - "797 NaN WTIV Fasten Tower Section 4.0 30000.0 ACTION \n", - "798 NaN WTIV Fasten Tower Section 4.0 30000.0 ACTION \n", - "799 NaN WTIV Fasten Nacelle 4.0 30000.0 ACTION \n", - "\n", - " time phase site_depth hub_height \\\n", - "780 2021.85 MonopileInstallation 20.0 110.0 \n", - "781 2022.85 MonopileInstallation 20.0 110.0 \n", - "782 2026.85 MonopileInstallation 20.0 110.0 \n", - "783 2027.15 MonopileInstallation 20.0 110.0 \n", - "784 2028.00 TurbineInstallation NaN NaN \n", - "785 2032.00 TurbineInstallation 20.0 110.0 \n", - "786 2036.00 TurbineInstallation 20.0 110.0 \n", - "787 2040.00 TurbineInstallation 20.0 110.0 \n", - "788 2041.50 TurbineInstallation 20.0 110.0 \n", - "789 2043.00 TurbineInstallation 20.0 110.0 \n", - "790 2044.50 TurbineInstallation 20.0 110.0 \n", - "791 2048.50 TurbineInstallation 20.0 110.0 \n", - "792 2052.50 TurbineInstallation 20.0 110.0 \n", - "793 2056.50 TurbineInstallation 20.0 110.0 \n", - "794 2058.00 TurbineInstallation 20.0 110.0 \n", - "795 2059.50 TurbineInstallation 20.0 110.0 \n", - "796 2061.00 TurbineInstallation 20.0 110.0 \n", - "797 2065.00 TurbineInstallation 20.0 110.0 \n", - "798 2069.00 TurbineInstallation 20.0 110.0 \n", - "799 2073.00 TurbineInstallation 20.0 110.0 \n", - "\n", - " phase_name \n", - "780 MonopileInstallation \n", - "781 MonopileInstallation \n", - "782 MonopileInstallation \n", - "783 MonopileInstallation \n", - "784 NaN \n", - "785 TurbineInstallation \n", - "786 TurbineInstallation \n", - "787 TurbineInstallation \n", - "788 TurbineInstallation \n", - "789 TurbineInstallation \n", - "790 TurbineInstallation \n", - "791 TurbineInstallation \n", - "792 TurbineInstallation \n", - "793 TurbineInstallation \n", - "794 TurbineInstallation \n", - "795 TurbineInstallation \n", - "796 TurbineInstallation \n", - "797 TurbineInstallation \n", - "798 TurbineInstallation \n", - "799 TurbineInstallation " + "source": [ + "project = ProjectManager(config)\n", + "project.run()\n", + "\n", + "df = pd.DataFrame(project.actions) # Return a table of all of the vessel actions that were performed throughout the project.\n", + "df.iloc[780:800] # Filter to rows 780-790 where the TurbineInstallation phase begins." ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "project = ProjectManager(config)\n", - "project.run()\n", - "\n", - "df = pd.DataFrame(project.actions) # Return a table of all of the vessel actions that were performed throughout the project.\n", - "df.iloc[780:800] # Filter to rows 780-790 where the TurbineInstallation phase begins." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Defining Dependent Phases" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "# In the new config below, the installation phases are defined in a dict.\n", - "# MonopileInstallation is set to begin at timestep 0, and TurbineInstallation\n", - "# will begin when MonopileInstallation is 50% complete.\n", - "\n", - "config = {\n", - " \"site\": {\n", - " \"depth\": 20,\n", - " \"distance\": 40\n", - " },\n", - " \n", - " \"plant\": {\"num_turbines\": 50},\n", - " \"turbine\": \"SWT_6MW_154m_110m\",\n", - " \"port\": {\"num_cranes\": 1},\n", - " \n", - " \"monopile\": {\n", - " \"unit_cost\": 5e6,\n", - " \"length\": 80,\n", - " \"diameter\": 8,\n", - " \"deck_space\": 1000,\n", - " \"mass\": 1000,\n", - " },\n", - " \n", - " \"transition_piece\": {\n", - " \"unit_cost\": 3e6,\n", - " \"deck_space\": 300,\n", - " \"mass\": 500,\n", - " },\n", - " \n", - " \"MonopileInstallation\": {\"wtiv\": \"example_wtiv\"},\n", - " \"TurbineInstallation\": {\"wtiv\": \"example_wtiv\"},\n", - " \n", - " 'install_phases': { # <--- 'install_phases' changed to a dict\n", - " \"MonopileInstallation\": 0, # <--- MonopileInstallation will start at timestep 0\n", - " \"TurbineInstallation\": (\"MonopileInstallation\", 0.25) # <--- TurbineInstallation will start when MonopileInstallation is 50% complete.\n", - " }\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Defining Dependent Phases" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# In the new config below, the installation phases are defined in a dict.\n", + "# MonopileInstallation is set to begin at timestep 0, and TurbineInstallation\n", + "# will begin when MonopileInstallation is 50% complete.\n", + "\n", + "config = {\n", + " \"site\": {\n", + " \"depth\": 20,\n", + " \"distance\": 40\n", + " },\n", + " \n", + " \"plant\": {\"num_turbines\": 50},\n", + " \"turbine\": \"SWT_6MW_154m_110m\",\n", + " \"port\": {\"num_cranes\": 1},\n", + " \n", + " \"monopile\": {\n", + " \"unit_cost\": 5e6,\n", + " \"length\": 80,\n", + " \"diameter\": 8,\n", + " \"deck_space\": 1000,\n", + " \"mass\": 1000,\n", + " },\n", + " \n", + " \"transition_piece\": {\n", + " \"unit_cost\": 3e6,\n", + " \"deck_space\": 300,\n", + " \"mass\": 500,\n", + " },\n", + " \n", + " \"MonopileInstallation\": {\"wtiv\": \"example_wtiv\"},\n", + " \"TurbineInstallation\": {\"wtiv\": \"example_wtiv\"},\n", + " \n", + " 'install_phases': { # <--- 'install_phases' changed to a dict\n", + " \"MonopileInstallation\": 0, # <--- MonopileInstallation will start at timestep 0\n", + " \"TurbineInstallation\": (\"MonopileInstallation\", 0.25) # <--- TurbineInstallation will start when MonopileInstallation is 50% complete.\n", + " }\n", + "}" + ] + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
cost_multiplieragentactiondurationcostleveltimephasesite_depthhub_heightphase_name
189NaNWTIVFasten Monopile12.090000.0ACTION498.8360MonopileInstallation20.0110.0MonopileInstallation
1901.0WTIVMobilize168.01260000.0ACTION506.7875TurbineInstallationNaNNaNNaN
191NaNWTIVFasten Transition Piece8.060000.0ACTION506.8360MonopileInstallation20.0110.0MonopileInstallation
192NaNWTIVFasten Tower Section4.030000.0ACTION510.7875TurbineInstallation20.0110.0TurbineInstallation
193NaNWTIVFasten Tower Section4.030000.0ACTION514.7875TurbineInstallation20.0110.0TurbineInstallation
....................................
2245NaNWTIVAttach Blade3.526250.0ACTION3943.3875TurbineInstallation20.0110.0TurbineInstallation
2246NaNWTIVRelease Blade1.07500.0ACTION3944.3875TurbineInstallationNaNNaNNaN
2247NaNWTIVLift Blade1.18250.0ACTION3945.4875TurbineInstallation20.0110.0TurbineInstallation
2248NaNWTIVAttach Blade3.526250.0ACTION3948.9875TurbineInstallation20.0110.0TurbineInstallation
2249NaNWTIVJackdown0.32250.0ACTION3949.2875TurbineInstallation20.0110.0TurbineInstallation
\n", - "

2061 rows × 11 columns

\n", - "
" + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cost_multiplieragentactiondurationcostleveltimephasesite_depthhub_heightphase_name
189NaNWTIVFasten Monopile12.090000.0ACTION498.8360MonopileInstallation20.0110.0MonopileInstallation
1901.0WTIVMobilize168.01260000.0ACTION506.7875TurbineInstallationNaNNaNNaN
191NaNWTIVFasten Transition Piece8.060000.0ACTION506.8360MonopileInstallation20.0110.0MonopileInstallation
192NaNWTIVFasten Tower Section4.030000.0ACTION510.7875TurbineInstallation20.0110.0TurbineInstallation
193NaNWTIVFasten Tower Section4.030000.0ACTION514.7875TurbineInstallation20.0110.0TurbineInstallation
....................................
2245NaNWTIVAttach Blade3.526250.0ACTION3943.3875TurbineInstallation20.0110.0TurbineInstallation
2246NaNWTIVRelease Blade1.07500.0ACTION3944.3875TurbineInstallationNaNNaNNaN
2247NaNWTIVLift Blade1.18250.0ACTION3945.4875TurbineInstallation20.0110.0TurbineInstallation
2248NaNWTIVAttach Blade3.526250.0ACTION3948.9875TurbineInstallation20.0110.0TurbineInstallation
2249NaNWTIVJackdown0.32250.0ACTION3949.2875TurbineInstallation20.0110.0TurbineInstallation
\n", + "

2061 rows \u00d7 11 columns

\n", + "
" + ], + "text/plain": [ + " cost_multiplier agent action duration cost \\\n", + "189 NaN WTIV Fasten Monopile 12.0 90000.0 \n", + "190 1.0 WTIV Mobilize 168.0 1260000.0 \n", + "191 NaN WTIV Fasten Transition Piece 8.0 60000.0 \n", + "192 NaN WTIV Fasten Tower Section 4.0 30000.0 \n", + "193 NaN WTIV Fasten Tower Section 4.0 30000.0 \n", + "... ... ... ... ... ... \n", + "2245 NaN WTIV Attach Blade 3.5 26250.0 \n", + "2246 NaN WTIV Release Blade 1.0 7500.0 \n", + "2247 NaN WTIV Lift Blade 1.1 8250.0 \n", + "2248 NaN WTIV Attach Blade 3.5 26250.0 \n", + "2249 NaN WTIV Jackdown 0.3 2250.0 \n", + "\n", + " level time phase site_depth hub_height \\\n", + "189 ACTION 498.8360 MonopileInstallation 20.0 110.0 \n", + "190 ACTION 506.7875 TurbineInstallation NaN NaN \n", + "191 ACTION 506.8360 MonopileInstallation 20.0 110.0 \n", + "192 ACTION 510.7875 TurbineInstallation 20.0 110.0 \n", + "193 ACTION 514.7875 TurbineInstallation 20.0 110.0 \n", + "... ... ... ... ... ... \n", + "2245 ACTION 3943.3875 TurbineInstallation 20.0 110.0 \n", + "2246 ACTION 3944.3875 TurbineInstallation NaN NaN \n", + "2247 ACTION 3945.4875 TurbineInstallation 20.0 110.0 \n", + "2248 ACTION 3948.9875 TurbineInstallation 20.0 110.0 \n", + "2249 ACTION 3949.2875 TurbineInstallation 20.0 110.0 \n", + "\n", + " phase_name \n", + "189 MonopileInstallation \n", + "190 NaN \n", + "191 MonopileInstallation \n", + "192 TurbineInstallation \n", + "193 TurbineInstallation \n", + "... ... \n", + "2245 TurbineInstallation \n", + "2246 NaN \n", + "2247 TurbineInstallation \n", + "2248 TurbineInstallation \n", + "2249 TurbineInstallation \n", + "\n", + "[2061 rows x 11 columns]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " cost_multiplier agent action duration cost \\\n", - "189 NaN WTIV Fasten Monopile 12.0 90000.0 \n", - "190 1.0 WTIV Mobilize 168.0 1260000.0 \n", - "191 NaN WTIV Fasten Transition Piece 8.0 60000.0 \n", - "192 NaN WTIV Fasten Tower Section 4.0 30000.0 \n", - "193 NaN WTIV Fasten Tower Section 4.0 30000.0 \n", - "... ... ... ... ... ... \n", - "2245 NaN WTIV Attach Blade 3.5 26250.0 \n", - "2246 NaN WTIV Release Blade 1.0 7500.0 \n", - "2247 NaN WTIV Lift Blade 1.1 8250.0 \n", - "2248 NaN WTIV Attach Blade 3.5 26250.0 \n", - "2249 NaN WTIV Jackdown 0.3 2250.0 \n", - "\n", - " level time phase site_depth hub_height \\\n", - "189 ACTION 498.8360 MonopileInstallation 20.0 110.0 \n", - "190 ACTION 506.7875 TurbineInstallation NaN NaN \n", - "191 ACTION 506.8360 MonopileInstallation 20.0 110.0 \n", - "192 ACTION 510.7875 TurbineInstallation 20.0 110.0 \n", - "193 ACTION 514.7875 TurbineInstallation 20.0 110.0 \n", - "... ... ... ... ... ... \n", - "2245 ACTION 3943.3875 TurbineInstallation 20.0 110.0 \n", - "2246 ACTION 3944.3875 TurbineInstallation NaN NaN \n", - "2247 ACTION 3945.4875 TurbineInstallation 20.0 110.0 \n", - "2248 ACTION 3948.9875 TurbineInstallation 20.0 110.0 \n", - "2249 ACTION 3949.2875 TurbineInstallation 20.0 110.0 \n", - "\n", - " phase_name \n", - "189 MonopileInstallation \n", - "190 NaN \n", - "191 MonopileInstallation \n", - "192 TurbineInstallation \n", - "193 TurbineInstallation \n", - "... ... \n", - "2245 TurbineInstallation \n", - "2246 NaN \n", - "2247 TurbineInstallation \n", - "2248 TurbineInstallation \n", - "2249 TurbineInstallation \n", - "\n", - "[2061 rows x 11 columns]" + "source": [ + "project = ProjectManager(config)\n", + "project.run()\n", + "\n", + "df = pd.DataFrame(project.actions)\n", + "\n", + "monopiles = df.loc[df[\"phase\"]==\"MonopileInstallation\"] # Filter actions table to the MonopileInstallation phase.\n", + "halfway_point = max(monopiles[\"time\"]) / 4 # Find the halway point of the MonopileInstallation phase.\n", + "\n", + "df.loc[df[\"time\"] > halfway_point - 10] # Display the total actions table starting from 10 hours prior to the halfway point.\n", + " # Notice the \"Mobilize\" action for the TurbineInstallation phase. This marks the beginning of\n", + " # the TurbineInstallation phase." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Other Examples\n", + "\n", + "The examples below are not complete configurations but showcase the flexibility of dependent phases." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Multiple dependent phases\n", + "config = {\n", + " \n", + " # ...\n", + " \n", + " 'install_phases': {\n", + " 'MonopileInstallation': 0, # MonopileInstallation will start at timestep 0\n", + " 'ScourProtectionInstallation': (\"MonopileInstallation\", 0.8), # ScourProtectionInstallation will start when MonopileInstallation is 80% complete\n", + " 'TurbineInstallation': (\"MonopileInstallation\", 0.5) # TurbineInstallation will start when MonopileInstallation is 50% complete\n", + " }\n", + "}" ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Multiple dependent phases with start dates\n", + "config = {\n", + " \n", + " # ...\n", + " \n", + " 'install_phases': {\n", + " 'MonopileInstallation': \"04/01/2010\", # MonopileInstallation will start on April 1st, 2010\n", + " 'ScourProtectionInstallation': (\"MonopileInstallation\", 0.8), # ScourProtectionInstallation will start when MonopileInstallation is 80% complete\n", + " 'TurbineInstallation': (\"MonopileInstallation\", 0.5) # TurbineInstallation will start when MonopileInstallation is 50% complete\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# Chained dependent phases\n", + "config = {\n", + " \n", + " # ...\n", + "\n", + " \"install_phases\": {\n", + " \"ScourProtectionInstallation\": 0, # ScourProtectionInstallation will start at timestep 0\n", + " \"MonopileInstallation\": (\"ScourProtectionInstallation\", 0.1), # MonopileInstallation will start when the above is 10% complete\n", + " \"TurbineInstallation\": (\"MonopileInstallation\", 0.5) # TurbineInstallation will start whent he above is 50% complete\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Multiple chains\n", + "config = {\n", + " \n", + " # ...\n", + "\n", + " \"install_phases\": {\n", + " \"ScourProtectionInstallation\": 0, # ScourProtectionInstallation will start at timestep 0\n", + " \"MonopileInstallation\": (\"ScourProtectionInstallation\", 0.1), # MonopileInstallation will start when the above phase is 10% complete\n", + " \"TurbineInstallation\": (\"MonopileInstallation\", 0.5), # TurbineInstallation will start when the above phase is 50% complete\n", + " \"ArrayCableInstallation\": (\"MonopileInstallation\", 0.25), # ArrayCableInstallation will start when the Monopiles are 25% complete\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" } - ], - "source": [ - "project = ProjectManager(config)\n", - "project.run()\n", - "\n", - "df = pd.DataFrame(project.actions)\n", - "\n", - "monopiles = df.loc[df[\"phase\"]==\"MonopileInstallation\"] # Filter actions table to the MonopileInstallation phase.\n", - "halfway_point = max(monopiles[\"time\"]) / 4 # Find the halway point of the MonopileInstallation phase.\n", - "\n", - "df.loc[df[\"time\"] > halfway_point - 10] # Display the total actions table starting from 10 hours prior to the halfway point.\n", - " # Notice the \"Mobilize\" action for the TurbineInstallation phase. This marks the beginning of\n", - " # the TurbineInstallation phase." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Other Examples\n", - "\n", - "The examples below are not complete configurations but showcase the flexibility of dependent phases." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# Multiple dependent phases\n", - "config = {\n", - " \n", - " # ...\n", - " \n", - " 'install_phases': {\n", - " 'MonopileInstallation': 0, # MonopileInstallation will start at timestep 0\n", - " 'ScourProtectionInstallation': (\"MonopileInstallation\", 0.8), # ScourProtectionInstallation will start when MonopileInstallation is 80% complete\n", - " 'TurbineInstallation': (\"MonopileInstallation\", 0.5) # TurbineInstallation will start when MonopileInstallation is 50% complete\n", - " }\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "# Multiple dependent phases with start dates\n", - "config = {\n", - " \n", - " # ...\n", - " \n", - " 'install_phases': {\n", - " 'MonopileInstallation': \"04/01/2010\", # MonopileInstallation will start on April 1st, 2010\n", - " 'ScourProtectionInstallation': (\"MonopileInstallation\", 0.8), # ScourProtectionInstallation will start when MonopileInstallation is 80% complete\n", - " 'TurbineInstallation': (\"MonopileInstallation\", 0.5) # TurbineInstallation will start when MonopileInstallation is 50% complete\n", - " }\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# Chained dependent phases\n", - "config = {\n", - " \n", - " # ...\n", - "\n", - " \"install_phases\": {\n", - " \"ScourProtectionInstallation\": 0, # ScourProtectionInstallation will start at timestep 0\n", - " \"MonopileInstallation\": (\"ScourProtectionInstallation\", 0.1), # MonopileInstallation will start when the above is 10% complete\n", - " \"TurbineInstallation\": (\"MonopileInstallation\", 0.5) # TurbineInstallation will start whent he above is 50% complete\n", - " }\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "# Multiple chains\n", - "config = {\n", - " \n", - " # ...\n", - "\n", - " \"install_phases\": {\n", - " \"ScourProtectionInstallation\": 0, # ScourProtectionInstallation will start at timestep 0\n", - " \"MonopileInstallation\": (\"ScourProtectionInstallation\", 0.1), # MonopileInstallation will start when the above phase is 10% complete\n", - " \"TurbineInstallation\": (\"MonopileInstallation\", 0.5), # TurbineInstallation will start when the above phase is 50% complete\n", - " \"ArrayCableInstallation\": (\"MonopileInstallation\", 0.25), # ArrayCableInstallation will start when the Monopiles are 25% complete\n", - " }\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/examples/Example - Modifying Library Assets.ipynb b/examples/Example - Modifying Library Assets.ipynb index e40cdd89..91d23c50 100644 --- a/examples/Example - Modifying Library Assets.ipynb +++ b/examples/Example - Modifying Library Assets.ipynb @@ -1,216 +1,216 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Example - Library Assets\n", - "\n", - "ORBIT stores the inputs associated with vessels, cables and turbines in a library in order to allow for modeling of discrete options of these inputs as well as to keep the input configurations cleaner. For example, all of the inputs related to the WTIV that we have been using to this point, are stored in the 'example_wtiv.yaml' file in the ORBIT library." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Configuring the library" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example - Library Assets\n", + "\n", + "ORBIT stores the inputs associated with vessels, cables and turbines in a library in order to allow for modeling of discrete options of these inputs as well as to keep the input configurations cleaner. For example, all of the inputs related to the WTIV that we have been using to this point, are stored in the 'example_wtiv.yaml' file in the ORBIT library." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Configuring the library" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ORBIT library intialized at '/Users/jnunemak/Fun/repos/ORBIT/examples/library'\n" + ] + } + ], + "source": [ + "# By default, ORBIT initializes the library at '~/ORBIT/library/'\n", + "# The library location can also be changed by using the following:\n", + "\n", + "import os\n", + "from ORBIT.core.library import initialize_library\n", + "initialize_library(os.path.join(os.getcwd(), \"library\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# This allows for proprietary vessel/cable/turbine information to be stored outside of the model repo.\n", + "\n", + "# Note: The library functions will search for library assets at an external library first, but will\n", + "# search the internal ORBIT library if it is not found. This means that the example library files\n", + "# don't need to be copied to an external library to be used." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Vessels" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Navigate to '~/ORBIT/library/vessels/example_wtiv.yaml':" + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "crane_specs:\n", + " max_hook_height: 100 # m\n", + " max_lift: 1200 # t\n", + " max_windspeed: 15 # m/s\n", + "jacksys_specs:\n", + " leg_length: 110 # m\n", + " max_depth: 75 # m\n", + " max_extension: 85 # m\n", + " speed_above_depth: 1 # m/min\n", + " speed_below_depth: 2.5 # m/min\n", + "storage_specs:\n", + " max_cargo: 8000 # t\n", + " max_deck_load: 15 # t/m^2\n", + " max_deck_space: 4000 # m^2\n", + "transport_specs:\n", + " max_waveheight: 3 # m\n", + " max_windspeed: 20 # m/s\n", + " transit_speed: 10 # km/h\n", + "vessel_specs:\n", + " day_rate: 180000 # USD/day\n", + " mobilization_days: 7 # days\n", + " mobilization_mult: 1 # Mobilization multiplier applied to 'day_rate'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# This vessel file defines a generic WTIV that could be used for installation of turbines, substructures, etc.\n", + "# The vessel file is organized by different subcomponents, eg. crane, jacking system, storage.\n", + "\n", + "# The weather constraints for the vessel are also defined in 'transport_specs' and 'crane_specs'\n", + "# These constraints are applied to underlying processes that the vessel performs in the simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Navigate to '~/ORBIT/library/vessels/example_feeder.yaml':" + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [ + "crane_specs:\n", + " max_lift: 500 # t\n", + "jacksys_specs:\n", + " leg_length: 85 # m\n", + " max_depth: 40 # m\n", + " max_extension: 60 # m\n", + " speed_above_depth: 0.5 # m/min\n", + " speed_below_depth: 0.5 # m/min\n", + "storage_specs:\n", + " max_cargo: 1200 # t\n", + " max_deck_load: 8 # t/m^2\n", + " max_deck_space: 1000 # m^2\n", + "transport_specs:\n", + " max_waveheight: 2.5 # m\n", + " max_windspeed: 20 # m/s\n", + " transit_speed: 6 # km/h\n", + "vessel_specs:\n", + " day_rate: 75000 # USD/day\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Turbines" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Turbine files contain information on a given turbine and the associated subcomponents.\n", + "# See below for an example 6MW turbine" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "ORBIT library intialized at '/Users/jnunemak/Fun/repos/ORBIT/examples/library'\n" - ] + "cell_type": "raw", + "metadata": {}, + "source": [ + "blade:\n", + " deck_space: 100 # m^2\n", + " length: 75 # m\n", + " mass: 100 # t\n", + "hub_height: 110 # m\n", + "nacelle:\n", + " deck_space: 200 # m^2\n", + " mass: 360 # t\n", + "name: SWT-6MW-154\n", + "rotor_diameter: 154 # m\n", + "tower:\n", + " deck_space: 36 # m^2\n", + " sections: 2 # n\n", + " length: 110 # m\n", + " mass: 150 # t\n", + "turbine_rating: 6 # MW\n", + "rated_windspeed: 13 # m/s\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# These inputs will affect which vessels are able to install the turbine as well as the underyling process times.\n", + "# Deck space is a measure of the area that the component would take up on a transportation vessel." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" } - ], - "source": [ - "# By default, ORBIT initializes the library at '~/ORBIT/library/'\n", - "# The library location can also be changed by using the following:\n", - "\n", - "import os\n", - "from ORBIT.core.library import initialize_library\n", - "initialize_library(os.path.join(os.getcwd(), \"library\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# This allows for proprietary vessel/cable/turbine information to be stored outside of the model repo.\n", - "\n", - "# Note: The library functions will search for library assets at an external library first, but will\n", - "# search the internal ORBIT library if it is not found. This means that the example library files\n", - "# don't need to be copied to an external library to be used." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Vessels" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# Navigate to '~/ORBIT/library/vessels/example_wtiv.yaml':" - ] - }, - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "crane_specs:\n", - " max_hook_height: 100 # m\n", - " max_lift: 1200 # t\n", - " max_windspeed: 15 # m/s\n", - "jacksys_specs:\n", - " leg_length: 110 # m\n", - " max_depth: 75 # m\n", - " max_extension: 85 # m\n", - " speed_above_depth: 1 # m/min\n", - " speed_below_depth: 2.5 # m/min\n", - "storage_specs:\n", - " max_cargo: 8000 # t\n", - " max_deck_load: 15 # t/m^2\n", - " max_deck_space: 4000 # m^2\n", - "transport_specs:\n", - " max_waveheight: 3 # m\n", - " max_windspeed: 20 # m/s\n", - " transit_speed: 10 # km/h\n", - "vessel_specs:\n", - " day_rate: 180000 # USD/day\n", - " mobilization_days: 7 # days\n", - " mobilization_mult: 1 # Mobilization multiplier applied to 'day_rate'\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# This vessel file defines a generic WTIV that could be used for installation of turbines, substructures, etc.\n", - "# The vessel file is organized by different subcomponents, eg. crane, jacking system, storage.\n", - "\n", - "# The weather constraints for the vessel are also defined in 'transport_specs' and 'crane_specs'\n", - "# These constraints are applied to underlying processes that the vessel performs in the simulation." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "# Navigate to '~/ORBIT/library/vessels/example_feeder.yaml':" - ] - }, - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "crane_specs:\n", - " max_lift: 500 # t\n", - "jacksys_specs:\n", - " leg_length: 85 # m\n", - " max_depth: 40 # m\n", - " max_extension: 60 # m\n", - " speed_above_depth: 0.5 # m/min\n", - " speed_below_depth: 0.5 # m/min\n", - "storage_specs:\n", - " max_cargo: 1200 # t\n", - " max_deck_load: 8 # t/m^2\n", - " max_deck_space: 1000 # m^2\n", - "transport_specs:\n", - " max_waveheight: 2.5 # m\n", - " max_windspeed: 20 # m/s\n", - " transit_speed: 6 # km/h\n", - "vessel_specs:\n", - " day_rate: 75000 # USD/day\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Turbines" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Turbine files contain information on a given turbine and the associated subcomponents.\n", - "# See below for an example 6MW turbine" - ] - }, - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "blade:\n", - " deck_space: 100 # m^2\n", - " length: 75 # m\n", - " mass: 100 # t\n", - "hub_height: 110 # m\n", - "nacelle:\n", - " deck_space: 200 # m^2\n", - " mass: 360 # t\n", - "name: SWT-6MW-154\n", - "rotor_diameter: 154 # m\n", - "tower:\n", - " deck_space: 36 # m^2\n", - " sections: 2 # n\n", - " length: 110 # m\n", - " mass: 150 # t\n", - "turbine_rating: 6 # MW\n", - "rated_windspeed: 13 # m/s\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# These inputs will affect which vessels are able to install the turbine as well as the underyling process times.\n", - "# Deck space is a measure of the area that the component would take up on a transportation vessel." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/examples/Example - Parametric Manager.ipynb b/examples/Example - Parametric Manager.ipynb index 2a17e0ff..ed8220db 100644 --- a/examples/Example - Parametric Manager.ipynb +++ b/examples/Example - Parametric Manager.ipynb @@ -1,510 +1,504 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### ORBIT Example - ParametricManager\n", - "\n", - "ParametricManager provides a similar interface into ORBIT as ProjectManager but allows for some (or all) inputs to be parameterized. This class is useful for quickly exploring how a module or project scales with certain inputs." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "from ORBIT.phases.design import MonopileDesign\n", - "\n", - "from ORBIT import ParametricManager, ProjectManager" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ + "cells": [ { - "data": { - "text/plain": [ - "{'site': {'depth': 'm', 'mean_windspeed': 'm/s'},\n", - " 'plant': {'num_turbines': 'int'},\n", - " 'turbine': {'rotor_diameter': 'm',\n", - " 'hub_height': 'm',\n", - " 'rated_windspeed': 'm/s'},\n", - " 'monopile_design': {'yield_stress': 'Pa (optional)',\n", - " 'load_factor': 'float (optional)',\n", - " 'material_factor': 'float (optional)',\n", - " 'monopile_density': 'kg/m3 (optional)',\n", - " 'monopile_modulus': 'Pa (optional)',\n", - " 'monopile_tp_connection_thickness': 'm (optional)',\n", - " 'transition_piece_density': 'kg/m3 (optional)',\n", - " 'transition_piece_thickness': 'm (optional)',\n", - " 'transition_piece_length': 'm (optional)',\n", - " 'soil_coefficient': 'N/m3 (optional)',\n", - " 'air_density': 'kg/m3 (optional)',\n", - " 'weibull_scale_factor': 'float (optional)',\n", - " 'weibull_shape_factor': 'float (optional)',\n", - " 'turb_length_scale': 'm (optional)',\n", - " 'monopile_steel_cost': 'USD/t (optional)',\n", - " 'tp_steel_cost': 'USD/t (optional)'}}" + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ORBIT Example - ParametricManager\n", + "\n", + "ParametricManager provides a similar interface into ORBIT as ProjectManager but allows for some (or all) inputs to be parameterized. This class is useful for quickly exploring how a module or project scales with certain inputs." ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# For this example we will look at the MonopileDesign module.\n", - "MonopileDesign.expected_config" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# The following inputs are the only \"required\" inputs for the MonopileDesign module.\n", - "# Thee 'site' inputs are commented out as they will be defined as parametric inputs below.\n", - "\n", - "base_config = {\n", - "# \"site\": {\n", - "# \"depth\": 20,\n", - "# \"mean_windspeed\": 8\n", - "# }\n", - " \"turbine\": \"12MW_generic\",\n", - " \"plant\": {\n", - " \"num_turbines\": 50\n", - " }\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "# Parametric inputs:\n", - "\n", - "parameters = {\n", - " \"site.depth\": [20, 40, 60], # The dot-notation allows you to access nested dictionaries\n", - " \"site.mean_windspeed\": [8, 9, 10] # These inputs correspond to the 'depth' and 'mean_windspeed' inputs above, which are nested\n", - "} # in the 'site' dictionary. " - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "# Desired results:\n", - "# Since there are so many available results in ORBIT, you have to tell ParametricManager which ones\n", - "# you are interested in for this parametric run. The syntax for this always follows the \n", - "# 'lambda run: run.{output}' format. The {output} can be any output available for the configured module\n", - "\n", - "results = {\n", - " \"capex\": lambda run: run.total_cost\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "ORBIT library intialized at '/Users/jnunemak/Fun/repos/ORBIT/library'\n" - ] + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "from ORBIT.phases.design import MonopileDesign\n", + "\n", + "from ORBIT import ParametricManager\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Monopile Design Example\n", + "Perform a parametric sweep of site depth and mean wind speed to see the effects on monopile capex." + ] }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
site.depthsite.mean_windspeedcapex
02082.388521e+08
14093.261239e+08
260104.289900e+08
\n", - "
" + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'site': {'depth': 'm', 'mean_windspeed': 'm/s'},\n", + " 'plant': {'num_turbines': 'int'},\n", + " 'turbine': {'rotor_diameter': 'm',\n", + " 'hub_height': 'm',\n", + " 'rated_windspeed': 'm/s'},\n", + " 'monopile_design': {'yield_stress': 'Pa (optional)',\n", + " 'load_factor': 'float (optional)',\n", + " 'material_factor': 'float (optional)',\n", + " 'monopile_density': 'kg/m3 (optional)',\n", + " 'monopile_modulus': 'Pa (optional)',\n", + " 'monopile_tp_connection_thickness': 'm (optional)',\n", + " 'transition_piece_density': 'kg/m3 (optional)',\n", + " 'transition_piece_thickness': 'm (optional)',\n", + " 'transition_piece_length': 'm (optional)',\n", + " 'soil_coefficient': 'N/m3 (optional)',\n", + " 'air_density': 'kg/m3 (optional)',\n", + " 'weibull_scale_factor': 'float (optional)',\n", + " 'weibull_shape_factor': 'float (optional)',\n", + " 'turb_length_scale': 'm (optional)',\n", + " 'monopile_steel_cost': 'USD/t (optional)',\n", + " 'tp_steel_cost': 'USD/t (optional)'}}" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " site.depth site.mean_windspeed capex\n", - "0 20 8 2.388521e+08\n", - "1 40 9 3.261239e+08\n", - "2 60 10 4.289900e+08" + "source": [ + "# For this example we will look at the MonopileDesign module.\n", + "MonopileDesign.expected_config" ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Pass the above definitions into ParametricManager like this:\n", - "# Note: I only want to run MonopileDesign so I passed it into module directily.\n", - "# If you want to run an entire project (with multiple modules), leave module blank and it will\n", - "# automatically run ProjectManager\n", - "\n", - "parametric = ParametricManager(base_config, parameters, results, module=MonopileDesign)\n", - "parametric.run()\n", - "\n", - "\n", - "# By default, ParametricManager doesn't run the product of all parameters and just\n", - "# runs the first set of inputs, then the second set of inputs, etc.\n", - "# In this case, there will only be 3 results\n", - "parametric.results" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# The following inputs are the only \"required\" inputs for the MonopileDesign module.\n", + "# Thee 'site' inputs are commented out as they will be defined as parametric inputs below.\n", + "\n", + "base_config = {\n", + "# \"site\": {\n", + "# \"depth\": 20,\n", + "# \"mean_windspeed\": 8\n", + "# }\n", + " \"turbine\": \"12MW_generic\",\n", + " \"plant\": {\n", + " \"num_turbines\": 50\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# Parametric inputs:\n", + "\n", + "parameters = {\n", + " \"site.depth\": [20, 40, 60], # The dot-notation allows you to access nested dictionaries\n", + " \"site.mean_windspeed\": [8, 9, 10] # These inputs correspond to the 'depth' and 'mean_windspeed' inputs above, which are nested\n", + "} # in the 'site' dictionary." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# Desired results:\n", + "# Since there are so many available results in ORBIT, you have to tell ParametricManager which ones\n", + "# you are interested in for this parametric run. The syntax for this always follows the\n", + "# 'lambda run: run.{output}' format. The {output} can be any output available for the configured module\n", + "\n", + "results = {\n", + " \"capex\": lambda run: run.total_cost\n", + "}" + ] + }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
site.depthsite.mean_windspeedcapex
02082.388521e+08
12092.545394e+08
220102.705817e+08
34083.062888e+08
44093.261239e+08
540103.463884e+08
66083.798072e+08
76094.041444e+08
860104.289900e+08
\n", - "
" + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
site.depthsite.mean_windspeedcapex
02082.388521e+08
14093.261239e+08
260104.289900e+08
\n", + "
" + ], + "text/plain": [ + " site.depth site.mean_windspeed capex\n", + "0 20 8 2.388521e+08\n", + "1 40 9 3.261239e+08\n", + "2 60 10 4.289900e+08" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " site.depth site.mean_windspeed capex\n", - "0 20 8 2.388521e+08\n", - "1 20 9 2.545394e+08\n", - "2 20 10 2.705817e+08\n", - "3 40 8 3.062888e+08\n", - "4 40 9 3.261239e+08\n", - "5 40 10 3.463884e+08\n", - "6 60 8 3.798072e+08\n", - "7 60 9 4.041444e+08\n", - "8 60 10 4.289900e+08" + "source": [ + "# Pass the above definitions into ParametricManager like this:\n", + "# Note: I only want to run MonopileDesign so I passed it into module directily.\n", + "# If you want to run an entire project (with multiple modules), leave module blank and it will\n", + "# automatically run ProjectManager\n", + "\n", + "parametric = ParametricManager(base_config, parameters, results, module=MonopileDesign)\n", + "parametric.run()\n", + "\n", + "\n", + "# By default, ParametricManager doesn't run the product of all parameters and just\n", + "# runs the first set of inputs, then the second set of inputs, etc.\n", + "# In this case, there will only be 3 results\n", + "parametric.results" ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# To configure ParametricManager to run the product of all inputs, pass 'product=True'\n", - "# This will result in 3x3 results as each combination is ran\n", - "parametric = ParametricManager(base_config, parameters, results, module=MonopileDesign, product=True)\n", - "parametric.run()\n", - "\n", - "parametric.results" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "10 runs elapsed time: 0.06s\n", - "27 runs estimated time: 0.15s\n" - ] + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
site.depthsite.mean_windspeedcapex
02082.388521e+08
12092.545394e+08
220102.705817e+08
34083.062888e+08
44093.261239e+08
540103.463884e+08
66083.798072e+08
76094.041444e+08
860104.289900e+08
\n", + "
" + ], + "text/plain": [ + " site.depth site.mean_windspeed capex\n", + "0 20 8 2.388521e+08\n", + "1 20 9 2.545394e+08\n", + "2 20 10 2.705817e+08\n", + "3 40 8 3.062888e+08\n", + "4 40 9 3.261239e+08\n", + "5 40 10 3.463884e+08\n", + "6 60 8 3.798072e+08\n", + "7 60 9 4.041444e+08\n", + "8 60 10 4.289900e+08" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# To configure ParametricManager to run the product of all inputs, pass 'product=True'\n", + "# This will result in 3x3 results as each combination is ran\n", + "parametric = ParametricManager(base_config, parameters, results, module=MonopileDesign, product=True)\n", + "parametric.run()\n", + "\n", + "parametric.results" + ] }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
site.depthsite.mean_windspeedmonopile_design.soil_coefficientcapex
060840000003.798072e+08
140945000003.240537e+08
240940000003.261239e+08
340840000003.062888e+08
4201045000002.685895e+08
520940000002.545394e+08
6601050000004.243511e+08
760940000004.041444e+08
840850000003.027043e+08
920850000002.356558e+08
\n", - "
" + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 runs elapsed time: 0.02s\n", + "27 runs estimated time: 0.06s\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
site.depthsite.mean_windspeedmonopile_design.soil_coefficientcapex
040940000003.261239e+08
160940000004.041444e+08
260840000003.798072e+08
320845000002.371472e+08
420945000002.526935e+08
560850000003.758376e+08
6401050000003.421996e+08
740850000003.027043e+08
840840000003.062888e+08
960950000003.998461e+08
\n", + "
" + ], + "text/plain": [ + " site.depth site.mean_windspeed monopile_design.soil_coefficient \\\n", + "0 40 9 4000000 \n", + "1 60 9 4000000 \n", + "2 60 8 4000000 \n", + "3 20 8 4500000 \n", + "4 20 9 4500000 \n", + "5 60 8 5000000 \n", + "6 40 10 5000000 \n", + "7 40 8 5000000 \n", + "8 40 8 4000000 \n", + "9 60 9 5000000 \n", + "\n", + " capex \n", + "0 3.261239e+08 \n", + "1 4.041444e+08 \n", + "2 3.798072e+08 \n", + "3 2.371472e+08 \n", + "4 2.526935e+08 \n", + "5 3.758376e+08 \n", + "6 3.421996e+08 \n", + "7 3.027043e+08 \n", + "8 3.062888e+08 \n", + "9 3.998461e+08 " + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - " site.depth site.mean_windspeed monopile_design.soil_coefficient \\\n", - "0 60 8 4000000 \n", - "1 40 9 4500000 \n", - "2 40 9 4000000 \n", - "3 40 8 4000000 \n", - "4 20 10 4500000 \n", - "5 20 9 4000000 \n", - "6 60 10 5000000 \n", - "7 60 9 4000000 \n", - "8 40 8 5000000 \n", - "9 20 8 5000000 \n", - "\n", - " capex \n", - "0 3.798072e+08 \n", - "1 3.240537e+08 \n", - "2 3.261239e+08 \n", - "3 3.062888e+08 \n", - "4 2.685895e+08 \n", - "5 2.545394e+08 \n", - "6 4.243511e+08 \n", - "7 4.041444e+08 \n", - "8 3.027043e+08 \n", - "9 2.356558e+08 " + "source": [ + "# If you are configuring many parameters it can take a long time to run, especially if weather is turned on.\n", + "# To get an idea of how long it'll take, you can run the .preview() method:\n", + "\n", + "parameters = {\n", + " \"site.depth\": [20, 40, 60],\n", + " \"site.mean_windspeed\": [8, 9, 10],\n", + " \"monopile_design.soil_coefficient\": [4000000, 4500000, 5000000]\n", + "}\n", + "\n", + "parametric = ParametricManager(base_config, parameters, results, module=MonopileDesign, product=True)\n", + "parametric.preview()" ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" } - ], - "source": [ - "# If you are configuring many parameters it can take a long time to run, especially if weather is turned on.\n", - "# To get an idea of how long it'll take, you can run the .preview() method:\n", - "\n", - "parameters = {\n", - " \"site.depth\": [20, 40, 60],\n", - " \"site.mean_windspeed\": [8, 9, 10],\n", - " \"monopile_design.soil_coefficient\": [4000000, 4500000, 5000000]\n", - "} \n", - "\n", - "parametric = ParametricManager(base_config, parameters, results, module=MonopileDesign, product=True)\n", - "parametric.preview()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.18" + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/examples/Example - Using HVDC or HVAC.ipynb b/examples/Example - Using HVDC or HVAC.ipynb new file mode 100644 index 00000000..4618d10e --- /dev/null +++ b/examples/Example - Using HVDC or HVAC.ipynb @@ -0,0 +1,359 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f5c53391-7926-4fbe-bbd2-53c4d1bf1dd5", + "metadata": {}, + "source": [ + "### ORBIT Example - Using HVDC or HVAC Example" + ] + }, + { + "cell_type": "markdown", + "id": "e77f95a5-e7bb-4367-8969-c3f179b862a4", + "metadata": {}, + "source": [ + "Component or technology decisions have an impact on a wind project's CapEx. This example will provide a basic setup to compare how different project sizes, export cable types (HVDC or HVDC), distances to shore, etc. effect project costs, this is a very useful tool.\n", + "\n", + "*NOTE: This example uses a test module: `ElectricalDesign` and therefore you must set your branch to dev*" + ] + }, + { + "cell_type": "markdown", + "id": "f472fe73-2ebd-4754-b693-81e2f1d14a77", + "metadata": {}, + "source": [ + "### Import Dependencies" + ] + }, + { + "cell_type": "markdown", + "id": "9ffde11c-6f22-4c15-8b60-3f06e0c2c00e", + "metadata": {}, + "source": [ + "Include path to ORBIT repo and import parametric manager and any modules used for analysis. For this example, we will be running the `ElectricalDesign` module." + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "a906c1f3-c0a7-4285-abf5-882d4d5f89e7", + "metadata": {}, + "outputs": [], + "source": [ + "from ORBIT.phases.design import ElectricalDesign\n", + "\n", + "from ORBIT import ProjectManager, ParametricManager\n", + "\n", + "import numpy as np\n", + "from copy import deepcopy\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "id": "b6e56587-72fc-445c-b289-d4d6b19a3079", + "metadata": {}, + "source": [ + "### Create Config" + ] + }, + { + "cell_type": "markdown", + "id": "3792651c-c192-4b1a-ac76-8452dd155b63", + "metadata": {}, + "source": [ + "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." + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "2cc12a2f-6192-40a3-9876-346495655bc9", + "metadata": {}, + "outputs": [], + "source": [ + "base_config = {\n", + " 'export_cable_install_vessel': 'example_cable_lay_vessel',\n", + " 'site': {\n", + " 'distance': 100,\n", + " 'depth': 20,\n", + " 'distance_to_landfall': 50\n", + " },\n", + " 'plant': {\n", + " 'capacity': 1000\n", + " },\n", + " 'turbine': \"12MW_generic\",\n", + " 'oss_install_vessel': 'example_heavy_lift_vessel',\n", + " 'feeder': 'future_feeder',\n", + " 'design_phases': [\n", + " 'ElectricalDesign',\n", + " ],\n", + " 'install_phases': [\n", + " 'ExportCableInstallation',\n", + " 'OffshoreSubstationInstallation'\n", + " ],\n", + "\n", + "# Commented out because we will vary these manually\n", + "# 'export_system_design': {\n", + "# 'cables': 'XLPE_500mm_220kV',\n", + "# }\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### HVAC Export Cables\n", + "\n", + "Add HVAC export cables to the config " + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "OffshoreSubstationInstallation:\n", + "\t Warning: 'Feeder 0' Cargo Mass Capacity Exceeded\n", + "Total CapEx per kW: $2507.12 \n" + ] + }, + { + "data": { + "text/plain": [ + "{'Export System': 301153600.0,\n", + " 'Offshore Substation': 47655941.13840648,\n", + " 'Export System Installation': 48563809.98096469,\n", + " 'Offshore Substation Installation': 3098929.2998477924,\n", + " 'Turbine': 1310400000,\n", + " 'Soft': 645000000,\n", + " 'Project': 151250000.0}" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hvac_config = deepcopy(base_config)\n", + "\n", + "hvac_config[\"export_system_design\"] = {\n", + " 'cables': 'XLPE_1000mm_220kV',\n", + " }\n", + "\n", + "hvac_project = ProjectManager(hvac_config)\n", + "hvac_project.run()\n", + "\n", + "print(f\"Total CapEx per kW: ${hvac_project.total_capex_per_kw:.2f} \")\n", + "\n", + "hvac_project.capex_breakdown" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### HVDC Export Cables\n", + "\n", + "Add HVDC export cables to the config" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "OffshoreSubstationInstallation:\n", + "\t Warning: 'Feeder 0' Cargo Mass Capacity Exceeded\n", + "Total CapEx per kW: $2370.48 \n" + ] + }, + { + "data": { + "text/plain": [ + "{'Export System': 87801120.0,\n", + " 'Offshore Substation': 160151200.0,\n", + " 'Export System Installation': 12778131.303180292,\n", + " 'Offshore Substation Installation': 3098929.2998477924,\n", + " 'Turbine': 1310400000,\n", + " 'Soft': 645000000,\n", + " 'Project': 151250000.0}" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hvdc_config = deepcopy(base_config)\n", + "\n", + "hvdc_config[\"export_system_design\"] = {\n", + " 'cables': 'HVDC_2000mm_320kV',\n", + " }\n", + "\n", + "hvdc_project = ProjectManager(hvdc_config)\n", + "hvdc_project.run()\n", + "\n", + "print(f\"Total CapEx per kW: ${hvdc_project.total_capex_per_kw:.2f} \")\n", + "\n", + "hvdc_project.capex_breakdown" + ] + }, + { + "cell_type": "markdown", + "id": "47a9f8f7-b725-4857-8277-a38d5470cedd", + "metadata": {}, + "source": [ + "## Use Parametric Manager to compare HVDC and HVAC\n", + "From the two examples above, we see that HVDC is more cost effective than HVAC. Note that the HVDC export system (cables) costs nearly 30% of the HVAC cables. However, the Offshore Substation (OSS) is over 3x the cost of an HVAC OSS. To compare this sensitivity and see if there is an point that these technologies cross we'll use `ParametricManager` and sweep each cable for a range of plant capacities. " + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "5cc31e1a-f39b-44ad-97ce-3ebf96486fa4", + "metadata": {}, + "outputs": [], + "source": [ + "parameters = {\n", + " 'export_system_design.cables': ['XLPE_1000mm_220kV', 'HVDC_2000mm_320kV'],\n", + " 'plant.capacity': np.arange(100,2100,100)\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "7775629d-afd8-4ce2-bfd4-a70c7f5149a4", + "metadata": {}, + "source": [ + "### Define Outputs of Interest" + ] + }, + { + "cell_type": "markdown", + "id": "786d8e8f-a748-4286-87a6-922c47e4f902", + "metadata": {}, + "source": [ + "Here in the results dictionary, define which variables you would like reported in the output data frame. " + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "0d3536a9-0cc9-4351-a0ac-b25e244fcb26", + "metadata": {}, + "outputs": [], + "source": [ + "results = {\n", + " 'cable_cost': lambda run: run.total_cable_cost,\n", + " 'oss_cost': lambda run: run.substation_cost,\n", + " 'num_cables': lambda run: run.num_cables,\n", + " 'num_substations': lambda run: run.num_substations,\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "23688759-8861-42a5-b749-3650d64a6215", + "metadata": {}, + "source": [ + "### Run ParametricManager and See Results" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "id": "9d32906d-d907-4bd6-9714-33f994aa0061", + "metadata": {}, + "outputs": [], + "source": [ + "parametric = ParametricManager(base_config, parameters, results, module = ElectricalDesign, product=True)\n", + "parametric.run()\n", + "parametric.results" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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AADWemupea2/uhHBGtwuxqI0cDesyQHAZPjw4XriiSdkGIa2bt0qSWrdurU6dOhwUeOkpaVpy5YtjuPMzEwdP35cGzdu1LfffqvVq1c7zt18882aPn16uWO1adNGn376qYYOHaozZ87o97//vd566y3deeed6tixo+rUqaOsrCzt379fixYt0vz585WRkVHueAAAAPBMvx3O1OLt5l337k9squAAFqfHWTQ5AJg0atRIPXv21JIlSxy14tkdF+OJJ57QE088UeE1jRs31uOPP67x48dfcLz+/ftr1apVmjhxolatWqUtW7aYmigl1a5dW3/7298UERFx0dkBAADgnt5eZp7FERkWqLsSGlmUBu6IJgeAUkaNGuVocvj5+Wn48OGXNV5AQICqV6+uGjVqqGnTpurYsaN69uypvn37ys+v8k/NXXXVVVq5cqV+/PFHffHFF1q+fLkOHjyoEydOKCwsTPXr11eHDh100003afDgwQoJCbms3AAAAHAfB05k68tNB021UZ2bqFow39biHH41AB6mZ8+eMgxDdru90o9kzJgxQzNmzKj0Z4waNUqjRo266GyjR4/W6NGjL/p9F+v6669nK1kAAAAf887yvSqyG47jsCB/je7SxLpAcEssPAoAAAAAcGvHMvP0SdIBU+2uhEaqWS3IokRwVzQ5AAAAAABubfqqZOUVnttdL9DfprGJcRYmgruiyQEAAAAAcFsZuQWavWafqTb42hjVrxFqUSK4M5ocAAAAAAC3NWvNPmXmFTqObTZpfI94CxPBnflsk8Nms1Xqv549e15wrIULF2rw4MGKjY1VcHCwYmNjNXjwYC1cuLDSeQoLC/X2228rMTFRderUUWhoqOLj4zV+/Hht3br1Mr5SAAAAAPBMuQVFem9VsqnWv209xdcJtygR3B27q1wGu92ucePGadq0aaZ6Wlqa0tLSNH/+fI0dO1ZTpkypcJvM9PR0DRgwQBs2bDDV9+7dq3feeUczZ87U66+/rrFjx1bJ1wEAAAAA7mhu0gGln8k31Sb2bGZRGngCn29yTJgwQRMnTiz3fLVq1co999e//tXR4Lj22mv15z//WfHx8dqzZ4/+9a9/aePGjZo6darq1Kmj559/vswxioqKNHjwYEeD47bbbtP999+vWrVqad26dXruued09OhRjR8/XjExMerfv/9lfLUAAAAA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/LIkKSAgwHR9saioKL344ouSpFOnTmnq1KkXzA4AgCebtXaf8gvPPQYa6G/TqM5NrAsE95c03bxtbGCY1I5tYwHAF1nyI5HCwkL9/PPP2rx5s06cOCFJqlWrltq2bat27dopMDDQililVK9eXZKUm5tb6tz8+fMlSREREbrtttvKfH9sbKz69Omj7777Tj/88IMyMzMdY0pSZmamfvjhB0lSnz59FBtb9jTc2267TREREcrIyNC8efP06KOPXs6XBQCA28otKNKsNftMtYFXxyg6ovy1reDjCvOkn94z164aKoUy8xUAfJFLmxxZWVl69tlnNW3aNEdzo6SaNWtqzJgxeuKJJ0wNAVf77bff9Msvv0iSWrVqZTqXn5+v9evXS5I6d+6soKCgcsfp0aOHvvvuO+Xl5SkpKUm9evVynNuwYYPy8/Md15UnKChInTp10qJFi7RhwwYVFBS4TSMIAABnmr8xTcez8k01to1FhcrcNna8NVkAAJZzWZPjt99+04033qj9+/dXuD3siRMn9PLLL2vOnDn67rvvHI+MuEJ2drbS0tK0YMEC/etf/1Jh4dlpjw899JDpup07d6qoqEhS6QZISeef3759u6nJsW3btjKvK2+cRYsWqbCwULt27VLr1q0r9TUVS01NrfD8oUOHHK9zcnKUk5NzUePD9c6fYVTWbCO4L+6d5+LeVS3DMPTu8j2mWuemNdUkMtApfy9x/zxXuffOMBS85g3T89dFjbspPyJO4t8yboHfd56Le+fZPOX+VcX3nS5pcpw+fVq9e/fWoUOHZBiG2rZtq1GjRikhIUF1657d7/7IkSPasGGDZs6cqc2bN2v//v3q06ePtmzZoho1alRZthkzZujee+8t9/xjjz2mu+++21Q7v2FQ3iMmxRo2bOh4feDAAaeNc7FNjvPffyHLly8vtcYI3Nvy5cutjoBLxL3zXNw759t20qY96ea1qa4OSteiRYuc/lncP891/r2rmbVL3Q//ajqf5Ndeh6vg1wwuH7/vPBf3zrO58/1LT093+pguWXj0xRdf1MGDByVJzz77rDZt2qQ//elPSkxMVIsWLdSiRQslJibqj3/8o3755Rc999xzkqSDBw86Ft10tWuuuUbr16/XP//5T9lsNtO5zMxMx+vw8PAKx6lWrZrj9ZkzZ6pkHAAAvMGSQ+a/b+uFGmoVWf7sT6Dp0e9Nx1lBUTpc41qL0gAA3IFLZnLMmzdPNptNQ4cO1V//+tcKr7XZbPrLX/6izZs3a86cOZo3b56ef/75Kst26623qkOHDpLOTpXZs2ePPvnkE82bN0933XWXJk+erJtvvtn0nvOn+1S0HockBQcHO16XnIrjrHEqo+QskpIOHTqkhIQESVL37t0vOLME1svNzXV0Zbt3766QEBbl8xTcO8/Fvas6Ow5naueaDaba7/tcoX7tGjjtM7h/nqvMe5d5WCGbkkzXBXWZqL7X3WhFRJSD33eei3vn2Tzl/l1oWYVL4ZImx759Z1dJHz16dKXfM3r0aM2ZM8fx3qoSGRmpyMhIx3HHjh01bNgwzZo1S6NGjdKgQYM0bdo0U/bzf4EULxxanry8PMfr0NBQ0zlnjVMZF9O0CA0NvaTPgHVCQkK4Zx6Ke+e5uHfONXvDTtNxVHiQ7khoopDAC2/7fim4f57Lce/WfFhq29jA6+5TIPfVbfH7znNx7zybO9+/qsjlksdVindJiY6OrvR7iq+90GMcVWXEiBG64447ZLfb9X//93+m3WDO3/XlQo+OZGVlOV6X/FqcNQ4AAJ7sSEauvtyUZqqN6FR1DQ54gcI8KWm6uXbVnWwbCwBwTZPjyiuvlCTt2rWr0u8pvrb4vVYYNGiQpLMNhm+//dZRP39WxIWm15z/mEjJxT+dNQ4AAJ5s5uoUFRSdW3sjOMBPwzs1sjAR3N6Wz6XsEovVXce2sQAAFzU5xo8fL8MwNHnyZNnt9gteb7fb9corr8hms2ncuHEuSFi2OnXqOF6f/9hMixYt5O9/9qdLO3bsqHCM889fccUVpnPn75BS2XECAgLUvHnzCyQHAMAzZOcX6oN1+02129rFqnZ4cDnvgM8zDGnd2+ZaXA8p+oqyrwcA+BSXNDnuuOMO3XvvvVq7dq1uvfVWHT58uNxrjxw5ottuu03r1q3T6NGjdeedd7oiYpnS0s5NnT3/EZGgoCDHIp1r1qypcD2NZcuWSTq7cGjxAqfFOnbs6FhwtPi6suTn52vt2rWO9wQGBl7kVwIAgHv69KdUnc4pMNXGdIuzKA08gd/Bn6RDv5iLzOIAAPyPSxYeff/999WjRw9t2bJFX331lZo2baq+ffuqY8eOio6Ols1m05EjR7RhwwYtWrRIeXl56tixo3r06KH333+/3HFHjhxZpbnnzp3reF3ysZlbb71Va9asUUZGhj7//HMNGzas1PtTU1O1ePFiSVLv3r1Na3BIZ9fk6N27txYuXKjFixcrNTW1zAVCP//8c2VkZEiSBg8efNlfFwAA7qDIbmj6ymRT7fpW0WoWzdpTKJ//T1PNhchGUgt2VAEAnOWSJsfo0aNls9kknd0iNjc3VwsWLNCCBQtKXWsYhmw2m5KSknTvvfeWO6bNZrvkJseMGTM0bNiwCrfReeWVV/TNN99IkuLi4pSYmGg6P3bsWD3//PM6ffq0HnvsMd1www2qXbu243xRUZEmTpyooqIiSdKjjz5a5uc88sgjWrhwoQoLC/X73/9en3/+ueNRGElKT0/XpEmTJJ3dCWbs2LGX9DUDAOBuFm8/opTj2aba2ERmcaB8Ifkn5P/bV+ZiwjjJj0VqAQBnueRxFels86L4v5LHlT1X1rWX4umnn1ZMTIzGjRun999/X6tWrdKmTZu0cuVKvfXWW+rWrZv++Mc/Sjr7aMo777xjajxIUq1atfTiiy9KOrtex3XXXaf33ntPSUlJ+vLLL3XDDTc4mjh33XWXevbsWWaW66+/3jELpPh9X375pZKSkvTee++pU6dO2r//7LPKL774omrWZNVwAIB3mLbCPIujdf0IdW5au5yrAalJ+o+yldg2VtcOty4QAMDtuGQmR3Jy8oUvcrETJ07o3Xff1bvvvlvuNbGxsZo+fbr69OlT5vnx48fr4MGDevbZZ7Vnzx7dd999pa4ZMGCApk+fXsa7z5k+fboyMjL0zTffaMmSJVqyZInpvJ+fn5588klLF2EFAMCZNh04pfUpJ0y1+7vHOWZ+AiX52fPV5Lj530i6ehjbxgIATFzS5GjcuLErPqbSvvvuO3399ddatWqVdu/erSNHjuj48eMKDQ1VdHS0rrnmGt18880aOnSowsLCKhzrmWeeUb9+/fTGG29oxYoVOnLkiCIjI3X11Vfr3nvv1V133XXBPKGhofr666/14YcfasaMGdq0aZNOnTqlunXrKjExUf/3f/+nzp07O+vLBwDAclNLrMVRNyJYN13ZwKI08AQxJ9cruDDTXEzgB0AAADOXNDncTcuWLdWyZUvHIymXq0uXLurSpctlj3P33Xfr7rvvdkIiAADcV9qpHH2z+ZCpNrpLnIICXPYULTyNYajpsUXmGtvGAgDKwL8mAACAS723MllF9nNra4UF+evuhEYWJoK780tLUmROirl43e8syQIAcG80OQAAgMtk5hbo4w0HTLWhHRqqRligRYngCUpvG9tYatHPmjAAALfm8sdVlixZovnz52vTpk1KT09XTk5OhTul2Gw27dmzx4UJAQBAVZmz4YDO5J3bHcNmk+7t2sS6QHB/GQfZNhYAUGkua3IcPXpUw4YN07JlyySp3MaGzWYznWOVdQAAvENhkV3vrUox1fq1rqfGtatZEwieIWm6bEaR49AIDJWNbWMBAOVwSZOjoKBA/fv31y+//CLDMHTNNdcoJiZGX3/9tWw2m4YPH64TJ07o559/1qFDh2Sz2dSuXTu1bdvWFfEAAIALLNxyWGmncky1sYlxFqWBRyjIlZLeM5WK2tyhgNBIa/IAANyeS9bkmDFjhjZu3ChJeu+99/Tzzz/rhRdecJyfOXOmFixYoLS0NH3++eeqX7++tm3bpptvvlnvvfdeecMCAAAPYRiGpq7Ya6pd0zBS7RvXtCgRPMLWz6XsdFOpsP0Yi8IAADyBS5ocn332mSTpxhtv1KhRoyq89tZbb9WyZcsUFBSk0aNHa9euXa6ICAAAqlDSvpPalHraVLs/sSmPpaJ8hiGtfctUOlq9jYyolhYFAgB4Apc0OTZt2uR4LKUsJdfniI+P14MPPqisrCz997//dUVEAABQhUrO4oiJDFW/NnUtSgOPcGCddPhXU2lvnb4WhQEAeAqXNDlOnDghSYqLO/fcbVBQkON1dnZ2qff07t1bkvT9999XcToAAFCVUtKztGjbEVPtvm5xCvBnJ3tUYN0U02FWUB0dibjaojAAAE/hkn9dFDc0zm9sREREOF6npaWVek9ISEi55wAAgOd4b1Wyzp+0WT04QEM7xFoXCO7vdJq07QtTKblOH8lGYwwAUDGX/E3RqFEjSdKRI+d+ilO3bl1Vr15dkrRu3bpS79myZYsktpAFAMCTncrO1ydJqabaXdc1UvWQQIsSwSMkTZdKbBu7r1Z3CwMBADyFS5oc7dq1kyTHDivFunfvLsMw9N///ld5eXmO+qlTp/Tiiy/KZrOpdevWrogIAACqwAfr9iun4Nw3q/5+No3q0sS6QHB/BbnSTyW2jW07VIUB1SwKBADwJC5pcvTu3VuGYejrr7821X/3u99JOtv8uOqqq/Too49q4sSJuvLKK7Vz505J0siRI10REQAAOFl+oV0zV6eYajddWV8xkaHWBIJn2PKZlH3cVCpsd59FYQAAnsYlTY5bb71VjRo1Umpqqvbs2eOo33TTTbrvvvtkGIZ27dql//znP5oyZYpjHY6+fftqwoQJrogIAACcbMGmgzqamWeqjU2MK+dqQGe3jV33trnWtCfbxgIAKi3AFR8SGRmplJSUMs9NnTpVnTt31tSpU7V161YVFhaqefPmGjlypB588EH5+bHAFAAAnsYwDE1dmWyqJcTV0lWxkdYEgmcoY9tYXfc7a7IAADySS5ocFzJmzBiNGTPG6hgAAMBJVu85ru2HMky1sd2YxYELKDmLo2YTqXlfKS/fkjgAAM/DNAkAAOB0U1fsNR03qR2mPlfUtSgNPMLpNGnbl+ZawjjJz9+aPAAAj0STAwAAONXuo5la8tsxU21Mtzj5+bEtPCqQNM20bawCq0nX3GNdHgCAR6qSJsfChQvVrl07tWvXTh9++OFFvffDDz90vHfx4sVVEQ8AAFShaSXW4ogMC9Tt7RtalAYeoSBX+mmGuXb1MCk00oo0AAAP5vQmh2EYevjhh7Vp0ybVqVNHd99990W9/6677lJUVJR++eUX/elPf3J2PAAAUIXSz+Tps5/TTLXh1zVWaBCPHKACZWwbq4Rx1mQBAHg0pzc5fvzxR+3cuVN+fn565ZVXLvr9NptNkydPlr+/v7Zs2aJly5Y5OyIAAKgis9bsU36h3XEc5O+nkZ0bW5gIbq/MbWN7SdGtrMkDAPBoTm9yfPbZZ5KkG264Qa1bt76kMVq3bq1+/fpJkj799FOnZQMAAFUnt6BIs9fuM9UGXtNA0REhFiWCR9i/lm1jAQBO4/Qmx/r162Wz2XTLLbdc1jg333yzDMPQ2rVrnZQMAABUpXkb03Q8y7zV5xi2jcWFlNo2Nu7strEAAFwCpzc59u07+xOcli1bXtY4LVq0kCSlpKRcbiQAAFDF7Haj1IKjic2jdEX9CIsSwSOcTpO2LzDXEu6X/NgAEABwaZz+N8jp06clSbVq1bqscYrfn5GRcdmZAABA1Vq285h2Hz1jqjGLAxfEtrEAACdzepMjIuLsT2xOnTp1WeMUv7969eqXmQgAAFS1qSv3mo6bR4erR4s6FqWBRyjIkZLeM9euuYttYwEAl8XpTY46dc7+g2bbtm2XNc727dslSdHR0ZedCQAAVJ2tB09r1W7z9p9jE+Nks9ksSgSPsOUzKeeEuca2sQCAy+T0JkdCQoIMw9CCBQsufHEFvvjiC9lsNnXs2NFJyQAAQFUouRZHVHiQBl0TY1EaeISyto2Nv16qc3lrugEA4PQmR//+/SVJixYt0sqVKy9pjOXLl2vRokWm8QAAgPs5kpGrBZsOmmojOjVRSKC/RYngEfavlQ5vNtcSxluTBQDgVZze5BgyZIiaNGkiwzB0xx13aNeuXRf1/p07d2ro0KGy2Wxq0qSJbr/9dmdHBAAATjJzdYoKigzHcXCAn4Z3amRhIngEto0FAFQRpzc5AgMD9fLLL0uSjh49qvbt2+u///2vsrKyKnzfmTNnNHnyZHXo0EFHjx6VJP373/9WQECAsyMCAAAnyM4v1Afr9ptqQ9rHqnZ4sEWJ4BFOp5axbew4to0FADhFlXQQbrvtNj3zzDP629/+pqysLP3xj3/Uk08+qcTERLVv317R0dGqVq2asrKydOTIEf38889asWKFsrKyZBhnfxr0zDPP6NZbb62KeAAAwAnmJqXqdE6BqXZfV7aNxQVsKGPb2GvZNhYA4BxVNk3iySefVGxsrB544AFlZ2frzJkz+vbbb/Xtt9+WeX1xcyMsLEyvv/66Ro8eXVXRAADAZSqyG5q+yrzgaO9W0WoWHW5RIniEghzppxnm2jV3SyE1LIkDAPA+VfosyL333qt+/frpP//5j95//32lp6eXe21UVJRGjRqlhx9+WA0aNKjKWAAAL5dbUKQvNx3U7qNnnDpuYUGhUlLOTqnftGi3AgJ995HK9Mw87TuebaqNSWQWBy6AbWMBAFWsyv911qBBA7388st6+eWXtXXrVm3atEnHjx9XZmamqlevrtq1a+vqq69WmzZtqjoKAMBHPDJ3k7769VAVjf6/dQMO7a/4Mh/TpkGEOjetbXUMuLNyt41tYU0eAIBXcumPoNq0aUMzAwBQpX5NPVWFDQ6UZ2xinGw2m9Ux4M72rym9bex1v7MmCwDAa7GMNQDAq0xdkXzhi+BUrepV101X8qgpLqCsbWOb3WBNFgCA1/Ldh4kBAF4n7VSOvt5snsVxXVwtxdYMc8r4RUWFOnjwoKSzj2P6+/PXaMNaobo7oZGCAvi5CSpwOlXa/pW5dt14to0FADgd/zoDAHiNmatTVGQ3HMehgf6aMqK9IsOCnDJ+Tk6OFi1KlST17dtaoaGhThkX8HplbRt7zd3W5QEAeC3a5wAAr5CZW6CP1pkXAx3aIdZpDQ4Al4htYwEALkSTAwDgFT5JSlVmXqHj2GaT7uvGlqaA5TZ/yraxAACXockBAPB4hUV2TV9pXnC0b+u6aly7mkWJAEj637axU8y1+N5sGwsAqDI0OQAAHu+7rUeUdirHVLs/salFaQA47FstHWHbWACA69DkAAB4NMMw9O6Kvaba1Q0j1b5xTYsSAXBYX2IWR62mUrM+1mQBAPgEmhwAAI/28/6T+uXAKVPt/sQ42Ww2awIBOOvUgdLbxiaMY9tYAECV4m8ZAIBHe3e5eS2OmMhQ3dimnkVpADgkldg2NiicbWMBAFWOJgcAwGPtO56l77YdNtXu7dpEAf789QZYim1jAQAW4V+BAACP9d6qFBnGuePqwQG6s2ND6wIBOGvzXCnnpLnGtrEAABegyQEA8Einswv0SdIBU21YQkNVDwm0KBEASf/bNvYdcy2+txTV3Jo8AACfQpMDAOCRPly/X9n555739/ezaXTXOAsTAZDEtrEAAEvR5AAAeJz8QrtmrDYvODrgyvqKiQy1KBEAh3Vvm4/ZNhYA4EI0OQAAHufrzQd1JCPPVBvbjVkcgOVOHZB2lNw2djzbxgIAXIa/cQAAHsUwjFLbxiY0qaWrG0ZaEwjAORumSob93DHbxgIAXCzA6gBApRmG9HY3q1O4jWC7XT0zM8++Tn2Bn5J5EO7d5cnOL9S/j2dLQedqsTmh0ltVv+Ao986zcf9c4Pge8/E1d0shEdZkAQD4JJoc8CxHtlidwG34SapRfJBrYRBcNO7d5akm6YqS35ue/t9/VYx759m4fxZg21gAgIvxIwwAAAA4X7M+bBsLAHA5mhwAAABwrqBw6YZnrU4BAPBBPK4CzzJkmtUJ3EZ+fr5+/fVXSdJVV12loKCgC7wD7oJ7d2kycwv0ty+3qrDIcNRuaBOtW66KcVkG7p1n4/65iH+Q1LirVK221UkAAD6IJgc8h80mXXm71SncRlFOjtJSq0mS2rTuK4WGWpwIlcW9uzTTF+/S5wXnFjAM9Lfpr7dcL0WEuCwD986zcf8AAPB+PK4CAHB7uQVFmrU2xVQbeHWM6rqwwQEAAAD3R5MDAOD2vvglTeln8k21Md3iLEoDAAAAd0WTAwDg1gzD0NQVyaZat2ZRat0gopx3AAAAwFfR5AAAuLVlO49p19EzptqYRGZxAAAAoDSaHAAAt1ZyFkfz6HD1bFHHojQAAABwZzQ5AABua/uhDK3cnW6qjekWJ5vNZlEiAAAAuDOaHAAAt1VyFkdUeJBuvTbGojQAAABwdzQ5AABu6WhGrr7clGaqjejURCGB/hYlAgAAgLujyQEAcEsz16SooMhwHAcH+Gl4p0YWJgIAAIC7o8kBAHA72fmFmr12v6l2W7tY1Q4PtigRAAAAPAFNDgCA2/nsp1Sdzikw1cZ0Y9tYAAAAVIwmBwDArRTZDU1baV5w9PpW0WoWHW5RIgAAAHgKmhwAALfyw/YjSjmebaqNZRYHAAAAKoEmBwDArZTcNrZ1/Qh1jq9tURoAAAB4EpocAAC3senAKa1POWGqjU2Mk81msygRAAAAPAlNDgCA25haYi2OuhHBuvmqBhalAQAAgKehyQEAcAtpp3L0zeZDptqoLk0UFMBfVQAAAKgc/uUIAHALM1Ylq8huOI7Dgvx1T0JjCxMBAADA09DkAABYLjO3QB+vP2CqDe3QUDXCAi1KBAAAAE9EkwMAYLk5Gw4oM6/QcWyzSfd2bWJdIAAAAHgkmhwAAEsVFtn13qoUU61f63pqXLuaNYEAAADgsWhyAAAs9e3Ww0o7lWOqjU2MsygNAAAAPBlNDgCAZQzD0LsrzNvGXtMwUu0b17QoEQAAADwZTQ4AgGV+2ndSmw6cMtXGJsbJZrNZEwgAAAAejSYHAMAy767YazqOiQzVjW3qWZQGAAAAno4mBwDAEvuOZ2nRtiOm2r1dmyjAn7+aAAAAcGn4lyQAwBLTVybLMM4dVw8O0J0dG1oXCAAAAB6PJgcAwOVOZxfok6RUU21YQkNVDwm0KBEAAAC8AU0OAIDLfbB+n3IKihzH/n42je7KtrEAAAC4PDQ5AAAulV9o18zVKabagCvrKyYy1JpAAAAA8Bo0OQAALvXVrwd1JCPPVLs/kVkcAAAAuHw0OQAALmMYht5dkWyqJcTV0lWxkdYEAgAAgFehyQEAcJk1e45r+6EMU21sN2ZxAAAAwDlocgAAXObdFXtNx01qh6nPFXUtSgMAAABvQ5MDAOASu49maslvx0y1Md3i5OdnsygRAAAAvA1NDgCAS0xbaV6LIzIsUEPax1qUBgAAAN6IJgcAoModP5Onz35OM9Xuua6RwoICLEoEAAAAb+SzTY6kpCT9/e9/V9++fRUbG6vg4GCFh4erRYsWuvfee7Vy5cqLGm/hwoUaPHiwY6zY2FgNHjxYCxcurPQYhYWFevvtt5WYmKg6deooNDRU8fHxGj9+vLZu3XqxXyIAuI1Za/cpv9DuOA70t2lU5ybWBQIAAIBX8skfoXXv3l0rVqwoVc/Pz9euXbu0a9cuzZgxQyNHjtS7776roKCgcsey2+0aN26cpk2bZqqnpaUpLS1N8+fP19ixYzVlyhT5+ZXfU0pPT9eAAQO0YcMGU33v3r165513NHPmTL3++usaO3bsRX61AGCt3IIizVqzz1QbeHWMoiNCLEoEAAAAb+WTMzkOHjwoSWrQoIEefPBBffrpp1q/fr3WrFmj//znP4qJiZEkvf/++xo9enSFY/31r391NDiuvfZaffTRR1q/fr0++ugjXXvttZKkqVOn6oknnih3jKKiIg0ePNjR4Ljtttu0cOFCrVu3Tq+++qqio6OVl5en8ePHX9TMEABwB/M3pul4Vr6pNjaRbWMBAADgfD45k6NVq1Z6/vnnNWTIEPn7+5vOderUSSNGjFDXrl21c+dOffTRR/rd736n7t27lxpn586devnllyVJHTp00PLlyxUaGipJ6tixowYOHKgePXooKSlJL730ku677z41a9as1DgzZ850PB4zceJEvfHGG45zCQkJ6t+/v9q3b6+MjAz94Q9/0Pbt2xUQ4JO3DoCHsdsNTS2x4Gi3ZlG6on6ERYkAAADgzXxyJsdXX32loUOHlmpwFIuKitK///1vx/Gnn35a5nWTJ09WYWGhJOm1115zNDiKhYWF6bXXXpN0dr2NV155pcxxihsltWrV0ksvvVTqfLNmzfT4449Lknbv3q158+ZV9OUBgNtYtuuYdh89Y6oxiwMAAABVxSebHJXRq1cvx+s9e/aUOm8Yhr744gtJZ2eGdOrUqcxxOnXqpJYtW0qSvvjiCxmGYTq/c+dObd++XZI0dOhQhYWFlTnO+Y/N0OQA4CmmrthrOm4eHa4eLepYlAYAAADejiZHOfLy8hyvy5rxkZyc7Fjbo0ePHhWOVXw+LS1NKSkppnPn7+JS0Tj16tVTixYtJEmrVq2qODwAuIFtBzO0avdxU21sYpxsNptFiQAAAODtWNihHMuWLXO8vuKKK0qd37Ztm+N1q1atKhzr/PPbt29XXNy5qdoXO87OnTt14MABZWVlqVq1ahVef77U1NQKzx86dMjxOicnRzk5OZUeG9bIzc0t8zXcn6/cuynLdpmOa1cLVL9WtTz6zxdfuXfeivvnubh3not757m4d57NU+5fVfy7kCZHGex2u1544QXH8dChQ0tdc37TIDY2tsLxGjZs6Hh94MCByx7HMAylpqY6HoOpjPMzXMjy5csVFRVV6ethveXLl1sdAZfIW+/d6Xzpq1/9JZ2btZFQM1fLfvzBulBO5q33zldw/zwX985zce88F/fOs7nz/UtPT3f6mDyuUoZXXnlF69evl3R2O9f27duXuiYzM9PxOjw8vMLxzp9xceaMeQE+Z40DAO5k+WE/FRnnGhyBNkPd6hkVvAMAAAC4fMzkKGHZsmV67LHHJEnR0dF66623yrzu/Ck/QUFBFY4ZHBzseF1yOo6zxrmQkjNISjp06JASEhIkSd27d7/grBJYLzc319GV7d69u0JCQixOhMry9nuXnV+kp15ZJanQURt8bYxuu6niR/I8gbffO2/H/fNc3DvPxb3zXNw7z+Yp9+9CyypcCpoc59m6dasGDx6swsJChYSEaO7cuYqOji7z2vN/keTn51c47vmLmJbcZrbkOBX94qtonAu5mKZFaGjoRY8Pa4WEhHDPPJQ33ru5v6TodG6hqTauZ3Ov+zq98d75Eu6f5+LeeS7unefi3nk2d75/VZGLx1X+Jzk5WX379tXJkyfl7++vjz/+WN27dy/3+urVqzteX+jRkaysLMfrko+kOGscAHAHRXZD01Ymm2rXt4pWs2j+zAIAAEDVo8kh6eDBg+rTp48OHjwom82m6dOna9CgQRW+5/yZEReaYnP+oyIlFwC9lHFsNhuPkwBwS4u3H9G+49mm2tjEuHKuBgAAAJzL55sc6enpuuGGG7R3715J0muvvaaRI0de8H2tW7d2vN6xY0eF155/vuR2tJcyTsOGDS9q+1gAcJWpK/aajlvXj1DnprUtSgMAAABf49NNjtOnT6tfv37atm2bJOmFF17Q73//+0q9Ny4uTg0aNJB0drHSihQv+BITE6MmTZqYznXr1s3xuqJxDh8+rJ07d0qSunbtWqmMAOBKvxw4pQ0pJ021+7vHyWazlfMOAAAAwLl8tsmRnZ2tm266ST///LMk6a9//asmTZpU6ffbbDbHIy07duzQ2rVry7xu7dq1jhkYgwYNKvWP/RYtWjhmd3zyySfKzs4uNYYkzZgxw/F68ODBlc4JAK5SchZH3Yhg3XRlA4vSAAAAwBf5ZJMjPz9fgwcP1qpVqyRJDz74oJ577rmLHuehhx6Sv7+/JOmBBx4ota1rTk6OHnjgAUlSQECAHnrooTLHeeSRRyRJJ06c0J///OdS5/fs2aN//vOfkqRmzZrR5ADgdlJPZmvhlsOm2ugucQoK8Mm/ZgAAAGARn9xC9q677tKiRYskSddff73GjBmjLVu2lHt9UFCQWrRoUareokULPfroo3rhhReUlJSkrl27atKkSYqPj9eePXv04osvauPGjZKkRx99VM2bNy9z/FGjRmn69OlatWqV3njjDR0+fFj333+/atasqfXr1+vZZ59VRkaG/Pz89OqrryogwCdvGwA3NmNViorshuM4LMhfdyc0sjARAAAAfJFPfrf8+eefO17/+OOPuuqqqyq8vnHjxkpJSSnz3D/+8Q8dPXpU06dP18aNGzVs2LBS14wZM6bCmSL+/v6aP3++BgwYoA0bNuizzz7TZ599ZromODhYr7/+uvr3719hVgBwtczcAn284YCpNrRDQ9UIC7QoEQAAAHwV84gvk5+fn6ZNm6avv/5agwYNUoMGDRQUFKQGDRpo0KBB+uabbzR16lT5+VX8f3VUVJRWr16tN998U926dVPt2rUVEhKipk2b6v7779dPP/2ksWPHuuirAoDKm7PhgM7kFTqObTbpvq5sGwsAAADX88mZHIZhXPiiizRgwAANGDDgssYICAjQhAkTNGHCBCelAoCqVVhk13urUky1fq3rqVHtMGsCAQAAwKcxkwMAcMkWbjmstFPmRZfv784sDgAAAFiDJgcA4JIYhlFq29hrGkaqXaOaFiUCAACAr6PJAQC4JEn7TmpT6mlT7f7EprLZbBYlAgAAgK+jyQEAuCTvLjfP4oiJDFW/NnUtSgMAAADQ5AAAXIKU9Cx9v/2IqXZftzgF+PPXCgAAAKzDv0YBABdt+qpknb9RVfXgAA3tEGtdIAAAAEA0OQAAF+lUdr7mJqWaandd10jVQwItSgQAAACcRZMDAHBRPli3XzkFRY5jfz+bRnVpYl0gAAAA4H9ocgAAKi2/0K6Zq1NMtZuurK+YyFBrAgEAAADnockBAKi0BZsO6mhmnqk2NjHOojQAAACAGU0OAEClGIahd1eYt41NiKulq2IjrQkEAAAAlECTAwBQKav3HNeOw5mm2v2JTS1KAwAAAJRGkwMAUCklZ3HERVVT71bRFqUBAAAASqPJAQC4oF1HMrX0t2Om2n3d4uTnZ7MoEQAAAFBagNUBAMAZMnMLlFtgtzpGpeTm5isj/+zr9DP5Cil0/37zlOXmWRyRYYG6vV2sRWkAAACAstHkAODR8gqL9PsPNuqHHUdkGFanuRj/++P3p5XWxrhEw69rrNAgf6tjAAAAACY0OQB4tLeX7tXi7UesjuFTgvz9NLJzY6tjAAAAAKW4/xxpAChHbkGR3l+TYnUMnzPomgaKjgixOgYAAABQCk0OAB5r/sY0Hc/KtzqGT+nYpKaeuKm11TEAAACAMvG4CgCPZLcbmroy2VTrEl9br9/dzqJElZebm6MlS5ZKknr16qmQkFAr41RaoL9N1UMCrY4BAAAAlIsmBwCPtGzXMe0+esZUu797U9WqFmRRosrL8StS+P96BTXDghQa6v6ZAQAAAE/A4yoAPNLUFeYtTZtHh6tnizoWpQEAAADgDmhyAPA42w5maNXu46bamG5xstlsFiUCAAAA4A5ocgDwOFNXmmdx1K4WpFuvjbEoDQAAAAB3QZMDgEc5kpGrBZsOmmojOjdWSKC/RYkAAAAAuAuaHAA8yszVKSooMhzHQQF+GtGpsYWJAAAAALgLmhwAPEZ2fqE+WLffVBvSLka1w4MtSgQAAADAndDkAOAxPv0pVadzCky1Md3iLEoDAAAAwN3Q5ADgEYrshqavTDbVerWso2bR1S1KBAAAAMDd0OQA4BEWbz+ilOPZptr9iU0tSgMAAADAHdHkAOARpq0wz+K4on6EOsfXtigNAAAAAHdEkwOA29t04JTWp5ww1e5PjJPNZrMoEQAAAAB3RJMDgNt7d8Ve03HdiGDdfFUDi9IAAAAAcFc0OQC4tdST2Vq45bCpNqpLEwUF8McXAAAAADO+SwDg1masSlGR3XAchwb6656ExhYmAgAAAOCuaHIAcFuZuQX6eMMBU21oh1jVCAu0KBEAAAAAd0aTA4DbmrPhgM7kFTqObTbpvm5xFiYCAAAA4M5ocgBwS4VFdr23KsVU69u6rhrXrmZNIAAAAABujyYHALe0cMthpZ3KMdXuT2xqURoAAAAAnoAmBwC3YxiGppbYNvbqhpFq37imRYkAAAAAeAKaHADcTtK+k9qUetpUuz8xTjabzaJEAAAAADwBTQ4AbqfkLI6YyFDd2KaeRWkAAAAAeAqaHADcSkp6lhZtO2Kq3du1iQL8+eMKAAAAQMX4rgGAW5m+KlmGce64enCA7uzY0LpAAAAAADwGTQ4AbuNUdr7mJqWaasMSGqp6SKBFiQAAAAB4EpocANzGB+v2K6egyHHs72fT6K5xFiYCAAAA4ElocgBwC/mFds1cnWKqDbiyvmIiQ60JBAAAAMDj0OQA4BYWbDqoo5l5ptr9icziAAAAAFB5NDkAWM4wDE1dmWyqJTSppatiI60JBAAAAMAj0eQAYLnVe45r+6EMU20sszgAAAAAXCSaHAAsN3XFXtNxk9ph6n1FXYvSAAAAAPBUNDkAWGr30Uwt+e2YqTamW5z8/WwWJQIAAADgqWhyALDUtBJrcdQIDdSQ9rEWpQEAAADgyWhyALBM+pk8ffZzmqk2vFMjhQUFWJQIAAAAgCejyQHAMrPX7lN+od1xHOhv08jOTawLBAAAAMCj0eQAYIncgiLNWrPPVBt4dYzqRoRYlAgAAACAp6PJAcAS8zam6XhWvqnGtrEAAAAALgdNDgAuZ7cbpRYc7dYsSlfUj7AoEQAAAABvQJMDgMst23lMu4+eMdWYxQEAAADgctHkAOByU1fuNR03jw5XjxZ1LEoDAAAAwFvQ5ADgUlsPntaq3cdNtbGJcbLZbBYlAgAAAOAtaHIAcKmSa3FEhQdp0DUxFqUBAAAA4E1ocgBwmSMZuVqw6aCpNqJTE4UE+luUCAAAAIA3ockBwGVmrk5RQZHhOA4O8NPwTo0sTAQAAADAm9DkAOAS2fmF+mDdflPttnaxqh0ebFEiAAAAAN6GJgcAl/j0p1Sdzikw1cZ0Y9tYAAAAAM5DkwNAlSuyG6UWHL2+VbSaRYdblAgAAACAN6LJAaDKLd5+RPuOZ5tqY5nFAQAAAMDJaHIAqHJTV+w1HbeuH6HO8bUtSgMAAADAW9HkAFClfjlwShtSTppq93ePk81msygRAAAAAG9FkwNAlSo5i6NuRLBuurKBRWkAAAAAeDOaHACqTOrJbC3ccthUG90lTkEB/NEDAAAAwPn4TgNAlZmxKkVFdsNxHBbkr7sTGlmYCAAAAIA3o8kBoEpk5Bbo4w0HTLWhHRqqRligRYkAAAAAeDuaHACqxCcbDuhMXqHj2GaT7u3axLpAAAAAALweTQ4ATldYZNd7q1JMtX6t66lx7WrWBAIAAADgE2hyAHC6hVsOK+1Ujqk2NjHOojQAAAAAfAVNDgBOZRhGqW1jr2kYqfaNa1qUCAAAAICvoMkBwKmS9p3UptTTptrYxDjZbDaLEgEAAADwFTQ5ADjVu8vNszhiIkN1Y5t6FqUBAAAA4EtocgBwmuT0LH2//Yipdl+3OAX480cNAAAAgKrHdx4AnOa9VckyjHPH1YMDNLRDrHWBAAAAAPgUmhwAnOJUdr7mJqWaandd10jVQwItSgQAAADA19DkAOAUH6zbr5yCIsexv59No7o0sS4QAAAAAJ9DkwPAZcsvtGvm6hRT7aYr6ysmMtSaQAAAAAB8Ek0OAJdtwaaDOpqZZ6qNTYyzKA0AAAAAX0WTA8BlMQxD764wbxubEFdLV8VGWhMIAAAAgM+iyQHgsqzec1w7DmeaamO7MYsDAAAAgOvR5ABwWUrO4mhSO0x9rqhrURoAAAAAvowmB4BLtutIppb+dsxUG9MtTn5+NosSAQAAAPBlNDkAXLJpK5NNx5FhgRrSPtaiNAAAAAB8HU0OAJck/UyePt+YZqrdc10jhQUFWJQIAAAAgK+jyQHgksxas0/5hXbHcZC/n0Z1bmJdIAAAAAA+jyYHgIuWW1CkWWv3mWoDr2mg6IgQixIBAAAAAE0OAJdg3sY0ncjKN9XGsG0sAOD/27vzuCirfw/gn2HfRARUQFxBxIVfYuCS4JZ7Khct9VqKa7hUv7z+rFum7blUP7tt7uJSaW65YYWVaGKKC3UVFwShBDFBTRbZhjn3D+48zchsDIOz8Hm/Xr6cmXOeM2eew3meeb5zznmIiIjMjEEOIqoThUJg/QO3jY3u6IvO/p5mqhEREREREVGNRhvkuHXrFg4ePIglS5ZgxIgR8PX1hUwmg0wmw9SpU+tc3rfffovY2FgEBgbC2dkZgYGBiI2NxbfffmtwGXK5HKtXr0Z0dDSaN28OV1dXBAUFIT4+Hunp6XWuE1FDOJpRgKyCUrXXOIqDiIiIiIgsQaO9DULLli1NUo5CocCzzz6LDRs2qL2el5eHvLw87N27FzNnzsSaNWtgZ6c9plRYWIiRI0fi9OnTaq9fu3YNa9euxebNm/Hpp59i5syZJqk3kbHWPTCKo2MLD/QPaW6m2hAREREREf2t0Y7kUNWmTRsMHTrUqG0XLVokBTjCw8Oxbds2pKamYtu2bQgPDwcArF+/Hq+99prWMqqrqxEbGysFOMaOHYtvv/0Wp06dwscff4wWLVqgoqIC8fHxdRoZQmRq6Tfu4UTWbbXXZka3h0wmM1ONiIiIiIiI/tZoR3IsWbIEkZGRiIyMRMuWLZGTk4P27es25D4jIwMffPABACAiIgLHjh2Dq6srACAyMhJjxoxB//79cebMGbz//vuYPn06goODa5WzefNmHD9+HAAwd+5cfPbZZ1Jaz549MWLECDz66KMoKirCCy+8gEuXLsHBodE2HZnRhp+z1Z77ejghpnsrM9WGiIiIiIhIXaMdyfHmm29i1KhR9Zq28tFHH0EulwMAPvnkEynAoeTm5oZPPvkEQM16GytXrtRYjjJQ4u3tjffff79WenBwMF555RUAQGZmJr755huj60xkrJv3yrH/txtqr03u3Q4ujvZmqhEREREREZG6RhvkqC8hBPbt2wcACA0NRe/evTXm6927Nzp16gQA2LdvH4QQaukZGRm4dOkSAGD8+PFwc3PTWI7qYqgMcpA5bP4lB3LF33+/zg52eKZ3GzPWiIiIiIiISB2DHEbKzs7GjRs1v2r3799fZ15lel5eHnJyctTSlNNU9JXj5+eHkJAQAEBKSooxVSYyWmmFHF+e/F3ttbE9AuHj4WymGhEREREREdXGhR2MdPHiRelxaGiozryq6ZcuXVJb+6Ou5WRkZOD69esoLS2Fu7u7wfXNzc3VmZ6fny89LisrQ1lZmcFlk3mUl5drfNwQtqXmoqhcrvbaM5H+/Dsx0sNsOzIttp11Y/tZL7ad9WLbWS+2nXWzlvZriOsJBjmMpBo0CAwM1Jm3devW0uPr16/XuxwhBHJzc6VpMIZQrYM+x44dg6+vr8H5yfyOHTvWYGUrBLA6zR7A33dQ6eKlQOa5FGQ22Ls2Hg3ZdtSw2HbWje1nvdh21ottZ73YdtbNktuvsLDQ5GVyuoqRiouLpcceHh4686qOuCgpKWmQcogayvk7MhRWqN8idlCA0JKbiIiIiIjIfDiSw0iqQ36cnJx05nV2/nvdggeH45iqHH0eHEHyoPz8fPTs2RMA0K9fP72jSsj8ysvLpahsv3794OLi0iDvs3njWQD3pOed/Tww98lIyGQy7RuRTg+r7cj02HbWje1nvdh21ottZ73YdtbNWtpP37IKxmCQw0iqfySVlZU681ZUVEiPH7zN7IPl6Prj01WOPnUJWri6uta5fDIvFxeXBmmztD/u4tz1e2qvPds/SOtdgKjuGqrtqOGx7awb2896se2sF9vOerHtrJslt19D1IvTVYzUpEkT6bG+qSOlpaXS4wenpJiqHKKGsP54ttpzP08XPBEWYKbaEBERERER6cYgh5FUR0boG2KjOlXkwQVAjSlHJpNxOgk1uOt37uPb8/lqr8U91g5ODjxsEBERERGRZeLVipG6dOkiPb58+bLOvKrpnTt3rnc5rVu3rtPtY4mMselEDhQq64u6OdljUs825qsQERERERGRHgxyGKl9+/YICKgZtn/06FGdeZULvrRq1Qrt2rVTS4uKipIe6yrn5s2byMjIAAD07dvXmCoTGayovApfn1ZfrHZ8RGs0dXM0U42IiIiIiIj0Y5DDSDKZDDExMQBqRlicPHlSY76TJ09KIzBiYmJq3ZEiJCREGt2xY8cO3L9/X2M5mzZtkh7HxsbWt/pEOn2deh0lFXLpuUwGTO/b3ow1IiIiIiIi0o9Bjnp48cUXYW9vDwB4/vnna93WtaysDM8//zwAwMHBAS+++KLGcv71r38BAO7cuYOXXnqpVnpWVhaWLl0KAAgODmaQgxqUvFqBhBT1BUeHdfFDGx/eUYWIiIiIiCxbo72F7PHjx5GZmSk9LywslB5nZmaqjZwAgKlTp9YqIyQkBAsXLsSyZctw5swZ9O3bFy+//DKCgoKQlZWF5cuXIy0tDQCwcOFCdOzYUWNd4uLisHHjRqSkpOCzzz7DzZs3MWvWLDRr1gypqal4++23UVRUBDs7O3z88cdwcGiczSaEwPyvfzV3NSxGdXU1buTXxCl/KEmXAm71dfd+FW7cK1d7bVY/juIgIiIiIiLL1zivlgGsX78emzdv1piWkpKClJQUtdc0BTkA4N1338WtW7ewceNGpKWlYeLEibXyzJgxA++8847Wutjb22Pv3r0YOXIkTp8+jd27d2P37t1qeZydnfHpp59ixIgRej6Zbdv76w1zV8HC1AQ5zhb+2WDv0L21F3q0adZg5RMREREREZkKp6vUk52dHTZs2IDExETExMQgICAATk5OCAgIQExMDA4dOoT169fDzk73rvb19cWJEyfw+eefIyoqCj4+PnBxcUGHDh0wa9YsnD17FjNnznxIn4rob7OiO9RaS4aIiIiIiMgSNdqRHJs2bao1JaU+Ro4ciZEjR9arDAcHB8yZMwdz5swxUa2I6qdHGy8M69rS3NUgIiIiIiIySKMNcpB1mjMgyNxVsBjyKjmys2sWCG3fvj0cHE3bnQObuWLUPwLgYM8BX0REREREZB0Y5CCrIZPJ8PLwUHNXw2KUlZUhKSkLADB0cBBcXV3NXCMiIiIiIiLz4k+0RERERERERGQTGOQgIiIiIiIiIpvAIAcRERERERER2QQGOYiIiIiIiIjIJjDIQUREREREREQ2gUEOIiIiIiIiIrIJDHIQERERERERkU1gkIOIiIiIiIiIbAKDHERERERERERkExjkICIiIiIiIiKbwCAHEREREREREdkEBjmIiIiIiIiIyCYwyEFERERERERENoFBDiIiIiIiIiKyCQxyEBEREREREZFNYJCDiIiIiIiIiGwCgxxEREREREREZBMY5CAiIiIiIiIim8AgBxERERERERHZBAY5iIiIiIiIiMgmMMhBRERERERERDaBQQ4iIiIiIiIisgkO5q4AWQa5XC49zs/PN2NNyFBlZWUoLCwEAOTm5sLV1dXMNSJDse2sF9vOurH9rBfbznqx7awX2866WUv7qV57ql6T1geDHAQAKCgokB737NnTjDUhIiIiIiKixqagoADt2rWrdzmcrkJERERERERENkEmhBDmrgSZX3l5Oc6fPw8AaN68ORwcOMjH0uXn50ujblJTU+Hv72/mGpGh2HbWi21n3dh+1ottZ73YdtaLbWfdrKX95HK5NKsgLCwMLi4u9S6TV7IEAHBxcUFkZKS5q0FG8vf3R2BgoLmrQUZg21kvtp11Y/tZL7ad9WLbWS+2nXWz9PYzxRQVVZyuQkREREREREQ2gUEOIiIiIiIiIrIJDHIQERERERERkU1gkIOIiIiIiIiIbAKDHERERERERERkExjkICIiIiIiIiKbwCAHEREREREREdkEmRBCmLsSRERERERERET1xZEcRERERERERGQTGOQgIiIiIiIiIpvAIAcRERERERER2QQGOYiIiIiIiIjIJjDIQUREREREREQ2gUEOIiIiIiIiIrIJDHIQERERERERkU1gkIOIiIiIiIiIbAKDHERERERERERkExjk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bdswadIkvPHGGwbv8/DwcLi4uKC8vByLFy+Go6Mj2rZtK416aNWqlcYpP0899RReeOEF3Lt3T1qTxNwLjjak6OhoZGVlIS8vDwDg4OCA3r17a80fFRWFX3/9FdeuXQNQE6zSNvKDiIhIGwY5iIiIrNzixYvRtWtXLFiwADk5OUhKSkJSUpLW/F27dlX7tRwA/vnPf+Lw4cNISkpCRkYGZsyYoZbu6uqKLVu2IDEx0aAgx7x583D06FFs2rQJEydOrJXu7++P77//Hk2bNlV7XSaTYevWrRg0aBDu3r2LHTt2YMeOHWp5wsLCsHPnTgQEBGh9fzs7O+zduxdxcXHYtWsXMjIy8OKLL+qttyGaNGmCF154AStWrMC5c+cwdOhQtfQjR45gwIABtbZzdXXFpEmTsGrVKgBA06ZNMW7cOJPUyRL169dPbTROeHi4NL1Kk6ioKGlkElDTzl5eXg1YQyIiskWcrkJERGQDxo4diytXruDLL7/EM888g06dOqFZs2ZwcHCAt7c3evTogblz5+Knn37C+fPna12YOzo6IjExER9//LE02sHV1RXBwcGYPXs2zp07h6eeeqpOdUpISMBXX32FAQMGwMfHB87OzggJCcFLL72E9PR0dOnSReN23bt3x6+//orZs2ejbdu2cHR0hLe3N3r27IkPPvgAqampalNGtHFzc8POnTvx008/YfLkyWjfvj1cXV3h5OSE1q1bY/To0VizZg0WLFhQp88F1Ey5WbduHaKjo+Ht7a1xMU1NlLfgBYCJEydqXeTVFjw41UTfqIwHp7JwqgoRERlDJiz95vJERERkFXJycqT1JRISEjB16lTzVsgCrVu3Ds8++ywA4NSpU+jZs2e9y3zjjTfw5ptvAqi5A05jxf1AREQAp6sQERERPTQbN24EUHPbXFMEOB504cIF6XH79u1t/var2dnZ0l14bt26ZebaEBGRJWCQg4iIiOghOHbsGE6ePAkAmD17doO8h/IOJYD2tUFsybRp0/TeUYiIiBoXBjmIiIiIGsjvv/+OiooKpKenY/78+QAAPz8/m76rChERkTlxTQ4iIiIyCa7JUVu7du3w+++/q722c+dOPPnkk2aqERERkW3j3VWIiIiIGliTJk3Qp08fHDx4kAEOIiKiBsSRHERERERERERkEziSg4iIiIiIiIhsAoMcRERERERERGQTGOQgIiIiIiIiIpvAIAcRERERERER2QQGOYiIiIiIiIjIJjDIQUREREREREQ2gUEOIiIiIiIiIrIJDHIQERERERERkU1gkIOIiIiIiIiIbAKDHERERERERERkExjkICIiIiIiIiKbwCAHEREREREREdkEBjmIiIiIiIiIyCYwyEFERERERERENoFBDiIiIiIiIiKyCQxyEBEREREREZFNYJCDiIiIiIiIiGwCgxxEREREREREZBP+D+UZt5gbKMESAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Put results into a Dataframe\n", + "df = pd.DataFrame(parametric.results)\n", + "\n", + "# Plot results\n", + "fig = plt.figure(figsize=(6,4), dpi=200)\n", + "ax = fig.subplots(1)\n", + "\n", + "hvac_df = df[df['export_system_design.cables'] == 'XLPE_1000mm_220kV']\n", + "hvdc_df = df[df['export_system_design.cables'] == 'HVDC_2000mm_320kV']\n", + "\n", + "ax.plot(hvac_df[\"plant.capacity\"],\n", + " (hvac_df[\"cable_cost\"] + hvac_df[\"oss_cost\"])/1e6,\n", + " label='HVAC')\n", + "\n", + "ax.plot(hvdc_df[\"plant.capacity\"],\n", + " (hvdc_df[\"cable_cost\"] + hvdc_df[\"oss_cost\"])/1e6,\n", + " label='HVDC')\n", + "\n", + "ax.set_ylabel(\"CapEx [$M]\")\n", + "ax.set_xlabel(\"Capacity [MW]\")\n", + "ax.legend()\n", + "ax.grid()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This plot shows that for a project that has less than 700MW of capacity you should use HVAC. But for projects greater than 700MW should use HVDC, if only considering the CapEx." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/configs/example_floating_project.yaml b/examples/configs/example_floating_project.yaml index baad61c0..3bb7b468 100644 --- a/examples/configs/example_floating_project.yaml +++ b/examples/configs/example_floating_project.yaml @@ -19,6 +19,7 @@ export_cable_install_vessel: example_cable_lay_vessel mooring_install_vessel: example_support_vessel oss_install_vessel: floating_heavy_lift_vessel support_vessel: example_support_vessel +ahts_vessel: example_ahts_vessel towing_vessel: example_towing_vessel towing_vessel_groups: station_keeping_vessels: 2 @@ -27,8 +28,11 @@ wtiv: floating_heavy_lift_vessel # Module Specific substructure: takt_time: 168 -OffshoreSubstationInstallation: - feeder: floating_barge +substation_design: + oss_substructure_type: Floating +mooring_system_design: + anchor_type: Suction Pile + mooring_type: Catenary array_system: free_cable_length: 0.5 array_system_design: @@ -40,16 +44,16 @@ export_system_design: # Configured Phases design_phases: - ArraySystemDesign -- ExportSystemDesign +- ElectricalDesign - MooringSystemDesign -- OffshoreSubstationDesign +- OffshoreFloatingSubstationDesign - SemiSubmersibleDesign install_phases: ArrayCableInstallation: 0 ExportCableInstallation: 0 MooredSubInstallation: 0 MooringSystemInstallation: 0 - OffshoreSubstationInstallation: 0 + FloatingSubstationInstallation: 0 TurbineInstallation: 0 # Project Inputs turbine: 12MW_generic diff --git a/examples/cost_curves.ipynb b/examples/cost_curves.ipynb new file mode 100644 index 00000000..8620b1af --- /dev/null +++ b/examples/cost_curves.ipynb @@ -0,0 +1,1406 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cost Curve Creator\n", + "\n", + "This notebook enables fitting curves to ORBIT models to create a cost function that can be\n", + "embedded in NRWAL.\n", + "A variety of curve and surface fitting options are available, and new ones can be added easily.\n", + "There are also tools for visualizing the ORBIT data and fitted curves.\n", + "\n", + "## Dependencies\n", + "\n", + "- ORBIT\n", + "- ipympl enables interactive matplotlib elements in jupyter notebooks via the `%matplotlib widget` magic command below\n", + "\n", + "## Instructions\n", + "\n", + "Follow the steps below to configure and run the notebook.\n", + "\n", + "1. Create a basic ORBIT configuration file including at least the following sections:\n", + "- site\n", + "- turbine\n", + "- plant\n", + "\n", + "2. Configure the notebook by setting the following variables in the \"Configuration\" section:\n", + "- `BASE_CONFIG`: the ORBIT config file at a given path\n", + "- `DEPTHS`: a list of water depths to use for cost curves\n", + "- `MEAN_WIND_SPEED`: a list of mean wind speed to use for cost curves\n", + "- Add any additional global parameter ranges\n", + "\n", + "3. Run the notebook to establish a first-pass fit for the ORBIT data. This will also plot the ORBIT\n", + "data and curves.\n", + "\n", + "4. Refine the curve fits by swapping the curve-fit function from the options available in\n", + "the \"Curve Fit Library\" section\n", + "\n", + "## Practical Guidance\n", + "\n", + "This notebook specifically models spatially varying costs typically related to water depth\n", + "but in some cases other variables are considered. The same methods could be used to model\n", + "the cost relationship for other variables. The general workflow is to first create a parameterized\n", + "ORBIT model and obtain the cost as a function of the variables of interest.\n", + "Then, fit a curve or surface to the data by starting with the linear options.\n", + "Plot the data and curve fits to evaluate whether the linear forms are sufficient.\n", + "If not, move to the quadratic or higher order curve fits.\n", + "\n", + "A class `CostFunction` is provided to simplify running the ORBIT parameterization, fit the\n", + "curves to the data, and visualize the results. An example is given below to instantiate the\n", + "class:\n", + "```python\n", + "cost_function = CostFunction(\n", + " config={\"design_phases\": [\"MonopileDesign\"]},\n", + " parameters={\n", + " \"site.depth\": DEPTHS,\n", + " \"site.mean_windspeed\": MEAN_WIND_SPEED,\n", + " },\n", + " results={\n", + " \"monopile_unit_cost\": lambda run: run.design_results[\"monopile\"][\"unit_cost\"],\n", + " }\n", + ")\n", + "```\n", + "\n", + "The config parameter is a dictionary containing additional configuration parameters to add to\n", + "the basic ORBIT configuration provided through the input file created in Step 1 in the instructions.\n", + "Any parameters given in the `CostFunction` config will be added to the base configuration or\n", + "overwritten if they already exist. The parameters dictionary contains the variables to be varied\n", + "in the cost function via `ORBIT.ParametricManager`, and the results dictionary sets the results\n", + "variables from ORBIT. Each of these dictionaries are passed directly to the\n", + "`ORBIT.ParametricManager` class.\n", + "\n", + "The fitted curves are saved on the `CostFunction` object and multiple types can exist at the\n", + "same time. Two versions of one type cannot be saved at the same time. To create a curve fit,\n", + "call one of the curve fit methods on the `CostFunction` instance. Then, an attribute is saved\n", + "on the instance with the curve fit type.\n", + "\n", + "Considerations:\n", + "- The `CostFunction` class supports parameterizations of at-most 2 variables.\n", + "- One instance of the `CostFunction` class can be used to fit multiple curves for a single\n", + " cost model.\n", + "- A new `CostFunction` instance should be created for each cost model.\n", + "\n", + "### Plotting API for 2D vs 3D plots\n", + "The `CostFunction` class handles 2D and 3D data seamlessly by using the x and z parameters for 2D\n", + "and adding y for 3D. The appropriate matplotlib API is used depending if the data is 2D or 3D.\n", + "From the calling script, be sure to configure the Axes that is given to `CostFunction.plot` with\n", + "the correct settings for 3D as listed in the table below.\n", + "\n", + "| Matplotlib setting | 2D | 3D |\n", + "|---------------------|----|----|\n", + "| Independent axis labels | `ax.set_xlabel()` | `ax.set_xlabel()`, `ax.set_zlabel()` |\n", + "| Dependent axis label | `ax.set_ylabel()` | `ax.set_zlabel()` |\n", + "\n", + "### Template workflow\n", + "\n", + "The following code block provides a template for creating a cost function for a model with\n", + "two independent parameters.\n", + "\n", + "```python\n", + "\n", + "# Create the CostFunction object with the ORBIT configuration for the parameterization\n", + "cost_function = CostFunction(\n", + " config={\n", + " \"design_phases\": [\"Design\"],\n", + " },\n", + " parameters={\n", + " \"site.depth\": DEPTHS,\n", + " \"site.mean_windspeed\": MEAN_WIND_SPEED,\n", + " },\n", + " results={\n", + " \"system_cost\": lambda run: run.design_results[\"system\"][\"system_cost\"],\n", + " }\n", + ")\n", + "\n", + "# Run ORBIT via ORBIT.ParametricManager\n", + "cost_function.run()\n", + "\n", + "# Fit two curves (surfaces since there are two independent parameters) to the data.\n", + "# After running the following two commands, the CostFunction object will have two related\n", + "# attributes that store the curve fits.\n", + "cost_function.fit_curve(\"linear_2d\")\n", + "cost_function.fit_curve(\"quadratic_2d\")\n", + "\n", + "# Plot the data and curves\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(1, 1, 1)\n", + "ax.set_title(\"Depth vs mean wind speed\")\n", + "ax.set_xlabel(\"Depth (m)\")\n", + "ax.set_ylabel(\"Mean wind speed (m/s)\")\n", + "ax.set_zlabel(\"Cost ($)\")\n", + "cost_function.plot(ax, plot_data=True)\n", + "cost_function.plot(ax, plot_curves=[\"linear_1d\", \"quadratic_1d\"]) # These curves must have been generated first\n", + "# alternatively, the two lines above could be combined into a single line:\n", + "# cost_function.plot(ax, plot_data=True, plot_curves=[\"linear_1d\", \"quadratic_1d\"])\n", + "\n", + "# Export the curve function to a NRWAL-compatible file\n", + "cost_function.export(\"design.yaml\", \"design_system\")\n", + "```\n", + "\n", + "### Adding a new curve type\n", + "\n", + "There are a number of curve fit options in the `CostFunction` class, and more can be added by\n", + "creating a new method and connecting it in some key places in the class.\n", + "First, create a new method on the `CostFunction` class that follows the naming convention of\n", + "`{curve_type}_{dimension}` where `curve_type` is the name of the type of function like\n", + "\"exponential\" or \"linear\" and `dimension` is the number of independent variables the curve.\n", + "The function should return the fitted curve evaluated at the data points given to fit the curve.\n", + "A generic function signature is given below:\n", + "```python\n", + "class CostFunction:\n", + "\n", + " def curvetype_dimension(self):\n", + "\n", + " # Such as:\n", + " def linear_1d(self):\n", + "```\n", + "\n", + "To fit a curve to the data for one independent variable, it is recommended to use the\n", + "`scipy.optimize.curve_fit` function via the `Curves` class.\n", + "In general, a one-dimensional curve fit function will follow the form given below.\n", + "By setting the curve fit function `f`, you define the shape of the curve and set\n", + "the order of the coefficients in `self.coeffs` since they are returned in the order they are\n", + "given in the function signature.\n", + "The `Curves.polynomal_eval` function is available to easily evaluate polynomial curves, but other\n", + "curve-types can be evaluated by simply plugging in the data points (`self.x`) to the fitted\n", + "function.\n", + "\n", + "```python\n", + "# Define a function for a prototype curve; this is where you define the shape of the curve\n", + "def f(x, a, b):\n", + " return a * x + b\n", + "\n", + "# Call the scipy.optimize.curve_fit function and get the coefficients as a Numpy array\n", + "# Note that `self.x` and `self.z` are given since the CostFunction class adds a y\n", + "# only when there are more independent variables.\n", + "self.coeffs = Curves.fit(f, self.x, self.z)\n", + "\n", + "# Evaluate the curve at the data points (self.x)\n", + "self._linear_1d_curve = Curves.polynomial_eval(self.coeffs, self.x)\n", + "```\n", + "\n", + "A two-dimensional curve (surface) fit will typically follow a similar process, as should below.\n", + "For these types, it is recommended to use the `numpy.linalg.lstsq` function.\n", + "First, reshape the data into a new array with each element containing the three-dimensional\n", + "data points.\n", + "Then, stack the data into a column matrix in the form of the equation that you're implementing.\n", + "See the comments in the code block for more information.\n", + "Evaluate the curve at the data points (`self.x`, `self.y`) by stating the form of the curve\n", + "with the coefficients from the curve fit.\n", + "\n", + "```python\n", + " # Reshape the data into a new array with each element containing the three-dimensional data points\n", + " data_to_fit = np.array(list(zip(self.x, self.y, self.z)))\n", + "\n", + " # Stack the data into a column matrix in the form of the equation that you're implementing.\n", + " # Here, the equation is z = ax + by + c and data_to_fit[:,0] are the x values,\n", + " # data_to_fit[:,1] are the y values. The third column is all ones to account for the constant\n", + " # term.\n", + " A = np.c_[\n", + " data_to_fit[:,0],\n", + " data_to_fit[:,1],\n", + " np.ones(data_to_fit.shape[0])\n", + " ]\n", + "\n", + " # Fit the curve to the data; the data is the cost and these are always `self.z` which is data_to_fit[:,2]\n", + " self.coeffs,_,_,_ = linalg.lstsq(A, data_to_fit[:,2])\n", + "\n", + " # Evaluate it on the same points as the input data\n", + " self._linear_2d_curve = self.coeffs[0]*self.x + self.coeffs[1]*self.y + self.coeffs[2]\n", + "```\n", + "\n", + "Finally, save the coefficients to `self.coeffs`, save the evaluated curve to\n", + "`self._{curve_type}_{dimension}_curve`, and add the corresponding if-statements\n", + "in `CostFunction.plot` and `CostFunction.export`." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib widget\n", + "\n", + "from copy import deepcopy\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "from scipy import stats, optimize, linalg\n", + "import yaml\n", + "\n", + "from ORBIT import (\n", + " ParametricManager,\n", + " load_config,\n", + ")\n", + "\n", + "import matplotlib as mpl\n", + "mpl.rcParams[\"figure.autolayout\"] = True" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Configuration\n", + "\n", + "Replace any of these throughout the notebook to customize a cost model parameterization." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "BASE_CONFIG = load_config(\"nrwal.yaml\")\n", + "\n", + "DEPTHS = [i for i in range(5, 60, 5)] # Ocean depth in meters\n", + "MEAN_WIND_SPEED = [i for i in range(2, 20, 2)] # Mean wind speed in m/s" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "orbit_to_nrwal_params = {\n", + " \"site.depth\": \"depth\",\n", + " \"site.mean_windspeed\": \"mean_windspeed\", # Not in NRWAL\n", + " \"site.distance_to_landfall\": \"dist_s_to_l\",\n", + " \"mooring_system_design.draft_depth\": \"draft_depth\", # Not in NRWAL\n", + " \"array_system_design.touchdown_distance\": \"touchdown_distance\", # Not in NRWAL\n", + " \"array_system_design.floating_cable_depth\": \"floating_cable_depth\", # Not in NRWAL\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Curve Fit Library" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "class Curves():\n", + " \"\"\"\n", + " This class contains static methods for fitting data to various curve types.\n", + " Though they could exist outside of a class, consolidating them into a consistent\n", + " namespace allows for a simpler API throughout the script.\n", + " \"\"\"\n", + "\n", + " @staticmethod\n", + " def polynomial_eval(coeffs, data_points):\n", + " \"\"\"\n", + " This method evaluates a curve defined by a polynomial equation given a set of\n", + " coefficients and data points.\n", + "\n", + " Args:\n", + " coeffs (list): A list of coefficients for the curve. The order of the\n", + " coefficients should be from highest to lowest power.\n", + " data_points (list): A list of data points at which to evaluate the curve.\n", + "\n", + " Returns:\n", + " np.array: The curve evaluated at the given data points.\n", + " \"\"\"\n", + " curve = np.zeros_like(data_points)\n", + " for i, dp in enumerate(data_points):\n", + "\n", + " # This loop sums the terms of the polynomial\n", + " for j in range(len(coeffs)):\n", + " curve[i] += coeffs[j] * (dp ** (len(coeffs) - 1 - j))\n", + " return curve\n", + "\n", + " @staticmethod\n", + " def fit(func, x, y, fit_check=False):\n", + " if x is pd.Series:\n", + " x = x.to_numpy(dtype=np.float64)\n", + " elif x is np.array:\n", + " x = x.astype(np.float64)\n", + " if y is pd.Series:\n", + " y = y.to_numpy(dtype=np.float64)\n", + " elif y is np.array:\n", + " y = y.astype(np.float64)\n", + "\n", + " popt, pcov, nfodict, mesg, ier = optimize.curve_fit(func, x, y, full_output=True)\n", + "\n", + " if fit_check:\n", + " print(f\"mesg: {mesg}\")\n", + " print(f\"ier: {ier}\")\n", + " print(f\"Coefficients: {popt}\")\n", + " # print(f\"R-squared: {rvalue**2:.6f}\")\n", + " \n", + " return popt" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "class CostFunction():\n", + " \"\"\"\n", + " This class is used to create the ORBIT parameterization, fit a curve, plot the curve, and\n", + " export the function to NRWAL format. Parameterizations are limited to up to two independent\n", + " variables.\n", + " \"\"\"\n", + " def __init__(self, config: dict, parameters: dict, results: dict):\n", + " \"\"\"\n", + " On initialization, the config, parameters, and results dictionaries are prepared for\n", + " use in ORBIT.ParametricManager. Additionally, the independent variables are extracted\n", + " into x and y (for two-variable parameterizations) and z is extracted as the dependent\n", + " variable. Whether the cost function is 3D or 2D is determined by the length of the\n", + " parameters variable.\n", + "\n", + " Args:\n", + " config (str): Configuration settings to added to the BASE_CONFIG or overwrite\n", + " in the BASE_CONFIG. This must include the `design_phases` config.\n", + " parameters (dict): Parameters to use with ORBIT.ParametricManager; maximum of two\n", + " parameters are supported.\n", + " results (dict): Results to use with ORBIT.ParametricManager; this must include only\n", + " one variable.\n", + " \"\"\"\n", + " self.is_3d = False\n", + "\n", + " # Other attributes\n", + " # self.parametric\n", + " # self.x\n", + " # self.y\n", + " # self.z\n", + " # self.x_variable\n", + " # self.y_variable\n", + " self._linear_1d_curve = None\n", + " self._quadratic_1d_curve = None\n", + " self._poly3_1d_curve = None\n", + " self._linear_2d_curve = None\n", + " self._quadratic_2d_curve = None\n", + "\n", + " # Start with a copy of the global BASE_CONFIG and update it with the configuration\n", + " # given to this class\n", + " self.config = deepcopy(BASE_CONFIG)\n", + " self.config.update(config)\n", + "\n", + " self.parameters = deepcopy(parameters)\n", + " if len(self.parameters) > 2:\n", + " raise ValueError(\"This class is limited to parameterizations with two variables.\")\n", + "\n", + " # Puts the parameters and results settings into variables for use in parsing the ORBIT\n", + " # results and postprocessing the data\n", + " self.parameters = deepcopy(self.parameters)\n", + " _vars = list(self.parameters.keys())\n", + " self.x_variable = _vars.pop(0) # NOTE: This assumes the first parameter is site.depth; it's not critical to functionality but good to keep in mind\n", + " if len(_vars) == 1:\n", + " self.is_3d = True\n", + " self.y_variable = _vars.pop()\n", + " self.z_variable = list(results.keys())[0]\n", + "\n", + " self.results = deepcopy(results)\n", + " if len(results) != 1:\n", + " raise ValueError(\"This class is limited to results with one variable\")\n", + "\n", + " def run(self):\n", + " self.parametric = ParametricManager(self.config, self.parameters, self.results, product=True)\n", + " self.parametric.run()\n", + "\n", + " self.x = self.parametric.results[self.x_variable]\n", + " if self.is_3d:\n", + " self.y = self.parametric.results[self.y_variable]\n", + " self.z = self.parametric.results[self.z_variable]\n", + "\n", + "\n", + " ### --------- Curve fit functions --------- ###\n", + "\n", + " def linear_1d(self):\n", + " def f(x, a, b):\n", + " return a * x + b\n", + " self.coeffs = Curves.fit(f, self.x, self.z)\n", + " self._linear_1d_curve = Curves.polynomial_eval(self.coeffs, self.x)\n", + "\n", + " def quadratic_1d(self):\n", + " def f(x, a, b, c):\n", + " return a * x**2 + b * x + c\n", + " self.coeffs = Curves.fit(f, self.x, self.z)\n", + " self._quadratic_1d_curve = Curves.polynomial_eval(self.coeffs, self.x)\n", + "\n", + " def poly3_1d(self):\n", + " def f(x, a, b, c, d):\n", + " return a * x**3 + b * x**2 + c * x + d\n", + " self.coeffs = Curves.fit(f, self.x, self.z)\n", + " self._poly3_1d_curve = Curves.polynomial_eval(self.coeffs, self.x)\n", + "\n", + " # def logarithmic_1d(self):\n", + " # pass\n", + "\n", + " # def exponential_1d(self):\n", + " # pass\n", + "\n", + " def linear_2d(self):\n", + " data_to_fit = np.array(list(zip(self.x, self.y, self.z)))\n", + "\n", + " # Best-fit linear plane\n", + " A = np.c_[\n", + " data_to_fit[:,0],\n", + " data_to_fit[:,1],\n", + " np.ones(data_to_fit.shape[0])\n", + " ]\n", + " self.coeffs,_,_,_ = linalg.lstsq(A, data_to_fit[:,2]) # coefficients\n", + "\n", + " # Evaluate it on the same points as the input data\n", + " self._linear_2d_curve = self.coeffs[0]*self.x + self.coeffs[1]*self.y + self.coeffs[2]\n", + "\n", + " def quadratic_2d(self):\n", + " data_to_fit = np.array(list(zip(self.x, self.y, self.z)))\n", + "\n", + " # best-fit quadratic curve\n", + " A = np.c_[\n", + " np.ones(data_to_fit.shape[0]),\n", + " data_to_fit[:,:2],\n", + " np.prod(data_to_fit[:,:2], axis=1),\n", + " data_to_fit[:,:2]**2\n", + " ]\n", + " self.coeffs,_,_,_ = linalg.lstsq(A, data_to_fit[:,2])\n", + "\n", + " # Evaluate it on the same points as the input data\n", + " # This dot product is equivalent to the sum of the terms of the polynomial;\n", + " # np.c_[] is used to concatenate the arrays into the correct form for the dot product\n", + " # and C is the coefficients of the polynomial\n", + " self._quadratic_2d_curve = np.dot(\n", + " np.c_[\n", + " np.ones(self.x.shape),\n", + " self.x,\n", + " self.y,\n", + " self.x*self.y,\n", + " self.x**2,\n", + " self.y**2\n", + " ],\n", + " self.coeffs\n", + " ).reshape(self.x.shape)\n", + "\n", + "\n", + " ### --------- Plotting functions --------- ###\n", + "\n", + " def plot(\n", + " self,\n", + " ax,\n", + " plot_data: bool = False,\n", + " plot_curves: list[str] = []\n", + " ):\n", + " if plot_data:\n", + " if self.is_3d:\n", + " ax.scatter(self.x, self.y, zs=self.z, zdir='z', label=\"Data\")\n", + " else:\n", + " ax.scatter(self.x, self.z, label=\"Data\")\n", + "\n", + " for curve in plot_curves:\n", + "\n", + " if curve == \"linear_1d\":\n", + " ax.plot(self.x, self._linear_1d_curve, label=\"Linear Fit\")\n", + "\n", + " if curve == \"quadratic_1d\":\n", + " ax.plot(self.x, self._quadratic_1d_curve, label=\"Quadratic Fit\")\n", + "\n", + " if curve == \"poly3_1d\":\n", + " ax.plot(self.x, self._poly3_1d_curve, label=\"Degree 3 Polynomial Fit\")\n", + "\n", + " if curve == \"linear_2d\":\n", + " ax.plot_surface(\n", + " np.reshape(self.x, (len(DEPTHS), -1)),\n", + " np.reshape(self.y, (len(DEPTHS), -1)),\n", + " np.reshape(self._linear_2d_curve, (len(DEPTHS), -1)),\n", + " alpha=0.3,\n", + " label=\"Linear Fit\"\n", + " )\n", + "\n", + " if curve == \"quadratic_2d\":\n", + " ax.plot_surface(\n", + " np.reshape(self.x, (len(DEPTHS), -1)),\n", + " np.reshape(self.y, (len(DEPTHS), -1)),\n", + " np.reshape(self._quadratic_2d_curve, (len(DEPTHS), -1)),\n", + " alpha=0.3,\n", + " label=\"Quadratic Fit\"\n", + " )\n", + "\n", + "\n", + " ### --------- Export functions --------- ###\n", + "\n", + " def export(self, filename: str, key: str, comments: str = \"\"):\n", + " \"\"\"\n", + " This function writes the curve equation to a file for use in NRWAL.\n", + "\n", + " Args:\n", + " filename (str): The file to write the curve equation to. If the file exists, the\n", + " equation is appended to the end of the file.\n", + " key (str): The key to use in the NRWAL file for the curve equation. In the key-value\n", + " pair, this argument is the key and the value is the equation string.\n", + " \"\"\"\n", + "\n", + " x_var = orbit_to_nrwal_params[self.x_variable]\n", + " if self.is_3d:\n", + " y_var = orbit_to_nrwal_params[self.y_variable]\n", + "\n", + " F = \"{:.1f}\"\n", + " S = \"{:s}\"\n", + " if self._linear_1d_curve is not None:\n", + " # y = ax + b\n", + " equation_string = f\"{F} * {S} + {F}\".format(self.coeffs[0], x_var, self.coeffs[1])\n", + "\n", + " if self._quadratic_1d_curve is not None:\n", + " # y = ax^2 + bx + c\n", + " equation_string = f\"{F} * {S}**2 + {F} * {S} + {F}\".format(self.coeffs[0], x_var, self.coeffs[1], x_var, self.coeffs[2])\n", + "\n", + " if self._poly3_1d_curve is not None:\n", + " # y = ax^3 + bx^2 + cx + d\n", + " equation_string = (\n", + " f\"{F} * {S}**3\"\n", + " f\" + {F} * {S}**2\"\n", + " f\" + {F} * {S}\"\n", + " f\" + {F}\".format(\n", + " self.coeffs[0], x_var,\n", + " self.coeffs[1], x_var,\n", + " self.coeffs[2], x_var,\n", + " self.coeffs[3]\n", + " )\n", + " )\n", + "\n", + " if self._linear_2d_curve is not None:\n", + " # z = ax + by + c\n", + " equation_string = f\"{F} * {S} + {F} * {S} + {F}\".format(self.coeffs[0], x_var, self.coeffs[1], y_var, self.coeffs[2])\n", + "\n", + " if self._quadratic_2d_curve is not None:\n", + " # z = ax^2 + bxy + cy^2 + dx + ey + f\n", + " equation_string = (\n", + " f\"{F} * {S}**2\"\n", + " f\" + {F} * {S} * {S}\"\n", + " f\" + {F} * {S}**2\"\n", + " f\" + {F} * {S}\"\n", + " f\" + {F} * {S}\"\n", + " f\" + {F}\".format(\n", + " self.coeffs[0], x_var,\n", + " self.coeffs[1], x_var, y_var,\n", + " self.coeffs[2], y_var,\n", + " self.coeffs[3], x_var,\n", + " self.coeffs[4], y_var,\n", + " self.coeffs[5]\n", + " )\n", + " )\n", + "\n", + " # nrwal_dict = {self.config[\"design_phases\"][0]: equation_string}\n", + " nrwal_dict = {key: equation_string}\n", + "\n", + " with open(filename, \"a\") as f:\n", + " f.write(\"\\n\")\n", + " if comments:\n", + " f.write(f\"# {comments}\\n\")\n", + " # f.write(f\"# {self.config['design_phases'][0]}\\n\")\n", + " yaml.dump(nrwal_dict, f)\n", + " f.write(f\"\\n\")\n", + " print(nrwal_dict)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ORBIT Design Phase Cost Curves" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Monopile Substructure\n", + "\n", + "Independent variables:\n", + "- Water depth: impacts the mass of the monopile since it is fixed to the ocean floor\n", + "- Mean wind speed: impact the mass of the monopile by the load transferred from the turbine" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ORBIT library intialized at '/Users/rmudafor/Development/orbit/library'\n", + "{'substructure_17MW': '-569653.7 * depth**2 + 12505.1 * depth * mean_windspeed + 545620.3 * mean_windspeed**2 + 6917.7 * depth + 235.1 * mean_windspeed + -15478.7'}\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d67df42313104cf1a234f208e058429d", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOy9eXxcdb3//zznzL5kbZo0abbuC1CgbA0goGBB0Qvql3vV39WKcvWKC3rdvSqI94oLiIiC916Vq+KCV8V73VEERBBZmnRP2zRN2jRp9mT25ZzP74+ZczqTTJKZSdKk7ef5eFTJZM7nfObMZOY17+X1VoQQAolEIpFIJBLJGYO60BuQSCQSiUQikZxcpACUSCQSiUQiOcOQAlAikUgkEonkDEMKQIlEIpFIJJIzDCkAJRKJRCKRSM4wpACUSCQSiUQiOcOQAlAikUgkEonkDEMKQIlEIpFIJJIzDCkAJRKJRCKRSM4wpACUSCQSiUQiOcOQAlAikUgkEonkDEMKQIlEIpFIJJIzDCkAJRKJRCKRSM4wpACUSCQSiUQiOcOQAlAikZwUrrzySq688krr58OHD6MoCg899NCC7WkmzD1++ctfXuitSCQSyZwiBaBEskh46KGHUBQFRVF4+umnJ/1eCEF9fT2KonD99dcvwA4XP8FgkM985jOcddZZeL1eKisrOffcc3n/+9/PsWPHFnp7fOMb31hwwbsY9iCRSBYe20JvQCKRZONyufjBD37AZZddlnX7k08+ydGjR3E6nQu0s9nx+9//fl7XTyQSvOxlL2Pfvn289a1v5b3vfS/BYJDdu3fzgx/8gBtvvJHa2tp53cNMfOMb32DJkiVs27btjN6DRCJZeKQAlEgWGa961av4yU9+wn333YfNduJP9Ac/+AGbN29mcHBwAXdXPA6HY17Xf/TRR9m+fTsPP/wwb3rTm7J+F41Gicfj83r+uSYUCuH1ehd6G3khhCAajeJ2uxd6KxKJJE9kClgiWWS88Y1vZGhoiMcee8y6LR6P8z//8z+ThI1JKBTiX/7lX6ivr8fpdLJ27Vq+/OUvI4TIup+iKLznPe/h0Ucf5ayzzsLpdLJx40Z++9vfTlpz+/btXHfddZSUlODz+XjFK17BX//616z7mGnrp556ine+851UVlZSUlLCW97yFkZGRrLuO7EGcCr27dvHG97wBioqKnC5XFxwwQX87//+74zHdXR0AHDppZdO+p3L5aKkpGTGvWzbto2mpqac63/lK1+hsbERt9vNFVdcwa5du7J+39fXx9ve9jaWL1+O0+lk2bJl/N3f/R2HDx8GoKmpid27d/Pkk09aqX5zD+Z1fPLJJ3n3u9/N0qVLWb58+bR7uv3221EUZdLt3//+97nooovweDyUl5fzspe9zIq+TreHqdYz92Y+DnOd66+/nt/97ndccMEFuN1uvvnNbwIwOjrKbbfdZr0WV61axRe+8AUMw8h5XSUSycIgI4ASySKjqamJLVu28MMf/pDrrrsOgN/85jeMjY3xD//wD9x3331Z9xdC8NrXvpY//elPvP3tb+fcc8/ld7/7HR/+8Ifp6enhK1/5Stb9n376aX72s5/x7ne/G7/fz3333cfrX/96uru7qaysBGD37t1cfvnllJSU8JGPfAS73c43v/lNrrzySp588kkuvvjirDXf8573UFZWxu233057ezsPPPAAXV1dPPHEEzlFxVTs3r2bSy+9lLq6Oj72sY/h9Xp55JFHuOGGG/jpT3/KjTfeOOWxjY2NAHz3u9/lX//1Xws670x897vfJRAIcOuttxKNRvnqV7/Ky1/+cnbu3El1dTUAr3/969m9ezfvfe97aWpqor+/n8cee4zu7m6ampq49957ee9734vP5+OTn/wkgHWsybvf/W6qqqr49Kc/TSgUKnifd9xxB7fffjstLS189rOfxeFw8Nxzz/H444/zyle+Mq895Et7eztvfOMbeec738ktt9zC2rVrCYfDXHHFFfT09PDOd76ThoYGnnnmGT7+8Y/T29vLvffeW9S5JBLJPCAkEsmi4Dvf+Y4AxPPPPy/uv/9+4ff7RTgcFkII8f/+3/8TV111lRBCiMbGRvHqV7/aOu7RRx8VgPjc5z6Xtd4b3vAGoSiKOHjwoHUbIBwOR9ZtbW1tAhBf+9rXrNtuuOEG4XA4REdHh3XbsWPHhN/vFy972csm7Xnz5s0iHo9bt3/xi18UgPjFL35h3XbFFVeIK664wvq5s7NTAOI73/mOddsrXvEKcfbZZ4toNGrdZhiGaGlpEatXr572+oXDYbF27VoBiMbGRrFt2zbxrW99Sxw/fnzSfSfuxeStb32raGxsnLRHt9stjh49at3+3HPPCUB84AMfEEIIMTIyIgDxpS99ado9bty4Med5zet42WWXiWQyOe2eTD7zmc+IzLfwAwcOCFVVxY033ih0Xc+6r2EYM+5h4noT99bZ2Wnd1tjYKADx29/+Nuu+d955p/B6vWL//v1Zt3/sYx8TmqaJ7u7uSetLJJKFQaaAJZJFyE033UQkEuGXv/wlgUCAX/7yl1Omf3/961+jaRrve9/7sm7/l3/5F4QQ/OY3v8m6/eqrr2blypXWz+eccw4lJSUcOnQIAF3X+f3vf88NN9zAihUrrPstW7aMN73pTTz99NOMj49nrflP//RP2O126+d//ud/xmaz8etf/zrvxzw8PMzjjz/OTTfdRCAQYHBwkMHBQYaGhti6dSsHDhygp6dnyuPdbjfPPfccH/7wh4FU6vLtb387y5Yt473vfS+xWCzvvUzkhhtuoK6uzvr5oosu4uKLL7Yen9vtxuFw8MQTT0xKfRfCLbfcgqZpRR376KOPYhgGn/70p1HV7Lf2uYyGmjQ3N7N169as237yk59w+eWXU15ebj1/g4ODXH311ei6zlNPPTXn+5BIJMUhBaBEsgipqqri6quv5gc/+AE/+9nP0HWdN7zhDTnv29XVRW1tLX6/P+v29evXW7/PpKGhYdIa5eXllnAZGBggHA6zdu3aSfdbv349hmFw5MiRrNtXr16d9bPP52PZsmVZdWMzcfDgQYQQfOpTn6Kqqirr32c+8xkA+vv7p12jtLSUL37xixw+fJjDhw/zrW99i7Vr13L//fdz55135r2XiUx8fABr1qyxHp/T6eQLX/gCv/nNb6iuruZlL3sZX/ziF+nr6yvoPM3NzUXvsaOjA1VV2bBhQ9FrFEKuvR44cIDf/va3k56/q6++Gpj5+ZNIJCcPWQMokSxS3vSmN3HLLbfQ19fHddddR1lZ2ZysO1WESUxoGDnZmE0CH/rQhyZFlkxWrVqV93qNjY3cfPPN3HjjjaxYsYKHH36Yz33uc0AqIpbr8eq6XsTOU9x222285jWv4dFHH+V3v/sdn/rUp/j85z/P448/znnnnZfXGrm6aKeK3s1mr7ko9Dy59moYBtdccw0f+chHch6zZs2a4jcokUjmFCkAJZJFyo033sg73/lO/vrXv/LjH/94yvs1Njbyhz/8gUAgkBUF3Ldvn/X7QqiqqsLj8dDe3j7pd/v27UNVVerr67NuP3DgAFdddZX1czAYpLe3l1e96lV5n9dMN9vtditiNBeUl5ezcuXKrK7d8vJyK+WdycRoqcmBAwcm3bZ///5J3bkrV67kX/7lX/iXf/kXDhw4wLnnnsvdd9/N97//faC4VGx5eTmjo6Mz7nXlypUYhsGePXs499xzp1xvqj2Ul5cDqS7ezC8bU12TXKxcuZJgMDinz59EIpkfZApYIlmk+Hw+HnjgAW6//XZe85rXTHm/V73qVei6zv333591+1e+8hUURbE6ifNF0zRe+cpX8otf/CIrhXv8+HHLoDrTUgXgP/7jP0gkEtbPDzzwAMlksqBzL126lCuvvJJvfvOb9Pb2Tvr9wMDAtMe3tbXl9Ejs6upiz549WSntlStXsm/fvqw129ra+Mtf/pJz7UcffTSr/vBvf/sbzz33nPX4wuEw0Wg065iVK1fi9/uzag+9Xm9OMTcdK1euZGxsjB07dli39fb28vOf/zzrfjfccAOqqvLZz352kuVKZrRzqj2YdaGZdXqhUIj//u//znuvN910E88++yy/+93vJv1udHSUZDKZ91oSiWR+kRFAiWQR89a3vnXG+7zmNa/hqquu4pOf/CSHDx9m06ZN/P73v+cXv/gFt912W1bDR7587nOf47HHHuOyyy7j3e9+NzabjW9+85vEYjG++MUvTrp/PB7nFa94BTfddBPt7e184xvf4LLLLuO1r31tQef9+te/zmWXXcbZZ5/NLbfcwooVKzh+/DjPPvssR48epa2tbcpjH3vsMT7zmc/w2te+lksuuQSfz8ehQ4f49re/TSwW4/bbb7fue/PNN3PPPfewdetW3v72t9Pf38+DDz7Ixo0bJzW4QCr1fNlll/HP//zPxGIx7r33XiorK61U5/79+63Hv2HDBmw2Gz//+c85fvw4//AP/2Cts3nzZh544AE+97nPsWrVKpYuXcrLX/7yaa/JP/zDP/DRj36UG2+8kfe9732Ew2EeeOAB1qxZw0svvZS1x09+8pPceeedXH755bzuda/D6XTy/PPPU1tby+c///lp9/DKV76ShoYG3v72t/PhD38YTdP49re/TVVVFd3d3Xk9fx/+8If53//9X66//nq2bdvG5s2bCYVC7Ny5k//5n//h8OHDLFmyJK+1JBLJPLOgPcgSicQi0wZmOibawAghRCAQEB/4wAdEbW2tsNvtYvXq1eJLX/pSlv2HECkbmFtvvTXnmm9961uzbnvppZfE1q1bhc/nEx6PR1x11VXimWeeybnnJ598UvzTP/2TKC8vFz6fT7z5zW8WQ0NDWffNxwZGCCE6OjrEW97yFlFTUyPsdruoq6sT119/vfif//mfaa/LoUOHxKc//WlxySWXiKVLlwqbzSaqqqrEq1/9avH4449Puv/3v/99sWLFCuFwOMS5554rfve7301pA/OlL31J3H333aK+vl44nU5x+eWXi7a2Nut+g4OD4tZbbxXr1q0TXq9XlJaWiosvvlg88sgjWefs6+sTr371q4Xf7xeAdT1meu5///vfi7POOks4HA6xdu1a8f3vf39K25Zvf/vb4rzzzhNOp1OUl5eLK664Qjz22GMz7kEIIV588UVx8cUXC4fDIRoaGsQ999wzpQ3MxNegSSAQEB//+MfFqlWrhMPhEEuWLBEtLS3iy1/+cpZVkEQiWVgUIRa48lsikZyyPPTQQ7ztbW/j+eef54ILLljo7UgkEokkT2QNoEQikUgkEskZhhSAEolEIpFIJGcYUgBKJBKJRCKRnGHIGkCJRCKRSCSSMwwZAZRIJBKJRCI5w5ACUCKRSCQSieQMQwpAiUQikUgkkjMMKQAlEolEIpFIzjCkAJRIJBKJRCI5w5ACUCKRSCQSieQMQwpAiUQikUgkkjMMKQAlEolEIpFIzjCkAJRIJBKJRCI5w7At9AYkEolEsngwDIN4PL7Q25AsUux2O5qmLfQ2JHOAFIASiUQiASAej9PZ2YlhGAu9FckipqysjJqaGhRFWeitSGaBFIASiUQiQQhBb28vmqZRX1+PqsoKIUk2QgjC4TD9/f0ALFu2bIF3JJkNUgBKJBKJhGQySTgcpra2Fo/Hs9DbkSxS3G43AP39/SxdulSmg09h5Fc8iUQikaDrOgAOh2OBdyJZ7JhfEBKJxALvRDIbpACUSCQSiYWs65LMhHyNnB5IASiRSCQSiURyhiEFoEQikUgkEskZhhSAEolEIjll2bZtG4qioCgKdrud6upqrrnmGr797W8XZGfz0EMPUVZWNn8blUgWGVIASiQSieSU5tprr6W3t5fDhw/zm9/8hquuuor3v//9XH/99SSTyYXenkSyKJECUCKRSCRzyqGBIH9q76dzMHRSzud0OqmpqaGuro7zzz+fT3ziE/ziF7/gN7/5DQ899BAA99xzD2effTZer5f6+nre/e53EwwGAXjiiSd429vextjYmBVNvP322wH43ve+xwUXXIDf76empoY3velNlg+eRHIqIwWgRCKRSOaE0XCct3zrb7z87id523ee56ovP8FbvvU3xsIn3y7k5S9/OZs2beJnP/sZAKqqct9997F7927++7//m8cff5yPfOQjALS0tHDvvfdSUlJCb28vvb29fOhDHwJSVid33nknbW1tPProoxw+fJht27ad9Mcjkcw10ghaIpFIJHPC+37Yyl8ODmbd9peDg7z3h9v57tsvOun7WbduHTt27ADgtttus25vamric5/7HO9617v4xje+gcPhoLS0FEVRqKmpyVrj5ptvtv57xYoV3HfffVx44YUEg0F8Pt9JeRwSyXwgI4ASiUQimTWHBoI8dWAAXYis23UheOrAwElLB2cihLA86/7whz/wile8grq6Ovx+P//4j//I0NAQ4XB42jVefPFFXvOa19DQ0IDf7+eKK64AoLu7e973L5HMJ1IASiQSiWTWdA1PL6QOD518Abh3716am5s5fPgw119/Peeccw4//elPefHFF/n6178OQDwen/L4UCjE1q1bKSkp4eGHH+b555/n5z//+YzHSSSnAjIFLJFIJJJZ01gx/fzgpkrvSdpJiscff5ydO3fygQ98gBdffBHDMLj77rtR1VTc45FHHsm6v8PhsMbhmezbt4+hoSHuuusu6uvrAXjhhRdOzgOQSOYZGQGUSCQSyaxZUeXjZaur0CaMCdMUhZetrqJ5yfwJwFgsRl9fHz09Pbz00kv8+7//O3/3d3/H9ddfz1ve8hZWrVpFIpHga1/7GocOHeJ73/seDz74YNYaTU1NBINB/vjHPzI4OEg4HKahoQGHw2Ed97//+7/ceeed8/Y4JJKTiRSAEolEIpkTvvbG87h01ZKs2y5dtYSvvfG8eT3vb3/7W5YtW0ZTUxPXXnstf/rTn7jvvvv4xS9+gaZpbNq0iXvuuYcvfOELnHXWWTz88MN8/vOfz1qjpaWFd73rXfz93/89VVVVfPGLX6SqqoqHHnqIn/zkJ2zYsIG77rqLL3/5y/P6WCSSk4UixISKXYlEIpGccUSjUTo7O2lubsblcs1qrc7BEIeHQjRVeuc18idZGObytSJZOGQNoEQikUjmlOYlUvhJJIsdmQKWSCQSiUQiOcOQAlAikUgkEonkDEMK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mhX503WdPXv2EI1GLQ9Cj8eT5UE4m6L8ucAU8AvFREFoviYyI4WGYZA0ywtQTujARSIIV61ahaIo7N27lxtvvHHS7/fu3UtVVZX1d5Lry09mfd+zzz7Lm9/8Zu644w62bt1KaWkpP/rRjyZFyvIhs7MWIBQKsXXrVrZu3crDDz9MVVUV3d3dbN261WrgyYdia25LS0tZtWpVUcdKTk+kAJRITgEmevvNphs2nwjg2NgYbW1tuN1uWlparOjZbBpITiaapuFyuXA6naxZsybLg7Czs5NQKITP58sShGeSB2EuMo3Czf9OJpMkE0kcDjsCgRCAoqAI8xgm/MfJpbKykmuuuYZvfOMbfOADH8gSR319fTz88MPceuut1m1VVVX09vZaPx84cIBwOGz9/Mwzz9DY2JgVKevq6so65/r163nuued4y1veYt3217/+dca97tu3j6GhIe666y7q6+sBeOGFF7LuY34pmW5Sz9lnn41hGDz55JNWCngusdvtRU8KkpxanNnveBLJKcBEbz8z7VusmbPZKZoLIQRdXV0cOHCAlStX0tzcnBWlOlUE4EQmehDG43GroeTAgQNEo9E59SDMl1Oh+UJROCHwhAAhEAjrx4UWhPfffz8tLS1s3bqVz33uc1k2MGvWrOHTn/60dd+Xv/zl3H///WzZsgVd1/noRz+a5a+3evVquru7+dGPfsSFF17Ir371K37+859nne/9738/27Zt44ILLuDSSy/l4YcfZvfu3TPW4TU0NOBwOPja177Gu971Lnbt2sWdd96ZdZ/GxkYUReGXv/wlr3rVq3C73fh8vqz7NDU18da3vpWbb77ZagLp6uqiv7+fm266qdjLmLX+H//4Ry699FJrlKPk9ETawEgkixSz0SMej2MYRla933yMc4vH42zfvp3Dhw9zwQUXsGLFikkC5VQSgNOJK4fDQXV1NevWrWPLli1s2bKFuro6YrEYe/fu5amnnuKll16is7OT0dHRosX2dJwq1zELRcn+BylBKAyEMDAMA0MIhJH6x0l4jKtXr+b5559nxYoV3HTTTTQ2NnLdddexZs0a/vKXv2QJqLvvvpv6+nouv/xy3vSmN/GhD30Ij8dj/f61r30tH/jAB3jPe97DueeeyzPPPMOnPvWprPP9/d//PZ/61Kf4yEc+wubNm+nq6uKf//mfZ9xnVVUVDz30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", + "text/html": [ + "\n", + "
\n", + "
\n", + " Figure\n", + "
\n", + " \n", + "
\n", + " " + ], + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cost_function = CostFunction(\n", + " config={\"design_phases\": [\"MonopileDesign\"]},\n", + " parameters={\n", + " \"site.depth\": DEPTHS,\n", + " \"site.mean_windspeed\": MEAN_WIND_SPEED,\n", + " },\n", + " results={\n", + " \"monopile_unit_cost\": lambda run: run.design_results[\"monopile\"][\"unit_cost\"],\n", + " # \"transition_piece_unit_cost\": lambda run: run.design_results[\"transition_piece\"][\"unit_cost\"],\n", + " }\n", + ")\n", + "cost_function.run()\n", + "\n", + "cost_function.linear_2d()\n", + "cost_function.quadratic_2d()\n", + "\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(projection='3d')\n", + "ax.set_title(\"Monopile Substructure\")\n", + "ax.set_xlabel(\"Depth (m)\")\n", + "ax.set_ylabel(\"Mean wind speed (m/s)\")\n", + "ax.set_zlabel(\"Cost ($)\")\n", + "cost_function.plot(ax, plot_data=True)\n", + "cost_function.plot(ax, plot_curves=[\"linear_2d\", \"quadratic_2d\"])\n", + "ax.legend()\n", + "\n", + "cost_function.export(\"substructure.yaml\", \"substructure_17MW\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Semi-Submersible Substructure\n", + "\n", + "Since the semisubmersible is a floating structure, the water depth does not impact the mass\n", + "of the structure.\n", + "The mean wind speed does impact the mass of the structure by the load transferred from the\n", + "turbine, but this is not included in the design phase cost model directly.\n", + "The plot here shows that the cost is constant with respect to the water depth." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "4b13254c2f314312b9419d72d1c138c8", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABOzUlEQVR4nO3deXxMZ///8fckZCOJNQtC7EQrlpAGbapCtGh1E+qurdUN1earS+quWKqxtVVLaXtT3alWubtIlxQ3pVVRat+3u7JYE4KEzPn90V/mNpIo2WbkvJ6Pxzwe5prrnPO55szwduac61gMwzAEAAAA03BxdAEAAAAoWwRAAAAAkyEAAgAAmAwBEAAAwGQIgAAAACZDAAQAADAZAiAAAIDJEAABAABMhgAIAABgMgRAAAAAkyEAAgAAmAwBEAAAwGQIgAAAACZDAAQAADAZAiBgYgsWLJDFYtHBgwdLZf2DBg1S5cqVS2XdjhIcHKxBgwbZnue9hxs2bPjbZW+//XbdfvvtpVdcCbj99tt10003OboMAKWMAAiUoS1btuiBBx5QvXr15OHhodq1a6tr166aOXOmo0vDDeqrr75SZGSk/Pz85OXlpQYNGqhPnz5KTEx0dGlau3atxo4dq9OnT5u6BsAZEQCBMrJ27VqFhYVp8+bNGjp0qGbNmqVHH31ULi4uevPNNx1S08MPP6zz58+rXr16Dtn+jWjXrl169913HV2GJGnatGm6++67ZbFYFBcXpzfeeEP333+/9uzZo4ULFzq6PK1du1bjxo1zeAB0dA2AM6rg6AIAs5g4caJ8fX3122+/qUqVKnavpaenO6QmV1dXubq6OmTbziQrK0uVKlW6pr7u7u6lXM21uXTpkiZMmKCuXbvq+++/z/e6oz5TRWW1WpWTkyMPDw9Hl3JNruczAzgjjgACZWTfvn1q0aJFvvAnSX5+fvnaPvroI7Vt21aenp6qVq2a+vbtqyNHjtj1yTtf648//lBkZKS8vLzUqFEjff7555KkVatWKTw8XJ6enmratKl+/PFHu+ULOgdww4YNio6OVo0aNeTp6an69etryJAhttdXrlwpi8WilStX2q3r4MGDslgsWrBgQb6x7N+/X9HR0apUqZJq1aql8ePHyzCMfMtOmzZNs2fPVoMGDeTl5aVu3brpyJEjMgxDEyZMUJ06deTp6al77rlHJ0+ezLed5cuX69Zbb1WlSpXk7e2tHj16aNu2bXZ98s5L3Ldvn+666y55e3urf//+kqQ9e/bo/vvvV0BAgDw8PFSnTh317dtXGRkZtuWvPAcwz7lz5/T444+revXq8vHx0YABA3Tq1Kl8/a6UnZ2t+Ph4NWrUSO7u7goKCtLzzz+v7Ozsqy53/PhxZWZmqmPHjgW+fvlnqrBzPQvbl5KUnJysDh062D4Dc+fOzddn5syZatGihby8vFS1alWFhYXpk08+kSSNHTtWzz33nCSpfv36slgsdjVYLBYNHz5cH3/8sVq0aCF3d3clJiZe9+dr586d6tOnj2rWrGn7nI8ePfpva7ja59VisWjs2LG252PHjpXFYtH27dv10EMPqWrVqurUqZPt9Wv5rgLOhiOAQBmpV6+e1q1bp61bt/7tSfYTJ07Uyy+/rD59+ujRRx/VsWPHNHPmTN122236/fff7ULkqVOn1LNnT/Xt21cPPvig5syZo759++rjjz/WM888oyeeeEIPPfSQpk6dqgceeEBHjhyRt7d3gdtNT09Xt27dVLNmTb344ouqUqWKDh48qCVLlhR53Lm5uerevbtuueUWTZkyRYmJiYqPj9elS5c0fvx4u74ff/yxcnJyNGLECJ08eVJTpkxRnz59dMcdd2jlypV64YUXtHfvXs2cOVOjRo3S/Pnzbct++OGHGjhwoKKjozV58mSdO3dOc+bMUadOnfT7778rODjY1vfSpUuKjo5Wp06dNG3aNHl5eSknJ0fR0dHKzs7WiBEjFBAQoD///FNff/21Tp8+LV9f36uOc/jw4apSpYrGjh2rXbt2ac6cOTp06JAt0BTEarXq7rvv1po1a/TYY4+pefPm2rJli9544w3t3r1bS5cuLXR7fn5+8vT01FdffaURI0aoWrVqf78zrtGpU6d01113qU+fPurXr58+++wzPfnkk3Jzc7P9Z+Ddd9/V008/rQceeEAjR47UhQsX9Mcff+jXX3/VQw89pPvuu0+7d+/Wp59+qjfeeEM1atSQJNWsWdO2nZ9++kmfffaZhg8frho1aig4OPi6fqr9448/dOutt6pixYp67LHHFBwcrH379umrr77SxIkTr1rDsWPHrvt9efDBB9W4cWO9+uqrtv/AXM93FXAqBoAy8f333xuurq6Gq6urERERYTz//PPGd999Z+Tk5Nj1O3jwoOHq6mpMnDjRrn3Lli1GhQoV7NojIyMNScYnn3xia9u5c6chyXBxcTF++eUXW/t3331nSDLee+89W9t7771nSDIOHDhgGIZhfPnll4Yk47fffit0HCtWrDAkGStWrLBrP3DgQL71Dxw40JBkjBgxwtZmtVqNHj16GG5ubsaxY8fslq1Zs6Zx+vRpW9+4uDhDkhEaGmpcvHjR1t6vXz/Dzc3NuHDhgmEYhnHmzBmjSpUqxtChQ+1qSk1NNXx9fe3a82p68cUX7fr+/vvvhiRj8eLFhY7dMAyjXr16xsCBA23P897Dtm3b2u3LKVOmGJKMZcuW2doiIyONyMhI2/MPP/zQcHFxMVavXm23jblz5xqSjJ9//vmqtYwZM8aQZFSqVMm48847jYkTJxrJycn5+l25n/MUtC/zPlOvvfaarS07O9to1aqV4efnZxvjPffcY7Ro0eKq9U2dOrXA7RqGYfuMbtu27W9rMoyCP1+33Xab4e3tbRw6dMiur9Vq/dsaClrf5bXFx8fbnsfHxxuSjH79+tn1u57vKuBs+AkYKCNdu3bVunXrdPfdd2vz5s2aMmWKoqOjVbt2bf373/+29VuyZImsVqv69Omj48eP2x4BAQFq3LixVqxYYbfeypUrq2/fvrbnTZs2VZUqVdS8eXOFh4fb2vP+vH///kJrzDta8fXXX+vixYslMWxJfx0dy5P3019OTk6+n6QffPBBuyNteTX/4x//UIUKFezac3Jy9Oeff0qSfvjhB50+fVr9+vWze89cXV0VHh6e7z2TpCeffNLued52v/vuO507d+66x/jYY4+pYsWKduuvUKGCvv3220KXWbx4sZo3b65mzZrZ1X3HHXdIUoF1X27cuHH65JNP1Lp1a3333XcaPXq02rZtqzZt2mjHjh3XPYY8FSpU0OOPP2577ubmpscff1zp6elKTk6W9Ndn5b///a9+++23Im8nMjJSISEhRVr22LFj+s9//qMhQ4aobt26dq8VdsS1uJ544gm759f7XQWcCQGwGCZOnKgOHTrIy8vrug7z79ixQ3fffbd8fX1VqVIltWvXTocPH7a9/s477+j222+Xj4+PLBZLgT+J7N69W/fcc49q1KghHx8fderUqdC/bE6cOKE6derkW9egQYNs58Rc/mjRooWtT25url5++WXVr19fnp6eatiwoSZMmGB3/taSJUvUrVs3Va9eXRaLRZs2bbrm9+J6aikP2rVrpyVLlujUqVNav3694uLidObMGT3wwAPavn27pL/OQzMMQ40bN1bNmjXtHjt27Mh3cn/evr2cr6+vgoKC8rVJuup5aZGRkbr//vs1btw41ahRQ/fcc4/ee++9vz0f7WpcXFzUoEEDu7YmTZpIUr5z0q78hzyv5r8by549eyRJd9xxR7737Pvvv8/3nlWoUEF16tSxa6tfv75iY2P1r3/9SzVq1FB0dLRmz55td/7f1TRu3NjueeXKlRUYGHjVORb37Nmjbdu25as57/25lgs5+vXrp9WrV+vUqVP6/vvv9dBDD+n3339Xr169dOHChWuq/Uq1atXKd4HDlfvshRdeUOXKldW+fXs1btxYw4YN088//3xd26lfv36R6pP+9x+Zspyz8Mp6r/e7CjgTzgH8G7fffrsGDRpU4EnfOTk5evDBBxUREaF58+Zd0/r27dunTp066ZFHHtG4cePk4+Ojbdu22V35du7cOXXv3l3du3dXXFxcgevp2bOnGjdurJ9++kmenp6aPn26evbsqX379ikgIMCu7yOPPKKWLVvajpbkefPNNzVp0iTb80uXLik0NFQPPvigrW3y5MmaM2eO3n//fbVo0UIbNmzQ4MGD5evrq6efflrSX1fDderUSX369NHQoUOv6X240rXUUp64ubmpXbt2ateunZo0aaLBgwdr8eLFio+Pl9VqlcVi0fLlywu8QvfKiZULu4q3sPbLw/uVLBaLPv/8c/3yyy/66quv9N1332nIkCF67bXX9Msvv6hy5cqFHl3Jzc0tdL3XqqhjsVqtkv46D/DKz78ku6OH0l9X8rq45P//72uvvaZBgwZp2bJl+v777/X0008rISFBv/zyS77AWBKsVqtuvvlmvf766wW+fmXwvRofHx917dpVXbt2VcWKFfX+++/r119/VWRkZKnss+bNm2vXrl36+uuvlZiYqC+++EJvvfWWxowZo3Hjxl3TOjw9PfO1lebnq7jbubLe6/2uAs6EAFgMeX/JFXQVWWFGjx6tu+66S1OmTLG1NWzY0K7PM888I0kFXpkn/XX13549ezRv3jy1bNlSkjRp0iS99dZb2rp1q90/gHPmzNHp06c1ZswYLV++3G49vr6+dj+3LV26VKdOndLgwYNtbWvXrtU999yjHj16SPrr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l156ScuWLdPy5cu1YMECSdLrr7+um2++WZUqVVJQUJCeeuopnT17VpK0cuVKDR48WBkZGbajiWPHjpUkffjhhwoLC5O3t7cCAgL00EMPKT09vdTH5GyKHQBDQ0N18OBBHTt2TNu3b1dQUJDttVGjRnERCAAAN5jErSl68qONSsm4YNeemnFBT360sUxC4JXuuOMOhYaGasmSJZL+ukJ2xowZ2rZtm95//3399NNPev755yVJHTp00PTp0+Xj46OUlBSlpKTY7kZ28eJFTZgwQZs3b9bSpUt18OBBDRo0qMzH42glNg9gQRM9BwYGltTqAQBAGci1Ghr31XYV9GOvIckiadxX29U1JECuLmU7uXSzZs30xx9/SJKeeeYZW3twcLBeeeUVPfHEE3rrrbfk5uYmX19fWSwWBQQE2K1jyJAhtj83aNBAM2bMULt27XT27FlVrly5TMbhDIp8BHDhwoXX3PfIkSP6+eefi7opAABQRtYfOJnvyN/lDEkpGRe0/sDJsisqb9uGYbujyY8//qguXbqodu3a8vb21sMPP6wTJ0787a3vkpOT1atXL9WtW1fe3t62axQOHz5c6vU7kyIHwDlz5qh58+aaMmWKduzYke/1jIwMffvtt3rooYfUpk0bnThxoliFAgCA0pd+pvDwV5R+JWnHjh2qX7++Dh48qJ49e6ply5b64osvlJycrNmzZ0v66y4ohcnKylJ0dLR8fHz08ccf67ffftOXX375t8uVR0X+CXjVqlX697//rZkzZyouLk6VKlWSv7+/PDw8dOrUKaWmpqpGjRoaNGiQtm7dKn9//5KsGwAAlAI/72u75di19ispP/30k7Zs2aJnn31WycnJslqteu2112x3y/jss8/s+ru5uSk3N9eubefOnTpx4oQmTZpku2Zhw4YNZTMAJ1OscwDvvvtu3X333Tp+/LjWrFmjQ4cO6fz586pRo4Zat26t1q1bcxsaAABuIO3rV1Ogr4dSMy4UeB6gRVKAr4fa169WajVkZ2crNTVVubm5SktLU2JiohISEtSzZ08NGDBAW7du1cWLFzVz5kz16tVLP//8s+bOnWu3juDgYJ09e1ZJSUkKDQ2Vl5eX6tatKzc3N82cOVNPPPGEtm7dqgkTJpTaOJxZiVwEUqNGDfXu3bskVgUAABzI1cWi+F4hevKjjbJIdiEw75KP+F4hpXoBSGJiogIDA1WhQgVVrVpVoaGhmjFjhgYOHCgXFxeFhobq9ddf1+TJkxUXF6fbbrtNCQkJdncc69Chg5544gnFxMToxIkTio+P19ixY7VgwQK99NJLmjFjhtq0aaNp06bp7rvvLrWxOCuLYRhlM6ujE8vMzJSvr68yMjLk4+Pj6HIAACiWCxcu6MCBA6pfv748PIr2U23i1hSN+2q73QUhgb4eiu8Vou43MctHWbjafixudimxaWAAAED50f2mQHUNCdD6AyeVfuaC/Lz/+tm3rKd+QekgAAIAgAK5ulgU0TD/PL+48XGFBgAAgMmUSAAcP358gRMvnj9/3u7ewAAAAHC8EgmA48aNs92A+XLnzp3TuHHjSmITAAAAKCElEgAvvzXL5TZv3qxq1UpvniAAAABcv2JdBFK1alVZLBZZLBY1adLELgTm5ubq7NmzeuKJJ4pdJAAAAEpOsQLg9OnTZRiGhgwZonHjxsnX19f2mpubm4KDgxUREVHsIgEAAFByihUABw4cKEmqX7++OnbsqAoVmFUGAADA2ZXIOYDe3t7asWOH7fmyZcvUu3dvvfTSS8rJySmJTQAAAJOzWCxaunSpo8u4bgcPHpTFYtGmTZscXYpNiQTAxx9/XLt375Yk7d+/XzExMfLy8tLixYv1/PPPl8QmAABAOTdo0CD17t270NdTUlJ05513ll1B1ynvuojLH506dVJQUJBSUlJ00003SZJWrlwpi8Wi06dPO6zWEvnNdvfu3WrVqpUkafHixYqMjNQnn3yin3/+WX379tX06dNLYjMAAMDEAgICHF2CDMNQbm5uoae9vffee+revbvtuZubm1xdXZ2i9suV2DQwVqtVkvTjjz/qrrvukiQFBQXp+PHjJbEJAABgcpf/BJz3s+qSJUvUuXNneXl5KTQ0VOvWrbNbZs2aNbr11lvl6empoKAgPf3008rKyrK9/uGHHyosLEze3t4KCAjQQw89pPT0dNvreUfrli9frrZt28rd3V1r1qwptMYqVaooICDA9qhWrZrdT8AHDx5U586dJf1vNpVBgwaV3Jt0jUokAIaFhemVV17Rhx9+qFWrVqlHjx6SpAMHDsjf378kNgEAAIrBMAydy7lU5g/DMEp1XKNHj9aoUaO0adMmNWnSRP369dOlS5ckSfv27VP37t11//33648//tCiRYu0Zs0aDR8+3Lb8xYsXNWHCBG3evFlLly7VwYMHCwxkL774oiZNmqQdO3aoZcuWRa43KChIX3zxhSRp165dSklJ0Ztvvlnk9RVVifwEPH36dPXv319Lly7V6NGj1ahRI0nS559/rg4dOpTEJgAAQDGcv5irkDHflfl2t4+Plpdb6c0SMmrUKNuBp3HjxqlFixbau3evmjVrpoSEBPXv31/PPPOMJKlx48aaMWOGIiMjNWfOHHl4eGjIkCG2dTVo0EAzZsxQu3btdPbsWVWuXNn22vjx49W1a9e/radfv35ydXW1Pf/oo49sp8lJkqurq+0mGX5+fqpSpUoxRl90JbJHWrZsqS1btuRrnzp1qt2bAAAAUJIuPxoXGBgoSUpPT1ezZs20efNm/fHHH/r4449tffJOWztw4ICaN2+u5ORkjR07Vps3b9apU6dsp7QdPnxYISEhtuXCwsKuqZ433nhDUVFRdjUdO3asWGMsDSUayZOTk23TwYSEhKhNmzYluXoAAFBEnhVdtX18tEO2W5oqVqxo+3PeHcnyQtzZs2f1+OOP6+mnn863XN26dZWVlaXo6GhFR0fr448/Vs2aNXX48GFFR0fnm8auUqVK11RPQECA7ZfQPOU2AKanpysmJkarVq2yHco8ffq0OnfurIULF6pmzZolsRkAAFBEFoulVH+KdUZt2rTR9u3b8wWyPFu2bNGJEyc0adIkBQUFSZI2bNhQ6nW5ublJ+uu2uY5SIheBjBgxQmfPntW2bdt08uRJnTx5Ulu3blVmZmaBqRsAAKAgGRkZ2rRpk93jyJEjRVrXCy+8oLVr12r48OHatGmT9uzZo2XLltkuAqlbt67c3Nw0c+ZM7d+/X//+9781YcKEkhxOgerVqyeLxaKvv/5ax44d09mzZ0t9m1cqkQCYmJiot956S82bN7e1hYSEaPbs2Vq+fHmR1jl79mwFBwfLw8ND4eHhWr9+faF9lyxZorCwMFWpUkWVKlVSq1at9OGHHxZpuwAAwHFWrlyp1q1b2z3GjRtXpHW1bNlSq1at0u7du3XrrbeqdevWGjNmjGrVqiVJqlmzphYsWKDFixcrJCREkyZN0rRp00pyOAWqXbu2xo0bpxdffFH+/v52VyWXFYtRAtdne3t7a/Xq1XZXuUjS77//rsjISGVmZl7X+hYtWqQBAwZo7ty5Cg8P1/Tp07V48WLt2rVLfn5++fqvXLlSp06dUrNmzeTm5qavv/5a//d//6dvvvlG0dF/f75DZmamfH19lZGRIR8fn+uqFQAAZ3PhwgUdOHBA9evXl4eHh6PLQRFdbT8WN7uUyBHAO+64QyNHjtTRo0dtbX/++aeeffZZdenS5brX9/rrr2vo0KEaPHiwQkJCNHfuXHl5eWn+/PkF9r/99tt17733qnnz5mrYsKFGjhypli1bXnWiRgAAALMqkQA4a9YsZWZmKjg4WA0bNlTDhg1Vv359ZWZmaubMmde1rpycHCUnJ9tdQu3i4qKoqKh8s3sXxDAMJSUladeuXbrtttsK7JOdna3MzEy7BwAAgFmUyOVAQUFB2rhxo3788Uft3LlTktS8eXO7EHetjh8/rtzc3Hx3EPH397etuyAZGRmqXbu2srOz5erqqrfeeqvQCRsTEhKKfD4BAADAja7Erge3WCzq2rXrNc2SXRq8vb21adMmnT17VklJSYqNjVWDBg10++235+sbFxen2NhY2/PMzEzb5d8AAADlXbF+Av7pp58UEhJS4E+oGRkZatGihVavXn1d66xRo4ZcXV2VlpZm156WlqaAgIBCl3NxcVGjRo3UqlUr/d///Z8eeOABJSQkFNjX3d1dPj4+dg8AAACzKFYAnD59uoYOHVpggPL19dXjjz+u119//brW6ebmprZt2yopKcnWZrValZSUpIiIiGtej9VqVXZ29nVtGwCA8qQEJvqAA5Xm/itWANy8ebO6d+9e6OvdunVTcnLyda83NjZW7777rt5//33t2LFDTz75pLKysjR48GBJ0oABAxQXF2frn5CQoB9++EH79+/Xjh079Nprr+nDDz/UP/7xj+sfFAAAN7i826OdO3fOwZWgOPL23+W3uyspxToHMC0t7apFVahQoUj3v4uJidGxY8c0ZswYpaamqlWrVkpMTLRdGHL48GG5uPwvu2ZlZempp57Sf//7X3l6eqpZs2b66KOPFBMTc/2DAgDgBufq6qoqVaooPT1dkuTl5WW7Ty6cn2EYOnfunNLT01WlShW5upb8/ZSLNRF0w4YN9dprr6l3794Fvr5kyRKNGjVK+/fvL+omygQTQQMAyhvDMJSamqrTp087uhQUUZUqVRQQEFBgeC9udinWEcC77rpLL7/8srp3755vhurz588rPj5ePXv2LM4mAABAEVgsFgUG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lsr2SvI+2M8//7z++c9/ytXVtcjrcHNz06hRo/TCCy+UWF0AygcCIIByq3v37kpJSdHBgwe1fPlyde7cWSNHjlTPnj116dIlR5dXqDVr1mjfvn26//77i72u/v37a82aNdq2bVsJVAagvCAAAii33N3dFRAQoNq1a6tNmzZ66aWXtGzZMi1fvlwLFiyw9Tt9+rQeffRR1axZUz4+Prrjjju0efNm2+tjx45Vq1at9PbbbysoKEheXl7q06ePMjIybK+///77WrZsme2o48qVK23L79+/X507d5aXl5dCQ0O1bt26q9a9cOFCde3aVR4eHvlqmD9/vurWravKlSvrqaeeUm5urqZMmaKAgAD5+flp4sSJduuqWrWqOnbsqIULFxbjnQRQ3hAAAZjKHXfcodDQUC1ZssTW9uCDDyo9PV3Lly9XcnKy2rRpoy5duujkyZO2Pnv37tVnn32mr776SomJifr999/11FNPSZJGjRqlPn362I44pqSkqEOHDrZlR48erVGjRmnTpk1q0qSJ+vXrd9UjkKtXr1ZYWFi+9n379mn58uVKTEzUp59+qnnz5qlHjx7673//q1WrVmny5Mn65z//qV9//dVuufbt22v16tVFfs8AlD8VHF0AAJS1Zs2a6Y8//pD018+t69evV3p6utzd3SVJ06ZN09KlS/X555/rsccekyRduHBBH3zwgWrXri1Jmjlzpnr06KHXXntNAQEB8vT0VHZ2tgICAvJtb9SoUerRo4ckady4cWrRooX27t2rZs2aFVjfoUOHVKtWrXztVqtV8+fPl7e3t0JCQtS5c2ft2rVL3377rVxcXNS0aVNNnjxZK1asUHh4uG25WrVq6dChQ8V4xwCUNwRAAKZjGIYsFoskafPmzTp79qyqV69u1+f8+fPat2+f7XndunVt4U+SIiIiZLVatWvXrgJD3+Vatmxp+3NgYKAkKT09vdAAeP78ebuff/MEBwfL29vb9tzf31+urq5ycXGxa0tPT7dbztPTU+fOnbtqjQDMhQAIwHR27Nih+vXrS5LOnj2rwMBAu3P28lSpUqVEtlexYkXbn/OC59WuRK5Ro4ZOnTp11fXkraugtivXffLkSdWsWfO66wZQfhEAAZjKTz/9pC1btujZZ5+VJLVp00apqamqUKGCgoODC13u8OHDOnr0qO2n2V9++cX2s6v015QrxZmz73KtW7fW9u3bS2RdkrR161a1bt26xNYH4MbHRSAAyq3s7Gylpqbqzz//1MaNG/Xqq6/qnnvuUc+ePTVgwABJUlRUlCIiItS7d299//33OnjwoNauXavRo0fbTaDs4eGhgQMHavPmzVq9erWefvpp9enTx/bzb3BwsP744w/t2rVLx48f18WLF4tcd3R0tNasWVO8wV9m9erV6tatW4mtD8CNjwAIoNxKTExUYGCggoOD1b17d61YsUIzZszQsmXLbBMsWywWffvtt7rttts0ePBgNWnSRH379tWhQ4fk7+9vW1ejRo1033336a677lK3bt3UsmVLvfXWW7bXhw4dqqZNmyosLEw1a9bUzz//XOS6+/fvr23btmnXrl1FH/z/t27dOmVkZOiBBx4o9roAlB8WwzAMRxcBAM5s7NixWrp0aZFu6VZUzz33nDIzM/X2228Xaz0xMTEKDQ3VSy+9VEKVASgPOAIIAE5o9OjRqlevXrFuW5eTk6Obb77Zdr4jAOThCCAA/A1HHAEEgNJEAAQAADAZfgIGAAAwGQIgAACAyRAAAQAATIYACAAAYDIEQAAAAJMhAAIAAJgMARAAAMBkCIAAAAAmQwAEAAAwGQIgAACAyRAAAQAATIYACAAAYDIEQAAAAJMhAAIAAJjM/wNsCjwMAa8c3wAAAABJRU5ErkJggg==", + "text/html": [ + "\n", + "
\n", + "
\n", + " Figure\n", + "
\n", + " \n", + "
\n", + " " + ], + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cost_function = CostFunction(\n", + " config={\"design_phases\": [\"SemiSubmersibleDesign\"]},\n", + " parameters={\n", + " \"site.depth\": DEPTHS,\n", + " },\n", + " results={\n", + " \"substructure_unit_cost\": lambda run: run.design_results[\"substructure\"][\"unit_cost\"],\n", + " }\n", + ")\n", + "cost_function.run()\n", + "\n", + "cost_function.linear_1d()\n", + "\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot()\n", + "ax.set_title(\"Semisubmersible Substructure\")\n", + "ax.set_xlabel(\"Depth (m)\")\n", + "ax.set_ylabel(\"Cost ($)\")\n", + "cost_function.plot(ax, plot_data=True)\n", + "cost_function.plot(ax, plot_curves=[\"linear_1d\"])\n", + "ax.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Mooring System\n", + "\n", + "This block creates a cost model for each type of mooring system.\n", + "For all types, the line length is a function of water depth.\n", + "For TLP systems, line length is the difference between the water depth and the draft.\n", + "For SemiTaut systems, line length is the sum of rope length and chain length.\n", + "Rope length is defined from a fixed relationship for depth and rope lengths.\n", + "Chain length is also defined from a fixed relationship for depth and chain diameter.\n", + "While the semi-taut system line length is dependent on rope length and chain length, the parameters\n", + "are fixed and depend on water depth so they are not included in this parameterization." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'catenary': '199913.5 * depth + 34961743.3'}\n", + "{'tlp': '156672.0 * depth + -156672.0 * draft_depth + 27496949.2'}\n", + "{'semitaut': '227446.8 * depth + 32803637.2'}\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "9527723938a24d85b577e15df912cbfb", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "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oqKIiorikUceYcmSJQB89913xMTEMHr0aFavXs3FixdtrnE5+TMMQ8lfFVMPoNQ4ycnJNG/eHID8/HxCQkJs5uxddrlI7PW6XGQWSpZ+KE3Dhg1tykWUdp3L1yrt3B+vnZ2dTWBg4FXHLSLl8/X1JS4uzjoXrWHDhixYsMDmn7Bt27axfft27r77buvv68mTJ9m/fz+9evUiPDzc2jY5OZlDhw7xz3/+0673YQ+XP/veeOMN5syZw6BBgxg3bhz5+fn85z//ISEhgd9++40nn3ySVatWMXjwYB544AE+/vhj+vXrh6enp01vqYZ9q54SQKlR1qxZw969e3nmmWcA6NSpE5mZmXh4eNh8EP/R0aNHOXHihHVodsuWLdZhVygewriemn1X6tixI0lJSZVyLYDExERrbTMRqVy333679evLowtXloSJiIjgoYcespkXvHr1aiwWi81c36ysLL7//nsiIyNtegprktdee41p06bx1Vdf0adPHzw9PQHo27cvs2fPZtasWdSvX5/hw4ezbNky7r77bu644w527dpV7j7MUjXUvypOq7CwkMzMTI4fP87OnTt59dVXueOOOxg0aBAjRowAoE+fPsTExDBkyBB++OEH0tLS2LRpE5MnT7YpoOzt7c3IkSPZvXs369ev56mnnuLee++1zvkLDw9nz549pKSkcOrUKZthi6vVr18/NmzYcH03f4X169fTt2/fSrueiJSutF6poKAgnn32Wbp162Y9t2fPHnx8fGjTpo313FdffcX+/ft59NFH7RKrvS1YsIAJEyawZs0aBgwYgLu7u3VY+C9/+QuTJ0+mXr16LFq0yDoCsnjxYj766CMlfw6iBFCcVnx8PCEhIYSHhxMXF0dCQgLvvPMO3377rXVyt8lkYsWKFdx2222MGjWKiIgIhg0bRnp6OkFBQdZrtWzZkjvvvJMBAwbQt29f2rVrx/vvv299/uGHHyYyMpLOnTsTGBjIxo0brznu4cOHs2/fvgrNL/wzmzdvJicnp8T2ViJiH4ZhlChTMnv2bL788kvrCEJmZibTp09nyJAhlVpQvro4c+YMX375JREREfz+++8ANgkgQNeuXXnqqaf46aefbCowPPTQQwCVNsIiFWcyVGBHXNxLL73E0qVLr2lLt2v13HPPkZuby9y5c6/rOkOHDqV9+/ZMmjSpkiITkcp04MAB6+9nTS4AvX37dt566y3S09N57LHHuP/++4H/mw/t5ubG2rVr6d+/P9u2baNt27aODFdQD6CIQ0yePJmwsLDr2rauqKiIG2+80TrfUUSqn+TkZGJjY/nwww+BmlvUuHPnzjz33HM0a9aMDz74gM8++wwoTvwu33NKSgq33norTZs2dWSo8r/UAyguzxE9gCLiOlypmPHevXuZNWsWqampPPjgg9Yh3qysLO68807+8pe/MHPmTAdHKaAEUERERCpRUlISs2bN4uDBg4wePZoHH3yQHj162Gyj6UpJcXWlBFBEREQq1YEDB5g1axYpKSkcOHCAJk2a8OuvvwLFCz7+bBcWqXpKAEVERKTSHT58mOeff56ioiKWLVsGYLPVmziWEkARERGpEidPnrSW3FLyV70oARQREZEqZbFYtLdvNaMEUERERMTFKB0XERERcTFKAEVERERcjBJAERERERejBFBERETExSgBFBEREXExSgBFREREXIwSQBEREREXowRQRERExMUoARQRERFxMUoARURERFyMEkCRqzR//nxMJhNpaWmODkVEROSaKAEUp7B3717uvvtuwsLC8Pb2pkmTJsTGxvLuu+86OrQSTCZThR5r166ttPdMSkripZdeUlIqIiIVYjIMw3B0ECLl2bRpEz179qRZs2aMHDmS4OBgjh07xpYtWzh8+DCHDh2yazxms5mLFy/i5eWFyWQq8fzChQttjhcsWMDq1av597//bXM+NjaWoKCgSolp8eLF3HPPPSQkJPDXv/61Uq4pIiI1l4ejAxD5M6+88goBAQFs27aNunXr2jyXlZVl93jc3d1xd3cv8/n777/f5njLli2sXr26xHkRERFH0RCwVHuHDx+mTZs2JZI/gEaNGtkcL1y4kJtuugkfHx/q16/PsGHDOHbsmE2bv/71r7Rt25Y9e/bQo0cPateuTcuWLVm8eDEA69ato2vXrvj4+BAZGcmPP/5o8/rKmAM4b948evXqRaNGjfDy8iI6Opo5c+aUaGcymXjppZdKnA8PD+eBBx6wxnPPPfcA0LNnzyoZYhYRkZpFCaBUe2FhYezYsYPExMRy273yyiuMGDGCVq1a8eabb/L000/z008/cdttt3H27FmbtmfOnGHQoEF07dqV2bNn4+XlxbBhw/jyyy8ZNmwYAwYMYObMmZw7d467776bvLy8Sr2nOXPmEBYWxqRJk3jjjTcIDQ3l8ccf57333rvqa91222089dRTAEyaNIl///vf/Pvf/6Z169aVGrOIiNQghkg198MPPxju7u6Gu7u7ERMTYzz//PPGqlWrjKKiImubtLQ0w93d3XjllVdsXrt3717Dw8PD5nyPHj0MwPj888+t5/bv328Ahpubm7Flyxbr+VWrVhmAMW/ePOu5efPmGYCRmppaofjHjh1r/PFX7fz58yXa9evXz7jhhhtszgHG1KlTS7QNCwszRo4caT3++uuvDcBISEioUEwiIuLa1AMo1V5sbCybN2/m9ttvZ/fu3cyePZt+/frRpEkTvvvuOwC++eYbLBYL9957L6dOnbI+goODadWqFQkJCTbX9PX1ZdiwYdbjyMhI6tatS+vWrenatav1/OWvjxw5Uqn35OPjY/06JyeHU6dO0aNHD44cOUJOTk6lvpeIiMgfKQG8Sj///DODBw+mcePGmEwmli5delWvf+mll0otCVKnTp2qCbiG6NKlC9988w1nzpxh69atTJw4kby8PO6++26SkpI4ePAghmHQqlUrAgMDbR7JycklFos0bdq0xAregIAAQkNDS5yD4iHjsuTk5JCZmWl9ZGdn/+n9bNy4kT59+lCnTh3q1q1LYGAgkyZNsl5PRESkKmkV8FU6d+4c7du358EHH+TOO++86tePHz+exx57zOZc79696dKlS2WFWKN5enrSpUsXunTpQkREBKNGjeLrr7/GYrFgMplYuXJlqSt0fX19bY7LWsVb1nmjnGpJ48aN47PPPrMe9+jRo9wFGIcPH6Z3795ERUXx5ptvEhoaiqenJytWrOCtt97CYrGU+drLzGbzn7YREREpixLAq9S/f3/69+9f5vOFhYVMnjyZL774grNnz9K2bVtmzZplrc3m6+trk4zs3r2bpKQkPvjgg6oOvcbp3LkzABkZGbRo0QLDMGjevDkRERF2jeP555+3KfFSr169ctsvW7aMwsJCvvvuO5o1a2Y9/8dh6svX+uMClqKiIjIyMmzOlVaPUEREpCwaAq5kTzzxBJs3b2bRokXs2bOHe+65h7i4OA4ePFhq+48//piIiAhuvfVWO0fqPBISEkrtgVuxYgVQPH/vzjvvxN3dnWnTppVoaxgGp0+frrL4oqOj6dOnj/Vx0003ldv+ci/jlXHm5OQwb968Em1btGjB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Z555BoBOnTqRmZmJh4cH4eHhZb7u6NGjnDhxwjo0u2XLFuuwKxSXXLmemn1X6tixI0lJSZVyLYDExEQ6duxYadcTEZGaT4tAxGkVFhaSmZnJ8ePH2blzJ6+++ip33HEHgwYNYsSIEQD06dOHmJgYhgwZwg8//EBaWhqbNm1i8uTJNgWUvb29GTlyJLt372b9+vU89dRT3Hvvvdbh3/DwcPbs2UNKSgqnTp3i4sWL1xx3v3792LBhw/Xd/BXWr19P3759K+16IiJS8ykBFKcVHx9PSEgI4eHhxMXFkZCQwDvvvMO3335rLbBsMplYsWIFt912G6NGjSIiIoJhw4aRnp5OUFCQ9VotW7bkzjvvZMCAAfTt25d27drx/vvvW59/+OGHiYyMpHPnzgQGBrJx48Zrjnv48OHs27ePlJSUa7/5/7V582ZycnK4++67r/taIiLiOkyGYRiODkLEkV566SWWLl16TVu6XavnnnuO3Nxc5s6de13XGTp0KO3bt2fSpEmVFJmIiLgC9QCKOMDkyZMJCwu7rm3rioqKuPHGG63zHUVERCpKPYDi8hzRAygiIuJISgBFREREXIyGgEVERERcjBJAERERERejBFBERETExSgBFBEREXExSgBFREREXIwSQBEREREXowRQRERExMUoARQRERFxMUoARURERFyMEkARERERF6MEUERERMTFKAEUERERcTFKAEVERERcjBJAERERERfz/wEe7/Z6VzJicgAAAABJRU5ErkJggg==", + "text/html": [ + "\n", + "
\n", + "
\n", + " Figure\n", + "
\n", + " \n", + "
\n", + " " + ], + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "design_phase = \"MooringSystemDesign\"\n", + "results = {\n", + " \"mooring_system_system_cost\": lambda run: run.design_results[\"mooring_system\"][\"system_cost\"],\n", + "}\n", + "\n", + "# Catenary mooring system\n", + "cost_catenary = CostFunction(\n", + " config={\n", + " \"design_phases\": [design_phase],\n", + " \"mooring_system_design\": {\"mooring_type\": \"Catenary\"}\n", + " },\n", + " parameters={\n", + " \"site.depth\": DEPTHS,\n", + " },\n", + " results=results\n", + ")\n", + "cost_catenary.run()\n", + "\n", + "# Tension Leg Platform (TLP) mooring system\n", + "cost_tlp = CostFunction(\n", + " config={\n", + " \"design_phases\": [design_phase],\n", + " \"mooring_system_design\": {\"mooring_type\": \"TLP\"}\n", + " },\n", + " parameters={\n", + " \"site.depth\": DEPTHS,\n", + " \"mooring_system_design.draft_depth\": [i for i in range(5, 100, 5)] # Draft depth 5-100 meters\n", + " },\n", + " results=results\n", + ")\n", + "cost_tlp.run()\n", + "\n", + "# Semi-taut mooring system\n", + "cost_semitaut = CostFunction(\n", + " config={\n", + " \"design_phases\": [design_phase],\n", + " \"mooring_system_design\": {\"mooring_type\": \"SemiTaut\"}\n", + " },\n", + " parameters={\n", + " \"site.depth\": DEPTHS,\n", + " },\n", + " results=results\n", + ")\n", + "cost_semitaut.run()\n", + "\n", + "## Fit the data to a curve\n", + "cost_catenary.linear_1d()\n", + "cost_tlp.linear_2d()\n", + "cost_semitaut.linear_1d()\n", + "\n", + "## Plot the ORBIT data and curve fits\n", + "fig = plt.figure()\n", + "\n", + "ax = fig.add_subplot(2, 2, 1)\n", + "ax.set_title(\"Catenary\")\n", + "ax.set_xlabel(\"Depth (m)\")\n", + "ax.set_ylabel(\"Cost ($)\")\n", + "cost_catenary.plot(ax, plot_data=True)\n", + "cost_catenary.plot(ax, plot_curves=[\"linear_1d\"])\n", + "\n", + "ax = fig.add_subplot(2, 2, 2, projection='3d')\n", + "ax.set_title(\"TLP\")\n", + "ax.set_xlabel(\"Depth (m)\")\n", + "ax.set_ylabel(\"Draft depth (m)\")\n", + "ax.set_zlabel(\"Cost ($)\")\n", + "cost_tlp.plot(ax, plot_data=True)\n", + "cost_tlp.plot(ax, plot_curves=[\"linear_2d\"])\n", + "\n", + "ax = fig.add_subplot(2, 2, 3)\n", + "ax.set_title(\"Semi-Taut\")\n", + "ax.set_xlabel(\"Depth (m)\")\n", + "ax.set_ylabel(\"Cost ($)\")\n", + "cost_semitaut.plot(ax, plot_data=True)\n", + "cost_semitaut.plot(ax, plot_curves=[\"linear_1d\"])\n", + "\n", + "cost_catenary.export(\"mooring_system.yaml\", \"catenary\")\n", + "cost_tlp.export(\"mooring_system.yaml\", \"tlp\")\n", + "cost_semitaut.export(\"mooring_system.yaml\", \"semitaut\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Array System\n", + "\n", + "The array system cost is entirely dependent on the cable length.\n", + "The cable length is a function of some fixed plant parameters and the following spatially\n", + "dependent parameters:\n", + "- water depth\n", + "- touchdown distance\n", + "- floating cable depth" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "daeda722d6574a2198151c690f55f0cc", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAACze0lEQVR4nOzdd1xV9f/A8ddlbxBEhqKggoqKMwz3zJWplWVpaMty5CgrqV+i5swytUHL1DKzr+bMvXDkHii4cDAcIAqyZXjv+f3Bl/v1yhCZF3g/H4/70Hvu55zzvudyPvd9z/kMlaIoCkIIIYQQotowqOgAhBBCCCFE+ZIEUAghhBCimpEEUAghhBCimpEEUAghhBCimpEEUAghhBCimpEEUAghhBCimpEEUAghhBCimpEEUAghhBCimpEEUAghhBCimpEEUAghhBCimpEEUAghhBCimpEEUAghhBCimpEEUAghhBCimpEEUAghhBCimpEEUIgSWrZsGSqVihMnTlR0KEKIMlIa57m7uzsjR44svaD0UHV4j1WFJICiUsitfHMfZmZmuLq60rt3bxYvXkxKSkqZx/D999+zbNmyMt+PENXZw+d5YY/g4OCKDrXK69q1q/Z4GxgYYGNjQ6NGjXjttdfYuXNnqe1ny5YtTJs2rdS2J4rGqKIDEOJJzJgxAw8PD7Kzs4mNjSU4OJiJEyeyYMECNm7ciI+PT5nt+/vvv6dmzZry61aIMvT777/rPP/tt9/YuXNnnuVNmjQpz7CqrTp16jBnzhwA0tLSuHLlCmvXrmXFihW89NJLrFixAmNjY235S5cuYWDwZNeWtmzZwnfffSdJYDmTBFBUKn379qVt27ba5wEBAezZs4dnn32W5557jgsXLmBubl6BEQohSmL48OE6z48cOcLOnTvzLBflw9bWNs+xnzt3LuPHj+f777/H3d2defPmaV8zNTUt7xBFMcktYFHpde/enc8++4yoqChWrFihXX7x4kVefPFF7O3tMTMzo23btmzcuFFn3dxby/v37+edd97BwcEBGxsb/P39uXfvnracu7s7586dY9++fdpbIl27dtXZVmZmJu+//z6Ojo5YWloyePBg7ty5U6bvXYjqKC0tjQ8++AA3NzdMTU1p1KgRX375JYqiaMtERkaiUqnybbahUqnyXG26efMmb775Jq6urpiamuLh4cHo0aPJysrSKVeU81xRFGbOnEmdOnWwsLCgW7dunDt3Lt/3cu3aNYYMGYK9vT0WFhY8/fTTbN68WWdbNWvW5P3339cu02g02NnZYWhoSGJionb5vHnzMDIyIjU1FYCRI0diZWXFzZs3GTRoEFZWVjg6OjJ58mTUanWhx7gwhoaGLF68GG9vb7799luSkpK0rz3aBjA7O5vp06fj6emJmZkZDg4OdOzYUXsLeeTIkXz33XeA7u3/XF9++SXt27fHwcEBc3Nz2rRpw5o1a/LEpFKpGDduHOvXr6dZs2aYmprStGlTtm3blqdsUT7rxMREJk6cqP0ba9iwIfPmzUOj0RT7uOkbuQIoqoTXXnuNTz75hB07dvD2229z7tw5OnToQO3atZkyZQqWlpb85z//YdCgQfz9998MHjxYZ/1x48ZhZ2fHtGnTuHTpEkFBQURFRREcHIxKpWLhwoW89957WFlZ8emnnwLg5OSks4333nuPGjVqEBgYSGRkJAsXLmTcuHH89ddf5XYchKjqFEXhueeeY+/evbz55pu0bNmS7du38+GHH3Lz5k2+/vrrJ97mrVu38PX1JTExkVGjRtG4cWNu3rzJmjVrSE9Px8TERFu2KOf51KlTmTlzJv369aNfv36cOnWKZ555Jk8yefv2bdq3b096ejrjx4/HwcGB5cuX89xzz7FmzRoGDx6MSqWiQ4cO7N+/X7ve2bNnSUpKwsDAgH///Zf+/fsDcODAAVq1aoWVlZW2rFqtpnfv3rRr144vv/ySXbt28dVXX9GgQQNGjx79xMcql6GhIa+88gqfffYZBw8e1MbwqGnTpjFnzhzeeustfH19SU5O5sSJE5w6dYpevXrxzjvvcOvWrXxv8wMsWrSI5557jmHDhpGVlcWqVasYMmQI//zzT559Hjx4kLVr1zJmzBisra1ZvHgxL7zwAtHR0Tg4OABF+6zT09Pp0qULN2/e5J133qFu3bocOnSIgIAAYmJiWLhwYbGPm15RhKgEli5dqgDK8ePHCyxja2urtGrVSlEURenRo4fSvHlzJSMjQ/u6RqNR2rdvr3h6eubZbps2bZSsrCzt8i+++EIBlA0bNmiXNW3aVOnSpUuBsfXs2VPRaDTa5ZMmTVIMDQ2VxMTEYr1nIYSijB07Vnn4q2r9+vUKoMycOVOn3IsvvqioVCrlypUriqIoSkREhAIoS5cuzbNNQAkMDNQ+9/f3VwwMDPKtX3LP6aKe53FxcYqJiYnSv39/nXKffPKJAigjRozQLps4caICKAcOHNAuS0lJUTw8PBR3d3dFrVYriqIo8+fPVwwNDZXk5GRFURRl8eLFSr169RRfX1/l448/VhRFUdRqtWJnZ6dMmjRJu60RI0YogDJjxgyd99SqVSulTZs2ed7ro7p06aI0bdq0wNfXrVunAMqiRYu0y+rVq6fzHlu0aKH079+/0P08+hk/LD09Xed5VlaW0qxZM6V79+46ywHFxMRE+/kriqKcOXNGAZRvvvlGu6won/Xnn3+uWFpaKuHh4TqvT5kyRTE0NFSio6MLfT+VhdwCFlWGlZUVKSkpJCQksGfPHl566SVSUlK4e/cud+/eJT4+nt69e3P58mVu3ryps+6oUaN0GjKPHj0aIyMjtmzZUuT9jxo1SufWRadOnVCr1URFRZX8zQkhgJwOA4aGhowfP15n+QcffICiKGzduvWJtqfRaFi/fj0DBgzQaV+c6+FzGh5/nu/atYusrCzee+89nXITJ07M9734+vrSsWNH7TIrKytGjRpFZGQk58+f19nHoUOHgJwrfZ06daJTp04cOHAAgLCwMBITE+nUqVOe/bz77rs6zzt16sS1a9cKPS5FkXulsbBRGOzs7Dh37hyXL18u1j4ebtN97949kpKS6NSpE6dOncpTtmfPnjRo0ED73MfHBxsbG+17LepnvXr1ajp16kSNGjW03x93796lZ8+eqNVqnauxlZkkgMWwf/9+BgwYgKurKyqVivXr1z/R+tOmTct3WANLS8uyCbiaSE1NxdramitXrqAoCp999hmOjo46j8DAQADi4uJ01vX09NR5bmVlhYuLC5GRkUXef926dXWe16hRA0CnLaEQ+k7f67eoqChcXV2xtrbWWZ7bK/hJf3DduXOH5ORkmjVrVqTyjzvPc/f/aJ3i6OioLZsrKiqKRo0a5dnHo++ldevWWFhYaJO93ASwc+fOnDhxgoyMDO1rDyeTAGZmZjg6OuaJuTTqpdy2ho9+Fg+bMWMGiYmJeHl50bx5cz788EPOnj1b5H38888/PP3005iZmWFvb4+joyNBQUE67Q5zPfrZgO57LepnffnyZbZt25bn+6Nnz55A3u+PykraABZDWloaLVq04I033uD5559/4vUnT56c5xdZjx49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Qw899LvH7OfnR0BAAKGhoTzxxBNs3rwZX19fhg0bVqLdvHnzCAsLw93dnZYtW/L+++/b96WmpmIymVi8eDGdO3fG3d2diIgIEhMT7fu7desGQN26dTGZTAwZMsT+fZvNxiuvvIKPjw8BAQG88cYbv1nzzp07OXz4MPfff3+pGj799FPuuusuatWqRceOHUlOTiYpKYkOHTrg6elJ7969OXPmTIn++vbty+LFi3/3XImIyK1FAVCu25AhQ9ixYwcrVqxg69atGIZBnz59KCwsBCAvL4/27dvz5Zdfsm/fPp599ln+/Oc/s337dgBmzJhBVFQUQ4cOtc82hoSElDnWpUuX+N///V/+9a9/8e2335KWlsaYMWPs+6dMmcLHH3/M/Pnz2bx5M9nZ2fznP/+5oeOqVasWzz//PJs3byYjIwOAjz/+mNdff523336b/fv3M3HiRP7617+yYMGCEt99+eWXeemll9i9ezdRUVH07duXc+fOERISwmeffQYUzzimp6czY8YM+/cWLFiAh4cH27ZtY+rUqbz55pusXbv2qjVu3LiR0NBQvLy8Su0bP348r732Grt27cLZ2Zn+/fvzyiuvMGPGDDZu3EhKSgqvv/56ie906tSJn3/+mdTU1Bs6ZyIicpMypMYbPHiwYTabDQ8PD/vPo48+at/ftWtXIzY21jAMw0hOTjYAY/Pmzfb9Z8+eNWrVqmV8+umnVx3j/vvvN1566aUy+7zim2++MQDjwoULhmEYxvz58w3ASElJsbeZNWuW4e/vb//s7+9vxMfH2z8XFRUZDRs2NPr163fVWn49zi+tXr3aAIxt27YZhmEYTZs2NRYtWlSizd/+9jcjKirKMAzDOHr0qAEYkydPtu8vLCw0goODjSlTpvzmeF27djXuvPPOEts6duxoxMXFXbX22NhYo3v37iW2Xalh3rx59m2ffPKJARhff/21fdukSZOMFi1alPhuVlaWARgbNmy46pgiInLrca6q4CnVS7du3UrcC+bh4VFmu/379+Ps7Mz//M//2LfVq1ePFi1asH//fgCsVisTJ07k008/5cSJExQUFJCfn0/t2rWvu67atWvTtGlT++fAwED77FxWVhanT5+mU6dO9v1ms5n27dtjs9mueywovscOwGQycfHiRQ4fPszTTz/N0KFD7W2KiopKPagSFRVl/7OzszMdOnSwn4/fEhkZWeLzL4+vLJcvX8bd3f13+/L39wegdevWJbb9uu9atWoBxTOtIiJScygAClAc+Jo1a+aQvuLj45kxYwbTp0+ndevWeHh4MGrUKAoKCq67LxcXlxKfTSaTPaRVhCuhrXHjxuTm5gLwwQcflAi8wFXvj7xeZR3fb4XX+vXrX/UhlV/2deVBml9v+3Xf58+fB8DX1/f6ChcRkZua7gGU6xIWFkZRURHbtm2zbzt37hwHDx4kPDwcgM2bN9OvXz8GDhzI7bffzm233UZycnKJflxdXbFareWqxWKx4O/vT1JSkn2b1Wpl165dN9Tf5cuXmTt3LnfffTe+vr74+/vToEEDjhw5QrNmzUr8/PoJ6e+++87+56KiInbu3ElYWBhQfKxXaiuvtm3bcuDAAYeF4H379uHi4kKrVq0c0p+IiNwcNAMo16V58+b069ePoUOHMmfOHLy8vBg7dixBQUH069fP3mbp0qVs2bKFunXrMm3aNE6fPm0PiFA8w7Zt2zZSU1Px9PTEx8fnhuoZMWIEkyZNolmzZrRs2ZL33nuPCxcuXNNSMhkZGeTl5ZGTk8POnTuZOnUqZ8+e5fPPP7e3mTBhAiNHjsRisdCrVy/y8/PZsWMHFy5c4MUXX7S3mzVrFs2bNycsLIx33nmHCxcu8NRTTwHQqFEjTCYTX3zxBX369KFWrVp4enre0PF269aN3NxcfvzxRyIiIm6oj1/auHGj/clhERGpOTQDKNdt/vz5tG/fngceeICoqCgMw2DVqlX2y42vvfYa7dq1o2fPntxzzz0EBASUWpZlzJgxmM1mwsPD8fX1JS0t7YZqiYuL409/+hODBg0iKioKT09PevbsedX75H6pRYsWNGjQgPbt2zN58mR69OjBvn37SgTVZ555hnnz5jF//nxat25N165d+fDDD0vNAE6ePJnJkydz++23s2nTJlasWEH9+vUBCAoKYsKECYwdOxZ/f39eeOGFGzpWKL7f8uGHH+bjjz++4T5+afHixSXubxQRkZrBZFTkDVUilcxmsxEWFsZjjz3G3/72twofLzU1lSZNmrB7927atGlT4eMB/PDDD0RHR3P48OEbnkkEWL16NS+99BI//PADzs66GCAiUpNoBlBuaseOHeODDz4gOTmZvXv3MmzYMI4ePUr//v2rurQKExkZyZQpUzh69Gi5+rl48SLz589X+BMRqYH0//xyU3NycuLDDz9kzJgxGIZBREQE69atsz+Acav65dtEbtSjjz5a/kJEROSmpEvAIiIiIjWMLgGLiIiI1DAKgCIiIiI1jAKgiIiISA2jACgiIiJSwygAioiIiNQwCoAiIiIiNYwCoIiIiEgNowAoIiIiUsMoAIqIiIjUMAqAIiIiIjWMAqCIiIhIDaMAKCIiIlLDKACKiIiI1DAKgCIiIiI1zP8HJDr21rWqzrcAAAAASUVORK5CYII=", + "text/html": [ + "\n", + "
\n", + "
\n", + " Figure\n", + "
\n", + " \n", + "
\n", + " " + ], + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# First plot cost as a function of depth, touchdown_distance, and floating_cable_depth to get a\n", + "# sense for the 1d relationships\n", + "\n", + "design_phase = \"ArraySystemDesign\"\n", + "results = {\n", + " \"array_system_system_cost\": lambda run: run.design_results[\"array_system\"][\"system_cost\"],\n", + "}\n", + "\n", + "# Water depth\n", + "cost_depth = CostFunction(\n", + " config={\n", + " \"design_phases\": [design_phase],\n", + " },\n", + " parameters={\n", + " \"site.depth\": DEPTHS,\n", + " },\n", + " results=results\n", + ")\n", + "cost_depth.run()\n", + "\n", + "# Touchdown distance\n", + "cost_touchdown_distance = CostFunction(\n", + " config={\n", + " \"design_phases\": [design_phase],\n", + " },\n", + " parameters={\n", + " \"array_system_design.touchdown_distance\": [i for i in range(0, 100, 10)],\n", + " },\n", + " results=results\n", + ")\n", + "cost_touchdown_distance.run()\n", + "\n", + "# Floating cable depth\n", + "cost_cable_depth = CostFunction(\n", + " config={\n", + " \"design_phases\": [design_phase],\n", + " },\n", + " parameters={\n", + " \"array_system_design.floating_cable_depth\": DEPTHS,\n", + " },\n", + " results=results\n", + ")\n", + "cost_cable_depth.run()\n", + "\n", + "cost_depth.linear_1d()\n", + "cost_touchdown_distance.quadratic_1d()\n", + "cost_cable_depth.linear_1d()\n", + "cost_cable_depth.quadratic_1d()\n", + "cost_cable_depth.poly3_1d()\n", + "\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(2, 2, 1)\n", + "ax.set_title(\"Depth\")\n", + "ax.set_xlabel(\"Depth (m)\")\n", + "ax.set_ylabel(\"Cost ($)\")\n", + "cost_depth.plot(ax, plot_data=True)\n", + "cost_depth.plot(ax, plot_curves=[\"linear_1d\"])\n", + "\n", + "ax = fig.add_subplot(2, 2, 2)\n", + "ax.set_title(\"Touchdown Distance\")\n", + "ax.set_xlabel(\"Touchdown Distance (m)\")\n", + "ax.set_ylabel(\"Cost ($)\")\n", + "cost_touchdown_distance.plot(ax, plot_data=True)\n", + "cost_touchdown_distance.plot(ax, plot_curves=[\"quadratic_1d\"])\n", + "\n", + "ax = fig.add_subplot(2, 2, 3)\n", + "ax.set_title(\"Floating Depth\")\n", + "ax.set_xlabel(\"Floating Depth (m)\")\n", + "ax.set_ylabel(\"Cost ($)\")\n", + "cost_cable_depth.plot(ax, plot_data=True)\n", + "cost_cable_depth.plot(ax, plot_curves=[\"linear_1d\", \"quadratic_1d\", \"poly3_1d\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/rmudafor/Development/orbit/ORBIT/phases/design/_cables.py:386\n", + "The iteration is not making good progress, as measured by the \n", + " improvement from the last ten iterations.RuntimeWarning: /Users/rmudafor/Development/orbit/ORBIT/phases/design/_cables.py:386\n", + "The iteration is not making good progress, as measured by the \n", + " improvement from the last ten iterations.RuntimeWarning: /Users/rmudafor/Development/orbit/ORBIT/phases/design/_cables.py:372\n", + "overflow encountered in cosh" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Warning: Catenary calculation failed. Reverting to simple vertical profile.\n", + "Warning: Catenary calculation failed. Reverting to simple vertical profile.\n" + ] + } + ], + "source": [ + "# Then create functions of two variables.\n", + "# NOTE: The parameterization and plotting are split in two blocks since the ORBIT model takes\n", + "# some time to run.\n", + "\n", + "design_phase = \"ArraySystemDesign\"\n", + "results = {\n", + " \"array_system_system_cost\": lambda run: run.design_results[\"array_system\"][\"system_cost\"],\n", + "}\n", + "\n", + "# Water depth vs touchdown distance\n", + "cost_depth_touchdown_distance = CostFunction(\n", + " config={\n", + " \"design_phases\": [design_phase],\n", + " },\n", + " parameters={\n", + " \"site.depth\": DEPTHS,\n", + " \"array_system_design.touchdown_distance\": [i for i in range(0, 100, 10)],\n", + " },\n", + " results=results\n", + ")\n", + "cost_depth_touchdown_distance.run()\n", + "\n", + "# Water depth vs cable depth\n", + "cost_depth_cabledepth = CostFunction(\n", + " config={\n", + " \"design_phases\": [design_phase],\n", + " },\n", + " parameters={\n", + " \"site.depth\": DEPTHS,\n", + " \"array_system_design.floating_cable_depth\": DEPTHS,\n", + " },\n", + " results=results\n", + ")\n", + "cost_depth_cabledepth.run()\n", + "\n", + "# Touchdown distance vs cable depth\n", + "cost_touchdown_cabledepth = CostFunction(\n", + " config={\n", + " \"design_phases\": [design_phase],\n", + " },\n", + " parameters={\n", + " \"array_system_design.floating_cable_depth\": DEPTHS,\n", + " \"array_system_design.touchdown_distance\": [i for i in range(0, 100, 10)],\n", + " },\n", + " results=results\n", + ")\n", + "cost_touchdown_cabledepth.run()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "a228ee4b8be142bdb82efb0c18561d66", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOydeZxcZZW/n7vUXtX73kk6+0oCSdg6EBYBkW1gxAVHh0UdZ0ZnlFHHAR1RUUdBBRE1bqiI+lNRQEQRlH0Je3dn3zpJpzu9V3VX1151731/f9y+la7e16ST3MdPPthVt269dzv1fc857zmSEEJgY2NjY2NjY2Nz0iAf6wHY2NjY2NjY2NgcXWwBaGNjY2NjY2NzkmELQBsbGxsbGxubkwxbANrY2NjY2NjYnGTYAtDGxsbGxsbG5iTDFoA2NjY2NjY2NicZtgC0sbGxsbGxsTnJsAWgjY2NjY2Njc1Jhi0AbWxsbGxsbGxOMmwBaGNjY2NjY2NzkmELQBsbGxsbGxubkwxbANrY2NjY2NjYnGTYAtDGxsbGxsbG5iTDFoA2NjY2NjY2NicZtgCcQX7+858jSRJvvPHGsR7KccONN96I3++f9OcPHjyIJEn8/Oc/n75BzTJOhmO0sTkR7ef8+fO58sorx9zu2WefRZIknn322Zkf1CzAsmnf/OY3j/VQTiqOawFoGQjrn9vtpqqqiksvvZTvfOc7RCKRozKO73//+8fVj7FlXMbzz2bmGXi+VVWlqKiI9evX84lPfIIdO3ZM2/ccb/epzcxi28+xaWxs5F//9V9ZuHAhbrebvLw8zjnnHO655x4SicSxHt64sQSW9c/hcFBSUsKGDRv47Gc/y6FDh47KOP7yl7/wxS9+8ah8l83YqMd6ANPB7bffzoIFC8hkMrS3t/Pss89y8803c9ddd/Hoo4+yZs2aGf3+73//+5SUlHDjjTfO6PdMFytWrOCBBx7Iee3WW2/F7/fzuc997hiN6uTmkksu4frrr0cIQTgcpqGhgfvvv5/vf//73HHHHXzyk5/MbltTU0MikcDhcEzoO463+9Tm6GDbz+H585//zLvf/W5cLhfXX389p5xyCul0mhdffJH//u//Zvv27fzoRz861sOcEO973/u4/PLLMQyDnp4eXn/9db797W9zzz33cN9993HdddfN6Pf/5S9/4Xvf+54tAmcJJ4QAvOyyyzj99NOzf9966608/fTTXHnllfzDP/wDO3fuxOPxHMMRzi7Ky8v5wAc+kPPa17/+dUpKSoa8bnN0WLp06bDX5KqrruJTn/oUy5cv5/LLLwfIemtsbKYD234O5cCBA1x33XXU1NTw9NNPU1lZmX3vYx/7GPv27ePPf/7zMRzh5Fi3bt0QO9PU1MTb3/52brjhBlasWMGpp556jEZnc7Q5rkPAo/G2t72Nz3/+8zQ1NfHLX/4y571du3bxrne9i6KiItxuN6effjqPPvpozjZWeOT555/nX//1XykuLiYvL4/rr7+enp6e7Hbz589n+/btPPfcc1n3+gUXXJCzr1QqxSc/+UlKS0vx+Xz84z/+I11dXaOO/5vf/CaSJNHU1DTkvVtvvRWn05kdx969e7n22mupqKjA7XYzZ84crrvuOsLh8ERO2RD279/Pu9/9boqKivB6vZx99tlDjJ51ng4ePJjz+kg5LK+++iqXX345hYWF+Hw+1qxZwz333DPkuw8fPsw111yD3++ntLSUT3/60+i6nrNNb28vN954I/n5+RQUFHDDDTfQ29s77LE8/fTTbNy4EZ/PR0FBAVdffTU7d+7Mvr9lyxYkScq5D958800kSWLdunU5+7rssss466yzsn9beT0vvvgiZ555Jm63m4ULF/KLX/xi2LGMl+LiYn7zm9+gqipf/epXs68PlwPY3t7OTTfdxJw5c3C5XFRWVnL11Vdnr8to92koFOLTn/40q1evxu/3k5eXx2WXXUZDQ0POeKxr+rvf/Y6vfvWrzJkzB7fbzUUXXcS+ffuGjH8813o8z6LN0edksp/DceeddxKNRrnvvvtyxJ/F4sWL+cQnPpH9+2c/+xlve9vbKCsrw+VysXLlSjZt2jTi/p988klOO+003G43K1eu5KGHHhr1eCxeffVV3vGOd5Cfn4/X6+X888/npZdeGtdnR6Kmpoaf//znpNNp7rzzzpz3ent7ufnmm5k7dy4ul4vFixdzxx13YBhGdpuB+Xt33303NTU1eDwezj//fLZt25bd7sYbb+R73/sewKhpRj/60Y9YtGgRLpeLM844g9dff31Kx2czCuI45mc/+5kAxOuvvz7s+83NzQIQ73rXu7Kvbdu2TeTn54uVK1eKO+64Q3z3u98V5513npAkSTz00END9r169WqxceNG8Z3vfEd8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aDT7IO/btw8hBJ///OcpLS3N+feFL3wBgM7OzpzPL1myJOdvv99PZWXlkJy30Zg3b17O39YNPtaP9bvf/W5kWea3v/0tAEIIHnzwQS677DLy8vIAWLBgAZ/85Cf5yU9+QklJCZdeeinf+973ppz/19TUxLJly4a8vmLFiuz7E8EywqeccsqY27rdbkpLS3NeKywszDlfTU1NVFZWDqkZOHjM1jhHOhbLiIJpbDRNY/PmzezevZvOzk42btzIeeedlyMAV65cmSMmYeg1Hm7MkyUajQIj/yC5XC7uuOMOHn/8ccrLyznvvPO48847R/wxGYxhGNx9990sWbIEl8tFSUkJpaWlbNmyZdj7aKz7eTzXejLPos3R50S3n8NhvTeRMjgvvfQSF198cTbHuLS0lM9+9rMAQ56hxYsXD5n0Ll26FGDE87J3714AbrjhhiHn/ic/+QmpVGrKNn+wndm7dy9//etfh3zfxRdfDIx9ra3jOhrX2mZynBCrgEeipaWFcDjM4sWLAbIzpE9/+tNceumlw37G2nY6URRl2NeFEKN+rqqqio0bN/K73/2Oz372s7zyyiscOnSIO+64I2e7b33rW9x444388Y9/5Mknn+TjH/84X/va13jllVeYM2fOtB3HcIxUK3Dwgo2JMNL5mmlOP/103G43zz//PPPmzaOsrIylS5eyceNGvv/975NKpXjhhRdyZu8Wk73G42Hbtm0oisKCBQtG3Obmm2/mqquu4pFHHuGJJ57g85//PF/72td4+umnWbt27aj7/7//+z8+//nP88EPfpAvf/nLFBUVIcsyN99887Behek41mP1LNqMn5PFfg4mLy+PqqqqnAUMo9HY2MhFF13E8uXLueuuu5g7dy5Op5O//OUv3H333VP2zMGRc/+Nb3yD0047bdhtplJAH0w7U1ZWlhXAhmFwySWX8JnPfGbY7S3ROp3MpB21GcoJLQCtWneWsVq4cCEADocjO4sZi71793LhhRdm/45Go7S1tWVLcsDIImg6eO9738tHP/pRdu/ezW9/+1u8Xi9XXXXVkO1Wr17N6tWr+d///V9efvllzjnnHH7wgx/wla98ZVLfW1NTw+7du4e8vmvXruz7cGSGNnj17WAP4aJFiwDTyIz33I81vqeeeopoNJpj+AaP2RrnSMdSUlKCz+cDwOl0cuaZZ/LCCy8wb968bPhh48aNpFIpfvWrX9HR0cF555035fGPl0OHDvHcc89RW1s7Zkhq0aJFfOpTn+JTn/oUe/fu5bTTTuNb3/pWdhXnSPfp73//ey688ELuu+++nNd7e3spKSmZ8JjHc60n8yzaHF1OJvs5mCuvvJIf/ehHbN68mdra2lG3/dOf/kQqleLRRx/N8WA988wzw25veVIHHveePXsAc1X0cFjPVF5e3ow8L5s3b6axsTGnRMyiRYuIRqMTutaD2bNnT84x2c0FZhcnbAj46aef5stf/jILFizg/e9/PwBlZWVccMEF/PCHP6StrW3IZ4YrLfCjH/2ITCaT/XvTpk1omsZll12Wfc3n841YfmSqXHvttSiKwv/7f/+PBx98kCuvvDIrWMDMV9E0Leczq1evRpZlUqnUpL/38ssv57XXXmPz5s3Z12KxGD/60Y+YP38+K1euBI4YpoH5ILquDymQum7dOhYsWMC3v/3tIedqMrO7yy+/HE3Tckot6LrOvffem7NdZWUlp512Gvfff3/O927bto0nn3wy54cITLH36quv8swzz2QFYElJCStWrMh6Dgbm+s0koVCI973vfei6PmqB7ng8TjKZzHlt0aJFBAKBnHtgpPtUUZQh1+DBBx+cdA7eeK71ZJ5Fm6PHyWI/R+Izn/kMPp+PD3/4w3R0dAx5v7GxMVvSyPJaDXyGwuEwP/vZz4bdd2trKw8//HD2776+Pn7xi19w2mmnUVFRMexn1q9fz6JFi/jmN7+ZDdUOZCrPS1NTEzfeeCNOp5P//u//zr7+nve8h82bN/PEE08M+Uxvb++Q351HHnkkx2a89tprvPrqq0OutfV5m2PPCeEBfPzxx9m1axeaptHR0cHTTz/N3/72N2pqanj00UdziuZ+73vf49xzz2X16tX8y7/8CwsXLqSjo4PNmzfT0tIypPZZOp3moosu4j3veQ+7d+/m+9//Pueeey7/8A//kN1m/fr1bNq0ia985SssXryYsrIy3va2t03LsZWVlXHhhRdy1113EYlEeO9735vz/tNPP81//Md/8O53v5ulS5eiaRoPPPAAiqJw7bXXTvp7b7nlFv7f//t/XHbZZXz84x+nqKiI+++/nwMHDvCHP/whu2hg1apVnH322dx6662EQiGKior4zW9+M8Q4yLLMpk2buOqqqzjttNO46aabqKysZNeuXWzf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GIwbxMaNG9E0jVGjRh1z5icYDJquHPX19cTExBzT4My3xbZt27jooou45ZZbeOihh7qV/IVCIXJycrjrrru4//77AZg0aRJbt25FCEFWVhZTp07lgQceOCFyQ4dDJLDu3LmTCRMmcNlllzF16lQmT56Mruu88847zJ49m9jYWIYPH46maXz44Ye8/fbbTJw4MTr124OhaRqff/65qYna0NDABRdcwPTp0zn//PPbbcDC4TAbN25ECMHIkSOPSfvz26DJH2Z1cR0uv8rAzDjGFSa1E22+a94WVhfXE2tvHxO9QY3h2U6uGWxH0zRqfRpPr/PiDRvagEIYwi+D0izMHBHX7pyHg3IEz2JVVXG5XDQ0uvi4WqY4EE9YyBSkOLj1rD5MHpp5yOcdD6qqqrjooos45ZRTzJaLKAwsXryYtWvXUlpaSm5uLo888oj5txUrVvDggw+Sk5PD9ddfz+TJkwF49tlnGTlyJKecckp3LbsdogTwOwRVVfn444956623WLx4MT6fjylTpnDJJZeQkJDA5s2bOffccw8rM9O2ZFpdXd3OnzgtLa3HlNciN4iIU8m3bThXVbXdRLHVajXlZSKuHCcSxcXFXHTRRVx77bU8+uij3U5a/vvf/3LllVdSWlpqlibmzp1LQUEBOTk5bN68mfvuu4/x48ezYMGCTl1LIBDg4osvprCwkOeee67d31RVpby8nD//+c94PB4KCwuZNm0aw4cPj5K/kwi6rvPVV1+ZZLCiooLzzjuP6dOn079/f5YvX855553H8OHDexThWPZNDfcv3oYiS9gUI36GNUFYFzw8dSDnDUhlX2UNjyzfw7rKEIoMQuggQEgyArhhRCyDUo8cRy2KjKp37Las6zoBn5f89ERcjfXIsmxWNVJSUr7VNVFbW8vkyZMZNmwY//nPf6Ie2m3w73//m5kzZzJx4kTWrl1LUlISc+fONYkewEcffcTNN9/MtGnTePTRR3vUbzmCKAH8jkLTND777DPmzZvHG2+8QU1NDQMHDuTXv/41F1xwQYcyORF/4urqarN/LmJJ11W78gMRCoXYsGEDNputU24QbXsla2trEUK0GyL5tq+3e/duLrzwQi677DKeeOKJHkFaLrjgAmw2G0uWLDnsMR9++CHnnnsuJSUlFBUVddpa6uvrOfvss/ntb3/L9OnT0XUdSZKOmCE9khB0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916amppISkoyyV90TxpFd8JqtXL++eczd+5cysvLmTVrlnm9nHvuudx888288847XRZnAOJjnYwf2o/Rg4qOi/zdf//9LFmyhJUrV36vyR8YLUp///vfueuuu2hububuu+9mxowZLF26lI8//pj169dzxRVXtLN6+64iSgCj6BZYrVYkSWLNmjXU19fz0ksvIYTguuuuo6ioiNtuu40VK1YQCoUOe46IP/H48eOZOHEiGRkZ1NTU8Mknn/Dll1+yd+/eTvMnVlWVm266ieLiYlasWNFtU3SnnHIKL730Eu+//z7/+Mc/2LNnD2eccQbNzc1dpp8V6ZUpLy83S/JPP/00paWlXHbZZZx77rls376dV199lb///e+MHTuWnJwcsrKymDt3LosXLz7k+aKIorthsVgIBoMsWbKEuro63n77bdLS0rjnnnvo3bs3P/3pT1m0aNFBnrqdAUmSSEmMO6bnCCF46KGHeOutt/jggw+i7RUYLSnLly/nlVdeMTenM2fOpG/fvkyYMIFPP/2UyspKrr76anbu3Nndy+1UREvAUfQoqKrK//73P+bNm8eiRYvw+/1cfPHFTJs2jXPOOadDOlGhUMj0J25oaCAuLq6dJd23haZpzJo1i7Vr17Jq1aoe5VDR1NREQUEBf/7zn3E6nVx//fUEg8F2x4wfP56zzz6bP/7xjyfsdVesWMFFF13E559/zuOPP87mzZv5/PPPTfK5atUqbrzxRlavXk2vXr1Yv349L774Ivfcc0+P7kWKIopDQdd1vvrqK9MtqaqqivPOO4/p06dz4YUXdtkQ2JEghODRRx9l7ty5rFq1iiFDhnT3kroFbQc6In17AB999BGXXXYZdXV1rFy5knPOOccc9qipqTH/e968eQwePLg730KnIZoBjKJHwWKxcM455/DMM89QVlbG4sWLSUlJ4a677qJ3797MnDmTxYsXH3HHbbPZyMvLY/To0Zx11lnk5+fjcrlYs2YNn332GSUlJTQ3Nx9XqVHXdW6//XbWrFnDypUrexT5A6Pk2r9/f0pKSsjKyiIUCtHU1NTumOrq6uNunj4cIt/N2Wefzaeffsq2bdtISkpC1w39stzcXMrKynjsscf497//zWWXXYau6yb5i+5DoziZIMsyp5xyCo899hjFxcX873//Y9CgQfzhD3+gsLCQyy+/nNdee42mpqZu+W0LIXjiiSf4xz/+wYoVK7635A9aKwo7duzAarXi8Xj417/+xRlnnGFmdP/617/S1NRkOhVlZGTw0UcfEQ6HO91tpDsRzQBGcVJA13W++OIL5s+fz8KFC6murub88883d9xxcUcvjUSMz2tqaqitrcVut5OZmdlhf2Jd1/nFL37B8uXLWbVqFYWFhSfo3Z04eDwe8vPzefDBB7nuuus6XT+r7e76oYce4qGHHiI+Pp558+Zx3nnnIYRA0zQsFgtvvPEGc+bMITs7m9GjR/P8889/69ePIoqeBCEEW7ZsMTODO3bs4Oyzz2b69OlMmTKFlJSUTm9xEELw17/+lccee4zly5czduzYTn29kwGPP/44ixYt4uGHH+aqq67itNNO46233kKSJL744gsmT57MpEmTeO6550hOTjbj2sk84dsRRAlgFCcddF1nw4YNzJs3jwULFlBWVsa5557L9OnTmTx5cofInKZp1NfXm2TQYrGY08RJSUkHPV/XdX75y1+yePFiVq1aRVFRUWe+xQ7j7rvvZurUqRQUFFBRUcFvfvMbNm7cyDfffEN6enqX6We5XC7Ky8sJBAK8/PLLvPTSS7z44ov88Ic/bKcH6PP5aG5uNnUIo8LPUXxXIYRgx44dzJ8/nwULFrB582bOPPNMpk2bxtSpU8nIyDjhv30hBP/85z95+OGHef/997tk0v9kwHvvvcdf//pXPv30U0aPHs1HH30EtGqVrl27lsmTJ3P66afz3HPPmWL1EXxX41SUAEZxUiOy437rrbdYuHAhxcXFnHPOOUybNo2LL76Y5OTkDmX2GhoaTEs6SZJMMhiZ7P2///s/3njjDVavXk3//v274q11CD/5yU/43//+R319Penp6UycOJHf//73JkE90fpZEbQlfw8//DBut5ubb76Zfv36sWvXLp588kleeeUVnn/+eX70ox/h9/t54IEHuPHGG00Zje9qUI0iigMhhGD37t0mGVy3bh0TJkxg2rRpTJs2jezs7G99LQgheOGFF/j1r3/Nu+++y8SJE0/Q6r8buPjii/nkk08YP348v/rVrzjrrLOA1li2efNmJk2axJAhQ1i5cuX3wsM9SgCj+M5ACMH27dvN8suWLVs488wzmT59OhdffDHp6ekdIoNNTU2mT/vy1QAAyAxJREFU1uBTTz3F3r17qa6uZvXq1YwcObJr3kwPxYGq+ffddx///ve/+eMf/8gFF1xgZvb279/P448/zjPPPMOtt97KqlWrSElJYdWqVd219Cii6BEQQlBaWsqCBQtYsGABa9asYdy4caYLSa9evY6ZDAoheOWVV7jnnntYsmQJkyZN6pzFn0SIxKpIG8pnn32Gx+Phn//8J16vl3vvvfcg3dGvv/6azZs3c9VVV3XTqrsWUQIYxXcSQgh27dpl7rjXr1/PaaedxrRp07jkkks6tOPWdZ1Zs2bx1ltvkZqaisfjYf369T2m/NvdWLhwIbfccgvLli0ziXF9fT319fXk5eVhs9l4+umnWbx4MUOHDuVvf/sbEM38RRFFBEIIKioqWLhwIQsWLODjjz9mxIgRTJ8+nWnTptGnT5+jXitCCN58801uv/12Fi5ceFgni+8T2vbulZeXY7fbTamuDz/8kCeffBKv18s999zDRRddxPr161m8eDG/+tWvTEOB70OcihLAKL7ziOy4I2Twiy++YPz48VxyySVMmzbtkDtuIQR/+ctfePzxx1mxYgWjR49mw4YNjBw5skOG8d81/PSnPyU7O5tHH33UfOzFF1/kzTff5P3332fbtm0sXLiQZ599lpiYGEaNGsXf//53kpOT20kvHMp3M4ooojBiTk1NDYsWLWLBggWsWrWKQYMGmWRwwIABhyQk8+fPZ9asWfz3v/9l8uTJ3bDynoW2xO2HP/whX3/9NZIkUVBQwD/+8Q/69u3LJ598wpNPPklJSQlnnnkmL730ErNmzeJPf/pTN6++axElgFF8rxDZcUfKL5988gmjRo0ye3EiKvnPPPMMjzzyCMuWLWP8+PHdvOruRSAQ4O2332bSpEnt7PpeeOEFbr75Zn7605+yYsUKJk6cyOmnn25KUCxevJhhw4aZx38fdtRRRHEiIISgsbGRxYsXM3/+fFauXElRURHTpk1jxowZDBo0CFmWefvtt7nhhht47bXXmDZtWncvu9vRduDstttuY82aNfzyl78kFArx1FNPUVFRwVtvvcWECRP44osvWLx4MRs3buS8887jzjvvBL5ncUpE0aPxyCOPiLFjx4q4uDiRnp4upk2bJrZv397uGL/fL2699VaRkpIiYmNjxQ9/+ENRVVXVTSs+eaDruqisrBT/+Mc/xHnnnSesVqsYMWKEmDJlioiLixOffPJJdy+xx+HVV18V06ZNM//7iSeeEDNnzhTPPfec2L9/vxBCiPLycjF8+HDxxRdfdNMqo+hqRONU56KpqUm88sorYvr06cLpdIp+/fqJH/7wh8LhcIi33nqry9fT07/vV155Rdx6663i888/b/f4BRdcIAoLC4XP5zMfC4VC5v/XNK1L1tdTECWAPRwXXHCBePHFF8WWLVvExo0bxeTJk0V+fr7weDzmMbfccovo1auX+OCDD8TatWvFqaeeKk477bRuXPXJB13XRV1dnZg7d67IysoSzz33XJe+fkcC6llnnSWAdv/87Gc/67I1BoNB8fLLL4vU1FRx2WWXmY9HfouapgmfzycmT54szjrrrC5bVxTdj2ic6jq43W7xxhtviL59+4pf/OIX3bKGnvx9L1y4UGRlZYn4+Hixfv16IYRBRoUQoqGhQeTn54u//e1vQoj2hE/X9U5fW09DlACeZKipqRGA+Oijj4QQxs7QarW22wVu27ZNAAftfqLouehIQD3rrLPETTfdJCorK81/XC7XCV9LJCiqqiq8Xq/Yt2+fcLvdQgiDBL711luiV69e7TKBXq9XPPLII+IHP/iBGDlypAgGg0KI72dQjSIap75v6M7v+8AYs2/fPvHb3/5WxMXFieuvv958XNM04Xa7xciRI8WTTz55QtdwsiLajX2SweVyAZCSkgLAunXrCIfD/OAHPzCPGThwIPn5+Xz++efdssYojh3vv/8+P/3pTxkyZAgjRozgpZdeorS0lHXr1rU7LiYmhqysLPOfhISEE7qOyJBGSUkJd999N6eeeirjx49n8ODBPPPMMzQ2NvKjH/2Ip556ik2bNjF16lRzXb1792bIkCGsWbMGm82Gpmnfn16aKNohGqe+X+iu7/vAGBMMBsnPz+f222/n/vvvZ9WqVcyePRswYpvb7aaysrJDzlHfB3x3PU6+g9B1nTlz5nD66aczdOhQAKqqqrDZbCQlJbU7NjMz8zvtYfhdx4EBNYJXX32V//znP2RlZTF16lQeeOABYmJiTshrRsjfli1buOSSS5g4cSJXXnklaWlprFy5ktmzZ7N27VoefPBBZsyYgaIo3H333UyZMoV3332Xn/zkJ/z4xz9GlmV0XTebsaP4fiEap75f6K7vu22M+e1vf0txcTEbN27k9ttv57zzzuOOO+5AlmX+9Kc/8dFHH9G7d2/8fj8TJ07kxhtvPCFrONkRJYAnEW677Ta2bNnCJ5980t1LiaITcaiACnDllVdSUFBATk4Omzdv5r777mPHjh0sWLDgW79mZHpux44dTJgwgdmzZ/PrX/+a2NhYAG688UZOPfVU7rrrLhISEnjqqac4//zzefLJJ7nuuuu4/vrrefHFF83deFTq5fuLaJz6fqG7vu9IjPnZz37G8uXLufPOOxk2bBhz5szhuuuu4+9//zs333wzFouFuXPnUl9fz9NPP82oUaOA9hPD31t0dw06io7htttuE3l5eWL37t3tHv/ggw8EIBobG9s9np+fL/785z934QqjOFG45ZZbREFBgSgrKzvicZHvvqSk5IS87r59+0RMTIyYPXu2+Ziu6+0apR955BEhSZL49NNPhRBCBAIBsXr1atHU1HRC1hDFyY1onPp+obu/7xUrVoi+ffuaA3NLliwRNptNLF261DzG7XaLJ554QowZM0bccsst5uPft4nfQyG6Te/hEEIwe/ZsFi5cyIcffmjq1EUwZswYrFYrH3zwgfnYjh07KC0tZcKECV293Ci+JWbPns0777zDqlWryMvLO+Kxp5xyCgAlJSUn5LXXrVuH3+8nLy+PxsZGACRJMu2UdF3n+uuvp6CggI8++gghBHa7nbPOOovExER0XT8h64ji5EM0Tn2/0F3ftzhAtjgcDpObm8uAAQP4xz/+wZVXXsl//vMfLrzwQqqrq1m+fDnx8fHMnDmTa665hi+//JJLL70UiFYpgGgGsKdj1qxZIjExUaxevbrd9GdbHaNbbrlF5Ofniw8//FCsXbtWTJgwQUyYMKEbVx3FsULXdXHbbbeJnJwcUVxc3KHnfPLJJwIQmzZtOmHr+Ne//iUkSRL333+/qKura7e+CPLy8sT9999/wl4zipMf/5+9846Oozr78DMz27WrXizJvRfcq1ywIRB6J5RAHFogQOglQAiYXvLRSQghQIDQbBI6xJQEMMWAwb1bbrLV20rbd2bu98dqB8mSbdmWbNm+zzk6tman3Cm6+5u3ynnq4KKr3O/Zs2eLAQMGiBdffFGkpaWJl156yfrsjTfeEKeddprYsGGDECJhCbz//vvFmWee2aL238GMFIBdHLap+5b8ef755611kgU3MzIyhMfjEaeccoooKyvbd4OW7DI7m1DXrVsn7rzzTrFgwQKxYcMG8fbbb4u+ffuKQw89tEOO39wd8o9//EMoiiJuvPFGUVVVZS3XdV0sX75cTJ06VXzyyScdclzJgYGcpw4u9tb9Tr54bty4UXz88cfilltuEX//+99bFJk//PDDhaIoVm0/IRJlaKZOnSp+85vftNhfKBQS8Xh8N874wES2gpNIugDbK5fy/PPPc95551FSUsK5557LsmXLCAaD9OjRg1NOOYVbb721w0rBiGYtkF599VXOOeccrr76an7/+9+Tl5cHwE033cTnn3/O22+/3aItnEQikXQkyaoEH3/8MXfddRe1tbVEo1E2bdpE7969OfPMM7nrrrv44osvuPHGGwkEAtx6662Ul5czZ84cAL766itrX4qiyLJU2yAFoEQisUhOB4qi8MYbb3DGGWdw+eWX88ADD/DII4/wwAMP8NVXXzF8+HBrgpZIJJKOJDm3fPDBB5x55pnceuutHH300YwcOZIffviBe++9l3nz5nHhhRdy3333MX/+fB577DHmzZvH4MGDGTRoEH/+858Bme27I6QAlEgkLWguAt955x3OOOMMevbsSWlpKZ988gmTJk2S4k8ikXQKSU/EZ599xhFHHMFf//rXVnX7Nm/ezKxZs/jwww958sknrcSO6upqsrOzrfWk+NsxcgaXdAj3338/iqJw9dVXW8sikQiXX345WVlZeL1eTjvtNCoqKvbdICVAYlLc0bKkq0QIwYknnshbb71lZdRNmjQJwzCk+JPsl8h5quujKAqbN2/m3HPPZcaMGZb4MwwDkchboGfPntx+++04nc4WdVCbF84XQkjxtxPkLL4XSD60Byrff/89Tz/9NCNGjGix/JprruHdd99lzpw5fP7555SWlnLqqafuo1FK4Kc34vLyct58803mzJljVdTf9hlVFAXTNDn66KMpLS1l8uTJ8o36AEbOU3Ke6io4HA6OPPJIYrEY9913H4A1RymKgq7r9OrVi/PPP58FCxbQ2NjYyish4/12jhSAe4HmwaemaR5Qk2wgEOCcc87hmWeeISMjw1ru9/t59tlnefjhhzn88MMZO3Yszz//PF9//TXz58/fhyM+uNE0jZKSEsaPH891113HpZdeyvDhw9m8eXObE2ZyQk22m5Pi78BFzlNynuoKCCHo1q0b9957L6NGjeLtt9/m7rvvBhLzkWEY2GyJJmbFxcUMHjwYn88nvRK7gbxincxdd93FRRddxDvvvAMkHuAD6c3k8ssv57jjjmvR9Btk8/euRtLFK4Tgscce4+STT2b+/Pl89NFH5ObmMm3aNFasWLHd7Q+kZ1bSGjlPyXmqq5AMP8nPz+fWW2+lqKiI9957j1mzZgGJl1DTNKmsrMTv9zN9+nSgdZFoyc6RArATKS8v56uvvuL999/n0ksvxePxcPbZZ1sTy/7+wL722mv8+OOPlom+ObL5e0v+/Oc/07t3b1wuFxMnTuS7777bq8fXNA2/388555xDIBDg1FNPJTc3lzFjxvD6668zZMgQjjzySJYtW7ZXxyXZ98h5Ss5TXY2kCMzNzeXWW29l6tSpfPjhh9x6660IIVBVlRtvvJFNmzbxm9/8xtpGsmtIAdiJfPfddzQ2NvLwww+zdetWPv74Y3w+H3/4wx/4+OOP9+sHtqSkhKuuuoqXX34Zl8u1r4fTpXn99de59tpruf322/nxxx8ZOXIkRx11FJWVlZ1+7ObJHeXl5cybN4+//e1vxONxIOHqy83N5eWXX2bcuHFMnDiRH374odPHJek6yHlK0hVJisCsrCz+8Ic/MGPGDD755BPuvPNOLrroIj788EPmzp2Lz+drM7FN0g72QrHpg5ZbbrlFTJ06VaxcudJaVlNTI84++2xRUFAgli1btg9Ht2e8+eabAhCaplk/gFAURWiaJj755BPZ/L2JCRMmiMsvv9z63TAMUVBQIO677769cvxwOCzeeustIYQQixYtEqNHjxYjRowQfr9fCPFTtf2amhpx7LHHivfff3+vjEvSNZDzlJynugrJuah568lkl6L6+nrxhz/8QeTm5oqcnBxRUlIihBCys8ceIC2AnURlZSXLly+nT58+DB482FqemZnJn//8ZxoaGvj222+B1tl3uq5jmuZeH/Ou8LOf/YylS5eyaNEi62fcuHGcc8451v9l83eIxWL88MMPLWKMVFXliCOO2GsxRs899xy33347K1asYOTIkbzwwgsATJ06lbq6OutNOzMzk7fffptjjz12r4xLsu+R85Scp/YlyecnHA4TjUaJRCLATxUIIDFfmqZJWloav//977nppptYsmQJ3bt3R9d1KyFEsuvIK9dJLFiwgMrKSo466iigZSsaXdfx+XysXbsW+Cl2oaKigry8vP3igfb5fBxyyCEtlqWkpJCVlWUtv/DCC7n22mvJzMwkNTWVK664gqKiIiZNmrQvhrxPqK6uxjAMq5Vakry8PFatWtUpx9x2Uhw9ejQOh4O33nqLoUOHMnToUF555RVmzpzJ9OnT+fTTT8nJyQHYL549Scch5yk5T+0rkmVb5s+fzyOPPMLq1asZOXIkRUVF/Pa3v22R1ZsUgT6fj2uuuQagRTawZPeQFsBOYv78+aiqyqGHHgr8FM8AsGTJEux2O3a7HYANGzZw++23c+qpp1JYWMjMmTPbDMZPFsLcX3jkkUc4/vjjOe200zj00EPp1q1bi6Kdks4hOSm+9dZbABQVFXHZZZfxxz/+ka+//hpN0ywRqKoqw4cPt968JQcXcp6S89S+QlVVfvjhB4488kj69u3LDTfcQEZGBpdddhmff/55m+s3R5ak6gD2mfP5AKampkacdtpp4pe//GWL5clYhdtvv13k5OSIL7/8UgghxBFHHCFOO+008eabb4rPPvtMnHjiieLUU08VDQ0NQoifYiCao+t6m8ubx05I9j3RaFRomibefPPNFstnzpwpTjzxxE477hlnnCEURRFHH320WLVqlYjH4+Laa68V06dPF+vXr7fWW7VqlRUfKDm4kPOUZF+g67oQIjE3nnvuueL666+3lg8YMED8+te/bvOZkXQ80gLYCXzzzTcUFxczZcqUFsttNhtbtmzhlVdeYfjw4UyZMoUXXniBr776ijFjxnD00Uczffp03n77bb777jvmzJlj7e+kk07ixRdfZOPGjUDi7af5G5FhGNTX1+/XGXsHIg6Hg7Fjx7aIMTJNk08//bRDY4y2zYK76KKLGDNmDGvWrOGiiy7ivvvuIyMjg549e/LRRx9Z6w8aNIiTTjqpw8Yh2X+Q85Rkb/HFF1/w+9//Hvipo4eqqqxfv55Ro0ah6zrDhw9n+PDh/O1vf0NVVd5++23mzZu3j0d+YCMFYCdRU1PD9ddfz2WXXcYHH3zAt99+yyOPPMJZZ51FOBzmpptuwjRN5s6dS2FhIe+99x45OTmMHj2av/zlL7hcLqtUx/r161mwYAFPPPEEV199NTabjSuuuAK/32+5WtauXcuxxx7L448/DvxUu6uiooIlS5bsm4sgAeDaa6/lmWee4YUXXmDlypVceumlBINBzj///A47RtIdous6ABMmTODwww/nuuuu45JLLqGhoYE33niDN954g2eeeYbGxsYOO7Zk/0XOU5LOJh6P8/nnn/Paa69x0003AYlQA8MwGDx4MBUVFRQVFdG/f39efvllHA4H9fX1zJ07l+XLl8sSL53JPrU/HuB8+OGH4rTTThM9evQQEyZMEOPGjRNHH320+Oabb4QQCZfJmDFjxKxZs4QQQqxevVo8/PDDYtKkSaJnz57ib3/7mzBNU/z2t78VLpdLPP7446KyslJ88MEHorCwULz33ntCCCE+//xzcdlll4kJEyaI7777rsUYrr32WpGdnS1CodDePXlJC5544gnRs2dP4XA4xIQJE8T8+fM7/BjXXnutyMrKErNnzxb19fVi/vz5YsCAAeL7778XQgjxySefiMGDBwtFUcRrr73W4ceX7J/IeUrS2VRUVIgHHnhADBs2TFx99dXW8kcffVQoiiKGDx/eohTPww8/LHr27CmWLl26D0Z78CAFYCeQjHFoztq1a8XWrVtbLf/Zz34mTjvttFYT35YtW0QoFBKrV68WEydOFBdffLH1WTgcFieffLI45ZRThBBCzJ07V6SnpwtFUcS4cePEk08+KaLRqBBCiFGjRokbbrhBCJGYyGVsxYHDtnFU9fX14oILLhATJ04Uxx9/vFi2bJl46qmnxNChQ8WmTZuEEEKUlZWJjz/+eF8MV9LFkPOUZG9SXV0tHnzwQXHIIYeIyy67zFp+2223CU3TxHXXXSduuukmcc011wi32y3mzp0rhJDxop2JdAF3Akl3nGmalkuuf//+FBQUtFr3nnvuYe3atTz33HP4/X6CwSBbtmyhsLAQt9vNggULKCkp4ayzzgIgGo3icrnwer0Eg0EAevTowdixY7n44os55ZRTePnll1m1ahWrVq1iyZIlnHLKKUAii0o2zD4wMAzDiqOKx+MEg0HS0tJ49tlnufXWW8nPz2fkyJEsWbKE9PR0Xn31VcLhMN26dbNqEor9KFNT0vHIeUrS2TSfY7Kysjj//PM577zz+OKLL7j44osBuOOOO3jooYdYvXo1H330EcFgkA8//JCf//znVlkiSSexrxVoR/P8888LwHJ77Q69evUSv/71rztuUDtA13Xx9NNPi549e4qMjAxxxBFHiCuvvFJs3rxZRCIRceWVVwq3222tn3wb6tmzp+WSefrpp8WECRPEhx9+2GLfjz76qEhNTRVz5swRp556qnjkkUdEY2PjXj/Hg5UNGzYIQDz//PMdut/m1pEb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L7zwwk7PTfITixcvtuaa5rQ1T/Xo0UP897//bbG8+bbJZ+Gee+6x5qntcfrpp4tTTz1VVFdXb3edeDwu48j2AV9//bU4/PDDRWpqqhg6dKhobGxs0RHmqaeeEqmpqVZHIpnxve/otFQrIQQnnngijzzyCEcffTQPP/wwgwYN4oYbbuDaa6/drX2WlpYyYcIEXnvtNc4880wef/xxfvWrX/H5558TCoVarHvFFVewePFibr/9di699FLeffddfve737VYJ+k2GzlyJH/605/o27cvP//5z1vFkyTfXOfOnctll13GPffcQyQS4cQTT+TNN98EEm/IU6ZM4YsvvrC2W7JkCX6/H4CvvvrKWj5v3jxGjx6N1+u1lhmGwVFHHUVWVhb/93//x+TJk6moqLDeiiORCEIIUlJSWlji+vXrR0ZGBhs3buTQQw+lqqqKTZs2sWzZMk4//XQ0TeOss84iFArx4osvcuyxx7ZylxiGwaxZs7jjjjtQFIVLLrmEW2+9lZ49e1qFXfPz8zn88MOBhPs/+QOJe/3YY48xevRo7rzzTu69915sNhu/+MUveP/991vdxy+//JLLLruMs846iwcffJBIJMJpp51GTU3NLt3rUCjE9OnT+ec//8nMmTN5/PHHmTJlCjfffPNOn7EzzzyTDRs28P3337dYvmnTJubPn29lM+6M6urqFj/J+709PvnkE4466igqKyuZNWsW1157LV9//TVTpkxpEav2/fff8/XXX3PWWWfx9NNPM2DAAL766iumTp1KZWUlhYWF/PKXvyQ3NxeAW265hZdeeomnnnoKh8Oxwz6Z999/P2+++SbXX389N998M/Pnz+ecc85psc5TTz3F7373O7p3786DDz7ItGnTOPnkk9myZUu7rsuO8Hq9nHLKKWzdupUVK1ZYyy+55BJuuOEGpkyZwmOPPcb555/Pyy+/zFFHHWUVG06ydu1azjzzTI455hjuu+8+63n7+OOPATj00EO58sorW1ybl156qUVIyrp16zj99NM58sgjeeihh8jIyOC8885j+fLle3yOBwu5ubnMmDGDU089FdjxPHXkkUdy1FFHtTlPNee1117b7jwF8J///IcffviBc845x7IS6rrOE088wd///ndrfrDZbC0sgUJ6MDqV5PUtKirirrvu4ogjjmDDhg1s2LABTdOs+zd27FhSU1Ot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l16iqqqKBQsWMGXKFPlxZ8+e5Z133uHLL7/k119/vap0jyAIgnAHaoTi082eXq+/bucEnU4nPfnkk1L79u2ld955RxozZozUokUL6e2335bvY+xGsmfPHql169bSoUOHpCFDhkgJCQlSUVGR5OTkJK1atUrSarXS+fPnJVdXV2nQoEHS888/L7Vo0UJ68803pbKysnoZr2B6P/30k2RlZSWtWbNGOn78uPTMM89Izs7OUk5Ozm0970cffSQ9/vjj8ueVlZXS888/LykUCqlfv3517ltWViZ98sknkpWVldytxfiYzZs3S/fdd5+0e/fu2xqPIAiC0HyIGcBbUPuwhrE3sZG5uTnLly9nzZo1REdH4+3tzZo1a+STw1BTW9BgMMgzMZ07d8bX15eTJ0+SmJiIj48PzzzzDAD79u2jtLSUli1b8vjjj3Pffffx0ksv0a1bNx555JGrxqbT6VAqlcTHx5Odnc348ePrdCaRxKxgg3vsscfIz8/nP//5Dzk5OfTo0YP4+PirDob8U0FBQfTo0UP+3NramqioKGxsbPjggw/47rvvmDRpElBzaGfKlClotVo+/fRT3nrrLRwdHbG2tmb48OHcd999cg1LQRAE4c6nkCRR9dWUjAGxdvCaPn06K1as4LHHHmPJkiW4u7szaNAgPD09qays5LHHHmPixImo1WqeeuopcnNz5f11Go2GRx99FLVaLe8dvNb12rZty7lz51AqlXTv3p1p06Yxbty4OvsZhTtDcnIy7777LtHR0QBkZmbyySef8MUXX7B06VImT54s37eyshK9Xo+9vf1Vv7wIgiAIdw/xv7+JSJJU5w3WGP50Oh3t2rWjZcuWREVF4eXlhVqt5tChQxw5coSePXsyatQoAPLz89m+fXudN3BLS0u0Wi0eHh5A3VIx0v/3fC0oKCAzM5P4+HhOnTrFqFGj+Pzzzxk3bhxnz56tM87i4mKysrLkxwtNV+1/n9o1I1UqFZs2bZIPDAUEBDBjxgyioqKYMWMGq1evlu9rY2ODvb09gAh/giAId7H/AyMTKktv5b4iAAAAAElFTkSuQmCC", + "text/html": [ + "\n", + "
\n", + "
\n", + " Figure\n", + "
\n", + " \n", + "
\n", + " " + ], + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# NOTE: The parameterization and plotting are split in two blocks since the ORBIT model takes\n", + "# some time to run.\n", + "\n", + "cost_depth_touchdown_distance.quadratic_2d()\n", + "cost_depth_cabledepth.quadratic_2d()\n", + "cost_touchdown_cabledepth.quadratic_2d()\n", + "\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(2, 2, 1, projection='3d')\n", + "ax.set_title(\"Depth vs Touchdown Distance\")\n", + "ax.set_xlabel(\"Depth (m)\")\n", + "ax.set_ylabel(\"Touchdown Distance (m)\")\n", + "ax.set_zlabel(\"Cost ($)\")\n", + "cost_depth_touchdown_distance.plot(ax, plot_data=True)\n", + "cost_depth_touchdown_distance.plot(ax, plot_curves=[\"quadratic_2d\"])\n", + "\n", + "ax = fig.add_subplot(2, 2, 2, projection='3d')\n", + "ax.set_title(\"Depth v Cable Depth\")\n", + "ax.set_xlabel(\"Depth (m)\")\n", + "ax.set_ylabel(\"Cable Depth (m)\")\n", + "ax.set_zlabel(\"Cost ($)\")\n", + "cost_depth_cabledepth.plot(ax, plot_data=True)\n", + "cost_depth_cabledepth.plot(ax, plot_curves=[\"quadratic_2d\"])\n", + "\n", + "ax = fig.add_subplot(2, 2, 3, projection='3d')\n", + "ax.set_title(\"Touchdown Distance v Floating Depth\")\n", + "ax.set_xlabel(\"Touchdown Distance (m)\")\n", + "ax.set_ylabel(\"Floating Depth (m)\")\n", + "ax.set_zlabel(\"Cost ($)\")\n", + "cost_touchdown_cabledepth.plot(ax, plot_data=True)\n", + "cost_touchdown_cabledepth.plot(ax, plot_curves=[\"quadratic_2d\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'floating': '36269853.8 * floating_cable_depth**2 + 28303.7 * floating_cable_depth * touchdown_distance + -9366.7 * touchdown_distance**2 + -117.4 * floating_cable_depth + -249.9 * touchdown_distance + 83.8'}\n" + ] + } + ], + "source": [ + "cost_touchdown_cabledepth.export(\"array_system.yaml\", \"floating\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Export System\n", + "\n", + "This block creates a cost model for systems with high voltage alternating current (HVAC) and\n", + "high voltage direct current (HVDC) cables.\n", + "\n", + "Independent variables:\n", + "- site.distance_to_landfall\n", + "- Depth" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'floating_hvac': '2840.0 * depth + 2840000.0 * dist_s_to_l + 8520000.0'}\n", + "{'floating_hvdc': '828.0 * depth + 828000.0 * dist_s_to_l + 2484000.0'}\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "cf34930026454aa1a7d8511a87c5cce3", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "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LbfcItavX3/S+/h8I/XtwiEDwFMwduxYERoaKhYtWiTS09PNn5KSEvOYu+66SyQkJIgFCxaIVatWicTERJGYmFiJo5b4KCgoEN98840YPny4CAoKEvXq1RP33XefWLRo0XkJBvft2ydatWolrr76avHEE0+I5s2bC4fDIdLT0y/aezxaIHfu3CkAU2x8XHXVVeLee+8VQgjx2WefibCwsArPezweYbFYxIwZM85pPD5x3LNnj3j88cfFhAkTxAsvvCBKS0vP6PWSC4/Ut0sbXdfF33//LZ566inRsmVLYbfbRd++fcUHH3wg9u3bd87BYFFRkfjggw9EYGCgePLJJ8WwYcNEQECAuP/++y/ae5T6duGQAeApAI778/nnn5vHlJaWirvvvluEh4eLgIAAMWTIkHMKAN5//33RqlUrERwcLIKDg0XXrl3FnDlzjrleRESECAwMFEOHDhUZGRnn8jarBUVFRWL69OnipptuEqGhoaJ27dpi3LhxYt68eaKgoOCMxfHAgQOiffv2YsCAAcLpdJrX2bFjx0V9X0cL5NKlSwUgDh48WOG466+/XowYMUIIIcSLL74oGjdufMy5oqOjxfvvv3/WY/HNgHft2iUiIyNF7969Ra9evUStWrVEixYtxIoVK8763JLzj9S3ywdd10Vqaqp4/vnnRbt27YTNZhPXXXedeOedd8SePXvOOBgsKioSn3zyiQgMDBS//fabeZ3i4uJjtOVCIvXtwiGLQE6BMILkY35Gjx5tHuPn58d7771HTk4OxcXFzJgx45zyY2rVqsXEiRNZvXo1q1atMrtjbNq0CYAJEybw448/Mm3aNBYvXszBgwePmychqUhgYCDDhg3j66+/Jj09nXfffZeioiJGjBhBkyZNmDBhAkuWLMHr9Z7yXAUFBQwdOpSoqCimT59eoXKuOhuiKoqC2+1m7NixDBgwgLlz5/Lzzz+zadMmIiMjufnmm8nNzQU4p0IdyflB6tvlg6IoNGvWjKeeeorVq1eTmppKr169+N///kfDhg3p378/H330Eenp6ad176WkpHD//fczbdo0rrvuOvPxgICAatvr97LTt0oIOiVnQXh4uPj000/NnJxp06aZz23evFnm5JwDLpdL/Pzzz+L2228XUVFRIjo6Wtxyyy1i1qxZIjc395iZcVZWlujevbvo0aOHKC4uruzhV4ktkvLbGm63W3Tt2lV8+OGH5nmFEMLpdIrGjRuLu++++4zPL7m8kfp24dB1XezevVv85z//Ed26dRMWi0VcccUV4pVXXhFbtmw57srgN998IwICAsSsWbMqe/hS3y4gcgWwiqNpGlOnTqW4uJjExERWr16Nx+OhZ8+e5jFNmzYlISGB5cuXV+JIL13sdjt9+/blk08+IT09nalTp+JwOLjzzjupX78+d911Fz///DMul4uSkhJGjBiBoij88MMPVdKkuF69etSoUYP58+ebjxUUFLBixQoSExMBSExMJC8vj9WrV5vHLFiwAF3X6dKlyymvIY6a3VosFgoLC00T7eLiYv766y/AsLbweDw4HA569OjBgQMHzsfblFwGSH278CiKQt26dXnggQf4/fff2bt3LzfccANz5syhZcuW9OjRgzfffJNdu3YhhGDOnDncdtttfPnllwwePLiyh38MUt/OI5UcgEpOwN9//y0CAwOFxWIRoaGh4qeffhJCCPH1118Lu91+zPGdOnUSjzzyyMUe5mWN1+sVixcvFvfcc4+oXbu2CAkJETVq1BDt27cX+fn5lTq2wsJCsXbtWrF27VoBiDfeeEOsXbtW7N27VwghxMSJE0VYWJiYNWuW+Pvvv0VSUpKoV69ehUTlvn37inbt2okVK1aIP/74QzRq1EjceOONZzSOp59+Wvzyyy9C13URFRUlvvrqKyGEEJ9++qlo2rSpmDRpUoXjJ0yYIIYPHy5cLtdFrSSUVC2kvlU+uq6L9PR08cEHH4iePXsKm80mGjRoIBwOh5gyZUqljk3q28VBBoBVFJfLJbZv326W+0dFRYlNmzZJgawkNE0TS5YsEV27dhX79++v7OGIhQsXHjd5///+7/+EEIa4P/XUUyI2NlY4HA5x3XXXia1bt1Y4x+HDh8WNN94ogoKCREhIiLjllltEYWHhaY8hNTVV9O7dW1x55ZUiLi5O3HDDDeZzaWlp4p577hFt27YV99xzj/j111/Fm2++KRwOh5g5c+Z5+Qwkly5S36oWuq6LQ4cOiUcffVSMGzeu0oMXqW8XB9kK7hKhZ8+eNGjQgH/84x+yN6ekyvD777/Tp08f/P39+fjjjxk2bJj5nK+H84cffkhJSQnR0dHcf//9jBo1qhJHLKmKSH2TVEUud32TnUAuEXRdx+Vy0aFDB2w2G/Pnzze/jFu3biUtLc3Mf5BILjSizPVe0zRuu+02srKymDRpEi6Xi5tuugmAhIQEJkyYwIQJE8jIyDBb7EkkRyP1TVKVqC76JlcAy/B9DMdr5XKxefzxx+nXrx8JCQkUFhYyZcoUswVPr169GDt2LHPmzGHy5MmEhIRwzz33ALBs2bJKHrmkurJu3TomTpzI/v37ueuuu/jnP/8JwObNmwkJCSE+Pr6SRyipKhon9U1yqXG56ptcASyjvCjquo6iKJUmlFlZWYwaNYr09HRCQ0Np3bq1KY4Ab775JqqqMmzYMFwuF3369OH999+vlLFKJABt27bl8ccf59VXX+WTTz7h8OHDdOrUie7duzN79uxLViAvJ6qKxkl9k1xqXLb6Vnnph1WH559/Xtx2221VwvOoqvDyyy8LQNx3333mY9KhXyLEyftdbty4Udx5552ifv36ombNmuL555+/iCOTnAipcRWR+iY5EdVJ36r9FnBGRgajR49m/fr1qKpKbm4uSUlJ3HvvvSQmJpq5ANWJlStXMmLECEJCQujRowdvvfUWAGPHjuWnn35i8uTJhIaGMn78eFRVZenSpZU7YMkFRdM0LBbLMY+f6N7Izs6moKCAnJwcOnXqdNJjJRceqXEVkfomKU911rdqbwT9119/UVhYyBtvvMGBAweYN28ewcHBPPnkk8ybN++S/KWeC0VFRYwcOZJPPvmE8PBw8/H8/Hw+++wz3njjDa699lo6dOjA559/zrJly/jzzz8rccSSC0l5cZw0aRITJkzgySefZPny5Se8N6Kjo2nQoMElL46XC1LjjiD1TVKe6q5v1T4AXLFiBaqq0q5dOwC6devGxIkTqVGjBqNHjzb7U1YXxo0bx4ABAyo48QPSob+a4hPH/v3787///Y/s7GwyMzPp1q0bCxYsOK1zXKrieLkgNe4IUt8k5anu+latA8CsrCw2bdpEvXr1aNq0qfl4REQE7733ntleBo40Tffh9XrRdf2ij/lCMnXqVNasWcPLL798zHMZGRnY7fYK3lwAsbGxZGRkXKQRSiqD1157jX379vHLL7/w1VdfERUVRUhICMHBwZU9NMkpkBp3BKlvkuNRnfWtWgeAq1atIisry/SX0nXdFECv10twcDDbt28HMCvmMjMzAaP/n6pePh/fvn37uO+++/j666/x8/Or7OFIqhC7d+8mOTmZyMhInnnmGT777DPmzJlDp06d2LJlS7VaQbrUkBpnIPVNciKqs75dHnf3WfLnn3+iqipXXXUVYAigTxz//vtvbDYbNpsNML4kzzzzDEOHDiU+Pp5Ro0axcePGY86padoxjaQvBVavXk1WVhbt27fHarVitVpZvHgxkyZNwmq1Ehsbi9vtJi8vr8LrMjMzqVGjRuUMWnLeOd6KT2BgIF6vl5dffpl3332X7777jiuuuAJd1/n111+ZOnUqJSUllTBayamQGmcg9U0CUt+OptoGgDk5OaSmplKnTh1atGgBGOLo+4L8/vvvlJaW0qdPHwDGjBnDpk2bePjhh5kyZQr5+fk888wzFBYWAke+WBaLxcwJ0DTtuF+4qiie1113HRs2bGDdunXmT8eOHRk5cqT5/z6Hfh/Sof/yQtM0c8Xn119/NVeGmjdvzldffcUrr7zC5MmT6dGjB2AEDJ9++inR0dEEBARU2rglx0dq3BGkvkmkvh2Hi+k5U5WYPXu2aNu2rXjvvfeOeW7fvn2iUaNG4tprrxVCCDF58mTh7+8vXnzxRVFaWmoeV6tWLfHZZ58JIYT4448/xODBg8UXX3whdu/efdxrer1ekZube97fy4Xi6quvruCTddddd4mEhASxYMECsWrVKpGYmCgSExMrb4CXGe+++66oU6eOcDgconPnzmLFihUX7drlva/uvPNO0bx5czFt2jTh9XrNxwIDA8W7774r5s2bJ+bMmSMaNWokbrrppos2RsmZITXu5Eh9u/hUlsZJfTs+1ToArF27tvD39xdjx44VP/30k/jzzz/FG2+8Ibp16yZq1aolfv31V6FpmrjxxhtFw4YNRWJioggKCjJFtWHDhuLDDz8UQgjx5Zdfiri4ONGxY0eRlJQkLBaLGD9+vMjLyzO/fJs3bxaJiYni7bffFkIc+VJmZGSI9evXV84HcRKOFkifUWp4eLgICAgQQ4YMEenp6ZU3wMuIqVOnCrvdLv773/+KTZs2iTvuuEOEhYWJzMzMizqOp59+WtSuXVusWbNGFBcXV3huzJgxolOnTsJqtYqrr75ajBkzxnzuZOapkspBatzJkfp2cakKGif1rSLVNgD08fPPP4thw4aJ2rVri86dO4uOHTuKvn37iuXLlwshhNA0TbRv3148++yzQgghtm7dKt544w3RtWtXkZCQID7++GOh67q46667hJ+fn5g0aZLIysoSc+bMEfHx8WL27NlCCCEWL14s7r77btG5c2fx119/VRjDAw88IKKiokRJScnFffNVgGeeeUYAFX6aNGliPl9d3Pk7d+4sxo0bZ/5b0zQRFxcnXn755YtyfV3XRWFhobjyyiuPWTFyu93m/2dnZ4uNGzdWEO3LVRwvF6TGVS5S4wwqU+Okvh2fahsA+pZ+y7N9+3Zx4MCBYx6/7rrrxLBhw44Rr/3794uSkhKxdetW0aVLlwozhtLSUpGcnCyGDBkihBBi7ty5IiwsTCiKIjp27Cjeffdd4XK5hBBCtG3bVjz88MNCCOOm0DTtvL3Pqs4zzzwjWrRoIdLT082f7Oxs8/m77rpL1K5dW8yfP1+sWrVKdO3aVVxxxRWVOOLzj8vlEhaLRXz//fcVHh81apQYPHjwRRtHZmamiImJETNmzBBCVLxHCgoKRGpq6jHfzctZHC91pMZVDaTGVQ2Nk/p2LNW2CMRnAKnrOl6vF4CGDRsSFxd3zLEvvvgi27dv57///S/5+fkUFxezf/9+4uPj8ff3Z9WqVezbt48bbrgBAJfLhZ+fH0FBQRQXFwNQu3ZtOnTowJgxYxgyZAhff/01W7ZsYcuWLfz9998MGTIEAFVVLxvrhdPFarVSo0YN8ycqKgqoPu78hw4dQtM0YmNjKzx+IT3IxHGS9GNiYmjQoAGTJ082HfI1TQOMitHJkydz6NChCq+5lE1QL3ekxlUdpMZdXI2T+nZ6VK+78DioqorVaj3pMR07dmTcuHG8+uqr1KtXj+TkZNM80uVysWLFCnJzc83qIbvdDsCSJUu44oorAKPirrCwkOTkZJ544gmWLVtG69atmTt3LkFBQRw4cIBhw4bx1ltvUVRUdGHfdBVj+/btxMXFUb9+fUaOHElaWhog3fkvFLqum8KWnp5OVlaW+dyYMWPYu3cvDz74IGAEEQUFBTzxxBPs2rWLmJiYShmz5OyRGlf5SI27eEh9O32qfQB4OlgsFvOL8/vvvzN06FD69+9P7dq12b59O1u2bEFVVb755hvAmH38+OOP7Nu3j+TkZMC40cPCwujSpQtwxFIhJSWFoqIi1q5dS/fu3XnzzTd58MEHzRn7yVi/fj3jx483Z+CXIl26dGHy5Mn88ssvfPDBB+zevZsrr7ySwsLCauPOHxUVhcViMQ14fVwoDzLf6svrr7/OoEGDaNGiBY899hhbt25l5MiR3HTTTSxYsIAGDRrQu3dvunXrhsfjYdq0aUDVs/iQnDtS4y4cUuMursZJfTt9Tj4tlADGF0LXdSwWCy1atDA9tcAQqMzMTMaOHcsPP/xAaWkpmzZtYvr06dx66620adOG1NRUdu3aRdu2bQkPD0fXdVRVZefOnSxdupQvv/yS4cOH43A4qFmzJmPHjmXcuHG0bt36hGOaN28ezzzzDF27diUwMPBifAwXhH79+pn/37p1a7p06UKdOnX47rvv8Pf3r8SRXTzsdjsdOnRg/vz55h9TXdeZP38+48ePP2/XEeWalv/444+8+uqrPP/88+Tm5vLxxx+zY8cOnnzySR555BF69+7Nt99+i67rDBw4kHvvvdccV3XbvqsOSI27cEiNuzgaJ/XtLKis5MNLFV3XzeTR0tJS8eijj4qOHTuKoqIi8eabb4oGDRqIjh07io8//thM9E1JSRGtWrUyk099VUevvvqqqF27dgXfrI0bNwpVVcX+/fuPe20hhFi9erXo0qWLeOKJJyo8p2naZZG02rFjR/HYY4+J+fPnC+AYX7GEhATxxhtvVM7gLhBTp04VDodDTJ48WaSmpooxY8aIsLCwC1INuGnTJvH000+L999/33xsyZIlom3btiIpKUn88ccfx31ddUrcr85IjbvwSI27cBon9e30kQHgObB+/XrRsWNHMXbs2AqPFxUVVfj3unXrRO3atcWCBQsqPF7+tT5Re/HFF0WDBg1Efn7+Ca87fPhwMXToUHHo0KETHuPxeC5JoSwsLBTh4eHi7bffFnl5ecJms4np06ebz2/ZskUApoXF5cQ777wjEhIShN1uF507dxZ//vnneT2/ruti586dps/Z888/X+H5ZcuWifbt24uhQ4eKH3/88bxeW3JpIjXu/CM17sJonNS3M0cGgOdAenq6eOihh8S8efOEEMZs2SdI5YWpsLBQ3HrrrcJms4krr7xSZGVliT179gg/Pz8xf/78Cse3atVK3HPPPcdYOPj+/fPPP4t69eqJlJQU8zmPxyMmTZokPvnkk2PMLX1UVaF88MEHxaJFi8Tu3bvF0qVLRc+ePUVUVJTIysoSQkh3/gvBd999J2rUqCH69esnNmzYUOG5lStXijp16ogJEyZU2e+M5OIhNe7ckRp3cZH6dvrIAPAikpWVJb777jtR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gBKJRCKRSCTVDBkASiQSiUQikVQzZAAokUgkEolEUs2QAaBEIpFIJBJJNUMGgBKJRCKRSCTVDBkASiQSiUQikVQzZAAokUgkEolEUs2QAaBEIpFIJBJJNUMGgBKJRCKRSCTVDBkASiQSiUQikVQzZAAokUgkEolEUs2QAaBEIpFIJBJJNUMGgBKJRCKRSCTVDBkASiQSiUQikVQzZAAokUgkEolEUs2QAaBEIpFIJBJJNUMGgBKJRCKRSCTVDBkASiQSiUQikVQzZAAokUgkEolEUs2QAaBEIpFIJBJJNUMGgBKJRCKRSCTVDBkASiQSiUQikVQzZAAokUgkEolEUs2QAaBEIpFIJBJJNUMGgBKJRCKRSCTVDBkASiQSiUQikVQzZAAokUgkEolEUs2QAaBEIpFIJBJJNUMGgBKJRCKRSCTVDBkASiQSiUQikVQzZAAokUgkEolEUs2QAaBEIpFIJBJJNUMGgBKJRCKRSCTVDBkASiQSiUQikVQzZAAokUgkEolEUs2QAaBEIpFIJBJJNUMGgBKJRCKRSCTVDBkASiQSiUQikVQzZAAokUgkEolEUs2QAaBEIpFIJBJJNUMGgBKJRCKRSCTVDBkASiQSiUQikVQzZAAokUgkEolEUs2QAaBEIpFIJBJJNUMGgBKJRCKRSCTVDBkASiQSiUQikVQzZAAokUgkEolEUs2QAaBEIpFIJBJJNUMGgBKJRCKRSCTVDBkASiQSiUQikVQzZAAokUgkEolEUs2QAaBEIpFIJBJJNeP/ARDjVKj1iJ/6AAAAAElFTkSuQmCC", + "text/html": [ + "\n", + "
\n", + "
\n", + " Figure\n", + "
\n", + " \n", + "
\n", + " " + ], + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "design_phase = \"ExportSystemDesign\"\n", + "results = {\n", + " \"export_system_system_cost\": lambda run: run.design_results[\"export_system\"][\"system_cost\"],\n", + "}\n", + "\n", + "## Run ORBIT for each hvac and hvdc export system types\n", + "\n", + "cost_hvac = CostFunction(\n", + " config={\n", + " \"design_phases\": [design_phase],\n", + " \"export_system_design\": {\"cables\": \"XLPE_1000mm_220kV\"},\n", + " },\n", + " parameters={\n", + " \"site.depth\": DEPTHS,\n", + " \"site.distance_to_landfall\": [i for i in range(0, 400, 10)],\n", + " },\n", + " results=results\n", + ")\n", + "cost_hvac.run()\n", + "\n", + "cost_hvdc = CostFunction(\n", + " config={\n", + " \"design_phases\": [design_phase],\n", + " \"export_system_design\": {\"cables\": \"HVDC_2000mm_320kV\"},\n", + " },\n", + " parameters={\n", + " \"site.depth\": DEPTHS,\n", + " \"site.distance_to_landfall\": [i for i in range(0, 400, 10)],\n", + " },\n", + " results=results\n", + ")\n", + "cost_hvdc.run()\n", + "\n", + "cost_hvac.linear_2d()\n", + "cost_hvdc.linear_2d()\n", + "\n", + "## Plot the ORBIT data and curve fits\n", + "\n", + "fig = plt.figure()\n", + "\n", + "ax = fig.add_subplot(1, 2, 1, projection='3d')\n", + "ax.set_title(\"HVAC\")\n", + "ax.set_xlabel(\"Depth (m)\")\n", + "ax.set_ylabel(\"Distance to Landfall (m)\")\n", + "ax.set_zlabel(\"Cost ($)\")\n", + "cost_hvac.plot(ax, plot_data=True)\n", + "cost_hvac.plot(ax, plot_curves=[\"linear_2d\"])\n", + "\n", + "ax = fig.add_subplot(1, 2, 2, projection='3d')\n", + "ax.set_title(\"HVDC\")\n", + "ax.set_xlabel(\"Depth (m)\")\n", + "ax.set_ylabel(\"Distance to Landfall (m)\")\n", + "ax.set_zlabel(\"Cost ($)\")\n", + "cost_hvdc.plot(ax, plot_data=True)\n", + "cost_hvdc.plot(ax, plot_curves=[\"linear_2d\"])\n", + "\n", + "\n", + "multiline_comment = \"\\n# \".join([\n", + " \"The floating HVAC mooring system is \",\n", + " \"special because it's the only one that \",\n", + " \"is like it is.\"\n", + "])\n", + "cost_hvac.export(\"export_system.yaml\", \"floating_hvac\", comments=multiline_comment)\n", + "\n", + "singleline_comment = \"HVDC export system\"\n", + "cost_hvdc.export(\"export_system.yaml\", \"floating_hvdc\", comments=singleline_comment)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Offshore Floating Substation\n", + "\n", + "This component is not a function of a spatially varying parameter, but it is included to complete\n", + "the export of the capex breakdown components." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'oss_substructure': '0.0 * depth + 2005200.0'}\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "4960b52c4ec14543a4d3f0cf4ba7b7aa", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "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5cqV+u233+wCd0FdvXpV0dHRuv322/X6668rLi5O48aN05UrV/TSSy9JkpYvX67+/furc+fOmjx5siRp79692rhxo0aMGKF27dpp+PDhmjp1qp5//nnVr19fksz/nTVrlipUqKBRo0apQoUKWrVqlcaOHauMjAy98cYbkqQXXnhB6enp+u233/TOO+9I0nUfUFmxYoW6d++uGjVqaPz48Tp//rymTZum1q1ba9u2bTl+1+69916Fh4dr0qRJ2rZtmz7++GP5+/ub/QFKBQNAiZaWlmZIMu68887r1rvjjjsMSUZGRoZhGIaxevVqQ5Ixf/58u3ozZ840JBlbt241y37++edc6/6VJMPV1dXYv3+/WbZ9+3ZDkjFt2jSzrE+fPoarq6tx4MABs+zEiROGl5eX0a5duxxtadOmjXHlyhWz/MyZM4avr68xaNAgu+MnJycbPj4+Ocr/KrvvuS2HDh0y67Vv395o3769+XnKlCmGJOM///mPWXbp0iUjMjLSqFChgvndGoZhnDt3zu6Yly5dMm699VajU6dOduXly5c3BgwYkKON2X3/c3tCQ0MNSca6devMspSUFMPNzc14+umnzbJhw4YZNpvN+Pnnn82y06dPG5UqVcqxz9x88skn5rns2LGj8eKLLxrr1683rl69alcv+3tcvXq1XfmhQ4cMScbMmTPNsgEDBhiSjGHDhpllWVlZRs+ePQ1XV1fj999/NwzDMEaMGGF4e3vbne+/mj9/fq7HNYyc37thGMbgwYMNT09P48KFC2ZZz549jdDQ0Bx1c2t748aNDX9/f+P06dNm2fbt2w0nJyfjoYceMsvGjRtnSDIeeeQRu33eddddRuXKlfPsD1AScQkYKOHOnDkjSfLy8rpuvez1GRkZN32M7BG+77777m8vZXXp0sVuFKthw4by9vbWwYMHJV0bBfr+++/Vp08f835ESQoKCtL999+vDRs25GjjoEGD7O6HW758udLS0tS/f3+dOnXKXJydndWyZUutXr36hvo1duxYLV++3G4JDAzMs/7SpUsVGBio/v37m2UuLi4aPny4MjMztXbtWrPcw8PD/PmPP/5Qenq62rZtq23btt1Q2/ISERFhN9Lr5+enunXrmt+vdO1BnsjISDVu3Ngsq1SpkmJiYm7oGI888oji4uLUoUMHbdiwQRMnTlTbtm1Vu3Zt/fDDDwVq/5+nCcqeNujSpUtasWKFpGv3np49e1bLly/P1/7//L1nj/C2bdtW586d0759+256f0lJSUpISFBsbKwqVapkljds2FBdu3bV0qVLc2zz+OOP231u27atTp8+na+/PcBRCIDF4PDhw+ZTmx4eHqpZs6bGjRunS5cuXXe7Cxcu6Mknn1TlypVVoUIF9e3bVydPnrSrc/ToUfXs2VOenp7y9/fXM888oytXrpjr85oOIzk52awzadIktWjRQl5eXvL391efPn2UmJh40/28ePGiXnjhBYWGhsrNzU1hYWH69NNPb3o/sJcd7LKDYF5uNCjmJjw8XKNGjdLHH3+sKlWqKCoqStOnT8/1/r/q1avnKKtYsaL++OMPSdLvv/+uc+fOqW7dujnq1a9fX1lZWTp27FiO4//Zr7/+Kknq1KmT/Pz87Jbvv//+hh9UaNCggbp06WK3XO8BgCNHjqh27do5LhFnX348cuSIWbZkyRLdfvvtcnd3V6VKleTn56f3338/1+/sZvzd95vdjlq1auWol1tZXqKiovTdd98pLS1N69at05NPPqkjR46oV69e+X4QxMnJyS70S1KdOnUkybwvcciQIapTp466d++uatWqmWH0Ru3evVt33XWXfHx85O3tLT8/Pz3wwAOSlK/vPvuc5vX7eurUKfO2hGx/PUcVK1aUJLtzBJR03ANYiDp06KDY2FjzJu9s+/btU1ZWlmbMmKFatWpp165dGjRokM6ePas333wzz/099dRT+vbbbzV//nz5+Pho6NChuvvuu7Vx40ZJ10ZaevbsqcDAQP3www9KSkrSQw89JBcXF7366qt2+0pMTJS3t7f5+c83eq9du1ZPPvmkWrRooStXruj5559Xt27dtGfPnpt6GvPee+/VyZMn9cknn6hWrVpKSkpSVlbWDW+P3Pn4+CgoKEg7duy4br0dO3aoatWqduf5Zrz11luKjY3V4sWL9f3332v48OGaNGmSfvzxR7v7xPJ6ctX4y43+N+PPozqSzN+bOXPm5DpiV66cY//pWr9+ve644w61a9dO7733noKCguTi4qKZM2cWeB69ovh+r8fT01Nt27ZV27ZtVaVKFU2YMEHLli3TgAEDZLPZct3mzw9c3Cx/f38lJCTou+++07Jly7Rs2TLNnDlTDz30UK4P2/xZWlqa2rdvL29vb7300kuqWbOm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JNsnn3xi1K5d23BzczPq1atnzJw505wm5M/27dtntGvXzvDw8DAkmd9TXtPA9OzZ84ba+fPPPxtt27Y13NzcjGrVqhmTJk0ypk6dakgykpOTr9vv//73v0a/fv2MmjVrGh4eHoa7u7sRERFhvPDCC3ZT3RiGYfz+++9G3759DU9PT6NixYrG4MGDjV27duU6DUz58uWNAwcOGN26dTM8PT2NgIAAY9y4cXbTyyxYsMDo1q2b4e/vb7i6uhrVq1c3Bg8ebCQlJdkd96OPPjJq1KhhODs7200Js3HjRuP22283PDw8jODgYOPZZ581vvvuuxzTxmRmZhr333+/4evra0gyp4TJbRoYwzCMFStWGK1btzY8PDwMb29vo3fv3saePXvs6mSf3+wpbbLldi6Bks5mGNy1ml+pqanmJVBJiomJUd++fXX33XebZWFhYeYN6ydOnFCHDh10++23a9asWXlORitdG5Hp3Lmz/vjjD7tRwNDQUI0cOVJPPfWUxo4dq6+//truMtChQ4dUo0YNbdu2TU2aNMl1388884w2bNhgXkrONnToUC1evFjr1q2zeypz8uTJmjZtWo63AUjXpnSoUqWKBgwYoI0bN9rdg7R3715FRETol19+Ue3atfPsK4DCMXLkSM2YMUOZmZkOe80cgNKBS8AFUKlSJbv75Dw8POTv75/rVAzZM/c3a9ZMM2fOvG74k65dvnBxcdHKlSvNS3CJiYk6evSoIiMjJUmRkZF65ZVXlJKSYj7Vu3z5cnl7eysiIiLPfSckJCgoKMj8bBiGhg0bpoULF2rNmjU5puRo2rSpkpOTVa5cuTwf7GjdurXmz5+vzMxMc8b9X375RU5OToX6pgEA15w/f97u6enTp09rzpw5atOmDeEPwN9iBLAQ5TUNzPHjx9WhQweFhoZq9uzZdv84Z09xcfz4cXXu3FmfffaZbrvtNknSE088oaVLl2rWrFny9vbWsGHDJMmcqPXq1atq3LixgoOD9frrrys5OVkPPvigHn30UXMamClTpig8PFy33HKLLly4oI8//ljTpk3T999/b96UPWTIEM2dO1eLFy+2mwvLx8dHHh4eMgxD7dq105kzZ/T666+rTp06OnHihL799lvdddddat68uTIzM1W/fn3dfvvtmjBhgk6dOqVHH31U7du310cffVQ0XzhgYY0bN1aHDh1U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AAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwmFIdAFNTUxUTEyNvb2/5+vpq4MCByszMvKFtDcNQ9+7dZbPZtGjRoqJtKAAAQAlSqgNgTEyMdu/ereXLl2vJkiVat26dHnvssRvadsqUKbLZbEXcQgAAgJKnnKMbkF979+5VXFyctm7dqubNm0uSpk2bph49eujNN99UcHBwntsmJCTorbfe0k8//aSgoKDiajIAAECJUGpHADdt2iRfX18z/ElSly5d5OTkpM2bN+e53blz53T//fdr+vTpCgwMLI6mAgAAlCildgQwOTlZ/v7+dmXlypVTpUqVlJycnOd2Tz31lFq1aqU777zzho918eJFXbx40fyckZFx8w0GAAAoIUrcCOBzzz0nm8123WXfvn352vfXX3+tVatWacqUKTe13aRJk+Tj42MuISEh+To+AABASVDiRgCffvppxcbGXrdOjRo1FBgYqJSUFLvyK1euKDU1Nc9Lu6tWrdKBAwfk6+trV963b1+1bdtWa9asyXW7MWPGaNSoUebnjIwMQiAAACi1SlwA9PPzk5+f39/Wi4yMVFpamuLj49WsWTNJ1wJeVlaWWrZsmes2zz33nB599FG7sgYNGuidd95R79698zyWm5ub3NzcbqIXAAAAJVeJC4A3qn79+oqOjtagQYP0wQcf6PLlyxo6dKj69etnPgF8/Phxde7cWZ999pluu+02BQYG5jo6WL16dYWHhxd3FwAAAByixN0DeDM+//xz1atXT507d1aPHj3Upk0bffjhh+b6y5cvKzExUefOnXNgKwEAAEoWm2EYhqMbUdpkZGTIx8dH6enp8vb2dnRzAACAxRQ0i5TqEUAAAADcPAIgAACAxRAAAQAALKbATwGnpaVp4cKFWr9+vY4cOaJz587Jz89PTZo0UVRUlFq1alUY7QQAAEAhyfcI4IkTJ/Too48qKChIL7/8ss6fP6/GjRurc+fOqlatmlavXq2uXbsq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HcXPPPOMpk6dqgULFmj//v168cUXtW/fPg0cONCR3QEAACg2JW4E8GZ8/vnnGjp0qDp37iwnJyf17dtXU6dONddfvnxZiYmJOnfunFk2cuRIXbhwQU899ZRSU1PVqFEjLV++XDVr1nREFwAAAIpdqZ0H0JGYBxAAADiSZecBBAAAQP4QAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxpToApqamKiYmRt7e3vL19dXAgQOVmZl53W2Sk5P14IMPKjAwUOXLl1fTpk315ZdfFlOLAQAAHK9UB8CYmBjt3r1by5cv15IlS7Ru3To99thj193moYceUmJior7++mvt3LlTd999t+699179/PPPxdRqAAAAx7IZhmE4uhH5sXfvXkVERGjr1q1q3ry5JCkuLk49evTQb7/9puDg4Fy3q1Chgt5//309+OCDZlnlypU1efJkPfroozd07IyMDPn4+Cg9PV3e3t4F7wwAAMBNKGgWKbUjgJs2bZKvr68Z/iSpS5cucnJy0ubNm/PcrlWrVvriiy+UmpqqrKwszZs3TxcuXFCHDh3y3ObixYvKyMiwWwAAAEqrUhsAk5OT5e/vb1dWrlw5VapUScnJyXlu97///U+XL19W5cqV5ebmpsGDB2vhwoWqVatWnttMmjRJPj4+5hISElJo/QAAAChuJS4APvfcc7LZbNdd9u3bl+/9v/jii0pLS9OKFSv0008/adSoUbr33nu1c+fOPLcZ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9tRvv/2mtWvXavLkyfrXv/6lzZs322132223af369fn+zgCUXuUc3QAAKCnq1aunHTt2SLp2uXXLli1KSUmRm5ubJOnNN9/UokWLtGDBAj322GOSpAsXLuizzz5T1apVJUnTpk1Tz5499dZbbykwMFAeHh66ePGiAgMDcxxv9OjR6tmzpyRpwoQJuuWWW7R//37Vq1cv1/YdOXJEwcHBOcqzsrL06aefysvLSxEREerYsaMSExO1dOlSOTk5qW7dupo8ebJWr16tli1bmtsFBwfryJEjBfjGAJRWBEAA+D+GYchms0mStm/frszMTFWuXNmuzvnz53XgwAHzc/Xq1c3wJ0mRkZHKyspSYmJirqHvzxo2bGj+HBQUJElKSUnJMwCeP3/e7vJvtrCwMHl5eZmfAwIC5OzsLCcnJ7uylJQUu+08PDx07ty567YRQNlEAASA/7N3716Fh4dLkjIzMxUUFGR3z142X1/fQjmei4uL+XN28Lzek8hVqlTRH3/8cd39ZO8rt7K/7js1NVV+fn433W4ApR8BEAAkrVq1Sjt37tRTTz0lSWratKmSk5NVrlw5hYWF5bnd0aNHdeLECfPS7I8//mhedpWuTblSkDn7/qxJkybas2dPoexLknbt2qUmTZoU2v4AlB48BALAci5evKjk5GQdP35c27Zt06uvvqo777xTvXr10kMPPSRJ6tKliyIjI9WnTx99//33Onz4sH744Qe98MILdhMou7u7a8CAAdq+fbvWr1+v4cOH69577zUv/4aFhWnHjh1KTEzUqVOndPny5Xy3OyoqShs2bChY5/9k/fr16tatW6HtD0DpQQAEYDlxcXEKCgpSWFiYoqOjtXr1ak2dOlWLFy82J1i22WxaunSp2rVrp4cfflh16tRRv379dOTIEQUEBJj7qlWrlu6++2716NFD3bp1U8OGDfXee++Z6wcNGqS6deuqefPm8vPz08aNG/Pd7piYGO3evVuJiYn57/z/2bRpk9LT0/WPf/yjwPsCUPrYDMMwHN0IACiNxo8fr0WLFuXrlW759cwzzygjI0MzZswo0H7uu+8+NWrUSM8//3whtQxAacIIIACUIi+88IJCQ0ML9Nq6S5cuqUGDBub9jgCshxFAAMgnR4wAAkBhIAACAABYDJeAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAW8/8AiRzfuK0slB0AAAAASUVORK5CYII=", + "text/html": [ + "\n", + "
\n", + "
\n", + " Figure\n", + "
\n", + " \n", + "
\n", + " " + ], + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cost_function = CostFunction(\n", + " config={\"design_phases\": [\"OffshoreFloatingSubstationDesign\"]},\n", + " parameters={\n", + " \"site.depth\": DEPTHS,\n", + " },\n", + " results={\n", + " \"offshore_substation_substructure\": lambda run: run.design_results[\"offshore_substation_substructure\"][\"unit_cost\"],\n", + " }\n", + ")\n", + "cost_function.run()\n", + "\n", + "cost_function.linear_1d()\n", + "\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot()\n", + "ax.set_title(\"Offshore Floating Substation\")\n", + "ax.set_xlabel(\"Depth (m)\")\n", + "ax.set_ylabel(\"Cost ($)\")\n", + "cost_function.plot(ax, plot_data=True)\n", + "cost_function.plot(ax, plot_curves=[\"linear_1d\"])\n", + "ax.legend()\n", + "\n", + "cost_function.export(\"oss.yaml\", \"oss_substructure\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "bos", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/nrwal.yaml b/examples/nrwal.yaml new file mode 100644 index 00000000..561dbfa7 --- /dev/null +++ b/examples/nrwal.yaml @@ -0,0 +1,60 @@ +# --- Minimum Required --- +site: + depth: 30 + distance: 100 + distance_to_landfall: 60 + mean_windspeed: 9 +turbine: 17MW_low_SP +plant: + layout: grid + num_turbines: 36 + row_spacing: 7 + substation_distance: 1 + turbine_spacing: 7 +# --- Additional Configs --- +OffshoreSubstationInstallation: + feeder: example_heavy_feeder + num_feeders: 1 +array_cable_install_vessel: example_cable_lay_vessel +array_system_design: + cables: + - XLPE_630mm_66kV +commissioning: 0.01 +decommissioning: 0.15 +export_cable_bury_vessel: example_cable_lay_vessel +export_cable_install_vessel: example_cable_lay_vessel +export_system_design: + cables: XLPE_1000mm_220kV + percent_added_length: 0.05 +landfall: + interconnection_distance: 3 + trench_length: 2 +oss_install_vessel: example_heavy_lift_vessel + +scour_protection_design: + cost_per_tonne: 40 + scour_protection_depth: 1 +spi_vessel: example_scour_protection_vessel +wtiv: example_wtiv +port: + monthly_rate: 2000000.0 + sub_assembly_lines: 1 + turbine_assembly_cranes: 1 +# --- Don't specify these here since they're set in the curve generator --- +# design_phases: +# - MonopileDesign +# - ScourProtectionDesign +# - ArraySystemDesign +# - ExportSystemDesign +# - OffshoreSubstationDesign +# install_phases: +# ArrayCableInstallation: 0 +# ExportCableInstallation: 0 +# MonopileInstallation: !!python/tuple +# - ScourProtectionInstallation +# - 0.5 +# OffshoreSubstationInstallation: 0 +# ScourProtectionInstallation: 0 +# TurbineInstallation: !!python/tuple +# - MonopileInstallation +# - 0.1 diff --git a/examples/supply_chain_dev.ipynb b/examples/supply_chain_dev.ipynb index 8c41411f..040e9664 100644 --- a/examples/supply_chain_dev.ipynb +++ b/examples/supply_chain_dev.ipynb @@ -1,441 +1,441 @@ { - "cells": [ - { - "cell_type": "code", - "execution_count": 34, - "id": "ad19946b-c043-4e6a-a62c-c5ba4c94389d", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import pandas as pd\n", - "from copy import deepcopy\n", - "import matplotlib.pyplot as plt\n", - "\n", - "from ORBIT import ProjectManager, load_config\n", - "from ORBIT.phases.install import MonopileInstallation, JacketInstallation\n", - "\n", - "weather = pd.read_csv(\"data/example_weather.csv\", parse_dates=[\"datetime\"])\\\n", - " .set_index(\"datetime\")" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "718a655b-1104-4c5d-a8e4-1e74f6353c3c", - "metadata": {}, - "outputs": [], - "source": [ - "fixed_config = load_config(\"configs/example_fixed_project.yaml\")" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "bc5d3a88-d57d-4d1a-b394-726991a9d07b", - "metadata": {}, - "outputs": [], - "source": [ - "fixed_config[\"jacket\"] = {\n", - " \"diameter\": 10,\n", - " \"height\": 100,\n", - " \"length\": 100,\n", - " \"mass\": 100,\n", - " \"deck_space\": 100,\n", - " \"unit_cost\": 1e6\n", - "}\n", - "\n", - "# fixed_config[\"feeder\"] = \"example_feeder\"\n", - "# fixed_config[\"num_feeders\"] = 2\n", - "\n", - "# fixed_config[\"transition_piece\"] = {\n", - "# \"mass\": 1000,\n", - "# \"deck_space\": 1000,\n", - "# \"unit_cost\": 1e6\n", - "# }\n", - "\n", - "# fixed_config[\"jacket_supply_chain\"] = {\n", - "# \"enabled\": True,\n", - "# \"substructure_delivery_time\": 100,\n", - "# \"num_substructures_delivered\": 2,\n", - "# }" - ] - }, - { - "cell_type": "markdown", - "id": "1bc285b7-68a6-4498-b026-59f9d1b33c5c", - "metadata": {}, - "source": [ - "### Jacket Installation w/ Unlimited Storage at Port" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "8f86edb1-74fb-43b5-97b5-0a815a1a0693", - "metadata": {}, - "outputs": [ + "cells": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Installation Time: 7720h\n" - ] - } - ], - "source": [ - "project = JacketInstallation(fixed_config, weather=weather)\n", - "project.run()\n", - "\n", - "df = pd.DataFrame(project.env.actions)\n", - "\n", - "print(f\"Installation Time: {project.total_phase_time:.0f}h\")" - ] - }, - { - "cell_type": "markdown", - "id": "a78686b8-3cc9-4ab2-a732-45afb3167017", - "metadata": {}, - "source": [ - "### Insufficient Substructure Fabrication" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "e03c5be5-8636-4b11-a731-70dd19b0797c", - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 34, + "id": "ad19946b-c043-4e6a-a62c-c5ba4c94389d", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import pandas as pd\n", + "from copy import deepcopy\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from ORBIT import ProjectManager, load_config\n", + "from ORBIT.phases.install import MonopileInstallation, JacketInstallation\n", + "\n", + "weather = pd.read_csv(\"data/example_weather.csv\", parse_dates=[\"datetime\"])\\\n", + " .set_index(\"datetime\")" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Installation Time: 12981h\n" - ] - } - ], - "source": [ - "config = deepcopy(fixed_config)\n", - "\n", - "config[\"jacket_supply_chain\"] = {\n", - " \"enabled\": True,\n", - " \"substructure_delivery_time\": 500,\n", - " \"num_substructures_delivered\": 2,\n", - "}\n", - "\n", - "project = JacketInstallation(config, weather=weather)\n", - "project.run()\n", - "\n", - "df = pd.DataFrame(project.env.actions)\n", - "print(f\"Installation Time: {project.total_phase_time:.0f}h\")\n", - "\n", - "# Insufficient fabrication caused a ~5k hour delay" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "e7cab6f9-cddd-4eb6-a613-4e42728799c2", - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 2, + "id": "718a655b-1104-4c5d-a8e4-1e74f6353c3c", + "metadata": {}, + "outputs": [], + "source": [ + "fixed_config = load_config(\"configs/example_fixed_project.yaml\")" + ] + }, { - "data": { - "text/plain": [ - "" + "cell_type": "code", + "execution_count": 24, + "id": "bc5d3a88-d57d-4d1a-b394-726991a9d07b", + "metadata": {}, + "outputs": [], + "source": [ + "fixed_config[\"jacket\"] = {\n", + " \"diameter\": 10,\n", + " \"height\": 100,\n", + " \"length\": 100,\n", + " \"mass\": 100,\n", + " \"deck_space\": 100,\n", + " \"unit_cost\": 1e6\n", + "}\n", + "\n", + "# fixed_config[\"feeder\"] = \"example_feeder\"\n", + "# fixed_config[\"num_feeders\"] = 2\n", + "\n", + "# fixed_config[\"transition_piece\"] = {\n", + "# \"mass\": 1000,\n", + "# \"deck_space\": 1000,\n", + "# \"unit_cost\": 1e6\n", + "# }\n", + "\n", + "# fixed_config[\"jacket_supply_chain\"] = {\n", + "# \"enabled\": True,\n", + "# \"substructure_delivery_time\": 100,\n", + "# \"num_substructures_delivered\": 2,\n", + "# }" ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" }, { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABBYAAAJOCAYAAAADL4QKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAB7CAAAewgFu0HU+AACEnUlEQVR4nOzdd5wU9f3H8ffn6L0X6aCCIigqIk1Bo2LDii0aQA0KlhgTYy9ofrHEBDsYFA6NFWPDCmpQUDGgoIAoiIB06VLl4O77+2Nml7273b29va13r+fjMY+d3fnOdz47873bnc9+5zvmnBMAAAAAAEA8ctIdAAAAAAAAyF4kFgAAAAAAQNxILAAAAAAAgLiRWAAAAAAAAHEjsQAAAAAAAOJGYgEAAAAAAMSNxAIAAAAAAIgbiQUAAAAAABA3EgsAAAAAACBuJBYAAAAAAEDcSCwAAAAAAIC4kVgAAAAAAABxI7EAAAAAAADiRmIBAAAAAADEjcQCAAAAAACIG4kFAAAAAAAQNxILAAAAAAAgbiQWAAAAAABA3EgsAAAAAACAuJFYAAAAAAAAcauwiQUzczFOH6c7VgAAAAAAMlWFTSwAAAAAAICyq5zuADLAGEmjoyzfkapAAAAAAADINiQWpHXOufnpDgIAAAAAgGzEpRAAAAAAACBuJBYAAAAAAEDcSCwAAAAAAIC4mXMu3TGkhZkF3vgCSSapnaR8SWslfS5pgnNuahnqb1VCkaqSDpK0TtJ6f9sAAAAAACRLJUlN/Pl5zrndiaiUxEJ0b0ga6pz7JUn1AwAAAACQDkc5575MREUV+a4QOyVNkvSRpO8lbZeXueknabikRpLOkvSmmZ3onNuTpjgBAAAAAMhYFbnHQn3n3JYIy5pJek/S4f5L1znnHi1l/SVdCtFS0heSNHPmTO23336lqR4AAAAAgFJZs2aNevToEXjazjn3UyLqrbA9FiIlFfxlP5vZIHk9GapIulZSqRILzrmV0ZabWXB+v/32U6tWJeUhAAAAAABImISN88ddISJwzi2R9IH/9AAza5HOeAAAAAAAyEQkFqJbEDLfMm1RAAAAAACQoUgsRFcxB6AAAAAAACBGJBai6xwyvzptUQAAAAAAkKFILERgZu0lneg//dE5tyqd8QAAAAAAkIkqZGLBzAaaWcQ7Yvi3m3xVUlX/pdEpCQwAAAAAgCxTUW83+ZikKmb2qqQZkpZJ2iWpsaT+kq705yXpU0lPpD5EAAAAAAAyX0VNLEhSC0nX+lMkr0r6vXNud2pCAgAAAAAgu1TUxMIQSf0k9ZLUQV7vhLqStktaIelzSc8452akLUIAAAAAALJAhUwsOOc+kfRJuuMAAAAAACDbVcjEAgAAyE6//vqrtmzZop07dyo/Pz/d4QAAkFKVKlVSzZo1Vb9+fVWvXj3d4QSRWAAAABnPOac1a9bol19+SXcoAACkzd69e7V7925t3rxZ9erV03777SczS3dYJBYAAEDm27hxY7GkQuXKfI0BAFQse/fuDc7/8ssvqlq1qho3bhxljdTgExkAAGS0vLw8rV+/Pvi8adOmql+/vipVqpTGqAAASL38/Hxt2bJF69atkyStX79edevWVdWqVdMaV05atw4AAFCC7du3B+cbNWqkRo0akVQAAFRIlSpVCn4WBoR+TqYLiQUAAJDRduzYEZyvW7duGiMBACAzhH4ehn5OpguJBQAAkNHy8vIkSWamatWqpTkaAADSr1q1asFBGwOfk+lEYgEAAGS0goICSV73z0wY+RoAgHQzs+BlgYHPyXQisQAAAAAAAOJGYgEAAAAAAMSNxAIAAAAAAIgbiQUAAAAAABA3EgsAAAAAACBuJBYAAAAAAEDcSCwAAAAgI3388ccyM5mZPv7443SHgyyWl5enAw88UGam//znPwmr95VXXpGZqWPHjtqzZ0/C6s00y5YtC/4tTpgwodjyCRMmBJcvW7Ys5fFls/Ky70gsAAAAoJgdO3boySef1KmnnqqWLVuqevXqqlatmpo0aaKjjjpKl112mZ566imtWLEi3aECJXrkkUe0ePFidenSReeee27C6j333HPVuXNn/fDDD3rsscfKXF/oSWboVKVKFTVu3Fj777+/TjjhBN1888167733VFBQkIB3AZQdiQUAAAAUMmPGDHXu3FkjRozQe++9p9WrV2v37t3Ky8vThg0b9OWXXyo3N1dXXHGFjjrqqHSHm1SBE7uRI0emO5SE69+/v8xM/fv3T3coSbVt2zY98MADkqTbb79dZpawunNycnTbbbdJku6//37t2LEjYXWH2rt3rzZu3KglS5boo48+0gMPPKBTTz1V7du315gxY5KyTaA0SCwAAAAgaNGiRRowYICWL18uSTrjjDP07LPP6osvvtDs2bM1ZcoUPfjggzrppJNUpUqVNEcLlGzMmDHauHGj2rRpo/POOy/h9V9wwQVq2bKl1q9fr3/9618Jq/f//u//NG/evOD02Wef6a233tLdd9+t3r17S5KWL1+uq666Sqeddpp27dqVsG2X1tChQ+Wck3NO7dq1S1scSJ/K6Q4AAAAAmeO2227Ttm3bJEm5ubkaOnRosTInnniibrjhBq1fv14TJ05McYRA7PLz8/X4449Lki666CLl5CT+d9VKlSrpggsu0KhRo/T444/rj3/8Y0K207JlS3Xp0qXY66effrruvPNOff7557rkkku0dOlSvfvuuxo6dKheeumlhPbIAGJFjwUAAABI8k7C3nnnHUlS9+7dwyYVQjVp0kRXX311CiID4vPBBx8ExwG5+OKLk7adQN1Lly7V1KlTk7adUL1799bMmTPVqlUrSdLEiRP1xhtvpGTbQFEkFgAAACBJWr9+fbA79QEHHFCmumIdm6A01/kXFBToqaeeUu/evdWwYUPVqlVLhx12mO677z79+uuvUdddtGiRrr32WnXp0kV16tRR1apV1aJFC3Xr1k2XXXaZXn75Ze3evTtYvl27doV++b377ruLDagXmngpegeLgoICjR8/Xscdd5yaNWumnJycQuUD9ZeUvBk6dKjMrMTu5evXr9c999yjPn36qGnTpqpSpYoaNGigo48+WjfeeKPmzp1brM5PPvlEkvTJJ58Ue2+h2yvpjgChor2voqPf7969Ww8//LB69uypxo0bR2wvU6dO1ZAhQ9ShQwfVrFlTdevWVdeuXfWXv/xFq1evjhpPoEfNgQceqK5du0Yt+9VXX+nyyy9Xx44dVatWLVWvXl2tW7fWkUceqauvvlqTJk2Scy7sukcccYTat28vSXrxxRejbieRGjduXOjyi/vuuy9q+cWLF+v6669X165dVa9ePdWoUUMdOnTQ0KFD9eWXX8YdR6Q7G0ybNi34+lNPPVViPffdd1+w/IIFC8KWmT17toYPH65OnTqpdu3aqlWrljp16qQRI0Zo0aJFMceYivYnSZs3b9bNN9+sgw46SDVq1FDTpk11wgkn6JVXXilx3WzCpRAAAABxKChwWrBmqzbvzFODmlXVeb+6ysnJ7i7IVatWDc5/9913aYykuLy8PJ122ml6//33C70+d+5czZ07V88995w++ugjNW/evNi6r7zyii655BLl5eUVen3NmjVas2aNvvnmG+Xm5mrevHlhu56X1q+//qoBAwboww8/LHNdsXj++ed15ZVXFhs4cMuWLZo5c6ZmzpypiRMnZtSt7DZs2KCzzz5bX3/9dcQyv/76qy699FK99NJLxZbNnz9f8+fP15gxY/Tiiy9q4MCBYesI9B7o2bNn1Hgeeugh3XDDDcXusrBy5UqtXLlSs2fP1ujRo7Vt2zbVrl07bB1HH320li5dWqyNJtspp5yiTp06aeHChZo1a5ZWr16tFi1aFCv3j3/8Q7feemux22IuXbpUS5cu1bPPPqvbb79d99xzT8JiO+aYY9SmTRstX75cL7zwgoYNGxa1/AsvvCBJ6tatmzp37lxoWUFBgW644QY9/PDDxRI8ixYt0qJFi/T000/riSee0BVXXBF1O6lqf999951OOOGEQgmIX3/9VR999JE++ugjXXrppTr22GOjxpotSCwAAACUQkGB07Mzlmn8Z8u0fNPO4OttGtbUZX3aaXCvdlmbYGjYsKHatm2rn376Sd98840eeOAB/eUvf0nKdemldfvtt2vWrFk66aSTNGLECLVu3VorVqzQ6NGj9cEHH2jBggUaOHCgvvjiC1WqVCm43s8//6xLL71UeXl5atq0qa655prgL5S7du3S4sWL9cknnxTrQj5lyhTl5eUFf+UeMWKErrrqqkJlGjRoEDbWm266SXPnztUZZ5yhoUOHqm3btvr555+1devWxO4USf/+9781ePBgSVL16tU1bNgwnXLKKWrevLm2b9+uuXPnatKkSfrhhx+C6/ztb3/TDTfcoEsvvVRffvmlunfvrtzc3EL1hiaZkuHyyy/XvHnzNHjwYF1wwQVq3ry5li9frmrVqkmSnHMaNGhQ8NKcgQMH6vzzz1eHDh2Uk5OjmTNn6p///KeWL1+uQYMG6bPPPlP37t0LbWPlypXBZEq0u5fMnTs3mFRo3769rrnmGnXr1k0NGzbUtm3btHDhQk2dOlVvvvlm1PfUo0cPvfTSS1q1apUWL15c5l4/sTIz/eY3v9HChQslSdOnT9cFF1xQqMyDDz6oG2+8UZJ06KGHasSIETrwwANVv359LVy4UI8//rhmzJihv/71r2rcuLH+8Ic/JCy2iy66SA888ICmTZumVatWqWXLlmHLzp07V/Pnz5cU/rKVa6+9VqNHj5YkHXvssRo6dGiwF8E333yjhx9+WN9++62uvPJKNW/eXGeccUbEuFLR/rZu3aoBAwYEkwoXXHCBhgwZoqZNm2rRokUaNWqUcnNzg+856wVG72RK7SSplSQnya1YscIBAIDwFi1a5BYsWOAWLVqU7lBcfn6B+8OLs13bm96OOF334myXn1+Q7lDj9o9//MMFvqNIcu3atXN/+MMf3EsvveSWLFkScz2B9e+6666o5fr16+ckuX79+hVbNnXq1EKxXHHFFWHruPzyy4NlnnjiiULLxo0bF1w2b968iHHs3LnT7dy5M+73UTTW22+/PWr5tm3bOkluyJAhUcsNGTLESXJt27Yttmz16tWuZs2aTpJr2rRp1Pe3fPnyYq9F2/ehli5dGnxfubm5UctGe1+5ubmF9tHTTz8dsZ6xY8c6Sa5KlSruvffeC1tm06ZN7pBDDnGSXJ8+fYotf/nll4Pbmj59esRt3XHHHU6Sq1Wrllu7dm3Eclu2bHH5+fkRl3/yySfB7b300ksRy0UTuo9K2tehnn766eB699xzT6Fl3377ratSpUqwHRcUFP//lJ+f7y655BInydWuXdtt2rSp0PKS2kBo3EuXLi20bO7cucFlDz74YMT3cNNNNzlJLicnx61cubLQsilTppTYbnbt2uWOP/744N/Lnj17IsaYivZ3ww03BLd17733Fluel5fnTjrppEIxFd13JYnn83HFihWh22zlEnR+m/70MwAAQJZ4dsYyvfl19Gtq3/h6tZ6dsSw1ASXB9ddfr8suuyz4fNmyZXr00Ud14YUXqkOHDmrevLkuvPBCvfXWWxGvN0+GZs2a6aGHHgq77OGHH1aTJk0kKfiLZsDatWsleb0Lol3mUKNGDdWoUSMhsXbs2LHEsSUS4bHHHtPOnV6vmbFjx0Z9f61bt056PKVx/PHH6/LLLw+7zDmnBx54QJL0hz/8QSeffHLYcg0aNNCDDz4oSfrss88K9cqQvB4LAU2bNo0YS6CNdOzYUc2aNYtYrl69elF774RuY8mSJRHLJUOjRo2C85s3by607J///Kf27Nmj7t2766677gp714icnBw99thjqlatmrZv367//Oc/CYuta9euwZ4/zz//fNgyzrng2BT9+vUr1qvh/vvvlySde+65EdtN9erVg3cA+emnn6IOopns9peXl6dx48ZJ8nqI3HzzzcXW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gquuukqTJk3Srl271L9/f40cOVKHH364tm/fro8++kiPPPKImjRpokqVKiXkF+Xhw4frgw8+0Ouvv65XXnlFs2fP1pVXXqkePXqoXr162rp1q77//nt9/PHHmjRpkqpXr65rrrmmWD1nnnmmPvnkE82cOVPbtm0LO4Djww8/rIsvvlinnXaajj/+eB188MGqV6+eNm/erC+//FKPPfZYsLdMuDYieYmgQI+Fs88+u8zvX/J+zQ5NFm3btk0bN27UnDlz9P777+vzzz8PLjv99NM1fvz4sPV07dpV//jHP3T99ddrwYIF6tKli6644godf/zxatasmX799VctW7ZMM2bM0H/+8x+tWbNG8+bNC/5qn0jVq1fXOeecowkTJuiNN94InlRfdNFFUQd/PfXUU3XdddfpkUce0bRp03TwwQdr+PDh6tu3rxo1aqQdO3Zo8eLFmj59ul577TVt3rxZQ4YMiTvORLS/O++8UxMnTtTKlSt100036euvv9bgwYPVtGlTLVq0SKNGjdKsWbPUvXv3qD2BsoZzjikNk6RWkpwkt2LFCgcAAMJbtGiRW7BggVu0aFG6Qyn3du3a5Zo3b+4C31FKmg488ED35ZdfRqxv1KhREddt2LChmzZtmuvXr5+T5Pr161ds/alTpwbLT5482Z100kkR6zvooIPcqlWritUxZMiQmN7L8OHDXX5+frH158yZ46pVqxZ2nSFDhoSNderUqTHt74kTJ7pKlSqFrbtGjRrulVdeCcbftm3biPVMmDDB1ahRI+r7C7f+tm3bXIcOHWIu/4c//CFi/W3atHELFixwbdu2LbZvAnJzc4Plly5dWuL+ycvLcyNGjHBmVuLxa9++fdg6NmzYEDx+zzzzTNgygTYYbcrJyXF//etfI8Y6YcIEJ8lVrlzZrVmzpsT3FknoPoplatu2rXvyySdjqnvs2LGuZs2aJdZZtWpV98MPPxRad+nSpcHlubm5UeMu6dh+8MEHxbY5Z86cEuMvKChwd999t6tcuXKJ76FWrVpu586dccfoXGLa3/z586P+Tx06dGip4woVz+fjihUrQmNo5RJ0fsulEAAAAJDk/Zq4atUqffbZZ7r77rt1yimnqEOHDqpVq5YqVaqkunXr6qCDDtIFF1ygF154QfPnz9eRRx4Zsb7rr79e77//vgYMGKAGDRqoWrVqat++va6++mrNmTMneF/7WFStWlXvvvuuRo8erZ49e6p+/fqqWbOmunbtqv/7v//T7NmzCw0mGfDQQw/pueee02WXXabu3burZcuWqlq1qmrUqKGOHTtqyJAhmj59usaMGRP2F9Nu3bppxowZuuiii9SmTZuwg8vF67zzztPnn3+us88+W02aNFHVqlXVunVrDRkyRLNmzdKgQYNiqmfIkCH68ccfddttt+nII49U/fr1ValSJTVo0EA9e/bUrbfeqvfff7/YerVr19bnn3+u6667TgcffHCJt9p85JFH9MILL+jYY49V3bp1VaNGDXXq1Ek333yzZs+erYMPPjiu/RBJlSpVNHr0aH3zzTe69tpr1bVrV9WrV0+VKlVSvXr11K1bN11++eX6z3/+E3HsgEaNGumcc86RtO/uA0W9+OKLGjt2rH7729+qW7duat68uSpXrqzatWvrkEMO0YgRIzRnzpxgd/xwAnWfffbZhQZPTJTKlSurQYMGateunY4//njddNNNeu+997RkyRJdeeWVMdUxbNgwLVmyRHfffbf69Omjxo0bq3LlyqpVq5Y6duyoc889V08++aRWrVqlAw44IOHvIeD4448vNA5K586d1a1btxLXMzPdeeedWrRokW688UZ1795dDRs2VKVKlVSnTh117txZF198sZ555hmtWbNGNWrUKFOciWh/hxxyiL799lvdeOONOvDAA1WtWjU1btxYxx13nF544QXl5uaWKcZMYi4BA6yg9MyslaQVknfdVjK6GgEAUB788MMP2rt3rypXrqwDDzww3eEAyDL/+9//1LNnT1WqVEk//vhjibedLK2ffvpJ+++/v/Lz8zVjxozgQINAssXz+bhy5Uq1bt068LS1cy4hA2rQYwEAAABAuXX00UfrnHPOUX5+vu67776E13/vvfcqPz9fJ598MkkFVFgkFgAAAACUa/fee68qV66s3NzchN7xYMWKFZowYYIqVaqkv//97wmrF8g23BUCAAAAQLnWqVMnjR8/Xj/++KOWL1+esMuQV6xYoVtuuUUdOnRQ165dE1InkI1ILAAAAAAo9373u98lvM7evXurd+/eCa8XyDZcCgEAAAAAAOJGYgEAAAAAAMSNxAIAAAAAAIgbiQUAAAAAABA3EgsAAAAAACBuJBYAAAAAAEDcSCwAAAAAAIC4kVgAAAAAAABxI7EAAAAAAADiRmIBAAAAAADEjcQCAAAAAACIG4kFAAAAAAAQNxILAAAAAAAgbiQWAAAAAABA3EgsAAAAAAk0YcIEmZnMTMuWLUt3OCnVv39/mZn69++f7lDKjUBbGjlyZLFlH3/8cXD5xx9/nPLYiho6dKjMTO3atUt3KEgxEgsAAACIKC8vTy+++KIGDx6sgw46SI0aNVKVKlXUuHFjHXnkkRoxYoQ+/PBDFRQUpDtUlAPLli0LnigPHTo03eEAiBGJBQAAAIT12muvqVOnTvrtb3+rf//731q4cKE2bdqkvXv3auPGjZo9e7aefPJJnXjiiTr44IP1zjvvpDvkCoNfhtOnXbt2FSrxMXLkyGCyB4iExAIAAACK+etf/6pzzz032JX/xBNP1GOPPaaPPvpIX331lT744AM9/vjjGjBggHJycrRo0SLddttt6Q0aQFpNmDBBzrkKdwkQpMrpDgAAAACZJTc3V3feeackqWnTppo4caL69etXrNwJJ5ygq6++WvPnz9f111+v9evXpzpUAEAGILEAAACAoFWrVumaa66RJNWqVUuffPKJDjrooKjrdOnSRZMnT9YLL7yQihABABmGSyEAAAAQ9NBDD2nnzp2SpHvuuafEpEJATk6OLrnkkojLP/30U/3ud79Tu3btVL16ddWvX1+HH364br/99qg9HYqOeu+c07hx49S3b181atRIdevWVY8ePfTvf/+70Hp5eXl68skn1bNnTzVs2FB16tRRnz59NHHixIjbCh04cMKECZKkV155RSeccIKaNm2qGjVq6KCDDtItt9yiLVu2xLRfosnPz9czzzyj008/XS1atFC1atXUqFEj9e3bV6NGjdKuXbuKrRO43v2ZZ56RJP3000/BmEOncH799Vc9/vjj+s1vfqPmzZuratWqatq0qU444QSNGzdOe/fuLTHmL774Quedd56aN2+u6tWrq3379rriiiu0cOHCsu2MGIU7Rh988IEGDhyo5s2bq1q1amrfvr1GjBihlStXRq1r9erVuvnmm3XEEUeoXr16qlKlipo1a6auXbvqoosu0oQJE7R169Zg+cAdL3766SdJ0jPPPFNsvxe9G8bmzZuVm5urSy65RJ07d1bt2rVVtWpVNW/eXAMGDNDYsWOVl5eX0H1U1BdffKHbb79d/fv3Dx73unXrqnPnzhoxYoQWLFgQdr3A3U3uvvvu4Gvh2lroZQ+xjv0xb948XXHFFTrwwANVs2ZN1alTR4cccoiuv/76qJdRJPL4I8Gcc0xpmCS1kuQkuRUrVjgAABDeokWL3IIFC9yiRYvSHUq5V1BQ4Bo3buwkuVq1armtW7eWuc78/Hx39dVXu8D3nnBTvXr13JQpU8KuP3Xq1GC5KVOmuIEDB0as5w9/+INzzrlNmza5Y489NmK5v/3tb2G3tXTp0mCZ3Nxcd9lll0Wso0WLFu67774LW09ubm6w3NKlS8OW+emnn9xhhx0Wdb8ccMABbuHChYXWu+uuu6KuE5iK+vrrr13btm2jrnPUUUe5tWvXRjqUbtSoUS4nJyfsurVq1XLvvPOO69evn5Pk+vXrF7GeaEKPwZAhQ6Iuz83NdTfffHPE99OkSRO3YMGCsNuZNm2aq1u3bon78a233gquE3hv0aai77ukfS7JHX744W7NmjUR90mg3F133VVsWejfx9SpU4stD22LkaZKlSq5J554Iq51i7bxIUOGOEmubdu2Ed/PvffeG7EdSXLVqlVzzzzzTNh1E3X8y4t4Ph9XrFgRup9auQSd33IpBAAAQDwKCqS1c6Vdm6QaDaXmh0o52d0Z9Ntvv9WGDRskScccc4zq1KlT5jpvvvlmPfHEE5Kk9u3b66abbtIRRxyhHTt2aNKkSXr88cf1yy+/6PTTT9fMmTN12GGHRazrjjvu0P/+9z9dfPHF+u1vf6vmzZtr0aJFGjlypBYuXKhHH31UAwcO1GOPPabPP/9cI0aM0Nlnn61GjRrp66+/1h133KHVq1frzjvv1JlnnqlDDjkk4rZGjx6tWbNmqUePHrr++ut14IEHat26dZowYYImTpyo1atXa8CAAZo/f36p99PGjRvVt29frVixQtWqVdOwYcPUr18/tWvXTtu3b9eUKVP0yCOPaPHixTrllFM0e/Zs1atXT5J01VVXadCgQbr99tv15ptvqkWLFpo8eXLU7S1evFj9+vXTL7/8orp16+rqq69Wjx491Lp1a23cuFGTJk3Sv/71L82aNUtnnnmmpk+fripVqhSq4/XXX9ef/vQnSVK9evV00003BX+d/+9//6u///3vuvjii9WkSZNS7YuyeOqpp/T555+rX79+uvLKK9WxY0dt2bJFzz77rJ599lmtX79el112mWbMmFFovd27d+vCCy/U1q1bVadOHY0YMULHHXecmjZtqry8PC1dulSff/65Xn/99ULr5ebmaseOHRowYIBWr16tM888U//3f/9XqEytWrUKPc/Pz9fRRx+t008/XYcffriaNWsW3MZzzz2n999/X3PmzNGFF16ojz/+OOH7aO/evWrQoIHOPPNMHXvssTrwwANVq1YtrV69WrNnz9ajjz6qDRs26JprrtFBBx2k448/PrjuWWedpe7du2v06NEaM2aMJK+nQVEtW7aMOZ7Ro0fr1ltvlSQ1adJEN910k/r06aP8/Hx9+OGHevDBB7Vjxw4NHTpUjRs31qmnnhqxrniPP5IkURkKJnosAACQDBnXYyE/37kvnnTu4UOdu6vuvunhQ73X8/PTHWHcnnvuueAvWbfddluZ65s7d27wl8kuXbq4zZs3Fyvz3nvvBcv06NGj2PLQX2QluYcffrhYmTVr1rg6deoEf6U0M/f6668XK/fNN98EtxXo3RAq9NdQSe7UU091e/bsKVbunnvuCZb5y1/+Umx5ST0Wfvvb3wZ/1V2yZEmx5c45N3v2bFerVi0nyd16663Flsfyy3BA7969g7+Mr1+/PmyZ0OMwduzYQst2797tWrRo4SSvd0m4X4HnzZtXqAdAKnosSHLDhg1zBQUFxcr9/ve/D5aZPXt2oWUfffRR2B4JRe3Zs8f98ssvxV4P9EIIF19RJf3fGj9+fDCWDz/8MGyZwPJ4eiysXLnS7dixI+L2t2zZ4g499FAnyfXt2zdsmdBeMiWJ1i7XrVvnatas6SSvx8/y5cuLlQlt9y1btnR5eXmFlifi+JcnmdRjIbvT6gAAAKlUUCC9foX03o3S5mWFl21e5r3++pVeuSy0cePG4HzTpk3LXN+YMWNU4O+Lp59+WvXr1y9W5uSTT9Zll10mSZo5c6ZmzZoVsb6jjz5a1113XbHXmzdvrrPPPluStH79ep1//vk666yzipU79NBD1bdvX0nS9OnTo8ZerVo1PfXUU6pcuXgH39tuu01dunSRJI0bN65U18gvW7ZML7/8siTp8ccfV/v27cOWO/zww3X11VdLUvBa8nhMnz5dn3/+uSRvTIDGjRuHLXfyySdr0KBBYbf35ptvavXq1ZK8XiMHH3xwsfW7dOmS8tuN7rfffnrsscfCjilxww03BOeLHuu1a9cG54899tiI9VeuXFl169YtU4wHHnhg1OWXXnqpunXrJkl64403yrStcFq2bKmaNWtGXF6vXj3dc889krxxUEL/ByRabm5ucPyWUaNGqXXr1sXKHH744brlllskeQPJRtsn8R5/JAeJBQAAgFjNekqa90r0MvMmeuWy0LZt24LzRbt0x+PDDz+UJB1yyCE6+uijI5YbNmxYsXXCufDCCyMuC72EIpZyS5YsiVhGkk466SS1aNEi7LKcnBwNGTJEkrRp0ybNnj07al2h3nnnHeXn56tmzZo65ZRTopYNnPSuXr1ay5cvj3kboSZNmiRJ6tSpk7p27RrT9mbNmlVoIMfAMTGz4PsO59JLL404cGQyDBo0SNWqVQu7rFOnTqpdu7ak4sd6v/32C87n5uYmL8AinHNau3atFi1apPnz5wenwKUE33zzTdJj2LFjh5YtW6Zvv/02uP3Qy16SGUOgHdWvX1/nnHNOxHK///3vi60TTrzHH8nBGAsAAACxKCiQZjwRW9kvRktHDcu6MRdCxwrYsWNHmeravXu3fvjhB0mKmlSQvF8pq1Spoj179mj+/PkRy3Xs2DHistDeELGUC02ihHPUUUdFXd6jR4/g/Lx589SzZ8+o5QO+/PJLSdLOnTvD9oaIZO3atWrTpk3M5Ytub+HChTGf9O/Zs0ebNm0K9loJXFffvn37iD0eJO+a+Xbt2mnp0qWljjMeJd2xpEGDBtq+fXuxY923b1916NBBS5Ys0R//+Ec9//zzOvvss3XsscfqqKOOUtWqVRMa5zvvvKMxY8Zo2rRpUdtdYHyTRNuwYYNGjRqlV199VT/88EPgsuyUxiAp+Ld9xBFHFBvDI1SzZs3Url07LVu2LOr/g3iPP5KDxAIAAEAs1s6VtvwUW9nNy6Sf50n7RR6IMBM1atQoOP/zzz+Xqa7NmzcH50u6rKJKlSpq1KiR1q5dq02bNkUsF61Ld05IEieWcgUlXK5SUszNmjULzkeLuah169bFXDZUoAt5aSVie4H3F8vlMc2aNUtZYiHacZb2Hev8/PxCr1epUkVvvfWWBg0apO+++06zZs0KXoJTo0YNHXvssRo8eLAuuOACVapUKe74nHMaNmyYxo0bF1P5cLcXLauvvvpKAwYMiPkSh2TEEFCadtS8eXMtW7Ys7v8HUuTjj+QgsRCGmT0g6caQl45zzn2cpnAAAEAm2BX7yaMkaWcpy2eA0MsJStO9vySp7B6fKMmKOXCS07hxY02dOjXm9SKNxRDr9g477DA999xzMa8XbqT/bDyOkXTu3Fnz5s3TW2+9pbfeekvTpk3T4sWLtWvXLk2ePFmTJ0/WqFGj9O6778Y93sj48eODSYVu3brpj3/8o44++ujguAeBpMXgwYP173//O2pPgnjk5eXp/PPP18aNG1WlShVde+21OvPMM9WxY0c1aNAgeBnBkiVLtP/++0tSwmMIpzy1I+xDYqEIM+sm6U/pjgMAAGSYGg1LV75mKctngEMOOUSNGzfWhg0bNH36dG3dujXuwesaNGgQnC+p98PevXuDv6g2bJgZ+62kmEOXlybmQK+Qbdu26eCDDy7TL+Kl2d727duDA06WVuBYxtKLpaw9XVKpUqVKOuuss4IDfa5Zs0bvv/++nnjiCX311Vf66quvdOWVVxa77WSsnnrKG2vlgAMO0Oeff64aNWqELVeaHi+l8d///jc4vsDo0aMLjV2Qiu0X1bBhQ61ZsyamNhIYYDNT/h+gZNl14V+SmVmOpLHyEi7x9RsDAADlU/NDpfptYyvboJ3ULPpAeZkodHC+HTt26Omnn467rmrVqgVHxP/f//4XteycOXO0Z88eSYr75DfRot2doujy0sR8+OGHS/LGoAiMfxCPWH/1DWxvyZIlhe6GUBqBQR+XLl0atUv9+vXrtWzZsri2kQn2228/XXrppZoxY4aOOOIISdLbb79d7PKAWPf9t99+K0k644wzIiYVnHMJ7R0UbvuSdMEFF0QsV1I7TFQPg8DfyezZswsNDlrUunXr9NNPPxVaB5mPxEJhf5B0lKTvJcV2MRQAAKgYcnKkXlfHVrbnVVk3cGPA9ddfH7x2+c4779T3338f03oFBQV6/vnnC712wgknSPJOcGbOnBlx3dAERmCddJsyZYrWrFkTdllBQYGeeeYZSd6v+YGT0FgMHDgweKL28MMPxx1f9erVJXkJimjOOOMMSd4J7COPPBLXtgLHxDmnZ599NmK5CRMmpKQrfbJVqVJF/fr1k+T1ptmyZUuh5bHu+8DJc7SBUN98882I7aysQk/eI8VQUFAQ7FkRSeD9SiW/52gC7WjLli167bXXIpYbN25csB1lyv8DlCw7P/GSwMzaSPqr/3S4pNhvSAwAACqGo4ZJXc+PXqbr+V65LNWyZUs9/vjjkryTkX79+umTTz6Jus6CBQt08skn68EHHyz0+ogRI4IDqF1xxRXaunVrsXWnTJkSvA69R48eJd6NIVV2796tK6+8MuzAb/fff3/wTgmXXXZZxFvehdOpUyedd955kqSXXnpJo0aNilp+6dKlevHFF4u9Hrhl4rp166KOen/SSScF72Dx4IMPauLEiVG3Fxh3INRZZ50V3N5f//pXLVy4sNh6CxYs0N/+9reodWeK6dOna/HixRGX5+XlBdt87dq11aRJk0LLA/vixx9/jLqdQI+dt956K+zlBj/++KOuvjrGZGUcAtuXvKRPOLfcckuJPSZCb89Z0nuO5tJLLw0mLf/85z9r1apVxcp88803uvfeeyV5/4sCl6kg85FY2OcJSbUlPeOci/7pCQAAKqacHOnsf0mn/N273CFUg3be62f/K2t7KwRceumluueeeyR5J679+/fXgAEDNHr0aE2dOlVz5szRRx99pDFjxuj000/XoYceqg8++KBYPV27dtWf//xnSd4JwxFHHKGnnnpKX375pT755BPdcMMNOv3005Wfn6+qVavqX//6V0rfZzTdu3fXW2+9pT59+ujll1/W7Nmz9f777+uiiy7SbbfdJklq1aqV7rjjjlLXPWbMGHXo0EGSd4LVr18/jRs3Tl988YXmzJmjDz/8UP/85z914okn6oADDtCrr75arI7evXtL8n5xHj58uL744gstXrw4OIV64YUX1LBhQ+Xn5+uCCy7QGWecoeeff14zZ87UV199pffee0/33nuvevXqpUMPPbRYIqlq1ap67LHHJHl3++jZs6fuv/9+ffHFF5oxY4buu+++YDwHHHBAqfdHqn300Ufq1KmT+vfvrwcffFCTJ0/W7Nmz9dlnnyk3N1fHHHNM8GT78ssvL3Zb0MB7nTVrlu6//3598803wf0eerI8ePBgSdLq1avVq1cvjR8/XjNnztS0adM0cuRIHXnkkdq0aVOperyUxoABA4IDT95+++0aPny4Jk+erK+++kovv/yyTjjhBP39739Xnz59otYTeL+S16Np2rRp+uGHH4LvOdplDaGaNGkSTD6uXLlSRx55pB5++GHNnDlTn3/+ue655x717dtX27dvl5lp7NixUW9LiQzjnKvwk6TzJTlJGyU19l8b6b/mJPVPwjZbBepfsWKFAwAA4S1atMgtWLDALVq0KN2hFJaf79zqr51b/F/vMT8/3REl3KuvvuratWvnQr4TRZwOOeQQN3ny5GJ15Ofnu6uuuirquvXq1Qu7rnPOTZ06NVhu6tSpEWPNzc0Nllu6dGnEcnfddVewXFFLly4NLsvNzXVDhw6NGPN+++3nvv3227hjWbNmjTvmmGNi2reXXnppsfXz8/Ndz549I65T1MKFC12XLl1i2t7dd98dNuYHH3zQmVnYdWrWrOnefvtt169fPyfJ9evXL+IxiCb0GAwZMiTq8tzc3Kh1tW3bNmw9oW0g2nTmmWe6nTt3Fqt35cqVrmHDhmHXCX3feXl57qSTTopYf40aNdzEiRPdkCFDnCTXtm3bsO8jUP6uu+4qtqykv4/333/fVa9ePWIM/fv3d/Pnzy9xn55//vkR6wht4yW9F+ec+9vf/uZycnIi1letWjX3zDPPhF03Ece/PInn83HFihWh+7uVS9D5bXan0xPAzOpLClxwdpNzbkOC6m0VbZLUPBHbAQAAaZKTI+13mLT/cd5jlvdSCOecc87RwoUL9fzzz+uSSy5Rp06d1KBBA1WuXFkNGzbUEUccoauuukr//e9/NW/ePJ100knF6sjJydETTzyhadOm6eKLL1abNm1UrVo11a1bV926ddOtt96qH374Iey66Zabm6sXXnhB/fv3V6NGjVStWjV17NhRN954o7799lt17tw57rqbN2+uadOm6e2339bFF1+sDh06qGbNmqpSpYqaNGmi3r17689//rM++eQTjR8/vtj6OTk5mjJlim6//XYddthhql27dtRB9jp27Kivv/5aL7zwgs4991y1adNGNWrUUNWqVbXffvupf//+uv322/XVV1/pzjvvDFvHDTfcoE8//VTnnHOOmjZtqmrVqqlt27a67LLL9OWXX+q0006Le3+k0g033KBXX31VI0aMUM+ePdWmTRtVr15d1atXV7t27XT++efr7bff1htvvBF20MWWLVtq5syZuvzyy3XAAQcUGoMgVJUqVfTOO+/o0UcfVffu3VWzZk3VqFFDBxxwgIYPH67Zs2cHL4tJlgEDBujLL7/UJZdcohYtWgTbV79+/TR27Fh99NFHqlWrVon1PPfcc/r73/+uHj16qF69esFLnOJx6623as6cORo2bJj2339/1ahRQ7Vq1dLBBx+s6667Tt9//32wtweyh7lyMMBKWZjZWEnDJH0m6Rjn7xAzGynpLr/Y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\n", - "text/plain": [ - "
" + "cell_type": "markdown", + "id": "1bc285b7-68a6-4498-b026-59f9d1b33c5c", + "metadata": {}, + "source": [ + "### Jacket Installation w/ Unlimited Storage at Port" ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "deliveries = df.loc[df['action'].str.contains('Delivered')][['action', 'time']]\n", - "deliveries['number'] = deliveries['action'].apply(lambda x: int(x.split(\" \")[1]))\n", - "# deliveries\n", - "\n", - "installs = df.loc[df['action'].str.contains('Grout Jacket')][['action', 'time']]\n", - "installs['number'] = 1\n", - "\n", - "fig = plt.figure(figsize=(6,3), dpi=200)\n", - "ax = fig.add_subplot(111)\n", - "\n", - "ax.scatter(deliveries['time'], deliveries['number'], s=10, label=\"Substructure(s) Delivered\")\n", - "ax.scatter(installs['time'], installs['number'], s=10, label=\"Completed Installation\")\n", - "\n", - "ax.set_xlim(0, ax.get_xlim()[1])\n", - "ax.set_ylim(0, 5)\n", - "\n", - "ax.set_xlabel(\"Simulation Time\")\n", - "ax.set_ylabel(\"Substructures\")\n", - "\n", - "ax.legend()\n", - "\n", - "# Note period of bad weather at ~10k hours" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "fe12d4b3-1c9a-420a-b3fb-d6fba538822d", - "metadata": {}, - "outputs": [], - "source": [ - "installs_neg = installs.copy()\n", - "installs_neg[\"number\"] *= -1\n", - "\n", - "total = pd.concat([deliveries, installs_neg]).sort_values('time')\n", - "total['storage'] = total['number'].cumsum()\n", - "# total" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "ea3f0a81-5894-42a5-b2f4-f6dcea1b5465", - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/plain": [ - "" + "cell_type": "code", + "execution_count": 32, + "id": "8f86edb1-74fb-43b5-97b5-0a815a1a0693", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installation Time: 7720h\n" + ] + } + ], + "source": [ + "project = JacketInstallation(fixed_config, weather=weather)\n", + "project.run()\n", + "\n", + "df = pd.DataFrame(project.env.actions)\n", + "\n", + "print(f\"Installation Time: {project.total_phase_time:.0f}h\")" ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" }, { - "data": { - "image/png": "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muufeuqpice64oorDJ/fb37zm5o13X///TH//0YSeU8lIqLM0tg+KOd9+SnN10+eO6S5fMF/P5/uZRIlrbm5OfKz02xp0vEtMxZmqN4RD876z6mVOm21rbe/DeUF2fF3TNKtt96Kffv24Ze//CWAYJ35T37yE/zkJz8BAFRXV2PDhg344Ac/iKuuuipu74B47r//foyMjAAA7rrrLsyZM0e3z9q1a3Hbbbfh9ttvR2trK/70pz/hve99r+H9lZSU4Gc/+1nMddXV1cVcU3FxMf7jP/4D1157LV555RV0d3ejvLx84vqTJ0/iz3/+MwDguuuuw7XXXqu7j7y8PNx7771Ys2ZN1Mf53e9+h6amJuTk5OChhx5CXl6e4X4f//jH8X//939444038MADD+Dtb397zPUnY3R0FEeOHMGDDz6IH/3oRwCAqqqqiQySSP/zP/+D/v5+1NXV4e677zYscwCAb37zm3jwwQfR2tqKhx56CN/+9rcnrrvnnnsmyl3uvfdew9KOG264Ab/73e/w17/+1YT/oTniva5++MMfwuv1Yt26dbjjjjsM93M4HPjpT3+Kxx57DENDQ/j973+Pj3/84xPX33333QCA7Oxs3HfffYbP7+23347HHnsMe/bsMel/RkREBGw+qC2DqC7Kxtq5pZptLIUgOo3NG4nicDgc+MUvfoFnn30Wl112me7gpr29HY888gje+c534pxzzsGRI0cm9XjhWvqSkhK8+93vjrrfxz72Md1tjFx99dUoLCxMag3Dw8NoamrC3r17sWfPHuzZs0fTX2Dnzp2a/Tdt2gS/P/jH9UMf+hCiWb16NVavXh31+ieffBIAsH79elRWVsZc48UXXwwAeP3112P/Z+I4fvy4ppFmXl4eVq5ciR/84Afw+XzYsGEDNm3aNNHE0Wi9V1111cT0CCMulwvnn3++4XrDP7uVK1firLPOinofH/3oR5P+v1kp3usqHGh6z3veEzOoVVJSgpUrVwLQPjd+vx+bN28GAFx66aWora01vL3D4cCHP/zhZJdPREQU0yYlsLBxSRVys5yabSyFIDqNGQtECXr729+Ot7/97RgYGMCrr76KN998E1u2bMFLL72E/v5+AMCWLVtw0UUXYevWrZg1a1ZKjxM+83rmmWdGbRYIBDMl6uvr0dTUFPNs7apVqxJ63K6uLtx11114/PHH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o8jOzsbQ0BAuueQSXH/99fj973+PrVu34s0338STTz6JO+64A6tWrcJFF11ky0Hl1772NQDBA+DvfOc7E9urq6vx4IMPQgiBtrY2rFu3DrfccguefPJJbNu2Df/85z/x+OOP48tf/jIWLFiAq666CidOnNDc9+rVq/GpT30KQLAEZN26dXjggQewdetWvPDCC7jllltwww03TAQ3olm7di3OP/98AMB9992HG2+8EZs2bcK2bdvwyCOP4K1vfSt+/vOfT7wOrbZy5Ur84Ac/AADs27cPK1aswJe+9CU888wz2L59O15//XX89re/xWc/+1nMmTMH119/va6M4+qrr8bVV18NAPjzn/+MCy64AI888gi2bduGZ555Bh/4wAdw++23x31uiIiIEtE77MH2E72abRuWaPtlqX0WRj2cCkEEINighF/2fwGYDUACkM3NzTIZhw4dkvv27ZOHDh1K6naUvNHRUVlTUyPDP6t4X4sWLZJbtmwxvK/BwUHZ0NBgeLt58+bp9v/2t78tHQ5H1MfKzs6WDz74oOFjHTt2bGK/+++/P+7/85lnnpE5OTlRH2vDhg1yz549ce/z2Weflfn5+VHv54477pBf//rXJQCZk5MTdT2vv/66nDNnTkLPebTnIJ558+ZFfe5VgUBAnnHGGRKAdLvd8vjx45rrn3zySVlWVhZ3rQ6HQ77wwgu6+/d4PPLd73531NvNnz9fHjlyRPM8Gtm/f7+sqqqKej9f/OIX5f333z9x+dixY7r7WL9+vQQg169fr7su2deVlFLee++9Mi8vL+5zk5WVJRsbG3W3HxgYkBdccEHU261du1Zu3bo16XVF4nsqERFJKeWftrfIeV9+auJrye1Py1GPT7PPhd99XrPPs3tPpWm1RKlpbm6O/Cw1W5p0fMuMBaIYcnJy0NraildffRXf/OY3cfnll6OhoQH5+flwOp0oKirC0qVL8f73vx+/+c1vsGfPHpx11lmG91VQUIDXXnsNn/vc57Bs2bKJs/vRfPWrX8X27dvx8Y9/fKKRXX5+PpYtW4bPfe5zOHDgAG644QZT/p/veMc7sGXLFlx//fWora2F2+1GZWUl1q9fj3vvvRfPP/981FGAkd7+9rdjz549uPnmmzFv3jxkZWWhuroaV155JZ555hnceeedGBgYAICJ5n5GzjvvPDQ2NuKee+7BlVdeidraWmRlZSEnJwdz5szBpZdeim9/+9umPgexCCHw1a9+FQDg9Xrx3e9+V3P91VdfjWPHjuEHP/gBLrnkElRXV8PtdiM3Nxfz58/HVVddhbvuugtNTU3YuHGj7v7dbjcef/xxPPzww7joootQXFyMvLw8LFu2DF/96lexdetWNDQ0xF3n0qVLsW3bNtxyyy0Tz39lZSUuu+wy/OUvf5nIhLHTxz/+cRw9ehTf/OY3ccEFF6CiogIulwv5+flYvHgx3vOe9+Cee+5Ba2srFi5cqLt9YWEhNm/ejJ/+9Kc4++yzUVBQgMLCQqxZswbf+c538Nprr01qKgoREVGY2l/hggUVugwFtRSCzRuJgoS0aB49xSaEmA2gGQCam5sxe/bshG/b2NgIn88Hl8ulqY8nmg7e9ra34fnnn8eFF16Il19+Od3LmVbCNZ533HEH7rzzzvQuZgbheyoREfkDEuv+8+/oHfFObPvWtSvwofPmafa75mevYGdL/8Tl771nFd539hzb1kk0WS0tLRM9zQDMkVJGb4SVBGYsEJFtTp48OdGQ8bzzzkvzaoiIiIiCdjT3aYIKALBR6a8AGPRYYMYCEQAGFojIRJETE1Sjo6O48cYb4fUG/2jbUcJARERElIjNB7VlEIurCzC7VF+2mpvFwAKREVe6F0BEM8fHPvYxDA8P433vex/OOusslJWVYXBwEFu2bMHdd989EXi46aabsHLlyjSvloiIiChokxJY2LikynA/XY8FDwMLRAADC0Rksi1btmDLli1Rr3/Xu96Fn/70pzauiIiIiCi6joEx7Gkd0GzbuDSxwMIYMxaIADCwQEQmuuuuu/DHP/4RL7zwAlpaWtDZ2QkpJaqqqnDeeefhwx/+MK644op0L5OIiIhowuaDnZrLhdkunDWv1HDfHJZCEBliYIGITHPmmWfizDPPxLe+9a10L2VG4hQfIiIi872gjJm8aHEF3E7jVnQshSAyxuaNRERERESUkTy+AF453KXZFq2/AmAQWGDGAhEABhaIiIiIiChDbTneg6Fxn2bbeoMxk2HqVAj2WCAKYmCBiIiIiIgy0ialDGJlXTGqCnOi7q9mLIywFIIIAAMLRERERESUoTYpjRujTYMIUzMWWApBFMTAAhERERERZZzmnhEc7hjSbNsYowwCYPNGomgYWJiGnM7gG5rf72eXeCKiSZBSwu8Pfih0OPgnkYgok2w6qC2DKMvPwqrZJTFvk+NmjwUiI/wUNQ1lZWUBCH4gHhkZSfNqiIimr/Hx8YkAbfi9lYiIMoPaX2HD4ko4HSLmbVgKQWSMgYVpqKioaOLfPT09zFogIkrRwMDAxL/z8/PTuBIiIrLTmNeP1450a7ZtiNNfAWApBFE0DCxMQwUFBRAiGE0dGhpCS0sLhoeHGWAgIkqQ3+9Hd3c3urtPf6gsKChI44qIiMhOrx/pxrgvMHHZIYD1i2L3VwD0gYUxbyDKnkSZxZXuBVDyHA4H6urq0NraCiklhoaGMDQ0BCHERP8FIiIyFtlXIayyspKlEEREGUTtr3DWvFIU57nj3i43S3te1uMPwOcPwOXk+VrKbAwsTFOFhYWa4AIQ/LDs8/nSvDIioumluLgY5eXl6V4GERHZREqJF9T+Ckvil0EA+uaNADDmC6CAgQXKcAwsTGOFhYVYvHgxhoaGMDAwAI/HozsLR0REek6nE3l5eSgpKUFOTk66l0NERDY60jmElt5RzbZLEuivAOhLIYBgn4WCbB5WUWbjb8A053A4UFRUpGnoSERERERExjYd6NRcrinKwdKawoRuq06FADhykghg80YiIiIiIsogahnExqWVE43R48lxGWQsMLBAxMACERERERFlhsExL95s6tFs25hgfwUAcDgEsl3aQyiOnCRiKcQEIcRcADcBuBLAPACFADoBNAHYBOBRKeWetC2QiIiIiIgm5dXDXfAFTo9odzsFLlhYkdR95GY5NaMqmbFAxMACAEAI8RkA3wGQr1w1O/R1IYAiAP9m78qIiIiIiMgsahnEufPLkZ9k48VctxN98E5cZmCBiIEFCCFuB/Ct0MVDAO4D8CaAfgDlANYCeBeAgOEdEBERERHRlCelxKaD2saNGxOcBhFJbeDIUgiiDA8sCCHeitNBhYcAfExK6VV2ex7AD4QQWbYujoiIiIiITLP35AA6B8c12zYuqUz6ftSRkwwsEGVwYEEI4QDwP6GLOwHcJKX0RdtfSumxZWFERERERGS6TUoZRH15HhoqC5K+H11ggaUQRBk9FeJSAItC//5urKACERERERFNb5sOagMLG5KYBhFJLYUYY2CBKHMzFgC8N/RdAngqvFEIUYZgb4VuKWWP0Q2JiIiIiGj66Bn2YHtzn2ZbKv0VACCHpRBEOpmcsXBe6HuTlHJQCPH/hBC7AXQj2MSxWwhxUAjxRSFEdvqWSUREREREk/HSoU7I01Mmket24tz5ZSndF0shiPQyMmMh1F9haehilxDixwA+a7DrYgDfB/AuIcSVUsq+JB5jdpxdahK9LyIiIiIiSp1aBnHBwnJd5kGiGFgg0svIwAKAYpzO1lgJ4GwAbQD+HcDTAMZC276LYGbDWwD8EsC7k3iMZrMWS0REREREqfEHJF48pB0zmWp/BUDfY2F4nK3aiDK1FCI/4t85AEYAbJRS/lpK2SulHJVSvgTgEgQnRgDBrIVz7V4oERERERGlbkdzL/pGtBPlU+2vAACVhdoq6abukZTvi2imyNSMhTHl8v9JKQ+qO0kpR4UQX8Pp5o7vB/DPBB9jTpzrawC8meB9ERERERFRCjYd0GYrLKkuRF1Jbsr3t6S6UHP54KlBSCkhhEj5Pommu0wNLAwql5+Nse/zAHwIPldnJ/oAUsqWWNfzjYeIiIiIyHovHFDGTC6tnNT9LanRBhb6R73oGBxHdVHOpO6XaDrLyFIIKeU4gMjQZdR+CFLKMQBdoYuTexciIiIiIiLbnOofw762Ac22SybRXwEA6kpyka/0WTh4Sj1vSZRZMjKwELI34t/xWsKGr2dnFiIiIiKiaeLFQ9pshcIcF86cVzqp+3Q4BBYZlEMQZbJMDiy8FPHvhmg7CSGKAFSELrZauiIiIiIiIjKNWgZx8aJKuJ2TPwTS9VloZ2CBMlsmBxYej/j3u2Ls9y4A4YYIL1u3HCIiIiIiMovHF8ArjV2abZOZBhFJ7bPAjAXKdBkbWJBS7gLw19DFfxFCvFXdRwhRA+A/Qxc9AO63aXlERERERDQJbzb1YNjj12xbv9iclmlqYKGxYxD+gDTlvommo4wNLIT8G4A+BJ+Hp4QQ3xFCXCSEWCeE+CSC4yBnh/b9upSSpRBERERERNPAJqUMYvXsYlQWZpty34uVUogxbwDNPSOm3DfRdJTRgQUp5SEAVwNoB5AD4CsI9l54E8DPEQwqSAD/KaX8XrrWSUREREREydl0UBkzOclpEJEqC7NRnp+l2XaA5RCUwTI6sAAAUspXAJwB4JsAdgIYADAG4BiCpQ9nSSm/nr4VEhERERFRMk50j+BI57Bmm1n9FcLUrIVDbOBIGcyV7gVMBVLKbgB3hr6IiIiIiGgaU7MVyvOzsKqu2NTHWFJTiNePdk9c5mQIymQZn7FAREREREQzixpYWL+kEg6HiLJ3ajgZgug0BhaIiIiIiGjGGPX48fqRbs22jSb2VwhTSyGOdQ1j3OePsjfRzMbAAhERERERzRivH+3CuC8wcdnpELh4kTljJiMtri7QXPYHJI4qfR2IMgUDC0RERERENGNsOtCpuXzW3FIU57lNf5zCHDfqSnI121gOQZmKgQUiIiIiIpoRpJR44YAyZnKp+dkKYbo+C2zgSBmKgQUiIiIiIpoRDncMobVvVLPtEpPHTEZSAwuHmLFAGYqBBSIiIiIimhHUbIVZxTlYojRZNJN63wcYWKAMxcACERERERHNCOqYyY1LqyCEuWMmI6mTIVr7RjE45rXs8YimKgYWiIiIiIho2hsY82JLU69mmxVjJiMtqMqH06ENXDR2DFn6mERTEQMLREREREQ07b3S2AVfQE5cznI68JYF5ZY+ZrbLifkV+ZptnAxBmYiBBSIiIiIimvY2Kf0Vzm0oQ362y/LHVfssMLBAmYiBBSIiIiIimtYCAYnNhzo126wugwjTTYbgyEnKQAwsEBERERHRtLb35AA6B8c12zZaOGYyktrAkRkLlIkYWCAiIiIiomlNnQYxvyJf1/vAKmrGQvewB11D41H2JpqZGFggIiIiIqJpTQ0sbFhSadtjzy3LQ45be1jFrAXKNAwsEBERERHRtNU9NI4dzX2abXb1VwAAp0NgURXLISizMbBARERERETT1kuNnZCnp0wi1+3EuQ1ltq5B7bPABo6UaRhYICIiIiKiaeuFA9ppEBcsrEC2y2nrGpYqfRYOMGOBMgwDC0RERERENC35/AG8pI6ZXGpff4WwxUpgobF9EIGAjLI30czDwAIREREREU1LO5r70D/q1Wyzs79C2BKlFGLY40dr36jt6yBKFwYWiIiIiIhoWnrhgHYaxNKaQtSW5Nq+juqibBTnujXb2MCRMgkDC0RERERENC1tOqiWQdifrQAAQghd1sJBNnCkDMLAAhERERERTTun+sewv21Asy0dZRBhi2sKNJc5GYIyCQMLREREREQ07Ww6qC2DKMpx4cy5JelZDIAlNUWayyyFoEzCwAIREREREU07m5T+ChcvroTLmb7DG7UU4kjnELz+QJpWQ2QvBhaIiIiIiGhaGff58crhLs22dJZBAPrAgtcv0dQ1nKbVENmLgQUiIiIiIppW3jzWixGPf+KyEMD6JZVpXBFQnOdGTVGOZtsBlkNQhmBggYiIiIiIphW1v8Kq2SWoKMhO02pOW1yjzVpgA0fKFAwsEBERERHRtKL2V9iY5myFsKVKYIENHClTMLBARERERETTRlPXMI4qvQvS3V8hbLHSZ+EgMxYoQzCwQERERERE08ZmpQyioiALK+uK07QaLbWB44meEYx4fGlaDZF9GFggIiIiIqJp44WDnZrL6xdXweEQaVqN1qLqAoiIpUgJHO4YSt+CiGzCwAIREREREU0LIx4f/nG0W7Nt49Kp0V8BAHLcTtSX52u2cTIEZQIGFoiIiIiIaFp4/Ug3PL7AxGWnQ+CiRVMnsAAAi6sLNJcPMbBAGYCBBSIiIiIimhZeUKZBnDWvFMW57jStxtiSmiLNZTZwpEzAwAIREREREU15UkpsVvorXLJ0akyDiKQ2cOTIScoEDCwQEREREdGUd6h9CK19o5ptU2XMZKQlNdpSiI7BcfQOe9K0GiJ7ZGxgQQghE/zanO61EhERERFluk3KmMna4hxdP4OpoL48H1lO7WEWyyFopsvYwAIREREREU0fm5T+ChuXVkGIqTFmMpLL6cCCKqWBIwMLNMO50r2AKeB/ANwd4/phuxZCRERERER6/aNebDneq9k2FcsgwpZUF2B/28DEZfZZoJmOgQWgQ0q5J92LICIiIiIiY680dsEfkBOXs1wOvGVheRpXFFtwMsTJicsMLNBMx1IIIiIiIiKa0tT+Cuc1lCMva+qeI1UbOB5sH4SUMsreRNPflAwsCCGyhRDVQogpuT4iIiIiIrJHICCxWQksbFxSmabVJGaxMnJycMyHUwNjaVoNkfVsPXAXQhQIIa4IfelauAohKoQQjwMYQDB3qFcI8UMhRLad6yQiIiIioqlhz8l+dA1pxzVO5f4KAFBXkouCbG1GxQGWQ9AMZndGwHsAPAXgHgAjkVeEshP+CuBaAG4AAkAhgH8D8BsL1/ReIcQ+IcSIEGJQCNEohHhQCLHRwsckIiIiIqIEbDrQqbncUJGP+or8NK0mMUII3SjMQyYGFk50j+DZvacwOOY17T5T0TvswfP729HSOxJ/Z5rR7C5Mekfo+x+llAHluvcDOAuABLANwIsA1gM4E8C1QojLpJTPWLCm5crlhaGvG4QQfwJwo5SyP9k7FULMjrNLTbL3SURERESUaV5QyiA2TPFshbAlNYXYdqJv4vJBk0ZOvnGsBzf88p8Y8wZQUZCFZ29dj7L8LFPuOxmn+sdw1U9fRteQB3lZTvz24+dh9ZwS29dBU4PdgYUVCAYOXjO47obQ960A3iKl9Akh3ABeBnA2gA8DMDOwMALgSQDPAzgAYAhAJYLBjH8FUI5g9sQTQoi3SymTDQc2m7dUIiIiIqLM0z00jl0tfZptlyydJoEFpc/CIZMCC4+82Ywxb/AcbdeQB7/553F8+pJFptx3Mp7Y0TpRojLi8eO3b5xgYCGD2R1YCL8LHIvcGAogXIxg0OHnUkofAEgpvUKIewCcE/oyU52Uss9g+9+FED9FsCxjLYKBhlsA/MTkxyciIiIiohg2H+xE5DCFvCwnzp5fmr4FJWFhlTawcKxzGFJKCCEmdb89w+Oay2809U7q/lJ1okdb/tDaN5qWddDUYHePhbLQd4+y/WwAuaF/q1kJh0LfTS0diBJUCF/XDuA6AOEshc+k8BBz4nydncJ9EhERERFlDHXM5AULK5DtcqZpNclpqNT2gRj2+NE+MB5l78R5/dqxlduP98IfsH+UZdeQ9v/SM6we4lEmsTuwEA5rqflLF4e+Hw4d1EdKS+hLSnkUwN9DFxcKIWqTvH1LrC8Ap0xfNBERERHRDOHzB/DSIW3jxulSBgEANUU5yHVrgyBHO4cmfb9ev7ZV3eC4z7Qyi2Sokzp6GVjIaHYHFo6Evm9Qtr8LwTKIlwxuEx5S22FwndX2Rfy7Lg2PT0RERESUkbad6MPAmE+zbcOSyih7Tz0Oh8B8ZXrFka7hSd+vGlgAgC3H7S+H6FYzFkYYWMhkdgcW/o7gGMlPCiEuF0IUCCE+g9NlAX82uM2q0PeTdixQYX9OERERERER6cogltYUYlZxbpS9pya1HMKMjAWfQdnD1qaeSd9vstSMhTFvAKMev+3roKnB7sDCjwEMACgE8BSAfgA/Cl23H8aBhSsRPMDfbsP6VJGjKNMR2CAiIiIiykibDmgDC9OpDCKsobJAc/lo5+QzFjy+9GcsjHn9GBr36bYzayFz2RpYkFK2Abgawf4CIuLrKIDrpJSa8JsQYgGAi0IXn7NxqRBCzAfw9tDFI1LKVjsfn4iIiIgoU53sG8WBU9q+ARunYWBhgZqx0GVNxkJL7yjaB8Ymfd+JUhs3hrHPQuaye9wkpJQvhw7aL0Bw0kMbgFfCIyYVswB8K/TvZ81agxDiagB/jfKYEEJUA3gcQFZo091mPTYREREREcW2+aC2aWNxrhtr55SkZzGT0FChzVho6R3FmNePHHfqky2MeiwAwJamXly5albK95sMtQwijJMhMpftgQUAkFJ6AGxKYL9XALxiwRJ+CsAthHgcwOsAmhCcPlGBYGPJm0P/Rujxf27BGoiIiIiIyIDaX+HixZVwOe2u4p68+UrGgpTA8e4RLKkpTPk+fX7jNnBbjvfYF1gYNM5YYGAhc6UlsDBF1AL4TOgrmscBfExKOfmBs0REREREFNe4z49XD3dptm2cRtMgIhVku1BdlI32gdOHE0c7hyYVWPBEyVjYamOfhe5hBhZIK62BhVAPhfMRLInIA3C3lLIr9q1M8WEA60OP3YBgdkIRgCEAzQBeA/CglPJ1G9ZCREREREQhbxzrwUjEdAEhgPWLp2dgAQiWQ2gCC5McOemLEljYe3IAIx4f8rKsP8SLVgrRy+aNGSstgQUhxJkIToO4QLnq9wC6Ivb7FIA7EJwesVxK6TXj8aWULwJ40Yz7IiIiIiIi82w6oO2vsHp2CcoLstO0mslrqMzH60e7Jy4fmeTISW+UUgh/QGJHcx/esqDC8HozdbIUghS2FyoJIa4C8CqCQYXIyRBGHgKQi2BWwVW2LJCIiIiIiNJG7a+wccn0mwYRyeyRk9GaNwLA1iZ7yiGiToVgxkLGsjWwIISYBeC3ALIB7ANwOYCoBUZSykEAT4YuXm75AomIiIiIKG2OdQ3jmFIqcMk0HDMZqUEdOdk5BCmNsw4SESuwsMWmPgvdnApBCrszFm4FkA/gOICLpJR/k1LGC9ltRjCj4SyL10ZERERERGm06YA2W6GiIBtn1BalaTXmWKCMnBwY86E7xQPwQEAiECMmse1ELwKxdjBJ1IyFYVMq12kasjuwcBkACeCHUsq+BG9zIPR9viUrIiIiIiKiKUEtg9iwpBIOR7Sq6emhrjQXWS7tYVeq5RDeQPRsBQAYHPPhUMdgSvedjGiBhR6WQmQsuwML80Lf30jiNgOh7wUx9yIiIiIiomlrxOPDP4/2aLZN9zIIAHA6BOrL8zTbjqbYwNGocWO2ErTYYnGfBZ8/gN4R48yE3mHPpMo8aPqyO7AQnkKRzOMWh75Prn0qERERERFNWa8e7oYnon+A0yFw4SLrJxzYoUEph0h15KTRqMkz55ZqLm+1uM9CrD4KvoDE4LjP0senqcnuwMKp0PeGJG5zTuj7CZPXQkREREREU4RaBrFuXimKctxpWo25jBo4psJjEFg4f0G55vKW4z26fczUGaUMIqyXDRwzkt2BhZcRbMT43kR2FkJkAbgZwb4Mm61bFhERERERpYuUEpuVxo0zoQwizKyRkz6DUojzGrSBheaeUXQMjKV0/4mINhEijJMhMpPdgYUHQt/fKYR4e6wdQ0GFhwAsQDCwcJ+1SyMiIiIionQ42D6Ik/3ag+GNMyqwoM1YONEzEnNsZDRGt1lRV4TCbJdmm5VjJ6M1bgzrZQPHjGRrYEFKuRnAIwhmLfxZCPFdIcQ5EbvUCyHeIoT4dwB7EcxskADukVLutXOtRERERERkj00HOjWX60pysahq5vRuV0dO+gISJ3pGkr4f4+aNTqyZW6LZZmUDx3iBhXgZDTQz2Z2xAAA3AngaQBaALwJ4HcHgAQD8GcFyif9GMFNBAPgjgM/ZvkoiIiIiIrKF2l9h49JKCDG9x0xGKs5zozw/S7MtlXIINWNBiGCTy3XzyjTbt1rYZyFe4IAZC5nJ9sCClHJcSnkVgr0TjiIYPDD6agHwSSnldVJKv93rJCIiIiIi6/WPeHWTDDYumTllEGFmNHBUeyy4ncHDuXX12skQe08OYNRjzSFUvOaNPcPGoyhpZnPF38UaUsr7ANwnhFgOYB2AKgBOAN0AtgPYJjkElYiIiIhoRnv5cCf8gdMf+7NcDrxlwcwYMxmpoaIAb0aUKKSSsaBOhXA7glkda+aUwOkQE8+jLyCxo7lPNzHCDF3xMhbYvDEj2RpYEEJ8I/TPf0op/wYAUsp9APbZuQ4iIiIiIpoaXlCmQZzfUI7cLGeaVmMdXcZCVyoZC0pgwRXMWMjPdmHZrELsaR2YuG7r8R5rAguD2oyF2aW5aOkdnbjcw1KIjGR3KcSdAO4AkG3z4xIRERER0RQTCEi8eFDbuHHjkso0rcZaZoycVJs3uhynD+fUPgtWTYboHtYGFhZXF2ouM2MhM9kdWOgOfT9h8+MSEREREdEUs7u1H93KgeglS6vTtBprqRkL3cMe9I8k14/AG9BmLGQ5Tze4PGuets/CtuO9CATMrSwPBKSueaM6vYMZC5nJ7sDC4dD3Gpsfl4iIiIiIphi1DKKhMh9zy/PStBprzS3Lg8uhnXRxJMlyCK9PG1hwOSMyFpQGjgNjPjR2JF9uEUv/qBc+JVixiBkLBPsDC48gOPHhfTY/LhERERERTTGb1TGTM3AaRJjb6cDcMm3QJNlyCPWg3h2RsTCrOBd1Jbma67eYPHZSLYMA9BkLfaNeTTNOygx2BxbuBrATwA1CiBttfmwiIiIiIpoiOgfHsbOlX7PtkqUzN7AATH7kpFdt3ujUHs6p5RBbm8zts9A5qM1GKMxxYVZxjmablMHMBsosdgcWagB8DMAeAL8QQjwrhLhRCHGmEGK+EGJurC+b10pERERERBZ58ZC2aWN+llOXzj/TTLaBo9q8UQ0sqM+f2Q0cu4a0GQuVBdkoycvS7dfDcoiMY+u4SQBNAMK/DQLAW0NfiZCwf71ERERERGSBTUoZxAULK5DtmnljJiM1VExu5KQ6btLl1PZsUDMWTvSMoGNwDFWF2qyCVHUrgYWKgmxkuRwozHZhcNw3sb2XDRwzjt0ZC0AwoCCUfyf6RURERERE05zPH8BLSsbCTC+DAPQZC03dI0n1I4hXCrG0pggF2dpzsWaWQ3QpEyHKC4LZCqX52qwFZixkHrszAD5i8+MREREREdEUs/V4LwbHfJptG2Zw48YwtceCxxdAa+9owpMw9KUQ2nOvTofA2rkleLmxa2LbluO9uHzlrBRXrKWWQlQUZAMIBhZO9IxMbOdkiMxja2BBSvmgnY9HRERERERTz6aD2myF5bOKUFNsTrr+VFaen4WiHBcGIoIqR7qGkggsxM5YAILlEGpgwSzRAgtleW7N9m4GFjJOOkohiIiIiIgog+nGTC6tTNNK7CWEmFQDR3XcpMuhP5xbN69Mc3lvaz9GPf4kVhmdWgpRUWhcCsGMhczDwAIREREREdmmtW8UB04NarZtzIAyiLDJjJz0+NSMBX0bujVzS+CI2OwLSOxs6UtqjdGoGQvl+eGMBaXHAps3ZhwGFoiIiIiIyDZqtkJJnhtr587sMZORFkwqYyF+KURBtgvLZhVptm01oRxCSqkfN8mMBQqxtceCEOKXk7i5lFLeZNpiiIiIiIjIdpsOaAMLFy+qhNOROQPgJjNyUm3eqI6bDFs3rxR7Tw5MXN7S1JPECo2NePwY82oDGxM9FtSpECPeST8eTS92T4W4EUDi81ROE6HbMbBARERERDRNjXn9ePVwt2ZbpvRXCFN7LLQPjGNo3KcbE2lEbd6YZZCxAABn1ZfhwdePT1zeerwXgYCEYxIBHDVbAQDKw1Mh8pixkOnsDiycQPzAQj6AcpwOJnQBGIl5CyIiIiIimvLeONaDUe/pRoJCAOsXZ05/BQCYV54HIQAZcVR0rHMYK2cXx72tGliIlbEQaWDMh8OdQ1hcXZj8gkPUwEKO24H8LCcAfcYCAwuZx9YeC1LKeinl/DhfVQAqAHwaQC+APgCXSSnn27lWIiIiIiIy1wtKGcSaOSW6g9KZLsftxOzSXM22RMshfEophFGPBQCoLclFrTK+c0vT5Pos6CZCFGRDiGBgoyxfO25ycNynazRJM9uUbN4opeyVUt4N4AIAVQD+KoTInI4uREREREQzkG7MZAZNg4jUUKEthziSYANHjz9+88aws+q1Yye3HJ9cnwXdRIhQGQSgL4UAgD5OhsgoUzKwECalPAjgJwDqAXwhvashIiIiIqJUHesaRlO3tsL5kqUZGlhIceSkPmMhes8EtRxispMhuga1gYLKgtPBhJK8LAhlKRw5mVmmdGAh5LnQ93endRVERERERJQytQyisjAby5WxiJlCbeCY6MhJXY8FR4yMBSWwcLx7BJ2D+gaMieoe1t62IiJjwekQKMnVlkP0sM9CRpkOgYVw+G5uWldBREREREQp05dBVE5qSsF0tkAZOXmsaxiBQPzheeq4ySxX9MO5pTWFE80Vw7ZOohxCLYWIDCwAQKmugSNHTmaS6RBYWBv6zlcmEREREdE0NDzuwz+Pag9qM7W/AqDPWBj1+nFqYCzu7fQZC9EDMy6nA2vnarMWJtPAUS2FKC/QBhLKlD4LLIXILFM6sCCEmA/gTgTHTu5I62KIiIiIiCglrx7u0jQedDkELlhUkcYVpVd1UbYumyCRcghfIPHmjYC+HGLLJPosJJux0DPEwEImcdn5YEKIGxLYzQGgFMA6ANcAyEMwsHCPhUvTEEJ8F8CXIjZtlFJutuvxiYiIiIhmkk0HOzWXz64vQ1GOO8reM58QAvMr87GndWBi29GuIVwYJ9iilkLEat4IAOvqtYGFvSf7Meb1I8ftjHKL6OIFFtSMhV5mLGQUWwMLAB5AMEiQqPBvyk+klI+YvxyDBxRiDYDP2/FYREREREQznZRS319haWWaVjN1NFQUaAMLCWQsqKUQ8TIW1s4thUMA4fYNXr/EzuY+nNtQntRax31+DIz5NNsqlFIIXcYCmzdmlHSUQogEv/oBPAngMinlrbYsTAgHgHsRDLh0xNmdiIiIiIjiOHBqEG392v4BmdxfIUwdOXkkgZGT6rhJV5zAQkG2C0trtJM3UimH6DYoa9BlLORrM1CYsZBZ7M5YmJ/APgEAg1LKPovXYuSzAM4GcADAHwHcloY1EBERERHNGJuUbIXZpblYWFUQZe/MkcrISX3GQvypGuvqS7Gv7XRmxFYTAgsuh0CxMl6yVG3eyIyFjGJrYEFKedzOx0uGEGIugG+FLv4rgI1pXA4RERER0Yyw6YA6ZrIKQmTmmMlIDcrIyZP9o3H7HyRbCgEEGzg+9Prpw7Ctx3sRCMikRn2q/RXK8rN0ty/TjZtkYCGTTOmpEDb7OYACAA9KKV9M92KIiIiIiKa7/hGv7gw5+ysEqaUQUgLHumJnLeibN8Y/nFtXX6a53D/qTajsIlJnnMaNgEGPBZZCZBRbAwtCiGNCiCNCiIVJ3GauEOKoEOKIhet6H4CrAPQA+KJVj0NERERElEleauycaBwIANkuB85vyNwxk5HyslyYVZyj2RavHMKnZCy4EiiFqCvJ1T1Osn0W1FKIikJ9YEGdCjHmDWDU40/qcWj6sjtjYR6AegBZcfaL5A7dpt785QBCiBIAPw5d/LKUssuKxyEiIiIiyjRqGcT5C8qRm5X8qMOZSs1aOBonk8CjZCxkJZCxAATLISJtaUousKAfNak/nFMzFgBmLWQSlkIA3wNQA+BVAL8w606FELNjfYUek4iIiIhoRgoEJDYf6tRsu2Qpp0FEaqhQGjjGKYXwBZSMhQT7JKxTAgtbj/ckdLswfWBBn7FQlOPSrYd9FjKH3VMhUlEc+j5i9h0LIS4C8DEAPgD/KqWUcW6SjOZEd9y9ezc6Ok5Hc0tLSzF//nyMjY1h3759uv3PPPNMAMDBgwcxPKx986mvr0dZWRk6OzvR3KxdQmFhIRYtWgS/34+dO3fq7nflypVwu904cuQI+vv7NdfV1dWhuroavb29OHbsmOa63NxcLFu2DACwfft2qE/jsmXLkJubi+PHj6O7u1tzXXV1Nerq6jA4OIjGxkbNdW63GytXrpx4jrxer+b6RYsWobCwEK2trWhvb9dcV15ejnnz5mF0dBT79+/XXCeEwNq1awEA+/fvx+joqOb6+fPno7S0FO3t7WhtbdVcV1xcjAULFsDr9WL37t1QrV69Gk6nE42NjRgcHNRcN2fOHFRWVqKnpwdNTU2a6/Lz87FkyRIAwLZt23T3u3z5cuTk5ODYsWPo7dVGmGfNmoVZs2ZhYGAAhw8f1lyXnZ2NM844AwCwa9cu+Hza+cOLFy9GQUEBWlpaNK9BAKioqMDcuXMxMjKCAwcOaK5zOBxYs2YNAGDfvn0YG9OOkGpoaEBJSQlOnTqFkydPaq4rKSlBQ0MDPB4P9uzZo/u/rlmzBg6HA4cOHcLQkDZqP3fuXFRUVKCrqwsnTpzQXFdQUIDFixcjEAhgx44duvtdsWIFsrKycPToUfT19Wmuq62tRU1NDfr6+nD06FHNdTk5OVi+fDkAYMeOHQgof9CXLl2KvLw8nDhxAl1d2oSnqqoqzJ49G0NDQzh06JDmOpfLhVWrVgEA9u7di/Fx7R/shQsXoqioCG1tbWhra9Ncx/eIIL5HnMb3iCC+RwTxPSKI7xGnpes9okcUoatvAN7ulont5aMl2LGjj+8RIXWFwRIF30AH/CMD2Lr1FLYtCu5j9B4x0HwI414/hMOJrKr5cLscCb1H5A0OYvxU8OfryClAE2rQ3jOI1ibt7w1g/B7RuHc3xk/1wVVcDWduIbJ9g7rXWmFhIUrzs9DRPwJPR/D3/KXXs+BpKAfA94iwdL9HGN2vKaSUtn0hOErSD2B5Ere5K3S7PSavJQvAfgASwPcMrr8zdJ0EsCGF+5epfn3wgx+UUkrZ2NhoeH3Yeeedp7vu4YcfllJK+bOf/Ux33aWXXiqllLK/v9/wfjs6OqSUUl599dW66374wx9KKaV89NFHddetXbt2Yk1ZWVm66/fs2SOllPKmm27SXfeVr3xFSinlpk2bdNfV1dVN3G9dXZ3u+k2bNkkppfzKV76iu+6mm26SUkq5Z88e3XVZWVkT97t27Vrd9Y8++qiUUsof/vCHuuuuvvpqKaWUHR0dhs9hf3+/lFLKSy+9VHfdz372MymllA8//LDuuvPOO29iTUb329jYKKWU8oMf/KDuujvuuENKKeUzzzyju27BggUT91tRUaG7/rXXXpNSSnnrrbfqrvvkJz8ppZRy69atuusKCwsn7nf58uW665944gkppZT/9V//pbvuuuuuk1JK2dzcbPh/HRsbk1JKuX79et119913n5RSyvvuu0933fr166WUUo6NjRneb3Nzs5RSyuuuu0533X/9139JKaV84okndNctX7584v9aWFiou37r1q1SSik/+clP6q679dZbpZRSvvbaa7rrKioqJu53wYIFuuufeeYZKaWUd9xxh+46vkfwPUL94nsE3yMiv/gewfcI9Std7xE/fPagrPnwj3TX8T3i9Ncv/vScnPflp2TB2it118V6j3DkFsl5X35K7mruS/o9In/5Bjnvy0/Jxze9afh/DTN6jyi/6gty3pefkh/78rd011166aXyvfe8Juf8m/73HOB7RPhrir1HzJYmHV8LaepJei0hxAvKpg2h/8AWAPEGtWYDaAAQzpf6sZTy8yau7U4AdwA4gWCgYzjK9QCwUUq5Ocn7nx1nlxoAbwLA008/jerq6okreKYhKFOjiFPpTAPPRvJsZCS+RwTxPSKI7xFBfI84je8RQXyPCKqoqMCnnzyBHcfaJzIW3r22Djdd1MD3iAjldfOx/v97bSJjAQDu+9A61JbmGr5HXPXTlyElJjIW/vq5ixDoaU7oPeJTv96Gpu5hOHIK4C6pwTcuX4g1hfpDMqP3iOv/7x/oHfFOZCz8+NoGzMnSvvYLCwvxq33jeODVoxMZCxcvqsCXLw/+fvM9Iijd7xF//etfccUVV0zcTErZAhNYHVgIIBhImOyg2qMAzpdSdsbdMwFCiKUAdiKYtXCNlPJJg33uxCQCCwmsYTZC5RLNzc2YPTteHIKIiIiIaHroHBzH2d9+TrPtNx87F29ZyIkQkaSUOOs/n0NPRC+C//3QWXjHGfp2bP6AxIKvPq3Z9tzn12NhVYFuXyOf/e12PLnzdKDmQ+fNw7euXRH3dv6AxKKvPa2Z7vGXz16IM2qLdfv+9o0TuO0Ppw+IF1YV4LnPr09ofWSPlpYWzJkzJ3zRtMCC1T0WXkIwsBC2PnR5K2JnLEgAYwDaALwG4HdqRsEk3YpgUOEogDwhxAcM9on8LbtECBH+7f6zyWshIiIiIppRNh/UZjAUZLuwrr4sTauZuoQQWFJdiNePnj7TfvDUoGFgwauMmgQAdwLjJsOW1BQGT62GH6d9MPrOEXpHPJqgAgBUGjRvBIClNYWay0c7hzDm9SPHzUkgM52lgQUp5YbIy6EMBgC4UUqpz82zT/g3oQHAbxPY/+sR/56P+GUcREREREQZa/NBbaLxhQsrkOXiQDojS2qUwEKUA37jwELiz+niau1B/6H2wWBtvIgdnFAnQgDGoyXDjyEEEE6KD0jgcMcQVtTpsxtoZrH7t/uh0FdvvB2JiIiIiGj68foDeEkZM7lxaWWaVjP16Q74T0ULLOhL2F1JZCyo2QR9I150DOqDBqquQe3IyNI8d9SARn62C3PL8jTb9rcNJLxGmr5sDSxIKW+UUn5EStkWf2/L1yFifQH4ZsRNNkZc15SmZRMRERERTXlbj/dicFzb6HHDkqooe9MStXygaxjjPr9uP59BxkJWEhkLdSW5yMvSliQcjBLEiNQ9rA0+VEQpgwhTAxiJPAZNf8xHIiIiIiIi02xS+iucUVuE6qKcNK1m6ltcrW2+6A9IHO3UV1571UYHAFxJBBYcDoFFBuUQ8XQOJhtYKNJcPsDAQkawNbAghFgphDgqhGgUQtQlsH+dEOKwEOKIEGKxHWskIiIiIqLUbTqgDSxsZLZCTIU5btSV5Gq2GR3we32Ta94IAEuVwEIiB/1dQ9pSiPIC4/4KYctmqY/BUohMYHfGwvUA6gEcllK2xtkXoX0OhW5zvaUrIyIiIiKiSWnpHcGh9iHNto1LGViIRy2HMDrg9wUMAguO5A7nFtckn7HQPTS5jIWuIY8u64FmHrsDC+Fxk08mcZsnAAgAb7VkRUREREREZAp1GkRJnhtr5pSkZzHTSCINHD0+bSmE0yHgcCSXsbDEoBQiYFBiEUmdClFZGDuwMLcsD7nKeElmLcx8dgcWwuUMu5K4zZ7Q9yUmryUmKeWdEQ0bN9v52ERERERE05FaBrF+cSWcSR78ZiK14WEiGQuuFJ5XNTNizBvAiZ6RmLfRlUJEGTUZ5nAIXWbEgTb2WZjp7A4shDuTDMXcSyu8b1HMvYiIiIiIKG3GvH68eqRLs+0SlkEkRM1YaO0bxeCYV7PNq0yFSGYiRFhFQRbKlMDAwTjlEGrGQrxSCABYlkCghGYWuwMLvaHvNUncJrwvX41ERERERFPUP4/1YMx7+uBXCODiRZVpXNH0saAqX5fZ0dihPRfr9WtLFlxJNm4EACGEvhwixkG/lBLdSsZCRZxSCMAoA4OlEDOd3YGFxtD3y5K4zeWh70dMXgsREREREZlELYNYO6cEpXHS5iko2+XE/Ip8zbaDygG/mrHgTiFjATBoFBkjY2FgzAeP8rjxSiEAYOksbbJ5Y/sQfH5980maOewOLPwNwUaMnxBCLIu3sxDiDAAfR7Dh4zMWr42IiIiIiFIgpcQLSmCBZRDJUTMJ1MCCT8lYSDWwkEijyDC1DAKI37wR0GcsePwBHOsaTnCFNB3ZHVj4HwDDAHIAvCCEuCrajkKIdwJ4DkAugFEAP7dlhURERERElJRjXcO6JoAbljCwkAzdAb+SSaBmDrhTKIUA9BkLR7uGMe7zG+6rlkEUZLuQo0x8MFKSl4VZxTmabfvZZ2FGc9n5YFLKLiHEvwJ4GEAVgCeEEEcBvAKgLbTbLAAXAZiPYHaDBHCLlLLdzrUSEREREVFi1GyFqsJsnFHL3uvJUA/442UsuFLOWCjQXPYHJI52DmPZLP3PS9+4MfHSliU1hWjrH5u4fKBtAO9cXZvkamm6sDWwAABSyl8LIRwIZi/kAVgAoEHZLRx+G0YwqPArG5dIRERERERJ2HywU3N545IqCMExk8lQAwvdwx50DY1PTGEwq8dCYY4bdSW5aO0bndh2qH0wocBCeQITIcKW1hRpXhecDDGz2V0KAQCQUj4MYCGA/wawO7RZ4HSGwi4A3wawkEEFIiIiIqKpa2jch38e69Zs27iU0yCSNbcsDzlu7eFZZP8DfWAh9cCNroFjlIP+LnUiRBIZC8tmxc7AoJklLYEFAJBSnpJSflVKuRpANoJjJWsA5Egp10gpv87yByIiIiKiqe3Vw12aUYhup8AFCyvSuKLpyekQWFQV/YBfHTeZasYCkHgDR30pRHIZC5Fa+0bRP+pN+PY0vaQtsBBJSumTUnaEvnzpXg8RERERESVm80Ftf4Wz68tQmONO02qmt1gNHH0BbcaCyzGZjAVtn4WDUUZOdg2mXgrRUJmvy6pg1sLMNSUCC0RERERENP1IKbHpgL6/AqVGHdMYmbHg8WkDC1mu1A/lllRrswlaekcxNK4/v9s9rC2FqEyiFMLtdGChLgNjIIlV0nTCwAIREREREaVkf9sgTg2MabZtXMrAQqoWK4GFxvZBBALBEghfQJkKMYmMhYbKfDiV26vjLYHJlUIA+kDJ/jZmLMxUtk6FCI2WTJWUUi4wbTFERERERDQpm5QyiDlluVhQmZ+m1Ux/S5RSiGGPH619o5hTlgevkrGQ6rhJAMhxO1FfnocjncMT2w6dGsSZc0s1+02mFAIwysBgxsJMZfe4yfok9pU4PXYyfJmIiIiIiKaITQe0gQWOmZyc6qJsFOe6NU0OD54aDAYWlIyFrEkEFoBgc8XIwII6GWLU48ewx6/ZlsxUCABYqoywPHQqmIHhmES2BU1NdgcWHkxgn3wAiwGsQjCYsB2nR1ISEREREdEU0DfiwbYTvZptLIOYHCEEllQX4o2mnoltB9sH8bbl1fD51YyFyR2cL64uxF92t01cVksh1DIIAKgoTC5jYVmNPgOjpXcUc8vzkrofmvpsDSxIKT+S6L5CiDMA/ALASgD/JaX8g2ULIyIiIiKipLzU2IXIk+jZLgfObyhP34JmiMU1BZrAQviA36sEFiYzbhLQT4aIF1jIcjlQmJ3c4WNlYTbK8rPQE9EEcv+pAQYWZqAp27xRSrkXwNsAnATwkBBiaZqXREREREREIWoZxFsWlCPH7UzTamaOJTXa8oHwiEavX1sKoY5ynOzjdA15NMGEriHtRIiK/Kyky1yEEPo+C2zgOCNN2cACAEgphwDcBSAPwL+neTlERERERATAH5B48ZB2zOQlLIMwhdrA8UjnELz+gOkZC3PL8pCtjKw8FNFnoVudCJFkGUTYEjZwzAhTOrAQsiX0/a1pXQUREREREQEAdrb0adLbAWDDEgYWzKAGFrx+iaauYfj86rjJyR3KOR0Ci6q15RAHI8ohJjtqMmyZkhmhNomkmWE6BBbC+TbVaV0FEREREREBADYrZRCLqgowp4x182YoznOjpihHs+3AqUF9xoJr8pMVllQbl10A+lKI8vzkJkKELZ2lDZQ0dQ9jxONL6b5o6poOgYV3hL73p3UVREREREQEANh0UFsGwWkQ5lqslA8cah/UjZt0TzJjAdA3cIyZsZBiKcSiqkJETpeUEmhsH0rpvmjqmtKBBSHEBwDchuDYyVfSvBwiIiIioozXMTCG3a3ac34bllSmaTUzk67h4alBeH3m9lgAgiMnIx06NQgpgwEMs0ohcrOcqK/I12xjn4WZx9Zxk0KIXyawmwNAKYAzAdQiWArhA/DfFi6NiIiIiIgSsFlp2liQ7cLZ9WVpWs3MpDvgbx/EoiptdoFrklMhAGCp0v9g2ONHS+8o5pTl6adCFKRWCgEE+ywc7RyeuLyfkyFmHFsDCwBuRDD7IBHh35QBAB+TUm6JtTMREREREVlv80Ftf4WLFlWYcvacTlMbOJ7oGUF1obbvQpYJz3l1UTaKclwYGDvd8+BQ+2AosGBOxgIQnAzxl91tE5eZsTDz2B1YOIH4gYUAgEEAxwC8COBXUsouqxdGRERERESxef0BvHxI+9F8I6dBmG5RdQGECPYjAILf97dpD8bNyFgQQmBJTSHebOqd2HawfRAXL65E34hXs+9kAgtGpR1SSggx+f8DTQ22BhaklPV2Ph4REREREZlnS1MvBse1Hf3ZX8F8OW4n6svzcazrdPmA+ryblSWiCyycGtSNEgUmWQoxS1ty0TfiRfvAOGqKc6LcgqYb5iwREREREVFC1DKIFXVFqCriwaEVFlcXxLzebULGAqAvuzh4ahCdg9oyCIcASvJSDyzUleSiIFt7TpvlEDOLrYEFIcQvQ1/vtfNxiYiIiIho8l44oA0ssAzCOkuUxooqszIW1EaRRzuH0T4wptlWlp8NpyP1QIbDESy5iHTgFBs4ziR2Zyx8OPTF8BQRERER0TTS3DOCxo4hzbaNSxlYsIqaSaBymVgKEcnjD2DL8V7NtsmUQYTp+iy08ZBwJrE7sBCeTdNu8+MSEREREdEkqGMmy/KzsHp2SXoWkwHUA35VlkmlECV5Wagu0jZmfPWwtkHnZBo3hhk1cKSZw+7Awr7Q93k2Py4REREREU3CJqUMYv3iykmlx1Ns9eV5MUdKuhzmHcqp5RB7Wvs1l03JWFAaOB7uGILHF5j0/dLUYHdg4VcABILlEERERERENA2Mef147Yj2LDanQVjL5XRgQVX0Bo5ul3mHcmo2QUBqrzcjY0HNwPAFJI50DkXZm6YbuwML9wN4HsA1Qog7BQeXEhERERFNea8f7caY9/TZZYcIZiyQtdQD/khuE7NF1IwFVbkJgYWiHDfqSnI12w6yHGLGcMXfxVQXAfgBgEoAXwfwfiHEIwB2AegF4I91YynlS5avkIiIiIiINDYrZRBnzi2d1PhBSkysA34zMxbi9XMwoxQCAJbNKkRr3+jE5f2nBnAt6ky5b0ovuwMLmwFEJtYsRjDAkAgJ+9dLRERERJTRpJTYdFDbuJHTIOyxpCZ6KYTLxIyFRVWFEAKQ0vj6isLJZywAwNKaIjy3/3SQ6kAbMxZmCrtLIYBgj4VUv4iIiIiIyEZHOodxomdEs439FeyxpKYo6nVuk8ZNAkBulhPzyvKiXl+Rb05gQc2MOHCKIydnCrszADba/HhERERERDQJmw9qyyCqi7KxfFb0A14yT21xDgqyXRga9+muMzOwAATLLpq6Rwyvqyg0rxQiUvvAOHqGPSjLZ1nNdGdrYEFK+aKdjxeNEKIIwBUAzgawDkAdgn0fcgH0ITgW82kAv5BSdqdpmUREREREabdJCSxsXFIF9mC3hxACi6sLsO1En+46l9Pcn8HSmkI8u6/d8LpykzIW6svzkeVyaMZMHjg1gLcsqDDl/il90lEKMRWcA+C3AD4P4GIACwAUAXAjGGBYD+C7AA4IId6RrkUSEREREaXT0LgPbxzr0WzbsIT9FewUrRwiy+yMhSgNHItz3cgyqVGky+nA4mpt3wj2WZgZbM1YEEL8EsEmjLdLKdsSvE0lggf5Ukp5k4nLaQawCcDW0L/bEAy0zAZwHYB3A6gA8KQQ4hwp5U4TH5uIiIiIaMp7pbELXv/pjn5up8CFi3h22U5Lqo0bOJqdsbAkygSKcpMmQoQtrSnCntbTvRU4cnJmsLvHwo0IBhZ+iOCBfCKKIm5nVmBhk5RybozrHxVCXAvgjwCyANyBYKCBiIiIiChjqP0VzplfhoJsDmqzU7SMBbN7LNRX5CPL6YDHH9BsrygwpwwibCkbOM5IGVkKIaX0J7DPnwAcDF28yNIFERERERFNMcExk/r+CmQvtXQgzO0w91DO7XSgoTJft73S9MCCNlBysH0Q/kCUOZc0bUyHwEJO6Pt4Gh47nJeTE3MvIiIiIqIZZl/bANoHtB/BNy5lYMFu5QXZhlkDbpf5DTTVcZDBxze5FEKZDDHmDeB497Cpj0H2mw6BhQtC341blFpECLEEwJrQxQN2PjYRERERUbptOqDNVphbloeGCv0ZbbKeWj4AAC6TMxYA48CC2aUQFQaBkgPsszDtWVogJYT4RpSrPimE6IhyXVg2gtMa3olgf4VXzVybESFEHoKjJ68G8CWcfn5+lMJ9zY6zS02y90lEREREZJdNBzs1ly9ZyjGT6bK4uhCvHO7SbHOb3LwRMG7gaHZgAQCWzSrEy42ns2EOtA3gipWzUr6/bSd68Zt/nsCc0jx84uIG5GY5zVgmJcHqzit3IhgUiCQA3JLEfQgAYwC+b9KatHcuxI0A7o+xy38D+E0Kd92c0oKIiIiIiNKsb8SD7Sd6Nds2LKlM02poSY22z4LLISwJ8iw2CCyYXQoBBDMwXm48HSiZTMZC99A4PvC//5hoOjk07sXXrlw+6TVScuwohRARXzL0JRL4GgfQBODXAM5Pw7jHHQDOkVLeJqVkNxEiIiIiyhhbj/cisp9ejtuB8xrK07egDLd8VrHmckme+Qf7ADC7NBdFOdpzz3UluaY/jjrp4mB76oGFN5t6NZMsnt59KuX7otRZmrEgpdQELoQQAQQDCyuklPusfOwk/AnAltC/cxEsv3gfgHcB+K0Q4t+klE+lcL9z4lxfA+DNFO6XiIiIiMhSO5v7NJdXzS5Bjpvp5emyoq4I58wvwxvHegAA/3JOvEON1AghcNOFDfj/njsEAFg7twRn1BqPu5wMteTiRM8IRj3+lEoYvMp4zJP9oxjz+vl6tZndQ2hPIBhY8Nj8uFFJKfsA9EVsehPA74QQHwLwIIAnhBA3SSkfSPJ+W2Jdz/o0IiIiIpqqdrb0ay6vmVOSnoUQgOCxw69uOhd/39eO4lw3LlhoXfbIZ9+6EGfXl6JnxIO3Lau25LhlYVUBhADCeeFSAkc6h7Cirjj2DRMgZTBQYVTWQdaxdSqElLJeSjlfSnnYzsdNhZTyYQCPIfgc/UwIUZbmJRERERERWU5KiZ0tfZptq2eXpGUtdFqWy4ErV83ChYsqLD1JKYTAWxZW4KpVtZad9c/NcmJ2qbbE4lCK5RBGNetHOzm+0m7TYdxkOj0R+p4P4LJ0LoSIiIiIyA4nekbQN+LVbFs1e/JnkokiLa7SZhQcah8y7b6buhlYsJutgQUhhFsIsTz0pZtbIoTIEUL8UAjRLIQYFULsE0J8xs41KiJn7MxL2yqIiIiIiGyilkGU52fpzi4TTdYipVShMdWMBYM++8eYsWA7u3ssvAvAbwH0AJhtcP0fAVyK4FQIAFgK4EdCiCVSyk/bs0SNuoh/mxdCIyIiIiKaovSNG4vZH4xMt7haO0KzscO8w61jzFiwnd2lEO9AMGjwJynleOQVQogrQ9cDQAuCQYbW0P63CCHeYudCQ94b8e/daXh8IiIiIiJb7VL7K7BxI1lAba7Y3BucDGGGY10MLNjN7sDCmQj213jR4LqPhr4fAnCGlPI9AFYA2B/a/jGzFiGEuFEIkRNnn1sBXBG6eAzAy2Y9PhERERHRVOTzB7C7VVsKwcACWWFBZXAyRJiUwOEUshYMKiHQOTiOoXHfJFZHybI7sFAV+q6ZCiGEcAB4K4JBh59KKQcBQErZD+BnCGYtnG/iOu4E0CqEuFcIcYMQ4gIhxGohxIVCiFuEEK8AuCu0rwfAJ6SU5oTPiIiIiIimqMaOIYx5A5ptnAhBVsjNcmJuWZ5mW6qTIYw0MWvBVnb3WKgIfR9Vtq8BUIRgYOEvynV7Qt/nmLyWMgAfD31F0wLgo1LK50x+bCIiIiKiKUftrzCnLBdl+VnpWQzNeIuqCnG8e2Ti8qGO5AML0nDgZLAcYkUdp5nYxe7AwnjoMSuU7ReHvrdIKY8r14VfXWYOUX0HgCsBXABgIYBqAOUIBjw6AOwA8BSAR6WUI1Hug4iIiIhoRtmp9FdYxWwFstCi6gI8t7994nJjCiMnjUohAPZZsJvdgYXjAJYDOBfA8xHbr0YwW+Elg9uUhb53GlyXEinlQQAHcbrcgYiIiIgo4+1s1vZXWMPAAllInQzBUojpy+4eC5sQ7JfwGSHEMgAQQrwTwIbQ9U8b3GZF6Hub5asjIiIiIspQox4/DioHdqtmM5WcrLOoSjsZoqV3FCOe5JouRstYOMrAgq3sDiz8FMFmiFUA9gghuhAcKykQHC35uMFtLkUwm2GXXYskIiIiIso0+9r64Q+cPkpzCLBGnSy1sKoADqHdlspkCCNN3Qws2MnWwIKUshHAhwCMIBhMKAt97wPwL1JKT+T+QogaAG8PXXzBvpUSEREREWWWHUoZxOLqQuRn2105TZkkx200GSK5wEKUhAX0jXjRO+yJci2ZzfZ3CinlY0KIFxFsnliDYInDk1LKHoPdVwH4TejfRmUSRERERERkgl26xo3MViDrLaouRFPEZIjGJPssyGi1EACOdQ+jlFNNbJGWEKSUsgPA/Qns9yyAZ61fERERERFRZlNHTa6eU5KWdVBmWVxdgL/vOz0ZwswGjsc6h3Hm3FLT7o+is7vHAhERERERTTF9Ix7NWWMAWM2JEGSDxdXaBo5mlUIA7LNgp7QXTQkhqgCsxOmxkj0A9kgp26PfioiIiIiIzLKrRdtfIcvlwJKawih7E5lnYZV25GRr3yiGx32m9PfgZAj7pCWwIIQQAG4G8EkAZ0TZZx+AuwH8r5QyYOPyiIiIiIgyiloGsaK2CG4nk5vJegsqg5MhIgaS4HDHUOKlODFSFpoYWLCN7e8WoQyFfwD4OYJBBRHlazmAnwH4Z2g6BBERERERWWCnkrGwimUQZJMctxPzyvM125LpsyBjRBaauoZjNnck89iasSCEyEZwbOQyBIMHnQAeBfAGgHDpQzWAswG8D0AVgLMAPCeEOEtKOW7neomIiIiIZjopJXYoGQtr2LiRbLSoqgDHIrILGjuS67MQzbDHj87BcVQV5ZhyfxSd3RkLtyKYiQAAvwDQIKX8jJTyYSnls6Gvh6WUnwXQAOC+0L7LQrclIiIiIiITtfWPoWtIe/6OoybJTvoGjklkLMRJSDjGcghb2B1Y+ACCVTB/l1J+XEoZ9acspRyRUt6M4LhJEbotERERERGZaFdLn+ZyUY4L9UpqOpGVFlVrGzg2JjkZIhYGFuxhd2BhYej73UncJrzvApPXQkRERESU8XY06/srOBwiTauhTKRmLLT2jWJo3JfQbeN1UDjGkZO2sDuwEM6xak7iNuF9PSavhYiIiIgo46kZC6vnsAyC7DW/Ih9qLKsxwXKIuKUQnQws2MHuwMKB0Pc5SdwmvO+BmHsREREREVFSAgGJ3cpEiNWcCEE2y3E7deU3ZpVDNDFjwRZ2BxYeQLBfwr8mcZt/RTDD5SErFkRERERElKmOdg1jUEk5X82JEJQGuj4LHQlmLCjFEE4l9aGpewSBAEdOWs3uwML/AfgbgHcIIe4WQkSd+yGEyBZC/AzAZQg2cLzXpjUSEREREWWEncqYyZqiHFRzNB+lgX4yRGIZC2opxJzSXM1ljy+Ak/2jk1obxeey4k6FEBfHuPouAGUAbgZwrRDiUQBvAuhAMDOhGsDZAN4LoCZ03Q8BXATgJSvWS0RERESUiXYq/RU4ZpLSZZESWEi0x4KqoiAb3UMeTSbOsa5hzC7Nm9T6KDZLAgsANiN+g04gGET4TJx91iGY5SBh3XqJiIiIiDLOTrW/AssgKE0WK6UQJ/vHMDjmRWGOO+bt1INOIYD6inzsbj392m7qGsZFiyrNWioZsLIUQljwRUREREREJvD4Ath/ckCzbQ0DC5Qm8yvydf0RGjuSb+AoIDC/QtsI8mgXGzhazaoMgI0W3S8REREREZngwKkBePwBzbYVdSyFoPTIdjlRX56HIxHjIRvbB3Hm3NLYNzSYN1mvBBaaGFiwnCWBBSnli1bcLxERERERmUNt3NhQmY/i3Nhp50RWWlRVqAksJNLAURdWEECDElg4xsCC5eyeCkFERERERFOArr/C7JL0LIQoRO2zkEopBKDPWGjuHYVXyc4hczGwQERERESUgdSMhdWcCEFplspkCLUSQgCYX64NLPgDEs09I5NdHsXAwAIRERERUYYZGvfhcKf2bDAnQlC6LVYCC239YxgY8yZ1H0IAxXlulOVnabY3dbMcwkq2jm8UQrwwiZtLKeVbTVsMEREREVGG2t3SrznT63IILJtVlL4FESE4GcLlEPAFTr84G9uHcNa86A0cpUHzRgCoL89Dz7Bn4vLRzmFcstS8tZKWrYEFABsQ7K8Ra3SkbhRplO1ERERERJSCnS19msvLZhUhx+1Mz2KIQrJcDtRX5ONwRG+FxvbB2IEF5bIIHT7OryjAthN9E9uZsWAtuwMLLyF+gCAfwEIAJaF9DwFos3ZZRERERESZY5cSWFjF/go0RSyuLtAEFhKZDBFJhE5Lz6/I02znZAhr2RpYkFJuSHRfIcQVAH4CoAzATVLKV61aFxERERFRJtnZrEyEYH8FmiIWVRUCODVxubEjdgPHKJUQmF+hnTDR1MXmjVaass0bpZRPA7gQgA/AH4UQdWleEhERERHRtNc5OI7WvlHNNo6apKlikTJy8lACkyEihTMW6pWMhda+UYx5/ZNaG0U3ZQMLACClPAXg/wNQAeBLaV4OEREREdG0p5ZB5GU5sbCqwHhnIpupkyHaB8bRPxp9MkS0Ovt6ZeQkABzvZtaCVaZ0YCHkldD3K9O6CiIiIiKiGWBnc5/m8sq6YjgdsXqrE9mnvjw4GSLS4RjlEOpUiHDzxvxsF6qLsjXXHetKrl8DJW46BBbCM0Jq07oKIiIiIqIZYGcL+yvQ1JXlcmB+hTbbIJkGjiIiJqHezzH2WbDMdAgsXBj6zlcBEREREdEkSCl1oybZX4GmGrUcItk+C2H6wAIzFqwypQMLQojzAXwDwdKZN9K8HCIiIiKiaa25ZxR9I9p6dY6apKlGbeDYmOTIyTA1sMDJENaxddykEOIbCezmAFAKYB2Ac0OXJYJNHImIiIiIKEU7lGyF8vwszC7NTc9iiKJIJmMh2rhJQN/A8WjX8KTWRdHZGlgAcCeiN+40IhAcN/klKeXfLVkREREREVGGUBs3rp5TAiHYuJGmlsVKxkLH4Dj6R7woznPr9pXK4WXk67mhUhtY6Boax+CYF4U5+vuhyUlHKYSI8wUAgwB2AfgJgDVSyh+Zvggh1gkhviGEeFYI0SKEGBdCDAkhDgkh7hdCXBj/XoiIiIiIpg911CTLIGgqmleeD7dTG/BqjDEZIlLkreaU5UEdeMJyCGvYmrEgpZwSPR2EEC8BuMjgqiwAi0JfNwohHgLwcSmlx2BfIiIiIqJpw+cPYHcrJ0LQ1Od2BidDRE6DONQ+hHX1Zbp9Y5VCZLucqC3JRUvv6MS2Y93DWMmAmummxIF+GoRHV54E8GMA1wE4B8D5AD4PoDV0/Q0AHrB7cUREREREZmvsGMKYN6DZxokQNFUtSrDPghpXUCt7dJMhOtlnwQpTLrAghCgXQuhDUeY6AOD9AOZKKf9NSvm4lPJNKeU/pJT/H4A1AA6F9v0XIcTFFq+HiIiIiMhSan+FOWW5KMvPSs9iiOJYXKUNLKRSCgEYTIboZmDBClMisCCEqBZC3CuE6ALQAaBTCNErhHhACDHX7MeTUl4lpXxUSumPcn0XgC9EbLrO7DUQEREREdlpZ4u2DGIVsxVoClMbOB6KMnIyVikEoA8scDKENSwLLAghZgshToa+bomxXwOArQBuAlCG000ciwF8CMB2IcQaq9YZw6aIfy9Iw+MTEREREZlGzVhYw8ACTWFqKUTn4Dj6RuK3vlOnnNSrGQsMLFjCyoyFywDUIBgseDTGfr9DsOdB+BXQDOCfCE6GEABKAfxWCGH3aMzsiH8bZjbMJIGAxKH2QYx5Z/x/lYiIiCjjjHr8OKjUqLNxI01l9eV5uskQRlkL6rhJVYMSWOgf9aJ3mL35zWblwfr5oe+bpJTdRjsIIa4CsA7Bnhu9AP6flPLZ0HW5AH4G4CMAFgN4D4BHLFyvan3Ev/cne2MhxOw4u9Qke59W+PFzjdhyvAc7TvRhcNyHRz5xHs5tKLd9HVJK/PLVJvxhWwuW1hThG1ctN5xTa4dn957CzzcfQXl+Fu64ejnmlefHv5EFdrf04z//sg9SAl++fCnOmlealnW09I7gzif3on1gHP+6fgGuXDUrLesYHPPiW0/tw66Wfly7tg43X9yQlrnbPn8AP3m+Ec/t78A588vwlcuXIsfttH0dAPDom8146B9NmFeejzuuXo6qwpy0rOPlxk7c9fdDKMh24etXLcdi5QyDXQ61D+I//rwPIx4fvnDpElywsCIt6+gYGMM3/7wPx3uGccP59XjfujlpWceox4///ut+vNnUi7ctq8Ln3rYYTnXmlg2klPifF4/gqZ1tWFlXjNuvWpa2+eF/3nkS9750FDXFObjznWegriQ3LevY0tSD//7rATgdAl+7clna0tGbuobxzT/vRc+wB5++ZBHevrw6LevoG/Hgm3/ehwOnBvH+dbNx4wXz07IOf0Dix88dwvMHOrB+cSX+/R1L0vJ3RkqJX/3jOB7d0oJFVQX4+lXLUWpCH4R9bf3wB04fgDkEsKKuaNL3S2QVl9OBhooCTUCssWMQ58zXtuNTSyHU39q6kly4HAK+iNf/0a5hnMX+IqayMrCwEsGAwd9j7PPBiH9/IRxUAAAp5agQ4mMIBh5WALgGNgUWhBAOAF+J2BQr4yKaZpOWY6m/7z+FPa0DE5e3N/elJbCwvbkP33pqHwBg78kBlOW78bUrl9u+jv4RLz79m+3w+IMdkz2+AH71sXNtX4eUEp/93XYcC6Vqffa32/Hiv2+Ay2l/W5Rv/nkfntvfAQD4t0e246x5pagptv8A9r6XjuLRLS0AgP/+6wGsqC3GhYvsP3B8dl87fvLCYQDAvrYB1JfnpeVD8OGOIXzp8V0AgD2tAyjIcuG7162yfR3D4z586tfbMDDmAwD8+2M78cSnL7R9HQDwxcd2YleofvhTv9mG175yCfKy7E52A773t4P4y+42AMCXH9+Fs+aVYkFlQZxbme/X/zyOB18/DiD4Wl1eW4TLVtgfGHz1cDe+98zBiXXMKsnBv71tse3raOsfxa2P7IAvILG7tR9OIXDPh86yfR1efwCf/s12nBoYAwB87nc78Pzn18ORhqDP7X/ag1cOdwEAPvPbbXj9K2815QA2WT994TD+uD04kOvOP+/DqjklOHOu/cH0v+xum3h/33tyADXFObjh/Hrb17H35AC+/sReAMDu1n4U57lxx9VnTPp+dzRr+yssri5My3skUTIWVSuBhSh9FiKp8UCX04G55Xk4GjEN4ljXcNpO2s1UVh6l1Ie+74yxz4bQ934Av1GvlFJKAL9EMPC02sS1xXMrguMnAeAPUsqtNj62rdbO0f5CbT/Rm5Z1/PNoj+bypoOdaVnHrta+iaACALx6pAsDY17b19E5OD4RVACA1r5RzWW7SCnxWuhDJwB4/RL/OGqYgGS515XHfW5/e1rWof7/X4l4ftK5jpcb0/M7s6e1fyKoAAQbg/WP2v87MzzumwgqAEDfiBd7Tw7EuIV1Xmk8/ZqQEnjtSHp+Z15u1L420/VaVV+brzSmZx3/PNqjOVv16uEuyHgdvyxwuGNoIqgABD/cnugZsX0d/oD2/XzMG8C2NH0GUN/PNh3oSMs6Nh/UPu6v/nE8La+RnS19mssvmvSZaJdyv6tmF5tyv0RWUrMgD3fEDywYaajQBvj3pekzwkxmZWAhnFtl+AlCCFEPoBrBrIaXpJTRPoluD32vNXV1UQgh1gP479DFDgBRG0/GMSfO19mTW6k51s4t0VzedqIvLX9E2yM+ZAHA0c6htPR7GBj1aS5LCWw/0Wf7OnoMGtMc77b/g2fPsAfDHu3PIdU39Mlq69e+RtIVBFPXkY6fCwCc7BvVXu4fw6jH/t8Zo/9/Opoiqe8h6VrHqMevOWgEgBNpGmuljtNK12tVDYo2TZF1DI770DtifxDM6HV54JT9H3DbB8Y0gRYgfa+RU8r7arqCgm192nUcah/CgVOJjbczk9cX0Fw+3jOCcd/k39/Vxo3sr0DTQUOltiQ5sRNt+gywlXXaQJoaaKPJszKwEP5rFS2n7pyIf2+JcT99oe+WF7oLIc4A8EcES0TGALxXSplS2FxK2RLrC8ApE5eesrVKqmHn4DhO9us/oFtNPSgISOBgGv6YG2UnbD1u/wFs77B+HcfTcEbL6CxaojOEzRQISN1rZF/bQFqCT+o6TvSMIBCwPxinBhaARP/Ymut4j/4x07EO9WAeSM+caqPHTMfBmscXQLPy+5uOs+KA/vXQNTSOwTRkghn/bOx/jRiNOUvHwav6+gDS8xoZ8/rRrTRR29PaH2Vva7X1699X/7Sj1fZ1qAEff0CiqWtyP5u+EY8uqLeaEyFoGlAzDVr7RnUnUhI5Kbp6jjawsOdkP3z+QJS9KRVWBhbCeW3RCinfEvHvN2PcTzj/xdKjXSHEfADPIjiFwg/gA1LKl6x8zKmgvjwPpUqTxG1pOJA2OijY12b/GYsBgxTurcd7DPa0Vq9BxkI6znoafchMR8ZC97AHXr/2j4bXL9PyGlEzFsZ9AXQMjtu+DqMA4NEu+382Rmef0zEfumNA/zNIx5lxowPVdBysNfeOQI13tfaO2v4hyh+QhkHRdARbjF4P6fjZGGYstNkfWGjp1R9EpyPQYpRt1DE4jo5Be09ySCl17+8A8OcdJ20PHquBBWDyf3sjS8UAINvlwJKa9DTaJUpGfUWebpsasNY1bzRoWaM2yR3zBgwnTFDqrAwshHsrvEe9QgRb7L4zdNEH4NUY9zMv9N2ygmohRC2A5xAst5AAPiqlfMKqx5tKhBC6rIV0pP4bHRTsT8NBo1Ft+I4TfbZ/GO8xGIGTjowFow+eTd0j8PjsfT7UNNmwHTa/Vr3+ALqG9K/VdHwYN8xY6ExDxoLB/33KZCykYR3HDM4qnugZsb3EzOi14AtInOyz92DtZN+o4ftFWrJJDF4P6QhwGP1+qCMA7WAYWEjD35lor0m7yyF6hj0YN3itnuwfw5tN9p5gMPrMMdlsQbUM4ozaIrjT0BCaKFl5WS7UKk3D433OMGqFW5afhbll2iCF2s+EJsfKd5QnEfy5XiOE+JBy3RcRbO4oATwnpYwVLgqPrTxo+goBCCEqEJxc0RDa9Bkp5UNWPNZUtVapsdvebG/GQiAgDc9MpKOpilEpxLDHb3uaqtFs3RNp+ABs9Jj+gLT9QNooPRUAdigflKzWOTiui4oD9n8Y9wekYbDF7kwBKSWOGxxIH0tD5oTRWc/j3fYf0BsdvI54/Og0CEhZuo4ov6NGpStpWYfN72e9wx7DwHF6Mif0z0lT97DtPVKae/X/95aeUc04QjucGjB+f99rczmEUbZC2J92nLRxJdBl6AGTz1jYqWQspGvEKVEqGpTJSkc7tb8Pib5rqQ1L1YAbTY6VgYWHcXrk4gNCiH8KIX4thNiG080RAeCuaHcQymy4FsHXyz/MXqAQohjA3wCE5xp+RUr5c7MfZ6pTMxb2tg6Y0iQoUT0j+jR3IFhzanf6odq8MczuTtlGzRube0ds/8AXLU240eZyCKOz0YD9QbBoHzztDvp0Do4bpsraHVjoHfFicFz/O3Osc9j2A3qjwMLQuA9dQ/rfJSsdi3IgbfdrJNprwe4D6WhnlezOaon6c7E50DIw5jV8TUoJHLI5a6HFILDg8Qeivt9aZapkLBhlgYU9vbvN1kw9o7/1kwksSCl1Z2bXsHEjTSNqA8d4n3eMSiEA/eteDbjR5FgWWJBSjgD4AIAhBDMX1oUur8bpDJVfSimfj3E3VwCoC/37OTPXJ4TIA/AXAGeGNn1bSvldMx9julg1p1jzC+jxB2zNFjA6IACCBwVGZ1SsFG205JYmew9gjTIWvH4Z9cy9VaIFFuzusxDtg2dzzyi6bTwTHO21anfGwskor4OjnUO2HtBHOxs97PGj0+a+E+0G5VSA/WUq0R7P7gP6aGUgdvcUiBZA4M9Fz+6GxUalEID9P5topW57Tk6djIX+US9ePGTfSF9vQB/EONo1nHJZ5qmBMd17MidC0HQyv0IJLKgZC2qPBcNiCH2mzqH2wbRM1JqpLC2uklK+jmBA4XEEmy+K0NdxBMshPhHnLr4e+n5KSmlaxoIQIgvB6Q8XhDb9WEp5u1n3P90U5bixqEqbYmRnnwWj/gphdvdZMEqVBeyfDBFtBJqdZz29/kDUQIbtGQsxAip2lkNE+wBsd2PNaGfWBsd8uu7qVop1AGJ39kS0n42dZ8ZHPL7oAY4MPaCPnrFg9/Nh/Hgdg+O2fqiM9Xrcb+PISZ8/MGUysKKto7lnFP02jgONFrANs3M6hN8gi9PjC6A5SjAoHjXduyjHhfpyfUM8oqlKVwrRpc2MlAkWQ6yoK4IjIubgD0jstTmIOZNZ3rVFStkopXwvgtMdZgEol1LOl1LeJeOfWntr6HYNcfZL1m8BXBr69wsAfiGEWBHjK9pkixlj7RxtOYSdqf+x0i7t7rNgNBUCCI62iXbgYgWjqRCAvQcnJ/tGdV3lwxptTtmNdSbJ1sDCVMlYiJGye9TGBo6xzvbaeUAvpXGfFsDeM9KxxsHZGXwa9fij/s5MlTP0XUPjGDIoo7F7HYC9WRyxfi/szFho6x+LWlpn9/tZrEy8vW32feBvUzLjyvK109Kf29du22vWqNQNSP1vr5ruvXpOCUS0XHGiKahByVgYHItd6hjt5Z2X5cLiau00FLv7dc1ktrWDlVIGpJTtUsqEj1illMOhL7Nzat8d8e9LAOwCsDvG17MmP/6Us3ZuieaynRkL0dLLAWCfzSO4Bsaif2iwM2vBaCoEYO9BQawP20e7hm3t9xAr+GTnazVacKlvxBs128UKsTr7q+mBVpoqgYUeg3GkE+uw8YA+1qQDOw/WYq3DzgkVXn/sM6x2Tu2I+bOx8TUS6/fiwKlB23420cogAPszFmIF7e08uaAGOD547ly4Ik5tjvsC+NueU7asxRul5OFwiu/vasaC2sCOaKqrLclFlkt72Br5eSeZt87VSjmEOoqVUsc5MwRA38CxtW8UHTY1cIqWOgzYXwoRLWMBALYct2/clFGPBcDeRmOxAgseXwDNNh0oRZstHrazuc+2Jp+xPgDb+WE8VsaCnQf0sQ7W7MyciPUeYudBY8wDelszJ6KvY8Tjt62hZXNP7IazdgVKpZQxfy/szFiI9bPpGfbYNj3EqHFjmJ2TQ8a8/pjlW3tsnAyhBmzPqC3CxYsrNdvsKoeI9ntzuD35wEIgILFbzVjgRAiaZpwOgfnl2qyFWO/rsRJy1P4iHDlpnowMLEgpRZJf9eles9UWVRWgMNul2bbdptSgWBkLrX321ViOef2GM6zDttmUsTDu82M4Ss3vVMlYAOxr4Ng74o3ZjXtw3IejNo03jJU5YeeH8Vi1wEemTCmEfZkTsd5DmrrsO0Mf66Cxe9hjWxp1vP4WdgUo4wW5YgVizNQ74sVgjGw0OwMc8X42B2zK0ouVSWLnmNZYv7sAsMemjAV/QOrWMqs4F9esqdVse/Vwly2NaaNlYKWSsXC0a1g3vYeNG2k6ijUZQv2Nida8EdBn7BzvHol6Qo+Sk5GBBdJzOITuD41dKebxPljssylrIdpEiLC9JwdsafLVFyOQcsLGD3wtPbGbRNnVwFFNTxUCqCzM1myz47UqpYwdWLA1YyH6Ouw6oB8Y80Yt2QGCgalUO5gnK9Z7yNC4fQ0tY/VYAOzLnohXYmDXazVuYMGm7Jp467CrTKVn2KMLcKjvZXb1WYiVsTA45ov5d8hMsd7LgGCq84jH+oBc15B+hO+skhy8fXk18rKcE9sCEnhq10nL1+MzmAoBBAP6yWboqWUQNUU5qC7KSXVpRGkTczJEEp+Nl9QUIlspq9hlY3bUTMbAAk3Q91mw5wx9rDRmwL5yiIFR/YeXyM6xvoB+DrQVYh2sDY77ok6MMJuasaC+CduVsaCWH1QVZuMspXTHjuyaeJkTdqW6j3r8U+KAPt7/1+uXaI1RsmGmWAEfwMYD2DiBA7teI3EPpNO0DjU11a6MhXg/f7saa6rPR5bTgQ1Kqv0B2wILsX837Qq2nBrQrmN2aa7m725AAvttyOJQy8vcToGK/GzkZblw6fJqzXV/2mFHYMH4IGnE40dbkmWqu5TPLavnsL8CTU9GkyGiilEK4XY6cEZtkWabGoCj1DCwQBPUwMKuln7LD1C8/gC6h7WBhZV12j966cpYyMtyYtks7RuPHQ0c46Vj2XXWUw0svGVBueby4Q57PgCfVAILNcW5utfqDhsyFuJNBbGrFCLeSDSvX6Y8kiwZ6kFhXUkuinPdmm12jZyMF5xssuFAemjcp0uRrijQdpW362DN6GcTya6eAuo61PnhdvxcjNah/lxaekdtCcapgYW55Xm6D7cHbBo52RLnNWDX3xm1f878inwsUA4e9tkwCk5dR01xDhyhCMc1a+s01+1s7rM8WBnr9ZjsZIgdSn8F9feQaLpQSyFOdI9MNDpNNpdXzdJWA3CUGgYWaMIaZeTkqNdv+dmTzsFxXfbSxiXaMzh2dYVWu/oX5bixbp72ObEjsNATZdRkmB0HBf0GUw4uWVqluXy4Y8iWsoxTyoH0rKIcrFH+IBxsH7S8TEU9s6ay62y0OhKtONeN0jztAb0d5RDqWe/5Ffm6NMVjNvV7iFdOZUfGgnogJgRwwcIKZR/rXyMDY15dc8YNynuqXQeN6s9ffW/vHLRn5KQawLh4kXYdvkDsBrFmUQML9eX5WFKjDSw0dgxZHuTw+AK6LJ9yZbRiut7PZhXnYIVycmFPq/WfAdSMhVnFp4NxFy6s0I2efMLirAVflB4LQHLZgh5fAPuVz1Dq30+i6UIdOekLyIlG4urH0XjDVNXfgx3N/baVGs9kDCzQhLL8LNSX52m2WZ1irh4QZDkdOH+B9sP44Y6hmCnoZlEnQhTlunCmQWDB6gkE8TMWrP/A16zU3zoEsH6xNrAw7PHb8mHc6EzSytnFcEbky/oDErstro871a89G53j1r59tg2MYdxnfQ8O9QNwbUmuQd2h/QfSc8vzdH/07ZpQob6PFOVoG9HakXKv9leoLc7Vzcq2o2miGkRxCOCiRdr3VDuCk2Nevy7b6OLFlbpyCDuCHOpzsmZuia5ZsR3vq+rrsKEyH0trtK8Rjy9g+ev1VP8Y1D9j5ysZaXZl16jv77OKc3VZHHvSkLFQW3y6B4Hb6cBVq2Zprn9iR6ulByHRSiGA5AILB04NwKMEqtTADdF0UZKXpQvyRfu8I2KNhYA+c6draFz3N4uSx8ACaahjJ63us6AeEFQVZWO5Un7g8QdwJMXZzckYUJpqFee6sa6+TLOtf9Rr+QSCeD0UbAksKB8qZxXnYk5ZLgqUD+N2NHBUSxBmFecgL8ulO2jb0Wzta1U9w3em8rsiJdAcp+GlGdS+BXUlOcnVHZpEPQtcX56nz1hIU2DhnPna31tbAgvKY8wrz8PcMm2g1o7fXfU5n12ah4VV2tdH15D1EyqMnvMl1YWoLdaWZcRreDlZUkpdYKG+PB9zlSC6HaVM6gfg+vJ8lOZnobpI28DR6kxBtXFjYbZL1yXdtowFNSOtOAdn1GrXcqh90PKTC7p1KOVD16zRlkMc7Rq2NJMiWvNGILm/u2rdeENlvq5kjWg6iXYCQyZZDFFfnqc7CbGLfRYmjYEF0rC7dl2tja4uykFxnltXE2xHA0ddxkJOcB2zirXdk7c0WXsAG6sxH2DPWU/1jOacslwIIbBAOUCxo4GjGlioCf089M1G+yxeh/aD54LKAn36sA0/G6OUXd0IJhsCceqZ5nnl+ZhfaX9gwesP6FL/z52vnH21YeSkLs29Ih/zlIPXk32jlh8gGa1jdmmeLlPA6gNH9WC+uigb+dku3XNiddCne9ijG7U33+BnY/XzEQhIw/IhALpyCKtHTqoZabPL8jC3TPu7a1fPGF3guCQXy5WMBa9f4lCSfQWSpU6nqFX+7p85twRzyrSfS/60o9Wy9cQrhUj0/Wyn0l9hDfsr0DSnHzlp/HknXimEEPppeDvYZ2HSGFggDfUs7NGuYUtnu6pnGmtCI5DUpol29FnQl0IEo/pG5RBW6lV6LKhvonac9VQDC+Ezr4t0gQVrP+xJqa99rg0FnfT1cX2WruWUEgSrKc7Rn/W04Wdj9HzYXYIw6vHrgoLzDDIWWvtGMea1tjykw2Cm/LkN2oyFQRtGTqqBlvnl+ZinHKwFpD7jxGzqz76hIh85bufEe2uY1UEwNWsm/NqoV14jVve/UH8uWU4Hakty9QfSFv/utg+OYVT5XQg/J8uUcgjrMxb0kxjUQEv7wLjlv7tjXr/u93JWcQ6Kc926bB+rPwPoMye0QQQhBK5Zrc1a+PPOk/BbVBoZqxSif9SLzqHYDWvD1IwFNTOFaLqZX6H9HHoklAmm67EQL7IAYLUSaNvVzJGTk8XAAmksqSnU1Y5bGcFT08urQimh6hmL/TZ0ylanQoRTpOxu4KhmLKgH0B2D45Y3KowWWFBTqq3OWBgY9ek+jIcPkNYqz0tb/1jcJn6ToWYs1BTlYF4aUt31PRb0pRDtA9Y2xTOq0Z9blof68nzddqvPSBv1aVk+qwhZTu37mNW1/MeUlP76inwU57l1acdWr0Of9h98jdpdlqGuI3wQPb/c3gN69ecypywXTofQHUhb3VNADfjkup0TJRBLlMDCwXZr/94ZBRbU1wdgfS8Oo/frcIbgijr7+ix4/QFdgHJWSY5uv2vW1GoudwyO4x9Huy1ZU7wGnon87R0a9+Gwkr2mnqElmm7Uk22nSyGSpwbadrf2W95HbaZjYIE03E4HVtWVaLZZmWLeYVAKAQDLZ2k/aO07OWB5KvPAqL7HAgCcNU+fxRGvXGEy1IwFNaIKWP+BT+2xMCdKxsKhdmsnQxiNVgy/RhZUFugasFn5WjUqyZirHCRZ/XORUhr0WAgeFKjReSsnMqjBguqi4Lz3/GyX7sy41ZMh2vv1wUmX06FLW1YPMM00OOZFl3IGMXxAr0u5t/A1IqXUZwqEgk7pPpAOBxbUdRyzOdAysY4ytRRi2NL3MqMSlXBzMTWw0NwzamlgUPf+XpqH/GwXKgq0vR6sDvqo2VcF2S4U5gT/7qp9FvZY2Jy3fWBMd7ZT7QUCAIuqC3U9oP603ZpyiFgZC0BigYXdLf2a/5fLIXTZoETTzQIlsNA5OI7BMX1vsgQSFnQn7obGfZb3UZvpGFggHX3tunVn6NWMhZqJwIL2Q0XviDfurPrJ0mUshAILy2YVIdft1FxnZdZC77B2HbUluagqVD/wWfdh3B/QH7zOiZKx0D+qH21nJvVgvqIgG1mu4NuWw6Gvj9tuUQPHEY9P19yzptgoY8Hag6SeYQ/GlRr92pJc5LidmF2q/SBs5R9Ho/4KYboJFRanukcrp1KzJ6z82agHYEKc/p2xM1OgZ9iDQeV1Gs4QmKcGwWzOFAj/PNTXR+fgOIYtPIhWAxfh50EtYxr26NPyzaQGOCLLlxZWFWim3ADAQQvLIYwyFgCD4JPF72dq+UFNRF8DdTLE/rZBy8oO1ABHjtuBEmWEb9i1a7VZC8/sOWVJyYjaY0HNwEoksLBTyTZdNqsIOcpnGaLpZk5ZHpS3SxztHNYFBxNRVZSj66O2g+UQk8LAAukYNXC0KjXIaCoEEPygo04g2Ndm7S+7UfNGIJjFsXqONtBhaWBByVgoy3fbetbz1MAYvMqHmvDB0ezSPGS7kv+Akyr9KDLtHwBdnwWLMhbUAAcQKoVQfi7NvaOWptGpz4dDYCLo1KDUHVo5clI9OI4MsKg19Fb3e1B7X4QzWuxch5rBUVucO/EBXn+wZt3vrvp/dDsF6kIHjboAh4U9FowyOMLpq3MMsmusLJdRD47Dr4tZxblwO4Wyr30/m/qK0z+PbJdT1yflgEXlf+M+P9oHte8js0tD2TVqFofFWS2x3t/VjIVRrx/HLAqW6srLinOjjqq7enWt5vU7OO7DpgMdpq/Jq0yFUIP6je3xn4tdSmCB/RVoJsh2OScC92FGJ1LijZsMU38v1L4klBwGFkhHHTk5OO6zZNzjiMenO7sWPihwOASWKeUQ+y3ulN2va954OrCxbp62GdzW4z2WrGHM68eI0j+hNC/L1kZj6pnMvCznxPQDp0Po6vmtbOCo62sQJ7Cwu7XfkrNaamZNYU4w7V896+nxBXT7mknNJKkpyoErdCbLzlGP6usv8iDe7kaSHcrzPRFYsPGAPlq6PQBdA0crmyaqz/XcsryJM+H6CRVj8Map406VOkLSEZHBkeN26tLMrfrZBEdNKpMYQhkLTofAnFL1QNq+n43agGypkqJuVcbCyT592v/sUNmQ3c1o2/qiBxYqC7N1Yzj3WtTAURfgMOivMHFdcS7OVcbZWjEdQv07tlT5PJTIyMmdyplX9legmUL3OaNzWDduMrGwgv73Qg3IUXIYWCCd6qIc3aglK2rXjUobqiPqs+2eDKGmuhdFNF1T+yzsbOm3ZGycmq0AAGX5WbbWR6v1t8H6/dNv0frJEGnMWFCya0Y8fkvGkkVLt68syEZelja11MoP4/rGjacP0NS6QytLIdQzzJGvTzsDHIA+6BM+GDGaPmBVDb2a9h/5fKgHayd6rBt9GevgVQ1w+AMSrb3WTKhQX3t1pbnIdp3+PdH1WbDoNdI15NH1KojMFLDrQNrnD+jO/s+v0D72UnUyhEWB9BZl1GRxrnsiO8/OzDjA6P1dG3BaYVOfhTaDEb6xXLtGOx1i04FO3YmJyVJLIZYpI0m7hsbRZ/B5IaxzcFwXiFYD8UTTlXqC60jXcGrdG6HvY7avbQDjPmsbpM9kDCyQobXKgbQVtevqwVpBtktT/qA2SdrfZl1gQUoZtRQC0I/h9PgClnSpVptCOkRwHfqZ69YdrOlmnCtn9dTAQiJnTlKlHjSqH/gqCrJ1vQWsCIKpH4DDmRNCCF2KuZVnPWMFFtQzoMc6rTmQ9vgCunVEHrTOVwIcPcMe9I+Y+6E7ki7oU2zcY2Fw3GdZ01U10KLJWFB+d8e8+g701q3j9GMbTqiw6MBRzRJQfxZq0MeqWn71+chyOjTvIfoGjtY8H8HsEO3voi5jQTdy0pqGxdH6KwDQZca19I5Y1tcAAE4NqAf02sCx2mfBqoyFk+oI3+LoGQsAcPmKWZqeBx5/AM/saTN1TWo20cKqAriUwvJYQX31rGtelhMLlIMxoulK18vJqPQzwZSFlUophNcvLQvsZgIGFsiQOsrPmowF4/4KYWrGwrHuYYx4rGnyNer167owR34IL85z6w6ot1nQZ6FPOQArycuCw6E/eG3pHY07jipV0UZNhtk5cjJexgKgL93ZYUUQTA0sRGTW2Nmc76SaOhyRsquOYBr2+C05gG3pHYF6rBF55ndOaZ6uEZ2Vnf/VzKeqwuBzUluir6G3qpZfV8cfcSBdXZgz0XD09P7WvEbUD1fqwatdAUq1Fl5NW1XLVNRAhFnUEpW55drXpjrVxapAi5rBUZTjQqnSHFCdDDEw5rOkrErNWIgMLKivD69f6oKIZtKVQpRog8Rn1OkzFqwItqhNJNV1qIrz3NiwpFKz7YkdJ01dkxrQyXY7dAdTsf727mzRnvhYWVese18mmq7UzztNXcMIpPjeUJTj1t2f2viUEsfAAhlSD9YOtg8ajnOZjGjp5WFLago1nV+lBA5YVHdqlMYYmbEAAOvqtc/JlibzD2DVM6rhD59qR3dfQOoOus2iDyxoP2QtqtYerHQMjlt2RtpoxKNK18DRgsY70TIWAHvH+KnjN+siPgDXFOUgx619S7eiN4p6UFyWn6UJwmW5HJhTqo56tCb4NDTu06W6h382TofQNXiy4gA22KhQ+3sbeUbeKDBoxRn6QEAa9L7QPq5dQbBjMXpwAPoMBqsCPur9qo+rn+piT4BjfmWBrrFYXUmubnyuFWfNmnuUiT8RGWnl+Vm6pslWlUOMefVTOOJlLAyM+XQZF2aI1eshmmvXasshXj/abdjkN1VqxoLL4dA3cIwVWFD+DrK/As0kavbNqNev+5wmEu6yAKxRyiHU/iSUOAYWyNAZtUWas31SArtazP1FU880ViuBhRy3U1dHZVWfhYFRfSZEQY72A5ZaDrH1RK/pZ0/0EyGCTRNL89y6D51WfQjW9VhQDpznlefrUzI7zf8APDDm1R00Gn3gUwMLjR1D1gfBItahnvW0coyfUffyMIdD6MshLKhdj9VfIUzXZ8GiCRXqzwWApuHbfBsOYI0bFWoDK3Z0228fHMOoMvZOnRRiRxBMSoljSkBLfT2ogYYOi0ZO6ho3VqjvZdrLXUPWrEPX+8Lgd0YIoctasCKQHitjwai0y6q/M0a/u2rguK4kVzf2ca/JJYhGAY7aOBkLAHDJ0ipNEEZK4M87zctaUDMWXE6RcH8jKaXujKtaR040nVUVZiNf6W+lZuwlOBQCgD7wxoyF1DGwQIZy3E4sVxonbT9h7hn6eKUQgH19FgaUA9HCHJcubXBdvbYTdOfguO7sz2TpMxaCgQUh9GdfrRgXNzzu0519VT9oup0O3YGBFeUQRmd/1OATYBwE221yEExNSY7MrlEPGpu6rettoJY2qB+A1XQ+K0ZOxho1GaYGOI5a1JxPfQ8pzHEhL+v0h30106fJgoMktcyjtkTbqBCwp0mgevCa63bquurrJlRYsI7eEa+uEa4aWJhrMHLSjudEfT2o76mANUEfNYND/f0I0wcWzP97p++xEDvYYtVYUvXsYkG2S5clKITQZS3saTX3OTH6O5NIxkKO24nLVtRotj2x07zpEF4lsOB2OLAgwcBCc8+orqxSHZlNNJ0JIXT9nCbTsFodOXmk0/wTVJmCgQWKyuo+C/FKIQCDyRBWBRZiNG4Mqy/Pmxi7GLb1hLljJ3uHjTMWAKP6aPM/ABulmaofPAFgoZJJkshM7WSpHzzL8rOQ43bq9stxO3UBqO0mlkP4/AF0DkbPrlF/LoNjPt2HOjO0D+jHxNUqY9HsGPWopvGrB2uAvoGjVV3/1fcQNfCknqFWU9LNcDzGqMkwXcq9FQevyjrqK/J16fZ2TKhQy17cTqEp2QGCv7OzlJ+V2dkkUkrda1X92eS4nbq/O9YEOLTPiVqiEmb1yMkxr77vihpc0b1GLMpYUPsaGJW5AfrJEGZnLKhZYIXZLhQa/P03ok6H2NM6YFqQXe2h5HQILKrSBp5a+0YNM2x2KGdby/OzdL+DRNOdmpE35tX+ziTTUWTZLIMTVBZNoZnpGFigqNYqo/y2N/eZ+iE0XikEACyv1X/QsqJLtdpjoShX/8FCCIEz51nbZ6HXoHljmB1nPdWzdVWF2YYH82qfhcMW1PKfUj94Grw+wtRyCDODYJ1D47pmhZFntGpLcnXZLVYcOKofgPOynLou//qMBet7LBgdJBkFOKzI4lDfQ9TXiD5jwfx1qBkLah2/0TqsaJqoq+M3+LmoQbBRr18XNJssdfTmnLI8uJz6jxq6caAmPyedQ+MY9mhLQ9THBIyCLeauY9zn1431VD8Qh6mTIQ53DJk61lgdPwgER4FGUrNarCqFSKQxL2DQwNHkckh1IsSskvjZCmHnLyhHZaE2K+iJHZPPWggEpO5vjtsp0FCZD7X/olEfnV0G/RXUICPRdGcUxI+UzEs+x+3EUmWkK/sspIaBBYpK7SnQM+wxLU1USmlwtlFfCrFslvaD1ojHb0njM33Ggstwv7OUwMJWkydD6HssnD5w1H3gs+DgNd5EiDBdEykbMhbUs/OR1ihBsB0mBsHUdWQ5HZpMErfToTsbZMVrVG3cWFuSq/uwqKZYN/eOmnpg4g9I3ThSdURdcB3abSMWTahQ05jVcip1HYNj5o+cVA/oEzl4DZYLmJvVoqvjN1iH4YQKk99H4k2ECNMFfUzOJlH7K2S5HLosCcD6Bo7NPfopKtEyFhZXa//e+QJyUum9KjUjrTTPrWvWqMuMsyCrBdD/7kYNLCgnFzoHx9Fh4rSMtj515GXiZ/adDoGrV9Vqtj2x4+Skny91QlX4sXLcTl2GidHfXrU+XE3zJpoJ1BMpk6WWC6kjWykxDCxQVLNLc1FRoP2gbtaZ4P5RL8aVAx6jjIWqwhzdGvZb0ClbrQlWzwSHrZunn5Zh5gFCtB4LgPGoOLM/8OkaNyYYWGjtGzV9FGgiEyHC1szR/ly6hsYNz86lQh01WV2crTugt6NMRR01adRgTD2Y9AekqTXjJ/tG4fVrX3Pq6EDAeEKFFf0eOgZjl1PNKs4xGDlp7s9GvT+j52N2aa7u7InZrxFdKYRB5oTxhAqTn48u9fkw/vCnK1MxfR1KyU5ZHhwG4/aMDqTNpGZwVBRkR021L85164KUZpZDqO/vRmVu6utjaNz8YBxgMDo3ygH9/PJ8XZO2vSZmLagZC7EC2EauXasNLJzoGZl0KZ4voA8Gu0NZP7oGjkrGgs8f0KVwcyIEzUTqZAhVMlMhAGCVbjJEX5IrIoCBBYpBCKErh9hmUgNHNYUZOD1/XqVmLexrMz89SZexECWwsKKuGFkRab1SAjtMTLuP1WNB/cA37NF3s54s9UO1UXMzIPiGrh4oHekw98BRnyob/UxSfXmernu4WUGwWI0bw3QHaxZkk6iBklqDQEtxrhsVBdo+IGaWQ6gHoYXZLs1rNMzhELoDSiv6LKjBJzU46XI6NOP0AHPPjPePenUHXUYZC9kup2aCB2DuAb3PH9D97kY7m6ObUGFydo3aqFPttzGxDoszFnQlKlEyJ9SpLmaXZKgZHEYlKpHUBo5mBtLVjAV1egkQDFiqwTgr3s9ODaiZAsZ//x0Ooeu1tMfE2me110MyGQsAsLKuWBfQfWL75MohjDIWXKGfidrAUc1YaOwY0tWacyIEzUTxSiGSpZbUnuwf0528oPgYWKCYdH0WTDpYU8sgyvOzdCm6YWqfBSsyFnQ9FqKcUcpxO7GiTrueLSaWQ/QopRClEQdthh/4LEjbjRQtsJDjduoO2MweOalr7hWjx4IQQvdHYYdJ0eZ4B6+APRkLasputJFoav22mQf0ulGTFXlRa3fVA1v1AMsMifRpUQ8ozSxTUe/LIaD7vQjTB5/MW8fJvjGDTJJoB9LWBcGklPpeD1EzFvQjJ83MeorXuDFMDbQEn0vzyofUjIV4H4bVPgsHTZwMoR81qX+tOh1Ct92a97PEM9JW1KkNHM17TtR1JDIRIpIQAtes0WYtPLWrTdd8MRk+v3EpBABdA0e1x4J6lnVOWa5h8JdousvPdhmWUIcl21ZkQWWBLjtqF/ssJI2BBYpprZJivr9tAKNKQ6xUqGeBq2IcNKod//eZ3LwJ0I+bLMo17rEA6MdObjMpsDDq8evONESWQhh+4DPx4ERKfdp8tFIIQJ+SaXafhUSbe4VZFlgYiL8Otc+AFSPaEimFAKwdOam+PtS+H5HUAyizMxYCAak7m2D0IUMN+qij/yZD/T/NLs2LGiC1Mvik1uEX5RhnkgDW9hRoHxjHqFf79yFaxoLRe4taRjEZ6gF9tECL+nPxB6Su2eLk1qFOhIgdWNCPnLQuY2F2qfF7iNXlMmNefbZdtPczQN9nYY+JkyGMetck6xplOkT3sAevHO5KeU2GpRCO4PuKWoZ4vHsYYxG/czuVUcvMVqCZLFojXCD5wILTIXRBTLVfCcXHwALFtGp2saYLsS8gTfmjrjZfihV1VAMLpwbGTK/5HBhNrMcCoG9quf1E76TOToSpjRsBoCxPe3Bg5Qe+zsFxXd+LWIEFXQNHk8ZsAcG63kGl70WsM1qAPrCwp7XflMaFaoAjkYyF9oFxzYc9M6hTIaLVAqsH9GY2f9PVrRv0Ezi9Du3rQ02Rn6zeEY/uLL3Ra0R9PszMWFAPhGM9H1ZOddFPhNCPmgzTTagwMWNBDbTkuB2ojlLiluN26sp5zPrZGI2ajNYwsSQvS9es18wsDvU1Eq2ZZZjambytfwz9Jo2vVTMWomXXqK9jswOlasYiEPv9/Qxl5GRL7yj6DP5eJsvo70yyGQtA8PdttdIg8ckdJ1Nel1HGQrgUQv27G5DaTDI1Y4GBBZrJzG7gqH6OVAN1FB8DCxRTfrYLS5QPOttN6LMQb0xcpPkV+bqzgPvbzM1a0GUsxJhjrU6GGPb4cbB98meV1GCJ0yFQmBOnY7eJByfqAUaWy4GqwugBH/UDzhETAwtq+QEQv/ZV/YMw7gvggAlpxOqHYKMPwEYBGDMP2AbGvBhU5pVHm0veUGldKYRu1GSUs8CA/oD+RPeIKQG4MDWTRAjoGr0C+gNpM0dfqqUhsdLc1ewOKw/oY61DDXD0DHswaFIDWqMGkkYNE8N0PxuTAgvBsgpl1GSM16pV40CHx32612m8jIWGynxdyZsZ72OjHj+6hrR/YxLNWDC7FEIN1hZku2L+zV1UXaDpbQSYk7molpcByfdYCFOzFv6291TK2Z2GgYVQxkJBtksXkAtnC4559Z9F2LiRZrLYpWXJj1hVGzjuajFvwlimYGCB4rKiz0IypRAup0NXd2p5YCFGxkJlYbbuAN+MsZNqxkJpnlv3odzKJoHqGMHZpbkxDwoWKaPRmrqHMe4z5yy9GlgoyXMjV6l9U5XkZenOBk62HEJKmdBYtPxsl+6g1swz0mq2AhD9DJ/6h7ZryKPrIZIKKaXuzKV6kBpJ/Vn4AlKXij0ZHUpwsqIge6JzeiS1xn9wzIdek84Aq4GF2AevSi1//6hpvy9qeUesg1ejCRVmvVaTCbQABv0vTCqFUDM4sl2OmMFrq7JJjBpBxnqNAMHu/2q3czMC1619+v9TXZTAghpoMbt5YzITf4Dgc6KWiJiROalOhChN4O9MNFetnqXJ7hz2+PH3/e0p3ZdRKYQrItikNnA8HArq7z3ZD39E40eHgK4nFNFMEm8yRLLUkZN9I17TJwXNdAwsUFxrlYi3GYGFZEohAGBZjbV9FtRUUzU1VqVmLZgRWIg1ajJM94HPzIyFbu1BX6wyCABYoKSgBaR5NdLJNG6MpOuzMMnXat9IYmNRAYP0YRNT7tUGYxUF2ch2GX8AnluWN9HoK8yMrIWOwXFdD5BYB0ml+Vm6SR1mZk+owclo7yG1JTlwWfB8AMYlCNGoB69S6mveU6WfPBB9HUYTKsz64KT284gbWND1vzDp52IQ8ImZOWFRwFZ9P6wtzkGOO/6BqzoFwYyGxc092tdaeX4W8rKM/86p72WdJjfWVPsaJFJ+oB4gm9HAUc1YSDVbAQhOtbpgYYVm25M7UpsOYTgVIuL1qzZwDAcWdiiN5hZXF0b9GRPNBLFKIZLtsQAEM0HLlf5EZvXryhQMLFBcZyoH0acGxgzPoCYjkRF+kdTJEPtMzFgIBKQuzTxWxgKgDyxsaZp8YKFPCW4YBxa0H/i6hsYxPG7OB75kGjcCQGGOW/eBsLHDnEZjiWQJGFmjZNdM9g+CUbp9tLGoujF+Jka51VGTdTFmrWe5HJijnIk0Y+SkehCd445dKgMY9XswL7CgK1GJ8h7icjoMepNMfh39I15d5kOsHgtFOW6UKoEWM1LMx31+XbPBeAf0/397bx4myVWdeb8nM2tfunrf1Wp1t9C+NEJIQmIHs4MZs5hvBssYDJ7xig1eZmxjPMbGNsZ4DB5jxgg+4xmvLDZ4ABtjS+wgoX3rllrdXb13de175Z0/IqIr8tyIyNizuvL9PU88lVkZGXEz7s3Ie8495z1FabVYBn3SiIWcHAuWcGOTEo9FpZhZDp+Y+cB6dT6PyhBWRYiI+3vRqV1p7u9aZyGPkpM6YiFMtyYuOh3iq4+etkpIx0FXJalWpEEzxdY3cn5371NCc9RXIKud7QHV0jxS+BUgIlb60L2sDJEIOhZIU3av77PEDLNELSzVDU5PNC8T50ev4Bw4NZlbGPHk/CJ0ClWUeCMA3LCrsTLE8OhMoC5AEqyIhT67DUVO+HSpyWaOBcCe4BzISWfhuKVrEG8lSUcsPHFmKpPIl3YsrO/rClX9L1KczxZujL4eRegs6M+za130KjAQVBkiPx0O7ViISqfShqN2kqRBr65XKxJantXjIiviKHs7joxMQy9wNjPoLUM6B3G+pbqxDPJmQoU64uXkeD4r47p/m6Uf6Kouh0emc8mrjVuZQqMdC4+dnEQ9YBU7CXErQgCOsKaOAMr3fpb8/q4rQzxxZiqzUz3PiAUA+IErN6PL9/uwWDf4/P3HEx9nSfW1jrjat9m+vy8u1S3hxmtUWDchq41atWJF8mZFO+S0w45EQ8cCaUqlIpbBlkXA8ezknDUR3tQkFeKyrY0TrcW6yc2IHQ/IP28WsbBvU78lrJg1HUJrLASViytywqcdFM2MJKC4yhD2hC/eStJlWwYbJnZAtqgFOxc4fJzaxlpxjoVmE2Bt0OVRcjKJvkJYO/JMhUgiAKsN7UM5fGe0U2DH2p5AjQc/RYTca+N1Q39npBAeUIwT7NjoDObVSmtSB0debUkaOaHbMbOwZDm/05AkRcWPTv2bnFu0opaSEqShE4UlNpqjY+HEuHKUxri/X751sCHFy5jsopZWSeOMEQsD3R144eWbG/6XpjqErnajHQt7leN4YcngvuEx677GiAXSDoQ5sNOkQgC2Q+6BY2O5Ck+vduhYILGwBByzGGtqpbFaEWzoi3YsDHZ3YOe6xolQXjoLWtiuIkBfEwGnSkWsspNZHQtxNBaAIHX57Mba7MISTk409ktYKTI/VsTCyZwcCwnFvTw6axWrDnGujoXB8Mm4XvU8em7aWnlKS9KQXR1yfTCPVAirIkTz8aFLTj6Zg4PDQ/dNlE6LXikOEtVLSlAFhGYUEXKfxnjV95A8jHmd5jLQXbNyVTXdHVXLaZg1msQpNZksUmDLYLcViZSH00d/Z+I6FjYPdllRc4+cyJZmpiMWmt3fLedTjiUntWZMnPt7d0fV0vV5YDjbHEBrPWjtkTS8+rptDc+/fWjESkNphjZiasphubavExv6G79bf3/30YbnXTVb8JKQ1YiO0MyKdsjNLtTxWE5z23aAjgUSi+uVEX3/8BjmF9N58PRK46aBrqYh1QBwRQGCVgAwPmPrK4TVgPdjCziOZGpHnIgFoJjVxuHRGSsdRDtygtAiUl5IZla08ylJbXFLwLFFEQsLSyazFomHPk5YqUmPS5RBf+jsVOZQar1CHyf8UBtSx8ZmU5dg05ya0I6F+BELeZSctMPtmztaiqjqkibcXo/V42Mzqe/nHkFClnHuo7bTJ9s1OTk+h5mFxjHWzKCvVMTSJcl6Xx2bXrCcxXEdCyJiVUJ6JKOuUJJUCCAguianiIXZhSWcVdelWWqXx1VKZ+HBDJUhjDGWgyPJ70wYz3naRkv8+R/uTZYOoR3SQTnkWg1fn+PKbYNNI6gIWQ2ERiykUllw5t56/nsv0yFiw7sOicV1yoM3v1hPXfIxSW60H62z8NDxfARVdKnJZvoKHjcox8KDx8YzGU3nphrbMRQasZB/yL0+xrq+Tgw0CacGnJQQP/NL9cztmZlfsoQsk+S+BjkW0hqRtoMjvB3r+zqtSJc8+mapbpe8bK6x0PhDO7tQt3QrkmCMsUoBRgkVegSJ5uURLTC/WMeZyUbjJNKxoNqaR8nJJCUePbQz5vDIdGaHTxqBQO2crBtb3C95O5JVhPDQYyRrxIJuRxyRUSCgbzKO0zQaHH4sx0KGkpNTc4uWk2NHwoiFvFK7dJlYIH5EmhZxzhKxMDazYDmg4jo4ouiqVfHya7Y2/O+zCatDLKh7gq7yA9g6CzryUgvQEbJaCasMkTYVAqDOQhboWCCxWNPbYYUh3p1SZ8FWc28+6QOCIxbyENjSGgvN8pM9rt051PCDv1g3mbyadsRCcDuKiFjQwo1xJ8Br+zqtcOes2hfamAfiTzwB27EwOr2QehVUj9Uo41VEAsT5svfN6Yk5q/xYs1zgTQNdlpMjSxrCuekFq3JKnJXx3s6atQqYh87C6ckA4ySib7YP9Vh5ylkdHDqCI55jofF7Nb9Yt1KQkqJLGu6O0S9BFSqyRk+kSQ0J2i/3fmlSatIj72gS7fDZGUODw89l6vcuS8RCUFnTphELql+Gz83kEo2m0w/6u2qxf3N1mtvjpyZSizhrAUmRZL8zUejqEI+cmEikB7FUV6kQFXvc6GhBDfUVSLuQdyoEYH9/dClXEk7bOhZEZJOIvEJE3isi/yQiZ0TEuNsdrW7fSkRrCqStDJHEWPOjIxbGZhas3PM0aE//YE+8us99XTVcrkQl0+osGGPiayzoCd/ojFWeKik61ztORQiPvAUcj6uJ50B3Df1d8Wtx71jbgw39jc6q7x9J1y+W1kOTsWqL82U3ovVEvLNaaapJIiLWj+0TGSoyaGOvoyqxw4btyhDZr4mO4OisVTDUG26c1KoVy1mWZWV8dHreiqqJY9BvGuhCd4fK5c/gfJqeX7QccXFLGmonWFa9B92vUfXF/ej7WVbHgo4UiOvg0E6frE5BnaISN4LDQ+fHHzo7jdmFdEa0jkbZONCF7o5oHSF9L1usG8sYT4OdXhbfmNcRCwtLBo+nzH3WvzMb+7tySx248eJ11v3xswlEHLV4Y1AqhP7d1TBigbQLa3s7AiONMwQsWN+fx05O5JbGudppW8cCgJMA/gHArwJ4CYD1rW3OykfrLNyT0ljTGgtxHQs71vZYlRgezkHAcXxWaSzEXD0B7LKTaR0LMwtLmFM5zmEaC3rCt1TPnsuvFcN1vnEUeoJzMGvEQooa535E7Com30/hBJuZX7KcTs0mwUWI81kVIYa6Y63AakMmS2UIvQq8c22vJShWRjs8TlnOya6m+fw6HSJLLr82oqsVwfYY3xkRsZx2WcaIjlYAbGHGMPLMoZ9frFvGa1yDXo+PrCUnLe2LmAZ93lVdrAiOhI6FSzc3OhaWMlRCSqqvAABDvR3W720RjtIk9/fB7g6rnx4YTreSqBcltuaQBuFRqQhedW2jiOPnvn8sdtrT4lKMVIgIx8Jgdy2W5gshqwFnIcW+v8bR+Anjqu2D8H/tluomk6ZLO9HOjgU/hwF8qdWNWOnoyhBHRmZSleRKG7EgIgE6Czk4FpTxGFdjAQD2K52Fuw+fS5UzraMVACfNIIjACV9GA/bwSONkL0nEgp7gZI9YSF7jXKPHahoBxzQpGUWV8fMTV7lc/9Bq1f4k6M8Rp9Skhx2xkF1dWffN5oHm9xBrZTzD9dCr6knC3HX1kCzGmjZet63pRk+TijYetiGdvh2HR6atEsJxDemge02W742VGhKg8xHcjsb2jkzNY0Lp7yRrh4rgSOhY6O+qWdcmbWUInerWTF8BcH5v847iALI7jm0Bx3RzAF3SOE7JyyTodIjh0Rl8N+bCw6JKhQi6t2wc6LLmAR7X7hzKZFQRcqGhBauz0ttZs5y7WYTA24l2diy8F8ArAWwxxuwC8PYWt2fFc+nmAfSqSWuaL5rtWIinsQAE6SzkEbGgUyGSRCw0OhZGpxdShZzrsOpaRTAQEv4fOOHLsLpmjLEmnslSIRpvvgdOTWYSpNMhqltjOp786IiFh46PJw4j1hPgga7mKRl2KdDpzDogOvw4rsCYHSmQ3qBPWr7Pj3Zw5JEKYUU9xTAK9PXQURhJ0MZrktXoPI017eBI0g5LUyCTMd/YjvV9nbEdtD2ddsnJtH1TrxvLUROnegngVMHRtljaa2KMyRyxANjpEI8myNP3Y5eajHcPCbqfZSWr49gScEy5iqjbkUQgOA6Xbx2wnO5xRRx1xEItIBVCREKjFq7ZsSbw/4SsVuKm3iXBFnBkxEIc2taxYIz5dWPMPxpjTra6LRcK1YpYX7R7Ego4zi0uWWrscSMWANuxUETEgi4VFcW2oR5rUpwmHUJHLAz1dkauOFgTvgxG0rnpBUwqYb4k6uVanXpmYckKd01Clhxcj2t2rGkwEhaWTOKVLcsBFqMd2micDFBjT4oVsdBEuNFDlyMbHp1JnaOtDdg4FSE8dquVhHPTCziX8ZpYfRMrYqGxzVlKTloGfQJHS54h9zqtJEkef54VKtJWhFhui+6blGKrE7OYXWhc7Y3blq5a1XJipu2bM5Pz1j016TUBgMt1ZYiUEQtHR5NHLABBEVjZnYLacZw0UkALOD58fNwqzxiHtPfVuIgIXnN9Y9TC5+8/Hqusq45YqAaINwLhOgsUbiTtRtKIsDhcs7PxXsOSk/FoW8cCSYcOMU8q4BhUaiqRY0GtVjx1dtqawCVlfEZpLCSIWACAp6uohe8eSu5YiFsRwiPPkHsdrVCrxBfmAxxBOh2SmSUdwl5JSj7hG+jusFZzkkbXJBVuBJy26uoDWdXltZMmbsSCXiE1Jv040e9L4ljYsdauyKAF9pJiVZZZ0zzqSRt247OLVqRQXKw8/gTXI9dIgbNZHAuN7ZhbrONUitQ2IEAwMeEkL69oEu3g6O2sxio16ZHXfVW3o7NWiZ3C5OdpW1RliNSpEMk1FoB8dTg8sjqOr1RzgNmFeqporKIjFgBYOguj0wu48/HTTd+nqwB1hGjqhFWG0BF7hKx2gipDZM0G0g66p85OZ14UaQfoWCCJ0AKO9x4dTVSCShsE3R2VRBECezf1W0JGWcpwAQGpEAnEGwHbsfC9FGU441aE8NATviyrnvq924Z6YgvzAc7KTJ4CjlYObkpRLUvAMaFjwTZem0+Aa9WKNWnPKuCYNhWiv6tmpRml0TcYn12wxmfc8HLAyQ/WxnSW0pdAgMZCDKdPUMnJNA6OrGHu+tqNzSxgLKWDI0ukQHCFipQGfYbICcC+JmnTZXSKyq71fYlyze3Q/7TtsB1PcQRXNToV4vTEHM4GlFqNYnx2wRKhjRuRph0tWVO75haXcGay8V4S937msaG/y3LyJk2HqNdNwO9MvhELgHOd9fzgMzGqQ8QRbwSAvZttY2rLYDc2pUgfJORCZtf6XsuRIJnqQjj3365a42/kfSnFYtsJOhYKQkR2RG0AtrS6jWnQEQvT80t4LEG5p6CKEEkmft0dVexVnsmsOgtZxBsBuzLEE6enEoe/ay9oWEUIjzwnfNqxkERfwcMScExZAmx2YQln1bVIE7EAANftbJzQJS05qUN240QsAHYZvyyrfDPzS9ZY2p5gAqwFjQ6mMOi1Y6Qi8Vc8PfIuOakjn+I4FoJKTqYxpEenF6xKMkkM6e1DPdB2QhoBx7Fp2+GTxMERVKEibXRNlsgJwE4lSR9Zkz6SBMgvYkELpSZJlWl8X681sX00YdTC8Dk7LS1u2L92+EzPL+F0QseGn5Nj9nvTpLpdtb0xauHB4WRzgLNT85hXCyJpIkri8JrrGqMWvvzQiaZRlrp8dJgwrJ4LAcC1O6mvQNqP7o4qtudY2QVwvnc6QupeCjg2hY6F4jjSZPtO65qWng39XdZkNEnZyTQrjZrLtzau4jyQcFKh0as5gz3xIygA4LKtA+hRNcHvTqizMKJSIcIqQngETvhShjHrVIgk+goeOmLh8VPpQnaDUmXSTDwBO2LhyMhMotW+E6otcduho0m00ZWEIK2KJCG7u3VliBSOBd3+bUM96KrFqzxwvh3K0DyYQUhycm7RmpjHvY/kkcuvoxxqFUk0oemsVaxV2jQGrG5HtSLYGTN33kNXQkgTXTMzv2SFlSd2LKjKDSfGZ1OVnMwqmJiXsKaOWNDfw7jUqhVLwyZpOoQWbtw82BX7+7tlsBudVR3Vkt5Rqu9nfZ3VUJHiKK5QlSGSRixop3GtItiYIGUmCS+/ZltDpNTsQh3/+sipyPdozYgg8UbAcVLqucc11FcgbYpOh8ijMMq1ah5Jx0Jz6FggidGKw0lWp+3682lWKxrP/40nziY+hsfiUh1T842CdklTITqqFWuVIGm4lBa0XNsb3Yatg91WGHOSyBE/eUQs6LI8Dx+fSCWopSd8aSeeTpv6rdW+JNoPJ1NoLAC2OnGW2sfHVRrEmp4O9CW4HlrQKE0qRBZ9BQ/teMqirqxTVID4lWX0ynGayAltNO5c15sodaioduxY24POWtJ22IKWidsR4DhLukKvUxAAO60hTVt2J2yHbvexsXSCp1aKSsqIBcC+tyZ1yqUpNelRrYjl9Mny3Q1Kc0tTFlGLOB9ImHqn08s2D3aHphtkZV1fJ27es77hf/c1EYHTGgs6hcujUhHs3zXU8L9b1LkIaReerlK101Ti0WidhfuZCtEUOhaKY2eT7Rmta1o2rHz6BBMdK289QalJj1v2bGh4fnhkOnUe+8SsvSqWVLwRAK5Wzo4HkzoWEmosVCqCp23WiuHpIjeOnNMRC8nDya5UK0gzC0u5CGptWZMsVcZPrVoJKLkYz3BaXKrj1EQ6kTG9YvT4qcnUAqO2cnmyvtFODh2iHQcdXp5EX8Fjv8ozHh6dsZxIcdEOn4HuGno74zlb9lgRHMnHaBbhRg+rX1K0Q/dlmqoDeoUnTSSJNqK3rulGT2eyiJaeTjuMNWnZ3nrd2GVRM4pIphE8rddN5tQQP7q6S9Koo7SlJj105NfdKTSEPPIQ5gXsSkRnJucTiapZJY1TtiMuWpuqWYUiq9xkSFUIAHj3D1yGbWu6IQK85Vm7rXMR0i68+eZdeMbFzvi/de8GvFqlIaXharWQempiLnBxgyxDx0JBGGOORm0ATrS6jWnJMtHJIxXisi0D2NDfaHjfeaC50nIQWrgRSK6xANhRFEm9mjpXupnGAgBcphTDHz6ePP1gYalurd6kiVjYOGALaqXx7Oat1K0NuLgr9mcm56EDLuI6Fq7cNtiwwmQMcH/KVb5h5VhIoq8A2BoLowF5+c04pI21NBELG/utyiF3PzWa+DiAU1LQT9xIEsAufZmm5OSTGY1XICiSJHvEQpo8fm3wHjo7lbjkpJV+kHJ1Pq0T0OP4+CzmVCm/pGO1L0DwNKnTJ6gdWRwLeqwkdbgcPZc+YgEA9itD9Z4U5ZQ98jLod63rRYdKDziQoJ+s35mcc7M1OsLiwWPjkfcdXW4yLBUCcEK17/rF5+OR33wJfu2VV2RrKCEXMGv7OvHXb78Zj/33l+Iv3vrMxNHHQexe32dFzTIdIho6FkhitGNheHQmdj6szqFPo15cqYgVtXDX42cSHwewS012VitW+HwctGPh1MSclfYRhS432UxjAXC0HfykiVg4PjprpSykcSwA2Z0rAHBCCyZmXElKa6xoB1hHVbCuSRSJR3dH1eqbtPWPdcRCUkfLjrU91gQ8aTqEjljQeflxqFTEWklLu/J5Yiy5cKOHdjRNzy9ZgrLN0NcjjdG4O8A5m9jBoQx6/dnioCM4ZhfqOJ5wNcYK+0+pJ2A7AZM5Fp5S+/d1VlPlzWtnXNIoH+3wSduO8+1RY+Xk+FyiCKgj59KVmvTQ0UbHxmatlIa42BFp6Qz6WrViObCSpENYkWAFRyxoAbixmQXLaexnwYpYiI7aq1Qkse4NIasREUmcEhhFpSK5zG3bCToWSGJ2b+izRFHiGGzGGMtgS7La6OfWfY2Oha8fPJsqpz9IuDFN6P3u9X3oU+G/cQWljDE4N9XYjjhGrI5YePzkZKLSn4CtrzDQXUsVsQHY6SAP5BCxkHXCl9ZI0A6OTQPdicrFWaUuD4/Gfq8f63okXFmrBZR6TFIZYibA8NY513HR+Y/fS7nyqcMQkzgWtgx2W2JnSVakg0pNpkkN0avQE3OLidT2jTG5RCxsHOhCv1qNSbpCbwkVpoxYsFbmE7ZDi1kmLTV5vh3KwZE0PcSqCLEhXTs8gsqo6WsehY5YSCrOGxRtdE9Kp6COWMhyf9cpmUkcC3mlZMRlx9oe63c1Kh1iyYpY4FSdkFahdeWy6My0A7xbkcQE58M2n+hMzi1iWgklxhVd09ymHAtjMwupDFmdCpE2dKpSEUtn4P6j8SIIpueXrNJXzTQWACclxM/8Uj3xKp/WV7hoXW/qSfDVO+xwz6TOHsvxlHMqxOGRaauUV2A7Mk48teBPXhELccvE+dErnklCzLXjCUgf0aLruT94bCyVMJ7tWIh/D6lUxI5iSfCdGZmat3RZ0hjS24dsocUnE/TLmcl5TMylL3npISKZIwWsiIWUYf9ZozgsB0fKdujvS9LrkVc7PILKqMV1dozNLFjjNWnEQqUiueks6Ptqloi0TI4FHQlWcCqEiFjpEA9FOBZ0xIKOOiOElIfWWbh/eCx1efd2gI4FkgpL9CvGj3pQyHEajQXACQnXYbx3HUieDjFuRSykz8lKGy4VlPO+tq95O9b2dVoRHw8dT5YOoQ3HpOXq/OjPPz2/lHhSnvdKko5YWKqbQGPZaoc2XhO2Q0/Ej4/NJhb8McYEaCwknwBnEQrUInSbBrpiCyVqrt25pmHldWHJpAoptARgE/ZNlhKc+np0VCWVs6dSEcshkcTBodvRWbVLWMYli7bB2MwCzqr7V1ol7qAojjOT8fVAdOnQNNVLgtqR1MGRl6OloU0pnYO6IoRIOt0aO41pNPEx5haXrP7MoqGT1rGwVDc4qUozb8vowI6DToeIiljQGgtFVawghDTnmu1DDc9HpuYjU5naHToWSCq0UR9nBUUbBGt6OtDdkT4v8Na9jVELdz6eXMDRiljI4FiwV+zjGU1aX6GjKlZ4chi2zkIyAUer1GTKyTjgpAvo1eMkUSTzi3WcUeHgWTUW1vR2YL3Sq4gzKdeVB7YmdIBdsrHf6sOkgj8jU/OWCFwa43FPgGBhXLSeQFphPgAY6O6wKpncnSIdQjsoNw0k65s9GcTwdAnENKUmPbI4fHR0w671vamND+18SxL6r1fnK5I+omX7UI+lb5PkmlhjNXXEQuP7xmaSCZ7mHbEApBf71BUhtg52p8o/3n/RUMPz+4fHML+YLO3u5Ji9sLA1hVPOI63W06kJW1coSzvicuV2HbEQ/tuo2xdVFYIQUiw719mpTGkFudsB3q1IKvSPepy87SwhzEHcum9jw/O7nxqNLSLpYWksdKdbjQWAq1QqxPGxWctQDkJPWtf2dsZOR7hchVc+kjBiQa9oJc2/1WidhSQr0ifHZ6EXBvPIfU1jwNkpGcnaUa2IdS2SpkPo6I2KOBEDSdEr9E+dnY6doqJL7aVdBfbQ6RBJdRbqdZO6DKhHltQQHSmQxdGSJQVB6wlkqdedpR36euxY25taOCtLmkq9bvCUupelNeh3rLUrDsS9JotLdctZm0ctdbtsbDyHS9aKEB7X72z83s4v1mM7zj20vkJfZ9VSW0/Cno39qbSedBWkzlrFcj4XwRVbG38Pjo3NhpbIZCoEISsHEbF1FijgGErbOhZE5FYRud3bAPyQ7+W9/tfc14kPu+TkZNMyZXqlMW0ahMdNl6xrWKWbX6rj20+OJDqGrgqRJWLhko39ljBcnBV7HbEQp9Skh9ZZyByxkNGxkEU9Vxvz3R2V1EKSfrSBEcdI0LnAacbqdWqV794jyX6IdKjdlsHuVKvjerVzfqluGRxhaMdCViNJOxbuPnwuUZj5yPS8NelOKgCrx8PRc9OYW4yn9ZBXaUUgQFg0gYNDRyzoPk6Cvh7DozOxtS90m7Ouzqf5rgLAsbEZawU9bd9UK2IJcsbtm6PnZrCofgez9M3yMVTUUcz0DB2xkFRfwWNNb4eVepA0HSKoxGMWUcuezqr1eeKkQwSVvMzSjrjs2dhnReSEpUNox2+VEQuEtBRr0YwRC6G0893qrQA+7tt+z/fas9RrHy+9dSucPZsaJ0tzi/WmOUdZ1NyDGOjuwPUqlz1p2cm8xBsBZ0J6hcqjjOVYUBUhhnrjt0FHLBwfm8XodLyw3fHZBYxON547q2NB33wfOjbe1OHkYesrZJt4eiRdoQ6qXpImcsIScDwyGvtaAEHCjemMgnV9nZaDJu5KsF6Rzjo+9qtc7TOT87E0Lzz0PaQiwIb+ZKuNevW3boDDZ+O1QV+P3SkrZAB2JElcYdGgduQZsWCMffy47cjqWEibHqJTVPq7aonHRUM71Oc4GDNCQDtChno7MBSzTG1ke9R1mZpfwqmJ5tFwdsRCei0BnQ6RVMCxiEoMezcm11k4Ppp/O+JQq1ashYCHjgfPD/R9gBELhLQWuzLEKAUcQ2hnxwLJwMb+LqsEVbPc3LxTIQDgWUpnIamAoxZvzLpCniYVIEvEwu4NfehUq9hxoxaChL3SCNH50RELk3OLVth2GLrEY14TPkuMrYmRMDazgNmFxoldqogF5fSamFtMJNCXl2NBJCDEPMYK7Pxi3WpDlhV6wEml0GHHSQwUfQ/Z0N+VOIpjoLsDG1VKSZxULmMMnjqTXwSH1r5YjCksWq/bJS+zGPS9nTXruxZ3hT5vocK0URzaweGUaExvjFmVIVp0PTy2DHaju6NxnMfRwrAiFjI4BrVTMGkJ3aBIgaykEXA8ZpW8LF640eMKlS4ZFrGwuKQjFuhYIKSVXK0WisZnFxMtirQTbetYMMbcboyRuFur27vSEJHEOgt5RywAdtnJR05MWDnYUVgaCz3pcz4B27B+YLi55kGQxkJcOqoVa3IVV2dBOxa2Dnajq5ZeTBNw+lQbbXEFHPWKVlbhRg9tJJyZnLf63Y+OVgDSjdUta2wxyyQCjjoXOIvAWJqV4KPnpqEDLLKIewLOfWN/Bp2FvNKp0ojhnZ2ySzxmcbQECYvGMWBPjM9aop6tSEEwxnZwZE2VSRvFoQUTs7bDdkamdCxkdMR5OPoTySOv8kqFAOzKEMOjM4kq3dj39+wGvf7te/xUc6e6FbFQgnCjR9zKEDqdpiOlQCwhJB+2rem2fq/vYzpEILxbkdTYjoVmEQv5aiwAwLU7hyz1/a8fOBv7/eOqxneWVAgAuEopPw+PzoQKNHlkiVgA0leGsEpNZgxz90ibi6Z1DfKKWLhona2YH2U46XZs6O9MLUhnpUMkEHDUK2tpSk166O9qHMNR6yus7e3IRfPCFnAcjf3ePLQvgHSOFm28Zinx6GGLFTZvh+673s5qKlFPP/p6xFkNPzs1jwl1/8yqJxAUxaEdoEFYKRkZDXp9PZ46O4XFOA6OnFNDotrUzLEwOr2ASeUIy1JOeN+mfktsMUlVlzIiFp4629wRZbejzIiFxvnBE6cnMTNv65nocpM1RiwQ0lJEBFfvSB6R3I7QsUBSo3UWoibnQWrueTgWOqoV3HTJuob/3ZlAZ0GnQmQRbwScnE8t0PRAE/XsLBELAHCF0ll4OGbEQt7CjR5pBRyLWNECHNXvnWqlLmqs5mW8Ao7jy0+yiIX8QnbTpELY4eX5GEk6pPrRE+OWARSGfQ9JZ1BbIfcxHC3aoN+5ridziHJSYzGoHRev78usRZImBaEIR0va8rB5R07oKKeFJROrbrluax4VIc63yYoqiXb+6GiFakUyGfOViliCtEnSmIpwHO/d2OhUX6wbq+yoZlhFLGRN/0vC5VsG4b9l1A3w8An795qpEISsPK7Rlb4SlhBvF+hYIKmx65+H/6CfC1Bzz0NjAQButXQWTscWVdHijVlXZGvViiWo2Myw1gKKa/uSteGyLY3ne/TkRKxygkdGGieeRUUsxBVwtCaeOTiePJIIOOYh3OihxUUfOj4eqwLB/GLdEmfLYrRpA/bE+CymmhjzVkWIjGkQHtfsWNOwAlc38X+g9RhJWhHCI02JRX098liNtsZlCgeHTh9I1w7bSdzsHqrbetF6OzIoDUmjOJbqxrqXZR2r6/o6LRHdZg6O2YUlK8qo0IiFJmNFCzemrSrjR6dDxK0MMbe4hDOTjQ70PCIF1vR2YEN/4zwiSmfBaUfjfbXMiIWezqr1nQ9Kh9ARC0yFIKT1XKMiUB8YHkskyN0u8G5FUrNXRSycnpgLzV3XxpqIIwCZB7fu29jw/OT4XKxQ3rnFJUukb7A7m8YCYBvWzTQGskYs6FSI2YV601UbwNZYyCtiQX/+iblFq8a8ZnGpbq1G56WxACTLIc8zYuGqHWsaaq0vLBk8FJJX6+fk+Cy0XZdlZc1Z1W78XzNjWo+hvCIWujuquFKNkbg6C3mlU+nxMDI137SaihYhzSpkCQTk8qeIFMgjj187icdnF637UrN25HE9gOROn2OjM5hX4e95RAroMdLsN+XwyLT1nc03YqGxj46MRJdJPZJjRQgPXRni/uExq8xnECfH7AoWeWkb6HlIlGMhqB1lijcCts5C0O+BjliosSoEIS1Hp0JMzS8lEuRuF+hYIKm5aF2ftUIVFmJ+ShkEadTcw9izsc9aVY6TDjE+Y6/YZk2FAGydhSgBR2NMZo2FDf1d1qpNM52Fpbot7JVXxMLmQbs9zaI2Tk3MWUKBeZYBS5JDnmfEwmB3h6VvEGd1XqdB9HZWM0XTdHdULY2GZj+IeoV+V04RCwDw9IvSCThaArAp+2bnul4rb7mZ+Kw2pHflErHQeIwzk3NWFJWmiMoD29f2WDoizcaHbof+LGnRK7pN+0U5fAa6alY6Rap2bEimS6Jf3zTQZen/ZEFHptSN7Rz2Yws3Zv/+Xr+z8Xs7v1jHg01S/QBb16Cvs2rpNaQlSWUIHVHS21nNLNicFNuxYF+/BfVjSI0FQlrP5kFbkPv+4dHWNGYFQ8cCSU1nrYJdyhgNmwQWUWrSQ0TsspNxHAsBE/is4o2ArTFweGQaY9PBxsLk3KKVIpI0YgEALtcCjk10Fk6Oz1qrfHlFLIgIrracK9GTT62v0FmrJHawRKGNhENnp0JD2PKMWACCBBybT8StkmhDPZnz6G2dhfAJ+FLdWCueeUUsAMD+XUMNz+85fK5pSOH8Yh1n1Sp62vtIR7ViVbiIMhyNMYVECgQ7Z8PbsbhUt7RR8lgVr1bESh9oJmgZpPWQB0mjOIIqQmT9rgDJ9S/y1nnQDHbbYf9RThfbcZxP6oE25O+JkQ6h7+9bc7ifeexVjqgDEeM2SEAyr3bE5YqtjfODR05MWMKgS5Z4I6fqhKwErt4+1PCclSFseLcimbBXl4J/1PUqcNrc6DB02clvPnG2qTq0Fm7s6aimVv/3c+nmAXSqaIywVZ1zU7bDIY1BfdmWRsfCw00iFvRKV09HFRv68zPkk1aGCBL2ynPCt0cZCbMLdRwPKZVmjdWMkRPX7Uwu+KNLTWYVxQPsyhBRhtKx0RnL4ZWXxgJgV4YYn11sGmoeVEY2y33EFiwMP/+ZyXlMKfX2izdkvx5BwqJRonxHz81YpeiyVmLwsLUNwsdHvW4Kq4CQNIrjUEGRNXbJyejxqR0cefVLwzETODv0PT6PiAXA1o2JI+BoORZyjEbbu6nxt+/gqXCncRH31aToiIW5xbrlIGIqBCErk2t0ZQg6FizoWCCZ0JUhDoaEIerc6E05OxZ0xMLU/BK+38SAs0pN5hQS2VGtWLoHYakAOg2is1ZBb2c18Tm1gOMjAUrTfuxSk/mtIAGwcugfODYWKQanV5LydjxtHOhCn7quQYbk7MKSJaaZdRKsK0M8cWYqNILFQyvQb88hHzlJ7rpOg+jvquUaQbJ1TQ+2qevaLB1C30M6a5VM6SFJjDRtRHfWKrnlZiep2KF1Htb0dGBtTv2SROD05MSspU+Tl2MhKIrjyai+KSA1BLCvx8nxucjqJdoRk3fEAmA7SMOcYcbYqW55aCwAwH7lFIwTsXCiwPv7vs2N/TQTIKLpUUTJy6Ss7eu07n164UE7DxmxQMjKQOssPHhsPFYp4naCdyuSCb0KGrbqeKrgiIUN/V1WNYZmOgtaaDKPNAiPuCUXR6a1cGNHKgNff/YjIzOYiFjlK0q40cMScJxdtIxVP0WUIvMjIrEMJ52yA2RPhbhsy6AVCXNfk7y846P511oPSoUIc/bYpSZ7cw8Z1gZKc8eCfQ/J0ia7fF+EQa8rIKzrRSWnvOckBr02sHOtOpAgVUa3o6ejmlt6W2B52IhogSJENQFvzDf+Tzsxol7Ls2/Cjhk2Zkem5jGz0Bhhk5eGji4XOzw6E3jf9HMsIBUiLzYNdFl6DWE6C8dH9e9M+RELAHDFNrtykh9tqDBigZCVgZ7bziwsNdUBajfoWCCZ0I6FwyPTgSkIOrw8T40Fj1v3rm94ftfjpyP316kQeQg3ely1zfZqBnEuY0UIjz2b+iyBp0cj0iHsiIV8HQtb13RbAmpRAo46LWFLARO+oJJ6VjvUBLivs4qBjA6nzlrFCn/9fpNVviJCdrUBOzW/ZJW09LDy+HPUV/DQBkqzkOq8dVr09Xjy7FRomdaiKiA47YifgqAdPnmG2+t2HB6ZDl2JsYz5nHQNPOJGcSwu1S0naV6RAkGCp2GO88m5Reu7VIRjwUrfCRkrOlqhVhFsHsjnN3ffpn7LkL+7iVOwSMexiGBPTAFH7eDIUmknC/r3QM8PdBoaxRsJWRls6O+yfhfuOzramsasUOhYIJnQoZkLSyZQqbroVAjALjt579GxyNxc/VoepSY9tFfzyTNTgW3RJd3Shpt31aqWkydKZ0EbjnlHLIiIFbURJeBor9DnPz7i5JBbq+I5tcMWcByN3F9XhchjArx1sBvdHUr5P8Rgsyog5Kiv4KF1Fg6enrIcbX5s52S2a6LHw/xi3bruHjraZncO+gph7XjyzGRojniRAoHaaF1YssPpz7fjdHEODiAgiiPEgD4+NluoFkjcaBL9fRHJ/57qtCdemVQtvLp1qDu3KkyViuA6VXaymVOw6BSEuJUh7Ha0KmJBOxYaUwW1gzOvviOEZMfSEGsiTt5u8G5FMjHU22mtTOuwoIWlOs5ONToW8k6FAIAbL17XIJq4VDf45sGzofvrcpNZ8rU1l27pR4cKXwyqV601FrLkS2tdh6jKEEeUwVDEJFjffB+IKEumV7TyMuj9xDESdMRCXu24TuksfP9IuObE+OwCJlQut/aQp6FSEey2VjyDJ+BFlpr0uGLboOXouOdIuIGiS9ZmdSxs6O/EgHImhq1IF2nQa4dglLBoEaUmPdb2dWJtb+M9MGx8FCXc6BFX/0Jfj4HufLVA4qbL6P9vW9OD7o7kWjnNCCqTGuR0sSpC5CTc6HG9FW00Grrv3OISzkw2/s7lbdDHcSzMzNv6OSslYmF8drGhzxZVVYgORiwQsmLQOgusDNEIHQskM810Fk5PzEHbUFmNgiB6Oqu44eLGCc9dB8J1FiyNhRwdC121Ki7d3GjoB63Yn1MTnXUpUyGAIAHH4IiFmfklnFZhu3mnQgC2zsQDw+OBxvRS3eCkak8REQvaSDg2NoNZlYdsOTgG85kAawHHM5NzVlju+XYFrJrn5eCIU8rPGIOnRnTEQv5h3R3VCq5RkRx3PzUaur/dN9muSZDuRpDhaIxdASHPVIhNCYRFtahn3gZ93BSEooUK40ZxBDk48kzJsNNUQhwtuiLExvy/L4BbJnWdLgsa5FjQFSHyNeSvVxEL9w+PYX4xOG3m5JidbrU1Z4M+qOSk/q0JEnRsVcTC9qEeayHDnw6ho3C0mCkhpHXoyhAPHR8Pvf+1I3QskMw0qwyhw8s7qxVrZSwvdHWIuyIEHO1UiHzbFCdcytZYSN8GHbHw6ImJwMm4DpMF8l/RAmyv7tjMAo6M2JO7M5NzVuhnERM+bawYYxsmdipEPnnJF6/vtSaSYWUntcDYhv4udNXyWf2MUxni1MScpfhfhMYCYOssRAk4nlTlJjfloNOyJ4YhfXpiDtNWqcn8rkdcB8eRkWnLQZu3QR8nBSFI1yBvB0fcKA4rkiTncarTQ548PRXoHC26HQ1tiqEVo++zeZWa9Ni/s/F7O79Yx0MhEXI6/aCvs2ppNGRFRyyMTi/grPpt1ffVwe4a+nJuR1xExIpaeMgX0cdUCEJWLnpuP79Yx2Mno0u8txO8W5HMNItY0MbapsGu3BXmPW7b1+hYeOLMlLXK52GLN+Y7ybBKLgY4FrTGQpZUiMtVxMLk3GLgZz+swtw3DnShJ0WJy2ZsW9NthSUHOVd0+kFHVaz0mjzo66pZq9zakLRSIXKKrBERK2ohrBxqEaUmPeIYJXr1tatWwaachN80Wmfh+0dGQwUDTxbQN7buhn09tNHYVatga84RV3EiBbSRv3GgC/05G0Zxxsfw6Iy1opq3YyEoiiOo5KQlqllwSkaY4KkWsyxCuHG5Tc2dUEVHLKzp7bD0lcIEHLU2ypY12aq5BLFzXa9VeUenQ+iIhTwEcbNgORaO+yMWVCoEq0IQsmIY6u200kOps7AMHQskM7ZjoXFVRws3FpEG4XHltjUYUqv+XwuJWhifLU5jAbC9mk+cmbLqoGuNhSz5wZsHu6yIh4cDVpGKFm70CBJwDLr56hrnmwe7cyvlp2lmONkRC/lNPq9TERxhjgVbuDG/NmiNhSPnZqwQviB9haL6Y78KqZ5ZWApM4ZmcW8SUihrI4z5iGWkBxmsZ10OPyyCthzLKGVpVBwKuhzZk1/R05B6BFlgeNsDpo/smT+FGwHFe9SithKC+KVL7QtPMCWWMLbpZRKpb3KouRVS40VQrYqV5aceCXWqyNfoKHldGVI7SEQtMhSBkZaHn99RZWIaOBZIZ7VgYm2kMQ8y7TFwU1Yrglj2NZSfvDNFZsCIWck6FuGzLQMOEwBhbwHFkqrENactNAs5kXOssPHzcNtJ0KoSuGZ8nV6lVmaCoDR0lUOSEL0oUbqlurNXIPEVGdcTC/UfHAlfntWMhz7QQ/fmX6sZyNJWhr+Cxvr/LMpSCDBStrwDk5VjQuhuzmJ5vdP7p1egirkecVWjLeC2kHY3HPDUxZzlDg4Qsi4hAa2ZALy7V7bKoORv0lYpYx9TtODc1b4kCFhqxoPUnVJnU05NzmFPOwrwjFgBgv4o2uidEwFE7josQbgbQtOSkVRGixRELujLE8bFZjEzNwxiDReVY6GAqBCErCq2zcP/waGsasgLh3YpkZvvaHisM0a+zkHeZuGbcurex7OTXDpwJ1BqwUyHydSx0d1SxT012/Ia1McYqFZZV0dyqDHHCjljQ+dFFRSwAwToTOkfZrghR3ITProqwbCQEaT3kWZ1CCxXOLCzhQMDqZ5G11ge7O7Chv9Gxp6M2DhW8CqzRQnBBOgunxu386DzSd4Jy4bXhXE6kQOMxh0dtYVHLsVCAQOCu9b3Qi6M6isMSKizIiLaFExvPOzw6YxlgZThbdD9ox1OtIoUY8svtabyH6TKpOlqhoyrYNJD/b66OWBgenbEWEQD7flaUQa8FHHVkiXVfbXHEwiUb+tCl5k0PHhuzxjQAqxIIIaS1XL19qOH5oycmrN/sdoWOBZKZoDBE/yQw7zJxzdA6CyNT83hYGdjGmMLFG4GAkos+x8LE3KI1idBpHEnROgtBYeV6la+IMFkPnQoxNrNgTXytiWepEQvL6uHawZG31sPGgS6rbGSQgKOOWMij1KSfqO8qADylDKWLCoxYAGydhSDHQlCedh70dFat62sZjiUI88URFi2jHV21qiX0p1MQrIoQBY0PuzxsYzsCUzIK0GaxBT6VI06146J1vYWK7W3o77TED/19ou+v24d6Cgml37ep32pHkM6Cvq8WdX/ft7lJxEKBkWBpqFUruGxr4+/1g8fGLec2ANQqnKoTspK4anvjd3dhyeDRkEps7QbvViQXrBxh3496makQgGMoa2EVXR1idqFuCZDlrbEABJRc9Ck/64oQQP4RC4fOTjWEdhtjLMXwIiMWdqztsZwlOh2irFBZANijIhbGZxfPp+3olIxNA/lrPVxnCTg2XoulurEm4nnnJEfpTBhj8NSZciMWtGPh6LkZK0KhSJ2WqPQYY4ydx78h/+sRJCzqjxSYmlu00nSKKmnYLAXBKvFYUDuaRXEUra/goT+fdqwEpYYUiaM/Ef4dtoUbi7kulYotSHtPgKPUSkEoyLGgK0McH5ttSOOxUu5yLnmZBrsyxLgl3AgANYo3ErKiGOjusO7D91HAEQAdCyQnoipDlJ0KAQSUnVQ6C2MqDQLIvyoEYDsWDpyaPG/o64oQXbWKJRSWlEs3DzSEMhsDPHZyuS/OTM5jRoVrXVSg4SgiTctu6glfnqH/mu1re9CpVhM9w8AWbsy/HbZjYbTh+emJOSuKpWjHgt8wOje9gAmVU19k6TwA2LdpwF75VDoLtnMyR8dCxIr0qYk56/tS3Ap9uAGrjVeR4hyCUe2YW1zCsFoRLyL9AAiO4vA7E8oy6LWg5ZGR6QbBU+1oKFJf4XybrGiO5TbYpSaLW5nX4qs6YmFucQlnJht/54qKFNi9oc9K4/EWOMZnFyytkG0tjlgAbMfCg8fGsLjEVAhCLgSu0XPbo6OtacgKg44FkgtBlSEAYHp+EROq+kIZjoXblGPh20+ONKx26TQIALmXbgOAK7YONkx26ma5UkNQRYisImjdHVVrYvuIrzKEToPorFawuYD8Wz9RlSHqdVNoJQZNtSJWNItnSBZVatKPXuF77OREQ0SJLonWWa3kXnozSvlfr0bXKlK4enq1Iriuic5CkVFP+vvyZIRB31WrFBZRo9vhd87qftm2pgfdGZ2QYUSlIBwZmYaO1C4iggMIKw8bfk2KcvjoiIW6AQ77BE6LLnkZhCXg2JAKUWypST/Xq2ij+4bHGpwuOg0SKMZhCzhpPNrZ5qVD6IoQRbYjCVeoVIgnzkxZ8yUAhabWEELScbXSzWJlCAferUguaMfCkXPTmF1YCpxYlOFYuGXPhgaDfm6x3mCsaOHG/q5aIT/ePZ1VK0TzgWHXsZBjRQg/Om/Tr7OghRt3rO0prJSgR5DOhKdrcHZq3kpJKdqQDQt9LyNi4artjY6mpbppKDNmVYQYyj8dQxtKZ6fmMeaq2mt9hZ0F54t7aCE47ViwNBZyTYWwHS3e+LSMxvV9BZZCDXf4aAHFUqsOnFm+HjotYkN/FwYK0KbxsNIyzoQb9EVdkyDBU89xboyxnE9FiVn6sdIzfA4XHVFSpIbO/p2N39v5xToeOh5+P+vrrGKwO38Hvof+rX3cdSxoh+36vs7CHHNJuGzLoBVh6E+X9GAqBCErD10Z4vFTk5iZp4AjHQskF7Sx5omPaYOgv6tWSGSAZk1vh+VNvNOns2ALNxbXprAVex2xsLYvnwn65VsadRYeiohYKHLS6aEdC+emFzDsTji1nkC1ItYkPm+0AecZCVZ1igIcYL2dNVy6ubF//AKOeiJeRLjuRet6rdBaT6BP563r6I6i0DoLDwyPY25x+QdaOyg3FaixMDG3iNOTzvmsChkFrc4HtcMvLKorDxTqWFDtmJ5fOq9xoaMEijaiLe0e14BeWKpbIoVFjtWw9KHTE3OYVhPJciIWGu9hXpnUet1Y16XIiIU1vR3Yo66NPx0iSHS1iNKkHmElJ3XEwkrQVwCchQe9KBMk6MtUCEJWHjoiealuGubb7QodCyQX+rpq1krzwVNT1irwpoKFG/3cund9w/O7Dpw+/1hrLORdatLPVduCK0NojYXcIhZ0ZYjj4+cNFO1YKFK40WPH2h5LGNO7BlrYa/NAVyEK5n7s0Hdn8mlpgRQUORGls3BMTYDz1lcAnJrout+9lWhbEK94IwkArrtoCH57Y36pfj6yJzBdJkfHwrY1PVbZNy9CIChioSi0kT4+u3j+HlGmQOCWwW70qlKe3oq43Y5i7x/aCeidf/hcQKnJAq+JNp6966H1FbpqFWwtISIv6LM+eWYKpyfnMK/E/4oSb/TQ0UZ+fZQy7md+wkpO2gKSrddX8NA6C1p3B2BVCEJWIn1dNStK6j7qLNCxQPIjSMDRKjVZcD6/n1v3bmx4/uCx8fMT9fGZxjzGIh0LVweES80uLAVqLOSBrgwxPrt4Xj9Ap0KU4VgQEas0z/3nHQvFpx9otJFweGQai0v10sqiaZ2Fe30/RMM6YqGglTU7xNyZgOsV6TLGB+CEm1+6qXHceiufI9PzlhGZZzpVpSKhIfdWHn+BxuuOtb2WsOj5dpQYbi9iX4+D7vm1Y2G3WjnPG1tY00nL0BEcQ70dGMrJMRvcjuA0lTJTZfz0dFaxTd2fnjwzZekrdNYq2FhwBNj1yrFwz+HR84/LrPgD2KkQT52dwtziku3gWAH6Ch5Xhiw8+GHEAiErk6u3DzU8v586C3QskPzQBtvB05OF1Z+Pw/5dQw1VFowBvn7QSYfQGguDBeYJX7F1sGE1dqlu8PDx8cIiFrYP9Vgq+4+ccFZ/tWNh57pyVm7sdBCnPVYJsBJWkrSRsLDk6Bxo9f+iJsE6YuHIyAzOuqH3emWtqBW+sNDuMkorhrF/V7DOgnb4VATY0J+zoGXAinS9bkoTCASChUWfPD2F0el5nJtuvF8VHW5vRfWcDnMsFB2x0NiOsZkFjEzNlxpJAoRrPdjXo5wIHyBYk8OqCDFUvIbO/l1DDc+HR2fORxgds0o8Fnt/16kQdQMcOjNd2n01DVeoiIUplVpTEZTirCKEJOfanY1zW5acpGOB5Ij+UX/idGtTIbpqVdy4e13D/+5ydRYsjYUCSk169HXVrJW3B46NW8ZCXhELImJFLTx8fAJzi0s4rvqjDI0FIFzAUa9oFS3cCABr+zqxtrfRkfT1g2et/Yoaq/s29VtlRb2ohbJCh4OMkvHZBcvZtaukVAjA1ln43uFzMMbg1ETjNdnQ35W7oGTQivSpiTnMLjSGlRdtOFqaAmcmLeO1VpFC8+addqjrcWYSU3OL57UWPIqOWAiK4njyzFRAyk65Do6RqXmMTs+XmqLSrE1PnJ60Iha2FzxOAKdcrNZNuudwsFOw6Pv7YHeHVTHmwKlJ24G9ghwLOhVCw4oQhKxc9Nz24OlJq7Rtu8E7FskNPTk/eHrSLhNXYioEANy2r7Hs5J2Pn4ExxkqF0BoAeWMZ1kfHcE4ZcUO9+bXh8oDKEMPnZmBUqbhWORZGpuZxfGy2JakQgG0gepEsHuv7OtFVK0Y1vFatWNfj+0fGMDO/ZBn220tKhXjyzJS1CixSrPCbRjsWTk/M4ei5GZwYazRmixgjQddDG43dHRVsGijWMaoN9SdO2+3Yua4XHQUbG7amwJQVvQEUL+4ZXB7WviZFG/Q7AwVP7XaUURHCI2jMauHGMu7v1YpYUVh3u+kQrbi/63SIA6cmA0RxV04qxFBvJ7ZHODo6GK1AyIrl8q2DDb8NxgAPtnnUAh0LJDf2bLLVxP2l9IDya0ffqhwLw6MzOHR22hZvLDAVArBTAR44NlaYxgIQLOCohRvX9nYU/rk9LlrXa1XeuH94zEqVKUtUS6/IfufQSMPzokui6vC5e4+MWiXRgOKuh17tnFus4xsqasMRNSyvJNvF63ut78Ddh8/ZUU8FOCf19Tg8Mo0DpyYa/ldG/nzQKnRZZRWjznH03DQeO9l4PbYP9ZRSss/We5i0nBxFX5MgwdMDpybx1IhOHWpxKsQ5u5xwGey/aKjh+d1PncPc4hLOTDY6BYuocqPZp7RavvvUCOYWGyOPVlLEAmCnQ/gpWsyYEJKe7o6qVenrfjoWCMmHIDVxXYpLhykWzdM2D1jlC+86cCYgFaJcx8KjJyasVIi8NBYAW8DxiTNT50tveZQVrQB4Ao5KZ+HoWMsiFrQBp0Peiw7ZDRJw1Ktqa3o60FdQadaN/V2WDse/Pnqq4XmZ+gqAM0a0gfK9p2zHwpY1+d9DdLTVYt3g3x9vjGIpo0JGkLDogdON39sy2qEN9boBvvro6Yb/lTU+tAH92IkJa2W+jGui7xlfO3AG84vlpso0tEeda2JuEfcp4bCiK0J4XK+ije4bHrP6CChJnFdFLHzryUancUWc6kMriah0iKKjkwgh2bhGCbTr+3C7wTsWyQ0RsSpDaIpeCdaIiF128vHTtmOhuziNBcCeOCzWDZaU0n2eEQtPUx7UpbrBVx5pNBzLdCwAdjrEnY+ftibmZWgsAM1DlosqNelx7Y6hhuej0wv45hMqYqDAVTURsQyl7x461/C8TH0FDy3gGBSxUEQ61ZreDqxX37+7tGOhlEgBW1j0awcax8XujcW3Y6C7w0r70I6FsoxoPU6/+cSIde8sx7HQ2Df6egx01XIXFY1i+1APOlWZ1InZxhS/siIWrleO0vnFOr7ycOPvTV9ntfDfWcAuOal/YzYNdK843QJdGcIPIxYIWdnoym+MWCAkR/SKm2ZjC1YKbt3XWHby6wfP4txUo2OhaI2Fge6OphPxPCMW+rpqVm6yXrkpq5Sgh45YuFd5dStS3vjQRoKm6LJoO9b2WEbIF+4/0fC8KH0FDz0edUnHXSWPDwB4uipd9/DxCSuPvSinjzZgdZWQogUCAce5qLVWdNrW7pIcPnp86HaUYcwDthNQ98va3g6syVGfJoym12NDH0TKMwIrFWk6FnaWFLEw1NtpfX/+8f7jDc+3rOku5fpojQXN1oLvq2mISoVgxAIhK5trVMnJJ89MWb8P7QTvWCRXoiIW1hUoiBfFrXsbdRYmZhcxrMLOi06FAGzD2k9PRxU9nflem8u22FELfsp2LOiIBc3Gga7SJlG71vciaiGo6JBdEbGiFrQBXbTeRDPnSisiFq7ZMdQghLRUNzikKgAUFfWk0yE0ZeXPN4umKSNiAWg+PrQh2ap2rJh+KTENwiOqD7pqlVIjKPYrp+C9R0YbnpdV4nFDf2fkQkEZOg9J2bamO1S8uVZlxAIhK5lLt/Rb1YvaWcCRjgWSKzq/0U/ZaRAeW9Z0Y1+TVYwyRAyviliV0OUP80ALOGrKdixctK7Xyuv3U5ZwI+CUIo3KPy46YgGwdRY0RU/EmxmGZWssAEBPZzVy9Q4orm+aXY/yQv/D71VdtQq2lnQfbRZ9VlbEQlAUh5+yIjhWioPDT9SY3bG2p9QICu1Y0JRxTwUcp21U1EJZ6XZJEJFQnQWmQhCysumqVS1ds/voWCAkH6IiFsoWbvTzLBW1oBnsKT73M2rFfm2O+goeuuSkpqwwWY9KRXDl9vA2lT3hizIUy2hLc8dCuakQmrIdTx7NDJSi7iNR16Ono1p4qck47SijMkWcdlQrUqpGS+Q1Kcmg39DfGekYLbPUpIfW5PBTtobO/l1Dka+XeX/XOgsN7VhhFSE8wnQWOiqcphOy0tHz+/uOjramISsA3rEAiMguEfmAiDwiIlMiMiIi3xGRd4lIa2bXFyhRIeZFiK7F5bZ9zRwLxUcsXBnhWMhTuNHjcuVB9VOtSEtyTaOcK2WXIo1a7StavBEArt0RnRoSVds8D6KMtU0DXejtLN7ZFsTTd4U7FrpqlcL0UKJWpHet7y1t9TcqUqDMKJKo67FzbU+pud9RaSpaS6YoggRP/azEiIUy2bdpAP1REWklGvRREQvbVmDEAhBeGYKpEISsfFgZYpm2dyyIyCsB3AfgnQCeBqAXwFoANwD4XQD3iMje1rXwwqK7IzzEvAxjLYxnXrK+IXfbT0WA/hKMqDU9HaGrwHkKN3rsXNtrlf/02DbU3RJRqCidibIjFsIMp97OauTKZF4M9XZGGvdFp0L0dtZCJ9llhbkHoStD+Nk8WJwA3EXrekPDjkstIxhh0EetUOeN4zxo/fUAog3oFdM3LfjO7IkYD2WVmvSoVgTXRURhlek4jkyFWKERC1eERBiGzVsIISuHa5Rm1tFzMxiZmm9NY1pMWzsWROR6AH8FYBDAJID/CuAWAC8A8GfubpcC+LyIhC//kgbCVtxamQrR31ULDbEe6O4oLbw4bMW+iIiFSkXwtC3Bw7ZVYe7REQvlTvjCQpfLUi8HwqMWKoJSQu/DDKWLSloFDmLbmu7QfOwi87Q7axXsDFnlLXM1+qJ1vQgbfrtLjFioVSuh94myV+ejozhKdCyEnGtdX2cplSk0QWVSPcqOWACA6y8aCn2tTNHECzFi4ZKN/ejusKfkK600JiHEZt+mfnSp8r/tWnay3e9YHwLQA2ARwIuNMe8zxnzDGPMVY8yPA3i3u9+lAH6+VY280AjTWWhlKgQQrrNQhr6CR5jGQJQ4WRbCBBxb5Vi4eH1faLhs+RELIY6FEkVGw3QWtgyWU2s9bLW3jNKKYYhIaDrEpoKdk2GOljJXo52or2AjrMyIhajzla0nENaO9X2dpQjvnm9HyD2jFRUhmp27bA0dIFofpcyIhe1DPYFGekdVsKG/dQscUVQrEvh7zYgFQlY+tWrFSme6v011FtrWsSAiNwK4zX36v4wx3wjY7QMAHnYf/4yIlL8kcQESVhmi7Bx6za0hOgtlTkzLjFgAwnUWyg6T9ahUwtWvyzTovfMFpYqUOU7DHAtllWYLc660otSkn7B0iKLHSJjBXPYKfZimQNmVOsIiBcq+Ho7GRfD/yyS0X1r4fQn7Dq+kiIW+zioGu8tz4FcqErjAsXmwu7ToxDQE/TZSY4GQCwOdDtGuOgtt61gA8Brf448H7WCMqQP4pPt0CMDzim3S6iAsYqHo1cZmXLtjTWDufFFicEFcFaL8XITGArDyIhaAYOeKSPnlSEUkcLWvTAfHFVsHA1ekynMsrDxDCQD2hxgoRY+R8OtRsgEbYCz2d9WwseTV1jCjtewV+rAojrIdHGGfu1mp0iIJGrM9HdXCnNVRDPV2Bl6LMtPLPILSIcpMx0hDUGWIGqtCEHJBoOe2TIVoP251/04B+F7Efv/me/ys4pqzegha5apWBOv7WutYqFUruGnPeuv/ZUYsrO3rDFT7L2oSqGvrerTUsRCgK7ChvwudtfJvR4GOhRIjFro7qoFlQcuq2BG2Qt9KjQXAmWAHjYeiBWCDxkNfZxUbSyo16RHULxdvKK8yhUdQCkJnrdISAy2oLWULJvZ0VgNz9FvpiAsaszvX9ZQ+VjyC0iG2tmC8BJWcbEUlpCRcERSxsIIjLAghy+jKEMfHZnFqYrZFrWkd7exYuNz9e8AYsxix3yMB7yERrOvrtDQDNg10hSqul0lQ2ckyNRaA4BX7oiIWBrs7Ah0ZrXQsBFWGKFtfwSNota/slIwgJfWiS016bBvqsQz4tb0dpUbxBNFZqwQKW24u2MAPcoruWt9XupEWNC7L1ldw2hHg4Fjf25Jw8mBnSytKPAb1TescC0FjtlWpbkCYY6H8+3tQxEIrHBxJuGzLgDVPYioEIRcGl2zst9JrH2jDqIW2dCyISDcAz8I8GrWvMeYcnKgGANiZ4Bw7ojYAW1I1/gJAxM5v3FSysRbGrQECjmVGLADAVQECjmv7imuD1lno76oVJhYZh93r+9Cnbr5lG/MeQZPysrVAgnQWyloRrlbEWvVttb6CR5DOQtF9s3GgyxIXbYXRGGTQ725BFIkjjth4PVq1Oh/0XV0pfVO29oWfi9b1Qft5WqGv4BGks7BSHAvbVnjEQndH1RrnrApByIVBtSJWunM76iy06x3Lb2lNxtjfcywkWTI60mT7ToJjXXDo1aWiVxrjsntDn7UaPFjy6mzQin1REQuArbOwc135IdV+HAHHxmvQqoiFVmssAMB1O+3xUJbGAmBfg7IF8cIIWvksWmMhSHejFddj80A3ejoanW9hFQmKRESwWzmJW9EOIDhioxV9o8eHIwJbbtSbn85aBTtVBForKkJ4XLp5wHLObS3xfuaxa32ftfq/0iMWAFtngakQhFw46FTf++lYaBv8s9P5GPvPuX9X/q/SCkFXYLhx97oWtaQREcFLr2oMFomqvV0E+3etxYBvFfCKrYPo7rCrE+TFsy/d2PD8pkta3xfPvayxTTdc3Jo2Xbp5ABv6l506uzf0lV6O7JIN/Q0G0rq+YAG0onjW3kbdkZsvsXVIWsFNu9c3GChXbS/2e+Jxi7oet+wJriZTJJWK4BafHky1InhGi74jz9qzMsbHNTvXNIyHq7evwUDJ0WaAPR5uDtDtKRtdSvmZLbzHVyuC5z5N3d9DqrwUSWetgmf65h0dVQlMO1tp6GsXVkmKELLy0DoL9w2PwRjTota0hta52VuLX00jzlKxZ2nMJDhHs7SJLVjFUQsvv3or7js6hn95+CRu3L0OP3zjRa1u0nl++oX7cHJiDg8Mj+EV12zFs0o2HAa7O/CHb7gOv/fFR9HbWcVvvuaqQs934+51eNcPPA1/890juGzLIH7yeXsLPV8cbr/lYjxxegrfPTSCF16+GS+5qjWZQd0dVfzhG67H+77wMDpqFfz6K68oPX+8UhH8weuvw3v/8SEsLNbxyy+7rBQD2uN1N+zEIycm8PWDZ3Hbvg34wf3bSzt3FGt6O/DBN1yH3//io+jvruG9r76ylPP+xHP2YPjcDB48No5XXbvNcryUxa+98grMLi7hxNgs3vGcPS3Lm3/7s/fgyLkZPDA8hldesxXPUY7Kshjsbs140DxtywB+41VX4hNfP4Rd63vx7pc8rSXt8POzL9yH0xNzOHhqEm+8cadV9qxsfuVll2NqbhFPjUzjR26+GPs2B4sIF817X30VfvUzD+DM5Bx+8vl7SxdhTcMrrtmGB4bH8OWHnLnTm565cuZOhJBoPEdgrSJ42pYBXLNjDeaX6uiqlTenazXSbp4U4LzGguck+Lwx5hVN9p8E0Afgm8aYm3Nqww44KRE4cuQIduzYkcdhCSGEEEIIIYSUSL1ucN/wGC7bMlDqAlEajh49ip07z6+B7zTGRGoOxqUtUyGMMbMAzrpPIy16EVkLx6kAuI4AQgghhBBCCCEEcCJQr9s5tOKdCkXSlo4Fl4fcv3tFJCol5DLf44cLbA8hhBBCCCGEEHLB0c6Ohbvcv30Anh6x33N8j79WXHMIIYQQQgghhJALj3Z2LHzG9/hHg3YQkQqAN7tPRwH8a7FNIoQQQgghhBBCLiza1rFgjPk2gDvdpz8mIkGijD8P4HL38YeMMQulNI4QQgghhBBCCLlAaNdykx4/Aye9oQfAl0TkfXCiEnoAvBHAj7v7PQbgAy1pISGEEEIIIYQQsoJpa8eCMeYeEXkDgL8AMAjgfQG7PQbg5caYiVIbRwghhBBCCCGEXAC0bSqEhzHmHwBcA+CDcJwI03D0FL4L4BcBXG+MOdCyBhJCCCGEEEIIISuYto5Y8DDGPAXgne5GCCGEEEIIIYSQmLR9xAIhhBBCCCGEEELSQ8cCIYQQQgghhBBCUkPHAiGEEEIIIYQQQlJDxwIhhBBCCCGEEEJSQ8cCIYQQQgghhBBCUkPHAiGEEEIIIYQQQlLDcpOto+o9OH78eCvbQQghhBBCCCGkDVC2ZzVsv6SIMSavY5EEiMgNAL7T6nYQQgghhBBCCGlLnmGM+W4eB2IqROvY1OoGEEIIIYQQQgghWWEqROt4xPf4JgDDrWoIWbFswXJUyzMAnGhhW8jKhGOERMHxQZrBMUKawTFCmsExcuFRBbDRfXx/XgelY6F1zPseDxtjjrasJWRFIiL+pyc4RoiGY4REwfFBmsExQprBMUKawTFywfJU3gdkKgQhhBBCCCGEEEJSQ8cCIYQQQgghhBBCUkPHAiGEEEIIIYQQQlJDxwIhhBBCCCGEEEJSQ8cCIYQQQgghhBBCUkPHAiGEEEIIIYQQQlJDxwIhhBBCCCGEEEJSI8aYVreBEEIIIYQQQgghFyiMWCCEEEIIIYQQQkhq6FgghBBCCCGEEEJIauhYIIQQQgghhBBCSGroWCCEEEIIIYQQQkhq6FgghBBCCCGEEEJIauhYIIQQQgghhBBCSGroWCCEEEIIIYQQQkhq6FgghBBCCCGEEEJIauhYIIQQQgghhBBCSGroWCCEEEIIIYQQQkhq6FhoASKyS0Q+ICKPiMiUiIyIyHdE5F0i0tvq9pFGROQGEfk1EfmSiBwVkTkRmRSRx0Tk4yJya8LjvVREPu071lH3+UsTHKMmIu8QkTtF5LSIzIjIQRH5UxG5MsFxNojIe0XkPhEZd7f73P+tT/K5iI2IvF9EjG97boz3cHysckTkIhH5DRH5rts/syJyxO2v94rIVU3ezzGyShGRThF5q4h8UUSO+35vHnV/b26JeRyOkQsIEdkkIq9wr8k/icgZ3+/GHSmOt+r6X0Sucs990G3Labdt7xCRWtzjXIjkMT5EpFdEXisifyKOzXFORBZE5KyIfENE3iMiWxK0qVdE3u0ea0Qce+YRceybXQmOk4tNJCK3iMhfiMhT4vymnnDvoz8c9xgkB4wx3ErcALwSwBgAE7I9CmBvq9vJ7Xx//XtEX/m3TwDobHKsCoCPNTnOnwGoNDnOBgDfjjjGLIC3xvhszwRwPOI4xwDc2Oo+uFA3ANcBWFDX9LkcH+29AfgpAJNN+vkPOUbabwOwC8ADTfrXAPgjAMIxsnq2Jv11R4LjrMr+B/A2AHMRx/kWgA2t7seVOj4AXANgIsa9ZQzAG2Icby+Ax5oc5xUxjpOLTQTgPQCWIo7zjwC6W92P7bC1vAHttAG4HsC0O8gnAPwKgJsBPB/AR9UXaaDV7eVmAOCA2yfDAP4QwH8A8AwANwH4OQBHff32l02O9du+fe8G8Eb3WG90n3uvvS/iGFUAd/r2/TsALwFwIxyD5aT7/yUAL404zk4Ap9x9FwC8H8Bt7vZ+LBvEJwHsaHU/XGgbnMndt33X0Ouv53J8tO8G4L+p+/wvAHgOHCfUC9znXwPwBxwj7bUB6ECjU+FeAD8C57fmRQB+A40OqV/iGFk9m+9aGwBPAfii7/kdCY6z6vofwMuwbDSecNtwo9umv/O1804A1Vb35UocHwBu9e1/F4BfAvBCOHbJiwH8T981XmzSrwNwfr+8430Ujh1zMxy7xnNgTAG4LuI4udhEAN7u2/cAgLe4Y/7VAL7iey1yjs4tp7Ha6ga004bl1e8FADcHvP4u3xfgPa1uLzcDOF7O14f9WMHx6vtvsM8O2e9S34/odwD0qNd73f974yPQQ+veML1zfTjg9b1Y9v4+DqAWcpxP+o7zuoDXX5/kR4ubdf1+1r12DwN4n+9aPpfjoz03OI4D75p9AkBHxL5W9BPHyOreAPyQ73p9Peg3B8DTAcy7+5zTfcMxcuFucBxHrwCw2X1+cdJrsxr7H47D7aC7zxiAPQH7fNh3nNtb3ZcrcXwAuAXAXwG4ImKfVwOoY9lAD4uKeq/v3O8KOZc3Dr8acb7MNhGAdQBGsexw2aBerwL4nO84z211X672reUNaJcNjnfVG9j/M2SfCoCHsDxpCJ14cls5m3uz9/r2j0L2+Yhvn5tC9rkp6sfc3ccbH2cB9Ibs80tNfsy3YNkz/X8jPtf/xfKqxJZWX+cLZQNwEZY99s+BE6IX+aPG8bG6N/fe7oWNfh8hE/Emx+AYWcUbgD/wXfNXRuz39779ruYYWZ0b0jkWVl3/o9H5EBal0wtgxN3nwVb33UodHzGP+7e+4+4PeL0Dy4b8QwhJqYETAeEd5xkBr+diEwF4t+84bww5zg44URgGwOdb3XerfaN4Y3m8xvf440E7GGPqcDy8ADAE4HnFNonkxL/6Hu/RL4qIwPEEA8AjxphvBh3E/f+j7tNXu+/zH+dSAJe7T//aGDMd0p47fI9/MOD1V2FZuDVwLKrjVNz3kHh8GEA/gE8YY/6t2c4cH23BiwHscx+/3xizmOTNHCNtQafv8RMR+x0Meg/HSHuzivv/NSHnPI/bxr92n17hfgaSjsj5LBy7ZI37+BOu3RLEHb7HQePjNb7HWWwi7zjjcJyuQcc5CuCf3acvEJGBoP1IPtCxUB5e5YApAN+L2M9viDyruOaQHOnyPV4KeH03gG3u42aGpvf6djgeaT+3BuxnYYw5AWd1FAgeQ7GOA47FxIjI6+FEsIzAyZePA8fH6ud17l8DJ70KACAi60Rkn4isa/J+jpHVz6O+x5dE7OdN9g2cMHQPjpH2ZrX2v3ecR91zpj0OiUez+Wzcfv0uHP0EILpfU9tEItIJJ/IBAL5hjJmPcZwuADdE7EcyQsdCeXge4ANNVqseCXgPWdk8x/f44YDXr/A9fiTgdYS8rvs/zXF2ikhfyHHGon6ojTHH4XiBg9pCFCIyBOBD7tNfNMaciflWjo/Vz03u30PGmAkReZOI3A8n1PgxAGfFKSf4CyLSFfB+jpHVz//G8rX6RRGp6h1E5HoAL3ef/qUxZtz3MsdIe7Pq+l9E+uEIQCZpi3Uckohc5rOunXPAfRrUH3nYRJfC0VCIbEuM45AcoWOhBESkG47IH+BUEQjFGHMOjgcPWL6hkhWKiFTg5Bp6/HXAbjt8jyP7H8AR32Pd/2mOI+p9/uM0O4b/OByLzfldOHmlXwPwvxK8j+NjFePeIy5zn54RkQ8B+BSAq9SulwL4PQBfcZ1UfjhGVjmuI/I/wVnlexaA74jIm0XkJhF5oYj8OpxVt0446v4/rw7BMdLerMb+z+szkRiIyLVYdlzeb4wJcix4fTJljBltckivTzb6HeY52kQcHysQOhbKwZ/PMxljf+9L1F9AW0i+/ByWQ7H+3hgTFNKVpP+nfI91/+d9HI7FnBCR2wC8FY5A0DuMcRSDYsLxsbpZg+Xf2qsB/DScuu7/EY6idS+cVSIvJ/oWAH+ujsEx0gYYYz4Hp/LDx+CUIP0EgG8A+DIcEdhpOBVnbjPGnFRv5xhpb1Zj/+fVFtIE1/D/GJYjAP5ryK5p+hVo7JO8bCKOjxUIHQvl0O17HJUD5DHn/u0poC0kJ0TkOQB+x316CsBPhOyapP/nfI91/+d9HI7FHHDz/D4KZ9Xmg8aYBxIeguNjdeMPEe6GYxw+zxjzKWPMOWPMjDHm3+HU7r7X3e8HReSZ6n0eHCOrFPde8mY4InwSsMtmOA6pFwa8xjHS3qzG/s+rLaQ5f4xl7YFPGGP+IWS/NP0KNPZJXjYRx8cKhI6Fcpj1Pe4M3WsZL2RopoC2kBwQkSsBfBpADU7/vs4Ycypk9yT978+v1v2f93E4FvPhV+CEuh+GU2s6KRwfq5tZ9fxjxphH9U7GmBk0rhK9IeQYHCOrEDdH/Z8B/DKcSJbfhZML3AUn6uXFAO6CM/n/jIi8Ux2CY6S9WY39n1dbSAQi8stwIi4B4DsA/kvE7mn6FWjsk7xsIo6PFQgdC+Uw4XscJwTHW+GKEyJESkZEdgP4EoC1cFRz3+iuOIaRpP/9q5u6//M+DsdiRkTkMjiGAAD8lDFmKmr/EDg+VjcT6vmXIvb9FzjpNADwjJBjcIysTt4D4Db38Y8ZY37RGPOIMWbeGDNujPkynHJr/wonmuH33JxoD46R9mY19n9ebSEhiMjbAbzPffoIgJc1mcek6VegsU/ysok4PlYgdCyUgDFmFo76N2AL3DQgImux/AU4ErUvKR8R2QZnVWkbnHJfbzHGfLbJ2/yiMpH9j0ZRGd3/aY5jYIvaeM+bHcN/HI7FYH4Ojqf8CQC9IvJGvaFRpO/5vte87znHxyrGGDMH4LTvX6HXyv2t8KqJbPS9xDGyihERAfAW9+ljxphPBO3nqqf/qvu0AuB238scI+3Nauz/4RRtCToOCUBEfhjAR9ynTwF4UYxqVl6/9gWIDGu8Pjnt/g4CyNUmymvMkxyhY6E8HnL/7hWRWsR+l/keBymykhYhIhvgiGh5NcZ/yhjzyRhvfcj3+LLQvezXdf+nOc6RAO+zd5w1IrIl7AAishXAYEhbiIMXXncJnHJxQdt/8O3/q77/e4Yjx8fq50HfY6uMoMJ73V+Ci2NkdbMZTvoDANzTZF+/QLC/DzlG2ptV1//GmAksG4FZPhNRiMirAHwSjh14HMALjDFxKnjEGh+unbPHfRrUH3nYRI/BiRqObEuM45AcoWOhPO5y//bBUX0Ow19D9mvFNYckQUTWAPgilmv4/pIx5sMx3/4kgGPu4+dE7Qjg2e7fYQCH1Gt3+R6HHsf9Eb/UfRo0hmIdBxyLZcHxsfrxp0pdEraTiAxiuQyXf7WOY2R143ciRU2yAaAj5H0cI+3Nau1/7zhPi3JQxDgOcRGRF8ApjV6DEznwImPMwZhvj9uvN2A50iCqX1PbRMaYeQDfdp/e7IrfNjvOHIDvRuxHMkLHQnl8xvf4R4N2cOudv9l9Ogonl5K0GBHpBfB5APvdf/2WMeb9cd/vlh700iUuE5GbQs5zE5a9qp/VJQuNMY9h2dP6erddQdzue/zpgNc/B6DuPg4ci+o4dfc9RGGMud0YI1EbGgUdn+d77ZB7DI6P1c/f+R7/YMR+P4jlagB3ev/kGFn1jAAYdx/f3GQFzz/RftJ7wDHS3qzi/v9MyDnP47bx9e7Th9zPQAIQkVvgjJMuAGMAfsAY82D0uxr4qvs+APgRN40riNt9j4PGx2d8j7PYRN5xBgG8NuQ4O7BcSedf3EgYUhTGGG4lbXBWrQyABQA3B7z+Lvd1A+A9rW4vNwM4+fNf9PXLH6Y8zqVwVpcMHNXdHvV6j/t/b3zsCznOW3xt+eOA1/fAuekbAI8DqIUc55O+4/xQwOuv871+R6v74ULe4IiyedfyuRwf7bkB+IJ7vZbghJ3q17fACfs1cFZVtnOMtM8G4C991+vXQ/ZZCyetxtvvxRwjq3MDcHHSa7Ma+x9OhM5Bd58xAHsC9vmw7zi3t7rvVvD4uA7AOfc9kwCelfLc7/Wd+10Br9/sji8D4KsRx8lsE8FJIRt19zkEYL16vQrHYRU5B+OW49hsdQPaaQNwPZwa5gaOmukvA7gJjtLzn/oG/qMABlrdXm4GcFYavX75FwBXwxHjC9sujTjWb/uOdTeccnI3uH/v9r32vohjVOGEkHn7/i2AHwBwI4CfBHASy8bLSyOOsxPAKd9N/XcA3Opuv+P7IztHWQAAEUxJREFUUTgFYEer++FC3hDDscDxsfo3OJN+b1I34/b3bW4f/2csOxUMgHdzjLTXBmcVecrXL5+Do89yPZyJ+s/BEVjzXv9njpHVs7nX5Hbf9gu+63+Xeu32iOOsuv4H8DL3XAbACbcNN7pt+ltfO+8EUG11X67E8QHHGXTS956fRfRc9ioAm0LaMgDHTvGO9adw7Jib4Ng1E+7/pwFcF/GZcrGJALzdt+8BOBEQNwB4FYCv+F77y1b3YztsLW9Au20AXollT2/Q9iiAva1uJ7fz/RXWT2HboYhjVQD8rybv/xiASpM2bYCTVxZ2jFkAb43x2Z4JR7Qn7DjHATyz1X1woW+I71jg+FjlG5zJ4YmIa1oH8JscI+25wQnXPd2kfw0cJ/dajpHVswG4I0a/n98ijrMq+x/A2+BEcoUd51sANrS6H1fq+IDjcIj9fnd7T0R79sIRTwx77xiAV8T4XLnYRHBSTusRx/k8gO5W92M7bC1vQDtuAHYB+AP3CzMFZxXrOwDeDaC31e3j1tBXSW/Eh2Ic82Vw8sKG3R/KYfd5qOc/4Bg1AD8Bx0N/Bs4K6EEAHwVwZYLjbADwmwDuh+MxngBwn/u/9XGPwy3yGr/HNz6ey/HR3huA9e6Y+L47oZqBU670zwFcH/MYHCOrdHPHx7vh5BOfAjAPZ1XvCQB/BeDVAIRjZHVtyMmxsJr7H84q+kfdNsy4bboTwDsQko6xWras4wM5OxbcY/a596rvwLFjpgA8Ase+2ZXgs+ViEwG4BcCnABx2x/xJAF8C8MOt7r922sTtDEIIIYQQQgghhJDEsCoEIYQQQgghhBBCUkPHAiGEEEIIIYQQQlJDxwIhhBBCCCGEEEJSQ8cCIYQQQgghhBBCUkPHAiGEEEIIIYQQQlJDxwIhhBBCCCGEEEJSQ8cCIYQQQgghhBBCUkPHAiGEEEIIIYQQQlJDxwIhhBBCCCGEEEJSQ8cCIYQQQgghhBBCUkPHAiGEEEIIIYQQQlJDxwIhhBBCCCGEEEJSQ8cCIYQQQgghhBBCUkPHAiGEEEIIIYQQQlJDxwIhhBBCCCGEEEJSQ8cCIYQQQgghhBBCUkPHAiGEEEIIIYQQQlJDxwIhhJC2QUS+KiJGRL7a6rbkgYg81/08RkSeuwLac4fblkOtbkurEZH3eH3T6ra0AhF5vvv5T4pIr3rtYt+4vT3DOT7sHuMTmRtMCCEkE3QsEEIIuWAQkT4ReYeIfEFEhkVkVkTmROS0iHxHRP5cRN4mIjtb3VZy4aEcNWm3Q63+HK1GRCoA/tB9+vvGmOmCTvV+APMA/pOIPL2gcxBCCIkBHQuEEEIuCETkZgAPAfgTAC8FsA1AF4BOABsA3ADgRwF8FMB3WtTMVUe7r7yTVLwRwNUAzgD4SFEnMcYcBvAJAALgN4s6DyGEkObUWt0AQgghpBkicimALwIYcP/1OQB/C+AxOCuWGwBcC+BFAJ4XdhxjzHMLbWibY4y5HcDtLW5GFr4DxyAOYhucMQgAnwXw30L2mwcAY8x7ALwnx7ZdSPxX9++fGmOmCj7XBwC8DcBLReTpxpjvFXw+QgghAdCxQAgh5ELgt7DsVPhRY8wdAft8GcDvi8hGAK8vq2Fk9eAawQ8EvSYik76no8aYwP3aHRF5EYAr3Kd/UfT5jDGPisjdAPYD+Clc2I4tQgi5YGEqBCGEkBWNiFQBvNx9+t0Qp8J5jDGnjTEfLrxhhJAgfsz9e7cx5pGSzvkp9+/rRGQgck9CCCGFQMcCIYSQlc5GAD3u4wNZDhRVFSJIqV5EXisiXxKRUyIyJSL3ishPiUiH730iIm9yj31KRKZF5G5XZFJC2hFbFV9EDrn73ZHyM98kIv/dbd8JEZkXkXEReUhE/kRErgh53+2ursKv+/4XJFZ4se/1WFUhRORqEfmoiDzuXq8JEXlQRD7oP17A+4L66EUi8g/uZ5sTkSfdz7Uj0YXKmWbaFLpfRWS/iHxKRI6IyIyIHBCRPxCRDep9t4jI34jIYVe89KCIvD+OQS0iVRH5ERH5RxE55l6vsyJyl4i8U0R6mh2jyfG7AbzKffp3Cd+bpR+9c/UCeHWS8xJCCMkHOhYIIYSsdOZ9jy8v66Qi8hE4BsuL4Dg3egFcA+CPAPwf10jrAvDXcFZMn4NlJ8j1cEQm/7Ss9gbhGt/fgJPz/hwAmwF0wEkruRzAOwDcJyL/ucQ2/TKA78PJi98L53r1wwmf/1kAj4jIm2Me67cBfAnAK+B8tk4AF8P5XHeLSGnjJQsi8p/g9NObAOwA0A1gD4CfA/A1Edni7vcLAO4C8EMAdsIRL70EwLsBfFVE+iPOcRGA7wG4A04E0FY412sdgGfB0Sq4Txw9k7Q8E8tOwG/GfVPWfjTGPAXghPv0pcmaTAghJA/oWCCEELKiMcaMAHjKfXqtiPyiOOXsiuQdAH4CwBcAvBbA0wG8BsC33NdfC6cCxe/BMfL+Eo5R9HQ4ivheCPjbROQlBbc1ihqAc3CMybcAuA1OLvorAPwaHNX+KoA/FpHnq/d+Bo6Q4Z/4/nd1wDYctzGuA+N9cOYfpwH8AoCbAdwKR+hwCo6xfIeIvKzJ4d4G4JcA/Bscg/wGAC8E8En39Y0A/jxu21rItQA+Bica5y0AngHg+VjWJ7gUjnbIa+GMt28B+P/gfN6XwBmjgNOvgYKSIrIejkPiWgBzAP4YwOvccz0PwG8DmIbj6PknEVmT8rPc5v41cJwYccirH7/t/n1OzPMSQgjJE2MMN27cuHHjtqI3AD8Px1jxticBfAjAGwDsTnCcr7rv/2rAaxerc3wwYJ9eAIfc188AqAP4mYD9tgAYd/f7bJNz3d6kzd757gh47bm+4zw34PXtAHojjr0GwL3u++8M2ec93jliXN873H0PBby2EY7jwMBxRuwM2Od6AJPuPkcBdDTpo48CkIDj/Jlvn+tzGoP+c1t9kfS6+frVAPhaUD8B+Bv39UUAZ+FUQqmqfapwoh28MVkLOM6nvH4J+76oa/9bKa/RF9z3H0hwLXPpRziOMm/fzXn0OTdu3Lhxi78xYoEQQsiFwAfRuGp5MYCfBvB/ADzh5mX/HxF5ZZiuQUKOwAkvb8AYMw3gE+7T9QC+ZYz5UMB+JwB82n16m369LIwxw26bw14fg2OQAcCt7sp2UfwoHMcMALzTGHMkoD33wFk9BxynyGsijnccwE8ZY4I0DH7f97hl1z8mBsBbQ/rpI+7fKpz0iB83xiw1vNl5/lH36XosV2QA4OhSwHHAAcBPGmOeDGyEc+090dPbk32E83h6CKcSvCevfvSf85IE5yeEEJIDdCwQQghZ8Rhj6saYHwPwYgD/F84Krp/NcIynzwH4tojsyXjKvzfGLIS8dq/v8V9FHMPbb62IDGVsTy6ISJ8rgHiliFwlIlcB8H/Oaws8/Qvdv6MA/j5iv48FvCeIvzXGzAW9YIx5FM7qO7Dyjcz7jDEPh7zmH2tfNk5aULP99Od9ORzHxDSAf2rSln93/25zNRmSstH9ey7Be/LqR/+12ZLg/IQQQnKg1uoGEEIIIXExxnwZwJdFZBCO4Nwz4ORkPxtOWD/c53eKyNONMcdTnuqxiNdGU+w3oJ6XhltV4J0A/gOAfQCiIjo2RLyWlavcv3dHOG1gjDnpVpW42PeeIJqVMjwHRxRypZcfLGKs+bnB/dsLYDFBQM8WAIfj7uyyzv2bxLGQVz/6z9mX4PyEEEJygI4FQgghFxzGmHE4q6//BABudYY3wVG2XwtH8f43Abw15SlC0wfg6Cok3a+ash2ZEJGnA/ginBD5OGQqN9gEz+iMEyZ/Ao5jYV3EPlHXHli+/i259gmISlWp+xwBacfappTt6m2+i8UsnIoOScZRXv3oP2eo44oQQkgx0LFACCHkgscNpf64iByDkyoBAK8VkR83xtQj3rpqEZFOOKUw18MxtP4HgM/CWfk+54Wfi8glAA56byuhaUG59KQ4PIP8DJwKEHEJ1GJowmkAg4h2CBWF/5yjLTg/IYS0NXQsEEIIWTUYY74oIkcA7IQTubAejrGz0vA7O5rpHaUN634+lvPS/7Mx5mMh+5VlBI7AiSTZHGNfL0c+TFOAxOes+3cAwMNa/DFnTgPYA+e7Vzb+cyZN4SCEEJIRijcSQghZbRzzPV6pq+MTvsehRpiIrEP8NAbNlb7HUSKTN0S8BuR3DR9w/+4XkdCFDRHZBGCXeg9Jzz3u3y407+us3O/+3SMiZc8xL3X/zgE4UPK5CSGk7aFjgRBCyKpBRHqxXG5vHMurtSsKY8w5LIdrRxl7b0T69AS/8R4Y9eAaf29rcpxZ3/5dKdsCAP/s/h0C8NqI/X4My5/5nyP2I/H4Byw7h3624HPd6f7tB3B5wefSPMP9e0+UOCghhJBioGOBEELIikZE+kXkWyLyiqhVUPe1/4Fl9fjPGWNWasQCsFza79VB5TFF5GlwBCjT8rjv8e0h+/w2gP1NjuOvrJGljOfHsSzU9wER2a53EJFrAfyK+3QYwGcynI/gfMnGv3GfvlFE3hm1v4jsFpEfTnm6O32Pb0x5jMS4Dq9r3KdfKuu8hBBClqHGAiGEkAuBG+GsvA6LyGcAfAPAU3BSCoYAXA/gLQCudvcfA/CrpbcyGR8B8Co4avZfFZH3wAlb7wfwAgA/AydnfQnAxhTH/yKcCgybAPx3EbkYwKfhiPjthROp8AIAX4NTujOMr/sef1BEfguOs8Fz2hwyxiw2a4wx5rSIvAvAhwHsAPA9Efkd9/g1AC8E8C44n98A+HGuPOfGT8CJjLkEjlPn1QA+CeBBOKkD6wFcC+AlcLQ5Pg3gfyc9iTHmkIjcB8fIfwEcZ1IZPBtAh/v40yWdkxBCiA86FgghhKx0FuGUH9wCYDuA/+JuYTwO4IeNMYeKb1p6XKHJPwLw03AMbS2ueBiO4+GfUh5/SkTeDGfVvxvA293Nz1cB/CQitAyMMQdE5K8BvB7Ai93Nz24Ah2K26SMiMgQnEmMzgA8G7DYHx6nwhTjHJM0xxoyIyLPgVAm5DY4h/uyIt4xnON2fwYkcerWI9BpjmpWTzIM3uX8fNMZ8v4TzEUIIUTAVghBCyIrGGDMLx6HwLAC/DsfQfgLAFJzV/HEAj8ARKHwTgKuMMd9rTWuTYYz5GTht/nc4n2MGwKMAfgfAfmPMwxmP/0U4K9V/AUfUcgFOFMS/AfhxOKvKUzEO9R8BvBvAt+FEg6Qu4WmMeR+cCJM/g1PmcsZtw8MAPgTgMmPMJ9MenwRjjDlhjHk2gFcA+BSc79A0lsfE1wF8AMBzjDFvyXCqv4DTp/1wHGOFIiLdWNbs+EjR5yOEEBKMrOz0U0IIIYQQciEhIh+Bk37xz8aYFxV8rv8I4P+HI9R6sTFmssjzEUIICYYRC4QQQgghJE/eCycK5YUiclNRJ3EFWz2xz9+jU4EQQloHHQuEEEIIISQ3jDEnsKyf8WsFnup1cMpaHgbwRwWehxBCSBMo3kgIIYQQQvLmd+EIr6JAEccqgN8A8BVjzEwBxyeEEBITaiwQQgghhBBCCCEkNUyFIIQQQgghhBBCSGroWCCEEEIIIYQQQkhq6FgghBBCCCGEEEJIauhYIIQQQgghhBBCSGroWCCEEEIIIYQQQkhq6FgghBBCCCGEEEJIauhYIIQQQgghhBBCSGroWCCEEEIIIYQQQkhq6FgghBBCCCGEEEJIauhYIIQQQgghhBBCSGroWCCEEEIIIYQQQkhq6FgghBBCCCGEEEJIauhYIIQQQgghhBBCSGroWCCEEEIIIYQQQkhq6FgghBBCCCGEEEJIauhYIIQQQgghhBBCSGroWCCEEEIIIYQQQkhq6FgghBBCCCGEEEJIauhYIIQQQgghhBBCSGroWCCEEEIIIYQQQkhq/h+ZB26LL2PlmgAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" + "cell_type": "markdown", + "id": "a78686b8-3cc9-4ab2-a732-45afb3167017", + "metadata": {}, + "source": [ + "### Insufficient Substructure Fabrication" ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "fig = plt.figure(figsize=(6,3), dpi=200)\n", - "ax = fig.add_subplot(111)\n", - "\n", - "ax.plot(total['time'], total['storage'], label=\"Storage Required\")\n", - "\n", - "ax.set_xlim(0, ax.get_xlim()[1])\n", - "# ax.set_ylim(0, 5)\n", - "\n", - "ax.axhline(4, ls=\"--\", lw=0.5, c='k')\n", - "\n", - "ax.set_xlabel(\"Simulation Time (h)\")\n", - "ax.set_ylabel(\"Substructures\")\n", - "\n", - "ax.legend()" - ] - }, - { - "cell_type": "markdown", - "id": "2fe95e59-8405-4493-a117-bf147eb2af99", - "metadata": {}, - "source": [ - "### Increased Substructure Fabrication" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "685864c6-b73d-4344-9700-8c9f7daecddd", - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Installation Time: 7850h\n" - ] - } - ], - "source": [ - "config = deepcopy(fixed_config)\n", - "\n", - "config[\"jacket_supply_chain\"] = {\n", - " \"enabled\": True,\n", - " \"substructure_delivery_time\": 250,\n", - " \"num_substructures_delivered\": 2,\n", - "}\n", - "\n", - "project = JacketInstallation(config, weather=weather)\n", - "project.run()\n", - "\n", - "df = pd.DataFrame(project.env.actions)\n", - "print(f\"Installation Time: {project.total_phase_time:.0f}h\")" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "e01ca9cc-9603-4d89-b781-4e646246263d", - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 54, + "id": "e03c5be5-8636-4b11-a731-70dd19b0797c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installation Time: 12981h\n" + ] + } + ], + "source": [ + "config = deepcopy(fixed_config)\n", + "\n", + "config[\"jacket_supply_chain\"] = {\n", + " \"enabled\": True,\n", + " \"substructure_delivery_time\": 500,\n", + " \"num_substructures_delivered\": 2,\n", + "}\n", + "\n", + "project = JacketInstallation(config, weather=weather)\n", + "project.run()\n", + "\n", + "df = pd.DataFrame(project.env.actions)\n", + "print(f\"Installation Time: {project.total_phase_time:.0f}h\")\n", + "\n", + "# Insufficient fabrication caused a ~5k hour delay" + ] + }, { - "data": { - "text/plain": [ - "" + "cell_type": "code", + "execution_count": 40, + "id": "e7cab6f9-cddd-4eb6-a613-4e42728799c2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABBYAAAJOCAYAAAADL4QKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAB7CAAAewgFu0HU+AACEnUlEQVR4nOzdd5wU9f3H8ffn6L0X6aCCIigqIk1Bo2LDii0aQA0KlhgTYy9ofrHEBDsYFA6NFWPDCmpQUDGgoIAoiIB06VLl4O77+2Nml7273b29va13r+fjMY+d3fnOdz47873bnc9+5zvmnBMAAAAAAEA8ctIdAAAAAAAAyF4kFgAAAAAAQNxILAAAAAAAgLiRWAAAAAAAAHEjsQAAAAAAAOJGYgEAAAAAAMSNxAIAAAAAAIgbiQUAAAAAABA3EgsAAAAAACBuJBYAAAAAAEDcSCwAAAAAAIC4kVgAAAAAAABxI7EAAAAAAADiRmIBAAAAAADEjcQCAAAAAACIG4kFAAAAAAAQNxILAAAAAAAgbiQWAAAAAABA3EgsAAAAAACAuJFYAAAAAAAAcauwiQUzczFOH6c7VgAAAAAAMlWFTSwAAAAAAICyq5zuADLAGEmjoyzfkapAAAAAAADINiQWpHXOufnpDgIAAAAAgGzEpRAAAAAAACBuJBYAAAAAAEDcSCwAAAAAAIC4mXMu3TGkhZkF3vgCSSapnaR8SWslfS5pgnNuahnqb1VCkaqSDpK0TtJ6f9sAAAAAACRLJUlN/Pl5zrndiaiUxEJ0b0ga6pz7JUn1AwAAAACQDkc5575MREUV+a4QOyVNkvSRpO8lbZeXueknabikRpLOkvSmmZ3onNuTpjgBAAAAAMhYFbnHQn3n3JYIy5pJek/S4f5L1znnHi1l/SVdCtFS0heSNHPmTO23336lqR4AAAAAgFJZs2aNevToEXjazjn3UyLqrbA9FiIlFfxlP5vZIHk9GapIulZSqRILzrmV0ZabWXB+v/32U6tWJeUhAAAAAABImISN88ddISJwzi2R9IH/9AAza5HOeAAAAAAAyEQkFqJbEDLfMm1RAAAAAACQoUgsRFcxB6AAAAAAACBGJBai6xwyvzptUQAAAAAAkKFILERgZu0lneg//dE5tyqd8QAAAAAAkIkqZGLBzAaaWcQ7Yvi3m3xVUlX/pdEpCQwAAAAAgCxTUW83+ZikKmb2qqQZkpZJ2iWpsaT+kq705yXpU0lPpD5EAAAAAAAyX0VNLEhSC0nX+lMkr0r6vXNud2pCAgAAAAAgu1TUxMIQSf0k9ZLUQV7vhLqStktaIelzSc8452akLUIAAAAAALJAhUwsOOc+kfRJuuMAAAAAACDbVcjEAgAAyE6//vqrtmzZop07dyo/Pz/d4QAAkFKVKlVSzZo1Vb9+fVWvXj3d4QSRWAAAABnPOac1a9bol19+SXcoAACkzd69e7V7925t3rxZ9erV03777SczS3dYJBYAAEDm27hxY7GkQuXKfI0BAFQse/fuDc7/8ssvqlq1qho3bhxljdTgExkAAGS0vLw8rV+/Pvi8adOmql+/vipVqpTGqAAASL38/Hxt2bJF69atkyStX79edevWVdWqVdMaV05atw4AAFCC7du3B+cbNWqkRo0akVQAAFRIlSpVCn4WBoR+TqYLiQUAAJDRduzYEZyvW7duGiMBACAzhH4ehn5OpguJBQAAkNHy8vIkSWamatWqpTkaAADSr1q1asFBGwOfk+lEYgEAAGS0goICSV73z0wY+RoAgHQzs+BlgYHPyXQisQAAAAAAAOJGYgEAAAAAAMSNxAIAAAAAAIgbiQUAAAAAABA3EgsAAAAAACBuJBYAAAAAAEDcSCwAAAAgI3388ccyM5mZPv7443SHgyyWl5enAw88UGam//znPwmr95VXXpGZqWPHjtqzZ0/C6s00y5YtC/4tTpgwodjyCRMmBJcvW7Ys5fFls/Ky70gsAAAAoJgdO3boySef1KmnnqqWLVuqevXqqlatmpo0aaKjjjpKl112mZ566imtWLEi3aECJXrkkUe0ePFidenSReeee27C6j333HPVuXNn/fDDD3rsscfKXF/oSWboVKVKFTVu3Fj777+/TjjhBN1888167733VFBQkIB3AZQdiQUAAAAUMmPGDHXu3FkjRozQe++9p9WrV2v37t3Ky8vThg0b9OWXXyo3N1dXXHGFjjrqqHSHm1SBE7uRI0emO5SE69+/v8xM/fv3T3coSbVt2zY98MADkqTbb79dZpawunNycnTbbbdJku6//37t2LEjYXWH2rt3rzZu3KglS5boo48+0gMPPKBTTz1V7du315gxY5KyTaA0SCwAAAAgaNGiRRowYICWL18uSTrjjDP07LPP6osvvtDs2bM1ZcoUPfjggzrppJNUpUqVNEcLlGzMmDHauHGj2rRpo/POOy/h9V9wwQVq2bKl1q9fr3/9618Jq/f//u//NG/evOD02Wef6a233tLdd9+t3r17S5KWL1+uq666Sqeddpp27dqVsG2X1tChQ+Wck3NO7dq1S1scSJ/K6Q4AAAAAmeO2227Ttm3bJEm5ubkaOnRosTInnniibrjhBq1fv14TJ05McYRA7PLz8/X4449Lki666CLl5CT+d9VKlSrpggsu0KhRo/T444/rj3/8Y0K207JlS3Xp0qXY66effrruvPNOff7557rkkku0dOlSvfvuuxo6dKheeumlhPbIAGJFjwUAAABI8k7C3nnnHUlS9+7dwyYVQjVp0kRXX311CiID4vPBBx8ExwG5+OKLk7adQN1Lly7V1KlTk7adUL1799bMmTPVqlUrSdLEiRP1xhtvpGTbQFEkFgAAACBJWr9+fbA79QEHHFCmumIdm6A01/kXFBToqaeeUu/evdWwYUPVqlVLhx12mO677z79+uuvUdddtGiRrr32WnXp0kV16tRR1apV1aJFC3Xr1k2XXXaZXn75Ze3evTtYvl27doV++b377ruLDagXmngpegeLgoICjR8/Xscdd5yaNWumnJycQuUD9ZeUvBk6dKjMrMTu5evXr9c999yjPn36qGnTpqpSpYoaNGigo48+WjfeeKPmzp1brM5PPvlEkvTJJ58Ue2+h2yvpjgChor2voqPf7969Ww8//LB69uypxo0bR2wvU6dO1ZAhQ9ShQwfVrFlTdevWVdeuXfWXv/xFq1evjhpPoEfNgQceqK5du0Yt+9VXX+nyyy9Xx44dVatWLVWvXl2tW7fWkUceqauvvlqTJk2Scy7sukcccYTat28vSXrxxRejbieRGjduXOjyi/vuuy9q+cWLF+v6669X165dVa9ePdWoUUMdOnTQ0KFD9eWXX8YdR6Q7G0ybNi34+lNPPVViPffdd1+w/IIFC8KWmT17toYPH65OnTqpdu3aqlWrljp16qQRI0Zo0aJFMceYivYnSZs3b9bNN9+sgw46SDVq1FDTpk11wgkn6JVXXilx3WzCpRAAAABxKChwWrBmqzbvzFODmlXVeb+6ysnJ7i7IVatWDc5/9913aYykuLy8PJ122ml6//33C70+d+5czZ07V88995w++ugjNW/evNi6r7zyii655BLl5eUVen3NmjVas2aNvvnmG+Xm5mrevHlhu56X1q+//qoBAwboww8/LHNdsXj++ed15ZVXFhs4cMuWLZo5c6ZmzpypiRMnZtSt7DZs2KCzzz5bX3/9dcQyv/76qy699FK99NJLxZbNnz9f8+fP15gxY/Tiiy9q4MCBYesI9B7o2bNn1Hgeeugh3XDDDcXusrBy5UqtXLlSs2fP1ujRo7Vt2zbVrl07bB1HH320li5dWqyNJtspp5yiTp06aeHChZo1a5ZWr16tFi1aFCv3j3/8Q7feemux22IuXbpUS5cu1bPPPqvbb79d99xzT8JiO+aYY9SmTRstX75cL7zwgoYNGxa1/AsvvCBJ6tatmzp37lxoWUFBgW644QY9/PDDxRI8ixYt0qJFi/T000/riSee0BVXXBF1O6lqf999951OOOGEQgmIX3/9VR999JE++ugjXXrppTr22GOjxpotSCwAAACUQkGB07Mzlmn8Z8u0fNPO4OttGtbUZX3aaXCvdlmbYGjYsKHatm2rn376Sd98840eeOAB/eUvf0nKdemldfvtt2vWrFk66aSTNGLECLVu3VorVqzQ6NGj9cEHH2jBggUaOHCgvvjiC1WqVCm43s8//6xLL71UeXl5atq0qa655prgL5S7du3S4sWL9cknnxTrQj5lyhTl5eUFf+UeMWKErrrqqkJlGjRoEDbWm266SXPnztUZZ5yhoUOHqm3btvr555+1devWxO4USf/+9781ePBgSVL16tU1bNgwnXLKKWrevLm2b9+uuXPnatKkSfrhhx+C6/ztb3/TDTfcoEsvvVRffvmlunfvrtzc3EL1hiaZkuHyyy/XvHnzNHjwYF1wwQVq3ry5li9frmrVqkmSnHMaNGhQ8NKcgQMH6vzzz1eHDh2Uk5OjmTNn6p///KeWL1+uQYMG6bPPPlP37t0LbWPlypXBZEq0u5fMnTs3mFRo3769rrnmGnXr1k0NGzbUtm3btHDhQk2dOlVvvvlm1PfUo0cPvfTSS1q1apUWL15c5l4/sTIz/eY3v9HChQslSdOnT9cFF1xQqMyDDz6oG2+8UZJ06KGHasSIETrwwANVv359LVy4UI8//rhmzJihv/71r2rcuLH+8Ic/JCy2iy66SA888ICmTZumVatWqWXLlmHLzp07V/Pnz5cU/rKVa6+9VqNHj5YkHXvssRo6dGiwF8E333yjhx9+WN9++62uvPJKNW/eXGeccUbEuFLR/rZu3aoBAwYEkwoXXHCBhgwZoqZNm2rRokUaNWqUcnNzg+856wVG72RK7SSplSQnya1YscIBAIDwFi1a5BYsWOAWLVqU7lBcfn6B+8OLs13bm96OOF334myXn1+Q7lDj9o9//MMFvqNIcu3atXN/+MMf3EsvveSWLFkScz2B9e+6666o5fr16+ckuX79+hVbNnXq1EKxXHHFFWHruPzyy4NlnnjiiULLxo0bF1w2b968iHHs3LnT7dy5M+73UTTW22+/PWr5tm3bOkluyJAhUcsNGTLESXJt27Yttmz16tWuZs2aTpJr2rRp1Pe3fPnyYq9F2/ehli5dGnxfubm5UctGe1+5ubmF9tHTTz8dsZ6xY8c6Sa5KlSruvffeC1tm06ZN7pBDDnGSXJ8+fYotf/nll4Pbmj59esRt3XHHHU6Sq1Wrllu7dm3Eclu2bHH5+fkRl3/yySfB7b300ksRy0UTuo9K2tehnn766eB699xzT6Fl3377ratSpUqwHRcUFP//lJ+f7y655BInydWuXdtt2rSp0PKS2kBo3EuXLi20bO7cucFlDz74YMT3cNNNNzlJLicnx61cubLQsilTppTYbnbt2uWOP/744N/Lnj17IsaYivZ3ww03BLd17733Fluel5fnTjrppEIxFd13JYnn83HFihWh22zlEnR+m/70MwAAQJZ4dsYyvfl19Gtq3/h6tZ6dsSw1ASXB9ddfr8suuyz4fNmyZXr00Ud14YUXqkOHDmrevLkuvPBCvfXWWxGvN0+GZs2a6aGHHgq77OGHH1aTJk0kKfiLZsDatWsleb0Lol3mUKNGDdWoUSMhsXbs2LHEsSUS4bHHHtPOnV6vmbFjx0Z9f61bt056PKVx/PHH6/LLLw+7zDmnBx54QJL0hz/8QSeffHLYcg0aNNCDDz4oSfrss88K9cqQvB4LAU2bNo0YS6CNdOzYUc2aNYtYrl69elF774RuY8mSJRHLJUOjRo2C85s3by607J///Kf27Nmj7t2766677gp714icnBw99thjqlatmrZv367//Oc/CYuta9euwZ4/zz//fNgyzrng2BT9+vUr1qvh/vvvlySde+65EdtN9erVg3cA+emnn6IOopns9peXl6dx48ZJ8nqI3HzzzcXW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gquuukqTJk3Srl271L9/f40cOVKHH364tm/fro8++kiPPPKImjRpokqVKiXkF+Xhw4frgw8+0Ouvv65XXnlFs2fP1pVXXqkePXqoXr162rp1q77//nt9/PHHmjRpkqpXr65rrrmmWD1nnnmmPvnkE82cOVPbtm0LO4Djww8/rIsvvlinnXaajj/+eB188MGqV6+eNm/erC+//FKPPfZYsLdMuDYieYmgQI+Fs88+u8zvX/J+zQ5NFm3btk0bN27UnDlz9P777+vzzz8PLjv99NM1fvz4sPV07dpV//jHP3T99ddrwYIF6tKli6644godf/zxatasmX799VctW7ZMM2bM0H/+8x+tWbNG8+bNC/5qn0jVq1fXOeecowkTJuiNN94InlRfdNFFUQd/PfXUU3XdddfpkUce0bRp03TwwQdr+PDh6tu3rxo1aqQdO3Zo8eLFmj59ul577TVt3rxZQ4YMiTvORLS/O++8UxMnTtTKlSt100036euvv9bgwYPVtGlTLVq0SKNGjdKsWbPUvXv3qD2BsoZzjikNk6RWkpwkt2LFCgcAAMJbtGiRW7BggVu0aFG6Qyn3du3a5Zo3b+4C31FKmg488ED35ZdfRqxv1KhREddt2LChmzZtmuvXr5+T5Pr161ds/alTpwbLT5482Z100kkR6zvooIPcqlWritUxZMiQmN7L8OHDXX5+frH158yZ46pVqxZ2nSFDhoSNderUqTHt74kTJ7pKlSqFrbtGjRrulVdeCcbftm3biPVMmDDB1ahRI+r7C7f+tm3bXIcOHWIu/4c//CFi/W3atHELFixwbdu2LbZvAnJzc4Plly5dWuL+ycvLcyNGjHBmVuLxa9++fdg6NmzYEDx+zzzzTNgygTYYbcrJyXF//etfI8Y6YcIEJ8lVrlzZrVmzpsT3FknoPoplatu2rXvyySdjqnvs2LGuZs2aJdZZtWpV98MPPxRad+nSpcHlubm5UeMu6dh+8MEHxbY5Z86cEuMvKChwd999t6tcuXKJ76FWrVpu586dccfoXGLa3/z586P+Tx06dGip4woVz+fjihUrQmNo5RJ0fsulEAAAAJDk/Zq4atUqffbZZ7r77rt1yimnqEOHDqpVq5YqVaqkunXr6qCDDtIFF1ygF154QfPnz9eRRx4Zsb7rr79e77//vgYMGKAGDRqoWrVqat++va6++mrNmTMneF/7WFStWlXvvvuuRo8erZ49e6p+/fqqWbOmunbtqv/7v//T7NmzCw0mGfDQQw/pueee02WXXabu3burZcuWqlq1qmrUqKGOHTtqyJAhmj59usaMGRP2F9Nu3bppxowZuuiii9SmTZuwg8vF67zzztPnn3+us88+W02aNFHVqlXVunVrDRkyRLNmzdKgQYNiqmfIkCH68ccfddttt+nII49U/fr1ValSJTVo0EA9e/bUrbfeqvfff7/YerVr19bnn3+u6667TgcffHCJt9p85JFH9MILL+jYY49V3bp1VaNGDXXq1Ek333yzZs+erYMPPjiu/RBJlSpVNHr0aH3zzTe69tpr1bVrV9WrV0+VKlVSvXr11K1bN11++eX6z3/+E3HsgEaNGumcc86RtO/uA0W9+OKLGjt2rH7729+qW7duat68uSpXrqzatWvrkEMO0YgRIzRnzpxgd/xwAnWfffbZhQZPTJTKlSurQYMGateunY4//njddNNNeu+997RkyRJdeeWVMdUxbNgwLVmyRHfffbf69Omjxo0bq3LlyqpVq5Y6duyoc889V08++aRWrVqlAw44IOHvIeD4448vNA5K586d1a1btxLXMzPdeeedWrRokW688UZ1795dDRs2VKVKlVSnTh117txZF198sZ555hmtWbNGNWrUKFOciWh/hxxyiL799lvdeOONOvDAA1WtWjU1btxYxx13nF544QXl5uaWKcZMYi4BA6yg9MyslaQVknfdVjK6GgEAUB788MMP2rt3rypXrqwDDzww3eEAyDL/+9//1LNnT1WqVEk//vhjibedLK2ffvpJ+++/v/Lz8zVjxozgQINAssXz+bhy5Uq1bt068LS1cy4hA2rQYwEAAABAuXX00UfrnHPOUX5+vu67776E13/vvfcqPz9fJ598MkkFVFgkFgAAAACUa/fee68qV66s3NzchN7xYMWKFZowYYIqVaqkv//97wmrF8g23BUCAAAAQLnWqVMnjR8/Xj/++KOWL1+esMuQV6xYoVtuuUUdOnRQ165dE1InkI1ILAAAAAAo9373u98lvM7evXurd+/eCa8XyDZcCgEAAAAAAOJGYgEAAAAAAMSNxAIAAAAAAIgbiQUAAAAAABA3EgsAAAAAACBuJBYAAAAAAEDcSCwAAAAAAIC4kVgAAAAAAABxI7EAAAAAAADiRmIBAAAAAADEjcQCAAAAAACIG4kFAAAAAAAQNxILAAAAAAAgbiQWAAAAAABA3EgsAAAAAAk0YcIEmZnMTMuWLUt3OCnVv39/mZn69++f7lDKjUBbGjlyZLFlH3/8cXD5xx9/nPLYiho6dKjMTO3atUt3KEgxEgsAAACIKC8vTy+++KIGDx6sgw46SI0aNVKVKlXUuHFjHXnkkRoxYoQ+/PBDFRQUpDtUlAPLli0LnigPHTo03eEAiBGJBQAAAIT12muvqVOnTvrtb3+rf//731q4cKE2bdqkvXv3auPGjZo9e7aefPJJnXjiiTr44IP1zjvvpDvkCoNfhtOnXbt2FSrxMXLkyGCyB4iExAIAAACK+etf/6pzzz032JX/xBNP1GOPPaaPPvpIX331lT744AM9/vjjGjBggHJycrRo0SLddttt6Q0aQFpNmDBBzrkKdwkQpMrpDgAAAACZJTc3V3feeackqWnTppo4caL69etXrNwJJ5ygq6++WvPnz9f111+v9evXpzpUAEAGILEAAACAoFWrVumaa66RJNWqVUuffPKJDjrooKjrdOnSRZMnT9YLL7yQihABABmGSyEAAAAQ9NBDD2nnzp2SpHvuuafEpEJATk6OLrnkkojLP/30U/3ud79Tu3btVL16ddWvX1+HH364br/99qg9HYqOeu+c07hx49S3b181atRIdevWVY8ePfTvf/+70Hp5eXl68skn1bNnTzVs2FB16tRRnz59NHHixIjbCh04cMKECZKkV155RSeccIKaNm2qGjVq6KCDDtItt9yiLVu2xLRfosnPz9czzzyj008/XS1atFC1atXUqFEj9e3bV6NGjdKuXbuKrRO43v2ZZ56RJP3000/BmEOncH799Vc9/vjj+s1vfqPmzZuratWqatq0qU444QSNGzdOe/fuLTHmL774Quedd56aN2+u6tWrq3379rriiiu0cOHCsu2MGIU7Rh988IEGDhyo5s2bq1q1amrfvr1GjBihlStXRq1r9erVuvnmm3XEEUeoXr16qlKlipo1a6auXbvqoosu0oQJE7R169Zg+cAdL3766SdJ0jPPPFNsvxe9G8bmzZuVm5urSy65RJ07d1bt2rVVtWpVNW/eXAMGDNDYsWOVl5eX0H1U1BdffKHbb79d/fv3Dx73unXrqnPnzhoxYoQWLFgQdr3A3U3u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BQt08skn68EHHyz0+ogRI4IDqF1xxRXaunVrsXWnTJkSvA69R48eJd6NIVV2796tK6+8MuzAb/fff3/wTgmXXXZZxFvehdOpUyedd955kqSXXnpJo0aNilp+6dKlevHFF4u9Hrhl4rp166KOen/SSScF72Dx4IMPauLEiVG3Fxh3INRZZ50V3N5f//pXLVy4sNh6CxYs0N/+9reodWeK6dOna/HixRGX5+XlBdt87dq11aRJk0LLA/vixx9/jLqdQI+dt956K+zlBj/++KOuvjrGZGUcAtuXvKRPOLfcckuJPSZCb89Z0nuO5tJLLw0mLf/85z9r1apVxcp88803uvfeeyV5/4sCl6kg85FY2OcJSbUlPeOci/7pCQAAKqacHOnsf0mn/N273CFUg3be62f/K2t7KwRceumluueeeyR5J679+/fXgAEDNHr0aE2dOlVz5szRRx99pDFjxuj000/XoYceqg8++KBYPV27dtWf//xnSd4JwxFHHKGnnnpKX375pT755BPdcMMNOv3005Wfn6+qVavqX//6V0rfZzTdu3fXW2+9pT59+ujll1/W7Nmz9f777+uiiy7SbbfdJklq1aqV7rjjjlLXPWbMGHXo0EGSd4LVr18/jRs3Tl988YXmzJmjDz/8UP/85z914okn6oADDtCrr75arI7evXtL8n5xHj58uL744gstXrw4OIV64YUX1LBhQ+Xn5+uCCy7QGWecoeeff14zZ87UV199pffee0/33nuvevXqpUMPPbRYIqlq1ap67LHHJHl3++jZs6fuv/9+ffHFF5oxY4buu+++YDwHHHBAqfdHqn300Ufq1KmT+vfvrwcffFCTJ0/W7Nmz9dlnnyk3N1fHHHNM8GT78ssvL3Zb0MB7nTVrlu6//3598803wf0eerI8ePBgSdLq1avVq1cvjR8/XjNnztS0adM0cuRIHXnkkdq0aVOperyUxoABA4IDT95+++0aPny4Jk+erK+++kovv/yyTjjhBP39739Xnz59otYTeL+S16Np2rRp+uGHH4LvOdplDaGaNGkSTD6uXLlSRx55pB5++GHNnDlTn3/+ue655x717dtX27dvl5lp7NixUW9LiQzjnKvwk6TzJTlJGyU19l8b6b/mJPVPwjZbBepfsWKFAwAA4S1atMgtWLDALVq0KN2hFJaf79zqr51b/F/vMT8/3REl3KuvvuratWvnQr4TRZwOOeQQN3ny5GJ15Ofnu6uuuirquvXq1Qu7rnPOTZ06NVhu6tSpEWPNzc0Nllu6dGnEcnfddVewXFFLly4NLsvNzXVDhw6NGPN+++3nvv3227hjWbNmjTvmmGNi2reXXnppsfXz8/Ndz549I65T1MKFC12XLl1i2t7dd98dNuYHH3zQmVnYdWrWrOnefvtt169fPyfJ9evXL+IxiCb0GAwZMiTq8tzc3Kh1tW3bNmw9oW0g2nTmmWe6nTt3Fqt35cqVrmHDhmHXCX3feXl57qSTTopYf40aNdzEiRPdkCFDnCTXtm3bsO8jUP6uu+4qtqykv4/333/fVa9ePWIM/fv3d/Pnzy9xn55//vkR6wht4yW9F+ec+9vf/uZycnIi1letWjX3zDPPhF03Ece/PInn83HFihWh+7uVS9D5bXan0xPAzOpLClxwdpNzbkOC6m0VbZLUPBHbAQAAaZKTI+13mLT/cd5jlvdSCOecc87RwoUL9fzzz+uSSy5Rp06d1KBBA1WuXFkNGzbUEUccoauuukr//e9/NW/ePJ100knF6sjJydETTzyhadOm6eKLL1abNm1UrVo11a1bV926ddOtt96qH374Iey66Zabm6sXXnhB/fv3V6NGjVStWjV17NhRN954o7799lt17tw57rqbN2+uadOm6e2339bFF1+sDh06qGbNmqpSpYqaNGmi3r17689//rM++eQTjR8/vtj6OTk5mjJlim6//XYddthhql27dtRB9jp27Kivv/5aL7zwgs4991y1adNGNWrUUNWqVbXffvupf//+uv322/XVV1/pzjvvDFvHDTfcoE8//VTnnHOOmjZtqmrVqqlt27a67LLL9OWXX+q0006Le3+k0g033KBXX31VI0aMUM+ePdWmTRtVr15d1atXV7t27XT++efr7bff1htvvBF20MWWLVtq5syZuvzyy3XAAQcUGoMgVJUqVfTOO+/o0UcfVffu3VWzZk3VqFFDBxxwgIYPH67Zs2cHL4tJlgEDBujLL7/UJZdcohYtWgTbV79+/TR27Fh99NFHqlWrVon1PPfcc/r73/+uHj16qF69esFLnOJx6623as6cORo2bJj2339/1ahRQ7Vq1dLBBx+s6667Tt9//32wtweyh7lyMMBKWZjZWEnDJH0m6Rjn7xAzGynpLr/Y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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "deliveries = df.loc[df['action'].str.contains('Delivered')][['action', 'time']]\n", + "deliveries['number'] = deliveries['action'].apply(lambda x: int(x.split(\" \")[1]))\n", + "# deliveries\n", + "\n", + "installs = df.loc[df['action'].str.contains('Grout Jacket')][['action', 'time']]\n", + "installs['number'] = 1\n", + "\n", + "fig = plt.figure(figsize=(6,3), dpi=200)\n", + "ax = fig.add_subplot(111)\n", + "\n", + "ax.scatter(deliveries['time'], deliveries['number'], s=10, label=\"Substructure(s) Delivered\")\n", + "ax.scatter(installs['time'], installs['number'], s=10, label=\"Completed Installation\")\n", + "\n", + "ax.set_xlim(0, ax.get_xlim()[1])\n", + "ax.set_ylim(0, 5)\n", + "\n", + "ax.set_xlabel(\"Simulation Time\")\n", + "ax.set_ylabel(\"Substructures\")\n", + "\n", + "ax.legend()\n", + "\n", + "# Note period of bad weather at ~10k hours" ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" }, { - "data": { - "image/png": "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nL788kvNmDFDEydO1P3336/jjz9eVapUSXNrgZI98cQTWrdundq0aaNzzjkn6eWfd955atmypdasWaN//etfSSv3//7v/zR79uzw8vnnn+vtt9/WnXfeqd69e0uSlixZoiuuuEInn3yytm/fnrS6S2vIkCFyzsk5p3bt2qWtHchsldPdAAAAAGSOW265RZs3b5Yk5ebmasiQIcXSHHfccbruuuu0Zs0ajRs3LsUtBBKXn5+vxx57TJJ0wQUXKCcn+b+9VqpUSeedd55Gjhypxx57TH/605+SUk/Lli11wAEHFHv9lFNO0e23364vvvhCF110kRYtWqT33ntPQ4YM0csvv5zUkR1AMjHyAQAAAJK8L2rvvvuuJKl79+5RAw+RmjRpoiuvvDIFLQPK5sMPPwzPS3LhhRcGVk+o7EWLFmnSpEmB1ROpd+/emjZtmlq1aiVJGjdunN58882U1A2UBcEHAAAASJLWrFkTHrrdsWPHPSor0bkSSjPvQEFBgZ566in17t1bDRs2VK1atXTQQQfpnnvu0W+//RY37/z583X11VfrgAMOUJ06dVS1alW1aNFC3bp10yWXXKJXXnlFO3bsCKdv165doV+Q77zzzmKTAEYGZ4remaOgoEBjxozRUUcdpWbNmiknJ6dQ+lD5JQV4hgwZIjMrcSj7mjVrdNddd6lPnz5q2rSpqlSpogYNGujwww/X9ddfr1mzZhUr89NPP5Ukffrpp8X2LbK+ku50ECnefhWd1X/Hjh166KGH1LNnTzVu3Djm+TJp0iQNHjxYHTp0UM2aNVW3bl117dpVf/3rX7VixYq47QmNzNlnn33UtWvXuGm//vprXXrpperUqZNq1aql6tWrq3Xr1jr00EN15ZVXavz48XLORc17yCGHqH379pKkl156KW49ydS4ceNCl3rcc889cdMvWLBA1157rbp27ap69eqpRo0a6tChg4YMGaKvvvqqzO2IdceGyZMnh19/6qmnSiznnnvuCaefO3du1DQzZszQ5Zdfrs6dO6t27dqqVauWOnfurOHDh2v+/PkJtzEV558kbdiwQTfeeKP23Xdf1ahRQ02bNtWxxx6rV199tcS85Q2XXQAAAJRBQYHT3JWbtGFbnhrUrKoue9VVTk52D3euWrVqeP37779PY0uKy8vL08knn6wPPvig0OuzZs3SrFmz9Pzzz+vjjz9W8+bNi+V99dVXddFFFykvL6/Q6ytXrtTKlSv17bffKjc3V7Nnz446zL20fvvtNw0YMEAfffTRHpeViBdeeEGXXXZZsckON27cqGnTpmnatGkaN25cRt3Gb+3atTrjjDP0zTffxEzz22+/6eKLL9bLL79cbNucOXM0Z84cPfHEE3rppZc0cODAqGWERiH07NkzbnsefPBBXXfddcXuHrFs2TItW7ZMM2bM0KhRo7R582bVrl07ahmHH364Fi1aVOwcDdqJJ56ozp07a968eZo+fbpWrFihFi1aFEv3z3/+UzfffHOxW4IuWrRIixYt0nPPPadbb71Vd911V9LadsQRR6hNmzZasmSJXnzxRQ0dOjRu+hdffFGS1K1bN3Xp0qXQtoKCAl133XV66KGHigWB5s+fr/nz5+vpp5/W448/rmHDhsWtJ1Xn3/fff69jjz22UJDit99+08cff6yPP/5YF198sY488si4bS1PCD4AAACUQkGB03NTF2vM54u1ZP228OttGtbUJX3aaVCvdlkbhGjYsKHatm2rn3/+Wd9++63uu+8+/fWvfw3kOvnSuvXWWzV9+nQdf/zxGj58uFq3bq2lS5dq1KhR+vDDDzV37lwNHDhQX375pSpVqhTO98svv+jiiy9WXl6emjZtqquuuir8S+f27du1YMECffrpp8WGq0+cOFF5eXnhX8uHDx+uK664olCaBg0aRG3rDTfcoFmzZunUU0/VkCFD1LZtW/3yyy/atGlTcg+KpH//+98aNGiQJKl69eoaOnSoTjzxRDVv3lxbtmzRrFmzNH78eP3444/hPH//+9913XXX6eKLL9ZXX32l7t27Kzc3t1C5kYGoIFx66aWaPXu2Bg0apPPOO0/NmzfXkiVLVK1aNUmSc05nn312+DKggQMH6txzz1WHDh2Uk5OjadOm6YEHHtCSJUt09tln6/PPP1f37t0L1bFs2bJwwCXeXVlmzZoVDjy0b99eV111lbp166aGDRtq8+bNmjdvniZNmqS33nor7j716NFDL7/8spYvX64FCxbs8eihRJmZjjnmGM2bN0+SNGXKFJ133nmF0tx///26/vrrJUkHHnighg8frn322Uf169fXvHnz9Nhjj2nq1Kn629/+psaNG+uPf/xj0tp2wQUX6L777tPkyZO1fPlytWzZMmraWbNmac6cOZKiXyJz9dVXa9SoUZKkI488UkOGDAmPRvj222/10EMP6bvvvtNll12m5s2b69RTT43ZrlScf5s2bdKAAQPCgYfzzjtPgwcPVtOmTTV//nyNHDlSubm54X2uEEKzkrKkdpHUSpKT5JYuXeoAAEB08+fPd3PnznXz589Pd1Ncfn6B++NLM1zbG96JuVzz0gyXn1+Q7qaW2T//+U8X+h9FkmvXrp374x//6F5++WW3cOHChMsJ5b/jjjvipuvXr5+T5Pr161ds26RJkwq1ZdiwYVHLuPTSS8NpHn/88ULbnnnmmfC22bNnx2zHtm3b3LZt28q8H0Xbeuutt8ZN37ZtWyfJDR48OG66wYMHO0mubdu2xbatWLHC1axZ00lyTZs2jbt/S5YsKfZavGMfadGiReH9ys3NjZs23n7l5uYWOkZPP/10zHJGjx7tJLkqVaq4999/P2qa9evXu/33399Jcn369Cm2/ZVXXgnXNWXKlJh13XbbbU6Sq1Wrllu1alXMdBs3bnT5+fkxt3/66afh+l5++eWY6eKJPEYlHetITz/9dDjfXXfdVWjbd99956pUqRI+jwsKin8+5efnu4suushJcrVr13br168vtL2kcyCy3YsWLSq0bdasWeFt999/f8x9uOGGG5wkl5OT45YtW1Zo28SJE0s8b7Zv3+6OPvro8Ptl586dMduYivPvuuuuC9d19913F9uel5fnjj/++EJtKnrsSlKWv49Lly6NrLOVS+F34PSHsQEAALLEc1MX661v4l/j++Y3K/Tc1MWpaVAArr32Wl1yySXh54sXL9Yjjzyi888/Xx06dFDz5s11/vnn6+233455/XsQmjVrpgcffDDqtoceekhNmjSRpPAvoyGrVq2S5I1SiHdJRY0aNVSjRo2ktLVTp04lznWRDI8++qi2bfNG34wePTru/rVu3Trw9pTG0UcfrUsvvTTqNuec7rvvPknSH//4R51wwglR0zVo0ED333+/JOnzzz8vNLpD8kY+hDRt2jRmW0LnSKdOndSsWbOY6erVqxd3FFBkHQsXLoyZLgiNGjUKr2/YsKHQtgceeEA7d+5U9+7ddccdd0S9G0ZOTo4effRRVatWTVu2bNF//vOfpLWta9eu4RFEL7zwQtQ0zrnwXBn9+vUrNjri3nvvlSSdddZZMc+b6tWrh+9s8vPPP8ed+DPo8y8vL0/PPPOMJG+kyY033lgsf5UqVfTMM89UqFsWE3wAAABIQEGB0zOfL0oo7ZjPF6ugIHVfzJMpJydHzzzzjCZOnKgTTjhBlSsXvkr3l19+0SuvvKJTTz1VPXr00E8//ZSSdp177rmqWbNm1G21a9fWueeeK0n67rvvwl8mJWmvvfaS5H0hK2nYfLKcd955hS79CMo777wjSerQoUPcIeaZKN6dJ+bOnRs+r84+++y45UReLz916tRC29asWRNej3WJjLT7HJk7d66mTZsWt754GjZsGF6PPAdTIXIeitCtckPefvttSd4X93i34axfv344SFD0WO6pUH9/8803UeeT+eyzz7RkyZJCaUM2bdqkTz75RFLJ58N+++2nxo0bS4q/D0Gff19//XU4CDR48OCYx71Vq1Y6/vjj49ZRnhB8AAAASMDclZu0dP32hNIuWb9Nc1cm//r+VDruuOP0/vvva926dXrvvfd05513auDAgapXr144zVdffaUjjjhCK1euDLw98a7Zl7zr7UNmz54dXj/11FNVv359SdIZZ5yho48+Wg8++KC+/vpr5efnB9LWAw88MJByI+3cuTN8rXjfvn3jfqnMRPGOUeRdF3r16lXsThyRS+SX7qJf+NevXx9ejxd8uOCCC1SlShXt2LFDffr00cCBA/Xkk09qzpw5pRrdE1lH0ck/gxYZcKhbt254/eeffw4HYW666aa4x9LMwsc+2cGTCy64IHyORhv9EJposlq1ajrrrLMKbZs5c2Z4ItBQOfGWtWvXlrgPQZ9/kZ9BpfnsKu8IPgAAACRgw7a8khNF2LhtZ8mJskDdunV14okn6vbbb9f48eP1yy+/aMyYMeEvWitXrtRtt90WeDviDZuXVGi4fOSXzkaNGmn8+PFq2bKlnHOaNGmS/vznP6t79+5q2LChzjzzzPAIgmSJ90U3WdavXx/+Yhz65T6bxDtGq1evLlOZoUtQQqpXrx5eD91CNpp9991XL730kho0aKBdu3bpnXfe0fDhw9W1a1c1bdpUv//97zVlypQS64+sI9VD6UNfuKXCIzCSdSz3VJs2bXTEEUdI2h1oCNm5c2f4tpMnn3xyOFgYEsQ+BH3+RX4Gleazq7zjbhcAAAAJaFCzdLP/169ZPq/jrVatmi6++GK1aNEifC3066+/rtGjRwd6V4w9+WX/iCOO0IIFC/Taa6/pvffe0+TJk7Vs2TJt2rRJb7zxht544w0NGDBAr7/+esxLO0ojFZdcZLt4xyhyRMrbb7+tdu3aJVRm0S95oXlAJO/LYJ06dWLmPeuss3TsscfqlVde0YQJEzRlyhStWbNGa9eu1fPPP6/nn39egwcP1pgxY2Ke55FfOIt+gQ7azJkzw+udO3cOr0cey9tvv13nnHNOQuXVqlUreY3zXXjhhZo8ebIWLVqkqVOnqlevXpKkCRMmaN26deE0RUXuw7/+9S/17t07ofriBRhScf6FZNuopCARfAAAAEhAl73qqnXDGgldetGmYU112atuiemy2YABA8K3u9ywYYPWrVtX6Muemck5Fx4uHUuiw9N/+eWXhLdH/vIbUr16dV144YXhLzeLFi3Su+++q0cffVTz58/XhAkTdMstt8Sc1DLZQl9gy3p8GjZsqJycHBUUFAR+2Uvkl+1k9Wc8kZMn1q9fP+5EmvFEno8bNmxQ27Zt46avV6+ehg0bpmHDhkmSvv/+e7311lt69NFHtWLFCj377LM6+OCDdc0110TNHznRY5s2bcrU5rJwzumjjz4KP+/bt294PfJYVqlSpczHMhnOOeccXX311crLy9MLL7wQDj6ERkLUq1dPJ598crF8kftQs2bNwPchGedfZODjl19+UadOnWKmLemzrTzhsgsAAIAE5OSYLu3TPqG0l/Rpp5yc8v9rV4sWLcLrRX/dC/3KXHTm/UjOOS1YsCChuqZPn57w9kS+LLRv315XXXWVpk+frlatWkmSxo0bl1BbkiGR4yNJ8+fPj/p65BfJKVOmlOnOI4n+Ihs5YiBee9evXx/+BXtPHHzwweH1zz//vMzlhCZPlGIfx3j2228/3Xjjjfryyy/DIwHinSORdey///6lrq+s3nvvvfCdFnr27KnmzZuHt3Xo0CE8T8ueHMtkaNCggU488URJ3nHctWuXtm7dGp4I9uyzz1a1atWK5evWrVv4XE3FPiTj/Is890rz2VXeEXwAAABI0KBe7XR6txZx05zerYUG9WqXmgal0bZt2zR37lxJ3rwQkb8WSt6Xe6nw5G1Fvf/++9q4cWNC9b366qsxr9vfunVr+Ethly5dSjUHQt26dcMTwkVeNx8Smjdgx44dCZeZiNDxmTFjRszAwXfffadZs2bFLGPgwIGSvFEcZbmTR6L71qBBg/BlBPH68+WXX07K7VcPOeSQcEBo9OjR+u2338pUTvfu3cP7uCdf8Fq3bh3+5TraORISqqNKlSo65JBDylxfaaxdu1aXX355+PlNN91UaHulSpV00kknSZImTpwY9U4TqRQaebRmzRp9+OGHevPNN8NzJcS6A0WTJk3Us2dPSd4oici7mAQhGeffoYceGh798O9//zvm+2L58uWaOHFi2RubZQg+AAAAJCgnxzTy3G4aMbCL2jQsPDdAm4Y1NWJgF408t1vWjnrYsmWLDj/8cL3zzjtxh9cXFBTo6quvDs+wf+qppxb7Fb1fv36SpP/9739Rfz1ctWqVrr766oTbtmrVKv3lL3+Juu3Pf/5zeJK44cOHF9o2YcKEuJcl/Prrr+HbK4YCApFCgYxk31I0dHxWrFihl156qdj2zZs369JLL41bxlVXXRX+Rf6yyy4L3/0immXLlhV7LbRvCxcuLDFoELql4FtvvRX1WMybNy9pE4/m5OTo5ptvDrdt0KBBcQMkmzZt0mOPPVbs9apVq+rwww+XpLi30HzzzTfjBsGWLl2qH374QVL0cyQkVEevXr0K3QUhKF988YV69OgR7tsLLrgg6i1Xb7rpJlWqVEkFBQU6++yzo54LIfn5+XrhhRfiptkTAwcODN+N44UXXghfctGyZcvweyKaW2+9VZLX12effXbc/tqxY4cef/zxMgetknH+hebGkbzbi95///3F8u3atUtDhw5VXl7pJjPOZsz5AAAAUAo5OaYhfdprUK92mrtykzZu26n6Nauoy151szboEGnatGkaOHCgWrZsqdNPP129evVS27ZtVadOHW3cuFEzZ87UmDFjwreSq1evnv72t78VK2fYsGEaNWqUdu3apYEDB+r2229X3759lZeXp88//1wjR47Uzp07tc8++4SHjMfTvXt3PfHEE1q0aJEuv/zy8HwTTzzxhCZMmCDJGy4d+SuwJL300ksaOHCgjjvuOB1//PE64IAD1LBhQ23evFlz5szRY489puXLl0tSsbyS1Lt3by1atEjjx4/Xv/71L/Xp0yf8a3rdunVLnMk+losuukgjRozQpk2bdOmll2rBggUaMGCAzExff/21Ro4cqWXLlunggw8uNJlgpObNm+uJJ57QoEGDtHr1avXo0UNDhw7ViSeeqObNm2vLli2aM2eOxo8fr3nz5hULGvTu3Vu5ublavXq1/vznP+uiiy4KD9GvUqVKoTkSrrjiCo0fP17bt29X//79NWLECB188MHasmWLPv74Yz388MNq0qSJKlWqlJRfpi+//HJ9+OGHeuONN/Tqq69qxowZuuyyy9SjRw/Vq1dPmzZt0g8//KBPPvlE48ePV/Xq1XXVVVcVK+e0007Tp59+qmnTpmnz5s1RJ5186KGHdOGFF+rkk0/W0Ucfrf3220/16tXThg0b9NVXX+nRRx8Nj7qJdo5IXrAoNPLhjDPO2OP9l7xfxSMDSps3b9a6des0c+ZMffDBB/riiy/C20455RSNGTMmajldu3bVP//5T1177bWaO3euDjjgAA0bNkxHH320mjVrpt9++02LFy/W1KlT9Z///EcrV67U7Nmzw7/+J1P16tV15plnauzYsXrzzTfDX7wvuOCCuBPWnnTSSbrmmmv08MMPa/Lkydpvv/10+eWXq2/fvmrUqJG2bt2qBQsWaMqUKXr99de1YcMGDR48uMztTMb5d/vtt2vcuHFatmyZbrjhBn3zzTcaNGiQmjZtqvnz52vkyJGaPn26unfvHndEUbninGNJwyKplSQnyS1dutQBAIDo5s+f7+bOnevmz5+f7qaUe9u3b3fNmzd3of9RSlr22Wcf99VXX8Usb+TIkTHzNmzY0E2ePNn169fPSXL9+vUrln/SpEnh9BMmTHDHH398zPL23Xdft3z58mJlDB48OKF9ufzyy11+fn6x/DNnznTVqlWLmmfw4MFR2zpp0qSEjve4ceNcpUqVopZdo0YN9+qrr4bb37Zt25jljB071tWoUSPu/kXLv3nzZtehQ4eE0//xj3+MWX6bNm3c3LlzXdu2bYsdm5Dc3Nxw+kWLFpV4fPLy8tzw4cOdmZXYf+3bt49axtq1a8P99+yzz0ZNEzoH4y05OTnub3/7W8y2jh071klylStXditXrixx32KJPEaJLG3btnVPPvlkQmWPHj3a1axZs8Qyq1at6n788cdCeRctWhTenpubG7fdJfXthx9+WKzOmTNnltj+goICd+edd7rKlSuXuA+1atVy27ZtK3MbnUvO+Tdnzpy4n6lDhgwpdbsileXv49KlSyPb0Mql8Dswl10AAABAkver5PLly/X555/rzjvv1IknnqgOHTqoVq1aqlSpkurWrat9991X5513nl588UXNmTNHhx56aMzyrr32Wn3wwQcaMGCAGjRooGrVqql9+/a68sorNXPmTB1xxBEJt61q1ap67733NGrUKPXs2VP169dXzZo11bVrV/3f//2fZsyYUWgCzJAHH3xQzz//vC655BJ1795dLVu2VNWqVVWjRg116tRJgwcP1pQpU/TEE09E/eW1W7dumjp1qi644AK1adMm6oR4ZXXOOefoiy++0BlnnKEmTZqoatWqat26tQYPHqzp06fr7LPPTqicwYMH66efftItt9yiQw89VPXr11elSpXUoEED9ezZUzfffLM++OCDYvlq166tL774Qtdcc43222+/Em8z+vDDD+vFF1/UkUceqbp166pGjRrq3LmzbrzxRs2YMUP77bdfmY5DLFWqVNGoUaP07bff6uqrr1bXrl1Vr149VapUSfXq1VO3bt106aWX6j//+U/MuQwaNWqkM888U9LuuyoU9dJLL2n06NH63e9+p27duql58+aqXLmyateurf3331/Dhw/XzJkzw0P/owmVfcYZZxSa8DFZKleurAYNGqhdu3Y6+uijdcMNN+j999/XwoULddlllyVUxtChQ7Vw4ULdeeed6tOnjxo3bqzKlSurVq1a6tSpk8466yw9+eSTWr58uTp27Jj0fQg5+uijC83L0qVLF3Xr1q3EfGam22+/XfPnz9f111+v7t27q2HDhqpUqZLq1KmjLl266MILL9Szzz6rlStXqkaNGnvUzmScf/vvv7++++47XX/99dpnn31UrVo1NW7cWEcddZRefPFF5ebm7lEbs40571d4pJiZtZK0VPKuIwtiWBMAAOXBjz/+qF27dqly5craZ5990t0cAFnmf//7n3r27KlKlSrpp59+KvGWm6X1888/a++991Z+fr6mTp0anhwRCFpZ/j4uW7ZMrVu3Dj1t7ZwLZoKPKBj5AAAAAKDcOvzww3XmmWcqPz9f99xzT9LLv/vuu5Wfn68TTjiBwAMQB8EHAAAAAOXa3XffrcqVKys3Nzepd3JYunSpxo4dq0qVKukf//hH0soFyiPudgEAAACgXOvcubPGjBmjn376SUuWLEnaJc9Lly7VTTfdpA4dOqhr165JKRMorwg+AAAAACj3fv/73ye9zN69e6t3795JLxcoj7jsAgAAAAAABIrgAwAAAAAACBTBBwAAAAAAECiCDwAAAAAAIFAEHwAAAAAAQKAIPgAAAAAAgEARfAAAAAAAAIEi+AAAAAAAAAJF8AEAAAAAAASK4AMAAAAAAAgUwQcAAAAAABAogg8AAAAAACBQBB8AAAAAAECgCD4AAAAAAIBAEXwAAAAAkmjs2LEyM5mZFi9enO7mpFT//v1lZurfv3+6m1JuhM6lESNGFNv2ySefhLd/8sknKW9bUUOGDJGZqV27duluCjIQwQcAAADElJeXp5deekmDBg3Svvvuq0aNGqlKlSpq3LixDj30UA0fPlwfffSRCgoK0t1UlAOLFy8Of5keMmRIupsDIIkIPgAAACCq119/XZ07d9bvfvc7/fvf/9a8efO0fv167dq1S+vWrdOMGTP05JNP6rjjjtN+++2nd999N91NrjD4hTl92rVrV6GCIyNGjAgHhIA9QfABAAAAxfztb3/TWWedFb5s4LjjjtOjjz6qjz/+WF9//bU+/PBDPfbYYxowYIBycnI0f/583XLLLeltNIC0Gjt2rJxzFe5yIySmcrobAAAAgMySm5ur22+/XZLUtGlTjRs3Tv369SuW7thjj9WVV16pOXPm6Nprr9WaNWtS3VQAQJYg+AAAAICw5cuX66qrrpIk1apVS59++qn23XffuHkOOOAATZgwQS+++GIqmggAyEJcdgEAAICwBx98UNu2bZMk3XXXXSUGHkJycnJ00UUXxdz+2Wef6fe//73atWun6tWrq379+jr44IN16623xh0xUXQ2f+ecnnnmGfXt21eNGjVS3bp11aNHD/373/8ulC8vL09PPvmkevbsqYYNG6pOnTrq06ePxo0bF7OuyMkOx44dK0l69dVXdeyxx6pp06aqUaOG9t13X910003auHFjQsclnvz8fD377LM65ZRT1KJFC1WrVk2NGjVS3759NXLkSG3fvr1YntD1988++6wk6eeffw63OXKJ5rffftNjjz2mY445Rs2bN1fVqlXVtGlTHXvssXrmmWe0a9euEtv85Zdf6pxzzlHz5s1VvXp1tW/fXsOGDdO8efP27GAkKFofffjhhxo4cKCaN2+uatWqqX379ho+fLiWLVsWt6wVK1boxhtv1CGHHKJ69eqpSpUqatasmbp27aoLLrhAY8eO1aZNm8LpQ3fy+PnnnyVJzz77bLHjXvQuHxs2bFBubq4uuugidenSRbVr11bVqlXVvHlzDRgwQKNHj1ZeXl5Sj1FRX375pW699Vb1798/3O9169ZVly5dNHz4cM2dOzdqvtBdW+68887wa9HOtchLLBKdi2T27NkaNmyY9tlnH9WsWVN16tTR/vvvr2uvvTbuJRvJ7H+kgXOOJQ2LpFaSnCS3dOlSBwAAops/f76bO3eumz9/frqbUu4VFBS4xo0bO0muVq1abtOmTXtcZn5+vrvyyitd6P+eaEu9evXcxIkTo+afNGlSON3EiRPdwIEDY5bzxz/+0Tnn3Pr1692RRx4ZM93f//73qHUtWrQonCY3N9ddcsklMcto0aKF+/7776OWk5ubG063aNGiqGl+/vlnd9BBB8U9Lh07dnTz5s0rlO+OO+6Imye0FPXNN9+4tm3bxs1z2GGHuVWrVsXqSjdy5EiXk5MTNW+tWrXcu+++6/r16+ckuX79+sUsJ57IPhg8eHDc7bm5ue7GG2+MuT9NmjRxc+fOjVrP5MmTXd26dUs8jm+//XY4T2jf4i1F97ukYy7JHXzwwW7lypUxj0ko3R133FFsW+T7Y9KkScW2R56LsZZKlSq5xx9/vEx5i57jgwcPdpJc27ZtY+7P3XffHfM8kuSqVavmnn322ah5k9X/5UVZ/j4uXbo08ji1cin8DsxlFwAAAGVRUCCtmiVtXy/VaCg1P1DKye5Bpd99953Wrl0rSTriiCNUp06dPS7zxhtv1OOPPy5Jat++vW644QYdcsgh2rp1q8aPH6/HHntMv/76q0455RRNmzZNBx10UMyybrvtNv3vf//ThRdeqN/97ndq3ry55s+frxEjRmjevHl65JFHNHDgQD366KP64osvNHz4cJ1xxhlq1KiRvvnmG912221asWKFbr/9dp122mnaf//9Y9Y1atQoTZ8+XT169NC1116rffbZR6tXr9bYsWM1btw4rVixQgMGDNCcOXNKfZzWrVunvn37aunSpapWrZqGDh2qfv36qV27dtqyZYsmTpyohx9+WAsWLNCJJ56oGTNmqF69epKkK664QmeffbZuvfVWvfXWW2rRooUmTJgQt74FCxaoX79++vXXX1W3bl1deeWV6tGjh1q3bq1169Zp/Pjx+te//qXp06frtNNO05QpU1SlSpVCZbzxxhv685//LEmqV6+ebrjhhvCv/P/973/1j3/8QxdeeKGaNGlSqmOxJ5566il98cUX6tevny677DJ16tRJGzdu1HPPPafnnntOa9as0SWX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67leuizVsmVLPfbYY5K8Lyz9+vXTp59+GjfP3LlzdcIJJ+j+++8v9Prw4cPDk74NGzZMmzZtKpZ34sSJ4evie/ToUeJdJlJlx44duuyyy6JOVnfvvfeG7wBxySWXxLzdXzSdO3fWOeecI0l6+eWXNXLkyLjpFy1apJdeeqnY66HbRa5evTrubP7HH398+M4c999/v8aNGxe3vtA8CJFOP/30cH1/+9vfNG/evGL55s6dq7///e9xy84UU6ZM0YIFC2Juz8vLC5/ztWvXVpMmTQptDx2Ln376KW49oZE/b7/9dtRLG3766SddeWWCAc0yCNUveYGhaG666aYSR15E3pq0pH2O5+KLLw4HNv/yl79o+fLlxdJ8++23uvvuuyV5n0WhS2JQPhB82O1xSbUlPeuci/8XFgAAVEw5OdIZ/5JO/Id3aUWkBu2818/4V9aOegi5+OKLddddd0nyvtz2799fAwYM0KhRozRp0iTNnDlTH3/8sZ544gmdcsopOvDAA/Xhhx8WK6dr1676y1/+Isn7UnHIIYfoqaee0ldffaVPP/1U1113nU455RTl5+eratWq+te//pXS/Yyne/fuevvtt9WnTx+98sormjFjhj744ANdcMEFuuWWWyRJrVq10m233Vbqsp944gl16NBBkvclrF+/fnrmmWf05ZdfaubMmfroo4/0wAMP6LjjjlPHjh312muvFSujd+/ekrxfri+//HJ9+eWXWrBgQXiJ9OKLL6phw4bKz8/Xeeedp1NPPVUvvPCCpk2bpq+//lrvv/++7r77bvXq1UsHHnhgsWBT1apV9eijj0ry7mLSs2dP3Xvvvfryyy81depU3XPPPeH2dOzYsdTHI9U+/vhjde7cWf3799f999+vCRMmaMaMGfr888+Vm5urI444IvyF/NJLLy12S9TQvk6fPl333nuvvv322/Bxj/xCPWjQIEnSihUr1KtXL40ZM0bTpk3T5MmTNWLECB166KFav359qUbOlMaAAQPCk2XeeuutuvzyyzVhwgR9/fXXeuWVV3TsscfqH//4h/r06RO3nND+St7IqMmTJ+vHH38M73O8SygiNWnSJBygXLZsmQ499FA99NBDmjZtmr744gvddddd6tu3r7Zs2SIz0+jRo+PekhNZyDlX4RdJ50pyktZJauy/NsJ/zUnqH0CdrULlL1261AEAgOjmz5/v5s6d6+bPn5/uphSWn+/cim+cW/Bf7zE/P90tSrrXXnvNtWvXzkX8TxRz2X///d2ECROKlZGfn++uuOKKuHnr1asXNa9zzk2aNCmcbtKkSTHbmpubG063aNGimOnuuOOOcLqiFi1aFN6Wm5vrhgwZErPNe+21l/vuu+/K3JaVK1e6I444IqFje/HFFxfLn5+f73r27BkzT1Hz5s1zBxxwQEL13XnnnVHbfP/99zszi5qnZs2a7p133nH9+vVzkly/fv1i9kE8kX0wePDguNtzc3PjltW2bduo5USeA/GW0047zW3btq1YucuWLXMNGzaMmidyv/Py8tzxxx8fs/waNWq4cePGucGDBztJrm3btlH3I5T+jjvuKLatpPfHBx984KpXrx6zDf3793dz5swp8Ziee+65McuIPMdL2hfnnPv73//ucnJyYpZXrVo19+yzz0bNm4z+L0/K8vdx6dKlkce7lUvh9+7sDssngZnVlxS6AO4G59zaJJXbKt4iqXky6gEAAGmSkyPtdZC091HeY5aPdojmzDPP1Lx58/TCCy/ooosuUufOndWgQQNVrlxZDRs21CGHHKIrrrhC//3vfzV79mwdf/zxxcrIycnR448/rsmTJ+vCCy9UmzZtVK1aNdWtW1fdunXTzTffrB9//DFq3nTLzc3Viy++qP79+6tRo0aqVq2aOnXqpOuvv17fffedunTpUuaymzdvrsmTJ+udd97RhRdeqA4dOqhmzZqqUqWKmjRpot69e+svf/mLPv30U40ZM6ZY/pycHE2cOFG33nqrDjroINWuXTvuxICdOnXSN998oxdffFFnnXWW2rRpoxo1aqhq1araa6+91L9/f9166636+uuvdfvtt0ct47rrrtNnn32mM888U02bNlW1atXUtm1bXXLJJfrqq6908sknl/l4pNJ1112n1157TcOHD1fPnj3Vpk0bVa9eXdWrV1e7du107rnn6p133tGbb74ZdaLIli1batq0abr00kvVsWPHQnMiRKpSpYreffddPfLII+revbtq1qypGjVqqGPHjrr88ss1Y8aM8CU4QRkwYIC++uorXXTRRWrRokX4/OrXr59Gjx6tjz/+WLVq1SqxnOeff17/+Mc/1KNHD9WrVy98OVVZ3HzzzZo5c6aGDh2qvffeWzVq1FCtWrW033776ZprrtEPP/wQHjWC8sWc9yt8hWVmoyUNlfS5pCOcf0DMbISkO/xkRznnPilluQkf2KVLl6pVq1alKR4AgArjxx9/1K5du1S5cuVC1zADybZ48WK1b99ekhd4GDJkSHobBABxlOXv47Jly9S6devQ09bOuWWBNbCI8heiLwUzO0LSHyTtknS5q+iRGAAAAAAAAlC55CTlk5lVlTRakkl60Dk3J8lVtC5he3NJ8W8gDQAAAABAOVBhgw+Sbpa0r6Qlku5MduElDV+Jd00eAAAAAADlSYW87MLM9pV0k//0aufc1nS2BwAAAACA8qyijny4VlJVSQsl1TSz86OkOSBi/WgzC92d4m2CFQAAAAAAJK6iBh+q+Y8dJL2UQPrbItbbSyL4AAAAUM60a9dOzD8OAMGokJddAAAAAACA1KmQwQfn3BDnnMVbVHgSyqMiti1OU7MBAAAAAMhKFTL4AAAAAAAAUofgAwAAAAAACBTBBwAAAAAAECiCDwAAIKNVqlRJkpSfn6+CgoI0twYAgPQrKChQfn6+pN1/JzMdwYcYnHMjIiaZ/CTd7QEAoKKqXr26JMk5py1btqS5NQAApN+WLVvCtwauUaNGmluTGIIPAAAgo9WtWze8vmrVKm3atIkREACACqmgoECbNm3SqlWrwq/VqVMnjS1KXOV0NwAAACCeWrVqqUaNGtq+fbvy8/O1fPlymVnWDDMFACBZ8vPzwyMeJG/UQ61atdLYosQRfAAAABnNzNSmTRstWbJE27dvl+RdgrFr1640twwAgPSpUaOG2rRpIzNLd1MSQvABAABkvJycHLVt21Zbt27V5s2bw6MgAACoSCpVqqQaNWqoTp06qlWrVtYEHiSCDwAAIEuYmWrXrq3atWunuykAAKCUmHASAAAAAAAEiuADAAAAAAAIFMEHAAAAAAAQKIIPAAAAAAAgUAQfAAAAAABAoAg+AAAAAACAQBF8AAAAAAAAgSL4AAAAAAAAAkXwAQAAAAAABIrgAwAAAAAACBTBBwAAAAAAECiCDwAAAAAAIFAEHwAAAAAAQKAIPgAAAAAAgEARfAAAAAAAAIEi+AAAAAAAAAJF8AEAAAAAAASK4AMAAAAAAAgUwQcAAAAAABAogg8AAAAAACBQBB8AAAAAAECgCD4AAAAAAIBAEXwAAAAAAACBIvgAAAAAAAACRfABAAAAAAAEKiODD2ZWzcyamVlGtg8AAAAAACQupV/uzay2mZ3kL7WjbG9sZq9J2iRphaQNZvaAmVVLZTsBAAAAAEDyVE5xfWdJypW0TFK7yA3+KIf3JR0iyfyX60j6k5/2rBS1EQAAAAAAJFGqL2sY4D++4ZwrKLLtPEmH+uszJD3oP5qk083shNQ0EQAAAAAAJFOqRz4cIMlJ+iLKtkH+49eSejvndplZFUlTJB0mabCkD1LSSgAAAAAAkDSpHvnQ1H9cFPmiH2Q4Ul5g4nHn3C5Jcs7tlPSkvNEPPVLYTgAAAAAAkCSpDj409B/zirx+mKQa/nrR0Q3z/cfmQTUKAAAAAAAEJ9XBh23+Y9Mirx/pPy5wzv1SZNv2YJsEAAAAAACClOrgw0/+Y/8ir58h75KLyVHyNPEfVwfUJgAAAAAAEKBUBx8+lDd/wxVmdqKZ1Tazq+VddiFJb0fJc6D/uCIVDQQAAAAAAMmV6rtdPCzpckl1JL1TZNv3ih58OFneqIiZwTYNAAAAAAAEIaUjH5xzKyUNlLRK3giI0LJQ0tnOOReZ3sz2lnSE//SjFDYVAAAAAAAkSapHPsg5N8XM2kvqI+8OFislfRa6vWYRe0n6m78+MUVNBAAAAAAASZTy4IMkOefyJE1KIN1nkj4LvkUAAAAAACAoqZ5wEgAAAAAAVDBpGfkQ4s/p0Eve5Rc1JY1yzq1NZ5sAAAAAAEBypSX4YGaHSHpI3rwPkf4jaW1Euisl3SHpV0ldnHM7U9VGAAAAAACQHCm/7MLMTpH0ubzAQ+QdL6J5TlINSR0knZKSBgIAAAAAgKRKafDBzPaS9JKkapLmSjpRUp1Y6Z1zmyWN95+eGHgDAQAAAABA0qV65MO1kmpJ+lnSEc65Cc65rSXk+UTeyIhDA24bAAAAAAAIQKqDDydIcpIecM5tTDDPD/5j+0BaBAAAAAAAApXq4ENb/3FaKfJs8h9rJ7ktAAAAAAAgBVIdfAjdXaM09dbzH7ckuS0AAAAAACAFUh18WOU/dihFnh7+45IktwUAAAAAAKRAqoMPU+RNHnlOIonNrKqky+TNE/FJcM0CAAAAAABBSXXwYaz/eKqZHRcvoR94eE7S3vKCD08F2zQAAAAAABCElAYfnHOfSHpF3uiHt83sPjPrEZGknZn1NrO/SvpO3ggJJ+lJ59x3qWwrAAAAAABIjsolJ0m6IZLqSDpJ0nX+4vxtb0ekM//xdUnXpKpxAAAAAAAguVJ92YWcczucc6fIm8thobwgQ7RlmaQrnHNnO+fyU91OAAAAAACQHOkY+SBJcs49JekpM+siqbukppIqSVonaaakGc45F6cIAAAAAACQBVIafDCz2/3V/znnJkiSc26upLmpbAcAAAAAAEidVI98GCFvfoczUlwvAAAAAABIk1TP+bDOf1yS4noBAAAAAECapDr4sMB/bJ7iegEAAAAAQJqkOvjwirw7WZyb4noBAAAAAECapDr4MErSt5IGmdmQFNcNAAAAAADSINUTTjaX9AdJz0h6xsx+J+lFSbMkbZCUHy+zc465IgAAAAAAyDKpDj4slne3C8m7/OIYf0mEU+rbCwAAAAAA9lA6vsxbjPXUNcCsrqSTJB0mqbuklpKaSKohaaOkuZLek/SMc25djGIAAAAAAEACUh18uDjF9cXSQ9JLMbY1kdTPX/5qZhc55yakrGUAAAAAAJQzKQ0+OOeeTWV9JVgqaZKkr/31lfIm4Gwl6WxJZ0pqLGm8mfVwzn2broYCAAAAAJDNKuocCpOcc23ibB9nZqdLekNSVUl3yAtGAAAAAACAUkr1rTYzgnMu7l01/DRvSprnPz0i0AYBAAAAAFCOVcjgQyls9h+rp7UVAAAAAABksZRedmFmY/Ygu3POXZq0xpTAzDpL6uY//SFV9QIAAAAAUN6kes6HIZJcGfKZny/Q4IOZ1ZR3282Bkq7X7uPzUJD1AgAAAABQnqU6+LBEJQcfaklqpN0Bh7WStgXVIDMbIik3TpJ7Jb1YhnJblZCkeWnLBAAAAAAgG6X6VpvtEklnZg0kXSDpLkkbJZ3qnJsXN1PyfSNpmHNuehnzL01iWwAAAAAAyFoZOeGkc26Dc26UpD6Smkp63w9IBOFNSV39pYe8oMcb8uZ7eMnMTgmoXgAAAAAAKoSMDD6E+KMdHpHUTtJfAqpjo3Nujr9Md8697Jw7U9IgSR0kveVfmlFarUtYDkvKDgAAAAAAkOEyOvjg+8h/PDOVlTrn/i3pVXnH6DEza1jK/MviLZJWBdFuAAAAAAAyTTYEH7b4j23SUPdb/mMtSSekoX4AAAAAALJeNgQfDvYfd6ah7jUR623TUD8AAAAAAFkvo4MPZtZe0gh5t9z8Jg1NaBmxviVmKgAAAAAAEFNKb7VpZoMSSJYjqYGk7pJOk1RTXvDhyQCbFss5Eeuz01A/AAAAAABZL6XBB0lj5QUSEmX+4yPOuVeS1Qj/7hUvO+d+i5PmWkkn+U8XSZqSrPoBAAAAAKhIUh18kHYHFEqyUdJkSaOccxOT3IYRkh4ws9ckfSbpJ3mXVdSR1FXShZL6+GnzJA1zzuUnuQ0AAAAAAFQIqQ4+tE8gTYGkzc65jQG3paGkof4SyzJJlzjnPoqTBgAAAAAAxJHS4INz7udU1hfHAEknyxvd0FFSM0mNJG2XtFre5JbvSBrnnNuWpjYCAAAAAFAupOOyi7Rzzs2TNE/SyHS3BQAAAACA8i6lt9o0s0Vm9pOZdSxFnjZmttDMfgqybQAAAAAAIBipHvnQVt7dLqqWIk8VSe1UurtkAAAAAACADJHSkQ8AAAAAAKDiyYbgQz3/kYkfAQAAAADIQtkQfLjIf8yUO2UAAAAAAIBSCHTOBzP7b4xNuWa2tYTs1SR1kNRU3nwPE5PZNgAAAAAAkBpBTzjZX17gwCJeM0mHlbKchZLuSVKbAAAAAABACgUdfJiswnep6Oc//1pSvJEPTtJvklZK+kLSy865kkZKAAAAAACADBRo8ME51z/yuZkV+KtDnHNzg6wbAAAAAABkhqBHPhT1nLxRDRtSXC8AAAAAAEiTlAYfnHNDUlkfAAAAAABIv2y41SYAAAAAAMhiKQ0+mFlXM1toZj+aWcsE0rc0swVm9pOZdUpFGwEAAAAAQHKleuTDRZLaSVrgnFteUmI/zXw/z0WBtgwAAAAAAAQi1cGH0K02x5ciz1uSTNIxgbQIAAAAAAAEKtXBh9ClE7NKkWeO/9g5yW0BAAAAAAApkOrgQ23/cUsp8oTS1k1yWwAAAAAAQAqkOviwwX9sXoo8obSbk9wWAAAAAACQAqkOPvzoP55Qijwn+o8/JbktAAAAAAAgBVIdfJggb/LIYWa2X0mJzWx/SUPlTVL5QcBtAwAAAAAAAUh18OEJSVslVZf0XzM7JVZCMztV0keSakjaLunxlLQQAAAAAAAkVeVUVuacW2tml0v6t6Smkt4ys4WSPpO00k+2l6QjJLWXN0rCSRrunPsllW0FAAAAAADJkdLggyQ5514wsxx5oyBqStpbUociycx/3Cov8PB8CpsIAAAAAACSKNWXXUiSnHP/ltRR0r2SZvsvm3aPdJgl6e+SOhJ4AAAAAAAgu6V85EOIc26VpJsl3WxmlSU19Detd87tSle7AAAAAABAcqUt+BDJDzasTnc7AAAAAABA8qXlsgsAAAAAAFBxEHwAAAAAAACBSullF/5tNcvKOef2TlpjAAAAAABASqR6zod2pUjrtPuWm6HnAAAAAAAgy6Q6+PBsAmlqSeok6UB5AYeZ2n07TgAAAAAAkGVSGnxwzl2caFoz21/SM5K6SrrbOfd6YA0DAAAAAACBydgJJ51z30k6VtIKSc+Z2b5pbhIAAAAAACiDjA0+SJJzboukkZJqSvprmpsDAAAAAADKIKODD76v/Mdj0toKAAAAAABQJtkQfAjd8aJZWlsBAAAAAADKJBuCDwP8x1/T2goAAAAAAFAmGR18MLPzJd0k75abn6W5OQAAAAAAoAxSeqtNMxuTQLIcSQ0kHSKphbzLLnZJujfApgEAAAAAgICkNPggaYi8UQyJCM31sEnSH5xzX8VLDAAAAAAAMlOqgw9LVHLwoUDSZkmLJH0q6Xnn3NqgGwYAAAAAAIKR0uCDc65dKusDAAAAAADpl9ETTgIAAAAAgOyXrgkn33fOvZrKugEAAAAAQHqkes6Hwf7jKymuFwAAAAAApEmqL7tY4z/+kuJ6AQAAAABAmqQ6+DDXf2yb4noBAAAAAECapDr48Lwk0+7LLwAAAAAAQDmX6uBDrqSPJZ1mZiPMzFJcPwAAAAAASLFUTzh5hKR/Smoi6TZJ55nZK5JmSdogKT9eZufc5MBbCAAAAAAAkirVwYdPJLmI553kBSES4ZT69gIAAAAAgD2Uji/zXGoBAAAAAEAFkurgw1Eprg8AAAAAAKRZSoMPzrlPU1kfAAAAAABIv1Tf7QIAAAAAAFQwKQ0+mNkYM3vGzPYqRZ4moXxBtg0AAAAAAAQj1SMfhvhLg1LkqRuRDwAAAAAAZBkuuwAAAAAAAIHKhuBDdf9xR1pbAQAAAAAAyiQbgg99/Mdf0toKAAAAAABQJoHeatPMbo+x6QozW11C9mqS9pZ0qiQn6fNktg0AAAAAAKRGoMEHSSPkBQ4imaThpSjDJP0m6f4ktQkAAAAAAKRQKi67sIjF+YslsOyQtFjSC5J6Oee+TUFbAQAAAABAkgU68sE5Vyi4YWYF8oIPBzjn5gZZNwAAAAAAyAxBX3ZR1BJ5wYe8FNcLAAAAAADSJKXBB+dcu1TWBwAAAAAA0i8bbrUJAAAAAACyWEqDD2ZWxcy6+Eu1KNurm9kDZrbUzLab2VwzuzqVbQQAAAAAAMmV6jkfzpD0kqT1klpF2f6GpOPl3e1CkvaV9JCZdXbOXZWaJgIAAAAAgGRK9WUXA+QFFt50zu2I3GBmJ/vbJWmZvEDEcj/9cDPrncyGmFl3M7vdzCaa2TIz22FmW8xsvpnlmlnfZNYHAAAAAEBFleqRD4fIu9vFp1G2XeI/zpfUwzm32czqSfpC3giIP/jre8zMJks6IsqmqpL28ZchZvacpKHOOe7OAQAAAABAGaV65ENT/3FB5ItmliPpGHmBiUedc5slyTn3q6TH5I1+6JXEdrTwH1dIeljS2ZJ6+HX8Wd6IC0kaJGlsEusFAAAAAKDCSfXIh8b+4/Yir3eTVFde8OHdItvm+I+tk9iOHyTdLOk151x+kW1fmtm/JX0uqZOkC8zsSefc5CTWnxYFBU5zV27Shm15alCzqrrsVVc5OVZyRurLiPrSUSf1ZX+d1Jf9dVJf9tdJfdlfJ/WVjzoBpFeqgw87/DobF3n9SP9xmXPu5yLbNvuPlZLVCOfcKSVsX2tmf5H0tv/S2ZKyNvhQUOD03NTFGvP5Yi1Zvy38epuGNXVJn3Ya1KtdUj/sqS+59aWjTuqjD6kv/XVSH31Ifemvk/qyvw8BZA5zzqWuMrPZkrpIus05d3fE6x9L6i/pRefc74vkOVrSR/ICE21S2NZakrb4T99zzp2c5PJbSVoqSUuXLlWrVtFu/rHnCgqcrh33jd76ZkXMNKd3a6GR53ZLygc99SW3vnTUSX30IfWlv07qow+pL/11Ul/29yGA4pYtW6bWrcMXFbR2zi1LVd2pnvNhkrz5G642s/0kycxOlRd4kKT3ouQ5wH9cGXjrCqsWsV700oys8dzUxXE/4CXpzW9W6Lmpi6kvA+tLR53URx9SX/rrpD76kPrSXyf1ZX8fAsgsqQ4+PCopT97Ek3PMbK28W2qavEkeX4uS53h5c0HMSlUjff0i1r8vbWYzaxVvkdQ8eU2NrqDA6ZnPFyWUdszni1VQsGejYKgvufWlo07qS2596aiT+pJbXzrqpL7k1peOOqkvufWlo07qS2596aoTQGZJafDBOfejpN9L2iYv4NDQf9wo6YKit7Q0s+aSjvOf/jdV7fTvvnFjxEvjylDM0hKW6XvYzBLNXblJS9cXndszuiXrt2nuyk3Ul0H1paNO6ktufemok/qSW1866qS+5NaXjjqpL7n1paNO6ktufemqE0BmSfWEk3LOvWpmn0o6Wd6v/ysljXfOrY+S/EBJL/rr0S7JCMq18m69KUmvO+e+TmHdSbNhW17JiSJs3LaT+jKovnTUSX3JrS8ddVJfcutLR53Ul9z60lEn9SW3vnTUSX3JrS9ddQLILCkPPkiSc261pNwE0k2UNDH4Fu1mZv0k3es/XS1peBmLKunWoM0V8OiHBjWrlip9/ZpVqC+D6ktHndSX3PrSUSf1Jbe+dNRJfcmtLx11Ul9y60tHndSX3PrSVSeAzJLqOR8ympntL28OisqSfpN0jh8oKTXn3LJ4i6RVSWx6VF32qqvWDWsklLZNw5rqsldd6sug+tJRJ/Ult7501El9ya0vHXVSX3LrS0ed1Jfc+tJRJ/Ult7501Qkgs6Q9+GBmTc3sGDM7x1+OMbNmaWhHe3mjLBrIu7vF+c65yaluRzLl5Jgu7dM+obSX9NnzeypTX3LrS0ed1Jfc+tJRJ/Ult7501El9ya0vHXVSX3LrS0ed1Jfc+tJVJ4DMkpbgg3kuN7NZ8uZ8mCjpZX+ZKGmFmc02s+H+5I9Bt6eFpI8ktZB3Z41LnHNvBV1vKgzq1U6nd2sRN83p3VpoUK921JeB9aWjTuqjD6kv/XVSH31Ifemvk/qyvw8BZBZzLrW3sTGzppLeltQ99FKMpKGGzZA00DkXyGUKZtZY0qeSuvgvXeWcezyIuorU20reXS+0dOlStWrVKrC6Cgqcnpu6WGM+X6wl67eFX2/TsKYu6dNOg3olN7pMfcmP1pf3fSzv9aWjTuqjD6kv/XVSH31IfZlRJ4Ddli1bptatw9MTtvanBEiJlAYfzKyapK8l7Scv6LBG3m0sp0n6xU/WTNJhks6V1NR/ba6kQ51zO5LcnnrybuF5iP/Sjc65+5JZR5y6UxZ8CCkocJq7cpM2btup+jWrqMtedQP9cKe+7K+T+rK/TurL/jqpL/vrpL7sr5P6ykedACpW8OFGSXfLG9UwRtKfnHNbY6StKelBSUP99Lc45+6NlraMbakp7xKPPv5Lf3fO3Zqs8hOoP+XBBwAAAABAxZXO4EOq53w4X14g4UPn3NBYgQdJcs5tc85dJi9AYH7epDCzqvLuahEKPDycysADAAAAAAAVSeUU19fRfxxVijyjJB0vae8ktuMlv0zJu+ziGTM7IE76POfc/CTWDwAAAABAhZHq4MMOSTXkX26QoFDavCS248yI9aMlzSoh/c+S2iWxfgAAAAAAKoxUX3bxg//YOm6qwkJpf4ibCgAAAAAAZKRUBx/Gypu/4fJS5Llc3jwRzyWrEc45K+XSLll1AwAAAABQ0aQ6+PC0pAmSBpjZKDOrHiuhmVUzs8cknSBv0snRKWojAAAAAABIokDmfDCzI+NsHimpoaTLJJ1uZuMkTZe0Wt4Ih2aSDpN0jqTm/rYHJB0haXIQ7QUAAAAAAMEJasLJT+QFEkrSTNLVJaTpLm+0hFPqJ8gEAAAAAAB7KMgv8xZg2QAAAAAAIEsEFXw4KqByAQAAAABAlgkk+OCc+zSIcgEAAAAAQPZJ9d0uAAAAAABABUPwAQAAAAAABIrgAwAAAAAACFRKb11pZv/dg+zOOXdM0hoDAAAAAABSIqXBB0n9JTnFvw2nK/LcYrwOAAAAAACyQKqDD5NVchChlqSOkur7aedLWhlsswAAAAAAQFBSGnxwzvVPNK2ZnSTpEUkNJV3qnPs8qHYBAAAAAIDgZOyEk8659yT1lbRL0htm1jLNTQIAAAAAAGWQscEHSXLOrZL0oKTGkq5Pc3MAAAAAAEAZZHTwwfeZ/3hyWlsBAAAAAADKJBuCD3n+Y4u0tgIAAAAAAJRJNgQf+vqP29LaCgAAAAAAUCYZHXwws16Sbpd3y81paW4OAAAAAAAog5TeatPMbk8gWY6kBpK6Szrcf+7kTTwJAAAAAACyTEqDD5JGyAskJMrk3Wrzeufch4G0CAAAAAAABCrVwQfJCyjE4yRtlrRI0qeSRjvn5gbeKgAAAAAAEIiUBh+ccxk9xwQAAAAAAEg+ggEAAAAAACBQGRd8MLNGZtYw3e0AAAAAAADJkRHBBzNrZmajzWytpNWS1pjZBjMba2Zt0t0+AAAAAABQdoEFH8yslZmt8JfhcdJ1kPS1pEslNZQ3IaVJqifp95Jmmlm3oNoJAAAAAACCFeTIhxMkNZcXUBgXJ93Lklpo910wlkr6n7w7XpikBpJeMrN03JkDAAAAAADsoSCDD738x0nOuXXREpjZKZK6y7u95npJJzjn2jrneskLXOT6STtJOivAtgIAAAAAgIAEGXzoKi+o8GGcNBdGrP/FOTcx9MQ5t13SHyTN9l86LektBAAAAAAAgQsy+NDOf/w2Tpr+/uOvkl4sutE55ySNkXf5xUFJbBsAAAAAAEiRIIMPdf3HtdE2mlk7Sc3kjY6Y7JzbGaOcmf5ji6S2DgAAAAAApESQwQfnP1aNsb1HxPpXccrZ6D/W2tMGAQAAAACA1Asy+BCaZLJTjO29I9anxymnjv/42x63CAAAAAAApFyQwYfQXA/F7lJhZibpVP/pLkmfxymnrf/4S/KaBgAAAAAAUiXI4MN4eRNFnmZmvy+y7Tp5E1I6SR8557bEKSd0y855SW8hAAAAAAAIXJDBh39LWuqvjzWz/5nZC2Y2Q9K9EelGxirAHyFxurwgxZdBNRQAAAAAAASnclAFO+e2mdn5kj6QN29Dd3+RvBERkjTGOfdxnGJOktRS/giJoNoKAAAAAACCE+TIBznnpsoLOLwmb8JI85ef5V16MayEIm7zH1c55xj5AAAAAABAFgps5EOIc+5HSeeYWY6kJpLynHMbEsx+jP+4K5DGAQAAAACAwAUefAhxzhWolHescM5tDag5AAAAAAAgRQK97AIAAAAAAIDgAwAAAAAACBTBBwAAAAAAECiCDwAAAAAAIFAEHwAAAAAAQKAIPgAAAAAAgEARfAAAAAAAAIEi+AAAAAAAAAJF8AEAAAAAAASK4AMAAAAAAAgUwQcAAAAAABAogg8AAAAAACBQBB8AAAAAAECgCD4AAAAAAIBAEXwAAAAAAACBIvgAAAAAAAACRfABAAAAAAAEiuADAAAAAAAIFMEHAAAAAAAQKIIPAAAAAAAgUAQfAAAAAABAoAg+AAAAAACAQBF8AAAAAAAAgSL4AAAAAAAAAkXwAQAAAAAABIrgAwAAAAAACBTBBwAAAAAAEKgKG3wws6ZmdoqZ3WVm75vZWjNz/jI23e0DAAAAAKC8qJzuBqTRL+luAAAAAAAAFUGFHflQxBJJE9PdCAAAAAAAyqOKPPLhLknTJU13zv1iZu0kLUpvkwAAAAAAKH8qbPDBOXdHutuQFQoKpFWzpO3rpRoNpeYHSjkJDpjZk7xBl52stgW5j5lQX6rqTUb56T5XgzpGmXauJnM/M+V9nMxyy/t7JRV1lDVvuvotE/skne8t8pI3k/JmW3v3JG+2tTeZZZW3NpRjFTb4gBIUFEjTn5K+HCVtWLz79QbtpJ5XSIcNjf2G2pO8QbYrmW0Lch8zob5U1ZuM8tN9rgZ1jDLtXE3mfmbK+ziZ5Zb390oq2lnWvOnqt0zsk3S+t8hL3kzKm23trWj7mqyyylsbKgBzzqW7DRmhyGUXzzrnhgRcXytJSyVp6dKlatWqVZDVlU5BgfTGMGn2q7HTdD1XOuNfxd9Me5I3yHYls21B7mMm1JeqepNRfrrP1aCOUaadq8ncz0x5Hyez3PL+XklFO8uaN139lol9ks73FnnJm0l5s629e5I329obTTr2PRPbkELLli1T69atQ09bO+eWparuzDkKyBzTn4r/JpKk2eO8dMnMG2S7ktm2IPcxE+pLVb3JKD/d52pQxyjTztVk7memvI+TWW55f68kKh3HMF39lol9ks73FnnJm0l5s629e5I329obTTr2PRPbUEEQfAiImbWKt0hqnu42RlVQIE19PLG0X47y0icjb5DtSmbbgtzHTKgvVfUmo/x0n6tBHaNMO1eTuZ+Z8j5OZrvK+3slUek4hunqt0zsk3S+t8hL3kzKm23t3ZO82dbeaNKx75nYhgqE4ENwlpawTE9f0+JYNUva+HNiaTcsln6ZnZy8QbYrmW0Lch8zob5U1ZuM8tN9rgZ1jDLtXE3mfmbK+ziZ7Srv75VEpeMYpqvfMrFP0vneIi95MylvtrV3T/JmW3ujSce+Z2IbKhCCDyhs+/rSpd8WkX5P8pZkT8tOVtuC3MdMqC9V9Saj/HSfq0Edo0w7V5O5n5nyPi4q3edSPJl8riarjrLmTVe/ZWKfpPO9RV7yZlLebGvvnuTNtvZGk459z8Q2VCDc7SI4rUvY3lyZOPqhRsPSpa8ZkX5P8pZkT8tOVtuC3MdMqC9V9Saj/HSfq0Edo0w7V5O5n5nyPi4q3edSPJl8riarjrLmTVe/ZWKfpPO9RV7yZlLebGvvnuTNtvZGk459z8Q2VCCMfAiIc25ZvEXSqnS3MarmB0r12yaWtkE7qVnX5OQNsl3JbFuQ+5gJ9aWq3mSUn+5zNahjlGnnajL3M1Pex8lsV3l/ryQqHccwXf2WiX2SzvcWecmbSXmzrb17kjfb2htNOvY9E9tQgRB8QGE5OVKvKxNL2/OKwreN2ZO8QbYrmW0Lch8zob5U1ZuM8tN9rgZ1jDLtXE3mfmbK+ziZ7Srv75VEpeMYpqvfMrFP0vneIi95MylvtrV3T/JmW3ujSce+Z2IbKhCOAoo7bKh3T9p4up7rpUtm3iDblcy2BbmPmVBfqupNRvnpPleDOkaZdq4mcz8z5X2czHLL+3slUek4hunqt0zsk3S+t8hL3kzKm23t3ZO82dbeaNKx75nYhgrCnHPpbkNGMLN2khb5T591zg0JuL5W8u56oaVLl6pVq1ZBVld6BQXePWm/HOXN0BrSoJ0XvTtsaOwI3p7kDbJdyWxbkPuYCfWlqt5klJ/uczWoY5Rp52oy9zNT3sfJLLe8v1dS0c6y5k1Xv2Vin6TzvUVe8mZS3mxrb0Xb12SVVd7akCLLli1T69bh6Qlb+1MCpATBBx/BhxgKCrxbw2xb702U0qxr6d7EZc0bdNnJaluQ+5gJ9aWq3mSUn+5zNahjlGnnajL3M1Pex8kst7y/V1JRR1nzpqvfMrFP0vneIi95MylvtrV3T/JmW3uTWVZ5a0PACD5kAIIPAAAAAIDyLJ3Bhwp7q00z6yupY8RLjSPWO5rZkMj0zrmxKWgWAAAAAADlToUNPkj6g6TBMbb18ZdIYwNtDQAAAAAA5VRmXogCAAAAAADKjQobfHDODXHOWaJLutsLAAAAAEC2qrDBBwAAAAAAkBoEHwAAAAAAQKAIPgAAAAAAgEARfAAAAAAAAIEi+AAAAAAAAAJF8AEAAAAAAASK4AMAAAAAAAgUwQcAAAAAABAogg8AAAAAACBQBB8AAAAAAECgCD4AAAAAAIBAEXwAAAAAAACBIvgAAAAAAAACRfABAAAAAAAEiuADAAAAAAAIFMEHAAAAAAAQKIIPAAAAAAAgUAQfAAAAAABAoAg+AAAAAACAQBF8AAAAAAAAgSL4AAAAAAAAAkXwAQAAAAAABIrgAwAAAAAACBTBBwAAAAAAECiCDwAAAAAAIFAEHwAAAAAAQKAIPgAAAAAAgEARfAAAAAAAAIEi+AAAAAAAAAJF8AEAAAAAAASK4AMAAAAAAAgUwQcAAAAAABAogg8AAAAAACBQBB8AAAAAAECgCD4AAAAAAIBAEXwAAAAAAACBIvgAAAAAAAACRfABAAAAAAAEiuADAAAAAAAIFMEHAAAAAAAQKIIPAAAAAAAgUAQfAAAAAABAoAg+AAAAAACAQBF8AAAAAAAAgSL4AAAAAAAAAkXwAQAAAAAABIrgAwAAAAAACBTBBwAAAAAAECiCDwAAAAAAIFAEHwAAAAAAQKAIPgAAAAAAgEARfAAAAAAAAIEi+AAAAAAAAAJF8AEAAAAAAASK4AMAAAAAAAgUwQcAAAAAABAogg8AAAAAACBQBB8AAAAAAECgCD4AAAAAAIBAEXwAAAAAAACBIvgAAAAAAAACRfABAAAAAAAEiuADAAAAAAAIFMEHAAAAAAAQKIIPAAAAAAAgUAQfAAAAAABAoAg+AAAAAACAQBF8AAAAAAAAgSL4AAAAAAAAAkXwQZKZtTWzB8zsBzPbambrzWy6mf3VzGqmu30AAAAAAGSzyuluQLqZ2UBJz0uqG/FyTUnd/eUPZnayc25BOtoHAAAAAEC2q9AjH8zsYEmvyAs8bJF0i6Teko6R9JSfrJOkd82sTloaCQAAAABAlqvoIx8ellRD0i5JxzvnpkZs+6+Z/SjpH/ICEH+RNCLlLQQAAAAAIMtV2JEPZtZD0hH+02eKBB5CHpD0vb9+jZlVSUnjAAAAAAAoRyps8EHS6RHrudESOOcKJD3nP60v6ahgmwQAAAAAQPlTkYMPff3HrZK+jpPu04j1PsE1BwAAAACA8qkiz/mwn/+4wDm3K066H6LkKZGZtSohScvQysqVKxMtFgAAAACAMiny3bNSKuuukMEHM6suqbH/dFm8tM65DWa2VVItSa1LUc3SRBP26NGjFMUCAAAAALDHmkj6OVWVVdTLLiJvm7klgfRb/cfaAbQFAAAAAIByrUKOfJBUPWI9L4H0O/zHGqWoo6RREm0kfe6v95S0vBRlIzM0lzTdXz9M0qo0tgVlQx9mP/ow+9GH2Y8+zH70YfajD7NfqvqwkrwRD5I0O6A6oqqowYffItarJpC+mv+4PdEKnHNxL+cws8iny0tKj8xTpA9X0YfZhz7MfvRh9qMPsx99mP3ow+xHH2a/FPdhyi61iFRRL7vYHLGeyKUUtfzHRC7RAAAAAAAAESpk8ME595ukdf7TuHelMLMG2h18SHgSSQAAAAAA4KmQwQffXP+xo5nFu/xk34j17wNsDwAAAAAA5VJFDj585j/WknRonHT9ItY/j5kKAAAAAABEVZGDD29GrF8cLYGZ5Uga5D/dKGlSsE0CAAAAAKD8qbDBB+fcNElT/KeXmlmvKMn+Imk/f/1h59zOlDQOAAAAAIBypKLeajPkGnmXUtSQNNHM7pY3uqGGpPMlDfPTzZf0QFpaCAAAAABAljPnXLrbkFZmNlDS85LqxkgyX9LJzrkFqWsVAAAAAADlR4UPPkiSmbWVNwriZHm33syTtEDSq5Iec85tS2PzAAAAAADIagQfAAAAAABAoCrshJMAAAAAACA1CD4AAAAAAIBAEXwAAAAAAACBIvgAAAAAAAACRfABAAAAAAAEiuADAAAAAAAIFMEHAAAAAAAQKIIPAAAAAAAgUAQf0sDM2prZA2b2g5ltNbP1ZjbdzP5qZjXT3b5sY2ZNzewUM7vLzN43s7Vm5vxlbBnKO9HM3jCzZWa2w398w8xOLEUZlc3scjObYmZrzGy7mf1kZv8ys/1LUU5jf79mmdkmf5nlv9aotPuWqcysu5ndbmYTI477FjObb2a5Zta3lOXRhylkZnXN7Hz/c+1TM1tgZr+aWZ6ZrTazT8zs+kT318x6m9nzZvazmf1mZqvMbIKZXVDKdl3gn1Or/HJ+9svtVYoyavptn+5/Vm/1P7sfMLO2pWlPtjKz+yI+U52Z9U8gD+/BNCjST/GWTxIoiz7MAGbWxszuNLOv/GP4m5kt9Y/pXWZ2QAn56ccU8v/eJfo+LPEzlf5LLzOramZ/MO9/kJW2+//Teeb9f9o7wXLoxxDnHEsKF0kDJf0qycVY5knqmO52ZtMS51g6SWNLUU6OpKdLKO8pSTkllNNY0rQ4Zfwm6Q8JtOdwSSvjlLNCUo90H/8k9N/kEo55aHlWUlX6MPMWSccm2IdrJA0ooawRkvLjlPGOpOollFFD0rtxysiXdEcC+9VR0vw45fwq6ZR0H/+A+7abpJ1F9rt/nPS8B9PbX4m8D52kT+jDzF8kXS1pSwl98RD9mDmLpE9K8T4M/T1qSf9l3iKpraQ5CfThI5IsRhn0Y9E2pLtjK9Ii6WBJ2/zO3SzpZkm9JB0taXREx8+TVCfd7c2Wpcib5mdJEyKejy1FOfdE5Jsh6XxJh/mPMyK23R2njEqSpkSkfU3SCZJ6yPsn4peIPzYnximntaTVftqdku6TdIS/3KfdXwZ+kdQq3X2wh/23wN+X5ZIeknSWf9x7SrpW0rKI4/kifZh5i7zgwxJ5AaI/SjrD77/eks6VNE7SLn9/d0g6KEY5l0Uc9wWSLvH77zRJ/y3FefBSRNr/+vkP88tbELFtWJwy6sj7LA6lHS3vs7qXvM/uzf7rWyV1S3cfBNSvOdr9z84vEceif5w8vAfT22ehYzZK0gFxlvb0YWYvkm6NOH7zJF0nqZ+8gOAx/vPPJY2kHzNnkdS+hPfeAfL+LoaO6UT6L/MWSVVUOPDwraTB8v63OU7SnSocGLyRfkzw2Ka7cyvSot2/8O6U1CvK9r9GnFgj0t3ebFn8D4BTJDXzn7eLOI5jEyyjU8SbbrqkGkW21/RfD/Vf1NEp8r7chOp+PMr2jto98uVHSZVjlPNcRDnnRNke+YcroX3M1EXeL9nnSqoUY3tjFf4SeCR9mFlLrL4rkub0iP19Pcr2hpI2ancQsXHROiSNjyijf4x6jo5IM75o2/zz6Wd/+wZJDWKUc1dEOX+Nsr13xPn2Sbr7IKB+/ZO/f99LujuBY897MP19tkf/Q9CHmbHICy6E9utZSVXipC02IpB+zOxF3he90P5eRP9l3iLp7Ih9+kJR/s+RdKikPO3+f6Jyke30Y7R2pLtzK8oiLzoV6tAnY6TJkTQ34iSO+ceGJe6xblfaN4+8X4lCeXrGSNMz3pvfTxPqv3WSasZIc2MJb/7m2j3s/IM4bf5AuyOdzdN93APu01Mijtkj9GF2LpJ+8Pd3TZRt10cc0/Nj5G+l3SMo3o2R5r2IP+RRI/fyfnEI1RUtsFBFuwMhcxVjOKSkJyPKOSzdxzfJfdVGu0d39JN3OUxoX/vHyMN7MP39FjomI8qYnz5Mfx/maPflXt8oxhcJ+jE7F79/QyM6N0c7rvRf+hdJIyOOy8A46V6PSNeVfix5YcLJ1Dk9Yj03WgLnXIG8qJQk1Zd0VLBNgiSZmckbli1JPzjnvoyWzn99nv/0ND9fZDmdJO3nPx3nnNsWo8qxEetnRNl+qnZPBhv1XClSTo6fpzybFLG+d9GN9GHW2Ow/Vo+y7XT/cZO8P+bFOOeWSfrIf3qMmdWJ3O4/P8Z/+pGfPprX/Xqk6P13lKR6/vqz/mdzNGMj1qOVk80el1Rb3v5/WlJi3oPZjz7MGMdL2sdfv885t6s0menHjHeMpJb++n+KHlf6L2NUjVhfGCfdT9Hy0I+xEXxIndBs/VslfR0nXeQ/eX2Caw4itJfUwl8v6Z/s0PaW8kZYROobJV0xzrlV8n7VkKL3cULlqGKdK9Ui1vOjbKcPM5yZdZZ3rbLkjYCI3FZV3ugwSZrqnMuLU1TomFWT1L3ItsO0+49/vP7LkxT6R+AwM6tSJEmi/feVvHl8pHLUf2Z2rrzRRuvlXVeeCN6D2Y8+zAzn+I9O3mWJkiQza2hm+5hZwxLy04+ZbVDE+nNRttN/mWFexHqHOOlCP4g5eZc8hNCPMRB8SJ1Q1GpBCVHsyH/K94uZCsnUJWL9h5ipim8v2j9lKae1mdWKUc6v/odJVM65ldr96215P1f6Rax/H2U7fZiBzLtN5T5m9md5f9Aq+5seKpK0k7w5HaTU919l7f6VsVTl+J/lC2K0JSuZWX1JD/tPb3DOrU0wK+/BzHKOmc01s21mttnMfjSzZ80s3ohK+jAz9PQfFzvnNpvZ78xstrwh1/MlrfNv83edmVWLkp9+zFBmVlu7f5X+Wd6dMYqi/zLDS9q9PzeYWaWiCczsYEkn+09fdM5tithMP8ZA8CEFzKy6vEnOJO86r5iccxvkjY6QvFlJEbxWEetx+0fS0oj1ov1TlnKsSL7IckoqI7KccnuumFmOvGvZQsZFSUYfZggzG2L+vcvlfZbNl/SApGZ+knslvVgkWzr7L145W51zGxMsp0mMLwLZ5h/yrg39XNIzpcjHezCzdJH3j2MNeZfPdJT3i+t//XvL14uShz5MM//v3b7+07Vm9rCkF+TdISFSJ0n3y+vP+kW20Y+Z6yxJoS+Fzzv/Ivsi6L8M4Afefy9vdGMfSdPNbJCZ9TSzY83sDnk/qlSVd9eKvxQpgn6MgeBDakRel7wlgfSh4EPtANqC4krTP1sj1ov2T7LL4VzxXKvdQ/Jfd85Fu2yJPsx838i7d/RNUf7hKg/9F62crGJmR0j6g7xJPS+P8Y9xLOWhD7O6/3zbJL0saai826cdLG8Ogb/L++Vc8uZXeSvK5Ub0YfrV0+7/zbvKu3XxSkkXybsjUE15IwFDl431ljSmSBn0Y+Yq6ZILif7LGM658fLuaPG0vMtGn5U0VdKH8iZh3ibvrlBHOOd+KZKdfoyhcslJkASRk6vFu5Y5ZIf/WCOAtqC40vTPjoj1ov2T7HIq/LliZv3k/VIuefcmHh4jKX2YOd6UNxeC5O3T3vJu33SGpJfM7E/OuXeK5CkP/RetnKzhz7sxWt4vJg865+aUsojy0IdZ238RWsYYrfOhmT0q6X15AYl+8j5PH4lIQx+mX+RQ6eryvtwc5ZyLvP58spkdLe9L0EGSzjCzw51z/4vIF0I/ZggzayWpv//0S+fc/BhJ6b8M4f9dHCRv4kiLkqSZvMDgInm39o5EP8bAyIfU+C1ivWrMVLuFhu5uD6AtKK40/RM5rLpo/yS7nAp9rpjZ/pLekBck/U3erYNWx0hOH2YI59xG59wcf5nunHvZOXemvD/gHeT94jqkSLby0H/RyskmN8sb7r1E0p1lyF8e+jCb+0+S9/6Ls+0Xefeu3+m/dHWRJPRh+v1W5PnTRQIPkiTn3HZJt0S8dF6MMujHzHGRdn/vejZOOvovA/hzJnwk6SZ5o47+Ie9StmryRigdL+kzeRNfv+nPbRWJfoyB4ENqbI5YT2QISyjyncjQGOy50vRP5K8SRfsn2eVU2HPFzNpLmiipgby7W5zvnJscJwt9mOGcc/+W9Kq8vzuPFZmxvTz0X7RysoKZ7SvvHyxJuto5tzVe+hjKQx9mZf+VhnNuobwhw5LU0cxaRGymD9Nvc5HnE+Ok/VjeJVKSd6efaGXQj5nj9/7jDkmvxElH/2WGEfIuXZOkS51zNzjnfnDO5TnnNjnnPpR3W+5J8kZF3G9mB0Xkpx9jIPiQAs6537T7WsuiE4AUYmYNtLvTl8ZLi6SJnHwlbv+o8OQrRfunLOU4FZ/8JfS8pDIiyyk354r/z/BH8m5R5CRd4px7q4Rs9GF2CPVjLUknRLyezv6LV06tKJO5xSpnjXNuR9yUmetaeb+GLJRU08zOL7qo8IR3R0dsC/294j2YPeZGrLeMWKcP08z/DFkT8VLM/fH/twzdjaZJxCb6McOYWXftvtvAO/7k8rHQf2lmZibpEv/pfOdc1JEq/h2vbvOf5kgaErGZfoyB4EPqhP7YdzSzeHNt7BuxHu2Wgki+yH/E9o2Zqvj2ov1TlnKWRvmVMVROPTNrHqsAM9tLUt0YbclKZtZY3q9yoXsqX+2cizUpUyT6MDtE/lPdNmJ9vrwRLlLq+2+XCt+bO+Fy/M/y0D2+s7n/QkMsO8i7vVi05ayI9LdFvB760sN7MHvEmkiUPswM30WsF7u9XxGh7ZG3cKcfM0/kRJPxLrmQ6L9M0EzepRaSNLOEtJGToEceZ/oxBoIPqfOZ/1hL3sypsfSLWP88uOYgwiJJK/z1fvESSjrSf1wuaXGRbZ9FrMcsx3/Td/KfRuvjhMpROTtX/Fu/TdDuXwdudM49nmB2+jA7RP7KGh7O55zLkzTNf9rLn+QpltAx26HdE1uGTNfuyZTi9V9VST1DeZxzO4skSbT/umv3SLWK0H/x8B7MHpH3jV8RsU4fZobISww7xEpkZnW1+zbuyyM20Y8ZxL+rzPn+0zXyJn2Nh/5Lv8hgXkk3Z4i8a1BkPvoxBoIPqfNmxPrF0RL493cORUc3yruOCAHzbycXGg6+r5n1jJbOfz0UVXyr6G3o/JmLQ1HCc82sZowqh0SsvxFl+3hJBf561HOlSDkFKj7Lblbxj9W7kg7xX/q7c+6+RPPTh1njnIj12UW2vek/1pV0ZrTM/mzhx/pPP3bOFbo+2n/+sf/0WD99NGdqd2Q/Wv99IulXf32wPwQzmiER69HKyQrOuSHOOYu3qPAklEdFbFvsl8F7MAv48+kc5z/9yTkX/tJKH2aM1yLWz4iT7gztnoF/SuhF+jHjnKjdI8Re9Ifqx0T/ZYT1kjb5671KGLEe+WV9UWiFfozDOceSokVeNNvJm2m6V5Ttf/W3O0kj0t3ebF0ktYs4jmMTzNNJXsTSyfv1tEaR7TX810P9t0+Mci6JqPuxKNv3lvelxskb6l05RjnPRZRzdpTt55R2HzN1kXet+YSI/XmojOXQh+nrwyGSqpeQ5tqI/V0oqVKR7Q3lBV2dvMh/oyLbK8n7Qxgqo3+Meo6OSPNWlHoaS/rZ375BUoMY5dwVUc5fo2zv5Z9HTtIn6e6DFPTxiASOPe/B9PbRwFjHwt/eTNKMiH3+M32YmYuk9/x9ypd0TJTtzeVdj+3kjQJrST9m5iLpPxH7dkiCeei/9PfbixH7dEeMNA3kXSYVSnc8/ZjAsU1351akRd69tbf5nbpZ3uziPeXNlvqviA6fJ6lOutubLYukvvK+/ISW6yKO5WdFtg2JU849EflmyLt1VXf/MfIftrvjlFHJrzOU9j+SBkjqIekqSb9o9z8UJ8Ypp7Wk1REfSPf6+9nXXw996VktqVW6+2AP+++1iOP1saSu8ia3i7V0og8za5EXLFgnabS80Vt95N1/vq+k4UWO5w5Jx8Yo57KIdAvkRee7SzpV0n8jtr1YQnteikj7Xz9/d7+8BRHbhsUpo468z+JQ2n/J+6zuKe+ze7P/+jZJ3dLdByno4xERx6J/nHS8B9PXR4vlDdt9RNIF8gJk3eSNFvo/eUO+Q8d0iqRq9GFmLvK+tGzw92273ydH+P1whXYHHpyk6+nHzFzkfTn9zd+32aXMS/+lt+/2lbQ14tiNlzf30cHyPluv1e4fMpykj+jHBI9tuju3oi3yfpn4NeIEKrrMk9Qx3e3MpkXS2DjHs9gSp5wcSc+UkP9pSTkltKexvOvXY5Xxm6Q/JLBfh0taGaeclZIOT/fxT0L/Jdx3/rKYPsysRd6XnkT6bqmk40oo6055w/1ilfGuSh5lUcNPF6uMfCUwukxSR3mTYcYq51dJp6T7+Keoj0dE7Hf/OOl4D6avjxJ9H/5HUn36MLMXeV8IVsXZ7wJJf6MfM3eRdHnE/hUbQVdCXvov/f13rAoHbWMtHyv2KEr6sWgb0t2xFXGRN8v7SHmBhq3yotvTJV0vqWa625dti5IUfIgo7yR5158vl/cr7XL/ecxoYpQyKsv7xXeKvFthbZf0k7xfhvcvRTmNJf1N3vXxm/1llv9ao0TLyeSlNH3nL4vpw8xaJHWW9Gd5o1i+lfcP805510wukPdlZ0iin2+Sekt6QdISv/9+kXe/+wtK2a7f+fl+8ctZ4pdb7LK3OGXU8j+bp/uf1Vsl/eB/hrdN97FPYR+PiHgP9k8gPe/B1PdRP0m3y5vQbp680Ug7/fN2lqQnS3nu04fp79NG/nvvG3nBzu3yLlsbI+lg+jGzF3kT9jl5Q+9blLEM+i+9fdhI3v8Ak+SNCMiTN+JxoaRXJJ0myejHxBfzGwEAAAAAABAI7nYBAAAAAAACRfABAAAAAAAEiuADAAAAAAAIFMEHAAAAAAAQKIIPAAAAAAAgUAQfAAAAAABAoAg+AAAAAACAQBF8AAAAAAAAgSL4AAAAAAAAAkXwAQAAAAAABIrgAwAAAAAACBTBBwAAAAAAECiCDwAAAAAAIFAEHwAAAAAAQKAIPgAAAAAAgEARfAAAAAAAAIEi+AAAAAAAAAJF8AEAgCQxs0/MzJnZJ+luSzKYWX9/f5yZ9c+A9oz127I43W1JNzMbEeqbdLcFAIBEVE53AwAAyBRmVkvS7yWdKukgSY0kmaRNkhZLmi1pqqQPnHNL09RMZCk/gDNpD4v52TnXbo8bAwBAihF8AABAkpn1kvSypDZRNjf2l+6SLpb0i6TmqWtd+WVmIyTdIUnOOUtvawAAQFAIPgAAKjwz6yRpgqQ6/kvjJf1H0nxJefICDwdJOk7SUbHKcc71D7ShFZxzboikIWluxp6YLqlrjG0t5J2DkvSWpFtjpMuTJOfcCEkjktg2AAACRfABAADp79odeLjYOTc2SpoPJf3TzJpIOjdVDUP54ZzbKmlOtG1mtiXi6UbnXNR0AABkK4IPAIAKzcwqSTrZf/pVjMBDmHNujaTHg24XAABAecLdLgAAFV0TSTX89QV7UlC8u12YWbuIO0cM8V8708wmmtlqM9tqZt+a2dVmViUin5nZ7/yyV5vZNjObYWaXm1nUORKi1RWnzYv9dGPLuM89zez//PatMrM8M9tkZnPN7Akz6xIj3xD/Tg13RLzmoiztIrYndLcLM+tqZqPN7Ef/eG02s+/M7MHI8qLki9ZHx5nZ2/6+7TCzRf5+tSrVgUqyku52UbRfzewQM3vBzJaa2XYzW2BmI82scZF8vc3sVTNbYma/mdlPZnafmdWJVk+RvJXMbLCZvWNmK/zjtc7MPjOzP5tZjZLKAACUX4x8AABUdHkR6/ulqlIzGyVpeJGXD5T0iKT+ZnauvL/Tz0s6u0i6gyU9IekQScMCbmpM/hf03Cibqsg7lvtJGmpmf3TOjUpRm26S9H8q/gNLF38ZbmbDnHPPJVDWPZJuLPJyO0mXSzrLzPo5577f81YHy8x+L+lpSVUjXt5b0rWSTvb3Y5WZXSfpH/Lu8BLSQdL1ko7100VeHhJZRxt5c6UcVGRTQ0l9/GW4mZ3snJufjP0CAGQXRj4AACo059x6ST/7Tw8ysxvMLOi/j5fLCzy8J+lMSYdKOl3S//ztZ8q7q8b98gIPL0o6xU93vqQf/HRDzeyEgNsaT2VJGySNlXSJpCPkBUROkXS7pLWSKkl6zMyOLpL3TXmTLz4R8VrXKMvyRBtjZldIulve/zdrJF0nqZekvvImZ9wqqZqksWZ2UgnFDZUXePhU0u/k3enkWEmhoEUTSWMSbVsaHSQv8LBAXh8dJuloeUEtSeokby6TM+Wdb/+TdKG8/T1B3jkqef0adRJMM2sk6TO/rh2SHpN0jl/XUZLukbRNUkdJ75tZvaTuIQAgKzDyAQAA6VFJ//TX75V0uZmNl/SFpGnOuUVJru9wSQ85566NeG2GmX0oaa6ktn47Gkr6k3Pu4SLpPpV3J4468oIYHyS5fYl6X9KLzrltRV6fKeldM3tE0mR5IzrulPTfUALn3EZJG81sdcRrZZ5k0byJQO/3n66Q1NM5tzQiyed+n06RVEvSaDNr75zbGaPI3pKeknSZcy7y0oaPzSxP0h8k9TSzg51zM8va7hToJu88Pq5IP00ys+ryglvnSzpR0muSznPO5YcSmdlH8gILPSX9wcxudc7tKlLHI5JaywviHRXl/fKJmb0q79iHRlLckqT9AwBkCUY+AAAgPajCv2K3k/RHSS9LWuhf7/+ymQ2MNc9CKS2V9wWsEP/L4bP+00aS/lck8BBKt0rSG/7TI5LQnjJxzi2PEniI3P6rvBEQktTX/4U8KBdLqumv/7lI4CHUnpnyfoWXpJbyRpvEslLS1UUCDyH/jFhP2/FPkJP0hxj9FLoUppKk6pKGRQYeJMl/Ptp/2kjepSth/hwa5/lPr4oVqPOPfWii1iGl2wUAQHlA8AEAUOE55wqcc5dKOl7eKIKiv+w2k/cFa7ykaWa29x5W+XqcX9y/jVh/JU4ZoXQNzKz+HrYnKcyslj9p4/5mdoCZHSApcj+LzgeQTMf6jxslvR4n3dNR8kTzH+fcjmgbnHPzJIXmPuiQaAPTZFaceSkiz7UP/UuQSkpXdH9Plhe82CZvJEw8k/3HFv4cEQCACoTLLgAA8DnnPpT0oZnVlTdB3mHyrn0/UlLoOvXukqaY2aHOuZVlrCrehHsby5CuTpHnKePfLeHPks6StI8KT1ZYVOM42/bUAf7jjDiBHTnnfvHvltEuIk80P8TZJnlzXdSWd+wzWRDnWqTu/mNNSbtKMTCouaQliSYGAGQ/gg8AABThnNsk71fc9yXJzKrJm3TwAUkNJO0l6W/yrvsvi5iXKkgqKEO6SmVsxx4xs0MlTZA3HD8RQd5qsaH/uDpuKs8qecGHhnHSxDv20u7jn5ZjXwrxLospiAgWlPVca1rGdtUsOQkAoDwh+AAAQAn84fe5ZrZCuyd3PNO/ZWNBnKzllplVlTROXuBhp7xJO9+S9wv6htAlC2bWQdJPoWwpaFq0ORoQnFAwYq28O1skKtmTuAIAMhzBBwAAEuScm2BmS+XN7N9A3hfvNeltVVSRAZGS5neqVcY6jtbu6/+vcM49HSNdvNEFybRe3oiUZgmkbR6RB3tmnf9YR9L3RSesBAAghAknAQAonRUR65n6K/vmiPUGsRKZWUMlfslEUftHrMebGLN7nG1S8o5h6Dadh5hZzB9XzKypvFuZRuZB2YVuM1pNJfc1AKACI/gAAECCzKymdt9qcJN2/+qbUZxzG7R7ksB4XwjPV9kvhYj8gh919ISZ5UgaWkI5v0Wkr1bGtkjSR/5jfUlnxkl3qXbv80dx0iExb2t3AOlPaWwHACDDEXwAAFRoZlbbzP5nZqf4X5ZjpcuRN69BaLb/8c65TB35IO2+reFp0W4Namad5U2aWVY/RqwPiZHmHkmHlFBO5B1D9uQWprnaPWniA2bWsmgCMztI0s3+0+WS3tyD+qDwbUdf9Z+eb2Z/jpfezNqb2QXBtwwAkGmY8wEAAKmHvF9wl5vZm5KmSvpZ3uUL9SUdLOkSSV399L9Kui3lrSydUZJOlXeHiU/MbIS8IfK1JR0j6Rp581XkS2pShvInyLuzRFNJ/2dm7SS9IW/iwY7yRjwcI+lzebctjeWLiPUHzezv8gISocDOYufcrpIa45xbY2Z/lfS4pFaSvjaze/3yK0s6VtJf5e2/kzQs3i05USrD5Y2w6SAv8HOapOckfSdph7xLew6SdIK8uULekPRSepoKAEgXgg8AgIpul7xbLzaX1FLSlf4Sy4+SLnDOLQ6+aWXnT475iKQ/yvsyXnRCyCXyghPvl7H8rWY2SN7ogeqSLvOXSJ9Iukpx5lZwzi0ws3GSzpV0vL9Eai9pcYJtGmVm9eWN6Ggm6cEoyXbICzy8l0iZKJlzbr2Z9ZF395MjJB3pL7FsSknDAAAZheADAKBCc8795g/R7ynv1/GekjrL+/JaXdJWeZNMfivvVpKvOefy0tTcUnHOXWNmX0q6XFI3SVXkBR3ekPRP59w6s7Lf/dIPcHSXdKO8X7SbyJtrYq6kFyQ9I6lNAkX9f3t3iBMBDEVR9FUg2QA7wSCwWMwkrGc0ayEoJJod4FCzi4+oxkzykhlyzgIqmqqb/vYlyVeS5+y9v82Zo6Ezc1xrvWdHj8ckd9m/f/wk+Ujyeunh6BrNzCnJw1rrKckhyX120LvJPhPf2TeK3mbm8691APi/1mWPqwIAAADXzoOTAAAAQJX4AAAAAFSJDwAAAECV+AAAAABUiQ8AAABAlfgAAAAAVIkPAAAAQJX4AAAAAFSJDwAAAECV+AAAAABUiQ8AAABAlfgAAAAAVIkPAAAAQJX4AAAAAFSJDwAAAECV+AAAAABUiQ8AAABAlfgAAAAAVIkPAAAAQJX4AAAAAFSJDwAAAECV+AAAAABUiQ8AAABAlfgAAAAAVP0CcPDAGHGRBUgAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" + "cell_type": "code", + "execution_count": 41, + "id": "fe12d4b3-1c9a-420a-b3fb-d6fba538822d", + "metadata": {}, + "outputs": [], + "source": [ + "installs_neg = installs.copy()\n", + "installs_neg[\"number\"] *= -1\n", + "\n", + "total = pd.concat([deliveries, installs_neg]).sort_values('time')\n", + "total['storage'] = total['number'].cumsum()\n", + "# total" ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "deliveries = df.loc[df['action'].str.contains('Delivered')][['action', 'time']]\n", - "deliveries['number'] = deliveries['action'].apply(lambda x: int(x.split(\" \")[1]))\n", - "# deliveries\n", - "\n", - "installs = df.loc[df['action'].str.contains('Grout Jacket')][['action', 'time']]\n", - "installs['number'] = 1\n", - "\n", - "fig = plt.figure(figsize=(6,3), dpi=200)\n", - "ax = fig.add_subplot(111)\n", - "\n", - "ax.scatter(deliveries['time'], deliveries['number'], s=10, label=\"Substructure(s) Delivered\")\n", - "ax.scatter(installs['time'], installs['number'], s=10, label=\"Completed Installation\")\n", - "\n", - "ax.set_xlim(0, ax.get_xlim()[1])\n", - "ax.set_ylim(0, 5)\n", - "\n", - "ax.set_xlabel(\"Simulation Time\")\n", - "ax.set_ylabel(\"Substructures\")\n", - "\n", - "ax.legend()" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "cd4e31d9-bbda-4f7d-8df8-33f447231a78", - "metadata": {}, - "outputs": [ + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "ea3f0a81-5894-42a5-b2f4-f6dcea1b5465", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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muufeuqpice64oorDJ/fb37zm5o13X///TH//0YSeU8lIqLM0tg+KOd9+SnN10+eO6S5fMF/P5/uZRIlrbm5OfKz02xp0vEtMxZmqN4RD876z6mVOm21rbe/DeUF2fF3TNKtt96Kffv24Ze//CWAYJ35T37yE/zkJz8BAFRXV2PDhg344Ac/iKuuuipu74B47r//foyMjAAA7rrrLsyZM0e3z9q1a3Hbbbfh9ttvR2trK/70pz/hve99r+H9lZSU4Gc/+1nMddXV1cVcU3FxMf7jP/4D1157LV555RV0d3ejvLx84vqTJ0/iz3/+MwDguuuuw7XXXqu7j7y8PNx7771Ys2ZN1Mf53e9+h6amJuTk5OChhx5CXl6e4X4f//jH8X//939444038MADD+Dtb397zPUnY3R0FEeOHMGDDz6IH/3oRwCAqqqqiQySSP/zP/+D/v5+1NXV4e677zYscwCAb37zm3jwwQfR2tqKhx56CN/+9rcnrrvnnnsmyl3uvfdew9KOG264Ab/73e/w17/+1YT/oTniva5++MMfwuv1Yt26dbjjjjsM93M4HPjpT3+Kxx57DENDQ/j973+Pj3/84xPX33333QCA7Oxs3HfffYbP7+23347HHnsMe/bsMel/RkREBGw+qC2DqC7Kxtq5pZptLIUgOo3NG4nicDgc+MUvfoFnn30Wl112me7gpr29HY888gje+c534pxzzsGRI0cm9XjhWvqSkhK8+93vjrrfxz72Md1tjFx99dUoLCxMag3Dw8NoamrC3r17sWfPHuzZs0fTX2Dnzp2a/Tdt2gS/P/jH9UMf+hCiWb16NVavXh31+ieffBIAsH79elRWVsZc48UXXwwAeP3112P/Z+I4fvy4ppFmXl4eVq5ciR/84Afw+XzYsGEDNm3aNNHE0Wi9V1111cT0CCMulwvnn3++4XrDP7uVK1firLPOinofH/3oR5P+v1kp3usqHGh6z3veEzOoVVJSgpUrVwLQPjd+vx+bN28GAFx66aWora01vL3D4cCHP/zhZJdPREQU0yYlsLBxSRVys5yabSyFIDqNGQtECXr729+Ot7/97RgYGMCrr76KN998E1u2bMFLL72E/v5+AMCWLVtw0UUXYevWrZg1a1ZKjxM+83rmmWdGbRYIBDMl6uvr0dTUFPNs7apVqxJ63K6uLtx11114/PHH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o8jOzsbQ0BAuueQSXH/99fj973+PrVu34s0338STTz6JO+64A6tWrcJFF11ky0Hl1772NQDBA+DvfOc7E9urq6vx4IMPQgiBtrY2rFu3DrfccguefPJJbNu2Df/85z/x+OOP48tf/jIWLFiAq666CidOnNDc9+rVq/GpT30KQLAEZN26dXjggQewdetWvPDCC7jllltwww03TAQ3olm7di3OP/98AMB9992HG2+8EZs2bcK2bdvwyCOP4K1vfSt+/vOfT7wOrbZy5Ur84Ac/AADs27cPK1aswJe+9CU888wz2L59O15//XX89re/xWc/+1nMmTMH119/va6M4+qrr8bVV18NAPjzn/+MCy64AI888gi2bduGZ555Bh/4wAdw++23x31uiIiIEtE77MH2E72abRuWaPtlqX0WRj2cCkEEINighF/2fwGYDUACkM3NzTIZhw4dkvv27ZOHDh1K6naUvNHRUVlTUyPDP6t4X4sWLZJbtmwxvK/BwUHZ0NBgeLt58+bp9v/2t78tHQ5H1MfKzs6WDz74oOFjHTt2bGK/+++/P+7/85lnnpE5OTlRH2vDhg1yz549ce/z2Weflfn5+VHv54477pBf//rXJQCZk5MTdT2vv/66nDNnTkLPebTnIJ558+ZFfe5VgUBAnnHGGRKAdLvd8vjx45rrn3zySVlWVhZ3rQ6HQ77wwgu6+/d4PPLd73531NvNnz9fHjlyRPM8Gtm/f7+sqqqKej9f/OIX5f333z9x+dixY7r7WL9+vQQg169fr7su2deVlFLee++9Mi8vL+5zk5WVJRsbG3W3HxgYkBdccEHU261du1Zu3bo16XVF4nsqERFJKeWftrfIeV9+auJrye1Py1GPT7PPhd99XrPPs3tPpWm1RKlpbm6O/Cw1W5p0fMuMBaIYcnJy0NraildffRXf/OY3cfnll6OhoQH5+flwOp0oKirC0qVL8f73vx+/+c1vsGfPHpx11lmG91VQUIDXXnsNn/vc57Bs2bKJs/vRfPWrX8X27dvx8Y9/fKKRXX5+PpYtW4bPfe5zOHDgAG644QZT/p/veMc7sGXLFlx//fWora2F2+1GZWUl1q9fj3vvvRfPP/981FGAkd7+9rdjz549uPnmmzFv3jxkZWWhuroaV155JZ555hnceeedGBgYAICJ5n5GzjvvPDQ2NuKee+7BlVde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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=(6,3), dpi=200)\n", + "ax = fig.add_subplot(111)\n", + "\n", + "ax.plot(total['time'], total['storage'], label=\"Storage Required\")\n", + "\n", + "ax.set_xlim(0, ax.get_xlim()[1])\n", + "# ax.set_ylim(0, 5)\n", + "\n", + "ax.axhline(4, ls=\"--\", lw=0.5, c='k')\n", + "\n", + "ax.set_xlabel(\"Simulation Time (h)\")\n", + "ax.set_ylabel(\"Substructures\")\n", + "\n", + "ax.legend()" + ] + }, + { + "cell_type": "markdown", + "id": "2fe95e59-8405-4493-a117-bf147eb2af99", + "metadata": {}, + "source": [ + "### Increased Substructure Fabrication" + ] + }, { - "data": { - "text/plain": [ - "" + "cell_type": "code", + "execution_count": 50, + "id": "685864c6-b73d-4344-9700-8c9f7daecddd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Installation Time: 7850h\n" + ] + } + ], + "source": [ + "config = deepcopy(fixed_config)\n", + "\n", + "config[\"jacket_supply_chain\"] = {\n", + " \"enabled\": True,\n", + " \"substructure_delivery_time\": 250,\n", + " \"num_substructures_delivered\": 2,\n", + "}\n", + "\n", + "project = JacketInstallation(config, weather=weather)\n", + "project.run()\n", + "\n", + "df = pd.DataFrame(project.env.actions)\n", + "print(f\"Installation Time: {project.total_phase_time:.0f}h\")" ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" }, { - "data": { - "image/png": "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BDFiI7QBkvWHKywrSSKi/nXKZmJIKZcCWNqH+y+DPjuDyFBYWFj3v/ft2xfUcz/66KN46KGH4HBo3yHZu3cv9u7di7///e945plncNNNN3l9HCklbrrpJrz88ssej1m2bBluueUW3Xp7ezv27duHffv24dlnn8Vf/vIXfP/73/f4OF988QUuv/xyNDT0vFtWXFyMd955B++++y7++7//2+teXT7//HNcd911uqBBSUkJ3n//fbz//vu46KKL8NprryEmJsanxwyU+89AaGio4TErVqzAXXfdhcZG7RPskydP4vXXX8frr7+O2267DU8//TRCQvS/vjs6OnDDDTfg9ddf16zv2bMHe/bswT//+U+fAyHB4svPFQD88Y9/xC9+8Qu0t2ufkB47dgzHjh3DSy+9hIceegi/+c1vDO/f0NCAiy66CF999ZVmfdu2bdi2bRteffVVPPfcc337ZIgGsSPljTjhofkkYF1PDG+NLWuarSkn8ZqJYUEQw1NTTxdPPUH6orcGpdsKqnHexHTTzqf2wwi1C8zMTcQ3R6u619YcLMe3JmWYdk41iHH+xHS8v7O4e4Rsh0Ni5b5SXDUz27RzEtHAcMoGMYiCKSkpCbm5uTh+/Dh27NiBP/zhD/iv//ovv0oKfve73+GBBx7ALbfcgs2bN2PWrFl48cUXNce4v1AGgKeeegq/+MUvADhLVH72s59hwYIF6OzsxMqVK/HYY4+hsbERS5cuRUpKCi666CKP53/iiSewc+dOnHnmmbj77rsxduxY1NTUaN6F7+joQGJiIi6//HKcddZZGDNmDKKjo1FUVIStW7fiL3/5CyoqKnDPPfdg/PjxOOecc3TnOXr0KC677DI0NjYiJCQEd999N6644grExcVh9+7deOyxx/Dggw/i9NNP9/r1WrduHS688EK0t7cjPT0d9957L0477TRkZmaiqKgIr732Gv75z3/iww8/xM0334w333yzt29BwDo6OnDo0CEAQHx8PBISEnTH/Pvf/8aNN94IKSVGjhyJe+65BxMnTkRqairy8/Px/PPP48MPP8Tzzz+PuLg4PP7447rHeOCBB7oDGOPGjcNPf/pTTJ06FbW1tXj99dfx7LPP4rrrrrPs8wyELz9Xjz32GH76058CAKZOnYq7774bY8aMQUJCAg4cOIC//vWv+Prrr/Hb3/4WKSkp+OEP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GzlypPr06aOtW7eqqipchcrKSh1xxBFqaGjQggULEso9+uij1alTJ61YsUK7du0KHRs6dKgGDhyonTt3atWqVaFjXbt21YQJEyRJb731VsKYuAkTJqhr165as2aNtm8PLyk6cOBADR06VHv27NGyZctCxzp16qSjjz760HN08GD4y+4RRxyhyspKrV+/Xps3bw4d69u3rw477DAdOHBAixYtCh0zM02ePFmStGjRIh04cCB0fNSoUerdu7c2b96s9evXh4717NlTY8aM0fxV2/TSK68fSr/v8VW6eMRBTZ58rEpLS7Vs2TLt2bMndO7w4cNV0aO3Hpy7WLVbmso9efhwrVy+TOPGjZMkvfnmm4o3ceJEdelUqoPVm9RYs1eSNLJvN9n2VdrYuVaDBw/W7t27tXz58tB5nTt31pFHHilJeuedd1RfXx86PnbsWHXv3l3r1q0L/Q1KUr9+/TRixAjt379fixcvDh0rKSnRscceK0lauHChampqQsdHjx6tXr16adOmTdqwIbz6SK9evbzjnUs0e5zTj58I17lrJ69tli5dqr1794aOjRgxQv369dO2bdu0dm04GNS9e3eNHTtWjY2NevvttxOew6OOOkrl5eVauXKlqqurQ8eGDBmiQYMGqbq6WitXrgwd69KliyZO9Ia/vP3222psbAwdHz9+vCoqKrR27Vpt2xbuzDVgwAANGzZMe/fu1dKlS0PHysrKdMwxXuDr/fffV21teKnZww8/XD169NDGjRu1cePG0DHeIzyF/B5x8OBBvfvuu4o3adKktO8R/fv3144dO7R69erQsW7dujX/HtGli1atWqWdO8M9vQYPHlyU7xF1dXV67733Eh7rscceq5KSEt4jeI+QxHtEDO8RTXiP8OT6PeKMw7roh1tXqq7Bezy1kr71xwbd+YULeI8o8PeIZOXmjXMub5uk5yU918z2urx5JRolNchbqvQ5Sc/ls64ZPp5ySYvkBVh+kuT4Tf4xJ2lWK6/hWrtdddVVzjnnli1blvR4zPTp0xOO/elPf3LOOfeLX/wi4djZZ5/tnHNu165dScvdsmWLc865Cy64IOHYLbfc4pxz7oEHHkg4Nnny5EN1Ki8vTzj+3nvvOeecu+aaaxKO3Xjjjc4555577rmEY0OHDj1U7tChQxOOP/fcc84552688caEY9dcc41zzrn33nsv4Vh5efmhcidPnpxw/IEHHnDOOXfLLbckHLvgggucc879+KHXkj6Hu3btcs45d/bZZycc+8UvfuHueW2N63v+VxKOTZ8+/VCdkpW7bNky9+qKba7bxFkJx77zne8455z7xz/+kXBszJgxh8rt169fwvG5c+c655y77rrrEo59/vOfd845N3/+/IRjlZWVh8qdOHFiwvFHHnnEOefczTffnHDskksucc45V1VVlfzvsHqPc865mTNnJhy78847nXPO3XnnnQnHZs6c6ZxzrqamJmm5VVVVzjnnLrnkkoRjN998s3POuUceeSTh2MSJEw891srKyoTj8+fPd8459/nPfz7h2HXXXeecc27u3LkJx/r163eo3DFjxiQc/8c//uGcc+473/lOwjHeIwr/PWLLli1Jn8Pm3iOcc+5Pf/pTwrFM3iOcc+6qq65KONbe3iNqamqcc7xH8B7Be0Rw4z2C94j441G8R3QZNdkt3LCL94jieo8Y5vL4Pdxcgc4Aa2bnSfq5pB6SPuKcezniKiUws5skfUfSWkkTnXP7UhyXpNOcc8+34hqZDCeZJ0mPP/64Bg5sGk7ALyieQo6OXvWbl/XsK2+Ejj30+RM19fjjUkZHhw0bpk/et0TvrFiv+l1efU8Y1UffvuDIjH9B+fPTr+vZBat09LBemjm2v6Ti/wWlodHp/xZs0KY9NTrvqEG64PST+AVF/MoaU6zvEfzKyq+sMbxHeHiP8PAe4eE9okkxv0csWLRcn/nTfNUcbJAklZR31eknTNKc2VN4jyjg94gnnnhC55133qHTnHPrEi6UIwUbxJAkMxsk6U15w14mO+fWN3NK3pjZeEkL5PXGuNA592iSPDepjUGMDOoxTP6Qk6qqKg0bVlwrTHRkdfWNmvTdp3TAf8OOWfS9c9JOSrmgqloX/jIc0/vD7Kk6LcUElwAAAEAhu/2ZZbrtmXCAZc4np2rWOD7fFqp169Zp+PDhsd28BjEKenUS59wmSbdJ6ifphoirE+86eQGMlZIqzOzy+E3SUYH8pweOpV8DEx3CgnXVCQEMSWpsJrB492trQvtDe3XVqX5vCgAAAKDYfObUURrYo3Mo7ebHF6m+oTHFGejI8j2xZ2v8y7/9oKQvRVmROLFX2WhJ92aQ/1uB+6Mk7UuVER3D3OXbk6Y3pAli7DpwUI8uCHeHvPKEESpNsmwqAAAAUAwqysv0lbPH6Ya/vHMobenmvXpw/jpdMa04V9FD7hR0TwxfnX87JNJaAFk2d8W2pOmNjamDGA+9uU41B5si0mUlpkunMIQIAAAAxe3i44ZpwuAeobRbnlqqvbX1Kc5AR1UMQYyT/dv9kdYijnNutnPO0m2Svhs45bTAsdURVRsFouZgg95aW530WKoYhnNOd78WnjzqA0cO0oBK1tEGAABAcSstMX3zvAmhtG17a3XHCysiqhEKVUEHMcxshqRvy1u25fWIqwNkzfw1Ow+thx2vIUUU4/VVO7RsS3h27KtOoHsdAAAA2oeTj+in08aF53q746WV2rjrQIoz0BHldU4MM/t2BtlKJPWWNEXSCf6+kzfBJ9AupBpKIqWe2DO+F8boft00Y0zfrNYLAAAAiNI3zpugF5ZuPdQ7ueZgo255aqn++9JJ0VYMBSPfE3veJC8gkSmTVC/pBufc0zmpERCBuSuST+opJQ9ibNtbqyfeC6/NfeUJI2TGhJ4AAABoP8YOrNTl00bonsAPeH99c50+edJIHTmkZ4Q1Q6GIYjiJNbNJ0h5J70j6uaRjnXM/y381gdzYW1uvd9btSnk82XCSv8xfp4MNTenlZSW6+Dgm9AQAAED7c92ZY9WtvPTQvnPSDx5bJJdmFT90HHkNYjjnSjLYSp1zvZxzk51zX3bOLcxnHbPJOXdTYDLP56OuDwrDvFU7Us57IUmNjfH7LhSJlqTzjx6s3t3Kc1E9AAAAIFL9Kzvrc7PGhNLmrtiu55ZsiahGKCQFPbEn0B6lmw9DShxO8q/l27R2R3hxnqumM6EnAAAA2q9rTh6tQT3Cq/Dd/Phi1aeYHB8dR8EFMcysr5n1iboeQK68sjL1fBiS1BAXxLj7tTWh/fGDKnXciN5ZrxcAAABQKLqWl+prHxgXSlu+Za/um1cVUY1QKAoiiGFmA83sDjPbJmmLpK1mttPM5pgZPzmj3ajeX6f3N+xOm6cxMNRk064aPbMo3G3uKib0BAAAQAfwkclDdeSQHqG0nz2zVHtqDkZUIxSCnAUxzGyYmW3wt8+lyTda0nxJ10jqo6YJPntK+rikt8zs2FzVE8inV1fuULCjReeyxJdgcLqM++dVhebPqCgv1YcnD81lFQEAAICCUFJi+uYHJ4TStu2t069fWBFRjVAIctkT4xxJg+QFJh5Ik+8+SUPUtDJJlaTX5K1QYpJ6S7rXzPK9HCyQda/EzYcxdWQflZaEe1XEghb1DY26b154Qs8Ljx2iyi6dcltJAAAAoECcOKafzpwwIJT225dWaUP1gYhqhKjlMogxw799zjmXdBIAMztf0hRJTtIOSec45w5zzs2QFwD5g591rKSLc1hXIC/i58OYMaavSuOGhsQm9nxuyVZt3FUTOnbltMNyW0EAAACgwNx47oTQD3+19Y367yeXRFgjRCmXQYyj5QUnnk6T56rA/a84556K7TjnDkj6tKR3/aQLs15DII+27qnV0s17Q2kzxvRV/PQWsSBG/ISek4b11NHDeua0jgAAAEChOXxAd105LTxV4t/eWq/31u+KqEaIUi6DGCP92wVp8szyb3dJuif+oHPOSfq9vGElk7JYNyDv4nthdO9cpmOG9kw6nKRqx369sHRrKP2qE+iFAQAAgI7pS2ceoe6dwzMM/NdjC+XiVvZD+5fLIEZsGtltyQ6a2UhJA+X11njROZdqitm3/NshWa0dkGevrAgHMaaN6qOy0pKkw0nufX1taALQyi5lOn/S4HxUEwAAACg4/bp31udPGxNKe3XlDv0zbiU/tH+5DGLEvoKVpzg+LXD/jTTlVPu33dpaISBK8ZN6zhjdV5I363JQ7cFGPfBGeP3ri48bpopy5rYFAABAx/Wpk0ZpaK+uobSbn1ikgw2NEdUIUchlECP2s/PYFMdPDNyfl6acSv+2Jk0eoKCtrz6g1dv3h9JmjPGDGHFzYjzx3iZt21sXSrvyhPAYQAAAAKCj6dKpVF/7wLhQ2sqt+3Tf62tTnIH2KJdBjNhcGAmripiZSfqQv1sv6eU05cQmAticvaoB+RU/lKRn106aONgbcRU/J8bf3lwX2p82so/GDqwUAAAA0NF9aNIQHRM32f1tzyzT7ppUsxOgvcllEONReRNyXmhmH4879lV5E386Sc845/YqtdhSrayhg6IVH8SYPrrPoWEkJXFzYuyrawjtXzWdXhgAAACA5A3F/uZ5E0JpO/bV6X+fXxFRjZBvuQxi/ElSbGD/HDN7zczuNrM3Jf0okO/WVAX4PTY+LC/Y8WquKgrkknMuYT6ME8f0O3Q/PogR1Kdbuc45alDO6gYAAAAUmxNG99XZEweG0n73r1Vat3N/ijPQnuQsiOGc2y/pckl75fXImOLvT/L3Jen3zrl/pinmPElD/fvP5KiqQE6t2b5fG3aFp3Q50Z8PQ0ocThJ06fHD1LmsNGd1AwAAAIrRjeeOV1ngc3RdfaN++iSd9zuCXPbEkHPuFXnBi7/Km5jT/G2NvCEln22miG/5t5ucc/TEQFF6ZWV4KEm/7p11+IDuh/ZL0rwKr5jGUBIAAAAg3uj+3fWx6YeF0h55e4MWVFVHUyHkTU6DGJLknFvmnLtU3iojgyX1dc6Ncs7d6pxzzZx+hn/e6FzXE8iVuXHzYcwY01cWGEKSajjJKUf008h+rCwMAAAAJPPFM45QZZeyUNoPHluk5r9mopjlPIgR45xrdM5tds7tbME5+/ytNpd1A3Il+XwYfUP7pSmCGFexrCoAAACQUp9u5fr30w4Ppb2+eoeeWsjClu1Z3oIYQEe0bMtebdtbF0qLD2KUJJkTY0BlZ50xYWBCOgAAAIAmV584UkN7dQ2l/eiJxaqrb4yoRsg1ghhAnMZGpy27a1RzsKH5zM2IX1p1SM8uGtGnIpSWrCfG5VOHq1MpL08AAAAgnS6dSvX1c8eH0lZt26d7XlsTUY2Qa3xLAgJq6xs0e848Tbv5nzrlJ89p0cbdbSpvbtxQkhlj+oXmw5Ck+BhGiUkfZUJPAAAAICMXHDNYk4b3CqXd/s9l2nXgYDQVQk4RxAACXly6TS8u3SpJ2rqnVjc/vqjVZTU2Or26ckcoLX4oiZS4xOrp4wckdIkDAAAAkJyZ6VsfnBBK27n/oP78Kr0x2iOCGEDAyq17Q/uvrNiuXftbF8FduHF3QvR3RpIgxriBlaH9T8wY2arrAQAAAB3VlJF9dM6Rg0Jpf351jeobmBujvSGIAQTEBx3qG52eW7KlVWXFz4cxsm+FhiTpYfG1c8Zp+ug+GlDZWV89e6xOHdu/VdcDAAAAOrLPzRoT2t+4q4aVStqhsuazAB1HsnFzTy/crA9PHtrispLNh5HM4J5ddd9nZ7S4fAAAAABNJg3vpeNG9NKba6sPpc15ebXOO3pwdJVC1tETAwioThLEeH7JFtXWt2ylkoMNjXp9VfPzYQAAAADInqtPHBnaf331Dr2/YVc0lUFOEMQAAnYnCWLsq2vQ3LihIc15d/0u7asLBz6mjyaIAQAAAOTSuUcN1oDKzqG0u+aujqYyyAmCGEBAqmWYnm7hWLr4+TDGDuyu/nFvpgAAAACyq7ysRB+bflgo7eG3N2jHvrqIaoRsI4gBBKQKYjyzcLMaG13G5cTPh3FiivkwAAAAAGTXFdNGqLy06atuXX2j7n19bYQ1QjYRxAACqlMsp7plT63eWZ/ZWLra+ga9sXpnKC3Z0qoAAAAAsq9/ZWedf0x4Mk+WW20/CGIAvsZGp901yYMYkvTU+5syKuettdWqrW96gzSTpo8iiAEAAADkS/wEnyy32n4QxAB8e2rr5dKMGMl0Xoz4SUCPHNJDPSs6taVqAAAAAFpg0vBemjyiVyhtzsurI6kLsosgBuDblWIoScyyLXu1etu+Zst5hfkwAAAAgMjNZrnVdokgBuCLn9SzrMTUr3t4RZHmemPsr6vX21XVobQZLK0KAAAA5B3LrbZPBDEAX3wQo2fXTjpzwoBQ2lML08+L8cbqnTrY0DQmpbTENHVUn+xVEgAAAEBGystKdNUJLLfa3hDEAHzVB8JvZj0rOumsiQNDafPX7NT2vbUpy4ifD2PSsJ7q3rkse5UEAAAAkLErTxihTqV2aJ/lVosfQQzAl6wnxkmH91NFeemhtEYn/XPxlpRlvLIyHMRgPgwAAAAgOv0rO+uCY4aE0lhutbgRxAB8yYIYXTqV6tQj+ofSU82LsbvmoN5dVx1KmzGG+TAAAACAKLHcavtCEAPwxQcxenX1lkWNH1Ly0rKtOlDXkHD+6yt3qDGwRGt5aYmOP6x39isKAAAAIGMst9q+EMQAfPFLrPb0gxinjx+g0pKmcXQ1Bxv10rKtCefHz4dx3GG91KVTaUI+AAAAAPnFcqvtB0EMwJdsOIkk9e5Wrqkjwz0qkg0piZ8PY8Zo5sMAAAAACgHLrbYfBDEAX3wQo4cfxJCksyYOCh375+ItagiMHdmxr06LNu4O5TnxcObDAAAAAAoBy622HwQxAF913HCSXhXlh+6fHTcvxo59dZq/Zueh/VfjemF07VSqScN6Zb+SAAAAAFqF5VbbB4IYgC/VcBJJGt6nQuMHVYaOP71w06H7r8TNhzF1VB+Vl/HyAgAAAAoFy622D3zLAny70wQxpMTeGE8t3CznvCElc1dsCx2bMZqhJAAAAEChYbnV4kcQA5BU39CoPbX1obReFeEgRvy8GGu279eyLXu1eXeNVmzdFzp24hiCGAAAAEChYbnV4kcQA5C0u6Y+IS2+J8ZRQ3tocM8uobSnF25OGEpS2aVMRw7pkf1KAgAAAGgzllstbgQx2sjMppjZt83sKTNbZ2a1ZrbXzJaa2R/M7OSo64jmxc+HISUGMcxMZyUZUhIfxDhhVF+VlfLSAgAAAArRuUcNVn+WWy1afNNqAzN7UdI8Sd+VdJakoZLKJXWTdISk2ZJeMrO7zKw8VTmIXnwQo3NZibp0Kk3IFx/EWFBVrWcWhcfQzWAoCQAAAFCwystK9DGWWy1aBDHaJja17QZJt0u6RNI0STMkXS9pvX/8E5Lm5LtyyFz1/vAbVnwvjJgTRvVVZZeyUNr2uDc75sMAAAAAChvLrRYvghhts1jSRyWNcM592Tn3V+fcPOfcq8652yQdK2mpn/cKMzs1qooivXTLqwaVl5XotHEDUpbTp1u5xg2sTHkcAAAAQPRYbrV4EcRoA+fc+c65B5xzDSmOb5P0lUDSJfmpGVqqueVVg+KHlARNH91HJSWW8jgAAACAwsByq8WJIEbuPRe4PyayWiCt6v3hIEb88qpBs8b1D3U9C5oxpl9W6wUAAAAgN1hutTgRxMi94LS3SXtsFKMVW/fqvfXtZxmi+OEkPdL0xKjs0illsIL5MAAAAIDiwXKrxYcgRu7NDNxf1NKTzWxYuk3SoOxVNb0DdQ366/x1uuzXr+iMW17QDx5r8cNpsdr6Bv3w8UW65H/n6o4XV8g5l5PrZDonRkyyISUDe3TW6H7dslovAAAAALnDcqvFhyBGDplZiaQbA0kPtKKYqma2eW2sZsaeWbRZX3lwgV5fvUOS9MrK7Vq9bV9Or3nf61X6zYsr9caanbr58cX69Qsrc3Kd6rggRq+u6VfEPWtCYhBjxui+MmM+DAAAAKBYpFpudfPumohqhOYQxMit6+QtuSpJf3POzY+yMm119pEDE+aKeOCNqpxe8401O0P7tz29VIs27s76dRJ7YpSlyOkZ1LOLjh3eK5R28hH9s10tAAAAADmWbLnVn/9zWYQ1QjoEMXLEzGZK+pG/u0XS51pZ1PBmtqltq2nmOpeV6qLJw0JpD85fl9NliBrjho/UNTTquvvfVm19dqcXSVidJM3EnjHfOn/ioTe7ScN76cJjhzRzBgAAAIBC07+ysy45fngo7b55VVqV417naB2CGDlgZkdKekhSmaQaSZc657a0pizn3Lp0m6RNWax6sz46Nfzi3rqnVs8t2Zq7CyaZAmPxpj362TPZjYzG98RobjiJJB1/WG/N/9ZZeuT/naSHPneiOpXycgIAAACK0ZfOOEKdy5o+zzc0Ot369NIIa4RU+NaVZWY2StJTknrLW43kcufci9HWKnvGDapMWIbo/nlr816P37ywQm/4c3NkQ/wSq+lWJwnl69JJk4b3UkkJc2EAAAAAxWpQzy6afdLIUNrfF2xoVysythcEMbLIzIZIekbSEHl9CD7lnHsk2lpl3+VxvTGeXbxFm3blZuIbl6wrhqRGJ33lwQXaV1vf5mvU1TfqwMHw8JTmVicBAAAA0L58buYYVXYJz433308tiag2SIUgRpaYWT9JT0sa7Sd9wTn3xwirlDPnHzNE3cpLD+03Oumvb67Lez3WbN+vmx9v+zKv8UNJJIIYAAAAQEfTq6Jc184cE0p7fslWvbpye0Q1QjIEMbLAzHpKelLSRD/pRufcLyOsUk5161ymCyaFJ7G8f16VGhuT95poC9dMkXe/tlbPLWnVdCOH7DpQl5BGEAMAAADoeD550kj16945lPaTfyyWa+6LCfKGIEYbmVmFpMckHecn/cA59+MIq5QX8RN8rt2xX6/kIUJ50eShqgj0ApGkr//lHVXvTwxEZCq+J0ZFeanKy3hpAAAAAB1NRXmZvnTG4aG0N9dW65lFbfvhFNnDN7U2MLNyeauQnOQn3e6c+88Iq5Q3xw7vpfGDKkNp982ryvp14gOeI/pW6JsfnBBK27KnVt965P1WXyM+iEEvDAAAAKDj+ujUERrRpyKU9tMnF6shBz3P0XIEMdrmXkln+/eflfQ7MzsqzTY2wrpmlZkl9MZ48r1N2rmv9T0iMrquTFdOG6GZY/uH0v++YIMeXbChVWUSxAAAAAAQU15Woq+cHf7qtnTzXj3y9vqIaoQgghhtc1Hg/umS3pH0bprtqXxXMJc+MnloaNhFXUOjHnoruy/sZKuTmJl+cskxCcGGbz38XqtWSYlfXpUgBgAAANCxXXDMkISe57c+vVS19Q0pzkC+EMRAq/WqKNc5Rw4Kpd0/ryqnk96YebcDe3TRf334qNCxXQcO6oa/vtPi69MTAwAAAEBQSYnphnPGhdLW7Tyge19bG1GNEEMQow2cc9bCbWTUdc62y+OGlCzZvEdvV1Vnrfx08YgLJg1JWCXlxaVbdXcL31jigxi9KghiAAAAAB3daeMGaOrI3qG0/3l2ufbV1kdUI0gEMdBG00f3TZj05v4cTPAZY3H737/wSA2oDC+B9IPHFmn1tn0Zl7mL4SQAAAAA4piZbjhnfCht+746/f5fqyKqESSCGGijkpLECT4fXbBBe7MUnWxuYEivinL95JJjQmkHDjbo+gfeznj2YIaTAAAAAEhm6sg+OmP8gFDaHS+u1I4cL2iA1AhioM0uOX6YSgJdJPbXNeixd1q3UkhzLL4rhqRZ4wboY9NHhNLeXFut37y4IqMyCWIAAAAASOWrHxgX+h6yp7Ze//v88ugq1MERxECbDezRRafHRSfvy9KQkkzn6PyP8ybosL7hYS23Pb1UCzfsbvbc6vggRkV5xvUDAAAA0L5NGNxDF8bNxXfXK2u0ofpARDXq2AhiICs+OjXcE+KttdVasmlP1q9jybpiSKooL9Otl00K9Qg52OB0/QNvN7sMEj0xAAAAAKRz/VnjVBb4slFX36jbn1kWYY06LoIYyIrTxvVPmGDzvnnZWH4o8+VSjz+sj66dOSaUtnjTHt369NK05xHEAAAAAJDOiL4VuvKE8A+3D86v0vIteyOqUcdFEANZUVZaokuOHxZKe+it9ao5mL4XRLZ9+cyxmjC4RyjtjhdXat7qHUnz1xxsUF19YyitF0EMAAAAAHH+/fTD1bVT6aH9Rifd+vSSCGvUMRHEQNZcNiW8Skn1/oN6auHmNpWZ6ZwYMeVlJbr1skkqL23603ZOuv6Bt5OumFIdt7yqRE8MAAAAAIkGVHbRp04eGUp7/N1NWlBVHUl9OiqCGMiakf26acbovqG0+7MypKRJiikxQiYM7qHrzx4bSqvacUA/eGxRQt74oSSS1IMgBgAAAIAkPnvqmIQfPX/6JL0x8okgBrLq8mnh3hgvL9+utdv3t7q8FnbEOOQzp4zWlMN6h9LufX2tnlu8JZQWH8So7FKm0pIMIiUAAAAAOpyeXTvp87PC8/D9a/k2vbx8W0Q16ngIYiCrPnDkoITI5ANvZGe5VUkyZRZgKC0x3XLZJFWUl4bSb/jrO9q5r+7QfvX+utBxhpIAAAAASOfqE0dqYI/wogY/+cdiuZaOhUerEMRAVnXpVKqPTB4aSntwfpXqGxpTnJFeW94IDuvbTf/5wYmhtK17avWfD793qFxWJgEAAADQEl06lerLZ4aHry9Yt0tPvr8pohp1LAQxkHUfnRoeUrJ5d61eWLo1K2VnMidG0BXThuu0cf1DaY+9u1GPLtggiSAGAAAAgJa79PhhGtWvWyjtp08uafWPt8gcQQxk3YTBPTRpeK9Q2n3zWjekpK0dssxMP774GPWqCAcnvvXwe9q0qyYhiBGfDwAAAADilZWW6Ctxiwms2LpPf3tzfUQ16jgIYiAnLo/rjfHs4i3asrumzeW2ZsrNAT266AcfPjqUtrumXl/7y4KEJVbpiQEAAAAgE+cdNVhHDe0RSvvZM0tVc7Ahohp1DAQxkBMXTBoSmlSzodHpL2+ua3E52Zob54PHDNaFxw4Jpb20bJseeTscKWV5VQAAAACZKCkx3fCB8aG0Dbtq9OdX10RUo46BIAZyonvnMp1/zOBQ2v3zqtTY2LaoREvnxAj63oeOSphFeHdNfWi/V9fy1l8AAAAAQIdyyhH9NGN031DaL59brj01B1OcgbYiiIGc+ejUEaH9Ndv369VV21tURjYXKepZ0Uk/vWRS+jz0xAAAAACQITPT184ZF0rbuf+g7nxpVUQ1av8IYiBnjhvRS0cM6B5Ku7+VE3zGWKtmxWhy6tj++vj0w1IeJ4gBAAAAoCWOG9FbZ08cGEr73UsrtW1vbUQ1at8IYiBnzCxhudUn3tuk6v11GZfhsjUpRsA3zhuvkX0rkh5jdRIAAAAALfXVD4xTSeD31n11Dfrlc8ujq1A7RhADOXXRccPUqbTp1VxX36iH3mr9skNtmRMjpqK8TLd+9NjQm0wMPTEAAAAAtNTYgZW66LhhobS7X12r9dUHIqpR+0UQAznVp1u5zj5yUCjtz6+uafMEn2113Ije+vyswxPS+3RjYk8AAAAALfflM49QeWnTV+y6hkb98ZXV0VWonSKIgZy7clp4gs8VW/fpX8u3RVSbJl884wgdO7zXof1jh/fSkF5do6sQAAAAgKI1rHeFLp8WHk5/3+tVOlDXEFGN2ieCGMi5E8f0TZjgc87c1Rmdm4MpMQ4pLyvRvZ+ZrhvPHa+vnj1Wf7xmWu4uBgAAAKDdm33iyND+rgMH9fDbrR9Oj0QEMZBzZqar417Mzy3ZotXb9rWqrGzqWl6qa2eO0b+ffoR6dGE+DAAAAACtN7p/d80a1z+Udtfc1TlZsKCjIoiBvLjouKGq7FJ2aN856Y+vrGn2PCde7AAAAACKR3xvjMWb9ujVlTuiqUw7RBADeVFRXqaPTgmPD3vwjSrtq61vUTnZ7YcBAAAAANl16hH9Napft1DanLmrIqpN+0MQA3nziRkjQ0uk7qmt19/eXJf2HHpdAQAAACgmJSWmq2ccFkp7euFmrdu5P6IatS8EMZA3I/pW6IzxA0Npc1o4PizLU2IAAAAAQNZdfPwwde/cNJy+0Ul/erX54fRoHkEM5FX8+LDmllulJwYAAACAYlPZpZMuOX5YKI3lVrODIAby6qTD++rw+OVWX16d8fl0xAAAAABQDD4RN6SE5VazgyAG8srMEnpjPLtki9ZsT77cKquTAAAAAChGLLeaGwQxkHetXW5V8oIgAAAAAFAMrma51awjiIG8S7bc6gPzki+3SpASAAAAQLGayXKrWUcQA5FozXKrEquTAAAAACgeLLeafQQxEIlMl1ulIwYAAACAYnbx8cPUrbz00D7LrbYNQQxEpqXLrUqsTgIAAACguFR26aRL44bTs9xq6xHEQGQyWm6VrhgAAAAAilyy5VYfYbnVViGIgci0dLlV/6TcVgoAAAAAsmx0/+6aOTa83Gqy4fRoHkEMROojk9Mvt+roigEAAACgHZh90sjQPsuttg5BDESqW+cky62+kXy5VYk5MQAAAAAUp2TLrd41d3U0lSliBDEQuYTlVmvq9be3vPFh9K4CAAAA0B6UlFjC3BhPLdzEcqstRBADkfOWWx0QSrsrxfgwpsQAAAAAUKwuYbnVNiOIgYIw+8RRof3lW/bq5eXbmREDAAAAQLuRbLnV++ex3GpLEMRAQUi63OrcVQn5jFkxAAAAABSx+CEl1ftZbrUlCGKgIJiZro5bbvWfi7do/c4D0VQIAAAAAHKA5VbbhiBGFpnZYWZ2i5ktNrN9ZrbDzOaZ2dfMrCLq+hW6i5Ist7ppd00oD3NiAAAAACh2LLfaegQxssTMLpD0jqTrJY2TVCGpt6Qpkn4i6S0zOzy6Gha+ZMutAgAAAEB7w3KrrUcQIwvMbLKk+yX1kLRX0jclnSjpDEl3+tnGSnrMzCojqWSRiF9uNR4dMQAAAAAUO5ZbbT2CGNlxu6Sukuolne2cu9k594pz7lnn3Gcl3eDnGyvpK1FVshgkW24VAAAAANobllttHYIYbWRm0ySd4u/+zjn3SpJst0ha5N//kpl1ykvlilT8cqtBzIkBAAAAoD2o7NJJlxw/LJTGcqvNI4jRdh8O3P9DsgzOuUZJf/R3e0k6LbdVKm7JllsFAAAAgPbmE3ErNLLcavMIYrTdyf7tPknz0+R7IXD/pNxVp/glW2710DFmxQAAAADQToxhudUWI4jRdhP82+XOufo0+RYnOQcpxC+3CgAAAADt0ey4H3AXb9qj11ax3GoqBDHawMy6SOrn765Ll9c5t1Nebw1JyngdUTMblm6TNKhVlS9wKZdbpSMGAAAAgHZk5tj+Gtm3IpQ25+XV0VSmCBDEaJvgcql7M8gfC2K0ZMKHqma2eS0oq6g0t9wqAAAAABQ7b7nVkaE0lltNjSBG23QJ3K/LIH+tf9s1B3Vpd0b0rdAHJoY7mkwY1COi2gAAAABAblwyJXG51T+/ujbCGhUuJh1om5rA/fIM8nf2bw+04BrNDT0ZpHbcG+MHHzlK9Y2NWrF1n66cNkJHDSWIAQAAAKB96eEvt3rXK2s0uGcXfWz6Ybpi2oioq1WQCGK0zZ7A/UyGiHTzbzMZeiJJcs6lnWvD2vl4i77dO+u3V0+NuhoAAAAAkFOfOnmUThjdV2dPHKiyUgZNpEIQow2cczVmtl1SX0nD0uU1s95qCmJU5bpuAAAAAIDicVjfbjqsb7fmM3ZwhHfabqF/e7iZpQsKjQ/cX5TD+gAAAAAA0C4RxGi7f/m33SQdnybfzMD9l3NXHQAAAAAA2ieCGG33cOD+J5NlMLMSSZ/wd6slPZfbKgEAAAAA0P4QxGgj59zrkl7yd68xsxlJsn1F0gT//u3OuYN5qRwAAAAAAO0IE3tmx5fkDRHpKukpM7tZXm+LrpIul/RZP99SSbdEUkMAAAAAAIocQYwscM69ZWYflfRnST0k3Zwk21JJH3TO7UlyDAAAAAAANIPhJFninPu7pGMk3SYvYLFf3vwXb0j6uqTJzrnlkVUQAAAAAIAiR0+MLHLOrZF0vb8BAAAAAIAsoicGAAAAAAAoCgQxAAAAAABAUSCIAQAAAAAAigJBDAAAAAAAUBQIYgAAAAAAgKJAEAMAAAAAABQFllgtfqWxOxs3boyyHgAAAACADiDuu2dpqny5YM65fF4PWWZmUyTNi7oeAAAAAIAOaapz7o18XYzhJMVvQNQVAAAAAAAgHxhOUvwWB+5Pl7Q+qoqg1QapqTfNVEmbIqwLWoc2LH60YfGjDYsfbVj8aMPiRxsWv3y1Yamk/v79d3N0jaQIYhS/usD99c65dZHVBK1iZsHdTbRh8aENix9tWPxow+JHGxY/2rD40YbFL89tuCaHZafEcBIAAAAAAFAUCGIAAAAAAICiQBADAAAAAAAUBYIYAAAAAACgKBDEAAAAAAAARYEgBgAAAAAAKAoEMQAAAAAAQFEw51zUdQAAAAAAAGgWPTEAAAAAAEBRIIgBAAAAAACKAkEMAAAAAABQFAhiAAAAAACAokAQAwAAAAAAFAWCGAAAAAAAoCgQxAAAAAAAAEWBIAYAAAAAACgKBDEAAAAAAEBRIIgBAAAAAACKAkGMImZmh5nZLWa22Mz2mdkOM5tnZl8zs4qo61dMzGyAmZ1vZt8zsyfMbJuZOX+b04ryzjWzh8xsnZnV+rcPmdm5LSijzMyuNbOXzGyrmR0wsxVm9hszO7IF5fTzH9c7Zrbb397x0/q29LEVKjObYmbfNrOnAs/7XjNbamZ/MLOTW1gebZhnZtbDzC7339deMLPlZrbLzOrMbIuZPW9mN2T6mM3sRDP7s5mtMbMaM9tkZk+a2RUtrNcV/t/VJr+cNX65M1pQRoVf93n+e/U+/737FjM7rCX1KVZm9uPA+6ozs1kZnMPrMAJx7ZRuez6DsmjDiJnZCDP7rpm94T9/NWZW5T+f3zOzo5o5nzbMM///Xaavw2bfU2nD6JhZuZl92rzPHxut6fPpEvM+n56YYTm0YZBzjq0IN0kXSNolyaXYlkg6POp6FsuW5nl0kua0oJwSSb9tprw7JZU0U04/Sa+nKaNG0qczqM8JkjamKWeDpGlRP/9ZaL8Xm3nOY9tdksppw8LcJJ2ZYTtulfSBZsq6SVJDmjL+T1KXZsroKumxNGU0SPpOBo/rcElL05SzS9L5UT//OW7bYyUdjHvcs9Lk53UYbXtl8jp0kp6nDQt7k/QFSXubaYef0YaFtUl6vgWvw9j/o6G0YWFtkg6T9F4G7fdzSZaiDNowWT2ibly2VjSaNFnSfv8PZY+k/5A0Q9Lpku4I/BEtkVQZdX2LYYt78a2R9GRgf04Lyvlh4Lw3JV0uaap/+2bg2M1pyiiV9FIg718lnSNpmrwPI5sD/7DOTVPOcElb/LwHJf1Y0in+9mM1faHYLGlY1G3QxvZb7j+W9ZJ+Juli/3mfLuk6SesCz+c9tGFhbvKCGGvlBZu+KOkjfhueKOkySQ9Iqvcfc62kSSnK+bfAc79c0qf8NrxQ0rMt+Fu4N5D3Wf/8qX55ywPHPpumjEp578WxvHfIe6+eIe+9e4+fvk/SsVG3QY7atURNH5w2B56LWWnO4XUYbZvFnrNfSToqzTaKNizcTdJ/Bp67JZK+KmmmvKDiGf7+y5JupQ0La5M0qpnX3lHy/i/GntenaMPC2iR1UjiAsUDS1fI+15wl6bsKBxhvpA1b8PxG3cBsrWi0pl+dD0qakeT41wJ/pDdFXd9i2Pw3kvMlDfT3RwaewzkZljE28OKdJ6lr3PEKPz3Wdkl7ysj7ghS79i+THD9cTb1wlkkqS1HOHwPlXJrkePCfX0aPsVA3eb+qXyapNMXxfgp/kTyVNiy8LVX7xeX5cOAx/y3J8T6SqtUUkOwXfw1JjwbKmJXiOqcH8jwaXzf/b2qNf3ynpN4pyvleoJyvJTl+YuBv7vmo2yBH7fpl//EtknRzBs89r8Po26xNnyFow+g3eUGK2GO6S1KnNHkTeijShoW/yfvSGHvMH6MNC2uTdEng8cxVks84ko6XVKemzxJlccdpw1TPb9QNzNbCBvMiZrE/jl+nyFMiaWHgBZHyHxdbyud5ZEtfhPJ+sYqdMz1Fnunp3kT8PLG22y6pIkWeG5t5Exmkpq70/0hT53+oKfI6KOrnPcdten7gOfs5bVi8m6TF/mPemuTYDYHn9fIU5w9TU4+Ox1LkeTzwoSDprwnyfgWJXStZgKKTmgIqC5Wiq6ekXwfKmRr185vlthqhpt4mM+UN84k91lkpzuF1GH27xZ6Tm1p5Pm0YbfuVqGkI29tK8YWENizezW/jWC/TPcmeW9ow8ja6NfCcXJAm398C+Y6mDTPbmNiz+Hw4cP8PyTI45xrlRcokqZek03JbJZiZyetqLkmLnXOvJsvnpy/xdy/0zwuWM1bSBH/3Aefc/hSXnBO4/5Ekxz+kpol7k/6dxJVT4p/Tnj0XuD8m/iBtWFT2+Lddkhz7sH+7W94HgwTOuXWSnvF3zzCzyuBxf/8Mf/cZP38yf/OvIyVvw9Mk9fTv3+W/NyczJ3A/WTnF7JeSust7/C80l5nXYfGjDQvC2ZKO8O//2DlX35KTacOicIakof79v8Q/t7RhQSgP3F+ZJt+KZOfQhukRxCg+sRUW9kmanyZf8MPiSbmrDnyjJA3x7zf3QT12fKi8Hh9BJyfJl8A5t0neryxS8vbNqBx1rL+TzoH7DUmO04ZFwMzGyRvPLXk9MoLHyuX1VpOkV5xzdWmKij1vnSVNiTs2VU0fJNK1YZ2k2IeKqWbWKS5Lpm34hrx5jqR21IZmdpm8HlA75I29zwSvw+JHG0bvUv/WyRtuKUkysz5mdoSZ9WnmfNqw8H0icP+PSY7ThtFbErg/Ok2+2A9rTt5QjhjaMA2CGMUnFklb3kxkPfjhfkLKXMiWiYH7i1PmSjwe3zatKWe4mXVLUc4u/00pKefcRjX9ktze/05mBu4vSnKcNixQ5i1PeoSZXS/vn2OZf+hncVnHypvzQsp/G5ap6ZfPFpXjv5cvT1GXomRmvSTd7u9+3Tm3LcNTeR0WlkvNbKGZ7TezPWa2zMzuMrN0PTxpw+hN929XO+f2mNmVZvauvK7kSyVt95d3/KqZdU5yPm1YwMysu5p+KV8jbyWTeLRh9O5V02P5upmVxmcws8mSPujv3uOc2x04TBumQRCjiJhZF3mTyUneOLiUnHM75fXWkLyZZJFbwwL307aNpKrA/fi2aU05FndesJzmygiW027/TsysRN5Yv5gHkmSjDQuImc02b917J++9bKmkWyQN9LP8SNI9cadF2YbpytnnnKvOsJz+Kb5UFJufyBs/+7Kk37XgPF6HhWWivA+hXeUNCzpc3i/Az5rZQ2bWM8k5tGGE/P934/3dbWZ2u6S75a1mETRW0k/ltWWvuGO0YWG7WFLsC+afnT8RQRzaMGJ+8P7j8npaniRpnpl9wsymm9mZZvYdeT/MlMtbZeQrcUXQhmkQxCguwXHbezPIHwtidM9BXRDWkrbZF7gf3zbZLoe/E891ahpm8DfnXLKhWLRhcXhb3vrj30jywa09tGGycoqKmZ0i6dPyJk+9NsUH7FTaQxsWdfv59ku6T9Jn5C2dN1nePAs/kPdrvuTNP/NIkmFUtGG0eqrp8/3R8par3ijpY/JWb6qQ1zMxNhTuREm/jyuDNixszQ0lkWjDguCce1TeCiS/lTcU9i5Jr0h6Wt5E1/vlreB1inNuc9zptGEaZc1nQQEJTmKXbqx3TK1/2zUHdUFYS9qmNnA/vm2yXU6H/zsxs5nyfrWXvLWtP5ciK21YWB6WN1eE5D2uMfKW7vqIpHvN7MvOuf+LO6c9tGGycoqGPy/JHfJ+xbnNOfdeC4toD21YtO0XMDRF76Gnzex/JD0hL7AxU9576s8DeWjDaAW7gHeR9yXpNOdccHz+i2Z2urwvU5MkfcTMTnDOvRY4L4Y2LCBmNkzSLH/3Vefc0hRZacMC4P9P/IS8CTotSZaB8gKMq+Qt5x5EG6ZBT4ziUhO4X54yV5NYl+QDOagLwlrSNsGu4vFtk+1yOvTfiZkdKekheQHbGnlLRm1JkZ02LCDOuWrn3Hv+Ns85d59z7iJ5HwZGy/sFeHbcae2hDZOVU0z+Q15X9rWSvtuK89tDGxZz+0nyXn9pjm2WdIm85Ycl6QtxWWjDaNXE7f82LoAhSXLOHZD0zUDSR1OUQRsWlo+p6fvbXWny0YYR8+eUeEbSN+T1gvqJvOF5neX1mDpb0r/kTS7+sD/vVxBtmAZBjOKyJ3A/k+45sWh8Jt1+0DYtaZvgryTxbZPtcjrs34mZjZL0lKTe8lYjudw592KaU2jDIuCc+5OkB+X9//pF3Cz77aENk5VTFMxsvLwPa5L0BefcvnT5U2gPbViU7dcSzrmV8rpDS9LhZjYkcJg2jNaeuP2n0uT9p7xhX5K3KlOyMmjDwvJx/7ZW0v1p8tGG0btJ3nA8SbrGOfd159xi51ydc263c+5peUuxPyevl8ZPzWxS4HzaMA2CGEXEOVejprGo8ZOthJhZbzX9AVWly4usCE5yk7ZtFJ7kJr5tWlOOU+IkO7H95soIltNu/k78D9TPyFuaykn6lHPukWZOow2LR6wtu0k6J5AeZRumK6dbkonzUpWz1TlXmzZn4bpO3i80KyVVmNnl8ZvCkwueHjgW+3/F67B4LAzcHxq4TxtGyH//2BpISvlY/M+VsZWD+gcO0YYFyMymqGmFiP/zJ/FPhTaMkJmZpE/5u0udc0l7zfirk33L3y2RNDtwmDZMgyBG8Yl9aDjczNLNaTI+cD/ZcpLIruCHufEpcyUej2+b1pRTleQXz1g5Pc1sUKoCzGywpB4p6lKUzKyfvF8IY2tyf8E5l2riqyDasHgEP6AfFri/VF6vGyn/bViv8PruGZfjv5fH1okv5jaMdR8dLW9puWTbxYH83wqkx75A8TosHqkmbKUNo/d+4H7Cso5xYsfrA2m0YWEKTuiZbiiJRBtGbaC8ISSS9FYzeYOTzQefY9owDYIYxedf/m03ebPdpjIzcP/l3FUHvlWSNvj3Z6bLKOlU/3a9pNVxx/4VuJ+yHP/NY6y/m6x9MypH7ezvxF/u70k1/VJxo3PulxmeThsWj+Cvvoe6Kjrn6iS97u/O8CfUSiX2vNWqaQLRmHlqmrgqXRuWS5oeO8c5dzAuS6ZtOEVNPec6ShumwuuweEwM3N8QuE8bRi84dHJ0qkxm1kNSP393feAQbVhg/FWALvd3t8qbXDcd2jBawaBgcwtpBFd4Cp5HG6ZBEKP4PBy4/8lkGfw1wmPR2mp5Y62QQ/4SgrEu7uPNbHqyfH56LMr5SPzSg/4s07Go5WVmVpHikrMD9x9KcvxRSY3+/aR/J3HlNCpxVuSi4j9Xj0k6zk/6gXPux5meTxsWlUsD99+NO/awf9tD0kXJTvZndz/T3/2ncy40htzf/6e/e6afP5mL1PRrQ7I2fF7SLv/+1X730mRmB+4nK6coOOdmO+cs3abwZJ+nBY6t9svgdVgE/DmHzvJ3VzjnDn0Bpg0Lwl8D9z+SJt9H1LRiwkuxRNqwIJ2rph5r9/jDEFKiDSO3Q9Ju//6MZnrPB7/0r4rdoQ2b4ZxjK7JNXoTdyZsZfEaS41/zjztJN0Vd32LcJI0MPIdzMjxnrLwIqpP3S27XuONd/fRY2x2RopxPBa79iyTHx8j7YuTkdV8vS1HOHwPlXJLk+KUtfYyFuskbh/9k4PH8rJXl0IbRtuNsSV2ayXNd4DGvlFQad7yPvOCtk/drRN+446Xy/qnGypiV4jqnB/I8kuQ6/SSt8Y/vlNQ7RTnfC5TztSTHZ/h/S07S81G3QR7a+KYMnnteh9G20QWpngv/+EBJbwYe8/W0YeFtkh73H0+DpDOSHB8kb7y6k9cjbShtWLibpL8EHt9xGZ5DG0bbZvcEHs93UuTpLW/4Vyzf2bRhhs9v1A3M1opG89Zm3+//geyRNxv8dHkz3P4m8MezRFJl1PUthk3SyfK+QMW2rwaex3/FHZudppwfBs57U96SZVP82+CHvpvTlFHqXzOW9y+SPiBpmqR/l7RZTR9Mzk1TznBJWwJvbD/yH+fJ/v3YF6ctkoZF3QZtbL+/Bp6vf0o6Wt4Egqm2sbRh4W3ygg7bJd0hrzfZSZIm+Y/3c3HPaa2kM1OU82+BfMvl/WIwRdKHJD0bOHZPM/W5N5D3Wf/8KX55ywPHPpumjEp578WxvL+R9149Xd579x4/fb+kY6Nugzy08U2B52JWmny8DqNro9XyuiT/XNIV8gJtx8rrvfRf8rqyx57TlyR1pg0Lb5P35Wen/7gO+O1xit8Gn1dTAMNJuoE2LNxN3hfdGv/xvdvCc2nD6NptvKR9geftUXnzQk2W9756nZp+DHGSnqENW/D8Rt3AbK1sOO+Xkl2BP8b4bYmkw6OuZ7FskuakeS4TtjTllEj6XTPn/1ZSSTP16SdvbH+qMmokfTqDx3WCpI1pytko6YSon/8stF/Gbedvq2nDwtvkfXnKpP2qJJ3VTFnfldeVMVUZj6n5Xh9d/XypymhQBr3dJB0ub9LRVOXsknR+1M9/ntr4psDjnpUmH6/D6Noo09fhXyT1og0Ld5P3xWJTmsfcKOn7tGFhb5KuDTzGhB59zZxLG0bbdmcqHPhNtf1TqXt00obJ6hF147K1ofG8WflvlRew2Ccv4j5P0g2SKqKuXzFtylIQI1DeefLG5q+X94vxen8/ZXQzSRll8n59fkneEmgHJK2Q9yv1kS0op5+k78ubO2CPv73jp/XNtJxC3lrSdv62mjYsvE3SOEnXy+tZs0Deh++D8saVLpf3pWl2pu9vkk6UdLektX4bbpb0lKQrWlivK/3zNvvlrPXLTRjOl6aMbv578zz/vXqfpMX+e/hhUT/3eWzjmwKvw1kZ5Od1mP82minp2/ImDlwir3fUQf/v9h1Jv27h3z5tGG179vVfd2/LC5gekDcU7/eSJtOGhb/JmxzRyRtWMKSVZdCG0bVfX3n//5+T10OhTl7vy5WS7pd0oSSjDVu2mV8RAAAAAACAgsbqJAAAAAAAoCgQxAAAAAAAAEWBIAYAAAAAACgKBDEAAAAAAEBRIIgBAAAAAACKAkEMAAAAAABQFAhiAAAAAACAokAQAwAAAAAAFAWCGAAAAAAAoCgQxAAAAAAAAEWBIAYAAAAAACgKBDEAAAAAAEBRIIgBAAAAAACKAkEMAAAAAABQFAhiAAAAAACAokAQAwAAAAAAFAWCGAAAAAAAoCgQxAAAoIXM7Hkzc2b2fNR1yQYzm+U/HmdmswqgPnP8uqyOui5RM7ObYm0TdV2iYGan+49/s5lVxB0bGfi7nd2Ga/zSL+OuNlcYAJBzBDEAAB2OmXUzs2vN7HEzW29mNWZWa2ZbzWyemf3ezD5jZsOjriuKT1xQqLXb6qgfR9TMrETSz/zd/3bO7c/RpX4sqU7Sx83s+BxdAwCQJQQxAAAdipnNkLRQ0v9KOlfSEEmdJZVL6idpiqRPSrpD0ryIqtnudPQeBWiVyyUdLWmbpF/l6iLOubWS7pJkkr6fq+sAALKjLOoKAACQL2Y2VtKTkir9pEcl/UXSUnm/xPaTNEnSWZJOS1WOc25WTivawTnnZkuaHXE12mKevC/fyQyR9zcoSY9I+s8U+eokyTl3k6Sbsli3YvJN//Y3zrl9Ob7WLZI+I+lcMzveOTc/x9cDALQSQQwAQEfyAzUFMD7pnJuTJM/Tkv7bzPpLuixfFUP74X/hfi/ZMTPbG9itds4lzdfRmdlZkib6u3/O9fWcc0vM7E1Jx0n6goo7iAYA7RrDSQAAHYKZlUr6oL/7RooAxiHOua3OuV/mvGIAkrnGv33TObc4T9e827+91Mwq0+YEAESGIAYAoKPoL6mrf395WwpKtzpJshUTzOwiM3vKzLaY2T4zW2BmXzCzToHzzMyu9MveYmb7zexNfwJSS1GPjFdnMLPVfr45rXzM083sv/z6bTKzOjPbbWYLzex/zWxiivNm+/NgfCeQlmwiy5GB4xmtTmJmR5vZHWa2zH++9pjZ+2Z2W7C8JOcla6OzzOzv/mOrNbNV/uMa1qInKsuam0skvl3N7Dgzu9vMqszsgJktN7Nbzaxf3HknmtmDZrbWn9h2hZn9OJMv72ZWamZXm9n/mdkG//nabmb/MrPrzaxrc2U0U34XSR/yd//awnPb0o6xa1VIurAl1wUA5A9BDABAR1EXuD8hXxc1s1/J+3J0lrxASoWkYyT9XNJ9/hfCzpIekPdL8Ew1BVwmy5uA9Df5qm8y/hf9V+TNUTBT0kBJneQNzZkg6VpJ75jZ5/NYp29IelvePAaHy3u+ussbgvBlSYvN7BMZlvVDSU9JOl/eYyuXNFLe43rTzPL299IWZvZxee10paRhkrpIGiPpOkkvm9kgP99XJf1L0iWShsub2Ha0pBskPW9m3dNcY4Sk+ZLmyOvZNFje89VH0kny5pZ4x7z5Z1rrBDUFHF/N9KS2tqNzbo2kTf7uuS2rMgAgXwhiAAA6BOfcDklr/N1JZvZ185ZwzKVrJX1O0uOSLpJ0vKQPS3rNP36RvJVQfirvC+U98r6AHS9vZYZYN/rPmNk5Oa5rOmWSdsr74vopSafImzvgfEnflrd6RKmkX5jZ6XHnPixvksv/DaQdnWRbn2ll/GDJzfI+x2yV9FVJMySdLG8SzH3yvpjPMbPzminuM5JulPSCvC//UySdKemP/vH+kn6fad0iNEnSb+X1MvqUpKmSTlfTfBJj5c31cpG8v7fXJF0l7/GeI+9vVPLaNelko2bWV17wY5KkWkm/kHSpf63TJP1Q0n55QaUnzKxnKx/LKf6tkxcwyUS22vF1/3ZmhtcFAOSbc46NjY2Nja1DbJK+Iu+LUWxbJel2SR+VNKoF5Tzvn/98kmMj465xW5I8FZJW+8e3SWqU9KUk+QZJ2u3ne6SZa81ups6x681JcmxWoJxZSY4PlVSRpuyekhb457+UIs9NsWtk8PzO8fOuTnKsv7wghZMX+BieJM9kSXv9POskdWqmje6QZEnKuTOQZ3KW/gaD105oi5Y+b4F2dZJeTtZOkh70j9dL2i5vRZ7SuDyl8npxxP4my5KUc3esXVK9XuKe+x+08jl63D9/eQuey6y0o7ygXCzvwGy0ORsbGxtbdjd6YgAAOpLbFP41dqSkL0q6T9JKfxz9fWZ2Qap5KFqoSl4X/RDn3H5Jd/m7fSW95py7PUm+TZIe8ndPiT+eL8659X6dUx3fJe/LnySd7P9inyuflBcEkqTrnXNVSerzlrxeAZIXgPlwmvI2SvqCcy7ZnBP/Hbgf2fOfISfp0yna6Vf+bam8ISafdc41hE729u/wd/uqaWUQSd48IvKCfZL07865VUkr4T33sQlxZ7fsIRwSm79iSwvOyVY7Bq85ugXXBwDkCUEMAECH4ZxrdM5dI+lsSf+Q98t00EB5X9QelfS6mY1p4yX/5pw7mOLYgsD9+9OUEcvX28x6tbE+WWFm3fzJMY80s6PM7ChJwcc5KYeXP9O/rZb0tzT5fpvknGT+4pyrTXbAObdEXq8CqfC/0L7jnFuU4ljwb+1p5w2tai5f/OP9oLwgyH5JTzRTlxf92yH+HBot1d+/3dmCc7LVjsHnZlALrg8AyJOyqCsAAEC+OeeelvS0mfWQNxnhVHlj6E+VNzRC/v5LZna8c25jKy+1NM2x6lbkq4zbzxt/dYvrJV0s6QhJ6Xqq9EtzrK2O8m/fTBMgknNus7+6ycjAOck0t3znTnkThhb6kpu5+FsLmuLfVkiqb0FHpUGS1maa2dfHv21JECNb7Ri8ZrcWXB8AkCcEMQAAHZZzbre8X5WfkCR/lZAr5a2w0Fveygvfl/TpVl4i5RAMefNgtDRfaSvr0SZmdrykJ+UNM8hEm5bYbEbsC24mQw02yQti9EmTJ91zLzU9/5E89y2QbrhPYyDo0Nq/tQGtrFdF81kS1MhbWaQlf0fZasfgNVMGyQAA0SGIAQCAz++O/gcz2yBvuIkkXWRmn3XONaY5td0ys3J5y7/2lfel7n8kPSLvF/2dsS78ZjZa0orYaXmoWrK5D5A7sS//2+StRJKppHNnNGOrpB5KH3zKleA1qyO4PgCgGQQxAACI45x70syqJA2X1yOjr7wvVoUmGFhpbp6r1naNP11N8wh83jn32xT58vWFc4e8HjIDM8gbm9Mg1RwQyNx2/7ZS0qL4iUGzbKukMfJee/kWvGZLh8EAAPKAiT0BAEhuQ+B+of7qvydwP+UXPjPro8yHgsQ7MnA/3QSkU9Ick7L3HL7n3x5nZil/jDGzAZIOizsHrfeWf9tZzbd1W73r344xs3x/Vh3r39ZKWp7nawMAMkAQAwCAOGZWoaYlJner6VfoguKc26mmLu/pvlhertYP8QgGCpL25vC/aH6mmXJqAvk7t7IukvSMf9tL0kVp8l2jpsf8TJp8yMzf1RSI+nKOr/WSf9td0oQcXyveVP/2rXQTxwIAokMQAwDQIZhZdzN7zczOT/frrn/sf9S0isGjzrlC7YkhNS1neWGyJWHNbJy8yUlba1ng/uwUeX4o6bhmygmu8NKWpWv/oKZJHG8xs6HxGcxskqT/8HfXS3q4DdeDDi1T+qC/e7mZXZ8uv5mNMrMrWnm5lwL3p7WyjBbzg2vH+LtP5eu6AICWYU4MAEBHMk3eL8rrzexhSa9IWiNvWEYvSZMlfUrS0X7+XZK+lfdatsyvJH1I3qoKz5vZTfK6/neXdIakL8mbY6BBUv9WlP+kvJVABkj6LzMbKekheRM8Hi6vB8YZkl6Wt1xtKnMD928zsx/IC2zEAkSrnXP1zVXGObfVzL4m6ZeShkmab2Y/8ssvk3SmpK/Je/xO0mf5RT1rPievx89oeQGkCyX9UdL78oZf9JU0SdI58uZSeUjSvS29iHNutZm9Iy+gcIa8wFU+nCqpk3//oTxdEwDQQgQxAAAdRb28JTcHSRoq6f/5WyrLJF3hnFud+6q1nj8J6c8lfVHel/r4iTfXygtyPNHK8veZ2Sfk9WboIunf/C3oeUn/rjRzTzjnlpvZA5Iuk3S2vwWNkrQ6wzr9ysx6yethMlDSbUmy1coLYDyeSZlonnNuh5mdJG+1mlPkfek/Nc0pu9twuTvl9Yi60MwqnHPNLaGaDVf6t+87597Ow/UAAK3AcBIAQIfgnKuRF7w4SdJ35H2pXylpn7xeCrslLZY3eeWVko5yzs2PprYt45z7krw6vyjvcRyQtETSjyQd55xb1Mbyn5T3C/yf5U14elBe744XJH1W3q/l+zIo6mOSbpD0urxeLq1ettY5d7O8njN3ylva9YBfh0WSbpc03jn3x9aWj+Scc5ucc6dKOl/S3fJeQ/vV9DcxV9ItkmY65z7Vhkv9WV6bdpcXhMspM+uipjlWfpXr6wEAWs8Ke5gvAAAAOiIz+5W8ISzPOOfOyvG1PibpT/Im8R3pnNuby+sBAFqPnhgAAAAoRN+T17vmTDObnquL+JP5xiaC/SkBDAAobAQxAAAAUHCcc5vUNN/Jt3N4qUvlLeW6VtLPc3gdAEAWMLEnAAAACtVP5E3KqxxO8Fkq6buSnnXOHchB+QCALGJODAAAAAAAUBQYTgIAAAAAAIoCQQwAAAAAAFAUCGIAAAAAAICiQBADAAAAAAAUBYIYAAAAAACgKBDEAAAAAAAARYEgBgAAAAAAKAoEMQAAAAAAQFEgiAEAAAAAAIoCQQwAAAAAAFAUCGIAAAAAAICiQBADAAAAAAAUBYIYAAAAAACgKBDEAAAAAAAARYEgBgAAAAAAKAoEMQAAAAAAQFEgiAEAAAAAAIoCQQwAAAAAAFAUCGIAAAAAAICiQBADAAAAAAAUhf8PTTW+Xtn2MCQAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" + "cell_type": "code", + "execution_count": 51, + "id": "e01ca9cc-9603-4d89-b781-4e646246263d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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nL788kvNmDFDEydO1P3336/jjz9eVapUSXNrgZI98cQTWrdundq0aaNzzjkn6eWfd955atmypdasWaN//etfSSv3//7v/zR79uzw8vnnn+vtt9/WnXfeqd69e0uSlixZoiuuuEInn3yytm/fnrS6S2vIkCFyzsk5p3bt2qWtHchsldPdAAAAAGSOW265RZs3b5Yk5ebmasiQIcXSHHfccbruuuu0Zs0ajRs3LsUtBBKXn5+vxx57TJJ0wQUXKCcn+b+9VqpUSeedd55Gjhypxx57TH/605+SUk/Lli11wAEHFHv9lFNO0e23364vvvhCF110kRYtWqT33ntPQ4YM0csvv5zUkR1AMjHyAQAAAJK8L2rvvvuuJKl79+5RAw+RmjRpoiuvvDIFLQPK5sMPPwzPS3LhhRcGVk+o7EWLFmnSpEmB1ROpd+/emjZtmlq1aiVJGjdunN58882U1A2UBcEHAAAASJLWrFkTHrrdsWPHPSor0bkSSjPvQEFBgZ566in17t1bDRs2VK1atXTQQQfpnnvu0W+//RY37/z583X11VfrgAMOUJ06dVS1alW1aNFC3bp10yWXXKJXXnlFO3bsCKdv165doV+Q77zzzmKTAEYGZ4remaOgoEBjxozRUUcdpWbNmiknJ6dQ+lD5JQV4hgwZIjMrcSj7mjVrdNddd6lPnz5q2rSpqlSpogYNGujwww/X9ddfr1mzZhUr89NPP5Ukffrpp8X2LbK+ku50ECnefhWd1X/Hjh166KGH1LNnTzVu3Djm+TJp0iQNHjxYHTp0UM2aNVW3bl117dpVf/3rX7VixYq47QmNzNlnn33UtWvXuGm//vprXXrpperUqZNq1aql6tWrq3Xr1jr00EN15ZVXavz48XLORc17yCGHqH379pKkl156KW49ydS4ceNCl3rcc889cdMvWLBA1157rbp27ap69eqpRo0a6tChg4YMGaKvvvqqzO2IdceGyZMnh19/6qmnSiznnnvuCaefO3du1DQzZszQ5Zdfrs6dO6t27dqqVauWOnfurOHDh2v+/PkJtzEV558kbdiwQTfeeKP23Xdf1ahRQ02bNtWxxx6rV199tcS85Q2XXQAAAJRBQYHT3JWbtGFbnhrUrKoue9VVTk52D3euWrVqeP37779PY0uKy8vL08knn6wPPvig0OuzZs3SrFmz9Pzzz+vjjz9W8+bNi+V99dVXddFFFykvL6/Q6ytXrtTKlSv17bffKjc3V7Nnz446zL20fvvtNw0YMEAfffTRHpeViBdeeEGXXXZZsckON27cqGnTpmnatGkaN25cRt3Gb+3atTrjjDP0zTffxEzz22+/6eKLL9bLL79cbNucOXM0Z84cPfHEE3rppZc0cODAqGWERiH07NkzbnsefPBBXXfddcXuHrFs2TItW7ZMM2bM0KhRo7R582bVrl07ahmHH364Fi1aVOwcDdqJJ56ozp07a968eZo+fbpWrFihFi1aFEv3z3/+UzfffHOxW4IuWrRIixYt0nPPPadbb71Vd911V9LadsQRR6hNmzZasmSJXnzxRQ0dOjRu+hdffFGS1K1bN3Xp0qXQtoKCAl133XV66KGHigWB5s+fr/nz5+vpp5/W448/rmHDhsWtJ1Xn3/fff69jjz22UJDit99+08cff6yPP/5YF198sY488si4bS1PCD4AAACUQkGB03NTF2vM54u1ZP228OttGtbUJX3aaVCvdlkbhGjYsKHatm2rn3/+Wd9++63uu+8+/fWvfw3kOvnSuvXWWzV9+nQdf/zxGj58uFq3bq2lS5dq1KhR+vDDDzV37lwNHDhQX375pSpVqhTO98svv+jiiy9WXl6emjZtqquuuir8S+f27du1YMECffrpp8WGq0+cOFF5eXnhX8uHDx+uK664olCaBg0aRG3rDTfcoFmzZunUU0/VkCFD1LZtW/3yyy/atGlTcg+KpH//+98aNGiQJKl69eoaOnSoTjzxRDVv3lxbtmzRrFmzNH78eP3444/hPH//+9913XXX6eKLL9ZXX32l7t27Kzc3t1C5kYGoIFx66aWaPXu2Bg0apPPOO0/NmzfXkiVLVK1aNUmSc05nn312+DKggQMH6txzz1WHDh2Uk5OjadOm6YEHHtCSJUt09tln6/PPP1f37t0L1bFs2bJwwCXeXVlmzZoVDjy0b99eV111lbp166aGDRtq8+bNmjdvniZNmqS33nor7j716NFDL7/8spYvX64FCxbs8eihRJmZjjnmGM2bN0+SNGXKFJ133nmF0tx///26/vrrJUkHHnighg8frn322Uf169fXvHnz9Nhjj2nq1Kn629/+psaNG+uPf/xj0tp2wQUX6L777tPkyZO1fPlytWzZMmraWbNmac6cOZKiXyJz9dVXa9SoUZKkI488UkOGDAmPRvj222/10EMP6bvvvtNll12m5s2b69RTT43ZrlScf5s2bdKAAQPCgYfzzjtPgwcPVtOmTTV//nyNHDlSubm54X2uEEKzkrKkdpHUSpKT5JYuXeoAAEB08+fPd3PnznXz589Pd1Ncfn6B++NLM1zbG96JuVzz0gyXn1+Q7qaW2T//+U8X+h9FkmvXrp374x//6F5++WW3cOHChMsJ5b/jjjvipuvXr5+T5Pr161ds26RJkwq1ZdiwYVHLuPTSS8NpHn/88ULbnnnmmfC22bNnx2zHtm3b3LZt28q8H0Xbeuutt8ZN37ZtWyfJDR48OG66wYMHO0mubdu2xbatWLHC1axZ00lyTZs2jbt/S5YsKfZavGMfadGiReH9ys3NjZs23n7l5uYWOkZPP/10zHJGjx7tJLkqVaq4999/P2qa9evXu/33399Jcn369Cm2/ZVXXgnXNWXKlJh13XbbbU6Sq1Wrllu1alXMdBs3bnT5+fkxt3/66afh+l5++eWY6eKJPEYlHetITz/9dDjfXXfdVWjbd99956pUqRI+jwsKin8+5efnu4suushJcrVr13br168vtL2kcyCy3YsWLSq0bdasWeFt999/f8x9uOGGG5wkl5OT45YtW1Zo28SJE0s8b7Zv3+6OPvro8Ptl586dMduYivPvuuuuC9d19913F9uel5fnjj/++EJtKnrsSlKWv49Lly6NrLOVS+F34PSHsQEAALLEc1MX661v4l/j++Y3K/Tc1MWpaVAArr32Wl1yySXh54sXL9Yjjzyi888/Xx06dFDz5s11/vnn6+233455/XsQmjVrpgcffDDqtoceekhNmjSRpPAvoyGrVq2S5I1SiHdJRY0aNVSjRo2ktLVTp04lznWRDI8++qi2bfNG34wePTru/rVu3Trw9pTG0UcfrUsvvTTqNuec7rvvPknSH//4R51wwglR0zVo0ED333+/JOnzzz8vNLpD8kY+hDRt2jRmW0LnSKdOndSsWbOY6erVqxd3FFBkHQsXLoyZLgiNGjUKr2/YsKHQtgceeEA7d+5U9+7ddccdd0S9G0ZOTo4effRRVatWTVu2bNF//vOfpLWta9eu4RFEL7zwQtQ0zrnwXBn9+vUrNjri3nvvlSSdddZZMc+b6tWrh+9s8vPPP8ed+DPo8y8vL0/PPPOMJG+kyY033lgsf5UqVfTMM89UqFsWE3wAAABIQEGB0zOfL0oo7ZjPF6ugIHVfzJMpJydHzzzzjCZOnKgTTjhBlSsXvkr3l19+0SuvvKJTTz1VPXr00E8//ZSSdp177rmqWbNm1G21a9fWueeeK0n67rvvwl8mJWmvvfaS5H0hK2nYfLKcd955hS79CMo777wjSerQoUPcIeaZKN6dJ+bOnRs+r84+++y45UReLz916tRC29asWRNej3WJjLT7HJk7d66mTZsWt754GjZsGF6PPAdTIXIeitCtckPefvttSd4X93i34axfv344SFD0WO6pUH9/8803UeeT+eyzz7RkyZJCaUM2bdqkTz75RFLJ58N+++2nxo0bS4q/D0Gff19//XU4CDR48OCYx71Vq1Y6/vjj49ZRnhB8AAAASMDclZu0dP32hNIuWb9Nc1cm//r+VDruuOP0/vvva926dXrvvfd05513auDAgapXr144zVdffaUjjjhCK1euDLw98a7Zl7zr7UNmz54dXj/11FNVv359SdIZZ5yho48+Wg8++KC+/vpr5efnB9LWAw88MJByI+3cuTN8rXjfvn3jfqnMRPGOUeRdF3r16lXsThyRS+SX7qJf+NevXx9ejxd8uOCCC1SlShXt2LFDffr00cCBA/Xkk09qzpw5pRrdE1lH0ck/gxYZcKhbt254/eeffw4HYW666aa4x9LMwsc+2cGTCy64IHyORhv9EJposlq1ajrrrLMKbZs5c2Z4ItBQOfGWtWvXlrgPQZ9/kZ9BpfnsKu8IPgAAACRgw7a8khNF2LhtZ8mJskDdunV14okn6vbbb9f48eP1yy+/aMyYMeEvWitXrtRtt90WeDviDZuXVGi4fOSXzkaNGmn8+PFq2bKlnHOaNGmS/vznP6t79+5q2LChzjzzzPAIgmSJ90U3WdavXx/+Yhz65T6bxDtGq1evLlOZoUtQQqpXrx5eD91CNpp9991XL730kho0aKBdu3bpnXfe0fDhw9W1a1c1bdpUv//97zVlypQS64+sI9VD6UNfuKXCIzCSdSz3VJs2bXTEEUdI2h1oCNm5c2f4tpMnn3xyOFgYEsQ+BH3+RX4Gleazq7zjbhcAAAAJaFCzdLP/169ZPq/jrVatmi6++GK1aNEifC3066+/rtGjRwd6V4w9+WX/iCOO0IIFC/Taa6/pvffe0+TJk7Vs2TJt2rRJb7zxht544w0NGDBAr7/+esxLO0ojFZdcZLt4xyhyRMrbb7+tdu3aJVRm0S95oXlAJO/LYJ06dWLmPeuss3TsscfqlVde0YQJEzRlyhStWbNGa9eu1fPPP6/nn39egwcP1pgxY2Ke55FfOIt+gQ7azJkzw+udO3cOr0cey9tvv13nnHNOQuXVqlUreY3zXXjhhZo8ebIWLVqkqVOnqlevXpKkCRMmaN26deE0RUXuw7/+9S/17t07ofriBRhScf6FZNuopCARfAAAAEhAl73qqnXDGgldetGmYU112atuiemy2YABA8K3u9ywYYPWrVtX6Muemck5Fx4uHUuiw9N/+eWXhLdH/vIbUr16dV144YXhLzeLFi3Su+++q0cffVTz58/XhAkTdMstt8Sc1DLZQl9gy3p8GjZsqJycHBUUFAR+2Uvkl+1k9Wc8kZMn1q9fP+5EmvFEno8bNmxQ27Zt46avV6+ehg0bpmHDhkmSvv/+e7311lt69NFHtWLFCj377LM6+OCDdc0110TNHznRY5s2bcrU5rJwzumjjz4KP+/bt294PfJYVqlSpczHMhnOOeccXX311crLy9MLL7wQDj6ERkLUq1dPJ598crF8kftQs2bNwPchGedfZODjl19+UadOnWKmLemzrTzhsgsAAIAE5OSYLu3TPqG0l/Rpp5yc8v9rV4sWLcLrRX/dC/3KXHTm/UjOOS1YsCChuqZPn57w9kS+LLRv315XXXWVpk+frlatWkmSxo0bl1BbkiGR4yNJ8+fPj/p65BfJKVOmlOnOI4n+Ihs5YiBee9evXx/+BXtPHHzwweH1zz//vMzlhCZPlGIfx3j2228/3Xjjjfryyy/DIwHinSORdey///6lrq+s3nvvvfCdFnr27KnmzZuHt3Xo0CE8T8ueHMtkaNCggU488URJ3nHctWuXtm7dGp4I9uyzz1a1atWK5evWrVv4XE3FPiTj/Is890rz2VXeEXwAAABI0KBe7XR6txZx05zerYUG9WqXmgal0bZt2zR37lxJ3rwQkb8WSt6Xe6nw5G1Fvf/++9q4cWNC9b366qsxr9vfunVr+Ethly5dSjUHQt26dcMTwkVeNx8Smjdgx44dCZeZiNDxmTFjRszAwXfffadZs2bFLGPgwIGSvFEcZbmTR6L71qBBg/BlBPH68+WXX07K7VcPOeSQcEBo9OjR+u2338pUTvfu3cP7uCdf8Fq3bh3+5TraORISqqNKlSo65JBDylxfaaxdu1aXX355+PlNN91UaHulSpV00kknSZImTpwY9U4TqRQaebRmzRp9+OGHevPNN8NzJcS6A0WTJk3Us2dPSd4oici7mAQhGeffoYceGh798O9//zvm+2L58uWaOHFi2RubZQg+AAAAJCgnxzTy3G4aMbCL2jQsPDdAm4Y1NWJgF408t1vWjnrYsmWLDj/8cL3zzjtxh9cXFBTo6quvDs+wf+qppxb7Fb1fv36SpP/9739Rfz1ctWqVrr766oTbtmrVKv3lL3+Juu3Pf/5zeJK44cOHF9o2YcKEuJcl/Prrr+HbK4YCApFCgYxk31I0dHxWrFihl156qdj2zZs369JLL41bxlVXXRX+Rf6yyy4L3/0immXLlhV7LbRvCxcuLDFoELql4FtvvRX1WMybNy9pE4/m5OTo5ptvDrdt0KBBcQMkmzZt0mOPPVbs9apVq+rwww+XpLi30HzzzTfjBsGWLl2qH374QVL0cyQkVEevXr0K3QUhKF988YV69OgR7tsLLrgg6i1Xb7rpJlWqVEkFBQU6++yzo54LIfn5+XrhhRfiptkTAwcODN+N44UXXghfctGyZcvweyKaW2+9VZLX12effXbc/tqxY4cef/zxMgetknH+hebGkbzbi95///3F8u3atUtDhw5VXl7pJjPOZsz5AAAAUAo5OaYhfdprUK92mrtykzZu26n6Nauoy151szboEGnatGkaOHCgWrZsqdNPP129evVS27ZtVadOHW3cuFEzZ87UmDFjwreSq1evnv72t78VK2fYsGEaNWqUdu3apYEDB+r2229X3759lZeXp88//1wjR47Uzp07tc8++4SHjMfTvXt3PfHEE1q0aJEuv/zy8HwTTzzxhCZMmCDJGy4d+SuwJL300ksaOHCgjjvuOB1//PE64IAD1LBhQ23evFlz5szRY489puXLl0tSsbyS1Lt3by1atEjjx4/Xv/71L/Xp0yf8a3rdunVLnMk+losuukgjRozQpk2bdOmll2rBggUaMGCAzExff/21Ro4cqWXLlunggw8uNJlgpObNm+uJJ57QoEGDtHr1avXo0UNDhw7ViSeeqObNm2vLli2aM2eOxo8fr3nz5hULGvTu3Vu5ublavXq1/vznP+uiiy4KD9GvUqVKoTkSrrjiCo0fP17bt29X//79NWLECB188MHasmWLPv74Yz388MNq0qSJKlWqlJRfpi+//HJ9+OGHeuONN/Tqq69qxowZuuyyy9SjRw/Vq1dPmzZt0g8//KBPPvlE48ePV/Xq1XXVVVcVK+e0007Tp59+qmnTpmnz5s1RJ5186KGHdOGFF+rkk0/W0Ucfrf3220/16tXThg0b9NVXX+nRRx8Nj7qJdo5IXrAoNPLhjDPO2OP9l7xfxSMDSps3b9a6des0c+ZMffDBB/riiy/C20455RSNGTMmajldu3bVP//5T1177bWaO3euDjjgAA0bNkxHH320mjVrpt9++02LFy/W1KlT9Z///EcrV67U7Nmzw7/+J1P16tV15plnauzYsXrzzTfDX7wvuOCCuBPWnnTSSbrmmmv08MMPa/Lkydpvv/10+eWXq2/fvmrUqJG2bt2qBQsWaMqUKXr99de1YcMGDR48uMztTMb5d/vtt2vcuHFatmyZbrjhBn3zzTcaNGiQmjZtqvnz52vkyJGaPn26unfvHndEUbninGNJwyKplSQnyS1dutQBAIDo5s+f7+bOnevmz5+f7qaUe9u3b3fNmzd3of9RSlr22Wcf99VXX8Usb+TIkTHzNmzY0E2ePNn169fPSXL9+vUrln/SpEnh9BMmTHDHH398zPL23Xdft3z58mJlDB48OKF9ufzyy11+fn6x/DNnznTVqlWLmmfw4MFR2zpp0qSEjve4ceNcpUqVopZdo0YN9+qrr4bb37Zt25jljB071tWoUSPu/kXLv3nzZtehQ4eE0//xj3+MWX6bNm3c3LlzXdu2bYsdm5Dc3Nxw+kWLFpV4fPLy8tzw4cOdmZXYf+3bt49axtq1a8P99+yzz0ZNEzoH4y05OTnub3/7W8y2jh071klylStXditXrixx32KJPEaJLG3btnVPPvlkQmWPHj3a1axZs8Qyq1at6n788cdCeRctWhTenpubG7fdJfXthx9+WKzOmTNnltj+goICd+edd7rKlSuXuA+1atVy27ZtK3MbnUvO+Tdnzpy4n6lDhgwpdbsileXv49KlSyPb0Mql8Dswl10AAABAkver5PLly/X555/rzjvv1IknnqgOHTqoVq1aqlSpkurWrat9991X5513nl588UXNmTNHhx56aMzyrr32Wn3wwQcaMGCAGjRooGrVqql9+/a68sorNXPmTB1xxBEJt61q1ap67733NGrUKPXs2VP169dXzZo11bVrV/3f//2fZsyYUWgCzJAHH3xQzz//vC655BJ1795dLVu2VNWqVVWjRg116tRJgwcP1pQpU/TEE09E/eW1W7dumjp1qi644AK1adMm6oR4ZXXOOefoiy++0BlnnKEmTZqoatWqat26tQYPHqzp06fr7LPPTqicwYMH66efftItt9yiQw89VPXr11elSpXUoEED9ezZUzfffLM++OCDYvlq166tL774Qtdcc43222+/Em8z+vDDD+vFF1/UkUceqbp166pGjRrq3LmzbrzxRs2YMUP77bdfmY5DLFWqVNGoUaP07bff6uqrr1bXrl1Vr149VapUSfXq1VO3bt106aWX6j//+U/MuQwaNWqkM888U9LuuyoU9dJLL2n06NH63e9+p27duql58+aqXLmyateurf3331/Dhw/XzJkzw0P/owmVfcYZZxSa8DFZKleurAYNGqhdu3Y6+uijdcMNN+j999/XwoULddlllyVUxtChQ7Vw4ULdeeed6tOnjxo3bqzKlSurVq1a6tSpk8466yw9+eSTWr58uTp27Jj0fQg5+uijC83L0qVLF3Xr1q3EfGam22+/XfPnz9f111+v7t27q2HDhqpUqZLq1KmjLl266MILL9Szzz6rlStXqkaNGnvUzmScf/vvv7++++47XX/99dpnn31UrVo1NW7cWEcddZRefPFF5ebm7lEbs40571d4pJiZtZK0VPKuIwtiWBMAAOXBjz/+qF27dqly5craZ5990t0cAFnmf//7n3r27KlKlSrpp59+KvGWm6X1888/a++991Z+fr6mTp0anhwRCFpZ/j4uW7ZMrVu3Dj1t7ZwLZoKPKBj5AAAAAKDcOvzww3XmmWcqPz9f99xzT9LLv/vuu5Wfn68TTjiBwAMQB8EHAAAAAOXa3XffrcqVKys3Nzepd3JYunSpxo4dq0qVKukf//hH0soFyiPudgEAAACgXOvcubPGjBmjn376SUuWLEnaJc9Lly7VTTfdpA4dOqhr165JKRMorwg+AAAAACj3fv/73ye9zN69e6t3795JLxcoj7jsAgAAAAAABIrgAwAAAAAACBTBBwAAAAAAECiCDwAAAAAAIFAEHwAAAAAAQKAIPgAAAAAAgEARfAAAAAAAAIEi+AAAAAAAAAJF8AEAAAAAAASK4AMAAAAAAAgUwQcAAAAAABAogg8AAAAAACBQBB8AAAAAAECgCD4AAAAAAIBAEXwAAAAAkmjs2LEyM5mZFi9enO7mpFT//v1lZurfv3+6m1JuhM6lESNGFNv2ySefhLd/8sknKW9bUUOGDJGZqV27duluCjIQwQcAAADElJeXp5deekmDBg3Svvvuq0aNGqlKlSpq3LixDj30UA0fPlwfffSRCgoK0t1UlAOLFy8Of5keMmRIupsDIIkIPgAAACCq119/XZ07d9bvfvc7/fvf/9a8efO0fv167dq1S+vWrdOMGTP05JNP6rjjjtN+++2nd999N91NrjD4hTl92rVrV6GCIyNGjAgHhIA9QfABAAAAxfztb3/TWWedFb5s4LjjjtOjjz6qjz/+WF9//bU+/PBDPfbYYxowYIBycnI0f/583XLLLeltNIC0Gjt2rJxzFe5yIySmcrobAAAAgMySm5ur22+/XZLUtGlTjRs3Tv369SuW7thjj9WVV16pOXPm6Nprr9WaNWtS3VQAQJYg+AAAAICw5cuX66qrrpIk1apVS59++qn23XffuHkOOOAATZgwQS+++GIqmggAyEJcdgEAAICwBx98UNu2bZMk3XXXXSUGHkJycnJ00UUXxdz+2Wef6fe//73atWun6tWrq379+jr44IN16623xh0xUXQ2f+ecnnnmGfXt21eNGjVS3bp11aNHD/373/8ulC8vL09PPvmkevbsqYYNG6pOnTrq06ePxo0bF7OuyMkOx44dK0l69dVXdeyxx6pp06aqUaOG9t13X910003auHFjQsclnvz8fD377LM65ZRT1KJFC1WrVk2NGjVS3759NXLkSG3fvr1YntD1988++6wk6eeffw63OXKJ5rffftNjjz2mY445Rs2bN1fVqlXVtGlTHXvssXrmmWe0a9euEtv85Zdf6pxzzlHz5s1VvXp1tW/fXsOGDdO8efP27GAkKFofffjhhxo4cKCaN2+uatWqqX379ho+fLiWLVsWt6wVK1boxhtv1CGHHKJ69eqpSpUqatasmbp27aoLLrhAY8eO1aZNm8LpQ3fy+PnnnyVJzz77bLHjXvQuHxs2bFBubq4uuugidenSRbVr11bVqlXVvHlzDRgwQKNHj1ZeXl5Sj1FRX375pW699Vb1798/3O9169ZVly5dNHz4cM2dOzdqvtBdW+68887wa9HOtchLLBKdi2T27NkaNmyY9tlnH9WsWVN16tTR/vvvr2uvvTbuJRvJ7H+kgXOOJQ2LpFaSnCS3dOlSBwAAops/f76bO3eumz9/frqbUu4VFBS4xo0bO0muVq1abtOmTXtcZn5+vrvyyitd6P+eaEu9evXcxIkTo+afNGlSON3EiRPdwIEDY5bzxz/+0Tnn3Pr1692RRx4ZM93f//73qHUtWrQonCY3N9ddcsklMcto0aKF+/7776OWk5ubG063aNGiqGl+/vlnd9BBB8U9Lh07dnTz5s0rlO+OO+6Imye0FPXNN9+4tm3bxs1z2GGHuVWrVsXqSjdy5EiXk5MTNW+tWrXcu+++6/r16+ckuX79+sUsJ57IPhg8eHDc7bm5ue7GG2+MuT9NmjRxc+fOjVrP5MmTXd26dUs8jm+//XY4T2jf4i1F97ukYy7JHXzwwW7lypUxj0ko3R133FFsW+T7Y9KkScW2R56LsZZKlSq5xx9/vEx5i57jgwcPdpJc27ZtY+7P3XffHfM8kuSqVavmnn322ah5k9X/5UVZ/j4uXbo08ji1cin8DsxlFwAAAGVRUCCtmiVtXy/VaCg1P1DKye5Bpd99953Wrl0rSTriiCNUp06dPS7zxhtv1OOPPy5Jat++vW644QYdcsgh2rp1q8aPH6/HHntMv/76q0455RRNmzZNBx10UMyybrvtNv3vf//ThRdeqN/97ndq3ry55s+frxEjRmjevHl65JFHNHDgQD366KP64osvNHz4cJ1xxhlq1KiRvvnmG912221asWKFbr/9dp122mnaf//9Y9Y1atQoTZ8+XT169NC1116rffbZR6tXr9bYsWM1btw4rVixQgMGDNCcOXNKfZzWrVunvn37aunSpapWrZqGDh2qfv36qV27dtqyZYsmTpyohx9+WAsWLNCJJ56oGTNmqF69epKkK664QmeffbZuvfVWvfXWW2rRooUmTJgQt74FCxaoX79++vXXX1W3bl1deeWV6tGjh1q3bq1169Zp/Pjx+te//qXp06frtNNO05QpU1SlSpVCZbzxxhv685//LEmqV6+ebrjhhvCv/P/973/1j3/8QxdeeKGaNGlSqmOxJ5566il98cUX6tevny677DJ16tRJGzdu1HPPPafnnntOa9as0SWX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67leuizVsmVLPfbYY5K8Lyz9+vXTp59+GjfP3LlzdcIJJ+j+++8v9Prw4cPDk74NGzZMmzZtKpZ34sSJ4evie/ToUeJdJlJlx44duuyyy6JOVnfvvfeG7wBxySWXxLzdXzSdO3fWOeecI0l6+eWXNXLkyLjpFy1apJdeeqnY66HbRa5evTrubP7HH398+M4c999/v8aNGxe3vtA8CJFOP/30cH1/+9vfNG/evGL55s6dq7///e9xy84UU6ZM0YIFC2Juz8vLC5/ztWvXVpMmTQptDx2Ln376KW49oZE/b7/9dtRLG3766SddeWWCAc0yCNUveYGhaG666aYSR15E3pq0pH2O5+KLLw4HNv/yl79o+fLlxdJ8++23uvvuuyV5n0WhS2JQPhB82O1xSbUlPeuci/8XFgAAVEw5OdIZ/5JO/Id3aUWkBu2818/4V9aOegi5+OKLddddd0nyvtz2799fAwYM0KhRozRp0iTNnDlTH3/8sZ544gmdcsopOvDAA/Xhhx8WK6dr1676y1/+Isn7UnHIIYfoqaee0ldffaVPP/1U1113nU455RTl5+eratWq+te//pXS/Yyne/fuevvtt9WnTx+98sormjFjhj744ANdcMEFuuWWWyRJrVq10m233Vbqsp944gl16NBBkvclrF+/fnrmmWf05ZdfaubMmfroo4/0wAMP6LjjjlPHjh312muvFSujd+/ekrxfri+//HJ9+eWXWrBgQXiJ9OKLL6phw4bKz8/Xeeedp1NPPVUvvPCCpk2bpq+//lrvv/++7r77bvXq1UsHHnhgsWBT1apV9eijj0ry7mLSs2dP3Xvvvfryyy81depU3XPPPeH2dOzYsdTHI9U+/vhjde7cWf3799f999+vCRMmaMaMGfr888+Vm5urI444IvyF/NJLLy12S9TQvk6fPl333nuvvv322/Bxj/xCPWjQIEnSihUr1KtXL40ZM0bTpk3T5MmTNWLECB166KFav359qUbOlMaAAQPCk2XeeuutuvzyyzVhwgR9/fXXeuWVV3TsscfqH//4h/r06RO3nND+St7IqMmTJ+vHH38M73O8SygiNWnSJBygXLZsmQ499FA99NBDmjZtmr744gvddddd6tu3r7Zs2SIz0+jRo+PekhNZyDlX4RdJ50pyktZJauy/NsJ/zUnqH0CdrULlL1261AEAgOjmz5/v5s6d6+bPn5/uphSWn+/cim+cW/Bf7zE/P90tSrrXXnvNtWvXzkX8TxRz2X///d2ECROKlZGfn++uuOKKuHnr1asXNa9zzk2aNCmcbtKkSTHbmpubG063aNGimOnuuOOOcLqiFi1aFN6Wm5vrhgwZErPNe+21l/vuu+/K3JaVK1e6I444IqFje/HFFxfLn5+f73r27BkzT1Hz5s1zBxxwQEL13XnnnVHbfP/99zszi5qnZs2a7p133nH9+vVzkly/fv1i9kE8kX0wePDguNtzc3PjltW2bduo5USeA/GW0047zW3btq1YucuWLXMNGzaMmidyv/Py8tzxxx8fs/waNWq4cePGucGDBztJrm3btlH3I5T+jjvuKLatpPfHBx984KpXrx6zDf3793dz5swp8Ziee+65McuIPMdL2hfnnPv73//ucnJyYpZXrVo19+yzz0bNm4z+L0/K8vdx6dKlkce7lUvh9+7sDssngZnVlxS6AO4G59zaJJXbKt4iqXky6gEAAGmSkyPtdZC091HeY5aPdojmzDPP1Lx58/TCCy/ooosuUufOndWgQQNVrlxZDRs21CGHHKIrrrhC//3vfzV79mwdf/zxxcrIycnR448/rsmTJ+vCCy9UmzZtVK1aNdWtW1fdunXTzTffrB9//DFq3nTLzc3Viy++qP79+6tRo0aqVq2aOnXqpOuvv17fffedunTpUuaymzdvrsmTJ+udd97RhRdeqA4dOqhmzZqqUqWKmjRpot69e+svf/mLPv30U40ZM6ZY/pycHE2cOFG33nqrDjroINWuXTvuxICdOnXSN998oxdffFFnnXWW2rRpoxo1aqhq1araa6+91L9/f9166636+uuvdfvtt0ct47rrrtNnn32mM888U02bNlW1atXUtm1bXXLJJfrqq6908sknl/l4pNJ1112n1157TcOHD1fPnj3Vpk0bVa9eXdWrV1e7du107rnn6p133tGbb74ZdaLIli1batq0abr00kvVsWPHQnMiRKpSpYreffddPfLII+revbtq1qypGjVqqGPHjrr88ss1Y8aM8CU4QRkwYIC++uorXXTRRWrRokX4/OrXr59Gjx6tjz/+WLVq1SqxnOeff17/+Mc/1KNHD9WrVy98OVVZ3HzzzZo5c6aGDh2qvffeWzVq1FCtWrW033776ZprrtEPP/wQHjWC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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "deliveries = df.loc[df['action'].str.contains('Delivered')][['action', 'time']]\n", + "deliveries['number'] = deliveries['action'].apply(lambda x: int(x.split(\" \")[1]))\n", + "# deliveries\n", + "\n", + "installs = df.loc[df['action'].str.contains('Grout Jacket')][['action', 'time']]\n", + "installs['number'] = 1\n", + "\n", + "fig = plt.figure(figsize=(6,3), dpi=200)\n", + "ax = fig.add_subplot(111)\n", + "\n", + "ax.scatter(deliveries['time'], deliveries['number'], s=10, label=\"Substructure(s) Delivered\")\n", + "ax.scatter(installs['time'], installs['number'], s=10, label=\"Completed Installation\")\n", + "\n", + "ax.set_xlim(0, ax.get_xlim()[1])\n", + "ax.set_ylim(0, 5)\n", + "\n", + "ax.set_xlabel(\"Simulation Time\")\n", + "ax.set_ylabel(\"Substructures\")\n", + "\n", + "ax.legend()" ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "cd4e31d9-bbda-4f7d-8df8-33f447231a78", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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BDFiI7QBkvWHKywrSSKi/nXKZmJIKZcCWNqH+y+DPjuDyFBYWFj3v/ft2xfUcz/66KN46KGH4HBo3yHZu3cv9u7di7///e945plncNNNN3l9HCklbrrpJrz88ssej1m2bBluueUW3Xp7ezv27duHffv24dlnn8Vf/vIXfP/73/f4OF988QUuv/xyNDT0vFtWXFyMd955B++++y7++7//2+teXT7//HNcd911uqBBSUkJ3n//fbz//vu46KKL8NprryEmJsanxwyU+89AaGio4TErVqzAXXfdhcZG7RPskydP4vXXX8frr7+O2267DU8//TRCQvS/vjs6OnDDDTfg9ddf16zv2bMHe/bswT//+U+fAyHB4svPFQD88Y9/xC9+8Qu0t2ufkB47dgzHjh3DSy+9hIceegi/+c1vDO/f0NCAiy66CF999ZVmfdu2bdi2bRteffVVPPfcc337ZIgGsSPljTjhofkkYF1PDG+NLWuarSkn8ZqJYUEQw1NTTxdPPUH6orcGpdsKqnHexHTTzqf2wwi1C8zMTcQ3R6u619YcLMe3JmWYdk41iHH+xHS8v7O4e4Rsh0Ni5b5SXDUz27RzEtHAcMoGMYiCKSkpCbm5uTh+/Dh27NiBP/zhD/iv//ovv0oKfve73+GBBx7ALbfcgs2bN2PWrFl48cUXNce4v1AGgKeeegq/+MUvADhLVH72s59hwYIF6OzsxMqVK/HYY4+hsbERS5cuRUpKCi666CKP53/iiSewc+dOnHnmmbj77rsxduxY1NTUaN6F7+joQGJiIi6//HKcddZZGDNmDKKjo1FUVIStW7fiL3/5CyoqKnDPPfdg/PjxOOecc3TnOXr0KC677DI0NjYiJCQEd999N6644grExcVh9+7deOyxx/Dggw/i9NNP9/r1WrduHS688EK0t7cjPT0d9957L0477TRkZmaiqKgIr732Gv75z3/iww8/xM0334w333yzt29BwDo6OnDo0CEAQHx8PBISEnTH/Pvf/8aNN94IKSVGjhyJe+65BxMnTkRqairy8/Px/PPP48MPP8Tzzz+PuLg4PP7447rHeOCBB7oDGOPGjcNPf/pTTJ06FbW1tXj99dfx7LPP4rrrrrPs8wyELz9Xjz32GH76058CAKZOnYq7774bY8aMQUJCAg4cOIC//vWv+Prrr/Hb3/4WKSkp+OEP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GzlypPr06aOtW7eqqipchcrKSh1xxBFqaGjQggULEso9+uij1alTJ61YsUK7du0KHRs6dKgGDhyonTt3atWqVaFjXbt21YQJEyRJb731VsKYuAkTJqhr165as2aNtm8PLyk6cOBADR06VHv27NGyZctCxzp16qSjjz760HN08GD4y+4RRxyhyspKrV+/Xps3bw4d69u3rw477DAdOHBAixYtCh0zM02ePFmStGjRIh04cCB0fNSoUerdu7c2b96s9evXh4717NlTY8aM0fxV2/TSK68fSr/v8VW6eMRBTZ58rEpLS7Vs2TLt2bMndO7w4cNV0aO3Hpy7WLVbmso9efhwrVy+TOPGjZMkvfnmm4o3ceJEdelUqoPVm9RYs1eSNLJvN9n2VdrYuVaDBw/W7t27tXz58tB5nTt31pFHHilJeuedd1RfXx86PnbsWHXv3l3r1q0L/Q1KUr9+/TRixAjt379fixcvDh0rKSnRscceK0lauHChampqQsdHjx6tXr16adOmTdqwIbz6SK9evbzjnUs0e5zTj58I17lrJ69tli5dqr1794aOjRgxQv369dO2bdu0dm04GNS9e3eNHTtWjY2NevvttxOew6OOOkrl5eVauXKlqqurQ8eGDBmiQYMGqbq6WitXrgwd69KliyZO9Ia/vP3222psbAwdHz9+vCoqKrR27Vpt2xbuzDVgwAANGzZMe/fu1dKlS0PHysrKdMwxXuDr/fffV21teKnZww8/XD169NDGjRu1cePG0DHeIzyF/B5x8OBBvfvuu4o3adKktO8R/fv3144dO7R69erQsW7dujX/HtGli1atWqWdO8M9vQYPHlyU7xF1dXV67733Eh7rscceq5KSEt4jeI+QxHtEDO8RTXiP8OT6PeKMw7roh1tXqq7Bezy1kr71xwbd+YULeI8o8PeIZOXmjXMub5uk5yU918z2urx5JRolNchbqvQ5Sc/ls64ZPp5ySYvkBVh+kuT4Tf4xJ2lWK6/hWrtdddVVzjnnli1blvR4zPTp0xOO/elPf3LOOfeLX/wi4djZZ5/tnHNu165dScvdsmWLc865Cy64IOHYLbfc4pxz7oEHHkg4Nnny5EN1Ki8vTzj+3nvvOeecu+aaaxKO3Xjjjc4555577rmEY0OHDj1U7tChQxOOP/fcc84552688caEY9dcc41zzrn33nsv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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "installs_neg = installs.copy()\n", + "installs_neg[\"number\"] *= -1\n", + "\n", + "total = pd.concat([deliveries, installs_neg]).sort_values('time')\n", + "total['storage'] = total['number'].cumsum()\n", + "\n", + "fig = plt.figure(figsize=(6,3), dpi=200)\n", + "ax = fig.add_subplot(111)\n", + "\n", + "ax.plot(total['time'], total['storage'], label=\"Storage Required\")\n", + "\n", + "ax.set_xlim(0, ax.get_xlim()[1])\n", + "# ax.set_ylim(0, 5)\n", + "\n", + "ax.axhline(4, ls=\"--\", lw=0.5, c='k')\n", + "\n", + "ax.set_xlabel(\"Simulation Time (h)\")\n", + "ax.set_ylabel(\"Substructures\")\n", + "\n", + "ax.legend()" + ] + }, + { + "cell_type": "markdown", + "id": "ea782cce-81ae-426f-ba5c-8d375e6f0abb", + "metadata": {}, + "source": [ + "### Questions\n", + "\n", + "- Is this approach and the results valuable to Equinor?\n", + "- How to quantify the project cost associated with increased storage required?\n", + " - $/substructure/day\n", + "\n", + " - $/laydown space/day\n", + "\n", + "- How to quantify the delivery costs associated with substructure delivery?\n", + " - $/substructure\n", + "\n", + " - $/substructure/km\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ee9c8a0b-2003-4424-a551-8cff89241249", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.9" } - ], - "source": [ - "installs_neg = installs.copy()\n", - "installs_neg[\"number\"] *= -1\n", - "\n", - "total = pd.concat([deliveries, installs_neg]).sort_values('time')\n", - "total['storage'] = total['number'].cumsum()\n", - "\n", - "fig = plt.figure(figsize=(6,3), dpi=200)\n", - "ax = fig.add_subplot(111)\n", - "\n", - "ax.plot(total['time'], total['storage'], label=\"Storage Required\")\n", - "\n", - "ax.set_xlim(0, ax.get_xlim()[1])\n", - "# ax.set_ylim(0, 5)\n", - "\n", - "ax.axhline(4, ls=\"--\", lw=0.5, c='k')\n", - "\n", - "ax.set_xlabel(\"Simulation Time (h)\")\n", - "ax.set_ylabel(\"Substructures\")\n", - "\n", - "ax.legend()" - ] - }, - { - "cell_type": "markdown", - "id": "ea782cce-81ae-426f-ba5c-8d375e6f0abb", - "metadata": {}, - "source": [ - "### Questions\n", - "\n", - "- Is this approach and the results valuable to Equinor?\n", - "- How to quantify the project cost associated with increased storage required?\n", - " - $/substructure/day\n", - "\n", - " - $/laydown space/day\n", - "\n", - "- How to quantify the delivery costs associated with substructure delivery?\n", - " - $/substructure\n", - "\n", - " - $/substructure/km\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ee9c8a0b-2003-4424-a551-8cff89241249", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/library/__init__.py b/library/__init__.py index 62fe1c84..5d3ded35 100644 --- a/library/__init__.py +++ b/library/__init__.py @@ -1,5 +1,5 @@ __author__ = ["Rob Hammond", "Jake Nunemaker"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Jake Nunemaker" -__email__ = ["jake.nunemaker@nrel.gov", "robert.hammond@nrel.gov"] +__email__ = ["jake.nunemaker@nrel.gov", "rob.hammond@nrel.gov"] __status__ = "Development" diff --git a/library/cables/HVDC_2000mm_320kV.yaml b/library/cables/HVDC_2000mm_320kV.yaml new file mode 100644 index 00000000..b33e25b3 --- /dev/null +++ b/library/cables/HVDC_2000mm_320kV.yaml @@ -0,0 +1,10 @@ +ac_resistance: 0 # ohm/km +capacitance: 295000 # nF/km +conductor_size: 2000 # mm^2 +cost_per_km: 828000 # $ +current_capacity: 1900 # A # ESTIMATE +inductance: 0.127 # mH/km +linear_density: 53 # t/km +rated_voltage: 320 # kV +cable_type: HVDC-monopole # HVDC vs HVAC +name: HVDC_2000mm_320kV diff --git a/library/cables/HVDC_2000mm_320kV_dynamic.yaml b/library/cables/HVDC_2000mm_320kV_dynamic.yaml new file mode 100644 index 00000000..3c8ec76b --- /dev/null +++ b/library/cables/HVDC_2000mm_320kV_dynamic.yaml @@ -0,0 +1,10 @@ +ac_resistance: 0 # ohm/km +capacitance: 295000 # nF/km +conductor_size: 2000 # mm^2 +cost_per_km: 993600 # $ 20% cost increase +current_capacity: 1900 # A # ESTIMATE +inductance: 0.127 # mH/km +linear_density: 53 # t/km +rated_voltage: 320 # kV +cable_type: HVDC-monopole # HVDC vs HVAC +name: HVDC_2000mm_320kV_dynamic diff --git a/library/cables/HVDC_2000mm_400kV.yaml b/library/cables/HVDC_2000mm_400kV.yaml new file mode 100644 index 00000000..0719ac59 --- /dev/null +++ b/library/cables/HVDC_2000mm_400kV.yaml @@ -0,0 +1,10 @@ +ac_resistance: 0 # ohm/km +capacitance: 255000 # nF/km +conductor_size: 2000 # mm^2 +cost_per_km: 620000 # $ +current_capacity: 1900 # A +inductance: 0.141 # mH/km +linear_density: 59 # t/km +rated_voltage: 400 # kV +cable_type: HVDC-monopole # HVDC vs HVAC +name: HVDC_2000mm_400kV diff --git a/library/cables/HVDC_2500mm_525kV.yaml b/library/cables/HVDC_2500mm_525kV.yaml new file mode 100644 index 00000000..ffeb6330 --- /dev/null +++ b/library/cables/HVDC_2500mm_525kV.yaml @@ -0,0 +1,10 @@ +ac_resistance: 0 # ohm/km +capacitance: 227000 # nF/km +conductor_size: 2500 # mm^2 +cost_per_km: 1420000 # $ +current_capacity: 1905 # A +inductance: 0.149 # mH/km +linear_density: 74 # t/km +rated_voltage: 525 # kV +cable_type: HVDC-bipole # HVDC vs HVAC +name: HVDC_2500mm_525kV diff --git a/library/cables/XLPE_1000m_220kV.yaml b/library/cables/XLPE_1000m_220kV.yaml deleted file mode 100644 index 62fc48e3..00000000 --- a/library/cables/XLPE_1000m_220kV.yaml +++ /dev/null @@ -1,9 +0,0 @@ -ac_resistance: 0.03 # -capacitance: 300 # -conductor_size: 1000 # -cost_per_km: 850000 # -current_capacity: 900 # Guess -inductance: 0.35 # -linear_density: 90 # From BVG Guide to OSW -name: XLPE_1000m_220kV -rated_voltage: 220 diff --git a/library/cables/XLPE_1000mm_220kV.yaml b/library/cables/XLPE_1000mm_220kV.yaml new file mode 100644 index 00000000..3d199571 --- /dev/null +++ b/library/cables/XLPE_1000mm_220kV.yaml @@ -0,0 +1,10 @@ +ac_resistance: 0.16 # ohm/km +capacitance: 190 # nF/km +conductor_size: 1000 # mm^2 +cost_per_km: 1420000 # $ +current_capacity: 825 # A +inductance: 0.38 # mH/km +linear_density: 115 # t/km +rated_voltage: 220 # kV +cable_type: HVAC # HVDC vs HVAC +name: XLPE_1000mm_220kV diff --git a/library/cables/XLPE_1000mm_220kV_dynamic.yaml b/library/cables/XLPE_1000mm_220kV_dynamic.yaml new file mode 100644 index 00000000..b378759b --- /dev/null +++ b/library/cables/XLPE_1000mm_220kV_dynamic.yaml @@ -0,0 +1,10 @@ +ac_resistance: 0.16 # ohm/km +capacitance: 190 # nF/km +conductor_size: 1000 # mm^2 +cost_per_km: 1700000 # $ 20% cost increase +current_capacity: 825 # A +inductance: 0.38 # mH/km +linear_density: 115 # t/km +rated_voltage: 220 # kV +cable_type: HVAC # HVDC vs HVAC +name: XLPE_1000mm_220kV_dynamic diff --git a/library/cables/XLPE_1200mm_275kV.yaml b/library/cables/XLPE_1200mm_275kV.yaml new file mode 100644 index 00000000..9fcbceab --- /dev/null +++ b/library/cables/XLPE_1200mm_275kV.yaml @@ -0,0 +1,10 @@ +ac_resistance: 0.026 # ohm/km +capacitance: 196 # nF/km +conductor_size: 1200 # mm^2 +cost_per_km: 1300000 # $ +current_capacity: 547 # A # ESTIMATE +inductance: 0.37 # mH/km +linear_density: 148 # t/km +rated_voltage: 275 # kV +cable_type: HVAC # HVDC vs HVAC +name: XLPE_1200mm_275kV diff --git a/library/cables/XLPE_1600mm_275kV.yaml b/library/cables/XLPE_1600mm_275kV.yaml new file mode 100644 index 00000000..2276c988 --- /dev/null +++ b/library/cables/XLPE_1600mm_275kV.yaml @@ -0,0 +1,10 @@ +ac_resistance: 0.022 # ohm/km +capacitance: 221 # nF/km +conductor_size: 1600 # mm^2 +cost_per_km: 1500000 # $ +current_capacity: 730 # A # ESTIMATE +inductance: 0.35 # mH/km +linear_density: 176 # t/km +rated_voltage: 275 # kV +cable_type: HVAC # HVDC vs HVAC +name: XLPE_1600mm_275kV diff --git a/library/cables/XLPE_185mm_66kV_dynamic.yaml b/library/cables/XLPE_185mm_66kV_dynamic.yaml new file mode 100644 index 00000000..5a9e706e --- /dev/null +++ b/library/cables/XLPE_185mm_66kV_dynamic.yaml @@ -0,0 +1,9 @@ +ac_resistance: 0.128 # +capacitance: 163 # +conductor_size: 185 # +cost_per_km: 240000 # $ (20% adder over XLPE_185mm_66kV) +current_capacity: 445 # At 2m burial depth +inductance: 0.443 # +linear_density: 26.1 # +name: XLPE_185mm_66kV +rated_voltage: 66 diff --git a/library/cables/XLPE_1900mm_275kV.yaml b/library/cables/XLPE_1900mm_275kV.yaml new file mode 100644 index 00000000..1e8fac7d --- /dev/null +++ b/library/cables/XLPE_1900mm_275kV.yaml @@ -0,0 +1,10 @@ +ac_resistance: 0.020 # ohm/km +capacitance: 224 # nF/km +conductor_size: 1900 # mm^2 +cost_per_km: 1280000 # $ +current_capacity: 910 # A # ESTIMATE +inductance: 0.35 # mH/km +linear_density: 185 # t/km +rated_voltage: 275 # kV +cable_type: HVAC # HVDC vs HVAC +name: XLPE_1900mm_275kV diff --git a/library/cables/XLPE_500mm_132kV.yaml b/library/cables/XLPE_500mm_132kV.yaml index e1363774..af7061c7 100644 --- a/library/cables/XLPE_500mm_132kV.yaml +++ b/library/cables/XLPE_500mm_132kV.yaml @@ -1,9 +1,10 @@ ac_resistance: 0.06 capacitance: 200 conductor_size: 500 -cost_per_km: 200000 +cost_per_km: 500000 current_capacity: 625 inductance: 0.4 linear_density: 50 +cable_type: HVAC name: XLPE_500mm_132kV rated_voltage: 132 diff --git a/library/cables/XLPE_500mm_132kV_dynamic.yaml b/library/cables/XLPE_500mm_132kV_dynamic.yaml new file mode 100644 index 00000000..b0b1ec59 --- /dev/null +++ b/library/cables/XLPE_500mm_132kV_dynamic.yaml @@ -0,0 +1,10 @@ +ac_resistance: 0.06 +capacitance: 200 +conductor_size: 500 +cost_per_km: 600000 # $ (20% adder over XLPE_500mm_132kV) +current_capacity: 625 +inductance: 0.4 +linear_density: 50 +cable_type: HVAC +name: XLPE_500mm_132kV +rated_voltage: 132 diff --git a/library/cables/XLPE_500mm_220kV.yaml b/library/cables/XLPE_500mm_220kV.yaml new file mode 100644 index 00000000..c0939a21 --- /dev/null +++ b/library/cables/XLPE_500mm_220kV.yaml @@ -0,0 +1,10 @@ +ac_resistance: 0.03 # ohm/km +capacitance: 140 # nF/km +conductor_size: 500 # mm^2 +cost_per_km: 665000 # $ +current_capacity: 655 # A +inductance: 0.43 # mH/km +linear_density: 90 # t/km +rated_voltage: 220 # kV +cable_type: HVAC # HVDC vs HVAC +name: XLPE_500mm_220kV diff --git a/library/cables/XLPE_630mm_220kV.yaml b/library/cables/XLPE_630mm_220kV.yaml new file mode 100644 index 00000000..10825289 --- /dev/null +++ b/library/cables/XLPE_630mm_220kV.yaml @@ -0,0 +1,10 @@ +ac_resistance: 0.25 # ohm/km +capacitance: 160 # nF/km +conductor_size: 630 # mm^2 +cost_per_km: 710000 # $ +current_capacity: 715 # A +inductance: 0.41 # mH/km +linear_density: 96 # t/km +rated_voltage: 220 # kV +cable_type: HVAC # HVDC vs HVAC +name: XLPE_630mm_220kV diff --git a/library/cables/XLPE_630mm_33kV.yaml b/library/cables/XLPE_630mm_33kV.yaml index 27839b82..04875131 100644 --- a/library/cables/XLPE_630mm_33kV.yaml +++ b/library/cables/XLPE_630mm_33kV.yaml @@ -5,5 +5,6 @@ cost_per_km: 450000 current_capacity: 700 inductance: 0.35 linear_density: 42.5 +cable_type: HVAC name: XLPE_630mm_33kV rated_voltage: 33 diff --git a/library/cables/XLPE_630mm_66kV.yaml b/library/cables/XLPE_630mm_66kV.yaml index fa5dcc22..85b92661 100644 --- a/library/cables/XLPE_630mm_66kV.yaml +++ b/library/cables/XLPE_630mm_66kV.yaml @@ -7,3 +7,5 @@ inductance: 0.35 linear_density: 42.5 name: XLPE_630mm_66kV rated_voltage: 66 +switchgear_cost: 1e6 +cable_type: HVAC # HVDC vs HVAC diff --git a/library/cables/XLPE_630mm_66kV_dynamic.yaml b/library/cables/XLPE_630mm_66kV_dynamic.yaml new file mode 100644 index 00000000..69d857c3 --- /dev/null +++ b/library/cables/XLPE_630mm_66kV_dynamic.yaml @@ -0,0 +1,11 @@ +ac_resistance: 0.04 +capacitance: 300 +conductor_size: 630 +cost_per_km: 480000 # $ (20% adder over XLPE_630mm_66kV) +current_capacity: 775 +inductance: 0.35 +linear_density: 42.5 +name: XLPE_630mm_66kV +rated_voltage: 66 +switchgear_cost: 1e6 +cable_type: HVAC # HVDC vs HVAC diff --git a/library/cables/XLPE_800mm_220kV.yaml b/library/cables/XLPE_800mm_220kV.yaml new file mode 100644 index 00000000..151748d0 --- /dev/null +++ b/library/cables/XLPE_800mm_220kV.yaml @@ -0,0 +1,10 @@ +ac_resistance: 0.20 # ohm/km +capacitance: 170 # nF/km +conductor_size: 800 # mm^2 +cost_per_km: 776000 # $ +current_capacity: 775 # A +inductance: 0.40 # mH/km +linear_density: 105 # t/km +rated_voltage: 220 # kV +cable_type: HVAC # HVDC vs HVAC +name: XLPE_800mm_220kV diff --git a/library/ports/__init__.py b/library/ports/__init__.py index 62fe1c84..5d3ded35 100644 --- a/library/ports/__init__.py +++ b/library/ports/__init__.py @@ -1,5 +1,5 @@ __author__ = ["Rob Hammond", "Jake Nunemaker"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Jake Nunemaker" -__email__ = ["jake.nunemaker@nrel.gov", "robert.hammond@nrel.gov"] +__email__ = ["jake.nunemaker@nrel.gov", "rob.hammond@nrel.gov"] __status__ = "Development" diff --git a/library/turbines/22MW_generic.yaml b/library/turbines/22MW_generic.yaml new file mode 100644 index 00000000..2723dd0c --- /dev/null +++ b/library/turbines/22MW_generic.yaml @@ -0,0 +1,21 @@ +# Most Data comes from IEA Wind 22-MW Reference Turbine (IEA-22MW-RWT) +blade: + deck_space: 744.12 # m^2 [IEA-22MW-RWT Value] assuming area = blade length * max chord * 0.75 (assume 25% overhang) = 137.8 * 7.2 * 0.75 + length: 137.8 # m tonnes [IEA-22MW-RWT Value] + type: Blade + mass: 82.301 # tonnes [IEA-22MW-RWT Value] +hub_height: 170 # m [IEA-22MW-RWT Value] +nacelle: + deck_space: 198 # m^2 [IEA-22MW-RWT Value] "The outer dimenesions of the nacelle are estimated equal to 18 m in length, 11 m in width, and 11 m in height" area = 18 * 11 + type: Nacelle + mass: 941.2 # tonnes [IEA-22MW-RWT Value] Nacelle assembly mass + Hub system mass = 120.0 + 821.2 +name: 22MW_generic +rated_windspeed: 11.00 # m/s [IEA-22MW-RWT Value] +rotor_diameter: 284 # m [IEA-22MW-RWT Value] +tower: + deck_space: 78.54 # m^2 [IEA-22MW-RWT Value] and assuming erected tower, deck space = tower base = pi * max outer tower diameter^2 /4 = pi * 10^2 / 4 + sections: 3 # guess + type: Tower + length: 164.4 # m [IEA-22MW-RWT Value] Hub height - Vertical distance between tower top and hub center + mass: 1574 # tonnes [IEA-22MW-RWT Value] +turbine_rating: 22 # MW diff --git a/library/vessels/example_ahts_vessel.yaml b/library/vessels/example_ahts_vessel.yaml new file mode 100644 index 00000000..66c2eeda --- /dev/null +++ b/library/vessels/example_ahts_vessel.yaml @@ -0,0 +1,6 @@ +transport_specs: + max_waveheight: 3.0 # m + max_windspeed: 15 # m/s + transit_speed: 14 # km/h +vessel_specs: + day_rate: 100000 # USD/day diff --git a/library/vessels/example_cable_lay_vessel.yaml b/library/vessels/example_cable_lay_vessel.yaml index 728ac348..3fd571c8 100644 --- a/library/vessels/example_cable_lay_vessel.yaml +++ b/library/vessels/example_cable_lay_vessel.yaml @@ -3,8 +3,9 @@ transport_specs: max_windspeed: 25 # m/s transit_speed: 11.5 # km/hr vessel_specs: - day_rate: 120000 # USD/day, cost of operating vessel with crew - min_draft: 4.8 # m - overall_length: 99.0 # m + day_rate: 225000 # USD/day, cost of operating vessel with crew + min_draft: 8.5 # m + overall_length: 171.0 # m + cable_lay_bury_speed: 0.0625 # km/hr cable_storage: - max_mass: 4000 # t + max_mass: 13000 # t diff --git a/library/vessels/example_feeder.yaml b/library/vessels/example_feeder.yaml index 4979d4ba..2990d889 100644 --- a/library/vessels/example_feeder.yaml +++ b/library/vessels/example_feeder.yaml @@ -7,7 +7,7 @@ jacksys_specs: speed_above_depth: 0.5 # m/min speed_below_depth: 0.5 # m/min storage_specs: - max_cargo: 1200 # t + max_cargo: 12000 # t max_deck_load: 8 # t/m^2 max_deck_space: 1000 # m^2 transport_specs: diff --git a/library/vessels/example_towing_vessel.yaml b/library/vessels/example_towing_vessel.yaml index 5aa4bf58..0dcdc3ef 100644 --- a/library/vessels/example_towing_vessel.yaml +++ b/library/vessels/example_towing_vessel.yaml @@ -1,6 +1,6 @@ transport_specs: - max_waveheight: 2.5 # m - max_windspeed: 20 # m/s - transit_speed: 6 # km/h + max_waveheight: 3.0 # m + max_windspeed: 15 # m/s + transit_speed: 14 # km/h vessel_specs: - day_rate: 30000 # USD/day + day_rate: 35000 # USD/day diff --git a/misc/supply_chain.ipynb b/misc/supply_chain.ipynb index e6d2faa8..4fbe71c3 100644 --- a/misc/supply_chain.ipynb +++ b/misc/supply_chain.ipynb @@ -1,624 +1,624 @@ { - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "4936af57-5491-46f1-9718-3d31026e017e", - "metadata": {}, - "outputs": [], - "source": [ - "import pprint\n", - "import pandas as pd\n", - "import numpy as np\n", - "import matplotlib as mpl\n", - "import matplotlib.pyplot as plt\n", - "from ORBIT import ProjectManager, SupplyChainManager, load_config\n", - "from ORBIT.supply_chain import DEFAULT_MULTIPLIERS, LABOR_SPLIT, TURBINE_CAPEX_SPLIT\n", - "from supply_chain_plots import waterfall_plot, area_time_plot\n", - "\n", - "pp = pprint.PrettyPrinter(indent=4)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "942d274e-07f6-4775-86c4-3dca4d15da94", - "metadata": {}, - "outputs": [ + "cells": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "{ 'array_cable': {'domestic': 0.19, 'imported': 0.0},\n", - " 'blades': {'domestic': 0.026, 'imported': 0.3},\n", - " 'export_cable': {'domestic': 0.231, 'imported': 0.0},\n", - " 'monopile': {'domestic': 0.085, 'imported': 0.28, 'tariffs': 0.25},\n", - " 'nacelle': {'domestic': 0.025, 'imported': 0.1},\n", - " 'oss_substructure': {'domestic': 0.0, 'imported': 0.0},\n", - " 'oss_topside': {'domestic': 0.0, 'imported': 0.0},\n", - " 'tower': {'domestic': 0.04, 'imported': 0.2, 'tariffs': 0.25},\n", - " 'transition_piece': {'domestic': 0.169, 'imported': 0.17, 'tariffs': 0.25}}\n" - ] - } - ], - "source": [ - "# These are from the spreadsheet on teams\n", - "# They can be overridden in ORBIT/supply_chain.py or passed as a new dict\n", - "# into the manager class like SupplyChainManager(supply_chain, multipliers={different multipliers})\n", - "pp.pprint(DEFAULT_MULTIPLIERS)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "2af71bf7-6656-4119-95b1-47fd02378533", - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 1, + "id": "4936af57-5491-46f1-9718-3d31026e017e", + "metadata": {}, + "outputs": [], + "source": [ + "import pprint\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib as mpl\n", + "import matplotlib.pyplot as plt\n", + "from ORBIT import ProjectManager, SupplyChainManager, load_config\n", + "from ORBIT.supply_chain import DEFAULT_MULTIPLIERS, LABOR_SPLIT, TURBINE_CAPEX_SPLIT\n", + "from supply_chain_plots import waterfall_plot, area_time_plot\n", + "\n", + "pp = pprint.PrettyPrinter(indent=4)\n" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'monopile': 0.5, 'oss_topside': 0.5, 'tower': 0.5, 'transition_piece': 0.5}\n" - ] - } - ], - "source": [ - "# These are used for the tariff calculations: tariffs = (1 - labor_split) * total_cost * tariff_rate\n", - "# % of cost that is labor vs material\n", - "pp.pprint(LABOR_SPLIT)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "be736b6d-6be0-4cb2-8645-8e5b6d4af668", - "metadata": {}, - "outputs": [], - "source": [ - "# Load Sample Config\n", - "config = load_config(\"supply_chain_project.yaml\") \n", - "capacity = config['plant']['num_turbines'] * int(config['turbine'].split('M')[0]) * 1000\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "b1831455-d242-457f-b9f9-9b6f831bf0bc", - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 2, + "id": "942d274e-07f6-4775-86c4-3dca4d15da94", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{ 'array_cable': {'domestic': 0.19, 'imported': 0.0},\n", + " 'blades': {'domestic': 0.026, 'imported': 0.3},\n", + " 'export_cable': {'domestic': 0.231, 'imported': 0.0},\n", + " 'monopile': {'domestic': 0.085, 'imported': 0.28, 'tariffs': 0.25},\n", + " 'nacelle': {'domestic': 0.025, 'imported': 0.1},\n", + " 'oss_substructure': {'domestic': 0.0, 'imported': 0.0},\n", + " 'oss_topside': {'domestic': 0.0, 'imported': 0.0},\n", + " 'tower': {'domestic': 0.04, 'imported': 0.2, 'tariffs': 0.25},\n", + " 'transition_piece': {'domestic': 0.169, 'imported': 0.17, 'tariffs': 0.25}}\n" + ] + } + ], + "source": [ + "# These are from the spreadsheet on teams\n", + "# They can be overridden in ORBIT/supply_chain.py or passed as a new dict\n", + "# into the manager class like SupplyChainManager(supply_chain, multipliers={different multipliers})\n", + "pp.pprint(DEFAULT_MULTIPLIERS)" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "ORBIT library intialized at '/Users/jnunemak/repos/external/ORBIT/library'\n" - ] - } - ], - "source": [ - "# Define supply chain scenario to use\n", - "# Options are imported, domestic or domestic, imported steel\n", - "supply_chain_scenarios = {\n", - " 2023: {\n", - " \"blades\": \"imported\",\n", - " \"nacelle\": \"imported\",\n", - " \"tower\": \"imported\",\n", - " \"monopile\": \"imported\",\n", - " \"transition_piece\": \"imported\",\n", - " \"array_cable\": \"imported\",\n", - " \"export_cable\": \"imported\",\n", - " \"oss_topside\": \"imported\"\n", - "},\n", - " 2025: {\n", - " \"blades\": \"domestic\",\n", - " \"nacelle\": \"imported\",\n", - " \"tower\": \"domestic, imported steel\",\n", - " \"monopile\": \"domestic, imported steel\",\n", - " \"transition_piece\": \"domestic, imported steel\",\n", - " \"array_cable\": \"imported\",\n", - " \"export_cable\": \"imported\",\n", - " \"oss_topside\": \"domestic\" \n", - " },\n", - " 2027: {\n", - " \"blades\": \"domestic\",\n", - " \"nacelle\": \"domestic\",\n", - " \"tower\": \"domestic, imported steel\",\n", - " \"monopile\": \"domestic\",\n", - " \"transition_piece\": \"domestic, imported steel\",\n", - " \"array_cable\": \"domestic\",\n", - " \"export_cable\": \"domestic\",\n", - " \"oss_topside\": \"domestic\" \n", - " },\n", - " 2030: {\n", - " \"blades\": \"domestic\",\n", - " \"nacelle\": \"domestic\",\n", - " \"tower\": \"domestic\",\n", - " \"monopile\": \"domestic\",\n", - " \"transition_piece\": \"domestic\",\n", - " \"array_cable\": \"domestic\",\n", - " \"export_cable\": \"domestic\",\n", - " \"oss_topside\": \"domestic\" \n", - " },\n", - "}\n", - "\n", - "a = 'test'\n", - "years = []\n", - "scenarios = []\n", - "cost_breakdown = {\n", - " 'Wind turbine': [],\n", - " 'Substructure': [],\n", - " 'Electrical infrastructure': [],\n", - "}\n", - "total_capex = []\n", - "\n", - "opex = 110\n", - "fcr = .058\n", - "ncf = .489\n", - "lcoe = []\n", - "\n", - "for k,v in supply_chain_scenarios.items():\n", - " years.append(k) # list of ints\n", - " _v = SupplyChainManager(v)\n", - " _sc_project= _v.run_project(config)\n", - " cost_breakdown['Wind turbine'].append(_sc_project.capex_breakdown['Turbine'] / capacity) # Nacelle, blades, tower\n", - " cost_breakdown['Substructure'].append(_sc_project.capex_breakdown['Substructure']/ capacity) # Monopile, TP\n", - " cost_breakdown['Electrical infrastructure'].append(_sc_project.capex_breakdown['Array System'] / capacity +\n", - " _sc_project.capex_breakdown['Export System'] / capacity +\n", - " _sc_project.capex_breakdown['Offshore Substation'] / capacity\n", - " ) # Array cables, export cables, OSS\n", - " total_capex.append(_sc_project.total_capex / capacity)\n", - " lcoe.append(1000* (fcr * _sc_project.total_capex_per_kw + opex) / (8760 * ncf) )\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "22c5257d", - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 3, + "id": "2af71bf7-6656-4119-95b1-47fd02378533", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'monopile': 0.5, 'oss_topside': 0.5, 'tower': 0.5, 'transition_piece': 0.5}\n" + ] + } + ], + "source": [ + "# These are used for the tariff calculations: tariffs = (1 - labor_split) * total_cost * tariff_rate\n", + "# % of cost that is labor vs material\n", + "pp.pprint(LABOR_SPLIT)" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'Wind turbine': [0.0, -5.71753158229571, -7.585204035263082, -7.585204035263082], 'Substructure': [0.0, 0.22892079711949176, -6.073632329891055, -9.862292156751318], 'Electrical infrastructure': [0.0, 0.0, 11.239304468294996, 11.239304468294996]}\n", - "[3525.171189529579, 3444.7533606745355, 3419.073942596618, 3395.439070922778]\n", - "[0.0, -1.4832522822647354, -1.9568917228414917, -2.3928208924097305]\n" - ] - } - ], - "source": [ - "# Create some summary statistics\n", - "cost_breakdown_perc = {\n", - " 'Wind turbine': [],\n", - " 'Substructure': [],\n", - " 'Electrical infrastructure': [],\n", - "}\n", - "for k, v in cost_breakdown.items():\n", - " perc = [100*(i/v[0] -1) for n,i in enumerate(v)]\n", - " cost_breakdown_perc[k] = perc \n", - "print(cost_breakdown_perc)\n", - "\n", - "total_capex_perc = [100*(i/total_capex[0] - 1) for n,i in enumerate(total_capex)] \n", - "print(total_capex)\n", - "\n", - "lcoe_perc = [100*(i/lcoe[0] - 1) for n,i in enumerate(lcoe)] \n", - "print(lcoe_perc)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "1646cfef", - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 4, + "id": "be736b6d-6be0-4cb2-8645-8e5b6d4af668", + "metadata": {}, + "outputs": [], + "source": [ + "# Load Sample Config\n", + "config = load_config(\"supply_chain_project.yaml\") \n", + "capacity = config['plant']['num_turbines'] * int(config['turbine'].split('M')[0]) * 1000\n" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "2163.834546663371\n" - ] - } - ], - "source": [ - "#Calculte baseline costs with no premiums\n", - "base_project = ProjectManager(config)\n", - "base_project.run()\n", - "base_capex = (base_project.capex_breakdown['Turbine'] + \n", - " base_project.capex_breakdown['Substructure'] + \n", - " base_project.capex_breakdown['Array System'] + \n", - " base_project.capex_breakdown['Export System']+\n", - " base_project.capex_breakdown['Offshore Substation'] ) / capacity\n", - "print(base_capex)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "600b1ed7", - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 5, + "id": "b1831455-d242-457f-b9f9-9b6f831bf0bc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ORBIT library intialized at '/Users/jnunemak/repos/external/ORBIT/library'\n" + ] + } + ], + "source": [ + "# Define supply chain scenario to use\n", + "# Options are imported, domestic or domestic, imported steel\n", + "supply_chain_scenarios = {\n", + " 2023: {\n", + " \"blades\": \"imported\",\n", + " \"nacelle\": \"imported\",\n", + " \"tower\": \"imported\",\n", + " \"monopile\": \"imported\",\n", + " \"transition_piece\": \"imported\",\n", + " \"array_cable\": \"imported\",\n", + " \"export_cable\": \"imported\",\n", + " \"oss_topside\": \"imported\"\n", + "},\n", + " 2025: {\n", + " \"blades\": \"domestic\",\n", + " \"nacelle\": \"imported\",\n", + " \"tower\": \"domestic, imported steel\",\n", + " \"monopile\": \"domestic, imported steel\",\n", + " \"transition_piece\": \"domestic, imported steel\",\n", + " \"array_cable\": \"imported\",\n", + " \"export_cable\": \"imported\",\n", + " \"oss_topside\": \"domestic\" \n", + " },\n", + " 2027: {\n", + " \"blades\": \"domestic\",\n", + " \"nacelle\": \"domestic\",\n", + " \"tower\": \"domestic, imported steel\",\n", + " \"monopile\": \"domestic\",\n", + " \"transition_piece\": \"domestic, imported steel\",\n", + " \"array_cable\": \"domestic\",\n", + " \"export_cable\": \"domestic\",\n", + " \"oss_topside\": \"domestic\" \n", + " },\n", + " 2030: {\n", + " \"blades\": \"domestic\",\n", + " \"nacelle\": \"domestic\",\n", + " \"tower\": \"domestic\",\n", + " \"monopile\": \"domestic\",\n", + " \"transition_piece\": \"domestic\",\n", + " \"array_cable\": \"domestic\",\n", + " \"export_cable\": \"domestic\",\n", + " \"oss_topside\": \"domestic\" \n", + " },\n", + "}\n", + "\n", + "a = 'test'\n", + "years = []\n", + "scenarios = []\n", + "cost_breakdown = {\n", + " 'Wind turbine': [],\n", + " 'Substructure': [],\n", + " 'Electrical infrastructure': [],\n", + "}\n", + "total_capex = []\n", + "\n", + "opex = 110\n", + "fcr = .058\n", + "ncf = .489\n", + "lcoe = []\n", + "\n", + "for k,v in supply_chain_scenarios.items():\n", + " years.append(k) # list of ints\n", + " _v = SupplyChainManager(v)\n", + " _sc_project= _v.run_project(config)\n", + " cost_breakdown['Wind turbine'].append(_sc_project.capex_breakdown['Turbine'] / capacity) # Nacelle, blades, tower\n", + " cost_breakdown['Substructure'].append(_sc_project.capex_breakdown['Substructure']/ capacity) # Monopile, TP\n", + " cost_breakdown['Electrical infrastructure'].append(_sc_project.capex_breakdown['Array System'] / capacity +\n", + " _sc_project.capex_breakdown['Export System'] / capacity +\n", + " _sc_project.capex_breakdown['Offshore Substation'] / capacity\n", + " ) # Array cables, export cables, OSS\n", + " total_capex.append(_sc_project.total_capex / capacity)\n", + " lcoe.append(1000* (fcr * _sc_project.total_capex_per_kw + opex) / (8760 * ncf) )\n" + ] + }, { - "ename": "FileNotFoundError", - "evalue": "[Errno 2] No such file or directory: 'C:/Users/mshields/Documents/Projects/Supply Chain Roadmap/Analysis repos/LCOE/results/capex_barchart.png'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [8]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 20\u001b[0m fig_dir \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mC:/Users/mshields/Documents/Projects/Supply Chain Roadmap/Analysis repos/LCOE/results\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 21\u001b[0m fname_bar \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/capex_barchart.png\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m---> 22\u001b[0m \u001b[43mfig\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msavefig\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfig_dir\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43mfname_bar\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdpi\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m300\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbbox_inches\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mtight\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/opt/miniconda3/envs/orbit-dev/lib/python3.9/site-packages/matplotlib/figure.py:3046\u001b[0m, in \u001b[0;36mFigure.savefig\u001b[0;34m(self, fname, transparent, **kwargs)\u001b[0m\n\u001b[1;32m 3042\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m ax \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxes:\n\u001b[1;32m 3043\u001b[0m stack\u001b[38;5;241m.\u001b[39menter_context(\n\u001b[1;32m 3044\u001b[0m ax\u001b[38;5;241m.\u001b[39mpatch\u001b[38;5;241m.\u001b[39m_cm_set(facecolor\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnone\u001b[39m\u001b[38;5;124m'\u001b[39m, edgecolor\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnone\u001b[39m\u001b[38;5;124m'\u001b[39m))\n\u001b[0;32m-> 3046\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcanvas\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprint_figure\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/opt/miniconda3/envs/orbit-dev/lib/python3.9/site-packages/matplotlib/backend_bases.py:2319\u001b[0m, in \u001b[0;36mFigureCanvasBase.print_figure\u001b[0;34m(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, pad_inches, bbox_extra_artists, backend, **kwargs)\u001b[0m\n\u001b[1;32m 2315\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 2316\u001b[0m \u001b[38;5;66;03m# _get_renderer may change the figure dpi (as vector formats\u001b[39;00m\n\u001b[1;32m 2317\u001b[0m \u001b[38;5;66;03m# force the figure dpi to 72), so we need to set it again here.\u001b[39;00m\n\u001b[1;32m 2318\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m cbook\u001b[38;5;241m.\u001b[39m_setattr_cm(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfigure, dpi\u001b[38;5;241m=\u001b[39mdpi):\n\u001b[0;32m-> 2319\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mprint_method\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2320\u001b[0m \u001b[43m \u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2321\u001b[0m \u001b[43m \u001b[49m\u001b[43mfacecolor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfacecolor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2322\u001b[0m \u001b[43m \u001b[49m\u001b[43medgecolor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43medgecolor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2323\u001b[0m \u001b[43m \u001b[49m\u001b[43morientation\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43morientation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2324\u001b[0m \u001b[43m \u001b[49m\u001b[43mbbox_inches_restore\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m_bbox_inches_restore\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2325\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2326\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 2327\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m bbox_inches \u001b[38;5;129;01mand\u001b[39;00m restore_bbox:\n", - "File \u001b[0;32m~/opt/miniconda3/envs/orbit-dev/lib/python3.9/site-packages/matplotlib/backend_bases.py:1648\u001b[0m, in \u001b[0;36m_check_savefig_extra_args..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 1640\u001b[0m _api\u001b[38;5;241m.\u001b[39mwarn_deprecated(\n\u001b[1;32m 1641\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m3.3\u001b[39m\u001b[38;5;124m'\u001b[39m, name\u001b[38;5;241m=\u001b[39mname, removal\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m3.6\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[1;32m 1642\u001b[0m message\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%(name)s\u001b[39;00m\u001b[38;5;124m() got unexpected keyword argument \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 1643\u001b[0m \u001b[38;5;241m+\u001b[39m arg \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m which is no longer supported as of \u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 1644\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%(since)s\u001b[39;00m\u001b[38;5;124m and will become an error \u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 1645\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%(removal)s\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 1646\u001b[0m kwargs\u001b[38;5;241m.\u001b[39mpop(arg)\n\u001b[0;32m-> 1648\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/opt/miniconda3/envs/orbit-dev/lib/python3.9/site-packages/matplotlib/_api/deprecation.py:415\u001b[0m, in \u001b[0;36mdelete_parameter..wrapper\u001b[0;34m(*inner_args, **inner_kwargs)\u001b[0m\n\u001b[1;32m 405\u001b[0m deprecation_addendum \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 406\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIf any parameter follows \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mname\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[38;5;124m, they should be passed as \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 407\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mkeyword, not positionally.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 408\u001b[0m warn_deprecated(\n\u001b[1;32m 409\u001b[0m since,\n\u001b[1;32m 410\u001b[0m name\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mrepr\u001b[39m(name),\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 413\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m deprecation_addendum,\n\u001b[1;32m 414\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m--> 415\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43minner_args\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43minner_kwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/opt/miniconda3/envs/orbit-dev/lib/python3.9/site-packages/matplotlib/backends/backend_agg.py:541\u001b[0m, in \u001b[0;36mFigureCanvasAgg.print_png\u001b[0;34m(self, filename_or_obj, metadata, pil_kwargs, *args)\u001b[0m\n\u001b[1;32m 494\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;124;03mWrite the figure to a PNG file.\u001b[39;00m\n\u001b[1;32m 496\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 538\u001b[0m \u001b[38;5;124;03m *metadata*, including the default 'Software' key.\u001b[39;00m\n\u001b[1;32m 539\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 540\u001b[0m FigureCanvasAgg\u001b[38;5;241m.\u001b[39mdraw(\u001b[38;5;28mself\u001b[39m)\n\u001b[0;32m--> 541\u001b[0m \u001b[43mmpl\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mimage\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mimsave\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 542\u001b[0m \u001b[43m \u001b[49m\u001b[43mfilename_or_obj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbuffer_rgba\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mformat\u001b[39;49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpng\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43morigin\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mupper\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 543\u001b[0m \u001b[43m \u001b[49m\u001b[43mdpi\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfigure\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdpi\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmetadata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmetadata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpil_kwargs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpil_kwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/opt/miniconda3/envs/orbit-dev/lib/python3.9/site-packages/matplotlib/image.py:1675\u001b[0m, in \u001b[0;36mimsave\u001b[0;34m(fname, arr, vmin, vmax, cmap, format, origin, dpi, metadata, pil_kwargs)\u001b[0m\n\u001b[1;32m 1673\u001b[0m pil_kwargs\u001b[38;5;241m.\u001b[39msetdefault(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mformat\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28mformat\u001b[39m)\n\u001b[1;32m 1674\u001b[0m pil_kwargs\u001b[38;5;241m.\u001b[39msetdefault(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdpi\u001b[39m\u001b[38;5;124m\"\u001b[39m, (dpi, dpi))\n\u001b[0;32m-> 1675\u001b[0m \u001b[43mimage\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msave\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mpil_kwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/opt/miniconda3/envs/orbit-dev/lib/python3.9/site-packages/PIL/Image.py:2297\u001b[0m, in \u001b[0;36mImage.save\u001b[0;34m(self, fp, format, **params)\u001b[0m\n\u001b[1;32m 2295\u001b[0m fp \u001b[38;5;241m=\u001b[39m builtins\u001b[38;5;241m.\u001b[39mopen(filename, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mr+b\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 2296\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 2297\u001b[0m fp \u001b[38;5;241m=\u001b[39m \u001b[43mbuiltins\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mw+b\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2299\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 2300\u001b[0m save_handler(\u001b[38;5;28mself\u001b[39m, fp, filename)\n", - "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'C:/Users/mshields/Documents/Projects/Supply Chain Roadmap/Analysis repos/LCOE/results/capex_barchart.png'" - ] + "cell_type": "code", + "execution_count": 6, + "id": "22c5257d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Wind turbine': [0.0, -5.71753158229571, -7.585204035263082, -7.585204035263082], 'Substructure': [0.0, 0.22892079711949176, -6.073632329891055, -9.862292156751318], 'Electrical infrastructure': [0.0, 0.0, 11.239304468294996, 11.239304468294996]}\n", + "[3525.171189529579, 3444.7533606745355, 3419.073942596618, 3395.439070922778]\n", + "[0.0, -1.4832522822647354, -1.9568917228414917, -2.3928208924097305]\n" + ] + } + ], + "source": [ + "# Create some summary statistics\n", + "cost_breakdown_perc = {\n", + " 'Wind turbine': [],\n", + " 'Substructure': [],\n", + " 'Electrical infrastructure': [],\n", + "}\n", + "for k, v in cost_breakdown.items():\n", + " perc = [100*(i/v[0] -1) for n,i in enumerate(v)]\n", + " cost_breakdown_perc[k] = perc \n", + "print(cost_breakdown_perc)\n", + "\n", + "total_capex_perc = [100*(i/total_capex[0] - 1) for n,i in enumerate(total_capex)] \n", + "print(total_capex)\n", + "\n", + "lcoe_perc = [100*(i/lcoe[0] - 1) for n,i in enumerate(lcoe)] \n", + "print(lcoe_perc)" + ] }, { - "data": { - "image/png": "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fgrA/v37OX78OHfccQczZ86kevXqTJs2jZEjR/L2229ne96DBw/SsmVLxowZwwMPPMAbb7zBI488wp133sndd9/NpZdeyq+//kqXLl1Yv/7UpVQSEhJO+eJo06YN33zzDbVq1aJu3bosWbKEgQMHsnTpUsaPH8+KFStOefwPP/zAwoULOXDgAPXr1+f2229nzZo1vP/++yQmJpKamkqTJk1o2rTpKY9r3bo1PXr0oHv37lxzzTW5vrarVq1izZo1VKlShUWLFrF8+XKSkpKoVasWXbt25b///W+m42zcuJH33nuPN954g+uuu46PPvqI/v37M2TIECZMmEC9evX49ttvGTp0aPr/VV4kJiayfft21q1bB+BXU9ny5ctZt24d5cqVo1mzZnTr1o1ffvkl0/uhYsWKjB07loULF1KtWjXA/X+3aNGCF198McdzPPnkk1SsWJG1a9cCsG/fPnr37s2rr75KYmIiQK5XBMeOHSMhIYHjx4/Trl27gN6XuVm/fj3Tpk3jm2++oWTJkgwdOpSpU6cycODAXPe5/PLLueWWW1i8eDF16tRh7969VKlShdtuu43y5ctz3333AfDWW2+xbds24uPjiYiISP9xCDB8+HDatWvHjBkzOHHiBCkpKQC8/fbbVKlShcOHD9OsWTN69+5N1apVT6l7ZGRkps9COLPA4cmpaaFcuXI5bq9WrVqemibSmqoAli5dysCBA1m3bh2qysMPP8zixYspUaIE27dvZ+fOnURFRXHvvffy4IMP0r17dy677DLWrVvHunXr6NSpE+B+zZ577rk5nrdUqVLpVwFNmzZl3rx5AMyfP/+UpqA///yTlJQUypcvn162Y8cOqlf/X8LMyy67jMWLF1OrVi1uv/12Jk6cyPbt26lcuTJnnnlmpnN369aN0qVLU7p0ac4++2x27tzJkiVL6NWrF+XKlQOgR48eAb+WGXXq1IkqVaqk32/evDl169YF4Prrr+frr7/OFDjq1KlDTEwM4F6XLVu2kJKSQnx8PNdee236fkePHs10vrlz5/Lggw8C8Ouvv/L1119Tvnx5SpcuzbfffnvKvnXr1uWnn37ijjvuoFu3bnTu3Nmv55P2ZXT11Vfz9ddfc8UVV2R6P2QlIiKC3r1753qO+fPn8/7776ffT7sCDkSfPn0A2LBhg1/vy3//+9+88sorAGzatIkr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k5M5duxYvp3+6aef5uGHH85UrqqoKiVK+P+bIS1wDB06NKA6nDhxgoiIiIAeY4wp/OyKI0R27NhBtWrV0vM7VatWjfPOOy/bVOcAq1evplWrVtSrV4833ngj/Tht27YlJiaGyMhIlixZwogRIzh8+DAxMTH069ePLVu2UL9+fQYOHEhkZCRbt25NT4cOLuX64MGDAdi5cye9evUiOjqa6Oho4uPjGTFiBJs3byYmJob777+fRYsW0b179/THDxs2jEmTJgEujcmDDz5IkyZN+PDDD/niiy9o1aoVTZo04dprryUlJQVjTHizK44Q6dy5M0888QQXXXQRf/vb3+jTpw/t2rXL8TFr1qxh2bJlHDx4kMaNG9OtWzfee+89unTpwsiRIzlx4gSHDh3isssu49VXXyUxMRGALVu2sHHjRiZPnkzLllktwvg/w4cPp127dsyYMYMTJ06QkpLCs88+y7p169KPt2jRohyPUbVqVVatWkVycjJXX3018+fP58wzz+S5555j7NixPPbYY/6+TMaYQsgCR4iUL1+elStXsmTJEhYuXEifPn1yXSL2qquuomzZspQtW5b27duzfPlymjVrxo033sjx48fp2bMnMTExWT62Vq1auQYNgAULFjBlyhTAZbitWLEi+/btC+i59enTB4Bly5aRlJSUnhDx2LFj2ebRMsaEDwscIRQREUFcXBxxcXFERUUxefLkHFOdZ5XavG3btixevJhPP/2UwYMHc8899zBw4MBM58opTXrG8+TGt45ZPT7tXKpKp06d0heDMsYUDdbHESIbNmxg48aN6fcTExOpVatWjqnOZ86cyZEjR9izZw+LFi2iWbNm/PLLL5xzzjnccsst3HzzzaxatQqAkiVLcvz48WzPf84557B+/XpOnjzJjBkz0ss7duzI+PHjAde5vX///kzp2GvVqkVSUhJHjx7ljz/+4Msvv8zyHC1btuSbb75h06ZNABw8eJAff/wxkJfJGFMIWeAIkZSUFAYNGkSDBg1o1KgRSUlJjB49mlGjRnHnnXcSGxubaURSo0aNaN++PS1btuTRRx/lvPPOY9GiRURHR9O4cWOmTZvGnXfeCcCQIUNo1KgR/fr1y/L8zz77LN27d6d169anrMj3yiuvsHDhQqKiomjatClJSUlUrVqVNm3aEBkZyf3330/NmjW57rrriIyM5Lrr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\n", - "text/plain": [ - "
" + "cell_type": "code", + "execution_count": 7, + "id": "1646cfef", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2163.834546663371\n" + ] + } + ], + "source": [ + "#Calculte baseline costs with no premiums\n", + "base_project = ProjectManager(config)\n", + "base_project.run()\n", + "base_capex = (base_project.capex_breakdown['Turbine'] + \n", + " base_project.capex_breakdown['Substructure'] + \n", + " base_project.capex_breakdown['Array System'] + \n", + " base_project.capex_breakdown['Export System']+\n", + " base_project.capex_breakdown['Offshore Substation'] ) / capacity\n", + "print(base_capex)" ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "years[0] = str(years[0]) + ' \\n(Fully imported)'\n", - "years[-1] = str(years[-1]) + '\\n(Fully domestic)'\n", - "\n", - "fig = plt.figure()\n", - "ax = fig.add_subplot()\n", - "df = pd.DataFrame(cost_breakdown, index=years)\n", - "df.plot.bar(stacked=True, rot=45, ax=ax)\n", - "\n", - "ax.plot([-5,5], [base_capex, base_capex], 'k--', label='Baseline (wind turbine + substructure + electrical)')\n", - "\n", - "# Formatting\n", - "ax.set_ylim([0,4000])\n", - "ax.set_ylabel('Component capex, $/kW')\n", - "# ax.set_xlabel('Commercial operation date')\n", - "ax.get_yaxis().set_major_formatter(\n", - " mpl.ticker.FuncFormatter(lambda x, p: format(int(x), ',')))\n", - "ax.legend(loc='upper left')\n", - "\n", - "# SAve fig\n", - "fig_dir = 'C:/Users/mshields/Documents/Projects/Supply Chain Roadmap/Analysis repos/LCOE/results'\n", - "fname_bar = '/capex_barchart.png'\n", - "fig.savefig(fig_dir+fname_bar, dpi=300, bbox_inches='tight')\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "6143f120", - "metadata": {}, - "outputs": [ + }, { - "data": { - "image/png": "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mpqicuXK2LhxIwDA0NAQ6enpAICKFSsiNTUV169fR/HixdVZpsZhkNFSMplMuu167dq1aNmyJZYuXYo///wTsbGxqFWrFoKDg2Fqagpra2s1V0tERLnJGqi7ePFixMTEoGPHjgCgcHfp1q1bsXXrVshkMs719QGOkdEC/x0X8+H10A///O233+LUqVOYMmUKevToobCkQZFeMIyISEvkdj7Peh4UFIRx48ZBCIFatWrhxYsXSEpKwu3bt6Grq8vz+X/wb0ILZH1hN2/ejIyMDIUvva6urtQzs2HDBrRs2RJTpkzB2bNnAfzfJSh+6YmI1C+38znw/pzerl07hIWFYeDAgahRowbc3Nxw69Yt6XzP87kiDpbQEo8ePYKXlxfS0tIwcuRIhbWZsr7curq6WLduHapUqYIuXboA+PRCZEREVLhyO59nsbCwwPz58xXavuRbrHPDWKclrKysUK9ePZw4cQLAxwHlw56Z6dOnKzwnIiLN8anzOYBsx8AwxGSPQUbDCCGyDSBGRkbw8vLCgQMHsH///mzfm10XJRERqcfnnM/Zm553DDIa5MmTJ5DJZNL1z+PHj0sLhgGAnZ0dOnToIKV49rgQEWkmns8LD4OMhli8eDEqV66Ma9euQSaT4fr163Bzc0P//v0xZswYxMbGwtzcHP3798e6devw5MkT9rgQEWkgns8LF4OMhmjdujV69OiBTp064dq1a6hbty5u3ryJ3r1748KFC2jYsCHGjh2L0qVLo3Xr1vD19eUMvUREGojn88LFeWTULCAgAMOHDwcAXL16FXPnzkVYWBgOHToER0dHab6A1atXIzw8HAEBATAyMkLVqlVx9uxZGBsbZzvinYiIChfP52oiSG1CQkKETCYTkydPltquXLkievToIaytrcWVK1c+es/JkyfFlClTROnSpcW8efMKs1wiIsoBz+fqwyCjRunp6WLz5s3CyMhIeHh4SO0ffvmvXr0qhBAiIyNDyOVyIYQQSUlJYt68eaJLly4iOTlZaiciIvXg+Vx9GGTULD09XWzatEno6+t/8sufnp4ufckDAwOFlZWVePbsmVrqJiIiRTyfqwcH+6qB+GBYUrFixTBkyBBs2LABv/76KyZPngwAcHBwwNy5c9GkSRN06dIF4eHhKFasmHTt9Pr16wAAPT29wv8BiIgIAM/nmoBBRg2yvrwrV67E8ePHIZPJMGTIEPj5+eHXX3+Fh4cHgP/78lepUgXe3t4A3i849vbtWzx//hxHjhxB2bJl1fZzEBF96Xg+Vz/etaRGzZs3x507d7B37140b94cQghs3boVI0eOxIQJE/Dzzz8DAO7fv48qVapAR0dHGtH+3xVTiYhIfXg+Vx8GmUKS0xe1W7duuHDhAnbu3IkWLVpIX/7//e9/GDBgAPz8/KRtuXQ7EZH68XyuWfi3WAiEENKX/s2bN1IbAOzfvx9OTk7o168fTp06BZlMhsGDB2P58uV48OAB5HK5tB9+6YmI1Ivnc83DHpkCtm3bNjx58gSenp7YuHEjvLy8EBISgurVqytMfNSuXTs8ePAAv//+O5o3b66wDyZ3IiL14/lcM/FvswCtXbsWQ4YMgZOTEwCgS5cusLS0RJ8+fXDv3j3IZDIpoU+ZMgWPHj1Cx44dcfXqVYX98EtPRKRePJ9rLv6NFpB169ZhwoQJ2L17N9q1awcAKFu2LAIDA2FgYICePXvi3r170pdaX18f06ZNw7hx42Bvb6/O0omI6AM8n2s2BpkCEBAQgDFjxmDPnj3o2bOn1L5mzRoYGhri77//hrGxMbp27YpDhw7h+vXrWLFiBdLS0rB48WLo6upySXciIg3A87nm4xgZFcvIyMCAAQOwb98+3Lx5EzVr1gQA9OzZE5cuXcKlS5dgYWGBt2/fokePHggPD4exsTGsrKxw9uxZTohERKQheD7XDgwyKnL8+HG0bt0aAJCUlIR+/frh5s2bCAwMhJeXF+7cuYN9+/ahUqVKCoPCzp49Cx0dHTRq1Ai6urrIyMhAsWLF1PmjEBF90Xg+1y4MMipw+vRp9OjRA1euXEGFChUAQErogYGBqFKlCoKDg6XXgOznIeCkSERE6sXzufbhGBkVaNCgAVq0aIG7d+8CANLT02FsbIw9e/agX79+SExMRFxcnMJ7svuC80tPRKRePJ9rHwYZFTA2NoaZmRk8PT0BvF/4KzMzE6ampti4cSMcHBzQsWNHXL58Wc2VEhFRbng+1z4MMp8p68qcj48P3r59i1mzZgGANFLd2NgY+/btQ506ddCrVy+cP39eneUSEVEOeD7XTgwynylrkFepUqXQp08fhISEYOPGjQAUv/x79uyBhYUFFi1apM5yiYgoBzyfaycO9lWh58+fw8PDA9HR0ejfvz/GjBkDANLI9ZSUFOjr63NmRyIiDcfzufZgkFGxJ0+eYPbs2bh37x7s7OywYcMG6YvOJduJiLQHz+fagUGmALx69QpHjx7F0qVLIZPJ0LFjR/Ts2RONGjVSd2lERKQEns81H4NMAfv111/x8OFDvHnzBrNnz0blypXVXRIREeUDz+eaiUGmgHw42yMAJCQkwMzMTI0VERFRfvB8rtkYZArZf/+HICIi7cTzuWZgkCEiIiKtxfvGiIiISGsxyBAREZHWYpAhIiIircUgQ0RERFqLQYaIiIi0FoMMERERaS0GGSIiItJaDDJERESktRhkiIiISGv9PzvzmlkxNoLAAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" + "cell_type": "code", + "execution_count": 8, + "id": "600b1ed7", + "metadata": {}, + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: 'C:/Users/mshields/Documents/Projects/Supply Chain Roadmap/Analysis repos/LCOE/results/capex_barchart.png'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [8]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 20\u001b[0m fig_dir \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mC:/Users/mshields/Documents/Projects/Supply Chain Roadmap/Analysis repos/LCOE/results\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 21\u001b[0m fname_bar \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m/capex_barchart.png\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m---> 22\u001b[0m \u001b[43mfig\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msavefig\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfig_dir\u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43mfname_bar\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdpi\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m300\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbbox_inches\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mtight\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/miniconda3/envs/orbit-dev/lib/python3.9/site-packages/matplotlib/figure.py:3046\u001b[0m, in \u001b[0;36mFigure.savefig\u001b[0;34m(self, fname, transparent, **kwargs)\u001b[0m\n\u001b[1;32m 3042\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m ax \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxes:\n\u001b[1;32m 3043\u001b[0m stack\u001b[38;5;241m.\u001b[39menter_context(\n\u001b[1;32m 3044\u001b[0m ax\u001b[38;5;241m.\u001b[39mpatch\u001b[38;5;241m.\u001b[39m_cm_set(facecolor\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnone\u001b[39m\u001b[38;5;124m'\u001b[39m, edgecolor\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnone\u001b[39m\u001b[38;5;124m'\u001b[39m))\n\u001b[0;32m-> 3046\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcanvas\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprint_figure\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/miniconda3/envs/orbit-dev/lib/python3.9/site-packages/matplotlib/backend_bases.py:2319\u001b[0m, in \u001b[0;36mFigureCanvasBase.print_figure\u001b[0;34m(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, pad_inches, bbox_extra_artists, backend, **kwargs)\u001b[0m\n\u001b[1;32m 2315\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 2316\u001b[0m \u001b[38;5;66;03m# _get_renderer may change the figure dpi (as vector formats\u001b[39;00m\n\u001b[1;32m 2317\u001b[0m \u001b[38;5;66;03m# force the figure dpi to 72), so we need to set it again here.\u001b[39;00m\n\u001b[1;32m 2318\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m cbook\u001b[38;5;241m.\u001b[39m_setattr_cm(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfigure, dpi\u001b[38;5;241m=\u001b[39mdpi):\n\u001b[0;32m-> 2319\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mprint_method\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2320\u001b[0m \u001b[43m \u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2321\u001b[0m \u001b[43m \u001b[49m\u001b[43mfacecolor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfacecolor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2322\u001b[0m \u001b[43m \u001b[49m\u001b[43medgecolor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43medgecolor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2323\u001b[0m \u001b[43m \u001b[49m\u001b[43morientation\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43morientation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2324\u001b[0m \u001b[43m \u001b[49m\u001b[43mbbox_inches_restore\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m_bbox_inches_restore\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 2325\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2326\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 2327\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m bbox_inches \u001b[38;5;129;01mand\u001b[39;00m restore_bbox:\n", + "File \u001b[0;32m~/opt/miniconda3/envs/orbit-dev/lib/python3.9/site-packages/matplotlib/backend_bases.py:1648\u001b[0m, in \u001b[0;36m_check_savefig_extra_args..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 1640\u001b[0m _api\u001b[38;5;241m.\u001b[39mwarn_deprecated(\n\u001b[1;32m 1641\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m3.3\u001b[39m\u001b[38;5;124m'\u001b[39m, name\u001b[38;5;241m=\u001b[39mname, removal\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m3.6\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[1;32m 1642\u001b[0m message\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%(name)s\u001b[39;00m\u001b[38;5;124m() got unexpected keyword argument \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 1643\u001b[0m \u001b[38;5;241m+\u001b[39m arg \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m which is no longer supported as of \u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 1644\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%(since)s\u001b[39;00m\u001b[38;5;124m and will become an error \u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 1645\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%(removal)s\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 1646\u001b[0m kwargs\u001b[38;5;241m.\u001b[39mpop(arg)\n\u001b[0;32m-> 1648\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/miniconda3/envs/orbit-dev/lib/python3.9/site-packages/matplotlib/_api/deprecation.py:415\u001b[0m, in \u001b[0;36mdelete_parameter..wrapper\u001b[0;34m(*inner_args, **inner_kwargs)\u001b[0m\n\u001b[1;32m 405\u001b[0m deprecation_addendum \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 406\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIf any parameter follows \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mname\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[38;5;124m, they should be passed as \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 407\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mkeyword, not positionally.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 408\u001b[0m warn_deprecated(\n\u001b[1;32m 409\u001b[0m since,\n\u001b[1;32m 410\u001b[0m name\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mrepr\u001b[39m(name),\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 413\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m deprecation_addendum,\n\u001b[1;32m 414\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m--> 415\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43minner_args\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43minner_kwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/miniconda3/envs/orbit-dev/lib/python3.9/site-packages/matplotlib/backends/backend_agg.py:541\u001b[0m, in \u001b[0;36mFigureCanvasAgg.print_png\u001b[0;34m(self, filename_or_obj, metadata, pil_kwargs, *args)\u001b[0m\n\u001b[1;32m 494\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;124;03mWrite the figure to a PNG file.\u001b[39;00m\n\u001b[1;32m 496\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 538\u001b[0m \u001b[38;5;124;03m *metadata*, including the default 'Software' key.\u001b[39;00m\n\u001b[1;32m 539\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 540\u001b[0m FigureCanvasAgg\u001b[38;5;241m.\u001b[39mdraw(\u001b[38;5;28mself\u001b[39m)\n\u001b[0;32m--> 541\u001b[0m \u001b[43mmpl\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mimage\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mimsave\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 542\u001b[0m \u001b[43m \u001b[49m\u001b[43mfilename_or_obj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbuffer_rgba\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mformat\u001b[39;49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpng\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43morigin\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mupper\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 543\u001b[0m \u001b[43m \u001b[49m\u001b[43mdpi\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfigure\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdpi\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmetadata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmetadata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpil_kwargs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpil_kwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/miniconda3/envs/orbit-dev/lib/python3.9/site-packages/matplotlib/image.py:1675\u001b[0m, in \u001b[0;36mimsave\u001b[0;34m(fname, arr, vmin, vmax, cmap, format, origin, dpi, metadata, pil_kwargs)\u001b[0m\n\u001b[1;32m 1673\u001b[0m pil_kwargs\u001b[38;5;241m.\u001b[39msetdefault(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mformat\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28mformat\u001b[39m)\n\u001b[1;32m 1674\u001b[0m pil_kwargs\u001b[38;5;241m.\u001b[39msetdefault(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdpi\u001b[39m\u001b[38;5;124m\"\u001b[39m, (dpi, dpi))\n\u001b[0;32m-> 1675\u001b[0m \u001b[43mimage\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msave\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mpil_kwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/miniconda3/envs/orbit-dev/lib/python3.9/site-packages/PIL/Image.py:2297\u001b[0m, in \u001b[0;36mImage.save\u001b[0;34m(self, fp, format, **params)\u001b[0m\n\u001b[1;32m 2295\u001b[0m fp \u001b[38;5;241m=\u001b[39m builtins\u001b[38;5;241m.\u001b[39mopen(filename, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mr+b\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 2296\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 2297\u001b[0m fp \u001b[38;5;241m=\u001b[39m \u001b[43mbuiltins\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilename\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mw+b\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2299\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 2300\u001b[0m save_handler(\u001b[38;5;28mself\u001b[39m, fp, filename)\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'C:/Users/mshields/Documents/Projects/Supply Chain Roadmap/Analysis repos/LCOE/results/capex_barchart.png'" + ] + }, + { + "data": { + "image/png": "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fgrA/v37OX78OHfccQczZ86kevXqTJs2jZEjR/L2229ne96DBw/SsmVLxowZwwMPPMAbb7zBI488wp133sndd9/NpZdeyq+//kqXLl1Yv/7UpVQSEhJO+eJo06YN33zzDbVq1aJu3bosWbKEgQMHsnTpUsaPH8+KFStOefwPP/zAwoULOXDgAPXr1+f2229nzZo1vP/++yQmJpKamkqTJk1o2rTpKY9r3bo1PXr0oHv37lxzzTW5vrarVq1izZo1VKlShUWLFrF8+XKSkpKoVasWXbt25b///W+m42zcuJH33nuPN954g+uuu46PPvqI/v37M2TIECZMmEC9evX49ttvGTp0aPr/VV4kJiayfft21q1bB+BXU9ny5ctZt24d5cqVo1mzZnTr1o1ffvkl0/uhYsWKjB07loULF1KtWjXA/X+3aNGCF198McdzPPnkk1SsWJG1a9cCsG/fPnr37s2rr75KYmIiQK5XBMeOHSMhIYHjx4/Trl27gN6XuVm/fj3Tpk3jm2++oWTJkgwdOpSpU6cycODAXPe5/PLLueWWW1i8eDF16tRh7969VKlShdtuu43y5ctz3333AfDWW2+xbds24uPjiYiISP9xCDB8+HDatWvHjBkzOHHiBCkpKQC8/fbbVKlShcOHD9OsWTN69+5N1apVT6l7ZGRkps9COLPA4cmpaaFcuXI5bq9WrVqemibSmqoAli5dysCBA1m3bh2qysMPP8zixYspUaIE27dvZ+fOnURFRXHvvffy4IMP0r17dy677DLWrVvHunXr6NSpE+B+zZ577rk5nrdUqVLpVwFNmzZl3rx5AMyfP/+UpqA///yTlJQUypcvn162Y8cOqlf/X8LMyy67jMWLF1OrVi1uv/12Jk6cyPbt26lcuTJnnnlmpnN369aN0qVLU7p0ac4++2x27tzJkiVL6NWrF+XKlQOgR48eAb+WGXXq1IkqVaqk32/evDl169YF4Prrr+frr7/OFDjq1KlDTEwM4F6XLVu2kJKSQnx8PNdee236fkePHs10vrlz5/Lggw8C8Ouvv/L1119Tvnx5SpcuzbfffnvKvnXr1uWnn37ijjvuoFu3bnTu3Nmv55P2ZXT11Vfz9ddfc8UVV2R6P2QlIiKC3r1753qO+fPn8/7776ffT7sCDkSfPn0A2LBhg1/vy3//+9+88sorAGzatIkr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k5M5duxYvp3+6aef5uGHH85UrqqoKiVK+P+bIS1wDB06NKA6nDhxgoiIiIAeY4wp/OyKI0R27NhBtWrV0vM7VatWjfPOOy/bVOcAq1evplWrVtSrV4833ngj/Tht27YlJiaGyMhIlixZwogRIzh8+DAxMTH069ePLVu2UL9+fQYOHEhkZCRbt25NT4cOLuX64MGDAdi5cye9evUiOjqa6Oho4uPjGTFiBJs3byYmJob777+fRYsW0b179/THDxs2jEmTJgEujcmDDz5IkyZN+PDDD/niiy9o1aoVTZo04dprryUlJQVjTHizK44Q6dy5M0888QQXXXQRf/vb3+jTpw/t2rXL8TFr1qxh2bJlHDx4kMaNG9OtWzfee+89unTpwsiRIzlx4gSHDh3isssu49VXXyUxMRGALVu2sHHjRiZPnkzLllktwvg/w4cPp127dsyYMYMTJ06QkpLCs88+y7p169KPt2jRohyPUbVqVVatWkVycjJXX3018+fP58wzz+S5555j7NixPPbYY/6+TMaYQsgCR4iUL1+elStXsmTJEhYuXEifPn1yXSL2qquuomzZspQtW5b27duzfPlymjVrxo033sjx48fp2bMnMTExWT62Vq1auQYNgAULFjBlyhTAZbitWLEi+/btC+i59enTB4Bly5aRlJSUnhDx2LFj2ebRMsaEDwscIRQREUFcXBxxcXFERUUxefLkHFOdZ5XavG3btixevJhPP/2UwYMHc8899zBw4MBM58opTXrG8+TGt45ZPT7tXKpKp06d0heDMsYUDdbHESIbNmxg48aN6fcTExOpVatWjqnOZ86cyZEjR9izZw+LFi2iWbNm/PLLL5xzzjnccsst3HzzzaxatQqAkiVLcvz48WzPf84557B+/XpOnjzJjBkz0ss7duzI+PHjAde5vX///kzp2GvVqkVSUhJHjx7ljz/+4Msvv8zyHC1btuSbb75h06ZNABw8eJAff/wxkJfJGFMIWeAIkZSUFAYNGkSDBg1o1KgRSUlJjB49mlGjRnHnnXcSGxubaURSo0aNaN++PS1btuTRRx/lvPPOY9GiRURHR9O4cWOmTZvGnXfeCcCQIUNo1KgR/fr1y/L8zz77LN27d6d169anrMj3yiuvsHDhQqKiomjatClJSUlUrVqVNm3aEBkZyf3330/NmjW57rrriIyM5Lrr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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "years[0] = str(years[0]) + ' \\n(Fully imported)'\n", + "years[-1] = str(years[-1]) + '\\n(Fully domestic)'\n", + "\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot()\n", + "df = pd.DataFrame(cost_breakdown, index=years)\n", + "df.plot.bar(stacked=True, rot=45, ax=ax)\n", + "\n", + "ax.plot([-5,5], [base_capex, base_capex], 'k--', label='Baseline (wind turbine + substructure + electrical)')\n", + "\n", + "# Formatting\n", + "ax.set_ylim([0,4000])\n", + "ax.set_ylabel('Component capex, $/kW')\n", + "# ax.set_xlabel('Commercial operation date')\n", + "ax.get_yaxis().set_major_formatter(\n", + " mpl.ticker.FuncFormatter(lambda x, p: format(int(x), ',')))\n", + "ax.legend(loc='upper left')\n", + "\n", + "# SAve fig\n", + "fig_dir = 'C:/Users/mshields/Documents/Projects/Supply Chain Roadmap/Analysis repos/LCOE/results'\n", + "fname_bar = '/capex_barchart.png'\n", + "fig.savefig(fig_dir+fname_bar, dpi=300, bbox_inches='tight')\n" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "dict_lcoe = {'LCOE': lcoe}\n", - "# for y, l in zip(years, lcoe):\n", - "# print(y,l)\n", - "# dict_lcoe[y] = l\n", - "\n", - "df_lcoe = pd.DataFrame(dict_lcoe, index=years)\n", - "fig = plt.figure()\n", - "ax = fig.add_subplot()\n", - "df_lcoe.plot.bar(rot=45, ax=ax)\n", - "\n", - "# Formatting\n", - "ax.get_legend().remove()\n", - "ax.set_ylabel('Levelized cost of energy, $/MWh')\n", - "\n", - "# SAve fig\n", - "fig_dir = 'C:/Users/mshields/Documents/Projects/Supply Chain Roadmap/Analysis repos/LCOE/results'\n", - "fname_lcoe = '/lcoe_barchart.png'\n", - "fig.savefig(fig_dir+fname_lcoe, dpi=300, bbox_inches='tight')" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "d2c0f18e", - "metadata": {}, - "outputs": [ + }, { - "data": { - "image/png": "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1t/8+fP57LPPOH/+PIUKFdLvf+DAAebMmcOePXv4/fffqVatmokiF+bM0O9VRiJ/7do1kpOTKVu2rKlCFyLHPe1OwIuQMVkF3LRp0yhVqhSNGjXK9AtUmC+tVkvx4sWpUKECNjY2+l8GDRo0wMnJifT09Ez716lTh/j4eL766iuKFStmoqiFuTP0e6VSqUhPT8fX19dEEQuRc4YNG0blypWpXr06VatWzbHlyCTJKsBOnz7NnTt3mD59OtWrV6dkyZJ8//33pg5LPIednR0dO3bE398/U7mbmxvW1taZGsPDhw9Ts2ZNmjdvntthijzGkO/V0aNHqV69OtbW1rkdphA57u7du/j4+PDLL79gYWGBt7c306ZNw8vL66W/4zImqwCrVKkSkydPZuvWrXTq1Il//vmHatWqsWXLFlJTU00dnnhEZGQkBw4cYMOGDWi1Wn1DqNFo9P/jio2N5f79+/pjxowZo5+MVEYFiKd50e9V8+bN5Xsl8o3ChQszdOhQVqxYwaRJkzh79iytW7dm0aJFLz/djSIKnO7duyvvv//+E+VJSUlKs2bNlAoVKijLly9X0tLSTBCdeNzx48eVkiVLKmXLllVcXV2V8uXLK7/99pty7949RVEURavVKoqiKOfPn1c8PT2V6OhoZfz48Yq9vb1y6NAhU4YuzJh8r4RQFI1G89Ty7t27KzVq1FCmTJmixMXFvfD5pSergElOTqZq1ar8999/DB48WF+elpaGvb09W7ZsoXz58owePZpz584ByP9WTejOnTt07tyZ9957j/Xr13PmzBmqVq3K+PHjmT59Onfu3NH3OLi5uVG8eHH69u3L+PHj2blzJzVr1jTxOxDmSL5XQjycigR0vbqPPiG7cOFCGjduzPLly9m6deuLX+SF0zORZ8XHxytz585VihYtqgwaNEhfnpycrP97rVq1lODgYBNEJx51+vRpxc/P74meg88//1ypUqWK8vXXXyuJiYmKoijKmTNnFJVKpdjb2ytHjx41QbQir5DvlSjoHu3B+uqrr5QePXooW7ZsUbRaraJWq/XbXnvtNaVatWovfB3pySpANBoNAE5OTvj5+dGlSxemT5/OqFGjAN3A15SUFAB+++03bty4wZw5c0wWr4D09HTUajVJSUmAricSYMqUKQQHBzNr1iwuXboEgLu7O/369ePIkSMyTYN4Jvle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\n", - "text/plain": [ - "
" + "cell_type": "code", + "execution_count": 9, + "id": "6143f120", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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mpqicuXK2LhxIwDA0NAQ6enpAICKFSsiNTUV169fR/HixdVZpsZhkNFSMplMuu167dq1aNmyJZYuXYo///wTsbGxqFWrFoKDg2Fqagpra2s1V0tERLnJGqi7ePFixMTEoGPHjgCgcHfp1q1bsXXrVshkMs719QGOkdEC/x0X8+H10A///O233+LUqVOYMmUKevToobCkQZFeMIyISEvkdj7Peh4UFIRx48ZBCIFatWrhxYsXSEpKwu3bt6Grq8vz+X/wb0ILZH1hN2/ejIyMDIUvva6urtQzs2HDBrRs2RJTpkzB2bNnAfzfJSh+6YmI1C+38znw/pzerl07hIWFYeDAgahRowbc3Nxw69Yt6XzP87kiDpbQEo8ePYKXlxfS0tIwcuRIhbWZsr7curq6WLduHapUqYIuXboA+PRCZEREVLhyO59nsbCwwPz58xXavuRbrHPDWKclrKysUK9ePZw4cQLAxwHlw56Z6dOnKzwnIiLN8anzOYBsx8AwxGSPQUbDCCGyDSBGRkbw8vLCgQMHsH///mzfm10XJRERqcfnnM/Zm553DDIa5MmTJ5DJZNL1z+PHj0sLhgGAnZ0dOnToIKV49rgQEWkmns8LD4OMhli8eDEqV66Ma9euQSaT4fr163Bzc0P//v0xZswYxMbGwtzcHP3798e6devw5MkT9rgQEWkgns8LF4OMhmjdujV69OiBTp064dq1a6hbty5u3ryJ3r1748KFC2jYsCHGjh2L0qVLo3Xr1vD19eUMvUREGojn88LFeWTULCAgAMOHDwcAXL16FXPnzkVYWBgOHToER0dHab6A1atXIzw8HAEBATAyMkLVqlVx9uxZGBsbZzvinYiIChfP52oiSG1CQkKETCYTkydPltquXLkievToIaytrcWVK1c+es/JkyfFlClTROnSpcW8efMKs1wiIsoBz+fqwyCjRunp6WLz5s3CyMhIeHh4SO0ffvmvXr0qhBAiIyNDyOVyIYQQSUlJYt68eaJLly4iOTlZaiciIvXg+Vx9GGTULD09XWzatEno6+t/8sufnp4ufckDAwOFlZWVePbsmVrqJiIiRTyfqwcH+6qB+GBYUrFixTBkyBBs2LABv/76KyZPngwAcHBwwNy5c9GkSRN06dIF4eHhKFasmHTt9Pr16wAAPT29wv8BiIgIAM/nmoBBRg2yvrwrV67E8ePHIZPJMGTIEPj5+eHXX3+Fh4cHgP/78lepUgXe3t4A3i849vbtWzx//hxHjhxB2bJl1fZzEBF96Xg+Vz/etaRGzZs3x507d7B37140b94cQghs3boVI0eOxIQJE/Dzzz8DAO7fv48qVapAR0dHGtH+3xVTiYhIfXg+Vx8GmUKS0xe1W7duuHDhAnbu3IkWLVpIX/7//e9/GDBgAPz8/KRtuXQ7EZH68XyuWfi3WAiEENKX/s2bN1IbAOzfvx9OTk7o168fTp06BZlMhsGDB2P58uV48OAB5HK5tB9+6YmI1Ivnc83DHpkCtm3bNjx58gSenp7YuHEjvLy8EBISgurVqytMfNSuXTs8ePAAv//+O5o3b66wDyZ3IiL14/lcM/FvswCtXbsWQ4YMgZOTEwCgS5cusLS0RJ8+fXDv3j3IZDIpoU+ZMgWPHj1Cx44dcfXqVYX98EtPRKRePJ9rLv6NFpB169ZhwoQJ2L17N9q1awcAKFu2LAIDA2FgYICePXvi3r170pdaX18f06ZNw7hx42Bvb6/O0omI6AM8n2s2BpkCEBAQgDFjxmDPnj3o2bOn1L5mzRoYGhri77//hrGxMbp27YpDhw7h+vXrWLFiBdLS0rB48WLo6upySXciIg3A87nm4xgZFcvIyMCAAQOwb98+3Lx5EzVr1gQA9OzZE5cuXcKlS5dgYWGBt2/fokePHggPD4exsTGsrKxw9uxZTohERKQheD7XDgwyKnL8+HG0bt0aAJCUlIR+/frh5s2bCAwMhJeXF+7cuYN9+/ahUqVKCoPCzp49Cx0dHTRq1Ai6urrIyMhAsWLF1PmjEBF90Xg+1y4MMipw+vRp9OjRA1euXEGFChUAQErogYGBqFKlCoKDg6XXgOznIeCkSERE6sXzufbhGBkVaNCgAVq0aIG7d+8CANLT02FsbIw9e/agX79+SExMRFxcnMJ7svuC80tPRKRePJ9rHwYZFTA2NoaZmRk8PT0BvF/4KzMzE6ampti4cSMcHBzQsWNHXL58Wc2VEhFRbng+1z4MMp8p68qcj48P3r59i1mzZgGANFLd2NgY+/btQ506ddCrVy+cP39eneUSEVEOeD7XTgwynylrkFepUqXQp08fhISEYOPGjQAUv/x79uyBhYUFFi1apM5yiYgoBzyfaycO9lWh58+fw8PDA9HR0ejfvz/GjBkDANLI9ZSUFOjr63NmRyIiDcfzufZgkFGxJ0+eYPbs2bh37x7s7OywYcMG6YvOJduJiLQHz+fagUGmALx69QpHjx7F0qVLIZPJ0LFjR/Ts2RONGjVSd2lERKQEns81H4NMAfv111/x8OFDvHnzBrNnz0blypXVXRIREeUDz+eaiUGmgHw42yMAJCQkwMzMTI0VERFRfvB8rtkYZArZf/+HICIi7cTzuWZgkCEiIiKtxfvGiIiISGsxyBAREZHWYpAhIiIircUgQ0RERFqLQYaIiIi0FoMMERERaS0GGSIiItJaDDJERESktRhkiIiISGv9PzvzmlkxNoLAAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "dict_lcoe = {'LCOE': lcoe}\n", + "# for y, l in zip(years, lcoe):\n", + "# print(y,l)\n", + "# dict_lcoe[y] = l\n", + "\n", + "df_lcoe = pd.DataFrame(dict_lcoe, index=years)\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot()\n", + "df_lcoe.plot.bar(rot=45, ax=ax)\n", + "\n", + "# Formatting\n", + "ax.get_legend().remove()\n", + "ax.set_ylabel('Levelized cost of energy, $/MWh')\n", + "\n", + "# SAve fig\n", + "fig_dir = 'C:/Users/mshields/Documents/Projects/Supply Chain Roadmap/Analysis repos/LCOE/results'\n", + "fname_lcoe = '/lcoe_barchart.png'\n", + "fig.savefig(fig_dir+fname_lcoe, dpi=300, bbox_inches='tight')" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "df_perc = pd.DataFrame(cost_breakdown_perc, index=years)\n", - "\n", - "fig = plt.figure()\n", - "ax = fig.add_subplot()\n", - "df_perc.plot(rot=45, ax=ax)\n", - "\n", - "# Formatting\n", - "ax.set_ylim([-15, 15])\n", - "ax.set_ylabel('Percent change in Capex')\n", - "# ax.set_xlabel('Commercial operation date')\n", - "ax.legend(loc='upper left')\n", - "\n", - "#\n", - "fname_perc = '/percent_change.png'\n", - "fig.savefig(fig_dir+fname_perc, dpi=300, bbox_inches='tight')" - ] - }, - { - "cell_type": "markdown", - "id": "2f485fd4", - "metadata": {}, - "source": [ - "## Taking a crack at a waterfall" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "db937086", - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Turbine ['blades', 'nacelle', 'tower']\n", - "Substructure ['monopile', 'transition_piece']\n", - "Array System ['array_cable']\n", - "Export System ['export_cable']\n", - "1301.0 {'Turbine': 130.49030000000002, 'Substructure': 226.62796945399697, 'Array System': 0.0, 'Export System': 0.0} {'Turbine': 21.90884, 'Substructure': 127.91889831403384, 'Array System': 19.955383985464, 'Export System': 20.41809} 357.11826945399696 190.20121229949785\n" - ] - } - ], - "source": [ - "european_cost = base_capex \n", - "multiplier_structure = {'Turbine': ['blades', 'nacelle', 'tower'],\n", - " 'Substructure': ['monopile', 'transition_piece'],\n", - " 'Array System': ['array_cable'],\n", - " 'Export System': ['export_cable'],}\n", - "\n", - "transit_cost = {}\n", - "factory_cost = {}\n", - "total_transit_cost = 0\n", - "total_factory_cost = 0\n", - "\n", - "for k,v in multiplier_structure.items():\n", - " print(k,v)\n", - " transit_cost[k] = 0\n", - " factory_cost[k] = 0\n", - " for vi in v:\n", - " if k == 'Turbine':\n", - " split = TURBINE_CAPEX_SPLIT[vi]\n", - " else:\n", - " split = 1\n", - " _transit = base_project.capex_breakdown_per_kw[k] * split * DEFAULT_MULTIPLIERS[vi]['imported']\n", - " _factory = base_project.capex_breakdown_per_kw[k] * split * DEFAULT_MULTIPLIERS[vi]['domestic']\n", - " transit_cost[k] += _transit\n", - " factory_cost[k] += _factory\n", - " total_transit_cost += _transit\n", - " total_factory_cost += _factory\n", - "\n", - "print(base_project.capex_breakdown_per_kw['Turbine'], transit_cost, factory_cost, total_transit_cost, total_factory_cost)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "7d021e44", - "metadata": {}, - "outputs": [], - "source": [ - "# Plot waterfall\n", - "european = base_capex + total_transit_cost\n", - "\n", - "slack = total_transit_cost - total_factory_cost\n", - "\n", - "domestic = european\n", - "\n", - "transit_perc = '-' + str(round(100*total_transit_cost / base_capex, 2)) + '%'\n", - "factory_perc = str(round(100*total_factory_cost / base_capex, 2) ) + '%'\n", - "slack_perc = str(round(100*slack / base_capex, 2)) + '%'\n", - "\n", - "x = ['Imported', 'Transit', 'Factory', 'Margin', 'Domestic']\n", - "y = [european, total_transit_cost, total_factory_cost, slack, domestic]\n", - "bottom = [0, european-total_transit_cost, european-total_transit_cost, european-total_transit_cost + total_factory_cost, 0]\n", - "color = ['#5E6A71', '#8CC63F', '#933C06', '#FFC423', '#5E6A71']\n", - "bar_text = {'transit': transit_perc, 'factory': factory_perc, 'margin': slack_perc}\n", - "\n", - "fdir = 'C:/Users/mshields/Documents/Projects/Supply Chain Roadmap/Analysis repos/LCOE/results/'\n", - "fname = 'lcoe_waterfall'\n", - "\n", - "fnamedir = fdir + fname\n", - "\n", - "waterfall_plot(x, y, bottom, color, bar_text, fname=fnamedir)" - ] - }, - { - "cell_type": "markdown", - "id": "e1d1f713", - "metadata": {}, - "source": [ - "### Plot an area chart over time" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "e640e06a", - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 10, + "id": "d2c0f18e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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1t/8+fP57LPPOH/+PIUKFdLvf+DAAebMmcOePXv4/fffqVatmokiF+bM0O9VRiJ/7do1kpOTKVu2rKlCFyLHPe1OwIuQMVkF3LRp0yhVqhSNGjXK9AtUmC+tVkvx4sWpUKECNjY2+l8GDRo0wMnJifT09Ez716lTh/j4eL766iuKFStmoqiFuTP0e6VSqUhPT8fX19dEEQuRc4YNG0blypWpXr06VatWzbHlyCTJKsBOnz7NnTt3mD59OtWrV6dkyZJ8//33pg5LPIednR0dO3bE398/U7mbmxvW1taZGsPDhw9Ts2ZNmjdvntthijzGkO/V0aNHqV69OtbW1rkdphA57u7du/j4+PDLL79gYWGBt7c306ZNw8vL66W/4zImqwCrVKkSkydPZuvWrXTq1Il//vmHatWqsWXLFlJTU00dnnhEZGQkBw4cYMOGDWi1Wn1DqNFo9P/jio2N5f79+/pjxowZo5+MVEYFiKd50e9V8+bN5Xsl8o3ChQszdOhQVqxYwaRJkzh79iytW7dm0aJFLz/djSIKnO7duyvvv//+E+VJSUlKs2bNlAoVKijLly9X0tLSTBCdeNzx48eVkiVLKmXLllVcXV2V8uXLK7/99pty7949RVEURavVKoqiKOfPn1c8PT2V6OhoZfz48Yq9vb1y6NAhU4YuzJh8r4RQFI1G89Ty7t27KzVq1FCmTJmixMXFvfD5pSergElOTqZq1ar8999/DB48WF+elpaGvb09W7ZsoXz58owePZpz584ByP9WTejOnTt07tyZ9957j/Xr13PmzBmqVq3K+PHjmT59Onfu3NH3OLi5uVG8eHH69u3L+PHj2blzJzVr1jTxOxDmSL5XQjycigR0vbqPPiG7cOFCGjduzPLly9m6deuLX+SF0zORZ8XHxytz585VihYtqgwaNEhfnpycrP97rVq1lODgYBNEJx51+vRpxc/P74meg88//1ypUqWK8vXXXyuJiYmKoijKmTNnFJVKpdjb2ytHjx41QbQir5DvlSjoHu3B+uqrr5QePXooW7ZsUbRaraJWq/XbXnvtNaVatWovfB3pySpANBoNAE5OTvj5+dGlSxemT5/OqFGjAN3A15SUFAB+++03bty4wZw5c0wWr4D09HTUajVJSUmAricSYMqUKQQHBzNr1iwuXboEgLu7O/369ePIkSMyTYN4Jvle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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df_perc = pd.DataFrame(cost_breakdown_perc, index=years)\n", + "\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot()\n", + "df_perc.plot(rot=45, ax=ax)\n", + "\n", + "# Formatting\n", + "ax.set_ylim([-15, 15])\n", + "ax.set_ylabel('Percent change in Capex')\n", + "# ax.set_xlabel('Commercial operation date')\n", + "ax.legend(loc='upper left')\n", + "\n", + "#\n", + "fname_perc = '/percent_change.png'\n", + "fig.savefig(fig_dir+fname_perc, dpi=300, bbox_inches='tight')" + ] + }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "UserWarning: C:\\Users\\mshields\\Documents\\Analysis tools\\ORBIT\\supply_chain_plots.py:182\n", - "FixedFormatter should only be used together with FixedLocator" - ] - } - ], - "source": [ - "x = [2023, 2025, 2027, 2030]\n", - "color_list = {'Wind turbine': '#5E6A71', 'Substructure': '#D9531E', 'Electrical infrastructure': '#5D9732', 'Cost margin': '#00A4E4'}\n", - "\n", - "fdir = 'C:/Users/mshields/Documents/Projects/Supply Chain Roadmap/Analysis repos/LCOE/results/'\n", - "fname = 'capex_area'\n", - "\n", - "fnamedir = fdir + fname\n", - "\n", - "area_time_plot(x, cost_breakdown, color_list, fname=fnamedir)" - ] - }, - { - "cell_type": "markdown", - "id": "f147a0d1", - "metadata": {}, - "source": [ - "### Old methods below" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bffa864a", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "f13a8bfb-edff-4889-b12e-6f0d4a4416ec", - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "id": "2f485fd4", + "metadata": {}, + "source": [ + "## Taking a crack at a waterfall" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "db937086", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Turbine ['blades', 'nacelle', 'tower']\n", + "Substructure ['monopile', 'transition_piece']\n", + "Array System ['array_cable']\n", + "Export System ['export_cable']\n", + "1301.0 {'Turbine': 130.49030000000002, 'Substructure': 226.62796945399697, 'Array System': 0.0, 'Export System': 0.0} {'Turbine': 21.90884, 'Substructure': 127.91889831403384, 'Array System': 19.955383985464, 'Export System': 20.41809} 357.11826945399696 190.20121229949785\n" + ] + } + ], + "source": [ + "european_cost = base_capex \n", + "multiplier_structure = {'Turbine': ['blades', 'nacelle', 'tower'],\n", + " 'Substructure': ['monopile', 'transition_piece'],\n", + " 'Array System': ['array_cable'],\n", + " 'Export System': ['export_cable'],}\n", + "\n", + "transit_cost = {}\n", + "factory_cost = {}\n", + "total_transit_cost = 0\n", + "total_factory_cost = 0\n", + "\n", + "for k,v in multiplier_structure.items():\n", + " print(k,v)\n", + " transit_cost[k] = 0\n", + " factory_cost[k] = 0\n", + " for vi in v:\n", + " if k == 'Turbine':\n", + " split = TURBINE_CAPEX_SPLIT[vi]\n", + " else:\n", + " split = 1\n", + " _transit = base_project.capex_breakdown_per_kw[k] * split * DEFAULT_MULTIPLIERS[vi]['imported']\n", + " _factory = base_project.capex_breakdown_per_kw[k] * split * DEFAULT_MULTIPLIERS[vi]['domestic']\n", + " transit_cost[k] += _transit\n", + " factory_cost[k] += _factory\n", + " total_transit_cost += _transit\n", + " total_factory_cost += _factory\n", + "\n", + "print(base_project.capex_breakdown_per_kw['Turbine'], transit_cost, factory_cost, total_transit_cost, total_factory_cost)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "7d021e44", + "metadata": {}, + "outputs": [], + "source": [ + "# Plot waterfall\n", + "european = base_capex + total_transit_cost\n", + "\n", + "slack = total_transit_cost - total_factory_cost\n", + "\n", + "domestic = european\n", + "\n", + "transit_perc = '-' + str(round(100*total_transit_cost / base_capex, 2)) + '%'\n", + "factory_perc = str(round(100*total_factory_cost / base_capex, 2) ) + '%'\n", + "slack_perc = str(round(100*slack / base_capex, 2)) + '%'\n", + "\n", + "x = ['Imported', 'Transit', 'Factory', 'Margin', 'Domestic']\n", + "y = [european, total_transit_cost, total_factory_cost, slack, domestic]\n", + "bottom = [0, european-total_transit_cost, european-total_transit_cost, european-total_transit_cost + total_factory_cost, 0]\n", + "color = ['#5E6A71', '#8CC63F', '#933C06', '#FFC423', '#5E6A71']\n", + "bar_text = {'transit': transit_perc, 'factory': factory_perc, 'margin': slack_perc}\n", + "\n", + "fdir = 'C:/Users/mshields/Documents/Projects/Supply Chain Roadmap/Analysis repos/LCOE/results/'\n", + "fname = 'lcoe_waterfall'\n", + "\n", + "fnamedir = fdir + fname\n", + "\n", + "waterfall_plot(x, y, bottom, color, bar_text, fname=fnamedir)" + ] + }, + { + "cell_type": "markdown", + "id": "e1d1f713", + "metadata": {}, + "source": [ + "### Plot an area chart over time" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "e640e06a", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "UserWarning: C:\\Users\\mshields\\Documents\\Analysis tools\\ORBIT\\supply_chain_plots.py:182\n", + "FixedFormatter should only be used together with FixedLocator" + ] + } + ], + "source": [ + "x = [2023, 2025, 2027, 2030]\n", + "color_list = {'Wind turbine': '#5E6A71', 'Substructure': '#D9531E', 'Electrical infrastructure': '#5D9732', 'Cost margin': '#00A4E4'}\n", + "\n", + "fdir = 'C:/Users/mshields/Documents/Projects/Supply Chain Roadmap/Analysis repos/LCOE/results/'\n", + "fname = 'capex_area'\n", + "\n", + "fnamedir = fdir + fname\n", + "\n", + "area_time_plot(x, cost_breakdown, color_list, fname=fnamedir)" + ] + }, + { + "cell_type": "markdown", + "id": "f147a0d1", + "metadata": {}, + "source": [ + "### Old methods below" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bffa864a", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "f13a8bfb-edff-4889-b12e-6f0d4a4416ec", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'sc_manager' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp\\1\\ipykernel_12020\\3653473131.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Run a project through this method\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;31m# It will perform the supply chain adjustments and return a project instance with the adjusted values\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0msc_project\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msc_manager\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun_project\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconfig\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 'sc_manager' is not defined" + ] + } + ], + "source": [ + "# Run a project through this method\n", + "# It will perform the supply chain adjustments and return a project instance with the adjusted values\n", + "sc_project = sc_manager.run_project(config)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "02b0cfa6-8045-461f-9dfc-ff6019ce4e79", + "metadata": {}, + "outputs": [], + "source": [ + "# This is just for comparison\n", + "project = ProjectManager(config)\n", + "project.run()\n", + "print(project.capex_breakdown_per_kw)\n", + "print('blades', .135 * project.capex_breakdown_per_kw['Turbine'])\n", + "print('nacelle', .274 * project.capex_breakdown_per_kw['Turbine'])\n", + "print('tower', .162 * project.capex_breakdown_per_kw['Turbine'])\n", + "\n", + "install_costs = 0\n", + "for c,v in project.capex_breakdown_per_kw.items():\n", + " if 'Installation' in c:\n", + " install_costs += v\n", + " else:\n", + " pass\n", + "# print(project.capex_breakdown_per_kw)\n", + "print(install_costs)\n", + "print(project.total_capex_per_kw)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "455cdef8", + "metadata": {}, + "outputs": [], + "source": [ + "3274 - (175.6+356.5+210.8+503.6+88.4+105+165+313.5+252.1+543.1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d4f63ada-549e-4414-b5f8-6b0722b91b9a", + "metadata": {}, + "outputs": [], + "source": [ + "# Comparing the values from SupplyChainManager vs. ProjectManager\n", + "df = pd.concat([\n", + " pd.Series(project.capex_breakdown, name=\"ORBIT\"),\n", + " pd.Series(sc_project.capex_breakdown, name=\"SupplyChain\")\n", + "], axis=1)\n", + "\n", + "df[\"Ratio\"] = df[\"SupplyChain\"] / df[\"ORBIT\"]" + ] + }, { - "ename": "NameError", - "evalue": "name 'sc_manager' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp\\1\\ipykernel_12020\\3653473131.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Run a project through this method\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;31m# It will perform the supply chain adjustments and return a project instance with the adjusted values\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0msc_project\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msc_manager\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun_project\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconfig\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;31mNameError\u001b[0m: name 'sc_manager' is not defined" - ] + "cell_type": "code", + "execution_count": null, + "id": "6eaf7126-844e-48a1-8b5d-23752129f23b", + "metadata": {}, + "outputs": [], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10d77f74-a300-464b-9df0-783541cad297", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" } - ], - "source": [ - "# Run a project through this method\n", - "# It will perform the supply chain adjustments and return a project instance with the adjusted values\n", - "sc_project = sc_manager.run_project(config)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "02b0cfa6-8045-461f-9dfc-ff6019ce4e79", - "metadata": {}, - "outputs": [], - "source": [ - "# This is just for comparison\n", - "project = ProjectManager(config)\n", - "project.run()\n", - "print(project.capex_breakdown_per_kw)\n", - "print('blades', .135 * project.capex_breakdown_per_kw['Turbine'])\n", - "print('nacelle', .274 * project.capex_breakdown_per_kw['Turbine'])\n", - "print('tower', .162 * project.capex_breakdown_per_kw['Turbine'])\n", - "\n", - "install_costs = 0\n", - "for c,v in project.capex_breakdown_per_kw.items():\n", - " if 'Installation' in c:\n", - " install_costs += v\n", - " else:\n", - " pass\n", - "# print(project.capex_breakdown_per_kw)\n", - "print(install_costs)\n", - "print(project.total_capex_per_kw)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "455cdef8", - "metadata": {}, - "outputs": [], - "source": [ - "3274 - (175.6+356.5+210.8+503.6+88.4+105+165+313.5+252.1+543.1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d4f63ada-549e-4414-b5f8-6b0722b91b9a", - "metadata": {}, - "outputs": [], - "source": [ - "# Comparing the values from SupplyChainManager vs. ProjectManager\n", - "df = pd.concat([\n", - " pd.Series(project.capex_breakdown, name=\"ORBIT\"),\n", - " pd.Series(sc_project.capex_breakdown, name=\"SupplyChain\")\n", - "], axis=1)\n", - "\n", - "df[\"Ratio\"] = df[\"SupplyChain\"] / df[\"ORBIT\"]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6eaf7126-844e-48a1-8b5d-23752129f23b", - "metadata": {}, - "outputs": [], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "10d77f74-a300-464b-9df0-783541cad297", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/misc/supply_chain_plots.py b/misc/supply_chain_plots.py index 75b6fd5c..8c289b62 100644 --- a/misc/supply_chain_plots.py +++ b/misc/supply_chain_plots.py @@ -1,31 +1,41 @@ -import pandas as pd -import math +"""Provides generic plotting routines for the supply chain model.""" + +from pathlib import Path + import numpy as np import matplotlib as mpl -import matplotlib.pyplot as plt import matplotlib.text as txt -import os +import matplotlib.pyplot as plt -def mysave(fig, froot, mode='png'): - assert mode in ['png', 'eps', 'pdf', 'all'] - fileName, fileExtension = os.path.splitext(froot) + +def mysave(fig, froot, mode="png"): + """Custom save method.""" + assert mode in ["png", "eps", "pdf", "all"] + fileName = Path(froot).name padding = 0.1 dpiVal = 200 legs = [] for a in fig.get_axes(): addLeg = a.get_legend() - if not addLeg is None: legs.append(a.get_legend()) + if addLeg is not None: + legs.append(a.get_legend()) ext = [] - if mode == 'png' or mode == 'all': - ext.append('png') - if mode == 'eps': # or mode == 'all': - ext.append('eps') - if mode == 'pdf' or mode == 'all': - ext.append('pdf') + if mode == "png" or mode == "all": + ext.append("png") + if mode == "eps": # or mode == 'all': + ext.append("eps") + if mode == "pdf" or mode == "all": + ext.append("pdf") for sfx in ext: - fig.savefig(fileName + '.' + sfx, format=sfx, pad_inches=padding, bbox_inches='tight', - dpi=dpiVal, bbox_extra_artists=legs) + fig.savefig( + fileName.with_suffix(sfx), + format=sfx, + pad_inches=padding, + bbox_inches="tight", + dpi=dpiVal, + bbox_extra_artists=legs, + ) titleSize = 24 # 40 #38 @@ -38,32 +48,58 @@ def mysave(fig, froot, mode='png'): linewidth = 3 -def myformat(ax, linewidth=linewidth, xticklabel=tickLabelSize, yticklabel=tickLabelSize, mode='save'): - assert type(mode) == type('') - assert mode.lower() in ['save', 'show'], 'Unknown mode' - - def myformat(myax, linewidth=linewidth, xticklabel=xticklabel, yticklabel=yticklabel): - if mode.lower() == 'show': +def myformat( + ax, + linewidth=linewidth, + xticklabel=tickLabelSize, + yticklabel=tickLabelSize, + mode="save", +): + """Custom axes formatter method.""" + assert isinstance(mode, str) + assert mode.lower() in ["save", "show"], "Unknown mode" + + def myformat( + myax, + linewidth=linewidth, + xticklabel=xticklabel, + yticklabel=yticklabel, + ): + if mode.lower() == "show": for i in myax.get_children(): # Gets EVERYTHING! if isinstance(i, txt.Text): i.set_size(textSize + 3 * deltaShow) for i in myax.get_lines(): - if i.get_marker() == 'D': continue # Don't modify baseline diamond + if i.get_marker() == "D": + continue # Don't modify baseline diamond i.set_linewidth(linewidth) # i.set_markeredgewidth(4) i.set_markersize(10) leg = myax.get_legend() - if not leg is None: - for t in leg.get_texts(): t.set_fontsize(legendSize + deltaShow + 6) + if leg is not None: + for t in leg.get_texts(): + t.set_fontsize(legendSize + deltaShow + 6) th = leg.get_title() - if not th is None: + if th is not None: th.set_fontsize(legendSize + deltaShow + 6) - myax.set_title(myax.get_title(), size=titleSize + deltaShow, weight='bold') - myax.set_xlabel(myax.get_xlabel(), size=axLabelSize + deltaShow, weight='bold') - myax.set_ylabel(myax.get_ylabel(), size=axLabelSize + deltaShow, weight='bold') + myax.set_title( + myax.get_title(), + size=titleSize + deltaShow, + weight="bold", + ) + myax.set_xlabel( + myax.get_xlabel(), + size=axLabelSize + deltaShow, + weight="bold", + ) + myax.set_ylabel( + myax.get_ylabel(), + size=axLabelSize + deltaShow, + weight="bold", + ) myax.tick_params(labelsize=tickLabelSize + deltaShow) myax.patch.set_linewidth(3) for i in myax.get_xticklabels(): @@ -75,27 +111,29 @@ def myformat(myax, linewidth=linewidth, xticklabel=xticklabel, yticklabel=ytickl for i in myax.get_yticklines(): i.set_linewidth(3) - elif mode.lower() == 'save': + elif mode.lower() == "save": for i in myax.get_children(): # Gets EVERYTHING! if isinstance(i, txt.Text): i.set_size(textSize) for i in myax.get_lines(): - if i.get_marker() == 'D': continue # Don't modify baseline diamond + if i.get_marker() == "D": + continue # Don't modify baseline diamond i.set_linewidth(linewidth) # i.set_markeredgewidth(4) i.set_markersize(10) leg = myax.get_legend() - if not leg is None: - for t in leg.get_texts(): t.set_fontsize(legendSize) + if leg is not None: + for t in leg.get_texts(): + t.set_fontsize(legendSize) th = leg.get_title() - if not th is None: + if th is not None: th.set_fontsize(legendSize) - myax.set_title(myax.get_title(), size=titleSize, weight='bold') - myax.set_xlabel(myax.get_xlabel(), size=axLabelSize, weight='bold') - myax.set_ylabel(myax.get_ylabel(), size=axLabelSize, weight='bold') + myax.set_title(myax.get_title(), size=titleSize, weight="bold") + myax.set_xlabel(myax.get_xlabel(), size=axLabelSize, weight="bold") + myax.set_ylabel(myax.get_ylabel(), size=axLabelSize, weight="bold") myax.tick_params(labelsize=tickLabelSize) myax.patch.set_linewidth(3) for i in myax.get_xticklabels(): @@ -107,83 +145,122 @@ def myformat(myax, linewidth=linewidth, xticklabel=xticklabel, yticklabel=ytickl for i in myax.get_yticklines(): i.set_linewidth(3) - if type(ax) == type([]): - for i in ax: myformat(i) + if isinstance(ax, list): + for i in ax: + myformat(i) else: myformat(ax) + def initFigAxis(figx=12, figy=9): + """Initializes the Figure and Axes.""" fig = plt.figure(figsize=(figx, figy)) ax = fig.add_subplot(111) return fig, ax + def waterfall_plot(x, y, bottom, color, bar_text, fname=None): - """ Waterfall plot comparing European andUS manufactining costs""" + """Waterfall plot comparing European andUS manufactining costs.""" fig, ax = initFigAxis() - h = ax.bar(x, y,bottom=bottom, color=color, edgecolor='k') + h = ax.bar(x, y, bottom=bottom, color=color, edgecolor="k") ax.get_yaxis().set_major_formatter( - mpl.ticker.FuncFormatter(lambda x, p: format(int(x), ','))) - ax.set_ylabel('Capital Expenditures, $/kW') - ax.set_title('Comparison of different cost premiums between \nimported and domestically manufactured components') - - h[3].set_linestyle('--') + mpl.ticker.FuncFormatter(lambda x, p: format(int(x), ",")), + ) + ax.set_ylabel("Capital Expenditures, $/kW") + title = ( + "Comparison of different cost premiums between" + "\nimported and domestically manufactured components" + ) + ax.set_title(title) + + h[3].set_linestyle("--") h[3].set_linewidth(1.75) - h[3].set_edgecolor('k') - - ax.text(x[1], 2000, bar_text['transit'], horizontalalignment='center',) - ax.text(x[2], 2000, bar_text['factory'], horizontalalignment='center',) - ax.text(x[3], 2000, bar_text['margin'], horizontalalignment='center',) + h[3].set_edgecolor("k") + + ax.text( + x[1], + 2000, + bar_text["transit"], + horizontalalignment="center", + ) + ax.text( + x[2], + 2000, + bar_text["factory"], + horizontalalignment="center", + ) + ax.text( + x[3], + 2000, + bar_text["margin"], + horizontalalignment="center", + ) if fname is not None: myformat(ax) mysave(fig, fname) plt.close() + def area_time_plot(x, y, color, fname=None): - """Area plot showing changin component cost over time""" + """Area plot showing changing component cost over time.""" fig, ax = initFigAxis() y0 = np.zeros(len(x)) y_init = 0 - y_init = np.sum([v[0] for k,v in y.items()]) + y_init = np.sum([v[0] for k, v in y.items()]) - for k,v in y.items(): - y1 = [yi+vi for yi, vi in zip(y0,v)] + for k, v in y.items(): + y1 = [yi + vi for yi, vi in zip(y0, v)] ax.fill_between(x, y0 / y_init, y1 / y_init, color=color[k], label=k) - ax.plot(x, y1 / y_init, 'w') + ax.plot(x, y1 / y_init, "w") y0 = y1 # Define margin - ax.fill_between(x, y1 / y_init, np.ones(len(x)), color=color['Cost margin'], label='Margin') - - final_margin = round( 100* (1 - y1[-1] / y_init), 1) - - y_margin = ((1 + y1[-1] / y_init) /2) - - margin_text = ' ' + str(final_margin) + '% CapEx margin relative to \n European imports can cover \n local differences in wages, \n taxes, financing, etc' + ax.fill_between( + x, + y1 / y_init, + np.ones(len(x)), + color=color["Cost margin"], + label="Margin", + ) + + final_margin = round(100 * (1 - y1[-1] / y_init), 1) + + y_margin = (1 + y1[-1] / y_init) / 2 + + margin_text = ( + f" {final_margin}" + "% CapEx margin relative to " + "\n European imports can cover " + "\n local differences in wages, " + "\n taxes, financing, etc" + ) right_bound = 2030.5 right_spline_corr = 0.2 - ax.plot([2030, right_bound], [y_margin, y_margin], 'k') - ax.text(right_bound, y_margin, margin_text, verticalalignment='center') - ax.spines["right"].set_position(("data", right_bound-right_spline_corr)) - ax.spines["top"].set_bounds(2022.65, right_bound-right_spline_corr) - ax.spines["bottom"].set_bounds(2022.65, right_bound-right_spline_corr) + ax.plot([2030, right_bound], [y_margin, y_margin], "k") + ax.text(right_bound, y_margin, margin_text, verticalalignment="center") + ax.spines["right"].set_position(("data", right_bound - right_spline_corr)) + ax.spines["top"].set_bounds(2022.65, right_bound - right_spline_corr) + ax.spines["bottom"].set_bounds(2022.65, right_bound - right_spline_corr) - ax.text(2023, -0.215, '(Fully \nimported)', horizontalalignment='center') - ax.text(2030, -0.215, '(Fully \ndomestic)', horizontalalignment='center') + ax.text(2023, -0.215, "(Fully \nimported)", horizontalalignment="center") + ax.text(2030, -0.215, "(Fully \ndomestic)", horizontalalignment="center") - ax.set_yticklabels([-20, 0, 20, 40, 60, 80 ,100]) + ax.set_yticklabels([-20, 0, 20, 40, 60, 80, 100]) ax.legend(loc=(1, 0.05)) - ax.set_ylabel('CapEx breakdown relative to \ncomponents imported from Europe, %') + ax.set_ylabel( + "CapEx breakdown relative to \ncomponents imported from Europe, %", + ) if fname is not None: myformat(ax) diff --git a/pyproject.toml b/pyproject.toml index 498624e1..6ac71302 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,87 @@ +[build-system] +requires = ["setuptools", "setuptools-scm"] +build-backend = "setuptools.build_meta" + +[project] +name = "orbit-nrel" +dynamic = ["version"] +authors = [ + {name = "Nick Riccobono", email = "nicholas.riccobono@nrel.gov"}, + {name = "Rob Hammond", email = "rob.hammond@nrel.gov"}, + {name = "Jake Nunemaker", email = "jacob.nunemaker@nrel.gov"}, +] +readme = {file = "README.rst", content-type = "text/x-rst"} +description = "Offshore Renewables Balance of system and Installation Tool" +requires-python = ">=3.9, <3.12" +license = {file = "LICENSE"} +dependencies = [ + "numpy", + "matplotlib", + "simpy", + "marmot-agents>=0.2.5", + "scipy", + "pandas", + "pyyaml", + "openmdao>=3.2", + "python-benedict<0.33.2", + "statsmodels", +] +keywords = [ + "python3", + "wind-energy", + "balance-of-system", + "wind-installation", + "discrete-event-simulation", + "simulation", +] +classifiers = [ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "Intended Audience :: Science/Research", + "Intended Audience :: Other Audience", + "License :: OSI Approved :: Apache Software License", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Topic :: Scientific/Engineering", + "Topic :: Software Development :: Libraries :: Python Modules", +] + +[project.urls] +source = "https://github.com/WISDEM/ORBIT" +documentation = "https://wisdem.github.io/ORBIT/" +issues = "https://github.com/WISDEM/ORBIT/issues" +changelog = "https://github.com/WISDEM/ORBIT/blob/main/docs/source/changelog.rst" + +[project.optional-dependencies] +dev = [ + "pre-commit", + "black", + "isort", + "pytest", + "pytest-cov", + "sphinx", + "sphinx-rtd-theme", + "ruff", +] + +[tool.setuptools] +include-package-data = true + +[tool.setuptools.packages.find] +include = ["ORBIT", "library", "*.yaml", "*.csv"] +exclude = ["*.tests", "*.tests.*", "tests.*", "tests"] + +[tool.setuptools.dynamic] +version = {attr = "ORBIT.__version__"} + [tool.black] line-length = 79 -target-version = ['py37'] +target-version = ['py39'] include = '\.pyi?$' exclude = ''' /( @@ -15,3 +96,75 @@ exclude = ''' | dist )/ ''' + +[tool.isort] +multi_line_output = 3 +include_trailing_comma = true +force_grid_wrap = 0 +use_parentheses = true +line_length = 79 +sections = [ + "FUTURE", + "STDLIB", + "THIRDPARTY", + "FIRSTPARTY", + "LOCALFOLDER", +] +known_first_party = [ + "ORBIT", + "tests", + "library", +] +length_sort = "1" + +[tool.ruff] +line-length = 79 +target-version = "py39" +exclude = [ + ".git", + "__pycache__", + "docs/source/conf.py", + "old", + "build", + "dist", + "^tests/", + ".ruff_cache", +] + +[tool.ruff.lint] +fixable = ["ALL"] +unfixable = [] +select = [ + "F", + "E", + "W", + "C4", + "D", + "UP", + "BLE", + "B", + "A", + "NPY", + "PD", + "PTH", + "PERF", + "Q", +] +ignore = [ + "E731", + "E402", + "D202", + "D212", + "C901", + "D205", + "D401", + "PD901", + "PERF203", +] + +[tool.ruff.lint.per-file-ignores] +"*/__init__.py" = ["D104", "F401"] +"tests/*" = ["D100", "D101", "D102", "D103"] + +[tool.ruff.lint.pydocstyle] +convention = "numpy" diff --git a/readthedocs.yaml b/readthedocs.yaml index 0c29499c..d504aed5 100644 --- a/readthedocs.yaml +++ b/readthedocs.yaml @@ -2,7 +2,7 @@ version: 2 sphinx: configuration: docs/conf.py python: - version: 3.7 + version: 3.8 install: - method: pip path: . diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 7ab0038d..00000000 --- a/setup.cfg +++ /dev/null @@ -1,7 +0,0 @@ -[versioneer] -VCS = git -style = pep440 -versionfile_source = ORBIT/_version.py -versionfile_build = ORBIT/_version.py -tag_prefix = -parentdir_prefix = ORBIT- diff --git a/setup.py b/setup.py deleted file mode 100644 index 6ce002c7..00000000 --- a/setup.py +++ /dev/null @@ -1,56 +0,0 @@ -""""Distribution setup""" - -import os - -from setuptools import setup, find_packages - -import versioneer - -ROOT = os.path.abspath(os.path.dirname(__file__)) - -with open("README.rst", "r") as fh: - long_description = fh.read() - -setup( - name="orbit-nrel", - author="Jake Nunemaker", - version=versioneer.get_version(), - cmdclass=versioneer.get_cmdclass(), - description="Offshore Renewables Balance of system and Installation Tool", - long_description=long_description, - classifiers=[ - "Development Status :: 4 - Beta", - "Programming Language :: Python :: 3.7", - ], - packages=find_packages( - exclude=["*.tests", "*.tests.*", "tests.*", "tests"] - ), - package_data={"": ["*.yaml"]}, - install_requires=[ - "numpy", - "matplotlib", - "simpy", - "marmot-agents>=0.2.5", - "scipy", - "pandas", - "pyyaml", - "openmdao>=3.2", - "python-benedict", - "statsmodels", - ], - extras_require={ - "dev": [ - "pre-commit", - "pylint", - "flake8", - "black", - "isort", - "pytest", - "pytest-cov", - "sphinx", - "sphinx-rtd-theme", - ] - }, - test_suite="pytest", - tests_require=["pytest", "pytest-cov"], -) diff --git a/templates/design_module.py b/templates/design_module.py index b308113b..c2162113 100644 --- a/templates/design_module.py +++ b/templates/design_module.py @@ -1,23 +1,25 @@ +"""Provides information about what class or functionality is provided.""" + __author__ = ["Jake Nunemaker"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Jake Nunemaker" __email__ = ["jake.nunemaker@nrel.gov"] +import math + from ORBIT.phases.design import DesignPhase class TemplateDesign(DesignPhase): - """Template Design Phase""" + """Template Design Phase.""" expected_config = { "required_input": "unit", - "optional_input": "unit, (optional, default: 'default')" + "optional_input": "unit, (optional, default: 'default')", } - output_config = { - "example_output": "unit" - } + output_config = {"example_output": "unit"} def __init__(self, config, **kwargs): """Creates an instance of `TemplateDesign`.""" @@ -45,9 +47,7 @@ def example_computation(self): def detailed_output(self): """Returns detailed output dictionary.""" - return { - "example_detailed_output": self.result - } + return {"example_detailed_output": self.result} @property def total_cost(self): @@ -60,14 +60,12 @@ def total_cost(self): def design_result(self): """Must match `self.output_config` structure.""" - return { - "example_output": self.result - } + return {"example_output": self.result} # === Annotated Example === class SparDesign(DesignPhase): - """Spar Design Module""" + """Spar Design Module.""" # The expected config tells ProjectManager what inputs are required to run # the module. If a input is optional (and has a default value), then flag @@ -75,18 +73,25 @@ class SparDesign(DesignPhase): # that ProjectManager doesn't raise a warning if doesn't find the input in # a project level config. expected_config = { - "site": {"depth": "m"}, # For common inputs that will be shared across many modules, - "plant": {"num_turbines": "int"}, # it's best to look up how the variable is named in existing modules - "turbine": {"turbine_rating": "MW"}, # so the user doesn't have to input the same thing twice. For example, avoid adding - # 'number_turbines' if 'num_turbines' is already used throughout ORBIT - - - - # Inputs can be grouped into dictionaries like the following: + "site": { + "depth": "m", + }, # For common inputs that will be shared across many modules, + "plant": { + "num_turbines": "int", + }, # look up how the variable is named in existing modules + "turbine": { + "turbine_rating": "MW", + }, # so the user doesn't have to input the same thing twice. For + # example, avoid adding 'number_turbines' if 'num_turbines' is already + # used throughout ORBIT Inputs can be grouped into dictionaries like + # the following: "spar_design": { - "stiffened_column_CR": "$/t (optional, default: 3120)", # I tend to group module specific cost rates - "tapered_column_CR": "$/t (optional, default: 4220)", # into dictionaries named after the component being considered - "ballast_material_CR": "$/t (optional, default: 100)", # eg. spar_design, gbf_design, etc. + # I tend to group module specific cost rates into dictionaries + # named after the component being considered eg. spar_design, + # gbf_design, etc. + "stiffened_column_CR": "$/t (optional, default: 3120)", + "tapered_column_CR": "$/t (optional, default: 4220)", + "ballast_material_CR": "$/t (optional, default: 100)", "secondary_steel_CR": "$/t (optional, default: 7250)", "towing_speed": "km/h (optional, default: 6)", }, @@ -97,12 +102,14 @@ class SparDesign(DesignPhase): # results are used as inputs to installation modules. As such, these output # names should match the input names of the respective installation module output_config = { - "substructure": { # Typically a design phase ouptuts a component design - "mass": "t", # grouped into a dictionary, eg. "substructure" dict to the left. + "substructure": { + # Typically a design phase ouptuts a component design grouped into + # a dictionary, eg. "substructure" dict to the left. + "mass": "t", "ballasted_mass": "t", "unit_cost": "USD", "towing_speed": "km/h", - } + }, } def __init__(self, config, **kwargs): @@ -113,21 +120,25 @@ def __init__(self, config, **kwargs): ---------- config : dict """ + # These first two lines are required in all modules. They initialize + # the library + config = self.initialize_library(config, **kwargs) - config = self.initialize_library(config, **kwargs) # These first two lines are required in all modules. They initialize the library - self.config = self.validate_config(config) # if it hasn't already been and validate the config against '.expected_config' from above - + # if it hasn't already been and validate the config against + # '.expected_config' from above + self.config = self.validate_config(config) - self._design = self.config.get("spar_design", {}) # Not required, but I often save module specific outputs to "_design" for later use - # If the "spar_design" sub dictionary isn't found, an empty one is returned to - # work with later methods. + # Not required, but I often save module specific outputs to "_design" + # for later use. If the "spar_design" sub dictionary isn't found, an + # empty one is returned to work with later methods. + self._design = self.config.get("spar_design", {}) self._outputs = {} def run(self): """ - This method is required. It is the method that ProjectManager will call - after initialization. Any calculations should be called from here and - the outputs should be stored. + Required method that ProjectManager will call after initialization. + Any calculations should be called from here and the outputs should be + stored. """ substructure = { @@ -142,8 +153,8 @@ def run(self): @property def stiffened_column_mass(self): """ - Calculates the mass of the stiffened column for a single spar in tonnes. - From original OffshoreBOS model. + Calculates the mass of the stiffened column for a single spar in + tonnes. From original OffshoreBOS model. """ # The following methods are examples of module specific calculations. @@ -152,36 +163,40 @@ def stiffened_column_mass(self): rating = self.config["turbine"]["turbine_rating"] depth = self.config["site"]["depth"] - mass = 535.93 + 17.664 * rating ** 2 + 0.02328 * depth * log(depth) + mass = 535.93 + 17.664 * rating**2 + 0.02328 * depth * math.log(depth) return mass @property def tapered_column_mass(self): """ - Calculates the mass of the atpered column for a single spar in tonnes. From original OffshoreBOS model. + Calculates the mass of the atpered column for a single spar in tonnes. + From original OffshoreBOS model. """ rating = self.config["turbine"]["turbine_rating"] - mass = 125.81 * log(rating) + 58.712 + mass = 125.81 * math.log(rating) + 58.712 return mass @property def stiffened_column_cost(self): """ - Calculates the cost of the stiffened column for a single spar. From original OffshoreBOS model. + Calculates the cost of the stiffened column for a single spar. From + original OffshoreBOS model. """ - cr = self._design.get("stiffened_column_CR", 3120) # This is how I typically handle outputs. This will look for the key in - # self._design, and return default value if it isn't found. + # This is how I typically handle outputs. This will look for the key in + # self._design, and return default value if it isn't found. + cr = self._design.get("stiffened_column_CR", 3120) return self.stiffened_column_mass * cr @property def tapered_column_cost(self): """ - Calculates the cost of the tapered column for a single spar. From original OffshoreBOS model. + Calculates the cost of the tapered column for a single spar. From + original OffshoreBOS model. """ cr = self._design.get("tapered_column_CR", 4220) @@ -190,18 +205,20 @@ def tapered_column_cost(self): @property def ballast_mass(self): """ - Calculates the ballast mass of a single spar. From original OffshoreBOS model. + Calculates the ballast mass of a single spar. From original OffshoreBOS + model. """ rating = self.config["turbine"]["turbine_rating"] - mass = -16.536 * rating ** 2 + 1261.8 * rating - 1554.6 + mass = -16.536 * rating**2 + 1261.8 * rating - 1554.6 return mass @property def ballast_cost(self): """ - Calculates the cost of ballast material for a single spar. From original OffshoreBOS model. + Calculates the cost of ballast material for a single spar. From + original OffshoreBOS model. """ cr = self._design.get("ballast_material_CR", 100) @@ -217,10 +234,10 @@ def secondary_steel_mass(self): rating = self.config["turbine"]["turbine_rating"] depth = self.config["site"]["depth"] - mass = exp( + mass = math.exp( 3.58 - + 0.196 * (rating ** 0.5) * log(rating) - + 0.00001 * depth * log(depth) + + 0.196 * (rating**0.5) * math.log(rating) + + 0.00001 * depth * math.log(depth), ) return mass @@ -253,7 +270,10 @@ def ballasted_mass(self): @property def substructure_cost(self): - """Returns the total cost (including ballast) of the spar substructure.""" + """ + Returns the total cost (including ballast) of the + spar substructure. + """ return ( self.stiffened_column_cost @@ -300,7 +320,7 @@ def total_cost(self): # total project configuration. @property def design_result(self): - """Returns the result of `self.run()`""" + """Returns the result of `self.run()`.""" if not self._outputs: raise Exception("Has `SparDesign` been ran yet?") diff --git a/tests/api/test_wisdem_api.py b/tests/api/test_wisdem_api.py index e15c8156..f56d6e9f 100644 --- a/tests/api/test_wisdem_api.py +++ b/tests/api/test_wisdem_api.py @@ -1,4 +1,4 @@ -"""Tests for the Monopile Wisdem API""" +"""Tests for the Monopile Wisdem API.""" __author__ = ["Jake Nunemaker"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" @@ -7,6 +7,7 @@ import openmdao.api as om + from ORBIT.api.wisdem import Orbit diff --git a/tests/conftest.py b/tests/conftest.py index a480e04e..6823cbc1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,7 +1,6 @@ """Shared pytest settings and fixtures.""" - -import os +from pathlib import Path import pytest from marmot import Environment @@ -17,8 +16,8 @@ def pytest_configure(): when required. """ - test_dir = os.path.split(os.path.abspath(__file__))[0] - pytest.library = os.path.join(test_dir, "data", "library") + test_dir = Path(__file__).resolve().parent + pytest.library = str(test_dir / "data" / "library") initialize_library(pytest.library) @@ -46,7 +45,8 @@ def feeder(): def cable_vessel(): specs = extract_library_specs( - "array_cable_install_vessel", "test_cable_lay_vessel" + "array_cable_install_vessel", + "test_cable_lay_vessel", ) return Vessel("Test Cable Vessel", specs) @@ -55,7 +55,8 @@ def cable_vessel(): def heavy_lift(): specs = extract_library_specs( - "oss_install_vessel", "test_heavy_lift_vessel" + "oss_install_vessel", + "test_heavy_lift_vessel", ) return Vessel("Test Heavy Vessel", specs) @@ -77,4 +78,4 @@ def simple_cable(): def tmp_yaml_del(): yield - os.remove("tmp.yaml") + Path("tmp.yaml").unlink() diff --git a/tests/core/test_environment.py b/tests/core/test_environment.py index 0ce94758..fbab5705 100644 --- a/tests/core/test_environment.py +++ b/tests/core/test_environment.py @@ -92,7 +92,7 @@ def test_interp(): assert "windspeed_20m" not in env.state.dtype.names constraints = {"waveheight": le(2), "windspeed_20m": le(10)} - valid = env._find_valid_constraints(**constraints) + _ = env._find_valid_constraints(**constraints) assert "windspeed_20m" in env.state.dtype.names assert (env.state["windspeed_10m"] < env.state["windspeed_20m"]).all() assert (env.state["windspeed_20m"] < env.state["windspeed_100m"]).all() @@ -103,7 +103,7 @@ def test_extrap(): assert "windspeed_120m" not in env.state.dtype.names constraints = {"waveheight": le(2), "windspeed_120m": le(10)} - valid = env._find_valid_constraints(**constraints) + _ = env._find_valid_constraints(**constraints) assert "windspeed_120m" in env.state.dtype.names assert (env.state["windspeed_120m"] > env.state["windspeed_100m"]).all() @@ -111,6 +111,6 @@ def test_extrap(): assert "windspeed_120m" not in env2.state.dtype.names constraints = {"waveheight": le(2), "windspeed_120m": le(10)} - valid = env2._find_valid_constraints(**constraints) + _ = env2._find_valid_constraints(**constraints) assert (env.state["windspeed_100m"] == env2.state["windspeed_100m"]).all() assert (env.state["windspeed_120m"] < env2.state["windspeed_120m"]).all() diff --git a/tests/core/test_library.py b/tests/core/test_library.py index 7320a9f6..002adb84 100644 --- a/tests/core/test_library.py +++ b/tests/core/test_library.py @@ -3,7 +3,7 @@ __author__ = "Rob Hammond" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Rob Hammond" -__email__ = "robert.hammond@nrel.gov" +__email__ = "rob.hammond@nrel.gov" import os from copy import deepcopy @@ -72,4 +72,4 @@ def test_phase_specific_file_extraction(): bad_config["MonopileInstallation"]["wtiv"] = "missing_vessel" with pytest.raises(LibraryItemNotFoundError): - bad_project = ProjectManager(bad_config) + _ = ProjectManager(bad_config) diff --git a/tests/data/__init__.py b/tests/data/__init__.py index 12d1d092..4def0abd 100644 --- a/tests/data/__init__.py +++ b/tests/data/__init__.py @@ -3,12 +3,12 @@ __maintainer__ = "Jake Nunemaker" __email__ = "jake.nunemaker@nrel.gov" -import os +from pathlib import Path import pandas as pd -DIR = os.path.split(__file__)[0] -_fp = os.path.join(DIR, "test_weather.csv") +DIR = Path(__file__).resolve().parent +_fp = DIR / "test_weather.csv" test_weather = ( pd.read_csv(_fp, parse_dates=["datetime"]) .set_index("datetime") diff --git a/tests/data/library/cables/XLPE_630mm_33kV.yaml b/tests/data/library/cables/XLPE_630mm_33kV.yaml index 27839b82..db4005ef 100644 --- a/tests/data/library/cables/XLPE_630mm_33kV.yaml +++ b/tests/data/library/cables/XLPE_630mm_33kV.yaml @@ -7,3 +7,4 @@ inductance: 0.35 linear_density: 42.5 name: XLPE_630mm_33kV rated_voltage: 33 +cable_type: HVAC diff --git a/tests/data/library/project/config/complete_floating_project.yaml b/tests/data/library/project/config/complete_floating_project.yaml index 45fbc3ec..dff5b427 100644 --- a/tests/data/library/project/config/complete_floating_project.yaml +++ b/tests/data/library/project/config/complete_floating_project.yaml @@ -42,6 +42,7 @@ site: substructure: takt_time: 168 support_vessel: test_support_vessel +ahts_vessel: test_ahts_vessel towing_vessel: test_towing_vessel towing_vessel_groups: station_keeping_vessels: 2 diff --git a/tests/data/library/project/config/export_design.yaml b/tests/data/library/project/config/export_design.yaml index db5bbef5..c8a0b1e5 100644 --- a/tests/data/library/project/config/export_design.yaml +++ b/tests/data/library/project/config/export_design.yaml @@ -1,11 +1,11 @@ export_system_design: - cables: XLPE_300mm_33kV + cables: XLPE_630mm_33kV percent_added_length: 0.01 percent_redundant: 0.0 + landfall: + interconnection_distance: 3 plant: capacity: 350 site: depth: 20 distance_to_landfall: 30 -landfall: - interconnection_distance: 3 diff --git a/tests/data/library/project/config/floating_oss_install.yaml b/tests/data/library/project/config/floating_oss_install.yaml index 3b10e637..816b2679 100644 --- a/tests/data/library/project/config/floating_oss_install.yaml +++ b/tests/data/library/project/config/floating_oss_install.yaml @@ -6,6 +6,10 @@ offshore_substation_substructure: mooring_cost: 5e6 offshore_substation_topside: unit_cost: 100e6 +mooring_system: + num_lines: 3 + line_cost: 1e4 + anchor_cost: 1e5 site: depth: 500 distance: 40 diff --git a/tests/data/library/project/config/moored_install.yaml b/tests/data/library/project/config/moored_install.yaml index 47cd8bb0..242bb802 100644 --- a/tests/data/library/project/config/moored_install.yaml +++ b/tests/data/library/project/config/moored_install.yaml @@ -12,10 +12,12 @@ substructure: takt_time: 168 towing_speed: 6 unit_cost: 12e6 +ahts_vessel: test_ahts_vessel support_vessel: test_support_vessel towing_vessel: test_towing_vessel towing_vessel_groups: num_groups: 1 + ahts_vessels: 1 station_keeping_vessels: 3 towing_vessels: 1 turbine: 12MW_generic diff --git a/tests/data/library/project/config/moored_install_multi_assembly.yaml b/tests/data/library/project/config/moored_install_multi_assembly.yaml new file mode 100644 index 00000000..2f196638 --- /dev/null +++ b/tests/data/library/project/config/moored_install_multi_assembly.yaml @@ -0,0 +1,21 @@ +plant: + num_turbines: 50 +port: + assembly_storage: 1 + sub_assembly_lines: 3 + sub_storage: 1 + turbine_assembly_cranes: 1 +site: + depth: 500 + distance: 50 +substructure: + takt_time: 168 + towing_speed: 6 + unit_cost: 12e6 +ahts_vessel: test_ahts_vessel +towing_vessel: test_towing_vessel +towing_vessel_groups: + num_groups: 1 + ahts_vessels: 1 + towing_vessels: 1 +turbine: 12MW_generic diff --git a/tests/data/library/project/config/moored_install_multi_assembly_multi_tow.yaml b/tests/data/library/project/config/moored_install_multi_assembly_multi_tow.yaml new file mode 100644 index 00000000..2f196638 --- /dev/null +++ b/tests/data/library/project/config/moored_install_multi_assembly_multi_tow.yaml @@ -0,0 +1,21 @@ +plant: + num_turbines: 50 +port: + assembly_storage: 1 + sub_assembly_lines: 3 + sub_storage: 1 + turbine_assembly_cranes: 1 +site: + depth: 500 + distance: 50 +substructure: + takt_time: 168 + towing_speed: 6 + unit_cost: 12e6 +ahts_vessel: test_ahts_vessel +towing_vessel: test_towing_vessel +towing_vessel_groups: + num_groups: 1 + ahts_vessels: 1 + towing_vessels: 1 +turbine: 12MW_generic diff --git a/tests/data/library/project/config/moored_install_multi_tow.yaml b/tests/data/library/project/config/moored_install_multi_tow.yaml new file mode 100644 index 00000000..ae4585e5 --- /dev/null +++ b/tests/data/library/project/config/moored_install_multi_tow.yaml @@ -0,0 +1,21 @@ +plant: + num_turbines: 50 +port: + assembly_storage: 1 + sub_assembly_lines: 1 + sub_storage: 1 + turbine_assembly_cranes: 1 +site: + depth: 500 + distance: 50 +substructure: + takt_time: 168 + towing_speed: 6 + unit_cost: 12e6 +ahts_vessel: test_ahts_vessel +towing_vessel: test_towing_vessel +towing_vessel_groups: + num_groups: 3 + ahts_vessels: 1 + towing_vessels: 1 +turbine: 12MW_generic diff --git a/tests/data/library/project/config/moored_install_no_supply.yaml b/tests/data/library/project/config/moored_install_no_supply.yaml index 249abd85..a91dd2ba 100644 --- a/tests/data/library/project/config/moored_install_no_supply.yaml +++ b/tests/data/library/project/config/moored_install_no_supply.yaml @@ -10,10 +10,12 @@ substructure: takt_time: 0 towing_speed: 6 unit_cost: 12e6 +ahts_vessel: test_ahts_vessel support_vessel: test_support_vessel towing_vessel: test_towing_vessel towing_vessel_groups: num_groups: 1 station_keeping_vessels: 3 + ahts_vessels: 1 towing_vessels: 1 turbine: 12MW_generic diff --git a/tests/data/library/project/config/turbine_install_22mw_generic.yaml b/tests/data/library/project/config/turbine_install_22mw_generic.yaml new file mode 100644 index 00000000..25fbf83b --- /dev/null +++ b/tests/data/library/project/config/turbine_install_22mw_generic.yaml @@ -0,0 +1,10 @@ +plant: + num_turbines: 50 +port: + monthly_rate: 100000 + num_cranes: 1 +site: + depth: 40 + distance: 50 +turbine: 22MW_generic +wtiv: test_wtiv diff --git a/tests/data/library/vessels/test_ahts_vessel.yaml b/tests/data/library/vessels/test_ahts_vessel.yaml new file mode 100644 index 00000000..66c2eeda --- /dev/null +++ b/tests/data/library/vessels/test_ahts_vessel.yaml @@ -0,0 +1,6 @@ +transport_specs: + max_waveheight: 3.0 # m + max_windspeed: 15 # m/s + transit_speed: 14 # km/h +vessel_specs: + day_rate: 100000 # USD/day diff --git a/tests/data/library/vessels/test_cable_lay_vessel.yaml b/tests/data/library/vessels/test_cable_lay_vessel.yaml index 73bfb1a8..ee0f1b34 100644 --- a/tests/data/library/vessels/test_cable_lay_vessel.yaml +++ b/tests/data/library/vessels/test_cable_lay_vessel.yaml @@ -6,5 +6,6 @@ vessel_specs: day_rate: 50000 # USD/day, cost of operating vessel with crew min_draft: 4.8 # m overall_length: 99.0 # m + cable_lay_bury_speed: 0.0625 # km/hr cable_storage: max_mass: 6000 diff --git a/tests/data/library/vessels/test_towing_vessel.yaml b/tests/data/library/vessels/test_towing_vessel.yaml index 5aa4bf58..0dcdc3ef 100644 --- a/tests/data/library/vessels/test_towing_vessel.yaml +++ b/tests/data/library/vessels/test_towing_vessel.yaml @@ -1,6 +1,6 @@ transport_specs: - max_waveheight: 2.5 # m - max_windspeed: 20 # m/s - transit_speed: 6 # km/h + max_waveheight: 3.0 # m + max_windspeed: 15 # m/s + transit_speed: 14 # km/h vessel_specs: - day_rate: 30000 # USD/day + day_rate: 35000 # USD/day diff --git a/tests/phases/design/test_array_system_design.py b/tests/phases/design/test_array_system_design.py index cd1ad5cd..a7f7bb09 100644 --- a/tests/phases/design/test_array_system_design.py +++ b/tests/phases/design/test_array_system_design.py @@ -3,7 +3,7 @@ __author__ = "Rob Hammond" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Rob Hammond" -__email__ = "robert.hammond@nrel.gov" +__email__ = "rob.hammond@nrel.gov" from copy import deepcopy @@ -69,7 +69,7 @@ def test_cable_not_found(): @pytest.mark.parametrize( - "config,num_full_strings,num_partial_strings,num_turbines_full_string,num_turbines_partial_string", + "config,num_full_strings,num_partial_strings,num_turbines_full_string,num_turbines_partial_string", # noqa: E501 ( (config_full_ring, 10, 0, 4, 0), (config_partial_ring, 12, 1, 4, 1), @@ -239,3 +239,11 @@ def test_floating_calculations(): with_cat_length = sim3.total_length assert with_cat_length < no_cat_length + + +def test_total_cable_cost(): + + array = ArraySystemDesign(config_full_ring) + array.run() + + assert array.total_cable_cost == pytest.approx(11969999, abs=1e0) diff --git a/tests/phases/design/test_cable.py b/tests/phases/design/test_cable.py index e1cf3024..3973aadf 100644 --- a/tests/phases/design/test_cable.py +++ b/tests/phases/design/test_cable.py @@ -3,7 +3,7 @@ __author__ = "Rob Hammond" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Rob Hammond" -__email__ = "robert.hammond@nrel.gov" +__email__ = "rob.hammond@nrel.gov" import copy @@ -18,7 +18,7 @@ "empty": {}, "passes": { "conductor_size": 400, - "current_capacity": 610, + "current_capacity": 600, "rated_voltage": 33, "ac_resistance": 0.06, "inductance": 0.375, @@ -26,6 +26,7 @@ "linear_density": 35, "cost_per_km": 300000, "name": "passes", + "cable_type": "HVAC", }, } @@ -124,6 +125,17 @@ def test_power_factor(): raise Exception("Invalid Power Factor.") +def test_cable_power(): + cable = Cable(cables["passes"]) + assert cable.cable_power == pytest.approx(34.1341, abs=2e-1) + + c = copy.deepcopy(cables["passes"]) + c["cable_type"] = "HVDC-monopole" + cable = Cable(c) + print(c) + assert cable.cable_power == pytest.approx(39.6, abs=2e-1) + + @pytest.mark.parametrize( "config", ( diff --git a/tests/phases/design/test_electrical_design.py b/tests/phases/design/test_electrical_design.py new file mode 100644 index 00000000..696e7af9 --- /dev/null +++ b/tests/phases/design/test_electrical_design.py @@ -0,0 +1,541 @@ +__author__ = "Jake Nunemaker, Sophie Bredenkamp" +__copyright__ = "Copyright 2020, National Renewable Energy Laboratory" +__maintainer__ = "Jake Nunemaker" +__email__ = "Jake.Nunemaker@nrel.gov" + + +import warnings +from copy import deepcopy +from itertools import product + +import pytest + +from ORBIT.core.library import extract_library_specs +from ORBIT.phases.design import ElectricalDesign, OffshoreSubstationDesign + +# OSS TESTING + +base = { + "site": {"distance_to_landfall": 50, "depth": 30}, + "plant": {"capacity": 500}, + "export_system_design": {"cables": "XLPE_630mm_220kV"}, + "landfall": {}, + "substation_design": { + "oss_pile_cost_rate": 1200, # need to set this for kwarg tests + }, +} + + +@pytest.mark.parametrize( + "distance_to_landfall,depth,plant_cap,cable", + product( + range(10, 201, 50), + range(10, 51, 10), + range(100, 2001, 500), + ["XLPE_630mm_220kV", "XLPE_800mm_220kV", "XLPE_1000mm_220kV"], + ), +) +def test_parameter_sweep(distance_to_landfall, depth, plant_cap, cable): + config = { + "site": {"distance_to_landfall": distance_to_landfall, "depth": depth}, + "plant": {"capacity": plant_cap}, + "export_system_design": {"cables": cable}, + "substation_design": {}, + } + + elect = ElectricalDesign(config) + elect.run() + + # Check valid substructure length + assert ( + 10 + <= elect._outputs["offshore_substation_substructure"]["length"] + <= 80 + ) + + # Check valid substructure mass + assert ( + 200 + <= elect._outputs["offshore_substation_substructure"]["mass"] + <= 2700 + ) + + # Check valid topside mass + assert 200 <= elect._outputs["offshore_substation_topside"]["mass"] <= 5500 + + # Check valid substation cost + assert 1e6 <= elect.total_substation_cost <= 1e9 + + +def test_detailed_design_length(): + """Ensure that the same # of output variables are used for a floating + and fixed offshore substation. + """ + + elect = ElectricalDesign(base) + elect.run() + + floating = deepcopy(base) + floating["substation_design"]["oss_substructure_type"] = "Floating" + elect_floating = ElectricalDesign(floating) + elect_floating.run() + + assert len(elect.detailed_output) == len(elect_floating.detailed_output) + + +def test_calc_substructure_mass_and_cost(): + + elect = ElectricalDesign(base) + elect.run() + + floating = deepcopy(base) + floating["substation_design"]["oss_substructure_type"] = "Floating" + elect_floating = ElectricalDesign(floating) + elect_floating.run() + + assert ( + elect.detailed_output["substation_substructure_cost"] + != elect_floating.detailed_output["substation_substructure_cost"] + ) + assert ( + elect.detailed_output["substation_substructure_mass"] + != elect_floating.detailed_output["substation_substructure_mass"] + ) + + +def test_calc_topside_mass_and_cost(): + # Test topside mass and cost for HVDC compared to HVDC-Monopole and + # HVDC-Bipole. + # + + config = deepcopy(base) + config["substation_design"]["topside_design_cost"] = 9999.9 + elect = ElectricalDesign(config) + elect.run() + + assert elect._outputs["num_substations"] == 1 + assert elect._outputs["offshore_substation_topside"][ + "unit_cost" + ] == pytest.approx(23683541, abs=1e2) + + mono_dc = deepcopy(base) + mono_dc["export_system_design"]["cables"] = "HVDC_2000mm_320kV" + elect_mono = ElectricalDesign(mono_dc) + elect_mono.run() + + assert ( + elect.detailed_output["substation_topside_mass"] + == elect_mono.detailed_output["substation_topside_mass"] + ) + assert ( + elect.detailed_output["substation_topside_cost"] + != elect_mono.detailed_output["substation_topside_cost"] + ) + + bi_dc = deepcopy(base) + bi_dc["export_system_design"]["cables"] = "HVDC_2500mm_525kV" + elect_bi = ElectricalDesign(bi_dc) + elect_bi.run() + + assert ( + elect.detailed_output["substation_topside_mass"] + == elect_bi.detailed_output["substation_topside_mass"] + ) + assert ( + elect.detailed_output["substation_topside_cost"] + != elect_bi.detailed_output["substation_topside_cost"] + ) + + assert ( + elect_bi.detailed_output["substation_topside_mass"] + == elect_mono.detailed_output["substation_topside_mass"] + ) + assert ( + elect_bi.detailed_output["substation_topside_cost"] + != elect_mono.detailed_output["substation_topside_cost"] + ) + + +def test_oss_substructure_kwargs(): + test_kwargs = { + "oss_substructure_type": "Floating", + "oss_substructure_cost_rate": 7250, + "oss_pile_cost_rate": 2500, + "num_substations": 4, + } + + elect = ElectricalDesign(base) + elect.run() + base_cost_total = elect.detailed_output["total_substation_cost"] + base_cost_subst = elect.detailed_output["substation_substructure_cost"] + + for k, v in test_kwargs.items(): + config = deepcopy(base) + config["substation_design"] = {} + config["substation_design"][k] = v + + elect = ElectricalDesign(config) + elect.run() + cost_total = elect.detailed_output["total_substation_cost"] + cost_subst = elect.detailed_output["substation_substructure_cost"] + + assert cost_total != base_cost_total + assert cost_subst != base_cost_subst + + +def test_ac_oss_kwargs(): + test_kwargs = { + "mpt_unit_cost": 13500, + # "topside_fab_cost_rate": 17000, # breaks + "topside_design_cost": 7e6, + "shunt_unit_cost": 40000, + "switchgear_cost": 15e5, + "backup_gen_cost": 2e6, + "workspace_cost": 3e6, + "other_ancillary_cost": 4e6, + "topside_assembly_factor": 0.09, + "num_substations": 4, + } + + elect = ElectricalDesign(base) + elect.run() + base_cost = elect.detailed_output["total_substation_cost"] + + for k, v in test_kwargs.items(): + config = deepcopy(base) + config["substation_design"] = {} + config["substation_design"][k] = v + + elect = ElectricalDesign(config) + elect.run() + cost = elect.detailed_output["total_substation_cost"] + print("passed") + assert cost != base_cost + + +def test_dc_oss_kwargs(): + test_kwargs = {"converter_cost": 300e6, "dc_breaker_cost": 300e6} + + dc_base = deepcopy(base) + dc_base["export_system_design"]["cables"] = "HVDC_2000mm_320kV" + elect = ElectricalDesign(dc_base) + elect.run() + base_cost = elect.detailed_output["total_substation_cost"] + + for k, v in test_kwargs.items(): + config = deepcopy(base) + config["export_system_design"]["cables"] = "HVDC_2000mm_320kV" + config["substation_design"] = {} + config["substation_design"][k] = v + + elect = ElectricalDesign(config) + elect.run() + cost = elect.detailed_output["total_substation_cost"] + + assert cost != base_cost + + +def test_new_old_hvac_substation(): + """Temporary test until ElectricalDesign is merged with new release.""" + + config = deepcopy(base) + config["export_system_design"] = {"cables": "HVDC_2000mm_320kV"} + config["plant"]["capacity"] = 1000 # MW + config["plant"]["num_turbines"] = 200 + config["turbine"] = {"turbine_rating": 5} + + config["export_system"] = {"cable": {"number": 5, "cable_type": "HVAC"}} + + new = ElectricalDesign(config) + new.run() + + old = OffshoreSubstationDesign(config) + old.run() + + # same values + assert new.num_substations == old.num_substations + assert new.topside_mass == old.topside_mass + assert new.ancillary_system_costs == old.ancillary_system_costs + assert new.substructure_mass == old.substructure_mass + + # different values + assert new.substation_cost != old.substation_cost + assert new.mpt_rating != old.mpt_rating + assert new.num_mpt != old.num_mpt + assert new.mpt_cost != old.mpt_cost + assert new.topside_cost != old.topside_cost + assert new.shunt_reactor_cost != old.shunt_reactor_cost + + +def test_hvac_substation(): + config = deepcopy(base) + + hvac = ElectricalDesign(config) + hvac.run() + + assert hvac.total_substation_cost == pytest.approx(134448256, abs=1e0) + + +def test_hvdc_substation(): + config = deepcopy(base) + config["export_system_design"] = {"cables": "HVDC_2000mm_320kV"} + elect = ElectricalDesign(config) + elect.run() + + assert elect.total_substation_cost == pytest.approx(451924714, abs=1e0) + + assert elect.converter_cost != 0 + assert elect.shunt_reactor_cost == 0 + assert elect.dc_breaker_cost != 0 + assert elect.switchgear_cost == 0 + assert elect.mpt_cost == 0 + # assert elect.num_cables / elect.num_converters == 2 # breaks + + config = deepcopy(base) + config["export_system_design"] = {"cables": "HVDC_2500mm_525kV"} + + elect = ElectricalDesign(config) + elect.run() + + assert elect.total_substation_cost == pytest.approx(802924714, abs=1e0) + + assert elect.converter_cost != 0 + assert elect.shunt_reactor_cost == 0 + assert elect.dc_breaker_cost != 0 + assert elect.switchgear_cost == 0 + assert elect.mpt_cost == 0 + # assert elect.num_cables / elect.num_converters == 2 # breaks + + +def test_onshore_substation(): + config = deepcopy(base) + elect = ElectricalDesign(config) + elect.run() + assert elect.onshore_compensation_cost != 0.0 + assert elect.onshore_cost == pytest.approx(95.487e6, abs=1e2) # 109.32e6 + + config_mono = deepcopy(config) + config_mono["export_system_design"] = {"cables": "HVDC_2000mm_320kV"} + o_monelect = ElectricalDesign(config_mono) + o_monelect.run() + assert o_monelect.onshore_compensation_cost == 0.0 + assert o_monelect.onshore_cost == 244.3e6 + + config_bi = deepcopy(config) + config_bi["export_system_design"] = {"cables": "HVDC_2500mm_525kV"} + o_bi = ElectricalDesign(config_bi) + o_bi.run() + assert o_bi.onshore_compensation_cost == 0.0 + assert o_bi.onshore_cost == 450e6 + + +# EXPORT CABLE TESTING + + +def test_export_kwargs(): + test_kwargs = { + "num_redundant": 2, + "touchdown_distance": 50, + "percent_added_length": 0.15, + # "interconnection_distance": 6, + } + + elect = ElectricalDesign(base) + elect.run() + base_cost = elect.total_cost + + for k, v in test_kwargs.items(): + config = deepcopy(base) + config["export_system_design"] = {"cables": "XLPE_630mm_220kV"} + config["export_system_design"][k] = v + + elect = ElectricalDesign(config) + elect.run() + cost = elect.total_cost + + assert cost != base_cost + + +config = extract_library_specs("config", "export_design") + + +def test_export_system_creation(): + export = ElectricalDesign(config) + export.run() + + assert isinstance(export.num_cables, int) + assert export.length + assert export.mass + assert export.cable + assert export.total_length + assert export.total_mass + assert export.num_substations + assert export.topside_mass + assert export.substructure_mass + + +def test_number_cables(): + export = ElectricalDesign(config) + export.run() + + assert export.num_cables == 9 + + +def test_cable_length(): + export = ElectricalDesign(config) + export.run() + + length = (0.02 + 3 + 30) * 1.01 + assert export.length == length + + +def test_cable_mass(): + export = ElectricalDesign(config) + export.run() + + length = (0.02 + 3 + 30) * 1.01 + mass = length * export.cable.linear_density + assert export.mass == pytest.approx(mass, abs=1e-6) + + +def test_total_cable(): + export = ElectricalDesign(config) + export.run() + + length = 0.02 + 3 + 30 + length += length * 0.01 + mass = length * export.cable.linear_density + assert export.total_mass == pytest.approx(mass * 9, abs=1e-10) + assert export.total_length == pytest.approx(length * 9, abs=1e-10) + + +def test_total_cable_cost(): + export = ElectricalDesign(config) + export.run() + + assert export.total_cable_cost == 135068310.0 + + +def test_cables_property(): + export = ElectricalDesign(config) + export.run() + + assert ( + export.sections_cables == export.cable.name + ).sum() == export.num_cables + + +def test_cable_lengths_property(): + export = ElectricalDesign(config) + export.run() + + cable_name = export.cable.name + assert ( + export.cable_lengths_by_type[cable_name] == export.length + ).sum() == export.num_cables + + +def test_total_cable_len_property(): + export = ElectricalDesign(config) + export.run() + + cable_name = export.cable.name + assert export.total_cable_length_by_type[cable_name] == pytest.approx( + export.total_length, + abs=1e-10, + ) + + +def test_design_result(): + export = ElectricalDesign(config) + export.run() + + _ = export.cable.name + cables = export.design_result["export_system"]["cable"] + + assert cables["sections"] == [export.length] + assert cables["number"] == 9 + assert cables["linear_density"] == export.cable.linear_density + + +def test_floating_length_calculations(): + base = deepcopy(config) + base["site"]["depth"] = 250 + base["export_system_design"]["touchdown_distance"] = 0 + + sim = ElectricalDesign(base) + sim.run() + + base_length = sim.total_length + + with_cat = deepcopy(config) + with_cat["site"]["depth"] = 250 + + new = ElectricalDesign(with_cat) + new.run() + + assert new.total_length < base_length + + +def test_HVDC_cable(): + base = deepcopy(config) + base["export_system_design"] = {"cables": "HVDC_2000mm_320kV"} + + sim = ElectricalDesign(base) + sim.run() + + assert sim.num_cables % 2 == 0 + + base = deepcopy(config) + base["export_system_design"] = {"cables": "HVDC_2500mm_525kV"} + + sim = ElectricalDesign(base) + sim.run() + + assert sim.num_cables % 2 == 0 + + +def test_num_crossing(): + base_sim = ElectricalDesign(config) + base_sim.run() + + cross = deepcopy(config) + cross["export_system_design"]["cable_crossings"] = {"crossing_number": 2} + + cross_sim = ElectricalDesign(cross) + cross_sim.run() + + assert cross_sim.crossing_cost != base_sim.crossing_cost + + +def test_cost_crossing(): + base_sim = ElectricalDesign(config) + base_sim.run() + + cross = deepcopy(config) + cross["export_system_design"]["cable_crossings"] = { + "crossing_number": 1, + "crossing_unit_cost": 100000, + } + + cross_sim = ElectricalDesign(cross) + cross_sim.run() + + assert cross_sim.crossing_cost != base_sim.crossing_cost + + +def test_deprecated_landfall(): + + base = deepcopy(config) + + with warnings.catch_warnings(): + warnings.simplefilter("error") + sim = ElectricalDesign(base) + sim.run() + + deprecated = deepcopy(base) + deprecated["landfall"] = {"interconnection_distance": 4} + + with pytest.deprecated_call(): + sim = ElectricalDesign(deprecated) + sim.run() diff --git a/tests/phases/design/test_export_system_design.py b/tests/phases/design/test_export_system_design.py index 9db78fed..9ef801e1 100644 --- a/tests/phases/design/test_export_system_design.py +++ b/tests/phases/design/test_export_system_design.py @@ -3,8 +3,9 @@ __author__ = "Rob Hammond" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Rob Hammond" -__email__ = "robert.hammond@nrel.gov" +__email__ = "rob.hammond@nrel.gov" +import warnings from copy import deepcopy import pytest @@ -29,9 +30,10 @@ def test_export_system_creation(): def test_number_cables(): export = ExportSystemDesign(config) + print(export.config) export.run() - assert export.num_cables == 11 + assert export.num_cables == 9 def test_cable_length(): @@ -48,7 +50,7 @@ def test_cable_mass(): length = (0.02 + 3 + 30) * 1.01 mass = length * export.cable.linear_density - assert export.mass == mass + assert export.mass == pytest.approx(mass, abs=1e-10) def test_total_cable(): @@ -58,8 +60,8 @@ def test_total_cable(): length = 0.02 + 3 + 30 length += length * 0.01 mass = length * export.cable.linear_density - assert export.total_mass == pytest.approx(mass * 11, abs=1e-10) - assert export.total_length == pytest.approx(length * 11, abs=1e-10) + assert export.total_mass == pytest.approx(mass * 9, abs=1e-10) + assert export.total_length == pytest.approx(length * 9, abs=1e-10) def test_cables_property(): @@ -87,7 +89,8 @@ def test_total_cable_len_property(): cable_name = export.cable.name assert export.total_cable_length_by_type[cable_name] == pytest.approx( - export.total_length, abs=1e-10 + export.total_length, + abs=1e-10, ) @@ -97,10 +100,12 @@ def test_design_result(): _ = export.cable.name cables = export.design_result["export_system"]["cable"] + # landfall = export.design_results["export_system"]["landfall"] assert cables["sections"] == [export.length] - assert cables["number"] == 11 + assert cables["number"] == 9 assert cables["linear_density"] == export.cable.linear_density + # assert landfall["interconnection_distance"] == 3 def test_floating_length_calculations(): @@ -121,3 +126,20 @@ def test_floating_length_calculations(): new.run() assert new.total_length < base_length + + +def test_deprecated_landfall(): + + base = deepcopy(config) + + with warnings.catch_warnings(): + warnings.simplefilter("error") + sim = ExportSystemDesign(base) + sim.run() + + deprecated = deepcopy(base) + deprecated["landfall"] = {"interconnection_distance": 4} + + with pytest.deprecated_call(): + sim = ExportSystemDesign(deprecated) + sim.run() diff --git a/tests/phases/design/test_monopile_design.py b/tests/phases/design/test_monopile_design.py index 0762b46b..436879e3 100644 --- a/tests/phases/design/test_monopile_design.py +++ b/tests/phases/design/test_monopile_design.py @@ -117,3 +117,14 @@ def test_transition_piece_kwargs(): results = m._outputs["transition_piece"] assert results != base_results + + +def test_total_cost(): + """Simple unit test to track total cost of base configuration.""" + + mono = MonopileDesign(base) + mono.run() + + print(mono.total_cost) + + assert mono.total_cost == pytest.approx(68833066, abs=1e0) diff --git a/tests/phases/design/test_mooring_system_design.py b/tests/phases/design/test_mooring_system_design.py index 88a7a747..7a2b87c0 100644 --- a/tests/phases/design/test_mooring_system_design.py +++ b/tests/phases/design/test_mooring_system_design.py @@ -16,6 +16,7 @@ "site": {"depth": 200}, "turbine": {"turbine_rating": 6}, "plant": {"num_turbines": 50}, + "mooring_system_design": {}, } @@ -25,40 +26,144 @@ def test_depth_sweep(depth): config = deepcopy(base) config["site"]["depth"] = depth - m = MooringSystemDesign(config) - m.run() + moor = MooringSystemDesign(config) + moor.run() - assert m.design_result - assert m.total_cost + assert moor.design_result + assert moor.total_cost @pytest.mark.parametrize("rating", range(3, 15, 1)) -def test_rating_sweeip(rating): +def test_rating_sweep(rating): config = deepcopy(base) config["turbine"]["turbine_rating"] = rating - m = MooringSystemDesign(config) - m.run() + moor = MooringSystemDesign(config) + moor.run() - assert m.design_result - assert m.total_cost + assert moor.design_result + assert moor.total_cost + + +def test_mooring_system_defaults(): + + moor_base = MooringSystemDesign(base) + moor_base.run() + + base_cost = moor_base.detailed_output["system_cost"] + + config_defs = deepcopy(base) + config_defs["mooring_system_design"] = {} + config_defs["mooring_system_design"]["mooring_type"] = "Catenary" + config_defs["mooring_system_design"]["anchor_type"] = "Suction Pile" + + moor_defs = MooringSystemDesign(config_defs) + moor_defs.run() + + assert moor_defs.detailed_output["system_cost"] == base_cost + + +def test_catenary_mooring_system_kwargs(): + + test_kwargs = { + "num_lines": 6, + "anchor_type": "Drag Embedment", + "mooring_line_cost_rate": 2500, + } + + moor = MooringSystemDesign(base) + moor.run() + + base_cost = moor.detailed_output["system_cost"] + + assert base_cost == pytest.approx(76173891, abs=1e0) + + for k, v in test_kwargs.items(): + config = deepcopy(base) + config["mooring_system_design"] = {} + config["mooring_system_design"][k] = v + + moor = MooringSystemDesign(config) + moor.run() + + assert moor.detailed_output["system_cost"] != base_cost + + +def test_semitaut_mooring_system_kwargs(): + + semi_base = deepcopy(base) + semi_base["mooring_system_design"]["mooring_type"] = "SemiTaut" + + test_kwargs = { + "num_lines": 6, + "anchor_type": "Drag Embedment", + "chain_density": 10000, + "rope_density": 1000, + } + + moor = MooringSystemDesign(semi_base) + moor.run() + + base_cost = moor.detailed_output["system_cost"] + + assert base_cost == pytest.approx(102227311, abs=1e0) + + for k, v in test_kwargs.items(): + config = deepcopy(semi_base) + config["mooring_system_design"] = {} + config["mooring_system_design"][k] = v + + moor = MooringSystemDesign(config) + moor.run() + + assert moor.detailed_output["system_cost"] != base_cost + + +def test_tlp_mooring_system_kwargs(): + + tlp_base = deepcopy(base) + tlp_base["mooring_system_design"]["mooring_type"] = "TLP" + + test_kwargs = { + "num_lines": 6, + "anchor_type": "Drag Embedment", + "mooring_line_cost_rate": 2500, + "draft_depth": 10, + } + + moor = MooringSystemDesign(tlp_base) + moor.run() + + base_cost = moor.detailed_output["system_cost"] + + assert base_cost == pytest.approx(57633231, abs=1e0) + + for k, v in test_kwargs.items(): + config = deepcopy(tlp_base) + config["mooring_system_design"] = {} + config["mooring_system_design"][k] = v + + moor = MooringSystemDesign(config) + moor.run() + + assert moor.detailed_output["system_cost"] != base_cost def test_drag_embedment_fixed_length(): - m = MooringSystemDesign(base) - m.run() + moor = MooringSystemDesign(base) + moor.run() - baseline = m.line_length + baseline = moor.line_length default = deepcopy(base) default["mooring_system_design"] = {"anchor_type": "Drag Embedment"} - m = MooringSystemDesign(default) - m.run() + moor = MooringSystemDesign(default) + moor.run() - with_default = m.line_length + with_default = moor.line_length assert with_default > baseline custom = deepcopy(base) @@ -67,11 +172,11 @@ def test_drag_embedment_fixed_length(): "drag_embedment_fixed_length": 1000, } - m = MooringSystemDesign(custom) - m.run() + moor = MooringSystemDesign(custom) + moor.run() - assert m.line_length > with_default - assert m.line_length > baseline + assert moor.line_length > with_default + assert moor.line_length > baseline def test_custom_num_lines(): @@ -79,7 +184,7 @@ def test_custom_num_lines(): config = deepcopy(base) config["mooring_system_design"] = {"num_lines": 5} - m = MooringSystemDesign(config) - m.run() + moor = MooringSystemDesign(config) + moor.run() - assert m.design_result["mooring_system"]["num_lines"] == 5 + assert moor.design_result["mooring_system"]["num_lines"] == 5 diff --git a/tests/phases/design/test_oss_design.py b/tests/phases/design/test_oss_design.py index b2dd6316..619011a7 100644 --- a/tests/phases/design/test_oss_design.py +++ b/tests/phases/design/test_oss_design.py @@ -16,6 +16,7 @@ "plant": {"num_turbines": 50}, "turbine": {"turbine_rating": 6}, "substation_design": {}, + "export_system": {"cable": {"number": 3, "cable_type": "HVAC"}}, } @@ -30,6 +31,7 @@ def test_parameter_sweep(depth, num_turbines, turbine_rating): "plant": {"num_turbines": num_turbines}, "turbine": {"turbine_rating": turbine_rating}, "substation_design": {}, + "export_system": {"cable": {"number": 3, "cable_type": "HVAC"}}, } o = OffshoreSubstationDesign(config) @@ -62,6 +64,7 @@ def test_oss_kwargs(): "workspace_cost": 3e6, "other_ancillary_cost": 4e6, "topside_assembly_factor": 0.08, + "oss_substructure_type": "Floating", "oss_substructure_cost_rate": 7250, "oss_pile_cost_rate": 2500, "num_substations": 2, @@ -75,6 +78,7 @@ def test_oss_kwargs(): config = deepcopy(base) config["substation_design"] = {} + config["substation_design"]["oss_pile_cost_rate"] = 1500 config["substation_design"][k] = v o = OffshoreSubstationDesign(config) @@ -82,3 +86,11 @@ def test_oss_kwargs(): cost = o.total_cost assert cost != base_cost + + +def test_total_cost(): + + oss = OffshoreSubstationDesign(base) + oss.run() + + assert oss.total_cost == pytest.approx(158022050, abs=1e0) diff --git a/tests/phases/design/test_scour_protection_design.py b/tests/phases/design/test_scour_protection_design.py index 301e5894..88753a3c 100644 --- a/tests/phases/design/test_scour_protection_design.py +++ b/tests/phases/design/test_scour_protection_design.py @@ -3,12 +3,9 @@ __author__ = "Rob Hammond" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Rob Hammond" -__email__ = "robert.hammond@nrel.gov" +__email__ = "rob.hammond@nrel.gov" -from copy import deepcopy - -import numpy as np import pytest from ORBIT.phases.design import ScourProtectionDesign diff --git a/tests/phases/design/test_semisubmersible_design.py b/tests/phases/design/test_semisubmersible_design.py index 7c710fb9..2facbfc1 100644 --- a/tests/phases/design/test_semisubmersible_design.py +++ b/tests/phases/design/test_semisubmersible_design.py @@ -20,7 +20,8 @@ @pytest.mark.parametrize( - "depth,turbine_rating", product(range(100, 1201, 200), range(3, 15, 1)) + "depth,turbine_rating", + product(range(100, 1201, 200), range(3, 15, 1)), ) def test_parameter_sweep(depth, turbine_rating): @@ -64,3 +65,11 @@ def test_design_kwargs(): cost = s.total_cost assert cost != base_cost + + +def test_total_cost(): + + semi = SemiSubmersibleDesign(base) + semi.run() + + assert semi.total_cost == pytest.approx(630709636, abs=1e0) diff --git a/tests/phases/design/test_spar_design.py b/tests/phases/design/test_spar_design.py index 393cf7c1..c37b21d7 100644 --- a/tests/phases/design/test_spar_design.py +++ b/tests/phases/design/test_spar_design.py @@ -20,7 +20,8 @@ @pytest.mark.parametrize( - "depth,turbine_rating", product(range(100, 1201, 200), range(3, 15, 1)) + "depth,turbine_rating", + product(range(100, 1201, 200), range(3, 15, 1)), ) def test_parameter_sweep(depth, turbine_rating): @@ -64,3 +65,11 @@ def test_design_kwargs(): cost = s.total_cost assert cost != base_cost + + +def test_total_cost(): + + spar = SparDesign(base) + spar.run() + + assert spar.total_cost == pytest.approx(698569358, abs=1e0) diff --git a/tests/phases/install/cable_install/test_array_install.py b/tests/phases/install/cable_install/test_array_install.py index 5a01c14b..81c6ec3c 100644 --- a/tests/phases/install/cable_install/test_array_install.py +++ b/tests/phases/install/cable_install/test_array_install.py @@ -1,6 +1,4 @@ -""" -Testing framework for the `ArrayCableInstallation` class. -""" +"""Testing framework for the `ArrayCableInstallation` class.""" __author__ = ["Rob Hammond", "Jake Nunemaker"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" @@ -25,19 +23,21 @@ @pytest.mark.parametrize( - "config", (base_config, simul_config), ids=["separate", "simultaneous"] + "config", + (base_config, simul_config), + ids=["separate", "simultaneous"], ) def test_simulation_setup(config): - sim = ArrayCableInstallation(config) assert sim.env @pytest.mark.parametrize( - "config", (base_config, simul_config), ids=["separate", "simultaneous"] + "config", + (base_config, simul_config), + ids=["separate", "simultaneous"], ) def test_vessel_initialization(config): - sim = ArrayCableInstallation(config) assert sim.install_vessel assert sim.install_vessel.cable_storage @@ -47,13 +47,16 @@ def test_vessel_initialization(config): @pytest.mark.parametrize( - "config", (base_config, simul_config), ids=["separate", "simultaneous"] + "config", + (base_config, simul_config), + ids=["separate", "simultaneous"], ) @pytest.mark.parametrize( - "weather", (None, test_weather), ids=["no_weather", "test_weather"] + "weather", + (None, test_weather), + ids=["no_weather", "test_weather"], ) def test_for_complete_logging(config, weather): - sim = ArrayCableInstallation(config, weather=weather) sim.run() @@ -66,30 +69,27 @@ def test_for_complete_logging(config, weather): _df = _df.assign(shift=(_df["time"] - _df["time"].shift(1))) assert (_df["shift"] - _df["duration"]).fillna(0.0).abs().max() < 1e-9 - assert ~df["cost"].isnull().any() + assert ~df["cost"].isna().any() _ = sim.agent_efficiencies _ = sim.detailed_output def test_simultaneous_speed_kwargs(): - sim = ArrayCableInstallation(simul_config) sim.run() baseline = sim.total_phase_time - key = "cable_lay_bury_speed" - val = pt[key] * 0.1 - - kwargs = {key: val} + sim.install_vessel._vessel_specs["cable_lay_bury_speed"] = ( + sim.install_vessel._vessel_specs["cable_lay_bury_speed"] * 0.1 + ) - sim = ArrayCableInstallation(simul_config, **kwargs) + sim = ArrayCableInstallation(simul_config) sim.run() assert sim.total_phase_time > baseline def test_separate_speed_kwargs(): - sim = ArrayCableInstallation(base_config) sim.run() df = pd.DataFrame(sim.env.actions) @@ -114,7 +114,6 @@ def test_separate_speed_kwargs(): def test_kwargs_for_array_install(): - sim = ArrayCableInstallation(base_config) sim.run() baseline = sim.total_phase_time @@ -131,7 +130,6 @@ def test_kwargs_for_array_install(): failed = [] for kw in keywords: - default = pt[kw] if "speed" in kw: @@ -163,7 +161,6 @@ def test_kwargs_for_array_install(): def test_kwargs_for_array_install_in_ProjectManager(): - base = deepcopy(base_config) base["install_phases"] = ["ArrayCableInstallation"] @@ -183,7 +180,6 @@ def test_kwargs_for_array_install_in_ProjectManager(): failed = [] for kw in keywords: - default = pt[kw] if "speed" in kw: diff --git a/tests/phases/install/cable_install/test_cable_tasks.py b/tests/phases/install/cable_install/test_cable_tasks.py index 3ab42d15..c416afd5 100644 --- a/tests/phases/install/cable_install/test_cable_tasks.py +++ b/tests/phases/install/cable_install/test_cable_tasks.py @@ -1,6 +1,4 @@ -""" -Testing framework for common cable installation tasks. -""" +"""Testing framework for common cable installation tasks.""" __author__ = "Jake Nunemaker" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" @@ -14,7 +12,6 @@ from ORBIT.phases.install.cable_install.common import ( tow_plow, lay_cable, - bury_cable, prep_cable, pull_winch, lower_cable, diff --git a/tests/phases/install/cable_install/test_export_install.py b/tests/phases/install/cable_install/test_export_install.py index 34669075..044fe60f 100644 --- a/tests/phases/install/cable_install/test_export_install.py +++ b/tests/phases/install/cable_install/test_export_install.py @@ -1,6 +1,4 @@ -""" -Testing framework for the `ExportCableInstallation` class. -""" +"""Testing framework for the `ExportCableInstallation` class.""" __author__ = ["Rob Hammond", "Jake Nunemaker"] __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" @@ -8,6 +6,7 @@ __email__ = "Jake.Nunemaker@nrel.gov" +import warnings from copy import deepcopy import pandas as pd @@ -25,10 +24,11 @@ @pytest.mark.parametrize( - "config", (base_config, simul_config), ids=["separate", "simultaneous"] + "config", + (base_config, simul_config), + ids=["separate", "simultaneous"], ) def test_simulation_setup(config): - sim = ExportCableInstallation(config) assert sim.env assert sim.cable @@ -39,10 +39,11 @@ def test_simulation_setup(config): @pytest.mark.parametrize( - "config", (base_config, simul_config), ids=["separate", "simultaneous"] + "config", + (base_config, simul_config), + ids=["separate", "simultaneous"], ) def test_vessel_initialization(config): - sim = ExportCableInstallation(config) assert sim.install_vessel assert sim.install_vessel.cable_storage @@ -52,13 +53,16 @@ def test_vessel_initialization(config): @pytest.mark.parametrize( - "config", (base_config, simul_config), ids=["separate", "simultaneous"] + "config", + (base_config, simul_config), + ids=["separate", "simultaneous"], ) @pytest.mark.parametrize( - "weather", (None, test_weather), ids=["no_weather", "test_weather"] + "weather", + (None, test_weather), + ids=["no_weather", "test_weather"], ) def test_for_complete_logging(config, weather): - sim = ExportCableInstallation(config, weather=weather) sim.run() @@ -71,30 +75,27 @@ def test_for_complete_logging(config, weather): _df = _df.assign(shift=(_df["time"] - _df["time"].shift(1))) assert (_df["shift"] - _df["duration"]).fillna(0.0).abs().max() < 1e-9 - assert ~df["cost"].isnull().any() + assert ~df["cost"].isna().any() _ = sim.agent_efficiencies _ = sim.detailed_output def test_simultaneous_speed_kwargs(): - sim = ExportCableInstallation(simul_config) sim.run() baseline = sim.total_phase_time - key = "cable_lay_bury_speed" - val = pt[key] * 0.1 + sim.install_vessel._vessel_specs["cable_lay_bury_speed"] = ( + sim.install_vessel._vessel_specs["cable_lay_bury_speed"] * 0.1 + ) - kwargs = {key: val} - - sim = ExportCableInstallation(simul_config, **kwargs) + sim = ExportCableInstallation(simul_config) sim.run() assert sim.total_phase_time > baseline def test_separate_speed_kwargs(): - sim = ExportCableInstallation(base_config) sim.run() df = pd.DataFrame(sim.env.actions) @@ -119,9 +120,9 @@ def test_separate_speed_kwargs(): def test_kwargs_for_export_install(): - new_export_system = { - "cable": {"linear_density": 50.0, "sections": [1000], "number": 1} + "cable": {"linear_density": 50.0, "sections": [1000], "number": 1}, + "system_cost": 200e6, } new_site = {"distance": 50, "depth": 20} @@ -134,7 +135,6 @@ def test_kwargs_for_export_install(): baseline = sim.total_phase_time keywords = [ - "onshore_construction_time", "cable_load_time", "site_position_time", "cable_prep_time", @@ -150,7 +150,6 @@ def test_kwargs_for_export_install(): failed = [] for kw in keywords: - default = pt[kw] if "speed" in kw: @@ -182,7 +181,6 @@ def test_kwargs_for_export_install(): def test_kwargs_for_export_install_in_ProjectManager(): - new_export_system = { "cable": {"linear_density": 50.0, "sections": [1000], "number": 1}, "system_cost": 200e6, @@ -198,7 +196,6 @@ def test_kwargs_for_export_install_in_ProjectManager(): baseline = project.phase_times["ExportCableInstallation"] keywords = [ - "onshore_construction_time", "cable_load_time", "site_position_time", "cable_prep_time", @@ -214,7 +211,6 @@ def test_kwargs_for_export_install_in_ProjectManager(): failed = [] for kw in keywords: - default = pt[kw] if "speed" in kw: @@ -246,3 +242,48 @@ def test_kwargs_for_export_install_in_ProjectManager(): else: assert True + + +def test_deprecated_values(): + """Temporary test for deprecated values.""" + + base = deepcopy(base_config) + + with warnings.catch_warnings(): + warnings.simplefilter("error") + sim = ExportCableInstallation(base) + sim.run() + + deprecated = deepcopy(base_config) + + deprecated["landfall"] = {"trench_length": 4} + new_export_system = { + "cable": {"linear_density": 50.0, "sections": [1000], "number": 1}, + "system_cost": 200e6, + "interconnection_distance": 5, + } + + deprecated["export_system"] = new_export_system + + with pytest.deprecated_call(): + + # sim = ExportCableInstallation(base) + # sim.run() + + sim = ExportCableInstallation(deprecated) + sim.run() + + # assert len(w) == 2 + # assert issubclass(w[0].category, DeprecationWarning) + # assert ( + # str(w[0].message) + # == "landfall dictionary will be deprecated and moved \ + # into [export_system][landfall]." + # ) + + # assert issubclass(w[1].category, DeprecationWarning) + # assert ( + # str(w[1].message) + # == "[export_system][interconnection] will be deprecated and \ + # moved into [export_system][landfall][interconnection]." + # ) diff --git a/tests/phases/install/jacket_install/test_jacket_install.py b/tests/phases/install/jacket_install/test_jacket_install.py index 6811e631..f6eb7a52 100644 --- a/tests/phases/install/jacket_install/test_jacket_install.py +++ b/tests/phases/install/jacket_install/test_jacket_install.py @@ -11,7 +11,6 @@ import pandas as pd import pytest -from ORBIT import ProjectManager from tests.data import test_weather from ORBIT.core.library import extract_library_specs from ORBIT.core.defaults import process_times as pt @@ -71,7 +70,9 @@ def test_vessel_initialization(config): ids=["wtiv_only", "single_feeder", "multi_feeder"], ) @pytest.mark.parametrize( - "weather", (None, test_weather), ids=["no_weather", "test_weather"] + "weather", + (None, test_weather), + ids=["no_weather", "test_weather"], ) def test_for_complete_logging(weather, config): @@ -86,7 +87,7 @@ def test_for_complete_logging(weather, config): _df = _df.assign(shift=(_df["time"] - _df["time"].shift(1))) assert (_df["shift"] - _df["duration"]).abs().max() < 1e-9 - assert ~df["cost"].isnull().any() + assert ~df["cost"].isna().any() _ = sim.agent_efficiencies _ = sim.detailed_output diff --git a/tests/phases/install/monopile_install/test_monopile_install.py b/tests/phases/install/monopile_install/test_monopile_install.py index 57538063..15fa3c42 100644 --- a/tests/phases/install/monopile_install/test_monopile_install.py +++ b/tests/phases/install/monopile_install/test_monopile_install.py @@ -71,7 +71,9 @@ def test_vessel_initialization(config): ids=["wtiv_only", "single_feeder", "multi_feeder"], ) @pytest.mark.parametrize( - "weather", (None, test_weather), ids=["no_weather", "test_weather"] + "weather", + (None, test_weather), + ids=["no_weather", "test_weather"], ) def test_for_complete_logging(weather, config): @@ -86,7 +88,7 @@ def test_for_complete_logging(weather, config): _df = _df.assign(shift=(_df["time"] - _df["time"].shift(1))) assert (_df["shift"] - _df["duration"]).abs().max() < 1e-9 - assert ~df["cost"].isnull().any() + assert ~df["cost"].isna().any() _ = sim.agent_efficiencies _ = sim.detailed_output @@ -207,10 +209,10 @@ def test_grout_kwargs(): sim = MonopileInstallation(config_wtiv) sim.run() - assert "Bolt TP" in list([a["action"] for a in sim.env.actions]) + assert "Bolt TP" in [a["action"] for a in sim.env.actions] sim = MonopileInstallation(config_wtiv, tp_connection_type="grouted") sim.run() - assert "Pump TP Grout" in list([a["action"] for a in sim.env.actions]) - assert "Cure TP Grout" in list([a["action"] for a in sim.env.actions]) + assert "Pump TP Grout" in [a["action"] for a in sim.env.actions] + assert "Cure TP Grout" in [a["action"] for a in sim.env.actions] diff --git a/tests/phases/install/monopile_install/test_monopile_tasks.py b/tests/phases/install/monopile_install/test_monopile_tasks.py index bff023f5..c43b8aa0 100644 --- a/tests/phases/install/monopile_install/test_monopile_tasks.py +++ b/tests/phases/install/monopile_install/test_monopile_tasks.py @@ -1,6 +1,4 @@ -""" -Testing framework for common monopile installation tasks. -""" +"""Testing framework for common monopile installation tasks.""" __author__ = "Jake Nunemaker" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" diff --git a/tests/phases/install/mooring_install/test_mooring_install.py b/tests/phases/install/mooring_install/test_mooring_install.py index 116f7558..aabf1330 100644 --- a/tests/phases/install/mooring_install/test_mooring_install.py +++ b/tests/phases/install/mooring_install/test_mooring_install.py @@ -1,6 +1,4 @@ -""" -Testing framework for the `MooringSystemInstallation` class. -""" +"""Testing framework for the `MooringSystemInstallation` class.""" __author__ = "Jake Nunemaker" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" @@ -33,7 +31,9 @@ def test_simulation_creation(): @pytest.mark.parametrize( - "weather", (None, test_weather), ids=["no_weather", "test_weather"] + "weather", + (None, test_weather), + ids=["no_weather", "test_weather"], ) def test_full_run_logging(weather): sim = MooringSystemInstallation(config, weather=weather) @@ -48,7 +48,7 @@ def test_full_run_logging(weather): assert (df.duration - df["shift"]).fillna(0.0).abs().max() < 1e-9 assert df[df.action == "Install Mooring Line"].shape[0] == lines - assert ~df["cost"].isnull().any() + assert ~df["cost"].isna().any() _ = sim.agent_efficiencies _ = sim.detailed_output diff --git a/tests/phases/install/oss_install/test_oss_install.py b/tests/phases/install/oss_install/test_oss_install.py index be32be3d..bcbec6c9 100644 --- a/tests/phases/install/oss_install/test_oss_install.py +++ b/tests/phases/install/oss_install/test_oss_install.py @@ -19,7 +19,6 @@ FloatingSubstationInstallation, OffshoreSubstationInstallation, ) -from ORBIT.core.exceptions import MissingComponent config_single = extract_library_specs("config", "oss_install") config_floating = extract_library_specs("config", "floating_oss_install") @@ -66,8 +65,7 @@ def test_vessel_initialization(config): js = sim.oss_vessel._jacksys_specs dp = sim.oss_vessel._dp_specs - if not any([js, dp]): - assert False + assert any([js, dp]) for feeder in sim.feeders: assert feeder.storage @@ -79,7 +77,9 @@ def test_vessel_initialization(config): ids=["single_feeder", "multi_feeder"], ) @pytest.mark.parametrize( - "weather", (None, test_weather), ids=["no_weather", "test_weather"] + "weather", + (None, test_weather), + ids=["no_weather", "test_weather"], ) def test_for_complete_logging(weather, config): @@ -95,13 +95,15 @@ def test_for_complete_logging(weather, config): _df = _df.assign(shift=(_df["time"] - _df["time"].shift(1))) assert (_df["shift"] - _df["duration"]).fillna(0.0).abs().max() < 1e-9 - assert ~df["cost"].isnull().any() + assert ~df["cost"].isna().any() _ = sim.agent_efficiencies _ = sim.detailed_output @pytest.mark.parametrize( - "weather", (None, test_weather), ids=["no_weather", "test_weather"] + "weather", + (None, test_weather), + ids=["no_weather", "test_weather"], ) def test_for_complete_logging_floating(weather): diff --git a/tests/phases/install/oss_install/test_oss_tasks.py b/tests/phases/install/oss_install/test_oss_tasks.py index 67a28c40..c4152fe3 100644 --- a/tests/phases/install/oss_install/test_oss_tasks.py +++ b/tests/phases/install/oss_install/test_oss_tasks.py @@ -1,6 +1,4 @@ -""" -Testing framework for common oss installation tasks. -""" +"""Testing framework for common oss installation tasks.""" __author__ = "Jake Nunemaker" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" diff --git a/tests/phases/install/quayside_assembly_tow/test_common.py b/tests/phases/install/quayside_assembly_tow/test_common.py index 00fa2b4e..fc1801e0 100644 --- a/tests/phases/install/quayside_assembly_tow/test_common.py +++ b/tests/phases/install/quayside_assembly_tow/test_common.py @@ -1,4 +1,4 @@ -"""Tests for common infrastructure for quayside assembly tow-out simulations""" +"""Tests for the common infrastructure for the quayside assembly tow-out.""" __author__ = "Jake Nunemaker" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" @@ -59,12 +59,15 @@ def test_TurbineAssemblyLine(env, num, assigned): feed = WetStorage(env, capacity=float("inf")) target = WetStorage(env, capacity=float("inf")) - for i in assigned: + for _ in assigned: feed.put(0) for a in range(num): assembly = TurbineAssemblyLine( - feed, target, {"tower": {"sections": 1}}, a + 1 + feed, + target, + {"tower": {"sections": 1}}, + a + 1, ) env.register(assembly) assembly.start() @@ -106,7 +109,10 @@ def test_Sub_to_Turbine_assembly_interaction(env, sub_lines, turb_lines): for a in range(turb_lines): assembly = TurbineAssemblyLine( - feed, target, {"tower": {"sections": 1}}, a + 1 + feed, + target, + {"tower": {"sections": 1}}, + a + 1, ) env.register(assembly) assembly.start() diff --git a/tests/phases/install/quayside_assembly_tow/test_gravity_based.py b/tests/phases/install/quayside_assembly_tow/test_gravity_based.py index dafad84b..d2dfce71 100644 --- a/tests/phases/install/quayside_assembly_tow/test_gravity_based.py +++ b/tests/phases/install/quayside_assembly_tow/test_gravity_based.py @@ -1,10 +1,11 @@ -"""Tests for the `GravityBasedInstallation` class and related infrastructure.""" +"""Tests for the `GravityBasedInstallation` class and infrastructure.""" __author__ = "Jake Nunemaker" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" __maintainer__ = "Jake Nunemaker" __email__ = "jake.nunemaker@nrel.gov" +from copy import deepcopy import pandas as pd import pytest @@ -37,7 +38,9 @@ def test_simulation_setup(): @pytest.mark.parametrize( - "weather", (None, test_weather), ids=["no_weather", "test_weather"] + "weather", + (None, test_weather), + ids=["no_weather", "test_weather"], ) @pytest.mark.parametrize("config", (config, no_supply)) def test_for_complete_logging(weather, config): @@ -53,6 +56,23 @@ def test_for_complete_logging(weather, config): _df = _df.assign(shift=(_df["time"] - _df["time"].shift(1))) assert (_df["shift"] - _df["duration"]).abs().max() < 1e-9 - assert ~df["cost"].isnull().any() + assert ~df["cost"].isna().any() _ = sim.agent_efficiencies _ = sim.detailed_output + + +def test_deprecated_vessel(): + + deprecated = deepcopy(config) + deprecated["support_vessel"] = "test_support_vessel" + + with pytest.deprecated_call(): + sim = GravityBasedInstallation(deprecated) + sim.run() + + deprecated2 = deepcopy(config) + deprecated2["towing_vessel_groups"]["station_keeping_vessels"] = 2 + + with pytest.deprecated_call(): + sim = GravityBasedInstallation(deprecated2) + sim.run() diff --git a/tests/phases/install/quayside_assembly_tow/test_moored.py b/tests/phases/install/quayside_assembly_tow/test_moored.py index e1fc0af7..fffb807e 100644 --- a/tests/phases/install/quayside_assembly_tow/test_moored.py +++ b/tests/phases/install/quayside_assembly_tow/test_moored.py @@ -5,6 +5,7 @@ __maintainer__ = "Jake Nunemaker" __email__ = "jake.nunemaker@nrel.gov" +from copy import deepcopy import pandas as pd import pytest @@ -16,14 +17,32 @@ config = extract_library_specs("config", "moored_install") no_supply = extract_library_specs("config", "moored_install_no_supply") +multi_assembly = extract_library_specs( + "config", + "moored_install_multi_assembly", +) +multi_tow = extract_library_specs("config", "moored_install_multi_tow") +multi_assembly_multi_tow = extract_library_specs( + "config", + "moored_install_multi_assembly_multi_tow", +) -def test_simulation_setup(): +@pytest.mark.parametrize( + "config", + (config, multi_assembly, multi_tow, multi_assembly_multi_tow), + ids=[ + "1 assembly, 1 tow", + "3 assembly, 1 tow", + "1 assembly, 3 tow", + "3 assembly, 3 tow", + ], +) +def test_simulation_setup(config): sim = MooredSubInstallation(config) assert sim.config == config assert sim.env - assert sim.support_vessel assert len(sim.sub_assembly_lines) == config["port"]["sub_assembly_lines"] assert ( len(sim.turbine_assembly_lines) @@ -37,11 +56,22 @@ def test_simulation_setup(): @pytest.mark.parametrize( - "weather", (None, test_weather), ids=["no_weather", "test_weather"] + "weather", + (None, test_weather), + ids=["no_weather", "test_weather"], +) +@pytest.mark.parametrize( + "config", + (config, multi_assembly, multi_tow, multi_assembly_multi_tow, no_supply), + ids=[ + "1 assembly, 1 tow", + "3 assembly, 1 tow", + "1 assembly, 3 tow", + "3 assembly, 3 tow", + "no supply", + ], ) -@pytest.mark.parametrize("config", (config, no_supply)) def test_for_complete_logging(weather, config): - sim = MooredSubInstallation(config, weather=weather) sim.run() @@ -53,6 +83,28 @@ def test_for_complete_logging(weather, config): _df = _df.assign(shift=(_df["time"] - _df["time"].shift(1))) assert (_df["shift"] - _df["duration"]).abs().max() < 1e-9 - assert ~df["cost"].isnull().any() + assert ~df["cost"].isna().any() _ = sim.agent_efficiencies _ = sim.detailed_output + + installed_mooring_lines = len( + [a for a in sim.env.actions if a["action"] == "Position Substructure"] + ) + assert installed_mooring_lines == sim.num_turbines + + +def test_deprecated_vessel(): + + deprecated = deepcopy(config) + deprecated["support_vessel"] = "test_support_vessel" + + with pytest.deprecated_call(): + sim = MooredSubInstallation(deprecated) + sim.run() + + deprecated2 = deepcopy(config) + deprecated2["towing_vessel_groups"]["station_keeping_vessels"] = 2 + + with pytest.deprecated_call(): + sim = MooredSubInstallation(deprecated2) + sim.run() diff --git a/tests/phases/install/scour_protection_install/test_scour_protection.py b/tests/phases/install/scour_protection_install/test_scour_protection.py index 85e372c7..8434b6ba 100644 --- a/tests/phases/install/scour_protection_install/test_scour_protection.py +++ b/tests/phases/install/scour_protection_install/test_scour_protection.py @@ -1,6 +1,4 @@ -""" -Testing framework for the `ScourProtectionInstallation` class. -""" +"""Testing framework for the `ScourProtectionInstallation` class.""" __author__ = "Rob Hammond" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" @@ -34,7 +32,9 @@ def test_simulation_creation(): @pytest.mark.parametrize( - "weather", (None, test_weather), ids=["no_weather", "test_weather"] + "weather", + (None, test_weather), + ids=["no_weather", "test_weather"], ) def test_full_run_logging(weather): sim = ScourProtectionInstallation(config, weather=weather) @@ -45,7 +45,7 @@ def test_full_run_logging(weather): assert (df.duration - df["shift"]).fillna(0.0).abs().max() < 1e-9 assert df[df.action == "Drop SP Material"].shape[0] == sim.num_turbines - assert ~df["cost"].isnull().any() + assert ~df["cost"].isna().any() _ = sim.agent_efficiencies _ = sim.detailed_output diff --git a/tests/phases/install/test_install_phase.py b/tests/phases/install/test_install_phase.py index 6b600eb2..0d86e887 100644 --- a/tests/phases/install/test_install_phase.py +++ b/tests/phases/install/test_install_phase.py @@ -6,7 +6,6 @@ __email__ = "jake.nunemaker@nrel.gov" -import pandas as pd import pytest from marmot import Environment @@ -47,9 +46,9 @@ def setup_simulation(self): def test_abstract_methods(): with pytest.raises(TypeError): - install = BadInstallPhase(base_config) + _ = BadInstallPhase(base_config) - install = SampleInstallPhase(base_config) + _ = SampleInstallPhase(base_config) def test_run(): diff --git a/tests/phases/install/turbine_install/test_turbine_install.py b/tests/phases/install/turbine_install/test_turbine_install.py index aac2de9f..876d68cf 100644 --- a/tests/phases/install/turbine_install/test_turbine_install.py +++ b/tests/phases/install/turbine_install/test_turbine_install.py @@ -19,13 +19,16 @@ config_wtiv = extract_library_specs("config", "turbine_install_wtiv") config_long_mobilize = extract_library_specs( - "config", "turbine_install_long_mobilize" + "config", + "turbine_install_long_mobilize", ) config_wtiv_feeder = extract_library_specs("config", "turbine_install_feeder") config_wtiv_multi_feeder = deepcopy(config_wtiv_feeder) config_wtiv_multi_feeder["num_feeders"] = 2 floating = extract_library_specs("config", "floating_turbine_install_feeder") +config_22mw = extract_library_specs("config", "turbine_install_22mw_generic") + @pytest.mark.parametrize( "config", @@ -65,8 +68,7 @@ def test_vessel_creation(config): js = sim.wtiv._jacksys_specs dp = sim.wtiv._dp_specs - if not any([js, dp]): - assert False + assert any([js, dp]) if config.get("feeder", None) is not None: assert len(sim.feeders) == config["num_feeders"] @@ -77,7 +79,8 @@ def test_vessel_creation(config): @pytest.mark.parametrize( - "config, expected", [(config_wtiv, 72), (config_long_mobilize, 14 * 24)] + "config, expected", + [(config_wtiv, 72), (config_long_mobilize, 14 * 24)], ) def test_vessel_mobilize(config, expected): @@ -94,7 +97,9 @@ def test_vessel_mobilize(config, expected): ids=["wtiv_only", "single_feeder", "multi_feeder", "floating"], ) @pytest.mark.parametrize( - "weather", (None, test_weather), ids=["no_weather", "test_weather"] + "weather", + (None, test_weather), + ids=["no_weather", "test_weather"], ) def test_for_complete_logging(weather, config): @@ -109,7 +114,7 @@ def test_for_complete_logging(weather, config): _df = _df.assign(shift=(_df["time"] - _df["time"].shift(1))) assert (_df["shift"] - _df["duration"]).abs().max() < 1e-9 - assert ~df["cost"].isnull().any() + assert ~df["cost"].isna().any() _ = sim.agent_efficiencies _ = sim.detailed_output @@ -250,3 +255,41 @@ def test_multiple_tower_sections(): vl = vl.assign(shift=(vl["time"] - vl["time"].shift(1))) assert (vl["shift"] - vl["duration"]).abs().max() < 1e-9 + + +def test_large_turbine_installation(): + """ + Tests that the library extracted 22MW turbine differs from the project + test config. + """ + + sim = TurbineInstallation(config_wtiv) + sim.run() + + sim_22 = TurbineInstallation(config_22mw) + sim_22.run() + + def count_component(component_list, component): + + return sum(1 for i in component_list if i == component) + + assert sim.config != sim_22.config + assert sim.capex_category == sim_22.capex_category + + assert sim.installation_capex < sim_22.installation_capex + assert sim.total_phase_time != sim_22.total_phase_time + + # sim has 1 Nacelle, 3 Blades, and 1 TowerSection + # sim_22 has 1 Nacelle, 3 Blades, and 3 TowerSections + assert count_component(sim.component_list, "Blade") == count_component( + sim_22.component_list, + "Blade", + ) + assert count_component(sim.component_list, "Nacelle") == count_component( + sim_22.component_list, + "Nacelle", + ) + assert count_component( + sim.component_list, + "TowerSection", + ) < count_component(sim_22.component_list, "TowerSection") diff --git a/tests/phases/install/turbine_install/test_turbine_tasks.py b/tests/phases/install/turbine_install/test_turbine_tasks.py index 055da73d..dcd75318 100644 --- a/tests/phases/install/turbine_install/test_turbine_tasks.py +++ b/tests/phases/install/turbine_install/test_turbine_tasks.py @@ -1,6 +1,4 @@ -""" -Testing framework for common turbine installation tasks. -""" +"""Testing framework for common turbine installation tasks.""" __author__ = "Jake Nunemaker" __copyright__ = "Copyright 2020, National Renewable Energy Laboratory" diff --git a/tests/test_config_management.py b/tests/test_config_management.py index f635f271..13a59cef 100644 --- a/tests/test_config_management.py +++ b/tests/test_config_management.py @@ -4,10 +4,6 @@ __email__ = "jake.nunemaker@nrel.gov" -import os - -import pytest - from ORBIT import ProjectManager, load_config, save_config from ORBIT.core.library import extract_library_specs diff --git a/tests/test_parametric.py b/tests/test_parametric.py index 4d73da75..b7ff561f 100644 --- a/tests/test_parametric.py +++ b/tests/test_parametric.py @@ -42,7 +42,10 @@ def test_weather(): without.run() weathered = ParametricManager( - complete_project, params, funcs, weather=weather_df + complete_project, + params, + funcs, + weather=weather_df, ) weathered.run() @@ -59,7 +62,10 @@ def test_individual_phase(): funcs = {"time": lambda phase: phase.total_phase_time} parametric = ParametricManager( - complete_project, params, funcs, module=TurbineInstallation + complete_project, + params, + funcs, + module=TurbineInstallation, ) parametric.run() df = parametric.results.set_index("site.distance") @@ -71,11 +77,14 @@ def test_bad_result_attribute(): funcs = {"result": lambda phase: phase.nonexistent_result} parametric = ParametricManager( - complete_project, params, funcs, module=TurbineInstallation + complete_project, + params, + funcs, + module=TurbineInstallation, ) parametric.run() df = parametric.results - assert df["result"].isnull().all() + assert df["result"].isna().all() def test_bad_result_structure(): @@ -83,7 +92,10 @@ def test_bad_result_structure(): funcs = {"result": "bos_capex"} parametric = ParametricManager( - complete_project, params, funcs, module=TurbineInstallation + complete_project, + params, + funcs, + module=TurbineInstallation, ) with pytest.raises(TypeError): @@ -95,7 +107,10 @@ def test_product_option(): params = {"site.distance": [20, 40, 60], "site.depth": [20, 40, 60]} parametric = ParametricManager( - complete_project, params, funcs, module=TurbineInstallation + complete_project, + params, + funcs, + module=TurbineInstallation, ) assert parametric.num_runs == 3 diff --git a/tests/test_project_manager.py b/tests/test_project_manager.py index 7e62a225..140f36f6 100644 --- a/tests/test_project_manager.py +++ b/tests/test_project_manager.py @@ -4,14 +4,15 @@ __email__ = "jake.nunemaker@nrel.gov" +import datetime as dt from copy import deepcopy import pandas as pd import pytest from ORBIT import ProjectManager -from ORBIT.phases import InstallPhase, DesignPhase from tests.data import test_weather +from ORBIT.phases import DesignPhase, InstallPhase from ORBIT.manager import ProjectProgress from ORBIT.core.library import extract_library_specs from ORBIT.core.exceptions import ( @@ -25,8 +26,12 @@ config = extract_library_specs("config", "project_manager") complete_project = extract_library_specs("config", "complete_project") +complete_floating_project = extract_library_specs( + "config", "complete_floating_project" +) + -### Top Level +# Top Level @pytest.mark.parametrize("weather", (None, weather_df)) def test_complete_run(weather): @@ -39,7 +44,7 @@ def test_complete_run(weather): assert all(p in list(actions["phase"]) for p in phases) -### Module Integrations +# Module Integrations def test_for_required_phase_structure(): """ Automated integration test to verify that all classes listed in @@ -59,11 +64,9 @@ def test_for_required_phase_structure(): # TODO: Expand these tests -### Config Management +# Config Management def test_phase_specific_definitions(): - """ - Tests that phase specific information makes it to phase_config. - """ + """Tests that phase specific information makes it to phase_config.""" project = ProjectManager(config) @@ -81,9 +84,7 @@ def test_phase_specific_definitions(): def test_expected_config_merging(): - """ - Tests for merging of expected configs - """ + """Tests for merging of expected configs.""" config1 = { "site": {"distance": "float", "depth": "float"}, @@ -147,12 +148,12 @@ class SpecificTurbineInstallation(InstallPhase): assert TestProjectManager.find_key_match(f) is None -### Overlapping Install Phases -def test_install_phase_start_parsing(): +# Overlapping Install Phases +def test_install_phase_start_parsing__dates(): config_mixed_starts = deepcopy(config) config_mixed_starts["install_phases"] = { - "MonopileInstallation": 0, + "MonopileInstallation": "10/22/2010", "TurbineInstallation": "10/22/2009", "ArrayCableInstallation": ("MonopileInstallation", 0.5), } @@ -164,10 +165,107 @@ def test_install_phase_start_parsing(): assert len(defined) == 2 assert len(depends) == 1 - assert defined["MonopileInstallation"] == 0 + assert defined["MonopileInstallation"] == 8761 assert defined["TurbineInstallation"] == 1 +def test_install_phase_start_parsing__ints(): + + config_mixed_starts = deepcopy(config) + config_mixed_starts["install_phases"] = { + "MonopileInstallation": 0, + "TurbineInstallation": 100, + "ArrayCableInstallation": ("MonopileInstallation", 0.5), + } + + project = ProjectManager(config_mixed_starts, weather=weather_df) + defined, depends = project._parse_install_phase_values( + config_mixed_starts["install_phases"] + ) + assert len(defined) == 2 + assert len(depends) == 1 + + assert defined["MonopileInstallation"] == 0 + assert defined["TurbineInstallation"] == 100 + + +@pytest.mark.parametrize("weather", (None, weather_df)) +@pytest.mark.parametrize("defined", (0, "10/22/2009")) +@pytest.mark.parametrize( + "amount_str, diff", + [ + ("hours=10", 10), + ("days=1", 24), + ("days=1;hours=10", 34), + ("weeks=1", 168), + ("weeks=1;days=1;hours=10", 202), + ], +) +def test_dependent_install_phases_fixed_amounts( + weather, + defined, + amount_str, + diff, +): + + new = deepcopy(config) + new["install_phases"] = { + "MonopileInstallation": defined, + "TurbineInstallation": ("MonopileInstallation", amount_str), + } + + project = ProjectManager(new, weather=weather) + project.run() + + diff_calc = ( + project.phase_starts["TurbineInstallation"] + - project.phase_starts["MonopileInstallation"] + ) + + assert diff_calc == diff + + +@pytest.mark.parametrize("input_val", (-1, 1.2, "years=10", "days:10")) +def test_dependent_install_phases_bad_inputs(input_val): + + new = deepcopy(config) + new["install_phases"] = { + "MonopileInstallation": 0, + "TurbineInstallation": ("MonopileInstallation", input_val), + } + + project = ProjectManager(new) + + with pytest.raises(ValueError): + project.run() + + +@pytest.mark.parametrize("weather", (None, weather_df)) +@pytest.mark.parametrize("defined", (0, "10/22/2009")) +@pytest.mark.parametrize("input_val", (0.5, "hours=10", "days=1;hours=10")) +def test_dependent_install_phases_phase_dates(weather, defined, input_val): + + new = deepcopy(config) + new["install_phases"] = { + "MonopileInstallation": defined, + "TurbineInstallation": ("MonopileInstallation", input_val), + } + + project = ProjectManager(new, weather=weather) + project.run() + + phase_dates = project.phase_dates + for p in ["MonopileInstallation", "TurbineInstallation"]: + assert p in phase_dates + + for key in ["start", "end"]: + _ = dt.datetime.strptime( + phase_dates[p][key], + project.date_format_long, + ) + assert True + + def test_chained_dependencies(): config_chained = deepcopy(config) @@ -196,11 +294,13 @@ def test_chained_dependencies(): @pytest.mark.parametrize( - "m_start, t_start", [(0, 0), (0, 100), (100, 100), (100, 200)] + "m_start, t_start", + [(0, 0), (0, 100), (100, 100), (100, 200)], ) def test_index_starts(m_start, t_start): """ - Tests functionality related to passing index starts into 'install_phases' sub-dict. + Tests functionality related to passing index starts into 'install_phases' + sub-dict. """ _target_diff = t_start - m_start @@ -227,7 +327,6 @@ def test_index_starts(m_start, t_start): [ (0, 0, 0), (0, 1000, 1000), - (0, "05/01/2010", 4585), ("03/01/2010", "03/01/2010", 0), ("03/01/2010", "05/01/2010", 1464), ], @@ -251,6 +350,27 @@ def test_start_dates_with_weather(m_start, t_start, expected): assert _diff == expected +@pytest.mark.parametrize( + "m_start, t_start", + [ + (0, "03/01/2010"), + ("03/01/2010", 0), + ], +) +def test_mixed_start_date_types(m_start, t_start): + + config_with_defined_starts = deepcopy(config) + config_with_defined_starts["install_phases"] = { + "MonopileInstallation": m_start, + "TurbineInstallation": t_start, + "ArrayCableInstallation": ("MonopileInstallation", 0.5), + } + + with pytest.raises(ValueError): + project = ProjectManager(config_with_defined_starts, weather_df) + project.run() + + def test_duplicate_phase_definitions(): config_with_duplicates = deepcopy(config) config_with_duplicates["MonopileInstallation_1"] = { @@ -305,7 +425,6 @@ class MonopileInstallation(InstallPhase): with pytest.raises(ValueError): ProjectManager.register_install_phase(MonopileInstallation) - # Bad name format class MonopileInstallation_Custom(InstallPhase): pass @@ -318,7 +437,10 @@ class CustomInstallPhase(InstallPhase): pass ProjectManager.register_install_phase(CustomInstallPhase) - assert ProjectManager.find_key_match("CustomInstallPhase") == CustomInstallPhase + assert ( + ProjectManager.find_key_match("CustomInstallPhase") + == CustomInstallPhase + ) def test_custom_design_phases(): @@ -344,7 +466,6 @@ class MonopileDesign(DesignPhase): with pytest.raises(ValueError): ProjectManager.register_install_phase(MonopileDesign) - # Bad name format class MonopileDesign_Custom(DesignPhase): pass @@ -357,9 +478,12 @@ class CustomDesignPhase(DesignPhase): pass ProjectManager.register_design_phase(CustomDesignPhase) - assert ProjectManager.find_key_match("CustomDesignPhase") == CustomDesignPhase + assert ( + ProjectManager.find_key_match("CustomDesignPhase") == CustomDesignPhase + ) -### Design Phase Interactions + +# Design Phase Interactions def test_design_phases(): config_with_design = deepcopy(config) @@ -384,7 +508,7 @@ def test_design_phases(): project.run() -### Outputs +# Outputs def test_resolve_project_capacity(): # Missing turbine rating @@ -465,7 +589,7 @@ def test_resolve_project_capacity(): _ = project6.config["plant"]["num_turbines"] -### Exceptions +# Exceptions def test_incomplete_config(): incomplete_config = deepcopy(config) @@ -600,10 +724,10 @@ def test_ProjectProgress_with_incomplete_project(): _ = project.progress.parse_logs("Turbine") with pytest.raises(ValueError): - project.progress.complete_export_system + _ = project.progress.complete_export_system with pytest.raises(ValueError): - project.progress.complete_array_strings + _ = project.progress.complete_array_strings def test_ProjectProgress_with_complete_project(): @@ -800,3 +924,17 @@ def test_capex_categories(): new_breakdown["Export System Installation"] > baseline["Export System Installation"] ) + + +def test_total_capex(): + """Test total capex for baseline fixed and floating project.""" + + fix_project = ProjectManager(complete_project) + fix_project.run() + + assert fix_project.total_capex == pytest.approx(1207278397.56, abs=1e-1) + + flt_project = ProjectManager(complete_floating_project) + flt_project.run() + + assert flt_project.total_capex == pytest.approx(3284781912.73, abs=1e-1) diff --git a/versioneer.py b/versioneer.py deleted file mode 100644 index 64fea1c8..00000000 --- a/versioneer.py +++ /dev/null @@ -1,1822 +0,0 @@ - -# Version: 0.18 - -"""The Versioneer - like a rocketeer, but for versions. - -The Versioneer -============== - -* like a rocketeer, but for versions! -* https://github.com/warner/python-versioneer -* Brian Warner -* License: Public Domain -* Compatible With: python2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6, and pypy -* [![Latest Version] -(https://pypip.in/version/versioneer/badge.svg?style=flat) -](https://pypi.python.org/pypi/versioneer/) -* [![Build Status] -(https://travis-ci.org/warner/python-versioneer.png?branch=master) -](https://travis-ci.org/warner/python-versioneer) - -This is a tool for managing a recorded version number in distutils-based -python projects. The goal is to remove the tedious and error-prone "update -the embedded version string" step from your release process. Making a new -release should be as easy as recording a new tag in your version-control -system, and maybe making new tarballs. - - -## Quick Install - -* `pip install versioneer` to somewhere to your $PATH -* add a `[versioneer]` section to your setup.cfg (see below) -* run `versioneer install` in your source tree, commit the results - -## Version Identifiers - -Source trees come from a variety of places: - -* a version-control system checkout (mostly used by developers) -* a nightly tarball, produced by build automation -* a snapshot tarball, produced by a web-based VCS browser, like github's - "tarball from tag" feature -* a release tarball, produced by "setup.py sdist", distributed through PyPI - -Within each source tree, the version identifier (either a string or a number, -this tool is format-agnostic) can come from a variety of places: - -* ask the VCS tool itself, e.g. "git describe" (for checkouts), which knows - about recent "tags" and an absolute revision-id -* the name of the directory into which the tarball was unpacked -* an expanded VCS keyword ($Id$, etc) -* a `_version.py` created by some earlier build step - -For released software, the version identifier is closely related to a VCS -tag. Some projects use tag names that include more than just the version -string (e.g. "myproject-1.2" instead of just "1.2"), in which case the tool -needs to strip the tag prefix to extract the version identifier. For -unreleased software (between tags), the version identifier should provide -enough information to help developers recreate the same tree, while also -giving them an idea of roughly how old the tree is (after version 1.2, before -version 1.3). Many VCS systems can report a description that captures this, -for example `git describe --tags --dirty --always` reports things like -"0.7-1-g574ab98-dirty" to indicate that the checkout is one revision past the -0.7 tag, has a unique revision id of "574ab98", and is "dirty" (it has -uncommitted changes. - -The version identifier is used for multiple purposes: - -* to allow the module to self-identify its version: `myproject.__version__` -* to choose a name and prefix for a 'setup.py sdist' tarball - -## Theory of Operation - -Versioneer works by adding a special `_version.py` file into your source -tree, where your `__init__.py` can import it. This `_version.py` knows how to -dynamically ask the VCS tool for version information at import time. - -`_version.py` also contains `$Revision$` markers, and the installation -process marks `_version.py` to have this marker rewritten with a tag name -during the `git archive` command. As a result, generated tarballs will -contain enough information to get the proper version. - -To allow `setup.py` to compute a version too, a `versioneer.py` is added to -the top level of your source tree, next to `setup.py` and the `setup.cfg` -that configures it. This overrides several distutils/setuptools commands to -compute the version when invoked, and changes `setup.py build` and `setup.py -sdist` to replace `_version.py` with a small static file that contains just -the generated version data. - -## Installation - -See [INSTALL.md](./INSTALL.md) for detailed installation instructions. - -## Version-String Flavors - -Code which uses Versioneer can learn about its version string at runtime by -importing `_version` from your main `__init__.py` file and running the -`get_versions()` function. From the "outside" (e.g. in `setup.py`), you can -import the top-level `versioneer.py` and run `get_versions()`. - -Both functions return a dictionary with different flavors of version -information: - -* `['version']`: A condensed version string, rendered using the selected - style. This is the most commonly used value for the project's version - string. The default "pep440" style yields strings like `0.11`, - `0.11+2.g1076c97`, or `0.11+2.g1076c97.dirty`. See the "Styles" section - below for alternative styles. - -* `['full-revisionid']`: detailed revision identifier. For Git, this is the - full SHA1 commit id, e.g. "1076c978a8d3cfc70f408fe5974aa6c092c949ac". - -* `['date']`: Date and time of the latest `HEAD` commit. For Git, it is the - commit date in ISO 8601 format. This will be None if the date is not - available. - -* `['dirty']`: a boolean, True if the tree has uncommitted changes. Note that - this is only accurate if run in a VCS checkout, otherwise it is likely to - be False or None - -* `['error']`: if the version string could not be computed, this will be set - to a string describing the problem, otherwise it will be None. It may be - useful to throw an exception in setup.py if this is set, to avoid e.g. - creating tarballs with a version string of "unknown". - -Some variants are more useful than others. Including `full-revisionid` in a -bug report should allow developers to reconstruct the exact code being tested -(or indicate the presence of local changes that should be shared with the -developers). `version` is suitable for display in an "about" box or a CLI -`--version` output: it can be easily compared against release notes and lists -of bugs fixed in various releases. - -The installer adds the following text to your `__init__.py` to place a basic -version in `YOURPROJECT.__version__`: - - from ._version import get_versions - __version__ = get_versions()['version'] - del get_versions - -## Styles - -The setup.cfg `style=` configuration controls how the VCS information is -rendered into a version string. - -The default style, "pep440", produces a PEP440-compliant string, equal to the -un-prefixed tag name for actual releases, and containing an additional "local -version" section with more detail for in-between builds. For Git, this is -TAG[+DISTANCE.gHEX[.dirty]] , using information from `git describe --tags ---dirty --always`. For example "0.11+2.g1076c97.dirty" indicates that the -tree is like the "1076c97" commit but has uncommitted changes (".dirty"), and -that this commit is two revisions ("+2") beyond the "0.11" tag. For released -software (exactly equal to a known tag), the identifier will only contain the -stripped tag, e.g. "0.11". - -Other styles are available. See [details.md](details.md) in the Versioneer -source tree for descriptions. - -## Debugging - -Versioneer tries to avoid fatal errors: if something goes wrong, it will tend -to return a version of "0+unknown". To investigate the problem, run `setup.py -version`, which will run the version-lookup code in a verbose mode, and will -display the full contents of `get_versions()` (including the `error` string, -which may help identify what went wrong). - -## Known Limitations - -Some situations are known to cause problems for Versioneer. This details the -most significant ones. More can be found on Github -[issues page](https://github.com/warner/python-versioneer/issues). - -### Subprojects - -Versioneer has limited support for source trees in which `setup.py` is not in -the root directory (e.g. `setup.py` and `.git/` are *not* siblings). The are -two common reasons why `setup.py` might not be in the root: - -* Source trees which contain multiple subprojects, such as - [Buildbot](https://github.com/buildbot/buildbot), which contains both - "master" and "slave" subprojects, each with their own `setup.py`, - `setup.cfg`, and `tox.ini`. Projects like these produce multiple PyPI - distributions (and upload multiple independently-installable tarballs). -* Source trees whose main purpose is to contain a C library, but which also - provide bindings to Python (and perhaps other langauges) in subdirectories. - -Versioneer will look for `.git` in parent directories, and most operations -should get the right version string. However `pip` and `setuptools` have bugs -and implementation details which frequently cause `pip install .` from a -subproject directory to fail to find a correct version string (so it usually -defaults to `0+unknown`). - -`pip install --editable .` should work correctly. `setup.py install` might -work too. - -Pip-8.1.1 is known to have this problem, but hopefully it will get fixed in -some later version. - -[Bug #38](https://github.com/warner/python-versioneer/issues/38) is tracking -this issue. The discussion in -[PR #61](https://github.com/warner/python-versioneer/pull/61) describes the -issue from the Versioneer side in more detail. -[pip PR#3176](https://github.com/pypa/pip/pull/3176) and -[pip PR#3615](https://github.com/pypa/pip/pull/3615) contain work to improve -pip to let Versioneer work correctly. - -Versioneer-0.16 and earlier only looked for a `.git` directory next to the -`setup.cfg`, so subprojects were completely unsupported with those releases. - -### Editable installs with setuptools <= 18.5 - -`setup.py develop` and `pip install --editable .` allow you to install a -project into a virtualenv once, then continue editing the source code (and -test) without re-installing after every change. - -"Entry-point scripts" (`setup(entry_points={"console_scripts": ..})`) are a -convenient way to specify executable scripts that should be installed along -with the python package. - -These both work as expected when using modern setuptools. When using -setuptools-18.5 or earlier, however, certain operations will cause -`pkg_resources.DistributionNotFound` errors when running the entrypoint -script, which must be resolved by re-installing the package. This happens -when the install happens with one version, then the egg_info data is -regenerated while a different version is checked out. Many setup.py commands -cause egg_info to be rebuilt (including `sdist`, `wheel`, and installing into -a different virtualenv), so this can be surprising. - -[Bug #83](https://github.com/warner/python-versioneer/issues/83) describes -this one, but upgrading to a newer version of setuptools should probably -resolve it. - -### Unicode version strings - -While Versioneer works (and is continually tested) with both Python 2 and -Python 3, it is not entirely consistent with bytes-vs-unicode distinctions. -Newer releases probably generate unicode version strings on py2. It's not -clear that this is wrong, but it may be surprising for applications when then -write these strings to a network connection or include them in bytes-oriented -APIs like cryptographic checksums. - -[Bug #71](https://github.com/warner/python-versioneer/issues/71) investigates -this question. - - -## Updating Versioneer - -To upgrade your project to a new release of Versioneer, do the following: - -* install the new Versioneer (`pip install -U versioneer` or equivalent) -* edit `setup.cfg`, if necessary, to include any new configuration settings - indicated by the release notes. See [UPGRADING](./UPGRADING.md) for details. -* re-run `versioneer install` in your source tree, to replace - `SRC/_version.py` -* commit any changed files - -## Future Directions - -This tool is designed to make it easily extended to other version-control -systems: all VCS-specific components are in separate directories like -src/git/ . The top-level `versioneer.py` script is assembled from these -components by running make-versioneer.py . In the future, make-versioneer.py -will take a VCS name as an argument, and will construct a version of -`versioneer.py` that is specific to the given VCS. It might also take the -configuration arguments that are currently provided manually during -installation by editing setup.py . Alternatively, it might go the other -direction and include code from all supported VCS systems, reducing the -number of intermediate scripts. - - -## License - -To make Versioneer easier to embed, all its code is dedicated to the public -domain. The `_version.py` that it creates is also in the public domain. -Specifically, both are released under the Creative Commons "Public Domain -Dedication" license (CC0-1.0), as described in -https://creativecommons.org/publicdomain/zero/1.0/ . - -""" - -from __future__ import print_function -try: - import configparser -except ImportError: - import ConfigParser as configparser -import errno -import json -import os -import re -import subprocess -import sys - - -class VersioneerConfig: - """Container for Versioneer configuration parameters.""" - - -def get_root(): - """Get the project root directory. - - We require that all commands are run from the project root, i.e. the - directory that contains setup.py, setup.cfg, and versioneer.py . - """ - root = os.path.realpath(os.path.abspath(os.getcwd())) - setup_py = os.path.join(root, "setup.py") - versioneer_py = os.path.join(root, "versioneer.py") - if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): - # allow 'python path/to/setup.py COMMAND' - root = os.path.dirname(os.path.realpath(os.path.abspath(sys.argv[0]))) - setup_py = os.path.join(root, "setup.py") - versioneer_py = os.path.join(root, "versioneer.py") - if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): - err = ("Versioneer was unable to run the project root directory. " - "Versioneer requires setup.py to be executed from " - "its immediate directory (like 'python setup.py COMMAND'), " - "or in a way that lets it use sys.argv[0] to find the root " - "(like 'python path/to/setup.py COMMAND').") - raise VersioneerBadRootError(err) - try: - # Certain runtime workflows (setup.py install/develop in a setuptools - # tree) execute all dependencies in a single python process, so - # "versioneer" may be imported multiple times, and python's shared - # module-import table will cache the first one. So we can't use - # os.path.dirname(__file__), as that will find whichever - # versioneer.py was first imported, even in later projects. - me = os.path.realpath(os.path.abspath(__file__)) - me_dir = os.path.normcase(os.path.splitext(me)[0]) - vsr_dir = os.path.normcase(os.path.splitext(versioneer_py)[0]) - if me_dir != vsr_dir: - print("Warning: build in %s is using versioneer.py from %s" - % (os.path.dirname(me), versioneer_py)) - except NameError: - pass - return root - - -def get_config_from_root(root): - """Read the project setup.cfg file to determine Versioneer config.""" - # This might raise EnvironmentError (if setup.cfg is missing), or - # configparser.NoSectionError (if it lacks a [versioneer] section), or - # configparser.NoOptionError (if it lacks "VCS="). See the docstring at - # the top of versioneer.py for instructions on writing your setup.cfg . - setup_cfg = os.path.join(root, "setup.cfg") - parser = configparser.SafeConfigParser() - with open(setup_cfg, "r") as f: - parser.readfp(f) - VCS = parser.get("versioneer", "VCS") # mandatory - - def get(parser, name): - if parser.has_option("versioneer", name): - return parser.get("versioneer", name) - return None - cfg = VersioneerConfig() - cfg.VCS = VCS - cfg.style = get(parser, "style") or "" - cfg.versionfile_source = get(parser, "versionfile_source") - cfg.versionfile_build = get(parser, "versionfile_build") - cfg.tag_prefix = get(parser, "tag_prefix") - if cfg.tag_prefix in ("''", '""'): - cfg.tag_prefix = "" - cfg.parentdir_prefix = get(parser, "parentdir_prefix") - cfg.verbose = get(parser, "verbose") - return cfg - - -class NotThisMethod(Exception): - """Exception raised if a method is not valid for the current scenario.""" - - -# these dictionaries contain VCS-specific tools -LONG_VERSION_PY = {} -HANDLERS = {} - - -def register_vcs_handler(vcs, method): # decorator - """Decorator to mark a method as the handler for a particular VCS.""" - def decorate(f): - """Store f in HANDLERS[vcs][method].""" - if vcs not in HANDLERS: - HANDLERS[vcs] = {} - HANDLERS[vcs][method] = f - return f - return decorate - - -def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, - env=None): - """Call the given command(s).""" - assert isinstance(commands, list) - p = None - for c in commands: - try: - dispcmd = str([c] + args) - # remember shell=False, so use git.cmd on windows, not just git - p = subprocess.Popen([c] + args, cwd=cwd, env=env, - stdout=subprocess.PIPE, - stderr=(subprocess.PIPE if hide_stderr - else None)) - break - except EnvironmentError: - e = sys.exc_info()[1] - if e.errno == errno.ENOENT: - continue - if verbose: - print("unable to run %s" % dispcmd) - print(e) - return None, None - else: - if verbose: - print("unable to find command, tried %s" % (commands,)) - return None, None - stdout = p.communicate()[0].strip() - if sys.version_info[0] >= 3: - stdout = stdout.decode() - if p.returncode != 0: - if verbose: - print("unable to run %s (error)" % dispcmd) - print("stdout was %s" % stdout) - return None, p.returncode - return stdout, p.returncode - - -LONG_VERSION_PY['git'] = ''' -# This file helps to compute a version number in source trees obtained from -# git-archive tarball (such as those provided by githubs download-from-tag -# feature). Distribution tarballs (built by setup.py sdist) and build -# directories (produced by setup.py build) will contain a much shorter file -# that just contains the computed version number. - -# This file is released into the public domain. Generated by -# versioneer-0.18 (https://github.com/warner/python-versioneer) - -"""Git implementation of _version.py.""" - -import errno -import os -import re -import subprocess -import sys - - -def get_keywords(): - """Get the keywords needed to look up the version information.""" - # these strings will be replaced by git during git-archive. - # setup.py/versioneer.py will grep for the variable names, so they must - # each be defined on a line of their own. _version.py will just call - # get_keywords(). - git_refnames = "%(DOLLAR)sFormat:%%d%(DOLLAR)s" - git_full = "%(DOLLAR)sFormat:%%H%(DOLLAR)s" - git_date = "%(DOLLAR)sFormat:%%ci%(DOLLAR)s" - keywords = {"refnames": git_refnames, "full": git_full, "date": git_date} - return keywords - - -class VersioneerConfig: - """Container for Versioneer configuration parameters.""" - - -def get_config(): - """Create, populate and return the VersioneerConfig() object.""" - # these strings are filled in when 'setup.py versioneer' creates - # _version.py - cfg = VersioneerConfig() - cfg.VCS = "git" - cfg.style = "%(STYLE)s" - cfg.tag_prefix = "%(TAG_PREFIX)s" - cfg.parentdir_prefix = "%(PARENTDIR_PREFIX)s" - cfg.versionfile_source = "%(VERSIONFILE_SOURCE)s" - cfg.verbose = False - return cfg - - -class NotThisMethod(Exception): - """Exception raised if a method is not valid for the current scenario.""" - - -LONG_VERSION_PY = {} -HANDLERS = {} - - -def register_vcs_handler(vcs, method): # decorator - """Decorator to mark a method as the handler for a particular VCS.""" - def decorate(f): - """Store f in HANDLERS[vcs][method].""" - if vcs not in HANDLERS: - HANDLERS[vcs] = {} - HANDLERS[vcs][method] = f - return f - return decorate - - -def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, - env=None): - """Call the given command(s).""" - assert isinstance(commands, list) - p = None - for c in commands: - try: - dispcmd = str([c] + args) - # remember shell=False, so use git.cmd on windows, not just git - p = subprocess.Popen([c] + args, cwd=cwd, env=env, - stdout=subprocess.PIPE, - stderr=(subprocess.PIPE if hide_stderr - else None)) - break - except EnvironmentError: - e = sys.exc_info()[1] - if e.errno == errno.ENOENT: - continue - if verbose: - print("unable to run %%s" %% dispcmd) - print(e) - return None, None - else: - if verbose: - print("unable to find command, tried %%s" %% (commands,)) - return None, None - stdout = p.communicate()[0].strip() - if sys.version_info[0] >= 3: - stdout = stdout.decode() - if p.returncode != 0: - if verbose: - print("unable to run %%s (error)" %% dispcmd) - print("stdout was %%s" %% stdout) - return None, p.returncode - return stdout, p.returncode - - -def versions_from_parentdir(parentdir_prefix, root, verbose): - """Try to determine the version from the parent directory name. - - Source tarballs conventionally unpack into a directory that includes both - the project name and a version string. We will also support searching up - two directory levels for an appropriately named parent directory - """ - rootdirs = [] - - for i in range(3): - dirname = os.path.basename(root) - if dirname.startswith(parentdir_prefix): - return {"version": dirname[len(parentdir_prefix):], - "full-revisionid": None, - "dirty": False, "error": None, "date": None} - else: - rootdirs.append(root) - root = os.path.dirname(root) # up a level - - if verbose: - print("Tried directories %%s but none started with prefix %%s" %% - (str(rootdirs), parentdir_prefix)) - raise NotThisMethod("rootdir doesn't start with parentdir_prefix") - - -@register_vcs_handler("git", "get_keywords") -def git_get_keywords(versionfile_abs): - """Extract version information from the given file.""" - # the code embedded in _version.py can just fetch the value of these - # keywords. When used from setup.py, we don't want to import _version.py, - # so we do it with a regexp instead. This function is not used from - # _version.py. - keywords = {} - try: - f = open(versionfile_abs, "r") - for line in f.readlines(): - if line.strip().startswith("git_refnames ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["refnames"] = mo.group(1) - if line.strip().startswith("git_full ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["full"] = mo.group(1) - if line.strip().startswith("git_date ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["date"] = mo.group(1) - f.close() - except EnvironmentError: - pass - return keywords - - -@register_vcs_handler("git", "keywords") -def git_versions_from_keywords(keywords, tag_prefix, verbose): - """Get version information from git keywords.""" - if not keywords: - raise NotThisMethod("no keywords at all, weird") - date = keywords.get("date") - if date is not None: - # git-2.2.0 added "%%cI", which expands to an ISO-8601 -compliant - # datestamp. However we prefer "%%ci" (which expands to an "ISO-8601 - # -like" string, which we must then edit to make compliant), because - # it's been around since git-1.5.3, and it's too difficult to - # discover which version we're using, or to work around using an - # older one. - date = date.strip().replace(" ", "T", 1).replace(" ", "", 1) - refnames = keywords["refnames"].strip() - if refnames.startswith("$Format"): - if verbose: - print("keywords are unexpanded, not using") - raise NotThisMethod("unexpanded keywords, not a git-archive tarball") - refs = set([r.strip() for r in refnames.strip("()").split(",")]) - # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of - # just "foo-1.0". If we see a "tag: " prefix, prefer those. - TAG = "tag: " - tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) - if not tags: - # Either we're using git < 1.8.3, or there really are no tags. We use - # a heuristic: assume all version tags have a digit. The old git %%d - # expansion behaves like git log --decorate=short and strips out the - # refs/heads/ and refs/tags/ prefixes that would let us distinguish - # between branches and tags. By ignoring refnames without digits, we - # filter out many common branch names like "release" and - # "stabilization", as well as "HEAD" and "master". - tags = set([r for r in refs if re.search(r'\d', r)]) - if verbose: - print("discarding '%%s', no digits" %% ",".join(refs - tags)) - if verbose: - print("likely tags: %%s" %% ",".join(sorted(tags))) - for ref in sorted(tags): - # sorting will prefer e.g. "2.0" over "2.0rc1" - if ref.startswith(tag_prefix): - r = ref[len(tag_prefix):] - if verbose: - print("picking %%s" %% r) - return {"version": r, - "full-revisionid": keywords["full"].strip(), - "dirty": False, "error": None, - "date": date} - # no suitable tags, so version is "0+unknown", but full hex is still there - if verbose: - print("no suitable tags, using unknown + full revision id") - return {"version": "0+unknown", - "full-revisionid": keywords["full"].strip(), - "dirty": False, "error": "no suitable tags", "date": None} - - -@register_vcs_handler("git", "pieces_from_vcs") -def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): - """Get version from 'git describe' in the root of the source tree. - - This only gets called if the git-archive 'subst' keywords were *not* - expanded, and _version.py hasn't already been rewritten with a short - version string, meaning we're inside a checked out source tree. - """ - GITS = ["git"] - if sys.platform == "win32": - GITS = ["git.cmd", "git.exe"] - - out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, - hide_stderr=True) - if rc != 0: - if verbose: - print("Directory %%s not under git control" %% root) - raise NotThisMethod("'git rev-parse --git-dir' returned error") - - # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] - # if there isn't one, this yields HEX[-dirty] (no NUM) - describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", - "--always", "--long", - "--match", "%%s*" %% tag_prefix], - cwd=root) - # --long was added in git-1.5.5 - if describe_out is None: - raise NotThisMethod("'git describe' failed") - describe_out = describe_out.strip() - full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) - if full_out is None: - raise NotThisMethod("'git rev-parse' failed") - full_out = full_out.strip() - - pieces = {} - pieces["long"] = full_out - pieces["short"] = full_out[:7] # maybe improved later - pieces["error"] = None - - # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] - # TAG might have hyphens. - git_describe = describe_out - - # look for -dirty suffix - dirty = git_describe.endswith("-dirty") - pieces["dirty"] = dirty - if dirty: - git_describe = git_describe[:git_describe.rindex("-dirty")] - - # now we have TAG-NUM-gHEX or HEX - - if "-" in git_describe: - # TAG-NUM-gHEX - mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) - if not mo: - # unparseable. Maybe git-describe is misbehaving? - pieces["error"] = ("unable to parse git-describe output: '%%s'" - %% describe_out) - return pieces - - # tag - full_tag = mo.group(1) - if not full_tag.startswith(tag_prefix): - if verbose: - fmt = "tag '%%s' doesn't start with prefix '%%s'" - print(fmt %% (full_tag, tag_prefix)) - pieces["error"] = ("tag '%%s' doesn't start with prefix '%%s'" - %% (full_tag, tag_prefix)) - return pieces - pieces["closest-tag"] = full_tag[len(tag_prefix):] - - # distance: number of commits since tag - pieces["distance"] = int(mo.group(2)) - - # commit: short hex revision ID - pieces["short"] = mo.group(3) - - else: - # HEX: no tags - pieces["closest-tag"] = None - count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], - cwd=root) - pieces["distance"] = int(count_out) # total number of commits - - # commit date: see ISO-8601 comment in git_versions_from_keywords() - date = run_command(GITS, ["show", "-s", "--format=%%ci", "HEAD"], - cwd=root)[0].strip() - pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) - - return pieces - - -def plus_or_dot(pieces): - """Return a + if we don't already have one, else return a .""" - if "+" in pieces.get("closest-tag", ""): - return "." - return "+" - - -def render_pep440(pieces): - """Build up version string, with post-release "local version identifier". - - Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you - get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty - - Exceptions: - 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += plus_or_dot(pieces) - rendered += "%%d.g%%s" %% (pieces["distance"], pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - else: - # exception #1 - rendered = "0+untagged.%%d.g%%s" %% (pieces["distance"], - pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - return rendered - - -def render_pep440_pre(pieces): - """TAG[.post.devDISTANCE] -- No -dirty. - - Exceptions: - 1: no tags. 0.post.devDISTANCE - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"]: - rendered += ".post.dev%%d" %% pieces["distance"] - else: - # exception #1 - rendered = "0.post.dev%%d" %% pieces["distance"] - return rendered - - -def render_pep440_post(pieces): - """TAG[.postDISTANCE[.dev0]+gHEX] . - - The ".dev0" means dirty. Note that .dev0 sorts backwards - (a dirty tree will appear "older" than the corresponding clean one), - but you shouldn't be releasing software with -dirty anyways. - - Exceptions: - 1: no tags. 0.postDISTANCE[.dev0] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%%d" %% pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - rendered += plus_or_dot(pieces) - rendered += "g%%s" %% pieces["short"] - else: - # exception #1 - rendered = "0.post%%d" %% pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - rendered += "+g%%s" %% pieces["short"] - return rendered - - -def render_pep440_old(pieces): - """TAG[.postDISTANCE[.dev0]] . - - The ".dev0" means dirty. - - Eexceptions: - 1: no tags. 0.postDISTANCE[.dev0] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%%d" %% pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - else: - # exception #1 - rendered = "0.post%%d" %% pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - return rendered - - -def render_git_describe(pieces): - """TAG[-DISTANCE-gHEX][-dirty]. - - Like 'git describe --tags --dirty --always'. - - Exceptions: - 1: no tags. HEX[-dirty] (note: no 'g' prefix) - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"]: - rendered += "-%%d-g%%s" %% (pieces["distance"], pieces["short"]) - else: - # exception #1 - rendered = pieces["short"] - if pieces["dirty"]: - rendered += "-dirty" - return rendered - - -def render_git_describe_long(pieces): - """TAG-DISTANCE-gHEX[-dirty]. - - Like 'git describe --tags --dirty --always -long'. - The distance/hash is unconditional. - - Exceptions: - 1: no tags. HEX[-dirty] (note: no 'g' prefix) - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - rendered += "-%%d-g%%s" %% (pieces["distance"], pieces["short"]) - else: - # exception #1 - rendered = pieces["short"] - if pieces["dirty"]: - rendered += "-dirty" - return rendered - - -def render(pieces, style): - """Render the given version pieces into the requested style.""" - if pieces["error"]: - return {"version": "unknown", - "full-revisionid": pieces.get("long"), - "dirty": None, - "error": pieces["error"], - "date": None} - - if not style or style == "default": - style = "pep440" # the default - - if style == "pep440": - rendered = render_pep440(pieces) - elif style == "pep440-pre": - rendered = render_pep440_pre(pieces) - elif style == "pep440-post": - rendered = render_pep440_post(pieces) - elif style == "pep440-old": - rendered = render_pep440_old(pieces) - elif style == "git-describe": - rendered = render_git_describe(pieces) - elif style == "git-describe-long": - rendered = render_git_describe_long(pieces) - else: - raise ValueError("unknown style '%%s'" %% style) - - return {"version": rendered, "full-revisionid": pieces["long"], - "dirty": pieces["dirty"], "error": None, - "date": pieces.get("date")} - - -def get_versions(): - """Get version information or return default if unable to do so.""" - # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have - # __file__, we can work backwards from there to the root. Some - # py2exe/bbfreeze/non-CPython implementations don't do __file__, in which - # case we can only use expanded keywords. - - cfg = get_config() - verbose = cfg.verbose - - try: - return git_versions_from_keywords(get_keywords(), cfg.tag_prefix, - verbose) - except NotThisMethod: - pass - - try: - root = os.path.realpath(__file__) - # versionfile_source is the relative path from the top of the source - # tree (where the .git directory might live) to this file. Invert - # this to find the root from __file__. - for i in cfg.versionfile_source.split('/'): - root = os.path.dirname(root) - except NameError: - return {"version": "0+unknown", "full-revisionid": None, - "dirty": None, - "error": "unable to find root of source tree", - "date": None} - - try: - pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose) - return render(pieces, cfg.style) - except NotThisMethod: - pass - - try: - if cfg.parentdir_prefix: - return versions_from_parentdir(cfg.parentdir_prefix, root, verbose) - except NotThisMethod: - pass - - return {"version": "0+unknown", "full-revisionid": None, - "dirty": None, - "error": "unable to compute version", "date": None} -''' - - -@register_vcs_handler("git", "get_keywords") -def git_get_keywords(versionfile_abs): - """Extract version information from the given file.""" - # the code embedded in _version.py can just fetch the value of these - # keywords. When used from setup.py, we don't want to import _version.py, - # so we do it with a regexp instead. This function is not used from - # _version.py. - keywords = {} - try: - f = open(versionfile_abs, "r") - for line in f.readlines(): - if line.strip().startswith("git_refnames ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["refnames"] = mo.group(1) - if line.strip().startswith("git_full ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["full"] = mo.group(1) - if line.strip().startswith("git_date ="): - mo = re.search(r'=\s*"(.*)"', line) - if mo: - keywords["date"] = mo.group(1) - f.close() - except EnvironmentError: - pass - return keywords - - -@register_vcs_handler("git", "keywords") -def git_versions_from_keywords(keywords, tag_prefix, verbose): - """Get version information from git keywords.""" - if not keywords: - raise NotThisMethod("no keywords at all, weird") - date = keywords.get("date") - if date is not None: - # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant - # datestamp. However we prefer "%ci" (which expands to an "ISO-8601 - # -like" string, which we must then edit to make compliant), because - # it's been around since git-1.5.3, and it's too difficult to - # discover which version we're using, or to work around using an - # older one. - date = date.strip().replace(" ", "T", 1).replace(" ", "", 1) - refnames = keywords["refnames"].strip() - if refnames.startswith("$Format"): - if verbose: - print("keywords are unexpanded, not using") - raise NotThisMethod("unexpanded keywords, not a git-archive tarball") - refs = set([r.strip() for r in refnames.strip("()").split(",")]) - # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of - # just "foo-1.0". If we see a "tag: " prefix, prefer those. - TAG = "tag: " - tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) - if not tags: - # Either we're using git < 1.8.3, or there really are no tags. We use - # a heuristic: assume all version tags have a digit. The old git %d - # expansion behaves like git log --decorate=short and strips out the - # refs/heads/ and refs/tags/ prefixes that would let us distinguish - # between branches and tags. By ignoring refnames without digits, we - # filter out many common branch names like "release" and - # "stabilization", as well as "HEAD" and "master". - tags = set([r for r in refs if re.search(r'\d', r)]) - if verbose: - print("discarding '%s', no digits" % ",".join(refs - tags)) - if verbose: - print("likely tags: %s" % ",".join(sorted(tags))) - for ref in sorted(tags): - # sorting will prefer e.g. "2.0" over "2.0rc1" - if ref.startswith(tag_prefix): - r = ref[len(tag_prefix):] - if verbose: - print("picking %s" % r) - return {"version": r, - "full-revisionid": keywords["full"].strip(), - "dirty": False, "error": None, - "date": date} - # no suitable tags, so version is "0+unknown", but full hex is still there - if verbose: - print("no suitable tags, using unknown + full revision id") - return {"version": "0+unknown", - "full-revisionid": keywords["full"].strip(), - "dirty": False, "error": "no suitable tags", "date": None} - - -@register_vcs_handler("git", "pieces_from_vcs") -def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): - """Get version from 'git describe' in the root of the source tree. - - This only gets called if the git-archive 'subst' keywords were *not* - expanded, and _version.py hasn't already been rewritten with a short - version string, meaning we're inside a checked out source tree. - """ - GITS = ["git"] - if sys.platform == "win32": - GITS = ["git.cmd", "git.exe"] - - out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, - hide_stderr=True) - if rc != 0: - if verbose: - print("Directory %s not under git control" % root) - raise NotThisMethod("'git rev-parse --git-dir' returned error") - - # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] - # if there isn't one, this yields HEX[-dirty] (no NUM) - describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", - "--always", "--long", - "--match", "%s*" % tag_prefix], - cwd=root) - # --long was added in git-1.5.5 - if describe_out is None: - raise NotThisMethod("'git describe' failed") - describe_out = describe_out.strip() - full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) - if full_out is None: - raise NotThisMethod("'git rev-parse' failed") - full_out = full_out.strip() - - pieces = {} - pieces["long"] = full_out - pieces["short"] = full_out[:7] # maybe improved later - pieces["error"] = None - - # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] - # TAG might have hyphens. - git_describe = describe_out - - # look for -dirty suffix - dirty = git_describe.endswith("-dirty") - pieces["dirty"] = dirty - if dirty: - git_describe = git_describe[:git_describe.rindex("-dirty")] - - # now we have TAG-NUM-gHEX or HEX - - if "-" in git_describe: - # TAG-NUM-gHEX - mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) - if not mo: - # unparseable. Maybe git-describe is misbehaving? - pieces["error"] = ("unable to parse git-describe output: '%s'" - % describe_out) - return pieces - - # tag - full_tag = mo.group(1) - if not full_tag.startswith(tag_prefix): - if verbose: - fmt = "tag '%s' doesn't start with prefix '%s'" - print(fmt % (full_tag, tag_prefix)) - pieces["error"] = ("tag '%s' doesn't start with prefix '%s'" - % (full_tag, tag_prefix)) - return pieces - pieces["closest-tag"] = full_tag[len(tag_prefix):] - - # distance: number of commits since tag - pieces["distance"] = int(mo.group(2)) - - # commit: short hex revision ID - pieces["short"] = mo.group(3) - - else: - # HEX: no tags - pieces["closest-tag"] = None - count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], - cwd=root) - pieces["distance"] = int(count_out) # total number of commits - - # commit date: see ISO-8601 comment in git_versions_from_keywords() - date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], - cwd=root)[0].strip() - pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) - - return pieces - - -def do_vcs_install(manifest_in, versionfile_source, ipy): - """Git-specific installation logic for Versioneer. - - For Git, this means creating/changing .gitattributes to mark _version.py - for export-subst keyword substitution. - """ - GITS = ["git"] - if sys.platform == "win32": - GITS = ["git.cmd", "git.exe"] - files = [manifest_in, versionfile_source] - if ipy: - files.append(ipy) - try: - me = __file__ - if me.endswith(".pyc") or me.endswith(".pyo"): - me = os.path.splitext(me)[0] + ".py" - versioneer_file = os.path.relpath(me) - except NameError: - versioneer_file = "versioneer.py" - files.append(versioneer_file) - present = False - try: - f = open(".gitattributes", "r") - for line in f.readlines(): - if line.strip().startswith(versionfile_source): - if "export-subst" in line.strip().split()[1:]: - present = True - f.close() - except EnvironmentError: - pass - if not present: - f = open(".gitattributes", "a+") - f.write("%s export-subst\n" % versionfile_source) - f.close() - files.append(".gitattributes") - run_command(GITS, ["add", "--"] + files) - - -def versions_from_parentdir(parentdir_prefix, root, verbose): - """Try to determine the version from the parent directory name. - - Source tarballs conventionally unpack into a directory that includes both - the project name and a version string. We will also support searching up - two directory levels for an appropriately named parent directory - """ - rootdirs = [] - - for i in range(3): - dirname = os.path.basename(root) - if dirname.startswith(parentdir_prefix): - return {"version": dirname[len(parentdir_prefix):], - "full-revisionid": None, - "dirty": False, "error": None, "date": None} - else: - rootdirs.append(root) - root = os.path.dirname(root) # up a level - - if verbose: - print("Tried directories %s but none started with prefix %s" % - (str(rootdirs), parentdir_prefix)) - raise NotThisMethod("rootdir doesn't start with parentdir_prefix") - - -SHORT_VERSION_PY = """ -# This file was generated by 'versioneer.py' (0.18) from -# revision-control system data, or from the parent directory name of an -# unpacked source archive. Distribution tarballs contain a pre-generated copy -# of this file. - -import json - -version_json = ''' -%s -''' # END VERSION_JSON - - -def get_versions(): - return json.loads(version_json) -""" - - -def versions_from_file(filename): - """Try to determine the version from _version.py if present.""" - try: - with open(filename) as f: - contents = f.read() - except EnvironmentError: - raise NotThisMethod("unable to read _version.py") - mo = re.search(r"version_json = '''\n(.*)''' # END VERSION_JSON", - contents, re.M | re.S) - if not mo: - mo = re.search(r"version_json = '''\r\n(.*)''' # END VERSION_JSON", - contents, re.M | re.S) - if not mo: - raise NotThisMethod("no version_json in _version.py") - return json.loads(mo.group(1)) - - -def write_to_version_file(filename, versions): - """Write the given version number to the given _version.py file.""" - os.unlink(filename) - contents = json.dumps(versions, sort_keys=True, - indent=1, separators=(",", ": ")) - with open(filename, "w") as f: - f.write(SHORT_VERSION_PY % contents) - - print("set %s to '%s'" % (filename, versions["version"])) - - -def plus_or_dot(pieces): - """Return a + if we don't already have one, else return a .""" - if "+" in pieces.get("closest-tag", ""): - return "." - return "+" - - -def render_pep440(pieces): - """Build up version string, with post-release "local version identifier". - - Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you - get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty - - Exceptions: - 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += plus_or_dot(pieces) - rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - else: - # exception #1 - rendered = "0+untagged.%d.g%s" % (pieces["distance"], - pieces["short"]) - if pieces["dirty"]: - rendered += ".dirty" - return rendered - - -def render_pep440_pre(pieces): - """TAG[.post.devDISTANCE] -- No -dirty. - - Exceptions: - 1: no tags. 0.post.devDISTANCE - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"]: - rendered += ".post.dev%d" % pieces["distance"] - else: - # exception #1 - rendered = "0.post.dev%d" % pieces["distance"] - return rendered - - -def render_pep440_post(pieces): - """TAG[.postDISTANCE[.dev0]+gHEX] . - - The ".dev0" means dirty. Note that .dev0 sorts backwards - (a dirty tree will appear "older" than the corresponding clean one), - but you shouldn't be releasing software with -dirty anyways. - - Exceptions: - 1: no tags. 0.postDISTANCE[.dev0] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - rendered += plus_or_dot(pieces) - rendered += "g%s" % pieces["short"] - else: - # exception #1 - rendered = "0.post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - rendered += "+g%s" % pieces["short"] - return rendered - - -def render_pep440_old(pieces): - """TAG[.postDISTANCE[.dev0]] . - - The ".dev0" means dirty. - - Eexceptions: - 1: no tags. 0.postDISTANCE[.dev0] - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"] or pieces["dirty"]: - rendered += ".post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - else: - # exception #1 - rendered = "0.post%d" % pieces["distance"] - if pieces["dirty"]: - rendered += ".dev0" - return rendered - - -def render_git_describe(pieces): - """TAG[-DISTANCE-gHEX][-dirty]. - - Like 'git describe --tags --dirty --always'. - - Exceptions: - 1: no tags. HEX[-dirty] (note: no 'g' prefix) - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - if pieces["distance"]: - rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) - else: - # exception #1 - rendered = pieces["short"] - if pieces["dirty"]: - rendered += "-dirty" - return rendered - - -def render_git_describe_long(pieces): - """TAG-DISTANCE-gHEX[-dirty]. - - Like 'git describe --tags --dirty --always -long'. - The distance/hash is unconditional. - - Exceptions: - 1: no tags. HEX[-dirty] (note: no 'g' prefix) - """ - if pieces["closest-tag"]: - rendered = pieces["closest-tag"] - rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) - else: - # exception #1 - rendered = pieces["short"] - if pieces["dirty"]: - rendered += "-dirty" - return rendered - - -def render(pieces, style): - """Render the given version pieces into the requested style.""" - if pieces["error"]: - return {"version": "unknown", - "full-revisionid": pieces.get("long"), - "dirty": None, - "error": pieces["error"], - "date": None} - - if not style or style == "default": - style = "pep440" # the default - - if style == "pep440": - rendered = render_pep440(pieces) - elif style == "pep440-pre": - rendered = render_pep440_pre(pieces) - elif style == "pep440-post": - rendered = render_pep440_post(pieces) - elif style == "pep440-old": - rendered = render_pep440_old(pieces) - elif style == "git-describe": - rendered = render_git_describe(pieces) - elif style == "git-describe-long": - rendered = render_git_describe_long(pieces) - else: - raise ValueError("unknown style '%s'" % style) - - return {"version": rendered, "full-revisionid": pieces["long"], - "dirty": pieces["dirty"], "error": None, - "date": pieces.get("date")} - - -class VersioneerBadRootError(Exception): - """The project root directory is unknown or missing key files.""" - - -def get_versions(verbose=False): - """Get the project version from whatever source is available. - - Returns dict with two keys: 'version' and 'full'. - """ - if "versioneer" in sys.modules: - # see the discussion in cmdclass.py:get_cmdclass() - del sys.modules["versioneer"] - - root = get_root() - cfg = get_config_from_root(root) - - assert cfg.VCS is not None, "please set [versioneer]VCS= in setup.cfg" - handlers = HANDLERS.get(cfg.VCS) - assert handlers, "unrecognized VCS '%s'" % cfg.VCS - verbose = verbose or cfg.verbose - assert cfg.versionfile_source is not None, \ - "please set versioneer.versionfile_source" - assert cfg.tag_prefix is not None, "please set versioneer.tag_prefix" - - versionfile_abs = os.path.join(root, cfg.versionfile_source) - - # extract version from first of: _version.py, VCS command (e.g. 'git - # describe'), parentdir. This is meant to work for developers using a - # source checkout, for users of a tarball created by 'setup.py sdist', - # and for users of a tarball/zipball created by 'git archive' or github's - # download-from-tag feature or the equivalent in other VCSes. - - get_keywords_f = handlers.get("get_keywords") - from_keywords_f = handlers.get("keywords") - if get_keywords_f and from_keywords_f: - try: - keywords = get_keywords_f(versionfile_abs) - ver = from_keywords_f(keywords, cfg.tag_prefix, verbose) - if verbose: - print("got version from expanded keyword %s" % ver) - return ver - except NotThisMethod: - pass - - try: - ver = versions_from_file(versionfile_abs) - if verbose: - print("got version from file %s %s" % (versionfile_abs, ver)) - return ver - except NotThisMethod: - pass - - from_vcs_f = handlers.get("pieces_from_vcs") - if from_vcs_f: - try: - pieces = from_vcs_f(cfg.tag_prefix, root, verbose) - ver = render(pieces, cfg.style) - if verbose: - print("got version from VCS %s" % ver) - return ver - except NotThisMethod: - pass - - try: - if cfg.parentdir_prefix: - ver = versions_from_parentdir(cfg.parentdir_prefix, root, verbose) - if verbose: - print("got version from parentdir %s" % ver) - return ver - except NotThisMethod: - pass - - if verbose: - print("unable to compute version") - - return {"version": "0+unknown", "full-revisionid": None, - "dirty": None, "error": "unable to compute version", - "date": None} - - -def get_version(): - """Get the short version string for this project.""" - return get_versions()["version"] - - -def get_cmdclass(): - """Get the custom setuptools/distutils subclasses used by Versioneer.""" - if "versioneer" in sys.modules: - del sys.modules["versioneer"] - # this fixes the "python setup.py develop" case (also 'install' and - # 'easy_install .'), in which subdependencies of the main project are - # built (using setup.py bdist_egg) in the same python process. Assume - # a main project A and a dependency B, which use different versions - # of Versioneer. A's setup.py imports A's Versioneer, leaving it in - # sys.modules by the time B's setup.py is executed, causing B to run - # with the wrong versioneer. Setuptools wraps the sub-dep builds in a - # sandbox that restores sys.modules to it's pre-build state, so the - # parent is protected against the child's "import versioneer". By - # removing ourselves from sys.modules here, before the child build - # happens, we protect the child from the parent's versioneer too. - # Also see https://github.com/warner/python-versioneer/issues/52 - - cmds = {} - - # we add "version" to both distutils and setuptools - from distutils.core import Command - - class cmd_version(Command): - description = "report generated version string" - user_options = [] - boolean_options = [] - - def initialize_options(self): - pass - - def finalize_options(self): - pass - - def run(self): - vers = get_versions(verbose=True) - print("Version: %s" % vers["version"]) - print(" full-revisionid: %s" % vers.get("full-revisionid")) - print(" dirty: %s" % vers.get("dirty")) - print(" date: %s" % vers.get("date")) - if vers["error"]: - print(" error: %s" % vers["error"]) - cmds["version"] = cmd_version - - # we override "build_py" in both distutils and setuptools - # - # most invocation pathways end up running build_py: - # distutils/build -> build_py - # distutils/install -> distutils/build ->.. - # setuptools/bdist_wheel -> distutils/install ->.. - # setuptools/bdist_egg -> distutils/install_lib -> build_py - # setuptools/install -> bdist_egg ->.. - # setuptools/develop -> ? - # pip install: - # copies source tree to a tempdir before running egg_info/etc - # if .git isn't copied too, 'git describe' will fail - # then does setup.py bdist_wheel, or sometimes setup.py install - # setup.py egg_info -> ? - - # we override different "build_py" commands for both environments - if "setuptools" in sys.modules: - from setuptools.command.build_py import build_py as _build_py - else: - from distutils.command.build_py import build_py as _build_py - - class cmd_build_py(_build_py): - def run(self): - root = get_root() - cfg = get_config_from_root(root) - versions = get_versions() - _build_py.run(self) - # now locate _version.py in the new build/ directory and replace - # it with an updated value - if cfg.versionfile_build: - target_versionfile = os.path.join(self.build_lib, - cfg.versionfile_build) - print("UPDATING %s" % target_versionfile) - write_to_version_file(target_versionfile, versions) - cmds["build_py"] = cmd_build_py - - if "cx_Freeze" in sys.modules: # cx_freeze enabled? - from cx_Freeze.dist import build_exe as _build_exe - # nczeczulin reports that py2exe won't like the pep440-style string - # as FILEVERSION, but it can be used for PRODUCTVERSION, e.g. - # setup(console=[{ - # "version": versioneer.get_version().split("+", 1)[0], # FILEVERSION - # "product_version": versioneer.get_version(), - # ... - - class cmd_build_exe(_build_exe): - def run(self): - root = get_root() - cfg = get_config_from_root(root) - versions = get_versions() - target_versionfile = cfg.versionfile_source - print("UPDATING %s" % target_versionfile) - write_to_version_file(target_versionfile, versions) - - _build_exe.run(self) - os.unlink(target_versionfile) - with open(cfg.versionfile_source, "w") as f: - LONG = LONG_VERSION_PY[cfg.VCS] - f.write(LONG % - {"DOLLAR": "$", - "STYLE": cfg.style, - "TAG_PREFIX": cfg.tag_prefix, - "PARENTDIR_PREFIX": cfg.parentdir_prefix, - "VERSIONFILE_SOURCE": cfg.versionfile_source, - }) - cmds["build_exe"] = cmd_build_exe - del cmds["build_py"] - - if 'py2exe' in sys.modules: # py2exe enabled? - try: - from py2exe.distutils_buildexe import py2exe as _py2exe # py3 - except ImportError: - from py2exe.build_exe import py2exe as _py2exe # py2 - - class cmd_py2exe(_py2exe): - def run(self): - root = get_root() - cfg = get_config_from_root(root) - versions = get_versions() - target_versionfile = cfg.versionfile_source - print("UPDATING %s" % target_versionfile) - write_to_version_file(target_versionfile, versions) - - _py2exe.run(self) - os.unlink(target_versionfile) - with open(cfg.versionfile_source, "w") as f: - LONG = LONG_VERSION_PY[cfg.VCS] - f.write(LONG % - {"DOLLAR": "$", - "STYLE": cfg.style, - "TAG_PREFIX": cfg.tag_prefix, - "PARENTDIR_PREFIX": cfg.parentdir_prefix, - "VERSIONFILE_SOURCE": cfg.versionfile_source, - }) - cmds["py2exe"] = cmd_py2exe - - # we override different "sdist" commands for both environments - if "setuptools" in sys.modules: - from setuptools.command.sdist import sdist as _sdist - else: - from distutils.command.sdist import sdist as _sdist - - class cmd_sdist(_sdist): - def run(self): - versions = get_versions() - self._versioneer_generated_versions = versions - # unless we update this, the command will keep using the old - # version - self.distribution.metadata.version = versions["version"] - return _sdist.run(self) - - def make_release_tree(self, base_dir, files): - root = get_root() - cfg = get_config_from_root(root) - _sdist.make_release_tree(self, base_dir, files) - # now locate _version.py in the new base_dir directory - # (remembering that it may be a hardlink) and replace it with an - # updated value - target_versionfile = os.path.join(base_dir, cfg.versionfile_source) - print("UPDATING %s" % target_versionfile) - write_to_version_file(target_versionfile, - self._versioneer_generated_versions) - cmds["sdist"] = cmd_sdist - - return cmds - - -CONFIG_ERROR = """ -setup.cfg is missing the necessary Versioneer configuration. You need -a section like: - - [versioneer] - VCS = git - style = pep440 - versionfile_source = src/myproject/_version.py - versionfile_build = myproject/_version.py - tag_prefix = - parentdir_prefix = myproject- - -You will also need to edit your setup.py to use the results: - - import versioneer - setup(version=versioneer.get_version(), - cmdclass=versioneer.get_cmdclass(), ...) - -Please read the docstring in ./versioneer.py for configuration instructions, -edit setup.cfg, and re-run the installer or 'python versioneer.py setup'. -""" - -SAMPLE_CONFIG = """ -# See the docstring in versioneer.py for instructions. Note that you must -# re-run 'versioneer.py setup' after changing this section, and commit the -# resulting files. - -[versioneer] -#VCS = git -#style = pep440 -#versionfile_source = -#versionfile_build = -#tag_prefix = -#parentdir_prefix = - -""" - -INIT_PY_SNIPPET = """ -from ._version import get_versions -__version__ = get_versions()['version'] -del get_versions -""" - - -def do_setup(): - """Main VCS-independent setup function for installing Versioneer.""" - root = get_root() - try: - cfg = get_config_from_root(root) - except (EnvironmentError, configparser.NoSectionError, - configparser.NoOptionError) as e: - if isinstance(e, (EnvironmentError, configparser.NoSectionError)): - print("Adding sample versioneer config to setup.cfg", - file=sys.stderr) - with open(os.path.join(root, "setup.cfg"), "a") as f: - f.write(SAMPLE_CONFIG) - print(CONFIG_ERROR, file=sys.stderr) - return 1 - - print(" creating %s" % cfg.versionfile_source) - with open(cfg.versionfile_source, "w") as f: - LONG = LONG_VERSION_PY[cfg.VCS] - f.write(LONG % {"DOLLAR": "$", - "STYLE": cfg.style, - "TAG_PREFIX": cfg.tag_prefix, - "PARENTDIR_PREFIX": cfg.parentdir_prefix, - "VERSIONFILE_SOURCE": cfg.versionfile_source, - }) - - ipy = os.path.join(os.path.dirname(cfg.versionfile_source), - "__init__.py") - if os.path.exists(ipy): - try: - with open(ipy, "r") as f: - old = f.read() - except EnvironmentError: - old = "" - if INIT_PY_SNIPPET not in old: - print(" appending to %s" % ipy) - with open(ipy, "a") as f: - f.write(INIT_PY_SNIPPET) - else: - print(" %s unmodified" % ipy) - else: - print(" %s doesn't exist, ok" % ipy) - ipy = None - - # Make sure both the top-level "versioneer.py" and versionfile_source - # (PKG/_version.py, used by runtime code) are in MANIFEST.in, so - # they'll be copied into source distributions. Pip won't be able to - # install the package without this. - manifest_in = os.path.join(root, "MANIFEST.in") - simple_includes = set() - try: - with open(manifest_in, "r") as f: - for line in f: - if line.startswith("include "): - for include in line.split()[1:]: - simple_includes.add(include) - except EnvironmentError: - pass - # That doesn't cover everything MANIFEST.in can do - # (http://docs.python.org/2/distutils/sourcedist.html#commands), so - # it might give some false negatives. Appending redundant 'include' - # lines is safe, though. - if "versioneer.py" not in simple_includes: - print(" appending 'versioneer.py' to MANIFEST.in") - with open(manifest_in, "a") as f: - f.write("include versioneer.py\n") - else: - print(" 'versioneer.py' already in MANIFEST.in") - if cfg.versionfile_source not in simple_includes: - print(" appending versionfile_source ('%s') to MANIFEST.in" % - cfg.versionfile_source) - with open(manifest_in, "a") as f: - f.write("include %s\n" % cfg.versionfile_source) - else: - print(" versionfile_source already in MANIFEST.in") - - # Make VCS-specific changes. For git, this means creating/changing - # .gitattributes to mark _version.py for export-subst keyword - # substitution. - do_vcs_install(manifest_in, cfg.versionfile_source, ipy) - return 0 - - -def scan_setup_py(): - """Validate the contents of setup.py against Versioneer's expectations.""" - found = set() - setters = False - errors = 0 - with open("setup.py", "r") as f: - for line in f.readlines(): - if "import versioneer" in line: - found.add("import") - if "versioneer.get_cmdclass()" in line: - found.add("cmdclass") - if "versioneer.get_version()" in line: - found.add("get_version") - if "versioneer.VCS" in line: - setters = True - if "versioneer.versionfile_source" in line: - setters = True - if len(found) != 3: - print("") - print("Your setup.py appears to be missing some important items") - print("(but I might be wrong). Please make sure it has something") - print("roughly like the following:") - print("") - print(" import versioneer") - print(" setup( version=versioneer.get_version(),") - print(" cmdclass=versioneer.get_cmdclass(), ...)") - print("") - errors += 1 - if setters: - print("You should remove lines like 'versioneer.VCS = ' and") - print("'versioneer.versionfile_source = ' . This configuration") - print("now lives in setup.cfg, and should be removed from setup.py") - print("") - errors += 1 - return errors - - -if __name__ == "__main__": - cmd = sys.argv[1] - if cmd == "setup": - errors = do_setup() - errors += scan_setup_py() - if errors: - sys.exit(1)